环境
-
开发板: 【正点原子】 的 RK3568 开发板 ATK-DLRK3568
-
u-boot 版本:来自 【正点原子】 的 RK3568 开发板 Linux SDK,单独复制出来一份,手动编译
-
编译环境:VMware 虚拟机 ubuntu 20.04
问题描述
- RK3568 默认 u-boot 的 SPL 有个启动次序,比如 MMC2 -> MMC1,而开发板是 MMC1,所以是否可以更改这个次序,这样就不会产生 MMC2 启动报错的信息
-
也就是想去掉 MMC2 启动失败的信息,直接优先从 MMC1 启动
-
查看启动 的 MMC 信息:启动时
CTRL+C
进入 u-boot 的控制台,然后输入mmc info
=> mmc info
Device: sdhci@fe310000
Manufacturer ID: d6
OEM: 103
Name: A3A56
Timing Interface: HS200
Tran Speed: 200000000
Rd Block Len: 512
MMC version 5.1
High Capacity: Yes
Capacity: 57.6 GiB
Bus Width: 8-bit
Erase Group Size: 512 KiB
HC WP Group Size: 8 MiB
User Capacity: 57.6 GiB WRREL
Boot Capacity: 4 MiB ENH
RPMB Capacity: 16 MiB ENH
- 这里的MMC1 或者 MMC2,可以通过具体的设备树节点信息获取到,比如 mmc info 中的
Device: sdhci@fe310000
,可以在 u-boot 中 搜索sdhci@fe310000
,找到启动的 emmc 设备,当前别名是:
sdhci
修改启动的次序
- 修改设备树
arch/arm/dts/rk3568-u-boot.dtsi
,chosen
节点,把启动的 emmc 设备放在最前面,这里使用&sdhci
chosen {
stdout-path = &uart2;
u-boot,spl-boot-order = &sdhci, &sdmmc0, &nandc0, &spi_nand, &spi_nor;
};
-
重新编译 u-boot 及 u-boot spl,使用 u-boot 下的
./make.sh --spl
可以更新新的u-boot spl
,这样启动信息中发现,优先从 MMC1 启动,不再打印 MMC2 的报错信息。 -
应该可以加快一下启动的速度。
单独编译 rk3568 u-boot
-
首先需要获取 配置文件 defconfig 与 设备树,当前 【正点原子】 的 RK3568 开发板 ATK-DLRK3568 默认的 设备树文件使用
arch/arm/dts/rk3568-evb.dts
-
配置文件 defconfig 的生成,我的做法是 :重新编译过 Linux SDK 后,会在 u-boot 目录下产生
.config
,设置一下交叉编译工具链的路径,然后使用:
make ARCH=arm CROSS_COMPILE=aarch64-linux-gnu- savedefconfig
生成默认文件 defconfig
-
然后复制 defconfig 到 configs 目录下,比如
cp defconfig configs/atk_dlrk3568_defconfig
-
编译方法:使用
./make.sh atk_dlrk3568
,需要先更改编译脚本的make.sh
中gcc 交叉编译工具链的路径
-
其实设备树文件:
arch/arm/dts/rk3568-evb.dts
可以复制一份,用于开发板独立使用,比如 -
cp arch/arm/dts/rk3568-evb.dts arch/arm/dts/atk_dlrk3568.dts
-
更改 u-boot 默认的 设备树 dtb 方法
-
设置交叉编译工具链路径
export PATH=$PATH:/home/zhangsz/tools/gcc-arm-8.3-2019.03-x86_64-aarch64-linux-gnu/bin
-
make ARCH=arm CROSS_COMPILE=aarch64-linux-gnu- menuconfig
进入图形界面 -
Device Tree Control
(atk-dlrk3568) Default Device Tree for DT control (atk-dlrk3568) List of device tree files to include for DT control
小结
-
本篇尝试单独编译 rockchip 平台 rk3568 的 u-boot,解决 emmc 启动次序问题
-
rockchip rk3568 平台 u-boot 官方改动的比较大,所以建议使用 rockchip 官方的 u-boot 即可,也可以尝试部分修改,满足自己需求。