一、ucos 移植主要有三步:
1. 修改檔案 os_cpu_c.c
ostasktkinit()函式是針對cpu壓棧的函式,需要模仿cpu初始化後的暫存器狀況。
2. 修改檔案os_cpu.h
3. 修改檔案os_cpu_a.asm
二、ucos移植中遇到的問題
1. 任務不能進行有效切換
原因:以前任務只要task能夠達到功能的死迴圈就可以了,所以每個任務都是while(1),後來發現任務之間不能夠進行切換,網上查資料發現每個task中都要包含ostimedly()函式才能夠實現task之間的跳轉。
2. 未注意版本之間的區別
新版本的ucos-ii新增了乙個檔案os_tmr.c,主要在timer上面做了一些調整,移植時沒有注意到,還是按照老版本的方法進行除錯,導致函式條用存在問題,後來查詢資料知道了問題原因,可以通過將os_cfg.h檔案中的os_tmr_en設定為0 來禁止對timer功能進行的改變解決問題。
3. 任務切換中斷的移植
移植ucos-ii,程式總是在b osstarthang 掛掉,原因是stm32本身的異常中斷pendsv_handler代替了ucos的異常中斷ospendsv,使其不能夠正常執行,解決方法 將stm32本身的異常中斷pendsv_handler更改為ucos的異常中斷ospendsv就可以了.
更改startup_stm32f10x_hd.s(v3.1.0版本)
1、dcd pendsv_handler ; pendsv handler
更改為:
dcd ospendsv ; ospendsv 中斷
2、pendsv_handler proc
export pendsv_handler [weak]
b .
endp
更改為:
ospendsv proc
export ospendsv [weak]
b .
endp
UCOSII移植問題 IAR
一 sprintf浮點數問題 最近遇到了乙個問題,就是ucosii中浮點數呼叫printf顯示不正常,但是裸機上對浮點數支援正常,以下是詳細情況。pragma data alignment 在ucos中呼叫printf除錯浮點數的時候,在記憶體中表示正確,但是列印資料就都為0.00,其他整形資料表示...
移植UCOSII注意的問題
移植ucosii其實並不難,現在網上的資料又那麼多。但是要弄懂要花上不少時間。現在來說說移植需要注意的幾個問題吧。參考文件 pendsv 主要應用於系統任務切換 nvic 負責晶元的中斷管理 準備 micrium software ucos ii可以參考我上篇的建立工程,在上篇的工程結構基礎上我新建...
uclinux移植遇到的問題
但是遇到了一些問題 重起後,導致了出現 檔案的錯誤,不能用我的使用者名稱進行登入,搜尋網路後發現這個問題經常有人遇到,解決方法是登入到 然後執行 命令。或者 home username 我試了這兩種方法,不知道到底是哪個起作用了,再重啟的時候不再出現 dmrc 的錯誤,但是出現了更嚴重的 持續不到 ...