所謂“移植”,就是使一個實時內(nèi)核能在其它的微處理器或微控制器上運行。
盡管大部分μc/os-ii的代碼是用c語言編寫的,但是在編寫與處理器硬件相關(guān)的代碼時還是不得不使用匯編語言。移植的主要工作就是編寫這些與處理器硬件相關(guān)的代碼。
在移植前針對所使用的微處理器進行規(guī)劃,主要有以下幾個方面的考慮:編譯器的選擇、任務模式的選擇和支持的指令集。
μc/os-ii移植
——μc/os-ii硬件軟件體系結(jié)構(gòu)
編譯器的選擇
目前,針對arm處理器核的c語言編譯器有很多,如sdt、ads、iar、tasking和gcc等。據(jù)了解,目前在國內(nèi)最流行的是ads、sdt和gcc。sdt和ads均為arm公司自己開發(fā),ads為sdt的升級版,以后arm公司不再支持sdt,所以不會選擇sdt。gcc雖然支持廣泛,很多開發(fā)套件使用它作為編譯器,但是與ads比較其編譯效率較低,這對充分發(fā)揮芯片性能很不利,所以最終使用ads編譯程序和調(diào)試。
任務模式的取舍
arm7處理器核具有用戶、系統(tǒng)、管理、中止、未定義、中斷和快中斷七種模式,其中除用戶模式外其它均為特權(quán)模式。其中管理、中止、未定義、中斷和快中斷模式與相應異常相聯(lián)系,任務使用這些模式不太適合。而系統(tǒng)模式除了是特權(quán)模式外,其它與用戶模式一樣,因而可選為任務使用的模式只有用戶模式和系統(tǒng)模式。為了盡量減少任務代碼錯誤對整個程序的影響,缺省的任務模式定為用戶模式,可選為系統(tǒng)模式,同時提供接口使任務可以在這兩種模式間切換。
支持的指令集
帶t變量的arm7處理器核具有兩個指令集(可以參考第3章 ):標準32位arm指令集和16位thumb指令集,兩種指令集有不同的應用范圍。為了最大限度地支持芯片的特性,任務應當可以使用任意一個指令集并可以自由切換,而且不同的任務應當可以使用不同的指令集,這次移植的代碼已經(jīng)實現(xiàn)了這一點。