嵌入式系統(tǒng)學(xué)習(xí)課件2_第1頁
嵌入式系統(tǒng)學(xué)習(xí)課件2_第2頁
嵌入式系統(tǒng)學(xué)習(xí)課件2_第3頁
嵌入式系統(tǒng)學(xué)習(xí)課件2_第4頁
嵌入式系統(tǒng)學(xué)習(xí)課件2_第5頁
已閱讀5頁,還剩68頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

嵌入式技術(shù)及應(yīng)用——ARM與C/OS-Ⅱ第二講嵌入式系統(tǒng)硬件基本概念本節(jié)提要1324嵌入式系統(tǒng)硬件基礎(chǔ)嵌入式系統(tǒng)軟件基礎(chǔ)嵌入式操作系統(tǒng)嵌入式系統(tǒng)設(shè)計方法2.1.1嵌入式系統(tǒng)硬件基本概念典型嵌入式系統(tǒng)基本組成-硬件嵌入式系統(tǒng)的硬件是以嵌入式微處理器為核心,主要由嵌入式微處理器、總線、存儲器、輸入/輸出接口等設(shè)備組成。總線總線的概念所謂總線(Bus),一般指通過分時復(fù)用的方式,將信息以一個或多個源部件傳送到一個或多個目的部件的一組傳輸線。是電腦中傳輸數(shù)據(jù)的公共通道。CPU低速設(shè)備橋數(shù)據(jù)高速總線存儲器高速設(shè)備高速設(shè)備低速總線總線總線嵌入式系統(tǒng)的總線一般集成在嵌入式微處理器中。從微處理器的角度來看,總線可分為片外總線(如:PCI、ISA等)和片內(nèi)總線(如:AMBA、AVALON、OCP、WISHBONE等)。選擇總線和選擇嵌入式微處理器密切相關(guān),總線的種類隨不同的微處理器的結(jié)構(gòu)而不同。嵌入式微處理器每個嵌入式系統(tǒng)至少包含一個嵌入式微處理器嵌入式微處理器體系結(jié)構(gòu)可采用馮?諾依曼(VonNeumann)結(jié)構(gòu)或哈佛(Harvard)地址數(shù)據(jù)主存儲器MOVr8,#8CPUPC指令程序存儲器CPUPC地址數(shù)據(jù)存儲器MOVr8,#8地址數(shù)據(jù)馮?諾依曼結(jié)構(gòu)哈佛結(jié)構(gòu)傳統(tǒng)的微處理器采用的馮·諾依曼結(jié)構(gòu)將指令和數(shù)據(jù)存放在同一存儲空間中,統(tǒng)一編址,指令和數(shù)據(jù)通過同一總線訪問。哈佛結(jié)構(gòu)則是不同于馮·諾依曼結(jié)構(gòu)的一種并行體系結(jié)構(gòu),其主要特點(diǎn)是程序和數(shù)據(jù)存儲在不同的存儲空間中,即程序存儲器和數(shù)據(jù)存儲器是兩個相互獨(dú)立的存儲器,每個存儲器獨(dú)立編制、獨(dú)立訪問。與之相對應(yīng)的是系統(tǒng)中設(shè)置的兩條總線(程序總線和數(shù)據(jù)總線),從而使數(shù)據(jù)的吞吐率提高了一倍。微處理器的指令系統(tǒng):CISC和RISCCISC:復(fù)雜指令集(ComplexInstructionSetComputer)具有大量的指令和尋址方式8/2原則:80%的程序只使用20%的指令大多數(shù)程序只使用少量的指令就能夠運(yùn)行。RISC:精簡指令集(ReducedInstructionSetComputer)在通道中只包含最有用的指令確保數(shù)據(jù)通道快速執(zhí)行每一條指令使CPU硬件結(jié)構(gòu)設(shè)計變得更為簡單

