分类:
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。