固件烧录与系统升级

本篇目标:搞懂”固件”是什么,学会把出厂/新版固件烧进板子的 NAND,以及不重烧整包时如何做小升级(换 Logo、更新分区)。
本篇不涉及编译(编译另见系统编译文档)。你拿到的是已经打包好的 .img 固件包,或厂家提供的升级文件。


先搞清楚:什么是”固件”

简单说,固件 = 能直接烧进板子存储、让板子跑起来的完整镜像,里面包含:

  • U-Boot(启动引导):负责初始化硬件、加载内核。
  • Linux 内核:操作系统的核心。
  • 根文件系统(rootfs):所有命令、库、配置、应用的集合。

本板使用 NAND Flash 启动,固件被烧录到 NAND 上。出厂时板子已经烧好一份可用固件,正常开发体验不需要重烧;只有在”固件损坏 / 需要换版本 / 批量生产”时才需要烧录。

板子上的分区(了解即可)

固件在 NAND 上被分成几个区(定义见 SDK 的 sys_partition.fex):

分区名 作用
boot-resource 存放开机 Logo 等启动资源
env / env-redund U-Boot 环境变量(双备份)
bootA 内核镜像
rootfsA 根文件系统(ubifs,可读写)
private 厂商私有数据

什么时候需要整包烧录

场景 是否要整包烧
板子变砖(起不来) ✅ 是
想换一个完整版本固件 ✅ 是
批量生产烧同样的固件 ✅ 是
只想换张开机 Logo ❌ 否(见 2.6)
只想更新某个文件 ❌ 否(串口/scp 即可)

方式一:USB 量产(PhoenixSuit,最常用)

全志平台标准的 USB 烧录工具叫 PhoenixSuit(也常叫”烧写工具”)。适合开发阶段和维修。

步骤

  1. 安装 PhoenixSuit(Windows 版),按提示安装附带的 USB 驱动。若设备管理器出现带黄叹号的未知设备,手动指定驱动到 PhoenixSuit 安装目录下的 Drivers。
  2. 打开 PhoenixSuit → 一键刷机 / Firmware → 选择你的 .img 固件包。
  3. 让开发板进入 USB 烧录(下载)模式。通过长按开发板的烧录键⑰,再接上电源①。
  4. 板子进入下载模式后,PhoenixSuit 会自动识别并开始烧录,进度条走完即成功。
  5. 断开 USB、重新上电,板子从 NAND 启动新固件。

⚠️ 烧录过程不要断电、不要拔 USB。中途断开可能导致 NAND 分区损坏,需要重来。

💡 若 PhoenixSuit 一直识别不到设备:换 USB 口/数据线、确认驱动装好、确认确实进入了下载模式(可用 lsusb 在 Linux 上看是否出现全志设备)。


方式二:卡量产(TF 卡烧录,适合无 USB 下载场景)

SDK 提供了卡量产机制(cardtool.fex / cardscript.fex),把量产文件写入 TF 卡,插入量产卡,触发烧录模式,将系统烧写至 NAND。

简述流程(以厂家提供的卡量产包为准):

  1. 准备一张 TF 卡,用厂家提供的卡量产工具把量产镜像写入 TF 卡。
  2. 将 TF 卡插入开发板,按硬件手册方式上电/启动,使其从卡启动并自动烧写 NAND。
  3. 烧写完成后拔卡、重新上电,从 NAND 启动。

卡量产多用于产线,普通开发更推荐 PhoenixSuit。具体工具与镜像请向厂家索取。


注:本文档仅提供了通过USB烧录的教程,其它方式请自行查找相关资料

TF烧录工具包可见网盘链接:
通过网盘分享的文件:TF卡烧录工具包
链接: https://pan.baidu.com/s/1EmWw1-yLhHWaRtzfQujRqQ
提取码: YZJS

拿到固件包后:先确认再烧

拿到 .img 后,建议先和厂商确认:

  • 固件对应的 板型(必须是 YPT153EVB / t153_nand_base)。
  • 固件对应的 NAND 容量档(256MB 页 2048 / 512MB 页 4096)——烧错容量档会分区溢出。
  • 固件对应的 显示模式默认(rgb / hdmi)。

不重烧整包:运行期小升级

很多小改动不需要整包烧录,板子起来后在命令行就能做。

2.6.1 更换开机 Logo(最常用)

开机 Logo 是一张 1024×600 的 BMP 图片,存在 boot-resource 分区。板上已内置 logo_update 工具:

# 把做好的 bootlogo.bmp 传到板子后,执行(文件名必须叫 bootlogo.bmp)
root@YPT153EVB:~# logo_update bootlogo.bmp
  • 文件名必须是 bootlogo.bmp,否则脚本报错。
  • 脚本会把图片写入 boot-resource 分区(/dev/mtdblock6)。
  • 重启后生效(Logo 由 U-Boot 在启动早期读取)。

详细做法与图片制作见《更换开机 Logo》篇。

2.6.2 更新单个分区(谨慎)

可用 sunxi_flash 读写指定分区(如更新内核分区 bootA)。该操作有风险,误操作会破坏系统,仅建议在清楚自己在做什么时使用,普通用户请优先用整包烧录或厂家升级包。

root@YPT153EVB:~# sunxi_flash -h      # 查看用法

排障

现象 原因 / 处理
PhoenixSuit 识别不到 驱动未装好 / 没进下载模式 / 数据线问题
烧到一半失败 USB 接触不良、断电;重来
烧完上电黑屏 固件与板型/NAND 容量档不匹配;确认后再烧
logo_update 报错 文件名不是 bootlogo.bmp;或图片不是 1024×600 BMP

作者:Mai  创建时间:2026-10-20 16:42
最后编辑:林晓燕  更新时间:2026-11-05 14:56