第三章 嵌入式處理器_第1頁
第三章 嵌入式處理器_第2頁
第三章 嵌入式處理器_第3頁
第三章 嵌入式處理器_第4頁
第三章 嵌入式處理器_第5頁
已閱讀5頁,還剩159頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

3/12/20241第三章嵌入式處理器3.1引言3.2嵌入式處理器的特點(diǎn)3.3嵌入式處理器的分類3.4典型的嵌入式處理器3.5嵌入式處理器的發(fā)展趨勢(shì)3.6嵌入式處理器的選擇原則3.7實(shí)例分析--ARM微處理器的編程模型3/12/202423.1引言種類繁多、千花齊放據(jù)不完全統(tǒng)計(jì),全世界嵌入式處理器的品種總量已經(jīng)超過1000多種,流行體系結(jié)構(gòu)有30幾個(gè)系列兩大主流體系結(jié)構(gòu)低檔8051(8位)體系結(jié)構(gòu)高檔ARM(32位)體系結(jié)構(gòu)嵌入式處理器的一些基本情況處理速度:0.1MIPS~2000MIPS尋址空間:64KB~256MB常用封裝:8個(gè)引腳~300個(gè)引腳

3/12/202433.2嵌入式處理器的特點(diǎn)硬件結(jié)構(gòu)低檔處理器多采用哈佛結(jié)構(gòu)即數(shù)據(jù)存儲(chǔ)空間和程序存儲(chǔ)空間分離較大的程序存儲(chǔ)器(用于固化已調(diào)試好的控制程序)較小的數(shù)據(jù)存儲(chǔ)器(用于存放少量的隨機(jī)數(shù)據(jù)——高速)高檔處理器多采用馮·諾伊曼結(jié)構(gòu)典型的微型計(jì)算機(jī)的存儲(chǔ)器結(jié)構(gòu)采用的是馮·諾伊曼結(jié)構(gòu)——也叫普林斯頓結(jié)構(gòu)3/12/202443.2嵌入式處理器的特點(diǎn)品種規(guī)格系列化同一產(chǎn)品系列不同型號(hào)處理器具有相同CPU內(nèi)核,相同或兼容指令系統(tǒng)I/O接口功能部件配置不一樣,形成不同型號(hào)處理器對(duì)實(shí)時(shí)多任務(wù)的支持實(shí)時(shí)監(jiān)測(cè)、控制、通信多任務(wù)有效的調(diào)度3/12/202453.2嵌入式處理器的特點(diǎn)可靠性高、功耗低、集成度高、性價(jià)比高可靠性高:冗余設(shè)計(jì)、電磁兼容設(shè)計(jì)功耗低:工作電壓1.2/1.8/2.5/3.3V,工作電流1mA(1μA)集成度高:SoC設(shè)計(jì),高度集成價(jià)格低:以32位ARM系列芯片為例三星:44b0x(ARM7)——27元,2410(ARM9)——78元TI:Stellaris(ARMCortex-M3)系列32位微控制器——零售價(jià)格最低至10元

3/12/202463.3嵌入式處理器的分類1嵌入式微處理器——EMPUEmbeddedMicroProcessor

Unit2微控制器——MCUMicroController

Unit3數(shù)字信號(hào)處理器——DSPDigitalSignalProcessorDigitalSignalProcessing——數(shù)字信號(hào)處理3/12/20247嵌入式微處理器嵌入式微處理器的基礎(chǔ)就是通用CPU嵌入式微處理器在功能上和通用微處理器基本一樣,但在工作溫度、抗電磁干擾、可靠性、功耗等方面做了各種增強(qiáng)嵌入式計(jì)算機(jī)嵌入式微處理器+芯片組(總線仲裁器+中斷控制器+DMA控制器+存儲(chǔ)控制器+I/O接口)+外接存儲(chǔ)器嵌入式微處理器一般與存儲(chǔ)器、接口電路等安裝在一塊電路板上,稱為單板機(jī),如PC/104、Biscuit板等典型芯片(32、64位)386EX、486EX、奔騰、PowerPC、68k、ARM性能:100~2000MIPS存儲(chǔ)器:SDRAM-2~256MB,F(xiàn)lash-1~128MB

一般有操作系統(tǒng):Vxworks、WINCE(2MB)、uCLinux(300KB),EmbeddedLinux3/12/20248嵌入式微處理器PowerPC特點(diǎn)——可伸縮性好,方便靈活品種很多,有通用處理器、嵌入式處理器和CPU核通用處理器——主要型號(hào)是PowerPC750系列,主頻最高為700MHz嵌入式處理器——有PowerPC405(主頻最高為266MHz)和PowerPC440(主頻最高為550MHz)CPU核——用于各種集成的系統(tǒng)芯片(System-On-Chip,SOC)設(shè)備上生產(chǎn)公司:Freescale(IBM)、Motorola3/12/20249嵌入式微處理器PC/104、PC/104+單板機(jī)規(guī)范1996年6月公布了PC/104規(guī)范3.2版特點(diǎn)PC/104總線采用96mmx90mm的小板結(jié)構(gòu)低功耗,1~5瓦每模塊

,支持32位PCI連接緊湊加固性設(shè)計(jì)的PC/104工控機(jī)在軍工產(chǎn)品中得到采用,如火箭、導(dǎo)彈和戰(zhàn)斗機(jī)等PC/104總線工控機(jī)主流產(chǎn)品是486EX和586EX

3/12/202410PC/104插槽功耗小于4.5瓦3/12/202411PC104摘自周立功網(wǎng)站3/12/202412嵌入式微處理器BiscuitPC單板機(jī)特點(diǎn)一體化計(jì)算機(jī)低成本形狀像餅干,俗稱餅干計(jì)算機(jī)分類迷你BiscuitPC(2.5”120x82mm)半尺寸BiscuitPC(3.5”145x102mm)全尺寸BiscuitPC(5.25“203x146mm)3/12/202413迷你BiscuitPC(2.5”120x82mm)3/12/202414半尺寸BiscuitPC(3.5”145x102mm)3/12/202415全尺寸BiscuitPC(5.25“203x146mm)3/12/202416Mini-ITX結(jié)構(gòu)170×170mmKINOAtom工業(yè)主板3/12/202417微控制器微控制器又稱單片機(jī)顧名思義,就是將整個(gè)計(jì)算機(jī)集成到一塊芯片中低檔微控制器CPU存儲(chǔ)控制器+片內(nèi)存儲(chǔ)器(ROM/E2PROM/Flash、SRAM)中斷控制器、定時(shí)/計(jì)數(shù)器、WatchDog、GPIO、UART、PWM、A/D、D/A等典型芯片8051系列(8位)、MSP430(16位)性能:1~100MIPS存儲(chǔ)器:SRAM-256B/2~128KB,Flash-8KB/64/512KB一般無操作系統(tǒng)或者簡單操作系統(tǒng):uC/OS-II(幾KB~十幾KB)、FreeRTOS(幾KB)、RTX(幾KB)3/12/202418

微控制器高檔微控制器CPU+總線仲裁器+DMA控制器+中斷控制器+I/O接口+存儲(chǔ)控制器+外接存儲(chǔ)器/少量片內(nèi)存儲(chǔ)器(Flash、SRAM、SDRAM)典型芯片(32位)ARM、MIPS、PowerPC、68k與嵌入式微處理器比較微控制器的最大特點(diǎn)是單片化,體積大大減小,從而使功耗和成本下降、可靠性提高,但性能有所降低目前微控制器是嵌入式系統(tǒng)工業(yè)中的主流,在嵌入式系統(tǒng)占有約70%的市場(chǎng)份額性能:100~1000MIPS存儲(chǔ)器:SDRAM-4/8/16/32/64MB,Flash-2/4MB一般有操作系統(tǒng):Vxworks、uCOSII、WINCE、uCLinux3/12/2024198位單片機(jī)示意圖CPUSRAMGPIOUARTFlash定時(shí)/計(jì)數(shù)器A/DD/ACANWatchdog核心部分USBI2CSPI3/12/20242032位微控制器示意圖3/12/202421Motorola3G手機(jī)E10003/12/202422微控制器MIPSMicroprocessorwithoutInterlockedPipelineStagesMIPS公司于80年代初開始設(shè)計(jì)通用RISC處理器R2000(1986年),R3000(1988年),1991年推出第一款64位商用微處理器R4000R8000(1994年)、R10000(1996年)、R12000(1997年)新32位微控制器4kc(1999年)新64位微控制器5kc(1999年)、20kc(2000年)3/12/2024232微控制器

