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

下載本文檔

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

文檔簡(jiǎn)介

1、三級(jí)嵌入式系統(tǒng)學(xué)習(xí)總結(jié)一 第一章1. 嵌入式系統(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核可以分為三種:軟核、硬核、固核2. 嵌入式系統(tǒng)與數(shù)字媒體計(jì)算機(jī)中常用的最廣泛的西文字符及其編碼是ASCII字符集和ASCII碼,即美國標(biāo)準(zhǔn)信息交換碼,共有12

2、8個(gè)字符,一個(gè)字符占一個(gè)字節(jié)。我國目前廣泛使用的漢字編碼國家標(biāo)準(zhǔn)有GB2312和GB18030GB2312只有6763個(gè)漢字,不夠用GB18030字符集與國際標(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ù)量=圖

3、像水平分辨率*圖像垂直分辨率*像素深度/8(像素深度指的是每個(gè)像素用多少個(gè)二進(jìn)制數(shù)來表示)數(shù)字視頻的數(shù)據(jù)量非常大,在進(jìn)行傳輸時(shí)必須進(jìn)行壓縮,壓縮編碼標(biāo)準(zhǔn)是國際標(biāo)準(zhǔn)化組織(ISO)制定的,其名稱為MPEG。無線局域網(wǎng)采用的協(xié)議主要是IEEE 802.11(俗稱WIFI)3. 數(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ù)

4、據(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段0.0.0.0 到127.255.255.255 (0段和127段不使用)B類IP段128.0.0.0 到191.255.255.255C類IP段192.0.0.0 到223.255.255.255XP默認(rèn)分配的子網(wǎng)掩碼每段只有255或0A類的默認(rèn)子網(wǎng)掩碼255.0.0.0一個(gè)子網(wǎng)最多可以容

5、納1677萬多臺(tái)電腦B類的默認(rèn)子網(wǎng)掩碼255.255.0.0一個(gè)子網(wǎng)最多可以容納6萬臺(tái)電腦C類的默認(rèn)子網(wǎng)掩碼255.255.255.0一個(gè)子網(wǎng)最多可以容納254臺(tái)電腦二 第二章1. 嵌入式處理器嵌入式處理器按照指令集可以分為復(fù)雜指令集結(jié)構(gòu)和精簡(jiǎn)指令集結(jié)構(gòu),按存儲(chǔ)機(jī)制可以分為馮諾依曼結(jié)構(gòu)及哈佛結(jié)構(gòu),按字長(zhǎng)可以分為8位、16位、32位等精簡(jiǎn)指令集結(jié)構(gòu)采用加載和存儲(chǔ)兩種指令對(duì)存儲(chǔ)器進(jìn)行讀寫操作。ARM內(nèi)核采用多層次的存儲(chǔ)結(jié)構(gòu),在處理器與主存儲(chǔ)器之間加入CACHE,綜合了哈佛結(jié)構(gòu)和馮諾依曼結(jié)構(gòu)的優(yōu)點(diǎn)。ARM處理器的主流為32位,其主要特征如下:1)單周期操作 2)只是用加載/存儲(chǔ)指令訪問內(nèi)存 3)指令

6、長(zhǎng)度固定 4)三地址指令格式 5)指令流水線格式 6)低功耗設(shè)計(jì) ARM由三種指令集,分別是:1)ARM指令集 2)Thumb指令集 3)Thumb-2指令集2. 典型ARM處理器介紹ARM處理器分為5類,分別是:1)經(jīng)典ARM處理器 2)ARM Cortex嵌入式處理器 3)ARM Cortex實(shí)時(shí)嵌入式處理器 4)ARM Cortex應(yīng)用處理器 5)ARM專家處理器ARM Cortex處理器包括:1)Cortex-A 面向高端應(yīng)用的處理器 2)Cortex-R 面向?qū)崟r(shí)控制的處理器 3) Cortex-M 面向微控制器的處理器3. ARM處理器體系結(jié)構(gòu)ARM處理器的工作狀態(tài):1)ARM狀態(tài)

7、,即32位狀態(tài) 2)Thumb 狀態(tài),即16位狀態(tài) 3)調(diào)試狀態(tài)ARM處理器有7種工作模式,分別是1)用戶模式User 2)快速中斷模式FIQ 3)外部中斷模式IRQ 4)管理模式SVC 5)中止模式ABT 6)未定義指令模式UND 7)系統(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ǔ)器訪問

