




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
嵌入式系統(tǒng)設計與實例開發(fā)—基于ARM微處理器與實時操作系統(tǒng)第二講基本概念及設計方法主講教師:羅子波副教授嵌入式系統(tǒng)設計與實例開發(fā)本節(jié)提要132嵌入式系統(tǒng)硬件知識嵌入式系統(tǒng)軟件知識嵌入式系統(tǒng)的選擇原則和設計工具本節(jié)提要132嵌入式系統(tǒng)硬件知識嵌入式系統(tǒng)軟件知識嵌入式系統(tǒng)嵌入式微處理器簡介嵌入式微處理器體系結(jié)構(gòu)嵌入式微處理器的分類2.1嵌入式系統(tǒng)硬件知識嵌入式微處理器簡介2.1嵌入式系統(tǒng)硬件知識嵌入式微處理器簡介嵌入式硬件系統(tǒng)組成:嵌入式微處理器:控制單元ALU 寄存器存儲器輸入/輸出單元嵌入式微處理器簡介嵌入式硬件系統(tǒng)組成:嵌入式處理器的基本結(jié)構(gòu)(1)微處理器是整個系統(tǒng)的核心,通常由3大部分組成:控制單元、算術(shù)邏輯單元和寄存器。算術(shù)邏輯單元寄存器控制單元微處理器存儲器輸入輸出嵌入式處理器的基本結(jié)構(gòu)(1)微處理器是整個系統(tǒng)的核心,通常由嵌入式處理器的基本結(jié)構(gòu)(2)控制單元:主要負責取指、譯碼和取操作數(shù)等基本動作,并發(fā)送主要的控制指令。控制單元中包括兩個重要的寄存器:程序計數(shù)器(PC)和指令寄存器(IR)。程序計數(shù)器用于記錄下一條程序指令在內(nèi)存中的位置,以便控制單元能到正確的內(nèi)存位置取指;指令寄存器負責存放被控制單元所取的指令,通過譯碼,產(chǎn)生必要的控制信號送到算術(shù)邏輯單元進行相關(guān)的數(shù)據(jù)處理工作。算術(shù)邏輯單元:算術(shù)邏輯單元分為兩部分,一部分是算術(shù)運算單元,主要處理數(shù)值型的數(shù)據(jù),進行數(shù)學運算,如加、減、乘、除或數(shù)值的比較;另一部分是邏輯運算單元,主要處理邏輯運算工作,如AND、OR、XOR或NOT等運算。寄存器:用于存儲暫時性的數(shù)據(jù)。主要是從存儲器中所得到的數(shù)據(jù)(這些數(shù)據(jù)被送到算術(shù)邏輯單元中進行處理)和算術(shù)邏輯單元中處理好的數(shù)據(jù)(再進行算術(shù)邏輯運行或存入到存儲器中。
嵌入式處理器的基本結(jié)構(gòu)(2)控制單元:主要負責取指、譯碼和取馮·諾依曼體系結(jié)構(gòu)和哈佛體系結(jié)構(gòu)CISC與RISC信息存儲的字節(jié)順序IP核流水線存儲器系統(tǒng)2.1.2嵌入式微處理器體系結(jié)構(gòu)馮·諾依曼體系結(jié)構(gòu)和哈佛體系結(jié)構(gòu)2.1.2嵌入式微處理器體馮·諾依曼體系結(jié)構(gòu)模型指令寄存器控制器數(shù)據(jù)通道輸入輸出中央處理器存儲器程序指令0指令1指令2指令3指令4數(shù)據(jù)數(shù)據(jù)0數(shù)據(jù)1數(shù)據(jù)2馮·諾依曼體系結(jié)構(gòu)模型指令寄存器控制器數(shù)據(jù)通道輸入輸出中央處哈佛體系結(jié)構(gòu)指令寄存器控制器數(shù)據(jù)通道輸入輸出中央處理器程序存儲器指令0指令1指令2數(shù)據(jù)存儲器數(shù)據(jù)0數(shù)據(jù)1數(shù)據(jù)2地址指令地址數(shù)據(jù)哈佛體系結(jié)構(gòu)指令寄存器控制器數(shù)據(jù)通道輸入輸出中央處理器程序存CISC和RISCCISC:復雜指令集(ComplexInstructionSetComputer)具有大量的指令和尋址方式8/2原則:80%的程序只使用20%的指令大多數(shù)程序只使用少量的指令就能夠運行。RISC:精簡指令集(ReducedInstructionSetComputer)在通道中只包含最有用的指令確保數(shù)據(jù)通道快速執(zhí)行每一條指令使CPU硬件結(jié)構(gòu)設計變得更為簡單
CISC和RISCCISC:復雜指令集(ComplexInCISC與RISC的數(shù)據(jù)通道IFIDREGALUMEM開始退出IFIDALUMEMREG微操作通道開始退出單通數(shù)據(jù)通道CISC與RISC的數(shù)據(jù)通道IFIDREGALUMEM開始退CISC的背景和特點背景:存儲資源緊缺,強調(diào)編譯優(yōu)化增強指令功能,設置一些功能復雜的指令,把一些原來由軟件實現(xiàn)的、常用的功能改用硬件的(微程序)指令系統(tǒng)來實現(xiàn)為節(jié)省存儲空間,強調(diào)高代碼密度,指令格式不固定,指令可長可短,操作數(shù)可多可少尋址方式復雜多樣,操作數(shù)可來自寄存器,也可來自存儲器采用微程序控制,執(zhí)行每條指令均需完成一個微指令序列(微程序)CPI>5,指令越復雜,CPI越大。CISC的背景和特點背景:存儲資源緊缺,強調(diào)編譯優(yōu)CISC的主要缺點指令使用頻度不均衡。高頻度使用的指令占據(jù)了絕大部分的執(zhí)行時間,擴充的復雜指令往往是低頻度指令。大量復雜指令的控制邏輯不規(guī)整,不適于VLSI工藝VLSI的出現(xiàn),使單芯片處理機希望采用規(guī)整的硬聯(lián)邏輯實現(xiàn),而不希望用微程序,因為微程序的使用反而制約了速度提高。(微碼的存控速度比CPU慢5-10倍)。軟硬功能分配復雜指令增加硬件的復雜度,使指令執(zhí)行周期大大加長,直接訪存次數(shù)增多,降低了CPU性能。不利于先進指令級并行技術(shù)的采用流水線技術(shù)CISC的主要缺點指令使用頻度不均衡。RISC基本設計思想減小CPI:CPUtime=Instr_Count*CPI*Clock_cycle精簡指令集:保留最基本的,去掉復雜、使用頻度不高的指令采用Load/Store結(jié)構(gòu),有助于減少指令格式,統(tǒng)一存儲器訪問方式采用硬接線控制代替微程序控制RISC基本設計思想減小CPI:CPUtime=Instr典型的高性能RISC處理器SUN公司的SPARC(1987)MIPS公司的SGI:MIPS(1986)HP公司的PA-RISC,IBM,Motorola公司的PowerPCDEC、Compac公司的AlphaAXPIBM的RS6000(1990)第一臺SuperscalarRISC機
典型的高性能RISC處理器SUN公司的SPARC(1987)CISC與RISC的對比類別CISCRISC指令系統(tǒng)指令數(shù)量很多較少,通常少于100執(zhí)行時間有些指令執(zhí)行時間很長,如整塊的存儲器內(nèi)容拷貝;或?qū)⒍鄠€寄存器的內(nèi)容拷貝到存貯器沒有較長執(zhí)行時間的指令編碼長度編碼長度可變,1-15字節(jié)編碼長度固定,通常為4個字節(jié)尋址方式尋址方式多樣簡單尋址操作可以對存儲器和寄存器進行算術(shù)和邏輯操作只能對寄存器對行算術(shù)和邏輯操作,Load/Store體系結(jié)構(gòu)編譯難以用優(yōu)化編譯器生成高效的目標代碼程序采用優(yōu)化編譯技術(shù),生成高效的目標代碼程序CISC與RISC的對比類別CISCRISC指令系統(tǒng)指令數(shù)量for(i=0;i<10000;++i)
/*各種算術(shù)運算操作*/實驗平臺:桌面IntelPentium4,帶硬件浮點支持Operator Time Operator Time
+(int) 1 +(double) 5
*(int) 5 *(double) 5
/(int) 12 /(double) 10
<<(int) 2 sin 48
小實驗1for(i=0;i<10000;++i)
/信息存儲的字節(jié)順序大端模式字數(shù)據(jù)的高位字節(jié)存儲在低地址中字數(shù)據(jù)的低字節(jié)則存放在高地址中小端模式低地址中存放字數(shù)據(jù)的低字節(jié)高地址中存放字數(shù)據(jù)的高字節(jié)3124
2316
158
70字地址11109887654432100低地址高地址3124
2316
158
70字地址89101184567401230低地址高地址信息存儲的字節(jié)順序大端模式3124231615870字示例A.小端存儲法(0x01234567)地址0x80000x80010x80020x8003數(shù)據(jù)(16進制表示)0x670x450x230x01數(shù)據(jù)(二進制表示)01100111010001010010001100000001B.大端存儲法地址0x80000x80010x80020x8003數(shù)據(jù)(16進制表示)0x010x230x450x67數(shù)據(jù)(二進制表示)00000001001000110100010101100111示例A.小端存儲法(0x01234567)地址0x8000TheARM可以用little/bigendian格式存取數(shù)據(jù).r0=0x11223344STRr0,[r1]LDRBr2,[r1]r1=0x100Memory32100123ByteLane312423161587011223344312423161587011223344312423161587011223344312423161587000000044312423161587000000011LittleendianBigendianR2=0x44R2=0x11Formoreinformation,see:“ApplicationNote61:BigandLittleEndianByteAddressing”字節(jié)順序TheARM可以用little/bigendian2.1.3嵌入式微處理器的分類2.1.3嵌入式微處理器的分類本節(jié)提要132嵌入式系統(tǒng)硬件知識嵌入式系統(tǒng)軟件知識嵌入式系統(tǒng)的選擇原則和設計工具本節(jié)提要132嵌入式系統(tǒng)硬件知識嵌入式系統(tǒng)軟件知識嵌入式系統(tǒng)2.2.1嵌入式軟件概述規(guī)模較小開發(fā)難度大實時性和可靠性要求高要求固化存儲2.2.1嵌入式軟件概述規(guī)模較小2.2.1嵌入式軟件體系結(jié)構(gòu)無操作系統(tǒng)的情形在嵌入式系統(tǒng)的發(fā)展初期,由于硬件的配置比較低,對于是否有系統(tǒng)軟件的支持,要求還不是很強烈。在那個階段,嵌入式軟件的設計主要是以應用為核心,應用軟件直接建立在硬件上,沒有專門的操作系統(tǒng)。有操作系統(tǒng)的情形2.2.1嵌入式軟件體系結(jié)構(gòu)無操作系統(tǒng)的情形無操作系統(tǒng)的情形循環(huán)輪詢系統(tǒng):(PollingLoop)最簡單的軟件結(jié)構(gòu),程序依次檢查系統(tǒng)的每個輸入條件,一旦條件成立就進行相應的處理。Initialize();while(1){if(condition_1)action_1();if(condition_2)action_2();……if(condition_n)acition_n();}無操作系統(tǒng)的情形循環(huán)輪詢系統(tǒng):(PollingLoop)事件驅(qū)動系統(tǒng):(Event-Drivensystem)事件驅(qū)動系統(tǒng)是能對外部事件直接響應的系統(tǒng)。它包括前后臺、實時多任務、多處理器等,是嵌入式實時系統(tǒng)的主要形式。應用程序是一個無限循環(huán),循環(huán)中調(diào)用相應的函數(shù)完成相應操作,這部分可以看成后臺行為(background)。中斷服務程序處理異步事件,這部分可看成前臺行為(foreground)。后臺也可以叫做任務級,前臺也叫中斷級。事件驅(qū)動系統(tǒng):(Event-Drivensystem)例如,很多基于微處理器的產(chǎn)品采用前后臺系統(tǒng)設計,如微波爐、電話機、玩具等。從省電的角度出發(fā),平時微處理器處在停機狀態(tài),所有的事都靠中斷服務來完成。例如,很多基于微處理器的產(chǎn)品采用前后臺系統(tǒng)設計,如微波爐、電前后臺系統(tǒng)(后臺循環(huán)、前臺中斷)ISRISR后臺前臺ISR時間前后臺系統(tǒng)(后臺循環(huán)、前臺中斷)ISRISR后臺提高了系統(tǒng)可靠性提高了系統(tǒng)的開發(fā)效率,降低了開發(fā)成本,縮短了開發(fā)周期有利于系統(tǒng)的擴展和移植有操作系統(tǒng)的情形提高了系統(tǒng)可靠性有操作系統(tǒng)的情形2.2.3嵌入式操作系統(tǒng)的分類按系統(tǒng)的類型分:商用系統(tǒng)專用系統(tǒng)開源系統(tǒng)按響應時間分:實時硬實時系統(tǒng)軟實時系統(tǒng)非實時2.2.3嵌入式操作系統(tǒng)的分類按系統(tǒng)的類型分:按軟件結(jié)構(gòu)分類…單體結(jié)構(gòu)(MonolithicStructure)分層結(jié)構(gòu)(LayeredStructure)Outofdate…微內(nèi)核結(jié)構(gòu)(MicrokernelModel)按軟件結(jié)構(gòu)分類…單體結(jié)構(gòu)(MonolithicStruc單體結(jié)構(gòu)最常用的組織結(jié)構(gòu);整個系統(tǒng)只有一個可執(zhí)行文件,包含所有的操作系統(tǒng)組件;系統(tǒng)的結(jié)構(gòu)就是無結(jié)構(gòu),由一組函數(shù)組成,相互之間可以隨意地調(diào)用。應用軟件文件I/O存儲管理進程管理I/O驅(qū)動存儲驅(qū)動中斷驅(qū)動硬件單體內(nèi)核單體結(jié)構(gòu)最常用的組織結(jié)構(gòu);應用軟件文件I/O存儲管理進分層結(jié)構(gòu)在分層結(jié)構(gòu)(layered)中,一個操作系統(tǒng)被劃分為若干個層次(0..N),各個層次之間的調(diào)用關(guān)系是單向的,即某一層次上的代碼只能調(diào)用比它低層的代碼。這種結(jié)構(gòu)要求在每個層次上都要提供一組API接口函數(shù),這就會帶來額外的開銷分層結(jié)構(gòu)在分層結(jié)構(gòu)(layered)中,一個操作系統(tǒng)被劃分為微內(nèi)核設備驅(qū)動程序微內(nèi)核結(jié)構(gòu)操作系統(tǒng)內(nèi)核只包含最少的功能,如存儲管理和進程管理;其他的操作系統(tǒng)組件以中間件的形式存在于內(nèi)核之外;設備驅(qū)動程序完全從內(nèi)核中剝離,獨立成為一層。中間件、應用軟件存儲管理進程管理I/O驅(qū)動存儲驅(qū)動中斷驅(qū)動硬件微內(nèi)核設備驅(qū)動程序微內(nèi)核結(jié)構(gòu)操作系統(tǒng)內(nèi)核只包含最少的功能有操作系統(tǒng)的情形硬件板級
初始化設備
驅(qū)動層以太網(wǎng)
驅(qū)動串口
驅(qū)動LCD
驅(qū)動鍵盤
驅(qū)動操作
系統(tǒng)層中間件
層應用
軟件層TCP/IP
網(wǎng)絡系統(tǒng)文件
系統(tǒng)內(nèi)核嵌入式
GUI嵌入式
CORBA嵌入式
JAVA嵌入式
DCOM面向領(lǐng)域
的中間件WWW
瀏覽器MP3
播放器電子
郵件…有操作系統(tǒng)的情形硬件板級
初始化設備
驅(qū)動層以太網(wǎng)
驅(qū)動串口為什么要有設備驅(qū)動程序?嵌入式硬件設備本身無法工作,需要軟件來驅(qū)動,如初始化、控制、數(shù)據(jù)讀寫等。什么是設備驅(qū)動程序?直接與硬件打交道、對硬件進行控制和管理的軟件。在一個嵌入式系統(tǒng)中,設備驅(qū)動程序是必不可少的。設備驅(qū)動程序為什么要有設備驅(qū)動程序?設備驅(qū)動程序設備驅(qū)動程序的主要功能硬件啟動(Startup):在開機上電或重啟的時候,對硬件進行初始化;硬件關(guān)閉(Shutdown):把硬件配置成關(guān)機狀態(tài);硬件停用(Disable):暫停使用硬件;硬件啟用(Enable):重新啟用硬件;硬件讀操作(Read):從硬件中讀取數(shù)據(jù);硬件寫操作(Write):往硬件中寫數(shù)據(jù);……設備驅(qū)動程序的主要功能硬件啟動(Startup):在開機上電嵌入式中間件中間件(Middleware):在OS內(nèi)核、設備驅(qū)動程序和應用軟件之外的所有系統(tǒng)軟件;中間件的基本思路:把原本屬于應用軟件層的一些通用的功能模塊抽取出來,形成獨立的一層軟件,從而為運行在其上的各個應用軟件提供一個靈活、安全、移植性好、相互通信、協(xié)同工作的平臺;優(yōu)點:實現(xiàn)軟件的可重用,降低應用軟件的復雜性,降低開發(fā)成本。嵌入式中間件中間件(Middleware):在OS內(nèi)核、設備2.2.4嵌入式操作系統(tǒng)的幾個概念占先式內(nèi)核調(diào)度策略分析任務優(yōu)先級分配時間的可確定性任務切換時間中斷響應時間優(yōu)先級反轉(zhuǎn)任務執(zhí)行時間的抖動任務劃分2.2.4嵌入式操作系統(tǒng)的幾個概念占先式內(nèi)核2.2.5常見的嵌入式操作系統(tǒng)實時嵌入式操作系統(tǒng)的種類繁多,大體上可分為兩種,商用型和免費型。商用型的實操作系統(tǒng)功能穩(wěn)定、可靠,有完善的技術(shù)支持和售后服務,但往往價格昂貴μC/OS。免費型的實時操作系統(tǒng)在價格方面具有優(yōu)勢,目前主要有Linux和,穩(wěn)定性與服務性存在挑戰(zhàn)。2.2.5常見的嵌入式操作系統(tǒng)實時嵌入式操作系統(tǒng)的種類VxWorksVxWorks操作系統(tǒng)是美國WindRiver公司于1983年設計開發(fā)的一種嵌入式實時操作系統(tǒng)(RTOS),具有良好的持續(xù)發(fā)展能力、高性能的內(nèi)核以及友好的用戶開發(fā)環(huán)境,在嵌入式實時操作系統(tǒng)領(lǐng)域牢牢占據(jù)著一席之地。VxWorks所具有的顯著特點是:
-可靠性、實時性和可裁減性。 -它支持多種處理器,如x86、i960、SunSparc、MotorolaMC68xxx、MIPS、POWERPC等等。大多數(shù)的VxWorksAPI是專有的,火星機器人。VxWorksVxWorks操作系統(tǒng)是美國WindRiverWindowsEmbeddedWindowsCE3.0:一種針對小容量、移動式、智能化、32位、連接設備的模塊化實時嵌入式操作系統(tǒng)。針對掌上設備、無線設備的動態(tài)應用程序和服務提供了一種功能豐富的操作系統(tǒng)平臺,WindowsCE嵌入但不夠?qū)崟r,屬于軟實時操作系統(tǒng),由于其Windows背景,界面比較統(tǒng)一認可。操作系統(tǒng)的基本內(nèi)核需要至少200K的ROM。WindowsEmbeddedWindowsCE3.0PalmOSPalmOS是著名的網(wǎng)絡設備制造商3COM旗下的PalmComputing掌上電腦公司的產(chǎn)品。3COM、CISCO競爭PalmOS在PDA市場上占有很大的市場份額,PalmOS的市場份額占到將近90%,最近下降70%,目前主要與WINCE進行激烈競爭。PalmOSPalmOS是著名的網(wǎng)絡設備制造商3COM旗QNX加拿大QNX公司的產(chǎn)品。QNX是在X86體系上面開發(fā)出來的,這和別的RTOS不一樣,別的好多RTOS都是從68K的CPU上面開發(fā)成熟,然后再移植到X86體系上面來的。QNX是一個實時的、可擴充的操作系統(tǒng),它部分遵循POSIX相關(guān)標準,由于QNX具有強大的圖形界面功能,因此很適合作為機頂盒、手持設備(手掌電腦、手機)、GPS設備的實時操作系統(tǒng)使用。QNX加拿大QNX公司的產(chǎn)品。嵌入式Linux嵌入式系統(tǒng)越來越追求數(shù)字化、網(wǎng)絡化和智能化。因此原來在某些設備或領(lǐng)域中占主導地位的軟件系統(tǒng)越來越難以為繼,整個系統(tǒng)必須是開放的、提供標準的API,并且能夠方便地與眾多第三方的軟硬件溝通。Linux是開放源碼的,不存在黑箱技術(shù),遍布全球的眾多Linux愛好者又是Linux開發(fā)的強大技術(shù)后盾。Linux的內(nèi)核小、功能強大、運行穩(wěn)定、系統(tǒng)健壯、效率高,易于定制剪裁,在價格上極具競爭力。Linux不僅支持x86CPU,還可以支持其他數(shù)十種CPU芯片。嵌入式Linux嵌入式系統(tǒng)越來越追求數(shù)字化、網(wǎng)絡化和智能化。
嵌入式Linux(EmbeddedLinux)是指對Linux經(jīng)過小型化裁剪后,能夠固化在容量只有幾百K字節(jié)或幾兆字節(jié)的存儲器芯片或單片機中,應用于特定嵌入式場合的專用Linux操作系統(tǒng)。嵌入式Linux的開發(fā)和研究是目前操作系統(tǒng)領(lǐng)域的一個熱點。主要有RTLinux和CLinuxLinux在嵌入式領(lǐng)域異軍突起不過是近兩年的事情,過去的一年中有13%的用戶已經(jīng)開始使用嵌入式Linux系統(tǒng)進行開發(fā)工作;有52%的用戶決定在未來24個月內(nèi)開始使用Linux作為嵌入式操作系統(tǒng)的開發(fā)原型。嵌入式Linux及應用嵌入式Linux(EmbeddedLinux)是指對LiC/OS及C/OS-II
1、C/OS——MicroControllerOS,微控制器操作系統(tǒng)2、C/OS簡介美國人JeanLabrosse1992年完成應用面覆蓋了諸多領(lǐng)域,如照相機、醫(yī)療器械、音響設備、發(fā)動機控制、高速公路電話系統(tǒng)、自動提款機等1998年C/OS-II,目前的版本C/OS-IIV2.61,2.722000年,得到美國航空管理局(FAA)的認證,可以用于飛行器中網(wǎng)站www.ucos-II.com()C/OS及C/OS-II
1、C/OS——Micro嵌入式C程序設計“whichofthefollowingprogramminglanguages
haveyouusedforembeddedsystemsinthelast
12months” C 81%
Assembly 70%
C++ 39%
VisualBasic 16%
Java 7%Source:“ESP:A10-yearretrospective”,Embedded
SystemsProgramming,November,1998嵌入式C程序設計“whichofthefollowin嵌入式軟件的目標函數(shù)必須正確;源代碼簡潔、可讀性好、可維護;實時性要求較高的代碼能夠運行得足夠快;目標代碼小且高效??傊獌?yōu)化對以下三種資源的使用:執(zhí)行時間;存儲空間;開發(fā)/維護時間。嵌入式軟件的目標函數(shù)必須正確;數(shù)據(jù)類型與運算符宏定義:用一個指定的標識符來代表一個字符串。#define標識符字符串如:#definePI3.1415926,其作用是指定用標識符PI來代替“3.1415926”這個字符串,在編譯預處理時,將程序中出現(xiàn)的所有PI都用“3.1415926”代替。(1)宏定義數(shù)據(jù)類型與運算符宏定義:用一個指定的標識符來代表一個字符串。宏定義的基本思想是:一次定義,多次使用。其優(yōu)點是:可以用簡短的標識符來代替長的數(shù)據(jù),減少需要輸入的字符數(shù);用易于理解的標識符來代替那些不太好記的具體的數(shù)據(jù),便于程序的理解和維護;有利于程序的修改和升級,當這個數(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;}不用此法一次定義多次使用if(myMoney>80.0)#define(2)const常量常量數(shù)據(jù):整數(shù)(12)、字符(‘a(chǎn)’)、
字符串(“hello”)和實數(shù)(3.14)等;以變量的形式來定義的一個量,并且通
過使用關(guān)鍵字const,來表明這個變量的
值不能被改變。如:constintx=1。(2)const常量常量數(shù)據(jù):整數(shù)(12)、字符(‘a(chǎn)’)(3)算術(shù)運算整數(shù)的算術(shù)運算 最快
帶有硬件支持的浮點運算 較慢
用軟件來實現(xiàn)的浮點運算 非常慢
+,- 快
×
÷
sin,log,sqrt,etc 慢(3)算術(shù)運算整數(shù)的算術(shù)運算 最快
帶有硬件支持的浮點結(jié)論:盡量使用整數(shù)(char、short、int和long)的加法和減法;如果沒有硬件支持,盡量避免使用乘法;盡量避免使用除法;如果沒有硬件支持,盡量避免使用浮點數(shù);數(shù)學庫函數(shù)使用得越少越好。結(jié)論:(4)位運算C語言有很多位操作運算符:& 與操作;| 或操作;^ 異或操作;~ 取反操作;>> 右移操作;<< 左移操作。(4)位運算C語言有很多位操作運算符:a|=0x4
b&=~0x4
c&=~(1<<3)
d^=(1<<5)
e>>=2
//把第2位設置為1//把第2位設置為0//把第3位設置為0//把第5位反轉(zhuǎn)//把e除以4a|=0x4 //把第2位設置為1//把第2位設置intx,num=99,count=0;x=num;while(x){count++;x=x&(x?1);}printf("result:%d",count);result:4intx,num=99,count=0;re分支語句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?分支語句if(a==1)switch(a)AnyDif-then-else語句的匯編代碼$L1:cmpdwordptr[ebp-4],1#把a與常量1進行比較jne $L2#如果不相同,跳到$L2繼續(xù)比較下一個值call_ant#如果相同,調(diào)用ant()函數(shù)jmp $END#跳轉(zhuǎn)到這段代碼的末尾$L2:cmpdwordptr[ebp-4],2#把a與常量2進行比較jne $L3#如果不相同,跳到$L3繼續(xù)比較下一個值call_bar#如果相同,調(diào)用bar()函數(shù)jmp $END#跳轉(zhuǎn)到這段代碼的末尾$L3:...$END:if-then-else語句的匯編代碼$L1:switch語句的匯編代碼-1JmpTabledword$L1,$L2,$L3,$L4,$L5,$L6
moveax,dwordptr[ebp-4]#取出變量a的值movdwordptr[ebp-8],eax#保存在臨時變量中movecx,dwordptr[ebp-8]#取出,放在ecx中subecx,1#減1movdwordptr[ebp-8],ecx#保存回去cmpdwordptr[ebp-8],5#與5進行比較ja$END#若大于5,結(jié)束movedx,dwordptr[ebp-8]#取出該值,放edxjmpdwordptr[edx*4+JmpTable]#跳轉(zhuǎn)到相應的#case標記switch語句的匯編代碼-1JmpTabledworswitch語句的匯編代碼-2$L1: #case1call_antjmp$END$L2: #case2call_barjmp$END......$L5: #case5call_eatjmp$END$L6: #case6call_foo$END:switch語句的匯編代碼-2$L1: #case結(jié)論:假設a的取值個數(shù)為n,對于if-then-else語句,時間復雜度為O(n),而對于switch語句,時間復雜度為O(1);如果n的值較小,兩種語句均可;如果n的值較大,則switch語句更佳。結(jié)論:函數(shù)函數(shù)原型main()
{
……
函數(shù)調(diào)用
……
}函數(shù)定義函數(shù)的使用模式聲明該函數(shù)定義一個函數(shù)使用該函數(shù)函數(shù)函數(shù)原型函數(shù)的使用模式聲明該函數(shù)定義一個函數(shù)使用該函數(shù)操作系統(tǒng)代碼棧幀2棧幀1全局變量內(nèi)存分布狀況全局變量區(qū)域靜態(tài)分配棧自動分配堆動態(tài)分配操作系統(tǒng)代碼棧幀2棧幀1全局變量內(nèi)存分布狀況全局變量區(qū)域靜態(tài)主函數(shù)的執(zhí)行過程intz;voidmain(){intx,y;x=1;y=2;z=x+y;}…main(){…}…
z=0全局變量區(qū)域棧幀(main)x=y=程序123主函數(shù)的執(zhí)行過程intz;…main()…z控制流與數(shù)據(jù)流控制流:程序當前執(zhí)行位置的流向;數(shù)據(jù)流:函數(shù)調(diào)用發(fā)生及結(jié)束時,數(shù)據(jù)在 函數(shù)之間流轉(zhuǎn)的過程。控制流與數(shù)據(jù)流控制流:程序當前執(zhí)行位置的流向;當一個函數(shù)被調(diào)用時:在內(nèi)存的棧空間當中為其分配一個棧幀,用來存放該函數(shù)的形參和局部變量;把實參變量的值復制到相應的形參變量;控制轉(zhuǎn)移到該函數(shù)的起始位置;該函數(shù)開始執(zhí)行;控制流和返回值返回到函數(shù)調(diào)用點。函數(shù)調(diào)用過程當一個函數(shù)被調(diào)用時:函數(shù)調(diào)用過程控制流的變化voidmain(){doublex,y,z;y=6.0;x=Area(y/3.0);...z=3.4*Area(7.88);...}/*給定半徑,計算一個圓的面積*/doubleArea(doubler){return(3.14*r*r);}控制流的變化voidmain()/*給定半徑,計算一個簡單的例子intTimes2(intvalue);
main()
{
intnumber;
printf(“請輸入一個整數(shù):”);
scanf(“%d”,&number);
printf(“該數(shù)的兩倍是:%d”,Times2(number));
}intTimes2(intvalue)
{
return(2*value);
}mainnumber3一個簡單的例子intTimes2(intvalue)intTimes2(intvalue);
main()
{
intnumber;
printf(“請輸入一個整數(shù):”);
scanf(“%d”,&number);
printf(“該數(shù)的兩倍是:%d”,Times2(number));
}intTimes2(intvalue)
{
return(2*value);
}mainnumber3Times2valueTimes2也得到一個棧幀,
它的參數(shù)看成局部變量intTimes2(intvalue);
mainintTimes2(intvalue);
main()
{
intnumber;
printf(“請輸入一個整數(shù):”);
scanf(“%d”,&number);
printf(“該數(shù)的兩倍是:%d”,Times2(number));
}intTimes2(intvalue)
{
return(2*value);
}mainnumber3Times2value3“值傳遞”,把實參的值
傳給形參。intTimes2(intvalue);
mainintTimes2(intvalue);
main()
{
intnumber;
printf(“請輸入一個整數(shù):”);
scanf(“%d”,&number);
printf(“該數(shù)的兩倍是:%d”,Times2(number));
}intTimes2(intvalue)
{
return(2*value);
}main3把Times2的棧幀疊在主
函數(shù)的棧幀之上,說明
在執(zhí)行Times2函數(shù)時,
主函數(shù)中的變量是不可
見的。Times2value3intTimes2(intvalue);
mainintTimes2(intvalue);
main()
{
intnumber;
printf(“請輸入一個整數(shù):”);
scanf(“%d”,&number);
printf(“該數(shù)的兩倍是:%d”,Times2(number));
}intTimes2(intvalue)
{
return(2*value);
}mainnumber36Times2函數(shù)的返回值被
放在函數(shù)的調(diào)用位置上,
然后,分配給Times2函
數(shù)的堆棧區(qū)域被釋放。intTimes2(intvalue);
main變量的存儲與作用域/*全局變量,固定地址,其他源文件可見*/intglobal_static;/*靜態(tài)全局變量,固定地址,但只在本文件中可見*/staticintfile_static;/*函數(shù)參數(shù):位于棧幀當中,動態(tài)創(chuàng)建,動態(tài)釋放*/intfoo(intauto_param){/*靜態(tài)局部變量,固定地址,只在本函數(shù)中可見*/staticintfunc_static;/*普通局部變量,位于棧幀當中,只在本函數(shù)可見*/intauto_i,auto_a[10];/*動態(tài)申請的內(nèi)存空間,位于堆當中*/double*auto_d=malloc(sizeof(double)*5);returnauto_i;}變量的存儲與作用域/*全局變量,固定地址,其他源文件可見可重入函數(shù)-1可以被一個以上的任務調(diào)用,而不必擔心數(shù)據(jù)的破壞。可重入型函數(shù)任何時候都可以被中斷,一段時間以后又可以運行,而相應數(shù)據(jù)不會丟失。可重入型函數(shù)只使用局部變量,即變量保存在CPU寄存器或棧中。一個不可重入型函數(shù)的例子inttemp;voidswap(int*x,int*y){temp=*x;*x=*y;*y=temp;}可重入函數(shù)-1可以被一個以上的任務調(diào)用,而不必擔心數(shù)據(jù)的破壞可重入函數(shù)-2一個可重入型函數(shù)的例子voidswap(int*x,int*y){inttemp;temp=*x;*x=*y;*y=temp;}可重入函數(shù)-2一個可重入型函數(shù)的例子不可重入函數(shù)被中斷破壞不可重入函數(shù)被中斷破壞本節(jié)提要132嵌入式系統(tǒng)硬件基礎嵌入式系統(tǒng)軟件基礎嵌入式系統(tǒng)的選型選擇原則和設計工具本節(jié)提要132嵌入式系統(tǒng)硬件基礎嵌入式系統(tǒng)軟件基礎嵌入式系統(tǒng)2.3.1嵌入式系統(tǒng)的選型原則硬件平臺的選擇
內(nèi)核的選擇:取決于應用的領(lǐng)域、用戶的需求、成本、開發(fā)的難易程度等
外圍設備的選擇:2.3.1嵌入式系統(tǒng)的選型原則硬件平臺的選擇2.3.1嵌入式系統(tǒng)的選型原則2.操作系統(tǒng)的選型原則
操作系統(tǒng)的硬件支持開發(fā)工具的支持程度能否滿足應用需求自建操作系統(tǒng)
2.3.1嵌入式系統(tǒng)的選型原則2.操作系統(tǒng)的選型原則2.3.2嵌入式系統(tǒng)的設計工具嵌入式系統(tǒng)的設計方法2.3.2嵌入式系統(tǒng)的設計工具嵌入式系統(tǒng)的設計方法嵌入式系統(tǒng)的設計方法系統(tǒng)需求分析系統(tǒng)集成系統(tǒng)測試產(chǎn)品硬件設計軟件設計執(zhí)行裝置設計體系結(jié)構(gòu)設計嵌入式系統(tǒng)的設計方法系統(tǒng)需求分析系統(tǒng)集成系統(tǒng)測試產(chǎn)品硬件設計2.3.3嵌入式系統(tǒng)開發(fā)模式宿主機目標機宿主機與目標機的連接2.3.3嵌入式系統(tǒng)開發(fā)模式宿主機嵌入式開發(fā)工具與開發(fā)環(huán)境嵌入式開發(fā)工具與開發(fā)環(huán)境嵌入式軟件開發(fā)流程嵌入式軟件開發(fā)流程桌面應用程序的編譯和加載過程桌面應用程序的編譯和加載過程嵌入式應用程序的編譯和加載過程嵌入式應用程序的編譯和加載過程2.3.4嵌入式軟件開發(fā)工具設計生產(chǎn)編譯器鏈接器調(diào)試器IDE操作系統(tǒng)軟件測試評估板仿真器邏輯分析儀邊界掃描測試儀編程器2.3.4嵌入式軟件開發(fā)工具設計生產(chǎn)編譯器鏈接器調(diào)試器ID開發(fā)環(huán)境什么是嵌入式開發(fā)環(huán)境:源程序編譯器目標文件鏈接器可重定位程序定位器可執(zhí)行文件編譯器/匯編器/鏈接定位器調(diào)試器/仿真器主機(Host)及其工作平臺實時操作系統(tǒng)(可選)目標評估系統(tǒng)(可選)測試工具(軟件/硬件/協(xié)議等,可選)其他輔助設備(可選)典型的開發(fā)環(huán)境開發(fā)環(huán)境什么是嵌入式開發(fā)環(huán)境:源程序編譯器目標文件鏈接器可重ARM的編譯器(1)ADS1.2ARM公司出品IDE環(huán)境,包括ARM/Thumb匯編器:armasmANSIC編譯器-armcc和tccISO/EmbeddedC++編譯器-armcppandtcpp鏈接器–armlinkWindows集成開發(fā)環(huán)境–CodeWarrior格式轉(zhuǎn)換器–fromelf庫管理器-armar調(diào)試器模擬調(diào)試器:ARMulatorJTAG調(diào)試:AXD(與Multi-ICE配合)支持所有ARM內(nèi)核,最新版本:RealView2.0ARM的編譯器(1)ADS1.2ARM的編譯器(2)EW-ARM瑞典IAR公司出品著名的嵌入式工具提供商,以提供編譯器/協(xié)議棧/統(tǒng)一建模工具著稱主要產(chǎn)品:EmbededWorkbench(EW)、MakeAPP、VisualState等EW-ARM:針對ARM的集成開發(fā)環(huán)境:C/C++編譯器C-SPY模擬調(diào)試器ROM-Monitor多種級別代碼優(yōu)化方法,滿足用戶在速度、文件大小方面的要求內(nèi)建ARM特性優(yōu)化器支持多種斷點模式支持Nucleus,VxWorks等RTOSGreenhillsGNUARM的編譯器(2)EW-ARM嵌入式系統(tǒng)的調(diào)試(1)嵌入式系統(tǒng)的調(diào)試的幾種基本方法:
直接測試法調(diào)試監(jiān)控器法ROM仿真器法在線仿真器法片上調(diào)試法模擬調(diào)試(Simulator)嵌入式系統(tǒng)的調(diào)試(1)嵌入式系統(tǒng)的調(diào)試的幾種基本方法:調(diào)試監(jiān)控器法主機和目標板通過某種接口(通常是串口)連接,主機上提供調(diào)試界面,待調(diào)試軟件下載到目標板上運行。這種方式的先決條件是要在Host和Target之間建立起通信聯(lián)系(目標板上稱為監(jiān)控程序Monitor)優(yōu)點:純軟件,價格較低,簡單,軟件調(diào)試能力較強缺點:需要事先燒制Monitor(往往需多次試驗才能成功)且目標板工作正常,功能有限,特別是硬件調(diào)試能力較差。
PCTargetMonitor串口調(diào)試監(jiān)控器法PCTargetMonitor串口片上調(diào)試法BDM/JTAG調(diào)試
這種方式有一個硬件調(diào)試體。該硬件調(diào)試體與目標板通過BDM、JTAG等調(diào)試接口相連,與主機通過串口、并口、網(wǎng)口或USB口相連。待調(diào)試軟件通過BDM/JTAG調(diào)試器下載到目標板上運行。優(yōu)點:方便、簡單,無須制作Monitor,軟硬件均可調(diào)試缺點:需要目標板,且目標板工作基本正常(至少MCU工作正常),僅適用于有調(diào)試接口的芯片
TargetPC接口BDM/JTAGDebugger片上調(diào)試法BDM/JTAG調(diào)試TargetPC接口BDM/J在線仿真器法
全仿真調(diào)試(Emulator)
這種方式用仿真器完全取代目標板上的MCU,因而目標系統(tǒng)對開發(fā)者來說完全是透明的、可控的。仿真器與目標板通過仿真頭連接,與主機有串口、并口、網(wǎng)口或USB口等連接方式。由于仿真器自成體系,調(diào)試時既可以連接目標板,也可以不連接目標板(Standalone)。優(yōu)點:功能非常強大,軟硬件均可做到完全實時在線調(diào)試缺點:價格昂貴。在線仿真器法
全仿真調(diào)試(Emulator)ARM的調(diào)試方式模擬調(diào)試SDT2.52:ARMulatorADS1.2:ARMulatorTrace32:SimulatorEW-ARM:C-spy軟件調(diào)試ADS1.2:Angel(串口)SDT2.52Angel(串口)JTAG調(diào)試ARM:Multi-ICE,簡易型仿真器Trace32-ICDforARMHitex:TantoforARM全仿真調(diào)試Trace32-FIRE/ICEARM的調(diào)試方式模擬調(diào)試ARM調(diào)試工具Multi-ICEARM公司出品與ADS配套使用支持不同的ARM內(nèi)核另有Multi-trace模塊可選ARM調(diào)試工具Multi-ICE謝謝各位
謝謝各位
嵌入式系統(tǒng)設計與實例開發(fā)—基于ARM微處理器與實時操作系統(tǒng)第二講基本概念及設計方法主講教師:羅子波副教授嵌入式系統(tǒng)設計與實例開發(fā)本節(jié)提要132嵌入式系統(tǒng)硬件知識嵌入式系統(tǒng)軟件知識嵌入式系統(tǒng)的選擇原則和設計工具本節(jié)提要132嵌入式系統(tǒng)硬件知識嵌入式系統(tǒng)軟件知識嵌入式系統(tǒng)嵌入式微處理器簡介嵌入式微處理器體系結(jié)構(gòu)嵌入式微處理器的分類2.1嵌入式系統(tǒng)硬件知識嵌入式微處理器簡介2.1嵌入式系統(tǒng)硬件知識嵌入式微處理器簡介嵌入式硬件系統(tǒng)組成:嵌入式微處理器:控制單元ALU 寄存器存儲器輸入/輸出單元嵌入式微處理器簡介嵌入式硬件系統(tǒng)組成:嵌入式處理器的基本結(jié)構(gòu)(1)微處理器是整個系統(tǒng)的核心,通常由3大部分組成:控制單元、算術(shù)邏輯單元和寄存器。算術(shù)邏輯單元寄存器控制單元微處理器存儲器輸入輸出嵌入式處理器的基本結(jié)構(gòu)(1)微處理器是整個系統(tǒng)的核心,通常由嵌入式處理器的基本結(jié)構(gòu)(2)控制單元:主要負責取指、譯碼和取操作數(shù)等基本動作,并發(fā)送主要的控制指令。控制單元中包括兩個重要的寄存器:程序計數(shù)器(PC)和指令寄存器(IR)。程序計數(shù)器用于記錄下一條程序指令在內(nèi)存中的位置,以便控制單元能到正確的內(nèi)存位置取指;指令寄存器負責存放被控制單元所取的指令,通過譯碼,產(chǎn)生必要的控制信號送到算術(shù)邏輯單元進行相關(guān)的數(shù)據(jù)處理工作。算術(shù)邏輯單元:算術(shù)邏輯單元分為兩部分,一部分是算術(shù)運算單元,主要處理數(shù)值型的數(shù)據(jù),進行數(shù)學運算,如加、減、乘、除或數(shù)值的比較;另一部分是邏輯運算單元,主要處理邏輯運算工作,如AND、OR、XOR或NOT等運算。寄存器:用于存儲暫時性的數(shù)據(jù)。主要是從存儲器中所得到的數(shù)據(jù)(這些數(shù)據(jù)被送到算術(shù)邏輯單元中進行處理)和算術(shù)邏輯單元中處理好的數(shù)據(jù)(再進行算術(shù)邏輯運行或存入到存儲器中。
嵌入式處理器的基本結(jié)構(gòu)(2)控制單元:主要負責取指、譯碼和取馮·諾依曼體系結(jié)構(gòu)和哈佛體系結(jié)構(gòu)CISC與RISC信息存儲的字節(jié)順序IP核流水線存儲器系統(tǒng)2.1.2嵌入式微處理器體系結(jié)構(gòu)馮·諾依曼體系結(jié)構(gòu)和哈佛體系結(jié)構(gòu)2.1.2嵌入式微處理器體馮·諾依曼體系結(jié)構(gòu)模型指令寄存器控制器數(shù)據(jù)通道輸入輸出中央處理器存儲器程序指令0指令1指令2指令3指令4數(shù)據(jù)數(shù)據(jù)0數(shù)據(jù)1數(shù)據(jù)2馮·諾依曼體系結(jié)構(gòu)模型指令寄存器控制器數(shù)據(jù)通道輸入輸出中央處哈佛體系結(jié)構(gòu)指令寄存器控制器數(shù)據(jù)通道輸入輸出中央處理器程序存儲器指令0指令1指令2數(shù)據(jù)存儲器數(shù)據(jù)0數(shù)據(jù)1數(shù)據(jù)2地址指令地址數(shù)據(jù)哈佛體系結(jié)構(gòu)指令寄存器控制器數(shù)據(jù)通道輸入輸出中央處理器程序存CISC和RISCCISC:復雜指令集(ComplexInstructionSetComputer)具有大量的指令和尋址方式8/2原則:80%的程序只使用20%的指令大多數(shù)程序只使用少量的指令就能夠運行。RISC:精簡指令集(ReducedInstructionSetComputer)在通道中只包含最有用的指令確保數(shù)據(jù)通道快速執(zhí)行每一條指令使CPU硬件結(jié)構(gòu)設計變得更為簡單
CISC和RISCCISC:復雜指令集(ComplexInCISC與RISC的數(shù)據(jù)通道IFIDREGALUMEM開始退出IFIDALUMEMREG微操作通道開始退出單通數(shù)據(jù)通道CISC與RISC的數(shù)據(jù)通道IFIDREGALUMEM開始退CISC的背景和特點背景:存儲資源緊缺,強調(diào)編譯優(yōu)化增強指令功能,設置一些功能復雜的指令,把一些原來由軟件實現(xiàn)的、常用的功能改用硬件的(微程序)指令系統(tǒng)來實現(xiàn)為節(jié)省存儲空間,強調(diào)高代碼密度,指令格式不固定,指令可長可短,操作數(shù)可多可少尋址方式復雜多樣,操作數(shù)可來自寄存器,也可來自存儲器采用微程序控制,執(zhí)行每條指令均需完成一個微指令序列(微程序)CPI>5,指令越復雜,CPI越大。CISC的背景和特點背景:存儲資源緊缺,強調(diào)編譯優(yōu)CISC的主要缺點指令使用頻度不均衡。高頻度使用的指令占據(jù)了絕大部分的執(zhí)行時間,擴充的復雜指令往往是低頻度指令。大量復雜指令的控制邏輯不規(guī)整,不適于VLSI工藝VLSI的出現(xiàn),使單芯片處理機希望采用規(guī)整的硬聯(lián)邏輯實現(xiàn),而不希望用微程序,因為微程序的使用反而制約了速度提高。(微碼的存控速度比CPU慢5-10倍)。軟硬功能分配復雜指令增加硬件的復雜度,使指令執(zhí)行周期大大加長,直接訪存次數(shù)增多,降低了CPU性能。不利于先進指令級并行技術(shù)的采用流水線技術(shù)CISC的主要缺點指令使用頻度不均衡。RISC基本設計思想減小CPI:CPUtime=Instr_Count*CPI*Clock_cycle精簡指令集:保留最基本的,去掉復雜、使用頻度不高的指令采用Load/Store結(jié)構(gòu),有助于減少指令格式,統(tǒng)一存儲器訪問方式采用硬接線控制代替微程序控制RISC基本設計思想減小CPI:CPUtime=Instr典型的高性能RISC處理器SUN公司的SPARC(1987)MIPS公司的SGI:MIPS(1986)HP公司的PA-RISC,IBM,Motorola公司的PowerPCDEC、Compac公司的AlphaAXPIBM的RS6000(1990)第一臺SuperscalarRISC機
典型的高性能RISC處理器SUN公司的SPARC(1987)CISC與RISC的對比類別CISCRISC指令系統(tǒng)指令數(shù)量很多較少,通常少于100執(zhí)行時間有些指令執(zhí)行時間很長,如整塊的存儲器內(nèi)容拷貝;或?qū)⒍鄠€寄存器的內(nèi)容拷貝到存貯器沒有較長執(zhí)行時間的指令編碼長度編碼長度可變,1-15字節(jié)編碼長度固定,通常為4個字節(jié)尋址方式尋址方式多樣簡單尋址操作可以對存儲器和寄存器進行算術(shù)和邏輯操作只能對寄存器對行算術(shù)和邏輯操作,Load/Store體系結(jié)構(gòu)編譯難以用優(yōu)化編譯器生成高效的目標代碼程序采用優(yōu)化編譯技術(shù),生成高效的目標代碼程序CISC與RISC的對比類別CISCRISC指令系統(tǒng)指令數(shù)量for(i=0;i<10000;++i)
/*各種算術(shù)運算操作*/實驗平臺:桌面IntelPentium4,帶硬件浮點支持Operator Time Operator Time
+(int) 1 +(double) 5
*(int) 5 *(double) 5
/(int) 12 /(double) 10
<<(int) 2 sin 48
小實驗1for(i=0;i<10000;++i)
/信息存儲的字節(jié)順序大端模式字數(shù)據(jù)的高位字節(jié)存儲在低地址中字數(shù)據(jù)的低字節(jié)則存放在高地址中小端模式低地址中存放字數(shù)據(jù)的低字節(jié)高地址中存放字數(shù)據(jù)的高字節(jié)3124
2316
158
70字地址11109887654432100低地址高地址3124
2316
158
70字地址89101184567401230低地址高地址信息存儲的字節(jié)順序大端模式3124231615870字示例A.小端存儲法(0x01234567)地址0x80000x80010x80020x8003數(shù)據(jù)(16進制表示)0x670x450x230x01數(shù)據(jù)(二進制表示)01100111010001010010001100000001B.大端存儲法地址0x80000x80010x80020x8003數(shù)據(jù)(16進制表示)0x010x230x450x67數(shù)據(jù)(二進制表示)00000001001000110100010101100111示例A.小端存儲法(0x01234567)地址0x8000TheARM可以用little/bigendian格式存取數(shù)據(jù).r0=0x11223344STRr0,[r1]LDRBr2,[r1]r1=0x100Memory32100123ByteLane312423161587011223344312423161587011223344312423161587011223344312423161587000000044312423161587000000011LittleendianBigendianR2=0x44R2=0x11Formoreinformation,see:“ApplicationNote61:BigandLittleEndianByteAddressing”字節(jié)順序TheARM可以用little/bigendian2.1.3嵌入式微處理器的分類2.1.3嵌入式微處理器的分類本節(jié)提要132嵌入式系統(tǒng)硬件知識嵌入式系統(tǒng)軟件知識嵌入式系統(tǒng)的選擇原則和設計工具本節(jié)提要132嵌入式系統(tǒng)硬件知識嵌入式系統(tǒng)軟件知識嵌入式系統(tǒng)2.2.1嵌入式軟件概述規(guī)模較小開發(fā)難度大實時性和可靠性要求高要求固化存儲2.2.1嵌入式軟件概述規(guī)模較小2.2.1嵌入式軟件體系結(jié)構(gòu)無操作系統(tǒng)的情形在嵌入式系統(tǒng)的發(fā)展初期,由于硬件的配置比較低,對于是否有系統(tǒng)軟件的支持,要求還不是很強烈。在那個階段,嵌入式軟件的設計主要是以應用為核心,應用軟件直接建立在硬件上,沒有專門的操作系統(tǒng)。有操作系統(tǒng)的情形2.2.1嵌入式軟件體系結(jié)構(gòu)無操作系統(tǒng)的情形無操作系統(tǒng)的情形循環(huán)輪詢系統(tǒng):(PollingLoop)最簡單的軟件結(jié)構(gòu),程序依次檢查系統(tǒng)的每個輸入條件,一旦條件成立就進行相應的處理。Initialize();while(1){if(condition_1)action_1();if(condition_2)action_2();……if(condition_n)acition_n();}無操作系統(tǒng)的情形循環(huán)輪詢系統(tǒng):(PollingLoop)事件驅(qū)動系統(tǒng):(Event-Drivensystem)事件驅(qū)動系統(tǒng)是能對外部事件直接響應的系統(tǒng)。它包括前后臺、實時多任務、多處理器等,是嵌入式實時系統(tǒng)的主要形式。應用程序是一個無限循環(huán),循環(huán)中調(diào)用相應的函數(shù)完成相應操作,這部分可以看成后臺行為(background)。中斷服務程序處理異步事件,這部分可看成前臺行為(foreground)。后臺也可以叫做任務級,前臺也叫中斷級。事件驅(qū)動系統(tǒng):(Event-Drivensystem)例如,很多基于微處理器的產(chǎn)品采用前后臺系統(tǒng)設計,如微波爐、電話機、玩具等。從省電的角度出發(fā),平時微處理器處在停機狀態(tài),所有的事都靠中斷服務來完成。例如,很多基于微處理器的產(chǎn)品采用前后臺系統(tǒng)設計,如微波爐、電前后臺系統(tǒng)(后臺循環(huán)、前臺中斷)ISRISR后臺前臺ISR時間前后臺系統(tǒng)(后臺循環(huán)、前臺中斷)ISRISR后臺提高了系統(tǒng)可靠性提高了系統(tǒng)的開發(fā)效率,降低了開發(fā)成本,縮短了開發(fā)周期有利于系統(tǒng)的擴展和移植有操作系統(tǒng)的情形提高了系統(tǒng)可靠性有操作系統(tǒng)的情形2.2.3嵌入式操作系統(tǒng)的分類按系統(tǒng)的類型分:商用系統(tǒng)專用系統(tǒng)開源系統(tǒng)按響應時間分:實時硬實時系統(tǒng)軟實時系統(tǒng)非實時2.2.3嵌入式操作系統(tǒng)的分類按系統(tǒng)的類型分:按軟件結(jié)構(gòu)分類…單體結(jié)構(gòu)(MonolithicStructure)分層結(jié)構(gòu)(LayeredStructure)Outofdate…微內(nèi)核結(jié)構(gòu)(MicrokernelModel)按軟件結(jié)構(gòu)分類…單體結(jié)構(gòu)(MonolithicStruc單體結(jié)構(gòu)最常用的組織結(jié)構(gòu);整個系統(tǒng)只有一個可執(zhí)行文件,包含所有的操作系統(tǒng)組件;系統(tǒng)的結(jié)構(gòu)就是無結(jié)構(gòu),由一組函數(shù)組成,相互之間可以隨意地調(diào)用。應用軟件文件I/O存儲管理進程管理I/O驅(qū)動存儲驅(qū)動中斷驅(qū)動硬件單體內(nèi)核單體結(jié)構(gòu)最常用的組織結(jié)構(gòu);應用軟件文件I/O存儲管理進分層結(jié)構(gòu)在分層結(jié)構(gòu)(layered)中,一個操作系統(tǒng)被劃分為若干個層次(0..N),各個層次之間的調(diào)用關(guān)系是單向的,即某一層次上的代碼只能調(diào)用比它低層的代碼。這種結(jié)構(gòu)要求在每個層次上都要提供一組API接口函數(shù),這就會帶來額外的開銷分層結(jié)構(gòu)在分層結(jié)構(gòu)(layered)中,一個操作系統(tǒng)被劃分為微內(nèi)核設備驅(qū)動程序微內(nèi)核結(jié)構(gòu)操作系統(tǒng)內(nèi)核只包含最少的功能,如存儲管理和進程管理;其他的操作系統(tǒng)組件以中間件的形式存在于內(nèi)核之外;設備驅(qū)動程序完全從內(nèi)核中剝離,獨立成為一層。中間件、應用軟件存儲管理進程管理I/O驅(qū)動存儲驅(qū)動中斷驅(qū)動硬件微內(nèi)核設備驅(qū)動程序微內(nèi)核結(jié)構(gòu)操作系統(tǒng)內(nèi)核只包含最少的功能有操作系統(tǒng)的情形硬件板級
初始化設備
驅(qū)動層以太網(wǎng)
驅(qū)動串口
驅(qū)動LCD
驅(qū)動鍵盤
驅(qū)動操作
系統(tǒng)層中間件
層應用
軟件層TCP/IP
網(wǎng)絡系統(tǒng)文件
系統(tǒng)內(nèi)核嵌入式
GUI嵌入式
CORBA嵌入式
JAVA嵌入式
DCOM面向領(lǐng)域
的中間件WWW
瀏覽器MP3
播放器電子
郵件…有操作系統(tǒng)的情形硬件板級
初始化設備
驅(qū)動層以太網(wǎng)
驅(qū)動串口為什么要有設備驅(qū)動程序?嵌入式硬件設備本身無法工作,需要軟件來驅(qū)動,如初始化、控制、數(shù)據(jù)讀寫等。什么是設備驅(qū)動程序?直接與硬件打交道、對硬件進行控制和管理的軟件。在一個嵌入式系統(tǒng)中,設備驅(qū)動程序是必不可少的。設備驅(qū)動程序為什么要有設備驅(qū)動程序?設備驅(qū)動程序設備驅(qū)動程序的主要功能硬件啟動(Startup):在開機上電或重啟的時候,對硬件進行初始化;硬件關(guān)閉(Shutdown):把硬件配置成關(guān)機狀態(tài);硬件停用(Disable):暫停使用硬件;硬件啟用(Enable):重新啟用硬件;硬件讀操作(Read):從硬件中讀取數(shù)據(jù);硬件寫操作(Write):往硬件中寫數(shù)據(jù);……設備驅(qū)動程序的主要功能硬件啟動(Startup):在開機上電嵌入式中間件中間件(Middleware):在OS內(nèi)核、設備驅(qū)動程序和應用軟件之外的所有系統(tǒng)軟件;中間件的基本思路:把原本屬于應用軟件層的一些通用的功能模塊抽取出來,形成獨立的一層軟件,從而為運行在其上的各個應用軟件提供一個靈活、安全、移植性好、相互通信、協(xié)同工作的平臺;優(yōu)點:實現(xiàn)軟件的可重用,降低應用軟件的復雜性,降低開發(fā)成本。嵌入式中間件中間件(Middleware):在OS內(nèi)核、設備2.2.4嵌入式操作系統(tǒng)的幾個概念占先式內(nèi)核調(diào)度策略分析任務優(yōu)先級分配時間的可確定性任務切換時間中斷響應時間優(yōu)先級反轉(zhuǎn)任務執(zhí)行時間的抖動任務劃分2.2.4嵌入式操作系統(tǒng)的幾個概念占先式內(nèi)核2.2.5常見的嵌入式操作系統(tǒng)實時嵌入式操作系統(tǒng)的種類繁多,大體上可分為兩種,商用型和免費型。商用型的實操作系統(tǒng)功能穩(wěn)定、可靠,有完善的技術(shù)支持和售后服務,但往往價格昂貴μC/OS。免費型的實時操作系統(tǒng)在價格方面具有優(yōu)勢,目前主要有Linux和,穩(wěn)定性與服務性存在挑戰(zhàn)。2.2.5常見的嵌入式操作系統(tǒng)實時嵌入式操作系統(tǒng)的種類VxWorksVxWorks操作系統(tǒng)是美國WindRiver公司于1983年設計開發(fā)的一種嵌入式實時操作系統(tǒng)(RTOS),具有良好的持續(xù)發(fā)展能力、高性能的內(nèi)核以及友好的用戶開發(fā)環(huán)境,在嵌入式實時操作系統(tǒng)領(lǐng)域牢牢占據(jù)著一席之地。VxWorks所具有的顯著特點是:
-可靠性、實時性和可裁減性。 -它支持多種處理器,如x86、i960、SunSparc、MotorolaMC68xxx、MIPS、POWERPC等等。大多數(shù)的VxWorksAPI是專有的,火星機器人。VxWorksVxWorks操作系統(tǒng)是美國WindRiverWindowsEmbeddedWindowsCE3.0:一種針對小容量、移動式、智能化、32位、連接設備的模塊化實時嵌入式操作系統(tǒng)。針對掌上設備、無線設備的動態(tài)應用程序和服務提供了一種功能豐富的操作系統(tǒng)平臺,WindowsCE嵌入但不夠?qū)崟r,屬于軟實時操作系統(tǒng),由于其Windows背景,界面比較統(tǒng)一認可。操作系統(tǒng)的基本內(nèi)核需要至少200K的ROM。WindowsEmbeddedWindowsCE3.0PalmOSPalmOS是著名的網(wǎng)絡設備制造商3COM旗下的PalmComputing掌上電腦公司的產(chǎn)品。3COM、CISCO競爭PalmOS在PDA市場上占有很大的市場份額,PalmOS的市場份額占到將近90%,最近下降70%,目前主要與WINCE進行激烈競爭。PalmOSPalmOS是著名的網(wǎng)絡設備制造商3COM旗QNX加拿大QNX公司的產(chǎn)品。QNX是在X86體系上面開發(fā)出來的,這和別的RTOS不一樣,別的好多RTOS都是從68K的CPU上面開發(fā)成熟,然后再移植到X86體系上面來的。QNX是一個實時的、可擴充的操作系統(tǒng),它部分遵循POSIX相關(guān)標準,由于QNX具有強大的圖形界面功能,因此很適合作為機頂盒、手持設備(手掌電腦、手機)、GPS設備的實時操作系統(tǒng)使用。QNX加拿大QNX公司的產(chǎn)品。嵌入式Linux嵌入式系統(tǒng)越來越追求數(shù)字化、網(wǎng)絡化和智能化。因此原來在某些設備或領(lǐng)域中占主導地位的軟件系統(tǒng)越來越難以為繼,整個系統(tǒng)必須是開放的、提供標準的API,并且能夠方便地與眾多第三方的軟硬件溝通。Linux是開放源碼的,不存在黑箱技術(shù),遍布全球的眾多Linux愛好者又是Linux開發(fā)的強大技術(shù)后盾。Linux的內(nèi)核小、功能強大、運行穩(wěn)定、系統(tǒng)健壯、效率高,易于定制剪裁,在價格上極具競爭力。Linux不僅支持x86CPU,還可以支持其他數(shù)十種CPU芯片。嵌入式Linux嵌入式系統(tǒng)越來越追求數(shù)字化、網(wǎng)絡化和智能化。
嵌入式Linux(EmbeddedLinux)是指對Linux經(jīng)過小型化裁剪后,能夠固化在容量只有幾百K字節(jié)或幾兆字節(jié)的存儲器芯片或單片機中,應用于特定嵌入式場合的專用Linux操作系統(tǒng)。嵌入式Linux的開發(fā)和研究是目前操作系統(tǒng)領(lǐng)域的一個熱點。主要有RTLinux和CLinuxLinux在嵌入式領(lǐng)域異軍突起不過是近兩年的事情,過去的一年中有13%的用戶已經(jīng)開始使用嵌入式Linux系統(tǒng)進行開發(fā)工作;有52%的用戶決定在未來24個月內(nèi)開始使用Linux作為嵌入式操作系統(tǒng)的開發(fā)原型。嵌入式Linux及應用嵌入式Linux(EmbeddedLinux)是指對LiC/OS及C/OS-II
1、C/OS——MicroControllerOS,微控制器操作系統(tǒng)2、C/OS簡介美國人JeanLabrosse1992年完成應用面覆蓋了諸多領(lǐng)域,如照相機、醫(yī)療器械、音響設備、發(fā)動機控制、高速公路電話系統(tǒng)、自動提款機等1998年C/OS-II,目前的版本C/OS-IIV2.61,2.722000年,得到美國航空管理局(FAA)的認證,可以用于飛行器中網(wǎng)站www.ucos-II.com()C/OS及C/OS-II
1、C/OS——Micro嵌入式C程序設計“whichofthefollowingprogramminglanguages
haveyouusedforembeddedsystemsinthelast
12months” C 81%
Assembly 70%
C++ 39%
VisualBasic 16%
Java 7%Source:“ESP:A10-yearretrospective”,Embedded
SystemsProgramming,November,1998嵌入式C程序設計“whichofthefollowin嵌入式軟件的目標函數(shù)必須正確;源代碼簡潔、可讀性好、可維護;實時性要求較高的代碼能夠運行得足夠快;目標代碼小且高效??傊?,要優(yōu)化對以下三種資源的使用:執(zhí)行時間;存儲空間;開發(fā)/維護時間。嵌入式軟件的目標函數(shù)必須正確;數(shù)據(jù)類型與運算符宏定義:用一個指定的標識符來代表一個字符串。#define標識符字符串如:#definePI3.1415926,其作用是指定用標識符PI來代替“3.1415926”這個字符串,在編譯預處理時,將程序中出現(xiàn)的所有PI都用“3.1415926”代替。(1)宏定義數(shù)據(jù)類型與運算符宏定義:用一個指定的標識符來代表一個字符串。宏定義的基本思想是:一次定義,多次使用。其優(yōu)點是:可以用簡短的標識符來代替長的數(shù)據(jù),減少需要輸入的字
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 建筑業(yè)項目合作協(xié)議范本
- 四年級數(shù)學(四則混合運算帶括號)計算題專項練習與答案
- 管道修復執(zhí)行的國內(nèi)外標準
- 會議布置合同范例
- ppp旅游項目合同范例
- 冷鏈道路運輸合同范例
- 第三章球類運動-《籃球運球三步上籃》教學設計 2023-2024學年華東師大版初中體育與健康七年級
- 倉庫管理員年終工作總結(jié)x
- 安全教育主題班會總結(jié)
- 中石油epc合同范本
- (二調(diào))武漢市2025屆高中畢業(yè)生二月調(diào)研考試 生物試卷(含標準答案)
- (一模)臨沂市2025屆高三高考第一次模擬考試政治試卷(含答案詳解)
- 2025年安徽職業(yè)技術(shù)學院單招職業(yè)適應性考試題庫含答案
- 2025年中考百日誓師大會校長發(fā)言稿(二)
- 1.2男生女生課件(共15張)-2024-2025學年統(tǒng)編版道德與法治七年級下冊
- 2025年安徽審計職業(yè)學院單招職業(yè)技能測試題庫附答案
- 2025年共青科技職業(yè)學院單招職業(yè)技能測試題庫學生專用
- Module 2 Unit 2 It will snow in Harbin.(說課稿)-2023-2024學年外研版(三起)英語六年級下冊
- 真需求-打開商業(yè)世界的萬能鑰匙
- 2025屆湖北省武漢市高考數(shù)學一模試卷含解析
- DZ∕T 0080-2010 煤炭地球物理測井規(guī)范(正式版)
評論
0/150
提交評論