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

發(fā)布時(shí)間:2015-7-27 10:23    發(fā)布者:designapp
關(guān)鍵詞: 嵌入式操作系統 , 移植
現在,大家不僅擁有放在桌上處理文檔、進(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í)的管理。

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所示。


圖1 任務(wù)的組成


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



μ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í)際情況修改。


圖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中代碼改變情況。





代碼移植完畢后便可以測試。根據處理器的不同,移植一個(gè)操作系統可能需要編寫(xiě)或改寫(xiě)50~300行的代碼。如果內核測試通過(guò)后,可以運行一些簡(jiǎn)單的任務(wù)和時(shí)鐘節拍中斷服務(wù)子程序,一個(gè)嵌入式操作系統μC/OS-Ⅱ就移植好了。

4 結語(yǔ)

μC/OS-Ⅱ源代碼簡(jiǎn)單、易懂,容易學(xué)習和移植,在存儲空間有限及對實(shí)時(shí)性要求高的電子產(chǎn)品中較為普遍使用。了解了μC/OS-Ⅱ源代碼后,對于學(xué)習嵌入式其他操作系統代碼如嵌入式Linux,VxWorks等更加容易,也容易實(shí)現移植。
本文地址:http://selenalain.com/thread-151746-1-1.html     【打印本頁(yè)】

本站部分文章為轉載或網(wǎng)友發(fā)布,目的在于傳遞和分享信息,并不代表本網(wǎng)贊同其觀(guān)點(diǎn)和對其真實(shí)性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問(wèn)題,我們將根據著(zhù)作權人的要求,第一時(shí)間更正或刪除。
edu118nn 發(fā)表于 2015-9-13 14:58:04
輕松就業(yè),高薪實(shí)習,讓眾多有志往單片機、ARM/嵌入式系統、Linux、FPGA方向發(fā)展的哥們迅速提升職業(yè)技能,
經(jīng)過(guò)系統提升后,保證就業(yè)5-10K.更多疑問(wèn)咨詢(xún)深圳信盈達:Q2532176025  13397813997黃!
您需要登錄后才可以發(fā)表評論 登錄 | 立即注冊

相關(guān)視頻

關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點(diǎn)地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權所有   京ICP備16069177號 | 京公網(wǎng)安備11010502021702
快速回復 返回頂部 返回列表
午夜高清国产拍精品福利|亚洲色精品88色婷婷七月丁香|91久久精品无码一区|99久久国语露脸精品|动漫卡通亚洲综合专区48页