我使用仿真器调试我自己的裸机程序,在一块2440开发板上。
开发板能够正常运行wince,但没有任何源码,我想自己开发裸机程序。我目前正在调试串口中断,我先把开发板自带的boot烧到flash的bank0,然后打开仿真器,使用ads来调试。有以下问题请教:
1.调试串口中断可以用仿真器进行单步吗?或是一定要烧到flash里进行盲调?
2.我使用仿真器单步跟踪,我对地址做了查看:
地址0x30000000以后放的是我工程的异常跳转表;
30000000 [0xea000074] b ResetHandler 30000004 [0xea000052] b HandlerUndef 30000008 [0xea000057] b HandlerSWI 3000000c [0xea000062] b HandlerPabort 30000010 [0xea00005b] b HandlerDabort 30000014 [0xeafffffe] b 0x30000014 30000018 [0xea000047] b HandlerIRQ 3000001c [0xea000040] b HandlerFIQ 30000020 [0xea000008] b EnterPWDN
地址0x0以后放的也是一个跳转表,不过和地址0x30000000处的不一样。
00000000 [0xea00000a] b 0x30 00000004 [0xeafffffe] b 0x4 00000008 [0xeafffffe] b 0x8 0000000c [0xeafffffe] b 0xc 00000010 [0xeafffffe] b 0x10 00000014 [0xeafffffe] b 0x14 00000018 [0xeafffffe] b 0x18 0000001c [0xeafffffe] b 0x1c
当irq中断来的时候,我的程序开在了地址0x18上:
00000018 [0xeafffffe] b 0x18
请问为什么两个表不一样呢?另外地址0x30000000是内存起始地址吧,那地址0x0是不是flash上?地址0x0能否修改?
怎样才能把我的0x0地址映射到地址0x30000000呢?我用的是2440,没有remap吧,是用MMU吗?还是别的方法?
|