ARMv6 ARMv7 架构 整体介绍

ARMv6 ARMv7 架构 整体介绍文章目录市场应用领域市占率常见产品架构编程模型运行状态指令集寄存器非特权级别 usr 模式 下不建议访问的指令与寄存器 ABI 异常模型特权级异常种类内存模型 VMSA amp MMU 内存顺序模型 cache 默认内存一致性模型 debug 模型 ExternalDebu hostedDebugT 模型虚拟化模型安全模型开发工具 gcctoolchain amp gdbqemu 常见开发环境 除 qemu 外 软件开发裸机 baremetal RTOSLinuxboo 架构相关代码通用知识 如何新增

市场

应用领域

  • 嵌入式

市占率

常见产品

架构

  • 架构整体综述

编程模型

运行状态
armv6/v7 有两种执行状态,arm和thumb。 //cpsr 的 T // 0:arm // 1:thumb // 应该reset 是 arm 状态 // 异常时,cpsr 中的 T 被置位 0 , 也就是 进入arm state 
指令集
寄存器
  • 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

debug模型

  • debug总述
  • arm debug实现:coregisht
  • coresight 组件
External 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

(0)
上一篇 2026年3月20日 上午10:31
下一篇 2026年3月20日 上午10:31


相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号