一、microlib介绍
microlib 是缺省 C 库的备选库,功能上不具备某些 ISO C 特性。
microlib 进行了高度优化以使代码变得很小,功能比缺省 C 库少,用于必须在极少量内存环境下运行的深层嵌入式应用程序。
二、不使用microlib的原因
由于microlib不支持C++开发,因此在使用C++开发应用程序时,必须不使用microlib。
三、不使用microlib的问题
但是,当我们取消勾选microlib后,在线调试程序将一直停在中断处。
因为使用微库不会使用Semihosting。取消microlib后,标准库使用Semihosting,则会出现该问题。
四、什么是Semihosting机制
Semihosting是用于ARM目标的一种机制,可将来自应用程序代码的输入/输出请求传送至运行调试器的主机。 例如,使用此机制可以启用 C 库中的函数,如 printf() 和 scanf(),来使用主机的屏幕和键盘,而不是在目标系统上配备屏幕和键盘。这种机制很有用,因为开发时使用的硬件通常没有最终系统的所有输入和输出设备。 半主机可让主机来提供这些设备。
当目标开发板上电运行之后,执行到请求访问输入/输出设备指令时,产生特定中断号的软件中断SWI, 与开发板相连的调试器会先截获目标板SWI请求,由于开发板程序中也可能存在用户自定义软件中断, 为了区分二者&#x