什么是Semihosting?
Semihosting简介
在创建一个新的嵌入式应用程序时,在开发的早期阶段,有时需要输出调试状态消息。
通常情况下,可以通过一条串口线,将需要的信息输出到PC机上的串口调试助手,但通过semihosting技术(半托管技术),可以不需要串口线,而将信息显示在IDE的控制台窗口中,常见的例子是printf语句将字符串显示在IDE的console窗口中,这样可以不需要额外的硬件设备就可以调试程序。
术语“半托管”最初是由ARM在20世纪90年代早期提出的,基本上表示部分功能是由主机(运行调试工具的PC)执行的,部分是由目标(开发板)执行的。最初的目的是在根本没有可用的真正的硬件外设时,可以调试程序。
Semihosting技术的局限性
显而易见,Semihosting的半托管技术,与单独硬件设备相比,会影响程序运行,每次输出信息时,程序会暂停,然后传输调试信息,使得代码运行起来变慢。另外,信息传输时代码会暂停,有可能会影响到中断,因此,有条件情况下,最好使用硬件串口。