ROC-RK3328-CC四核64位开源主板

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

升级固件

更新时间:2018-01-12 阅读:772

前言

本文介绍了如何将主机上的固件文件,通过 USB 双头公对公数据线(下文统称 USB 数据线),烧录到开发板的 eMMC 闪存中。 升级时,需要根据主机操作系统和固件类型来选择合适的升级方式。

注意:

RK3328 装载 eMMC闪存情况下,

Android 固件升级可查看 《升级固件》,以下为 Linux 固件升级操作流程

Android 固件升级不必进入maskrom 模式,只需按住 recovery 键后,上电后,即可开始升级操作,

但 Linux 固件每次升级都需要进入 《MaskRom 模式》

再则,如果 eMMC 为 Linux 系统后,需要更换 Android系统,也需进入 MaskRom模式后升级。

在只有 SD卡的情况下,

可参照 《制作 Android SD 启动卡》《制作 Linux SD 启动卡》 文章制作系统启动卡。

准备工作

  • ROC-RK3328-CC 开发板

  • 固件

  • 主机

  • 良好的 USB 双头公对公数据线

固件文件一般有两种:

  • 单个统一固件如 system.img, 将启动加载器、参数和所有分区镜像都打包到一起,用于固件发布。

  • 多个分区镜像,如 uboot.img, trust.img, boot.img 等,在开发阶段生成。

这里可以通过下载 rk3328 统一固件 获取,也可以参考 《编译内核》 以及 《创建 Linux 根文件系统》 的说明自行编译。

主机操作系统支持:

  • Windows 7 (32/64位)

  • Linux (32/64位)

Windows

烧写 RK 的固件,工具如下:

  • 量产工具 AndroidTool,可单独烧写分区固件,也可用于烧写统一固件(system.img)

使用烧写工具前需要安装 RK USB 驱动。如果驱动已经安装好,可以跳过这步。

安装 RK USB 驱动

下载 Release_DriverAssistant.zip ,解压,然后运行里面的 DriverInstall.exe 。

为了所有设备都使用更新的驱动,请先选择"驱动卸载",然后再选择"驱动安装"。


安装驱动

连接设备

设备升级,需要进入 MaskRom 烧写模式。

先使设备断开所有电源,又因 USB数据线也能为开发板提供系统启动电源,所以也需断开 USB 数据线的连接:

  1. 数据线一端连接开发板。

  2. 短接 Flash 的数据脚与地线脚,即板子上预留出来的 CLK 焊盘GND 焊盘

  3. 数据线另一端连接主机。

  4. 板子上电。

  5. 稍候片刻,断开短接,设备应该就会进入 MaskRom 模式。

主机应该会提示发现新硬件并配置驱动。打开设备管理器,会见到新设备 "Rockusb Device" 出现,如下图。如果没有,则需要返回上一步重新安装驱动。


资源管理器

烧写固件

在 SDK 中的 rkbin/tools/AndroidTool_Release_v2.39/ 获取最新版本或者直接下载 rkbin ,解压,运行 rkbin/tools/AndroidTool_Release_v2.39 目录里面的 AndroidTool.exe(注意,如果是 Windows 7/8 ,需要按鼠标右键,选择以管理员身份运行),如下图:


AndroidTool

烧写统一固件 system.img

烧写统一固件 system.img 的步骤如下:

  1. 切换至"升级固件"页。

  2. 按"固件"按钮,打开要升级的固件文件。升级工具会显示详细的固件信息。

  3. 按"升级"按钮开始升级。

  4. 如果升级失败,可以尝试先按"擦除 Flash "按钮来擦除 Flash,然后再升级。

注意:如果你烧写的固件 loader 版本与原来的机器的不一致,请在升级固件前先执行以下步骤:

   1、点击 "Firmware"按钮选择一个 ROC-RK3328-CC 的统一固件

   2、点击"EraseFlash"按钮执行擦除操作


Android_Tool_burn

烧写分区镜像

