新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 基于eCos在基于ARM7硬件平臺上的應用

        基于eCos在基于ARM7硬件平臺上的應用

        作者: 時間:2010-07-27 來源:網絡 收藏

          ④ 在組件倉庫ecos.db中為以關鍵字target添加名為Flow55的新目標。在這個目標中還必須用關鍵字packages包括體系結構層包和AT91M55800變體抽象層包,同時為了實現調試還必須包括串口驅動包和Flash驅動包及其上層驅動包。除了這些被包含的軟件包外,根據不同的選擇configtool還會為目標包添加一些默認的包,如內核包、數學庫包等。另外,還應加入一些對該平臺的簡單描述。

          3.2 內核的配置

          移植完成以后,一個最基本的目標平臺就產生了。在configtool中可以看到Templates菜單的平臺列表中新增了Flow55目標平臺模版,以default方式打開這個模版。各個軟件包的CDL腳本中都給出了默認的配置值,有些值需要根據具體的要求重新配置。本系統一些重要的配置情況如下:

          ① 由于系統線程數量較少(小于10),所以選擇效率更高的位圖調度器Bitmap scheduler,并將線程數numbers of priority levels限定為16,以提高任務切換的速度。當點擊位圖調度器的單選按鈕時,configtool會檢測到一個配置沖突。由于時間片輪轉是默認使能的,而時間片輪轉僅僅對應于多級隊列調度器,所以出現配置沖突。Configtool會給出一個推薦的解決沖突的方法,即禁止時間片輪轉,按照這個推薦的解決方法可以安全地解決這個沖突。這個地方可以充分體現出強大的可配置性。

          ② 由于配合RedBoot一起使用,所以內核配置為RAM啟動方式。這樣,系統上電后程序將由RedBoot復制到RAM中運行,以提高速度。

          ③ 系統的晶振頻率為16 MHz,經PLL倍頻后為32 MHz,所以需將Clock speed配置為32000000;RTC是系統的時鐘節拍發生器,本系統的時鐘節拍時間選為20 ms,所以也需要對RTC相關項進行配置。具體參數為Realtime clock numerator配置為2000000000,Realtime clock denominator配置為100,Realtime clock period配置為20000。

          其余的配置選項使用默認的配置值即可。完成配置工作后,對內核進行編譯可以產生內核庫文件和鏈接腳本以及相關頭文件。這些生成的文件再同程序一起編譯、鏈接,生成最終的可執行映像文件。

          圖4 軟件結構

          3.3 操作系統的應用軟件的編寫

          是一個單進程多線程的操作系統,多個線程在宏觀上可以認為是并發運行的,而且各線程之間耦合低,便于軟件的編寫和維護。針對這一特點,本系統的軟件結構如圖4所示。

          本系統主要有兩種程序運行方式,分別稱為方式A和方式B。方式A中,中斷產生后,相應的ISR(Interrupt Service Routine)程序運行,由于ISR中是禁止中斷的,所以在ISR中只進行最簡單的操作,ISR退出后內核調用相應的DSR(Deferred Service Routine)。DSR中中斷是使能的,所以可以進行一些稍復雜的處理,如簡單的數據運算、內核調用(發送信號量和郵箱等)。在得到相應的信號量或消息郵箱后,相應的線程進入就緒態被內核調度運行。本系統中對鍵盤的處理就是這種方式――按鍵產生中斷、ISR執行,接著在DSR中進行相應的運算得到具體的鍵值后以消息郵箱的方式通知并喚醒鍵盤處理線程,鍵盤處理線程在完成任務后進入休眠直到再次有按鍵發生而被喚醒。方式B中,各線程只是周期性地被內核調度運行,如測量數據顯示線程,在顯示一次數據后調用延時函數進入休眠,直到延時完畢后再次進入就緒態被內核調用。

          根據測控系統的實際情況,具體的線程編寫如下: 方式A為流量計算線程、溫度測量線程、鍵盤處理線程、USB通信處理線程。方式B為測量數據顯示和曲線繪制線程、流量控制線程、初始標定線程。

          4 結論

          經過實踐,本系統運行穩定,實時性能良好。由于eCos的強大可配置性使得系統的軟硬件可維護性強,在進行硬件改動或應用要求改動后可方便地進行升級。


        上一頁 1 2 3 4 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 固镇县| 新乐市| 潼南县| 彝良县| 七台河市| 南宁市| 内丘县| 凯里市| 汝南县| 涞源县| 麻江县| 新巴尔虎右旗| 孝义市| 梁山县| 花莲市| 嘉祥县| 舞钢市| 普定县| 甘德县| 蓬莱市| 吉安县| 百色市| 海丰县| 确山县| 通山县| 嘉善县| 曲沃县| 天台县| 临泽县| 南宁市| 青田县| 阿鲁科尔沁旗| 延川县| 梓潼县| 渭南市| 渭源县| 房产| 宜川县| 岢岚县| 文登市| 陆河县|