2. AM62x硬件架构

AM62x 是 TI Sitara 系列中面向工业 HMI、边缘网关、车载仪表与低成本视觉终端的异构多核处理器。理解其硬件架构,是后续 BSP 移植、设备树编写、驱动调试与低功耗设计的基础。本节从核心组成、内存映射、外设子系统、电源与时钟管理四个维度展开,帮助建立“从芯片到板级”的整体认知。

一、异构双域核心:Cortex-A53 与 Cortex-M4F

AM62x 内部并非单一 CPU,而是由两个功能定位不同的处理域构成:主域(Main Domain)与 MCU 域(MCU Domain)。主域集成 1~4 个 ARM Cortex-A53 核心,运行 Linux/RTOS 等富操作系统;MCU 域集成 1 个 ARM Cortex-M4F 核心,带 FPU,通常运行 TI-RTOS、FreeRTOS 或裸机固件,承担实时控制、安全监控与低功耗唤醒任务。

  • Cortex-A53:64 位 ARMv8-A 架构,支持 AArch64/AArch32,具备 MMU、NEON、L1/L2 Cache,主频典型 1.4GHz,负责应用层、网络协议栈、图形与文件系统。
  • Cortex-M4F:32 位 ARMv7-M 架构,带单精度 FPU 与 NVIC,主频典型 400MHz,负责电机控制、传感器采集、看门狗、电源状态机与 A53 的启动/复位管理。
  • 域间通信:通过 IPC(Inter-Processor Communication)与共享内存交互,Linux 侧常用 RPMsg/remoteproc 框架,MCU 侧使用 IPC Notify 或 Mailbox 中断。
BSP 开发中,A53 与 M4F 的固件通常分开构建:A53 侧由 U-Boot + Linux 内核组成,M4F 侧由 MCU+ SDK 生成 .out 或 .bin,再由 A53 侧 remoteproc 加载。

二、内存映射:从地址空间看芯片资源

AM62x 采用统一物理地址映射,A53 与 M4F 看到的外设基址基本一致,但访问权限与缓存属性不同。理解内存映射,能快速定位寄存器、DDR、共享内存与外设的位置。

地址区间区域名称典型用途
0x0000_0000 – 0x0007_FFFFMCU域 SRAM / ROMM4F 启动、中断向量、IPC 共享
0x0280_0000 – 0x02FF_FFFF主域 SRAMA53 早期启动、ATF、OP-TEE
0x8000_0000 – 0xFFFF_FFFFDDR4/LPDDR4Linux 内核、根文件系统、应用
0x0010_0000 – 0x001F_FFFF外设寄存器区UART、I2C、SPI、GPIO、eMMC
0x0B00_0000 – 0x0BFF_FFFFIPC 共享内存A53 与 M4F 数据交换

在设备树中,外设节点通过 reg = <0x00100000 0x1000>; 描述基址与长度,内核据此建立 ioremap 映射。若地址写错,驱动会读取到错误寄存器,表现为“设备无响应”或“超时”。

三、外设子系统:按功能域划分

AM62x 的外设可归为连接、存储、显示、控制与安全五类。BSP 开发中最常接触的是连接类与存储类。

  • 连接类:UART(调试串口)、I2C(PMIC、EEPROM)、SPI(Flash、ADC)、CAN-FD(工业总线)、USB、以太网 CPSW3G。
  • 存储类:eMMC/SD、OSPI/QSPI Flash、DDR 控制器。
  • 显示类:Display Subsystem(DSS)、DPI/OLDI 输出、GPU(部分型号)。
  • 控制类:EPWM、ECAP、ADC、GPIO、Timer。
  • 安全类:DMSC(Device Management and Security Controller)、SA2UL 加密加速、Firewall。

其中 DMSC 是 AM62x 的关键模块,负责电源、时钟、复位与安全启动。A53 不能直接配置部分外设,必须通过 SYSFW(System Firmware)与 DMSC 通信,这也是 TI K3 架构的典型特征。

四、电源与时钟管理

AM62x 的电源管理由 PMIC(如 TPS65219)与 DMSC 协同完成。主要电源域包括:主域、MCU 域、DDR 域、唤醒域。时钟树则由主 PLL、外设 PLL 与分频器构成,常见时钟源为 25MHz 晶振。

# 查看 Linux 侧时钟树
cat /sys/kernel/debug/clk/clk_summary

# 查看电源域状态
cat /sys/kernel/debug/pm_genpd/pm_genpd_summary

# 设备树中配置 UART 时钟
&uart0 {
    status = "okay";
    clocks = <&k3_uart0_clk>;
    clock-names = "fclk";
};

低功耗场景下,A53 可进入 CPU Idle 或 Suspend,M4F 可保持运行以响应唤醒事件。BSP 需正确配置 wakeup-source 与 PMIC 中断,否则系统无法从低功耗状态恢复。

常见误区:直接修改外设寄存器而不经过 DMSC,可能导致电源域未上电、时钟未使能,表现为读写全为 0 或总线挂死。应优先使用内核时钟与电源框架。

五、案例:从串口日志判断架构问题

假设板卡启动时 UART0 无输出。排查顺序应为:先确认 MCU 域是否释放 A53 复位,再检查 DDR 是否初始化成功,最后确认 UART 时钟与引脚复用。若 U-Boot SPL 阶段有输出而内核阶段中断,则问题多在内核设备树或时钟配置,而非硬件架构。

AM62x 硬件架构总览 主域 + MCU域 + DMSC + 内存 + 外设 + 电源时钟 Cortex-A53 ×1~4 ARMv8-A / 64位 / MMU Linux / U-Boot / 应用 主频 1.4GHz Cortex-M4F ×1 ARMv7-M / 32位 / FPU RTOS / 裸机 / 实时控制 主频 400MHz IPC / Mailbox / RPMsg DMSC + SYSFW 电源 / 时钟 / 复位 / 安全启动 内存映射 DDR 0x8000_0000 SRAM / IPC 共享区 外设寄存器 0x0010_0000 设备树 reg 描述 外设子系统 UART / I2C / SPI / CAN-FD eMMC / OSPI / CPSW3G EPWM / ADC / GPIO SA2UL / Firewall 电源与时钟管理 PMIC TPS65219 / 主域 / MCU域 主 PLL / 外设 PLL / 分频器 CPU Idle / Suspend / 唤醒源 clk_summary / pm_genpd 主域 存储 MCU域 外设

综上,AM62x 的 BSP 开发必须同时理解 A53 与 M4F 的分工、物理地址布局、外设归属以及 DMSC 对电源时钟的集中管控。只有把“核、址、外设、电钟”四条线串起来,才能在设备树、驱动与低功耗调试中快速定位问题。