1、烧录工具概览:U-Boot烧录工具的作用、常见烧录工具分类

大家好,我是老李。做嵌入式这些年,烧录U-Boot这事儿,我少说也折腾过上千回了。今天咱们就来聊聊烧录工具这个“老熟人”。

你想想看,一块崭新的板子,焊好CPU、焊好Flash,上电之后它就是个“哑巴”。你得把U-Boot这个“灵魂”灌进去,它才能干活。这个灌的过程,就是烧录。而烧录工具,就是咱们手里的“注射器”。

1.1 烧录工具到底在干嘛?

说白了,烧录工具就干三件事:

  • 把二进制文件(u-boot.bin)写到存储介质里——比如NAND Flash、NOR Flash、SD卡、eMMC。
  • 处理芯片厂商的“握手协议”——不同芯片的启动方式不一样,你得按它的规矩来。
  • 校验数据完整性——烧进去的数据对不对?得算个CRC或者MD5验证一下。

我记得刚入行那会儿,有一次烧完U-Boot,板子死活起不来。查了半天,发现是烧录工具没处理好ECC校验,数据写进去就是错的。嗯,从那以后,我对烧录工具的选择就格外上心。

核心要点:烧录工具不是简单的“复制粘贴”,它要处理芯片初始化、时钟配置、存储控制器初始化等一系列底层操作。选错了工具,板子就是一块砖。

1.2 烧录工具分几类?

我习惯把烧录工具分成三大类。每一类都有自己的脾气,咱们一个一个说。

1.2.1 命令行工具——老炮儿的选择

这类工具没有图形界面,全靠敲命令。典型代表有:

  • dd命令(Linux下直接写SD卡)
  • flashcp、nandwrite(操作Flash设备)
  • J-Link Commander(通过JTAG/SWD烧录)
  • openocd(开源调试器,支持多种芯片)

为什么我喜欢命令行工具?因为它稳定、可脚本化。我在项目中经常写一个shell脚本,把编译、烧录、校验一气呵成。比如这样:

#!/bin/bash
# 我常用的烧录脚本
make u-boot.bin
sudo dd if=u-boot.bin of=/dev/sdb bs=1k seek=8
sync
echo "烧录完成,请拔卡插入板子测试"

我的经验:用dd命令烧录SD卡时,seek参数一定要算对。不同板子的偏移量不一样,我见过有人把U-Boot烧到了分区表的位置,结果卡都识别不了。

1.2.2 图形化工具——新手友好型

这类工具有个漂亮的界面,点几下鼠标就能完成烧录。常见的有:

  • STM32CubeProgrammer(ST家的芯片)
  • NXP MFGTool(i.MX系列专用)
  • Rockchip Download Tool(瑞芯微专用)
  • BalenaEtcher(写SD卡/镜像的通用工具)

图形化工具的好处是直观。你不需要记复杂的命令参数,选文件、选设备、点开始,完事。但说实话,我很少在生产环境中用它们。为什么?因为没法自动化。你想想看,产线上几百块板子,总不能让人一块一块地点鼠标吧?

注意:图形化工具通常只支持特定的芯片或平台。别指望用STM32CubeProgrammer去烧录全志的芯片,那是不可能的。

1.2.3 厂商专用工具——原厂“亲儿子”

每个芯片厂商都有自己的“独门秘笈”。这些工具通常和芯片的启动ROM绑定,能处理最底层的初始化。比如:

厂商 工具名称 适用场景
NXP MFGTool / uuu i.MX系列,通过USB烧录
Rockchip RKDevTool RK系列,通过USB烧录
Allwinner PhoenixSuit / LiveSuit 全志系列,通过USB烧录
TI Uniflash TI Sitara/MSP系列
ST STM32CubeProgrammer STM32MP系列

这类工具最大的优点是“省心”。你不需要了解芯片的启动细节,工具全帮你搞定了。但缺点也很明显——换一家芯片,工具就得全换。我曾经在一个项目里同时用全志和NXP的芯片,桌面上摆了两个烧录工具,来回切换,别提多烦了。

1.3 一张图看懂烧录工具生态

下面这张图是我自己画的,把烧录工具的分类和关系理清楚了。你看一眼就能明白:

U-Boot烧录工具分类体系 烧录工具 命令行工具 图形化工具 厂商专用工具 dd / flashcp openocd J-Link Commander STM32CubeProg MFGTool BalenaEtcher RKDevTool PhoenixSuit Uniflash 选择建议:开发调试用命令行,产线批量用厂商工具,个人学习用图形化工具

1.4 我怎么选?

说了这么多,到底该用哪个?我个人有个简单的判断标准:

  • 开发调试阶段:我首选命令行工具。灵活、可控,出问题了能快速定位。
  • 产线批量烧录:必须用厂商专用工具。稳定、支持校验、支持序列号写入。
  • 给客户做演示:用图形化工具。客户看着舒服,操作门槛低。

避坑指南:我曾经在一个量产项目里,为了省事用了dd命令直接写eMMC。结果发现不同批次的eMMC坏块分布不一样,烧出来的板子有的能启动有的不能。后来老老实实换回厂商工具,加上坏块管理,问题才解决。所以,量产场景千万别图省事。

好了,这一章咱们把烧录工具的全貌理清楚了。下一章我会深入讲命令行工具的具体用法,包括那些容易踩坑的参数配置。到时候见。