μC/OS-II在51單片機(jī)上的移植
摘要:針對在51單片機(jī)上移植實時操作系統(tǒng)μC/OS-II的目的,以μC/OS-II工作原理為基礎(chǔ),結(jié)合51單片機(jī)堆??臻g少的情況,采用改變堆棧指針到不同任務(wù)寄存器組的方法,通過改變堆棧指針的實驗,得出在堆??臻g較少的情況下,也能夠?qū)崿F(xiàn)μC/OS-II在51單片機(jī)上的運(yùn)行的結(jié)論。
關(guān)鍵詞:μC/OS;單片機(jī);實時操作系統(tǒng);堆棧
μC/OS-II是一種公開源代碼、結(jié)構(gòu)小巧、具有可剝奪實時內(nèi)核的嵌入式開發(fā)系統(tǒng),代碼簡短、條理清晰、實時性及安全性能很高,絕大部分代碼用C編寫,現(xiàn)已被移植到多種處理器的構(gòu)架中。隨著51單片機(jī)片內(nèi)資源的日益豐富,在51單片機(jī)上移植μC/OS-II已成為可能,植入系統(tǒng)后,由系統(tǒng)來管理軟件與硬件資源,簡化應(yīng)用程序的設(shè)計,并且使應(yīng)用系統(tǒng)功能更加完善。因此在51單片機(jī)上移植μC/OS-II具有十分重要的意義。
1 μC/OS實時操作系統(tǒng)概述
μC/OS-II實時操作系統(tǒng)是一種可移植、可固化、可裁剪即可剝奪型的多任務(wù)實時內(nèi)核,適用于各種微處理器和微控制器。μC/OS-II主要包括任務(wù)調(diào)度、時間管理、內(nèi)存管理、事件管理(信號量、郵箱、消息隊列)4大部分。它的移植與4個文件相關(guān):匯編文件(OS_CPU_A.A SM)、處理器相關(guān)C文件(OS_CPU.H、OS_CPU_C.C)和配置文件(OS_CFG.H)。有64個優(yōu)先級,系統(tǒng)占用8個,用戶可創(chuàng)建56任務(wù),不支持時間片輪轉(zhuǎn)。
它的基本思路就是“近似地每時每刻總是讓優(yōu)先級最高的就緒任務(wù)處于運(yùn)行狀態(tài)”。為了保證這一點,它在調(diào)用系統(tǒng)函數(shù)、中斷結(jié)束、定時中斷結(jié)束時總是執(zhí)行調(diào)度算法。原作者通過事先計算好數(shù)據(jù),簡化了運(yùn)算量,通過精心設(shè)計就緒表結(jié)構(gòu),使得延時可預(yù)知。任務(wù)的切換是通過模擬一次中斷實現(xiàn)的。
2 任務(wù)調(diào)度的實現(xiàn)原理
任務(wù)調(diào)度是μC/OS-II的重要部分,和具體的微處理器關(guān)系緊密。必須移植的5個函數(shù)有4個都和任務(wù)有關(guān)。任務(wù)調(diào)度就是保存當(dāng)前任務(wù)的寄存器和PC指針(即當(dāng)前任務(wù)的斷點),然后把將要執(zhí)行的任務(wù)的寄存器值返回給寄存器并把PC指向?qū)⒁獔?zhí)行任務(wù)的斷點。這些的實現(xiàn)要借助于堆棧和中斷,為了簡便起見,先看函數(shù)調(diào)用時堆棧的使用情況。在函數(shù)調(diào)用時,堆棧的一個重要功能就是保存被調(diào)函數(shù)的斷點地址。若有4個函數(shù),F(xiàn)un1調(diào)用Fun2,F(xiàn)un2調(diào)用Fun3,F(xiàn)un3調(diào)用Fun4,F(xiàn)un4為葉子程序(無子程序調(diào)用)。
評論