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

MCU-PLUS-SDK-AM243X: AM243X使用BKPT指令怎么进入相关监视中断

Part Number:MCU-PLUS-SDK-AM243X

代码中加入BKPT指令之后,希望运行到BKPT代码后能触发监视相关的异常中断,该怎么实现?

现已在相关手册中搜索到应该是设置DBGDSCR等相关寄存器就可触发Prefetch Abort exception,如下图。

因此我先设置DBGDSCR的MDBGen位置1,用以下代码设置: ,但是只要执行到写相关寄存器就会进入undefined异常或data_abort异常,没法解决,请问我要的效果要怎么实现?

Gary Lu:

按照以下步骤进行操作:

1. 在您的代码中插入BKPT指令。例如,您可以在需要进入监视中断的地方插入类似于"__asm("BKPT #0");"的代码。

2. 确保您的调试环境已经配置好,可以连接到AM243X芯片。

3. 使用支持AM243X的调试器,例如JTAG调试器,连接到AM243X芯片。

4. 在调试器的调试软件中,设置断点或者监视点,以便在AM243X执行BKPT指令时暂停程序执行。

5. 运行您的代码,当程序执行到插入的BKPT指令时,调试器会暂停程序执行,您可以在调试软件中查看相关寄存器状态、内存内容等信息,进行监视和调试操作。

,

? ?:

我现在不是要进行调试,我现在是想运行到BKPT指令的时候,能够进入Prefetch Abort Exception的异常中断中,请问要怎么配置DBGDSCR相关的寄存器启用这个中断响应?

,

Gary Lu:

设置DBGDSCR寄存器的位0,该位用于控制是否启用异常中断响应

在程序中插入BKPT指令,触发Prefetch Abort Exception异常中断

运行程序,当程序执行到BKPT指令时,处理器将会响应该异常并进入相应的异常处理程序中断

,

? ?:

应该怎么设置DBGDSCR寄存器的位0?我用手册上的汇编语言写寄存器DBGDSCR,如图 ,从来没有写成功过,只要执行这个写寄存器DBGDSCR的汇编指令就会进入异常。

,

Gary Lu:

您可以尝试使用以下汇编指令:

MRS R0, DBGDSCR ; 将DBGDSCR寄存器的值读取到R0寄存器
ORR R0, R0, #1 ; 将R0寄存器的最低位设置为1
MSR DBGDSCR, R0 ; 将R0寄存器的值写入DBGDSCR寄存器

释:将DBGDSCR寄存器的值读取到R0寄存器,再使用ORR指令将R0寄存器的最低位设置为1,最后将R0寄存器的值写入DBGDSCR寄存器

,

? ?:

如图, ,内嵌汇编会报错,该怎么解决?似乎不认识DBGDSCR

,

Gary Lu:

可能是访问DBGDSCR寄存器需要访问权限吧

,

? ?:

所以要怎么有访问权限?

,

Gary Lu:

1. 进入 Supervisor 模式:用汇编指令来切换到 Supervisor 模式。

// 进入 Supervisor 模式
CPS #0x13

2. 设置相关寄存器:在 Supervisor 模式下,访问一些在 User 模式下不可访问的寄存器

//void setupDebugRegisters() {
DBGDSCR |= (1 << 23); // 设置 MDBGen 位
}

赞(0)
未经允许不得转载:TI中文支持网 » MCU-PLUS-SDK-AM243X: AM243X使用BKPT指令怎么进入相关监视中断
分享到: 更多 (0)