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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > ARM體系結(jié)構(gòu)知識點

          ARM體系結(jié)構(gòu)知識點

          作者: 時間:2016-11-11 來源:網(wǎng)絡(luò) 收藏
          一、ARM存儲器

          1. 數(shù)據(jù)類型:字節(jié)、半字、字
          2. 地址空間:最大可尋址空間位4GB(2的32次方字節(jié))
          3. 大小端格式:
          大端格式是字?jǐn)?shù)據(jù)的高字節(jié)存儲在低地址中,低字節(jié)存在高地址中
          小端格式是低地址中寸的是子數(shù)據(jù)的低字節(jié),高地址存放的是子數(shù)據(jù)的高字節(jié)

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

          二、處理器模式

          ARM處理器共有7種工作模式,除用戶(user)模式之外的其他6種處理模式統(tǒng)稱為特權(quán)模式(Privileged Modes)。在這些模式下,程序可以訪問所有的系統(tǒng)資源,也可以任意切換處理器模式。特權(quán)模式中除系統(tǒng)(system)模式之外的其他5種模式又統(tǒng)稱為異常模式。

          處理器模式可以通過軟件控制進(jìn)行切換,也可以通過外部中斷或內(nèi)部異常處理過程進(jìn)行切換。運行在用戶模式下的程序不能訪問一些受操作系統(tǒng)保護的系統(tǒng)資源,也不能直接進(jìn)行處理器模式切換,如果要想進(jìn)行模式切換,可以產(chǎn)生異常處理,在異常處理過程中進(jìn)行處理器模式的切換,這種體系架構(gòu)可以使操作系統(tǒng)控制整個系統(tǒng)資源。

          每一種異常模式中都有一組寄存器供異常處理程序使用,這樣可以保證在進(jìn)入異常模式時,用戶模式下的寄存器不被破壞。

          系統(tǒng)模式不是通過異常過程進(jìn)入的,它和用戶模式具有完全相同的寄存器。系統(tǒng)模式屬于特權(quán)模式,可以訪問所有系統(tǒng)資源,也可以直接進(jìn)行處理器模式切換,主要供操作系統(tǒng)內(nèi)核進(jìn)程使用;通常操作系統(tǒng)內(nèi)核進(jìn)程需要訪問所有的系統(tǒng)資源,同時該進(jìn)程仍然使用用戶模式下的寄存器組,而不是異常模式下的寄存器組,這樣可以保證當(dāng)異常發(fā)生時內(nèi)核進(jìn)程狀態(tài)不被破壞。

          ARM處理器的7種工作模式如下表所示:

          處理器工作模式

          說明

          用戶(user,usr)模式

          正常程序運行模式

          快速中斷(FIQ,fiq)模式

          異常

          模式

          特權(quán)模式

          privileged modes

          快速中斷處理

          外部中斷(IRQ,irq)模式

          普通中斷處理

          超級用戶(supervisor,svc)模式

          提供操作系統(tǒng)使用的一種保護模式,swi命令狀態(tài)

          數(shù)據(jù)訪問終止(abort,abt)模式

          用于虛擬存儲和存儲保護

          未定義指令終止(undefined,und)模式

          用于支持通過軟件仿真硬件的協(xié)處理

          系統(tǒng)(system,sys)模式

          用于運行特權(quán)級的操作系統(tǒng)任務(wù)

          對應(yīng)于以上7種模式,ARM處理器有7組通用寄存器,如下表所示:

          usr模式

          sys模式

          svc模式

          abt模式

          und模式

          irq模式

          fiq模式

          R0

          R0

          R0

          R0

          R0

          R0

          R0

          R1

          R1

          R1

          R1

          R1

          R1

          R1

          R2

          R2

          R2

          R2

          R2

          R2

          R2

          R3

          R3

          R3

          R3

          R3

          R3

          R3

          R4

          R4

          R4

          R4

          R4

          R4

          R4

          R5

          R5

          R5

          R5

          R5

          R5

          R5

          R6

          R6

          R6

          R6

          R6

          R6

          R6

          R7

          R7

          R7

          R7

          R7

          R7

          R7

          R8

          R8

          R8

          R8

          R8

          R8

          R8_fiq

          R9

          R9

          R9

          R9

          R9

          R9

          R9_fiq

          R10

          R10

          R10

          R10

          R10

          R10

          R10_fiq

          R11

          R11

          R11

          R11

          R11

          R11

          R11_fiq

          R12

          R12

          R12

          R12

          R12

          R12

          R12_fiq

          R13

          R13

          R13_svc

          R13_abt

          R13_und

          R13_irq

          R13_fiq

          R14

          R14

          R14_svc

          R14_abt

          R14_und

          R14_irq

          R14_fiq

          PC

          PC

          PC

          PC

          PC

          PC

          PC

          CPSR

          CPSR

          CPSR

          CPSR

          CPSR

          CPSR

          CPSR

          SPSR_svc

          SPSR_abt

          SPSR_und

          SPSR_irq

          SPSR_fiq

          說明:
          1. ARM處理器共有37個寄存器,被分為若干個組(BANK),這些寄存器包括31個通用寄存器和6個狀態(tài)寄存器,其中通用寄存器包括程序計數(shù)器(PC指針)及所有寄存器(均為32位)。
          2. ARM處理器中有用戶模式、系統(tǒng)模式、特權(quán)模式、數(shù)據(jù)訪問終止模式、未定義指令終止模式、IRQ中斷模式、FIQ中斷模式7種工作模式,每種工作模式都有R0~R15及CPSR共17個通用寄存器,而在5種異常中斷(exception)模式中又各自擁有一個獨立的SPSR寄存器用于存放當(dāng)前狀態(tài)寄存器的值。這些通用寄存器對于各種工作模式或部分工作模式有些是公用的,如表7-2所示。
          3. R8~R12對于快速中斷FIQ模式之外的其他模式都是公用的,而FIQ模式另外有一套自己寄存器R8_fiq~R12_fiq,這樣是為了在處理FIQ中斷時不必保護R8~R12寄存器,從而提高響應(yīng)速度。
          4. R13和R14除了用戶模式和系統(tǒng)模式公用外,其他每種異常模式都有一套自己獨立的寄存器:R13_svc、R14_svc/R13_abt、R14_abt/R13_und、R14_und/R13_irq、R14_irq/R13_fiq、R14_fiq,即R13和R14有6套物理寄存器實現(xiàn)。
          5. R13/sp寄存器在ARM中除了可用作通用寄存器外還用作堆棧指針sp,而且每一種異常(exception)模式都有自己獨立的R13物理寄存器實現(xiàn)。在子程序中R13只能用作sp,sp在進(jìn)入子程序的值和退出子程序的值必須相等。
          6. R14/lr寄存器在ARM中除了可以用作通用寄存器外,還可用作連接寄存器lr,用來保存子程序的返回地址,如果子程序保存了返回地址,R14也可以用作其他用途。每一種異常(exception)模式都有自己獨立的R14/lr物理寄存器實現(xiàn)。
          7. R15寄存器在ARM中用作程序計數(shù)器pc,雖然R15也可以用作通用寄存器,但要注意有一些特殊限制,如果違反了這些限制,指令執(zhí)行的結(jié)果將是不可預(yù)料的。
          8. 子程序通過寄存器R0~R3來傳遞參數(shù),這時,R0~R3可以記作A1~A4。如果參數(shù)超過4個,可以將剩余的參數(shù)送到數(shù)據(jù)棧中,入棧的順序與參數(shù)的順序相反,即最后一個參數(shù)先入棧。
          9. 在子程序中用R4~R11來保存局部變量,這時,R4~R11可以記作V1~V8;而在Thumb程序中,通常只能使用寄存器R4~R7。
          10. 寄存器R12用作子程序間的scratch寄存器,記作ip,在子程序間的連接代碼中常有這種使用規(guī)則

          三、異常

          當(dāng)正常的程序執(zhí)行流程發(fā)生暫時的停止時,稱之為異常,例如處理一個外部的中斷請求。在處理異常之前,當(dāng)前處理器的狀態(tài)必須保留,這樣當(dāng)異常處理完成之后,當(dāng)前程序可以繼續(xù)執(zhí)行。處理器允許多個異常同時發(fā)生,它們將會按固定的優(yōu)先級進(jìn)行處理。

          當(dāng)一個異常出現(xiàn)以后,ARM微處理器會執(zhí)行以下幾步操作

          1.將下一條指令的地址存入相應(yīng)連接寄存器LR,以便程序在處理異常返回時能從正確的位置重新開始執(zhí)行。

          2.將CPSR復(fù)制到相應(yīng)的SPSR中。

          3.根據(jù)異常類型,強制設(shè)置CPSR的運行模式位。

          4.強制PC從相關(guān)的異常向量地址取下一條指令執(zhí)行,從而跳轉(zhuǎn)到相應(yīng)的異常處理程序處。

          ARM體系結(jié)構(gòu)所支持的異常類型

          1.復(fù)位:復(fù)位電平有效時,產(chǎn)生復(fù)位異常,程序跳轉(zhuǎn)到復(fù)位處理程序處執(zhí)行

          2.未定義指令:遇到不能處理的指令,定義未定義指令異常

          3.軟件中斷:執(zhí)行SWI指令產(chǎn)生,用于用戶模式下的程序調(diào)用特權(quán)指令

          4.指令預(yù)取中止:處理器預(yù)取指令的地址不存在,或該地址不允許當(dāng)前指令訪問

          5.數(shù)據(jù)中止:處理器數(shù)據(jù)訪問指令的地址不存在,或該地址不允許當(dāng)前指令訪問

          6.IRQ:外部中斷請求有效,且CPSR中的I位為0時,產(chǎn)生IRQ異常

          7.FIQ:快速中斷請求引腳有效,且CPSR的F位為0時,產(chǎn)生FIQ異常

          ARM體系中斷向量表

          優(yōu)先級

          地址

          異常原因

          進(jìn)入模式

          1

          0x0000,0000

          復(fù)位

          管理模式

          6

          0x0000,0004

          未定義指令

          未定義模式

          6

          0x0000,0008

          軟件中斷

          管理模式

          5

          0x0000,000C

          中止(預(yù)取指令錯誤)

          中止模式

          2

          0x0000,0010

          中止(預(yù)取數(shù)據(jù)錯誤)

          中止模式

          0x0000,0014

          保留

          保留

          4

          0x0000,0018

          IRQ(外部中斷,且I允許)

          IRQ

          3

          0x0000,001C

          FIQ(外部中斷,且F允許)

          FIQ




          評論


          技術(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); })();