在嵌入式系統的開發中,工具鏈(toolchain)是銜接主機端(Host)以及目標板(Target)的重要橋樑。
我們在主機端將應用程式(Application,AP)撰寫好後,可能是LED閃爍程式,或者進階一點的LCD顯示程式,需要有一個工具將我們撰寫的高階語言(如C語言),轉換成為處理機能夠讀懂的機械碼(Machine Code),而擔任這個重責大任的就是工具鏈。
工具鏈首先將C程式碼的註解先去除(Preprocessing),產生沒有註解的C檔案,再將這個檔案與相依檔案(如gd32vf103.h)進行連結後,再依照不同目標平台架構(GD32是RISC-V)編譯成物件碼(Object Code)。
這時候會產生如同”entry.o”這種檔案,工具鏈會再將物件碼與標準的C函式庫(或者不同硬體架構的標準函式庫)在進行連結(Loading)。
由於標準含式庫在專案開發的過程中不會有所改變,因此可以直接用物件碼與AP做連結即可。
最後,把連結好的程式碼輸出成ELF格式(Exectuable and Loadable Formate),如gd32vf103.elf。再將ELF檔案轉換成十六進制(.hex)以及二進制(.bin)檔案,並利用上傳工具將機器馬上傳到目標板上。