開啓ucosii的移植之旅

開啓ucosii的移植之旅:數組

4.6.一、移植和硬件平臺的關係app

(1)只要是cortex-m3內核內核的soc移植差別都不大。函數

同內核同soc的不一樣開發板移植差別都不大。spa

不一樣內核的開發板移植難度大,找的官方移植的同內核版本爲起點。指針

移植的通常思路: 先找到相近的內核移植好的源碼。(官網裏找一個)調試

在開發環境上創建好工程模板後,將ucosii的核心代碼添加進去。而後編譯,解決報錯和警告。(在這裏咱們只是解決了語法錯誤,並不知道整個代碼具體幹了什麼事,本身是不清楚的)下載運行,並小幅修改代碼查看結果(驗證本身的想法),最後添加並調試項目須要的BSP,編寫並調試項目app部分。blog

4.6.2開始移植代碼ip

跟着朱老師實戰一下: 本身的板子是 STM32F103RCT6,建好工程模板。開發

編譯出錯3個錯誤。input

..\app\..\APP\includes.h(52): error:  #5: cannot open source input file "stm32f10x_lib.h": No such file or directory

找不到"stm32f10x_lib.h"頭文件,由於老版本的緣故,實際上"stm32f10x_lib.h"裏邊包含了各個外設的頭文件。這個在新版本里沒有,可是咱們有"stm32f10x.h"

還有絕對路徑包含的問題,注意本身的文件名大小寫以及對錯。

.\Objects\project_template.axf: Error: L6200E: Symbol __ARM_use_no_argv multiply defined (by app.o and main.o).

.\Objects\project_template.axf: Error: L6200E: Symbol main multiply defined (by app.o and main.o).      main函數重複了。咱們在user裏定義了main函數,而移植過來的app裏面也有main函數。

.\Objects\project_template.axf: Error: L6218E: Undefined symbol OS_CPU_SysTickInit (referred from app.o).

.\Objects\project_template.axf: Error: L6218E: Undefined symbol OS_CPU_PendSVHandler (referred from vectors.o).

把一些文件沒有添加進來。粗心形成的。 在這裏遇到vectors.s這是之前的啓動文件,如今用startup_stm32f10x_xx,,xx根據單片機的容量來選擇。代碼能夠編譯成功了。

4.6.3整理bsp部分:

實際移植髮現的問題: 

stm32單片機硬件仿真時超過五個斷點就會全速運行不了。

 本身對 OSTCBList的指針的理解有誤差:剛開始確實是OS_TCB      OSTCBTbl[OS_MAX_TASKS + OS_N_SYS_TASKS]任務數組,按照元素下標依次鏈接(在TCB初始化函數中)可是每建立一個任務時(在此以前已經建立了兩個任務,)

在OSTCBint函數中 :

ptcb->OSTCBNext = OSTCBList; /* Link into TCB chain */
ptcb->OSTCBPrev = (OS_TCB *)0;
if (OSTCBList != (OS_TCB *)0) {
OSTCBList->OSTCBPrev = ptcb;
}
OSTCBList = ptcb;

 

 OSTCBList保存的是是上一次的TCB的地址,因此每次OSTCBList
相關文章
相關標籤/搜索