【嵌入式開發】ARM 晶片簡介 (ARM晶片類型 | ARM處理器工作模式 | ARM 寄存器 | ARM 定址),

來源:互聯網
上載者:User

【嵌入式開發】ARM 晶片簡介 (ARM晶片類型 | ARM處理器工作模式 | ARM 寄存器 | ARM 定址),

作者 : 韓曙亮

部落格地址 : http://blog.csdn.net/shulianghan/article/details/42375701

相關資源下載 : 

-- 三星 ARM Architecture Reference Manual 文檔 : http://download.csdn.net/detail/han1202012/8324641




一. ARM 晶片類型


1. ARM 分類



(1) ARM 分類類型(晶片 | 核 | 指令架構)

ARM 分類

-- ARM 晶片類型 : 6410, 2440, 210;

-- ARM 核類型 : arm11, arm9, CortexA9;

-- 指令架構 : armv7, armv6;



(2) ARM晶片 與 ARM核 關係

晶片 和 核關係 : 晶片包含核; 

-- 2440 晶片 : 包含 arm9 核; 

-- 6410 晶片 : 包含 arm11 核; 

-- 210 晶片 : 包含 CortexA8 核;



(3) ARM核 與 指令架構 關係


ARM 核 與 指令架構 關係

-- ARM9 : armv4 指令架構;

-- ARM11 : armv6 指令架構;

-- CortextA8 : armv7 指令架構;



2. ARM 演化變遷


(1) 經典陣營

發展曆程 : ARM7 --> ARM9 --> ARM11, ARM11 效能最高, ARM7 效能最低;



(2) Cortex 陣營

Cortext 系列

-- Cortex-M 系列 : 沒有作業系統, 面向工控領域, 與單片機差不多;

-- Cortex-R 系列 : 面向即時應用, 強調即時性, 可以運行作業系統;

-- Cortex-A 系列 : 主要面向多媒體應用, 目前多數的智能手機屬於該系列;


效能遞推 : Cortex-M0 --> Cortex-M1 --> Cortex-M3 --> Cortex-M4 --> Cortex-R4 --> Cortex-A5 --> Cortex-A8 --> Cortex-A9 ;


(3) Cortex 與 ARM 對比


ARM 與 Cortext 對比

-- ARM7 :  ARM 7 與 Cortext-M3 類似, 都沒有作業系統, 效能上 Cortex-M3 略高, 但是高的有限;

-- ARM9 和 ARM11 : ARM9 和 ARM11 與 Cortex-R4 效能類似, ARM11 不如 Cortex-A5, 遠遠比不上 Cortex-A8 和 Cortex-A9;



3. 晶片效能對比(處理速度 | 緩衝 | 記憶體介面 | OS)


(1) 處理速度對比

晶片處理速度對比 : 去晶片對應的晶片手冊中尋找 Clock&Power Management 章節, 查看時鐘相關參數;

-- 6410 : 533MHz ~ 667MHz;

-- 2440 : 12MHz 晶振 對應 405 ~ 532 MHz 處理速度;

-- 210 : 800MHz ~ 1GHz;



(2) 緩衝對比

晶片緩衝對比 : 去晶片對應的晶片手冊;

-- 6410 : 16K 指令緩衝, 16K 資料緩衝;

-- 2440 : 16K 指令緩衝, 16K 資料緩衝;

-- 210 : 32KB 指令緩衝, 32KB 資料緩衝;



(3) 記憶體介面對比

晶片記憶體介面對比 : SDRAM 已經淘汰掉了;

-- 2440 : 提供 SDRAM 記憶體介面;

-- 6410 : 提供了 SDRAM, 也提供了 DDR 記憶體介面;

-- 210 : 提供了 DDR1 和 DDR2 兩種記憶體介面;



(4) 支援的作業系統

晶片支援作業系統對比 : 去晶片對應的晶片手冊中尋找;

-- 6410 : WinCE | Linux | Android;

-- 2440 : WinCE | Linux;

-- 210 : WinCE | Linux | Android;



(5) 其它商業資訊

晶片商業對比 : 

-- 6410 : 繼續使用;

-- 2440 : 三星宣布停產;

-- 210 : 繼續使用;




二. ARM 工作模式


對應手冊ARM Architecture Reference Manual.pdf 手冊, 在本部落格中提供下載;

-- 章節內容 : Programmers’ Model, A2.2 Page 41;

-- 手冊 : http://download.csdn.net/detail/han1202012/8324641



1. 處理器工作模式



(1) ARM 工作模式圖例

工作模式圖示 : 圖片自 ARM Architecture Reference Manual.pdf 手冊, Page 41, A2.2 章節;




(2) ARM 工作模式介紹


工作模式介紹

-- User 模式 (usr) : 普通應用程式啟動並執行模式; 

-- FIQ 模式 (fiq) : 快速中斷模式; 

-- IRQ 模式 (irq) : 普通中斷模式; 

-- Supervisor 模式 (svc) : 為作業系統提供的保護模式; 

-- Abort 模式 (abt) : 訪問虛擬記憶體導致異常的模式; 

-- Undefined 模式 (und) : 未定義指令模式; 

