|
|||||||||||
| 技術交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術 | 電源技術 | 測控之家 | EMC技術 | ARM技術 | EDA技術 | PCB技術 | 嵌入式系統(tǒng) 驅(qū)動編程 | 集成電路 | 器件替換 | 模擬技術 | 新手園地 | 單 片 機 | DSP技術 | MCU技術 | IC 設計 | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe |
[分享]ARM基礎知識 |
| 作者:飄葉 欄目:單片機 |
ARM處理器共有37個寄存器。其中包括: **31個通用寄存器,包括程序計數(shù)器(PC)在內(nèi)。這些寄存器都是32位寄存器。 **6個狀態(tài)寄存器。這些寄存器都是32位寄存器。 ARM處理器共有7種不同的處理器模式,每一種模式中都有一組相應的寄存器組。在任何時刻,可見的寄存器包括15個通用寄存器(R0-R14),一個或兩個狀態(tài)寄存器及程序計數(shù)器(PC)。在所有的寄存器中,有些是各模式公用一個物理寄存器,有一些寄存器各模式擁有自己獨立的物理寄存器。 **************************************************** 通用寄存器 ***************************************************8 通用寄存器分為以下三類:備份寄存器、未備份寄存器、程序計數(shù)器PC 未備份寄存器 未備份寄存器包括R0-R7。對于每一個未備份寄存器來說,所有處理器模式下都是使用同一個物理寄存器。未備份寄存器沒有被系統(tǒng)用于特別的用途,任何可采用通用寄存器的場合都可以使用未備份寄存器。 備份寄存器 對于R8-R12備份寄存器來說,每個寄存器對應兩個不同的物理寄存器。系統(tǒng)為將備份寄存器用于任何的特殊用途,但是當中斷處理非常簡單,僅僅使用R8-R14寄存器時,FIQ處理程序可以不必執(zhí)行保存和恢復中斷現(xiàn)場的指令,從而可以使中斷處理非常迅速。 對于R13,R14備份寄存器來說,每個寄存器對應六個不同的物理寄存器,其中的一個是系統(tǒng)模式和用戶模式共用的;另外的五個對應于其他的五種處理器模式。采用下面的記號來區(qū)分各個物理寄存器: R13_<MODE> 其中MODE可以是下面幾種模式之一:usr,svc,abt,und,irq,fiq 程序計數(shù)器PC 可以作為一般的通用寄存器使用,但有一些指令在使用R15時有一些限制。由于ARM采用了流水線處理器機制,當正確讀取了PC的值時,該值為當前指令地址值加上8個字節(jié)。也就是說,對于ARM指令集來說,PC指向當前指令的下兩條指令的地址。由于ARM指令是字對齊的,PC值的第0位和第一位總為0。 需要注意的是,當使用str/stm保存R15時,保存的可能是當前指令地址值加8個字節(jié),也可能保存的是當前指令地址值加12個字節(jié)。到底哪種方式取決于芯片的具體設計。對于用戶來說,盡量避免使用STR/STM指令來保存R15的值。 |
| 2樓: | >>參與討論 |
| 作者: 飄葉 于 2007/5/15 22:11:32 發(fā)布:
*************************************************************** 程序狀態(tài)寄存器 *************************************************************** 模式下都有一個專用的物理狀態(tài)寄存器,稱為SPSR(備份程序狀態(tài)寄存器) 中斷模式,所以他沒有SPSR。當用戶在用戶模式或系統(tǒng)模式訪問SPSR,將產(chǎn)生不可預知的后果。 31 30 29 28 27 26 7 6 5 4 3 2 1 0
z——z=1表示運算的結(jié)果為零;z=0表示運算的結(jié)果不為零。對于CMP指令,Z=1表示進行比較的兩個數(shù)大小相等。 C——下面分四種情況討論C的設置方法: ***Q標識位*** 斷發(fā)生時保存和恢復CPSR中的Q標識位。
CPSR的低八位I、F、T、M[4:0]統(tǒng)稱為控制位。當異常中斷發(fā)生時這些位發(fā)生變化。在特權級的處理器模式下,軟件可以修改這些控制位。 **中斷禁止位:當I=1時禁止IRQ中斷,當F=1時禁止FIQ中斷 **T控制位:T控制位用于控制指令執(zhí)行的狀態(tài),即說明本指令是ARM指令還是Thumb指令。對于ARM V4以更高版本的T系列ARM處理器,T控制位含義如下: ***M控制位*** M[4:0] 處理器模式 可訪問的寄存器 ***CPSR中的其他位*** 這些位用于將來擴展。應用軟件不要操作這些位。 |
|
| 3樓: | >>參與討論 |
| 作者: 飄葉 于 2007/5/15 22:14:09 發(fā)布:
在ARM體系中通常有以下3種方式控制程序的執(zhí)行流程: **在正常執(zhí)行過程中,每執(zhí)行一條ARM指令,程序計數(shù)器(PC)的值加4個字節(jié);每執(zhí)行一條Thumb指令,程序計數(shù)器寄存器(PC)加2個字節(jié)。整個過程是按順序執(zhí)行 。 **跳轉(zhuǎn)指令,程序可以跳轉(zhuǎn)到特定的地址標號處執(zhí)行,或者跳轉(zhuǎn)到特定的子程序處執(zhí)行。其中,B指令用于執(zhí)行跳轉(zhuǎn)操作;BL指令在執(zhí)行跳轉(zhuǎn)操作同時,保存子程 序的返回地址;BX指令在執(zhí)行跳轉(zhuǎn)操作同時,根據(jù)目標地址為可以將程序切換到Thumb狀態(tài);BLX指令執(zhí)行3個操作,跳轉(zhuǎn)到目標地址處執(zhí)行,保存子程序的返回 地址,根據(jù)目標地址為可以將程序切換到Thumb狀態(tài)。 **當異常中斷發(fā)生時,系統(tǒng)執(zhí)行完當前指令后,將跳轉(zhuǎn)到相應的異常中斷處理程序處執(zhí)行。當異常中斷處理程序執(zhí)行完成后,程序返回到發(fā)生中斷指令的下條指 令處執(zhí)行。在進入異常中斷處理程序時,要保存被中斷程序的執(zhí)行現(xiàn)場,從異常中斷處理程序退出時,要恢復被中斷程序的執(zhí)行現(xiàn)場。 |
|
| 4樓: | >>參與討論 |
| 作者: ndtuzi 于 2007/5/15 22:28:36 發(fā)布:
謝謝分享 |
|
|
|
| 免費注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點此進入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號 |