TI中文支持网
TI专业的中文技术问题搜集分享网站

LP-AM243: 怎么写代码对am243的Cortex-R5的调试寄存器进行配置

Part Number:LP-AM243

怎么写代码对am243的Cortex-R5的调试寄存器进行配置?我想设置调试寄存器让程序单步运行,应该怎么写代码设置?用mrs和msr的指令不行,是不是要用映射寄存器啊?

Gary Lu:

在ARM体系结构中,对调试寄存器进行配置通常需要使用专门的调试指令,而不是普通的`MRS`和`MSR`指令。

? ? 说:怎么写代码对am243的Cortex-R5的调试寄存器进行配置?

; 1. 启用调试功能
LDR R0, =0xE0042000 ; DBGDSCR 地址
LDR R1, [R0] ; 读取当前值
ORR R1, R1, #(1 << 1) ; 设置 HALTREQ 位
STR R1, [R0] ; 写回 DBGDSCR 寄存器; 2. 配置单步运行
LDR R0, =0xE0043000 ; DBCR 地址
LDR R1, #(1 << 0) ; 设置 SS (Single Step) 位
STR R1, [R0] ; 写回 DBCR 寄存器; 3. 触发单步运行
LDR R0, =0xE0042000 ; DBGDSCR 地址
LDR R1, [R0] ; 读取当前值
ORR R1, R1, #(1 << 0) ; 设置 HALTREQ 位
STR R1, [R0] ; 写回 DBGDSCR 寄存器

,

? ?:

am243的DBGDSCR寄存器的地址不是0xE0042000,操作这个地址会进入异常。

,

? ?:

另外DBGDSCR的0位在手册中是这样解释的 ,不是用来实现单步的

,

Gary Lu:

感谢指正

,

Gary Lu:

非常抱歉前述的误导。

我重新写一段示例,用于启用单步执行:

; 启用调试功能
LDR R0, =DBGDSCR_ADDR ; 替换为正确的 DBGDSCR 地址
LDR R1, [R0]
ORR R1, R1, #(1 << 1) ; 设置 HALTREQ 位
STR R1, [R0]; 配置单步运行
LDR R0, =DBCR_ADDR ; 替换为正确的 DBCR 地址
LDR R1, [R0]
ORR R1, R1, #(1 << 0) ; 设置 SS (Single Step) 位
STR R1, [R0]; 触发单步运行
LDR R0, =DBGDSCR_ADDR ; 替换为正确的 DBGDSCR 地址
LDR R1, [R0]
ORR R1, R1, #(1 << 0) ; 设置 HALTREQ 位
STR R1, [R0]

代码的 `DBGDSCR_ADDR` 和 `DBCR_ADDR` 要替换为实际 DBGDSCR 和 DBCR 寄存器地址。

如还有问题,欢迎您指正

,

? ?:

那么请问DBGDSCR_ADDR和 DBCR_ADDR的地址是啥?如图 ,这些寄存器的地址是由芯片厂商决定的,所以请问具体地址是啥?另外DBGDSCR寄存器我用cp14即MRC和MCR的方式去操作,会进入undefined异常,所以请问该怎么操作?如图 ,如果是方法1,V7debug的cp14接口由厂商定义的,所以是有TI自己定义的方法吗?如果是方法2地址映射,也是由TI设定的,也请告知下映射的地址区。

,

Gary Lu:

为您咨询了资深产品线工程师,这需要一些时间

,

? ?:

有消息了吗?

,

Gary Lu:

已经催促了

,

? ?:

请问有回复了吗?

,

Gary Lu:

抱歉此贴(https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1309815/lp-am243-how-to-write-code-to-configure-the-debug-register-of-the-am243-cortex-r5  )还没有回复。

为更加有效地解决您的问题,建议您将问题发布在E2E英文技术论坛上(https://e2e.ti.com/support/processors-group/processors/f/processors-forum ),将由资深的英文论坛工程师为您提供帮助。如果您对于英文表达有顾虑,请随时告诉我们,我们将竭力为您提供帮助。

,

Gary Lu:

工程师已回复:

CCS 配置程序的所有内容以单步模式运行。R5自行配置有什么具体要求吗?您能分享更多相关信息吗?

,

? ?:

R5自行配置是因为我们想用软件实现代码单步运行的效果,而不是用ccs在线debug仿真程序的情况下实行单步。

,

Gary Lu:

我需要检查如何在没有 CCS 的情况下从 R5 进行单步调试

赞(0)
未经允许不得转载:TI中文支持网 » LP-AM243: 怎么写代码对am243的Cortex-R5的调试寄存器进行配置
分享到: 更多 (0)