我们公司用335X已经很久了,系统都是从MMC1的EMMC存储启动,最近发现,有些设备重启后,就不能从EMMC启动了。
重启方式是执行完linux系统的脚本,然后通过断电方式重启的。
然后通过MMC0的TF卡系统,检查MLO文件,没有任何问题(放到别的正常机子试过)。
然后把EMMC存储重新删除分区,再分区,再格式化,又可以从EMMC启动了。
请问这个大概是什么问题呢?EMMC分4个区,第一分区是FAT32,存放MLO、u-boot.img、uImage
Shine:
这些板子是新做的还是以前的旧板用了一段时间后出现这个问题?
请先检查下板子的sysboot管脚上下拉,emmc的焊接。
jianhui alvin:
回复 Shine:
你好,这些板子是新造的,sysboot已经检查过了,符合启动的设置。
启动不成功的时候,是一直CCCC;
用TF卡启动,然后给emmc重新分区,格式化,又能启动,所以十分奇怪。
Steven Liu1:
回复 jianhui alvin:
重启方式是执行完linux系统的脚本,然后通过断电方式重启的。
这个是使用的reboot命令,还是说你按了板子上硬件的warm reset按键?还是g给板子下电了再上电?
TF卡启动走同样的流程也有这个问题吗?还是说就是EMMC有这问题?
jianhui alvin:
回复 Steven Liu1:
你好,
我是在 /etc/rc6.d/下面,增加一个脚本(序号为最末)执行一个应用程序,这个应用程序的作用是:断电-延时-上电;
TF卡平时只用于EMMC烧录,所以并没有测试TF是否也有这个问题。
出问题后,用TF卡进系统还是能操作EMMC里面的内容的,但是就不能从EMMC启动,必须删除分区-分区-格式化-拷贝系统。
Steven Liu1:
回复 jianhui alvin:
未必一定是emmc的问题。
1. 板子上有warm reset按钮么?直接按warm rest可以正常重新启动吗?
2. 如果是在命令行中直接敲reboot呢?
jianhui alvin:
回复 Steven Liu1:
你好,应该不是emmc的问题,是有概率的,而且是发生在更新MLO的时候
我们的MLO放在EMMC第一个分区(fat32),
升级的时候,先把新的MLO命名为MLO_new,拷贝到第一分区,然后旧的MLO mv 为MLO_bak,再接着把MLO_new mv 为 MLO,最后重启设备来生效。
这方式有一定小概率导致CCC。
当出现的时候,我把 MLO mv为MLO_new, 再把旧的MLO_bak mv 为MLO,就可以启动了,看起来是否是335x内部ROM对 MLO在分区的位置有所限制?
Jian Zhou:
回复 jianhui alvin:
eMMC是如何烧写的?感觉烧写的方法有问题。
jianhui alvin:
回复 Jian Zhou:
以下是是烧写过程:
dd if=/dev/zero of=/dev/mmcblk1 bs=1024 count=1024
SIZE=`fdisk -l /dev/mmcblk1 | grep Disk | awk '{print $5}'`
echo DISK SIZE – $SIZE bytes
CYLINDERS=`echo $SIZE/255/63/512 | bc`
sfdisk -D -H 255 -S 63 -C $CYLINDERS $DRIVE << EOF,5,0x0C,*6,30,,-37,30,,-68,,,-
mkfs.vfat -F 32 -n "boot" /dev/mmcblk1p1
mkfs.ext4 -L "rootfs" /dev/mmcblk1p2
mkfs.ext4 -L "User" /dev/mmcblk1p3
mkfs.vfat -F 32 -n "media" /dev/mmcblk1p4
cp MLO /media/mmcblk1p1/cp u-boot.img /media/mmcblk1p1/cp am335x-evmsk.dtb /media/mmcblk1p1/cp uImage /media/mmcblk1p1/
Jian Zhou:
回复 jianhui alvin:
有参考过这篇帖子里的eMMC烧写脚本么?
user5057925:
回复 Jian Zhou:
请问emmc烧写脚本的链接是什么,我也想将整个系统镜像烧写到emmc中。