如果应用程序中断和复位控制寄存器发出软复位信号、芯片有时会挂起。
顺便说一下、我修改了 Linux 内核代码"drivers/USB/serial/USB-serial-simple.c"、以便 USB ICDI 显示为 USB UART 串行、并且我使用此接口来调试和刷写 TM4C 套件。 我认为这不应该与软复位失败有任何关系。
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
如果应用程序中断和复位控制寄存器发出软复位信号、芯片有时会挂起。
顺便说一下、我修改了 Linux 内核代码"drivers/USB/serial/USB-serial-simple.c"、以便 USB ICDI 显示为 USB UART 串行、并且我使用此接口来调试和刷写 TM4C 套件。 我认为这不应该与软复位失败有任何关系。
该程序是由我自己进行的测试。 可以
通过命令"git clone"从下载
如果复位操作被卡住、我认为它将永远停止、因为如果复位成功、它将在闪烁的情况下重新启动。 但是当它挂起时、我可以使用 GNU gdb 中断它、当我发出 Continue 命令时、它将重新启动。
我猜0x01xxx 位于 ROM 函数"ROM_SysCtlReset"、因此我将复位代码复制到我的程序中:
静态内联 void tm4c_reset (void)
{
uint32_t v;
V = HWREG (NVIC_APINT)和0x0FFFF;
HWREG (NVIC_APINT)= v|0x05fa0000|NVIC_APINT_SYSRESETREQ;
while (1)
;
}
如果电路板在上电后无法通过软复位进行复位、它将始终在软复位时挂起。 gdb 会话如下所示:
(gdb)目标远程/dev/ttyUSB0
使用/dev/ttyUSB0进行远程调试
0x01001024英寸 ()
(gdb) bt
#0 0x01001024输入?? ()
(gdb) c
继续。
^C
程序已停止。
ResetISR 中的0x00000288 ()
(gdb) c
继续。
(gdb) c
继续。
^C
程序已停止。
ResetISR 中的0x00000288 ()
(gdb)信息寄存器
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 0x20000800 0x20000800
LR 0xffffff-1
PC 0x288 0x288
Xpsr 0x1000000 16777216
(gdb)
您好、Charles、
我认为调试器无关紧要。 我只会在软复位挂起时启动调试器以中断程序。 软复位有时会成功。 如果它在上电后成功、它将始终成功、直到拔下电源。