《嵌入式系統基礎教程》第07講第4章ARM存儲器組織和異常中斷習題_第1頁
《嵌入式系統基礎教程》第07講第4章ARM存儲器組織和異常中斷習題_第2頁
《嵌入式系統基礎教程》第07講第4章ARM存儲器組織和異常中斷習題_第3頁
《嵌入式系統基礎教程》第07講第4章ARM存儲器組織和異常中斷習題_第4頁
《嵌入式系統基礎教程》第07講第4章ARM存儲器組織和異常中斷習題_第5頁
已閱讀5頁,還剩52頁未讀 繼續免費閱讀

付費下載

下載本文檔

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

文檔簡介

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

independentITCMandDTCMsizesof0KBor1KB-64MBinpower-of-twoincrements

softwarevisibilityandprogrammabilityofTCMsizeandenable

bootcontrolforITCM

dataaccesstotheITCMforliteralpoolaccessesincode

simpleSRAM-styleinterfacesupportingbothreadsandwrites

variableTCMwaitstatecontrolforITCMandDTCM

abilitytoindicatesequentialandnonsequentialaccesses.2008年6月21日15《嵌入式系統基礎教程》第07講第4章ARM存儲器組織和異常中斷習題ARM966E-S的TCM特點接口(續2)TheARM966E-SprocessorcontainsaTCMcontrollerthat:

schedulesrequeststotheTCMinterface

handshakeswiththeARM966E-Smemorysystemcontrollertoacknowledgewhenrequestshavebeenserviced

returnsTCMreaddatabacktotheARM9E-Score.TheTCMsarelocatedintheTCMaddressspace.

2008年6月21日16《嵌入式系統基礎教程》第07講第4章ARM存儲器組織和異常中斷習題AT91SAM9261處理器的TCMAT91SAM9261的獨立指令和數據緩存能支持WinCE和Linux操作系統。而其基于TCM構架的SRAM區塊則是“確定過程式”實時操作系統的理想安排。另一方面,160K字節的片上SRAM可劃分成多個16K字節的區塊,作為“指令TCM”、“數據TCM”或片上外設的緩沖,從而讓編程人員靈活地優化系統的性能和功耗。2008年6月21日17《嵌入式系統基礎教程》第07講第4章ARM存儲器組織和異常中斷習題TCM的使能操作通過二種方式進行TCM的使能操作使用處理器芯片的INITRAM引腳使用CP15的c1控制寄存器2008年6月21日18《嵌入式系統基礎教程》第07講第4章ARM存儲器組織和異常中斷習題S3C44B0X和S3C4510B的三種片上存儲器的配置用法S3C44B0X和S3C4510B都有8KB的片上存儲器它們有三種配置用法8KB的SRAM8KB的Cache4KB的SRAM加上4KB的Cache較多采用片內RAM配置而非片內Cache配置。2008年6月21日19《嵌入式系統基礎教程》第07講第4章ARM存儲器組織和異常中斷習題4.6.4協處理器CP15CP15即所謂的系統控制協處理器SystemControlCoprocessor在基于ARM的嵌入式系統中,諸如MMU、Cache配置、緊耦合處理器、寫緩存配置之類的存儲系統管理工作由協處理器CP15完成。CP15可以包含16個32位寄存器編號為CP0~CP15。實際運用中寫為C0~C15。2008年6月21日20《嵌入式系統基礎教程》第07講第4章ARM存儲器組織和異常中斷習題CP15寄存器的訪問用戶只能夠在特權模式下使用MRC和MCR指令來訪問CP15寄存器。2008年6月21日21《嵌入式系統基礎教程》第07講第4章ARM存儲器組織和異常中斷習題4.6.5存儲器管理單元MMUARM的MMU部件的用途:

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

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

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

存儲器訪問權限的控制。

