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