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

下載本文檔

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

文檔簡介

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 字符集和換碼,共有128 個(gè)字符,一個(gè)字

2、符占一個(gè)字節(jié)。我國目前廣泛使用的漢字編碼國家標(biāo)準(zhǔn)有GB2312 和 GB18030ASCII 碼,即美國標(biāo)準(zhǔn)信息交GB2312 只有 6763 個(gè)漢字,不夠用GB18030 字符集與國際標(biāo)準(zhǔn)UCS/Unicode字符集基本兼容。GB18030采用不等長的編碼方法,單字節(jié)編碼表示ASCII 碼,雙字節(jié)編碼表示漢字,與GB2312 保持向下兼容,四字節(jié)編碼表示其他字符Unicode 最新版本是 6.3。UCS/Unicode 在計(jì)算機(jī)中具體實(shí)現(xiàn)時(shí)采用不同的編碼方案,最常用的是 UTF-8 和 UTF-16,UTF-8采用的是單字節(jié)可變長編碼; UTF-16 采用的是雙字節(jié)可變長編碼文本的類型可以分

3、為簡單文本、豐富格式文本、超文本圖像的數(shù)據(jù)量 =圖像水平分辨率 * 圖像垂直分辨率 * 像素深度 /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è)

4、終端都有自己唯一的標(biāo)識(shí),稱為物理地址或MAC 地址, 在發(fā)送的每一幀數(shù)據(jù)中,必須包含自己的MAC 地址和接收終端的MAC 地址3)IP 協(xié)議定義了主機(jī)的概念,所有主機(jī)及使用一種統(tǒng)一格式的地址標(biāo)識(shí),稱為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 段不使用 )IP 地址。B類IP段128.0.0.0到 191.255.255.255C類 IP段192.0.0.0到 223.255.

5、255.255XP默認(rèn)分配的子網(wǎng)掩碼每段只有255或 0A 類的默認(rèn)子網(wǎng)掩碼255.0.0.0一個(gè)子網(wǎng)最多可以容納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é)構(gòu),按存儲(chǔ)機(jī)制可以分為馮諾依曼結(jié)構(gòu)及哈佛結(jié)構(gòu),按字長可以分為8位、 16 位、 32位等精簡指令集結(jié)構(gòu)采用加載和存儲(chǔ)兩種指令對(duì)存儲(chǔ)器進(jìn)行讀寫操作。ARM 內(nèi)核采用多層次的存儲(chǔ)結(jié)構(gòu),在處理器與主存儲(chǔ)器之間加入CACHE,綜合了哈佛

6、結(jié)構(gòu)和馮諾依曼結(jié)構(gòu)的優(yōu)點(diǎn)。ARM 處理器的主流為 32 位,其主要特征如下:1)單周期操作2)只是用加載 / 存儲(chǔ)指令訪問內(nèi)存3)指令長度固定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)用的處理器

7、2)Cortex-R 面向?qū)崟r(shí)控制的處理器3 ) Cortex-M 面向微控制器的處理器3. 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

8、位的高字節(jié)存放在低地址中,低字節(jié)存放在高字節(jié)中;二是小端模式,即32 位的高字節(jié)存放在高地址中,低字節(jié)存放在低字節(jié)中。MMU ,即存儲(chǔ)器管理模塊,作用是進(jìn)行虛擬地址到物理地址的映射、存儲(chǔ)器訪問權(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, R9R1R0, R2 R0+4, R3R0+8,R4R0+12S

9、TMIA R0, R1-R7 R0R1, R0+4R2, R0+8 R3,R0+12R4, R0+16R5程序狀態(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)試測試接口典型嵌入式應(yīng)用系統(tǒng)的硬件組成:最小硬件系統(tǒng)、前向通道、 后向通道、人機(jī)交互通道以及相互互聯(lián)通信通道。前向通道即輸入接口,由模擬量輸入接口和數(shù)字量輸入接口組成;后巷通道即輸出接口,由模擬輸出接口和數(shù)字輸出接口

10、組成;人機(jī)交互通道即輸入輸出接口;2.嵌入式處理芯片AMBA( Advanced Microcontroller Bus 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ǔ)器常用SR

11、AM。3.嵌入式系統(tǒng)的存儲(chǔ)器嵌入式系統(tǒng)的存儲(chǔ)器結(jié)構(gòu):嵌入式處理器器(外存), Cache 由 SRAM 承擔(dān)(內(nèi)部L1/L2 Cache)、主存儲(chǔ)器(內(nèi)存) 、外部存儲(chǔ)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ǔ)

