1. ARM平台概述
ARM架构自1983年由Acorn Computers公司启动研发以来,已发展成为全球嵌入式系统与移动计算领域最广泛使用的指令集架构。本章从架构演进、产品线划分、主流SoC厂商三个维度,为后续内核移植与设备树配置实战建立必要的硬件认知基础。
1.1 ARM架构发展史
ARM架构经历了从v1到v9的多次重大迭代,每一次版本升级都引入了关键的指令集扩展与微架构改进。下表梳理了主要架构版本及其里程碑特性:
| 架构版本 | 发布年份 | 代表性核心 | 关键特性 |
|---|---|---|---|
| ARMv1 | 1985 | ARM1 | 26位地址总线,基础RISC指令集 |
| ARMv4T | 1995 | ARM7TDMI | 引入Thumb 16位指令集,降低代码密度 |
| ARMv5TE | 1999 | ARM926EJ-S | 增强DSP指令,Jazelle Java加速 |
| ARMv6 | 2001 | ARM1136J(F)-S | SIMD指令,多处理器支持 |
| ARMv7-A | 2005 | Cortex-A8/A9/A15 | NEON SIMD引擎,VFPv3,多核一致性 |
| ARMv8-A | 2011 | Cortex-A53/A72 | 64位AArch64,AArch32兼容模式 |
| ARMv9-A | 2021 | Cortex-X2/A710 | 机密计算架构(CCA),SVE2向量扩展 |
内核移植关键点: ARMv7-A是当前工业级嵌入式Linux移植最成熟的基线版本,支持大物理地址扩展(LPAE)和通用中断控制器(GIC v2)。ARMv8-A引入的64位模式要求设备树中必须正确配置compatible属性以匹配arm64内核。
下图展示了ARM架构从32位到64位演进的核心技术路线:
1.2 Cortex-A/R/M系列区别
ARM Cortex处理器分为三大产品线,分别面向应用处理、实时控制与微控制器场景。三者在流水线深度、内存管理单元(MMU/MPU)、中断响应时间等维度存在本质差异,直接影响内核移植策略。
| 特性 | Cortex-A (Application) | Cortex-R (Real-time) | Cortex-M (Microcontroller) |
|---|---|---|---|
| 典型核心 | A53, A72, A76 | R4, R5, R52 | M0+, M3, M4, M7 |
| 内存保护 | MMU (虚拟内存) | MPU (内存保护) | MPU (可选) |
| 操作系统 | Linux, Android | FreeRTOS, VxWorks | RTOS, 裸机 |
| 中断延迟 | > 100 周期 | < 20 周期 | < 12 周期 |
| 缓存层级 | L1/L2/L3 | L1 紧耦合 | L0/L1 可选 |
| 多核支持 | 1~8 核集群 | 双核锁步 | 单核为主 |
| 设备树需求 | 必需 | 可选 (裸机) | 通常不使用 |
实战提示: 本课程聚焦Cortex-A系列,因为Linux内核完整运行需要MMU支持虚拟地址映射。Cortex-R/M系列通常运行RTOS或裸机程序,不涉及设备树与内核移植流程。
下图对比了三大系列在系统架构层面的关键差异:
1.3 常见ARM SoC厂商介绍
全球ARM SoC生态由多家厂商主导,不同厂商在IP集成、外设设计、BSP维护策略上各有特色。以下四家厂商是嵌入式Linux移植实战中最常遇到的平台供应商。
1.3.1 TI (德州仪器)
TI的Sitara系列AM335x/AM437x是工业控制与物联网网关的经典选择。AM335x基于Cortex-A8单核,内置PRU-ICSS可编程实时单元,支持EtherCAT、PROFINET等工业以太网协议。TI提供Processor SDK Linux,设备树文件位于arch/arm/boot/dts/am33xx.dtsi。
设备树特征: TI平台使用ti,am33xx兼容字符串,时钟管理通过clkctrl模块描述,DMA控制器采用ti,edma3绑定。
1.3.2 NXP (恩智浦)
NXP的i.MX系列覆盖从Cortex-A7到Cortex-A72的广泛产品线。i.MX6UL/ULL是低功耗入门首选,i.MX8M Plus集成NPU用于边缘AI推理。NXP的BSP基于Yocto Project,设备树采用fsl,imx6ul等兼容字符串,电源管理单元(PMU)描述在imx6ul-pm.dtsi中。
1.3.3 Rockchip (瑞芯微)
Rockchip在多媒体与AIoT领域占据重要地位,RK3399 (双Cortex-A72 + 四Cortex-A53) 是典型的大小核架构。Rockchip的设备树采用rockchip,rk3399兼容字符串,GRF (通用寄存器文件) 用于描述系统控制寄存器映射。内核主线支持较好,设备树文件位于arch/arm64/boot/dts/rockchip/。
1.3.4 Allwinner (全志)
Allwinner以高性价比的H3/V3s系列在开源社区中广受欢迎。H3为四核Cortex-A7,V3s为单核Cortex-A7并内置64MB DDR2。Allwinner平台使用allwinner,sun8i兼容字符串,时钟与复位控制器通过ccu (Clock Control Unit) 节点描述。主线Linux支持完善,设备树文件位于arch/arm/boot/dts/sun8i-h3.dtsi。
下表汇总了四家厂商的典型SoC与设备树关键信息:
| 厂商 | 典型SoC | CPU核心 | 设备树前缀 | BSP维护方式 |
|---|---|---|---|---|
| TI | AM335x, AM437x | Cortex-A8 | am33xx, am437x | Processor SDK |
| NXP | i.MX6UL, i.MX8M Plus | Cortex-A7, A72 | imx6ul, imx8mp | Yocto / LF BSP |
| Rockchip | RK3399, RK3568 | A72+A53, A55 | rk3399, rk3568 | 主线Linux + vendor SDK |
| Allwinner | H3, V3s, A64 | Cortex-A7, A53 | sun8i-h3, sun50i-a64 | 主线Linux |
下图展示了四家厂商SoC在典型嵌入式Linux系统中的软件栈层次:
移植注意事项: 不同厂商的设备树绑定(binding)差异较大,例如TI使用ti,hwmods进行IP复位控制,而Rockchip使用rockchip,grf寄存器映射。在移植内核时,必须确认设备树中的compatible字符串与内核驱动匹配表完全一致,否则驱动无法加载。