三級(jí)嵌入式系統(tǒng)_第1頁(yè)
三級(jí)嵌入式系統(tǒng)_第2頁(yè)
三級(jí)嵌入式系統(tǒng)_第3頁(yè)
三級(jí)嵌入式系統(tǒng)_第4頁(yè)
三級(jí)嵌入式系統(tǒng)_第5頁(yè)
已閱讀5頁(yè),還剩3頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

三級(jí)嵌入式系統(tǒng)學(xué)習(xí)總結(jié)一第一章嵌入式系統(tǒng)概論嵌入式系統(tǒng)中的軟件一般都固化在只讀存儲(chǔ)器中,用戶不能隨意更改其中的程序功能。嵌入式系統(tǒng)的邏輯組成:1)處理器2)存儲(chǔ)器3)I/O設(shè)備與I/O接口4)數(shù)據(jù)總線5)軟件嵌入式處理芯片有四種類型:1)微處理器2)數(shù)字信號(hào)處理器3)微控制器(單片機(jī))4)片上系統(tǒng)微控制器MCU的低端產(chǎn)品并不會(huì)因?yàn)楦叨水a(chǎn)品的出現(xiàn)而衰落在32位MCU中,絕大多數(shù)使用RAM內(nèi)核EDA:電子設(shè)計(jì)自動(dòng)化IP核可以分為三種:軟核、硬核、固核嵌入式系統(tǒng)與數(shù)字媒體計(jì)算機(jī)中常用的最廣泛的西文字符及其編碼是ASCII字符集和ASCII碼,即美國(guó)標(biāo)準(zhǔn)信息交換碼,共有128個(gè)字符,一個(gè)字符占一個(gè)字節(jié)。我國(guó)目前廣泛使用的漢字編碼國(guó)家標(biāo)準(zhǔn)有GB2312和GB18030GB2312只有6763個(gè)漢字,不夠用GB18030字符集與國(guó)際標(biāo)準(zhǔn)UCS/Unicode字符集基本兼容。GB18030采用不等長(zhǎng)的編碼方法,單字節(jié)編碼表示ASCII碼,雙字節(jié)編碼表示漢字,與GB2312保持向下兼容,四字節(jié)編碼表示其他字符Unicode最新版本是6.3。UCS/Unicode在計(jì)算機(jī)中具體實(shí)現(xiàn)時(shí)采用不同的編碼方案,最常用的是UTF-8和UTF-16,UTF-8采用的是單字節(jié)可變長(zhǎng)編碼;UTF-16采用的是雙字節(jié)可變長(zhǎng)編碼文本的類型可以分為簡(jiǎn)單及本、豐富格式及本、超及本圖像的數(shù)據(jù)量=圖像水平分辨率*圖像垂直分辨率*像素深度/8(像素深度指的是每個(gè)像素用多少個(gè)二進(jìn)制數(shù)來(lái)表示)數(shù)字視頻的數(shù)據(jù)量非常大,在進(jìn)行傳輸時(shí)必須進(jìn)行壓縮,壓縮編碼標(biāo)準(zhǔn)是國(guó)際標(biāo)準(zhǔn)化組織(ISO)制定的,其名稱為MPEG。無(wú)線局域網(wǎng)采用的協(xié)議主要是IEEE802.11(俗稱WIFI)數(shù)字通信與計(jì)算機(jī)網(wǎng)絡(luò)微波是一種300MHz-300GHz的電磁波計(jì)算機(jī)網(wǎng)絡(luò)的組成:1)計(jì)算機(jī)等智能電子設(shè)備2)數(shù)據(jù)通信鏈路3)通信協(xié)議4)網(wǎng)絡(luò)軟件以太局域網(wǎng):1)發(fā)送數(shù)據(jù)設(shè)備必須把要傳輸?shù)臄?shù)據(jù)分成小塊(幀)進(jìn)行傳輸,一次只能傳輸1幀;2)局域網(wǎng)中的每一個(gè)終端都有自己唯一的標(biāo)識(shí),稱為物理地址或MAC地址,在發(fā)送的每一幀數(shù)據(jù)中,必須包含自己的MAC地址和接收終端的MAC地址3)IP協(xié)議定義了主機(jī)的概念,所有主機(jī)及使用一種統(tǒng)一格式的地址標(biāo)識(shí),稱為IP地址。4)以太局域網(wǎng)大多是由集線器或者交換機(jī)組網(wǎng)計(jì)算機(jī)網(wǎng)絡(luò)的類型:1)局域網(wǎng)2)城域網(wǎng)2)廣域網(wǎng)IP地址分為A、B、C三類。IP是由四段數(shù)字組成,共32位,8位一段。A類IP段到段和127段不使用)B類IP段到C類IP段到XP默認(rèn)分配的子網(wǎng)掩碼每段只有255或0

