我目前正在研究基于
STM32MP157C 的设计(安装在
Seeed SoM - STM32MP157C 中)。
我正在尝试连接到目标上的 M4 Core,但无法停止。当我尝试这样做时,调试器可以停止 A7 CPU0 但无法停止 A7 CPU1(
错误:超时等待 DSCR 位更改)。
M4 完全无法访问。
当我尝试从 OpenOCD telnet 接口访问核心时,我可以列出目标并在发出
重置暂停命令后获得以下输出。
- > reset halt
- stlink_dap_op_connect(connect)
- SWD DPIDR 0x6ba02477
- Deferring arp_examine of STM32MP157CACx.cm4
- Use arp_examine command to examine it manually!
- Target not examined, will not halt after reset!
- stlink_dap_op_connect(connect)
- stlink_dap_op_connect(reconnect)
- SWD DPIDR 0x6ba02477
- SWD DPIDR 0x6ba02477
- STM32MP157CACx.cpu0: ran after reset and before halt ...
- STM32MP157CACx.cpu1: ran after reset and before halt ...
- STM32MP157CACx.cm4: hardware has 6 breakpoints, 4 watchpoints
- STM32MP157CACx.cpu0 rev 5, partnum c07, arch f, variant 0, implementor 41
- target halted in Thumb state due to debug-request, current mode: Supervisor
- cpsr: 0x800001f3 pc: 0x00010bbc
- MMU: enabled, D-Cache: disabled, I-Cache: enabled
- timed out while waiting for target halted
- TARGET: STM32MP157CACx.cpu1 - Not halted
- > targets
- TargetName Type Endian TapName State
- -- ------------------ ---------- ------ ------------------ ------------
- 0 STM32MP157CACx.ap1 mem_ap little STM32MP157CACx.tap halted
- 1 STM32MP157CACx.ap2 mem_ap little STM32MP157CACx.tap halted
- 2 STM32MP157CACx.axi mem_ap little STM32MP157CACx.tap halted
- 3 STM32MP157CACx.cpu0 cortex_a little STM32MP157CACx.tap halted
- 4 STM32MP157CACx.cpu1 cortex_a little STM32MP157CACx.tap running
- 5* STM32MP157CACx.cm4 cortex_m little STM32MP157CACx.tap reset
命令发出前,除cm4外的所有target都处于running状态(cm4一直卡在reset状态)。
如何访问内核并将程序加载到其中?
工具版本和配置:
- Ubuntu 20.04 上的 STM32CubeIDE 1.4.0(我使用提供的 OpenOCD)
- 带有最新固件的 STlink V2
- 调试连接:1.8 MHz 时的 SWD(较高的时钟速率会由于电气限制导致通信失败,较低的时钟速率不会改变结果)
- 调试模式设置:在复位下连接在低功耗模式下启用调试和在暂停时停止看门狗计数器都启用