3/12/202424數(shù)字信號(hào)處理器特殊設(shè)計(jì)高效乘累加運(yùn)算、超標(biāo)量操作、指令流水線高效數(shù)據(jù)存取、硬件重復(fù)循環(huán)確定性操作(程序執(zhí)行時(shí)間可預(yù)測(cè))應(yīng)用場(chǎng)合數(shù)字濾波、FFT、聲音圖像處理等方面代表性的產(chǎn)品TI的TMS320系列ADI的21xx系列Motorola的DSP56000系列3/12/202425TI的TMS320系列C2000低成本系列16/32位,定點(diǎn),最高150MIPS最低價(jià)格低于2.00美元應(yīng)用數(shù)字電機(jī)控制、數(shù)字電源和智能傳感器C6000高性能系列C62xx/C64xx系列——32位,定點(diǎn)C67xx系列——32位,浮點(diǎn)運(yùn)行頻率高達(dá)

1GHz應(yīng)用領(lǐng)域包括無線、數(shù)字視頻、電信和成像3/12/202426TI的TMS320系列C5000低功耗系列16位,定點(diǎn)性能高達(dá)900MIPS超低功耗,低至0.5mW/MHz適用于個(gè)人和便攜式產(chǎn)品,如數(shù)字音樂播放器、VoIP、GPS接收器和便攜式醫(yī)療設(shè)備OMAP多核系列與ARM核集成一拖二、四3/12/2024273.5嵌入式處理器的發(fā)展趨勢(shì)內(nèi)部結(jié)構(gòu)SoC設(shè)計(jì),與DSP、Flash、FPGA融合性能更強(qiáng),集成更多的功能部件雙核或多核結(jié)構(gòu)功耗更低工作電流只有0.1μA(電池供電)可靠性更高倍頻技術(shù)、ESD(靜電防護(hù))技術(shù)支持ISP(在系統(tǒng)編程)、ISD(在系統(tǒng)調(diào)試)3/12/202428亞洲嵌入式處理器選用情況3/12/202429目前每年新上市的CPU有98%都是嵌入式的,這類新型CPU的長期發(fā)展性也非常樂觀美國那斯達(dá)克指數(shù)與新CPU出貨量變化的消長關(guān)系CPU出貨量達(dá)到10G/Year3/12/2024303.6嵌入式處理器的選擇原則CPUCore選擇應(yīng)用領(lǐng)域用戶需求性能浮點(diǎn)處理、MAC單元工具鏈完善友好的工具鏈開發(fā)的難易程度在系統(tǒng)編程、在系統(tǒng)調(diào)試3/12/2024313.6嵌入式處理器的選擇原則處理器I/O接口選擇總線的需求GPIO的需求有沒有基本通信接口UART、I2C、SPI是否需要USB總線是否需要CAN總線是否需要Ethernet總線是否需要A/D、D/A是否需要LCD控制器是否需要Zigbee、藍(lán)牙等3/12/2024323.6嵌入式處理器的選擇原則處理器存儲(chǔ)系統(tǒng)選擇MMU尋址空間(容量)程序存儲(chǔ)器、數(shù)據(jù)存儲(chǔ)器、特殊寄存器片上Flash、SRAM、E2PROM是否支持SDRAM市場(chǎng)因素的影響價(jià)格是否容易購買技術(shù)支持與售后服務(wù)3/12/202433ARM微處理器概述1ARM-AdvancedRISCMachines2ARM微處理器的特點(diǎn)3ARM微處理器的應(yīng)用領(lǐng)域4ARM微處理器系列5ARM微處理器的應(yīng)用選型3/12/2024341.ARM-AdvancedRISCMachinesARM(AdvancedRISCMachines)英國一家公司的名字,也是一類微處理器的通稱ARM公司1991年成立于英國劍橋知識(shí)產(chǎn)權(quán)(IP)ARM公司本身不直接從事芯片生產(chǎn),靠轉(zhuǎn)讓設(shè)計(jì)許可全世界有幾十家大的半導(dǎo)體公司都使用ARM公司的微處理器核(TI、NXP、Atmel、ST、Freescale等)市場(chǎng)份額基于ARM技術(shù)的微處理器占32位RISC微處理器75%以上的市場(chǎng)份額3/12/2024352.ARM微處理器的特點(diǎn)特點(diǎn)功耗低、成本低、性能高支持Thumb(16位)/ARM(32位)雙指令集Cortex支持Thumb-2(16/32位混合指令系統(tǒng))指令長度固定(32位/16位)大量使用寄存器,指令執(zhí)行速度更快尋址方式靈活簡單,執(zhí)行效率高C5000:0.5mW/MHzARM7TDMI:0.28mW/MHzCortex-M3:0.19mW/MHz3/12/2024363.ARM微處理器的應(yīng)用領(lǐng)域工業(yè)控制領(lǐng)域占據(jù)高端微處理器的大部分市場(chǎng)份額,同時(shí)也向低端微控制器應(yīng)用領(lǐng)域擴(kuò)展(ARM微處理器的低功耗、高性價(jià)比,向傳統(tǒng)的8位/16位微控制器提出了挑戰(zhàn))無線通信領(lǐng)域目前已有超過85%的無線通信設(shè)備采用了ARM技術(shù)消費(fèi)類電子產(chǎn)品在音頻播放器、機(jī)頂盒和游戲機(jī)中得到廣泛采用圖像處理產(chǎn)品數(shù)碼相機(jī)和打印機(jī)中絕大部分采用ARM技術(shù)3/12/2024374.ARM微處理器系列ARM微處理器目前包括下面幾個(gè)系列通用系列ARM7系列ARM9系列ARM9E系列ARM10E系列ARM11系列Cortex系列安全系列SecurCore系列3/12/202438

ARM7系列ARM7微處理器系列特點(diǎn)極低的功耗(0.28mW/MHz),適合對(duì)功耗要求較高的應(yīng)用具有嵌入式ICE-RT邏輯,調(diào)試開發(fā)方便能夠提供0.9MIPS/MHz的三級(jí)流水線結(jié)構(gòu)支持的操作系統(tǒng):uC/OS-II、uCLinux等性能最高可達(dá)130MIPSC5000:0.5mW/MHzARMT7DMI:0.28mW/MHzCortex-M3:0.19mW/MHz3/12/202439

