文章目录
- 什么是半主机
- 参考链接:
什么是半主机
半主机是一种机制,它使运行在arm目标上的代码能够在运行调试器的主机上通信和使用输入/输出功能。
这些工具包括键盘输入,屏幕输出和磁盘I/O。例如,你可以使用这种机制来启用C库中的函数,例如printf()和scanf(),以使用主机的额屏幕和键盘,而不是在目标系统上使用屏幕和键盘。
这很有用,因为开发硬件通常不具备最终系统的所有输入和输出功能。半主机使主计算机能够提供这些设施。
半主机是由一组定义好的软件指令实现的,例如SVC,它从程序控制中产生异常。应用程序调用适当的半主机调用,然后调试代理处理异常。调试代理提供与主机所需的通信。
半主机接口在ARM提供的多有调试代理中都是通用的。当您在开发平台上调试应用程序时,半主机操作会起作用,如下图所示:
在许多情况下,半主机是由库函数中的代码调用的。应用程序还可以直接调用半主机操作。
参考链接:
- ARM semihosting document
- Introduction to ARM Semihosting
- https://shawnhymel.com/1840/how-to-use-semihosting-with-stm32/