Semi-Hosting
Last updated
Was this helpful?
Last updated
Was this helpful?
如果要開發ARM Cortex M系列的嵌入式系統開發版,一般來說,不一定會拉出所有的I/O設備。因此ARM公司設計了Semihost機制,讓運行ARM debugger的主機可以與開發版進行I/O溝通,方便讓使用者調適代碼,最基本的方式是開發版透過UART重導向,然後可以呼叫C函式printf()將訊息秀在電腦螢幕上,但是在UART還沒設定之前要如何打印呢?除了可以用Jlink進入debug mode看REG值或是memory值,還有一個方式就是semihosting機制!!!
首先在專案名稱中按右鍵 -> 選Properties。
選C/C++ Build -> Tool Settings -> MCU GCC Linker -> Miscellaneous
打上參數:-specs=rdimon.specs -lc -lrdimon
在專案名稱中按右鍵 -> 選Debug As -> Debug Configurations...
選專案名稱 -> Startup
在底下Run Commands處,輸入monitor arm semihosting enable
回到main.c -> 加入extern void initialise_monitor_handles();
在int main(void)一開始的地方呼叫 initialise_monitor_handles();
進入debug mode然後run,訊息就會直接打印出來。