<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > ARM_Core的處理器模式與寄存器

          ARM_Core的處理器模式與寄存器

          作者: 時(shí)間:2016-11-09 來(lái)源:網(wǎng)絡(luò) 收藏
          ARM處理器的工作狀態(tài):ARM處理器有兩種工作狀態(tài)。在程序的執(zhí)行過(guò)程中,處理器可以在兩種工作狀態(tài)之間切換,并且不影響

          相應(yīng)寄存器中的內(nèi)容。

          本文引用地址:http://www.ex-cimer.com/article/201611/317757.htm

          ARM狀態(tài),此時(shí)處理器執(zhí)行32位對(duì)齊的ARM指令;BX指令,當(dāng)操作數(shù)寄存器最低位為0時(shí),進(jìn)入ARM狀態(tài)。

          Thumb,此時(shí)處理器執(zhí)行16位對(duì)齊的Thumb指令。BX指令,當(dāng)操作數(shù)寄存器最低位為1時(shí),進(jìn)入Thumb狀態(tài)。

          BX(Branch Exchange):BX Rn; ##其中Rn可以是R0-R15中的任意一個(gè)。指令通過(guò)將寄存器Rn的內(nèi)容拷貝到程序計(jì)數(shù)器PC

          來(lái)完成4Gbyte的地址空間的跳轉(zhuǎn)。

          在進(jìn)入異常中斷后,ARM內(nèi)核會(huì)自動(dòng)切換到ARM狀態(tài),所以在異常中斷處理程序入口的是ARM指令,如果需要切換到Thumb狀態(tài)

          必須在異常中斷返回前,切換到ARM工作狀態(tài)。當(dāng)處理器在Thumb狀態(tài)下發(fā)生異常時(shí),返回后,自動(dòng)切換到Thumb狀態(tài)。

          ARM處理器總是從ARM工作狀態(tài)開始的。

          ARM處理器的7中工作模式:

          USE模式:正常用戶模式。

          FIQ模式:快速中斷模式,支持高速數(shù)據(jù)傳輸。

          IRQ模式:普通中斷模式。

          SVC模式:Supervisor模式,操作系統(tǒng)保護(hù)模式,處理軟件中斷swi,reset.

          ABT模式:數(shù)據(jù),指令中止模式。

          UND模式:未定義模式,支持軟件仿真。

          SYS模式:系統(tǒng)模式,運(yùn)行特權(quán)操作系統(tǒng)任務(wù)。

          除用戶模式之外的6中模式稱為特權(quán)模式,特權(quán)模式下,程序可以訪問(wèn)所有的系統(tǒng)資源,可以任意的進(jìn)行處理器模式的切換。

          用戶模式下不能訪問(wèn)一些受操作系統(tǒng)保護(hù)的系統(tǒng)資源,不能直接進(jìn)行處理器模式切換,需要由應(yīng)用程序產(chǎn)生異常處理。

          特權(quán)模式中,除系統(tǒng)模式之外的5種模式稱為異常模式。

          FIQ要比IRQ的響應(yīng)快很多,首先FIQ的優(yōu)先級(jí)比較高,再次ARM的FIQ會(huì)有自己更多的寄存器,由ARM自動(dòng)保存。

          異常處理過(guò)程:將下一條指令存入LR寄存器,CPSR賦值到SPSR,強(qiáng)制設(shè)置CPSR運(yùn)行位,跳轉(zhuǎn)到異常處理函數(shù)。

          返回:將LR中的值減相應(yīng)的偏移量送到PC中,將SPSR的值到CPSR中。

          異常向量表:0x0_0復(fù)位Reset,進(jìn)入SVC模式。

          0x0_4未定義指令,進(jìn)入U(xiǎn)ND模式。

          0x0_8軟件中斷,進(jìn)入SVC模式。

          0x0_C中止指令,進(jìn)入ABT模式。

          0x0_0010中止數(shù)據(jù),進(jìn)入ABT模式。

          0x0_0014保留

          0x0_0018IRQ中斷,進(jìn)入IRQ模式。

          0x0_001CFIQ中斷,進(jìn)入FIQ模式。

          ARM處理器中一共有37個(gè)寄存器。分別有31個(gè)通用寄存器:R0-R15, R13_svc, R14_svc, R13_abt, R14_abt, R13_und,

          R14_und, R13_irq, R14_irq, R8_frq-R14_frq。

          6個(gè)狀態(tài)寄存器:CPSR, SPSR_svc, SPSR_abt, SPSR_und, SPSR_irq, SPSR_fiq。

          R13通常用作堆棧指針。R14通常用作子程序連接。

          CPSR當(dāng)前程序狀態(tài)寄存器。SPSR備份程序狀態(tài)寄存器。

          31--28:NZCV(Negative Zero Carry Overflow)

          278:Reserve

          7-5:IFT(IRQ disable FIQ disable State bit)

          4-0:Mode bits

          0b10用戶模式,0b11FIQ模式,0b10010IRQ模式,0b10011SVC模式,0b10ABT模式,

          0b11011UND模式,0b11SYS模式。

          question:為什么會(huì)根據(jù)Rn的最低位來(lái)切換狀態(tài)呢,最低位是1表示8位對(duì)齊而不是16位啊。難道arm本身是16位地址對(duì)齊??



          關(guān)鍵詞: ARM_處理器模式寄存

          評(píng)論


          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();