新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > μC/OS2Ⅱ在軍用FM80386EX處理器上的移植應用

        μC/OS2Ⅱ在軍用FM80386EX處理器上的移植應用

        作者: 時間:2009-02-25 來源:網絡 收藏

        μC/OS-Ⅱ是操作系統(RTOS),已經通過了非常嚴格的測試,得到了美國航空管理局(FederalAviationAdministration)的認證.μC/OS-Ⅱ功能強大,支持56個用戶任務,其內核為占先式,支持信號量、郵箱、消息隊列等多種常用的進程通信機制,現已成功到眾多商業嵌入式系統中,是1種成熟穩定的內核.與大多商用RTOS不同的是,μC/OS-Ⅱ公開所有的源代碼,90%的代碼使用標準的ANSIC語言書寫,程序可讀性強,性好.同時,它可以免費獲得,即使商業也只收取少量的許可費用.因此,對μC/OS-Ⅱ操作系統的學習研究、開發、具有重要的意義.

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

          嵌入式是1種高度集成,32位總線結構,專為惡劣環境下的嵌入式控制應用優化設計的全靜態CPU.它采用16位外部數據總線,26位地址總線及Intel系統管理模式(SMM),能在廉價的16位硬件系統中運行32位程序,可將基于Intel386架構的大量軟件應用于嵌入式系統.為了有效地管理多任務,以及滿足系統的實時性要求,常常需要使用實時嵌入式操作系統.

          要μC/OS-Ⅱ,必須滿足以下要求:的C編譯器能產生可重入代碼;用C語言可以打開和關閉中斷;處理器支持中斷,并且能產生定時中斷;處理器能容納一定數量的硬件堆棧;處理器有將堆棧指針和其他CPU寄存器讀出、存儲到堆棧或內存中的指令.滿足以上條件,可以進行μC/OS-Ⅱ的.

          μC/OS-Ⅱ實時操作系統結構

          應用程序處于整個系統的頂層,每個任務都可以認為自己獨占了CPU,因此任務被設計成了1個無限循環.而μC/OS-Ⅱ與處理器無關的代碼提供了該實時系統的系統服務,應用程序利用這些API函數進行內存管理,任務間的通信以及創建、刪除任務等.μC/OS-Ⅱ的代碼大部分是使用ANSIC書寫,與微處理器硬件相關的部分使用匯編語言編寫,并且匯編語言編寫的部分已經壓倒最低限度,因此μC/OS-Ⅱ的可移植性好.而處理器80386具有堆棧指針、CPU內部寄存器入棧、出棧指令.所使用的C編譯器BorlandC3.1支持內嵌匯編,使得關中斷和開中斷能在C語言程序中實現.

          實時內核μC/OS-Ⅱ在上的移植

          我們使用BorlandC3.1編譯器移植μC/OS-Ⅱ主要包括以下幾個步驟:

          編寫OS-CPU.A.ASM

          這里要實現4個匯編函數改寫:多任務啟動函數中調用OSOSTartHighRdy(),任務切換函數OSCtxSw(),中斷任務切換函數OSIntCtrSw(),時鐘節拍服務函數OSTickISR().

          1) OSStartHighRdy()函數.該函數被OSStart()函數調用,功能是運行優先級最高的就緒任務,其主要代碼如下:

        2) OSCtxSW()函數.該函數被OS-Sched()函數調用,通常是用匯編語言編寫的,因為C編譯器不能從C語言中

        直接處理CPU寄存器.OSCtxSW()的功能是在任務級實現任務切換,任務切換是模擬軟中斷來實現的,其主要代碼如下:

        圖1任務級任務切換時的堆棧結構

          3) OSIntCtxSw( )函數.該函數只能在中斷子程序里被OSIntExit()函數調用.由于中斷的產生可能引起任務切換,在中斷服務程序的最后會調用OSIntExit()函數來檢查任務就緒狀態,如果滿足任務切換條件,則OSIntExit()調用此函數實現任務切換,除了不應調用任務切換函數OS-TASK-SW()外,其余代碼與-OSCtxSw相同.

          4) OSTickISR( )函數.發生中斷時,CPU的中斷向量會指向該ISR.其主要代碼如下:

        一般情況下,產生調用OSTickISR()函數時,時鐘節拍的設備應設置成每隔10~100ms產生1次中斷.必須在多任務系統啟動以后,也就是在調用OSStart()之后,再開啟時鐘節拍器.

          用C語言編寫6個操作系統相關的函數

        后5個函數是鉤子函數,可以不加代碼:

        設置OS-CPU.H中與處理器和編譯器相關的代碼

          80386處理器的堆棧從內存高地址向低地址遞減,所以把OS-STK-GROWTH置1.

        完成上述工作后,μC/OS-Ⅱ就可以運行在80386處理器上了.另外根據用戶需求按需配置OS-CFG.H,裁減μC/OS-Ⅱ,使之占用盡量少的內存.


        上一頁 1 2 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 朝阳区| 陕西省| 水城县| 武乡县| 民丰县| 开远市| 灯塔市| 石屏县| 海淀区| 乐亭县| 称多县| 青海省| 莎车县| 宁津县| 如皋市| 灵寿县| 正定县| 沂水县| 耿马| 于都县| 德格县| 乌拉特后旗| 托克逊县| 寿阳县| 滕州市| 余干县| 大竹县| 忻城县| 保靖县| 连江县| 龙江县| 北川| 房产| 鹤庆县| 上饶县| 高清| 平顶山市| 竹溪县| 南木林县| 定远县| 娄底市|