3 U-Boot开发
3.1U-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# cdu-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-软件资料LinuxU-Bootimageu-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.imgof=/dev/mmcblk0 seek=64 conv=fsync
Target# reboot
图 32
3.4.2替换U-Boot镜像
我司已提供U-Boot镜像uboot.img文件,位于产品资料“4-软件资料LinuxU-Bootimageu-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.1U-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.3Kernel参数传递
通过U-Boot命令行使用printenv命令看到Kernel参数。
图 38
亦可观察内核启动阶段的Kernel参数。
图 39
(1)root参数
指定根文件系统位置,如"root=/dev/mmcblk0p6"表示根文件系统位于eMMC中的mmcblk0p6分区。
(2)console参数
指定内核启动时的控制台设备,如"console=ttyFIQ0"表示使用串口FIQ0作为控制台。
由于篇幅过长等原因,部分内容均不逐一展示,如需获取完整版详细资料,请关注Tronlong创龙科技微信公众号或官网,或者评论区留言,感谢您的支持!
审核编辑 黄宇
-
Linux
+关注
关注
88文章
11883浏览量
220094 -
单板机
+关注
关注
1文章
57浏览量
18945 -
SDK
+关注
关注
3文章
1113浏览量
52294 -
rk3576
+关注
关注
1文章
321浏览量
1755
发布评论请先 登录
基于RK3576单板机的Modbus数据采集开发指南
RK3576单板机Docker镜像构建与容器运行手册
RK3576 单板机 NPU 边缘 AI 开发手册
RK3576 单板机高清视频图像处理开发实战手册(三)
RK3576 单板机高清视频图像处理开发实战手册(二)
RK3576 单板机高清视频图像处理开发实战手册(一)
RK3576 单板机嵌入式 Qt 界面与多屏异显开发手册(三)
RK3576 单板机嵌入式 Qt 界面与多屏异显开发手册(二)
RK3576 单板机嵌入式 Qt 界面与多屏异显开发手册(一)
RK3576 单板机 C/Python/MQTT 应用开发手册(二)
RK3576 单板机 C/Python/MQTT 应用开发手册(一)
RK3576 单板机 LinuxSDK 开发与系统定制手册(一)
RK3576 单板机系统使用手册:配置、升级与组件安装指南(三)
RK3576 单板机系统使用手册:配置、升级与组件安装指南(二)
RK3576 单板机系统使用手册:配置、升级与组件安装指南(一)
RK3576 单板机 LinuxSDK 开发与系统定制手册(二)
评论