12、器帶寬 =總線頻率 /104. I/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í),高位在前,低

13、位在后UART:常用于全雙工串行異步通信,發(fā)數(shù)據(jù)時(shí),低位在前,高位在后USB:最多可以連接127 個(gè)設(shè)備。 USB系統(tǒng)由 USB硬件和 USB軟件組成。硬件中的主控制器包括一個(gè)根集線器,傳輸時(shí)采樣翻轉(zhuǎn)不歸零。采用半雙工差分方式傳輸數(shù)據(jù)。觸摸屏分為電阻式和電容式5. ARM 內(nèi)核典型處理器芯片S3C2410是韓國三星公司制造的微處理器,以下都是S3C2410的有關(guān)介紹電源管理模塊有正常模式、慢速模式、休眠模式、掉電模式。任何情況下復(fù)位操作均進(jìn)入正常模式,在掉電模式和休眠模式下, 只要有任何一個(gè)外部中斷 EINT或者 RTC時(shí)鐘中斷發(fā)生,均將返回到正常模式??偣灿?5 個(gè) 16 位定時(shí)器timer

14、 , 4 個(gè)具備 PWM 的功能。定時(shí)器輸入時(shí)鐘頻率=PCLK/(預(yù)分頻值 +1) * 時(shí)鐘因子有三個(gè) UART,UBRDIV=INT( UCLK/(波特率 *16 )-1,UCLK可以是 PCLK,也可以是UEXTCLK??撮T狗定時(shí)器的技術(shù)脈沖周期為: t_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)的軟件組

15、成嵌入式系統(tǒng)的特點(diǎn):軟件與硬件一體化、軟件代碼時(shí)空效率要求高、軟件可剪裁、軟件應(yīng)用環(huán)境復(fù)雜、軟件開發(fā)難度大、軟件面向用戶、面向產(chǎn)品、面向應(yīng)用、軟件產(chǎn)業(yè)高度分散、軟件具有較長的生命周期。嵌入式系統(tǒng)的軟件結(jié)構(gòu):簡單的輪詢結(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)軟件。硬件抽象層( Hardware Abstract Layer HAL)和板極支持包(Board Support P

16、ackage 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)提供硬件相關(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ù)、建立上層軟件

17、運(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)的硬件初始化和板極初始化等操作通常在第一步完成,一般用匯編語言來寫。第二是實(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)鍵特

18、性: 1)時(shí)間約束性 2)可預(yù)測性 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ù)的響應(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í)間,從事件請(qǐng)求開始到任務(wù)完成的時(shí)間間隔。除此之外,還有以下的幾點(diǎn):即系統(tǒng)1)中斷延遲時(shí)間:從接收到可屏蔽中斷請(qǐng)求到操作系

19、統(tǒng)做出響應(yīng)并轉(zhuǎn)入中斷服務(wù)程序所需要的最長時(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)按開發(fā)方式:專門為嵌入式環(huán)境開發(fā)的嵌入式操作系統(tǒng)從通用計(jì)算機(jī)操作系統(tǒng)移植而來的嵌入式系統(tǒng)3)按商業(yè)模式:免費(fèi)的嵌入式操

20、作系統(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、Linux、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 、 VxWor

21、ks、 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)用而量身定制的操作系統(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)的組成部件,

22、理器 4)虛擬文件系統(tǒng) 5)網(wǎng)絡(luò)接口包括 1)初始化部件 2)進(jìn)程調(diào)度器 3)內(nèi)存管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、Xenomai 。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è)層次,分別是核心

