保姆级教程:用海思SS928的BurnTool工具,通过网口给Emmc烧写完整镜像(附分区表修改避坑指南)
海思SS928开发板Emmc镜像烧写全流程实战指南
作为一名长期从事嵌入式开发的工程师,我深知第一次接触新平台时的迷茫与挫败感。海思SS928作为一款高性能视觉处理芯片,其开发环境搭建和镜像烧写是项目启动的第一道门槛。本文将结合我多次实战经验,带你从零开始完成Emmc镜像烧写,避开那些新手常踩的"坑"。
1. 环境准备与工具配置
在开始烧写之前,确保你已准备好以下硬件和软件环境:
硬件连接:
- 使用USB转串口模块连接开发板调试口与PC
- 通过网线直连开发板与PC(推荐)或接入同一局域网
- 准备5V/2A以上电源适配器
软件准备:
- 获取官方提供的BurnTool工具包(通常包含ToolPlatform.exe)
- 下载完整的镜像压缩包,解压后应包含以下文件:
├── boot_image.bin # Bootloader镜像 ├── ivp928-emmc.xml # 分区表配置文件 ├── kernel # Linux内核镜像 ├── rootfs_ss928v100_256M.ext4 # 根文件系统 └── u-boot-ss928v100.bin # U-Boot镜像
注意:不同厂商提供的镜像包可能略有差异,但核心文件基本相同。如果缺少关键文件,请及时联系供应商。
网络配置避坑要点:
- 开发板与PC最好使用网线直连,避免路由器DHCP干扰
- 如果必须接入局域网,建议设置静态IP避免冲突
- 关闭PC防火墙和杀毒软件的实时防护功能
2. BurnTool工具参数详解
启动ToolPlatform后,首先需要正确配置通信参数:
2.1 PC端配置
在"PC与板端配置"选项卡中,重点关注以下参数:
| 配置项 | 推荐值 | 说明 |
|---|---|---|
| 串口选择 | COMx (实际检测到的端口) | 需与设备管理器中的串口号一致 |
| 服务器IP | 192.168.1.100 | 建议设置为与开发板同网段的静态IP |
| 传输方式 | 网口 | 确保比USB传输更稳定快速 |
2.2 开发板端配置
板端IP地址自动生成规则:
- 默认会在服务器IP基础上+1(如PC是192.168.1.100,板端自动设为192.168.1.101)
- 如果自动生成的IP已被占用,手动修改时需确保:
- 与PC在同一子网(前三位相同)
- 未被局域网其他设备使用
关键操作步骤:
- 点击"刷新"按钮获取当前PC的IP地址
- 检查自动生成的板端IP是否可用
- 如有冲突,手动修改最后一位(范围2-254)
- 点击"保存"按钮应用配置
特别提醒:如果修改了IP地址,必须重新插拔开发板电源使配置生效。
3. Emmc镜像烧写全流程
3.1 加载分区表文件
- 切换到"烧写eMMC"选项卡
- 点击"浏览"按钮,选择
ivp928-emmc.xml文件 - 系统会自动解析并显示分区信息表格
分区表关键检查点:
- 确认fastboot分区存在且未被修改名称
- 检查各分区起始地址是否为flash块大小(通常4KB)的整数倍
- 验证分区大小设置是否合理(特别是rootfs分区)
3.2 镜像文件关联
在分区表格中,需要为每个分区指定对应的镜像文件:
| 分区名 | 关联文件 | 必选 | 说明 |
|---|---|---|---|
| fastboot | u-boot-ss928v100.bin | ✓ | 首次烧写必须勾选 |
| boot | boot_image.bin | ✓ | 系统启动关键 |
| kernel | kernel | ✓ | Linux内核镜像 |
| rootfs | rootfs_ss928v100_256M.ext4 | ✓ | 根据实际容量选择匹配的文件系统镜像 |
3.3 执行烧写操作
- 确认所有必选分区都已正确关联镜像文件
- 点击"烧写"按钮开始流程
- 根据控制台提示操作:
- 如果开发板已上电,会提示重新上电
- 首次烧写会通过串口传输bootloader
- 等待进度条完成(通常5-10分钟)
烧写成功标志:
- 控制台显示"Burn Successfully"
- 弹出烧写耗时统计窗口
- 开发板自动重启进入系统
4. 分区表修改高级技巧
4.1 手动编辑XML文件
直接修改ivp928-emmc.xml文件时需注意:
<partition name="rootfs" start="0x200000" size="0x800000" file="rootfs_ss928v100_256M.ext4" select="true"/>关键参数规则:
start和size必须十六进制表示- 数值必须是flash块大小(0x1000)的整数倍
- 相邻分区地址不能重叠
4.2 常见分区调整场景
扩展rootfs分区:
- 减小相邻分区(如userdata)的大小
- 按0x1000对齐调整rootfs的size值
- 确保总和不超过Emmc总容量
添加自定义分区:
- 在XML文件中新增 节点
- 设置唯一的name属性
- 合理安排地址空间避免冲突
4.3 烧写失败排查指南
遇到烧写失败时,可按以下步骤排查:
检查串口输出:
- 确认U-Boot正常加载
- 查看网络初始化是否成功
验证网络连通性:
# 在PC端执行ping测试 ping 192.168.1.101分区表错误处理:
- 检查XML文件格式是否正确
- 确认分区地址未越界
- 尝试恢复默认分区表
镜像完整性验证:
- 比对文件的MD5校验值
- 重新解压原始镜像包
5. 实战经验分享
在实际项目开发中,我总结出几个提高烧写成功率的技巧:
- 电源稳定性:使用优质电源适配器,避免因电压波动导致烧写中断
- 网线选择:尽量使用CAT5e以上规格的网线,确保传输质量
- 分批烧写策略:首次可以只烧写fastboot和boot分区,验证基本功能后再烧写完整镜像
- 日志保存:每次烧写保存控制台日志,便于后续问题分析
一个典型的问题案例:有次烧写总是卡在75%进度,最终发现是rootfs镜像实际大小超过了分区表中定义的大小。通过以下命令检查后解决了问题:
# 查看ext4文件系统实际大小 dumpe2fs rootfs_ss928v100_256M.ext4 | grep "Block count"对于需要频繁烧写的开发场景,建议编写自动化脚本处理重复操作。例如创建一个批处理文件自动设置IP并启动烧写:
@echo off netsh interface ip set address "以太网" static 192.168.1.100 255.255.255.0 start ToolPlatform.exe -burn ivp928-emmc.xml