【发布时间】:2021-04-16 06:59:17
【问题描述】:
我设法编程和调试了一个 STM32F4 微控制器,做了一些简单的操作并编写了一些小脚本。
设置
- 微控制器:STM32F405RG
- 调试探针:我使用的是 Amontec 的旧 JTAGKEY2
- 工具链:端口 3333 上的 openOCD 和 GDB
- 我没有使用任何 GUI 和任何特定的软件工具。
目标
现在我想升级一点。
我的项目由 PCB 上的 3 个 MCU 组成,以冗余方式工作。
我想调试两个或更多的STM32F4,并在一个 MCU中进行一些操作,而其他的暂停。这是一个例子:
-
- 使用相同的 .elf 对所有设备(我们称之为 MCU1 和 MCU2)进行编程。
-
- 运行。
-
- 在特定时间(如运行后 10 秒)停止 MCU1 和 MCU2。
-
- 仅修改 MCU1 的 r4
-
- 恢复所有目标。
对于一个 MCU,我将目标配置文件称为 smt32f4x.cfg。
对于两个 MCU,我阅读了 OpenOCD 用户指南,看来我必须创建一个 新的水龙头。
但首先,我想尝试使用相同的配置调试 MCU1 和 MCU2。
我为系统连接了总线上的 MCU,打开了一个终端并在我的项目文件夹中输入了openocd。
问题
正如预期的那样,我收到了这条消息:
Info : JTAG tap: STM32F405RGTx.bs tap/device found: 0x06413041 (mfg: 0x020 (STMicroelectronics), part: 0x6413, ver: 0x0)
Info : JTAG tap: auto0.tap tap/device found: 0x4ba00477 (mfg: 0x23b (ARM Ltd.), part: 0xba00, ver: 0x4)
Info : JTAG tap: auto1.tap tap/device found: 0x06413041 (mfg: 0x020 (STMicroelectronics), part: 0x6413, ver: 0x0)
Warn : AUTO auto0.tap - use "jtag newtap auto0 tap -irlen 4 -expected-id 0x4ba00477"
Warn : AUTO auto1.tap - use "jtag newtap auto1 tap -irlen 5 -expected-id 0x06413041"
Info : STM32F405RGTx.cpu: hardware has 6 breakpoints, 4 watchpoints
adapter speed: 2000 kHz
Info : JTAG tap: STM32F405RGTx.cpu tap/device found: 0x4ba00477 (mfg: 0x23b (ARM Ltd.), part: 0xba00, ver: 0x4)
Info : JTAG tap: STM32F405RGTx.bs tap/device found: 0x06413041 (mfg: 0x020 (STMicroelectronics), part: 0x6413, ver: 0x0)
Info : JTAG tap: auto0.tap tap/device found: 0x4ba00477 (mfg: 0x23b (ARM Ltd.), part: 0xba00, ver: 0x4)
Info : JTAG tap: auto1.tap tap/device found: 0x06413041 (mfg: 0x020 (STMicroelectronics), part: 0x6413, ver: 0x0)
target halted due to debug-request, current mode: Thread
xPSR: 0x01000000 pc: 0x08000910 msp: 0x20020000
然后发生的情况是只有一个 MCU 被编程。
所以我想我可以创建一个板配置文件并使用
jtag newtap auto0 tap -irlen 4 -expected-id 0x4ba00477
每个 TAP 使用一个 DAP ...
由于我对自己的技能没有信心,我没有设法从头开始创建自己的配置文件。
而且我没有找到几个微控制器的配置示例,也没有在 gdb 中找到向总线上不同 MCU 提供不同命令的调试命令的示例。
问题
-
在哪里可以找到具有多个 MCU 的板配置示例?
-
是否可以仅向其中一个正在调试的设备发出调试命令?怎么样?
【问题讨论】:
标签: debugging stm32 stm32f4 openocd jtag