設置虛擬存儲空間的緩沖特性。2008年6月21日22《嵌入式系統基礎教程》第07講第4章ARM存儲器組織和異常中斷習題4.6.6保護單元保護單元PU,ProtectionUnit也稱為:MPU,MemoryProtectionUnit為了消除術語的二義性,我們統一使用術語PU保護單元提供了一個相當簡單的替代MMU的方法來管理存儲器。對于不需要PU的嵌入式系統而言,PU簡化了硬件和軟件,主要表現在不使用轉換表,這樣免去了硬件遍歷轉換表和軟件建立與維護轉換表。2008年6月21日23《嵌入式系統基礎教程》第07講第4章ARM存儲器組織和異常中斷習題保護單元的工作原理和作用ARM核的PU使用區域(region)來管理系統保護。區域是一個存儲空間相關聯的一組屬性,處理器核將這些屬性保存在協處理器CP15的一些寄存器里,并用0-7的號碼標識每一個區域(它也是一個具有特定屬性的邏輯存儲空間)。區域的存儲邊界通過兩個屬性進行配置:起始地址和大小。區域的大小可以是4KB~4MB的任何2的乘冪。2008年6月21日24《嵌入式系統基礎教程》第07講第4章ARM存儲器組織和異常中斷習題受保護區域的屬性操作系統可以為受保護區域分配更多的屬性,包括:訪問權限、Cache和寫緩存器策略訪問權限可以是:讀/寫、只讀和不可訪問基于處理器模式的權限管理模式、用戶模式等Cache寫策略寫直達Cache操作、無Cache操作、無寫緩存器操作。2008年6月21日25《嵌入式系統基礎教程》第07講第4章ARM存儲器組織和異常中斷習題含PU的ARM處理器主存訪問過程當處理器訪問主存的一個區域時,PU比較該區域的訪問權限屬性和當時的處理器模式。如果請求符合區域訪問標準,則PU允許內核讀/寫主存;如果存儲器請求導致存儲器訪問違例,則PU產生一個異常信號。異常信號被傳到處理器核,處理器核判斷是出異常是預取指令中止還是數據中止,然后跳轉到對應的異常處理例程。2008年6月21日26《嵌入式系統基礎教程》第07講第4章ARM存儲器組織和異常中斷習題區域屬性有關區域的屬性如下:區域可以相互重疊每一個區域有一個優先級,該優先級與分配給區域的權限無關當區域重疊時,具有最高優先權的區域的屬性可以覆蓋其他區域的屬性,優先權僅作用于重疊部分的地址。區域的起始地址必須是其大小的倍數。區域的大小是2的乘冪,2的12次方到32次方。2008年6月21日27《嵌入式系統基礎教程》第07講第4章ARM存儲器組織和異常中斷習題訪問受保護區域時產生的異常訪問所定義區域外的存儲器將產生異常。如果是內核預取指令,則PU產生一個預取指令中止異常。如果是存儲器數據請求,則PU產生數據中止異常。2008年6月21日28《嵌入式系統基礎教程》第07講第4章ARM存儲器組織和異常中斷習題帶PU的ARM核概要以下給出了四種帶PU的ARM核概要屬性ARM核區域數目指令區域和數據區域是否分離指令和數據區域配置是否分離ARM740T8否否ARM940T16是是ARM946E-S8否是ARM1026EJ-S8否是2008年6月21日29《嵌入式系統基礎教程》第07講第4章ARM存儲器組織和異常中斷習題在帶PU的ARM系統中創建區域要實現一個受PU控制主存的嵌入式系統,需要對主存中的不同塊定義若干區域。一個區域可以被創建一次,然后一直用到嵌入式系統運行結束;也可以臨時創建一個區域來滿足一個特殊操作的需要,用完之后就加以刪除。2008年6月21日30《嵌入式系統基礎教程》第07講第4章ARM存儲器組織和異常中斷習題含有PU的ARM核含有8個受保護區域的ARM核ARM740TARM946E-SARM1026EJ-S含有16個受保護區域的ARM核ARM940T2008年6月21日31《嵌入式系統基礎教程》第07講第4章ARM存儲器組織和異常中斷習題初始化PU、Cache和寫緩沖器為了初始化PU、Cache和寫緩沖器,控制系統必須定義在操作目標平臺時所需要的保護區域。功能主存儲器次存儲器系統控制C1C0區域的cache屬性C2C0區域的寫緩沖器屬性C3C0區域的訪問權限屬性C5C0區域的大小和位置C6C0~C72008年6月21日32《嵌入式系統基礎教程》第07講第4章ARM存儲器組織和異常中斷習題帶保護單元和MMU的系統框圖2008年6月21日33《嵌入式系統基礎教程》第07講第4章ARM存儲器組織和異常中斷習題4.6.7ARM處理器的CacheARM處理器均帶有Cache或者可以將片上存儲器配置成Cache。當然,在不需要時也可以通過配置操作關閉Cache。ARM處理器的Cache地址映射均采用組相聯映射。2008年6月21日34《嵌入式系統基礎教程》第07講第4章ARM存儲器組織和異常中斷習題4.6.8快速上下文切換擴展快速上下文切換擴展FCSE,FastContextSwitchExtensionFCSE是ARM存儲系統的修正機構。它修改系統中不同進程的虛擬地址,避免在進行進程間切換時造成的虛擬地址到物理地址的重映射,從而提高系統的性能。為了理解ARM處理器的FCSE功能,我們首先考察當虛擬存儲器中任務切換時,主存中頁表和物理存儲器的隨動切換。2008年6月21日35《嵌入式系統基礎教程》第07講第4章ARM存儲器組織和異常中斷習題ARM虛擬存儲器

