gpt4 book ai didi

c - 我的链接寄存器出错了吗?

转载 作者:行者123 更新时间:2023-12-01 22:42:37 25 4
gpt4 key购买 nike

我正在通过 GDB 在 ARM 芯片上调试一个软件。加载程序后(在运行它之前),当我执行 info registers 时,我得到:

(gdb) info registers
r0 0x0 0
r1 0x0 0
r2 0x0 0
r3 0x0 0
r4 0x0 0
r5 0x0 0
r6 0x0 0
r7 0x0 0
r8 0x0 0
r9 0x0 0
r10 0x0 0
r11 0x0 0
r12 0x0 0
sp 0x4770 0x4770
lr 0xffffffff 4294967295
pc 0x8005dc5 0x8005dc5 <Reset_Handler+1>
fps 0x0 0
cpsr 0x20 32

我觉得令人担忧的一个寄存器是 lr 设置为 0xffffffff。我认为这可能是我崩溃的原因。

lr初始化为0xffffffff是否正常?

最佳答案

这看起来像是您让调试器在重置后很快停止执行的情况(我基于您的描述和与 PC 值关联的符号名称)。如果是这样,不要担心 lr 的初始状态——在你初始化它之前不要使用它(这可能没有多大意义,直到它被你明确设置汇编代码或由 C 编译器处理函数调用)。

由于另一个人猜测您使用的是 Cortex-M3 处理器,以下是技术引用手册中关于处理器在重置时的行为的一些内容:

5.9 Resets

The NVIC is reset at the same time as the core and controls the release of reset into the core. As a result, the behavior of reset is predictable. Table 5-7 shows the reset behavior. For more information about resets, see Chapter 6 Clocking and Resets.

Table 5-7 Reset actions

Action                                Description
================================= ====================================================

NVIC resets, holds core in reset NVIC clears most of its registers. The processor is
in Thread mode, priority is privileged, and the stack
is set to Main.

NVIC releases core from reset NVIC releases core from reset.

Core sets stack Core reads the start SP, SP_main, from vector-table offset 0.

Core sets PC and LR Core reads the start PC from vector-table offset.
LR is set to 0xFFFFFFFF.

Reset routine runs NVIC has interrupts disabled, and NMI and Hard Fault
are not disabled.

因此,如果您运行的是 M3,这就是 lr 设置为 0xffffffff 的原因。

我没有看到任何关于其他通用寄存器如何在复位时初始化的提及——我不会指望它们为零。自己初始化它们。

如果您没有运行 M3,则 "What values are in ARM registers after a power-on reset?" note可能适用于您的设备。它说:

Registers R0 - R14 (including banked registers) and SPSR (in all modes) are undefined after reset.

(r14lr)。

关于c - 我的链接寄存器出错了吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9823826/

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