CISC的主要缺點(diǎn)指令使用頻度不均衡。高頻度使用的指令占據(jù)了絕大部分的執(zhí)行時間,擴(kuò)充的復(fù)雜指令往往是低頻度指令。大量復(fù)雜指令的控制邏輯不規(guī)整,不適于VLSI工藝VLSI的出現(xiàn),使單芯片處理機(jī)希望采用規(guī)整的硬聯(lián)邏輯實(shí)現(xiàn),而不希望用微程序,因為微程序的使用反而制約了速度提高。(微碼的存控速度比CPU慢5-10倍)。軟硬功能分配復(fù)雜指令增加硬件的復(fù)雜度,使指令執(zhí)行周期大大加長,直接訪存次數(shù)增多,降低了CPU性能。不利于先進(jìn)指令級并行技術(shù)的采用流水線技術(shù)RISC基本設(shè)計思想減小CPI(ClockcyclesPerInstruction):CPUtime=Instr_Count*CPI*Clock_cycle精簡指令集:保留最基本的,去掉復(fù)雜、使用頻度不高的指令采用Load/Store結(jié)構(gòu),有助于減少指令格式,統(tǒng)一存儲器訪問方式采用硬接線控制代替微程序控制CISC與RISC的對比類別CISCRISC指令系統(tǒng)指令數(shù)量很多較少,通常少于100執(zhí)行時間有些指令執(zhí)行時間很長,如整塊的存儲器內(nèi)容拷貝;或?qū)⒍鄠€寄存器的內(nèi)容拷貝到存貯器沒有較長執(zhí)行時間的指令編碼長度編碼長度可變,1-15字節(jié)編碼長度固定,通常為4個字節(jié)尋址方式尋址方式多樣簡單尋址操作可以對存儲器和寄存器進(jìn)行算術(shù)和邏輯操作只能對寄存器對行算術(shù)和邏輯操作,Load/Store體系結(jié)構(gòu)編譯難以用優(yōu)化編譯器生成高效的目標(biāo)代碼程序采用優(yōu)化編譯技術(shù),生成高效的目標(biāo)代碼程序知識產(chǎn)權(quán)核(IP核,intellectualproperty)IP核是指具有知識產(chǎn)權(quán)的、功能具體、接口規(guī)范、可在多個集成電路設(shè)計中重復(fù)使用的功能模塊,是實(shí)現(xiàn)系統(tǒng)芯片(SOC)的基本構(gòu)件。IP復(fù)用意味著設(shè)計代價降低(時間,價格)IP核的類別:微處理器微處理器:ARM,PowerPC;存儲器存儲器:RAM,memorycontroller;外設(shè):PCI,DMAcontroller;多媒體處理:MPEG/JPEG;encoder/decoder;數(shù)字信號處理器(DSP)通信:Ethernetcontroller,router,IP核的種類SoftCores(“code”)(軟核)HDL語言描述靈活度高,可修改與工藝獨(dú)立,可根據(jù)具體的加工工藝重新綜合;IP很難保護(hù)Firmcores(“code+structure”)(固核)邏輯綜合后的描述與工藝相關(guān)Hardcores(“physical”)(硬核)物理綜合后的描述準(zhǔn)備流片包含工藝相關(guān)的布局和時序信息IP很容易保護(hù)多數(shù)的處理器和存儲器存儲器嵌入式系統(tǒng)的存儲器包括主存和外存。大多數(shù)嵌入式系統(tǒng)的代碼和數(shù)據(jù)都存儲在處理器可直接訪問的存儲空間即主存中。系統(tǒng)上電后在主存中的代碼直接運(yùn)行。主存儲器的特點(diǎn)是速度快,一般采用ROM、EPROM、NorFlash、SRAM、DRAM等存儲器件。存儲器系統(tǒng)RAM:隨機(jī)存取存儲器,SRAM:靜態(tài)隨機(jī)存儲器,DRAM:動態(tài)隨機(jī)存儲器1)SRAM比DRAM快2)SRAM比DRAM耗電多3)DRAM存儲密度比SRAM高得多4)DRM需要周期性刷新ROM:只讀存儲器FLASH:閃存存儲器系統(tǒng)的層次結(jié)構(gòu)寄存器高速緩存SRAM主存儲器DRAM本地存儲器Flash、ROM、磁盤網(wǎng)絡(luò)存儲器Flash、ROM、磁盤時鐘周期01—1050—100目前有些嵌入式系統(tǒng)除了主存外,還有外存。外存是處理器不能直接訪問的存儲器,用來存放各種信息,相對主存而言具有價格低、容量大的特點(diǎn)。在嵌入式系統(tǒng)中一般不采用硬盤而采用電子盤做外存,電子盤的主要種類有DOC(DiskOnChip)、NandFlash、CompactFlash、SmartMedia、MemoryStick、MultiMediaCard、SD(SecureDigital)卡等。輸入/輸出接口和設(shè)備嵌入式系統(tǒng)的大多數(shù)輸入/輸出接口和部分設(shè)備已經(jīng)集成在嵌入式微處理器中。輸入/輸出接口主要有中斷控制器、DMA、串行和并行接口等,設(shè)備主要有定時器(Timers)、計數(shù)器(counters)、看門狗(watchdogtimers)、RTC、UARTs、PWM(Pulsewidthmodulator)、AD/DA、顯示器、鍵盤和網(wǎng)絡(luò)等。本節(jié)提要1324嵌入式系統(tǒng)硬件基礎(chǔ)嵌入式系統(tǒng)軟件基礎(chǔ)嵌入式操作系統(tǒng)嵌入式系統(tǒng)設(shè)計方法嵌入式軟件體系結(jié)構(gòu)無操作系統(tǒng)的情形在嵌入式系統(tǒng)的發(fā)展初期,由于硬件的配置比較低,對于是否有系統(tǒng)軟件的支持,要求還不是很強(qiáng)烈。在那個階段,嵌入式軟件的設(shè)計主要是以應(yīng)用為核心,應(yīng)用軟件直接建立在硬件上,沒有專門的操作系統(tǒng)。有操作系統(tǒng)的情形為什么要有設(shè)備驅(qū)動程序?嵌入式硬件設(shè)備本身無法工作,需要軟件來驅(qū)動,如初始化、控制、數(shù)據(jù)讀寫等。什么是設(shè)備驅(qū)動程序?直接與硬件打交道、對硬件進(jìn)行控制和管理的軟件。在一個嵌入式系統(tǒng)中,設(shè)備驅(qū)動程序是必不可少的。設(shè)備驅(qū)動程序設(shè)備驅(qū)動程序的主要功能硬件啟動(Startup):在開機(jī)上電或重啟的時候,對硬件進(jìn)行初始化;硬件關(guān)閉(Shutdown):把硬件配置成關(guān)機(jī)狀態(tài);硬件停用(Disable):暫停使用硬件;硬件啟用(Enable):重新啟用硬件;硬件讀操作(Read):從硬件中讀取數(shù)據(jù);硬件寫操作(Write):往硬件中寫數(shù)據(jù);……嵌入式操作系統(tǒng)嵌入式操作系統(tǒng)包括嵌入式內(nèi)核、嵌入式TCP/IP網(wǎng)絡(luò)系統(tǒng)、嵌入式文件系統(tǒng)、嵌入式GUI系統(tǒng)和電源管理等部分;嵌入式內(nèi)核是基礎(chǔ)和核心,其他部分要根據(jù)嵌入式系統(tǒng)的需要來確定。嵌入式中間件中間件(Middleware):在OS內(nèi)核、設(shè)備驅(qū)動程序和應(yīng)用軟件之外的所有系統(tǒng)軟件;中間件的基本思路:把原本屬于應(yīng)用軟件層的一些通用的功能模塊抽取出來,形成獨(dú)立的一層軟件,從而為運(yùn)行在其上的各個應(yīng)用軟件提供一個靈活、安全、移植性好、相互通信、協(xié)同工作的平臺;優(yōu)點(diǎn):實(shí)現(xiàn)軟件的可重用,降低應(yīng)用軟件的復(fù)雜性,降低開發(fā)成本。嵌入式軟件的目標(biāo)函數(shù)必須正確;源代碼簡潔、可讀性好、可維護(hù);實(shí)時性要求較高的代碼能夠運(yùn)行得足夠快;目標(biāo)代碼小且高效??傊獌?yōu)化對以下三種資源的使用:執(zhí)行時間;存儲空間;開發(fā)/維護(hù)時間。數(shù)據(jù)類型與運(yùn)算符宏定義:用一個指定的標(biāo)識符來代表一個字符串。#define標(biāo)識符字符串如:#definePI3.1415926,其作用是指定用標(biāo)識符PI來代替“3.1415926”這個字符串,在編譯預(yù)處理時,將程序中出現(xiàn)的所有PI都用“3.1415926”代替。(1)宏定義宏定義的基本思想是:一次定義,多次使用。其優(yōu)點(diǎn)是:可以用簡短的標(biāo)識符來代替長的數(shù)據(jù),減少需要輸入的字符數(shù);用易于理解的標(biāo)識符來代替那些不太好記的具體的數(shù)據(jù),便于程序的理解和維護(hù);有利于程序的修改和升級,當(dāng)這個數(shù)據(jù)需要修改時,只需改動宏定義之處即可。if(myMoney>80.0){myShoes++;myMoney=myMoney–80.0;}#defineCOST_OF_SHOES80.0if(myMoney>COST_OF_SHOES){myShoes++;