烧写分区镜像的步骤如下:

  1. 切换至"下载镜像"页。

  2. 勾选需要烧录的分区,可以多选。

  3. 确保镜像文件的路径正确,需要的话,点路径右边的空白表格单元格来重新选择。

  4. 点击"执行"按钮开始升级,升级结束后设备会自动重启。

注意:升级分区前,需查看 parameter.txt 分区地址,确保分区偏移及烧写文件是否正确,

            Android 分区地址自行查看 SDK下 device/rockchip/rk3328/parameter.txt 文件,

            Linux 分区偏移地址如下:

偏移地址如下图所示


Rk3328_Partitions.png

烧写镜像如下图所示

android_tool_3.png

Linux

RK 提供了一个 Linux 下的命令行工具 rkdeveloptool ,支持统一固件和分区镜像的烧写。

Linux 下无须安装设备驱动,参照上面的连接设备则可。

安装 rkdeveloptool 工具

首先需要安装 rkdeveloptool 的依赖库

sudo apt-get install libudev-dev libusb-1.0-0-dev dh-autoreconf -y

然后下载 rkdeveloptool

git clone https://github.com/FireflyTeam/rkbin.git

由于已经编译好了 rkdeveloptool 可执行文件,将其拷贝到 PC 上的 /usr/local/bin 目录下即可使用

sudo cp rkbin/tools/rkdeveloptool /usr/local/bin

连接设备

请参照上面的连接设备,进入 MaskRom模式

烧写固件到 eMMC 闪存

首先确认经过了 《编译内核》 以及 《创建 Linux 根文件系统》 这两个步骤,

烧写固件有两种方式,一种是使用 rkdeveloptool 工具烧写,另一种是使用脚本烧写。

rkdeveloptool 工具烧写分区固件

使用 rkdeveloptool  烧写分区镜像到板子上的 EMMC 闪存中

sudo rkdeveloptool db           out/u-boot/rk3328_loader_ddr786_v1.06.243.bin
sudo rkdeveloptool wl 0x40      out/u-boot/idbloader.img
sudo rkdeveloptool wl 0x4000    out/u-boot/uboot.img
sudo rkdeveloptool wl 0x6000    out/u-boot/trust.img
sudo rkdeveloptool wl 0x8000    out/boot.img
sudo rkdeveloptool wl 0x40000   out/linaro-rootfs.img

再执行以下命令使板子重启

sudo rkdeveloptool rd

注意:每次升级固件,都需要先升级 Loader 文件

rkdeveloptool 工具烧写统一固件

首先,使用 SDK中脚本打包生成统一固件system.img

build/mk-image.sh -c rk3328 -t system -r rk-rootfs-build/linaro-rootfs.img

升级统一固件

sudo rkdeveloptool db            out/u-boot/rk3328_loader_ddr786_v1.06.243.bin
sudo rkdeveloptool wl    0x00    system.img
sudo rkdeveloptool rd

脚本烧写固件

首先,使用 SDK中脚本打包生成统一固件system.img

build/mk-image.sh -c rk3328 -t system -r rk-rootfs-build/linaro-rootfs.img

升级统一固件

build/flash_tool.sh -c rk3328 -p system -i out/system.img

脚本执行完毕后,Firefly-RK3328 会自动重启设备。

build/flash_too.sh 也可以升级单个分区,可自行了解。

eMMC 启动 Linux系统

烧写固件完成后 ROC-RK3328-CC 板子会经历第一次重启

这时需要在串口控制台按回车键进入命令行配置模式,

输入以下命令刷入 gpt 分区表后,系统将再次重新启动,并自动加载 rootfs 文件系统。

gpt write mmc 0 $partitions
boot

以后 ROC-RK3328-CC 板子的启动,则不需要进行以上操作。

FAQs

Q1: 如何强行进入 MaskRom 模式?

A1: 如果板子进入不了 Loader 模式,此时可以尝试强行进入 MaskRom 模式。操作方法见《MaskRom 模式》