跳转至

00 总览与学习路线

推荐学习主线

SoC 总体架构
  → CPU 如何执行
  → Cache/内存如何保存数据
  → MMU 如何转换地址
  → 总线/NoC 如何传输事务
  → DMA 如何搬运数据并保持一致性
  → 多核与异构核如何交换数据、通知和恢复
  → 中断/时钟/电源如何控制系统运行
  → 外设如何与外部世界通信
  → Boot/BSP/OS 如何把硬件变为可用系统
  → 如何调试故障并分析性能

建议先完成模块 01,再根据工作方向进入 CPU/OS 主线、外设/驱动主线或芯片/验证主线。

三条阅读路线

Linux、BSP 与驱动

01 总体架构 → 04 MMU → 07 中断/时钟/电源
→ 09 Boot/BSP/OS → 11 核间通信 → 08 外设 → 06 DMA → 10 调试

这条路线先建立操作系统依赖,再进入具体驱动。编写高速设备驱动前,应先掌握 DMA 所有权、IOMMU 和中断路径。

CPU、内存与性能

01 总体架构 → 02 CPU → 03 Cache/DDR
→ 04 MMU → 05 NoC → 11 核间通信 → 10 性能

这条路线围绕一条 Load/Store 展开:指令怎样发出、地址怎样转换、Cache 怎样命中、请求怎样经过 NoC 并最终到达 DDR。

外设与芯片 Bring-up

01 总体架构 → 07 Clock/Reset/Power → 05 总线
→ 08 外设 → 06 DMA → 11 核间通信 → 09 启动 → 10 调试

这条路线适合新板点亮。先验证模块生存条件和 MMIO,再逐步增加 IRQ、DMA 与高性能模式。

贯穿全库的五条路径

  • CPU 读取 DDR:02 → 04 → 03 → 05。
  • 网卡接收数据:08 → 06 → 05 → 03 → 07。
  • 系统冷启动:01 → 09 → 07 → 03。
  • 外设 Runtime PM:08 → 07 → 05 → 09。
  • 异构核消息:02 → 03 → 05 → 07 → 11 → 09。
  • 性能下降定位:10 → 02/03/05,再回到具体设备。

阅读任何章节时,都可以用四个问题检查理解:访问由谁发起,地址如何解释,数据在哪里发生变化,完成如何通知。答案必须落到具体寄存器、状态或计数器,才算形成可调试的系统模型。