-- System 模式 (sys) : armv4 以上版本才有該模式; 


Linux 系統工作模式 : 系統運行在 usr 模式, 核心運行在 svc 模式;




三. ARM 寄存器


對應手冊 : ARM Architecture Reference Manual.pdf 手冊, 在本部落格中提供下載;

-- 章節內容 : Programmers’ Model, A2.3 Page 42;

-- 手冊 : http://download.csdn.net/detail/han1202012/8324641



1. 寄存器簡介


寄存器簡介

-- 寄存器個數 : ARM 有 37 個寄存器;

-- 通用寄存器 : 31 個通用寄存器, 程式計數器 也是一個通用寄存器;

-- 狀態寄存器 : 6 個狀態寄存器;

-- 圖示


-- 寄存器圖示 : 自 Page 43;





2. 通用寄存器



(1) 通用寄存器分類


通用寄存器分類

-- 不分組寄存器 : R0 ~ R7;

-- 分組寄存器 : R8 ~ R14, 不同模式下使用的寄存器都不相同;

-- 程式計數器 : PC 指標, 是 R15;



(2) 常用通用寄存器解析

R13 寄存器 : 通常用來做 SP 堆棧指標;


R14 寄存器 : 通常用來做 連結寄存器;

-- 作用一 : 儲存函數返回地址;

-- 作用二 : 異常發生時, 主要用於記錄函數返回地址;


R15 寄存器 : PC 指標, 程式計數器;




3. 狀態寄存器



(1) 對應各個模式的狀態寄存器出現原因

狀態寄存器

-- 圖示


-- 對應各個模式的狀態寄存器 : 當出現中斷後, 執行中斷程式, 需要將對應的 CPRS 儲存到對應模式的 SPRS_xxx 寄存器中, 如當前在 scv 模式中斷, 將狀態寄存器儲存到 SPSR_svc 寄存器中, 中斷執行完後, 將狀態從 SPSR_svc 中寫回到 CPRS 寄存器中;



(2) CPSR 寄存器位簡介


CRSR 寄存器簡介

-- 圖示


-- N 位 : 兩個數a 和 b比較, 即做減法 (a-b), 如果 a < b, 減法結果是負數, N = 1; 如果 a >= b, 減法結果是正數或0, N = 0; 

-- Z 位 : 兩個數進行比較, 只有兩個數相等時 Z = 1;

-- I 位 : I = 1 時不能產生中斷;

-- F 位 : F = 1 時不能產生快速中斷;

-- M 位 : 佔了 5 個位 0 ~ 4, 主要用於標明處理器模式, 可以讀模數式 和 設定模式, 如 : 






四. ARM 定址方式


對應手冊 : ARM Architecture Reference Manual.pdf 手冊, 在本部落格中提供下載;

-- 章節內容 : Programmers’ Model, A2.3 Page 42;

-- 手冊 : http://download.csdn.net/detail/han1202012/8324641


定址方式 : 處理器根據指令給出的資訊找到指令的運算元;



1. 立即數定址


立即數定址簡介

-- 定址過程 : 運算元本身就在指令中給出, 取出指令同時也可以擷取運算元; 

-- 運算元 : 指令中取出的運算元就是立即數;

-- 定址方式 : 這種從指令中取出立即數的方式就是立即數定址;


立即數定址樣本

-- 樣本 : ADD R0, R0, #0x3F; 

-- 解析 : 將 R0 + #0x3F 相加, 結果放入到 R0 中;


立即數定址要求 : 第二個源運算元以 "#" 為尾碼;



2. 寄存器定址

寄存器定址簡介 : 利用寄存器中的數值作為運算元;

-- 樣本 : ADD R0, R1, R2;

-- 樣本解析 : 將 R1 和 R2 寄存器中的數字相加, 結果存放到 R0 中;



3. 寄存器間接定址

寄存器間接定址簡介 : 寄存器中存放的運算元在記憶體中, 寄存器存放記憶體的地址;

-- 樣本 : LDR R0, [R2];

-- 樣本解析 : 寄存器 R2 中存放的是 運算元的記憶體位址, 從記憶體中取出運算元存入 R0 中;



4. 基址變址定址

基址變址定址簡介

-- 基底位址暫存器 : 寄存器中存放一個基地址;

-- 位移量 : 指令中給出一個位移量, 與基底位址暫存器放在一個中括弧號中;

-- 樣本 : LDR R0, [R1. #4];

-- 樣本解析 : 從 R1 中取出地址, 然後 該地址 加上 4, 從 相加後的地址中取出資料;



5. 相對定址

相對定址簡介 : PC 指標當前值為基地址, 指令中地址標號是位移量, 兩者相加後是有效地址;

-- 樣本 : BL NEXT 時會跳轉到 NEXT 處執行, 執行完後會返回到原程式處;

BL NEXT ;跳轉到 NEXT 處執行

... ...

NEXT

... ...

MOV PC, LR ;從子程式返回



作者 : 韓曙亮

部落格地址 : http://blog.csdn.net/shulianghan/article/details/42375701

相關資源下載 : 

-- 三星 ARM Architecture Reference Manual 文檔 : http://download.csdn.net/detail/han1202012/8324641

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.