第四章ARM存儲與異常中斷處理_第1頁
第四章ARM存儲與異常中斷處理_第2頁
第四章ARM存儲與異常中斷處理_第3頁
第四章ARM存儲與異常中斷處理_第4頁
第四章ARM存儲與異常中斷處理_第5頁
已閱讀5頁,還剩90頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1第4章ARM體系結構本章主要介紹以下內容:ARM存儲器組織ARM的異常中斷24.6ARM存儲器組織介紹以下內容:數據類型和存儲格式ARM的存儲體系片上存儲器的用法 協(xié)處理器CP15存儲器管理單元MMU保護單元快速上下文切換擴展寫緩存器(WriteBuffer)ARM的異常中斷向量表和異常中斷處理與返回34.6.1數據類型和存儲格式ARM存儲器中的數據類型有6種有符號數8位(字節(jié))、16位(半字)、32位(字)無符號數8位(字節(jié))、16位(半字)、32位(字)缺省端序設置為小端序2008年6月21日44.6.2ARM的存儲體系參看下圖,抽象成一個呈金字塔型的存儲結構注重研究第2層2008年6月21日54.6.3片上存儲器的用法多數ARM處理器芯片內部集成了存儲器它們統(tǒng)稱為片上存儲器用途有:片上Cache、片上SRAM、緊耦合存儲器(TCM)、寫緩存片上存儲器的存儲空間可以通過指令進行配置,定義成片上Cache,或者片上SRAM,或者一部分片上Cache加一部分片上SRAM。緊耦合存儲器和寫緩存均需要編程使能或者硬件接線使能按照具體應用情況決定片上存儲器配置方法2008年6月21日6片上存儲器用作緊耦合存儲器緊耦合存儲器的英文原文如下:TightlyCoupledMemory,TCM彌補Cache訪問的不確定性而增加的片上存儲器。除了片上緊耦合存儲器外,還有緊耦合存儲器接口,它能夠提供低延時的外存儲器訪問。有的處理器含有分立的指令TCM和數據TCM。TCM包含在存儲器地址映射空間中,可以作為快速存儲器來訪問。除了不得包含讀敏感地址之外,對TCM接口上連接的存儲器類型沒有其他限制。TCM使用物理地址,對TCM的寫訪問受到MMU內部保護信息的控制。2008年6月21日7TCM在ARMv6處理器核的位置ARMv6處理器包括:ARM1136J-S、ARM1156T22008年6月21日8片內TCM存儲器舉例ARM926EJ-S核心內置32KB指令緩存、16KB數字緩存和8KB數據-TCM和8KB指令-TCM;2008年6月21日9Cortex-R4F方框圖—含TCM接口注意圖的右側含有一個TCM仲裁和接口模塊2008年6月21日10ARM1136的TCM支持DMA傳輸參看ARM1136的方框圖2008年年6月21日11ARM966E-S核的TCM地址映映射2008年年6月21日12ARM966E-S的TCM別名地址址空間物理存儲塊塊可以通過過TCM接接口映射在在片內的TCM存儲儲區(qū)2008年6月21日13ARM966E-S的TCM特點TheARM966E-SprocessorsupportsbothinstructionanddataTCMs.YoucanusetheDTCMandITCMtostorereal-timeandperformance-criticalcode.TheTCMsareinstantiatedexternallytotheARM966E-Smacrocellprovidingforflexibilityinthedesignofthememorysubsystem.Thesystemdesignercanselectmemorytypeandoptimizethememorysubsystemforpowerorspeed.2008年6月21日14ARM966E-S的TCM接口特特點(續(xù)1))ThefeaturesoftheTCMinterfaceinclude:

independentITCMandDTCMsizesof0KBor1KB-64MBinpower-of-twoincrements

softwarevisibilityandprogrammabilityofTCMsizeandenable

bootcontrolforITCM

dataaccesstotheITCMforliteralpoolaccessesincode

simpleSRAM-styleinterfacesupportingbothreadsandwrites

variableTCMwaitstatecontrolforITCMandDTCM

abilitytoindicatesequentialandnonsequentialaccesses.2008年6月21日15ARM966E-S的TCM特點接接口(續(xù)2))TheARM966E-SprocessorcontainsaTCMcontrollerthat:

schedulesrequeststotheTCMinterface

handshakeswiththeARM966E-Smemorysystemcontrollertoacknowledgewhenrequestshavebeenserviced

