當(dāng)前位置:首頁 > 嵌入式 > 嵌入式軟件
[導(dǎo)讀]uC/OS開發(fā)方法

uC/OS是一種體積小巧而實(shí)用的實(shí)時(shí)操作系統(tǒng),由于其代碼的開放性,近年來普遍受到人們的關(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)試問題,希望對(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)過本人剪裁過的,只適用于此項(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)的文件(請看附錄D,HPLISTC和TO)。HPLIST.C存放在C:SOFTWAREHPLISTCSOURCE目錄下。DOS下的可執(zhí)行文件(HPLIST.EXE)存放在C:SOFTWARETOEXE中。

C:SOFTWARETO

這個(gè)目錄中存放的是和范例TO相關(guān)的文件(請看附錄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的源代碼(參見1.07,例1),可以在DOS(或Windows95下的DOS窗口)下運(yùn)行。

C:SOFTWAREuCOS-IIEX2_x86L

這個(gè)目錄里包括例2的源代碼(參見1.08,例2),可以在DOS(或Windows95下的DOS窗口)下運(yùn)行。

C:SOFTWAREuCOS-IIEX3_x86L

這個(gè)目錄里包括例3的源代碼(參見1.09,例3),可以在DOS(或Windows95下的DOS窗口)下運(yùn)行。

C:SOFTWAREuCOS-IIIx86L

這個(gè)目錄下包括依賴于處理器類型的代碼。此時(shí)是為在80x86處理器上運(yùn)行uC/OS-II而必須的一些代碼,實(shí)模式,在大模式下編譯。

C:SOFTWAREuCOS-IISOURCE

這個(gè)目錄里包括與處理器類型無關(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如果您一定要將它安裝到其他目錄,請修改相應(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

全部鏈接庫文件存放在這個(gè)目錄下

C:BC31INCLUDE

全部頭文件都存放在這個(gè)目錄

還有需要說明的是這個(gè)BorlandC是經(jīng)過本人裁減的,目的是減少需要的空間(原版需要19.6MB),如果您使用的是原版的軟件,可以進(jìn)行安裝,則不需要進(jìn)行2.3這一步驟的配置工作,如果您卻是需要這個(gè)原版的軟件,請與我聯(lián)系留言寫信

3項(xiàng)目開發(fā)

隨開發(fā)包附帶了4個(gè)例子,都具有一定的代表性,下面我們結(jié)合例1介紹項(xiàng)目開發(fā)的全過程,需要說明的是:安裝路徑均為默認(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

鏈接文件,包含了鏈接的庫和鏈接參數(shù)

C:SOFTWAREuCOS-IIEX1_x86LBC45TEST

項(xiàng)目文件目錄

C:SOFTWAREuCOS-IIEX1_x86LBC45TESTTEST.MAK

項(xiàng)目的MAKE文件,熟悉C編譯器的人一定知道,通過Make文件可以智能的對(duì)整個(gè)項(xiàng)目進(jìn)行自動(dòng)的編譯鏈接,非常方便,我們在后面會(huì)詳細(xì)介紹這個(gè)文件。

C:SOFTWAREuCOS-IIEX1_x86LBC45TESTTEST.MAP

項(xiàng)目映像文件主要完成庫文件地址的映射,是項(xiàng)目的產(chǎn)物

C:SOFTWAREuCOS-IIEX1_x86LBC45TESTMAKETEST.BAT

項(xiàng)目Make操作的批處理文件,它將自動(dòng)完成整個(gè)編譯鏈接的全過程

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ā)工具的安裝無關(guān),只用于項(xiàng)目中操作系統(tǒng)的配置,具體的請根據(jù)你的項(xiàng)目來自主決定,相關(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模式編譯庫模塊,如果開發(fā)工具路徑不是默認(rèn)設(shè)置,請改為實(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í)需要的庫文件,必須令路徑符合BorlandC的安裝路徑,如果安裝在非推薦目錄,必須更改藍(lán)色的路徑部分。其中EMU為8087仿真庫,MATHL為數(shù)學(xué)函數(shù)庫,CL為TurboC在Large模式下的運(yùn)行庫。

3.6第五步,修改TEST.MAK文件,這是BorlandC的Make文件,關(guān)于Make文件的格式及編寫方法請參考相關(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沒有安裝在推薦安裝的目錄,需要更改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ā)包沒按推薦方式安裝,必須更改這個(gè)設(shè)定為實(shí)際安裝的目錄。

PC=SOFTWAREBLOCKSPCBC45:與PC有關(guān)的源文件目錄,必須保證路徑的正確,如果你的開發(fā)包沒按推薦方式安裝,必須更改這個(gè)設(shè)定為實(shí)際安裝的目錄。

PORT=SOFTWAREuCOS-IIIx86LBC45:與處理器有關(guān)源文件目錄,必須保證路徑的正確,如果你的開發(fā)包沒按推薦方式安裝,必須更改這個(gè)設(shè)定為實(shí)際安裝的目錄。開發(fā)包中還有一個(gè)浮點(diǎn)的處理器文件目錄Ix86L-FP。這2個(gè)目錄是跟移植密切相關(guān)的,相當(dāng)于BSP(板極開發(fā)包)。

3.7第六步,配置MAKETEST.BAT,打開可以看見

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的路徑問題。

3.9第八步,進(jìn)行相關(guān)應(yīng)用程序的開發(fā)就可以了,具體的可以參見Test.c這個(gè)文件,如果你的項(xiàng)目包括多個(gè)源文件,最好是在Test.c中用#include語句把他們都包含進(jìn)來,否則就要更改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把它的心得寫了出來,大家也可以參考一下這篇文章PC環(huán)境下用BC3.1編譯連接uC/OS-II源文件。

還有更多關(guān)于操作系統(tǒng)本身的應(yīng)用問題,大家盡可以參考它的電子書中文版英文版

另外這篇文章寫作很匆忙,基本是一氣呵成的,難免存在很多錯(cuò)誤,其中的一些觀點(diǎn)由于本人水平有限,可能存在一些錯(cuò)誤,在此,我歡迎看到這篇文章并發(fā)現(xiàn)問題或錯(cuò)誤的朋友及時(shí)指正,以免誤導(dǎo)別人,同時(shí)也歡迎讀罷有所感悟的朋友積極來信,提出你的觀點(diǎn)和看法,讓我們共同努力,找到uC/OS開發(fā)的最好途徑。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運(yùn)營商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡稱"軟通動(dòng)力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