基于 RV1126B 评估板的 Linux 系统开发详解(二)

电子说

1.4w人已加入

描述

2 U-Boot开发

2.1 U-Boot源码说明

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

Host# ls -l

评估板

2.2配置U-Boot

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

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

Host# ./build.sh uboot

评估板评估板

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

Host# cd u-boot/

Host# make menuconfig //通过menuconfig进行U-Boot配置

评估板评估板

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

Host# make savedefconfig //在U-Boot目录下生成新的defconfig文件

Host# mv defconfig configs/rv1126b_defconfig //更新U-Boot的defconfig配置文件

评估板

2.3编译U-Boot

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

Host# ./build.sh uboot //执行build.sh脚本编译U-Boot

评估板评估板

备注:U-Boot编译会将"rkbin/bin/rk35/"目录下的bl31固件一起编译。编译后在LinuxSDK源码"u-boot"目录下生成U-Boot SPL镜像rv1126b_spl_loader_v1.09.105.bin、和U-Boot镜像uboot.img。

评估板

2.4替换U-Boot

我司已提供U-Boot镜像uboot.img文件,位于产品资料“4-软件资料LinuxU-Bootimageu-boot-2017.09-[版本号]-[Git系列号]”目录下。

其中uboot.img文件可通过评估板文件系统固化至系统启动卡或eMMC。亦可通过瑞芯微开发工具RKDevTool固化至eMMC。

备注:通过瑞芯微开发工具RKDevTool替换方式不支持固化U-Boot镜像至系统启动卡。

(1)通过命令行替换

请从系统启动卡或eMMC启动系统,请将U-Boot镜像uboot.img文件拷贝至评估板root目录下,执行如下命令将其固化至系统启动卡或eMMC。

备注:如需固化至系统启动卡,请将设备节点修改为"/dev/mmcblk1p1"。

Target# dd if=uboot.img of=/dev/mmcblk0p1 conv=fsync //替换U-Boot镜像到对应存储分区

Target# reboot

评估板

(2)通过瑞芯微开发工具替换

请确保评估板Micro SD卡槽未插入Micro SD卡,并使用Type-C线将评估板USB 3.0 DRD接口连接至PC机USB接口。

备注:在进行本次操作前,需确保eMMC已固化完整系统镜像。

请参考《Linux系统固化手册》文档安装瑞芯微开发工具RKDevTool。将U-Boot镜像uboot.img文件拷贝至Windows非中文工作目录下。

a)打开瑞芯微开发工具,点击选择待替换的U-Boot镜像uboot.img,并勾选对应选项。

评估板

b)长按评估板的USER1(KEY3)按键,将评估板上电启动,等待瑞芯微开发工具提示“发现一个LOADER设备”后松开USER1(KEY3)按键。

评估板

c)点击“设备分区表”,在弹出的询问窗口中点击“是(Y)”。

评估板评估板

d)点击“确定”完成分区表更新。

评估板

e)点击“执行”按钮,固化镜像,固化完成后,瑞芯微开发工具提示“下载完成”,评估板会自动重启,等待评估板重启进入系统后,即可生效。

评估板

2.5 U-Boot使用说明

2.5.1 U-Boot命令进入方式

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

U-Boot# help

评估板评估板评估板

2.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

评估板

(2)默认配置信息

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

/*系统启动时,记录启动次数,默认不开启这个功能,需设置boottest环境变量为1才会开启*/

boottestcount=if test $boottest = 1;then setexpr bootcount ${bootcount} + 1;saveenv;echo boottest=1 bootcount: ${bootcount};fi

/*根据环境变量devtype、devnum,从eMMC或Micro SD读取内核镜像以及设备树镜像,然后启动Linux*/

bootcmd=boot_fit;boot_android ${devtype} ${devnum};

/*评估板名字为evb_rv1126b*/

board_name=evb_rv1126b

/*启动延时为0秒*/

bootdelay=0

/*读取设备树文件至DDR地址0x48300000*/

fdt_addr_r=0x48300000

/*读取内核镜像至DDR地址0x45480000*/

kernel_addr_r=0x45480000

/*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

评估板

2.5.3Kernel参数传递

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

评估板

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

评估板

(1)root参数

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

(2)console参数

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

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

审核编辑 黄宇

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

全部0条评论

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

×
20
完善资料,
赚取积分