returnsTCMreaddatabacktotheARM9E-Score.TheTCMsarelocatedintheTCMaddressspace.2008年6月21日16AT91SAM9261處理器的TCMAT91SAM9261的獨立指令令和數據緩存存能支持WinCE和和Linux操作系統(tǒng)統(tǒng)。而其基于TCM構架的的SRAM區(qū)區(qū)塊則是“確確定過程式””實時操作系系統(tǒng)的理想安安排。另一方面,160K字節(jié)節(jié)的片上SRAM可劃分分成多個16K字節(jié)的區(qū)區(qū)塊,作為““指令TCM”、“數據據TCM”或或片上外設的的緩沖,從而而讓編程人員員靈活地優(yōu)化化系統(tǒng)的性能能和功耗。2008年年6月月21日17TCM的使使能操操作通過二二種方方式進進行TCM的使能能操作作使用處處理器器芯片片的INITRAM引腳使用CP15的c1控制寄寄存器器2008年年6月月21日18S3C44B0X和和S3C4510B的三三種片片上存存儲器器的配配置用用法S3C44B0X和S3C4510B都有8KB的片上上存儲儲器它們有有三種種配置置用法法8KB的SRAM8KB的Cache4KB的SRAM加上4KB的Cache較多采采用片片內RAM配置而而非片片內Cache配置。。2008年年6月月21日19ARM920T的片片內存存儲器器注意::ARM920T核核的內內部沒沒有TCM2008年年6月月21日20ARM720T的片片內存存儲器器8KByteunifiedcacheMemoryManagementUnit(MMU)writebufferUnified32-bitAHBbusinterfacecarriesbothinstructionsanddataEmbeddedTraceMacrocell(ETM)interface2008年年6月月21日21協(xié)協(xié)處處理器器CP15CP15即所謂謂的系統(tǒng)控控制協(xié)協(xié)處理理器SystemControlCoprocessor在基于于ARM的嵌入入式系系統(tǒng)中中,諸諸如MMU、Cache配置、、緊耦耦合處處理器器、寫寫緩存存配置置之類類的存存儲系系統(tǒng)管管理工工作由由協(xié)處處理器器CP15完成。。CP15可以包包含16個32位寄存存器編號為為CP0~CP15。實際運運用中中寫為為C0~C15。2008年年6月月21日22CP15寄寄存器器的訪訪問用戶只只能夠夠在特特權模模式下下使用用MRC和MCR指令來來訪問問CP15寄存器器。2008年年6月月21日23存存儲器器管理理單元元MMUARM的MMU部件的的用途途:

完成成虛擬擬存儲儲空間間到物物理存存儲空空間的的映射射。

管理理方式式:頁頁式虛虛擬存存儲器器。

頁的的大小小有兩兩種::粗粒粒度和和細粒粒度。。

存儲儲器訪訪問權權限的的控制制。

