在CodeWarrior編譯環(huán)境下運行μC/OS―III
3.3 修改文件
前面提到,uC/OS—III和uC/CPU中需要移植的代碼文件在不同的編譯器下需要稍作修改。其中,C文件與編譯器無(wú)關(guān),而匯編文件從IAR轉到CodeWarrior有幾個(gè)地方需要修改,這涉及cpu_a.a(chǎn)sm和os_cpu_a.a(chǎn)sm兩個(gè)文件,說(shuō)明如下:
①在CodeWarrior的匯編文件中,默認標號都以“:”結尾,編譯指令都以“.”開(kāi)頭。雖然也可以在工程設置里取消該限制,但還是建議按照該格式編寫(xiě)代碼。因此,請檢查匯編代碼是否符合上述要求。
②在CodeWarrior的匯編文件中,聲明全局函數用的是.global,而IAR中用的是PUBLIC,如IAR中的“PUB-LIC OSStartHighRdy”應改為“.global OSStartHighRdy”。
③在匯編文件中,代碼前要進(jìn)行代碼段的聲明,如IAR中的“RSEG CODE:CODE:NOROOT(2)”在CodeWarrior里應改為“.text,code”
3.4 添加頭文件路徑
右鍵點(diǎn)擊工程名,選擇“Properties”→“C/C++Build”→“Settings”,在“ARM Compile”→“Input”頁(yè)面可以添加頭文件搜索路徑,把工程中用到的頭文件所在的路徑加上,添加時(shí)建議使用相對路徑(相對工程目錄),如圖4所示。本文引用地址:http://dyxdggzs.com/article/170659.htm
3.5 修改中斷向量衰
CodeWarrior自動(dòng)生成的kinetis_sysinit.c文件包含了startup代碼和中斷向量表,把μC/OS—Ⅲ用到的兩個(gè)中斷向量加入中斷向量表,代碼如下:
PendSV中斷和SysTick定時(shí)器集成于Cortex—M3/4內核中,專(zhuān)門(mén)用于OS的任務(wù)切換和時(shí)鐘節拍。因此,只要是使用Cortex—M3/4內核的單片機,這部分的移植代碼都是通用的。
3.6 代碼調試
在進(jìn)行μC/OS—III應用開(kāi)發(fā)時(shí),應先從最小系統開(kāi)始調試。在配置文件里把不需要的功能先關(guān)掉,如消息隊列、信號量、hook函數、統計任務(wù)等。在用戶(hù)程序里執行完硬件相關(guān)的初始化后,先建立一個(gè)簡(jiǎn)單的任務(wù)(即起始任務(wù)),然后測試任務(wù)調度是否正常。注意,這時(shí)在運行的還有μC/OS—III內部的空閑任務(wù)。
如果任務(wù)調度正常,可在起始任務(wù)里初始化并打開(kāi)時(shí)鐘節拍中斷,然后可通過(guò)斷點(diǎn)調試等手段測試時(shí)鐘中斷服務(wù)程序是否得到正確執行。確認后可在起始任務(wù)里調用延時(shí)相關(guān)的函數,如以一定的頻率閃燈,或者向串口輸出信息。如果上述測試通過(guò),那么意味著(zhù)μC/OS—III已經(jīng)運行起來(lái)了,接下來(lái)用戶(hù)就可以一步步按照應用需求進(jìn)行開(kāi)發(fā)了。
結語(yǔ)
使用CodeWarrior集成開(kāi)發(fā)環(huán)境的讀者,只要按照以上步驟,即可在Kinetis系列單片機上完成μC/OS—III的編譯和運行。本文所講述的步驟也可用于其他開(kāi)發(fā)環(huán)境,遵循Micrium官方的文件組織結構,可使得工程目錄結構清晰規范,方便代碼的升級和共享。
51單片機相關(guān)文章:51單片機教程
評論