eMMC 一般都是直接焊在主板上有些雖然是可插拔的,但没有专用的读卡器因此需要使用板载烧写的方式来更新固件,即板上跑一个小系统负责从主机或其它存储介质读取固件,再烧写到 eMMC 上
取决于 eMMC 现存的内容,开发板有两种特殊的启动模式: Rockusb 模式 和 Maskrom 模式
通常只需要进入 Rockusb 模式 即可升级现有的 Android 或 Ubuntu 系统。这種方式升级方式一般适用于 RK 固件或分区映像
Maskrom 模式 则是系统未能识别到合法的启动设备而进入的模式。烧写原始固件到 eMMC 必须要进入该模式
5V2A 电源适配器。
连接电源适配器和开发板的 Micro USB 线
用来连接电脑 PC 以及开发板的公对公 USB 线。
将所有 USB 线(包括 Micro USB 线和公对公 USB 线)拔出开发板以保歭开发板断电。
使用公对公 USB 线将主机的 USB 端口与开发板的双层 USB 端口中靠近电路板的 OTG 端口相连:
将 Micro USB 线插入到开发板中让开发板上电。
如果开發板上电后遇到以下情况之一:
将 eMMC 数据/时钟引脚接地eMMC读取数据失败。
强制进入 MaskRom 模式 涉及到硬件操作具有一定的风险,因此操作上需要非常谨慎
5V2A 电源适配器。
用来连接电源适配器和开发板的 Micro USB 线
连接电脑 PC 和开发板的公对公 USB 线。
用于将 eMMC 时钟引脚短接到地的金属镊子
将所囿 USB 线(包括 Micro USB 线和公对公 USB 线)拔出开发板,以保持开发板断电
使用公对公 USB 线将主机的 USB 端口与开发板的双层 USB 端口中靠近电路板的 OTG 端口相连:
找到开发板上预留的 eMMC 的 CLK 引脚和 GND 脚,见下图:
用金属镊子短接 eMMC 的 CLK 和 GND 焊盘并保持短接良好。
将 Micro USB 线插入到开发板中让开发板上电。
保持住一秒后松开镊子
固件说明:固件分为 原始固件 与 RK 固件 ,已经分类到不同的文件夹中固件命名的日期最新则为最新的固件,其稳定性更好請根据你所需要的固件类型选择正确的烧写工具。
请根据所用主机的操作系统选择相应的烧写 eMMC 工具:
不同固件之间使用的烧写工具和烧写方法不一样的请按照下面的表格进行烧写。
然后根据此处的说明去添加 udev 规则这是为了让普通用户有权限烧写 Rockchip 设备。如果跳过这步则所有的烧写命令均需在前面加 sudo 才能成功执行。
原始固件需要从 eMMC 的偏移地址为 0 的位置开始烧写但在 Rockusb 模式 下所有 LBA 写入操作会偏移 0x2000 个扇区(即 LBA0 對应于存储设备上的第 0x2000 个扇区)。因此开发板必须强制进入 Maskrom 模式 才能烧写原始固件。
system.img 是打包后的原始固件也可以是官网上下载并解压後的原始固件文件。
以下的说明仅适用于开发板原有系统是原始固件时的分区映像烧写每个分区的预定义偏移量和大小可以在 SDK 里的 build/partitions.sh 中找箌,可以参考《分区偏移量》一章
重新加载 udev 规则:
如果使用原始固件,那么系统很可能使用了 GPT 分区方案每个分区的预定义偏移量和大尛可以在 SDK 里的 build/partitions.sh 中找到。
分区映像的偏移量可以通过以下命令获得(假设位于 Firefly Linux SDK 的目录中):
如果使用 RK 固件那么系统是使用 parameter.txt 文件来定义分区方案,该文件的格式参见文档《参数文件格式》