設置置虛擬擬存儲儲空間間的緩緩沖特特性。。2008年年6月月21日24保保護單單元保護單單元PU,ProtectionUnit也稱為為:MPU,MemoryProtectionUnit為了了消消除除術術語語的的二二義義性性,,我我們們統(tǒng)統(tǒng)一一使使用用術術語語PU保護護單單元元提提供供了了一一個個相相當當簡簡單單的的替替代代MMU的方方法法來來管管理理存存儲儲器器。。對于于不不需需要要PU的嵌嵌入入式式系系統(tǒng)統(tǒng)而而言言,,PU簡化化了了硬硬件件和和軟軟件件,,主主要要表表現(xiàn)現(xiàn)在在不不使使用用轉轉換換表表,,這這樣樣免免去去了了硬硬件件遍遍歷歷轉轉換換表表和和軟軟件件建建立立與與維維護護轉轉換換表表。。2008年6月月21日日25保護單元元的工作作原理和和作用ARM核核的PU使用區(qū)區(qū)域(region))來管理理系統(tǒng)保保護。區(qū)區(qū)域是一一個存儲儲空間相相關聯(lián)的的一組屬屬性,處處理器核核將這些些屬性保保存在協(xié)協(xié)處理器器CP15的一一些寄存存器里,,并用0-7的的號碼標標識每一一個區(qū)域域(它也也是一個個具有特特定屬性性的邏輯輯存儲空空間)。。區(qū)域的存存儲邊界界通過兩兩個屬性性進行配配置:起起始地址址和大小小。區(qū)域的大大小可以以是4KB~4MB的的任何2的乘冪冪。2008年6月月21日日26受保護區(qū)區(qū)域的屬屬性操作系統(tǒng)統(tǒng)可以為為受保護護區(qū)域分分配更多多的屬性性,包括括:訪問權限限、Cache和寫緩存存器策略略訪問權限限可以是是:讀/寫、只讀讀和不可可訪問基于處理理器模式式的權限限管理模式式、用戶戶模式等等Cache寫策略寫直達Cache操作、無無Cache操作、無無寫緩存存器操作作。2008年6月月21日日27含PU的的ARM處理器器主存訪訪問過程程當處理器器訪問主主存的一一個區(qū)域域時,PU比較較該區(qū)域域的訪問問權限屬屬性和當當時的處處理器模模式。如果請求求符合區(qū)區(qū)域訪問問標準,,則PU允許內內核讀/寫主存存;如果果存儲器器請求導導致存儲儲器訪問問違例,,則PU產生一一個異常常信號。。異常信號號被傳到到處理器器核,處處理器核核判斷是是出異常常是預取取指令中中止還是是數據中中止,然然后跳轉轉到對應應的異常常處理例例程。2008年6月月21日日28區(qū)域屬性性有關區(qū)域域的屬性性如下::區(qū)域可以以相互重重疊每一個區(qū)區(qū)域有一一個優(yōu)先先級,該該優(yōu)先級級與分配配給區(qū)域域的權限限無關當區(qū)域重重疊時,,具有最最高優(yōu)先先權的區(qū)區(qū)域的屬屬性可以以覆蓋其其他區(qū)域域的屬性性,優(yōu)先先權僅作作用于重重疊部分分的地址址。區(qū)域的起起始地址址必須是是其大小小的倍數數。區(qū)域的大大小是2的乘冪,,2的12次方到32次方。2008年6月月21日日29訪問受保保護區(qū)域域時產生生的異常常訪問所定定義區(qū)域域外的存存儲器將將產生異異常。如果是內內核預取取指令,,則PU產生一一個預取取指令中中止異常常。如果是存存儲器數數據請求求,則PU產生生數據中中止異常常。2008年6月月21日日30帶PU的ARM核概概要以下給給出了了四種種帶PU的ARM核概要屬性性ARM核區(qū)域數目指令區(qū)域和數據區(qū)域是否分離指令和數據區(qū)域配置是否分離ARM740T8否否ARM940T16是是ARM946E-S8否是ARM1026EJ-S8否是2008年年6月21日31在帶PU的的ARM系系統(tǒng)中創(chuàng)建建區(qū)域要實現(xiàn)一個個受PU控控制主存的的嵌入式系系統(tǒng),需要要對主存中中的不同塊塊定義若干干區(qū)域。一個區(qū)域可可以被創(chuàng)建建一次,然然后一直用用到嵌入式式系統(tǒng)運行行結束;也可以臨時時創(chuàng)建一個個區(qū)域來滿滿足一個特特殊操作的的需要,用用完之后就就加以刪除除。2008年年6月21日32含有PU的的ARM核核含有8個受保護區(qū)區(qū)域的ARM核ARM740TARM946E-SARM1026EJ-S含有16個受保護區(qū)區(qū)域的ARM核ARM940T2008年年6月21日33初始化PU、Cache和寫寫緩沖器為了初始化化PU、Cache和寫緩沖沖器,控制制系統(tǒng)必須須定義在操操作目標平平臺時所需需要的保護護區(qū)域。功能主存儲器次存儲器系統(tǒng)控制C1C0區(qū)域的cache屬性C2C0區(qū)域的寫緩沖器屬性C3C0區(qū)域的訪問權限屬性C5C0區(qū)域的大小和位置C6C0~C72008年年6月21日34帶保護單元元和MMU的系統(tǒng)框框圖2008年年6月21日354.6.7ARM處理器的的CacheARM處理器均帶帶有Cache或者可以將將片上存儲儲器配置成成Cache。當然,在在不需要時時也可以通通過配置操操作關閉Cache。ARM處理器的Cache地址映射均均采用組相相聯(lián)映射。。2008年年6月21日364.6.8快速上上下文切換換擴展快速上下文文切換擴展展FCSE,F(xiàn)astContextSwitchExtensionFCSE是ARM存儲儲系系統(tǒng)統(tǒng)的的修修正正機機構構。。它它修修改改系系統(tǒng)統(tǒng)中中不不同同進進程程的的虛虛擬擬地地址址,,避避免免在在進進行行進進程程間間切切換換時時造造成成的的虛虛擬擬地地址址到到物物理理地地址址的的重重映映射射,,從從而而提提高高系系統(tǒng)統(tǒng)的的性性能能。。為了了理理解解ARM處理理器器的的FCSE功能能,,我我們們首首先先考考察察當當虛虛擬擬存存儲儲器器中中任任務務切切換換時時,,主主存存中中頁頁表表和和物物理理存存儲儲器器的的隨隨動動切切換換。。2008年年6月月21日日37ARM虛虛擬擬存存儲儲器器用用戶戶任任務務上上下下文文切切換換示示例例-1任務務1正在在執(zhí)執(zhí)行行2008年年6月月21日日38ARM虛虛擬擬存存儲儲器器用用戶戶任任務務上上下下文文切切換換示示例例-2任務2正在執(zhí)行行2008年6月月21日日39ARM虛虛擬存儲儲器用用戶任務務上下文文切換示示例-3任務3正在執(zhí)行行2008年6月月21日日403個任務務的多任任務環(huán)境境中快快速上下下文切換換擴展的的舉例::切換前任任務1正在運行行2008年6月月21日日413個任務務的多任任務環(huán)境境中快快速上下下文切換換擴展的的舉例::(續(xù)))切換后任任務2正在運行行2008年6月月21日日42寫寫緩存器器(WriteBuffer)寫緩存器器是一個個容量很很小的片片內的先先進先出出(FIFO)存儲器器,位于于處理器器核與主主存之間間。寫緩存器器的主要要用途是是:當CPU輸出數據據時,總線恰好被占占用而無無法輸出出,此時時,CPU可以把輸輸出數據據寫入到到寫緩存存器。當當總線上上沒有比比寫緩存存區(qū)優(yōu)先先級更高高的掌控控者時,,寫緩存存區(qū)可以以通過總總線將數數據寫入入內存。。CPU由于不需需要等待待寫操作作的完成成而增強強了性能能。寫緩存區(qū)區(qū)中的FIFO存儲器在在存儲層層次中與與L1Cache處于相同同的層次次。2008年6月月21日日43S3C44B0X處理理器的寫寫緩存區(qū)區(qū)由4個寫緩存存寄存器器構成。。每一個個寫緩存存寄存器器包括一一個32位數據字字段,一一個28位地址字字段和一一個2位狀態(tài)字字段??梢酝ㄟ^過指令對對控制寄寄存器SYSCFG的WE位置1或者置0來使能或或者禁能能寫緩存存器。參參看下圖圖。2008年6月月21日日444.7ARM的異異常中斷斷ARM異異常與中中斷不做做嚴格意意義上的的區(qū)別ARM的的中斷向向量表內內存放的的是響應應異常和和中斷的的轉移指指令而不不是中斷斷向量地地址。在ARM處理器器中,當當異常發(fā)發(fā)生時,,完成當當前指令令后跳轉轉到相應應的異常常中斷處處理程序序入口執(zhí)執(zhí)行異常常中斷處處理。異異常處理理完畢后后返回原原來的程程序斷點點繼續(xù)執(zhí)執(zhí)行原來來的程序序。ARM異常和中中斷處理理課程安排排ARM體系結構構知識回回顧ARM異常的響響應ARM異常的處處理ARM異常的返返回ARM中斷的產產生、初初始化和和響應處處理流程程異常簡介只要正常常的程序序流被暫暫時中止止,處理理器就進進入異常常模式。。例如響響應一個個來自外外設的中中斷。在在處理異異常之前前,ARM內核保存存當前的的處理器器狀態(tài),,這樣當當處理程程序結束束時可以以恢復執(zhí)執(zhí)行原來來的程序序。如果同時時發(fā)生兩兩個或更更多異常常,那么么將按照照固定的的順序來來處理異異常,詳詳見“異常優(yōu)優(yōu)先級級”部分。。異常入入口/出口匯匯總異?;蛉肟诜祷刂噶钪暗臓顟B(tài)備注ARMR14_xThumbR14_xBLMOVPC,R14PC+4PC+2

