新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > ARM體系結構知識點

        ARM體系結構知識點

        作者: 時間:2016-11-11 來源:網絡 收藏
        一、ARM存儲器

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

        本文引用地址:http://www.104case.com/article/201611/316879.htm

        二、處理器模式

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

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

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

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

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

        處理器工作模式

        說明

        用戶(user,usr)模式

        正常程序運行模式

        快速中斷(FIQ,fiq)模式

        異常

        模式

        特權模式

        privileged modes

        快速中斷處理

        外部中斷(IRQ,irq)模式

        普通中斷處理

        超級用戶(supervisor,svc)模式

        提供操作系統使用的一種保護模式,swi命令狀態

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

        用于虛擬存儲和存儲保護

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

        用于支持通過軟件仿真硬件的協處理

        系統(system,sys)模式

        用于運行特權級的操作系統任務

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

        三、異常

        當正常的程序執行流程發生暫時的停止時,稱之為異常,例如處理一個外部的中斷請求。在處理異常之前,當前處理器的狀態必須保留,這樣當異常處理完成之后,當前程序可以繼續執行。處理器允許多個異常同時發生,它們將會按固定的優先級進行處理。

        當一個異常出現以后,ARM微處理器會執行以下幾步操作

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

        2.將CPSR復制到相應的SPSR中。

        3.根據異常類型,強制設置CPSR的運行模式位。

        4.強制PC從相關的異常向量地址取下一條指令執行,從而跳轉到相應的異常處理程序處。

        ARM體系結構所支持的異常類型

        1.復位:復位電平有效時,產生復位異常,程序跳轉到復位處理程序處執行

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

        3.軟件中斷:執行SWI指令產生,用于用戶模式下的程序調用特權指令

        4.指令預取中止:處理器預取指令的地址不存在,或該地址不允許當前指令訪問

        5.數據中止:處理器數據訪問指令的地址不存在,或該地址不允許當前指令訪問

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

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

        ARM體系中斷向量表

        優先級

        地址

        異常原因

        進入模式

        1

        0x0000,0000

        復位

        管理模式

        6

        0x0000,0004

        未定義指令

        未定義模式

        6

        0x0000,0008

        軟件中斷

        管理模式

        5

        0x0000,000C

        中止(預取指令錯誤)

        中止模式

        2

        0x0000,0010

        中止(預取數據錯誤)

        中止模式

        0x0000,0014

        保留

        保留

        4

        0x0000,0018

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

        IRQ

        3

        0x0000,001C

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

        FIQ




        關鍵詞: ARM體系結構知識

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 新巴尔虎左旗| 佛学| 佛教| 磴口县| 洞头县| 通化市| 大竹县| 灵璧县| 麻江县| 大宁县| 古丈县| 尼勒克县| 临清市| 景宁| 东乌| 喀喇| 榆林市| 临夏市| 花莲市| 玛纳斯县| 蓬安县| 驻马店市| 封开县| 贵溪市| 三河市| 盐源县| 蓝山县| 江阴市| 达日县| 界首市| 凭祥市| 廊坊市| 仙桃市| 离岛区| 阜南县| 浏阳市| 清新县| 文山县| 德钦县| 博乐市| 萝北县|