本帖最后由 jiyingyijiye 于 2012-04-28 10:31:46 编辑 一:ADS中的设置过程:
1)我的目的:针对我的开发板(arm7,系统uc/os-ii),用ADS开发一个在开发板上运行的应用程序。
2)过程:
2-0)new->ARM Executable Image, 工程名:armtest.
2-1) 我 建立了我的main函数(test.c)、启动函数(boot.s)和我自定义的库。
test.c 代码如下:
#include "ndlib.h"
int main(void)
{
Sysinit(); // ndlib库中的函数
MessageBox("M73Test", "Hello,Simon", MSG_OK|MSG_CANCEL);// ndlib库中的函数
return 0;
}
boot.s 代码如下:
IMPORT |Image$$RO$$Limit|
IMPORT |Image$$RW$$Base|
IMPORT |Image$$ZI$$Base|
IMPORT |Image$$ZI$$Limit|
;The imported labels
IMPORT main ;The entry point to the main function
CODE32
AREA Ramdisk,CODE,READONLY
ENTRY
RamdiskInit
LDR R0,=|Image$$RO$$Limit|
LDR R1,=|Image$$RW$$Base|
LDR R3,=|Image$$ZI$$Base|
CMP R0,R1
BEQ LOOP1
LOOP0 CMP R1,R3
LDRCC R2,[R0],#4
STRCC R2,[R1],#4
BCC LOOP0
LOOP1 LDR R1,=|Image$$ZI$$Limit|
MOV R2,#0
LOOP2 CMP R3,R1
STRCC R2,[R3],#4
BCC LOOP2
RamDiskStacks
B main
END
工程添加的文件如下:
ndlib.a (这个是我封装的库)
test.c (我的main函数)
boot.s (启动代码)
2-2)工程的设置:
TarGet Settings:
Linker: ARM Linker
Post-linker: ARM fromELF
linker:
ARM Linker:
Output: Linktype: Simple; Simple image:RO Base:0x81064000;RW Base:(为空)
Options: Image entry point: 0x81064000
Layout: Object/Symbol: boot.o ; Section: RamDisk ;
整个Equipment Command line:
-info totals -entry 0x81064000 -ro-base 0x81064000 -first boot.o(RamDisk)
如上做之后,在ADS中就可以编译生成我想要的image喇。
二:在IAR中的设置:我是要在IAR5.4中开发一个类似这样的工程的。
三:我的疑问:
在IAR中如何设置:比如:如何设置程序的入口点:是0x81064000,等等,
在ADS中可以写一个启动代码boot.s来设置RO、RW、放在什么地方,但是在IAR中该如何设置呢?还是根本就不用boot.s啦,用其他的方式实现?
如果要在IAR中实现一样的效果的话,我应该如何修改boot.s文件呢??
如果转到IAR开发环境的话,boot.s中的实现,在IAR开发环境中如果实现呢(或者如何修改呢)???
四:我想要得到的效果:
把上面这个ADS的工程在,IAR中实现。