在 ADI(Analog Devices, Inc.)的嵌入式 Linux 开发板(如 Blackfin、SHARC、ARM 系列 SoC 等)上,”镜像恢复”通常指的是将编译好的 Linux 内核镜像(Image/zImage)、设备树(DTB)以及根文件系统(Rootfs)重新烧录或加载到目标板卡中。
由于 ADI 平台架构多样(Blackfin、ARM、SHARC 等),具体步骤会有所不同,以下以最常见的 ARM 架构(如 ADI 的 Zynq、i.MX 或自家 ARM SoC) 和 Blackfin 架构 为例,提供通用的镜像恢复/烧录流程。
准备工作
获取镜像文件:
- 内核镜像:
uImage、zImage或Image - 设备树文件:
.dtb - 根文件系统:
rootfs.tar.gz或ext4镜像 - 启动加载器:
u-boot.bin或SPL
- 内核镜像:
连接硬件:
- 使用串口线(UART)连接开发板与 PC,用于查看启动日志。
- 使用网线(Ethernet)或 USB 连接,用于网络传输或 TFTP 下载。
安装工具:
minicom或putty(串口终端)tftp客户端/服务器nfs挂载工具- 或专用烧录工具(如
adi-flash、u-boot命令等)
常见恢复方法
方法 1:通过 U-Boot 网络恢复(TFTP/NFS)

这是最常用且灵活的恢复方式,适用于开发阶段。
步骤 1:配置 U-Boot 环境变量
进入 U-Boot 命令行(开机按任意键中断启动):
# 设置服务器 IP(你的 TFTP 服务器) setenv serverip 192.168.1.100 # 设置开发板 IP setenv ipaddr 192.168.1.101 # 设置网关(可选) setenv gatewayip 192.168.1.1 # 保存环境变量 saveenv
步骤 2:加载内核和设备树
假设你的 TFTP 服务器根目录下有 uImage 和 myboard.dtb:
# 从 TFTP 服务器加载内核到内存地址 0x80008000 tftp 0x80008000 uImage # 从 TFTP 服务器加载设备树到内存地址 0x83000000 tftp 0x83000000 myboard.dtb
步骤 3:设置启动参数并启动
# 设置根文件系统位置(NFS 示例) setenv bootargs 'console=ttyS0,115200 root=/dev/nfs nfsroot=192.168.1.100:/path/to/rootfs ip=192.168.1.101::192.168.1.1:255.255.255.0' # 启动系统 bootm 0x80008000 - 0x83000000
注意:如果根文件系统是 SD 卡或 eMMC,则无需 NFS,只需确保
bootargs中的root=指向正确的分区(如/dev/mmcblk0p2)。
方法 2:通过 SD 卡/eMMC 烧录镜像
适用于无网络环境或最终产品部署。
步骤 1:准备 SD 卡
在 PC 上使用

dd 命令将镜像写入 SD 卡:
# 假设 SD 卡设备为 /dev/sdb(请根据实际情况替换) sudo dd if=u-boot.bin of=/dev/sdb bs=1k seek=1 conv=fsync sudo dd if=uImage of=/dev/sdb bs=1k seek=64 conv=fsync sudo dd if=myboard.dtb of=/dev/sdb bs=1k seek=128 conv=fsync
注意:不同 U-Boot 版本对偏移量(seek)要求不同,请参考 ADI 官方文档。
步骤 2:插入 SD 卡并启动
将 SD 卡插入开发板,从 SD 卡启动,U-Boot 会自动从 SD 卡加载内核和设备树。
方法 3:Blackfin 架构专用恢复
Blackfin 处理器使用特殊的启动流程,通常通过 bf5xx-flash 工具或 U-Boot 进行烧录。
使用 U-Boot 烧录到 Flash:
# 加载内核到内存 tftp 0x100000 uImage # 擦除 Flash 分区(假设内核分区在 0x00000000,大小为 0x200000) sf probe 0 sf erase 0 0x200000 # 将内存中的内核写入 Flash sf write 0x100000 0 0x200000
使用 bf5xx-flash 工具(PC 端):
# 通过 JTAG 或串口烧录 bf5xx-flash -d /dev/ttyUSB0 -f uImage.bin -o 0x0
验证与调试
查看串口日志:
- 确保内核正确启动,无 panic。
- 检查设备树是否正确加载。
- 确认根文件系统是否挂载成功。
常见问题排查

:
- TFTP 连接失败:检查防火墙、IP 地址、TFTP 服务器配置。
- 内核启动后卡住:检查设备树是否与硬件匹配,串口波特率是否正确。
- 根文件系统挂载失败:检查 NFS 路径权限、内核是否支持对应文件系统类型(ext4、jffs2 等)。
ADI 官方资源推荐
- ADI Wiki:https://wiki.analog.com/
- Linux 内核源码:https://github.com/analogdevicesinc/linux
- U-Boot 源码:https://github.com/analogdevicesinc/u-boot
| 平台类型 | 推荐恢复方式 | 关键工具 |
|---|---|---|
| ARM (Zynq, i.MX, ADI ARM SoC) | TFTP + U-Boot 或 SD 卡烧录 | tftp, dd, u-boot |
| Blackfin | U-Boot 或 bf5xx-flash | bf5xx-flash, u-boot |
| SHARC | 通常通过 JTAG 或专用烧录工具 | adi-flash, JTAG |
请根据你的具体开发板型号和启动方式选择合适的恢复方法,如有具体型号,可提供更多信息以便获得更详细的指导。
【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!
发表回复