myMoney=myMoney–COST_OF_SHOES;}不用此法一次定義多次使用(2)const常量常量數(shù)據(jù):整數(shù)(12)、字符(‘a(chǎn)’)、

字符串(“hello”)和實(shí)數(shù)(3.14)等;以變量的形式來定義的一個量,并且通

過使用關(guān)鍵字const,來表明這個變量的

值不能被改變。如:constintx=1。(3)算術(shù)運(yùn)算整數(shù)的算術(shù)運(yùn)算 最快

帶有硬件支持的浮點(diǎn)運(yùn)算 較慢

用軟件來實(shí)現(xiàn)的浮點(diǎn)運(yùn)算 非常慢

+,- 快

×

÷

sin,log,sqrt,etc 慢結(jié)論:盡量使用整數(shù)(char、short、int和long)的加法和減法;如果沒有硬件支持,盡量避免使用乘法;盡量避免使用除法;如果沒有硬件支持,盡量避免使用浮點(diǎn)數(shù);數(shù)學(xué)庫函數(shù)使用得越少越好。(4)位運(yùn)算C語言有很多位操作運(yùn)算符:& 與操作;| 或操作;^ 異或操作;~ 取反操作;>> 右移操作;<< 左移操作。a|=0x4

b&=~0x4

c&=~(1<<3)

