|
googleman你好,在论坛里看到你的帖子,请问个问题。
是这样,我们的开发平台是优龙的pxa270,linux操作系统。现在想抛开操作系统在ads下调试一个外部gpio做按键进入中断的子程序。
因为pxa270的sdram从0xa0000000开始,所以在程序中开了mmu,把0xa0000000映射到0x00000000,这样当中断到来时程序中的中断向量入口(IRQ)已被映射到0x00000018处,同时pc会到0x00000018这个地址找中断入口,进而跳到中断函数执行中断服务例程。(在ads里设置了RO为0xa0000000)
但是现在的问题是在axd中,当使能了mmu后我的确在反汇编的窗口里看到了在0x00000018处有一句代码:“B 1114”,同时在0x1114处也可以看到放置了我的中断服务例程,可是通过设置断点发现在中断来时PC的确是跳到了0x00000018处,但之后却没有按照预想的跳到0x00001114处的中断服务程序,而是跳到0x00000038处,或是干脆从0x00000018处跑飞。
我觉得我的mmu使用没有问题,因为我的确可以在mmu使能后的虚拟地址里写入数据,比方说在0x00000050处写一个数值“0xaaaa5555”,可以通过反汇编窗口看到0x00000050处的内容是0xaaaa5555,但是为什么PC在0x00000018处却不能按照地址里的内容正确跳转呢,搞了两周没找到问题,希望得到你的答复!
谢谢!
|
|