国产芯片内核移植常见问题排查指南
📚 共计 30 章节
01
移植前的准备工作
了解国产芯片架构(RISC-V、LoongArch等)、获取芯片手册与数据手册、搭建交叉编译环境、配置TFTP/NFS网络启动环境。
环境搭建
芯片手册
02
Bootloader移植与调试
分析芯片启动流程、配置DDR初始化参数、调试串口输出、解决启动阶段卡死问题。
启动流程
DDR
03
内核早期启动问题排查
解压阶段错误分析、MMU初始化问题、早期串口无法打印、内核恐慌(Kernel Panic)定位。
Kernel Panic
MMU
04
中断控制器(PLIC/APIC)适配
中断控制器驱动框架、设备树中断描述、中断号映射错误排查、中断响应延迟问题。
PLIC
中断映射
05
时钟与定时器驱动
系统节拍时钟(Tick)配置、时钟源选择(clocksource)、高精度定时器(HRTIMER)适配、时钟漂移问题。
HRTIMER
clocksource
06
串口驱动适配
8250/PL011框架选择、设备树中串口节点配置、波特率与流控问题、DMA模式与中断模式切换。
8250
PL011
07
MMC/SD卡驱动移植
SDHCI控制器驱动、设备树MMC节点配置、卡检测与电源管理、高速模式切换失败问题。
SDHCI
高速模式
08
网络控制器驱动(GMAC/EMAC)
PHY芯片适配、MAC与PHY的RGMII时序调试、网络丢包与性能调优、MAC地址随机化问题。
GMAC
RGMII
09
USB控制器驱动(DWC3/EHCI/OHCI)
USB 2.0/3.0控制器初始化、设备枚举失败问题、OTG模式切换、电源管理唤醒问题。
DWC3
OTG
10
PCIe控制器驱动
RC模式与EP模式配置、设备树PCIe节点、MSI中断配置、链路训练失败(Link Training Failure)排查。
PCIe
MSI
11
GPU/显示驱动(DRM框架)
DRM/KMS框架介绍、Framebuffer初始化、显示时序配置、多屏异显问题。
DRM
KMS
12
音频子系统(ALSA)移植
I2S接口配置、Codec驱动适配、DMA音频数据传输、音频失真与延迟问题。
ALSA
I2S
13
SPI与I2C总线驱动
SPI控制器驱动框架、I2C时序与速率配置、设备树中从设备描述、总线锁定与超时问题。
SPI
I2C
14
GPIO与PinCtrl子系统
Pinctrl驱动框架、GPIO号映射、中断触发类型配置、复用功能冲突排查。
Pinctrl
GPIO
15
DMA引擎驱动
DMA控制器初始化、描述符链管理、内存到内存传输问题、DMA与Cache一致性。
DMA
Cache一致性
16
电源管理(PMU/PMIC)
系统休眠与唤醒流程、CPU频率与电压调节(CPUFreq/Coupled)、设备树电源域配置、唤醒源配置错误。
PMU
CPUFreq
17
设备树(Device Tree)编写与调试
设备树语法与绑定规则、中断与时钟属性、设备树覆盖(Overlay)、编译错误与运行时解析失败。
DT
Overlay
18
SMP多核启动与CPU热插拔
启动处理器(BSP)与从处理器(AP)启动流程、CPU核间中断(IPI)、CPU热插拔回调函数、缓存一致性协议。
SMP
热插拔
19
内存管理单元(MMU)与页表
页表层级与粒度、TLB刷新与失效、内存映射(ioremap/remap)、大页内存配置。
MMU
页表
20
文件系统与块设备驱动
块设备请求队列、MTD/NAND Flash驱动、UBIFS文件系统适配、坏块管理与ECC纠错。
UBIFS
NAND
21
实时性增强(PREEMPT_RT)
RT内核配置、自旋锁与互斥锁替换、中断线程化、调度延迟测试(Cyclictest)。
PREEMPT_RT
Cyclictest
22
性能分析与优化(Perf/LatencyTop)
Perf工具使用、CPU利用率分析、中断负载均衡、DMA延迟优化。
Perf
延迟优化
23
安全启动与可信执行环境
安全启动链(Secure Boot)、OTP/efuse配置、TEE(OP-TEE)移植、密钥管理与校验。
Secure Boot
OP-TEE
24
虚拟化支持(KVM/ARM64)
虚拟化扩展使能、GICv3虚拟化中断、IOMMU/SMMU配置、Guest OS启动问题。
KVM
GICv3
25
Crypto引擎驱动
硬件加密加速器适配、设备树Crypto节点、对称/非对称加密测试、随机数生成器(TRNG)问题。
Crypto
TRNG
26
看门狗(Watchdog)与系统监控
看门狗定时器配置、喂狗机制、系统复位原因分析、硬件监控(hwmon)驱动。
Watchdog
hwmon
27
JTAG/SWD调试与Trace
调试接口连接、OpenOCD/GDB配置、硬件断点与数据观察点、指令跟踪(ETM/ITM)。
JTAG
OpenOCD
28
固件更新与AB分区
固件更新流程设计、AB分区切换策略、校验与回滚机制、更新失败恢复。
AB分区
回滚
29
兼容性测试与认证
Linux内核主线兼容性、LTP测试套件运行、POSIX标准符合性、芯片厂商SDK集成。
LTP
兼容性
30
社区协作与补丁提交
内核邮件列表(LKML)使用、补丁格式与提交规范、Review流程、长期维护策略。
LKML
补丁