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