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

          新聞中心

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

          ARM_Core的處理器模式與寄存器

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

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

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

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

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

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

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

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

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

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

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

          USE模式:正常用戶模式。

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

          IRQ模式:普通中斷模式。

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

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

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

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

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

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

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

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

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

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

          異常向量表:0x0_0復位Reset,進入SVC模式。

          0x0_4未定義指令,進入UND模式。

          0x0_8軟件中斷,進入SVC模式。

          0x0_C中止指令,進入ABT模式。

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

          0x0_0014保留

          0x0_0018IRQ中斷,進入IRQ模式。

          0x0_001CFIQ中斷,進入FIQ模式。

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

          R14_und, R13_irq, R14_irq, R8_frq-R14_frq。

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

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

          CPSR當前程序狀態(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:為什么會根據(jù)Rn的最低位來切換狀態(tài)呢,最低位是1表示8位對齊而不是16位啊。難道arm本身是16位地址對齊??



          評論


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

          關閉
          看屁屁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); })();