ROC-RK3328-CC

Firefly首个超小型开源主板,特有的USB3.0与DDR4让其性能更快更稳定,超高性价比的ROC-RK3328-CC是你探索程序世界的首选主板。

Uboot 使用

更新时间:2018-05-21 阅读:6761

前言

RK Uboot 是基于开源的 Uboot 进行开发的,Uboot 的工作模式有启动加载模式和下载模式。启动加载模式是 Uboot 的正常工作模式,嵌入式产品发布时,Uboot都工作在此模式下,主要用于开机时把 FLASH 中的内核加载到 SDRAM 中,启动操作系统;下载模式主要用于将固件下载到 FLASH,开机时长按 RECOVERY 键可进入下载模式。本文简单说明 Uboot 的使用,更多 Uboot 相关文档请看 SDK 下面的 RKDocs/Develop reference documents/Rockchip U-Boot 开发指南 V3.7-20160708.pdf。注意,该文档主要是编译基于 Android 7.1 的 Uboot,其中 Android 7.1 的相关 SDK 在链接 Android_7.1_SDK 处下载。

编译

首先 cd 进入 Android 7.1 SDK 源码目录中的 u-boot 目录,编译前把默认配置写入 .config,执行

make rk3328_box_defconfig

如果需要修改相关选项,也可以用

make menuconfig

编译执行

make ARCHV=aarch64

编译后生成

u-boot/uboot.img
u-boot/trust.img
u-boot/rk3328_loader_v1.08.244.bin

烧录

打开烧录工具,板子接好 USB 双头公对公数据线(具体连接设备请参考 《连接设备》 或者 《Loader 模式》),上电时按住 RECOVERY 键,上电后松开 RECOVERY 键使开发板进入 Uboot 的下载模式,然后在烧录工具中选择编译好的 Loader 文件,点击"执行"按钮即可,如下图


rk3328-uboot使用图1.PNG


注意:该软件默认是英文的,但是将 AndroidTool_Release_v2.39/config 配置文件中的 Selected=2 修改为 Selected=1 并保存,然后重启软件,可以切换为中文界面;其中"地址"、"名字"、"路径"都是可以修改的,这里需要特别注意地址字段的填写,图中显示的是正确的烧录地址。

确认是否正确烧写新的 Loader

如果你已经成功烧写你最新编译的 Loader,在开机的串口输出 log 中可以看到类似如下信息:

#Boot ver: 2016-12-19#1.05

如果打印的时间及版本与你编译的一致,说明你成功更新了Loader。

进入 Uboot 命令行模式

由于 Firefly 产品主要用于开发,所以我们默认设置开机时有1秒的倒计时,如果这时候在串口输入任意键即可进入 u-boot命令行模式。 发布的产品是不需要进入 u-boot 命令行模式的,如果需要设置 u-boot 默认不进入命令行模式的,可以做如下修改:
在文件 u-boot/include/configs/rk33plat.h

/* mod it to enable console commands.  */
#define CONFIG_BOOTDELAY               0

把宏 CONFIG_BOOTDELAY 改为 0 即默认不进入命令行模式。

一级 Loader

U-Boot 作为一级 Loader 模式,那么仅支持 eMMC 存储设备,编译完成后生成的镜像:

RK3328LoaderU-BOOT_V2.17.01.bin

其中 V2.17.01 是发布的版本号,rockchip 定义 U-Boot loader 的版本,其中 2.17 是根据存储版本定义的,客户务必不要修改这个版本,01 是 U-Boot 定义的小版本,用户根据实际需求在 Makefile 中修改。

二级 Loader

U-Boot 作为二级 Loader 模式,那么固件支持所有的存储设备,该模式下,需要 MiniLoader 支持,通过宏CONFIG_MERGER_MINILOADER 进行配置生成。同时引入 Arm Trusted,Firmware 后会生成 trust image,这个通过宏CONFIG_MERGER_TRUSTIMAGE 进行配置生成。
 RK3328 使用二级 Loader,编译生成的镜像为:

u-boot/uboot.img
u-boot/trust.img
u-boot/RK3328MiniLoaderAll_V1.05.bin

其中 V1.05 是发布的版本号,rockchip 定义 U-Boot loader 的版本,其中 1.05 是根据存储版本定义的,客户务必不要修改这个版本。 uboot.img 是 U-Boot 作为二级 loader 的打包。 trust.img 是 U-Boot 作为二级 loader 的打包。