A類的默認(rèn)子網(wǎng)掩碼B類的默認(rèn)子網(wǎng)掩碼C類的默認(rèn)子網(wǎng)掩碼一個(gè)子網(wǎng)最多可以容納1677萬(wàn)多臺(tái)電腦一個(gè)子網(wǎng)最多可以容納6萬(wàn)臺(tái)電腦一個(gè)子網(wǎng)最多可以容納254臺(tái)電腦Mr~1*7~―第一章嵌入式處理器嵌入式處理器按照指令集可以分為復(fù)雜指令集結(jié)構(gòu)和精簡(jiǎn)指令集結(jié)構(gòu),按存儲(chǔ)機(jī)制可以分為馮諾依曼結(jié)構(gòu)及哈佛結(jié)構(gòu),按字長(zhǎng)可以分為8位、A類的默認(rèn)子網(wǎng)掩碼B類的默認(rèn)子網(wǎng)掩碼C類的默認(rèn)子網(wǎng)掩碼一個(gè)子網(wǎng)最多可以容納1677萬(wàn)多臺(tái)電腦ARM內(nèi)核采用多層次的存儲(chǔ)結(jié)構(gòu),在處理器與主存儲(chǔ)器之間加入CACHE,綜合了哈佛結(jié)構(gòu)和馮諾依曼結(jié)構(gòu)的優(yōu)點(diǎn)。ARM處理器的主流為32位,其主要特征如下:1)單周期操作2)只是用加載/存儲(chǔ)指令訪問(wèn)內(nèi)存3)指令長(zhǎng)度固定4)三地址指令格式5)指令流水線格式6)低功耗設(shè)計(jì)ARM由三種指令集,分別是:1)ARM指令集2)Thumb指令集3)Thumb-2指令集典型ARM處理器介紹ARM處理器分為5類,分別是:1)經(jīng)典ARM處理器2)ARMCortex嵌入式處理器3)ARMCortex實(shí)時(shí)嵌入式處理器4)ARMCortex應(yīng)用處理器5)ARM專家處理器ARMCortex處理器包括:1)Cortex-A面向高端應(yīng)用的處理器2)Cortex-R面向?qū)崟r(shí)控制的處理器3)Cortex-M面向微控制器的處理器ARM處理器體系結(jié)構(gòu)ARM處理器的工作狀態(tài):1)ARM狀態(tài),即32位狀態(tài)2)Thumb狀態(tài),即16位狀態(tài)3)調(diào)試狀態(tài)ARM處理器有7種工作模式,分別是1)用戶模式User2)快速中斷模式FIQ3)外部中斷模式IRQ4)管理模式SVC5)中止模式ABT6)未定義指令模式UND7)系統(tǒng)模式SYSARM處理器由37個(gè)寄存器,包括31個(gè)通用寄存器和6個(gè)狀態(tài)寄存器,通用寄存器中不分組的有8個(gè),即R0-R7。ARM處理器用兩種模式存儲(chǔ)數(shù)據(jù),一是大端模式,即32位的高字節(jié)存放在低地址中,低字節(jié)存放在高字節(jié)中;二是小端模式,即32位的高字節(jié)存放在高地址中,低字節(jié)存放在低字節(jié)中。MMU,即存儲(chǔ)器管理模塊,作用是進(jìn)行虛擬地址到物理地址的映射、存儲(chǔ)器訪問(wèn)權(quán)限控制MPU是存儲(chǔ)器保護(hù)單元ARM處理器指令集指令的條件碼:EQ:相等NE:不相等CS:無(wú)符號(hào)數(shù)大于或等于CC:無(wú)符號(hào)數(shù)小于HI:無(wú)符號(hào)數(shù)大于LS:無(wú)符號(hào)數(shù)小于或等于GE:帶符號(hào)數(shù)大于或等于LT:帶符號(hào)數(shù)小于GT:帶符號(hào)數(shù)小于或等于LE:帶符號(hào)數(shù)小于或等于PL:正數(shù)或0塊拷貝尋址舉例:LDMIAR0,{R1,R2,R5,R9}R1g[R0],R2g[R0+4],R3g[R0+8],R4g[R0+12]STMIAR0,{R1-R7}[R0]^R1,[R0+4]gR2,[R0+8]gR3,[R0+12]@R4,[R0+16]^R5程序狀態(tài)寄存器訪問(wèn)指令舉例:MRSR0,CPSR傳送CPSR中的值到R0精心整理MSRCPSR,R0傳送R0的值到CPSRsARM匯編語(yǔ)言程序設(shè)計(jì)意會(huì)—/rtr.—ate.二第二章嵌入式系統(tǒng)硬件組成概述最小系統(tǒng)的構(gòu)成:嵌入式處理器、存儲(chǔ)器、復(fù)位電路、電源電路、時(shí)鐘電路、調(diào)試測(cè)試接口典型嵌入式應(yīng)用系統(tǒng)的硬件組成:最小硬件系統(tǒng)、前向通道、后向通道、人機(jī)交互通道以及相互互聯(lián)通信通道。前向通道即輸入接口,由模擬量輸入接口和數(shù)字量輸入接口組成;后巷通道即輸出接口,由模擬輸出接口和數(shù)字輸出接口組成;人機(jī)交互通道即輸入輸出接口;嵌入式處理芯片AMBA(AdvancedMicrocontrollerBusArchitecture)先進(jìn)微控制器總線體系結(jié)構(gòu)AMBA規(guī)定了兩種類型的總線,分別是系統(tǒng)總線和外圍總線,通過(guò)橋接器進(jìn)行連接與系統(tǒng)總線連接的部件:電源及時(shí)鐘控制器、內(nèi)核、DMA、外部存儲(chǔ)器控制接口、USB主機(jī)、SRAM、中斷控制器、LCD控制器;與外圍總線連接的部件:GPIO、UART、SPI、IIC、IIS、USB設(shè)備、WDT、TIMER、RTC、PWM、ADC/DAC、CAN、Ethernent。片內(nèi)程序存儲(chǔ)器常用FlashROM,片內(nèi)數(shù)據(jù)存儲(chǔ)器常用SRAM。嵌入式系統(tǒng)的存儲(chǔ)器嵌入式系統(tǒng)的存儲(chǔ)器結(jié)構(gòu):嵌入式處理器(內(nèi)部L1/L2Cache)、主存儲(chǔ)器(內(nèi)存)、外部存儲(chǔ)器(外存),Cache由SRAM承擔(dān)MROM:掩膜只讀存儲(chǔ)器,出廠后信息確定,無(wú)法改變;PROM:一次可編程存儲(chǔ)器EPROM:紫外線可擦除的只讀存儲(chǔ)器EEPROM:電擦除可編程存儲(chǔ)器FLASHROM:閃存;NORFLASH和NANDFLASH是流行的閃存親斤存儲(chǔ)器:FRAM(鐵電存儲(chǔ)器)、MRAM(磁性存儲(chǔ)器)存儲(chǔ)器容量=單元總數(shù)*數(shù)據(jù)位數(shù)/單元并行總線的存儲(chǔ)器帶寬=總線頻率*數(shù)據(jù)寬度/8*傳輸次數(shù)/總線周期串行總線的存儲(chǔ)器帶寬=總線頻率/10I/O接口及常用的GPIOGPIO提供的輸入具有緩沖功能,輸出有鎖存功能IIC總線有兩條數(shù)據(jù)線,分別是數(shù)據(jù)線SDA和時(shí)鐘線SCL。SCL為高,SDA由高變低時(shí)啟動(dòng)傳輸,SCL為高,SDA由高變低時(shí)停止傳輸。傳輸時(shí)高位在前,低位在后,傳輸?shù)牡谝粋€(gè)字節(jié)為地址,地址的最后一位指示數(shù)據(jù)傳輸方向,第9位為應(yīng)答位??偩€控制遵循低電平優(yōu)先的原則。SPI是同步串行接口,一般使用四條線,分別是時(shí)鐘、輸入、輸出、片選。SPI發(fā)送數(shù)據(jù)時(shí),數(shù)據(jù)從主機(jī)中從左向右發(fā)送給從機(jī)(主機(jī)數(shù)據(jù)左對(duì)齊),從機(jī)數(shù)據(jù)從右向左發(fā)送給主機(jī)(從機(jī)數(shù)據(jù)右對(duì)齊),發(fā)送數(shù)據(jù)時(shí),高位在前,低位在后UART:常用于全雙工串行異步通信,發(fā)數(shù)據(jù)時(shí),低位在前,高位在后USB:最多可以連接127個(gè)設(shè)備。USB系統(tǒng)由USB硬件和USB軟件組成。硬件中的主控制器包括一個(gè)根集線器,傳輸時(shí)采樣翻轉(zhuǎn)不歸零。采用半雙工差分方式傳輸數(shù)據(jù)。觸摸屏分為電阻式和電容式ARM內(nèi)核典型處理器芯片S3C2410是韓國(guó)三星公司制造的微處理器,以下都是S3C2410的有關(guān)介紹電源管理模塊有正常模式、慢速模式、休眠模式、掉電模式。任何情況下復(fù)位操作均進(jìn)入正常模式,在掉電模式和休眠模式下,只要有任何一個(gè)外部中斷EINT或者RTC時(shí)鐘中斷發(fā)生,均將返回到正常模式??偣灿?個(gè)16位定時(shí)器timer,4個(gè)具備PWM的功能。定時(shí)器輸入時(shí)鐘頻率=PCLK/(預(yù)分頻值+1)*時(shí)鐘因子有三個(gè)UART,UBRDIV=INT(UCLK/(波特率*16))-1,UCLK可以是PCLK,也可以是UEXTCLK??撮T狗定時(shí)器的技術(shù)脈沖周期為:twatchdog=1/(PCLK/(預(yù)分頻值+1)/分頻系數(shù)),計(jì)數(shù)初值為WTCON=T/twatchdog嵌入式系統(tǒng)外部通信接口RS-485采用差分信號(hào)傳輸方式CAN總線也使用差分的方式傳輸壘nn亡第四早在uC/OS-II中,任務(wù)或者中斷服務(wù)可以通過(guò)事件控制模塊(ECB)相其他任務(wù)發(fā)出信號(hào)嵌入式系統(tǒng)的軟件組成嵌入式系統(tǒng)的特點(diǎn):軟件與硬件一體化、軟件代碼時(shí)空效率要求高、軟件可剪裁、軟件應(yīng)用環(huán)境復(fù)雜、軟件開(kāi)發(fā)難度大、軟件面向用戶、面向產(chǎn)品、面向應(yīng)用、軟件產(chǎn)業(yè)高度分散、軟件具有較長(zhǎng)的生命周期。嵌入式系統(tǒng)的軟件結(jié)構(gòu):簡(jiǎn)單的輪詢結(jié)構(gòu)(只進(jìn)行查詢操作)、帶中斷的輪詢結(jié)構(gòu)、監(jiān)控式操作系統(tǒng)+應(yīng)用軟件的結(jié)構(gòu)、通用嵌入式操作系統(tǒng)+應(yīng)用軟件的結(jié)構(gòu)。高端嵌入式系統(tǒng)的軟件結(jié)果層次示例:硬件層、硬件抽象層、操作系統(tǒng)層、中間件層、應(yīng)用軟件層。中間件是指除了操作系統(tǒng)內(nèi)核、設(shè)備驅(qū)動(dòng)程序和應(yīng)用軟件之外的系統(tǒng)軟件。硬件抽象層(HardwareAbstractLayerHAL)和板極支持包(BoardSupportPackageBSP)是嵌入式系統(tǒng)的底層軟件,引入HAL對(duì)硬件進(jìn)行抽象,通過(guò)硬件抽象層應(yīng)用編程接口(HALAPI)向上提供服務(wù)。BSP在系統(tǒng)復(fù)位之后負(fù)責(zé)系統(tǒng)軟硬件環(huán)境的初始化,包括三個(gè)方面的內(nèi)容,一是系統(tǒng)復(fù)位時(shí)的硬件初始化,包括處理器芯片的初始化和電路板的初始化,二是為操作系統(tǒng)提供硬件相關(guān)的驅(qū)動(dòng)程序支持,三是引導(dǎo)加載操作系統(tǒng)。BSP是操作系統(tǒng)正常運(yùn)行的前提,其效率和穩(wěn)定性直接影響整個(gè)系統(tǒng)的性能及穩(wěn)定性。引導(dǎo)加載程序(引導(dǎo)程序)bootloader是底層軟件的一部分,嵌入式系統(tǒng)上電后首先運(yùn)行引導(dǎo)加載程序,進(jìn)行系統(tǒng)上電自檢、硬件初始化、建立存儲(chǔ)空間映射、配置系統(tǒng)參數(shù)、建立上層軟件運(yùn)行環(huán)境,加載和啟動(dòng)操作系統(tǒng)等等。嵌入式操作系統(tǒng)的加載方式:1)在ROM中直接運(yùn)行操作系統(tǒng)代碼2)在RAM中運(yùn)行操作系統(tǒng)代碼3)從外存儲(chǔ)器加載操作系統(tǒng)代碼運(yùn)行4)從通信端口加載操作系統(tǒng)代碼運(yùn)行。引導(dǎo)加載程序的運(yùn)行過(guò)程,一是讓嵌入式系統(tǒng)正常運(yùn)起來(lái),與處理器體系結(jié)構(gòu)相關(guān)的硬件初始化和板極初始化等操作通常在第一步完成,一般用匯編語(yǔ)言來(lái)寫(xiě)。第二是實(shí)現(xiàn)操作系統(tǒng)加載的功能,用C語(yǔ)言實(shí)現(xiàn)。設(shè)備驅(qū)動(dòng)程序是指直接與硬件相互作用并控制硬件的軟件,是對(duì)硬件操作的抽象。嵌入式操作系統(tǒng)實(shí)時(shí)系統(tǒng)(Real-TimeSystem)是必須在有限和確定的時(shí)間內(nèi)對(duì)外部事件做出響應(yīng)的信息系統(tǒng)。實(shí)時(shí)系統(tǒng)的關(guān)鍵特性:1)時(shí)間約束性2)可預(yù)測(cè)性3)可靠性4)交互性硬實(shí)時(shí)任務(wù):必須在給定的時(shí)間內(nèi)完成,超過(guò)時(shí)限會(huì)引起重大的錯(cuò)誤軟實(shí)時(shí)任務(wù):超過(guò)時(shí)限不會(huì)引發(fā)致命錯(cuò)誤,而是造成任務(wù)的服務(wù)質(zhì)量下降準(zhǔn)實(shí)時(shí)任務(wù):通常允許偶爾錯(cuò)過(guò)最后時(shí)限,若超過(guò)時(shí)限,所進(jìn)行的操作或計(jì)算沒(méi)有任何意義。實(shí)時(shí)操作系統(tǒng)采用如下的機(jī)制來(lái)保持對(duì)實(shí)時(shí)任務(wù)的響應(yīng)和處理的時(shí)間確定性:1)事件驅(qū)動(dòng)2)多級(jí)中斷嵌套處理3)細(xì)粒度的任務(wù)優(yōu)先級(jí)控制4)實(shí)施搶占式調(diào)度。實(shí)時(shí)操作系統(tǒng)的實(shí)時(shí)性指標(biāo):評(píng)價(jià)實(shí)時(shí)操作系統(tǒng)的實(shí)時(shí)性最重要的指標(biāo)是響應(yīng)時(shí)間,即系統(tǒng)從事件請(qǐng)求開(kāi)始到任務(wù)完成的時(shí)間間隔。除此之外,還有以下的幾點(diǎn):1)中斷延遲時(shí)間:從接收到可屏蔽中斷請(qǐng)求到操作系統(tǒng)做出響應(yīng)并轉(zhuǎn)入中斷服務(wù)程序所需要的最長(zhǎng)時(shí)間2)任務(wù)切換時(shí)間:操作系統(tǒng)在兩個(gè)獨(dú)立且具有相同優(yōu)先級(jí)的就緒態(tài)任務(wù)之間切換所需要的時(shí)間3)任務(wù)搶占時(shí)間:系統(tǒng)將優(yōu)先權(quán)從低優(yōu)先級(jí)的任務(wù)轉(zhuǎn)移到高優(yōu)先級(jí)任務(wù)所需要花費(fèi)的時(shí)間。嵌入式操作系統(tǒng)的特點(diǎn):代碼固化存儲(chǔ)、可裁剪、實(shí)時(shí)性、強(qiáng)穩(wěn)定性、硬件適應(yīng)性。嵌入式操作系統(tǒng)的分類:1)按實(shí)時(shí)性分硬實(shí)時(shí)操作系統(tǒng):如VxWorks、RTEMS、QNX、uC/OS-II、Nucleus;軟實(shí)時(shí)操作系統(tǒng):如WinCE、多種嵌入式Linux系統(tǒng)2)按開(kāi)發(fā)方式:專門為嵌入式環(huán)境開(kāi)發(fā)的嵌入式操作系統(tǒng)從通用計(jì)算機(jī)操作系統(tǒng)移植而來(lái)的嵌入式系統(tǒng)3)按商業(yè)模式:免費(fèi)的嵌入式操作系統(tǒng)商業(yè)嵌入式操作系統(tǒng)操作系統(tǒng)是由內(nèi)核、用戶界面、中間件、使用程序等組件組成的,內(nèi)核起著最重要的作用,其作用是管理系統(tǒng)資源,支持多任務(wù)并發(fā)執(zhí)行。單內(nèi)核可以分為整體結(jié)構(gòu)和分層結(jié)構(gòu)兩種類型。單內(nèi)核的優(yōu)點(diǎn)是性能較好系統(tǒng)各個(gè)組件可以相互調(diào)用。缺點(diǎn)是占用資源多,維護(hù)工作量大。單內(nèi)核的操作系統(tǒng)有:Unix、BSDUnix、Linux、MS-DOS.Windows9x(Windows95/98/ME)、WindowsCE、Android操作系統(tǒng)。微內(nèi)核結(jié)構(gòu):操作系統(tǒng)僅僅將必須的基本功能放入內(nèi)核,其他功能在內(nèi)核之外。采用純粹微內(nèi)核的操作系統(tǒng)有AIX、Mach、MinixjVxWorks^QNX等。常見(jiàn)的嵌入式操作系統(tǒng):VxWorks:采用的是微內(nèi)核結(jié)構(gòu)QNX:類Unix的實(shí)時(shí)操作系統(tǒng),是非常成功的微內(nèi)核操作系統(tǒng),其內(nèi)核僅僅提供進(jìn)程調(diào)度、進(jìn)程間通信、底層網(wǎng)絡(luò)通信和中斷處理。NucleusPLUS:搶占式多任務(wù)商業(yè)操作系統(tǒng)內(nèi)核RTEMS:實(shí)時(shí)多處理器系統(tǒng)TinyOS:專門為硬件資源極為有限的無(wú)線傳感器網(wǎng)絡(luò)應(yīng)用而量身定制的操作系統(tǒng)eCOS:嵌入式可配置操作系統(tǒng)Linux是單內(nèi)核結(jié)構(gòu),采用模塊化設(shè)計(jì),支持內(nèi)核線程。Linux內(nèi)核可以分為三個(gè)層次:最上層是系統(tǒng)調(diào)用接口、中間層是內(nèi)核的核心部分、最下層是BSP。Linux內(nèi)核內(nèi)部包含了若干相關(guān)的組成部件,包括1)初始化部件2)進(jìn)程調(diào)度器3)內(nèi)存管理器4)虛擬文件系統(tǒng)5)網(wǎng)絡(luò)接口6)進(jìn)程間通信7)可加載模塊8)設(shè)備驅(qū)動(dòng)程序Linux實(shí)時(shí)化技術(shù)的三個(gè)途徑:1)內(nèi)核補(bǔ)丁方式2)雙內(nèi)核方式3)超微內(nèi)核方式嵌入式linux發(fā)行版本:uClinux、RTlinux、MontaVistaLinux、WindRiverLinux、RTAkXenomai。Android系統(tǒng)采用堆層式軟件架構(gòu),分為四層,從底層到高層分別是Linux內(nèi)核、系統(tǒng)運(yùn)行庫(kù)、應(yīng)用程序框架和應(yīng)用程序。其中,系統(tǒng)運(yùn)行庫(kù)由android運(yùn)行環(huán)境和組件庫(kù)兩部分組成。IOS操作系統(tǒng)架構(gòu)分為四個(gè)層次,分別是核心操作系統(tǒng)層、核心服務(wù)層、媒體層、觸控界面層。uC/OS-II嵌入式操作系統(tǒng)uC/OS-II的特點(diǎn):1)公開(kāi)源碼的高質(zhì)量實(shí)時(shí)內(nèi)核2)可以移植3)可裁剪、可固化4)時(shí)間確定性5)多任務(wù)6)搶占式內(nèi)核7)多種系統(tǒng)服務(wù)uC/OS-II的源代碼主要有以下幾部分構(gòu)成:系統(tǒng)核心任務(wù)管理時(shí)鐘管理任務(wù)同步與任務(wù)間通信內(nèi)存管理處理器相關(guān)代碼在uC/OS-II中,任務(wù)是操作系統(tǒng)的基本調(diào)度單位,由操作系統(tǒng)內(nèi)核管理。任務(wù)由三部分構(gòu)成,分別是任務(wù)的程序代碼、任務(wù)堆棧和任務(wù)控制塊。每一個(gè)任務(wù)的??臻g大小不同,在文件OS_CPU.H中定義了一個(gè)數(shù)據(jù)類型OS_STK,在應(yīng)用程序中定義任務(wù)堆棧的棧區(qū)只需要聲明一個(gè)OS_STK即可,如OS_STKTaskStk[TASK_STK]ouC/OS-II^^任務(wù)處于五種狀態(tài)之一,分別是等待態(tài)、休眠態(tài)、就緒態(tài)、運(yùn)行態(tài)和被中斷態(tài)。休眠態(tài)指任務(wù)代碼駐留在內(nèi)存中還沒(méi)有交給內(nèi)核調(diào)度的狀態(tài);就緒態(tài)指任務(wù)已經(jīng)具備運(yùn)行的條件但因優(yōu)先級(jí)比正在運(yùn)行的任務(wù)低而暫時(shí)不能運(yùn)行的狀態(tài);運(yùn)行態(tài)指任務(wù)已獲得處理器使用權(quán)而正在運(yùn)行的狀態(tài);等待態(tài)也稱為掛起,指正在運(yùn)行的程序因?yàn)榈却骋皇录l(fā)生而將處理器的使用權(quán)讓出給其他任務(wù)而自身掛起;被中斷態(tài)指因處理器執(zhí)行中斷而被暫停運(yùn)行的任務(wù)狀態(tài)。uC/OS-II可以管理64個(gè)任務(wù),有64個(gè)優(yōu)先級(jí),0是最高優(yōu)先級(jí)別。最低優(yōu)先級(jí)別由OS_LOWEST_PRIO來(lái)定義。任務(wù)分為用戶任務(wù)和系統(tǒng)任務(wù),系統(tǒng)預(yù)定義了兩個(gè)系統(tǒng)任務(wù)為應(yīng)用程序服務(wù),即空閑任務(wù)和統(tǒng)計(jì)任務(wù)。系統(tǒng)總是把最低優(yōu)先級(jí)固定賦給空閑任務(wù)。uC/OS-II采用的是基于優(yōu)先級(jí)的任務(wù)調(diào)度。內(nèi)核通過(guò)OSIntExit()判斷是否存在更高優(yōu)先級(jí)的就緒任務(wù)。利用宏OS_ENTER_CRITICAL()和OS_EXIT_CRITICAL()實(shí)現(xiàn)關(guān)中斷和開(kāi)中斷。利用函數(shù)OSSchedLock()¥DOSSchedUnLock()給調(diào)度器上鎖和解鎖。通過(guò)函數(shù)OSStart()開(kāi)始任務(wù)調(diào)度之前創(chuàng)建函數(shù)OSTaskCreate()和OSTaskCreateExt()都可以創(chuàng)建任務(wù)函數(shù)OSTaskDel()既可以刪除任務(wù)本身,也可以刪除其他的任務(wù)。刪除自己的調(diào)用形式為:OSTaskDel(OS_PRIO_SELF)函數(shù)OSTaskDelRel(^作用是讓某個(gè)任務(wù)使用完資源后先釋放資源,再執(zhí)行OSTaskDel來(lái)刪除自己函數(shù)OSTaskSuspendOW以掛起一個(gè)任務(wù),被掛起的任務(wù)只能等待其他的任務(wù)調(diào)用OSTaskResume()函數(shù)才能實(shí)現(xiàn)任務(wù)恢復(fù)函數(shù)OSTimeTick()返回是否等待超時(shí)或等待事件的任務(wù)是否超時(shí)用UNIT32UOSTimeGet()獲得tick計(jì)數(shù)器的當(dāng)前值,可以調(diào)用OSTimeSet()改變tick計(jì)數(shù)器的當(dāng)前值。_通過(guò)OSTimeDly()或者OSTimeDlyHMSM()延遲處于運(yùn)行態(tài)的任務(wù)由OSSemCreate()函數(shù)創(chuàng)建信號(hào)量由OSSemDel()函數(shù)刪除一個(gè)信號(hào)量由OSSemPost()釋放信號(hào)量由OSSemPend()等待信號(hào)量由OSSemAccept()無(wú)等待的請(qǐng)求信號(hào)量由OSSenQuery()查詢信號(hào)量狀態(tài)調(diào)用OSInit()進(jìn)行內(nèi)核初始化五第五章開(kāi)發(fā)嵌入式系統(tǒng)的基礎(chǔ)知識(shí)嵌入式系統(tǒng)的開(kāi)發(fā)過(guò)程需求分析與規(guī)格說(shuō)明系統(tǒng)設(shè)計(jì):根據(jù)規(guī)格說(shuō)明書(shū)中所描述的系統(tǒng)需要實(shí)現(xiàn)的功能,確定如何實(shí)現(xiàn)這些功能的硬件和軟件結(jié)構(gòu)。3)構(gòu)件設(shè)計(jì):設(shè)計(jì)或者選擇符合系統(tǒng)結(jié)構(gòu)和規(guī)格說(shuō)明中所需要的具體構(gòu)件,有通用的構(gòu)件,如CPU、存儲(chǔ)器芯片,也有專用的構(gòu)件,如AX88796(不知道是什么玩意)4)系統(tǒng)集成與測(cè)試(2)嵌入式系統(tǒng)的開(kāi)發(fā)平臺(tái)與工具嵌入式系統(tǒng)的開(kāi)發(fā)特點(diǎn)1)使用宿主機(jī)-目標(biāo)機(jī)的開(kāi)發(fā)架構(gòu)2)與底層硬件控制程序的關(guān)系密切3)軟硬件資源受到限制4)需要固化程序IDE(IntegratedDevelopmentEnvironment):集成開(kāi)發(fā)環(huán)境(3)嵌入式系統(tǒng)的調(diào)試四種調(diào)試技術(shù):1)在線仿真器(In-CircuitEmulatorICE):ICE具有與索要開(kāi)發(fā)的嵌入式系統(tǒng)相同的嵌入式處理器,進(jìn)行調(diào)試時(shí),用在線仿真器取代被調(diào)試系統(tǒng)的處理器。2)片上調(diào)試技術(shù)JTAG3)駐留監(jiān)控軟件調(diào)試:使用駐留監(jiān)控軟件(ResidentMonitors),即固化在目標(biāo)機(jī)ROM中的程序,在目標(biāo)機(jī)中運(yùn)行。4)指令集模擬器(InstructionSetSimulatorISS)在宿主機(jī)上模擬應(yīng)用程序在目標(biāo)機(jī)上潤(rùn)興行為的一個(gè)軟件工具。主要應(yīng)用于沒(méi)有目標(biāo)機(jī)開(kāi)發(fā)板硬件、有開(kāi)發(fā)板硬件,但使用開(kāi)發(fā)板成本高、被調(diào)試的程序模塊不需要在實(shí)際開(kāi)發(fā)板上執(zhí)行、對(duì)模塊代碼進(jìn)行語(yǔ)法檢查、避免因?qū)τ布皇煜ざ谡{(diào)試硬件方面耗費(fèi)過(guò)多精力。常用的兩種指令集模擬器:ARMulator、SkyEye系統(tǒng)開(kāi)發(fā)工具軟件(1)ADS1.2工具軟件(ARMDeveloperSuite):支持開(kāi)發(fā)的嵌入式應(yīng)用軟件通常是無(wú)操作系統(tǒng)的,即使有,也是uC/OS-II這樣的小型系統(tǒng)。ADS1.2的工程項(xiàng)目:一個(gè)工程項(xiàng)目至少應(yīng)包括一個(gè)生產(chǎn)目標(biāo),即用于生成特定輸出文件的生成選項(xiàng)以及所用的全部文件的集合。生成選項(xiàng)包括匯編選項(xiàng)、編譯選項(xiàng)、連接選項(xiàng)和連接后選項(xiàng)。三個(gè)可執(zhí)行文件的模板:1)Debug:生成的額輸出文件包括所有調(diào)試信息,用于在開(kāi)發(fā)過(guò)程中使用;2)Release:生成的輸出文件中不包括調(diào)試信息,用于生成實(shí)際發(fā)行的軟件3)DebugRel:生成的輸出文件包含了基本的調(diào)試信息。當(dāng)?shù)刂酚成潢P(guān)系比較簡(jiǎn)單時(shí),使用編譯、連接選項(xiàng)來(lái)確定輸入文件的連接順序當(dāng)?shù)刂酚成潢P(guān)系比較復(fù)雜時(shí),使用scatter(分散加載)格式的文件來(lái)確定輸入文件的連接順序。連接中的地址映射:ADS把編譯后的目標(biāo)文件信息按照3種存儲(chǔ)區(qū)域類型進(jìn)行劃分,分別是:1)RO端段:代碼存儲(chǔ)區(qū)和常數(shù)存儲(chǔ)區(qū),具有只讀的性質(zhì)2)RW段:指初始值為非0的全局變量數(shù)據(jù)區(qū),具有可讀可寫(xiě)的性質(zhì)3)ZI段:指初始值為0的全局變量數(shù)據(jù)區(qū),包括未初始化的全局變量,具有可讀可寫(xiě)的性質(zhì)。下載時(shí)域和運(yùn)行時(shí)域:下載時(shí)域是下載時(shí)的存儲(chǔ)空間;運(yùn)行時(shí)域是運(yùn)行時(shí)的存儲(chǔ)空間。1)simple連接類型:應(yīng)用于地址映射簡(jiǎn)單的工程項(xiàng)目。RWbase及本框配置的是RW字段的和ZI字段運(yùn)行時(shí)域的地址,輸入的地址值必須是字對(duì)準(zhǔn)的,即能被4整除。2)對(duì)地址映射關(guān)系較為復(fù)雜的項(xiàng)目,使用scatter連接類型,需要提供一個(gè)scatter格式的文件(.scf)。配置文件是一個(gè)文本文件,使用BNF語(yǔ)法來(lái)進(jìn)行描述。在scatter類型下,下載時(shí)域的語(yǔ)法結(jié)構(gòu)如下:LoadnameBaseAddAttributesize{…}Load_name是下載時(shí)域的名稱,是下載時(shí)域的唯一標(biāo)識(shí)。BaseAdd是下載時(shí)域的首地址,Attribute是下載時(shí)域的數(shù)屬性,可省略。size是下載時(shí)域的容量大小。在scatter類型下,運(yùn)行時(shí)域的描述語(yǔ)法結(jié)構(gòu)如下:ExecnameBaseAddAttributeSizeExec_name是運(yùn)行時(shí)域的名稱。屬性可省略。在scatter類型下,輸入端的描述結(jié)構(gòu)如下:*代表若干個(gè)任意字符,?代表一個(gè)任意字符Load10x00000x8000{Exec10x00000x8000{*(+RO)}Exec20x100000x6000{*(+RW,+ZI)}}上述是一個(gè)簡(jiǎn)單的配置文件,定義了一個(gè)下載時(shí)域,名稱為L(zhǎng)oad_1,首地址是0x0000,域的容耳是0x8000,定義了兩個(gè)運(yùn)行時(shí)域,第一個(gè)名稱為Exec_1,首地址為0x0000,容量為0x8000,域中包含了所有的代碼和常數(shù),即包含了所有RO屬性的輸入段。第二個(gè)域中包含了所有的RW、ZI屬性的輸入段。RVDS(RealViewDevelopmentSuite)要使用RVDS來(lái)調(diào)試程序,必須使用RealView-ICE仿真器RVDS的功能模塊包括工程管理器(IDE)、編譯鏈接器(RVCT)、調(diào)試器(RVD)和指令集仿真器(RVISS)等。RVDS能夠記錄ARMCPU從開(kāi)始執(zhí)行程序到停止執(zhí)行程序這段時(shí)間所執(zhí)行的所有操作,稱為Trace功能;而Profile功能指RVDS可以對(duì)Trace功能所記錄的內(nèi)容進(jìn)行性能分析。(3)GNU(GNU’sNotUni)x是一種常用于基于Linux操作系統(tǒng)的嵌入式軟件的工具套件的簡(jiǎn)稱。GCC是GNU開(kāi)發(fā)工具套件中的核心工具軟件,是一種針對(duì)linux操作系統(tǒng)環(huán)境下運(yùn)行程序的編譯工具。它由源文件生成可執(zhí)行文件的過(guò)程是預(yù)處理,編譯,匯編,連接。匯編階段,生成二進(jìn)制目標(biāo)文件,以.。為文件的結(jié)尾。Linux操作系統(tǒng)中的可執(zhí)行文件沒(méi)有統(tǒng)一的文件后綴,按文件的屬性來(lái)進(jìn)行區(qū)分,若GCC生成可執(zhí)行文件時(shí)沒(méi)有指定文件名,則GCC生成一個(gè)名為a.out的可執(zhí)行文件。GCC所規(guī)定的文件后綴與文件類型的對(duì)應(yīng)關(guān)系:.c:用C語(yǔ)言編寫(xiě)的源程序文件.a:由目標(biāo)文件構(gòu)成的源文件.C、.cc、.cxx:用C++語(yǔ)言編寫(xiě)的源文件,:頭文件,可以被其他源文件包含.i:已經(jīng)預(yù)處理過(guò)的C語(yǔ)言編寫(xiě)的源程序文件.ii:已經(jīng)過(guò)預(yù)處理的C++語(yǔ)言編寫(xiě)的源程序文件.o:編譯及匯編后生成的目標(biāo)文件.s:編譯后生成的匯編語(yǔ)言程序.S:匯編語(yǔ)言編寫(xiě)的源文件程序。GCC的命令及參數(shù):基本命令格式為gcc[options][filenames],其中,options代表編譯命令所需要的參數(shù),filename表示命令中所涉及到的文件名稱。精心整理針對(duì)不同的嵌入式處理器,GCC的命令格式不同,如針對(duì)ARM,GCC基本命令格式為:arm-linux-gcc[options][filenames]GCC命令的參數(shù)(針對(duì)ARM)-c:僅完成編譯操作而不進(jìn)行編譯操作,編譯器把輸入的文件生成后綴為.o的目標(biāo)文件-E:僅完成預(yù)處理操作而不進(jìn)行后續(xù)處理操作,生成后綴為i的文件-S:僅完成預(yù)處理操作、編譯操作而不進(jìn)行后續(xù)操作,輸出后綴為.s的文件-ofilename_out:確定編譯后的輸出文件名為filename_out,可以根據(jù)自己的需求確定生成的輸出文件名稱,但不能與源文件名稱相同。若不指定,則輸出為a.out-g:編譯時(shí)產(chǎn)生一個(gè)用于調(diào)試的符號(hào)表,對(duì)元層序進(jìn)行調(diào)試-O:對(duì)程序進(jìn)行優(yōu)化編譯-Idirname:將目錄名為dirname的目錄加入到源程序頭文件的目錄列表中-Ldirname:將目錄為dirname的目錄加入到庫(kù)文件的目錄列表中假設(shè)源文件名稱為test.c,以下是幾個(gè)常見(jiàn)的GCC編譯命令:arm-linux-gcc-otesttest.c:生成文件名為test的輸出文件Arm-linux-gcc-c-otest.otest.c:生成文件名為test.o的目標(biāo)文件Arm-linux-gcc-S-otest.stest.c:生成文件名為test.s的匯編語(yǔ)言文件Arm-linux-gcc-E-

溫馨提示

  • 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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論