我正在尝试在STM32F401xB上运行Rust Hello World . 我有一个工作的C程序用于比较(不同的功能,但它验证闪烁的工具链)并使用相同的openocd命令将两个程序闪存到控制器上 .
当我刷C程序时,我得到:
...
** Verified OK **
adapter speed: 2002 kHz
当我刷新Rust程序时,我得到以下内容:
...
** Verified OK **
adapter speed: 2002 kHz
target halted due to breakpoint, current mode: Thread
xPSR: 0x21000000 pc: 0x08002f42 msp: 0x2000ffa0
注意两条额外的线条 . 当我使用 gdb
和 continue
连接时,我通过半主机获得 Hello, World!
打印输出,因此程序原则上执行正常 - 它只是在main之前暂停,即使我没有设置断点 . 我对两个二进制文件的过程是一样的 . 会发生什么事?为什么两个二进制文件的行为不同?
-
我用
svd2rust
从官方stm32f401.svd
创建一个stm32f40x
箱子 -
我使用了
cortex-m-quickstart
,基本上是hello.rs
示例 - 配置memory.x
并将依赖项添加到stm32f40x
当然 -
我的项目中没有特殊配置(我已经确定),调试和发布版本也会出现相同的行为 .
1 回答
检查半主机文档 . 上次我检查时,半主机在几个ARM目标上使用断点工作 .
您的C程序可能根本不使用半主机,因此不使用断点 .