我想在我的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
创建
stm32f40x
从官员那里搬来的板条箱
stm32f401.svd
-
我用了
cortex-m-quickstart
基本上
hello.rs
示例-配置
memory.x
并将依赖项添加到
STM32F40X型
当然
-
在我的项目中没有特殊的配置(我可能已经确定),调试和发布版本也会发生同样的行为。