ARM7系列ARM7系列微處理器的主要應(yīng)用領(lǐng)域?yàn)楣I(yè)控制、網(wǎng)絡(luò)和調(diào)制解調(diào)器移動(dòng)電話、消費(fèi)電子等ARM7系列包括如下幾種類型ARM7TDMI、ARM7TDMI-SARM7TMDI是目前使用最廣泛的32位嵌入式處理器,屬低端ARM處理器核TDMI的基本含義為T:支持16位壓縮指令集ThumbD:支持片上DebugM:內(nèi)嵌硬件乘法器(Multiplier)I:嵌入式ICE,支持片上斷點(diǎn)和調(diào)試點(diǎn)3/12/202440ATMELARM7框圖3/12/202441ATMELARM7產(chǎn)品選擇3/12/202442AT91SAM7S64開發(fā)板3/12/202443ARM9系列ARM9系列微處理器具有以下特點(diǎn)5級(jí)整數(shù)流水線,指令執(zhí)行效率更高提供1.1MIPS/MHz的加速能力全性能的MMU,支持WindowsCE、EmbeddedLinux等支持?jǐn)?shù)據(jù)Cache和指令Cache性能最高可達(dá)300MIPS3/12/202444ARM9系列ARM9系列微處理器主要應(yīng)用無線設(shè)備機(jī)頂盒高端打印機(jī)、數(shù)字照相機(jī)和數(shù)字?jǐn)z像機(jī)汽車電子ARM9系列微處理器類型ARM920TARM922T3/12/202445ATMELARM9框圖3/12/202446ARM9開發(fā)板ARM9CPU3/12/202447ARM9E系列ARM9E系列微處理器的主要特點(diǎn)支持DSP指令集(MAC)5級(jí)整數(shù)流水線,指令執(zhí)行效率更高支持VFP9浮點(diǎn)處理協(xié)處理器全性能的MMU,支持WindowsCE、EmbeddedLinux等支持?jǐn)?shù)據(jù)Cache和指令Cache性能最高可達(dá)300MIPS3/12/202448ARM9E系列ARM9系列微處理器主要應(yīng)用工業(yè)控制無線設(shè)備和網(wǎng)絡(luò)設(shè)備數(shù)字消費(fèi)品、圖像處理設(shè)備、存儲(chǔ)設(shè)備ARM9E系列微處理器類型ARM926EJ-SARM946E-SARM966E-S、ARM968E-SARM996HS3/12/202449ARM10E系列ARM10E系列微處理器的主要特點(diǎn)支持DSP指令集(MAC)6級(jí)整數(shù)流水線,指令執(zhí)行效率更高支持VFP10浮點(diǎn)處理協(xié)處理器全性能的MMU,支持WindowsCE、EmbeddedLinux支持?jǐn)?shù)據(jù)Cache和指令Cache性能最高可達(dá)400MIPS3/12/202450ARM10E系列ARM10E系列微處理器主要應(yīng)用手持設(shè)備工業(yè)控制數(shù)字消費(fèi)品、汽車電子圖像處理設(shè)備ARM10E系列微處理器類型ARM1020EARM1022EARM1026EJ-S3/12/202451

ARM11系列高性能8級(jí)流水增強(qiáng)的ARMv6體系結(jié)構(gòu)與同等的ARM10相比較,在同樣的時(shí)鐘頻率下,性能提高了近50%時(shí)鐘頻率達(dá)到500~750MHz低功耗ARM11系列微處理器采用了兩種先進(jìn)的節(jié)能方式,使其功耗極低3/12/202452

ARM11系列ARM11系列微處理器主要應(yīng)用消費(fèi)電子、汽車電子數(shù)據(jù)存儲(chǔ)、圖像處理設(shè)備網(wǎng)絡(luò)基礎(chǔ)、無線設(shè)備ARM11系列微處理器類型ARM11MPCore(多核處理器)ARM1136J(F)-SARM1156T2(F)-SARM1176JZ(F)-S三星S3C6410處理器ARM1176JZF-S核最高主頻可達(dá)667MHzAppleiphone3/12/202453Cortex系列ARMCortex-ASeries——高性能應(yīng)用ApplicationsprocessorsforcomplexOSanduserapplications支持ARM、Thumb和Thumb-2指令集帶MMU,運(yùn)行Linux、WindowsCE等操作系統(tǒng)TIOMAP35xx,ST(意法半導(dǎo)體)ARMCortex-RSeries——實(shí)時(shí)性應(yīng)用Embeddedprocessorsforreal-timesystems支持ARM、Thumb和Thumb-2指令集不帶MMU,運(yùn)行Vxworks等實(shí)時(shí)操作系統(tǒng)3/12/202454Cortex系列ARMCortex-MSeries——低成本應(yīng)用EmbeddedprocessorsoptimizedforcostsensitiveapplicationsSupportstheThumb-2instructionsetonly不帶MMU,不加載或者加載簡單嵌入式操作系統(tǒng)AcceleratedTechnology公司的NucleusPLUSuC/OS-II、FreeRTOS典型芯片TI—Stellaris

LM3Sxxxx系列NXPLPC1000系列,ATMEL—SAM3系列3/12/2024556Cortex系列TILM3S微控制器系統(tǒng)框圖3/12/202456周立功開發(fā)板EasyARM57493/12/202457Cortex系列愛可視7(320G)¥3550采用600MHz超標(biāo)量ARMCortex-A8處理器的OMAP3實(shí)施方案OMAP3430處理器ARMCortex-A83/12/202458SecurCore系列SecurCore系列微處理器專為安全需要而設(shè)計(jì)具有ARM體系結(jié)構(gòu)的低功耗、高性能的特點(diǎn)提供了完善的32位RISC技術(shù)的安全解決方案SecurCore系列微處理器在系統(tǒng)安全方面的特點(diǎn)帶有靈活的保護(hù)單元,以確保操作系統(tǒng)和應(yīng)用數(shù)據(jù)的安全采用軟處理器內(nèi)核技術(shù)(處理器布局隨機(jī)化),防止外部對(duì)其進(jìn)行掃描探測(cè)可集成用戶自己的安全特性和其他協(xié)處理器3/12/202459SecurCore系列SecurCore系列微處理器的應(yīng)用領(lǐng)域電子商務(wù)電子銀行電子政務(wù)網(wǎng)絡(luò)和認(rèn)證系統(tǒng)SecurCore系列微處理器包含四種類型SecurCoreSC100SecurCoreSC110SecurCoreSC200SecurCoreSC2103/12/2024605.ARM微處理器的應(yīng)用選型ARM微處理器內(nèi)核結(jié)構(gòu)的選擇帶有MMU功能的ARM內(nèi)核ARM720T、ARM92xT、Cortex-A8支持WinCE、EmbeddedLinux等操作系統(tǒng)不含有MMU功能的ARM內(nèi)核ARM7TDMI、Cortex-M3、Cortex-R4支持uCLinux操作系統(tǒng)不支持WindowsCE、EmbeddedLinux等操作系統(tǒng)是否支持DSP或Java是否支持浮點(diǎn)協(xié)處理器VFP3/12/2024615.ARM微處理器的應(yīng)用選型系統(tǒng)的工作頻率ARM7系列的典型處理速度為0.9MIPS/MHz系統(tǒng)主時(shí)鐘為20MHz-133MHzARM9系列的典型處理速度為1.1MIPS/MHz系統(tǒng)主時(shí)鐘頻率為100MHz-233MHzARM10系統(tǒng)主時(shí)鐘高達(dá)400MHzARM11系統(tǒng)主時(shí)鐘高達(dá)750MHzCortex-M3—1.25MIPS/MHz,頻率高達(dá)100MHzCortex-R4—1.6MIPS/MHz,頻率高達(dá)400MHzCortex-A8—2.0MIPS/MHz,頻率高達(dá)1GHz在65納米工藝下,ARMCortex-A8處理器的功耗不到300mW8051的功耗(8位)600mW

