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架构下 各微架构的不同

你可能感兴趣的:(杂七杂八总览,ARM,ARMv6,ARMv7,架构,指令集架构)