<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 嵌入式操作系統μCOS-Ⅱ剖析與移植

嵌入式操作系統μCOS-Ⅱ剖析與移植

作者: 時(shí)間:2016-09-12 來(lái)源:網(wǎng)絡(luò ) 收藏

現在,大家不僅擁有放在桌上處理文檔、進(jìn)行工作管理的通用計算機,而且也可能擁有從大到小的各種使用技術(shù)的電子產(chǎn)品。隨著(zhù)電子產(chǎn)品的智能化,智能手機、物聯(lián)網(wǎng)、智能家居的出現,使用在通用計算機中通過(guò)變身慢慢出現在產(chǎn)品中。與硬件緊密相關(guān),如何將簡(jiǎn)便的移植到各式各樣的產(chǎn)品中是產(chǎn)品廠(chǎng)家急需解決的問(wèn)題。了解操作系統的基本概念、基本原理,掌握操作系統的主要任務(wù)及功能的設計思路是設計人員需要具備的知識。想要移植操作系統到電子產(chǎn)品中,需了解實(shí)時(shí)操作系統的概念、內核結構,如何裁剪操作系統代碼。本文通過(guò)對嵌入式操作系統μC/OS-Ⅱ源代碼的分析及移植,掌握多任務(wù)實(shí)時(shí)系統的基本概念、競爭與調度算法、任務(wù)間同步與通信、存儲與定時(shí)的管理。

本文引用地址:http://dyxdggzs.com/article/201609/303627.htm

1 嵌入式操作系統分類(lèi)

運行在嵌入式硬件平臺上,對整個(gè)系統及其所操作的部件、裝置等資源進(jìn)行統一協(xié)調、指揮和控制的系統軟件叫作嵌入式操作系統。其有如下特點(diǎn):微型化、可裁剪性、實(shí)時(shí)性、高可靠性和易移植性。按嵌入式操作系統應用范圍分類(lèi)可分為:

(1) 通用型嵌入式操作系統,Windows CE,Vx-Works,μCLinux和μC/OS;

(2)專(zhuān)用型嵌入式操作系統,如移動(dòng)電話(huà)的Symbian,PDA的Palm OS。

嵌入式操作系統還可分為商用型和免費型:

(1)商用型的實(shí)時(shí)操作系統功能穩定、可靠,有完善的技術(shù)支持和售后服務(wù),但往往價(jià)格昂貴,如Vx-works,QNX,WinCE,Palm OS等;

(2)免費型的實(shí)時(shí)操作系統在價(jià)格方面具有優(yōu)勢,目前主要有Linux和μC/OS-Ⅱ,穩定性與服務(wù)性存在挑戰。按嵌入式操作系統使用領(lǐng)域分類(lèi)可分為:有線(xiàn)電視機頂盒領(lǐng)域,PowerTV;移動(dòng)通信領(lǐng)域,EPOC;掌上計算機領(lǐng)域,Palm OS;數字影像領(lǐng)域,Digita。

2 μC/OS-Ⅱ代碼剖析

微控制器操作系統(Micro Controller OS,μC/OS)是美國人Jean J.Labrosse 1992年完成的,應用面覆蓋了諸多領(lǐng)域,如照相機、醫療器械、音響設備、發(fā)動(dòng)機控制、高速公路電話(huà)系統、自動(dòng)提款機等。μC/OS-Ⅱ用C語(yǔ)言和匯編語(yǔ)言編寫(xiě)的。其源代碼可以從網(wǎng)站www.micrium.com中免費下載。

μC/OS-Ⅱ操作系統內核的主要工作是對任務(wù)進(jìn)程管理和調度。典型的任務(wù)一個(gè)無(wú)限循環(huán),如圖1所示。

嵌入式操作系統μCOS-Ⅱ剖析與移植

圖1 任務(wù)的組成

下面對創(chuàng )建任務(wù)的函數OSTaskCreate()的源代碼做簡(jiǎn)單的介紹。

嵌入式操作系統μCOS-Ⅱ剖析與移植

