OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5612|回复: 6

IMX6ULL SD卡引导系统正常但是eMMC不引导

[复制链接]

1

主题

8

帖子

0

精华

新手上路

积分
23
金钱
23
注册时间
2020-12-18
在线时间
4 小时
发表于 2020-12-26 09:42:43 | 显示全部楼层 |阅读模式
1金钱
IMX6ULL的板子,现在有个问题很奇怪,请大家一起分析一下:就是SD卡引导系统正常但是eMMC不引导。1、我确认emmc可以正常读写,但是就是不引导。
2、仔细对比了开发板的emmc,boot0引导扇区分区表FAT都是对的。
3、拨码开关设置为emmc启动,但是只有插入sd卡才引导系统。并且系统确实是emmc中的系统。
4、用uboot读取smbr1寄存器可知启动配置和拨码开关值是正确的。

请大家讨论一下,这种情况如何解决。



正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

12

主题

67

帖子

0

精华

初级会员

Rank: 2

积分
194
金钱
194
注册时间
2018-7-11
在线时间
31 小时
发表于 2020-12-26 10:55:02 | 显示全部楼层
对比一下SD 与EMMC的分区,UBoot 的引导地址是不是设置正确
回复

使用道具 举报

1

主题

8

帖子

0

精华

新手上路

积分
23
金钱
23
注册时间
2020-12-18
在线时间
4 小时
 楼主| 发表于 2020-12-26 12:33:48 | 显示全部楼层
huayuguo 发表于 2020-12-26 10:55
对比一下SD 与EMMC的分区,UBoot 的引导地址是不是设置正确

emmc的UBOOT烧写是通过开发板带的出厂脚本在SD卡引导起来的Linux下烧写的。分析脚本内容,uboot应该是烧写到/dev/mmcblk1boot0这个引导分区的,但通过uboot的mmc命令查看,实际情况却是uboot烧写到了2048扇区开始的mmc Dev 1 part 1 (type0 boot)这个分区,对应的是/dev/mmcblk1p1。 实际上查看开发板的emmc内容也是这样的,但是开发板就能正常启动。
回复

使用道具 举报

1

主题

8

帖子

0

精华

新手上路

积分
23
金钱
23
注册时间
2020-12-18
在线时间
4 小时
 楼主| 发表于 2020-12-26 12:37:02 | 显示全部楼层
huayuguo 发表于 2020-12-26 10:55
对比一下SD 与EMMC的分区,UBoot 的引导地址是不是设置正确

请问uboot的引导地址在哪里设置?
回复

使用道具 举报

1

主题

8

帖子

0

精华

新手上路

积分
23
金钱
23
注册时间
2020-12-18
在线时间
4 小时
 楼主| 发表于 2020-12-29 10:09:27 | 显示全部楼层
本帖最后由 caussli 于 2020-12-29 10:12 编辑

问题还没解决,自己顶一下。IMX6ULL 的BOOT ROM启动流程是SD2启动失败然后尝试SD1吗?这个得仔细看看参考手册了。
回复

使用道具 举报

6

主题

1097

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3571
金钱
3571
注册时间
2014-12-2
在线时间
365 小时
发表于 2020-12-29 10:23:50 | 显示全部楼层
emmc启动必须烧进BOOT分区,可以是BOOT0也可以是BOOT1,烧录进其他地方肯定是没法从emmc启动的。

看出厂烧录脚本,u-boot确实是得烧录到mmcblk1boot0里面的,不知道你是不是这样操作的。
  1.         <!-- burn uboot -->
  2.         <CMD state="Updater" type="push" body="$ dd if=/dev/zero of=/dev/mmcblk1 bs=1k seek=768 conv=fsync count=8">clear u-boot env</CMD>
  3.         <CMD state="Updater" type="push" body="$ echo 0 > /sys/block/mmcblk1boot0/force_ro">access boot partition 1</CMD>
  4.         <CMD state="Updater" type="push" body="send" file="files/boot/u-boot-imx6ull-14x14-ddr%ddr%-emmc.imx" ifdev="MX6ULL">Sending u-boot.bin</CMD>
  5.         <CMD state="Updater" type="push" body="$ dd if=$FILE of=/dev/mmcblk1boot0 bs=512 seek=2">write U-Boot to sd card</CMD>
  6.         <CMD state="Updater" type="push" body="$ echo 1 > /sys/block/mmcblk1boot0/force_ro"> re-enable read-only access </CMD>
  7.         <CMD state="Updater" type="push" body="$ mmc bootpart enable 1 1 /dev/mmcblk1">enable boot partion 1 to boot</CMD>
复制代码



如果上面还是不行,你需要设置一下emmc boot bus,在u-boot下命令是:
  1. mmc bootbus 0 1 0 0
复制代码

我这里这么设置是ok的,如果还是不行你修改一下后面四个参数都试试。
坚决不用寄存器,拒绝重复造轮子。
回复

使用道具 举报

1

主题

8

帖子

0

精华

新手上路

积分
23
金钱
23
注册时间
2020-12-18
在线时间
4 小时
 楼主| 发表于 2020-12-29 15:19:27 | 显示全部楼层
以前MMC命令设置eMMC引导标志是mmc bootpart 命令,在IMX6ULL的uboot命令中取消了,我一直在用mmc partconf 命令试,没成功。但是mmc bootbus命令应该是设置总线宽度的,最后一个参数是bootmode,这个我来试试。非常感谢你的分享!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-25 20:15

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表