uC/OS開發(fā)方法
uC/OS是一種體積小巧而實(shí)用的實(shí)時(shí)操作系統(tǒng),由于其代碼的開放性,近年來(lái)普遍受到人們的關(guān)注,許多人開始從事這一操作系統(tǒng)的學(xué)習(xí)及應(yīng)用工作,但由于其文檔較少,特別是關(guān)于安裝和使用方面的指導(dǎo)性文章不夠充足,使很多初學(xué)者,特別是剛剛接觸嵌入式操作系統(tǒng)的朋友們不知道如何進(jìn)行系統(tǒng)的安裝及調(diào)試,為此我結(jié)合自己使用的切身體會(huì),談一談它的安裝及調(diào)試問(wèn)題,希望對(duì)大家能起到一定的幫助作用。
文中的開發(fā)工具及開發(fā)包如下:
開發(fā)包:uC/OS2.51點(diǎn)擊此處下載
http://www.freewind.com.cn/ucos/tools/ucoscode.htm
文中開發(fā)工具:BorlandC3.1點(diǎn)擊此處下載
http://www.freewind.com.cn/ucos/tools/bc31.rar
其中開發(fā)工具是經(jīng)過(guò)本人剪裁過(guò)的,只適用于此項(xiàng)目開發(fā)。
1安裝
1.1下載軟件包Software.rar(文件大小848KB)
1.2解壓縮,建議解壓到C盤根目錄,這樣文件將安裝在C:SOFTWARE,需要空間2.12MB
1.3安裝完畢
1.4以默認(rèn)安裝路徑為例,目錄結(jié)構(gòu)為:
C:SOFTWARE
這是根目錄,是所有軟件相關(guān)的文件都放在這個(gè)目錄下。
C:SOFTWAREBLOCKS
子程序模塊目錄。筆者將例子中μC/OS-II用到的與PC相關(guān)的函數(shù)模塊編譯以后放在這個(gè)目錄下。
C:SOFTWAREHPLISTC
這個(gè)目錄中存放的是與范例HPLIST相關(guān)的文件(請(qǐng)看附錄D,HPLISTC和TO)。HPLIST.C存放在C:SOFTWAREHPLISTCSOURCE目錄下。DOS下的可執(zhí)行文件(HPLIST.EXE)存放在C:SOFTWARETOEXE中。
C:SOFTWARETO
這個(gè)目錄中存放的是和范例TO相關(guān)的文件(請(qǐng)看附錄D,HPLISTC和TO)。源文件TO.C存放在C:SOFTWARETOSOURCE中,DOS下的可執(zhí)行文件(TO.EXE)存放在C:SOFTWARETOEXE中。注意TO需要一個(gè)TO.TBL文件,它必須放在根目錄下。用戶可以在C:SOFTWARETOEXE目錄下找到TO.TBL文件。如果要運(yùn)行TO.EXE,必須將TO.TBL復(fù)制到根目錄下。
C:SOFTWAREuCOS-II
與μC/OS-II相關(guān)的文件都放在這個(gè)目錄下。
C:SOFTWAREuCOS-IIEX1_x86L
這個(gè)目錄里包括例1的源代碼(參見(jiàn)1.07,例1),可以在DOS(或Windows95下的DOS窗口)下運(yùn)行。
C:SOFTWAREuCOS-IIEX2_x86L
這個(gè)目錄里包括例2的源代碼(參見(jiàn)1.08,例2),可以在DOS(或Windows95下的DOS窗口)下運(yùn)行。
C:SOFTWAREuCOS-IIEX3_x86L
這個(gè)目錄里包括例3的源代碼(參見(jiàn)1.09,例3),可以在DOS(或Windows95下的DOS窗口)下運(yùn)行。
C:SOFTWAREuCOS-IIIx86L
這個(gè)目錄下包括依賴于處理器類型的代碼。此時(shí)是為在80x86處理器上運(yùn)行uC/OS-II而必須的一些代碼,實(shí)模式,在大模式下編譯。
C:SOFTWAREuCOS-IISOURCE
這個(gè)目錄里包括與處理器類型無(wú)關(guān)的源代碼。這些代碼完全可移植到其它架構(gòu)的處理器上。
2開發(fā)工具BorlandC3.1的安裝
2.1先下載BorlandC3.1(文件大小1.65MB)
2.2解壓縮,建議解壓到C盤根目錄,這樣全部的文件將安裝在C:BC31,我們強(qiáng)烈建議采用這個(gè)路徑安裝,這樣您將可以直接進(jìn)行項(xiàng)目的編譯及調(diào)試,而不需要更改他們的配置,需要空間5.10MB
2.3如果您一定要將它安裝到其他目錄,請(qǐng)修改相應(yīng)的配置文件,注意藍(lán)色部分:
2.3.1打開<安裝路徑>BINTURBOC.CFG,顯示如下:
-IC:BC31INCLUDE
-LC:BC31LIB
將C:BC31該為安裝的目錄,例如安裝目錄為E:BorlandC31,則改后應(yīng)為
-IE:BorlandC31INCLUDE
-LE:BorlandC31LIB
2.3.2打開<安裝路徑>BINTLINK.CFG,顯示如下:
-LC:BC31LIB
將C:BC31該為安裝的目錄,例如安裝目錄為E:BorlandC31,則改后應(yīng)為
-LE:BorlandC31LIB
2.4至此安裝完成
2.5以默認(rèn)安裝路徑為例,目錄結(jié)構(gòu)為:
C:BC31
這是根目錄,是所有工具相關(guān)的文件都放在這個(gè)目錄下。
C:BC31BIN
全部編譯鏈接的開發(fā)工具都放在這個(gè)目錄下
C:BC31LIB
全部鏈接庫(kù)文件存放在這個(gè)目錄下
C:BC31INCLUDE
全部頭文件都存放在這個(gè)目錄
還有需要說(shuō)明的是這個(gè)BorlandC是經(jīng)過(guò)本人裁減的,目的是減少需要的空間(原版需要19.6MB),如果您使用的是原版的軟件,可以進(jìn)行安裝,則不需要進(jìn)行2.3這一步驟的配置工作,如果您卻是需要這個(gè)原版的軟件,請(qǐng)與我聯(lián)系留言寫信
3項(xiàng)目開發(fā)
隨開發(fā)包附帶了4個(gè)例子,都具有一定的代表性,下面我們結(jié)合例1介紹項(xiàng)目開發(fā)的全過(guò)程,需要說(shuō)明的是:安裝路徑均為默認(rèn)值。
3.1進(jìn)入C:SOFTWAREuCOS-IIEX1_x86LBC45目錄,會(huì)看到兩個(gè)目錄,他們功能如下:
C:SOFTWAREuCOS-IIEX1_x86LBC45SOURCE
源文件目錄
C:SOFTWAREuCOS-IIEX1_x86LBC45SOURCEINCLUDES.H
總的項(xiàng)目頭文件,每個(gè)源文件都應(yīng)包含
C:SOFTWAREuCOS-IIEX1_x86LBC45SOURCEOS_CFG.H
配置文件,用于操作系統(tǒng)配置和剪裁
C:SOFTWAREuCOS-IIEX1_x86LBC45SOURCETEST.C
應(yīng)用程序文件,在開發(fā)新項(xiàng)目時(shí)可以參考這個(gè)文件的格式
C:SOFTWAREuCOS-IIEX1_x86LBC45SOURCETEST.LNK
鏈接文件,包含了鏈接的庫(kù)和鏈接參數(shù)
C:SOFTWAREuCOS-IIEX1_x86LBC45TEST
項(xiàng)目文件目錄
C:SOFTWAREuCOS-IIEX1_x86LBC45TESTTEST.MAK
項(xiàng)目的MAKE文件,熟悉C編譯器的人一定知道,通過(guò)Make文件可以智能的對(duì)整個(gè)項(xiàng)目進(jìn)行自動(dòng)的編譯鏈接,非常方便,我們?cè)诤竺鏁?huì)詳細(xì)介紹這個(gè)文件。
C:SOFTWAREuCOS-IIEX1_x86LBC45TESTTEST.MAP
項(xiàng)目映像文件主要完成庫(kù)文件地址的映射,是項(xiàng)目的產(chǎn)物
C:SOFTWAREuCOS-IIEX1_x86LBC45TESTMAKETEST.BAT
項(xiàng)目Make操作的批處理文件,它將自動(dòng)完成整個(gè)編譯鏈接的全過(guò)程
C:SOFTWAREuCOS-IIEX1_x86LBC45TESTTEST.EXE
項(xiàng)目生成的可執(zhí)行文件,使項(xiàng)目的產(chǎn)物
下面正式開始項(xiàng)目的開發(fā)
3.2第一步,按上面的目錄結(jié)構(gòu),建立項(xiàng)目目錄,在例中建立了一個(gè)目錄C:SOFTWAREuCOS-IIEX1_x86LBC45,并在下面新建了兩個(gè)子目錄TEST和SOURCE,并將相關(guān)文件復(fù)制到這兩個(gè)目錄中,注意應(yīng)該盡量按這種路徑和目錄結(jié)構(gòu)建立項(xiàng)目,否則可能需要更改文件中的路徑信息,這是很麻煩的事情。[!--empirenews.page--]
值得推薦的最快捷的方法就是復(fù)制一個(gè)例子的目錄,如果你的新項(xiàng)目名稱為NewProject,可以在C:SOFTWAREuCOS-II下新建一個(gè)目錄C:SOFTWAREuCOS-IINewProject,再將C:SOFTWAREuCOS-IIEX1_x86L中的兩個(gè)子目錄直接復(fù)制到新建的目錄下,最后只需更改內(nèi)部的文件的一些配置,在TEST.C中重新寫入新項(xiàng)目的代碼即可。
3.3第二步,更改INCLUDES.H文件,文件內(nèi)容為:
#include
#include
#include
#include
#include
#include
#include
#include"softwareucos-iiix86lbc45os_cpu.h"
#include"os_cfg.h"
#include"softwareucos-iisourceucos_ii.h"
#include"softwareblockspcbc45pc.h"
如果你的軟件包的安裝路徑和項(xiàng)目建立路徑是按推薦方式設(shè)定的,則不需要更改此文件,但你可以增加一些你想在項(xiàng)目中追加的頭文件,如一些驅(qū)動(dòng)程序或應(yīng)用模塊的頭文件,但一定要注意路徑是否正確。如果你為按標(biāo)準(zhǔn)路徑建立項(xiàng)目,必須逐行更改蘭顏色部分的代碼,使路徑正確。
3.4第三步,配置OS_CFG.H文件,因這與軟件包和開發(fā)工具的安裝無(wú)關(guān),只用于項(xiàng)目中操作系統(tǒng)的配置,具體的請(qǐng)根據(jù)你的項(xiàng)目來(lái)自主決定,相關(guān)的介紹很多,可以參考uC/OS-II的電子書。
3.5第四步,修改TEST.LNK配置,這里進(jìn)行開發(fā)工具鏈接時(shí)一些參數(shù)和鏈接模塊的設(shè)置,可以用編輯器打開:
/v/s/c/P-+
C:BC31LIBC0L.OBJ+
..OBJTEST.OBJ+
..OBJOS_CPU_A.OBJ+
..OBJOS_CPU_C.OBJ+
..OBJPC.OBJ+
..OBJuCOS_II.OBJ
..OBJTEST,..OBJTEST
C:BC31LIBEMU.LIB+
C:BC31LIBMATHL.LIB+
C:BC31LIBCL.LIB
3.5.1/v/s/c/P-是鏈接的參數(shù),建議不要更改;
3.5.2C:BC31LIBC0L.OBJ是TurboC的Large模式編譯庫(kù)模塊,如果開發(fā)工具路徑不是默認(rèn)設(shè)置,請(qǐng)改為實(shí)際的安裝路徑,例如將C:BC31改為E:BorlandC31
3.5.3..OBJTEST.OBJ是應(yīng)用程序的目標(biāo)文件,它是由TEST.C編譯后生成的,并保存在臨時(shí)生成的C:SOFTWAREuCOS-IIEX1_x86LBC45OBJ目錄中,這個(gè)目錄使用與保存編譯時(shí)產(chǎn)生的目標(biāo)文件的。
3.5.4..OBJOS_CPU_A.OBJ..OBJOS_CPU_C.OBJ..OBJPC.OBJ..OBJuCOS_II.OBJ同上,都是編譯時(shí)產(chǎn)生的目標(biāo)文件,并保存在OBJ目錄下,作為項(xiàng)目鏈接的組成模塊,如果在OBJ目錄中缺少上述文件,鏈接將不會(huì)成功。
3.5.5..OBJTEST,..OBJTEST是指定的項(xiàng)目產(chǎn)生的EXE文件和MAP文件的路徑和名稱,它們分別是TEST.EXE和TEST.MAP,并保存在OBJ目錄下。
3.5.6C:BC31LIBEMU.LIBC:BC31LIBMATHL.LIBC:BC31LIBCL.LIB是鏈接時(shí)需要的庫(kù)文件,必須令路徑符合BorlandC的安裝路徑,如果安裝在非推薦目錄,必須更改藍(lán)色的路徑部分。其中EMU為8087仿真庫(kù),MATHL為數(shù)學(xué)函數(shù)庫(kù),CL為TurboC在Large模式下的運(yùn)行庫(kù)。
3.6第五步,修改TEST.MAK文件,這是BorlandC的Make文件,關(guān)于Make文件的格式及編寫方法請(qǐng)參考相關(guān)書籍,這里僅介紹一些配置有關(guān)的內(nèi)容,打開文件可以看到:
#############################################################################
#TOOLS
#############################################################################
BORLAND=C:BC31
CC=$(BORLAND)BINBCC
ASM=$(BORLAND)BINTASM
LINK=$(BORLAND)BINTLINK
TOUCH=$(BORLAND)BINTOUCH
#############################################################################
#DIRECTORIES
#############################################################################
TARGET=..TEST
SOURCE=..SOURCE
WORK=..WORK
OBJ=..OBJ
LST=..LST
OS=SOFTWAREuCOS-IISOURCE
PC=SOFTWAREBLOCKSPCBC45
PORT=SOFTWAREuCOS-IIIx86LBC45
如果你得BorlandC沒(méi)有安裝在推薦安裝的目錄,需要更改BORLAND=C:BC31這一句,例如如果安裝在E:BorlandC31,則將BORLAND=C:BC31改為BORLAND=E:BorlandC31。
CC=$(BORLAND)BINBCC:這是編譯器的名稱及路徑,一般不更改
ASM=$(BORLAND)BINTASM:這是匯編器的名稱及路徑,一般不更改
LINK=$(BORLAND)BINTLINK:這是鏈接器的名稱及路徑,一般不更改
TARGET=..TEST:項(xiàng)目文件目錄,如果路徑不是按推薦方式,必需要更改路徑
SOURCE=..SOURCE:源文件目錄,如果路徑不是按推薦方式,必需要更改路徑
WORK=..WORK:項(xiàng)目工作目錄,MAKETEST.BAT自動(dòng)編譯時(shí)全部源文件都復(fù)制到這個(gè)目錄,這個(gè)設(shè)定必須必須和MAKETEST.BAT中設(shè)定相一致
OBJ=..OBJ:目標(biāo)代碼目錄,這個(gè)設(shè)定必須和MAKETEST.BAT中設(shè)定相一致
LST=..LST:列表文件目錄,這個(gè)設(shè)定必須和MAKETEST.BAT中設(shè)定相一致
OS=SOFTWAREuCOS-IISOURCE:操作系統(tǒng)源文件目錄,必須保證路徑的正確,如果你的開發(fā)包沒(méi)按推薦方式安裝,必須更改這個(gè)設(shè)定為實(shí)際安裝的目錄。
PC=SOFTWAREBLOCKSPCBC45:與PC有關(guān)的源文件目錄,必須保證路徑的正確,如果你的開發(fā)包沒(méi)按推薦方式安裝,必須更改這個(gè)設(shè)定為實(shí)際安裝的目錄。
PORT=SOFTWAREuCOS-IIIx86LBC45:與處理器有關(guān)源文件目錄,必須保證路徑的正確,如果你的開發(fā)包沒(méi)按推薦方式安裝,必須更改這個(gè)設(shè)定為實(shí)際安裝的目錄。開發(fā)包中還有一個(gè)浮點(diǎn)的處理器文件目錄Ix86L-FP。這2個(gè)目錄是跟移植密切相關(guān)的,相當(dāng)于BSP(板極開發(fā)包)。
3.7第六步,配置MAKETEST.BAT,打開可以看見(jiàn)
MD..WORK[!--empirenews.page--]
MD..OBJ
MD..LST
CD..WORK
COPY..TESTTEST.MAKTEST.MAK
C:BC31BINMAKE-fTEST.MAK
CD..TEST
首先是建立..WORK..OBJ..LST三個(gè)目錄,這個(gè)目錄的名稱和路徑必須同TEST.MAK一致,然后進(jìn)入..WORK目錄,并將..TEST目錄中的TEST.MAK復(fù)制到這里,最后執(zhí)行BorlandC的Make程序,自動(dòng)進(jìn)行編譯和鏈接,這里面還是要注意C:BC31的路徑問(wèn)題。
3.9第八步,進(jìn)行相關(guān)應(yīng)用程序的開發(fā)就可以了,具體的可以參見(jiàn)Test.c這個(gè)文件,如果你的項(xiàng)目包括多個(gè)源文件,最好是在Test.c中用#include語(yǔ)句把他們都包含進(jìn)來(lái),否則就要更改Make文件TEST.MAK和其他幾個(gè)設(shè)置文件,如果你確需如此,可以自己嘗試一下,這里不再列出。
3.10最后,運(yùn)行MAKETEST.BAT就可以在TEST目錄下生成TEST.EXE文件。
4其它
有幸還有許多網(wǎng)友都在PC下用BorlandC實(shí)現(xiàn)了激動(dòng)人心的調(diào)試開發(fā),網(wǎng)友Hcompute把它的心得寫了出來(lái),大家也可以參考一下這篇文章PC環(huán)境下用BC3.1編譯連接uC/OS-II源文件。
還有更多關(guān)于操作系統(tǒng)本身的應(yīng)用問(wèn)題,大家盡可以參考它的電子書中文版英文版
另外這篇文章寫作很匆忙,基本是一氣呵成的,難免存在很多錯(cuò)誤,其中的一些觀點(diǎn)由于本人水平有限,可能存在一些錯(cuò)誤,在此,我歡迎看到這篇文章并發(fā)現(xiàn)問(wèn)題或錯(cuò)誤的朋友及時(shí)指正,以免誤導(dǎo)別人,同時(shí)也歡迎讀罷有所感悟的朋友積極來(lái)信,提出你的觀點(diǎn)和看法,讓我們共同努力,找到uC/OS開發(fā)的最好途徑。