




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、1嵌入式系統(tǒng)原理及應(yīng)用嵌入式系統(tǒng)原理及應(yīng)用第二講第二講 嵌入式系統(tǒng)的基礎(chǔ)知識嵌入式系統(tǒng)的基礎(chǔ)知識2本章提要本章提要嵌入式系統(tǒng)總體結(jié)構(gòu)嵌入式系統(tǒng)總體結(jié)構(gòu)嵌入式系統(tǒng)硬件基礎(chǔ)嵌入式系統(tǒng)硬件基礎(chǔ)嵌入式系統(tǒng)中斷管理與系統(tǒng)啟動嵌入式系統(tǒng)中斷管理與系統(tǒng)啟動嵌入式系統(tǒng)軟件基礎(chǔ)嵌入式系統(tǒng)軟件基礎(chǔ)3嵌入式系統(tǒng)組成嵌入式系統(tǒng)組成機(jī)械裝置機(jī)械裝置嵌入式嵌入式微處理微處理器器SDRAMROMI/OA/DD/A人機(jī)交互接口人機(jī)交互接口通用接口通用接口實(shí)時(shí)操作系統(tǒng)實(shí)時(shí)操作系統(tǒng)( ( RTOSRTOS ) )圖形用戶圖形用戶接口接口BSPBSP / / HAL HAL (板極支持包板極支持包/ /硬件抽象層硬件抽象層)任務(wù)管
2、理任務(wù)管理文件系統(tǒng)文件系統(tǒng)應(yīng)用程序應(yīng)用程序嵌入式計(jì)算機(jī)系統(tǒng)嵌入式計(jì)算機(jī)系統(tǒng)傳感器傳感器 1傳感器傳感器 2傳感器傳感器 N.驅(qū)動器驅(qū)動器 1驅(qū)動器驅(qū)動器 2驅(qū)動器驅(qū)動器 N.硬件層硬件層軟件層軟件層中間層中間層功能層功能層被控對象被控對象42.1 嵌入式系統(tǒng)的總體結(jié)構(gòu)嵌入式系統(tǒng)的總體結(jié)構(gòu)l目前所提及的嵌入式系統(tǒng)一般指嵌入式計(jì)算機(jī)系統(tǒng),目前所提及的嵌入式系統(tǒng)一般指嵌入式計(jì)算機(jī)系統(tǒng),主要包括:硬件層、中間層、系統(tǒng)軟件層和應(yīng)用層主要包括:硬件層、中間層、系統(tǒng)軟件層和應(yīng)用層4個(gè)部分。個(gè)部分。l嵌入式硬件主要包括提供嵌入式計(jì)算機(jī)正常運(yùn)行的最嵌入式硬件主要包括提供嵌入式計(jì)算機(jī)正常運(yùn)行的最小系統(tǒng)(如電源、系
3、統(tǒng)時(shí)鐘、復(fù)位電路、存儲器等)小系統(tǒng)(如電源、系統(tǒng)時(shí)鐘、復(fù)位電路、存儲器等)、通用、通用I/O口和一些外設(shè)及其它設(shè)備。嵌入式系統(tǒng)中口和一些外設(shè)及其它設(shè)備。嵌入式系統(tǒng)中間層又稱嵌入式硬件抽象層,如硬件驅(qū)動程序、系統(tǒng)間層又稱嵌入式硬件抽象層,如硬件驅(qū)動程序、系統(tǒng)啟動軟件等;嵌入式系統(tǒng)軟件層為應(yīng)用層提供系統(tǒng)服啟動軟件等;嵌入式系統(tǒng)軟件層為應(yīng)用層提供系統(tǒng)服務(wù),如操作系統(tǒng)、文件系統(tǒng)、圖形用戶接口等;而應(yīng)務(wù),如操作系統(tǒng)、文件系統(tǒng)、圖形用戶接口等;而應(yīng)用層主要是用戶應(yīng)用程序。用層主要是用戶應(yīng)用程序。 52.1.1 硬件層硬件層 嵌入式系統(tǒng)硬件通常指除被控對象之外的嵌入式嵌入式系統(tǒng)硬件通常指除被控對象之外的嵌入
4、式系統(tǒng)要完成其功能所具備的各種設(shè)備,由嵌入式處理系統(tǒng)要完成其功能所具備的各種設(shè)備,由嵌入式處理器、存儲器系統(tǒng)、通用設(shè)備接口(器、存儲器系統(tǒng)、通用設(shè)備接口(A/D、D/A、I/O等等)和一些擴(kuò)展外設(shè)組成。)和一些擴(kuò)展外設(shè)組成。l 嵌入式系統(tǒng)的硬件層是以嵌入式處理器為核心的嵌入式系統(tǒng)的硬件層是以嵌入式處理器為核心的l嵌入式系統(tǒng)外設(shè)是指為了實(shí)現(xiàn)系統(tǒng)功能而設(shè)計(jì)或提供的嵌入式系統(tǒng)外設(shè)是指為了實(shí)現(xiàn)系統(tǒng)功能而設(shè)計(jì)或提供的接口或設(shè)備接口或設(shè)備 62.1 嵌入式系統(tǒng)的總體結(jié)構(gòu)嵌入式系統(tǒng)的總體結(jié)構(gòu)2.1.2 中間層中間層 介于硬件層與系統(tǒng)軟件層之間,將硬件的細(xì)節(jié)進(jìn)行屏蔽,介于硬件層與系統(tǒng)軟件層之間,將硬件的細(xì)節(jié)進(jìn)
5、行屏蔽,便于操作系統(tǒng)調(diào)用,因此稱為為中間層,也稱硬件抽象層(便于操作系統(tǒng)調(diào)用,因此稱為為中間層,也稱硬件抽象層(Hardware Abstract Layer,HAL)或板級支持包()或板級支持包(Board Support Package)。具有硬件相關(guān)性和操作系統(tǒng)相關(guān)性特)。具有硬件相關(guān)性和操作系統(tǒng)相關(guān)性特點(diǎn)。點(diǎn)。7主要包括系統(tǒng)初始化和設(shè)備驅(qū)動程序主要包括系統(tǒng)初始化和設(shè)備驅(qū)動程序l系統(tǒng)初始化系統(tǒng)初始化(1)片級初始化:主要完成)片級初始化:主要完成CPU的初始化,包括設(shè)置的初始化,包括設(shè)置CPU的核的核心寄存器和控制寄存器,心寄存器和控制寄存器,CPU核心工作模式以及核心工作模式以及CPU
6、的局部總的局部總線模式等。線模式等。(2)板級初始化:完成)板級初始化:完成CPU以外的其它硬件設(shè)備的初始化。除以外的其它硬件設(shè)備的初始化。除此之外,還要設(shè)置某些軟件的數(shù)據(jù)結(jié)構(gòu)和參數(shù),為隨后的系統(tǒng)此之外,還要設(shè)置某些軟件的數(shù)據(jù)結(jié)構(gòu)和參數(shù),為隨后的系統(tǒng)級初始化和應(yīng)用程序的運(yùn)行建立硬件和軟件環(huán)境。級初始化和應(yīng)用程序的運(yùn)行建立硬件和軟件環(huán)境。(3)系統(tǒng)級初始化:這是一個(gè)以軟件初始化為主的過程,主要)系統(tǒng)級初始化:這是一個(gè)以軟件初始化為主的過程,主要是進(jìn)行操作系統(tǒng)初始化。是進(jìn)行操作系統(tǒng)初始化。8l硬件相關(guān)的設(shè)備驅(qū)動程序硬件相關(guān)的設(shè)備驅(qū)動程序 與初始化過程相反,硬件相關(guān)的設(shè)備驅(qū)動程序的初始與初始化過程相
7、反,硬件相關(guān)的設(shè)備驅(qū)動程序的初始化和使用通常是一個(gè)從高層到底層的過程?;褪褂猛ǔJ且粋€(gè)從高層到底層的過程。 BSP不直接使用設(shè)備驅(qū)動程序通常不直接使用設(shè)備驅(qū)動程序通常 與操作系統(tǒng)中通用的設(shè)備驅(qū)動程序關(guān)聯(lián)起來,在應(yīng)用與操作系統(tǒng)中通用的設(shè)備驅(qū)動程序關(guān)聯(lián)起來,在應(yīng)用中由通用的設(shè)備驅(qū)動程序調(diào)用,實(shí)現(xiàn)對硬件設(shè)備的操作中由通用的設(shè)備驅(qū)動程序調(diào)用,實(shí)現(xiàn)對硬件設(shè)備的操作92.1.3 系統(tǒng)軟件層系統(tǒng)軟件層 系統(tǒng)軟件由操作系統(tǒng)(系統(tǒng)軟件由操作系統(tǒng)(OS)、文件系統(tǒng)()、文件系統(tǒng)(FS)、圖)、圖形用戶接口(形用戶接口(GUI)、網(wǎng)絡(luò)系統(tǒng)()、網(wǎng)絡(luò)系統(tǒng)(NM)及通用組件)及通用組件模塊(如模塊(如TCP/IP協(xié)議
8、包)等組成。協(xié)議包)等組成。1RTOS是嵌入式應(yīng)用軟件的基礎(chǔ)和開發(fā)平臺是嵌入式應(yīng)用軟件的基礎(chǔ)和開發(fā)平臺2FS是操作系統(tǒng)用于明確磁盤或分區(qū)上的文件的方法是操作系統(tǒng)用于明確磁盤或分區(qū)上的文件的方法和數(shù)據(jù)結(jié)構(gòu);即在磁盤上組織文件的方法。和數(shù)據(jù)結(jié)構(gòu);即在磁盤上組織文件的方法。3GUI 是是 Graphical User Interface 的簡稱,即圖形的簡稱,即圖形用戶接口,準(zhǔn)確來說用戶接口,準(zhǔn)確來說 GUI 就是屏幕產(chǎn)品的視覺體驗(yàn)和就是屏幕產(chǎn)品的視覺體驗(yàn)和互動操作部分?;硬僮鞑糠帧?TCP/IP協(xié)議包簡稱協(xié)議包簡稱Ip Pack,IP Pack是是TCP/IP網(wǎng)絡(luò)網(wǎng)絡(luò)協(xié)議軟件,通常作為操作系統(tǒng)的
9、一個(gè)重要組成部分。協(xié)議軟件,通常作為操作系統(tǒng)的一個(gè)重要組成部分。102.1.4 功能層功能層 功能層又基于系統(tǒng)軟件開發(fā)的應(yīng)用軟件程序組成,功能層又基于系統(tǒng)軟件開發(fā)的應(yīng)用軟件程序組成,用來完成對被控對象的控制功能。直接與最終用戶交用來完成對被控對象的控制功能。直接與最終用戶交互,決定整個(gè)產(chǎn)品的成敗,是嵌入式軟件的核心部分互,決定整個(gè)產(chǎn)品的成敗,是嵌入式軟件的核心部分,根據(jù)用戶需求定做的。,根據(jù)用戶需求定做的。11本章提要本章提要嵌入式系統(tǒng)總體結(jié)構(gòu)嵌入式系統(tǒng)總體結(jié)構(gòu)嵌入式系統(tǒng)硬件基礎(chǔ)嵌入式系統(tǒng)硬件基礎(chǔ)嵌入式系統(tǒng)軟件基礎(chǔ)嵌入式系統(tǒng)軟件基礎(chǔ)嵌入式系統(tǒng)中斷管理與系統(tǒng)啟動嵌入式系統(tǒng)中斷管理與系統(tǒng)啟動12主
10、要從處理器和存儲器進(jìn)行介紹主要從處理器和存儲器進(jìn)行介紹l馮馮諾依曼體系結(jié)構(gòu)和哈佛體系結(jié)構(gòu)諾依曼體系結(jié)構(gòu)和哈佛體系結(jié)構(gòu)lCISCCISC與與RISCRISCl影響影響CPUCPU性能的因素性能的因素l存儲器系統(tǒng)存儲器系統(tǒng)2.2 嵌入式系統(tǒng)硬件基礎(chǔ)嵌入式系統(tǒng)硬件基礎(chǔ)13典型嵌入式系統(tǒng)基本組成硬件典型嵌入式系統(tǒng)基本組成硬件MPUMPU微處理器微處理器電源電源模塊模塊時(shí)鐘時(shí)鐘復(fù)位復(fù)位FlashFlashRAMRAMROMROMUSBUSBLCDLCDKeyboardKeyboard外圍電路外圍電路OtherOther外設(shè)外設(shè)141. 微處理器結(jié)構(gòu)微處理器結(jié)構(gòu) 處理器處理器控制單元控制單元指令寄存器指令
11、寄存器IR程序計(jì)數(shù)器程序計(jì)數(shù)器PC控制器控制器 存儲器存儲器I/O控制控制/狀態(tài)狀態(tài)程序存儲器程序存儲器數(shù)據(jù)存儲器數(shù)據(jù)存儲器數(shù)據(jù)通道數(shù)據(jù)通道數(shù)字邏輯單元數(shù)字邏輯單元寄存器寄存器R0R1數(shù)據(jù)通道數(shù)據(jù)通道數(shù)字邏輯單元數(shù)字邏輯單元寄存器寄存器R0Rn。典型的微處理器由控制單元、程序計(jì)數(shù)器(典型的微處理器由控制單元、程序計(jì)數(shù)器(PC)、)、指令寄存器(指令寄存器(IR)、數(shù)據(jù)通道、存儲器等組成)、數(shù)據(jù)通道、存儲器等組成 15指令執(zhí)行過程一般分為:指令執(zhí)行過程一般分為:l取指取指從存儲器中獲得下一條執(zhí)行的指令讀入指令寄存器從存儲器中獲得下一條執(zhí)行的指令讀入指令寄存器PC: 程序計(jì)數(shù)器程序計(jì)數(shù)器, 總是指
12、向下一條將要執(zhí)行的指令總是指向下一條將要執(zhí)行的指令I(lǐng)R: 指令寄存器,用于保持已取得指令指令寄存器,用于保持已取得指令l譯碼譯碼 解釋指令,決定指令的執(zhí)行意義解釋指令,決定指令的執(zhí)行意義l執(zhí)行執(zhí)行從存儲器向數(shù)據(jù)通道寄存器移動數(shù)據(jù)從存儲器向數(shù)據(jù)通道寄存器移動數(shù)據(jù)通過算術(shù)邏輯單元通過算術(shù)邏輯單元ALU進(jìn)行數(shù)據(jù)操作進(jìn)行數(shù)據(jù)操作l存儲存儲 從寄存器向存儲器寫數(shù)據(jù)從寄存器向存儲器寫數(shù)據(jù)2. 處理器指令執(zhí)行過程處理器指令執(zhí)行過程16(1)取指)取指l處理器從程序存儲器中取出指令處理器從程序存儲器中取出指令 處理器處理器控制單元控制單元IRload R0, M500 PC100控制器控制器 存儲器存儲器I/
13、O控制控制/狀態(tài)狀態(tài)load R0, M500100inc R1, R0101store M501, R110210.500501數(shù)據(jù)通道數(shù)據(jù)通道數(shù)字邏輯單元數(shù)字邏輯單元寄存器寄存器R0R117(2)譯碼)譯碼l解釋指令,決定指令的執(zhí)行意義解釋指令,決定指令的執(zhí)行意義 存儲器存儲器 處理器處理器控制單元控制單元IRload R0, M500 PC100控制器控制器I/O控制控制/狀態(tài)狀態(tài)load R0, M500100inc R1, R0101store M501, R110210.500501數(shù)據(jù)通道數(shù)據(jù)通道數(shù)字邏輯單元數(shù)字邏輯單元寄存器寄存器R0R118執(zhí)行執(zhí)行l(wèi)從存儲器向數(shù)據(jù)通道寄存器移
14、動數(shù)據(jù)從存儲器向數(shù)據(jù)通道寄存器移動數(shù)據(jù) 處理器處理器控制單元控制單元IRload R0, M500 PC100控制器控制器 存儲器存儲器I/O控制控制/狀態(tài)狀態(tài)load R0, M500100inc R1, R0101store M501, R110210.500501數(shù)據(jù)通道數(shù)據(jù)通道數(shù)字邏輯單元數(shù)字邏輯單元寄存器寄存器R0R119存儲存儲l將指令執(zhí)行結(jié)構(gòu)保存到存儲器中將指令執(zhí)行結(jié)構(gòu)保存到存儲器中 處理器處理器控制單元控制單元IRload R0, M500 PC100控制器控制器 存儲器存儲器I/O控制控制/狀態(tài)狀態(tài)load R0, M500100inc R1, R0101store M501
15、, R110210.500501數(shù)據(jù)通道數(shù)據(jù)通道數(shù)字邏輯單元數(shù)字邏輯單元寄存器寄存器R0R120l在一些微處理器上,如在一些微處理器上,如ARM系列處理器、系列處理器、DSP等,等,指令實(shí)現(xiàn)流水線作業(yè),指令過程按流水線的數(shù)目來指令實(shí)現(xiàn)流水線作業(yè),指令過程按流水線的數(shù)目來進(jìn)行劃分。如進(jìn)行劃分。如5級流水線的處理器將指令分級流水線的處理器將指令分5個(gè)階段個(gè)階段執(zhí)行。執(zhí)行。 213.3.微處理器的結(jié)構(gòu)體系微處理器的結(jié)構(gòu)體系 指令寄存器指令寄存器控制器控制器數(shù)據(jù)通道數(shù)據(jù)通道輸輸入入輸輸出出中央處理器中央處理器存儲器存儲器程序程序指令指令0 0指令指令1 1指令指令2 2指令指令3 3指令指令4 4數(shù)據(jù)
16、數(shù)據(jù)數(shù)據(jù)數(shù)據(jù)0 0數(shù)據(jù)數(shù)據(jù)1 1數(shù)據(jù)數(shù)據(jù)2 2地址地址/數(shù)據(jù)數(shù)據(jù)馮馮諾依曼體系結(jié)構(gòu)模型諾依曼體系結(jié)構(gòu)模型(1)按存儲結(jié)構(gòu)分:馮)按存儲結(jié)構(gòu)分:馮諾依曼體系結(jié)構(gòu)和哈佛體系結(jié)構(gòu)諾依曼體系結(jié)構(gòu)和哈佛體系結(jié)構(gòu) 馮馮諾伊曼結(jié)構(gòu)也稱普諾伊曼結(jié)構(gòu)也稱普林斯頓結(jié)構(gòu),是一種將程林斯頓結(jié)構(gòu),是一種將程序指令存儲器和數(shù)據(jù)存儲序指令存儲器和數(shù)據(jù)存儲器合并在一起的存儲器結(jié)器合并在一起的存儲器結(jié)構(gòu)。處理器,經(jīng)由同一個(gè)構(gòu)。處理器,經(jīng)由同一個(gè)總線傳輸來訪問程序和數(shù)總線傳輸來訪問程序和數(shù)據(jù)存儲器,程序指令和數(shù)據(jù)存儲器,程序指令和數(shù)據(jù)的寬度相同。據(jù)的寬度相同。 如如X86X86系列、系列、ARM7ARM7等等 223.3.微處理
17、器的結(jié)構(gòu)體系微處理器的結(jié)構(gòu)體系指令寄存指令寄存器器控制器控制器數(shù)據(jù)數(shù)據(jù)通道通道輸輸入入輸輸出出中央處中央處理器理器程序存程序存儲器儲器指令指令0指令指令1指令指令2數(shù)據(jù)存儲數(shù)據(jù)存儲器器數(shù)據(jù)數(shù)據(jù)0數(shù)據(jù)數(shù)據(jù)1數(shù)據(jù)數(shù)據(jù)2地地址址指指令令地地址址數(shù)數(shù)據(jù)據(jù)哈佛體系結(jié)構(gòu)哈佛體系結(jié)構(gòu) 哈佛結(jié)構(gòu)是一種將程哈佛結(jié)構(gòu)是一種將程序指令存儲和數(shù)據(jù)存儲分序指令存儲和數(shù)據(jù)存儲分開的存儲器結(jié)構(gòu),目的是開的存儲器結(jié)構(gòu),目的是為了減輕程序運(yùn)行時(shí)的訪為了減輕程序運(yùn)行時(shí)的訪存瓶頸。哈佛結(jié)構(gòu)的微處存瓶頸。哈佛結(jié)構(gòu)的微處理器通常具有較高的執(zhí)行理器通常具有較高的執(zhí)行效率。效率。 如如ARM9ARM9、TITI的的DSPDSP等等 233
18、.3.微處理器的結(jié)構(gòu)體系微處理器的結(jié)構(gòu)體系按指令類型可分為:復(fù)雜指令集(按指令類型可分為:復(fù)雜指令集(CISC)處理器和精簡)處理器和精簡指令集(指令集(RISC)處理器)處理器 CISCCISC:復(fù)雜指令集(:復(fù)雜指令集(Complex Instruction Set ComputerComplex Instruction Set Computer)l具有大量的指令和尋址方式,那么就需要更多的解釋器。具有大量的指令和尋址方式,那么就需要更多的解釋器。l8/28/2原則:原則:80%80%的程序只使用的程序只使用20%20%的指令的指令l大多數(shù)程序只使用少量的指令就能夠運(yùn)行。大多數(shù)程序只使用少
19、量的指令就能夠運(yùn)行。CISCCISC具有如下顯著特點(diǎn):具有如下顯著特點(diǎn):(1)(1) 指令格式不固定,指令長度不一致,操作數(shù)可多可少;指令格式不固定,指令長度不一致,操作數(shù)可多可少;(2)(2) 尋址方式復(fù)雜多樣,以利于程序的編寫;尋址方式復(fù)雜多樣,以利于程序的編寫;(3)(3) 采用微程序結(jié)構(gòu),執(zhí)行每條指令均需完成一個(gè)微指令序列;采用微程序結(jié)構(gòu),執(zhí)行每條指令均需完成一個(gè)微指令序列;(4)(4) 每條指令需要若干個(gè)機(jī)器周期才能完成,指令越復(fù)雜,花費(fèi)每條指令需要若干個(gè)機(jī)器周期才能完成,指令越復(fù)雜,花費(fèi)的機(jī)器周期越多的機(jī)器周期越多。24lRISC:精簡指令集(:精簡指令集(Reduced Inst
20、ruction Set Computer)l指令數(shù)目少,在通道中只包含最有用的指令指令數(shù)目少,在通道中只包含最有用的指令l執(zhí)行時(shí)間短,確保數(shù)據(jù)通道快速執(zhí)行每一條指令執(zhí)行時(shí)間短,確保數(shù)據(jù)通道快速執(zhí)行每一條指令l使使CPU硬件結(jié)構(gòu)設(shè)計(jì)變得更為簡單硬件結(jié)構(gòu)設(shè)計(jì)變得更為簡單l每條指令都采用標(biāo)準(zhǔn)字長每條指令都采用標(biāo)準(zhǔn)字長25CISC與與RISC的區(qū)別的區(qū)別 l從硬件角度來看從硬件角度來看CISC處理的是不等長指令集,它必處理的是不等長指令集,它必須對不等長指令進(jìn)行分割,因此在執(zhí)行單一指令的時(shí)須對不等長指令進(jìn)行分割,因此在執(zhí)行單一指令的時(shí)候需要進(jìn)行較多的處理工作。而候需要進(jìn)行較多的處理工作。而RISC執(zhí)行
21、的是等長執(zhí)行的是等長精簡指令集,精簡指令集,CPU在執(zhí)行指令的時(shí)候速度較快且性能在執(zhí)行指令的時(shí)候速度較快且性能穩(wěn)定。穩(wěn)定。 l從軟件角度來看,大型操作系統(tǒng)較適合運(yùn)行在支持從軟件角度來看,大型操作系統(tǒng)較適合運(yùn)行在支持CISC的處理器上。是我們所熟識的的處理器上。是我們所熟識的DOS、Windows操作系統(tǒng)。而實(shí)時(shí)操作系統(tǒng)大多運(yùn)行在支持操作系統(tǒng)。而實(shí)時(shí)操作系統(tǒng)大多運(yùn)行在支持RISC的的處理器上。處理器上。 264 提高提高CPU性能的方法性能的方法 影響影響CPU性能的因素:流水線、超標(biāo)量、緩存和總性能的因素:流水線、超標(biāo)量、緩存和總線。對于任何處理器來說,要提高其效率,在設(shè)計(jì)上線。對于任何處理器
22、來說,要提高其效率,在設(shè)計(jì)上都是要減少數(shù)據(jù)的等待時(shí)間,并且努力減少處理單元都是要減少數(shù)據(jù)的等待時(shí)間,并且努力減少處理單元的空閑時(shí)間。的空閑時(shí)間。27(1 1)流水線技術(shù))流水線技術(shù)流水線技術(shù):也就是將一個(gè)任務(wù)分解成為多個(gè)連續(xù)的流水線技術(shù):也就是將一個(gè)任務(wù)分解成為多個(gè)連續(xù)的子任務(wù),在處理前一個(gè)子任務(wù)的同時(shí)就開始準(zhǔn)備下一子任務(wù),在處理前一個(gè)子任務(wù)的同時(shí)就開始準(zhǔn)備下一個(gè)子任務(wù)的數(shù)據(jù)并進(jìn)行子處理器單元的初始化。個(gè)子任務(wù)的數(shù)據(jù)并進(jìn)行子處理器單元的初始化。譯碼譯碼取指取指執(zhí)行執(zhí)行addadd譯碼譯碼取指取指執(zhí)行執(zhí)行subsub譯碼譯碼取指取指執(zhí)行執(zhí)行cmpcmp時(shí)間時(shí)間AddAddSubSubCmpCmp
23、28(2) 超標(biāo)量執(zhí)行超標(biāo)量執(zhí)行超標(biāo)量執(zhí)行:超標(biāo)量執(zhí)行:就是在處理器內(nèi)部設(shè)置多個(gè)平行的處理就是在處理器內(nèi)部設(shè)置多個(gè)平行的處理單元,將多個(gè)相互無關(guān)的任務(wù)在這些處理部件中分別單元,將多個(gè)相互無關(guān)的任務(wù)在這些處理部件中分別進(jìn)行獨(dú)立處理。進(jìn)行獨(dú)立處理。執(zhí)行執(zhí)行1預(yù)取預(yù)取指令指令CACHE譯碼譯碼2譯碼譯碼1執(zhí)行執(zhí)行2執(zhí)行執(zhí)行1預(yù)取預(yù)取譯碼譯碼2譯碼譯碼1執(zhí)行執(zhí)行2流水流水線線1流水流水線線2數(shù)據(jù)數(shù)據(jù)29(3) 高速緩存(高速緩存(CACHE)1 1、為什么采用高速緩存、為什么采用高速緩存 微處理器的時(shí)鐘頻率比內(nèi)存速度提高快得多,高微處理器的時(shí)鐘頻率比內(nèi)存速度提高快得多,高速緩存可以提高內(nèi)存的平均性能。
24、速緩存可以提高內(nèi)存的平均性能。2 2、高速緩存的工作原理、高速緩存的工作原理 高速緩存是一種小型、快速的存儲器,它保存部高速緩存是一種小型、快速的存儲器,它保存部分主存內(nèi)容的拷貝。分主存內(nèi)容的拷貝。 CPU高高速速緩緩存存控控制制器器CACHE主存主存數(shù)據(jù)數(shù)據(jù)數(shù)據(jù)數(shù)據(jù)地址地址30l通常用靜態(tài)通常用靜態(tài)RAMRAM來設(shè)計(jì)來設(shè)計(jì)l因此,速度快但比較貴因此,速度快但比較貴l通常和處理器同在一個(gè)芯片上通常和處理器同在一個(gè)芯片上l高速緩存的操作方式高速緩存的操作方式: :l要求對主存儲器進(jìn)行訪問要求對主存儲器進(jìn)行訪問 ( (讀或?qū)懽x或?qū)? )l首先,檢查高速緩存是否有相應(yīng)的拷貝首先,檢查高速緩存是否有相
25、應(yīng)的拷貝l如果有,稱為高速緩存命中如果有,稱為高速緩存命中拷貝在緩存中,可拷貝在緩存中,可以快速訪問以快速訪問l如果沒有,稱為高速緩存失誤如果沒有,稱為高速緩存失誤拷貝沒在緩存中拷貝沒在緩存中,需要將該地址及其相鄰的多個(gè)地址的數(shù)據(jù)讀入高,需要將該地址及其相鄰的多個(gè)地址的數(shù)據(jù)讀入高速緩存速緩存31(4) 高速總線和總線橋高速總線和總線橋CPU低速設(shè)備低速設(shè)備橋橋數(shù)據(jù)數(shù)據(jù)高速總線高速總線存儲器存儲器高速設(shè)備高速設(shè)備低速設(shè)備低速設(shè)備低速總線低速總線325. 處理器信息存儲的字節(jié)順序處理器信息存儲的字節(jié)順序處理器信息存儲的字節(jié)順序主要分為大端存儲法和處理器信息存儲的字節(jié)順序主要分為大端存儲法和小端存儲
26、法小端存儲法 l大端模式大端模式u字?jǐn)?shù)據(jù)的高位字節(jié)存儲在低地址中字?jǐn)?shù)據(jù)的高位字節(jié)存儲在低地址中u字?jǐn)?shù)據(jù)的低字節(jié)則存放在高地址中字?jǐn)?shù)據(jù)的低字節(jié)則存放在高地址中u舉例:舉例:雙字節(jié)數(shù)雙字節(jié)數(shù)0 x1234以以big-endian的方式存在起始地址的方式存在起始地址0 x00002000中:中: | data |- address | 0 x12 |- 0 x00002000 | 0 x34 |- 0 x000020013124 2316 158 70 字地址字地址89101184567401230 低地址低地址 高地址高地址33l小端模式小端模式u低地址中存放字?jǐn)?shù)據(jù)的低字節(jié)低地址中存放字?jǐn)?shù)據(jù)的低字
27、節(jié)u高地址中存放字?jǐn)?shù)據(jù)的高字節(jié)高地址中存放字?jǐn)?shù)據(jù)的高字節(jié)l舉例,雙字節(jié)數(shù)舉例,雙字節(jié)數(shù)0 x12340 x1234以以little-endianlittle-endian的方式存在起始地的方式存在起始地址址0 x000020000 x00002000中:中:| data |- address| data |- address| 0 x34 |- 0 x00002000| 0 x34 |- 0 x00002000| 0 x12 |- 0 x00002001| 0 x12 |- 0 x000020013124 2316 158 70字地址字地址11109887654432100 低地址低地址 高地
28、址高地址342.2.2 存儲器系統(tǒng)存儲器系統(tǒng)1存儲器的分類存儲器的分類l按存儲介質(zhì)分類按存儲介質(zhì)分類半導(dǎo)體存儲器、磁表面存儲器、光表面存儲器半導(dǎo)體存儲器、磁表面存儲器、光表面存儲器l按存儲器的讀寫功能分類按存儲器的讀寫功能分類只讀存儲器(只讀存儲器(ROM)、隨機(jī)存儲器)、隨機(jī)存儲器(RAM)l按在微機(jī)系統(tǒng)中的作用分類按在微機(jī)系統(tǒng)中的作用分類主存儲器、輔助存儲器、高速緩沖存儲器主存儲器、輔助存儲器、高速緩沖存儲器35CPU內(nèi)部寄存器內(nèi)部寄存器高速緩存高速緩存片外高速存儲器片外高速存儲器(SRAM、SDRAM、DRAM)主存儲器主存儲器(FLASH、EEPROM、硬磁盤)、硬磁盤)外部存儲器外部
29、存儲器(磁盤、光盤、磁盤、光盤、CF卡、卡、SD卡卡)遠(yuǎn)程二級存儲器遠(yuǎn)程二級存儲器(分布式文件系統(tǒng)、分布式文件系統(tǒng)、WEB服務(wù)器服務(wù)器)2. 存儲器系統(tǒng)的層次結(jié)構(gòu)存儲器系統(tǒng)的層次結(jié)構(gòu)36為了解決為了解決CPU與主存儲器速度差所采取的措施有:與主存儲器速度差所采取的措施有:(1)CPU內(nèi)部設(shè)置多個(gè)通用寄存器內(nèi)部設(shè)置多個(gè)通用寄存器(2)采用多存儲模塊交叉存?。┎捎枚啻鎯δK交叉存取(3)采用高速緩沖存儲器()采用高速緩沖存儲器(Cache)37半導(dǎo)體存儲器半導(dǎo)體存儲器 半導(dǎo)體存儲器主要包括隨機(jī)存儲器半導(dǎo)體存儲器主要包括隨機(jī)存儲器RAM和只讀存和只讀存儲器兩類儲器兩類ROM38RAMRAM:隨機(jī)存取
30、存儲器,:隨機(jī)存取存儲器, SRAMSRAM:靜態(tài)隨機(jī)存儲器,:靜態(tài)隨機(jī)存儲器, DRAMDRAM:動態(tài)隨機(jī)存儲器:動態(tài)隨機(jī)存儲器 1 1)SRAMSRAM比比DRAMDRAM快快 2 2)SRAMSRAM比比DRAMDRAM耗電多耗電多 3 3)DRAMDRAM存儲密度比存儲密度比SRAMSRAM高得多高得多 4 4)DRAMDRAM需要周期性刷新需要周期性刷新ROMROM:只讀存儲器:只讀存儲器FLASHFLASH:閃存:閃存39(1 1)隨機(jī)存儲器)隨機(jī)存儲器RAMRAMl靜態(tài)靜態(tài)RAMRAMSRAM: Static RAMSRAM: Static RAMl存儲單元用觸發(fā)器來存儲數(shù)據(jù)位存
31、儲單元用觸發(fā)器來存儲數(shù)據(jù)位l要求要求6 6個(gè)晶體管個(gè)晶體管l需要電源保持?jǐn)?shù)據(jù)需要電源保持?jǐn)?shù)據(jù)l動態(tài)動態(tài)RAMRAMDRAM: Dynamic RAMDRAM: Dynamic RAMl存儲單元用存儲單元用MOSMOS晶體管來存儲數(shù)據(jù)晶體管來存儲數(shù)據(jù)位比位比SRAMSRAM更緊湊更緊湊l由于電容的泄漏,需要更新來保由于電容的泄漏,需要更新來保持?jǐn)?shù)據(jù)持?jǐn)?shù)據(jù)l典型的刷新頻率是典型的刷新頻率是15.625 us.15.625 us.l比比SRAMSRAM訪問更慢訪問更慢存儲器內(nèi)部結(jié)構(gòu)存儲器內(nèi)部結(jié)構(gòu)DataWDataSRAM刷刷 新新放放 大大 器器數(shù)數(shù) 據(jù)據(jù) 輸輸 入入 /輸輸 入入 線線C行行 選選
32、 擇擇 信信 號號列列 選選 擇擇 信信 號號T 40(2 2)只讀存儲器)只讀存儲器ROMROMEPROM: EPROM: 可擦除的可編程可擦除的可編程ROMROM 可編程部分是一個(gè)可編程部分是一個(gè)MOSMOS晶體管晶體管l晶體管有一個(gè)絕緣體包圍的晶體管有一個(gè)絕緣體包圍的“浮柵浮柵”l(a)(a)負(fù)電荷在源極和漏極之間負(fù)電荷在源極和漏極之間形成一個(gè)隧道形成一個(gè)隧道l(b) (b) 較大的正電壓在柵極使負(fù)較大的正電壓在柵極使負(fù)電荷移出隧道進(jìn)入柵極形成邏電荷移出隧道進(jìn)入柵極形成邏輯輯0 0l(c) (c) 擦除擦除紫外線在柵極表紫外線在柵極表面的照射使負(fù)電荷從柵極回到面的照射使負(fù)電荷從柵極回到隧
33、道保持邏輯隧道保持邏輯1 1l(d) EPROM(d) EPROM有一個(gè)有一個(gè)紫外線紫外線可以可以通過的石英窗通過的石英窗(d)(a)(b)源極源極漏極漏極+15V 源極源極 漏極漏極0V(c)源極源極漏極漏極浮柵浮柵5-30 min41EEPROM:EEPROM:電擦除的可編程電擦除的可編程ROMROMl電可編程和擦除電可編程和擦除(Programmed and erased (Programmed and erased electronically)electronically)l使用電壓比正常的高使用電壓比正常的高l能單個(gè)字進(jìn)行擦除和編程能單個(gè)字進(jìn)行擦除和編程l較好的寫入能力較好的寫入能
34、力(Better write ability)(Better write ability)l通過內(nèi)部電路提供較高電壓能在系統(tǒng)內(nèi)編程通過內(nèi)部電路提供較高電壓能在系統(tǒng)內(nèi)編程l由于寫入需經(jīng)過擦除和編程兩個(gè)步驟,因此寫入較慢由于寫入需經(jīng)過擦除和編程兩個(gè)步驟,因此寫入較慢l可重復(fù)擦除和編程數(shù)萬次可重復(fù)擦除和編程數(shù)萬次l存儲永久性和存儲永久性和EPROMEPROM相近相近( (大約大約1010年年) )l比比EPROMEPROM方便得多,但更貴方便得多,但更貴42快閃存儲器快閃存儲器(Flash Memory)(Flash Memory)lEEPROM的擴(kuò)展的擴(kuò)展l同樣利用浮柵原理同樣利用浮柵原理l具有和
35、具有和EEPROM的寫入能力和保存永久性的寫入能力和保存永久性l擦除更快擦除更快l每次可以擦除存儲器一塊區(qū)域,但每次可以擦除存儲器一塊區(qū)域,但EEPROM每次只能擦除每次只能擦除一個(gè)字一個(gè)字l每個(gè)塊通常幾千個(gè)字節(jié)每個(gè)塊通常幾千個(gè)字節(jié)l進(jìn)行單字寫入時(shí)可能更慢進(jìn)行單字寫入時(shí)可能更慢l必須先進(jìn)行整塊讀取后,對需修改的字修改更新后再整塊必須先進(jìn)行整塊讀取后,對需修改的字修改更新后再整塊寫入寫入l用在需要大量存儲數(shù)據(jù)在非易失性存儲器的嵌入式系用在需要大量存儲數(shù)據(jù)在非易失性存儲器的嵌入式系統(tǒng)統(tǒng)l如數(shù)碼相機(jī),機(jī)頂盒,移動電話等如數(shù)碼相機(jī),機(jī)頂盒,移動電話等l兩種主要的兩種主要的Flash Memory技術(shù)是
36、技術(shù)是NOR和和NAND結(jié)構(gòu)結(jié)構(gòu)432.2.3 處理器輸入輸出接口處理器輸入輸出接口 輸入輸出接口又稱輸入輸出接口又稱I/O接口,它是主機(jī)與外圍設(shè)接口,它是主機(jī)與外圍設(shè)備之間交互信息的連接口,它在主機(jī)和外圍設(shè)備備之間交互信息的連接口,它在主機(jī)和外圍設(shè)備之間的信息交換中起著橋梁和紐帶作用。之間的信息交換中起著橋梁和紐帶作用。1I/O接口與接口與CPU交換的信息類型交換的信息類型 輸入輸出通道與輸入輸出通道與CPU交換的信息類型有三種:交換的信息類型有三種:(1)數(shù)據(jù)信息:反映生產(chǎn)現(xiàn)場的參數(shù)及狀態(tài)的信息,)數(shù)據(jù)信息:反映生產(chǎn)現(xiàn)場的參數(shù)及狀態(tài)的信息,它包括數(shù)字量、開關(guān)量和模擬量。它包括數(shù)字量、開關(guān)量
37、和模擬量。(2)狀態(tài)信息:又叫做應(yīng)答信息、握手信息,它反)狀態(tài)信息:又叫做應(yīng)答信息、握手信息,它反映過程通道的狀態(tài),如準(zhǔn)備就緒信號等。映過程通道的狀態(tài),如準(zhǔn)備就緒信號等。(3)控制信息:用來控制過程通道的啟動和停止等)控制信息:用來控制過程通道的啟動和停止等信息,如三態(tài)門的打開和關(guān)閉、觸發(fā)器的啟動信息,如三態(tài)門的打開和關(guān)閉、觸發(fā)器的啟動等。等。442I/O的編址方式的編址方式 由于計(jì)算機(jī)系統(tǒng)一般都有多個(gè)過程輸入輸出通道,因此需由于計(jì)算機(jī)系統(tǒng)一般都有多個(gè)過程輸入輸出通道,因此需對每一個(gè)輸入輸出通道安排地址。對每一個(gè)輸入輸出通道安排地址。I/O口編址方式有兩種:口編址方式有兩種:(1)I/O與存儲
38、器統(tǒng)一編址方式與存儲器統(tǒng)一編址方式 這種編址方式又稱存儲器映像方式,它從存貯器空間劃出這種編址方式又稱存儲器映像方式,它從存貯器空間劃出一部分地址空間給過程通道,把過程通道的端口當(dāng)作存貯單元一部分地址空間給過程通道,把過程通道的端口當(dāng)作存貯單元一樣進(jìn)行訪問,對一樣進(jìn)行訪問,對I/O端口進(jìn)行輸入輸出操作跟對存儲單元進(jìn)端口進(jìn)行輸入輸出操作跟對存儲單元進(jìn)行讀寫操作方式相同,只是地址不同。行讀寫操作方式相同,只是地址不同。(2)I/O與存儲器獨(dú)立編址方式與存儲器獨(dú)立編址方式 這種編址方式將過程通道的端口地址單獨(dú)編址,有自己獨(dú)這種編址方式將過程通道的端口地址單獨(dú)編址,有自己獨(dú)立的過程通道地址空間,而不占
39、用存儲器地址空間。立的過程通道地址空間,而不占用存儲器地址空間。45本章提要本章提要嵌入式系統(tǒng)總體結(jié)構(gòu)嵌入式系統(tǒng)總體結(jié)構(gòu)嵌入式系統(tǒng)硬件基礎(chǔ)嵌入式系統(tǒng)硬件基礎(chǔ)嵌入式系統(tǒng)設(shè)計(jì)方法嵌入式系統(tǒng)設(shè)計(jì)方法嵌入式系統(tǒng)軟件基礎(chǔ)嵌入式系統(tǒng)軟件基礎(chǔ)462.3 嵌入式軟件基礎(chǔ)嵌入式軟件基礎(chǔ) 嵌入式系統(tǒng)軟件根據(jù)嵌入式開發(fā)的模式分為:底層軟件、操嵌入式系統(tǒng)軟件根據(jù)嵌入式開發(fā)的模式分為:底層軟件、操作系統(tǒng)和應(yīng)用軟件。作系統(tǒng)和應(yīng)用軟件。1. 底層軟件底層軟件l底層軟件是指直接和硬件打交道的程序,具體地講是對處理器的共有寄底層軟件是指直接和硬件打交道的程序,具體地講是對處理器的共有寄存器和外設(shè)寄存器進(jìn)行操作的程序,如系統(tǒng)啟動
40、代碼,硬件初始化代碼存器和外設(shè)寄存器進(jìn)行操作的程序,如系統(tǒng)啟動代碼,硬件初始化代碼,設(shè)備驅(qū)動程序等。,設(shè)備驅(qū)動程序等。2. 嵌入式操作系統(tǒng)嵌入式操作系統(tǒng)l嵌入式操作系統(tǒng)嵌入式操作系統(tǒng)EOS(Embedded Operating System)是一種用途廣)是一種用途廣泛的系統(tǒng)軟件,過去它主要應(yīng)用于工業(yè)控制和國防系統(tǒng)領(lǐng)域。泛的系統(tǒng)軟件,過去它主要應(yīng)用于工業(yè)控制和國防系統(tǒng)領(lǐng)域。EOS負(fù)責(zé)負(fù)責(zé)嵌入系統(tǒng)的全部軟、硬件資源的分配、調(diào)度工作,控制、協(xié)調(diào)并發(fā)活動嵌入系統(tǒng)的全部軟、硬件資源的分配、調(diào)度工作,控制、協(xié)調(diào)并發(fā)活動3. 嵌入式應(yīng)用軟件嵌入式應(yīng)用軟件l嵌入式應(yīng)用軟件是針對特定應(yīng)用領(lǐng)域,基于某一固定的硬
41、件平臺,用來嵌入式應(yīng)用軟件是針對特定應(yīng)用領(lǐng)域,基于某一固定的硬件平臺,用來達(dá)到用戶預(yù)期目標(biāo)的計(jì)算機(jī)軟件。由于用戶任務(wù)可能有時(shí)間和精度上的達(dá)到用戶預(yù)期目標(biāo)的計(jì)算機(jī)軟件。由于用戶任務(wù)可能有時(shí)間和精度上的要求,因此有些嵌入式應(yīng)用軟件需要特定嵌入式操作系統(tǒng)的支持。要求,因此有些嵌入式應(yīng)用軟件需要特定嵌入式操作系統(tǒng)的支持。47嵌入式軟件的特點(diǎn)嵌入式軟件的特點(diǎn)1. 嵌入式軟件具有獨(dú)特的實(shí)用性嵌入式軟件具有獨(dú)特的實(shí)用性 嵌入式軟件是為嵌入式系統(tǒng)服務(wù)的,這就要求它與外部硬嵌入式軟件是為嵌入式系統(tǒng)服務(wù)的,這就要求它與外部硬件和設(shè)備聯(lián)系緊密。件和設(shè)備聯(lián)系緊密。 2. 嵌入式軟件應(yīng)有靈活的適用性嵌入式軟件應(yīng)有靈活的
42、適用性 嵌入式軟件通常可以認(rèn)為是一種模塊化軟件,它應(yīng)該能非常嵌入式軟件通常可以認(rèn)為是一種模塊化軟件,它應(yīng)該能非常方便靈活的運(yùn)用到各種嵌入式系統(tǒng)中,而不能破壞或更改原有的方便靈活的運(yùn)用到各種嵌入式系統(tǒng)中,而不能破壞或更改原有的系統(tǒng)特性和功能。系統(tǒng)特性和功能。3. 程序代碼精簡程序代碼精簡 由于嵌入式系統(tǒng)本身的應(yīng)用特點(diǎn),具有小體積、存儲空間較由于嵌入式系統(tǒng)本身的應(yīng)用特點(diǎn),具有小體積、存儲空間較小、成本、功耗等要求限制,嵌入式軟件和大型機(jī)上的軟件相比小、成本、功耗等要求限制,嵌入式軟件和大型機(jī)上的軟件相比,具有代碼精簡、代碼量少、執(zhí)行效率高等特點(diǎn)。,具有代碼精簡、代碼量少、執(zhí)行效率高等特點(diǎn)。482.
43、3.2嵌入式軟件體系結(jié)構(gòu)嵌入式軟件體系結(jié)構(gòu) 本節(jié)將討論四種軟件結(jié)構(gòu):輪轉(zhuǎn)結(jié)構(gòu)(本節(jié)將討論四種軟件結(jié)構(gòu):輪轉(zhuǎn)結(jié)構(gòu)(round-robin)、帶中斷的輪轉(zhuǎn)結(jié)構(gòu)、函數(shù)隊(duì)列調(diào)度(、帶中斷的輪轉(zhuǎn)結(jié)構(gòu)、函數(shù)隊(duì)列調(diào)度(function-queue scheduling)結(jié)構(gòu)和實(shí)時(shí)操作系統(tǒng)()結(jié)構(gòu)和實(shí)時(shí)操作系統(tǒng)(real-time operating system)結(jié)構(gòu)。)結(jié)構(gòu)。 491. 輪詢結(jié)構(gòu)輪詢結(jié)構(gòu)l輪詢結(jié)構(gòu)是能想象得到的、最簡單的一種結(jié)構(gòu)。該結(jié)構(gòu)中不存輪詢結(jié)構(gòu)是能想象得到的、最簡單的一種結(jié)構(gòu)。該結(jié)構(gòu)中不存在中斷,主循環(huán)只是簡單地依次執(zhí)行函數(shù)調(diào)用。在中斷,主循環(huán)只是簡單地依次執(zhí)行函數(shù)調(diào)用。void m
44、ain() while(1) function1(); function2(); 優(yōu)點(diǎn):簡單,它沒有中斷,沒有共享數(shù)據(jù),無須考慮延遲時(shí)間優(yōu)點(diǎn):簡單,它沒有中斷,沒有共享數(shù)據(jù),無須考慮延遲時(shí)間 50缺點(diǎn):缺點(diǎn):l如果一個(gè)設(shè)備需要比微處理器在最壞情況下完成一個(gè)循如果一個(gè)設(shè)備需要比微處理器在最壞情況下完成一個(gè)循環(huán)的時(shí)間更短的響應(yīng)時(shí)間,那么這個(gè)系統(tǒng)將無法工作。環(huán)的時(shí)間更短的響應(yīng)時(shí)間,那么這個(gè)系統(tǒng)將無法工作。l即使所要求的響應(yīng)時(shí)間不是絕對的截止時(shí)間,當(dāng)有冗長即使所要求的響應(yīng)時(shí)間不是絕對的截止時(shí)間,當(dāng)有冗長的處理時(shí)系統(tǒng)也會工作得不好。的處理時(shí)系統(tǒng)也會工作得不好。l這種結(jié)構(gòu)很脆弱。即使能夠設(shè)法提高系統(tǒng)的性能
45、,從而這種結(jié)構(gòu)很脆弱。即使能夠設(shè)法提高系統(tǒng)的性能,從而因?yàn)樘幚硌h(huán)的速度足夠快而是微處理器滿足了所有的因?yàn)樘幚硌h(huán)的速度足夠快而是微處理器滿足了所有的需要,但是一旦增加一個(gè)額外的設(shè)備或者提出一個(gè)新的需要,但是一旦增加一個(gè)額外的設(shè)備或者提出一個(gè)新的中斷請求,就可能讓一切都崩潰。中斷請求,就可能讓一切都崩潰。主要應(yīng)用場合:主要應(yīng)用場合:l基于上述缺點(diǎn),輪轉(zhuǎn)結(jié)構(gòu)可能僅僅適用于非常簡單的裝基于上述缺點(diǎn),輪轉(zhuǎn)結(jié)構(gòu)可能僅僅適用于非常簡單的裝置,如數(shù)字手表和微波爐等。置,如數(shù)字手表和微波爐等。 512帶中斷的輪轉(zhuǎn)結(jié)構(gòu)帶中斷的輪轉(zhuǎn)結(jié)構(gòu) l在這種結(jié)構(gòu)中,中斷程序處理硬件特別緊急的需求,然后設(shè)置在這種結(jié)構(gòu)中,中斷
46、程序處理硬件特別緊急的需求,然后設(shè)置標(biāo)志,主循環(huán)輪詢這些標(biāo)志,然后根據(jù)這些需求進(jìn)行后續(xù)的處標(biāo)志,主循環(huán)輪詢這些標(biāo)志,然后根據(jù)這些需求進(jìn)行后續(xù)的處理。理。 BOOL fDeviceA=FALSE;BOOL fDeviceB=FALSE;BOOL fDeviceZ=FALSE;void interrupt vHandleDeviceA(void) fDeviceA=TRUE;void interrupt vHandleDeviceB(void) fDeviceB=TRUE;void interrupt vHandleDeviceB(void) fDeviceZ=TRUE;void main() w
47、hile (TRUE)if (fDeviceA) fDeviceA=FALSE;if (fDeviceB) fDeviceB=FALSE;if (fDeviceZ) fDeviceZ=FALSE; 52l與輪詢結(jié)構(gòu)相比這種結(jié)構(gòu)可對優(yōu)先級進(jìn)行更多的控制與輪詢結(jié)構(gòu)相比這種結(jié)構(gòu)可對優(yōu)先級進(jìn)行更多的控制。中斷程序可以獲得很快的響應(yīng),因?yàn)橛布闹袛嘈?。中斷程序可以獲得很快的響應(yīng),因?yàn)橛布闹袛嘈盘枙刮⑻幚砥魍V拐谔枙刮⑻幚砥魍V拐趍ain函數(shù)中執(zhí)行的任何操函數(shù)中執(zhí)行的任何操作,而轉(zhuǎn)去執(zhí)行中斷程序。作,而轉(zhuǎn)去執(zhí)行中斷程序。 輪詢結(jié)構(gòu)中的中斷優(yōu)先級別輪詢結(jié)構(gòu)中的中斷優(yōu)先級別 53l缺點(diǎn):缺點(diǎn): 中斷
48、程序與主程序中的數(shù)據(jù)共享問題,當(dāng)正在執(zhí)行中斷程序與主程序中的數(shù)據(jù)共享問題,當(dāng)正在執(zhí)行的主程序正在處理共享數(shù)據(jù)時(shí),被中斷程序中斷,進(jìn)而的主程序正在處理共享數(shù)據(jù)時(shí),被中斷程序中斷,進(jìn)而處理中斷程序,在中斷程序中有可能又對共享數(shù)據(jù)進(jìn)行處理中斷程序,在中斷程序中有可能又對共享數(shù)據(jù)進(jìn)行了相應(yīng)的操作,從而導(dǎo)致回到主程序時(shí),共享數(shù)據(jù)的值了相應(yīng)的操作,從而導(dǎo)致回到主程序時(shí),共享數(shù)據(jù)的值已經(jīng)發(fā)生了改變,導(dǎo)致意想不到的結(jié)果。已經(jīng)發(fā)生了改變,導(dǎo)致意想不到的結(jié)果。 543函數(shù)隊(duì)列調(diào)度函數(shù)隊(duì)列調(diào)度 l在這種結(jié)構(gòu)中,中斷程序在一個(gè)函數(shù)指針中添加一個(gè)函數(shù)指針在這種結(jié)構(gòu)中,中斷程序在一個(gè)函數(shù)指針中添加一個(gè)函數(shù)指針,以供,以供
49、main函數(shù)調(diào)用。主程序僅需要從該隊(duì)列中讀取相應(yīng)的函數(shù)調(diào)用。主程序僅需要從該隊(duì)列中讀取相應(yīng)的指針并且調(diào)用相關(guān)的函數(shù)。指針并且調(diào)用相關(guān)的函數(shù)。void interrupt vHandleDeviceA(void)/將functionA放入函數(shù)指針隊(duì)列中;void interrupt vHandleDeviceB(void)/將functionB放入函數(shù)指針隊(duì)列中;void functionA()void functionB()void main() while (TRUE) while(/函數(shù)指針隊(duì)列為空) /調(diào)用隊(duì)列中另一個(gè)函數(shù) 55l優(yōu)點(diǎn)優(yōu)點(diǎn):main可以根據(jù)任何可以達(dá)到目標(biāo)的優(yōu)先級方案來調(diào)
50、用函數(shù)可以根據(jù)任何可以達(dá)到目標(biāo)的優(yōu)先級方案來調(diào)用函數(shù),這樣任何需要更快響應(yīng)的任務(wù)代碼都可以被更早執(zhí)行。,這樣任何需要更快響應(yīng)的任務(wù)代碼都可以被更早執(zhí)行。為了做到這一點(diǎn),只需要在對函數(shù)指針進(jìn)行排隊(duì)的程序中為了做到這一點(diǎn),只需要在對函數(shù)指針進(jìn)行排隊(duì)的程序中對代碼進(jìn)行一點(diǎn)技巧性設(shè)計(jì)。對代碼進(jìn)行一點(diǎn)技巧性設(shè)計(jì)。l缺點(diǎn):缺點(diǎn):具有較低優(yōu)先級任務(wù)代碼的函數(shù)可能會有更差的響應(yīng)。具有較低優(yōu)先級任務(wù)代碼的函數(shù)可能會有更差的響應(yīng)。如果某個(gè)較低優(yōu)先級任務(wù)的代碼函數(shù)過長,就有可能影響如果某個(gè)較低優(yōu)先級任務(wù)的代碼函數(shù)過長,就有可能影響較高優(yōu)先級函數(shù)的響應(yīng)時(shí)間。較高優(yōu)先級函數(shù)的響應(yīng)時(shí)間。 564實(shí)時(shí)操作系統(tǒng)實(shí)時(shí)操作系統(tǒng)v
51、oid interrupt vHandleDeviceA(void)/設(shè)置信號設(shè)置信號X;void interrupt vHandleDeviceB(void)/設(shè)置信號設(shè)置信號Y;void Task1()void Task1() while (TRUE) void Task2() while (TRUE) 是在函數(shù)隊(duì)列調(diào)度結(jié)構(gòu)基礎(chǔ)上發(fā)展而來的一種結(jié)構(gòu)是在函數(shù)隊(duì)列調(diào)度結(jié)構(gòu)基礎(chǔ)上發(fā)展而來的一種結(jié)構(gòu)57l這種結(jié)構(gòu)和以前那些結(jié)構(gòu)的不同之處在于:這種結(jié)構(gòu)和以前那些結(jié)構(gòu)的不同之處在于:中斷程序和任務(wù)代碼之間的必要信號發(fā)送是由實(shí)時(shí)中斷程序和任務(wù)代碼之間的必要信號發(fā)送是由實(shí)時(shí)操作系統(tǒng)處理的,而并不需要使用共
52、享變量來達(dá)到操作系統(tǒng)處理的,而并不需要使用共享變量來達(dá)到這個(gè)目標(biāo)。這個(gè)目標(biāo)。在代碼中并沒有用循環(huán)來決定下一步要做什么。實(shí)在代碼中并沒有用循環(huán)來決定下一步要做什么。實(shí)時(shí)操作系統(tǒng)內(nèi)部的代碼可以決定什么任務(wù)代碼函數(shù)時(shí)操作系統(tǒng)內(nèi)部的代碼可以決定什么任務(wù)代碼函數(shù)可以運(yùn)行??梢赃\(yùn)行。實(shí)時(shí)操作系統(tǒng)可以在一個(gè)任務(wù)代碼程序運(yùn)行期間將實(shí)時(shí)操作系統(tǒng)可以在一個(gè)任務(wù)代碼程序運(yùn)行期間將其掛起,以便運(yùn)行另一個(gè)子程序。其掛起,以便運(yùn)行另一個(gè)子程序。 前兩點(diǎn)主要針對編程的方便性;而最后一點(diǎn)前兩點(diǎn)主要針對編程的方便性;而最后一點(diǎn)是實(shí)質(zhì)性的:使用實(shí)時(shí)操作系統(tǒng)結(jié)構(gòu)的系統(tǒng)不僅是實(shí)質(zhì)性的:使用實(shí)時(shí)操作系統(tǒng)結(jié)構(gòu)的系統(tǒng)不僅可以控制任務(wù)代碼的
53、響應(yīng)時(shí)間,還可以控制中斷可以控制任務(wù)代碼的響應(yīng)時(shí)間,還可以控制中斷程序的響應(yīng)時(shí)間。程序的響應(yīng)時(shí)間。 58不同軟件結(jié)構(gòu)的特點(diǎn)不同軟件結(jié)構(gòu)的特點(diǎn) l在輪詢機(jī)構(gòu)和函數(shù)隊(duì)列調(diào)度結(jié)構(gòu)中,一個(gè)任務(wù)代碼函數(shù)的響應(yīng)在輪詢機(jī)構(gòu)和函數(shù)隊(duì)列調(diào)度結(jié)構(gòu)中,一個(gè)任務(wù)代碼函數(shù)的響應(yīng)時(shí)間,取決于包括低優(yōu)先級任務(wù)子程序在內(nèi)的各個(gè)任務(wù)代碼子時(shí)間,取決于包括低優(yōu)先級任務(wù)子程序在內(nèi)的各個(gè)任務(wù)代碼子程序的長度。當(dāng)改變?nèi)我庖粋€(gè)子程序的時(shí)候,就有可能改變了程序的長度。當(dāng)改變?nèi)我庖粋€(gè)子程序的時(shí)候,就有可能改變了整個(gè)系統(tǒng)的響應(yīng)時(shí)間。而在實(shí)時(shí)操作系統(tǒng)結(jié)構(gòu)中,對于較低優(yōu)整個(gè)系統(tǒng)的響應(yīng)時(shí)間。而在實(shí)時(shí)操作系統(tǒng)結(jié)構(gòu)中,對于較低優(yōu)先級函數(shù)的改變通常不會影
54、響較高優(yōu)先級函數(shù)的響應(yīng)時(shí)間。先級函數(shù)的改變通常不會影響較高優(yōu)先級函數(shù)的響應(yīng)時(shí)間。 59軟件結(jié)構(gòu)的選擇軟件結(jié)構(gòu)的選擇 當(dāng)要為嵌入式系統(tǒng)選擇一種軟件結(jié)構(gòu)時(shí),一般按照當(dāng)要為嵌入式系統(tǒng)選擇一種軟件結(jié)構(gòu)時(shí),一般按照以下原則進(jìn)行:以下原則進(jìn)行:l選擇可以滿足響應(yīng)時(shí)間需求的最簡單的結(jié)構(gòu)。即使沒選擇可以滿足響應(yīng)時(shí)間需求的最簡單的結(jié)構(gòu)。即使沒有選擇一個(gè)復(fù)雜的軟件結(jié)構(gòu),僅僅是編寫嵌入式系統(tǒng)有選擇一個(gè)復(fù)雜的軟件結(jié)構(gòu),僅僅是編寫嵌入式系統(tǒng)軟件就很復(fù)雜了。軟件就很復(fù)雜了。l如果系統(tǒng)對于響應(yīng)時(shí)間的要求很高使得一個(gè)實(shí)時(shí)操作如果系統(tǒng)對于響應(yīng)時(shí)間的要求很高使得一個(gè)實(shí)時(shí)操作系統(tǒng)成為必須的,那就應(yīng)該使用實(shí)時(shí)操作系統(tǒng)結(jié)構(gòu)。系統(tǒng)成為必
55、須的,那就應(yīng)該使用實(shí)時(shí)操作系統(tǒng)結(jié)構(gòu)。大多數(shù)商業(yè)系統(tǒng)都提供相應(yīng)的工具集,方便編程人員大多數(shù)商業(yè)系統(tǒng)都提供相應(yīng)的工具集,方便編程人員對應(yīng)用程序的開發(fā)和調(diào)試。對應(yīng)用程序的開發(fā)和調(diào)試。l如果對一個(gè)系統(tǒng)有意義的話,可以將這幾種結(jié)構(gòu)結(jié)合如果對一個(gè)系統(tǒng)有意義的話,可以將這幾種結(jié)構(gòu)結(jié)合起來使用。起來使用。60本章提要本章提要嵌入式系統(tǒng)總體結(jié)構(gòu)嵌入式系統(tǒng)總體結(jié)構(gòu)嵌入式系統(tǒng)硬件基礎(chǔ)嵌入式系統(tǒng)硬件基礎(chǔ)嵌入式系統(tǒng)軟件基礎(chǔ)嵌入式系統(tǒng)軟件基礎(chǔ)嵌入式系統(tǒng)中斷管理與系統(tǒng)啟動嵌入式系統(tǒng)中斷管理與系統(tǒng)啟動612.4 中斷管理與系統(tǒng)啟動中斷管理與系統(tǒng)啟動2.4.1中斷基礎(chǔ)知識中斷基礎(chǔ)知識 中斷和輪詢方式不一樣,在中斷執(zhí)行完成后需要
56、恢中斷和輪詢方式不一樣,在中斷執(zhí)行完成后需要恢復(fù)被中斷的程序。復(fù)被中斷的程序。 1保存上下文和恢復(fù)上下文保存上下文和恢復(fù)上下文 在中斷處理的前后需要對處理器被中斷中止的現(xiàn)場在中斷處理的前后需要對處理器被中斷中止的現(xiàn)場進(jìn)行保護(hù)和恢復(fù),通常稱為壓棧和出棧。保護(hù)現(xiàn)場的目進(jìn)行保護(hù)和恢復(fù),通常稱為壓棧和出棧。保護(hù)現(xiàn)場的目的就是將當(dāng)前程序處理的數(shù)據(jù)、程序執(zhí)行被中斷的位置的就是將當(dāng)前程序處理的數(shù)據(jù)、程序執(zhí)行被中斷的位置、工作狀態(tài)等保存起來以便于中斷返回能繼續(xù)正常執(zhí)行、工作狀態(tài)等保存起來以便于中斷返回能繼續(xù)正常執(zhí)行 622數(shù)據(jù)共享問題數(shù)據(jù)共享問題 在使用中斷中都會遇到這樣一個(gè)問題:中斷程序可在使用中斷中都會遇
57、到這樣一個(gè)問題:中斷程序可能會與用戶所寫的其他任務(wù)代碼通信。能會與用戶所寫的其他任務(wù)代碼通信。 通常來講,要保證微處理器的實(shí)時(shí)性和中斷的及時(shí)通常來講,要保證微處理器的實(shí)時(shí)性和中斷的及時(shí)響應(yīng),必須要求中斷服務(wù)程序所占時(shí)間盡可能短。如果響應(yīng),必須要求中斷服務(wù)程序所占時(shí)間盡可能短。如果把微處理器所做的工作全部放到中斷程序中去做既不可把微處理器所做的工作全部放到中斷程序中去做既不可能也不合算。因此,中斷程序需要通知任務(wù)代碼來做后能也不合算。因此,中斷程序需要通知任務(wù)代碼來做后續(xù)工作處理。在這種情況下,中斷程序和任務(wù)代碼就必續(xù)工作處理。在這種情況下,中斷程序和任務(wù)代碼就必須共享一個(gè)或多個(gè)變量來實(shí)現(xiàn)它們之
58、間的通信。須共享一個(gè)或多個(gè)變量來實(shí)現(xiàn)它們之間的通信。 63經(jīng)典的共享數(shù)據(jù)問題經(jīng)典的共享數(shù)據(jù)問題 static int iTemperatures2;void interrupt vReadTemperatures(void)iTemperatures0=/從硬件中讀出溫度值iTemperatures1=/從硬件中讀出溫度值void main()int iTemp0, iTemp1;while (TURE) iTemp0= iTemperatures0; iTemp1= iTemperatures1; if(iTemp0!=iTemp1) /發(fā)出報(bào)警;MOVE R1, (iTemperature
59、0)MOVE R2, (iTemperature1)SUBTRACT R1,R2JCOND ZERO, TEMPRATURES_OK;發(fā)出警報(bào)TEMPRATURES_OK:64禁止中斷來解決圖禁止中斷來解決圖4-3中的共享數(shù)據(jù)問題中的共享數(shù)據(jù)問題 static int iTemperatures2;void interrupt vReadTemperatures(void)iTemperatures0=/從硬件中讀出溫度值iTemperatures1=/從硬件中讀出溫度值void main()int iTemp0, iTemp1;while (TURE) disable(); iTemp0=
60、iTemperatures0; iTemp1= iTemperatures1; enable(); if(iTemp0!=iTemp1) /發(fā)出報(bào)警;.DIMOV R1, (iTemperature0)MOV R2, (iTemperature1)EISUBTRACT R1,R2J C O N D Z E R O , TEMPRATURES_OK;發(fā)出警報(bào)TEMPRATURES_OK:653“原子區(qū)原子區(qū)”和和“臨界區(qū)臨界區(qū)”l程序中不能被中斷的部分代碼成為程序中不能被中斷的部分代碼成為“原子的原子的”。任務(wù)是。任務(wù)是用用“原子的原子的” 指不能被任何可能擾亂正在使用數(shù)據(jù)的指不能被任何可能擾亂
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 南陽2025年河南南陽市第二人民醫(yī)院專業(yè)技術(shù)人員招聘筆試歷年參考題庫附帶答案詳解
- 信陽2025年河南信陽市息縣城區(qū)部分學(xué)校選調(diào)教師255人筆試歷年參考題庫附帶答案詳解
- 店面股權(quán)合同范本
- 臨滄云南臨滄雙江自治縣發(fā)展和改革局招聘臨聘人員筆試歷年參考題庫附帶答案詳解
- 平房轉(zhuǎn)讓合同范本
- 1-3-Dipalmitoleoyl-2-11-Z-octadecenoyl-glycerol-1-3-Palmitolein-2-vaccenate-生命科學(xué)試劑-MCE
- 電子技術(shù)與創(chuàng)新創(chuàng)業(yè)的緊密結(jié)合
- 上海2025年上海市免疫學(xué)研究所招聘筆試歷年參考題庫附帶答案詳解
- 科技賦能下的患者溶栓治療心理支持體系構(gòu)建
- 社區(qū)醫(yī)療急救體系的建設(shè)與完善
- 2016廣東省排水管道非開挖修復(fù)工程預(yù)算定額
- 《建筑設(shè)備安裝與識圖》混合式教學(xué)課程規(guī)范(課程標(biāo)準(zhǔn))
- 2024年云南省第二強(qiáng)制隔離戒毒所醫(yī)療衛(wèi)生公務(wù)員招錄1人《行政職業(yè)能力測驗(yàn)》模擬試卷(答案詳解版)
- 《體育開學(xué)第一課:體育常規(guī)教育》課件
- 上海市高新技術(shù)成果轉(zhuǎn)化項(xiàng)目認(rèn)定申請書
- 休閑體育小鎮(zhèn)規(guī)劃方案
- 海南紅色拓展培訓(xùn)方案
- 鎂合金汽車輪轂的研究與開發(fā)
- SHAFER氣液聯(lián)動執(zhí)行機(jī)構(gòu)培訓(xùn)
- 小學(xué)生守則、日常行為規(guī)范教育實(shí)施方案
- 湖南省六年級上冊數(shù)學(xué)期末試卷(含答案)
評論
0/150
提交評論