d^=(1<<5)

e>>=2

//把第2位設(shè)置為1//把第2位設(shè)置為0//把第3位設(shè)置為0//把第5位反轉(zhuǎn)//把e除以4intx,num=99,count=0;x=num;while(x){count++;x=x&(x?1);}printf("result:%d",count);result:4分支語句if(a==1)ant();elseif(a==2)bar();elseif(a==3)cee();elseif(a==4)due();elseif(a==5)eat();elseif(a==6)foo();switch(a){case1:ant();break;case2:bar();break;case3:cee();break;case4:due();break;case5:eat();break;case6:foo();break;}AnyDifferences?函數(shù)函數(shù)原型main()

{

……

函數(shù)調(diào)用

……

}函數(shù)定義函數(shù)的使用模式聲明該函數(shù)定義一個函數(shù)使用該函數(shù)操作系統(tǒng)代碼棧幀2棧幀1全局變量內(nèi)存分布狀況全局變量區(qū)域靜態(tài)分配棧自動分配堆動態(tài)分配主函數(shù)的執(zhí)行過程intz;voidmain(){intx,y;x=1;y=2;z=x+y;}…main(){…}…

z=0全局變量區(qū)域棧幀(main)x=y=程序123一個簡單的例子intTimes2(intvalue);

main()