3/12/2024625.ARM微處理器的應(yīng)用選型芯片內(nèi)存儲(chǔ)器的容量大多數(shù)的ARM微處理器片內(nèi)存儲(chǔ)器的容量都不太大,需要用戶在設(shè)計(jì)系統(tǒng)時(shí)外擴(kuò)存儲(chǔ)器有部分芯片具有相對(duì)較大的片內(nèi)存儲(chǔ)空間如ATMEL的AT91F40162就具有高達(dá)2MB的片內(nèi)程序存儲(chǔ)空間用戶在設(shè)計(jì)時(shí)可考慮選用這種類型,以簡化系統(tǒng)的設(shè)計(jì)3/12/2024635.ARM微處理器的應(yīng)用選型片內(nèi)外圍電路的選擇幾乎所有的ARM芯片均根據(jù)各自不同的應(yīng)用領(lǐng)域,擴(kuò)展了相關(guān)功能模塊,并集成在芯片之中片內(nèi)外圍電路:USB接口、IIS(音頻)接口、LCD控制器、鍵盤接口、RTC(實(shí)時(shí)時(shí)鐘)、ADC和DAC、DSP協(xié)處理器等設(shè)計(jì)者應(yīng)分析系統(tǒng)的需求,盡可能采用片內(nèi)外圍電路完成所需的功能,這樣既可簡化系統(tǒng)的設(shè)計(jì),同時(shí)提高系統(tǒng)的可靠性IIS:Inter-ICSoundbusRTC:Real-TimeClock3/12/2024643/12/202465ARM處理器分類3/12/2024663/12/2024673/12/202468本講小結(jié)目的與要求掌握ARM處理器的系列情況熟悉ARM處理器的特點(diǎn)、應(yīng)用領(lǐng)域了解ARM處理器的應(yīng)用選型重點(diǎn)與難點(diǎn)ARM處理器的系列情況3/12/2024693.7ARM微處理器的編程模型3.7.1ARM微處理器的工作模式3.7.2ARM微處理器的工作狀態(tài)3.7.3ARM體系結(jié)構(gòu)的寄存器組織3.7.4ARM微處理器的數(shù)據(jù)類型3.7.5ARM微處理器的異常狀態(tài)3/12/2024703.7.1ARM微處理器的工作模式ARM微處理器支持7種工作模式User-用戶模式(usr)ARM處理器正常的程序執(zhí)行狀態(tài)System-系統(tǒng)模式(sys)運(yùn)行具有特權(quán)的操作系統(tǒng)任務(wù)IRQ-外部中斷模式(irq)用于通用的中斷處理FIQ-快速中斷模式(fiq)用于高速數(shù)據(jù)傳輸或通道處理3/12/2024713.7.1ARM微處理器的工作模式ARM微處理器支持7種工作模式Supervisor-管理模式(svc)操作系統(tǒng)使用的保護(hù)模式復(fù)位、軟中斷調(diào)用(SWI)Abort-中止模式(abt)當(dāng)數(shù)據(jù)或指令預(yù)取中止時(shí)進(jìn)入該模式可用于虛擬存儲(chǔ)及存儲(chǔ)保護(hù)Undefined-未定義指令模式(und)當(dāng)未定義的指令執(zhí)行時(shí)進(jìn)入該模式可用于支持硬件協(xié)處理器的軟件仿真3/12/2024723.7.1ARM微處理器的工作模式特權(quán)模式除用戶模式以外,其余6種模式稱之為特權(quán)模式(PrivilegedModes)當(dāng)處理器運(yùn)行在用戶模式下時(shí),某些被保護(hù)的系統(tǒng)資源是不能被訪問的異常模式除去用戶模式和系統(tǒng)模式以外的5種又稱為異常模式(ExceptionModes)常用于處理中斷或異常,以及需要訪問受保護(hù)的系統(tǒng)資源等情況3/12/2024733.7.1ARM微處理器的工作模式工作模式的改變通過軟件改變系統(tǒng)調(diào)用通過外部中斷或異常處理改變外部中斷:IRQ、FIQ來自中斷控制器異常處理來自CPU內(nèi)部3/12/2024743.7.1ARM微處理器的工作模式工作模式的改變舉例SWI軟件中斷指令SWI0x0 ;調(diào)用0號(hào)軟中斷SWI0x12 ;調(diào)用12號(hào)軟中斷IRQ外部中斷__irqvoidHandlerTIMER5(void){

timeval++; //當(dāng)前時(shí)刻遞增

pIC->I_ISPC=INT_TIMER5;//清除中斷請(qǐng)求位}3/12/2024753.7.2ARM微處理器的工作狀態(tài)ARM微處理器的工作狀態(tài)一般有兩種第一種為ARM狀態(tài)處理器執(zhí)行32位的ARM指令A(yù)RM指令要求字對(duì)齊第二種為Thumb狀態(tài)處理器執(zhí)行16位的Thumb指令Thumb指令要求半字對(duì)齊3/12/2024763.7.2ARM微處理器的工作狀態(tài)工作狀態(tài)切換在程序的執(zhí)行過程中,處理器可以隨時(shí)在兩種工作狀態(tài)之間切換處理器工作狀態(tài)的轉(zhuǎn)變并不影響處理器的工作模式和相應(yīng)寄存器中的內(nèi)容ARM微處理器在開始執(zhí)行代碼時(shí)總是處于ARM狀態(tài)也就是復(fù)位后進(jìn)入ARM狀態(tài)3/12/2024773.7.2ARM微處理器的工作狀態(tài)工作狀態(tài)切換方法進(jìn)入Thumb狀態(tài)執(zhí)行BX指令BX:帶狀態(tài)切換的跳轉(zhuǎn)指令當(dāng)操作數(shù)寄存器的最低位[0]為1時(shí),可以使微處理器從ARM狀態(tài)切換到Thumb狀態(tài)BXR0 ;R0的最低位[0]為1處理器工作在Thumb狀態(tài),如果發(fā)生異常并進(jìn)入異常處理子程序,則異常處理完畢返回時(shí),自動(dòng)從ARM狀態(tài)切換到Thumb狀態(tài)3/12/2024783.7.2ARM微處理器的工作狀態(tài)工作狀態(tài)切換方法進(jìn)入ARM狀態(tài)執(zhí)行BX指令BX:帶狀態(tài)切換的跳轉(zhuǎn)指令當(dāng)操作數(shù)寄存器的最低位[0]為0時(shí),可以使微處理器從Thumb狀態(tài)切換到ARM狀態(tài)BXR0 ;R0的最低位[0]為0處理器工作在Thumb狀態(tài),如果發(fā)生異常并進(jìn)入異常處理子程序,則進(jìn)入時(shí)處理器自動(dòng)從Thumb狀態(tài)切換到ARM狀態(tài)3/12/2024793.7.3ARM體系結(jié)構(gòu)的寄存器組織ARM處理器的寄存器37個(gè)32位寄存器31個(gè)通用寄存器6個(gè)狀態(tài)寄存器這些寄存器不能被同時(shí)訪問取決于處理器的工作狀態(tài)工作模式3/12/2024803.7.3ARM體系結(jié)構(gòu)的寄存器組織1ARM狀態(tài)下的寄存器組織2Thumb狀態(tài)下的寄存器組織3程序狀態(tài)寄存器3/12/202481ARM狀態(tài)下的寄存器組織通用寄存器通用寄存器包括R0~R15可以分為三類未分組寄存器R0~R7分組寄存器R8~R14程序計(jì)數(shù)器R15(PC)3/12/202482ARM狀態(tài)下的寄存器組織未分組寄存器R0~R7在所有的工作模式下,每個(gè)未分組寄存器都指向?qū)?yīng)的一個(gè)物理寄存器在中斷或異常處理進(jìn)行工作模式轉(zhuǎn)換時(shí),由于不同的處理器工作模式均使用相同的物理寄存器,可能會(huì)造成寄存器中數(shù)據(jù)的破壞3/12/202483ARM狀態(tài)下的寄存器組織分組寄存器R8~R14R8~R12每個(gè)寄存器對(duì)應(yīng)2個(gè)不同的物理寄存器當(dāng)使用FIQ模式時(shí),訪問R8_fiq~R12_fiq當(dāng)使用其他模式時(shí),訪問R8_usr~R12_usrR13、R14每個(gè)寄存器對(duì)應(yīng)6個(gè)不同的物理寄存器其中一個(gè)寄存器是用戶模式與系統(tǒng)模式共用另外5個(gè)物理寄存器對(duì)應(yīng)于其他5種不同的工作模式3/12/202484ARM狀態(tài)下的寄存器組織不同物理寄存器的區(qū)分R13_<mode>R14_<mode>mode為:usr、fiq、irq、svc、abt、und例如:R13_usr、R13_fiq、R13_irqR14_svc、R14_abt、R14_und3/12/202485ARM狀態(tài)下的寄存器組織R13寄存器常用作堆棧指針SP(StackPointer),一種習(xí)慣用法也可使用其他的寄存器作為堆棧指針在Thumb指令集中,某些指令強(qiáng)制使用R13作為堆棧指針在應(yīng)用程序初始化時(shí),一般都要初始化每種模式下的R13,使其指向該工作模式的棧空間3/12/202486ARM狀態(tài)下的寄存器組織R14寄存器也稱鏈接寄存器LR(LinkRegister)

當(dāng)執(zhí)行BL子程序調(diào)用指令時(shí),R14中得到R15(程序計(jì)數(shù)器PC)的備份BLLabel;下一條指令地址

LR,LabelPC當(dāng)發(fā)生中斷或異常時(shí),對(duì)應(yīng)的分組寄存器R14_svc、R14_irq、R14_fiq、R14_abt和R14_und用來保存R15的返回值其他情況下,R14用作通用寄存器3/12/202487ARM狀態(tài)下的寄存器組織R15寄存器R15寄存器用作程序計(jì)數(shù)器(PC)在ARM狀態(tài)下,位[1:0]為0,位[31:2]用于保存PC在Thumb狀態(tài)下,位[0]為0,位[31:1]用于保存PC由于ARM體系結(jié)構(gòu)采用了多級(jí)流水結(jié)構(gòu),對(duì)于ARM指令集而言,PC總是指向當(dāng)前執(zhí)行指令的下兩條指令的地址,即PC的值為當(dāng)前執(zhí)行指令的地址值加8個(gè)字節(jié)R15也可用作通用寄存器,但一般不這么使用因?yàn)閷?duì)R15的使用有一些特殊的限制,當(dāng)違反了這些限制時(shí),程序的執(zhí)行結(jié)果是未知的3/12/202488ARM狀態(tài)下的寄存器組織CPSR寄存器用作CPSR(Current

ProgramStatusRegister)CPSR可在任何工作模式下被訪問,它包括條件標(biāo)志位、中斷禁止位、當(dāng)前處理器模式標(biāo)志位,以及其他一些相關(guān)的控制和狀態(tài)位異常模式下有一個(gè)專用的物理狀態(tài)寄存器,稱為SPSR(SavedProgramStatusRegister)當(dāng)異常發(fā)生時(shí),SPSR用于保存CPSR的當(dāng)前值,從異常退出時(shí)則可由SPSR來恢復(fù)CPSR用戶模式和系統(tǒng)模式不屬于異常模式,沒有SPSR3/12/2024893/12/202490Thumb狀態(tài)下的寄存器組織Thumb狀態(tài)下的寄存器集是ARM狀態(tài)下寄存器集的一個(gè)子集程序可以直接訪問8個(gè)通用寄存器(R7~R0)程序計(jì)數(shù)器(PC)堆棧指針(SP)連接寄存器(LR)CPSR在每一種異常模式下都有一組SP、LR和SPSR3/12/2024913/12/202492兩種工作狀態(tài)下寄存器比較3/12/202493程序狀態(tài)寄存器程序狀態(tài)寄存器的構(gòu)成一個(gè)當(dāng)前程序狀態(tài)寄存器(CPSR)五個(gè)備份程序狀態(tài)寄存器(SPSR)備份的程序狀態(tài)寄存器用來進(jìn)行異常處理程序狀態(tài)寄存器的功能保存ALU中的當(dāng)前操作信息控制允許和禁止中斷設(shè)置處理器的工作模式3/12/202494程序狀態(tài)寄存器3/12/202495程序狀態(tài)寄存器條件碼標(biāo)志(ConditionCodeFlags)N、Z、C、V均為條件碼標(biāo)志位它們的內(nèi)容可被算術(shù)或邏輯運(yùn)算的結(jié)果所改變,并且可以決定某條指令是否被執(zhí)行在ARM狀態(tài)下,絕大多數(shù)的指令都是有條件執(zhí)行的在Thumb狀態(tài)下,僅有分支指令B是有條件執(zhí)行的3/12/202496程序狀態(tài)寄存器實(shí)例C代碼: if(a>b)a++;elseb++;Thumb代碼:CMP R0,R1

