延续《[RK-Linux] 从主线U-Boot移植PCIe及其PHY驱动到RK3399 U-Boot


启动流程:

maskrom -> loader(从 eMMC 存储器加载) -> u-boot(从 eMMC 存储器加载)-> kernel (从 M.2 NVMe SSD 加载)-> rootfs (从 M.2 NVMe SSD 挂载)

配置从 M.2 NVMe SSD 启动:

CONFIG_ROCKCHIP_BOOTDEV="nvme 0"

重新编译烧录到 eMMC,启动日志报错:

DM: v1
failed to get refclk clock phandle
failed to get pcie-phy (ret=-22)
dwmmc@fe320000: 1, sdhci@fe330000: 0
Bootdev(atags): mmc 0
MMC0: HS400, 150Mhz
PartType: EFI
No misc partition
boot mode: normal
Found DTB in boot part
DTB: rk-kernel.dtb
HASH(c): OK

提示 PCIe 时钟及其 PHY 初始化失败了,但是调试的时候在命令行用 pci enumnvme scan 是可以识别的。

这是因为后面加载内核设备树之后,驱动初始化成功了。但是在加载内核设备树之前是使用 u-boot 设备树来初始化的。

12-22 16:05