我现在在做一个上位机的一个简单编译系统,通过将上位机编写的代码(类似于脚本),编译后下载到ARM,ARM中有一个任务,解释执行我编写的代码,现在基本功能已经实现,但是现在要求在上位机可以调试脚本代码。通过在上位机设置断点,ARM解释程序解释到该命令时也产生一个断点(不停止下位机ARM的运行,只要一个中断,所以不一定是断点,各种中断都可以),这样上位机就可以知道执行到了该脚本指令。
所以我的要求是在脱离仿真器和CCS的情况下,如何用软件代码设置断点。
我看了TI和ARM的资料,有一个CP14协处理用于调试目的,但是根据手册读取CP14_DEBUG_ROM_ADDRESS和CP14_DEBUG_SELF_ADDRESS_OFFSET,返回值都是0。 根据ARM的手册,这两个地址通过计算可以得出CP14映射的物理地址,但现在读取有问题,我就不知道该怎么继续?
除了CP14外,还有没有其他方法可以实现我想要的功能?
希望各位大神指点迷津。万分感谢!
yi Wang7:
读取CP14里两个寄存器的代码,返回值为0,跟手册不符
;unsigned int Cp14ReadRomAddr(void)Cp14ReadRomAddr: MRC p14, #0, r0, c2, c0, #0 BX lr
;unsigned int Cp14SelfAddrOffset(void)Cp14SelfAddrOffset: MRC p14, #0, r0, c2, c0, #0 BX lr
以下两个读取CP14的ID和控制状态寄存器,返回值跟手册比对是正确的。
Cp14ReadId: MRC p14, #0, r0, c0, c0, #0 BX lr
;unsigned int Cp14ReadStatusAndCtrl(void)Cp14ReadStatusAndCtrl:MRC p14, #0, r0, c0, c1, #0BX lr
yi Wang7:
回复 yi Wang7:
有哪位大神知道吗?
或者提供思路也可以,万分感谢!!!!!!
yi Wang7:
回复 yi Wang7:
希望哪位大神给予指点迷津,不胜感激。
yongqing wang:
你的需求和Python解释器比较像,你可以参考一下Python的解释器的是如何设置断点的
Jian Zhou:
回复 yongqing wang:
这个需求确实比较复杂,以前也没有碰到过。CP14是否能这样使用也不能确定。
yi Wang7:
回复 yongqing wang:
现在问题的关键是怎么知道ARM执行到了我所设置的指令,按照ARM公司CP14的手册,确实能够符合我的要求,但是现在335X访问CP14协处理有问题,跟ARM手册不符。
yongqing wang:
回复 yi Wang7:
真要获得硬件的调试器将各种寄存器返回来和设置硬件断点独自开发难度挺大,如果只是调试各个功能不用涉及到这么底层可以考了一下是Python的这种模式