无SD卡接口时,如何将Yocto刷入VAR-SOM-MX8M-PLUS的eMMC?
VAR-SOM-MX8M-PLUS 通过USB/以太网刷写Yocto镜像到eMMC的可行方案
完全可以通过USB或以太网接口将Yocto镜像刷入VAR-SOM-MX8M-PLUS的eMMC,以下是两种官方支持的可行方案:
方案一:USB Mass Storage模式刷写
这种方式将SoM的eMMC模拟为主机端的U盘,直接通过磁盘写入工具完成镜像刷写:
- 进入U-Boot命令行:给SoM上电时,通过串口终端打断自动启动(通常按任意键),进入U-Boot交互模式。
- 开启USB Mass Storage功能:在U-Boot命令行执行
此命令会将eMMC(mmc 0)映射为USB设备0,主机端会识别出一个新的磁盘设备。ums 0 mmc 0 - 主机端写入镜像:使用
dd工具(Linux/macOS)或类似磁盘写入工具(Windows需注意权限)将解压后的Yocto.wic镜像写入识别到的磁盘设备,例如:dd if=yocto-image-core-var-som-mx8m-plus.wic of=/dev/sdX bs=4M status=progress注意:替换
/dev/sdX为主机端识别到的eMMC设备,避免误写本地磁盘。 - 刷写完成后,在U-Boot命令行按
Ctrl+C退出USB Mass Storage模式,重启SoM即可从eMMC启动。
方案二:以太网TFTP刷写
该方案通过网络将镜像下载到SoM内存,再写入eMMC:
- 搭建TFTP服务器:在主机端配置TFTP服务,将Yocto镜像文件(如
.wic)放在TFTP根目录下。 - 配置U-Boot网络参数:进入U-Boot命令行,设置网络相关环境变量:
setenv ipaddr 192.168.1.100 # SoM的IP地址 setenv serverip 192.168.1.10 # 主机TFTP服务器IP setenv loadaddr 0x40000000 # 镜像下载到内存的地址 setenv bootfile yocto-image-core-var-som-mx8m-plus.wic saveenv - 下载镜像到内存:执行TFTP下载命令:
tftpboot ${loadaddr} ${bootfile} - 写入eMMC:先计算镜像对应的扇区数(eMMC扇区大小通常为512字节),再执行写入:
setenv sectors $((filesize / 512)) mmc write ${loadaddr} 0 ${sectors} - 设置启动顺序:确保SoM从eMMC启动,执行:
重启SoM即可完成启动。setenv bootcmd 'run mmcboot' saveenv
注意事项
- 确保使用的U-Boot支持对应功能:Variscite提供的预编译U-Boot默认开启了USB Mass Storage、TFTP和网络命令支持;若自行编译U-Boot,需开启
CONFIG_USB_GADGET_MASS_STORAGE、CONFIG_CMD_NET、CONFIG_CMD_TFTP等配置项。 - 刷写前务必备份eMMC内的重要数据,刷写操作会覆盖整个eMMC。
- Windows主机使用USB方案时,可能需要安装对应USB Mass Storage驱动才能识别eMMC设备。
内容的提问来源于stack exchange,提问作者AAK
相关产品推荐
相关产品推荐