BHI A_ADD

ADD R1,R1,#1

B OVERA_ADD ADD R0,R0,#1OVER ……ARM代碼: CMP R0,R1

ADDHI R0,R0,#1

ADDLS R1,R1,#13/12/202497程序狀態(tài)寄存器標(biāo)志位N當(dāng)用兩個(gè)補(bǔ)碼表示的帶符號(hào)數(shù)進(jìn)行運(yùn)算時(shí)N=1表示運(yùn)算結(jié)果為負(fù)數(shù)N=0表示運(yùn)算結(jié)果為正數(shù)或零標(biāo)志位ZZ=1表示運(yùn)算結(jié)果為零;Z=0表示運(yùn)算結(jié)果為非零標(biāo)志位V對(duì)于加/減法運(yùn)算指令,當(dāng)操作數(shù)和運(yùn)算結(jié)果為補(bǔ)碼表示的帶符號(hào)數(shù)時(shí),V=1表示符號(hào)位溢出對(duì)于其他的非加/減運(yùn)算指令,V的值通常不改變3/12/202498程序狀態(tài)寄存器標(biāo)志位C加法運(yùn)算(包括比較指令CMN):當(dāng)運(yùn)算結(jié)果產(chǎn)生了進(jìn)位時(shí)(無符號(hào)數(shù)溢出),C=1,否則C=0減法運(yùn)算(包括比較指令CMP):當(dāng)運(yùn)算時(shí)產(chǎn)生了借位(無符號(hào)數(shù)溢出),C=1,否則C=0對(duì)于包含移位操作的非加/減運(yùn)算指令,C為移出值的最后一位對(duì)于其他的非加/減運(yùn)算指令,C的值通常不改變3/12/202499程序狀態(tài)寄存器中斷禁止位I和FI=1禁止IRQ中斷;I=0允許IRQ中斷F=1禁止FIQ中斷;F=0允許IRQ中斷運(yùn)行狀態(tài)控制位T對(duì)于ARMv5及以上的T系列處理器,當(dāng)該位為1時(shí),程序運(yùn)行于Thumb狀態(tài),否則運(yùn)行于ARM狀態(tài)對(duì)于ARMv5及以上的非T系列處理器,當(dāng)該位為1時(shí),執(zhí)行下一條指令以引起未定義指令異常;當(dāng)該位為0時(shí),表示運(yùn)行于ARM狀態(tài)工作模式位M[4:0]這些位決定了處理器的工作模式100M[4:0]處理器模式可訪問的寄存器10000用戶PC,CPSR,R0-R1410001FIQPC,CPSR,SPSR_fiq,R14_fiq~R8_fiq,R7~R010010IRQPC,CPSR,SPSR_irq,R14_irq,R13_irq,R12~R010011管理PC,CPSR,SPSR_svc,R14_svc,R13_svc,R12~R010111中止PC,CPSR,SPSR_abt,R14_abt,R13_abt,R12~R011011未定義PC,CPSR,SPSR_und,R14_und,R13_und,R12~R011111系統(tǒng)PC,CPSR(ARMv4及以上版本),R14~R0程序狀態(tài)寄存器3/12/20241013.7.4ARM微處理器的數(shù)據(jù)類型字、半字、字節(jié)字(Word):字的長度為32位半字(Half-Word):半字的長度為16位字節(jié)(Byte):字節(jié)的長度為8位ARM微處理器要求自然對(duì)界字需要4字節(jié)對(duì)齊地址的低兩位為0半字需要2字節(jié)對(duì)齊地址的最低位為0字節(jié)則是任意地址對(duì)齊

3/12/20241023.7.4ARM微處理器的數(shù)據(jù)類型邊界對(duì)齊(數(shù)據(jù)存儲(chǔ))如果一個(gè)數(shù)據(jù)是從偶地址開始的連續(xù)存儲(chǔ),那么它就是半字對(duì)齊,否則就是非半字對(duì)齊如果一個(gè)數(shù)據(jù)是以能被4整除的地址開始的連續(xù)存儲(chǔ),那么它就是字對(duì)齊,否則就是非字對(duì)齊方式半字對(duì)齊字對(duì)齊地址0x000000000x000000020x00000004……0x000000000x000000040x00000008……特征Bit0=0Bit1=0,Bit0=03/12/20241033.7.4ARM微處理器的數(shù)據(jù)類型ARM體系結(jié)構(gòu)的存儲(chǔ)結(jié)構(gòu)從零地址開始的以字節(jié)為單位的線性組合從零字節(jié)到三字節(jié)放置第一個(gè)存儲(chǔ)的字?jǐn)?shù)據(jù),從第四個(gè)字節(jié)到第七個(gè)字節(jié)放置第二個(gè)存儲(chǔ)的字?jǐn)?shù)據(jù),依次排列作為32位的微處理器,ARM體系結(jié)構(gòu)所支持的最大尋址空間為4GB(232字節(jié))受到物理地址線的限制,一般實(shí)際嵌入式處理器最大尋址空間為幾百兆3/12/20241043.7.4ARM微處理器的數(shù)據(jù)類型ARM體系結(jié)構(gòu)可以用兩種方法存儲(chǔ)字?jǐn)?shù)據(jù)大端格式(Bigendian)字?jǐn)?shù)據(jù)的高字節(jié)存儲(chǔ)在低地址中字?jǐn)?shù)據(jù)的低字節(jié)存放在高地址中小端格式(Littleendian)與大端存儲(chǔ)格式相反低地址中存放的是字?jǐn)?shù)據(jù)的低字節(jié)高地址中存放的是字?jǐn)?shù)據(jù)的高字節(jié)3/12/2024105大端格式(Bigendian)3/12/2024106小端格式(Littleendian)3/12/2024107舉例1程序LDRR0,=0x11223344LDRR1,=0x00000100STRR0,[R1]LDRBR2,[R1]R2=?答案小端模式:R2=0x44大端模式:R2=0x11LDR偽指令的形式:LDR

