这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 综合技术 » 基础知识 » arm9,2410 诚恳请教arm9高手:关于2410启动的一个奇怪问题

共2条 1/1 1 跳转至

arm9,2410 诚恳请教arm9高手:关于2410启动的一个奇怪问题

院士
2006-09-17 18:14:16     打赏
arm9,2410 诚恳请教arm9高手:关于2410启动的一个奇怪问题



关键词: 诚恳     请教     高手     关于     启动     一个     奇怪     问题    

院士
2006-12-22 22:43:00     打赏
2楼

买的是远峰的2140,发现一个怪问题:
按键、触摸屏都使用外部中断。
1)当我设置robase:0x30000000,rwbase不设置时,使用ARM ICE调试是没有问题的,按键触摸屏反应正常。
2)当我设置robase:0x30008000,rwbase不设置,然后按照远峰的bootloader,通过网口把bin文件烧写到flash以后,却发现问题如下:
一按按键,程序就跑飞,类似死机。而摸触摸屏,也没有响应中断。
奇怪,是不是哪里设置不对呢?
问远峰的人,他们也不是很清楚。

现在我想不用远峰的bootloader,什么bootloader都不用,直接把测试程序bin文件烧写到flash里面去。

请问,这时robase和rwbase怎么设置,robase是设置为0x00000000还是0x30000000,rwbase又怎么设置

谢谢 1: 设置一下中断的入口地址就行RT 2: 谢谢
谢谢chete

不过可否详细解释一下

我在测试程序里有设置键盘、触摸屏对应中断向量。

而且仿真调试运行是正常的

请问还需要在哪加中断入口地址

3x 3: 虫虫也是高手了啊. 4: to wangkjto wangkj :

   过奖了。ARM7感觉入了门,ARM9还真不了解。
   感觉2410和44bx差别不是太大,主要是启动那块还不太理解。

  等有时间好好看看bootloader代码。 5: re 珊瑚虫:2)当我设置robase:0x30008000,rwbase不设置,然后按照远峰的bootloader,通过网口把bin文件烧写到flash以后,却发现问题如下:
一按按键,程序就跑飞,类似死机。而摸触摸屏,也没有响应中断。
答:你的bin文件就是bootloader吗?当你产生中断后就出现死机现象,应该就是你在0x0开始的中断向量表坏了,所以程序会飞!

2410的应用中通常都会有一个小于4KByte的bootloader,RO base为0x0放在Nand flash的第0块,原峰的板子应该也是这样的,因为2410支持Nand flash的启动。复位后将该4KByte的内容映射到0x0的内部SRAM,在该bootloader里将你的应用程序从Nand flash的其它块里读出再复制到你的SDRAM中,如果你的应用程序的RO Base为0x30008000,那就复制到0x30008000开始的地址处,然后再跳转到该地址片运行就可以了。当你产生中断后还会用到0x0地址的内部SRAM中的中断向量表,所以在你的应用程序中不能破坏该地址片的中断向量表(特别是指针操作),否则产生中断后程序就找不到中断服务程序而跑飞了。
如果你不想用bootloader就必须用NOR Flash启动,这时和ARM7一样使用。 6: 非常感谢阿南

非常感谢阿南兄的耐心指点。

现在比较明白了。

不过还有几个疑点:

1、板子上没有NorFlash,所以应该不支持从NorFalsh起动,我看启动模式从硬件上就决定必须用NandFlash。这样RoBase是不是不能设置为0x00000000,而必须设置为sdram空间

2、robase可不可以设置为0x30000000,我以前看书,好像8000是用于linux页式管理的,我这个程序没有跑os,是不是不用留8000空间

3、在nandflash启动模式下,2410inti.s文件中,0x0地址是不是实际上是在内部4KB的sram里面?上电后2410内部会自动把nandflash前4kb复制到内部sram?

我会仔细检查一下程序。

谢先 7: 还有一个不解的地方为什么设置robase:0x30000000,rwbase不设置时,使用ARM ICE调试是没有问题的,按键触摸屏反应正常。

调试时,全速运行为什么就正常呢?两者有什么区别?


8: re:不用谢,应该的1。要牢牢记住一点:RO Base设置成哪个地址,编译后的程序必须放在哪个地址才能正常运行,具体原因可以分析编译后的代码,如Image$$RO$$Base,Image$$RW$$Base的定位等。所以你的BootLoader要把RO Base设置成0x0,应用程序如果要放在0x30000000开始运行就把RO Base设置成0x30000000。还有,如果原峰的板子是兼容公板的,就会有nor flash,会用跳线或其它方式进行选择,可以参考datasheet的memory controller一节。
2。可以的,如果你不用OS,你就不用管那么多了,多多分析bootloader(如公板的2410bs和u241mon)代码,就会清楚2410的流程。其实也很简单,基本上就是上面所说的
3。也可以这样理解
4。不正常应该是和0x0地址的中断向量表有关。你有ICE为什么不跟踪进行看一下,为什么不正常,程序是在哪里飞掉的,你可心在0x18设一个断点,然后触发中断就可以一步步的执行。对两种情况进行比较,也可以自己分析它的Bootloader
9: 我看看bootloader先
谢谢阿南兄
我看看bootloader先
然后再单步跟踪看看
找到问题我再跟大家谈谈,呵呵 10: 我也碰到了这样的问题,但是还是不知道咋回事!我现在也碰到这个问题,我用的也是远峰公司的。我的程序没有os,我就是做个简单的实验,但是下到板子上过后 ,跑的不对 ,该亮的灯没亮,就不知道那两个地址要怎么设定。

共2条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]