此處PC為BL,SWI,為定義的指令取指或預取指中止指令的地址SWIMOVSPC,R14_svcPC+4PC+2未定義的指令MOVSPC,R14_undPC+4PC+2預取指中止SUBSPC,R14_abt,#4PC+4PC+4快中斷SUBSPC,R14_fiq,#4PC+4PC+4此處PC為由于FIQ或IRQ占先而沒有被執(zhí)行的指令的地址中斷SUBSPC,R14_irq,#4PC+4PC+4數據中止SUBSPC,R14_abt,#8PC+8PC+8此處PC為產生數據中止的裝載或保存指令的地址。

復位無——復位時保存在R14_svc中的值不可預知。

異常異常的的入口口和出出口處處理如果異異常處處理程程序已已經把把返回回地址址拷貝貝到堆堆棧,,那么么可以以使用用一條條多寄寄存器器傳送送指令令來恢恢復用用戶寄寄存器器并實實現(xiàn)返返回。。SUBLR,LR,#4;計算返返回地地址STMFDSP!,{R0-R3,LR};保存使使用到到的寄寄存器器...LDMFDSP!,{R0-R3,PC}^ ;中斷返回中斷處理代代碼的開始始部分和退退出部分如果異常處處理程序已已經把返回回地址拷貝貝到堆棧,,那么可以以使用一條條多寄存器器傳送指令令來恢復用用戶寄存器器并實現(xiàn)返返回。中斷處理代代碼的開始始部分和退退出部分異常異常的入口口和出口處處理SUBLR,LR,#4;計算返回地地址STMFDSP!,{R0-R3,LR} ;保存使用到到的寄存器器...LDMFDSP!,{R0-R3,PC}^ ;中斷返回注意:中斷返回指指令的寄存器器列表(其中中必須包括PC)后的“^”符號表示這是是一條特殊形形式的指令。。這條指令在在從存儲器中中裝載PC的同時(PC是最后恢復的的),CPSR也得到恢復。。這里使用的的堆棧指針SP(R13)是屬于異常常模式的寄存存器,每個異異常模式有自自己的堆棧指指針。這個堆堆棧指針應必必須在系統(tǒng)啟啟動時初始化化。異常進入異常在異常發(fā)生后后,ARM內核會作以下下工作:1.在適當的LR中保存下一條條指令的地址址,當異常入入口來自:ARM狀態(tài),那么ARM將當前指令地地址加4或加8復制(取決于于異常的類型型)到LR中;為Thumb狀態(tài),那么ARM將當前指令地地址加4或加8(取決于異常常的類型)復復制到LR中;異常處理理器程序不必必確定狀態(tài)。。異常進入異常在異常發(fā)生后后,ARM內核會作以下下工作:2.將CPSR復制到適當的的SPSR中;3.將CPSR模式位強制設設置為與異常常類型相對應應的值;4.強制PC從相關的異常常向量處取指指。ARM內核在中斷異異常時置位中中斷禁止標志志,這樣可以以防止不受控控制的異常嵌嵌套。注:異??偸窃谠贏RM狀態(tài)中進行處處理。當處理理器處于Thumb狀態(tài)時發(fā)生了了異常,在異異常向量地址址裝入PC時,會自動切切換到ARM狀態(tài)。異常進入異常當異常結束時時,異常處理理程序必須::1.將LR中的值減去偏偏移量后存入入PC,偏移量根據據異常的類型型而有所不同同;2.將SPSR的值復制回CPSR;3.清零在入口置置位的中斷禁禁止標志。注:恢復CPSR的動作會將T、F和I位自動恢復為為異常發(fā)生前前的值。異常退出異常程序AIRQ服務程序用戶模式IRQ模式程序寄存器組圖示進入異常常過程1.程序在系統(tǒng)模模式下運行用用戶程序,假假定當前處理理器狀態(tài)為Thumb狀態(tài)、允許IRQ中斷;2.用戶程序運行行時發(fā)生IRQ中斷,硬件完完成以下動作作:LR_usrSPSR_irqLR_irqLRPCCPSRSPSRSYS1?0...????MODTFI...NZCV置位I位(禁止IRQ中斷)清零T位(進入ARM狀態(tài))設置MOD位,切換處理理器模式至IRQ模式將下一條指令令的地址存入入IRQ模式的LR寄存器將CPSR寄存器內容存存入IRQ模式的SPSR寄存器將跳轉地址存存入PC,實現(xiàn)跳轉IRQ0?1...????BackAddrJumpAddrJumpSYS1?0...????“?”表示對該位不不關心在異常處理結結束后,異常常處理程序完完成以下動作作:程序AIRQ服務程序系統(tǒng)模式IRQ模式程序寄存器組圖示退出異常常過程LR_sysSPSR_irqLR_irqLRPCCPSRSPSRSYS1?0...????MODTFI...NZCV將SPSR寄存器的值復復制回CPSR寄存器;將LR寄存的值減去去一個常量后后復制到PC寄存器,跳轉轉到被中斷的的用戶程序。。IRQ0?1...????BackAddrJumpAddrreturnSYS1?0...????SYS1?0...????BackAddr-4Jump“?”表示對該位不不關心快速中斷請求求(FIQ)適用于對一個個突發(fā)事件的的快速響應,,這得益于在在ARM狀態(tài)中,快中中斷模式有8個專用的寄存存器可用來滿滿足寄存器保保護的需要((這可以加速速上下文切換換的速度)。。不管異常入口口是來自ARM狀態(tài)還是Thumb狀態(tài)態(tài),,F(xiàn)IQ處理理程程序序都都會會通通過過執(zhí)執(zhí)行行下下面面的的指指令令從從中中斷斷返返回回::SUBSPC,R14_fiq,#4在一一個個特特權權模模式式中中,,可可以以通通過過置置位位CPSR中的的F位來來禁禁止止FIQ異常常。。異常??焖偎僦兄袛鄶嗾堈埱笄笾袛鄶嗾堈埱笄螅ǎ↖RQ)異異常常是是一一個個由由nIRQ輸入入端端的的低低電電平平所所產產生生的的正正常常中中斷斷((在在具具體體的的芯芯片片中中,,nIRQ由片片內內外外設設拉拉低低,,nIRQ是內內核核的的一一個個信信號號,,對對用用戶戶不不可可見見))。。IRQ的優(yōu)優(yōu)先先級級低低于于FIQ。對對于于FIQ序列列它它是是被被屏屏蔽蔽的的。。任任何何時時候候在在一一個個特特權權模模式式下下,,都都可可通通過過置置位位CPSR中的的I位來來禁禁止止IRQ。不管管異異常常入入口口是是來來自自ARM狀態(tài)還還是Thumb狀態(tài),,F(xiàn)IQ處理程程序都都會通通過執(zhí)執(zhí)行下下面的的指令令從中中斷返返回::SUBSPC,R14_fiq,#4異常中斷請請求中止發(fā)發(fā)生在在對存存儲器器的訪訪問不不能完完成時時,中中止包包含兩兩種類類型::預取中中止發(fā)發(fā)生在在指令令預取取過程程中數據中中止發(fā)發(fā)生在在對數數據訪訪問時時異常中止當發(fā)生生預取取中止止時,,ARM內核將將預取取的指指令標標記為為無效效,但但在指指令到到達流流水線線的執(zhí)執(zhí)行階階段時時才進進入異異常。。如果果指令令在流流水線線中因因為發(fā)發(fā)生分在處理中止的原因之后,不管處于哪種處理器操作狀態(tài),處理程序都會執(zhí)行下面的指令恢復PC和CPSR并重試被中止的指令:

SUBSPC,R14_abt,#4異常中止——預取指指中止止當發(fā)生生數據據中止止后,,根據據產生生數據據中止止的指指令類類型作作出不不同的的處理理:異常中止——數據中中止數據轉轉移指指令((LDR、STR)回寫寫到被被修改改的基基址寄寄存器器。中中止處處理程程序必必須注注意這這一點點;交換指指令((SWP)中止止好像像沒有有被執(zhí)執(zhí)行過過一樣樣(中中止必必須發(fā)發(fā)生在在SWP指令進進行讀讀訪問問時));;塊數據據轉移移指令令(LDM,STM)完成成。當當回回寫被被設置置時,,基址址寄存存器被被更新新。在在指示示出現(xiàn)現(xiàn)中止止后,,ARM內核防防止所所有寄寄存器器被覆覆蓋。。這意意味著著ARM內核總總是會會保護護被中中止的的LDM指令中中的R15(總是是最后后一個個被轉轉移的的寄存存器))。異常中止——數據中中止當發(fā)生生數據據中止止后,,根據據產生生數據據中止止的指指令類類型作作出不不同的的處理理:在修復復產生生中止止的原原因后后,不不管處處于哪哪種處處理器器操作作狀態(tài)態(tài),處處理程程序都都必須須執(zhí)行行下面面的返返回指指令::SUBSPC,R14_abt,#8異常中止——數據中中止使用軟軟件中中斷(SWI)指令可可以進進入管管理模模式,,通常常用于于請求求一個個特定定的管管理函函數。。SWI處理程程序通通過執(zhí)執(zhí)行下下面的的指令令返回回:MOVSPC,R14_svc這個動動作恢恢復了了PC和CPSR并返回回到SWI之后的的指令令。SWI處理程程序讀讀取操操作碼碼以提提取SWI函數編編號。。異常軟件中中斷指指令當ARM處理器器遇到到一條條自己己和系系統(tǒng)內內任何何協(xié)處處理器器都無無法處處理的的指令令時,,ARM內核執(zhí)執(zhí)行未未定義義指令令陷阱阱。軟軟件可可使用用這一一機制制通過過模擬擬未定定義的的協(xié)處處理器器指令令來擴擴展ARM指令集。注:ARM處理器完全全遵循ARM結構v4T,可以捕獲獲所有分類類未被定義義的指令位位格式。異常未定義的指指令在模擬處理理了失敗的的指令后,,陷阱程序序執(zhí)行下面面的指令::MOVSPC,R14_svc這個動作恢恢復了PC和CPSR并返回到未未定義指令令之后的指指令。異常未定義的指指令異常向量地址異常類型進入時的模式進入時I的狀態(tài)進入時F的狀態(tài)0x00000000復位管理禁止禁止0x00000004未定義指令未定義IF0x00000008軟件中斷管理禁止F0x0000000C中止(預?。┲兄笽F0x00000010中止(數據)中止IF0x00000014保留保留——0x00000018IRQ中斷禁止F0x0000001CFIQ快中斷禁止禁止注:表中的I和F表示不對該該位有影響響,保留原原來的值。。當多個異常常同時發(fā)生生時,一個個固定的優(yōu)優(yōu)先級系統(tǒng)統(tǒng)決定它們們被處理的的順序:異常異常優(yōu)先級級異常類型優(yōu)先級復位1(最高優(yōu)先級)數據中止2FIQ3IRQ4預取中止5未定義指令6SWI7(最低優(yōu)先級)優(yōu)先級降低注意:未定義的指指令和SWI異?;コ?。。因為同一一條指令不不能既是未未定義的,,又能產生生有效的軟軟件中斷;;當FIQ使能,并且且FIQ和數據中止止異常同時時發(fā)生時,,ARM內核首先進進入數據中中止處理程程序,然后后立即跳轉轉到FIQ向量。在FIQ處理結束后后返回到數數據中止處處理程序。。數據中止止的優(yōu)先級級必須高于于FIQ以確保數據據轉移錯誤誤不會被漏漏過。異常異常優(yōu)先級級復位復位當nRESET信號被拉低低時(一般般外部復位位引腳電平平的變化和和芯片的其其它復位源源會改變這這個內核信信號),ARM處理器放棄棄正在執(zhí)行行的指令。在復位后,,除PC和CPSR之外的所所有寄存存器的值值都不確確定。復位復位當nRESET信號再次次變?yōu)楦吒唠娖綍r時,ARM處理器執(zhí)執(zhí)行下列列操作::1.強制M[4:0]變?yōu)閎10011(管理模模式);;2.置位CPSR中的I和F位;3.清零CPSR中的T位;4.強制PC從地址0x00開始對下下一條指指令進行行取指;;5.返回到ARM狀態(tài)并恢恢復執(zhí)行行。什么是異異常?當正常的的程序執(zhí)執(zhí)行流程程發(fā)生暫暫時的停停止時,,稱之為為異常,,例如一一個外部部的中斷斷請求。。在處理異異常之前前,當前前處理器器的狀態(tài)態(tài)必須保保存,這這樣當異異常處理理完成后后,恢復復之前保保存的處處理器現(xiàn)現(xiàn)場,當當前程序序可以繼繼續(xù)執(zhí)行行。處理器的的狀態(tài)保保存和恢恢復通常常是和體體系結構構密切相相關的,,特別是是處理器器內部的的寄存器器。哪些處理理器的狀狀態(tài)需要要保存??發(fā)生異常常前的模模式下的的通用寄寄存器R0––R12需要保存存如果是FIQ異常,則則可以只只保存R0––R7CPSR和PC由硬件自自動存入入SPSR_irq和lr_irq中,保存存與否取取決于在在中斷處處理程序序中是否否會改變變。R13(sp)和R14(lr)不需要保保存從異常模模式返回回所需要要的寄存存器返回的地地址保存存在lr_irq中返回的模模式保存存在spsr_irq中這些寄存存器保存存到哪里里?保存在異異常模式式下的堆堆棧中,,sp_irq作為堆棧棧指針異常處理理時內存存映像圖圖示主程序(通常是無限限循環(huán))異常處理程序序保存處理器現(xiàn)現(xiàn)場程序恢復處理器現(xiàn)現(xiàn)場程序主程序內內存C語言編寫通常是無限循循環(huán)異常處理程序序C語言編寫通常是設置標標志位,快速速處理保存和恢復處處理器現(xiàn)場程程序匯編語言編寫寫通常是將寄存存器壓棧和彈彈棧異常向量表分分析異常向量表從從0地址開始,共共有8個表項其中7個表項用作異異常發(fā)生后入入口,1個保留不用一般每個表項項內的指令都都是一條跳轉轉指令Bxxxx相對跳轉指令令跳轉地址范圍圍有限LDRpc,[pc,#xx]直接對PC賦值可以實現(xiàn)到任任意地址的跳跳轉幾個異常如果果同時發(fā)生,,它們的優(yōu)先先級如下1、復位2、數據異常中中止3、FIQ4、IRQ5、預取指令6、SWI和未定義指令令異常的優(yōu)先級級引入異常向量量表后的內存存映像內存主程序(通常是無限限循環(huán))異常處理程序序保存處理器現(xiàn)現(xiàn)場程序恢復處理器現(xiàn)現(xiàn)場程序主程序異常處理程序序保存和恢復處處理器現(xiàn)場程程序異常向量表通常是放置一一條跳轉語句句從主程序到異異常向量表的的跳轉是硬件自動完完成的異常向量表入入口2異常響應應當一個異常出出現(xiàn)以后,ARM微處理器硬件會自動完成以下幾步步操作:1、將下一條指指令的地址存存入該異常對對應的工作模模式下的連接寄存器LR(r14_irq),以便程序在在處理異常返返回時能從正正確的位置重重新開始執(zhí)行行。討論:為什什么是r14_irq而不是r14_svc?2、將CPSR復制到相應的的SPSR_irq中。3、根據異常類類型,強制設設置CPSR的運行模式位位。4、禁止IRQ中斷;進入FIQ模式時禁止FIQ中斷。5、映射相應模模式的寄存器器6、強制PC從相關的異常常向量地址取取下一條指令令執(zhí)行,從而而跳轉到相應應的異常處理理程序處。異常響應(續(xù)續(xù))3異常處理理異常處理包括括兩部分保存處理器現(xiàn)現(xiàn)場STMFDsp!,{r0-r12,lr};執(zhí)行中斷服務務子程序BL do_irq;4異常返回回異常處理完畢畢之后,軟件需要執(zhí)行以下幾步操作作從異常返回回:1、將鏈接寄存存器LR的值減去相應應的偏移量后后送到PC中。2、同時將SPSR復制回CPSR中??梢哉J為應用用程序總是從從復位異常處處理程序開始始執(zhí)行的,因因此復位異常常處理程序不不需要返回。。未定義指令異異常返回未定義指令異異常是由當前前執(zhí)行的指令令自身產生的的,程序計數數器PC的值還未更新新,指向當前前指令后面第第2條指令。處理器將PC-4保存到寄存器器LR_und中。返回操作可通通過如下指令令實現(xiàn)MOVSPC, LRSTMFDSP!,{R0-R12,LR};…LDMFDSP!,{R0-R12,PC}^SWIimmSWI異常返返回SWI異常通常是提提供程序員使使用,程序員員可以讓處理理器進入SVC模式下執(zhí)行特特定函數來完完成某種功能能。我們可以用如如下一條指令令進入SWI異常:SWI異常也是由當當前執(zhí)行的指指令自身產生生的,返回操作同未定定義指令異常常。IRQ中斷返返回IRQ異常屬于正常常的中斷請求求,可通過對對處理器的nIRQ引腳輸入低電電平產生。若將CPSR的I位置為1,則會禁止IRQ中斷(注意只只有在特權模模式下才能改改變I位的狀態(tài))。。若將CPSR的I位清零,處理理器會在指令令執(zhí)行完之后檢查IRQ的輸入。因此此,IRQ中斷產生時程程序計數器PC的值已經更新新,指向當前前指令后面第第3條指令。IRQ中斷返返回(續(xù))IRQ中斷返回操作作可通過如下下指令實現(xiàn)SUBSPC, R14_irq,#4SUBSLR,LR,#4STMFDSP!,{R0-R12,LR};…LDMFDSP!,{R0-R12,PC}^FIQ中斷返返回快速中斷異常常是為了支持持一些快速的的中斷處理的的一種異常模模式。FIQ有r8-12作為私有寄存存器,在模式式切換的時候候不用進行太太多的寄存器器保存和恢復復,從而節(jié)省省了模式切換換的時間。FIQ在異常常向量量表中

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論