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 一张图看懂烧录工具生态
下面这张图是我自己画的,把烧录工具的分类和关系理清楚了。你看一眼就能明白:
1.4 我怎么选?
说了这么多,到底该用哪个?我个人有个简单的判断标准:
- 开发调试阶段:我首选命令行工具。灵活、可控,出问题了能快速定位。
- 产线批量烧录:必须用厂商专用工具。稳定、支持校验、支持序列号写入。
- 给客户做演示:用图形化工具。客户看着舒服,操作门槛低。
避坑指南:我曾经在一个量产项目里,为了省事用了dd命令直接写eMMC。结果发现不同批次的eMMC坏块分布不一样,烧出来的板子有的能启动有的不能。后来老老实实换回厂商工具,加上坏块管理,问题才解决。所以,量产场景千万别图省事。
好了,这一章咱们把烧录工具的全貌理清楚了。下一章我会深入讲命令行工具的具体用法,包括那些容易踩坑的参数配置。到时候见。