<output id="yn1pw"></output>
    <wbr id="yn1pw"></wbr>

    <form id="yn1pw"><legend id="yn1pw"></legend></form>

  1. 更多課程 選擇中心

    嵌入式培訓
    達內IT學院

    400-111-8989

    嵌入式ARM處理器體系結構詳解

    • 發布:王不二
    • 來源:光電碰碰砰
    • 時間:2019-01-16 14:41

    一、工作狀態

    1、ARM狀態

    此時ARM處理器工作于32位指令狀態,所有指令均為32位寬度。

    2、Thumb狀態

    此時ARM處理器工作于16位指令狀態,所有指令均為16位寬度。代碼密度大,占用的內存空間小。

    對于特殊情況下必須執行ARM狀態,如異常處理時,需將Thumb狀態切換至ARM狀態。

    對于具有Thumb-2指令集的處理器,Thumb-2就是其Thumb狀態。

    3、調試狀態

    補充:

    1)Cortex-M僅支持Thumb-2指令集,不支持32位ARM指令集。

    2)除Cortex-M處理器之外,其他ARM處理器復位后開始執行代碼時總是處于ARM狀態

    3)對于具有ARM狀態與Thumb狀態的處理器,狀態的切換依賴于指令BX(BLX) Rn,寄存器Rn的最低位控制CPSR(當前狀態控制寄存器)的T位,當Rn[0]=0,執行指令BXRn后,CPSR中的T位自動被清零,修改當前狀態置于ARM狀態。當Rn[0]=1,修改當前狀態置于Thumb狀態

    4)ARM、Thumb、Thumb-2狀態簡單比較

    二、寄存器組織

    不同的cortex處理器型號有著不同的寄存器組織,若依據工作狀態劃分可劃分為ARM狀態下的寄存器組織、Thumb狀態下的寄存器組織、Thumb-2狀態下的寄存器組織。

    下圖為ARM狀態下的寄存器組織,以cortex-M4為例

    下圖為Thumb-2狀態下的寄存器組織,以cortex-M4為例

    三、異常類型

    Cortex-M4定義了以下異常類型:復位、NMI(不可屏蔽中斷請求)、HardFault(異常響應錯誤)、MemManage(存儲器管理)、BusFault、UsageFault、SVC、PendSV、SysTick(滴答計時)、IRQ(外部中斷請求),如圖為其詳細信息

    其中斷向量表如圖

    四、存儲器格式

    在ARM中,定義32位為字數據,16位為半字數據,8位為字節數據,帶FPU的處理器還支持浮點數據。作為32位處理器,cotex-M所支持的最大尋址空間為4GB(2的32次方B)

    從圖中可以看到,與Intel x86 I/O端口的獨立編址不同,ARM采用存儲器映像編址方式,對I/O端口等外設采用統一編址。

    獨立編址的優缺點:采用獨立的I/O指令,系統運行速度快,且不占用存儲器內存空間。但,由于采用獨立的I/O指令,程序設計的靈活性差。

    存儲器映象編址的優缺點:I/O端口與存儲器統一編址,存儲器指令同樣適用于I/O端口,可對I/O端口作眾多復雜性操作,程序的靈活性好。但,由于I/O端口占用了內存空間,使得內存空間減少。

    ARM有兩種存儲數據字的格式:大端模式(Big-Endian)、小端模式(Little-Endian)。

    1)大端模式

    在這種模式下,32位數據字以字節為最小單位劃分,高字節存放在低地址中,低字節存放在高地址中。

    2)小端模式

    在這種模式下,32位數據字以字節為最小單位劃分,低字節存放在低地址中,高字節存放在高地址中。

    可通過AIRCR寄存器(ApplicationInterrupt and Reset Control Register)的第15位來設定。ENDIANNESS=0時,小端模式;ENDIANNESS=1時,大端模式。

    最后,簡單談一下微處理器經常使用的兩種技術:MMU(存儲器管理單元)和MPU(存儲器保護單元)。MMU部件能把系統中不同類型的存儲器(SRAM、Flash、SDRAM、ROM等)進行統一管理,通過地址映射,使需要運行在連續地址空間的軟件可運行在不連續的物理存儲器中,需要較大存儲空間的軟件可運行在較小容量的物理存儲器中,此即虛擬存儲器技術。MMU完成了虛擬地址到物理地址的映射。

    MPU是對存儲器進行保護的可選部件,它提供了簡單代替MMU的方法來管理存儲器。在ARM中,MPU允許4GB地址空間定義為8個段,分別控制八個指令和八個數據內存塊,段與段之間可以重疊,每個段的地址與長度均可編程,且段起始地址必須是其大小的整數倍、段的長度可以是4KB-4GB之間任意一個2的指數。(這與Intel x86系列的分段管理存儲器的方法較為類似,只是相較于程序,仍需深刻理解)

    本文內容轉載自網絡,本著傳播與分享的原則,來源/作者信息已在文章頂部表明,版權歸原作者所有,如有侵權請聯系我們進行刪除!

    預約申請免費試聽課

    填寫下面表單即可預約申請免費試聽!怕錢不夠?可就業掙錢后再付學費! 怕學不會?助教全程陪讀,隨時解惑!擔心就業?一地學習,可全國推薦就業!

    上一篇:不可復制、完整的嵌入式安全解決方案如何從根本上保護設計
    下一篇:如何解決嵌入式視覺系統所面臨的挑戰?

    裸編程怎么做?裸編程具體做法

    嵌入式編程中你必須知道的小知識

    嵌入式C語言編程小知識總結

    有哪些工具可以讓嵌入式開發事半功倍?

    • 掃碼領取資料

      回復關鍵字:視頻資料

      免費領取 達內課程視頻學習資料

    • 視頻學習QQ群

      添加QQ群:1143617948

      免費領取達內課程視頻學習資料

    Copyright ? 2021 Tedu.cn All Rights Reserved 京ICP備08000853號-56 京公網安備 11010802029508號 達內時代科技集團有限公司 版權所有

    選擇城市和中心
    黑龍江省

    吉林省

    河北省

    湖南省

    貴州省

    云南省

    廣西省

    海南省

    高清在线不卡一区二区_2019最新国产高清不卡a_亚洲欧洲日本aⅴ 百度 好搜 搜狗
    <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <文本链> <文本链> <文本链> <文本链> <文本链> <文本链>