8、權(quán)限控制MPU是存儲(chǔ)器保護(hù)單元4. ARM處理器指令集指令的條件碼:EQ:相等NE:不相等CS:無符號(hào)數(shù)大于或等于CC:無符號(hào)數(shù)小于HI:無符號(hào)數(shù)大于LS:無符號(hào)數(shù)小于或等于GE:帶符號(hào)數(shù)大于或等于LT:帶符號(hào)數(shù)小于GT:帶符號(hào)數(shù)小于或等于LE:帶符號(hào)數(shù)小于或等于PL:正數(shù)或0塊拷貝尋址舉例:LDMIA R0,R1,R2,R5,R9 R1ßR0, R2ßR0+4, R3ßR0+8, R4ßR0+12STMIA R0,R1-R7 R0ßR1,R0+4ßR2, R0+8ßR3,R0+12ßR4,R0+16ßR

9、5程序狀態(tài)寄存器訪問指令舉例:MRS R0,CPSR 傳送CPSR中的值到R0MSR CPSR, R0 傳送R0的值到CPSRs5. ARM匯編語言程序設(shè)計(jì)意會(huì)三 第三章1. 嵌入式系統(tǒng)硬件組成概述最小系統(tǒng)的構(gòu)成:嵌入式處理器、存儲(chǔ)器、復(fù)位電路、電源電路、時(shí)鐘電路、調(diào)試測(cè)試接口典型嵌入式應(yīng)用系統(tǒng)的硬件組成:最小硬件系統(tǒng)、前向通道、后向通道、人機(jī)交互通道以及相互互聯(lián)通信通道。前向通道即輸入接口,由模擬量輸入接口和數(shù)字量輸入接口組成;后巷通道即輸出接口,由模擬輸出接口和數(shù)字輸出接口組成;人機(jī)交互通道即輸入輸出接口;2. 嵌入式處理芯片AMBA(Advanced Microcontroller Bu

10、s Architecture)先進(jìn)微控制器總線體系結(jié)構(gòu)AMBA規(guī)定了兩種類型的總線,分別是系統(tǒng)總線和外圍總線,通過橋接器進(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ǔ)器常用Flash ROM,片內(nèi)數(shù)據(jù)存儲(chǔ)器常用SRAM。3. 嵌入式系統(tǒng)的存儲(chǔ)器嵌入式系統(tǒng)的存儲(chǔ)器結(jié)構(gòu):嵌入式處理器(內(nèi)部L1/L2 Cache)、主存儲(chǔ)器(內(nèi)存)、外部存儲(chǔ)器(外存

11、),Cache由SRAM承擔(dān)MROM:掩膜只讀存儲(chǔ)器,出廠后信息確定,無法改變;PROM:一次可編程存儲(chǔ)器EPROM:紫外線可擦除的只讀存儲(chǔ)器EEPROM:電擦除可編程存儲(chǔ)器FLASH ROM:閃存;NOR FLASH 和NAND FLASH是流行的閃存新存儲(chǔ)器:FRAM(鐵電存儲(chǔ)器)、MRAM(磁性存儲(chǔ)器)存儲(chǔ)器容量=單元總數(shù)*數(shù)據(jù)位數(shù)/單元并行總線的存儲(chǔ)器帶寬=總線頻率*數(shù)據(jù)寬度/8*傳輸次數(shù)/總線周期串行總線的存儲(chǔ)器帶寬=總線頻率/104. I/O接口及常用的GPIOGPIO提供的輸入具有緩沖功能,輸出有鎖存功能IIC總線有兩條數(shù)據(jù)線,分別是數(shù)據(jù)線SDA和時(shí)鐘線SCL。SCL為高,SDA

12、由高變低時(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)不歸零。采用半雙

13、工差分方式傳輸數(shù)據(jù)。觸摸屏分為電阻式和電容式5. ARM內(nèi)核典型處理器芯片S3C2410是韓國三星公司制造的微處理器,以下都是S3C2410的有關(guān)介紹電源管理模塊有正常模式、慢速模式、休眠模式、掉電模式。任何情況下復(fù)位操作均進(jìn)入正常模式,在掉電模式和休眠模式下,只要有任何一個(gè)外部中斷EINT或者RTC時(shí)鐘中斷發(fā)生,均將返回到正常模式。總共由5個(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ù)脈沖周期為:t_