μC/OS-II支持64個(gè)任務(wù),每個(gè)任務(wù)一個(gè)特定的優(yōu)先級。優(yōu)先級越高,數字越小。當創(chuàng )新一個(gè)新任務(wù)時(shí),創(chuàng )建任務(wù)函數OSTaskCreate()需先獲得一個(gè)未被使用的在有效值范圍內任務(wù)優(yōu)先級,初始化任務(wù)堆棧函數OSTaskStkInit()獲得該任務(wù)的初始數據(指向任務(wù)的指針、程序狀態(tài)字等),初始化任務(wù)控制塊函數OSTCBInit()獲取從務(wù)控制塊鏈表中一個(gè)任務(wù)控制塊并用任務(wù)的屬性對其進(jìn)行賦值后將其鏈入到任務(wù)控制塊鏈表的頭部,OSSched()函數進(jìn)行任務(wù)調度。多任務(wù)操作系統的核心工作就是任務(wù)調度。所謂調度就是通過(guò)一個(gè)算法在多個(gè)任務(wù)中確定哪個(gè)任務(wù)來(lái)運行。 μC/OS-Ⅱ是占先式實(shí)時(shí)多任務(wù)內核,優(yōu)先級最高的任務(wù)一旦準備就緒,則擁有CPU的所有權開(kāi)始投入運行。μC/OS-Ⅱ進(jìn)行任務(wù)調度的思想是每時(shí)每刻總是讓優(yōu)先級最高的就緒任務(wù)處于運行狀態(tài)。μC/OS-Ⅱ進(jìn)行任務(wù)調度的依據就是任務(wù)就緒表。任務(wù)就緒表記載就緒的任務(wù)優(yōu)先級,根據任務(wù)就緒表可以判斷出哪個(gè)任務(wù)的優(yōu)先級最高,進(jìn)行調度。

3 μC/OS-Ⅱ移植

所謂操作系統的移植,是指使一個(gè)實(shí)時(shí)操作系統能夠在某個(gè)微處理器平臺上運行。μC/OS-Ⅱ的主要代碼都是由標準的C語(yǔ)言寫(xiě)成的,移植方便。移植的主要工作是修改部分與處理器硬件相關(guān)的代碼。雖然μC/OS-Ⅱ在設計之初已經(jīng)充分考慮了可移植性,但是μC/OS-Ⅱ在讀/寫(xiě)處理器寄存器時(shí),只能通過(guò)匯編語(yǔ)言來(lái)實(shí)現,因此仍需要用C語(yǔ)言和匯編語(yǔ)言編寫(xiě)一些與處理器硬件相關(guān)的代碼。μC/OS-Ⅱ的體系結構如圖2所示,在該圖中可以很容易看出哪些代碼文件與處理器相關(guān)需要移植時(shí)修改。圖中中間有3大塊代碼文件顯示區域,左上區域為與處理器無(wú)關(guān)的代碼,右上區域為與應用有關(guān)的代碼,下面區域是與處理器相關(guān)的代碼。下面區域包括C語(yǔ)言OS_CPU.H和OS_CPU_C.C和匯編語(yǔ)言OS_CPU_A.ASM代碼文件,在移植時(shí)重點(diǎn)去修改這幾個(gè)文件。

3.1 修改OS_CPU.H

OS_CPU.H中的與處理器和編譯器相關(guān)的代碼包括了用#define語(yǔ)句定義的、與處理器相關(guān)的常數、宏以及類(lèi)型、與ARM 處理器相關(guān)宏開(kāi)啟/關(guān)閉中斷的代碼。絕大多數的微處理器和微控制器的堆棧是從上往下長(cháng)的。但是某些處理器是用另外一種方式工作的。μC/OS-Ⅱ被設計成兩種情況都可以處理,只要在結構常量OS_STK_GROWTH中指定堆棧的生長(cháng)方式即可。如設置OS_STK_GROWTH為0表示堆棧從下往上增長(cháng);設置OS_STK_GROWTH為1表示堆棧從上往下增長(cháng)。

3.2 修改OS_CPU_C.C

OS_CPU_C.C中的與操作系統相關(guān)的函數 OSTaskStkInit(),OSInitHookBegin(),OSInitHookEnd(),OSTaskCreateHook(),OSTaskDelHood(),OSTaskSwHook(),OSTaskStatHook(),OSTCBInitHook(),OSTimeTickHook(),OSTaskIdleHook()。如系統啟動(dòng)任務(wù)時(shí),CPU從堆棧初始化OSTaskStkInit()中獲得初始數據,如指向任務(wù)的指針、程序狀態(tài)字。不同處理器內部的寄存器個(gè)數及每個(gè)位數不同需要根據實(shí)際情況修改。

嵌入式操作系統μCOS-Ⅱ剖析與移植

圖2 μC/OS-Ⅱ的體系結構

3.3 修改OS_CPU_A.ASM

OS_CPU_A.ASM 中的與處理器相關(guān)函數OSS-tartHighRdy(),OSCtxSw(),OSIntCtxSw(),OSTickISR()。下面以運行優(yōu)先級最高的就緒任務(wù)函數OSS-tartHighRdy()為例分別移植到ARM和8086中代碼改變情況。


上一頁(yè) 1 2 下一頁(yè)

關(guān)鍵詞: 嵌入式 操作系統 μCOS-Ⅱ

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>