新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > ARM7嵌入式系統在車輛調度中的應用范疇

        ARM7嵌入式系統在車輛調度中的應用范疇

        作者: 時間:2015-04-15 來源:網絡 收藏

          二、操作系統的內核調度機理:

        本文引用地址:http://www.104case.com/article/272601.htm

          由于本系統對時性要求不是很強,采用了這種簡單的源碼開發的操作系統。由于是以任務為基礎進行調度的。所以系統中所要處理的中間結果或響應外部的輸入和輸出,都應該在任務中完成。任務的調度是基于優先級的(UC/OS不支持時間片輪轉的方法)。在多任務調度開始后,時鐘節拍開始工作,時鐘節拍產生周期性的中斷,時鐘節拍提供延時或超時的依據。多任務啟動之前應該先進行初始化的工作,包括CPU、TCB(任務控制塊)、ECB(事件控制塊)和操作系統本身的初始化等。初始化完畢后多任務啟動,系統總是運行就緒狀態優先級最高的任務。由于任務本身是一個無限的循環,所以任務中必須包含引起任務切換的函數,如OSTimeDly()、OSSemPend()等,執行到這些函數時將引起任務的切換,即任務的調度。任務切換之前應該保護現場。任務之間要進行通信,通信的方式很多,可以采用全局變量、共享存儲區等一些常用的方式,但在采用的系統中任務之間的通信更多采用信號量、消息郵箱等進行。

          三、操作系統的移植:

          將UC/OS-II這個操作系統移植到三星公司TDMI S3C44B0X上要注意OSCtxSW()這個任務切換函數,其中任務切換的核心是利用出棧指令將各個任務的工作現場加以恢復。利用中斷返回指令改變PC的指針達到任務切換的目的。它實際上是從任務堆棧中恢復處理器所有的寄存器,并且執行中斷返回指令。實際的移植是用軟件來模擬中斷的發生。移植中的關鍵問題是如何構造任務堆棧及任務切換時的出棧順序。而任務區堆棧初始化主要是模擬任務被中斷后堆棧中的內容。另值得注意的是開關中斷的函數OS_ENTERCRITICAL()和OS_EXIT_CRITICAL()這個函數。這兩個函數實現了對臨界區內容的保護。

          四、基于狀態機的程序設計:

          整個系統的軟件設計采用任務加狀態機的設計方法,由于系統中采用了UC/OS-II的操作系統,所以系統中所有事件處理都采用任務調度的方式,任務在操作系統得調度下運行。而對于每個任務采用基于狀態機的設計方法,引起系統中某個狀態發生轉移的事件可能是信號量、也可能是其它的事件。下面對狀態機的有關內容加以介紹。

          狀態機可以看成是一個狀態和轉換的圖,描述了應用程序對接收到事件的響應。

          狀態機的執行:狀態機在某個時刻處理某個事件而在處理另外的事件之前必須完成對這個事件的處理并得到結果。



        關鍵詞: ARM7 UC/OS-II

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 蒙自县| 阳泉市| 南漳县| 千阳县| 塔城市| 岑巩县| 定边县| 浦北县| 山西省| 内江市| 彰化县| 调兵山市| 织金县| 营口市| 琼海市| 富锦市| 卫辉市| 常州市| 屏山县| 安乡县| 申扎县| 通渭县| 泽库县| 铜梁县| 石渠县| 灵宝市| 北宁市| 绥阳县| 东港市| 徐闻县| 海盐县| 青河县| 安阳市| 开远市| 太谷县| 蓬溪县| 中西区| 荃湾区| 三门县| 石阡县| 贡觉县|