14、watchdog=1/(PCLK/(預(yù)分頻值+1)/分頻系數(shù)),計(jì)數(shù)初值為WTCON=T/t_watch_dog6. 嵌入式系統(tǒng)外部通信接口RS-485采用差分信號(hào)傳輸方式CAN總線也使用差分的方式傳輸四 第四章在uC/OS-II中,任務(wù)或者中斷服務(wù)可以通過事件控制模塊(ECB)相其他任務(wù)發(fā)出信號(hào)1. 嵌入式系統(tǒng)的軟件組成嵌入式系統(tǒng)的特點(diǎn):軟件與硬件一體化、軟件代碼時(shí)空效率要求高、軟件可剪裁、軟件應(yīng)用環(huán)境復(fù)雜、軟件開發(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)

15、用軟件的結(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)軟件。硬件抽象層(Hardware Abstract Layer HAL)和板極支持包(Board Support Package BSP)是嵌入式系統(tǒng)的底層軟件,引入HAL對(duì)硬件進(jìn)行抽象,通過硬件抽象層應(yīng)用編程接口(HAL API)向上提供服務(wù)。BSP在系統(tǒng)復(fù)位之后負(fù)責(zé)系統(tǒng)軟硬件環(huán)境的初始化,包括三個(gè)方面的內(nèi)容,一是系統(tǒng)復(fù)位時(shí)的硬件初始化,包括處理器芯片的初始化和電路板的初始化,二是為操作系統(tǒng)提供

16、硬件相關(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)行過程,一是讓嵌入式系統(tǒng)正常運(yùn)起來,與處理器體系結(jié)構(gòu)相關(guān)的硬件初始化和板極初始化等操

17、作通常在第一步完成,一般用匯編語言來寫。第二是實(shí)現(xiàn)操作系統(tǒng)加載的功能,用C語言實(shí)現(xiàn)。設(shè)備驅(qū)動(dòng)程序是指直接與硬件相互作用并控制硬件的軟件,是對(duì)硬件操作的抽象。2. 嵌入式操作系統(tǒng)實(shí)時(shí)系統(tǒng)(Real-Time System)是必須在有限和確定的時(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)完成,超過時(shí)限會(huì)引起重大的錯(cuò)誤軟實(shí)時(shí)任務(wù):超過時(shí)限不會(huì)引發(fā)致命錯(cuò)誤,而是造成任務(wù)的服務(wù)質(zhì)量下降準(zhǔn)實(shí)時(shí)任務(wù):通常允許偶爾錯(cuò)過最后時(shí)限,若超過時(shí)限,所進(jìn)行的操作或計(jì)算沒有任何意義。實(shí)時(shí)操作系統(tǒng)采用如下的機(jī)制來保持對(duì)實(shí)時(shí)任務(wù)的響

18、應(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)求開始到任務(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)的分類