Rn,=expr;=而非#3/12/2024108舉例2structx{

chara;

intb;

charc;

shortd;};問:在缺省(自然對(duì)界)情況下,上述結(jié)構(gòu)需要多少存儲(chǔ)空間(小端格式)?強(qiáng)制對(duì)齊編譯控制:匯編align(1/2/4/8)unalignC語言#pragmapack(1/2/4/8)3/12/20241093.7.5ARM微處理器的異常狀態(tài)當(dāng)正常的程序執(zhí)行流程發(fā)生暫時(shí)的停止時(shí),稱之為異常(Exception)例如處理一個(gè)外部的中斷請(qǐng)求在處理異常之前,當(dāng)前處理器的狀態(tài)必須保留,這樣當(dāng)異常處理完成之后,當(dāng)前程序可以繼續(xù)執(zhí)行處理器允許多個(gè)異常同時(shí)發(fā)生,它們將會(huì)按固定的優(yōu)先級(jí)進(jìn)行處理中斷優(yōu)先級(jí)中斷嵌套異常類型具體含義復(fù)位當(dāng)處理器的復(fù)位電平有效時(shí),產(chǎn)生復(fù)位異常,程序跳轉(zhuǎn)到復(fù)位異常處理程序處執(zhí)行未定義指令當(dāng)ARM處理器或協(xié)處理器遇到不能處理的指令時(shí),產(chǎn)生未定義指令異常??墒褂迷摦惓C(jī)制進(jìn)行軟件仿真軟件中斷該異常由執(zhí)行SWI指令產(chǎn)生,可用于用戶模式下的程序調(diào)用特權(quán)操作指令??墒褂迷摦惓C(jī)制實(shí)現(xiàn)系統(tǒng)功能調(diào)用指令預(yù)取中止若處理器預(yù)取指令的地址不存在,或該地址不允許當(dāng)前指令訪問,存儲(chǔ)器會(huì)向處理器發(fā)出中止信號(hào),但當(dāng)預(yù)取的指令被執(zhí)行時(shí),才會(huì)產(chǎn)生指令預(yù)取中止異常數(shù)據(jù)中止若處理器數(shù)據(jù)訪問的地址不存在,或該地址不允許當(dāng)前指令訪問時(shí),產(chǎn)生數(shù)據(jù)中止異常IRQ(外部中斷請(qǐng)求)當(dāng)處理器的外部中斷請(qǐng)求引腳有效,且CPSR中的I位為0時(shí),產(chǎn)生IRQ異常。系統(tǒng)的外設(shè)可通過該異常請(qǐng)求中斷服務(wù)FIQ(快速中斷請(qǐng)求)當(dāng)處理器的快速中斷請(qǐng)求引腳有效,且CPSR中的F位為0時(shí),產(chǎn)生FIQ異常3/12/20241113.7.5ARM微處理器的異常狀態(tài)1對(duì)異常的響應(yīng)2從異常返回3異常向量4異常優(yōu)先級(jí)5應(yīng)用程序中的異常處理3/12/2024112對(duì)異常的響應(yīng)當(dāng)出現(xiàn)異常后,ARM處理器會(huì)執(zhí)行以下操作1將CPSR復(fù)制到相應(yīng)的SPSR中2對(duì)CPSR進(jìn)行設(shè)置根據(jù)異常類型,強(qiáng)制設(shè)置CPSR的工作模式位設(shè)置中斷禁止位,以禁止中斷發(fā)生如果處理器處于Thumb狀態(tài),則切換到ARM狀態(tài)3將下一條指令的地址存入相應(yīng)鏈接寄存器LRLR中保存的是下一條指令的地址(當(dāng)前執(zhí)行指令地址+4或+8,與異常類型有關(guān))4強(qiáng)制PC從相關(guān)的異常向量地址取下一條指令執(zhí)行,從而跳轉(zhuǎn)到相應(yīng)的異常處理程序處3/12/2024113對(duì)異常的響應(yīng)ARM處理器對(duì)異常的響應(yīng)過程用偽碼描述為SPSR_<Exception_Mode>=CPSRCPSR[4:0]=ExceptionModeNumberCPSR[5]=0 ;切換到ARM工作狀態(tài)If<Exception_Mode>==ResetorFIQthenCPSR[6]=1 ;禁止新的FIQ異常

CPSR[7]=1 ;禁止新的IRQ異常R14_<Exception_Mode>=ReturnLinkPC=ExceptionVectorAddress

CPU自動(dòng)完成3/12/2024114程序AIRQ服務(wù)程序系統(tǒng)模式IRQ模式程序寄存器組程序在系統(tǒng)模式下運(yùn)行用戶程序,假定當(dāng)前處理器狀態(tài)為Thumb狀態(tài)、允許IRQ中斷用戶程序運(yùn)行時(shí)發(fā)生IRQ中斷,硬件完成以下動(dòng)作:LR_sysSPSR_irqLR_irqLRPCCPSRSPSRSYS1?0...????MODTFI...NZCV置位I位(禁止IRQ中斷)清零T位(進(jìn)入ARM狀態(tài))設(shè)置MOD位,切換處理器模式至IRQ模式將下一條指令的地址存入IRQ模式的LR寄存器將CPSR寄存器內(nèi)容存入IRQ模式的SPSR寄存器將跳轉(zhuǎn)地址存入PC,實(shí)現(xiàn)跳轉(zhuǎn)IRQ0?1...????BackAddrJumpAddrJumpSYS1?0...????“?”表示對(duì)該位不關(guān)心3/12/2024115從異常返回異常處理完畢之后,ARM微處理器會(huì)執(zhí)行以下幾步操作從異常返回1、將SPSR復(fù)制回CPSR中2、將鏈接寄存器LR的值減去相應(yīng)偏移量后送到PC中注意復(fù)位異常處理程序不需要返回編程(指令)完成3/12/2024116在異常處理結(jié)束后,異常處理程序完成以下動(dòng)作:程序AIRQ服務(wù)程序系統(tǒng)模式IRQ模式程序寄存器組LR_sysSPSR_irqLR_irqLRPCCPSRSPSRSYS1?0...????MODTFI...NZCV將SPSR寄存器的值復(fù)制回CPSR寄存器;將LR寄存的值減去一個(gè)常量后復(fù)制到PC寄存器,跳轉(zhuǎn)到被中斷的用戶程序。IRQ0?1...????BackAddrJumpAddrreturnSYS1?0...????SYS1?0...????BackAddr-4Jump“?”表示對(duì)該位不關(guān)心3/12/2024117各類異常的具體描述復(fù)位的響應(yīng)過程SPSR_svc=CPSR(不可預(yù)知)CPSR[4:0]=0b10011CPSR[5]=0 ;切換到ARM工作狀態(tài)CPSR[6]=1 ;禁止新的FIQ異常

CPSR[7]=1 ;禁止新的IRQ異常R14_svc=ReturnLink(不可預(yù)知)PC=0x00000000

3/12/2024118各類異常的具體描述UndefinedInstruction(未定義指令)當(dāng)ARM處理器遇到不能處理的指令時(shí),會(huì)產(chǎn)生未定義指令異常采用這種機(jī)制,可以通過軟件仿真擴(kuò)展ARM或Thumb指令集在未定義指令處理程序中執(zhí)行以下指令返回MOVSPC,R14_und恢復(fù)PC(從R14_und)和CPSR(從SPSR_und)的值,并返回到未定義指令后的下一條指令

