ARMv6 ARMv7 架构 整体介绍
文章目錄
- 市場
- 應用領域
- 市占率
- 常見產品
- 架構
- 編程模型
- 運行狀態
- 指令集
- 寄存器
- 非特權級別(usr模式)下不建議訪問的指令與寄存器
- ABI
- 異常模型
- 特權級
- 異常種類
- 內存模型
- VMSA&MMU
- 內存一致性
- cache
- debug模型
- External Debug
- Self-hosted Debug
- Trace
- boot模型
- 虛擬化模型
- 安全模型
- 開發工具
- gcc toolchain & gdb
- qemu
- 常見開發環境(除qemu外)
- 軟件開發
- 裸機(baremetal)
- RTOS
- Linux
- arm32-linux鏡像
- arm32-linux boot 符號
- debug
- boot
- boot時的內存管理
- 架構相關代碼
- 通用知識:如何新增一個架構
- 微架構
市場
應用領域
- 嵌入式
市占率
常見產品
架構
- 架構整體綜述
編程模型
運行狀態
armv6/v7 有兩種執行狀態,arm和thumb。//cpsr 的 T// 0:arm// 1:thumb// 應該reset 是 arm 狀態// 異常時,cpsr 中的 T 被置位 0 , 也就是 進入arm state指令集
- ARM&THUMB&VFP&SIMD指令集
- ARMv7/ARMv8/RV32/RV64指令集及寄存器對比
寄存器
- R0-R7 R8-R12 R13-R15 及其BANK寄存器
- CPSR
- SPSR 及其BANK寄存器
- CP15寄存器
非特權級別(usr模式)下不建議訪問的指令與寄存器
// 指令集 mcr/mrc cdp/ldc/stc mcrr/mrrc // 寄存器 協處理器寄存器ABI
- arm abi : ATPCS
- ARM 匯編 調用約定ABI與匯編語法
異常模型
特權級
-
7種處理器模式(SVC/ABT/UND/IRQ/FIQ & USR/SYSTEM)
-
兩種特權模式(usr模式非特權,其他6種模式特權)
異常種類
-
7種異常(reset/swi/data abort/prefetch abort/und/irq/fiq)
-
7種異常對應的5種處理器模式SVC/ABT/UND/IRQ/FIQ
-
(二) 5.1 硬件 內存訪問異常
內存模型
- 內存模型總覽
- 總覽2
VMSA&MMU
-
(一) 內存管理發展歷史及進程地址空間抽象
-
(二) 2.1硬件 MMU及其運行過程 總覽
-
(二) 2.2 硬件 MMU及其運行過程 關鍵過程一 TLB
-
(二) 2.3 硬件 MMU及其運行過程 關鍵過程二 translation table walk
-
(二) 2.4 硬件 MMU及其運行過程 關鍵過程三 cache
-
(二) 2.5 硬件 MMU及其運行過程 關鍵過程四 DDR
-
arm-linux 內存管理之一級頁表及二級頁表
-
MMU運行過程中可能產生的異常
-
(二) 2.6 硬件 MMU的操作手冊
-
(二) 3.1 硬件 CP15系統控制協處理器的操作手冊
-
(二) 3.2 硬件 CP15系統控制協處理器的寄存器描述
內存一致性
- 內存一致性:A.緩存一致性 B.原子性 C.memory order(一致性模型)
- 緩存一致性
- 原子性
- memory order : 亂序和屏障1 : 總覽 及 編譯器內存屏障
- memory order : 亂序和屏障2 : UP單核需要處理的CPU亂序問題
- memory order : (二) 4.2 硬件 SMP-Consistency之內存順序模型1
cache
-
高速緩存與一致性專欄索引
-
(二) 6.1 硬件 CACHE/WRITE BUFFER/TCM
-
cache 概念詳解 & PoC & PoU & inner/outer cache
debug模型
- debug總述
- arm debug實現:coregisht
- coresight 組件
External Debug
- 通用知識 : JTAG的狀態機&JTAG的TAP
- 通用知識 : JTAG狀態機 的封裝 : IR SCAN & DR SCAN
- 基于JTAG的 芯片DEBUG 文章整理
Self-hosted Debug
- BKPT指令及其異常處理
Trace
- ARM coresight 中的 trace數據輸出源(DWT/ITM/ETM) & trace 數據interface TPIU(SWO/CLK_DATA)
boot模型
-
ARMv7 boot
-
嵌入式啟動順序 - uboot之前
-
嵌入式啟動順序 - uboot
虛擬化模型
- ARMv7 Virtualization硬件實現
- armv7 虛擬化軟件:KVM
安全模型
- 通用知識: 安全硬件實現及軟件實現
開發工具
gcc toolchain & gdb
- 交叉編譯工具鏈的獲取
- 我們能從一個ARM32編譯器獲取什么信息
- GDB 常用命令
qemu
-
qemu中的 Arm System emulator
-
qemu-system-arm中的virt開發板
-
編譯qemu
常見開發環境(除qemu外)
- 開發環境
- 內核和文件系統的燒寫和啟動配置
軟件開發
裸機(baremetal)
- qemu armv7 裸機開發
- ARMv7/ARMv8/RV32/RV64裸機編程中的區別
- 兼容ARMv7/ARMv8/RV32/RV64的一個裸機qemu工程
RTOS
Linux
arm32-linux鏡像
- 各個鏡像解讀1&解讀2
- 各個鏡像執行結果
- uImage鏡像或zImage被加載
- 一般不會直接加載 Image,如果想要直接加載Image,參考這里
arm32-linux boot 符號
-
uImage的入口符號
-
zImage的符號
-
Image中的符號
-
arm32-linux boot 符號總覽
debug
- gdb調試qemu virt板 arm32 linux 各個過程
boot
- uboot引導內核 Load Address Entry Point
- uImage 的 入口符號地址
- 內核鏡像解析
- 內核啟動流程
boot時的內存管理
- RISC 架構 linux boot 臨時頁表 對比 ARM32 ARM64 RV32 RV64
架構相關代碼
-
arch/arm中的目錄
-
linux arch 提供的函數與宏
-
arch/arm中的頁表 相關函數
通用知識:如何新增一個架構
- linux移植需要考慮什么
- 將 Linux 移植到新的處理器架構,第 1 部分:基礎前言
- 將 Linux 移植到新的處理器架構,第 2 部分:早期代碼
- 將 Linux 移植到新的處理器架構,第 3 部分:收尾
微架構
- 通用知識:cpu微架構解讀
- arm32 下的 cortex-a7/cortex-a8/cortex-a9/cortex-a15/cortex-a17
- ARMv6架構下 各微架構的不同
總結
以上是生活随笔為你收集整理的ARMv6 ARMv7 架构 整体介绍的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: VS各版本下载
- 下一篇: mt950报文解析_MT700报文升级内