回答

收藏

[原创] RK3576 单板机 LinuxSDK 开发与系统定制手册(二)

创龙科技 创龙科技 111 人阅读 | 0 人回复 | 2026-04-16

3 U-Boot开发3.1 U-Boot源码说明
进入U-Boot源码目录,执行如下命令,查看U-Boot源码目录。
Host# ls -l

图 23


图 24


3.2配置U-Boot
U-Boot可使用menuconfig进行配置,请参考“配置内核选项”章节,配置menuconfconfig所需依赖环境。
在LinuxSDK源码目录下,执行如下命令先编译一次U-Boot,脚本会在U-Boot目录下执行"make rk3576_defconfig"生成.config文件。
Host# ./build.sh uboot

图 25


图 26

在LinuxSDK源码目录下,执行如下命令,进入"u-boot"目录,通过menuconfig配置U-Boot。
Host# cd u-boot/
Host# make menuconfig

图 27


图 28

在U-Boot目录下执行如下命令,更新defconfig文件。
Host# make savedefconfig
Host# mv defconfig configs/rk3576_defconfig

图 29

3.3编译U-Boot
在LinuxSDK源码目录下执行如下命令,配置编译选项,并单独编译U-Boot。
Host# ./build.sh uboot

图 30


图 31

备注:U-Boot编译会将"rkbin/bin/rk35/"目录下的bl31固件一起编译。具体U-Boot版本号与对应使用的bl31固件如下表所示。

3.4替换U-Boot镜像3.4.1替换U-Boot SPL
我司已提供SPL镜像rk3576_idblock_v1.09.107.img和rk3576_spl_loader_v1.09.107.bin文件,位于产品资料“4-软件资料\Linux\U-Boot\image\u-boot-2017.09-[版本号]-[Git系列号]\”目录下。
其中rk3576_idblock_v1.09.107.img文件可通过单板机系统固化至系统启动卡或eMMC,rk3576_spl_loader_v1.09.107.bin暂未提供固化方法。
请从eMMC启动系统,将SPL镜像rk3576_idblock_v1.09.107.img文件拷贝到单板机root目录下,执行如下命令固化至eMMC。
备注:如需固化至系统启动卡,请将设备节点修改为"/dev/mmcblk1"。
Target#dd if=rk3576_idblock_v1.09.107.img of=/dev/mmcblk0 seek=64 conv=fsync
Target#reboot

图 32

3.4.2替换U-Boot镜像
我司已提供U-Boot镜像uboot.img文件,位于产品资料“4-软件资料\Linux\U-Boot\image\u-boot-2017.09-[版本号]-[Git系列号]\”目录下。
请从eMMC启动系统,请将U-Boot镜像uboot.img文件拷贝至单板机root目录下,执行如下命令将其固化至eMMC。
备注:如需固化至系统启动卡,请将设备节点修改为"/dev/mmcblk1p1"。
Target#dd if=uboot.img of=/dev/mmcblk0p1 conv=fsync
Target#reboot

图 33

3.5U-Boot使用说明3.5.1 U-Boot命令行进入方式
单板机上电启动后,在U-Boot倒计时结束之前按下"Ctrl + C"进入U-Boot命令行模式。
U-Boot# help

图 34


图 35


3.5.2环境变量说明
(1)环境变量存储
执行命令"setenv"或"env default -f -a"修改的是运行空间中的环境变量值,须使用saveenv命令将修改后的环境变量保存起来。否则U-Boot重启后,将会使用修改前的环境变量值。环境变量修改完成后,执行reset命令,即可使用修改后的U-Boot环境变量启动。
U-Boot# env default -f -a
U-Boot# saveenv
U-Boot# reset

图 36

(2)默认配置信息
在U-Boot命令行执行printenv命令可查看环境变量,如下提供主要U-Boot环境变量的解析说明。不同版本的U-Boot,环境变量可能会有所不同,内容仅供参考。

/*调试串口波特率为115200bps*/
baudrate=115200
/*系统启动时,将会先设置启动方式*/
bootcmd=boot_android ${devtype} ${devnum};boot_fit;bootrkp;run distro_bootcmd;
/*设置启动方式为linux启动*/
distro_bootcmd=setenv scsi_need_init; for target in ${boot_targets}; do run bootcmd_${target}; done
/*单板机名字为evb_rk3576*/
board_name=evb_rk3576
/*启动延时为0秒*/
bootdelay=0
/*读取设备树文件至DDR地址0x48300000*/
fdt_addr_r=0x48300000
/*读取内核镜像至DDR地址0x40400000*/
kernel_addr_r=0x40400000
/*mmc启动命令。配置mmc启动参数*/
mmc_boot=if mmc dev ${devnum}; then setenv devtype mmc; run scan_dev_for_boot_part; fi
/*USB启动命令。配置USB启动参数*/
usb_boot=usb start; if usb dev ${devnum}; then setenv devtype usb; run scan_dev_for_boot_part; fi

(3)环境变量修改
本次修改以修改启动延时为1秒为例。
U-Boot# setenv bootdelay 1

图 37

3.5.3 Kernel参数传递
通过U-Boot命令行使用printenv命令看到Kernel参数。

图 38

亦可观察内核启动阶段的Kernel参数。

图 39

(1)root参数
指定根文件系统位置,如"root=/dev/mmcblk0p6"表示根文件系统位于eMMC中的mmcblk0p6分区。
(2)console参数
指定内核启动时的控制台设备,如"console=ttyFIQ0"表示使用串口FIQ0作为控制台。

由于篇幅过长等原因,部分内容均不逐一展示,如需获取完整版详细资料,请关注Tronlong创龙科技微信公众号或官网,或者评论区留言,感谢您的支持!


分享到:
回复

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条