嵌入式系統(tǒng)原理及應(yīng)用Chapter3ARM7TDMI簡介_第1頁
嵌入式系統(tǒng)原理及應(yīng)用Chapter3ARM7TDMI簡介_第2頁
嵌入式系統(tǒng)原理及應(yīng)用Chapter3ARM7TDMI簡介_第3頁
嵌入式系統(tǒng)原理及應(yīng)用Chapter3ARM7TDMI簡介_第4頁
嵌入式系統(tǒng)原理及應(yīng)用Chapter3ARM7TDMI簡介_第5頁
已閱讀5頁,還剩68頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第三章

ARM7TDMI簡介主要內(nèi)容概述構(gòu)造和框圖3級流水線構(gòu)造ARM處置器的尋址方式異常主要內(nèi)容中斷延遲復(fù)位指令的預(yù)取和自修正代碼協(xié)處置器接口調(diào)試接口簡介3.1ARM7TDMI概述ARM7TDMI概述:ARM7TDMI是目前運用最廣泛的ARM家族成員之一。在運用中比較常見的芯片有:Atmel公司的AT91系列芯片、Samsung公司的S3C系列芯片和Cirrus公司的EP7系列等。ARM7TDMI基于ARM體系構(gòu)造V4版本,是目前低端的ARM核。具有廣泛的運用,其最顯著的運用為數(shù)字挪動。留意:“ARM核〞并不是芯片,ARM核與其它部件如RAM、ROM、片內(nèi)外設(shè)組合在一同才干構(gòu)成現(xiàn)實的芯片。3.1ARM7TDMI概述ARM7TDMI概述:ARM7TDMI支持32位尋址范圍,并彌補了ARM6不能在低于5V電源電壓下任務(wù)的缺乏。ARM7TDMI的后綴意義為:支持高密度16位的Thumb指令集;支持片上調(diào)試;支持64位乘法;支持EmbededICE察看硬件;ARM7TDMI的可綜合〔synthesizable〕版本〔軟核〕,對運用工程師來說其編程模型與ARM7TDMI一致;ARM7TDMI-S3.1ARM7TDMI概述ARM7TDMI概述:ARM7TDMI處置器是ARM通用32位微處置器家族的成員之一。它具有優(yōu)良的性能,但功耗卻很低,運用門的數(shù)量也很少。它屬于精簡指令集計算機〔RISC〕,比復(fù)雜指令集計算機〔CISC〕要簡單得多。這樣的簡化實現(xiàn)了:高的指令吞吐量;出色的實時中斷呼應(yīng);小的、高性價比的處置器宏單元。3.1ARM7TDMI概述ARM7TDMI概述:3.2ARM7TDMI的模塊和內(nèi)核框圖ARM7TDMI模塊ADDR[31:0]WDATA[31:0]RDATA[31:0]數(shù)據(jù)總線掃描線2掃描線1協(xié)處置器接口信號主核周圍有2個掃描線,這是為外部調(diào)試效力的掃描邏輯。主核和外部的總線銜接是經(jīng)過數(shù)據(jù)總線模塊進(jìn)展的。數(shù)據(jù)總線的輸入和輸出是分開的,而地址線是共用的,也就是說共有32條輸出數(shù)據(jù)總線、32條輸入數(shù)據(jù)總線和32條地址總線。3.2ARM7TDMI的模塊和內(nèi)核框圖TAP(testaccessingport):用于ARM進(jìn)展測試和調(diào)試。普通外部調(diào)試主機運用JTAG經(jīng)過串行通訊來訪問ARM處置器,這是一種比較方便的、以ARM為核的單片機的調(diào)試方法。ICE(InCircuitEmulator)在線仿真是一個支持片上調(diào)試的單元。從圖上可以看出:這個構(gòu)造只包括兩個部分:一部分是ARM內(nèi)核和總線;另一個部分是支持仿真調(diào)試的關(guān)聯(lián)部件。3.2ARM7TDMI的模塊和內(nèi)核框圖外部嵌入式跟蹤宏單元〔ETM〕銜接到ARM7TDMI處置器,這樣就可以實現(xiàn)對正在執(zhí)行的處置器進(jìn)展代碼的實時跟蹤。ETM直接銜接到ARM內(nèi)核而不是主AMBA系統(tǒng)總線。它將跟蹤信息緊縮并經(jīng)過一個窄帶跟蹤端口輸出。ETM接口簡介簡介3.2ARM7TDMI的模塊和內(nèi)核框圖ARM7TDMI模塊地址存放器存放器組31*32位存放器〔6個形狀存放器〕地址添加器乘法器桶形移位器32位ALU寫數(shù)據(jù)存放器指令管線讀數(shù)據(jù)存放器Thumb指令譯碼器指令譯碼和控制邏輯ADDR[31:0]CLKCLENCFGBIGENDnIRQnFIQnRESETABORTLOCKWRITESIZE[1:0]PROT[1:0]TRANS[1:0]DBG輸出DBG輸入CP控制CP握手WDATA[31:0]RDATA[31:0]掃描調(diào)試控制3.2ARM7TDMI的模塊和內(nèi)核框圖ARM7TDMI模塊3.3三級流水線構(gòu)造三級流水線ARM7TDMI處置器運用流水線來添加處置器指令流的速度。這樣可使幾個操作同時進(jìn)展,并使處置和存儲器系統(tǒng)延續(xù)操作,能提供0.9MIPS/MHz的指令執(zhí)行速度。ARM7TDMI的流水線分3級,分別為:取指譯碼執(zhí)行3.3三級流水線構(gòu)造三級流水線正常操作過程中,在執(zhí)行一條指令的同時對下一條指令進(jìn)展譯碼,并將第三條指令從存儲器中取出。這三條指令之間的位置關(guān)系如下表所示:流水線上各指令的地址流水線工位描述ARM指令集Thumb指令集PCPC取指指令從存儲器中取出PC-4PC-2譯碼對指令使用的寄存器進(jìn)行譯碼PC-8PC-4執(zhí)行從寄存器組中讀出寄存器,執(zhí)行移位和ALU操作,寄存器被寫回到寄存器組中存儲器訪問ARM7TDMI處置器運用了馮·諾依曼〔VonNeumann〕構(gòu)造,指令和數(shù)據(jù)共用一條32位總線。只需裝載、存儲和交換指令可以對存儲器中的數(shù)據(jù)進(jìn)展訪問。數(shù)據(jù)可以是字節(jié)〔8位〕、半字〔16位〕或者字〔32位〕。存儲器訪問計算機構(gòu)造闡明:“馮·諾依曼〞構(gòu)造:把代碼作為一種特殊的數(shù)據(jù)來操作,指令總線和數(shù)據(jù)總線及其存儲區(qū)域是一致的;“哈佛〞構(gòu)造:指令總線和數(shù)據(jù)總線及其存儲區(qū)是分開、獨立的。存儲器訪問ARM7TDMI處置器的存儲器接口可以使?jié)撛诘男阅艿靡詫崿F(xiàn),這樣減少了存儲器的運用。對速度有嚴(yán)厲要求的控制信號運用流水線,這樣使系統(tǒng)控制功能以規(guī)范的低功耗邏輯實現(xiàn)。ARM7TDMI處置器的存儲器周期有4個根本類型:內(nèi)部周期;非延續(xù)的周期;延續(xù)的周期;協(xié)處置器存放器的傳輸周期。3.4ARM處置器尋址方式尋址方式是根據(jù)指令中給出的地址碼字段來實現(xiàn)尋覓真實操作數(shù)地址的方式。ARM處置器具有9種根本尋址方式。(1).存放器尋址; (2).立刻尋址;(3).存放器偏移尋址;(4).存放器間接尋址;(5).基址尋址;(6).多存放器尋址;(7).堆棧尋址;(8).塊拷貝尋址;(9).相對尋址。操作數(shù)的值在存放器中,指令中的地址碼字段指出的是存放器編號,指令執(zhí)行時直接取出存放器值來操作。存放器尋址指令舉例如下:MOVR1,R2 ;將R2的值存入R1SUBR0,R1,R2;將R1的值減去R2的值,結(jié)果保管到R00xAA0x55R2R1(1).存放器尋址MOVR1,R20xAA立刻尋址指令中的操作碼字段后面的地址碼部分即是操作數(shù)本身,也就是說,數(shù)據(jù)就包含在指令當(dāng)中,取出指令也就取出了可以立刻便用的操作數(shù)(這樣的數(shù)稱為立刻數(shù))。立刻尋址指令舉例如下:SUBS R0,R0,#1;R0減1,結(jié)果放入R0,并且影響標(biāo)志位MOV R0,#0xFF000;將立刻數(shù)0xFF000裝入R0存放器0x55R0MOVR0,#0xFF00程序存儲(2).立刻尋址MOVR0,#0xFF000xFF00從代碼中獲得數(shù)據(jù)存放器移位尋址是ARM指令集特有的尋址方式。當(dāng)?shù)?個操作數(shù)是存放器移位方式時,第2個存放器操作數(shù)在與第1個操作數(shù)結(jié)合之前,選擇進(jìn)展移位操作。存放器移位尋址指令舉例如下:MOV R0,R2,LSL#3;R2的值左移3位,結(jié)果放入R0, ;即是R0=R2×8ANDS R1,R1,R2,LSLR3;R2的值左移R3位,然后和R1相 ;“與〞操作,結(jié)果放入R10x55R0R20x01(3).存放器偏移尋址MOVR0,R2,LSL#30x080x08邏輯左移3位存放器間接尋址指令中的地址碼給出的是一個通用存放器的編號,所需的操作數(shù)保管在存放器指定地址的存儲單元中,即存放器為操作數(shù)的地址指針。存放器間接尋址指令舉例如下:LDR R1,[R2] ;將R2指向的存儲單元的數(shù)據(jù)讀出 ;保管在R1中SWP R1,R1,[R2] ;將存放器R1的值和R2指定的存儲 ;單元的內(nèi)容交換0x55R0R20x400000000xAA0x40000000(4).存放器間接尋址LDRR0,[R2]0xAA基址尋址就是將基址存放器的內(nèi)容與指令中給出的偏移量相加,構(gòu)成操作數(shù)的有效地址?;穼ぶ分噶钆e例如下:LDR R2,[R3,#0x0C];讀取R3+0x0C地址上的存儲單元 ;的內(nèi)容,放入R2STR R1,[R0,#-4]! ;先R0=R0-4,然后把R1的值存放 ;到保管到R0指定的存儲單元(5).基址尋址0x55R2R30x400000000xAA0x4000000CLDRR2,[R3,#0x0C]0xAA將R3+0x0C作為地址裝載數(shù)據(jù)多存放器尋址一次可傳送幾個存放器值,允許一條指令傳送16個存放器的任何子集或一切存放器。多存放器尋址指令舉例如下:LDMIA R1!,{R2-R7,R12};將R1指向的單元中的數(shù)據(jù)讀出到 ;R2~R7、R12中(R1自動加1)STMIA R0!,{R2-R7,R12};將存放器R2~R7、R12的值保 ;存到R0指向的存儲;單元中 ;(R0自動加1)