19、:1)按實(shí)時(shí)性分硬實(shí)時(shí)操作系統(tǒng):如VxWorks、RTEMS、QNX、uC/OS-II、Nucleus;軟實(shí)時(shí)操作系統(tǒng):如WinCE、多種嵌入式Linux系統(tǒng)2)按開發(fā)方式:專門為嵌入式環(huán)境開發(fā)的嵌入式操作系統(tǒng)從通用計(jì)算機(jī)操作系統(tǒng)移植而來的嵌入式系統(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、BSD Unix、L

20、inux、MS-DOS、Windows 9x(Windows 95/98/ME)、Windows CE、Android操作系統(tǒng)。微內(nèi)核結(jié)構(gòu):操作系統(tǒng)僅僅將必須的基本功能放入內(nèi)核,其他功能在內(nèi)核之外。采用純粹微內(nèi)核的操作系統(tǒng)有AIX、Mach、Minix、VxWorks、QNX等。常見的嵌入式操作系統(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ò)通信和中斷處理。Nucleus PLUS:搶占式多任務(wù)商業(yè)操作系統(tǒng)內(nèi)核RTEMS:實(shí)時(shí)多處理器系統(tǒng)TinyOS:專門為硬件資源極為有限的無線傳感器網(wǎng)絡(luò)應(yīng)用而量

21、身定制的操作系統(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、Monta Vista Linux、Wind River Linux、RTAI、Xenom

22、ai。Android系統(tǒng)采用堆層式軟件架構(gòu),分為四層,從底層到高層分別是Linux內(nèi)核、系統(tǒng)運(yùn)行庫、應(yīng)用程序框架和應(yīng)用程序。其中,系統(tǒng)運(yùn)行庫由android運(yùn)行環(huán)境和組件庫兩部分組成。IOS操作系統(tǒng)架構(gòu)分為四個(gè)層次,分別是核心操作系統(tǒng)層、核心服務(wù)層、媒體層、觸控界面層。3. uC/OS-II嵌入式操作系統(tǒng)uC/OS-II的特點(diǎn):1)公開源碼的高質(zhì)量實(shí)時(shí)內(nèi)核2)可以移植3)可裁剪、可固化4)時(shí)間確定性5)多任務(wù)6)搶占式內(nèi)核7)多種系統(tǒng)服務(wù)uC/OS-II的源代碼主要有以下幾部分構(gòu)成:1) 系統(tǒng)核心2) 任務(wù)管理3) 時(shí)鐘管理4) 任務(wù)同步與任務(wù)間通信5) 內(nèi)存管理6) 處理器相關(guān)代碼在uC/O

23、S-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_STK TaskStkTASK_STK。uC/OS-II的任務(wù)處于五種狀態(tài)之一,分別是等待態(tài)、休眠態(tài)、就緒態(tài)、運(yùn)行態(tài)和被中斷態(tài)。休眠態(tài)指任務(wù)代碼駐留在內(nè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)也稱為

24、掛起,指正在運(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來定義。任務(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)核通過OSIntExit()判斷是否存在更高優(yōu)先級(jí)的就緒任務(wù)。利用宏OS_ENTER_CRITICAL()和OS_EXIT_CRITICAL()實(shí)現(xiàn)關(guān)中斷和開中斷。利用

25、函數(shù)OSSchedLock()和OSSchedUnLock()給調(diào)度器上鎖和解鎖。通過函數(shù)OSStart()開始任務(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來刪除自己函數(shù)OSTaskSuspend()可以掛起一個(gè)任務(wù),被掛起的任務(wù)只能等待其他的任務(wù)調(diào)用OSTaskResume()函數(shù)才能實(shí)現(xiàn)任務(wù)恢復(fù)函數(shù)OSTi

26、meTick()返回是否等待超時(shí)或等待事件的任務(wù)是否超時(shí)用UNIT32U OSTimeGet()獲得tick計(jì)數(shù)器的當(dāng)前值,可以調(diào)用OSTimeSet()改變tick計(jì)數(shù)器的當(dāng)前值。通過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()無等待的請(qǐng)求信號(hào)量由OSSenQuery()查詢信號(hào)量狀態(tài)調(diào)用OSInit()進(jìn)行內(nèi)核初始化五 第五章1. 開發(fā)嵌入式系統(tǒng)的基礎(chǔ)知識(shí)(1) 嵌入式系統(tǒng)的開發(fā)過程

27、1) 需求分析與規(guī)格說明2) 系統(tǒng)設(shè)計(jì):根據(jù)規(guī)格說明書中所描述的系統(tǒng)需要實(shí)現(xiàn)的功能,確定如何實(shí)現(xiàn)這些功能的硬件和軟件結(jié)構(gòu)。3) 構(gòu)件設(shè)計(jì):設(shè)計(jì)或者選擇符合系統(tǒng)結(jié)構(gòu)和規(guī)格說明中所需要的具體構(gòu)件,有通用的構(gòu)件,如CPU、存儲(chǔ)器芯片,也有專用的構(gòu)件,如AX88796(不知道是什么玩意)4) 系統(tǒng)集成與測(cè)試(2) 嵌入式系統(tǒng)的開發(fā)平臺(tái)與工具嵌入式系統(tǒng)的開發(fā)特點(diǎn)1) 使用宿主機(jī)-目標(biāo)機(jī)的開發(fā)架構(gòu)2) 與底層硬件控制程序的關(guān)系密切3) 軟硬件資源受到限制4) 需要固化程序IDE(Integrated Development Environment):集成開發(fā)環(huán)境(3) 嵌入式系統(tǒng)的調(diào)試四種調(diào)試技術(shù):1)

