经过一段漫长而郁闷的实验,今天终于可以用h-jatg配合简单的wiggler板进行arm9单步调试了。现在来总结一下原因和方法。
我遇到的困难是,尽管已经按h-jtag论坛的要求小心的设置好了reset script,禁止了所有终端,初始化了所有的相关寄存器,可是,每次程序运行到打开中断,中断一发生,程序就跑飞了。而且h-jtag报告无法再让cpu进入debug状态,这个时候一定得关闭h-jtag,板子关电,断开wiggler和并口的连接,再重新连接上电,才又能进行调试。这个问题困扰了我好久,一直没办法解决。
今晚终于想到,要是禁止了mmu会否好些呢,一实验,虽然中断后还是跑飞,但h-jtag不再失控,cpu能停下来。想了一下,由于我的nano2410是nandflash启动的,里面还带了vivi和linux, stepstone 里设置的中断向量与我下载到内存中的程序中断向量不一样,所以程序中断后就跑飞了。于是在下载程序后,我把0x30000000开始的4k程序导出保存到文件里,用adx的load memeory from file
下载到stepstone里,然后再开始调试程序。呵呵,一切就正常了。
然后又检查了一下mmu_init程序,发现原来它的配置是把0x30000000的内存地址map到 0x0开始的的bank0 处的,于是想试验一下把虚拟地址和物理地址如实对应是否也能解决问题呢?一实验果然也成功了。
把sdram 影射到 0x0地址在用mult-ice仿真器时是一点问题没有的,为什么用h-jtag就出问题呢?这是个值得探讨的问题。希望有达人指点其中原因。
阅读(2608) | 评论(2) | 转发(0) |