指令加后綴“S”且目的寄存器為PC則自動(dòng)復(fù)制3/12/2024119各類異常的具體描述未定義指令異常的響應(yīng)過程SPSR_und=CPSRCPSR[4:0]=0b11011CPSR[5]=0 ;切換到ARM工作狀態(tài)//CPSR[6]保持不變

CPSR[7]=1 ;禁止新的IRQ異常R14_und=ReturnLinkPC=0x000000043/12/2024120各類異常的具體描述SoftwareInterrupt(軟件中斷)軟件中斷指令(SWI)用于進(jìn)入管理模式,常用于請(qǐng)求執(zhí)行特定的管理功能在ARM上寫的操作系統(tǒng)典型的使用SWI來為編程者提供各種例程在軟件中斷處理程序中執(zhí)行以下指令返回MOVSPC,R14_svc恢復(fù)PC(從R14_svc)和CPSR(從SPSR_svc)的值,并返回到SWI的下一條指令指令加后綴“S”且目的寄存器為PC則自動(dòng)復(fù)制3/12/2024121各類異常的具體描述SWI的響應(yīng)過程SPSR_svc=CPSRCPSR[4:0]=0b10011CPSR[5]=0 ;切換到ARM工作狀態(tài)//CPSR[6]保持不變

CPSR[7]=1 ;禁止新的IRQ異常R14_svc=ReturnLinkPC=0x00000008

3/12/2024122各類異常的具體描述IRQ(InterruptRequest)IRQ異常屬于正常的中斷請(qǐng)求,IRQ優(yōu)先級(jí)低于FIQ若CPSR的I位置1,則禁止IRQ中斷,若CPSR的I位清零,處理器會(huì)在指令執(zhí)行完之前檢查IRQ的輸入注意只有在特權(quán)模式下才能改變I位的狀態(tài)IRQ處理程序執(zhí)行以下指令返回SUBSPC,R14_irq,#4該指令將寄存器R14_irq的值減去4后,復(fù)制到程序計(jì)數(shù)器PC中,同時(shí)將SPSR_irq寄存器的內(nèi)容復(fù)制到CPSR中,并返回到引起中斷的下一條指令3/12/2024123各類異常的具體描述IRQ的響應(yīng)過程SPSR_irq=CPSRCPSR[4:0]=0b10010CPSR[5]=0 ;切換到ARM工作狀態(tài)//CPSR[6]保持不變

CPSR[7]=1 ;禁止新的IRQ異常R14_irq=ReturnLinkPC=0x000000183/12/2024124各類異常的具體描述FIQ(FastInterruptRequest)FIQ異常是為了支持?jǐn)?shù)據(jù)傳輸或者通道處理而設(shè)計(jì)的若將CPSR的F位置1,則禁止FIQ中斷,若將CPSR的F位清零,處理器會(huì)在指令執(zhí)行時(shí)檢查FIQ的輸入注意只有在特權(quán)模式下才能改變F位的狀態(tài)FIQ處理程序執(zhí)行以下指令返回SUBSPC,R14_fiq,#4該指令將寄存器R14_fiq的值減去4后,復(fù)制到程序計(jì)數(shù)器PC中,同時(shí)將SPSR_fiq寄存器的內(nèi)容復(fù)制到CPSR中,并返回到引起中斷的下一條指令3/12/2024125各類異常的具體描述FIQ的響應(yīng)過程SPSR_fiq=CPSRCPSR[4:0]=0b10001CPSR[5]=0 ;切換到ARM工作狀態(tài)CPSR[6]=1 ;禁止新的FIQ異常

CPSR[7]=1 ;禁止新的IRQ異常R14_fiq=ReturnLinkPC=0x0000001c3/12/2024126異常向量(ExceptionVectors)地址異常進(jìn)入模式0x0000,0000復(fù)位管理模式0x0000,0004未定義指令未定義模式0x0000,0008軟件中斷管理模式0x0000,000C中止(預(yù)取指令)中止模式0x0000,0010中止(數(shù)據(jù))中止模式0x0000,0014保留保留0x0000,0018IRQIRQ0x0000,001CFIQFIQ3/12/2024127異常向量;ExceptionVectors;MappedtoAddress0.;Absoluteaddressingmodemustbeused.VectorsLDRPC,Reset_Address

LDRPC,Undef_Address

LDRPC,SWI_Address

LDRPC,PAbt_Address

LDRPC,DAbt_Address

NOP

;ReservedVector

LDRPC,IRQ_Address

LDRPC,FIQ_Address3/12/2024128異常優(yōu)先級(jí)(ExceptionPriorities)優(yōu)先級(jí)異常1(最高)復(fù)位2數(shù)據(jù)中止3FIQ4IRQ5預(yù)取指令中止6(最低)未定義指令、SWI3/12/2024129應(yīng)用程序中的異常處理應(yīng)用程序首先要進(jìn)行異常處理當(dāng)系統(tǒng)運(yùn)行時(shí),異??赡軙?huì)隨時(shí)發(fā)生,因此要保證在發(fā)生異常時(shí)ARM處理器不至于處于未知狀態(tài)采用的方式是在異常向量表中的特定位置放置一條跳轉(zhuǎn)指令,跳轉(zhuǎn)到異常處理程序異常處理過程當(dāng)發(fā)生異常時(shí),程序計(jì)數(shù)器PC會(huì)被強(qiáng)制(自動(dòng))設(shè)置為對(duì)應(yīng)的異常向量,從而(自動(dòng))跳轉(zhuǎn)到異常處理程序,當(dāng)異常處理完成以后,返回到主程序繼續(xù)執(zhí)行3/12/2024130ARM微處理器的指令系統(tǒng)(選)一、ARM微處理器的尋址方式二、ARM微處理器的指令集概述三、ARM指令集四、Thumb指令集3/12/2024131一、ARM微處理器的尋址方式尋址方式就是處理器根據(jù)指令中給出的地址信息來尋找物理地址的方式ARM指令系統(tǒng)的尋址方式1立即尋址2寄存器尋址3寄存器間接尋址4基址尋址5相對(duì)尋址6多寄存器尋址7堆棧尋址3/12/20241321立即尋址立即尋址也叫立即數(shù)尋址這是一種特殊的尋址方式,操作數(shù)本身就在指令中給出,只要取出指令也就取到了操作數(shù)。這個(gè)操作數(shù)被稱為立即數(shù),對(duì)應(yīng)的尋址方式也就叫做立即尋址例如ADD R0,R0,#1 ;R0←R0+1ADD R0,R0,#0x3f ;R0←R0+0x3f在以上兩條指令中,第二個(gè)源操作數(shù)即為立即數(shù),要求以“?!睘榍熬Y,對(duì)于以十六進(jìn)制表示的立即數(shù),還要求在“?!焙蠹由稀?x”或“&”立即數(shù)一般為8位(超過8位使用偽指令LDR)3/12/20241332寄存器尋址寄存器尋址就是利用寄存器中的數(shù)值作為操作數(shù)這種尋址方式是各類微處理器經(jīng)常采用的一種方式,也是一種執(zhí)行效率較高的尋址方式例如ADDR0,R1,R2 ;R0←R1+R2該指令的執(zhí)行效果是將寄存器R1和R2的內(nèi)容相加,其結(jié)果存放在寄存器R0中3/12/20241343寄存器間接尋址寄存器間接尋址就是以寄存器中的值作為操作數(shù)的地址,而操作數(shù)本身存放在存儲(chǔ)器中例如ADDR0,R1,[R2] ;R0←R1+[R2]LDRR0,[R1] ;R0←[R1]STR

R0,[R1]

