基于eCos在基于ARM7硬件平臺上的應用
?、?在組件倉庫ecos.db中為以關鍵字target添加名為Flow55的新目標平臺。在這個目標平臺中還必須用關鍵字packages包括ARM7體系結構層包和AT91M55800變體抽象層包,同時為了實現(xiàn)調試還必須包括串口驅動包和Flash驅動包及其上層驅動包。除了這些被包含的軟件包外,根據不同的選擇configtool還會為目標平臺包添加一些默認的包,如內核包、數學庫包等。另外,還應加入一些對該平臺的簡單描述。
3.2 內核的配置
移植完成以后,一個最基本的目標平臺就產生了。在configtool中可以看到Templates菜單的硬件平臺列表中新增了Flow55目標平臺模版,以default方式打開這個模版。各個軟件包的CDL腳本中都給出了默認的配置值,有些值需要根據具體的應用要求重新配置。本系統(tǒng)一些重要的配置情況如下:
?、?由于系統(tǒng)線程數量較少(小于10),所以選擇效率更高的位圖調度器Bitmap scheduler,并將線程數numbers of priority levels限定為16,以提高任務切換的速度。當點擊位圖調度器的單選按鈕時,configtool會檢測到一個配置沖突。由于時間片輪轉是默認使能的,而時間片輪轉僅僅對應于多級隊列調度器,所以出現(xiàn)配置沖突。Configtool會給出一個推薦的解決沖突的方法,即禁止時間片輪轉,按照這個推薦的解決方法可以安全地解決這個沖突。這個地方可以充分體現(xiàn)出eCos強大的可配置性。
② 由于配合RedBoot一起使用,所以內核配置為RAM啟動方式。這樣,系統(tǒng)上電后程序將由RedBoot復制到RAM中運行,以提高速度。
③ 系統(tǒng)的晶振頻率為16 MHz,經PLL倍頻后為32 MHz,所以需將Clock speed配置為32000000;RTC是系統(tǒng)的時鐘節(jié)拍發(fā)生器,本系統(tǒng)的時鐘節(jié)拍時間選為20 ms,所以也需要對RTC相關項進行配置。具體參數為Realtime clock numerator配置為2000000000,Realtime clock denominator配置為100,Realtime clock period配置為20000。
其余的配置選項使用默認的配置值即可。完成配置工作后,對內核進行編譯可以產生內核庫文件和鏈接腳本以及相關頭文件。這些生成的文件再同應用程序一起編譯、鏈接,生成最終的可執(zhí)行映像文件。
圖4 應用軟件結構
eCos是一個單進程多線程的操作系統(tǒng),多個線程在宏觀上可以認為是并發(fā)運行的,而且各線程之間耦合低,便于軟件的編寫和維護。針對這一特點,本系統(tǒng)的軟件結構如圖4所示。
本系統(tǒng)主要有兩種程序運行方式,分別稱為方式A和方式B。方式A中,硬件中斷產生后,相應的ISR(Interrupt Service Routine)程序運行,由于ISR中是禁止中斷的,所以在ISR中只進行最簡單的操作,ISR退出后內核調用相應的DSR(Deferred Service Routine)。DSR中中斷是使能的,所以可以進行一些稍復雜的處理,如簡單的數據運算、內核調用(發(fā)送信號量和郵箱等)。在得到相應的信號量或消息郵箱后,相應的線程進入就緒態(tài)被內核調度運行。本系統(tǒng)中對鍵盤的處理就是基于這種方式――按鍵產生硬件中斷、ISR執(zhí)行,接著在DSR中進行相應的運算得到具體的鍵值后以消息郵箱的方式通知并喚醒鍵盤處理線程,鍵盤處理線程在完成任務后進入休眠直到再次有按鍵發(fā)生而被喚醒。方式B中,各線程只是周期性地被內核調度運行,如測量數據顯示線程,在顯示一次數據后調用延時函數進入休眠,直到延時完畢后再次進入就緒態(tài)被內核調用。
根據測控系統(tǒng)的實際情況,具體的線程編寫如下: 方式A為流量計算線程、溫度測量線程、鍵盤處理線程、USB通信處理線程。方式B為測量數據顯示和曲線繪制線程、流量控制線程、初始標定線程。
4 結論
經過實踐,本系統(tǒng)運行穩(wěn)定,實時性能良好。由于eCos的強大可配置性使得系統(tǒng)的軟硬件可維護性強,在進行硬件改動或應用要求改動后可方便地進行升級。
評論