運用多存放器尋址指令時,存放器子集的順序是按由小到大的順序陳列,延續(xù)的存放器可用“-〞銜接;否那么用“,〞分隔書寫。(6).多存放器尋址0x40000000R1R20x??0x010x400000000x??R3R40x??R60x??0x020x030x040x400000040x400000080x4000000C存儲器LDMIAR1!,{R2-R4,R6}0x400000100x010x020x030x04堆棧是一個按特定順序進(jìn)展存取的存儲區(qū),操作順序為“后進(jìn)先出〞。堆棧尋址是隱含的,它運用一個專門的存放器(堆棧指針)指向一塊存儲區(qū)域(堆棧),指針?biāo)赶虻拇鎯卧词嵌褩5臈m?。存儲器堆??煞譃閮煞N:向上生長:向高地址方向生長,稱為遞增堆棧向下生長:向低地址方向生長,稱為遞減堆棧(7).堆棧尋址(7).堆棧尋址棧底棧頂棧區(qū)SP堆棧存儲區(qū)棧頂棧底棧區(qū)SP向下增長向上增長0x123456780x12345678堆棧壓棧堆棧壓棧棧頂SP棧頂SP棧底空堆棧棧底滿堆棧堆棧指針指向最后壓入的堆棧的有效數(shù)據(jù)項,稱為滿堆棧;堆棧指針指向下一個待壓入數(shù)據(jù)的空位置,稱為空堆棧。(7).堆棧尋址0x123456780x12345678棧頂SP0x12345678棧頂SP壓棧壓棧所以可以組合出四種類型的堆棧方式:滿遞增:堆棧向上增長,堆棧指針指向內(nèi)含有效數(shù)據(jù)項的最高地址。指令如LDMFA、STMFA等;空遞增:堆棧向上增長,堆棧指針指向堆棧上的第一個空位置。指令如LDMEA、STMEA等;滿遞減:堆棧向下增長,堆棧指針指向內(nèi)含有效數(shù)據(jù)項的最低地址。指令如LDMFD、STMFD等;空遞減:堆棧向下增長,堆棧指針向堆棧下的第一個空位置。指令如LDMED、STMED等。(7).堆棧尋址多存放器傳送指令用于將一塊數(shù)據(jù)從存儲器的某一位置拷貝到另一位置。如:STMIA R0!,{R1-R7} ;將R1~R7的數(shù)據(jù)保管到存儲器中。 ;存儲指針在保管第一個值之后添加, ;增長方向為向上增長。STMIB R0!,{R1-R7} ;將R1~R7的數(shù)據(jù)保管到存儲器中。 ;存儲指針在保管第一個值之前添加, ;增長方向為向上增長。(8).塊拷貝尋址增加之前STMIBSTMFALDMIBLDMED之后STMIASTMEALDMIALDMFD減少之前LDMDBLDMEASTMDBSTMFD之后LDMDALDMFASTMDASTMED向上生長向下生長滿空滿空