23、操作系統(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/OS-II 中,任務(wù)是操作系統(tǒng)的基本調(diào)度單位, 由操作系統(tǒng)內(nèi)核管理。 任務(wù)由三部分構(gòu)成,分別是任務(wù)的程序代碼、任務(wù)堆棧和任務(wù)控制塊。每一個(gè)任務(wù)的棧空間大小不同,在文件OS_CPU.H中定義了一個(gè)數(shù)據(jù)類型OS_STK,在應(yīng)

24、用程序中定義任務(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)也稱為掛起, 指正在運(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í),

25、 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ù)。采用的是基于優(yōu)先級(jí)的任務(wù)調(diào)度。uC/OS-II內(nèi)核通過OSIntExit()判斷是否存在更高優(yōu)先級(jí)的就緒任務(wù)。利用宏 OS_ENTER_CRITICAL()和 OS_EXIT_CRITICAL()實(shí)現(xiàn)關(guān)中斷和開中斷。利用函數(shù)OSSchedLock()和 OSSchedUnLock()給調(diào)度器上鎖和解鎖。通過函數(shù)OSStart()開始任務(wù)調(diào)度之前創(chuàng)建函數(shù) OSTaskCreate()和 OSTask

26、CreateExt()都可以創(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ù) OSTimeTick()返回是否等待超時(shí)或等待事件的任務(wù)是否超時(shí)用 UNIT32U OSTimeGet()獲得 tick

27、計(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ā)過程1) 需求分析與規(guī)格說明2) 系統(tǒng)設(shè)計(jì):根據(jù)規(guī)格說明書中所描述的系統(tǒng)需要實(shí)現(xiàn)的功能,確

28、定如何實(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)集成與測試(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(3)嵌入式系統(tǒng)的調(diào)試):集成開發(fā)環(huán)境四種調(diào)試技術(shù):1) 在線仿真器( In-Circuit Emulator ICE):ICE具有與索要開

29、發(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 SimulatorISS)在宿主機(jī)上模擬應(yīng)用程序在目標(biāo)機(jī)上潤興行為的一個(gè)軟件工具。主要應(yīng)用于沒有目標(biāo)機(jī)開發(fā)板硬件、有開發(fā)板硬件,但使用開發(fā)板成本高、被調(diào)試的程序模塊不需要在實(shí)際開發(fā)板上執(zhí)行、對(duì)模塊代碼進(jìn)行語法檢查、避免因?qū)τ布皇煜ざ谡{(diào)試硬件方面耗費(fèi)過多精力。常用的兩種指令集模擬器:ARMulator 、

30、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í)際發(fā)行的軟件3) DebugRel:生成的輸出文件包含了基本的

31、調(diào)試信息。當(dāng)?shù)刂酚成潢P(guā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) simple 連接類型:應(yīng)用于地址映射簡

32、單的工程項(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_nameBase_AddAttribute size Load_name 是下載時(shí)域的名稱,是下載時(shí)域的唯一標(biāo)識(shí)。Base_Add 是下載時(shí)域的首地址,Attribute 是下載時(shí)域的數(shù)屬性,可省略。size 是下載時(shí)域的容量大小。在 s

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

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

35、nix)是一種常用于基于Linux 操作系統(tǒng)的嵌入式軟件的工具套件的簡稱。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ū)分,若成可執(zhí)行文件時(shí)沒有指定文件名,則 GCC生成一個(gè)名為 a.out 的可執(zhí)行文件。GCC生GCC所規(guī)定的文件后綴與文件類型的對(duì)應(yīng)關(guān)系:.c:用 C 語言編寫的源程序文件.a:由目標(biāo)文件構(gòu)成的源文件.C、.cc、 .cxx:用 C+語言編寫的源文

36、件.h:頭文件,可以被其他源文件包含.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)行編

37、譯操作,編譯器把輸入的文件生成后綴為-E:僅完成預(yù)處理操作而不進(jìn)行后續(xù)處理操作,生成后綴為i 的文件.o 的目標(biāo)文件-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 :生成文件名為test.s 的匯編語

溫馨提示

  • 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)論