版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
這門課主要講的是什么?ARMAdvancedRISCMachine1、ARM基礎知識(第1、2章)2、ARM匯編(第3、4、8章)3、ARM存儲系統(tǒng)MMU(第5章)
MemoryManagementUnit4、異常中斷處理(第9章)學習這門課的目的是什么?幾本書利用互聯(lián)網ADS1.2的幫助文檔onlinebooks前言了解嵌入式系統(tǒng)概述1嵌入式系統(tǒng)簡介2嵌入式系統(tǒng)的定義3嵌入式系統(tǒng)的特點4嵌入式系統(tǒng)的組成5嵌入式系統(tǒng)的應用嵌入式系統(tǒng)簡介嵌入式系統(tǒng)的歷史與現(xiàn)狀從1946年電子計算機的誕生,發(fā)展到今天在許多場合要求將微型機嵌入到一個對象體系中,實現(xiàn)對象體系的智能化控制。為了區(qū)別于通用計算機系統(tǒng),把嵌入到對象體系中,實現(xiàn)對象體系智能化控制的計算機,稱作嵌入式計算機系統(tǒng)。嵌入式系統(tǒng)簡介現(xiàn)代計算機技術的兩大分支標志計算機進入了通用計算機與嵌入式計算機兩大分支并行發(fā)展時代。通用計算機側重的發(fā)展方向:高速、海量的數(shù)值計算、總線速度提升,擴大存儲容量。而嵌入式計算機對體積、功耗、功能、可靠性、專用性有較高要求。2嵌入式系統(tǒng)的定義嵌入式系統(tǒng)的定義參考IEEE(國際電氣和電子工程師協(xié)會)的定義:
嵌入式系統(tǒng)是“用于控制、監(jiān)視或者輔助操作機器和設備的裝置”嵌入式系統(tǒng):以計算機技術為基礎、軟件硬件可裁剪、面向應用,對功能、可靠性、成本、體積、功耗嚴格要求的專用計算機系統(tǒng)。嵌入式系統(tǒng)組成ESOFTWARE嵌入式軟件嵌入式操作系統(tǒng)處理器(內核)ARMMIPSPowerPCSparc—嵌入式微處理器配置硬件補平硬件差異為軟件搭建平臺,如linux、wince提供功能應用嵌入式系統(tǒng)的應用消費電子嵌入式應用信息家電智能玩具軍事電子通信設備移動存貯工控設備智能儀表汽車電子網絡設備工業(yè)軍事國防電子商務網絡現(xiàn)實生活中的嵌入式系統(tǒng)實例家庭環(huán)境現(xiàn)實生活中的嵌入式系統(tǒng)實例辦公室環(huán)境現(xiàn)實生活中的嵌入式系統(tǒng)實例工業(yè)自動化領域現(xiàn)實生活中的嵌入式系統(tǒng)實例國防領域現(xiàn)實生活中的嵌入式系統(tǒng)實例交通領域現(xiàn)實生活中的嵌入式系統(tǒng)實例航空領域現(xiàn)實生活中的嵌入式系統(tǒng)實例醫(yī)療系統(tǒng)第1章ARM概述及其基本編程模型第1章目錄8.異常9.復位10.存儲器及存儲器映射I/O11.尋址方式簡介12.ARM7指令簡介13.協(xié)處理器接口14.調試接口簡介1.簡介2.ARM7三級流水線3.處理器狀態(tài)4.處理器模式5.內部寄存器6.程序狀態(tài)寄存器7.體系結構直接支持的數(shù)據(jù)類型1.1ARM簡介ARM公司簡介ARM是AdvancedRISCMachines的縮寫,它是英國一家微處理器行業(yè)的知名企業(yè),該企業(yè)設計了大量高性能、廉價、耗能低的RISC(精簡指令集)處理器。公司的特點是只設計芯片,而不生產。它將技術授權給世界上許多著名的半導體、軟件和OEM廠商,并提供服務。1.1ARM簡介ARM公司簡介將技術授權給芯片廠商形成各具特色的ARM芯片...1.1ARM簡介ARM有三種含義:一個公司的名稱;一類處理器的通稱;一種技術的名稱。ARM不是完整的單片機,它只是一個單片機的內核。所謂以ARM為核的單片機,就是把ARM作為中央處理器(核),根據(jù)需要設計出外圍功能模塊,用總線把這些功能模塊和ARM核連接在一起,組成一個單片機。這個單片機由ARM核控制。1.1ARM簡介
一點啟示學習ARM核時,涉及具體管腳和功能寄存器的設置不多。在學習51系列單片機時,能學會控制定時器/計數(shù)器,學會串口的使用,知道每個引腳的作用。但學習ARM核時,還未大范圍涉及這些內容。但使用具體芯片就會用到arm核的知識,來使用管腳實現(xiàn)功能。應該牢記,學會ARM核以后,就大致掌握了所有以ARM為核的單片機。無論這個單片機結構多么復雜,功能多么強大,也無論它來自哪個廠家。1.1ARM簡介ARM體系結構
ARM處理器為RISC(reduceinstructionsetcomputing)芯片,其簡單的結構使ARM內核非常小,這使得器件的功耗也非常低。它具有經典而先進的RISC特點:數(shù)據(jù)處理操作絕大多數(shù)只針對寄存器(暫時存儲數(shù)據(jù),在CPU內部,離cpu最近,速度最快)的內容,而不直接對存儲器(內存和外存,在CPU外部,存儲器能夠保存的數(shù)據(jù)量大)進行操作;通過load/store指令在寄存器和存儲器之間傳遞數(shù)據(jù)。簡單的尋址模式;統(tǒng)一和固定長度的指令域(32位)簡化了指令的譯碼。
具有大量的寄存器ARM體系還采用一些特別技術,見教材第2頁1、在同一條數(shù)據(jù)處理指令中包含算術邏輯處理和移位處理。如:ADDR0,R1,R1,LSL#3;R0=R1+R1*82、使用地址自動增加(減少)來優(yōu)化程序中的循環(huán)。如:LDRR0,[R1]#4;先R0[R1],然后自動使R1+43、Load/Store指令可以批量傳輸數(shù)據(jù),效率很高。一條指令就可以完成入棧或出棧操作。如:STMFDR13,{R4-R6};將R4-R6的內容放入以R13為棧基址的連續(xù)3個單元中4、所有指令都可以根據(jù)前面指令的執(zhí)行結果,決定是否執(zhí)行。如:CMPR2,R3;R2與R3相等跳到loop,不等則執(zhí)行MOVR1,R0語句
BEQloopMOVR1,R01.1ARM簡介各ARM體系結構版本(這里主要指指令集)
目前ARM公司定義了6種主要的ARM指令集體系結構版本,以版本號V1~V6表示。
擁有相同指令集版本的ARM芯片,雖然出自不同的生產廠商,但它們使用的指令和應用軟件是相互兼容的。1.1ARM簡介各ARM體系結構版本——V1
該版本的ARM體系結構,只有26位的尋址空間,如今現(xiàn)在已經廢棄不再使用,沒有商業(yè)化,其特點為:基本的數(shù)據(jù)處理指令(加,減,與,或,非,比較)(這個版本不包括乘法);字節(jié)、字和半字加載/存儲指令;具有分支指令,包括在子程序調用中使用的分支和鏈接指令;在操作系統(tǒng)調用中使用的軟件中斷指令(SWI)。1.1ARM簡介各ARM體系結構版本——V2
同樣為26位尋址空間,如今現(xiàn)在已經廢棄不再使用,它相對V1版本有以下改進:具有乘法和乘加指令;支持協(xié)處理器(專門用于進行輔助運算的芯片,其本身除了運算功能外沒有其他功能,因此不能獨立工作,必須和CPU一起工作);快速中斷模式(FIQ)中,提供兩個額外備份寄存器;原子性(不可分割)加載/存儲指令SWP和SWPB(見備注)。1.1ARM簡介各ARM體系結構版本——V3
尋址范圍擴展到32位:增加了程序狀態(tài)保護寄存器SPSR;增加了兩種處理器模式(ARM和THUMB);修改了v3以前用于異常返回指令的功能;教材有更詳細的介紹1.1ARM簡介各ARM體系結構版本——V4
目前大多使用的arm核,使用的是V4t,v5te版本,它相對V3版本作了以下的改進:增加了半字加載(LDRH)/存儲(STRH)指令;增加了字節(jié)(LDRSB/STRSB)和半字的加載和符號擴展指令(LDRSH/STRSH);增加了T變種,具有可以轉換到Thumb狀態(tài)的指令;增加了新的特權處理器模式。1.1ARM簡介各ARM體系結構版本——V5
在V4版本的基礎上,對現(xiàn)在指令的定義進行了必要的修正,對V4版本的體系結構進行了擴展并增加了指令,具體如下:改進了ARM/Thumb狀態(tài)之間的切換效率;允許T變種(支持Thumb指令集)和非T變種一樣,使用相同的代碼生成技術;增加前導零計數(shù)(最高有效位前0的個數(shù))指令CLZ和軟件斷點指令BKPT;對乘法指令如何設置標志作了嚴格的定義。1.1ARM簡介各ARM體系結構版本——V6ARM體系版本6是2001年發(fā)布的。其主要特點是增加了SIMD(SingleInstructionMultipleData,單指令多數(shù)據(jù)流)功能擴展。它適合使用電池供電的高性能的便攜式設備,便攜式設備一方面需要處理器提供高性能,另一方面又需要低功耗。ARM體系版本6首先在2002年春季發(fā)布的ARM11處理器中使用。1.1ARM簡介ARM處理器核簡介ARM公司開發(fā)了很多系列的ARM處理器核,目前最新的系列已經是ARM11了,而ARM6核以及更早的系列已經很罕見了。目前應用比較廣泛的系列是:ARM7ARM9ARM9EARM10SecurCoreXscaleStrongARMARM11E1.1ARM簡介ARM處理器核簡介——ARM7
該系列包括ARM7TDMI和擴充了Jazelle(Java加速器)的ARM7EJ-S等等。高檔的單片機,除了ARM720T外,都缺少mmu(memorymanagementunit)不能運行真正的操作系統(tǒng)。
ARM7系列廣泛應用于多媒體和嵌入式設備,包括Internet設備、網絡和調制解調器設備,以及移動電話、PDA等無線設備。1.1ARM簡介ARM處理器核簡介——ARM7特點低功耗0.9MIPS/MHz(mips指每秒百萬條指令)的3級流水線結構32位ARM指令集和16位的Thumb指令集主頻最高可達130MIPS典型芯片ATMEL公司AT91M40800/55800A;
Samsung公司的S3C44B0/4510B1.2ARM7簡介ARM7基于ARM體系結構V4版本,是目前低端的ARM核。具有廣泛的應用,其最顯著的應用為數(shù)字移動電話。注意:“ARM核”并不是芯片,ARM核與其它部件如RAM、ROM、片內外設、GPIO(GeneralPurposeI/O通用的輸入輸出端口)組合在一起才能構成現(xiàn)實的芯片。1.2ARM7TDMI簡介ARM7TDMI支持32位尋址范圍,使用了馮·諾依曼(VonNeumann)結構,指令和數(shù)據(jù)共用一條32位總線。
ARM7TDMI的后綴意義為:支持高密度16位的Thumb指令集;支持片上調試;支持64位乘法;支持EmbededICE(調試接口)觀察硬件;ARM7TDMI1.1ARM簡介ARM處理器核簡介——ARM9
該系列包括ARM9TDMI、ARM920T、ARM940T。除了兼容ARM7系列,而且能夠更加靈活的設計。
ARM9系列主要應用于無線通信、儀器儀表、安全系統(tǒng)和機頂盒等領域。1.1MIPS/MHz的哈佛結構(見備注),5級流水線32位ARM指令集和16位Thumb指令集全性能的MMU(存儲器管理單元),支持WindowsCE、Linux、PalmOS等多種主流嵌入式操作系統(tǒng)支持數(shù)據(jù)Cache和指令Cache,具有更高的指令和數(shù)據(jù)處理能力1.1ARM簡介ARM處理器核簡介——ARM9特點
典型芯片
ATMEL公司AT91RM9200;
Samsung公司的S3C2410
1.1ARM簡介ARM處理器核簡介——ARM10
該系列包括ARM1020E和ARM1022E處理器核,其核心在于使用向量浮點(VFP)單元VFP10提供高性能的浮點解決方案,從而極大提高了處理器的整型和浮點運算性能??梢杂糜谝曨l游戲機和高性能打印機等場合。支持DSP指令集,適合于需要高速數(shù)字信號處理的場合。6級流水線,指令執(zhí)行效率更高。支持32位ARM指令集和16位Thumb指令集。支持64位的高速AMBA總線接口。支持VFP10浮點處理協(xié)處理器。全性能的MMU,支持WindowsCE、Linux、PalmOS等多種主流嵌入式操作系統(tǒng)。支持數(shù)據(jù)Cache和指令Cache,具有更高的指令和數(shù)據(jù)處理能力主頻最高可達400MIPS。內嵌并行讀/寫操作部件。1.1ARM簡介ARM處理器核簡介——ARM10特點
ARM公司在2003年4月29日宣布了其下一代ARM架構的CPU-ARM11(又名Jaguar美洲虎),基于ARM11的微處理器具有更強的性能,尤其是多媒體處理能力。
ARM11微處理器采用0.13微米工藝,低端產品運行在350MHz~500MHz,高端產品運行在533~750MHz,如果將加工工藝減小到0.10微米,那么芯片速度將達1GHz。1.1ARM簡介ARM處理器核簡介——ARM11E1.1ARM簡介ARM處理器核簡介——SecurCore該系列處理器主要針對新興的安全市場,以一種全新的安全處理器設計為智能卡和其它安全IC(集成電路)開發(fā)提供獨特的32位系統(tǒng)設計,并具有特定反偽造方法,從而有助于防止對硬件和軟件的盜版。1.1ARM簡介ARM處理器核簡介——XscaleIntelXscale微控制器(ARMv5TE)"核",操作系統(tǒng)包括linux,WindowsCE,SymbianOS,和其他一些RTOS.提供全性能、高性價比、低功耗的解決方案,支持16位Thumb指令并集成數(shù)字信號處理(DSP)指令。
Xscale處理器是Intel目前主要推廣的一款ARM微處理器。 典型芯片:
PXA250/255/270/272Xscale蘋果iPhone手機ARM體系結構更新第1章目錄8.異常9.復位10.存儲器及存儲器映射I/O11.尋址方式簡介12.ARM7指令簡介13.協(xié)處理器接口14.調試接口簡介1.簡介2.ARM7三級流水線3.處理器狀態(tài)4.處理器模式5.內部寄存器6.程序狀態(tài)寄存器7.體系結構直接支持的數(shù)據(jù)類型1.2ARM7流水線技術三級流水線
有一種方法可以明顯改善硬件資源的使用率和處理器的吞吐量,這就是當前一條指令結束之前就開始后面的指令,就是通常所說的流水線技術。這樣可使幾個操作同時進行。
ARM7的流水線分3級,分別為:取指
譯碼
執(zhí)行取指譯碼執(zhí)行從程序存儲器中取出指令送到處理器內核指令譯碼(指明處理器的操作)執(zhí)行這些操作取指譯碼執(zhí)行取指譯碼執(zhí)行取指譯碼執(zhí)行t指令指令1指令2指令33級流水線功能段劃分PC為某個正在取址指令所在的地址,確切地說是該指令最低字節(jié)的地址。PC指針?PC-8指令1指令2指令3PC指針-->取指譯碼執(zhí)行PC-4PC-4-->PC-8-->高地址低地址1.2ARM7三級流水線技術雖然ARM9和ARM10為5、6級流水線(流水線級數(shù)越多,說明單位時間內執(zhí)行的指令條數(shù)可能就越多),但它們都使用了與ARM7相同的流水線機制(它們完全仿真3級流水線的行為),因此ARM7上的代碼也可以在ARM9和ARM10上運行。第1章目錄1.簡介2.ARM7三級流水線3.處理器狀態(tài)4.處理器模式5.內部寄存器6.程序狀態(tài)寄存器7.體系結構直接支持的數(shù)據(jù)類型8.異常9.復位10.存儲器及存儲器映射I/O11.尋址方式簡介12.ARM7指令簡介13.協(xié)處理器接口14.調試接口簡介521.7處理器狀態(tài)處理器狀態(tài)ARM處理器有兩種操作狀態(tài):ARM狀態(tài):執(zhí)行32位的ARM指令Thumb狀態(tài):16位Thumb指令53第1章目錄8.異常9.復位10.存儲器及存儲器映射I/O11.尋址方式簡介12.ARM7指令簡介13.協(xié)處理器接口14.調試接口簡介1.簡介2.ARM7三級流水線3.處理器狀態(tài)4.處理器模式5.內部寄存器6.程序狀態(tài)寄存器7.體系結構直接支持的數(shù)據(jù)類型541.4處理器模式簡介ARM體系結構支持7種處理器模式,分別為:用戶模式(usr)、快中斷模式(fiq)、中斷模式(irq)、管理模式(svc)、中止模式(abt)、未定義模式(und)、系統(tǒng)模式(sys)。如下表所示。這樣的好處是可以更好的支持操作系統(tǒng)并提高工作效率。55處理器模式說明備注
用戶(usr)user正常程序工作模式不能直接切換到其它模式
系統(tǒng)(sys)system用于支持操作系統(tǒng)與用戶模式類似,但具有可以直接切換到其它模式等特權
快速中斷(fiq)fastinterruptrequest支持高速數(shù)據(jù)傳輸及通道處理FIQ異常響應時(引腳低電平有效)進入此模式
中斷(irq)interruptrequest用于通用中斷處理引腳低電平有效,IRQ異常響應時進入此模式
管理(svc)supervisor操作系統(tǒng)使用的保護模式(復位后執(zhí)行bootloader,可以設置引導某個操作系統(tǒng))系統(tǒng)復位和軟件中斷(執(zhí)行SWI指令)響應時進入此模式數(shù)據(jù)訪問中止(abt)abort用于支持虛擬存儲或存儲器保護當存取異常時進入此模式
未定義(und)undefined支持軟件仿真硬件的協(xié)處理器執(zhí)行未定義指令時,會將該指令送到協(xié)處理器,如果協(xié)處理器都處理不了該指令,就產生未定義指令異常中斷,進入此模式1.4處理器模式561.4處理器模式特權模式處理器模式說明備注
用戶(usr)正常程序工作模式不能直接切換到其它模式
系統(tǒng)(sys)用于支持操作系統(tǒng)的特權任務等與用戶模式類似,但具有可以直接切換到其它模式等特權
快中斷(fiq)支持高速數(shù)據(jù)傳輸及通道處理FIQ異常響應時進入此模式
中斷(irq)用于通用中斷處理IRQ異常響應時進入此模式
管理(svc)操作系統(tǒng)保護代碼系統(tǒng)復位和軟件中斷響應時進入此模式
中止(abt)用于支持虛擬內存和/或存儲器保護在ARM7TDMI沒有大用處
未定義(und)支持硬件協(xié)處理器的軟件仿真未定義指令異常響應時進入此模式
除用戶模式外,其它6種模式均為特權模式。特權模式下,可以訪問所有系統(tǒng)資源。此外,特權模式可以自由的切換處理器模式,而用戶模式不能直接切換到別的模式,當用戶模式需要進行處理器模式切換時,應用程序可以產生異常處理,在異常處理過程中進行處理模式的切換。
未定義(und)
中止(abt)
管理(svc)
中斷(irq)
快中斷(fiq)
系統(tǒng)(sys)571.4處理器模式異常模式處理器模式說明備注
用戶(usr)正常程序工作模式不能直接切換到其它模式
系統(tǒng)(sys)用于支持操作系統(tǒng)的特權任務等與用戶模式類似,但具有可以直接切換到其它模式等特權
快中斷(fiq)支持高速數(shù)據(jù)傳輸及通道處理FIQ異常響應時進入此模式
中斷(irq)用于通用中斷處理IRQ異常響應時進入此模式
管理(svc)操作系統(tǒng)保護代碼系統(tǒng)復位和軟件中斷響應時進入此模式
中止(abt)用于支持虛擬內存和/或存儲器保護在ARM7TDMI沒有大用處
未定義(und)支持硬件協(xié)處理器的軟件仿真未定義指令異常響應時進入此模式
未定義(und)
中止(abt)
管理(svc)
中斷(irq)
快中斷(fiq)
這五種模式稱為異常模式。它們除了可以通過程序(修改CPSR)切換進入外,也可以由特定的異常進入。當特定的異常出現(xiàn)時,處理器進入相應的模式。每種異常模式都有一些獨立的寄存器,供異常處理使用。581.4處理器模式用戶和系統(tǒng)模式處理器模式說明備注
用戶(usr)正常程序工作模式不能直接切換到其它模式
系統(tǒng)(sys)用于支持操作系統(tǒng)的特權任務等與用戶模式類似,但具有可以直接切換到其它模式等特權
快中斷(fiq)支持高速數(shù)據(jù)傳輸及通道處理FIQ異常響應時進入此模式
中斷(irq)用于通用中斷處理IRQ異常響應時進入此模式
管理(svc)操作系統(tǒng)保護代碼系統(tǒng)復位和軟件中斷響應時進入此模式
中止(abt)用于支持虛擬內存和/或存儲器保護在ARM7TDMI沒有大用處
未定義(und)支持硬件協(xié)處理器的軟件仿真未定義指令異常響應時進入此模式
這兩種模式使用完全相同的寄存器組。系統(tǒng)模式是特權模式,該模式為操作系統(tǒng)提供可以訪問所有資源的權限,并可以通過指令(mrs/msr)對CPSR設置,直接進行模式切換。
系統(tǒng)(sys)
用戶(usr)第3章目錄8.異常9.復位10.存儲器及存儲器映射I/O11.尋址方式簡介12.ARM7指令簡介13.協(xié)處理器接口14.調試接口簡介1.簡介2.ARM7三級流水線3.處理器狀態(tài)4.處理器模式5.內部寄存器6.程序狀態(tài)寄存器7.體系結構直接支持的數(shù)據(jù)類型601.5內部寄存器簡介
在ARM處理器內部有37個用戶可見的通用寄存器。在不同的工作模式和處理器狀態(tài)下,程序員可以訪問的寄存器也不同。61寄存器類別寄存器在匯編中的名稱各模式下實際訪問的寄存器用戶系統(tǒng)管理中止未定義中斷快中斷通用寄存器和程序計數(shù)器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R5R6(v3)R6R7(v4)R7R8(v5)R8R8_fiqR9(SB,v6)R9R9_fiqR10(SL,v7)R10R10_fiqR11(FP,v8)R11R11_fiqR12(IP)R12R12_fiqR13(SP)StackPointerR13R13_svcR13_abtR13_undR13_irqR13_fiqR14(LR)LinkRegisterR14R14_svcR14_abtR14_undR14_irqR14_fiqR15(PC)ProgramCounterR15狀態(tài)寄存器CPSRCurrentProgramStatusRegisterCPSRSPSRSavedProgramStatusRegister無SPSR_abtSPSR_abtSPSR_undSPSR_irqSPSR_fiq62寄存器類別寄存器在匯編中的名稱各模式下實際訪問的寄存器用戶系統(tǒng)管理中止未定義中斷快中斷通用寄存器和程序計數(shù)器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R5R6(v3)R6R7(v4)R7R8(v5)R8R8_fiqR9(SB,v6)R9R9_fiqR10(SL,v7)R10R10_fiqR11(FP,v8)R11R11_fiqR12(IP)R12R12_fiqR13(SP)R13R13_svcR13_abtR13_undR13_irqR13_fiqR14(LR)R14R14_svcR14_abtR14_undR14_irqR14_fiqR15(PC)R15狀態(tài)寄存器CPSRCPSRSPSR無SPSR_svcSPSR_abtSPSR_undSPSR_irqSPSR_fiqARM狀態(tài)各模式下的寄存器SPSR_fiqSPSR_irqSPSR_undSPSR_abtSPSR_svcCPSRR15R14_fiqR14_irqR14_undR14_abtR14_svcR14R13_fiqR13_irqR13_undR13_abtR13_svcR13R12_fiq R12R11_fiq R11R10_fiq R10R9_fiq R9R8_fiq R8 R7 R6 R5 R4 R3 R2 R1 R0所有的37個寄存器,分成兩大類:綠色區(qū):31個通用寄存器,每個32位。黃色區(qū):6個狀態(tài)寄存器,每個32位,但目前僅使用其中12位。63寄存器類別寄存器在匯編中的名稱各模式下實際訪問的寄存器用戶系統(tǒng)管理中止未定義中斷快中斷通用寄存器和程序計數(shù)器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R5R6(v3)R6R7(v4)R7R8(v5)R8R8_fiqR9(SB,v6)R9R9_fiqR10(SL,v7)R10R10_fiqR11(FP,v8)R11R11_fiqR12(IP)R12R12_fiqR13(SP)R13R13_svcR13_abtR13_undR13_irqR13_fiqR14(LR)R14R14_svcR14_abtR14_undR14_irqR14_fiqR15(PC)R15狀態(tài)寄存器CPSRCPSRSPSR無SPSR_svcSPSR_abtSPSR_undSPSR_irqSPSR_fiq無CPSRR15R14R13R12R11R10R9R8R7R6R5R4R3R2R1R0用戶無CPSRR15R14R13R12R11R10R9R8R7R6R5R4R3R2R1R0系統(tǒng)SPSR_svcCPSRR15R14_svcR13_svcR12R11R10R9R8R7R6R5R4R3R2R1R0管理SPSR_abtCPSRR15R14_abtR13_abtR12R11R10R9R8R7R6R5R4R3R2R1R0中止SPSR_undCPSRR15R14_undR13_undR12R11R10R9R8R7R6R5R4R3R2R1R0未定義SPSR_irqCPSRR15R14_irqR13_irqR12R11R10R9R8R7R6R5R4R3R2R1R0中斷SPSR_fiqCPSRR15R14_fiqR13_fiqR12_fiqR11_fiqR10_fiqR9_fiqR8_fiqR7R6R5R4R3R2R1R0快中斷ARM狀態(tài)各模式下可以訪問的寄存器64寄存器類別寄存器在匯編中的名稱各模式下實際訪問的寄存器用戶系統(tǒng)管理中止未定義中斷快中斷通用寄存器和程序計數(shù)器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R5R6(v3)R6R7(v4)R7R8(v5)R8R8_fiqR9(SB,v6)R9R9_fiqR10(SL,v7)R10R10_fiqR11(FP,v8)R11R11_fiqR12(IP)R12R12_fiqR13(SP)R13R13_svcR13_abtR13_undR13_irqR13_fiqR14(LR)R14R14_svcR14_abtR14_undR14_irqR14_fiqR15(PC)R15(即PC)狀態(tài)寄存器CPSRCPSRSPSR無SPSR_abtSPSR_abtSPSR_undSPSR_irqSPSR_fiq一般的通用寄存器R13_fiqR13_irqR13_undR13_abtR13_svcR13R12_fiqR12R11_fiqR11R10_fiqR10R9_fiqR9R8_fiqR8R7R6R5R4R3R2R1R0寄存器R0~R15為保存數(shù)據(jù)或地址值的通用寄存器。65寄存器類別寄存器在匯編中的名稱各模式下實際訪問的寄存器用戶系統(tǒng)管理中止未定義中斷快中斷通用寄存器和程序計數(shù)器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R5R6(v3)R6R7(v4)R7R8(v5)R8R8_fiqR9(SB,v6)R9R9_fiqR10(SL,v7)R10R10_fiqR11(FP,v8)R11R11_fiqR12(IP)R12R12_fiqR13(SP)R13R13_svcR13_abtR13_undR13_irqR13_fiqR14(LR)R14R14_svcR14_abtR14_undR14_irqR14_fiqR15(PC)R15狀態(tài)寄存器CPSRCPSRSPSR無SPSR_svcSPSR_abtSPSR_undSPSR_irqSPSR_fiq一般的通用寄存器R13_fiqR13_irqR13_undR13_abtR13_svcR13R12_fiqR12R11_fiqR11R10_fiqR10R9_fiqR9R8_fiqR8R7R6R5R4R3R2R1R0R7R6R5R4R3R2R1R0
其中R0~R7為未分組(未備份)的寄存器,對于任何處理器模式,都使用相同的同一組物理寄存器。66寄存器類別寄存器在匯編中的名稱各模式下實際訪問的寄存器用戶系統(tǒng)管理中止未定義中斷快中斷通用寄存器和程序計數(shù)器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R5R6(v3)R6R7(v4)R7R8(v5)R8R8_fiqR9(SB,v6)R9R9_fiqR10(SL,v7)R10R10_fiqR11(FP,v8)R11R11_fiqR12(IP)R12R12_fiqR13(SP)R13R13_svcR13_abtR13_undR13_irqR13_fiqR14(LR)R14R14_svcR14_abtR14_undR14_irqR14_fiqR15(PC)R15(即PC)狀態(tài)寄存器CPSRCPSRSPSR無SPSR_svcSPSR_abtSPSR_undSPSR_irqSPSR_fiq一般的通用寄存器R14_fiqR14_irqR14_undR14_abtR14_svcR14R13_fiqR13_irqR13_undR13_abtR13_svcR13R12_fiqR12R11_fiqR11R10_fiqR10R9_fiqR9R8_fiqR8
寄存器R8~R14為分組(備份)寄存器。它們所對應的物理寄存器取決于當前的處理器模式。不同模式下寄存器的使用,要使用寄存器后綴加以區(qū)分。67寄存器類別寄存器在匯編中的名稱各模式下實際訪問的寄存器用戶系統(tǒng)管理中止未定義中斷快中斷通用寄存器和程序計數(shù)器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R5R6(v3)R6R7(v4)R7R8(v5)R8R8_fiqR9(SB,v6)R9R9_fiqR10(SL,v7)R10R10_fiqR11(FP,v8)R11R11_fiqR12(IP)R12R12_fiqR13(SP)R13R13_svcR13_abtR13_undR13_irqR13_fiqR14(LR)R14R14_svcR14_abtR14_undR14_irqR14_fiqR15(PC)R15狀態(tài)寄存器CPSRCPSRSPSR無SPSR_svcSPSR_abtSPSR_undSPSR_irqSPSR_fiq一般的通用寄存器R12_fiqR12R11_fiqR11R10_fiqR10R9_fiqR9R8_fiqR8
寄存器R8~R12有兩個分組的物理寄存器。一個用于除FIQ模式之外的所有模式,另一個用于FIQ模式。這樣在發(fā)生FIQ中斷后,可以不必執(zhí)行保存和恢復(R8-R12)的指令,從而加速FIQ的處理速度。68寄存器類別寄存器在匯編中的名稱各模式下實際訪問的寄存器用戶系統(tǒng)管理中止未定義中斷快中斷通用寄存器和程序計數(shù)器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R5R6(v3)R6R7(v4)R7R8(v5)R8R8_fiqR9(SB,v6)R9R9_fiqR10(SL,v7)R10R10_fiqR11(FP,v8)R11R11_fiqR12(IP)R12R12_fiqR13(SP)R13R13_svcR13_abtR13_undR13_irqR13_fiqR14(LR)R14R14_svcR14_abtR14_undR14_irqR14_fiqR15(PC)R15狀態(tài)寄存器CPSRCPSRSPSR無SPSR_svcSPSR_abtSPSR_undSPSR_irqSPSR_fiq一般的通用寄存器
寄存器R13、R14分別有6個分組的物理寄存器。1個用于用戶和系統(tǒng)模式,其余5個分別用于5種異常模式。剛才提到過,不同模式下寄存器的使用,要使用寄存器后綴加以區(qū)分。R14_fiqR14_irqR14_undR14_abtR14_svcR14R13_fiqR13_irqR13_undR13_abtR13_svcR1369寄存器類別寄存器在匯編中的名稱各模式下實際訪問的寄存器用戶系統(tǒng)管理中止未定義中斷快中斷通用寄存器和程序計數(shù)器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R5R6(v3)R6R7(v4)R7R8(v5)R8R8_fiqR9(SB,v6)R9R9_fiqR10(SL,v7)R10R10_fiqR11(FP,v8)R11R11_fiqR12(IP)R12R12_fiqR13(SP)R13R13_svcR13_abtR13_undR13_irqR13_fiqR14(LR)R14R14_svcR14_abtR14_undR14_irqR14_fiqR15(PC)R15狀態(tài)寄存器CPSRCPSRSPSR無SPSR_svcSPSR_abtSPSR_undSPSR_irqSPSR_fiq堆棧指針寄存器R13(SP)
寄存器R13常作為堆棧指針(SPStackPointer)。在ARM指令集當中,使用R13作為棧指針,只是習慣的用法。但是在Thumb指令集中存在指令強制地使用R13作為堆棧指針。701.5內部寄存器R13寄存器每一種異常模式擁有自己的R13_<mode>。應先初始化好各模式的R13_<mode>,以便異常發(fā)生時,供各模式使用。其中<mode>為下面幾種模式之一:usr、svc、abt、und、irq、fiq71寄存器類別寄存器在匯編中的名稱各模式下實際訪問的寄存器用戶系統(tǒng)管理中止未定義中斷快中斷通用寄存器和程序計數(shù)器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R5R6(v3)R6R7(v4)R7R8(v5)R8R8_fiqR9(SB,v6)R9R9_fiqR10(SL,v7)R10R10_fiqR11(FP,v8)R11R11_fiqR12(IP)R12R12_fiqR13(SP)R13R13_svcR13_abtR13_undR13_irqR13_fiqR14(LR)R14R14_svcR14_abtR14_undR14_irqR14_fiqR15(PC)R15狀態(tài)寄存器CPSRCPSRSPSR無SPSR_svcSPSR_abtSPSR_undSPSR_irqSPSR_fiq鏈接寄存器R14(LR)R14為鏈接寄存器(LRLinkRegister),有兩個功能:每一種模式自己的R14中存放當前子程序返回地址;當發(fā)生異常中斷時,該模式的R14存放異常中斷的返回地址。72Lable程序A程序BR141.5內部寄存器R14寄存器與子程序調用BLLable地址A???MOVPC,LRR14(地址A)Lable???1.程序A執(zhí)行到BLLable語句時,將調用程序B;操作流程2.程序跳轉至標號Lable,執(zhí)行程序B。同時硬件自動將“BLLable”指令的下一條指令所在地址存入R14(即LR);3.程序B執(zhí)行最后,將R14寄存器的內容放入PC,返回程序A;731.5內部寄存器R14寄存器引申
在出現(xiàn)子程序的嵌套(BL、BLX)或中斷的嵌套時,R14保存的是最后一次調用的返回地址。741.5內部寄存器R14寄存器注意要點R14R14_irq用戶模式下的程序IRQ的程序AareturnB...XA返回用戶模式地址1.執(zhí)行用戶模式下的程序;2.發(fā)生IRQ中斷,硬件將某個地址存入IRQ模式下的R14_irq寄存器,用戶模式下的R14沒有被破壞;3.IRQ服務程序A執(zhí)行完畢,將返回之前被中斷的程序;未被破壞751.5內部寄存器R14寄存器注意要點R14R14_irq用戶模式下的程序第一次IRQ的程序AaB...XA返回用戶模式地址1.執(zhí)行用戶模式下的程序;2.發(fā)生IRQ中斷,硬件將某個地址存入IRQ模式下的R14_irq寄存器,用戶模式下的R14沒有被破壞;3.IRQ服務程序A執(zhí)行完畢,將R14_irq寄存器的內容減去某個常量后存入PC,返回之前被中斷的程序;未被破壞第二次IRQ程序BareturnB...XA返回到第一次IRQ4.如果在第一次IRQ處理程序中,再次發(fā)生第二次IRQ中斷(或調用子程序);5.硬件將返回第一次irq的地址保存在R14_irq寄存器中,原來保存的返回用戶模式的地址將被覆蓋;被破壞6.這樣,在程序B返回到程序A,程序A將不能正確返回到用戶模式returnreturn
解決辦法:在發(fā)生第二次irq中斷時,將R14_irq保存到某個寄存器,(如R1,保存返回用戶模式的地址);在程序A返回時,使用movpc,r176寄存器類別寄存器在匯編中的名稱各模式下實際訪問的寄存器用戶系統(tǒng)管理中止未定義中斷快中斷通用寄存器和程序計數(shù)器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R5R6(v3)R6R7(v4)R7R8(v5)R8R8_fiqR9(SB,v6)R9R9_fiqR10(SL,v7)R10R10_fiqR11(FP,v8)R11R11_fiqR12(IP)R12R12_fiqR13(SP)R13R13_svcR13_abtR13_undR13_irqR13_fiqR14(LR)R14R14_svcR14_abtR14_undR14_irqR14_fiqR15(PC)R15狀態(tài)寄存器CPSRCPSRSPSR無SPSR_abtSPSR_abtSPSR_undSPSR_irqSPSR_fiq程序計數(shù)器R15(PC)
寄存器R15為程序計數(shù)器(PCProgramConter),正常執(zhí)行時,它的值為正在取指指令的地址。它可作為通用寄存器使用,但對于它的使用有許多限制或特殊情況。如果R15使用的方式超出了這些限制,那么結果將是不可預測的。所以建議不要把PC、LR、SP
用作一般的通用寄存器。771.5內部寄存器寫R15
正常操作時,寫入R15(PC)的值被當作一個指令地址,程序從這個地址處繼續(xù)執(zhí)行(相當于執(zhí)行一次無條件跳轉)。LDRPC,=START ;跳轉到START地址標號的指令處MOVPC,LR ;跳轉到LR指向的位置
781.5內部寄存器讀R15的限制
需要注意,當使用STR或STM(批量存儲)指令保存R15時,會有一個例外,這些指令可能將當前指令地址加8字節(jié)或加12字節(jié)保存(將來可能還有其它數(shù)字)。偏移量是8還是12取決于具體的ARM芯片,但是對于一個確定的芯片,這個值是一個常量。所以最好避免使用STR和STM指令來保存R15,如果很難做到,那么應當在程序中計算出該芯片的偏移量。79SUB R1,PC,#4 ;R1
下面STR指令的地址STR PC,[R0] ;將STR指令(當前指令)地址+偏移量(8 ;或12)放入R0指向的地址單元,LDR R0,[R0] ;把STR指令地址+偏移量的值放入R0SUB R0,R0,R1 ;計算偏移量R0=R0-R1結合教材p14頁1.5內部寄存器讀R15的限制計算具體芯片偏移量程序代碼:R15(PC)的值是處理器正在取指指令的地址,即當前正在執(zhí)行指令的地址加上8801.5內部寄存器寫R15的限制
由于ARM指令以字為邊界,因此寫入R15的值最低兩位通常為0b00。具體的規(guī)則取決于內核結構的版本:在ARM結構V3版及以下版本中,寫入R15的值的最低兩位被忽略,因此跳轉地址由指令的實際目標地址(寫入R15的值)和0xFFFFFFFC相與得到;在ARM結構V4版及以上版本中,寫入R15的值的最低兩位為0,如果不是,結果將不可預測。81第3章目錄8.異常9.復位10.存儲器及存儲器映射I/O11.尋址方式簡介12.ARM7指令簡介13.協(xié)處理器接口14.調試接口簡介1.簡介2.ARM7三級流水線3.處理器狀態(tài)4.處理器模式5.內部寄存器6.
程序狀態(tài)寄存器7.體系結構直接支持的數(shù)據(jù)類型寄存器類別寄存器在匯編中的名稱各模式下實際訪問的寄存器用戶系統(tǒng)管理中止未定義中斷快中斷通用寄存器和程序計數(shù)器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R5R6(v3)R6R7(v4)R7R8(v5)R8R8_fiqR9(SB,v6)R9R9_fiqR10(SL,v7)R10R10_fiqR11(FP,v8)R11R11_fiqR12(IP)R12R12_fiqR13(SP)R13R13_svcR13_abtR13_undR13_irqR13_fiqR14(LR)R14R14_svcR14_abtR14_undR14_irqR14_fiqR15(PC)R15狀態(tài)寄存器CPSRCPSRSPSR無SPSR_abtSPSR_abtSPSR_undSPSR_irqSPSR_fiq程序狀態(tài)寄存器CPSR
CPSR(CurrentProgramStatusRegister)當前程序狀態(tài)寄存器
SPSR(SavedProgramStatusRegister)程序狀態(tài)保存寄存器
每種異常都有自己的SPSR(由于用戶模式和系統(tǒng)模式不是異常模式,所以它們沒有SPSR),當異常發(fā)生時SPSR保存CPSR的當前值,異常退出時可通過SPSR恢復CPSR。1.6程序狀態(tài)寄存器簡介ARM內核包含1個CPSR和5個供異常處理程序使用的SPSR。CPSR反映了當前處理器的狀態(tài),其包含:4個條件代碼標志(符號(N)、零(Z)、進位(C)和溢出(V));2個中斷禁止位(F/I),分別控制一種類型的中斷;5個對當前處理器模式進行編碼的位M[4:0];1個用于指示當前執(zhí)行指令(ARM還是Thumb)的T位。NZCVQ—IM0M1M2M3M4TF—...3130292827268765432101.6程序狀態(tài)寄存器簡介條件代碼標志保留控制位溢出標志進位或借位擴展零符號標志位IRQ禁止FIQ禁止狀態(tài)位模式位NZCVIM0M1M2M3M4TFCPSR寄存器的格式1.6程序狀態(tài)寄存器條件代碼標志各標志位的含義如下:N(Negative)正、負標志,運算結果的最高位bit[31]反映在該標志位。結果為負數(shù)時N=1,結果為正數(shù)或零時N=0;Z(Zero)零標志,指令執(zhí)行結果為0時Z=1(通常表示比較結果“相等”),否則Z=0;C(Carry)進、借位標志,當進行加法運算并且最高位產生進位時C=1,否則C=0。當進行減法運算并且最高位產生借位時C=0,否則C=1。對于結合移位操作的非加法/減法指令(指單純的移位操作時),C為從最高位最后移出的值,其它指令C通常不變;V(oVerflow)
當進行加法/減法運算,并且發(fā)生有符號溢出時V=1,否則V=0,其它指令V通常不變。1.6程序狀態(tài)寄存器ARM指令集——條件碼C代碼:If(a>b) a++;Else b++;對應的匯編代碼:CMP R0,R1 ;R0與R1比較ADDHI R0,R0,#1;若R0>R1,則R0=R0+1ADDLS R1,R1,#1;若R0≤R1,則R1=R1+1示例:比較兩個值大小,并進行相應加1處理HI
HigherLS
LowerorSame1.6程序狀態(tài)寄存器控制位中斷禁止位包括I和F位:當I位置位時,IRQ中斷被禁止;當F位置位時,F(xiàn)IQ中斷被禁止。
V4以及更高版本的T體系列
T位反映了正在操作的狀態(tài):當T位置位時,處理器正在Thumb狀態(tài)下運行;當T位清零時,處理器正在ARM狀態(tài)下運行。V5以及更高的版本非T系列,見教材16頁模式位包括M4、M3、M2、M1和M0,在特權模式下(除用戶模式),可以設置CPSR中的這些位進行模式切換。M[4:0]模式0b10000用戶0b10001FIQ0b10010IRQ0b10011管理0b10111中止0b11011未定義0b11111系統(tǒng)1.6程序狀態(tài)寄存器簡介
每個異常模式還帶有一個程序狀態(tài)保存寄存器(SPSR),它用于保存在異常事件發(fā)生之前的CPSR。對CPSR和SPSR可以通過特殊指令(MSR)進行寫入。注意:如果通過程序修改CPSR寄存器中的模式位bit[4:0]進入異常模式,那么硬件將不會把CPSR保存至SPSR中,而通過異常發(fā)生進入時硬件會自動將CPSR放入SPSR。1.6程序狀態(tài)寄存器CPSR中的其他位(保留位)CPSR中的保留位被保留將來使用。為了提高程序的可移植性,當改變CPSR標志和控制位時,請不要改變這些保留位。另外,請確保您程序的運行不受保留位的值影響,因為將來的處理器可能會將這些位設置為1或者0。90第3章目錄8.異常9.復位10.存儲器及存儲器映射I/O11.尋址方式簡介12.ARM7指令簡介13.協(xié)處理器接口14.調試接口簡介1.簡介2.ARM7三級流水線3.處理器狀態(tài)4.處理器模式5.內部寄存器6.程序狀態(tài)寄存器7.體系結構直接支持的數(shù)據(jù)類型911.7體系結構直接支持的數(shù)據(jù)類型字、半字、字節(jié)ARM處理器支持下列數(shù)據(jù)類型:字節(jié)(Byte)8位半字(Half-Word)16位=2個字節(jié)字(Word)32位=4個字節(jié)1112342字對齊:四字節(jié)對齊(為4的倍數(shù),如0bXX…XX100與0bXX…XX000是字對齊)半字對齊:兩字節(jié)對齊(為2的倍數(shù),如0bXX…XX10與0bXX…XX00是半字對齊)92體系結構直接支持的數(shù)據(jù)類型注意:所有數(shù)據(jù)處理操作,例如ADD,操作數(shù)都以字為單位;裝載(load)和存儲(store)指令可以對字節(jié)、半字和字進行操作,當裝載字節(jié)或半字時自動實現(xiàn)無符號操作(零擴展到高位)或有符號操作(符號填充);ARM一條指令的長度剛好是1個字(占用4個字節(jié)),Thumb一條指令的長度剛好是半字(占用2個字節(jié))。1.7體系結構直接支持的數(shù)據(jù)類型93ARM體系結構的存儲器格式(1)ARM體系結構所支持的最大尋址空間為4GB(232字節(jié))
大端格式(BigEndian)
字數(shù)據(jù)的高字節(jié)存儲在低地址中,而字數(shù)據(jù)的低字節(jié)則存放在高地址中。
小端格式(LittleEndian)
低地址中存放的是字數(shù)據(jù)的低位,高位存放的是字數(shù)據(jù)的高字節(jié)。ARM缺省設置是小端格式1.7體系結構直接支持的數(shù)據(jù)類型94ARM體系結構的存儲器格式(2)(8H)=0B0A0908H(4H)=07060504H(0H)=03020100HBigEndianLittleEndian0H1H2H3H0H1H2H3H字數(shù)據(jù)的高字節(jié)存儲在低地址中,字數(shù)據(jù)的低字節(jié)存儲在高地址中。字數(shù)據(jù)的高字節(jié)存儲在高地址中,字數(shù)據(jù)的低字節(jié)存儲在低地址中。031031低地址高地址低地址高地址(8H)=0B0A0908H(4H)=07060504H(0H)=03020100H95ARM體系結構的存儲器格式(3)r0=0x11223344STRr0,[r1]LDRBr2,[r1]r1=0x100Memory32100123ByteLane312423161587011223344312423161587044332211312423161587011223344312423161587000000044312423161587000000011LittleendianBigendianr2=0x44r2=0x11存儲字數(shù)據(jù)加載字節(jié)數(shù)據(jù)r1=0x100r1=0x10096第1章目錄1.簡介2.ARM7三級流水線3.處理器狀態(tài)4.處理器模式5.內部寄存器6.程序狀態(tài)寄存器7.體系結構直接支持的數(shù)據(jù)類型8.異常9.復位10.存儲器及存儲器映射I/O11.尋址方式簡介12.ARM7指令簡介13.協(xié)處理器接口14.調試接口簡介1.8異常簡介
只要正常的程序流被暫時中止,處理器就進入異常模式。例如響應一個來自外設的中斷。在處理異常之前,ARM內核保存當前的處理器狀態(tài)CPSR(這樣當處理程序結束時,可以恢復執(zhí)行原來的程序),然后轉去處理異常。如果同時發(fā)生兩個或更多異常,那么將按中斷優(yōu)先級的順序來處理異常。1.8異常簡介異常類型 運行模式復位 管理(svc)未定義指令 未定義(und)軟件中斷 管理(svc)指令預取中止 中止(abt)數(shù)據(jù)中止 中止(abt)IRQ(外部中斷請求) 中斷(irq)FIQ(快速中斷請求) 快中斷(fiq)1.8異常
當處理器的快速中斷請求引腳有效,且CPSR中的F位為0(允許fiq)時,產生FIQ異常。FIQ(快速中斷請求)
當處理器的外部中斷請求引腳有效,且CPSR中的I位為0(允許irq)時,產生IRQ異常。系統(tǒng)的外設可通過該異常請求中斷服務。IRQ(外部中斷請求)
若處理器數(shù)據(jù)訪問指令的地址不存在,或該地址不允許當前指令訪問時,產生數(shù)據(jù)中止異常。數(shù)據(jù)中止
若處理器預取指令的地址不存在,或該地址不允許當前指令訪問,存儲器會向處理器發(fā)出中止信號,當預取的指令被執(zhí)行時,才會產生指令預取中止異常。指令預取中止
該異常由執(zhí)行SWI指令產生,可用于用戶模式下的程序調用特權操作指令。可使用該異常機制實現(xiàn)系統(tǒng)功能調用。軟件中斷
當ARM處理器或協(xié)處理器遇到不能處理的指令時,產生未定義指令異常??墒褂迷摦惓C制進行軟件仿真。未定義指令
當處理器的復位電平有效時,產生復位異常,程序跳轉到復位異常處理程序處執(zhí)行。復位具體含義異常類型1.8異常ARM處理器對異常中斷的響應過程
保存處理器當前狀態(tài)(ARM態(tài)還是Thumb態(tài))、中斷屏蔽位以及各條件標志位。這是通過將當前程序狀態(tài)寄存器CPSR的內容保存到將要執(zhí)行的異常中斷對應的SPSR_mode寄存器中實現(xiàn)的。 設置CPSR中相應的位,使程序進入相應的執(zhí)行模式;設置CPSR中的位,禁止IRQ中斷,當進入FIQ模式時,禁止FIQ中斷。 將寄存器LR_mode設置成返回地址。 將程序計數(shù)器PC設置成該中斷的中斷向量地址,在該地址處安排一些跳轉指令,從而跳轉到相應的異常中斷處理程序處執(zhí)行mode根據(jù)情況為fiq,svc,abt,irq,und
1.8異常從異常中斷處理程序中返回
恢復被中斷的程序的處理器狀態(tài),即將SPSR_mode寄存器內容復制到CPSR。 返回到發(fā)生異常中斷的指令的下一條或中斷處
(此處教材19頁第1段不全面,參考269頁倒數(shù)第3段)指令處執(zhí)行,即將LR_mode寄存器的內容復制到程序計數(shù)器PC。mode根據(jù)情況為fiq,svc,abt,irq,und第1章目錄8.異常9.復位10.存儲器及存儲器映射I/O11.尋址方式簡介12.ARM7指令簡介13.協(xié)處理器接口14.調試接口簡介1.簡介2.ARM7三級流水線3.處理器狀態(tài)4.處理器模式5.內部寄存器6.程序狀態(tài)寄存器7.體系結構直接支持的數(shù)據(jù)類型1.9復位復位
當nRESET信號被拉低時(一般外部復位引腳電平的變化和芯片的其它復位源會改變這個內核信號),ARM處理器放棄正在執(zhí)行的指令。在復位后,除PC和CPSR之外的所有寄存器的值都不確定。1.9復位復位
當nRESET信號再次變?yōu)楦唠娖綍r,ARM處理器執(zhí)行下列操作:1.強制M[4:0]變?yōu)閎10011(管理模式);2.置位CPSR中的I和F位(禁止IRQ/FIQ)中斷;3.清零CPSR中的T位,返回到ARM狀態(tài)并恢復執(zhí)行;4.強制PC從地址0x00開始對下一條指令進行取指。第1章目錄8.異常9.復位10.尋址方式簡介11.ARM7指令簡介12.協(xié)處理器接口13.調試接口簡介1.簡介2.ARM7三級流水線3.處理器狀態(tài)4.處理器模式5.內部寄存器6.程序狀態(tài)寄存器7.體系結構直接支持的數(shù)據(jù)類型1.10存儲器及存儲器映射I/O存儲器格式地址空間的規(guī)則:位于地址A的字包含的字節(jié)位于地址A,A+1,A+2和A+3;位于地址A的半字包含的字節(jié)位于地址A和A+1;位于地址A+2的半字包含的字節(jié)位于地址A+2和A+3;位于地址A的字包含的半字位于地址A和A+2;
字節(jié)字節(jié)字節(jié)字節(jié)地址AA+1A+2A+3半字半字字
ARM結構通常希望所有的存儲器訪問都合理的對齊。具體來說就是字訪問的地址通常是字對齊的,而半字訪問使用的地址是半字對齊的。不按這種方式對齊的存儲器訪問稱為非對齊的存儲器訪問。1.10存儲器及存儲器映射I/O未對齊的存儲器訪問
1.10存儲器及存儲器映射I/O未對齊的指令預取操作
當處理器處于ARM狀態(tài)期間,如果寫入到寄存器PC中的值是非字對齊的(地址的低兩位不為0b00,即不能被4整除),要么指令執(zhí)行結果不可預知,要么將地址值中的最低兩位被忽略 當處理器處于Thumb狀態(tài)期間,如果寫入寄存器PC中的值是非半字對齊的(地址的最低位不為0b0,即不能被2整除),要么指令執(zhí)行結果不可預知,要么將地址值中的最低位被忽略
1.10存儲器及存儲器映射I/O未對齊的數(shù)據(jù)訪問操作對于load/store操作,如果是非對齊的數(shù)據(jù)訪問操作,系統(tǒng)定義了下面3種可能結果。執(zhí)行的結果不可預知忽略字單元地址的低兩位的值,即訪問地址為(addressand0xfffffffc)的字單元;忽略半字單元地址的最低位的值,即訪問地址為(addressand0xfffffffe)的半字單元由存儲系統(tǒng)實現(xiàn)忽略字單元地址的低兩位的值;忽略半字單元地址的最低位的值,這時該地址值原封不動地送到存儲系統(tǒng)。
許多ARM實現(xiàn)在前一條指令的執(zhí)行尚未完成時將指令從存儲器中取出。這個動作稱
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年肉雞養(yǎng)殖場租賃及品牌授權運營管理合同3篇
- 2025年度餐廳員工福利保障與保險合同3篇
- 《酒店消防》課件
- 肥料農藥知識培訓課件
- 《安全標準化》課件
- 專業(yè)合作伙伴快運服務協(xié)議2024版版B版
- 鄭州美術學院《醫(yī)用數(shù)理統(tǒng)計》2023-2024學年第一學期期末試卷
- 浙江交通職業(yè)技術學院《專業(yè)導論(環(huán)境設計)》2023-2024學年第一學期期末試卷
- 2024年高效節(jié)能供水井工程承包協(xié)議版
- 互聯(lián)網行業(yè)產品經理職業(yè)培訓感悟
- 北師大版七年級數(shù)學上冊教案(全冊完整版)教學設計含教學反思
- 智慧水庫平臺建設方案
- 浙江省公務員考試面試真題答案及解析精選
- 系統(tǒng)性紅斑狼瘡-第九版內科學
- 全統(tǒng)定額工程量計算規(guī)則1994
- 糧食平房倉設計規(guī)范
- 《設計專業(yè)導論》教學大綱
- 臨床試驗樣本量簡易計算器
- 雙語閱讀:友誼的顏色
- 通用個人全年工資表模板
- 帶電作業(yè)車庫技術規(guī)范書
評論
0/150
提交評論