|
3 U-Boot开发3.1 U-Boot源码说明 进入U-Boot源码目录,执行如下命令,查看U-Boot源码目录。 Host# ls -l ![]()
图 23
![]()
图 24
3.2配置U-BootU-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创龙科技微信公众号或官网,或者评论区留言,感谢您的支持!
|