當(dāng)前位置首頁 > 計算機(jī) > 嵌入式開發(fā)
搜柄,搜必應(yīng)! 快速導(dǎo)航 | 使用教程

基于uCOS-II的嵌入式應(yīng)用程序開發(fā)

文檔格式:PPT| 44 頁|大小 762.50KB|積分 9.9|2024-12-09 發(fā)布|文檔ID:253239378
第1頁
第2頁
第3頁
下載文檔到電腦,查找使用更方便 還剩頁未讀,繼續(xù)閱讀>>
1 / 44
此文檔下載收益歸作者所有 下載文檔
  • 版權(quán)提示
  • 文本預(yù)覽
  • 常見問題
  • Click to edit Master text styles,Second level,Third level,Fourth level,Fifth level,*,Click to edit Master title style,XUPT,嵌入式系統(tǒng),原理與應(yīng)用,Click to edit Master text styles,Second level,Third level,Fourth level,Fifth level,Click to edit Master title style,Click to edit Master text styles,Second level,Third level,Fourth level,Fifth level,Click to edit Master title style,*,第八章,基于,C/OS-II,的嵌入式應(yīng)用程序開發(fā),目 錄,8.1,嵌入式應(yīng)用程序開發(fā)的特點,8.2 C/OS-II,應(yīng)用程序結(jié)構(gòu)分析,8.3 C/OS-II,程序設(shè)計技術(shù),8.4 C/OS-II,在,ARM,微處理器上的移植,8.5,應(yīng)用程序設(shè)計及實例,2,8.1,嵌入式應(yīng)用程序開發(fā)的特點,8.1.1,開發(fā)調(diào)試環(huán)境的建立,在嵌入式系統(tǒng)開發(fā)中,典型的調(diào)試環(huán)境一般通常由三部分構(gòu)成:一是通用計算機(jī)(用來運(yùn)行調(diào)試軟件,稱為調(diào)試主機(jī));二是協(xié)議轉(zhuǎn)換器(連接調(diào)試主機(jī)發(fā)出的高級命令與微處理器,JTAG,接口的低級命令之間的接口);三是調(diào)試目標(biāo)。

    硬件調(diào)試環(huán)境如下圖:,3,8.1,嵌入式應(yīng)用程序開發(fā)的特點,8.1.2,基于嵌入式處理器的直接編程技術(shù),如果針對硬件電路直接設(shè)計應(yīng)用程序,那么應(yīng)用程序的代碼必須包括以下幾個部分:,啟動部分:硬件加電后首先運(yùn)行(硬件檢測和資源分配),處理器管理部分:實現(xiàn)處理器狀態(tài)轉(zhuǎn)換和寄存器使用等,外圍設(shè)備訪問部分:外圍設(shè)備(如串口)的初始化等,程序功能部分:實現(xiàn)程序所要完成的具體功能,這樣設(shè)計程序?qū)υO(shè)計人員的能力要求是很高的4,8.1,嵌入式應(yīng)用程序開發(fā)的特點,8.1.3,基于嵌入式操作系統(tǒng)的編程技術(shù),隨著嵌入式微處理器和程序設(shè)計技術(shù)的發(fā)展,人們把一個大的程序從功能上可劃分為三個部分:,板級支持包(,BSP,):其目的是屏蔽下層硬件,主要由,Boot Loader,和,Drivers,兩部分構(gòu)成嵌入式實時操作系統(tǒng)(,RTOS,)應(yīng)用程序:基于相應(yīng)操作系統(tǒng)、在相應(yīng)開發(fā)環(huán)境下設(shè)計的并最終運(yùn)行在相應(yīng)目標(biāo)機(jī)上的程序這里,可由掌握不同技術(shù)的人去設(shè)計不同的部分,并在三部分之間設(shè)計相應(yīng)的接口以供三部分之間相互調(diào)用5,8.2 C/OS-II,應(yīng)用程序結(jié)構(gòu)分析,下面以一個簡單實例來說明基于,C/OS-II,操作系統(tǒng)設(shè)計的嵌入式應(yīng)用程序的結(jié)構(gòu)。

    程序清單,8.1,兩個,LED,交替閃爍,#include“config.h”(1),#define LED1 (118)/,定義,LED1,,,P1.18,控制,LED1(2),#define LED2 (119)/,定義,LED2,,,P1.19,控制,LED2(3),#define TASK_STACK_SIZE 128 /,定義用戶任務(wù)的堆棧長度,(4),OS_STK task1StkTASK_STACK_SIZE;/,定義任務(wù),LED1,的堆棧,(5),OS_STK task2StkTASK_STACK_SIZE;/,定義任務(wù),LED2,的堆棧,(6),void task1(void*pdata);/LED1,任務(wù)函數(shù)聲明,(7),void task2(void*pdata);/LED2,任務(wù)函數(shù)聲明,(8),6,8.2 C/OS-II,應(yīng)用程序結(jié)構(gòu)分析,7,int main(void)/,主函數(shù),(9),OSInit();/,初始化,C/OS-II(10),OSTaskCreate(task1,(void*)0,/,創(chuàng)建,LED1,任務(wù),/,優(yōu)先級為,4 (11),OSTaskCreate(task2,(void*)0,/,創(chuàng)建,LED2,任務(wù),/,優(yōu)先級為,5 (12),OSStart();/,啟動,C/OS-II,任務(wù)開始執(zhí)行,(13),return(0);(14),/main,函數(shù)中所調(diào)用的,OSInit,、,OSTaskCreate,和,OSStart,,,是,/C/OS-II,操作系統(tǒng)提供的,API,函數(shù)。

    /main,函數(shù)并沒有直接調(diào)用,task1,和,task2,,只是在,main,中調(diào)用,/OSTaskCreate,創(chuàng)建兩個任務(wù)時分別把,task1,和,task2,作為參數(shù)8.2 C/OS-II,應(yīng)用程序結(jié)構(gòu)分析,8,void task1(void*pdata)/,任務(wù),LED1,函數(shù)定義,(15),pdata=pdata;/,防止出現(xiàn)編譯警告,(16),TargetInit();/,目標(biāo)板初始化,包括初始化中斷系統(tǒng),(17),PINSEL2&=,0 x08;/,選擇管腳,P1.18,25,為,GPIO(18),IO1DIR|=0 x0318;/,設(shè)置,LED(P1.18,、,P1.19),為輸出,(19),IO1SET=0 x03=0 x1fc,INFO 1,nThe data at 0 x000001fc must be 0 x87654321.nPlease delete some source before this line.,ENDIF,CrpData,WHILE.0 x1fc,NOP ;,循環(huán)用,NOP,填充,直到,0 x1fc,WEND,CrpData1,DCD 0 x87654321 ;,當(dāng)此數(shù)為,0 x87654321,時,用戶程序被保護(hù),ENDIF,40,8.5,應(yīng)用程序設(shè)計及實例,;,各模式堆??臻g分配,AREA MyStacks,DATA,NOINIT,ALIGN=2;,通過分散加載文件定位,SvcStackSpace SPACE SVC_STACK_LEGTH*4 ;,管理模式堆棧空間,IrqStackSpace SPACE IRQ_STACK_LEGTH*4 ;,中斷模式堆棧空間,FiqStackSpace SPACE FIQ_STACK_LEGTH*4 ;,快速中斷模式堆??臻g,AbtStackSpace SPACE ABT_STACK_LEGTH*4 ;,中止模式堆棧空間,UndtStackSpace SPACE UND_STACK_LEGTH*4 ;,未定義模式堆??臻g,AREA Heap,DATA,NOINIT ;Heap,通過分散加載文件定位,bottom_of_heap SPACE 1,AREA Stacks,DATA,NOINIT ;Stacks,通過分散加載文件定位,StackUsr,END,41,8.5,應(yīng)用程序設(shè)計及實例,從前面知道,,ARM,芯片復(fù)位后,系統(tǒng)進(jìn)入管理模式、,ARM,狀態(tài),此時,PC,寄存器的值為,0 x00000000,系統(tǒng)就從,0 x00000000,處開始執(zhí)行程序。

    而,0 x00000000,處放置著異常向量表,程序?qū)⒏鶕?jù)異常向量表進(jìn)行跳轉(zhuǎn)其執(zhí)行過程如下:,芯片根據(jù)異常處理程序地址表,得到復(fù)位處理程序(,ResetInit,)的地址,并跳轉(zhuǎn)到復(fù)位處理程序(,ResetInit,)處去執(zhí)行調(diào)用,InitStack(),函數(shù),初始化,ARM,處理器各工作模式的堆棧調(diào)用目標(biāo)板初始化函數(shù)(在,TARGET.C,中定義),初始化目標(biāo)板跳轉(zhuǎn)到用戶,C,程序入口,main(),處,執(zhí)行用戶程序在芯片啟動過程中,在堆棧初始化(,InitStack(),函數(shù))的末尾,處理器切換到系統(tǒng)模式,因而用戶程序是在系統(tǒng)模式下運(yùn)行的42,8.5,應(yīng)用程序設(shè)計及實例,目標(biāo)板初始化(,TARGET.C,),目標(biāo)板初始化代碼文件是用,C,語言編寫的,其內(nèi)容主要包括:啟動代碼調(diào)用的初始化函數(shù)、用戶調(diào)用的初始化函數(shù)、一些異常處理函數(shù)以及一些系統(tǒng)庫函數(shù)的實現(xiàn)等有關(guān)的頭文件(*,.H,),要設(shè)計一個系統(tǒng),為了進(jìn)行必要類型定義、常量與變量聲明以及函數(shù)聲明等,會有各種各樣的頭文件如下:,用戶配置文件(,config.h,):包含一些類型定義和系統(tǒng)時鐘定義target.h,文件:包含一些特殊定義和開,/,關(guān),IRQ,中斷、,FIQ,中斷的函數(shù)聲明。

    根據(jù)所用的目標(biāo)板和編譯器的要求來修改該文件LPC2294.h,文件:包含,LPC2000,系列芯片的特殊寄存器定義文件,其中包含特殊寄存器的定義及固件程序函數(shù)的聲明43,8.5,應(yīng)用程序設(shè)計及實例,44,分散加載文件(*,.scf,),有時候希望把不同的代碼放在不同的存儲空間上,也就是生成的映像文件需要包含多個域,每個域在加載和運(yùn)行時可以有不同的地址要生成這樣的映像文件,必須通過某種方式告訴連接器相關(guān)的地址映射關(guān)系在,ADS,中,可以通過分散加載機(jī)制實現(xiàn)8.5.2,應(yīng)用程序設(shè)計,(參考書中相關(guān)實例),(完),。

    點擊閱讀更多內(nèi)容
    最新文檔
    傳統(tǒng)文化道德不是高懸的明月而是腳下的星光.pptx
    世界無煙日關(guān)注青少年成長健康無煙為成長護(hù)航.pptx
    五四青年節(jié)詩詞贊歌五四青年自強(qiáng)不息.pptx
    XX學(xué)校班主任培訓(xùn)用心管理慧做班主任.pptx
    拒絕熬夜健康養(yǎng)生規(guī)律作息遠(yuǎn)離亞健康.pptx
    兒童成長手冊時光里的童真印記.pptx
    幼兒園夏季傳染病預(yù)防指南預(yù)見夏天健康童行夏季傳染病預(yù)防科普.pptx
    高中生心理健康教育主題班會快樂學(xué)習(xí)高效學(xué)習(xí)正視壓力學(xué)會減壓.pptx
    員工職業(yè)道德與職業(yè)素養(yǎng)培訓(xùn)遵守職業(yè)道德提高職業(yè)修養(yǎng).pptx
    2025職業(yè)病防治法宣傳周健康守護(hù)職防同行.pptx
    XX幼兒園防災(zāi)減災(zāi)安全教育臨災(zāi)不亂安全童行學(xué)會保護(hù)自己.pptx
    在2025年縣教育工作大會暨高考備考工作推進(jìn)會上的講話發(fā)言材料.docx
    在2025年縣全面從嚴(yán)治黨和黨風(fēng)廉政會議上的講話發(fā)言材料.docx
    在2025年全市慶祝“五一”暨勞動模范表彰大會上的講話發(fā)言材料多篇.docx
    2025年稅務(wù)局青年代表在五四青年座談會上的發(fā)言材料3篇.docx
    在2025年市委全體會議上的主持講話發(fā)言材料.docx
    2025年黨風(fēng)廉政建設(shè)工作要點材料.docx
    在2025年全市青年干部慶祝五四青年節(jié)大會上的講話發(fā)言材料多篇.docx
    在入黨積極分子培訓(xùn)班上的講話發(fā)言材料.docx
    縣文旅局黨組書記在五一假期及夏季旅游安全生產(chǎn)工作部署會議上的講話發(fā)言材料.docx
    賣家[上傳人]:xuexiniu
    資質(zhì):實名認(rèn)證