Semihosting 介绍
Semihosting
(半主机)是一种ARM设备与主机(Host PC)之间通信的机制。可以在主机和设备见交换数据,比如将设备数据保存到主机文件中,将主机文件中的数据下载到设备中。其工作原理大致如下图所示。
设备需要通过特定的软件指令(比如SVC
指令)触发异常才能与连接设备的调试器debugger(比如ICE)进行通信。
Semihosting 指令
HLT指令是ARMv8新增的指令,如果想要在ARMv7及更早的处理器上也使用HLT指令去触发semihosting功能,需要debugger能处理HLT导致的UNDEF exception.
因此,A32/T32还是惯用SVC指令。
不过 ARM 还是用强烈建议都统一使用 HLT 指令,不要在一个执行体内混用HLT/SVC .
Semihosting 命令
Semihosting 参数及返回值定义
Semihosting 命令:
Reference
[1] Semihosting for AArch32 and AArch64
[2]https://git.trustedfirmware.org/TF-A/trusted-firmware-a.git/tree/lib/semihosting