市场
应用领域
- 嵌入式
市占率
常见产品
架构
- 架构整体综述
编程模型
运行状态
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
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架构下 各微架构的不同
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/200579.html原文链接:https://javaforall.net
