【Spiffo】防傻防呆Tips——Saving Environment to FAT... Unable to use mmc 0:0...解决

文章讲述了在使用香橙派系列开发板时,遇到UBOOT变量无法保存的问题,原因在于未正确格式化SD卡。作者提供了先格式化再写入FAT32的解决方案,以及推荐使用虚拟SD卡工具简化重烧操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言:不少人使用香橙派系列的开发板尝试uboot启动内核发现uboot变量无法保存并且报错为Saving Environment to FAT... Unable to use mmc 0:0...,以下提供解决思路

        首先大部分遇到这个问题的人都是使用了官方烧录工具进行sd启动卡的制作,进入uboot后发现了这个问题,我也试了,确实是这样。这个问题在于制作SD启动卡的时候是否提前进行了格式化处理。

        FAT32,和NTFS一样,是一种文件系统格式,如果不按照格式进行写入,那么读写操作就会出现一些问题。直接烧录也可以巧合地启动uboot,但是无法保存变量内容(也就是写操作会出现问题)。

1、比如说我编译一份uboot,将其放入只清空不重新格式化地SD卡:
 

//-----是不是/dev/sdb的自行通过lsblk指令查看,输入指令,看着和你SD卡容量差不多的就对了-----//
sudo dd if=/dev/zero of=/dev/sdb bs=1M count=256 //清空出前256M区域
sudo dd if=u-boot-sunxi-with-spl.bin of=/dev/sdb bs=1024 seek=8 //根据偏移0x2000写入

        

插卡,启动,报错,拉倒(bushi)

可见,直接操作是有问题的

2、我们重新刷卡,先进行FAT32格式化然后再写入

        

dd if=/dev/zero of=/dev/sdb bs=1M count=256
mformat -F -i /dev/sdb //需要安装mtools的包 sudo apt-get install mtools


//直接复制吧,这行的意思就是把分区头里有关文件大小的数提取出来计算整体大小,把uboot让出来,下图示意

dd if=/dev/sdb of=/dev/sdb bs=1 skip=$(($(hexdump -s 11 -n 2 -e '"%u"' /dev/sdb)*$(hexdump -s 14 -n 2 -e '"%u"' /dev/sdb))) seek=2097152 count=16 conv=notrunc
//前2M是uboot存放位置,所以把前2M空出来(也就是2097152

sudo dd if=u-boot-sunxi-with-spl.bin of=/dev/sdb bs=1024 seek=8 conv=notrunc //美美写入

图示

插卡运行

注意看uboot编译时间,同一个uboot,这次能够成功

3、后话

        此时有人要问了,靠bei啦,这么一坨玩意儿,意思后续步骤我操作失败了需要重写uboot每次都得敲这么多代码吗?考虑到这个问题,我给你找了个好东西,相当于一张虚拟的SD卡,你把编辑好的uboot放到上面,每次重烧只需要将其搬到SD卡,那岂不是方便惨了。例如:

sudo dd if=orangepi-zero3.sdcard of=/dev/sdb bs=1M

对这个orangepi-zero3.sdcard的写入操作和之前对sdb这个设备的操作一模一样。

获取传送门---->链接:https://pan.baidu.com/s/1vivhbUygPPWHCndSxzUNYw 
提取码:rkqm 
--来自百度网盘超级会员V3的分享

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值