;[R1]←R0在第一條指令中,以寄存器R2的值作為操作數(shù)的地址,在存儲(chǔ)器中取得一個(gè)操作數(shù)后與R1相加,結(jié)果存入寄存器R0中LDR/STR:左寄存器,右存儲(chǔ)器3/12/20241354基址尋址基址尋址就是將寄存器(該寄存器一般稱作基址寄存器)的內(nèi)容與指令中給出的地址偏移量相加,從而得到一個(gè)操作數(shù)的有效地址基址尋址方式常用于訪問某基地址附近的單元采用基址尋址方式的指令常見有以下幾種形式LDRR0,[R1,#4];R0←[R1+4]LDRR0,[R1,#4]!;R0←[R1+4]、R1←R1+4LDRR0,[R1],#4;R0←[R1]、R1←R1+4LDRR0,[R1,R2];R0←[R1+R2]3/12/20241365相對(duì)尋址相對(duì)尋址以程序計(jì)數(shù)器PC的當(dāng)前值為基地址,指令中的地址標(biāo)號(hào)作為偏移量,將兩者相加之后得到操作數(shù)的有效地址以下程序段完成子程序的調(diào)用和返回,跳轉(zhuǎn)指令BL采用了相對(duì)尋址方式

BLSORT ;跳轉(zhuǎn)到子程序處執(zhí)行

……SORT……

MOVPC,LR ;從子程序返回

3/12/20241376多寄存器尋址采用多寄存器尋址方式,一條指令可以完成多個(gè)寄存器值的傳送,最多傳送16個(gè)通用寄存器的值例如LDMIAR0!,{R1,R2,R3,R4};R1←[R0],R0=R0+4

;R2←[R0],R0=R0+4

;R3←[R0],R0=R0+4

;R4←[R0],R0=R0+4指令后綴IA表示在每次執(zhí)行操作后R0按字長度增加注意:在寄存器列表中同一寄存器僅能指定一次;加載/存儲(chǔ)操作按照寄存器固定次序進(jìn)行,所以寄存器排列先后關(guān)系隨意LDM/STM:左存儲(chǔ)器,右寄存器STMIA

SP!,{R0,R1}LDMIA

SP!,{R1,R0}3/12/20241387堆棧尋址堆棧按先進(jìn)后出(FILO)的方式工作根據(jù)堆棧指針指向來分堆棧指針指向最后一個(gè)壓入堆棧的數(shù)據(jù)時(shí),稱為滿堆棧堆棧指針指向下一個(gè)將要放入數(shù)據(jù)的空位置時(shí),稱為空堆棧根據(jù)堆棧的生成方式堆棧指針遞增計(jì)數(shù)——遞增堆棧堆棧指針遞減計(jì)數(shù)——遞減堆棧3/12/20241397堆棧尋址ARM微處理器支持這四種類型的堆棧工作方式滿遞增堆棧:堆棧指針指向最后壓入的數(shù)據(jù),且由低地址向高地址生成—{LDMFA,STMFA}滿遞減堆棧:堆棧指針指向最后壓入的數(shù)據(jù),且由高地址向低地址生成—{LDMFD,STMFD}空遞增堆棧:堆棧指針指向下一個(gè)將要放入數(shù)據(jù)的空位置,且由低地址向高地址生成—{LDMEA,STMEA}空遞減堆棧:堆棧指針指向下一個(gè)將要放入數(shù)據(jù)的空位置,且由高地址向低地址生成—{LDMED,STMED}STMFDSP!,{R0-R7,LR}—LR最先進(jìn)棧,R0最后LDMFDSP!,{R0-R7,PC}—R0最先出棧,PC最后STMFDSP!,{R0-R7,LR}LDMFDSP!,{PC,R0-R7}3/12/2024140二、ARM微處理器的指令集概述ARM微處理器的指令集是Load/Store型注意:可以使用間接尋址等方式訪問存儲(chǔ)器,注意和純RISC處理器的區(qū)別1指令格式2指令助記符3指令條件域3/12/20241411指令格式<opcode>{<cond>}{S}<Rd>,<Rn>{,operand2}opcode: 指令助記符,如ADD,LDR,STRcond: 執(zhí)行條件,如NE,EQS: 是否影響CPSR的值Rd: 目標(biāo)寄存器Rn: 第一操作數(shù)寄存器operand2: 第二操作數(shù)靈活使用第二操作數(shù)能夠提高代碼質(zhì)量例子:ADDEQSR0,R1,#0x3f3/12/2024142助記符指令功能描述ADC帶進(jìn)位加法指令A(yù)DD加法指令A(yù)ND邏輯與指令B跳轉(zhuǎn)指令BIC位清零指令BL帶返回的跳轉(zhuǎn)指令BLX帶返回和狀態(tài)切換的跳轉(zhuǎn)指令BX帶狀態(tài)切換的跳轉(zhuǎn)指令CDP協(xié)處理器數(shù)據(jù)操作指令CMN取負(fù)比較指令CMP比較指令2指令助記符3/12/2024143助記符指令功能描述EOR異或指令LDC存儲(chǔ)器到協(xié)處理器的數(shù)據(jù)傳輸指令LDM加載多個(gè)寄存器指令LDR存儲(chǔ)器到寄存器的數(shù)據(jù)傳輸指令MCR從ARM寄存器到協(xié)處理器寄存器的數(shù)據(jù)傳輸指令MLA乘加運(yùn)算指令MOV數(shù)據(jù)傳送指令MRC從協(xié)處理器寄存器到ARM寄存器的數(shù)據(jù)傳輸指令MRS傳送CPSR或SPSR的內(nèi)容到通用寄存器指令MSR傳送通用寄存器到CPSR或SPSR的指令MUL32位乘法指令MVN數(shù)據(jù)取負(fù)傳送指令3/12/2024144助記符指令功能描述ORR邏輯或指令RSB反向減法指令RSC帶借位的反向減法指令SBC帶借位減法指令STC協(xié)處理器寄存器寫入存儲(chǔ)器指令STM批量內(nèi)存字寫入指令STR寄存器到存儲(chǔ)器的數(shù)據(jù)傳輸指令SUB減法指令SWI軟件中斷指令SWP交換指令TEQ相等測(cè)試指令TST位測(cè)試指令3/12/20241453指令條件域條件執(zhí)行當(dāng)處理器工作在ARM狀態(tài)時(shí),幾乎所有的指令均根據(jù)CPSR中條件碼的狀態(tài)和指令的條件域有條件的執(zhí)行當(dāng)指令的執(zhí)行條件滿足時(shí),指令被執(zhí)行,否則忽略條件碼每一條ARM指令包含4位的條件碼,位于指令碼的最高4位[31:28]條件碼共有15種,每種條件碼可用兩個(gè)字符表示,這兩個(gè)字符可添加在指令助記符的后面3/12/2024146條件碼助記符后綴標(biāo)志含義0000EQZ=1相等0001NEZ=0不相等0010CSC=1無符號(hào)數(shù)大于或等于0011CCC=0無符號(hào)數(shù)小于0100MIN=1負(fù)數(shù)0101PLN=0正數(shù)或零0110VSV=1溢出0111VCV=0未溢出1000HIC=1且Z=0無符號(hào)數(shù)大于1001LSC=0且Z=1無符號(hào)數(shù)小于或等于1010GEN=V帶符號(hào)數(shù)大于或等于1011LTN!=V帶符號(hào)數(shù)小于1100GTZ=0且N=V帶符號(hào)數(shù)大于1101LEZ=1或N!=V帶符號(hào)數(shù)小于或等于1110AL忽略無條件執(zhí)行3/12/20241473指令條件域(續(xù))實(shí)例

C代碼: if(a>b)a++;elseb++; ARM代碼:CMP R0,R1

ADDHI R0,R0,#1

ADDLS R1,R1,#1 C代碼: if((a!=10)&&(b!=20))a=a+b; ARM代碼:CMP R0,#10

CMPNE R1,#20

ADDNE R0,R0,R1if((a==10)&&(b!=20)) a=a+b;CMPR0,#10CMPEQR1,#20ADDNER0,R0,R1?3/12/2024148三、ARM指令集1跳轉(zhuǎn)指令2數(shù)據(jù)處理指令3乘法指令與乘加指令4程序狀態(tài)寄存器訪問指令5加載/存儲(chǔ)指令6數(shù)據(jù)交換指令7移位指令8協(xié)處理器指令9異常產(chǎn)生指令3/12/20241491跳轉(zhuǎn)指令在ARM程序中有兩種方法可以實(shí)現(xiàn)程序的跳轉(zhuǎn)直接向程序計(jì)數(shù)器PC寫入跳轉(zhuǎn)地址值可以實(shí)現(xiàn)在4GB的地址空間中的任意跳轉(zhuǎn)

溫馨提示

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