{

intnumber;

printf(“請輸入一個整數(shù):”);

scanf(“%d”,&number);

printf(“該數(shù)的兩倍是:%d”,Times2(number));

}intTimes2(intvalue)

{

return(2*value);

}mainnumber3當(dāng)一個函數(shù)被調(diào)用時:在內(nèi)存的??臻g當(dāng)中為其分配一個棧幀,用來存放該函數(shù)的形參和局部變量;把實(shí)參變量的值復(fù)制到相應(yīng)的形參變量;控制轉(zhuǎn)移到該函數(shù)的起始位置;該函數(shù)開始執(zhí)行;控制流和返回值返回到函數(shù)調(diào)用點(diǎn)。函數(shù)調(diào)用過程本節(jié)提要1324嵌入式系統(tǒng)硬件基礎(chǔ)嵌入式系統(tǒng)軟件基礎(chǔ)嵌入式操作系統(tǒng)嵌入式系統(tǒng)設(shè)計方法嵌入式操作系統(tǒng)概述AnEmbeddedOperatingSystem(EOS)

isanOperatingSystem(OS)inanEmbeddedSystemenvironment.BeinganOSmeans…系統(tǒng)軟硬件資源的管理者:進(jìn)程管理存儲管理I/O設(shè)備管理文件管理BeinganEOSmeans…完成某一項或有限項功能,非通用型;在性能和實(shí)時性方面可能有嚴(yán)格限制;能源、成本和可靠性通常是影響設(shè)計的重要因素;占有資源少,適合在有限存儲空間運(yùn)行;系統(tǒng)功能可針對需求進(jìn)行裁剪、調(diào)整,以便滿足最終產(chǎn)品的設(shè)計要求。按響應(yīng)時間分類…嵌入式實(shí)時操作系統(tǒng)當(dāng)事件/請求發(fā)生時,相應(yīng)的任務(wù)應(yīng)該在規(guī)定的時間內(nèi)完成;分時操作系統(tǒng)基于公平性原則,各個進(jìn)程分享處理器,獲得大致相同的運(yùn)行時間。當(dāng)一個進(jìn)程在進(jìn)行I/O操作時,交出處理器,讓其他進(jìn)程運(yùn)行。實(shí)時操作系統(tǒng)(RTOS)

Areal-timeoperatingsystem(RTOS)isanoperatingsystem

