ARM v6 编译器启动代码中的断点指令

Breakpoint instruction inside ARM v6 compiler startup code

我正在使用 ARM 编译器 V6("new" armclang 编译器)在 Keil MDK 5.28 上为 STM32 开发一个新项目。第一次用armclang

我的重置处理程序正在调用 __main 符号。正如预期的那样,这是在执行 Keil C 库的一些启动代码,然后调用我的 main 函数(稍后,我将删除对启动代码的调用,但现在我想了解这个问题)。

问题如下:C 库函数之一(_sys_open) 中有一条BKPT 指令。我没有设置这个断点,它也没有出现在断点列表中。我无法删除它(显然试图重建一切)。所以我无法在不中断此位置的情况下启动调试会话。

我还尝试取消选中选项 "Run to Main"。

你知道这个 BKPT 指令的来源以及如何删除它吗?

评论总结: 断点指令 BKPT 是半主机功能的一部分,应该与调试器配合使用。启用 Microlib 会禁用半主机;参见 here and here