ARM的半主机模式(Semihosting)

本文介绍ARM的半主机模式,并介绍在MCU进行调试时其他的调试方法和手段。

1.ARM半主机模式(Semihosting)

ARM Semihosting是ARM平台的一个独特功能,它允许使用主机上的输入和输出函数,通过硬件调试器转发到微控制器,通过挂接到I/O函数,如printf()和scanf(),甚至fopen()。

Semihosting由一组定义的软件指令(例如 SVC)实现,这些指令从程序控制中生成异常。应用程序调用相应的Semihosting调用,然后调试器通过与主机上的调试应用程序通信来处理异常。

ARMv7之前的ARM处理器使用SVC指令(以前称为SWI指令)进行Semihosting调用。但是,对于ARMv6-M或ARMv7-M,在Cortex-M1或Cortex-M3处理器中,Semihosting是使用BKPT指令实现的。

ARM的半主机模式(Semihosting)_第1张图片

如图,目标板,如MCU内部调用printf(),Host和Target通过仿真器连接,这样printf()就可以通过仿真器将字符输出到开发环境相应的调试窗口上,方便我们调试。

2.其他调试方法

另外,除了semihosting调试方式外,MCU还有其他的调试方法。

1)Semihosting:内置于每个ARM芯片,需要添加额外的库并在调试模式下运行。

2)控制台日志:转发到本机UART端口,通过USB端口转发到虚拟COM端口。

3)串行线视图(SWV):通过专用单线输出(SWO)引脚快速输出,但它仅在Cortex-M3+上可用,这是单向通信。

4)实时传输(RTT):速度极快,但只能与SEGGER调试器配合使用,可以进行实时双向通信。

ARM的半主机模式(Semihosting)_第2张图片

你可能感兴趣的:(MCU,mcu)