【嵌入式開發(fā)】ARM 芯片簡介 (ARM芯片類型 | ARM處理器工作模式 | ARM 寄存器 | ARM 尋址)
博客地址 :?http://blog.csdn.net/shulianghan/article/details/42375701
相關(guān)資源下載 :
-- 三星?ARM Architecture Reference Manual 文檔 :?http://download.csdn.net/detail/han1202012/8324641
一. ARM 芯片類型
1. ARM 分類
(1) ARM 分類類型(芯片 | 核 | 指令架構(gòu))
ARM 分類 :
-- ARM 芯片類型 : 6410, 2440, 210;
-- ARM 核類型 : arm11, arm9, CortexA9;
-- 指令架構(gòu) : armv7, armv6;
(2) ARM芯片 與 ARM核 關(guān)系
芯片 和 核關(guān)系 : 芯片包含核;
-- 2440 芯片 : 包含 arm9 核;
-- 6410 芯片 : 包含 arm11 核;
-- 210 芯片 : 包含 CortexA8 核;
(3) ARM核 與 指令架構(gòu) 關(guān)系
ARM 核 與 指令架構(gòu) 關(guān)系 :
-- ARM9 : armv4 指令架構(gòu);
-- ARM11 : armv6 指令架構(gòu);
-- CortextA8 : armv7 指令架構(gòu);
2. ARM 演化變遷
(1) 經(jīng)典陣營
發(fā)展歷程 : ARM7 --> ARM9 --> ARM11, ARM11 性能最高, ARM7 性能最低;
(2) Cortex 陣營
Cortext 系列 :
-- Cortex-M 系列 : 沒有操作系統(tǒng), 面向工控領域, 與單片機差不多;
-- Cortex-R 系列 : 面向?qū)崟r應用, 強調(diào)實時性, 可以運行操作系統(tǒng);
-- Cortex-A 系列 : 主要面向多媒體應用, 目前多數(shù)的智能手機屬于該系列;
性能遞推 : 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 類似, 都沒有操作系統(tǒng), 性能上 Cortex-M3 略高, 但是高的有限;
-- ARM9 和 ARM11 : ARM9 和 ARM11 與 Cortex-R4 性能類似, ARM11 不如 Cortex-A5, 遠遠比不上 Cortex-A8 和?Cortex-A9;
3. 芯片性能對比(處理速度 | 緩存 | 內(nèi)存接口 | OS)
(1) 處理速度對比
-- 6410 : 533MHz ~ 667MHz;
-- 2440 : 12MHz 晶振 對應 405 ~ 532 MHz 處理速度;
-- 210 : 800MHz ~ 1GHz;
(2) 緩存對比
芯片緩存對比 : 去芯片對應的芯片手冊;
-- 6410 :?16K 指令緩存, 16K 數(shù)據(jù)緩存;
-- 2440 :?16K 指令緩存, 16K 數(shù)據(jù)緩存;
-- 210 : 32KB?指令緩存, 32KB 數(shù)據(jù)緩存;
(3) 內(nèi)存接口對比
-- 2440 : 提供 SDRAM 內(nèi)存接口;
-- 6410 : 提供了 SDRAM, 也提供了 DDR 內(nèi)存接口;
-- 210 : 提供了 DDR1 和 DDR2 兩種內(nèi)存接口;
(4) 支持的操作系統(tǒng)
芯片支持操作系統(tǒng)對比?: 去芯片對應的芯片手冊中查找;
--?6410?: WinCE | Linux | Android;
--?2440?: WinCE | Linux;
--?210?: WinCE | Linux | Android;
(5) 其它商業(yè)信息
芯片商業(yè)對比?:
--?6410?: 繼續(xù)使用;
--?2440?: 三星宣布停產(chǎn);
--?210?: 繼續(xù)使用;
二. ARM 工作模式
對應手冊 :?ARM Architecture Reference Manual.pdf 手冊, 在本博客中提供下載;
-- 章節(jié)內(nèi)容 :?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 章節(jié);
(2) ARM 工作模式介紹
工作模式介紹 :
-- User 模式 (usr) : 普通應用程序運行的模式;
-- FIQ 模式 (fiq) : 快速中斷模式;
-- IRQ 模式 (irq) : 普通中斷模式;
-- Supervisor 模式 (svc) : 為操作系統(tǒng)提供的保護模式;
-- Abort 模式 (abt) : 訪問虛擬內(nèi)存導致異常的模式;
-- Undefined 模式 (und) : 未定義指令模式;
-- System 模式 (sys) : armv4 以上版本才有該模式;
Linux 系統(tǒng)工作模式 : 系統(tǒng)運行在 usr 模式, 內(nèi)核運行在 svc 模式;
三. ARM 寄存器
對應手冊?:?ARM Architecture Reference Manual.pdf?手冊, 在本博客中提供下載;
--?章節(jié)內(nèi)容?:?Programmers’ Model, A2.3 Page 42;
--?手冊-?:?http://download.csdn.net/detail/han1202012/8324641
1. 寄存器簡介
寄存器簡介 :
-- 寄存器個數(shù) : ARM 有 37 個寄存器;
-- 通用寄存器 : 31 個通用寄存器, 程序計數(shù)器 也是一個通用寄存器;
-- 狀態(tài)寄存器 : 6 個狀態(tài)寄存器;
-- 圖示 :
-- 寄存器圖示 : 截圖自 Page 43;
2. 通用寄存器
(1) 通用寄存器分類
通用寄存器分類 :
-- 不分組寄存器 : R0 ~ R7;
-- 分組寄存器 : R8 ~ R14, 不同模式下使用的寄存器都不相同;
-- 程序計數(shù)器 : PC 指針, 是 R15;
(2) 常用通用寄存器解析
R13 寄存器 : 通常用來做 SP 堆棧指針;
R14 寄存器 : 通常用來做 鏈接寄存器;
-- 作用一 : 保存函數(shù)返回地址;
-- 作用二 : 異常發(fā)生時, 主要用于記錄函數(shù)返回地址;
R15 寄存器 : PC 指針, 程序計數(shù)器;
3. 狀態(tài)寄存器
(1) 對應各個模式的狀態(tài)寄存器出現(xiàn)原因
狀態(tài)寄存器 :
-- 圖示 :
-- 對應各個模式的狀態(tài)寄存器 : 當出現(xiàn)中斷后, 執(zhí)行中斷程序, 需要將對應的 CPRS 保存到對應模式的 SPRS_xxx 寄存器中, 如當前在 scv 模式中斷, 將狀態(tài)寄存器保存到 SPSR_svc 寄存器中, 中斷執(zhí)行完后, 將狀態(tài)從 SPSR_svc 中寫回到 CPRS 寄存器中;
(2) CPSR 寄存器位簡介
CRSR 寄存器簡介 :
-- 圖示 :
-- N 位 : 兩個數(shù)a 和 b比較, 即做減法 (a-b), 如果 a < b, 減法結(jié)果是負數(shù), N = 1; 如果 a >= b, 減法結(jié)果是正數(shù)或0, N = 0;
-- Z 位 : 兩個數(shù)進行比較, 只有兩個數(shù)相等時 Z = 1;
-- I 位 : I = 1 時不能產(chǎn)生中斷;
-- F 位 : F = 1 時不能產(chǎn)生快速中斷;
-- M 位 : 占了 5 個位 0 ~ 4, 主要用于標明處理器模式, 可以讀取模式 和 設置模式, 如下圖 :
四. ARM 尋址方式
對應手冊?:?ARM Architecture Reference Manual.pdf?手冊, 在本博客中提供下載;
--?章節(jié)內(nèi)容?:?Programmers’ Model, A2.3 Page 42;
--?手冊-?:?http://download.csdn.net/detail/han1202012/8324641
尋址方式 : 處理器根據(jù)指令給出的信息找到指令的操作數(shù);
1. 立即數(shù)尋址
-- 尋址過程 : 操作數(shù)本身就在指令中給出, 取出指令同時也可以獲取操作數(shù);
-- 操作數(shù) : 指令中取出的操作數(shù)就是立即數(shù);
-- 尋址方式 : 這種從指令中取出立即數(shù)的方式就是立即數(shù)尋址;
立即數(shù)尋址示例 :
-- 示例 : ADD R0, R0, #0x3F;
-- 解析 : 將 R0 + #0x3F 相加, 結(jié)果放入到 R0 中;
立即數(shù)尋址要求 : 第二個源操作數(shù)以 "#" 為后綴;
2. 寄存器尋址
寄存器尋址簡介 : 利用寄存器中的數(shù)值作為操作數(shù);
-- 示例 : ADD R0, R1, R2;
-- 示例解析 : 將 R1 和 R2 寄存器中的數(shù)字相加, 結(jié)果存放到 R0 中;
3. 寄存器間接尋址
寄存器間接尋址簡介 : 寄存器中存放的操作數(shù)在內(nèi)存中, 寄存器存放內(nèi)存的地址;
-- 示例 : LDR R0, [R2];
-- 示例解析 : 寄存器 R2 中存放的是 操作數(shù)的內(nèi)存地址, 從內(nèi)存中取出操作數(shù)存入 R0 中;
4. 基址變址尋址
基址變址尋址簡介 :
-- 基址寄存器 : 寄存器中存放一個基地址;
-- 偏移量 : 指令中給出一個偏移量, 與基址寄存器放在一個中括號號中;
-- 示例 : LDR R0, [R1. #4];
-- 示例解析 : 從 R1 中取出地址, 然后 該地址 加上 4, 從 相加后的地址中取出數(shù)據(jù);
5. 相對尋址
相對尋址簡介 : PC 指針當前值為基地址, 指令中地址標號是偏移量, 兩者相加后是有效地址;
-- 示例 : BL NEXT 時會跳轉(zhuǎn)到 NEXT 處執(zhí)行, 執(zhí)行完后會返回到原程序處;
BL NEXT ;跳轉(zhuǎn)到 NEXT 處執(zhí)行
... ...
NEXT
... ...
MOV PC, LR ;從子程序返回
博客地址?:?http://blog.csdn.net/shulianghan/article/details/42375701
相關(guān)資源下載?:
--?三星?ARM Architecture Reference Manual 文檔?:?http://download.csdn.net/detail/han1202012/8324641
ARM 單片機 嵌入式
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔相應法律責任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔相應法律責任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。