1. ARM平台概述

ARM架构自1983年由Acorn Computers公司启动研发以来,已发展成为全球嵌入式系统与移动计算领域最广泛使用的指令集架构。本章从架构演进、产品线划分、主流SoC厂商三个维度,为后续内核移植与设备树配置实战建立必要的硬件认知基础。

1.1 ARM架构发展史

ARM架构经历了从v1到v9的多次重大迭代,每一次版本升级都引入了关键的指令集扩展与微架构改进。下表梳理了主要架构版本及其里程碑特性:

架构版本发布年份代表性核心关键特性
ARMv11985ARM126位地址总线,基础RISC指令集
ARMv4T1995ARM7TDMI引入Thumb 16位指令集,降低代码密度
ARMv5TE1999ARM926EJ-S增强DSP指令,Jazelle Java加速
ARMv62001ARM1136J(F)-SSIMD指令,多处理器支持
ARMv7-A2005Cortex-A8/A9/A15NEON SIMD引擎,VFPv3,多核一致性
ARMv8-A2011Cortex-A53/A7264位AArch64,AArch32兼容模式
ARMv9-A2021Cortex-X2/A710机密计算架构(CCA),SVE2向量扩展

内核移植关键点: ARMv7-A是当前工业级嵌入式Linux移植最成熟的基线版本,支持大物理地址扩展(LPAE)和通用中断控制器(GIC v2)。ARMv8-A引入的64位模式要求设备树中必须正确配置compatible属性以匹配arm64内核。

下图展示了ARM架构从32位到64位演进的核心技术路线:

ARM架构演进路线图 ARMv4T ~ ARMv6 (32位) ARMv7-A (32位 + LPAE) ARMv8-A (32/64位兼容) ARMv8-A 纯64位 ARMv9-A (SVE2 + CCA) 移植策略建议 ARMv7-A平台:使用 multi_v7_defconfig + 设备树 ARMv8-A平台:使用 defconfig + 64位设备树

1.2 Cortex-A/R/M系列区别

ARM Cortex处理器分为三大产品线,分别面向应用处理、实时控制与微控制器场景。三者在流水线深度、内存管理单元(MMU/MPU)、中断响应时间等维度存在本质差异,直接影响内核移植策略。

特性Cortex-A (Application)Cortex-R (Real-time)Cortex-M (Microcontroller)
典型核心A53, A72, A76R4, R5, R52M0+, M3, M4, M7
内存保护MMU (虚拟内存)MPU (内存保护)MPU (可选)
操作系统Linux, AndroidFreeRTOS, VxWorksRTOS, 裸机
中断延迟> 100 周期< 20 周期< 12 周期
缓存层级L1/L2/L3L1 紧耦合L0/L1 可选
多核支持1~8 核集群双核锁步单核为主
设备树需求必需可选 (裸机)通常不使用

实战提示: 本课程聚焦Cortex-A系列,因为Linux内核完整运行需要MMU支持虚拟地址映射。Cortex-R/M系列通常运行RTOS或裸机程序,不涉及设备树与内核移植流程。

下图对比了三大系列在系统架构层面的关键差异:

Cortex-A / R / M 架构对比 Cortex-A 应用处理器 MMU + 多级缓存 GIC v2/v3 中断控制器 Linux / Android 设备树必需 Cortex-R 实时处理器 MPU (无MMU) 紧耦合内存 (TCM) FreeRTOS / VxWorks 设备树可选 Cortex-M 微控制器 NVIC 中断控制器 单周期I/O访问 裸机 / 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与设备树关键信息:

厂商典型SoCCPU核心设备树前缀BSP维护方式
TIAM335x, AM437xCortex-A8am33xx, am437xProcessor SDK
NXPi.MX6UL, i.MX8M PlusCortex-A7, A72imx6ul, imx8mpYocto / LF BSP
RockchipRK3399, RK3568A72+A53, A55rk3399, rk3568主线Linux + vendor SDK
AllwinnerH3, V3s, A64Cortex-A7, A53sun8i-h3, sun50i-a64主线Linux

下图展示了四家厂商SoC在典型嵌入式Linux系统中的软件栈层次:

ARM SoC 软件栈层次 (以Linux为例) 用户空间应用程序 / 中间件 Linux 内核 (进程调度 / 内存管理 / 网络栈) 设备驱动 (I2C / SPI / UART / MMC / Ethernet) 设备树 (DTS/DTB) — 硬件描述层 SoC 硬件 (Cortex-A + 外设IP) TI AM335x | NXP i.MX6UL | Rockchip RK3399 | Allwinner H3

移植注意事项: 不同厂商的设备树绑定(binding)差异较大,例如TI使用ti,hwmods进行IP复位控制,而Rockchip使用rockchip,grf寄存器映射。在移植内核时,必须确认设备树中的compatible字符串与内核驱动匹配表完全一致,否则驱动无法加载。

1.4 本章小结