ROC-RK3328-CC

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

Linux 固件升级 (eMMC)

更新时间:2018-03-30 阅读:14898

前言

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

注意:

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

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

在只有 SD卡的情况下,

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

准备工作

  • ROC-RK3328-CC 开发板

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

Windows

安装 RK USB 驱动

    操作方法见:《升级固件》RK USB操作

连接设备

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

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

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

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

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

  4. 板子上电。

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

烧写固件

使用工具:AndroidTool      下载链接:AndroidTool链接

打开AndroidTool后,如下图:


TIM图片20180330094443.png

烧写统一固件 system.img

    1、升级Loader文件:rk3328_loader_ddr786_v1.06.243.bin

    2、选择需要烧写的统一固件    (点击在该行末尾的空白格处,可在本地选择)

提示:在烧写时,一定要先升级Loader文件!

            固件需要本地存在。(编译生成统一固件操作可参考《制作LinuxSD卡》,或  点击这里 可获取统一固件)

烧写完成后,如下图:

微信图片_20180330113436.png

    3、将USB双公头数据线拔出后,重启板子即可。

烧写分区镜像

烧写镜像的步骤如下:

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

  2. 添加要烧写的分区镜像:地址须按照下图烧写(每个镜像有唯一对应的地址)

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

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

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

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

            Linux 分区偏移地址如下:

偏移地址如下图所示


Rk3328_Partitions.png


烧写分区镜像完成,如下图:


F~~)33B`K]R_(KC[3HU@L5N.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_tool.sh 也可以升级单个分区,可自行了解。

eMMC 启动 Linux系统

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

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

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

gpt write mmc 0 $partitions
boot

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

FAQs

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

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