whosecorrectnessincludesitsresponsetimeaswellasitsfunctionalcorrectness.hardrealtimeandsoftrealtime按軟件結(jié)構(gòu)分類…單體結(jié)構(gòu)(MonolithicStructure)分層結(jié)構(gòu)(LayeredStructure)Outofdate…微內(nèi)核結(jié)構(gòu)(MicrokernelModel)單體結(jié)構(gòu)最常用的組織結(jié)構(gòu);整個系統(tǒng)只有一個可執(zhí)行文件,包含所有的操作系統(tǒng)組件;系統(tǒng)的結(jié)構(gòu)就是無結(jié)構(gòu),由一組函數(shù)組成,相互之間可以隨意地調(diào)用。應(yīng)用軟件文件I/O存儲管理進(jìn)程管理I/O驅(qū)動存儲驅(qū)動中斷驅(qū)動硬件單體內(nèi)核分層結(jié)構(gòu)在分層結(jié)構(gòu)(layered)中,一個操作系統(tǒng)被劃分為若干個層次(0..N),各個層次之間的調(diào)用關(guān)系是單向的,即某一層次上的代碼只能調(diào)用比它低層的代碼。這種結(jié)構(gòu)要求在每個層次上都要提供一組API接口函數(shù),這就會帶來額外的開銷微內(nèi)核設(shè)備驅(qū)動程序微內(nèi)核結(jié)構(gòu)操作系統(tǒng)內(nèi)核只包含最少的功能,如存儲管理和進(jìn)程管理;其他的操作系統(tǒng)組件以中間件的形式存在于內(nèi)核之外;設(shè)備驅(qū)動程序完全從內(nèi)核中剝離,獨(dú)立成為一層。中間件、應(yīng)用軟件存儲管理進(jìn)程管理I/O驅(qū)動存儲驅(qū)動中斷驅(qū)動硬件VxWorksEmbeddedLinuxuC/OS-II(重點(diǎn))WinCEPalmOS…常見的嵌入式操作系統(tǒng)多道程序技術(shù)為了提高計算機(jī)系統(tǒng)中各種資源的利用率,現(xiàn)代操作系統(tǒng)廣泛采用多道程序技術(shù)(multi-programming),使多個程序同時在系統(tǒng)中存在并運(yùn)行。CPUI/O單道程序:多道程序:CPUI/O作業(yè)甲(紅黃)作業(yè)乙(藍(lán)綠)進(jìn)程、線程和任務(wù)在多道程序系統(tǒng)中,各個程序之間是并發(fā)執(zhí)行的,共享系統(tǒng)資源。CPU需要在各個運(yùn)行的程序之間來回地切換,這樣的話,要想描述這些多道的并發(fā)活動過程就變得很困難。為此,操作系統(tǒng)設(shè)計者提出了進(jìn)程的概念。什么是進(jìn)程?Aprocess=aprograminexecution一個進(jìn)程應(yīng)該包括:程序的代碼;程序的數(shù)據(jù);

PC中的值,用來指示下一條將運(yùn)行的指令;一組通用的寄存器的當(dāng)前值,堆、棧;一組系統(tǒng)資源(如打開的文件)總之,進(jìn)程包含了正在運(yùn)行的一個程序的所有

狀態(tài)信息。main()

{…..}A()

{…..}

PROCESSAprogramisCstatementsorcommands

靜態(tài)的;Aprocessisprogram+runningcontext

動態(tài)的.main()

{…..}A()

{…..}

PROGRAMheap

StackAMainRegisters,PCProcess≠Program進(jìn)程的特性動態(tài)性:程序的運(yùn)行狀態(tài)在變,PC、寄存器、

堆和棧等;獨(dú)立性:是一個獨(dú)立的實(shí)體,是計算機(jī)系統(tǒng)資

源的使用單位。每個進(jìn)程都有“自己”

的PC和內(nèi)部狀態(tài),運(yùn)行時獨(dú)立于其他

的進(jìn)程(邏輯PC和物理PC);并發(fā)性:從宏觀上看各進(jìn)程是同時獨(dú)立運(yùn)行的四個進(jìn)程在并發(fā)地運(yùn)行(本圖摘自AndrewS.Tanenbaum:“ModernOperatingSystems”)什么是線程?自從60年代提出進(jìn)程概念以來,在操作系統(tǒng)中一直都是以進(jìn)程作為獨(dú)立運(yùn)行的基本單位,直到80年代中期,人們又提出了更小的能獨(dú)立運(yùn)行的基本單位線程。Why線程?【案例】編寫一個MP3播放軟件。核心功能模塊有三個:(1)從MP3音頻文件當(dāng)中讀取數(shù)據(jù);(2)對數(shù)據(jù)進(jìn)行解壓縮;(3)把解壓縮后的音頻數(shù)據(jù)播放出來。單進(jìn)程的實(shí)現(xiàn)方法

main()

{

while(TRUE)

{Read();

Decompress();

Play();

}}Read(){…}

Decompress(){…}Play(){…}問題:播放出來的聲音能

否連貫?各個函數(shù)之間不是

并發(fā)執(zhí)行,影響資

源的使用效率;I/OCPU多進(jìn)程的實(shí)現(xiàn)方法

程序1

main()

{

while(TRUE)

{Read();

溫馨提示

  • 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論