2440 ADS的配置使用及调试

 

关于ADS1.2的使用有很多的文档,同时一般也会涉及到AXD调试的一些问题,我前几天因为这些问题而苦恼了好久而且网上搜不到较好的,就是完整的解决办法。我只是讲一些过程,至于原理的东西我也不是很懂所以现在就不多说。我的PC机时xp系统,ARM板mini2440,使用J_link调试。

第一.        使用ADS的CodeWarrior编译。使用CodeWarrior编译首先要新建工程,然后新建C后者汇编文件,添加文件要工程,然后要编译的问题了,单独对C和汇编源文件进行编译,然后再使用make连接成一个可执行文件,不编译直接make会出现一些文件找不到,变量没定义的问题。

第二.        可执行文件也就是BIN文件,这里说的是裸机程序,下载到Nand Flash中的前4k中,(关于为什么是到NandFlansh,注意文件大小要小于4k,这里不多说,可以上网搜索网上比较多),注意2440板启动是从NorFlash启动。注意这样下载的裸机程序因为没有操作系统所以需要一段汇编的启动代码去初始化堆栈,寄存器,中断向量表,C语言环境等等具体我也不是很清楚,需要的话网上很多分析启动代码的。启动代码编译后和C源文件一起连接成一个可执行文件,下载到板之里执行。

第三.        CodeWarrior设置,这里是最重要的步骤,打开CodeWarrior,选择Edit菜单,打开DebugRel Settings,第一个Target Settings –> Post-linker 选择ARM fromELF,第二个设置Language Settings->ARM Assembler(ARM汇编器)选择对应的ARM板型号,mini2440对应ARM920T,相应的设置好C编译器,如果要用到C++同样要设置好。第三个设置的地方Linker->ARM Linker 这个比较关键,开始我一直没设置好的地方就是这里,因为手册上还是看别人的设置都没有说到,我一个人弄了好几天。好了说重点,ARM Linker中选择Output在RO Base下选择地址0x30000000不同的ARM板可能不同,手册上应该会给出,这个地址就是SDRAM的开始地址。然后选择Options选项在Image entry point 中输入0x30000000,继续选择Layout选项,在Object/Symbol中输入你的初始化目标文件,2440init.o在旁边的Section中输入Init,最好Listings选项,这个应该可以不用,不过我没试验,先填一下落,在Listings->Image map前打上勾,List file中填一个txt文件,如list.txt,到这里这个大选择就弄好了,继续下面的,ARM fromELF中Output format中选择输出文件格式,选择Plain binary可执行的二进制文件,注意下面Output file name要自己写一个.bin文件,如led.bin。如果这里不写文件名将找不到bin文件。现在CodeWarrior就设置好了。

第四.        第四如果要调试的会,还要初始化SDRAM,初始化SARAM的代码如下

Setmem 0x53000000 0x00000000 32

Setmem 0x4A000008 0xFFFFFFFF 32

Setmem 0x4A00001C 0x000007FF 32

Setmem 0x53000000 0x00000000 32

Setmem 0x56000050 0x000055AA 32

Setmem 0x4C000014 0x00000007 32

Setmem 0x4C000000 0x00FFFFFF 32

Setmem 0x4C000004 0x00061012 32

Setmem 0x4C000008 0x00040042 32

Setmem 0x48000000 0x22111120 32

Setmem 0x48000004 0x00002F50 32

Setmem 0x48000008 0x00000700 32

Setmem 0x4800000C 0x00000700 32

Setmem 0x48000010 0x00000700 32

Setmem 0x48000014 0x00000700 32

Setmem 0x48000018 0x0007FFFC 32

Setmem 0x4800001C 0x00018005 32

Setmem 0x48000020 0x00018005 32

Setmem 0x48000024 0x008E0459 32

Setmem 0x48000028 0x00000032 32

Setmem 0x4800002C 0x00000030 32

Setmem 0x48000030 0x00000030 32

把上面的代码粘贴带记事本中,并把名字重命名为一个.iniz的配置文件放在调试文件.axf同目录下。启动CodeWarrior并编译链接后按调试后,按Alt + L快捷键弹出AXD命令窗口,输入ob(obey)name.ini执行,这个你可以不这样只有你调试文件前执行了初始化文件name.ini。执行后选择file下的重新装载当前文件,就可以调试了。

遇到的问题

1.       Failed initailizing heap region。使用超级终端和DNW下载程序后(led.c)超级终端显示初始化堆栈失败,解决办法,上面的第三步没有设置好,设置好第三步就没有问题了。

2.       Processor ARM79_0 raised an exception.Cause: The processor was reset。这个问题需要设置SEGGER J-link RDI V4.081 Status中的Congfiguration中的CPU选项选择第一个不在重启NO reset,不过好像把问题3解决后这个问题也没有了。先解决问题三。

3.       Processor ARM79_0 raised an exception.Cause: Undefined instruction。这个问题非常恼火,困扰我好久,解决办法上面步骤第四步。

4.       'c:/documents and settings/****/default-1-2-0-0.ses' could not be loaded。这个问题是关于ADS文件最好不要带中文路径。重新加载动态链接文件就是那个。Dll的文件,一般使用前你都会加载的。下面地址有详细介绍。

http://hi.baidu.com/jialaolian629/blog/item/12d0981102756429dd5401eb.html

2011-04-04

今天添加文件的时候突然弹出“at least one file could not be added to the selected targets”一时我还以为是工程建错了后来上网搜了一下,发现是因为工程里已经添加了文件,重复添加文件错误。当然还可能是其他原因,但一般是因为文件重复添加到一个工程。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值