新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 使用凌陽SPCE061A的嵌入式應用系統設計

        使用凌陽SPCE061A的嵌入式應用系統設計

        作者: 時間:2011-05-05 來源:網絡 收藏

          μC/OS-II 在上的移植

          μC/OS-II內核移植的主要內容

          μC/OS-II是為微控制器和應用軟件開發而的搶占式實時多任務操作系統,其內核主要實現任務調度、任務間的通信、內存管理和時間管理。其軟件體系結構以及與硬件的關系如圖3所示.
        多任務應用程序位于最上層,通過調用內核的API函數來實現任務的調度和切換、存儲管理和任務進程的通訊. μC/OS-II的大部分代碼是用C語言編寫,而與硬件相關的三個源程序文件0S_CPU.H,OS_CPU_A.A,OS_CPU_C.C含有與硬件處理器相關的匯編語言代碼,來實現對處理器寄存器的訪問以及堆棧的操作.因而μC/OS-II操作系統在上的移植主要是對0S_CPU. H,OS_CPU_A.A,OS_CPU_C.C三個源程序的編寫。

          其中OS_CPU.H 中包括了用#define定義的與處理器相關的常量,宏和類型定義.這樣與μC/OS-II所定義的變量類型相一致.OS_CPU_A.A 中要求用戶編寫四個簡單的匯編函數:(1)OSStartHighRdy()函數的作用是用于運行最高優先級的就緒任務.(2)OSCtxSw()是實現 CPU 在正常運行時任務間的切換,即對當前任務堆棧的保存和對高優先級任務堆棧的彈出,使最高優先級任務獲取CPU 的控制權. (3)OSIntCtxSw()是在中斷服務程序中執行任務切換功能的函數.(4)OSTickISR()是系統時鐘的中斷服務程序.該程序執行頻率為10~100 Hz,主要功能是檢查是否有由于延時而被掛起的任務成為就緒任務,如果有就調用OSIntCtxSw()進行任務切換,從而運行高優先級的任務. OS_CPU_C.C中主要是編寫任務堆棧初始化函數OSTaskStklnit().

          移植中的關鍵問題

          多任務系統在運行時,任一當前正在運行的任務好像獨占CPU一樣,需要為每個任務開辟一段內存空間作為該任務的任務堆棧,該堆棧的作用是保存任務被切換前時CPU各寄存器的值以及系統堆棧的數據。由于不同的處理器其內部的寄存器分配不一樣,有時堆棧的增長方式也不一樣,因而移植的關鍵問題就是要針對不同的處理器如何在任務切換時做好寄存器的狀態的保護,以及系統堆棧和任務堆棧的切換,從而編寫好介于底層硬件和操作系統之間的軟件層。 單片機有R1~R5五個通用寄存器,以及段寄存器SR, 程序計數器PC,共有7個CPU內部寄存器在任務切換前需要保存。μC/OS-II系統通過調用OSCtxSw()來實現任務的切換。

          語音識別系統實例

          本系統通過一個語音識別系統來驗證μC/OS-II在SPCE061A上的移植成功,系統共創建4個實時任務,硬件實現上只需在最小系統上增加相應的音頻電路和液晶顯示模塊。

          //建語音識別初始化任務

          OSTaskCreate(Task1, (void * )0, (void*) tackl[-TASK—STK—SIZE一1],1);

          //建立語音訓練任務

          OSTaskCreate(Task2, (void * )0, (void*) tack2[-TASK—STK—SIZE一1],2);

          //建立語音識別任務

          OSTaskCreate(Task3, (void * )0, (void*) tack3[-TASK—STK—SIZE一1],3);

          //LCD顯示的任務

          OSTaskCreate(Task4, (void * )1, (void*) tack4[-TASK—STK—SIZE一1],4);

          同時采用信號量來實現語音識別任務和LCD顯示的任務之間的通訊,使得系統在成功識別語音后同時控制LCD輸出識別的正確與否的信息。系統運行結果:系統初始化,調用訓練函數進行語音識別訓練;訓練成功后,進入語音識別循環,并將語音識別的結果在LCD上顯示出來。

          μC/OS-II操作系統具有較強的實時性,而且代碼量較小(總計8K 多),現已被移植到許多處理器上。而將μC/OS-II移植到SPCE061A芯片上,具有一定的應用價值,使得基于SPCE061A的可以更加靈活。同時μC/OS-II 實時操作系統的在SPCE061A移植,不但可以提高基于SPCE061A的的實時性、可靠性和穩定性,還提高了應用軟件的可移植性,降低了研發周期。

        linux操作系統文章專題:linux操作系統詳解(linux不再難懂)

        上一頁 1 2 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 施秉县| 白河县| 小金县| 白沙| 长沙县| 新竹市| 凭祥市| 积石山| 静海县| 永吉县| 赤峰市| 抚宁县| 望江县| 南漳县| 乳山市| 石首市| 确山县| 芜湖市| 龙井市| 蒙城县| 容城县| 和田市| 阳西县| 宿迁市| 皋兰县| 温州市| 新竹县| 博爱县| 东乡| 永兴县| 高邮市| 四子王旗| 屯留县| 蕲春县| 阿勒泰市| 大庆市| 临沂市| 铜川市| 运城市| 西乌珠穆沁旗| 阿勒泰市|