28、在線仿真器(In-Circuit Emulator ICE):ICE具有與索要開發(fā)的嵌入式系統(tǒng)相同的嵌入式處理器,進(jìn)行調(diào)試時(shí),用在線仿真器取代被調(diào)試系統(tǒng)的處理器。2) 片上調(diào)試技術(shù)JTAG3) 駐留監(jiān)控軟件調(diào)試:使用駐留監(jiān)控軟件(Resident Monitors),即固化在目標(biāo)機(jī)ROM中的程序,在目標(biāo)機(jī)中運(yùn)行。4) 指令集模擬器(Instruction Set Simulator ISS)在宿主機(jī)上模擬應(yīng)用程序在目標(biāo)機(jī)上潤興行為的一個(gè)軟件工具。主要應(yīng)用于沒有目標(biāo)機(jī)開發(fā)板硬件、有開發(fā)板硬件,但使用開發(fā)板成本高、被調(diào)試的程序模塊不需要在實(shí)際開發(fā)板上執(zhí)行、對(duì)模塊代碼進(jìn)行語法檢查、避免因?qū)τ布皇煜?/p>

29、而在調(diào)試硬件方面耗費(fèi)過多精力。常用的兩種指令集模擬器:ARMulator、SkyEye2. 系統(tǒng)開發(fā)工具軟件(1) ADS1.2工具軟件(ARM Developer Suite):支持開發(fā)的嵌入式應(yīng)用軟件通常是無操作系統(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)試信息,用于在開發(fā)過程中使用;2) Release:生成的輸出文件中不包括調(diào)試信息,用于生成實(shí)

30、際發(fā)行的軟件3) DebugRel:生成的輸出文件包含了基本的調(diào)試信息。當(dāng)?shù)刂酚成潢P(guān)系比較簡(jiǎn)單時(shí),使用編譯、連接選項(xiàng)來確定輸入文件的連接順序當(dāng)?shù)刂酚成潢P(guān)系比較復(fù)雜時(shí),使用scatter(分散加載)格式的文件來確定輸入文件的連接順序。連接中的地址映射:ADS把編譯后的目標(biāo)文件信息按照3種存儲(chǔ)區(qū)域類型進(jìn)行劃分,分別是:1) RO端段:代碼存儲(chǔ)區(qū)和常數(shù)存儲(chǔ)區(qū),具有只讀的性質(zhì)2) RW段:指初始值為非0的全局變量數(shù)據(jù)區(qū),具有可讀可寫的性質(zhì)3) ZI段:指初始值為0的全局變量數(shù)據(jù)區(qū),包括未初始化的全局變量,具有可讀可寫的性質(zhì)。下載時(shí)域和運(yùn)行時(shí)域:下載時(shí)域是下載時(shí)的存儲(chǔ)空間;運(yùn)行時(shí)域是運(yùn)行時(shí)的存儲(chǔ)空間。1

31、) simple連接類型:應(yīng)用于地址映射簡(jiǎn)單的工程項(xiàng)目。RW base文本框配置的是RW字段的和ZI字段運(yùn)行時(shí)域的地址,輸入的地址值必須是字對(duì)準(zhǔn)的,即能被4整除。2) 對(duì)地址映射關(guān)系較為復(fù)雜的項(xiàng)目,使用scatter連接類型,需要提供一個(gè)scatter格式的文件(.scf)。配置文件是一個(gè)文本文件,使用BNF語法來進(jìn)行描述。在scatter類型下,下載時(shí)域的語法結(jié)構(gòu)如下:Load_name Base_Add Attribute sizeLoad_name是下載時(shí)域的名稱,是下載時(shí)域的唯一標(biāo)識(shí)。Base_Add是下載時(shí)域的首地址,Attribute是下載時(shí)域的數(shù)屬性,可省略。size是下載時(shí)域的

