gpt4 book ai didi

arm - 使用 GDB 在 Cortex-M 上进行软重置

转载 作者:行者123 更新时间:2023-12-02 16:56:43 24 4
gpt4 key购买 nike

我正在为一些内部 Cortex-M4 内核开发一套调试工具。我正在使用 gcc/binutils 工具链构建嵌入式(无操作系统)ELF 镜像,并使用 QEMU 的修改版本来模拟它们。我在图像的开头(即 0)创建中断向量表,并正确初始化堆栈指针和起始地址(即 main 的地址)。

目标程序运行正常,使用GDB远程协议(protocol)构建的调试工具工作正常。

我目前试图了解的是如何从 GDB 启动软重置。即安排目标程序重新初始化,堆栈指针重置为向量表中的初始值,PC 回到起始地址。

我已经向自己证明,将PC值设置为0并运行核心的操作是不合适的,结果是调用了我的“UsageFault”异常处理程序。 (我假设核心处于错误的模式来执行这种操作)。

是否有一种技术,即通过使用 GDB 远程协议(protocol)进行寄存器写入,我可以软重置模拟核心,而无需重新启动 QEMU session ?

最佳答案

您可以通过将SYSRESETREQ位+ KEY写入AIRCR寄存器来使SW重新启动:

AIRCR_REG_ADDRESS = 0xe000ed0c
AIRCR_KEY = 0x05fa0000
AIRCR_SYSRESETREQ_BIT = 0x00000004

AIRCR_REG = AIRCR_KEY | AIRCR_SYSRESETREQ_BIT

更多信息是here

这适用于所有 cortex-M

关于arm - 使用 GDB 在 Cortex-M 上进行软重置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47589934/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com