第七章 在51微控制器上移植
uc/os-2
7.1 uc/os-2移植的一般性問題
7.1.1可重入函式
(1)多個任務呼叫同乙個函式,其中的全域性變數丟失產生錯誤。
(2)一般來說,乙個可重入函式只使用區域性變數,區域性變數儲存在堆疊中,如果一定要用,必須做保護。
7.1.2時鐘節拍的產生
uc/os-2是通過硬體中斷來實現系統時鐘,並在時鐘中斷服務程式中來處理與時間相關的問題的。
7.1.3任務堆疊的設計:處理器支援一定數量的硬體堆疊,能夠讀寫操作。
(1)堆疊的格式,因為生長方式不同。
(2)系統堆疊與任務堆疊的關係。堆疊必須設定在乙個特定區域內:51要求堆疊必須在片內
ram,只能把應用程式中的任務堆疊的內容存放在片外
ram中,片內
pam中設定乙個公用的堆疊
(3)片外ram中用來存放任務堆疊內容的區域叫做任務堆疊映像,而片內
pam中的公用堆疊叫做系統堆疊。
7.2在51系列微控制器上移植
uc/os-2
一般用c語言編寫。
7.2.1改寫檔案
os_cpu.h
(1)堆疊的增長方向:51是從低位址向高位址增長
->os_stk_growth為1
(2)定義臨界段的巨集
(3)定義任務切換巨集
(4)定義資料型別
7.2.2任務堆疊的設計
(1)51堆疊指標
sp總是先加
1再存資料,所以用的時候先減一。
(2)任務切換時,計算任務堆疊映像的最低位址空間用來存放使用者堆疊的長度。
7.2.3檔案
os_cpu_c.c
的改寫
改寫任務堆疊初始化函式ostaskstkinit(),使用西永設定時鐘中斷,新增定時器的初始化程式。
(1)改寫任務堆疊初始化程式
(2)系統時鐘初始化
7.2.4注意事項
(1)不要多修改。
(2)keil中 重入函式有標註
reentrant
關鍵字
7.3一些應用
UCOS學習筆記 在51微控制器上移植UCOS
作業系統是一種與硬體 處理器 相關的軟體,根據某一種處理器設計的作業系統一般是不能再其他種類的處理器上執行的。若要在其他處理器上執行該作業系統,必須對作業系統進行相應的改造,即所謂作業系統的移植。一.ucos移植的一般性問題 1.可重入函式 在多工的作業系統中,系統提供的函式可以被多個任務呼叫,而不...
51微控制器上移植C語言的printf
移植了c語言的printf 函式到51微控制器上,實現了在51微控制器的串列埠類pc端的printf 輸出。在專案工程中新增xxprintf.h和xxprintf.c檔案 在專案中需要使用xxprintf 函式的地方引入標頭檔案xxprintf.h,在xxprintf.h中引入微控制器相關標頭檔案 ...
第七章 在金先生家
金先生說 你不能因為任何人放棄自己的夢想。還有各種各樣的人會取笑你,但也會有更多的人認可你。有的時候,瘋狂的念頭比普通的小目標更容易達到。當你定下大目標的時候,就意味著你必須付出比別人多得多的努力。從前有乙個農家小伙兒,他每天的願望是從鵝籠裡揀乙個鵝蛋當早飯。有一天,他竟然在鵝籠裡發現了乙隻金蛋。一...