Chinaunix首页 | 论坛 | 博客
  • 博客访问: 73275
  • 博文数量: 20
  • 博客积分: 1400
  • 博客等级: 上尉
  • 技术积分: 205
  • 用 户 组: 普通用户
  • 注册时间: 2008-10-28 17:19
文章分类

全部博文(20)

文章存档

2011年(1)

2009年(18)

2008年(1)

我的朋友

分类:

2009-03-29 11:50:18

从最简单的开始

kiss原则 :-)

启动的汇编文件

           PROGRAM start      
   
          SECTION    START:CODE:ROOT(2)
                                    
          CODE32                        
       
          PUBLIC    __iar_program_start  
         
         IMPORT    main
     
   
__iar_program_start:                 
        
          ldr    sp,=1024*4
        
          bl    main

        
halt:

          b     halt
         
         
          END

C文件


#define GPFCON    (*(volatile unsigned *)0x56000050)

#define GPFDAT    (*(volatile unsigned *)0x56000054)

void delay ()
{
int i,j;
for(i=0;i<1000;i++)
    for(j=0;j<1000;j++)
      ;
}

int main ()
{
GPFCON =   0x5555;
while(1)
{
    GPFDAT   =   0xff;
    delay();
    GPFDAT   =   0x0;
    delay();
}
return 0;
}

IAR现在的连接器叫 ILINK,以前叫XLINK

ILINK需要一个配置文件指定各个段怎么链接,默认的配置文件后缀是icf,以前是xcf

链接文件如下

define memory MEM with size = 4G;

define region STEPPING_STONE = MEM:[from 0x0 to 0xfff];


place in STEPPING_STONE{section START};

place in STEPPING_STONE{section .text};

第一句表示总的寻址空间是4G,把整个内存取名为MEM,当然也可以叫其他的

第二句在4G内定义了一个内存区域叫STEPPING_STONE,当然是2410内的4k RAM了

第三句表示将START段,段名对应汇编里的SECTION    START:CODE:ROOT(2)
,也可以取其他名字,放在STEPPING_STONE里,从起始开始放

第四句表示把.text段紧接着放在STEPPING_STONE里,.text是C语言编译默认的段名

可以在project-->option-->c/c++ compiler-->output的code section name里修改为其他的

这个简单的代码完全没有依赖其他库,或是EWARM准备好的启动代码,所以

可以在project-->option-->linker-->library里去掉,automatic runtime library的选项勾

事实上,如果不去掉,ILNK还是会链接EWARM的库,DLIB。

阅读(1653) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~