32、容量大小。在scatter類型下,運(yùn)行時(shí)域的描述語法結(jié)構(gòu)如下:Exec_name Base_Add Attribute SizeExec_name是運(yùn)行時(shí)域的名稱。屬性可省略。在scatter類型下,輸入端的描述結(jié)構(gòu)如下:*代表若干個(gè)任意字符,?代表一個(gè)任意字符Load_1 0x0000 0x8000Exec_1 0x0000 0x8000*(+RO)Exec_2 0x10000 0x6000*(+RW,+ZI)上述是一個(gè)簡(jiǎn)單的配置文件,定義了一個(gè)下載時(shí)域,名稱為L(zhǎng)oad_1,首地址是0x0000,域的容量是0x8000,定義了兩個(gè)運(yùn)行時(shí)域,第一個(gè)名稱為Exec_1,首地址為0x0000,容量

33、為0x8000,域中包含了所有的代碼和常數(shù),即包含了所有RO屬性的輸入段。第二個(gè)域中包含了所有的RW、ZI屬性的輸入段。(2) RVDS(RealView Development Suite)要使用RVDS來調(diào)試程序,必須使用RealView-ICE仿真器RVDS的功能模塊包括工程管理器(IDE)、編譯鏈接器(RVCT)、調(diào)試器(RVD)和指令集仿真器(RVISS)等。RVDS能夠記錄ARM CPU從開始執(zhí)行程序到停止執(zhí)行程序這段時(shí)間所執(zhí)行的所有操作,稱為Trace功能;而Profile功能指RVDS可以對(duì)Trace功能所記錄的內(nèi)容進(jìn)行性能分析。(3) GNU(GNUs Not Unix)是一

34、種常用于基于Linux操作系統(tǒng)的嵌入式軟件的工具套件的簡(jiǎn)稱。GCC是GNU開發(fā)工具套件中的核心工具軟件,是一種針對(duì)linux操作系統(tǒng)環(huán)境下運(yùn)行程序的編譯工具。它由源文件生成可執(zhí)行文件的過程是預(yù)處理,編譯,匯編,連接。匯編階段,生成二進(jìn)制目標(biāo)文件,以為文件的結(jié)尾。Linux操作系統(tǒng)中的可執(zhí)行文件沒有統(tǒng)一的文件后綴,按文件的屬性來進(jìn)行區(qū)分,若GCC生成可執(zhí)行文件時(shí)沒有指定文件名,則GCC生成一個(gè)名為a.out的可執(zhí)行文件。GCC所規(guī)定的文件后綴與文件類型的對(duì)應(yīng)關(guān)系:.c:用C語言編寫的源程序文件.a:由目標(biāo)文件構(gòu)成的源文件.C、.cc、.cxx:用C+語言編寫的源文件.h:頭文件,可以被其他源文件

35、包含.i:已經(jīng)預(yù)處理過的C語言編寫的源程序文件.ii:已經(jīng)過預(yù)處理的C+語言編寫的源程序文件.o:編譯及匯編后生成的目標(biāo)文件.s:編譯后生成的匯編語言程序.S:匯編語言編寫的源文件程序。GCC的命令及參數(shù):基本命令格式為gcc options filenames,其中,options代表編譯命令所需要的參數(shù),filename表示命令中所涉及到的文件名稱。針對(duì)不同的嵌入式處理器,GCC的命令格式不同,如針對(duì)ARM,GCC基本命令格式為:arm-linux-gcc options filenamesGCC命令的參數(shù)(針對(duì)ARM)-c:僅完成編譯操作而不進(jìn)行編譯操作,編譯器把輸入的文件生成后綴為.o

36、的目標(biāo)文件-E:僅完成預(yù)處理操作而不進(jìn)行后續(xù)處理操作,生成后綴為i的文件-S:僅完成預(yù)處理操作、編譯操作而不進(jìn)行后續(xù)操作,輸出后綴為.s的文件-o filename_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)化編譯-I dirname:將目錄名為dirname的目錄加入到源程序頭文件的目錄列表中-L dirname: 將目錄為dirname的目錄加入到庫文件的目錄列表中假設(shè)源文件名稱為test.c,以下是幾個(gè)常見的GCC編譯命令:arm-linux-gcc-o test test.c:生成文件名為test的輸出文件Arm-linux-gcc-c-o test.o test.c:生成文件名為test.o的目標(biāo)文件Arm-linux-gcc-S-o test.s test.c:生成文件名為te

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論