半主機是用於 ARM 目標的一種機制,可將來自應用程式代碼的輸入/輸出請求傳送至運行調試器的主機。 例如,使用此機制可以啟用 C 庫中的函式,如 printf() 和 scanf(),來使用主機的螢幕和鍵盤,而不是在目標系統上配備螢幕和鍵盤。
基本介紹
- 中文名:半主機
- 外文名:無
- 用於:ARM
- 套用形式:直接調用
半主機,Note,
半主機
這種機制很有用,因為開發時使用的硬體通常沒有最終系統的所有輸入和輸出設備。 半主機可讓主機來提供這些設備。
半主機是通過一組定義好的軟體指令(如 SVC)來實現的,這些指令通過程式控制生成異常。 應用程式調用相應的半主機調用,然後調試代理處理該異常。 調試代理提供與主機之間的必需通信。
半主機接口對 ARM 公司提供的所有調試代理都是通用的。 在無需移植的情況下使用 RealView ARMulator ISS、指令集系統模型 (ISSM)、實時系統模型 (RTSM)、RealView ICE 或 RealMonitor 時,會執行半主機操作,請參閱Figure 8.1。
在很多情況下,半主機由庫函式內的代碼調用。 應用程式還可以直接調用半主機操作。 有關 ARM C 庫中的半主機支持的詳細信息,請參閱《庫和浮點支持指南》中的第 2 章 C 和 C++ 庫。
Figure 8.1. 半主機概述
Note
ARMv7 之前的 ARM 處理器使用 SVC 指令(以前稱為 SWI 指令)進行半主機調用。 但是,如果要為 ARMv6-M 或 ARMv7-M(如 Cortex™-M1 或 Cortex-M3 處理器)進行編譯,請使用 BKPT 指令來實現半主機。