用戶任務上下文切換示例-1任務1正在執行2008年6月21日36《嵌入式系統基礎教程》第07講第4章ARM存儲器組織和異常中斷習題ARM虛擬存儲器

用戶任務上下文切換示例-2任務2正在執行2008年6月21日37《嵌入式系統基礎教程》第07講第4章ARM存儲器組織和異常中斷習題ARM虛擬存儲器

用戶任務上下文切換示例-3任務3正在執行2008年6月21日38《嵌入式系統基礎教程》第07講第4章ARM存儲器組織和異常中斷習題3個任務的多任務環境中

快速上下文切換擴展的舉例:切換前任務1正在運行2008年6月21日39《嵌入式系統基礎教程》第07講第4章ARM存儲器組織和異常中斷習題3個任務的多任務環境中

快速上下文切換擴展的舉例:(續)切換后任務2正在運行2008年6月21日40《嵌入式系統基礎教程》第07講第4章ARM存儲器組織和異常中斷習題4.6.9寫緩存器(WriteBuffer)寫緩存器是一個容量很小的片內的先進先出(FIFO)存儲器,位于處理器核與主存之間。寫緩存器的主要用途是:當CPU輸出數據時,總線恰好被占用而無法輸出,此時,CPU可以把輸出數據寫入到寫緩存器。當總線上沒有比寫緩存區優先級更高的掌控者時,寫緩存區可以通過總線將數據寫入內存。CPU由于不需要等待寫操作的完成而增強了性能。寫緩存區中的FIFO存儲器在存儲層次中與L1Cache處于相同的層次。2008年6月21日41《嵌入式系統基礎教程》第07講第4章ARM存儲器組織和異常中斷習題S3C44B0X處理器的寫緩存區由4個寫緩存寄存器構成。每一個寫緩存寄存器包括一個32位數據字段,一個28位地址字段和一個2位狀態字段??梢酝ㄟ^指令對控制寄存器SYSCFG的WE位置1或者置0來使能或者禁能寫緩存器。參看下圖。2008年6月21日42《嵌入式系統基礎教程》第07講第4章ARM存儲器組織和異常中斷習題4.7ARM的異常中斷ARM異常與中斷不做嚴格意義上的區別ARM的中斷向量表內存放的是響應異常和中斷的轉移指令而不是中斷向量地址。在ARM處理器中,當異常發生時,完成當前指令后跳轉到相應的異常中斷處理程序入口執行異常中斷處理。異常處理完畢后返回原來的程序斷點繼續執行原來的程序。2008年6月21日43《嵌入式系統基礎教程》第07講第4章ARM存儲器組織和異常中斷習題異常中斷分類ARM異常按照起因的不同分為3類: ①指令執行引起的直接異常軟件中斷、未定義指令和預取指令中止屬于這一類 ②指令執行引起的間接異常數據中止(在讀取和存儲數據時的存儲器故障)屬于這一類。 ③外部產生的與指令流無關的異常復位、IRQ和FIQ屬于這一類。2008年6月21日44《嵌入式系統基礎教程》第07講第4章ARM存儲器組織和異常中斷習題ARM中斷向量表中斷向量表中存放了各個異常中斷以及處理程序的對應關系。在ARM體系結構中,異常中斷向量表的大小只有32個字節。其中,每個異常中斷向量占4個字節。系統初始化時,中斷向量表從0號存儲單元開始存放。2008年6月21日45《嵌入式系統基礎教程》第07講第4章ARM存儲器組織和異常中斷習題ARM中斷向量表(續)中斷向量地址異常中斷類型異常中斷模式優先級(6級最低)0x0復位管理模式,SVC10x4未定義指令未定義指令中止,UND60x8軟件中斷管理模式,SVC60xC指令預取中止中止模式,ABT50x10數據訪問中止中止模式,ABT20x14保留未使用未使用0x18外部中斷請求,IRQ外部中斷模式,IRQ40x1C快速中斷請求,FIQ快速中斷模式,FIQ32008年6月21日46《嵌入式系統基礎教程》第07講第4章ARM存儲器組織和異常中斷習題ARM異常中斷響應當發生異常時,ARM處理器對異常中斷的響應過程如下:①將CPSR的內容保存到將要執行的異常中斷模式的SPSR中。例如:如果異常類型是FIQ,則SPSR_FIQ=CPSR②設置當前程序狀態寄存器CPSR中的模式字段位。③將異常發生時程序的下一條指令地址保存到新的異常模式的R14寄存器。注意:異常發生時異常模式R14的定義是PC-4。2008年6月21日47《嵌入式系統基礎教程》第07講第4章ARM存儲器組織和異常中斷習題ARM異常中斷響應④強制對程序計數器賦值。使程序從異常所對應的向量地址開始執行中斷服務子程序。 ARM處理器對異常的響應過程可用偽代碼描述如下: R14_<exception_mode>=returnlink SPSR_<exception_mode>=CPSR CPSR[4:0]=exceptionmodenumber CPSR[5]=0/*當運行于ARM狀態時*/ if<exception_mode>==ResetorFIQthen CPSR[6]=1/*禁止新的FIQ中斷*/ CPSR[7]=1/*禁止新的IRQ中斷*/ PC=exceptionvectoraddress2008年6月21日48《嵌入式系統基礎教程》第07講第4章ARM存儲器組織和異常中斷習題響應異常處理時的斷點地址計算中斷向量號異常類型異常類型PC是否已被更新LR寄存器值返回地址返回時LR值傳送返回到PC前調整①復位SVC清零清零不返回②未定義指令UND未更新X+4X+4不需要③軟件中斷SWISVC未更新X+4X+4不需要④指令預取中止ABT未更新X+4XLR-4⑤數據訪問中止ABT已經更新X+8XLR-8保留⑦外部中斷請求,IRQ已經更新X+8X+4LR-4⑧快速中斷請求,FIQ已經更新X+8X+4LR-42008年6月21日49《嵌入式系統基礎教程》第07講第4章ARM存儲器組織和異常中斷習題IRQ、FIQ和ABT異常中斷處理程序的返回發生IRQ或者FIQ異常中斷時,指令已經執行完畢,PC指向當前指令后面的第3條指令。因此IRQ或者FIQ的異常中斷發生時,處理器將程序計數器的計算值(PC-4)保存到LR_IRQ或者LR_FIQ寄存器中。這時LR_IRQ或者LR_FIQ寄存器的值指向當前指令后的第2條指令。參看下面幻燈片的圖解。2008年6月21日50《嵌入式系統基礎教程》第07講第4章ARM存儲器組織和異常中斷習題IRQ、FIQ和ABT異常中斷處理程序的返回(續1)在指令預取時如果目標地址是非法的,該指令將被標記成有問題的指令,處理器產生指令預取ABT異常。此刻PC的值還沒有更新,它指向當前指令后的第2條指令。指令預取ABT異常中斷發生時,處理器將程序計數器的計算值(PC-4)保存到異常模式LR_ABT。這時LR

溫馨提示

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

評論

0/150

提交評論