版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第2章嵌入式微處理器-ARM大綱2.1ARM微處理器的工作狀態2.2ARM系列結構的定址方式與記憶體格式2.3指令長度及資料類型2.4處理器模式2.5暫存器內容2.6例外(Exceptions)事件2.7討論P-2/67大綱2.1ARM微處理器的工作狀態2.2ARM系列結構的定址方式與記憶體格式2.3指令長度及資料類型2.4處理器模式2.5暫存器內容2.6例外(Exceptions)事件2.7討論P-3/67ARM微處理器的工作狀態一般有兩種:ARM狀態,此時處理器執行32位元的字對齊的ARM指令。Thumb狀態,此時處理器執行16位元,半字元組對齊的Thumb指令。在程式的執行過程中,微處理器可以隨時在兩種工作狀態之間切換,並且處理器工作狀態的轉變並不影響處理器的工作模式和相應暫存器中的內容。
P-4/672.1ARM微處理器的工作狀態範例程式片段: .code32 //從此處起的程式以ARM指令集編譯 bxr0 //若r0[31:1]為位址label1,r0[0]為1,當跳躍
//至label1處執行時,切換為Thumb指令集態 .code16//指示從此處的程式為Thumb指令集狀態 label1://label1程式進入點2.1ARM微處理器的工作狀態P-5/67大綱2.1ARM微處理器的工作狀態2.2ARM系列結構的定址方式與記憶體格式2.3指令長度及資料類型2.4處理器模式2.5暫存器內容2.6例外(Exceptions)事件2.7討論P-6/67ARM系列結構將記憶體看作是從零位址開始的位元組之線性組合的方式。從零位元組到三位元組放置第一個記憶體的字元組資料從第四個位元組到第七個位元組放置第二個記憶體的字元組資料,依次排列。32位元的微處理器,ARM系列結構所支援的最大定址空間為4GB(232位元組)。P-7/672.2ARM系列結構的定址方式與記憶體格式位元組定址若是無號數的話,可定址的範圍:0~232–1。可視為230個32位元組,以字元對齊(word-aligned)的話,則位址可被4整除。字元組對齊的A,是由A,A+1,A+2,A+3位元組所組成。V4以上的版本,定址空間可視為由231個16位元的半位元組所組成。若是半字元組對齊(halfword-aligned)的話,則位址可被2整除,且半字元組對齊的A,是由A,A+1位元組所組成。P-8/672.2ARM系列結構的定址方式與記憶體格式而在ARM系列結構可以用兩種方法存取字元組資料大端(BigEndian)格式 在這種格式中,字元組資料的高位元組是存儲在低位址中,而字元組資料的低位元組則存放在高位址中,如圖2.1所示。這一系列的微處理器以Motorola系列的晶片組為主要的代表。字元組對齊的位元組或是半字元組是該位址的最高有效的位元組或是半字元組。半字元組對齊的位元組是該位址的半字元組的最高有效的位元組。P-9/672.2ARM系列結構的定址方式與記憶體格式而在ARM系列結構可以用兩種方法存取字元組資料小端(LittleEndian)格式 與大端存儲格式相反,在小端存儲格式中,低位址中存放的是字元組資料的低位元組,高位址存放的是字元組資料的高位元組。這一系列的微處理器以Atmel系列的晶片組為主要的代表。字元組對齊的位元組或是半字元組是該位址的最低有效的位元組或是半字元組。半字元組對齊的位元組是該位址的半字元組的最低有效的位元組。2.2ARM系列結構的定址方式與記憶體格式P-10/67大綱2.1ARM微處理器的工作狀態2.2ARM系列結構的定址方式與記憶體格式2.3指令長度及資料類型2.4處理器模式2.5暫存器內容2.6例外(Exceptions)事件2.7討論P-11/67ARM微處理器的指令長度可以是32位元(在ARM狀態下),也可以為16位元(在Thumb狀態下)。ARM微處理器中支援位元組(8位元),半字元組(16位元)以及字元組(32位元)三種資料類型。其中,字需要4位元組對齊(位址的低兩位元為0),半字元組需要2位元組對齊(位址的最低位為0)。2.3指令長度及資料類型P-12/67大綱2.1ARM微處理器的工作狀態2.2ARM系列結構的定址方式與記憶體格式2.3指令長度及資料類型2.4處理器模式2.5暫存器內容2.6例外(Exceptions)事件2.7討論P-13/67ARM微處理器支援7種執行模式,分別為:使用者模式(UserMode,usr):ARM微處理器正常的程式執行狀態快速中斷模式(FastInterruptRequestMode,FIQ):應用於高速資料傳輸或通道處理。外部中斷模式(InterruptRequestMode,IRQ):用於通用的中斷處理。管理者模式(SupervisorMode,SVC):作業系統使用的保護模式。中止模式(AbortMode,ABT):當資料或指令預取終止時進入該模式,可用於虛擬儲存及儲存保護。系統模式(SystemMode,sys):執行具有特權的作業系統任務。未定義指令中止模式(UNDefinedMode,UND):當未定義的指令執行時進入該模式,可用於支援硬體輔助運算器的軟體除錯。P-14/672.4處理器模式大綱2.1ARM微處理器的工作狀態2.2ARM系列結構的定址方式與記憶體格式2.3指令長度及資料類型2.4處理器模式2.5暫存器內容2.6例外(Exceptions)事件2.7討論P-15/67整個ARM微處理器的暫存器中,共有37個32位元暫存器,其中31個為通用暫存器,6個為程式狀態暫存器。暫存器是不能被同時被存取,至於哪些暫存器是可編程存取的,則取決於微處理器的工作狀態以及目前的執行模式。任何時刻,通用暫存器R0~R14、程式計數器PC、一個或兩個程式狀態暫存器都是可存取的。2.5暫存器內容P-16/67通用暫存器包括R0~R15,可以分為三類:未分區塊暫存器R0~R7:在所有的執行模式下,未分區塊暫存器都指向同一個實體暫存器,他們未被系統用作特殊的用途。但是在中斷或例外事件處理進行執行模式轉換時,由於不同的處理器執行模式均使用相同的實體暫存器,可能會造成暫存器中資料被破壞或是被更改。P-17/672.5.1ARM狀態下的暫存器內容分區塊暫存器R8~R14對於分區塊暫存器,他們每一次所存取的實體暫存器與處理器目前的執行模式有關。對於R8~R12來說,每個暫存器對應兩個不同的實體暫存器。例如,當使用FIQ模式時,存取暫存器是R8_FIQ~R12_FIQ;當使用除FIQ模式以外的其他模式時,存取暫存器就變成R8_USR~R12_USR。對於R13、R14來說,每個暫存器對應6個不同的實體暫存器,其中的一個是使用者模式與系統模式共用,另外5個實體暫存器對應於其他5種不同的執行模式。P-18/672.5.1ARM狀態下的暫存器內容分區塊暫存器R8~R14R14也稱作副程式鏈結暫存器(SubroutineLinkRegister)或鏈結暫存器(LR)。當執行BL副程式呼叫指令時,R14中可以取得R15(程式計數器PC)的備份。其他情況下,R14則用來作為通用暫存器。而我們可以加以推衍,當發生中斷或例外事件時,對應的分區塊暫存器R14_SVC、R14_IRQ、R14_FIQ、R14_ABT和R14_UND用來保存R15的返回值。而在每一種執行模式下,都可用R14保存副程式的返回位址,當用BL或BLX指令呼叫副程式時,將PC的目前值拷貝給R14,執行完副程式後,又將R14的值拷貝回PC,即可完成副程式的呼叫返回。P-19/672.5.1ARM狀態下的暫存器內容程式計數器PC(R15)暫存器R15用作程式計數器(PC)。在ARM狀態下,位元[1:0]為0,位元[31:2]用於保存PC值;在Thumb狀態下,位元[0]為0,位元[31:1]則用於保存PC值;雖然R15可以用作通用暫存器,但是有一些指令在使用R15時有一些特殊限制,若不注意的話,執行的結果將是不可預測的。在ARM狀態下,PC的bit-0和bit-1是0,在Thumb狀態下,PC的bit-0則是0。P-20/672.5.1ARM狀態下的暫存器內容R16暫存器:R16暫存器是CPSR(CurrentProgramStatusRegister,目前程式狀態暫存器),CPSR可在任何執行模式下被存取,它包括條件旗標(旗標)位元、中斷除能位元、當前處理器模式旗標(旗標)位元,以及其他一些相關的控制和狀態位元。每一種執行模式下又都有一個專用的實體狀態暫存器,稱之為SPSR(SavedProgramStatusRegister,備份程式狀態暫存器)。當例外事件發生時,SPSR用來保存CPSR的目前值,而從例外事件退出時,則可由SPSR的備份值來恢復CPSR暫存器。由於使用者模式和系統模式不屬於例外模式,所以都不具有SPSR。若是在這兩種模式下,來存取SPSR的話,則結果是未知的。2.5.1ARM狀態下的暫存器內容P-21/67ARM系列結構中,包含一個目前程式狀態暫存器(CPSR)和五個備份程式狀態暫存器(SPSRs)。備份程式狀態暫存器是用來進行例外事件處理,其功能包括:保存ALU中的當前操作資訊控制允許和除能中斷設置處理器的執行模式條件碼旗標欄位(ConditionCodeFlags)N、Z、C與V均為條件碼旗標位元。它們的內容可被算術或邏輯運算的結果而有所改變,並且可以決定某條指令是否被執行。在ARM狀態下,絕大多數的指令都是有條件執行的。在Thumb狀態下,僅有分支指令是有條件執行的。P-22/672.5.3程式狀態暫存器條件碼旗標位元的各個位元的具體含義P-23/67旗標位元意
義N負旗標,當用2補數所表示的有號數進行運算時,N=1,表示運算的結果為負數;N=0,表示運算的結果為正數或零;Z零旗標,Z=1表示運算的結果為零;Z=0表示運算的結果為非零;C進位旗標,可以有4種方法來設置C的值:─加法運算(包括比較指令CMN):當運算結果產生了進位位元時(無號數溢出),C=1,否則C=0。─減法運算(包括比較指令CMP):當運算時產生了借位(無號數溢出),則C=0,否則C=1。─對於包含移位操作的非加/減運算指令,C為移出值的最後一位元。─對於其他的非加/減運算指令,C值通常不改變。V溢位旗標,可以有2種方法來設置V的值:─對於加/減法運算指令,當運算元和運算結果為2補數表示的有號數時,V=1表示有號位元溢位。─對於其他的非加/減運算指令,C的值通常不改變。Q在ARMv5及以上版本的E系列處理器中,用Q旗標位元指示增強的DSP運算指令是否發生了溢出。在其他版本的處理器中,Q旗標位元無定義。2.5.3程式狀態暫存器PSR的低8位元(包括I、F、T和M[4:0])稱為控制位元。當發生例外事件的情況時,這些位元可以被改變。如果處理器要執行特權模式,這些位元也可以由程式來加以修改。中斷除能位元I與F:I=1,除能IRQ中斷。F=1,除能FIQ中斷。T旗標位元:該位元反映處理器的執行狀態。P-24/672.5.3程式狀態暫存器大綱2.1ARM微處理器的工作狀態2.2ARM系列結構的定址方式與記憶體格式2.3指令長度及資料類型2.4處理器模式2.5暫存器內容2.6例外(Exceptions)事件2.7討論P-25/67當正常的程式執行流程發生暫時的停止時,稱之為例外事件。例:處理一個外部的中斷請求。在處理例外事件之前,目前處理器的狀態必須加以保留,這樣當例外事件處理完成之後,目前程式才可以繼續執行。處理器允許多個例外事件同時發生,它們將會按固定的優先順序來進行處理。這種存在ARM系列結構中的例外事件,是與8位元/16位元系列結構的中斷有很大的相似之處,但例外事件與中斷的概念並不完全相同。2.6例外(Exceptions)事件P-26/67ARM系列結構所支援的例外事件以及其具體含義2.6.1ARM系列結構所支援的例外事件類型P-27/67例外事件類型具體含義重置當處理器的重置電位(nRESET)有效時,產生重置例外,程式會跳躍到重置例外處理程式處開始執行。未定義指令當ARM微處理器或輔助運算器遇到不能處理的指令時,產生未定義指令例外。但我們可以使用這種例外的機制來進行軟體模擬與除錯的目的。軟體中斷該例外由執行SWI指令產生,可用於使用者模式下的程式引用特權操作指令。但我們可使用這種例外機制來實現系統功能的引用。指令預取中止若處理器預取指令的位址是不存在,或是該位址不允許當前指令存取,記憶體會向處理器發出中止信號,但當預取的指令被執行時,才會產生指令預取中止例外事件。資料中止若處理器資料存取指令的位址不存在,或該位址不允許當前指令存取時,產生資料中止例外事件。IRQ(外部中斷請求)當處理器的外部中斷請求接腳(nIRQ)有效,且CPSR中的I位元為0時,產生IRQ例外事件。系統的外部設備可通過該例外事件來請求中斷服務。FIQ(快速中斷請求)當處理器的快速中斷請求接腳(nFIQ)有效,且CPSR中的F位元為0時,產生FIQ例外事件。當一個例外事件出現以後,會將下一條指令的位址存入相應鏈結暫存器LR,以便程式在處理例外事件返回時能從正確的位置重新開始執行。若例外事件是從ARM狀態進入的話,LR暫存器中保存的是下一條指令的位址(目前PC+4或PC+8,與例外事件的類型有關);若例外事件是從Thumb狀態進入,則在LR暫存器中保存目前PC的偏移量。這樣,例外事件處理程式就不需要確定例外事件是從何種狀態進入的。例如:在軟體中斷例外SWI事件中,指令MOVPC,R14_SVC總是會返回到下一條指令,不管SWI是在ARM狀態執行,還是在Thumb狀態執行。2.6.2對例外事件的回應方式P-28/67當例外事件處理完畢之後,對於程式設計者來說,需執行下列的工作(同時):1、將目前程式操作模式的SPSR內容複製至CPSR。2、根據目前程式操作模式的鏈結暫存器LR,R14值,將返回位址值設定至PC中。返回位址的值需根據R14的值,目前處理器指令集狀態和程式操作模式來計算出。例如,SUBSPC,R14_SVC,#4。3、若在進入例外處理時設置了中斷除能位元,要在此加以清除掉。2.6.3從例外事件返回P-29/67重置當系統的電源重新被啟動或是ARM微處理器的重置訊號輸入接腳上,偵測到產生重置電位時,則ARM微處理器就會產生重置例外事件。重置例外事件處理的程式通常是用來設定或是執行下列的工作,以其整個系統的運作重新正常地執行:設定重置例外事件向量表。啟始暫存器與堆疊位址。若系統是包含MMU,則啟始記憶體系統。啟始輸出入設備的外部接腳狀態。設定此系統所要用到的中斷。設定處理器指令狀態或是操作模式。設定相當變數的初始值。呼叫主程式。2.6.4各類型例外事件的具體描述重置當發生重置例外事件時,目前正在執行的指令會被放棄,但是仍會持續地讀取指令,直到重置訊號輸入接腳恢復到正常電位為止。微處理器會執行下列的步驟:將目前的程式計數值暫存器PC的數值與CPSR的數值分別複製到R14_SVC與SPSR_SVC中。將CPSR中的模式位元設定M[4:0]設定為0b10011(根據表2.2所示)的管理模式(SupervisorMode),且中斷要求除能位元I與快速中斷要求除能位元F被設定為1(禁止,除能),以及指令集狀態位元T被清除為0(設定為ARM指令集狀態)。PC的數值被更新為0x00000000,即是跳回到ARM指令集狀態,並從PC位址0開始執行。稍後的例外事件,都會進行類似的步驟。2.6.4各類型例外事件的具體描述總結了進入例外事件處理時,保存在相應R14中的PC值,以及在離開例外事件處理時所建議使用的指令。返回指令之前的狀態注意ARMR14_xThumbR14_xBLMOVPC
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年医疗AI辅助手术系统报告
- 2026年航空航天行业智能创新报告
- 2025年生物医药仿制药研发生产项目生物制药生产质量控制技术创新可行性研究报告
- 2026年国庆节保洁工作安排部署方案
- 2026年服装公司下半年工作计划
- 2025年清华大学法学硕士850专业综合卷二(刑法学)考研真题及参考答案(回忆版)
- 2026年国庆学校调休补课安排方案
- 2026年托班下半年学期计划安排
- 2026年学前班下半年学期计划安排
- 2026年年度安全生产资金使用计划
- 重庆西南大学附中高2026届高考全真模拟试题化学+答案
- 初中音乐七年级下册《大鱼》二度创作表现性评价教案
- 2026年外研版小学英语六年级下册单元基础达标测试卷含答案
- 运动会事故演练脚本
- 国家义务教育质量监测八年级劳动素养综合测试
- 2025年吉林省中考历史真题(含答案)
- 2026年高考地理三轮复习:10大地理热点考点+模拟试题(含答案)
- 2025年湖南湘西教育局直属学校公开招聘试题含答案
- 湖南长沙长郡教育集团2026届初三毕业班第一次联考数学试题含解析
- 县级国土空间总体规划动态维护方案(范本)
- 语文第2课《说和做-记闻一多先生言行片段》课件 2025-2026学年统编版语文七年级下册
评论
0/150
提交评论