做者 : 韓曙亮緩存
博客地址 : http://blog.csdn.net/shulianghan/article/details/42375701架構
相關資源下載 : 函數
-- 三星 ARM Architecture Reference Manual 文檔 : http://download.csdn.net/detail/han1202012/8324641性能
ARM 分類 : spa
-- ARM 芯片類型 : 6410, 2440, 210;操作系統
-- ARM 核類型 : arm11, arm9, CortexA9;.net
-- 指令架構 : armv7, armv6;指針
芯片 和 核關係 : 芯片包含核; blog
-- 2440 芯片 : 包含 arm9 核; 接口
-- 6410 芯片 : 包含 arm11 核;
-- 210 芯片 : 包含 CortexA8 核;
ARM 核 與 指令架構 關係 :
-- ARM9 : armv4 指令架構;
-- ARM11 : armv6 指令架構;
-- CortextA8 : armv7 指令架構;
發展歷程 : ARM7 --> ARM9 --> ARM11, ARM11 性能最高, ARM7 性能最低;
Cortext 系列 :
-- Cortex-M 系列 : 沒有操做系統, 面向工控領域, 與單片機差很少;
-- Cortex-R 系列 : 面向實時應用, 強調實時性, 能夠運行操做系統;
-- Cortex-A 系列 : 主要面向多媒體應用, 目前多數的智能手機屬於該系列;
性能遞推 : Cortex-M0 --> Cortex-M1 --> Cortex-M3 --> Cortex-M4 --> Cortex-R4 --> Cortex-A5 --> Cortex-A8 --> Cortex-A9 ;
ARM 與 Cortext 對比 :
-- ARM7 : ARM 7 與 Cortext-M3 相似, 都沒有操做系統, 性能上 Cortex-M3 略高, 可是高的有限;
-- ARM9 和 ARM11 : ARM9 和 ARM11 與 Cortex-R4 性能相似, ARM11 不如 Cortex-A5, 遠遠比不上 Cortex-A8 和 Cortex-A9;
-- 6410 : 533MHz ~ 667MHz;
-- 2440 : 12MHz 晶振 對應 405 ~ 532 MHz 處理速度;
-- 210 : 800MHz ~ 1GHz;
芯片緩存對比 : 去芯片對應的芯片手冊;
-- 6410 : 16K 指令緩存, 16K 數據緩存;
-- 2440 : 16K 指令緩存, 16K 數據緩存;
-- 210 : 32KB 指令緩存, 32KB 數據緩存;
-- 2440 : 提供 SDRAM 內存接口;
-- 6410 : 提供了 SDRAM, 也提供了 DDR 內存接口;
-- 210 : 提供了 DDR1 和 DDR2 兩種內存接口;
芯片支持操做系統對比 : 去芯片對應的芯片手冊中查找;
-- 6410 : WinCE | Linux | Android;
-- 2440 : WinCE | Linux;
-- 210 : WinCE | Linux | Android;
芯片商業對比 :
-- 6410 : 繼續使用;
-- 2440 : 三星宣佈停產;
-- 210 : 繼續使用;
對應手冊 : ARM Architecture Reference Manual.pdf 手冊, 在本博客中提供下載;
-- 章節內容 : Programmers’ Model, A2.2 Page 41;
-- 手冊下載地址 : http://download.csdn.net/detail/han1202012/8324641
工做模式圖示 : 圖片截圖自 ARM Architecture Reference Manual.pdf 手冊, Page 41, A2.2 章節;
工做模式介紹 :
-- User 模式 (usr) : 普通應用程序運行的模式;
-- FIQ 模式 (fiq) : 快速中斷模式;
-- IRQ 模式 (irq) : 普通中斷模式;
-- Supervisor 模式 (svc) : 爲操做系統提供的保護模式;
-- Abort 模式 (abt) : 訪問虛擬內存致使異常的模式;
-- Undefined 模式 (und) : 未定義指令模式;
-- System 模式 (sys) : armv4 以上版本纔有該模式;
Linux 系統工做模式 : 系統運行在 usr 模式, 內核運行在 svc 模式;
對應手冊 : ARM Architecture Reference Manual.pdf 手冊, 在本博客中提供下載;
-- 章節內容 : Programmers’ Model, A2.3 Page 42;
-- 手冊下載地址 : http://download.csdn.net/detail/han1202012/8324641
寄存器簡介 :
-- 寄存器個數 : ARM 有 37 個寄存器;
-- 通用寄存器 : 31 個通用寄存器, 程序計數器 也是一個通用寄存器;
-- 狀態寄存器 : 6 個狀態寄存器;
-- 圖示 :
-- 寄存器圖示 : 截圖自 Page 43;
通用寄存器分類 :
-- 不分組寄存器 : R0 ~ R7;
-- 分組寄存器 : R8 ~ R14, 不一樣模式下使用的寄存器都不相同;
-- 程序計數器 : PC 指針, 是 R15;
R13 寄存器 : 一般用來作 SP 堆棧指針;
R14 寄存器 : 一般用來作 連接寄存器;
-- 做用一 : 保存函數返回地址;
-- 做用二 : 異常發生時, 主要用於記錄函數返回地址;
R15 寄存器 : PC 指針, 程序計數器;
狀態寄存器 :
-- 圖示 :
-- 對應各個模式的狀態寄存器 : 當出現中斷後, 執行中斷程序, 須要將對應的 CPRS 保存到對應模式的 SPRS_xxx 寄存器中, 如當前在 scv 模式中斷, 將狀態寄存器保存到 SPSR_svc 寄存器中, 中斷執行完後, 將狀態從 SPSR_svc 中寫回到 CPRS 寄存器中;
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 Architecture Reference Manual.pdf 手冊, 在本博客中提供下載;
-- 章節內容 : Programmers’ Model, A2.3 Page 42;
-- 手冊下載地址 : http://download.csdn.net/detail/han1202012/8324641
尋址方式 : 處理器根據指令給出的信息找到指令的操做數;
-- 尋址過程 : 操做數自己就在指令中給出, 取出指令同時也能夠獲取操做數;
-- 操做數 : 指令中取出的操做數就是當即數;
-- 尋址方式 : 這種從指令中取出當即數的方式就是當即數尋址;
當即數尋址示例 :
-- 示例 : ADD R0, R0, #0x3F;
-- 解析 : 將 R0 + #0x3F 相加, 結果放入到 R0 中;
當即數尋址要求 : 第二個源操做數以 "#" 爲後綴;
寄存器尋址簡介 : 利用寄存器中的數值做爲操做數;
-- 示例 : ADD R0, R1, R2;
-- 示例解析 : 將 R1 和 R2 寄存器中的數字相加, 結果存放到 R0 中;
寄存器間接尋址簡介 : 寄存器中存放的操做數在內存中, 寄存器存放內存的地址;
-- 示例 : LDR R0, [R2];
-- 示例解析 : 寄存器 R2 中存放的是 操做數的內存地址, 從內存中取出操做數存入 R0 中;
基址變址尋址簡介 :
-- 基址寄存器 : 寄存器中存放一個基地址;
-- 偏移量 : 指令中給出一個偏移量, 與基址寄存器放在一箇中括號號中;
-- 示例 : LDR R0, [R1. #4];
-- 示例解析 : 從 R1 中取出地址, 而後 該地址 加上 4, 從 相加後的地址中取出數據;
相對尋址簡介 : 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