增長的方向增長的先后多存放器傳送指令映射相對尋址是基址尋址的一種變通。由程序計數(shù)器PC提供基準(zhǔn)地址,指令中的地址碼字段作為偏移量,兩者相加后得到的地址即為操作數(shù)的有效地址。相對尋址指令舉例如下: BLSUBRl;調(diào)用到SUBRl子程序...SUBR1…MOVPC,R14;前往(7).相對尋址簡介只需正常的程序流被暫時中止,處置器就進(jìn)入異常方式。例如呼應(yīng)一個來自外設(shè)的中斷。在處置異常之前,ARM7TDMI內(nèi)核保管當(dāng)前的處置器形狀,這樣當(dāng)處置程序終了時可以恢復(fù)執(zhí)行原來的程序。假好像時發(fā)生兩個或更多異常,那么將按照固定的順序來處置異常,詳見“異常優(yōu)先級〞部分。3.5異常異常處置器方式異常類型模式正常地址復(fù)位管理0x00000000未定義指令未定義0x00000004軟件中斷(SWI)管理0x00000008預(yù)取中止(取指令存儲器中止)中止0x0000000C數(shù)據(jù)中止(數(shù)據(jù)訪問存儲器中止)中止0x00000010IRQ(中斷)IRQ0x00000018FIQ(快速中斷)FIQ0x0000001C異常的入口和出口處置假設(shè)異常處置程序曾經(jīng)把前往地址拷貝到堆棧,那么可以運用一條多存放器傳送指令來恢復(fù)用戶存放器并實現(xiàn)前往。SUBLR,LR,#4 ;計算前往地址STMFDSP!,{R0-R3,LR};保管運用到的存放器...LDMFDSP!,{R0-R3,PC}^ ;中斷前往中斷處置代碼的開場部分和退出部分3.5異常假設(shè)異常處置程序曾經(jīng)把前往地址拷貝到堆棧,那么可以運用一條多存放器傳送指令來恢復(fù)用戶存放器并實現(xiàn)前往。中斷處置代碼的開場部分和退出部分異常的入口和出口處置SUBLR,LR,#4 ;計算前往地址STMFDSP!,{R0-R3,LR} ;保管運用到的存放器...LDMFDSP!,{R0-R3,PC}^ ;中斷前往留意:中斷前往指令的存放器列表〔其中必需包括PC〕后的“^〞符號表示這是一條特殊方式的指令。這條指令在從存儲器中裝載PC的同時〔PC是最后恢復(fù)的〕,CPSR也得到恢復(fù)。這里運用的堆棧指針SP〔R13〕是屬于異常方式的存放器,每個異常方式有本人的堆棧指針。這個堆棧指針應(yīng)必需在系統(tǒng)啟動時初始化。3.5異常進(jìn)入異常在異常發(fā)生后,ARM7TDMI內(nèi)核會作以下任務(wù):1.在適當(dāng)?shù)腖R中保管下一條指令的地址,當(dāng)異常入口來自:ARM形狀,那么ARM7TDMI將當(dāng)前指令地址加4或加8復(fù)制〔取決于異常的類型〕到LR中;為Thumb形狀,那么ARM7TDMI將當(dāng)前指令地址加4或加8〔取決于異常的類型〕復(fù)制到LR中;異常處置器程序不用確定形狀。3.5異常進(jìn)入異常在異常發(fā)生后,ARM7TDMI內(nèi)核會作以下任務(wù):2.將CPSR復(fù)制到適當(dāng)?shù)腟PSR中;3.將CPSR方式位強迫設(shè)置為與異常類型相對應(yīng)的值;4.強迫PC從相關(guān)的異常向量處取指。3.5異常ARM7TDMI內(nèi)核在中斷異常時置位中斷制止標(biāo)志,這樣可以防止不受控制的異常嵌套。注:異常總是在ARM形狀中進(jìn)展處置。當(dāng)處置器處于Thumb形狀時發(fā)生了異常,在異常向量地址裝入PC時,會自動切換到ARM形狀。進(jìn)入異常3.5異常當(dāng)異常終了時,異常處置程序必需:1.將LR中的值減去偏移量后存入PC,偏移量根據(jù)異常的類型而有所不同;2.將SPSR的值復(fù)制回CPSR;3.清零在入口置位的中斷制止標(biāo)志。注:恢復(fù)CPSR的動作會將T、F和I位自動恢復(fù)為異常發(fā)生前的值。退出異常3.5異常程序AIRQ效力程序系統(tǒng)方式IRQ方式程序存放器組圖示進(jìn)入異常過程1.程序在系統(tǒng)方式下運轉(zhuǎn)用戶程序,假定當(dāng)前處置器形狀為Thumb形狀、允許IRQ中斷;2.用戶程序運轉(zhuǎn)時發(fā)生IRQ中斷,硬件完成以下動作:LR_sysSPSR_irqLR_irqLRPCCPSRSPSRSYS1?0...????MODTFI...NZCV置位I位〔制止IRQ中斷〕清零T位〔進(jìn)入ARM形狀〕設(shè)置MOD位,切換處置器方式至IRQ方式將下一條指令的地址存入IRQ方式的LR存放器將CPSR存放器內(nèi)容存入IRQ方式的SPSR存放器將跳轉(zhuǎn)地址存入PC,實現(xiàn)跳轉(zhuǎn)IRQ0?1...????BackAddrJumpAddrJumpSYS1?0...????“?〞表示對該位不關(guān)懷在異常處置終了后,異常處置程序完成以下動作:程序AIRQ效力程序系統(tǒng)方式IRQ方式程序存放器組圖示退出異常過程LR_sysSPSR_irqLR_irqLRPCCPSRSPSRSYS1?0...????MODTFI...NZCV將SPSR存放器的值復(fù)制回CPSR存放器;將LR存放的值減去一個常量后復(fù)制到PC存放器,跳轉(zhuǎn)到被中斷的用戶程序。IRQ0?1...????BackAddrJumpAddrreturnSYS1?0...????SYS1?0...????BackAddr-4Jump“?〞表示對該位不關(guān)懷快速中斷懇求(FIQ)適用于對一個突發(fā)事件的快速呼應(yīng),這得益于在ARM形狀中,快中斷方式有8個公用的存放器可用來滿足存放器維護(hù)的需求〔這可以加速上下文切換的速度〕。不論異常入口是來自ARM形狀還是Thumb形狀,F(xiàn)IQ處置程序都會經(jīng)過執(zhí)行下面的指令從中斷前往:SUBSPC,R14_fiq,#4在一個特權(quán)方式中,可以經(jīng)過置位CPSR中的F位來制止FIQ異常??焖僦袛鄳┣?.5異常中斷懇求〔IRQ〕異常是一個由nIRQ輸入端的低電平所產(chǎn)生的正常中斷〔在詳細(xì)的芯片中,nIRQ由片內(nèi)外設(shè)拉低,nIRQ是內(nèi)核的一個信號,對用戶不可見〕。IRQ的優(yōu)先級低于FIQ。對于FIQ序列它是被屏蔽的。任何時候在一個特權(quán)方式下,都可經(jīng)過置位CPSR中的I位來制止IRQ。不論異常入口是來自ARM形狀還是Thumb形狀,F(xiàn)IQ處置程序都會經(jīng)過執(zhí)行下面的指令從中斷前往:SUBSPC,R14_fiq,#4中斷懇求3.5異常中止發(fā)生在對存儲器的訪問不能完成時,中止包含兩種類型:預(yù)取中止發(fā)生在指令預(yù)取過程中數(shù)據(jù)中止發(fā)生在對數(shù)據(jù)訪問時中止3.5異常當(dāng)發(fā)生預(yù)取中止時,ARM7TDMI內(nèi)核將預(yù)取的指令標(biāo)志為無效,但在指令到達(dá)流水線的執(zhí)行階段時才進(jìn)入異常。假設(shè)指令在流水線中由于發(fā)生分支而沒有被執(zhí)行,中止將不會發(fā)生。在處置中止的緣由之后,不論處于哪種處置器操作形狀,處置程序都會執(zhí)行下面的指令恢復(fù)PC和CPSR并重試被中止的指令:SUBSPC,R14_abt,#4中止——預(yù)取指中止3.5異常當(dāng)發(fā)生數(shù)據(jù)中止后,根據(jù)產(chǎn)生數(shù)據(jù)中止的指令類型作出不同的處置:中止——數(shù)據(jù)中止數(shù)據(jù)轉(zhuǎn)移指令〔LDR、STR〕回寫到被修正的基址存放器。中止處置程序必需留意這一點;交換指令〔SWP〕中止好似沒有被執(zhí)行過一樣〔中止必需發(fā)生在SWP指令進(jìn)展讀訪問時〕;3.5異常塊數(shù)據(jù)轉(zhuǎn)移指令〔LDM,STM〕完成。當(dāng)回寫被設(shè)置時,基址存放器被更新。在指示出現(xiàn)中止后,ARM7TDMI內(nèi)核防止一切存放器被覆蓋。這意味著ARM7TDMI內(nèi)核總是會維護(hù)被中止的LDM指令中的R15〔總是最后一個被轉(zhuǎn)移的存放器〕。中止——數(shù)據(jù)中止當(dāng)發(fā)生數(shù)據(jù)中止后,根據(jù)產(chǎn)生數(shù)據(jù)中止的指令類型作出不同的處置:3.5異常在修復(fù)產(chǎn)生中止的緣由后,不論處于哪種處置器操作形狀,處置程序都必需執(zhí)行下面的前往指令:SUBSPC,R14_abt,#8中止——數(shù)據(jù)中止3.5異常運用軟件中斷(SWI)指令可以進(jìn)入管理方式,通常用于懇求一個特定的管理函數(shù)。SWI處置程序經(jīng)過執(zhí)行下面的指令前往:MOVSPC,R14_svc這個動作恢復(fù)了PC和CPSR并前往到SWI之后的指令。SWI處置程序讀取操作碼以提取SWI函數(shù)編號。軟件中斷指令3.5異常當(dāng)ARM7TDMI處置器遇到一條本人和系統(tǒng)內(nèi)任何協(xié)處置器都無法處置的指令時,ARM7TDMI內(nèi)核執(zhí)行未定義指令圈套。軟件可運用這一機制經(jīng)過模擬未定義的協(xié)處置器指令來擴展ARM指令集。注:ARM7TDMI處置器完全遵照ARM構(gòu)造v4T,可以捕獲一切分類未被定義的指令位格式。未定義的指令3.5異常在模擬處置了失敗的指令后,圈套程序執(zhí)行下面的指令:MOVSPC,R14_svc這個動作恢復(fù)了PC和CPSR并前往到未定義指令之后的指令。未定義的指令3.5異常異常向量地址異常類型進(jìn)入時的模式進(jìn)入時I的狀態(tài)進(jìn)入時F的狀態(tài)0x00復(fù)位管理禁止禁止0x04未定義指令未定義IF0x08軟件中斷管理禁止F0x0C中止(預(yù)?。┲兄笽F0x10中止(數(shù)據(jù))中止IF0x14保留保留——0x18IRQ中斷禁止F0x1CFIQ快中斷禁止禁止注:表中的I和F表示不對該位有影響,保管原來的值。當(dāng)多個異常同時發(fā)生時,一個固定的優(yōu)先級系統(tǒng)決議它們被處置的順序:異常優(yōu)先級異常類型優(yōu)先級復(fù)位1(最高優(yōu)先級)數(shù)據(jù)中止2FIQ3IRQ4預(yù)取中止5未定義指令6SWI7(最低優(yōu)先級)優(yōu)先級降低3.5異常留意:未定義的指令和SWI異常互斥。由于同一條指令不能既是未定義的,又能產(chǎn)生有效的軟件中斷;當(dāng)FIQ使能,并且FIQ和數(shù)據(jù)中止異常同時發(fā)生時,ARM7TDMI內(nèi)核首先進(jìn)入數(shù)據(jù)中止處置程序,然后立刻跳轉(zhuǎn)到FIQ向量。在FIQ處置終了后前往到數(shù)據(jù)中止處置程序。數(shù)據(jù)中止的優(yōu)先級必需高于FIQ以確保數(shù)據(jù)轉(zhuǎn)移錯誤不會被漏過。異常優(yōu)先級3.5異常3.6中斷延遲最大中斷延遲Tsyncmax,懇求經(jīng)過同步器的最長時間。為2個處置器周期〔由內(nèi)核決議〕;當(dāng)FIQ使能時,最壞情況是正在執(zhí)行一條裝載一切存放器的指令“LDM〞〔它耗時最長〕,同時發(fā)生了FIQ和數(shù)據(jù)中止異常,在呼應(yīng)FIQ中斷之前要先把正在執(zhí)行的指令完成,然后先進(jìn)入數(shù)據(jù)中止異常,再馬上跳轉(zhuǎn)到FIQ異常入口,所以延遲時間包含:3.6中斷延遲最大中斷延遲Tldm,最長的指令執(zhí)行需求的時間。Tldm在零等待形狀系統(tǒng)中的執(zhí)行時間為20個周期。留意,是在零等待形狀系統(tǒng)中。普通的基于ARM7核的芯片的存儲器系統(tǒng)比內(nèi)核速度慢,呵斥其不是零等待的;Texc,數(shù)據(jù)中止入口的時間。Texc為3個周期〔由內(nèi)核決議〕;Tfiq,F(xiàn)IQ入口的時間。Tfiq為2個周期〔由內(nèi)核決議〕。3.6中斷延遲最大中斷延遲FIQ總的延遲時間= Tsyncmax+Tldm+Texc+Tfiq=27個周期在40MHz處置器時鐘時,最大延遲時間略少于0.7us。在此時間終了后,ARM7TDMI執(zhí)行位于0x1C處的指令。最大的IRQ延遲時間與之類似,但必需思索到這樣一種情況,當(dāng)更高優(yōu)先級的FIQ和IRQ同時懇求時,IRQ要延遲到FIQ處置程序允許IRQ中斷時才處置〔能夠需求對中斷控制器進(jìn)展相應(yīng)的操作〕。IRQ延遲時間也要相應(yīng)添加。3.6中斷延遲最小中斷延遲FIQ或IRQ的最小中斷延遲是懇求經(jīng)過同步器的時間Tsyncmin加上Tfiq〔共4個處置器周期〕。3.7復(fù)位復(fù)位當(dāng)nRESET信號被拉低時〔普通外部復(fù)位引腳電平的變化和芯片的其它復(fù)位源會改動這個內(nèi)核信號〕,ARM7TDMI處置器放棄正在執(zhí)行的指令。在復(fù)位后,除PC和CPSR之外的一切存放器的值都不確定。3.7復(fù)位復(fù)位當(dāng)nRESET信號再次變?yōu)楦唠娖匠?,ARM處置器執(zhí)行以下操作:1.強迫M[4:0]變?yōu)閎10011〔管理方式〕;2.置位CPSR中的I和F位;3.清零CPSR中的T位;4.強迫PC從地址0x00開場對下一條指令進(jìn)展取指;5.前往到ARM形狀并恢復(fù)執(zhí)行。許多ARM實如今前一條指令的執(zhí)行尚未完成時將指令從存儲器中取出。這個動作稱為指令的預(yù)取。指令的預(yù)取并不是實踐執(zhí)行指令。芯片的消費廠商可以自在選擇預(yù)取指令的數(shù)目。被預(yù)取的指令能夠得不到運轉(zhuǎn),能夠的緣由是:發(fā)生異常;發(fā)生跳轉(zhuǎn);3.8指令的預(yù)取和自修正代碼當(dāng)讀取PC時,得到的指令地址比正在執(zhí)行指令的地址落后兩條指令:對于ARM指令,得到的地址是它本身地址+8;對于Thumb指令,得到的地址是它本身地址+4;雖然消費廠商可以選擇預(yù)取指令的數(shù)目,但是依然可以保證讀取PC所得到地址比它本身地址落后兩條指令。3.8指令的預(yù)取和自修正代碼在預(yù)取之前要進(jìn)展轉(zhuǎn)移預(yù)測,例如在執(zhí)行一條分支指令,此時要判別是預(yù)取分支指令之后的指令還是轉(zhuǎn)移目的地址的指令。3.8指令的預(yù)取和自修正代碼?????????內(nèi)核流水性執(zhí)行譯碼預(yù)取LDR R0,AddInstrSTR R0,NextInstrNextInstrSUBR1,R1,#1...AddInstrADDR1,R1,#1(1)(2)(4)(3)在存儲器中的指令能夠在它被預(yù)取之后,被執(zhí)行之前發(fā)生改動。假設(shè)發(fā)生這種情況,對存儲器中的指令進(jìn)展修正普通不能阻止已取指的指令的執(zhí)行。3.8指令的預(yù)取和自修正代碼預(yù)取能夠存在的問題LDRR0,AddInstrSTRR0,NextInstrLDRR0,AddInstrSTRR0,NextInstrLDRR0,AddInstrSUBR1,R1,#11.從地址〔1

溫馨提示

  • 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

提交評論