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

电子说

1.4w人已加入

描述

3 U-Boot开发

3.1 U-Boot源码说明

进入U-Boot源码目录,执行如下命令,查看U-Boot源码目录。

Host# ls -l

Linux图 23

Linux图 24

Linux

3.2配置U-Boot

U-Boot可使用menuconfig进行配置,请参考“配置内核选项”章节,配置menuconfconfig所需依赖环境。

在LinuxSDK源码目录下,执行如下命令先编译一次U-Boot,脚本会在U-Boot目录下执行"make rk3576_defconfig"生成.config文件。

Host# ./build.sh uboot

Linux图 25

Linux图 26

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

Host# cd u-boot/

Host# make menuconfig

Linux图 27

Linux图 28

在U-Boot目录下执行如下命令,更新defconfig文件。

Host# make savedefconfig

Host# mv defconfig configs/rk3576_defconfig

Linux图 29

3.3编译U-Boot

在LinuxSDK源码目录下执行如下命令,配置编译选项,并单独编译U-Boot。

Host# ./build.sh uboot

Linux图 30

Linux图 31

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

Linux

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.img of=/dev/mmcblk0 seek=64 conv=fsync

Target# reboot

Linux图 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

Linux图 33

3.5U-Boot使用说明

3.5.1 U-Boot命令行进入方式

单板机上电启动后,在U-Boot倒计时结束之前按下"Ctrl + C"进入U-Boot命令行模式。

U-Boot# help

Linux图 34

Linux图 35

Linux

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

Linux图 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

Linux图 37

3.5.3 Kernel参数传递

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

Linux图 38

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

Linux图 39

(1)root参数

指定根文件系统位置,如"root=/dev/mmcblk0p6"表示根文件系统位于eMMC中的mmcblk0p6分区。

(2)console参数

指定内核启动时的控制台设备,如"console=ttyFIQ0"表示使用串口FIQ0作为控制台。

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


审核编辑 黄宇

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分