This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

DM3730如何更改异常向量表的基地址

Other Parts Discussed in Thread: DM3730

硬件环境:DM3730评估板 + TRACE32调试器

软件环境:GNU

嗨,

我要将异常中断向量表重定向到指定位置,方法如下:

get_vbase:
	MRC p15, 0, r0, c12, c0, 0
	mov pc, lr
	
set_vbase:
	MCR p15, 0, r0, c12, c0, 0
	mov pc, lr

通过get_vbase得到基地址是0x14000,我把自定义的handler放入这块向量表中后,该handler被执行了!

然后通过set_vbase重定向到RAM的一个数组中,数组中也保存了向量表,这个handler没有执行,并且发现 PC 执行 0 地址处,请教各位这是什么原因?

从DM3730手册上看 0x14000 是内部ROM的起始地址。

  • Hi Kavin:

    猜想你看过TI的TRM,Table 2-1 Global memory space mapping 中指明了0x40014000 是片内ROM的起始地址。

    在表中说明了0x40014000 到0x4001BFFF 是32位可执行的只读区,个人认为你自己的中断向量是写不尽这个区域,你看看是不是由于写入出错导致ARM 重启又跳到了ROM代码开头重新执行了?即使你用外部NOR来引导,ROM部分也会先执行。( 26.4.7.3有说明)所以这个ROM是跳不过去的。

    Thanks!

    Han Tao