版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第一章認(rèn)識(shí)μC/OS-Ⅱ
1.1準(zhǔn)備工作1.2BC4.51和實(shí)例一1.3實(shí)例二1.4μC/OS-Ⅱ文件與函數(shù)1.5UP-Star硬件原理圖1.6本章小結(jié)所謂“工欲善其事,必先利其器”(《論語(yǔ)》)。在開始學(xué)習(xí)本書內(nèi)容之前,讀者需要花點(diǎn)時(shí)間做一些軟件和硬件方面的準(zhǔn)備工作。
首先,需要一臺(tái)配置較高的電腦。筆者使用的是一臺(tái)筆記本電腦,基本配置為:酷睿2雙核處理器T5450、2GB內(nèi)存、160GB硬盤、12.1英寸寬顯示屏和3個(gè)USB接口,操作系統(tǒng)為WindowsXPSP3。讀者也需要準(zhǔn)備類似的或更高的配置。1.1準(zhǔn)備工作其次,應(yīng)從網(wǎng)上下載軟件BC4.51(BorlandC++4.51)和TASM5.0(BorlandTurboAssembler5.0),其大小分別約為41MB和4.2MB。將這兩個(gè)軟件安裝在默認(rèn)工作目錄下,即分別安裝在C:\BC45和C:\TASM下,然后,將C:\TASM\BIN\
TASM.EXE文件拷貝到C:\BC45\BIN目錄下。
說(shuō)明:不是必須按默認(rèn)目錄安裝,但是目錄名應(yīng)該是不多于8個(gè)英文字母且首字符為字母的字符串,即按DOS命名規(guī)則命名的目錄名,不要使用漢字和過(guò)長(zhǎng)的目錄名。安裝完這兩個(gè)軟件后,將在Windows的“開始?|?所有程序”菜單中創(chuàng)建菜單啟動(dòng)組“BorlandC++4.5”和“BorlandTasm5.0”,單擊“開始?|?所有程序?|?BorlandC++4.5?|?BorlandC++”,即可運(yùn)行BorlandC++4.5。
再次,從Micrium網(wǎng)站下載μC/OS-Ⅱ,任何人注冊(cè)登錄后都可以下載。本書使用的版本為V2.86,如果Micrium網(wǎng)站更新μC/OS-Ⅱ?yàn)楦叩陌姹荆瑸榱藢W(xué)習(xí)本書的方便,請(qǐng)聯(lián)系作者或從相關(guān)網(wǎng)站下載V2.86版本,同時(shí)作者也會(huì)針對(duì)新的版本更新本書實(shí)例。如果Micrium網(wǎng)站上提供的是V2.86版本,其下載文件名為Micrium-uCOS-Ⅱ-V286.ZIP(注:由于軟件的緣故,本書中所有uCOS和ucos皆指μCOS)。V2.86版本自2007年9月12日定型后,兩年來(lái)仍沒有升級(jí),最近的報(bào)道顯示Micrium公司推出了μC/OS-Ⅲ,因此,V2.86可能是μC/OS-Ⅱ的最終版本。讀者可同時(shí)在Micrium網(wǎng)站下載一些移植程序和自己認(rèn)為有用的應(yīng)用文檔。還需到IARSystems網(wǎng)站下載IAREmbeddedWorkbenchforARM(簡(jiǎn)稱EWARM),最新版本為V5.40,其V5.30版本在網(wǎng)上十分盛行。本書使用V5.30版本,并且是上海愛亞軟件提供的正式版本,但是建議讀者使用EWARM的最新版本,實(shí)例完全兼容。
IARSystems是全球領(lǐng)先的嵌入式系統(tǒng)開發(fā)工具和服務(wù)供應(yīng)商,1983年成立于瑞典烏普薩拉市,2004年在上海成立辦事處,并且,IARSystems公司是Micrium公司產(chǎn)品的全球經(jīng)銷商,所以學(xué)習(xí)基于ARM的μC/OS-Ⅱ,EWARM是首選的軟件。要啟動(dòng)EWARM,只需點(diǎn)擊菜單項(xiàng)“開始?|?所有程序?|?IARSystems|IAREmbeddedWorkbenchforARM5.30|IAREmbeddedWorkbench”即可。最后,如果讀者使用不帶串口的筆記本電腦,還需要一條USB轉(zhuǎn)串口的接口線。除第一章實(shí)例一和實(shí)例二不需外接實(shí)驗(yàn)設(shè)備外,第二章至第七章的實(shí)例均需要借助UP-Star認(rèn)證考試實(shí)驗(yàn)板(嵌入式工程師認(rèn)證考試專用實(shí)驗(yàn)板),第八章的實(shí)例在博創(chuàng)UP-CUP2410實(shí)驗(yàn)箱(筆者上課時(shí)用的設(shè)備)上實(shí)現(xiàn),第九章的實(shí)例在天嵌TQ2440開發(fā)板(筆者做項(xiàng)目用的開發(fā)板)上實(shí)現(xiàn)。讀者要體驗(yàn)這些實(shí)例的運(yùn)行情況,需要具備這些實(shí)驗(yàn)板或者載有S3C2410或S3C2440芯片的同類實(shí)驗(yàn)板卡。在開發(fā)和調(diào)試實(shí)例時(shí),需要用到J-LINKforARM仿真器,如果讀者有一塊TQ2440開發(fā)板,由于TQ2440開發(fā)板上的JTAG接口是2.00mm間距10針,而J-LINK接口一般是2.54mm間距20針,因此需要做一個(gè)20針至10針JTAG轉(zhuǎn)接頭和10芯排線。如果讀者有一塊UP-Star實(shí)驗(yàn)板,由于UP-Star實(shí)驗(yàn)板上JTAG接口是2.54mm間距14針,故需要做一個(gè)20針至14針JTAG轉(zhuǎn)接頭和14芯排線。這兩個(gè)轉(zhuǎn)接頭的原理圖如圖1-1和圖1-2所示。而UP-CUP2410實(shí)驗(yàn)箱上集成了20針2.54mm間距JTAG接口,可以直接使用J-LINK仿真器。圖1-120針至10針轉(zhuǎn)接頭原理圖圖1-220針至14針轉(zhuǎn)接頭原理圖將筆記本電腦的一個(gè)USB口通過(guò)J-LINK(及其轉(zhuǎn)接頭)與UP-Star實(shí)驗(yàn)板(或UP-CUP2410實(shí)驗(yàn)箱、TQ2440開發(fā)板或其他ARM平臺(tái))上的JTAG接頭相連接,筆記本電腦的另一個(gè)USB口通過(guò)USB轉(zhuǎn)串口線與實(shí)驗(yàn)板上的串口0相連接,將實(shí)驗(yàn)板的電源線連接好,打開實(shí)驗(yàn)板電源開關(guān)和筆記本電腦,則實(shí)驗(yàn)環(huán)境與學(xué)習(xí)平臺(tái)就建立好了。
在閱讀本書時(shí),讀者可能同步閱讀μC/OS-Ⅱ源代碼或書中一些實(shí)例代碼,作者建議使用SourceInsight軟件閱讀,用過(guò)的讀者一定知道,只有這個(gè)軟件才能把閱讀代碼變成一種樂趣和享受。本節(jié)的實(shí)例一和第1.3節(jié)的實(shí)例二就是《嵌入式實(shí)時(shí)操作系統(tǒng)μC/OS-Ⅱ(第2版)》(北京航空航天大學(xué)出版社出版)一書中的實(shí)例一和實(shí)例二,這里用μC/OS-ⅡV2.86版本,而原書中使用V2.52版本。這兩個(gè)實(shí)例可用來(lái)加強(qiáng)讀者對(duì)μC/OS-Ⅱ的感性認(rèn)識(shí)。1.2BC4.51和實(shí)例一在D盤上新建目錄ZYUCOSII,本書的所有工程均位于這個(gè)目錄下;然后,在ZYUCOSII下新建子目錄EX1_1,用于存放第一章的第一個(gè)實(shí)例;在目錄EX1_1下新建5個(gè)子目錄,依次為config、user、object、ports和ucosii,依次存放配置文件、用戶編寫的程序文件、編譯后的目標(biāo)文件、移植文件和μC/OS-Ⅱ系統(tǒng)文件,如圖1-3所示。圖1-3實(shí)例一工作目錄把從網(wǎng)絡(luò)上下載的文件Micrium-uCOS-Ⅱ-V286.ZIP解壓后,將其中的目錄“Micrium-uCOS-Ⅱ-V286\Micrium\SOFTWARE\uCOS-Ⅱ\Source”下的14個(gè)文件拷貝到圖1-3中的ucosii目錄下,并將其中的文件os_cfg_r.h和os_dbg_r.c拷貝到圖1-3中的config目錄下,將其更名為os_cfg.h和os_dbg.c,即去掉文件名中的_r。從網(wǎng)上下載《嵌入式實(shí)時(shí)操作系統(tǒng)μC/OS-Ⅱ(第2版)》一書附帶光盤中的內(nèi)容,將光盤目錄“\SOFTWARE\
BLOCKS\PC\BC45\”下的兩個(gè)文件PC.C和PC.H拷貝到圖1-3中的user目錄下;將光盤目錄“\SOFTWARE\uCOS-Ⅱ\
EX1_x86L\BC45\SOURCE\”下的INCLUDES.H和TEST.C文件拷貝到圖1-3中的user目錄下,并將TEST.C更名為EX1_1.C;將光盤目錄“\SOFTWARE\uCOS-Ⅱ\Ix86L\BC45”下的3個(gè)文件OS_CPU.H、OS_CPU_A.ASM和OS_CPU_C.C拷貝到圖1-3中的ports目錄下。在圖1-3中的config目錄下新建空的文本文件APP_CFG.H。該文件一般用于定義任務(wù)優(yōu)先級(jí)和堆棧大小。
至此,圖1-3中各子目錄下的文件如表1-1所示。表1-1目錄EX1_1下子目錄中的文件去掉表1-1中所有文件的“只讀”屬性。
點(diǎn)擊菜單“開始?|?所有程序?|?BorlandC++4.5?|?BorlandC++”啟動(dòng)BorlandC++,彈出如圖1-4所示的窗口。圖1-4BorlandC++4.5工作主窗口在圖1-4中點(diǎn)擊菜單“Project?|?Newproject…”,彈出如圖1-5所示的窗口。圖1-5新工程命名窗口如圖1-5所示進(jìn)行設(shè)置,其中,“ProjectPathandName:”和“TargetName:”兩項(xiàng)可通過(guò)圖中的“Browse…”按鈕進(jìn)行設(shè)置。然后,點(diǎn)擊圖中的“OK”按鈕,保存設(shè)置并關(guān)閉“NewTarget”對(duì)話框,得到如圖1-6所示的窗口。圖1-6新建工程ex1_1在圖1-6中刪除文件節(jié)點(diǎn)“ex1_1.cpp”,添加文件節(jié)點(diǎn)“user\pc.c”、“user\ex1_1.c”、“ucosii\ucos_ii.c”、“ports\os_cpu_a.asm”、“ports\os_cpu_c.c”和“config\os_dbg.c”,如圖1-7所示。注意,需要右鍵點(diǎn)擊圖1-6中的“ex1_1[.exe]”,在其右鍵彈出菜單中選擇“Addnode”向其添加文件節(jié)點(diǎn)。圖1-7工程ex1_1在圖1-7中,點(diǎn)擊菜單“Options?|?Project…”,彈出如圖
1-8所示的對(duì)話框。圖1-8工程選項(xiàng)對(duì)話框設(shè)置在圖1-8中的“Include:”一欄中輸入“c:\bc45\include;
d:\zyucosii\ex1_1\config;d:\zyucosii\ex1_1\ports;d:\zyucosii
\ex1_1\ucosii;d:\zyucosii\ex1_1\user”,指定工程ex1_1的頭文件(或稱包括文件)所在的目錄;在“Source:”一欄中輸入“d:\zyucosii\ex1_1\config;d:\zyucosii\ex1_1\ports;d:\zyucosii\ex1_1\ucosii;d:\zyucosii\ex1_1\user”,指定工程ex1_1的源文件所在的目錄;在“Intermediate:”和“Final:”欄中均輸入“d:\zyucosii\
ex1_1\object”,表示編譯產(chǎn)生的中間文件和目標(biāo)文件存放在目錄“d:\zyucosii\ex1_1\object”中。在圖1-8中點(diǎn)擊“OK”按鈕保存設(shè)置,并關(guān)閉對(duì)話框。在圖1-7中點(diǎn)擊菜單“File?|?Open…”打開文件“d:\zyucosii\ex1_1\user\includes.h”,將其第21、23和24行中的包括文件路徑去掉后存盤,改為如圖1-9所示。
在圖1-7中雙擊文件節(jié)點(diǎn)“user\pc[.c]”彈出文件pc.c的內(nèi)容,將該文件中的TRUE改為OS_TRUE,F(xiàn)ALSE改為OS_FALSE,其中,TRUE位于第233、269和420行,F(xiàn)ALSE位于第262和423行。
同樣,修改文件ex1_1.c中第101行的TRUE為OS_TRUE。在μC/OS-ⅡV2.86中真為OS_TRUE,假為OS_FALSE。圖1-9修改includes.h文件在文件OS_CPU.H的末尾添加如下函數(shù)聲明:
voidOSCtxSw(void);
voidOSTickISR(void);
voidOSStartHighRdy(void);
voidOSIntCtxSw(void);
添加完后保存文件,如圖1-10所示。圖1-10修改OS_CPU.H文件打開文件“D:\ZYUCOSII\EX1_1\CONFIG\OS_CFG.H”,將第34行的OS_DEBUG_EN設(shè)為0,將第51行的OS_TICKS_PER_SEC設(shè)為200,將第136行的OS_TMR_EN設(shè)為0。
打開文件“D:\ZYUCOSII\EX1_1\UCOSII\OS_CORE.C”,在第1827行下添加以下語(yǔ)句:
if(OSCPUUsage>100)
OSCPUUsage=0;
添加后保存文件,如圖1-11所示。圖1-11修改os_core.c文件至此,在圖1-11存盤后,點(diǎn)擊菜單“Project?|?Buildall”,可以成功編譯鏈接并生成可執(zhí)行文件ex1_1.exe,位于目錄“D:\ZYUCOSII\EX1_1\object”下,如圖1-12所示。圖1-12目錄D:\ZYUCOSII\EX1_1\object盡管編譯時(shí)有36個(gè)警告,但是點(diǎn)擊圖1-12中的ex1_1.exe文件,程序執(zhí)行正常,如圖1-13所示。圖1-13右下角顯示當(dāng)前μC/OS-Ⅱ版本號(hào)為V2.86。按“Esc”鍵退出圖1-13所示窗口。圖1-13ex1_1.exe運(yùn)行結(jié)果對(duì)于那些連警告都不放過(guò)的“完美主義者”來(lái)說(shuō),要消去編譯時(shí)的36個(gè)警告,還要做以下工作:
(1)將文件“d:\zyucosii\ex1_1\user\ex1_1.c”的第80行注釋掉,即
//chars[100];
或者,不將第80行注釋掉,而在第82行添加語(yǔ)句:“(void)s;”。
(2)將文件“d:\zyucosii\ex1_1\user\pc.c”第202行中的INT8U*s改為INT8S*s,修改后的第202行為
voidPC_DispStr(INT8Ux,INT8Uy,INT8S*s,INT8Ucolor)
(3)將相應(yīng)的文件“d:\zyucosii\ex1_1\user\pc.h”的第67行改為
voidPC_DispStr(INT8Ux,INT8Uy,INT8S*s,INT8Ucolor);
(4)將文件“d:\zyucosii\ex1_1\ucosii\os_core.c”的第1868和1871行改為
ptcb->OSTCBStkBase=ptcb->OSTCBStkBottom+(INT16U)ptcb->OSTCBStkSize;
ptcb->OSTCBStkBase=ptcb->OSTCBStkBottom-(INT16U)ptcb->OSTCBStkSize;
(5)將文件“d:\zyucosii\ex1_1\ports\os_cpu.h”的第42行改為
typedefunsignedlongOS_STK;
將堆棧寬度設(shè)置為32位,該步可以不修改。
(6)在圖1-11中,點(diǎn)擊菜單“Options?|?Project…”,在彈出的“ProjectOptions”對(duì)話框中選擇“Compiler?|?Precompiledheaders?|?Usebutdonotgenerate”,如圖1-14所示,點(diǎn)擊圖中的“OK”按鈕保存設(shè)置。
至此,再次點(diǎn)擊BorlandC++工作窗口菜單“Project?|?Buildall”,則沒有警告了。筆者建議讀者,盡可能地不去修改“d:\zyucosii\ex1_1\ucosii”目錄下的μC/OS-Ⅱ系統(tǒng)文件。圖1-14工程選項(xiàng)預(yù)編譯設(shè)置在目錄“D:\ZYUCOSII\”下新建子目錄“EX1_2”,在目錄“D:\ZYUCOSII\EX1_2\”下新建子目錄“object”;將目錄“D:\ZYUCOSII\EX1_1\”下的子目錄“config”、“ports”、“ucosii”、“user”拷貝到目錄“D:\ZYUCOSII\EX1_2\”下,如圖1-15所示。1.3實(shí)例二圖1-15目錄D:\ZYUCOSII\EX1_2然后,刪除圖1-15中user目錄下的ex1_1.c文件,將《嵌入式實(shí)時(shí)操作系統(tǒng)μC/OS-Ⅱ(第2版)》一書附帶光盤中的文件目錄“\SOFTWARE\uCOS-Ⅱ\EX2_x86L\BC45\SOURCE\”下的TEST.C拷貝到user目錄下,并更改文件名為ex1_2.c。
啟動(dòng)BorlandC++,點(diǎn)擊菜單“Project?|?NewProject”,設(shè)置如圖1-16所示。圖1-16新建工程ex1_2向?qū)г趫D1-16中點(diǎn)擊“OK”按鈕,向工程ex1_2中添加目錄“D:\ZYUCOSII\EX1_2\”下的文件,如圖1-17所示。
在圖1-17中,點(diǎn)擊菜單“Options?|?Project…”,彈出如圖1-18所示的菜單。圖1-17工程ex1_2圖1-18工程選項(xiàng)設(shè)置在圖1-18中,“Include:”欄中輸入“c:\bc45\include;
d:\zyucosii\ex1_2\config;d:\zyucosii\ex1_2\ports;
d:\zyucosii\ex1_2\ucosii;d:\zyucosii\ex1_2\user”;“Source:”欄中輸入“d:\zyucosii\ex1_2\cofig;d:\zyucosii\ex1_2\ports;
d:\zyucosii\ex1_2\ucosii;d:\zyucosii\ex1_2\user”。在圖1-18中,選擇“Compiler?|?Precompiledheaders?|?Usebutdonotgenerate”,如圖1-19所示,點(diǎn)擊“OK”按鈕保存設(shè)置,并返回到圖1-17所示主窗口。圖1-19工程預(yù)編譯選項(xiàng)設(shè)置此時(shí),可點(diǎn)擊菜單“Options?|?Save…”保存工程環(huán)境設(shè)置。
至此,點(diǎn)擊菜單“Project?|?Buildall”可編譯鏈接生成可執(zhí)行文件ex1_2.exe(沒有編譯警告),位于目錄“D:\ZYUCOSII\EX1_2
\object”下,雙擊ex1_2.exe可得執(zhí)行結(jié)果,如圖1-20所示。圖1-20ex1_2.exe執(zhí)行結(jié)果第1.2節(jié)的實(shí)例一和本節(jié)的實(shí)例二,重點(diǎn)在于通過(guò)實(shí)例給讀者一個(gè)μC/OS-Ⅱ的初步認(rèn)識(shí)。本書均不對(duì)其程序代碼做詳細(xì)解釋,感興趣的讀者可參考《嵌入式實(shí)時(shí)操作系統(tǒng)μC/OS-Ⅱ(第2版)》第一章“初識(shí)μC/OS-Ⅱ”,或?qū)W習(xí)完本書后面的章節(jié)后,再回來(lái)深入研究這些代碼。將第1.1節(jié)從Micrium網(wǎng)站下載的壓縮文件Micrium-μCOS-Ⅱ-V286.ZIP解壓后,得到目錄Micrium-μCOS-Ⅱ-V286\Micrium\SOFTWARE\uCOS-Ⅱ\,其下有兩個(gè)子目錄,分別為Doc和Source。1.4μC/OS-Ⅱ文件與函數(shù)其中,Source目錄下為μC/OS-Ⅱ的源代碼文件,共14個(gè),即os_cfg_r.h、os_core.c、os_dbg_r.c、os_flag.c、os_mbox.c、os_mem.c、os_mutex.c、os_q.c、os_sem.c、os_task.c、os_time.c、os_tmr.c、ucos_ii.c和ucos_ii.h;Doc目錄下為μC/OS-Ⅱ的參考資料,其中的README.TXT文本文件是所有參考資料的概要說(shuō)明,這些資料值得仔細(xì)閱讀。在第1.2和1.3節(jié)的兩個(gè)實(shí)例中,子目錄ucosii下的文件為μC/OS-Ⅱ系統(tǒng)文件,子目錄config下的文件為配置文件。
形如實(shí)例一和實(shí)例二,基于μC/OS-Ⅱ的嵌入式系統(tǒng)應(yīng)用程序工程結(jié)構(gòu)如圖1-21所示。圖1-21基于μC/OS-Ⅱ的嵌入式系統(tǒng)應(yīng)用程序工程結(jié)構(gòu)如圖1-21所示,在一個(gè)基于μC/OS-Ⅱ的應(yīng)用程序工程文件中需要有四類文件,即用戶編寫的應(yīng)用程序文件、配置文件、μC/OS-Ⅱ系統(tǒng)文件和移植文件?!坝脩艟帉懙膽?yīng)用程序文件”通過(guò)“配置文件”才能調(diào)用“μC/OS-Ⅱ系統(tǒng)文件”中的函數(shù),而“μC/OS-Ⅱ系統(tǒng)文件”通過(guò)“移植文件”才能運(yùn)行在“硬件”上。對(duì)于一個(gè)給定的硬件平臺(tái),一般地,μC/OS-Ⅱ系統(tǒng)文件和移植文件都可以從專業(yè)軟件供應(yīng)商或硬件供應(yīng)商那里得到,配置文件往往有可供參考的模板,所以,“用戶”需要做的只是編寫面向應(yīng)用層的程序代碼,即所謂的任務(wù),這里的“用戶”是指使用μC/OS-Ⅱ的程序開發(fā)者。正是基于這個(gè)原因,當(dāng)嵌入式應(yīng)用中使用了μC/OS-Ⅱ操作系統(tǒng)后,應(yīng)用程序設(shè)計(jì)將更加方便容易。與實(shí)例一和實(shí)例二相似,在本書的大部分實(shí)例中,用戶編寫的應(yīng)用程序文件存放在工程文件夾下的“user”子目錄下;配置文件存放在“config”或“ports”子目錄下;μC/OS-Ⅱ系統(tǒng)文件存放在“ucosii”子目錄下;移植文件存放在“ports”子目錄下;編譯的目標(biāo)文件和可執(zhí)行文件存放在“object”或“debug”子目錄下。前面提到過(guò)Source目錄下有14個(gè)文件,其中12個(gè)文件位于圖1-21中的“μC/OS-Ⅱ系統(tǒng)文件”框中,當(dāng)中的ucos_ii.c(已加黑文件名)通過(guò)#include方式將其余的11個(gè)文件聯(lián)成一個(gè)整體;另外兩個(gè)文件os_cfg_r.h和os_dbg_r.c是位于圖1-21的“配置文件”框中的文件os_cfg.h和os_dbg.c的參考模板文件,而app_cfg.h文件是用戶定義任務(wù)堆棧和優(yōu)先級(jí)等常量的用戶系統(tǒng)配置文件,當(dāng)然,也可以在其中定義一些自定義常量和函數(shù)聲明等。1.4.1μC/OS-Ⅱ文件關(guān)聯(lián)
由于μC/OS-Ⅱ是以源程序代碼的形式提供給用戶使用的,因此,用戶工程文件中將包含全部的μC/OS-Ⅱ源程序文件,如第1.2、1.3節(jié)的兩個(gè)實(shí)例所示(表面上看工程中只鏈接了ucos_ii.c)。盡管一些專家聲稱基于μC/OS-Ⅱ進(jìn)行嵌入式系統(tǒng)開發(fā),可以不去了解μC/OS-Ⅱ內(nèi)核文件的結(jié)構(gòu)和原理,只需要掌握任務(wù)的使用方法即可,但是,筆者建議至少需要了解μC/OS-Ⅱ內(nèi)核文件的關(guān)聯(lián)方式和內(nèi)部函數(shù)調(diào)用形式(見第1.4.2節(jié)),這樣有助于程序設(shè)計(jì)人員總體上把握μC/OS-Ⅱ內(nèi)核文件的組織方式。在實(shí)例一和實(shí)例二的工程中只包含了文件ucos_ii.c,事實(shí)上,圖1-21中μC/OS-Ⅱ的其余11個(gè)系統(tǒng)文件均已包含在ucos_ii.c中。ucos_ii.c文件的內(nèi)容如下(添加了行號(hào)):1#defineOS_GLOBALS
2#include<ucos_ii.h>
3
4
5#defineOS_MASTER_FILE
6#include<os_core.c>
7#include<os_flag.c>
8#include<os_mbox.c>
9#include<os_mem.c>
10#include<os_mutex.c>
11#include<os_q.c>
12#include<os_sem.c>
13#include<os_task.c>
14#include<os_time.c>
15#include<os_tmr.c>上述為ucos_ii.c全部的有效代碼(除去了注釋),15行代碼中去掉第1行和第5行(預(yù)編譯用的宏定義)和第3、4行(空行)后,剩下的11行代碼用#include包括了μC/OS-Ⅱ的11個(gè)文件。因此,ucos_ii.c文件只是一個(gè)文件組合的容器,工程文件中只需要包含ucos_ii.c就可以了。在上述代碼中,第2行的ucos_ii.h除了定義數(shù)據(jù)結(jié)構(gòu)和常量外,幾乎聲明了所有用戶能使用的μC/OS-Ⅱ函數(shù)原型,可以稱為應(yīng)用程序接口(API)函數(shù)原型;第6~15行的.c文件內(nèi)容為這些API函數(shù)的函數(shù)體,而這10個(gè).c文件的文件名把這些API函數(shù)分為10類,便于管理和升級(jí)。實(shí)際上,ucos_ii.h文件中也包含了一些用于移植的API函數(shù),這些函數(shù)的實(shí)現(xiàn)代碼(即函數(shù)體)位于移植文件中。
這樣,如果用戶僅想查看函數(shù)原型,則只需要閱讀ucos_ii.h文件即可,這個(gè)文件有詳細(xì)的注釋。如果用戶還想進(jìn)一步查看函數(shù)體,且使用SourceInsight軟件,可通過(guò)在ucos_ii.h文件中雙擊函數(shù)名,定位到其函數(shù)體及其所在文件。10個(gè).c文件實(shí)現(xiàn)的功能如表1-2所示。表1-2.c文件實(shí)現(xiàn)的功能掌握表1-2中的文件及移植μC/OS-Ⅱ所需要的文件,即掌握了整個(gè)μC/OS-Ⅱ系統(tǒng)。在閱讀這些文件時(shí),有大量的預(yù)編譯語(yǔ)句,這些語(yǔ)句用于μC/OS-Ⅱ系統(tǒng)的裁剪。1.4.2μC/OS-Ⅱ函數(shù)
本節(jié)內(nèi)容主要參考自“Micrium-μCOS-Ⅱ-V286\Micrium\
SOFTWARE\μCOS-Ⅱ\Doc”目錄下的“QuickRefChart-Color.pdf”和“μCOS-Ⅱ-RefMan.pdf”文件。結(jié)合表1-2,把μC/OS-Ⅱ的API函數(shù)原型和功能列于表1-3至表1-12中;移植相關(guān)的函數(shù)原型列于表1-13中。表1-3內(nèi)核管理函數(shù)(OS_CORE.C中)表1-4任務(wù)管理函數(shù)(OS_TASK.C中)表1-5延時(shí)管理函數(shù)(OS_TIME.C中)表1-6定時(shí)器管理函數(shù)(OS_TMR.C中)表1-7信號(hào)量管理函數(shù)(OS_SEM.C中)表1-8互斥信號(hào)量管理函數(shù)(OS_MUTEX.C中)表1-9消息郵箱管理函數(shù)(OS_MBOX.C中)表1-10消息隊(duì)列管理函數(shù)(OS_Q.C中)表1-11事件標(biāo)志管理函數(shù)(OS_FLAG?.C中)表1-12內(nèi)存管理函數(shù)(OS_MEM.C中)表1-13移植管理函數(shù)(前三個(gè)位于OS_CPU_A.ASM中,其余在OS_CPU_C.C中)由表1-3至表1-13可知,用戶可以調(diào)用的函數(shù)約有96個(gè),其中,常用的約38個(gè)(包括OS_CPU.H中定義的中斷管理宏函數(shù)OS_ENTER_CRITICAL和OS_EXIT_CRITICAL)。所有這些函數(shù)的詳細(xì)用法,請(qǐng)參考Micrium-uCOS-Ⅱ-V286\Micrium
\SOFTWARE\uCOS-Ⅱ\Doc下的uCOS-Ⅱ-RefMan.pdf文件(共計(jì)157頁(yè),文檔中有些小筆誤,例如第38頁(yè)第2行等)。本書將在后續(xù)章節(jié)中通過(guò)實(shí)例的形式深入講解這些函數(shù)的用法。此外,μC/OS-Ⅱ的全部代碼(包括注釋)共約11300行左右,是學(xué)習(xí)嵌入式操作系統(tǒng)內(nèi)核的優(yōu)秀模板。為了后續(xù)學(xué)習(xí)的方便,得到博創(chuàng)科技的授權(quán)允許,本節(jié)給出UP-Star實(shí)驗(yàn)板比較完整的原理圖。需說(shuō)明的是,原理圖經(jīng)筆者修訂,讀者請(qǐng)勿依據(jù)本節(jié)給出的原理圖制作電路板。
博創(chuàng)給出的UP-Star原理圖包括S3C2410A核心模塊、存儲(chǔ)器模塊、LCD模塊、網(wǎng)絡(luò)接口模塊和串口及外圍接口模塊等五部分。1.5UP-Star硬件原理圖在此給出了與本書程序設(shè)計(jì)密切相關(guān)的核心處理器模塊、存儲(chǔ)器模塊、串口通信模塊和LCD顯示接口等,略去了網(wǎng)絡(luò)接口模塊和USB接口模塊,LCD模塊僅給出了44腳接口(博創(chuàng)自己研發(fā)了LCD模塊,同時(shí)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年四川貨運(yùn)從業(yè)資格考試模擬考試題目答案
- 2025加工承攬合同書
- 洛陽(yáng)文化旅游職業(yè)學(xué)院《電氣系統(tǒng)仿真》2023-2024學(xué)年第一學(xué)期期末試卷
- 2025汽車及運(yùn)輸合同書
- 建筑加固灰工施工合同
- 2024年書畫藝術(shù)品交易合同3篇
- 環(huán)保公司水電節(jié)能措施
- 2024事業(yè)單位臨時(shí)工聘任合同模板:后勤保障服務(wù)2篇
- 知識(shí)產(chǎn)權(quán)投資與融資
- 2025捐贈(zèng)合同 標(biāo)準(zhǔn)版模板全
- 海警法智慧樹知到答案章節(jié)測(cè)試2023年大連海洋大學(xué)
- 手機(jī)號(hào)碼段歸屬地?cái)?shù)據(jù)庫(kù)(2016年3月)
- 《借貸記賬法》教學(xué)設(shè)計(jì)
- 【試題】人教版二年級(jí)下數(shù)學(xué)暑假每日一練
- 衛(wèi)生院關(guān)于開展?jié)M意度調(diào)查工作的實(shí)施方案
- 紡織材料學(xué)選擇題
- YY/T 0916.1-2021醫(yī)用液體和氣體用小孔徑連接件第1部分:通用要求
- 醫(yī)務(wù)科工作思路(計(jì)劃)6篇
- GB/T 13912-2020金屬覆蓋層鋼鐵制件熱浸鍍鋅層技術(shù)要求及試驗(yàn)方法
- GA 614-2006警用防割手套
- 智慧購(gòu)物中心整體解決方案
評(píng)論
0/150
提交評(píng)論