OpenEdv-开源电子网

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

uboot下mmc partconf命令疑问

[复制链接]

0

主题

12

帖子

0

精华

新手上路

积分
31
金钱
31
注册时间
2021-8-29
在线时间
12 小时
发表于 2021-9-6 13:51:25 | 显示全部楼层 |阅读模式
本帖最后由 arminker 于 2021-9-7 11:09 编辑

-----------------------------问题1----------------------------------------------------
现象:
emmc方式启动进入uboot后

emmc  dev 1  0                        切换到硬件分区0(mmc有多个硬件分区,且独立编址,0号用户硬件分区UDA,  1号为 boot0,   2号为boot1 )
tftp 80800000 u-boot.imx
emmc write 80800000 2 2ee
mmc  partconf 1 1 0 0                        可以正常启动进入uboot

mmc  pattconf 1 1 7 0                        可以正常启动进入uboot

mmc  partconf 1 1 1 0                        可以正常启动进入uboot,但是不是刚刚烧写的uboot,应该是mfgtool烧写的uboot

mmc  partconf 1 1 2 0                        不能进入uboot

问题:partconf  1 1 0 0             后面几个数字到底是什么意思,能否帮忙讲解清楚下,谢谢了。

这个问题,也是很多原子alpha开发板粉丝关心的问题,论坛上一直没人给出权威解答,能否麻烦左工给个比较权威的解答,谢谢了

-----------------------------------------------------------问题2----------------------------------------------------------------------

另外一个问题,拨码开关设置emmc启动,同时插上了已经烧好了系统的sd卡,启动系统后,使用emmc命令将uboot区域擦掉,然后reset,系统在emmc启动方式下,却正常正常启动进入了sd卡的而系统,请问下emmc启动方式,从emmc中找不到uboot,芯片会主从尝试从sd卡中找,找到就启动这是imx6U芯片启动流程本身的特点吗?










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

使用道具 举报

9

主题

767

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
5274
金钱
5274
注册时间
2019-9-25
在线时间
433 小时
发表于 2021-9-6 17:23:51 | 显示全部楼层
The boot partition can be selected for an MMC4.x card after
the card initialization is complete. The ROM code reads the
BOOT_PARTITION_ENABLE field in the Ext_CSD[179] to get
the boot partition to be set. If there is no boot partition
mentioned in the BOOT_PARTITION_ENABLE field or the
user partition was mentioned, the ROM boots from the user
partition.这可能是你要的答案,如果默认没有设置分区,设置0就是default,效果与7是一样的。
想思考的时候,有时还可以用屁股,QQ 1252699831
回复 支持 1 反对 0

使用道具 举报

9

主题

890

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
2390
金钱
2390
注册时间
2019-9-25
在线时间
397 小时
发表于 2021-9-6 14:46:42 | 显示全部楼层
本帖最后由 仰望星空之云 于 2021-9-6 16:40 编辑

uboot下你输入mmc?就可以查询指令的用法了
89.png



第一个参数dev,就是设备的意思,0是SD卡,1是EMMC;
第二个boot_ack参考手册有介绍,是Boot ACK模式选择:0是没有响应,1是有响应,你在参考手册搜索就可以找到:
88.png

第三个参数boot_partition是选择boot分区的意思,这里你可以去搜索一下MMC设备(SD卡和EMMC)分区的介绍,有的有0~7个分区吧,不同的系统,每个分区下装的文件会不一样,如果是6ull的话,可以直接看开发板光盘A-基础资料\5、开发工具\4、正点原子MFG_TOOL出厂固件烧录工具\mfgtool\Profiles\Linux\OS Firmware\ucl2.xml下的文件,什么文件烧录到了什么分区了:

分区        名称                                                   
0          引导分区0,最前两个块保存着分区表信息,不能擦除。存放u-boot.imx                       
1         存放内核、设备树镜像文件
2         存放文件系统、用户数据

最后一个参数partition_access表示当前访问的分区。


总结:
mmc partconf :dev boot_ack boot_partition partition_access
参数1  :   设备,是SD卡(0)还是EMMC(1)
参数2  :   是否响应, 0不响应,1响应
参数3  :   选择启动分区,这个参数很关键,如果要在 uboot 中更新 EMMC 对应的 uboot,这个参数就是0
参数4  :   当前访问的分区,一般是从分区0开始(默认)





回复 支持 反对

使用道具 举报

0

主题

12

帖子

0

精华

新手上路

积分
31
金钱
31
注册时间
2021-8-29
在线时间
12 小时
 楼主| 发表于 2021-9-6 15:07:16 | 显示全部楼层
本帖最后由 arminker 于 2021-9-6 15:33 编辑
仰望星空之云 发表于 2021-9-6 14:46
uboot下你输入mmc?就可以查询指令的用法了

命令的用法我也看到了,
如果仅仅是阅读命令的使用方法,mmc partconf 1 1 0 0 应该是不能启动,但是结果是
mmc partconf  1 1 0 0   
mmc partconf  1 1 7 0
都可以

请问,这是什么原因呢?
参照后面参考资料
1)mmc partconf 1 1 0 0
第三个数字为0,也就是BOOT_PARTITION_ENABLE被设置为0,应该是Device not boot enabled(default),我理解就是emmc此时不能被当做启动设备

2)反而,mmc partconf 1 1 7 0,
第三个数字为7,也就是BOOT_PARTITION_ENABLE被设置为7,也就是User Area enabled for boot

这个问题,希望正点原子文档团队,左工来给个权威解答

参考资料





回复 支持 反对

使用道具 举报

0

主题

38

帖子

0

精华

初级会员

Rank: 2

积分
58
金钱
58
注册时间
2021-7-25
在线时间
6 小时
发表于 2021-9-6 16:35:21 | 显示全部楼层
arminker 发表于 2021-9-6 15:07
命令的用法我也看到了,
如果仅仅是阅读命令的使用方法,mmc partconf 1 1 0 0 应该是不能启动,但是结 ...

你这看的是另一种芯片型号的手册吧?每个芯片可能不一样吧?你应该是看的类似
https://www.cnblogs.com/fire909090/p/10858201.html
这个帖子上说的吧?这个链接的应该是6D的或者更高配置的芯片,跑安卓?
6ull的好像没这么多分区,应该就是前面的人说的3个分区。
回复 支持 反对

使用道具 举报

9

主题

890

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
2390
金钱
2390
注册时间
2019-9-25
在线时间
397 小时
发表于 2021-9-6 16:37:40 | 显示全部楼层
本帖最后由 仰望星空之云 于 2021-9-6 20:03 编辑

mmc partconf 1 1 0 0可以启动

99.png


另外一个问题,拨码开关设置emmc启动,同时插上了已经烧好了系统的sd卡,启动系统后,使用emmc命令将uboot区域擦掉,然后reset,系统在emmc启动方式下,却正常正常启动进入了sd卡的而系统,请问下emmc启动方式,从emmc中找不到uboot,芯片会主从尝试从sd卡中找,找到就启动这是imx6U芯片启动流程本身的特点吗?


这个问题:
拨码开关设置emmc启动,同时插上了已经烧好了系统的sd卡,启动系统后,使用emmc命令将uboot区域擦掉---你怎么擦除的?擦除完后启动你有重新进入uboot下查看和确认此时运行的uboot是SD卡的还是EMMC的没?

uboot启动文件系统的话,先在uboot下查看一下bootcmd、bootargs和netargs这几个环境变量,它们跟系统启动有关的,《【正点原子】I.MX6U嵌入式Linux驱动开发指南V1.5.2》也有相关章节讲解到uboot的启动流程:


93.png




回复 支持 反对

使用道具 举报

0

主题

38

帖子

0

精华

初级会员

Rank: 2

积分
58
金钱
58
注册时间
2021-7-25
在线时间
6 小时
发表于 2021-9-6 16:42:13 | 显示全部楼层
你看的那个帖子就是解答了
http://www.openedv.com/forum.php ... &extra=page%3D1
回复 支持 反对

使用道具 举报

9

主题

890

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
2390
金钱
2390
注册时间
2019-9-25
在线时间
397 小时
发表于 2021-9-6 16:42:52 | 显示全部楼层
前面已经有个帖子解答了大部分问题:
http://www.openedv.com/forum.php ... &extra=page%3D1
回复 支持 反对

使用道具 举报

0

主题

38

帖子

0

精华

初级会员

Rank: 2

积分
58
金钱
58
注册时间
2021-7-25
在线时间
6 小时
发表于 2021-9-6 19:38:02 | 显示全部楼层
本帖最后由 仰望星空之云 于 2021-9-6 19:39 编辑

为啥我发表的没看到,奇怪了,可能我是新人吧,需要审核
我想说的是,楼主那个手册的截图不是6ull的,应该是从别的芯片截图过来的。
手册上已经有说明了,就是楼上粘贴的那段话
18.png

回复 支持 反对

使用道具 举报

0

主题

12

帖子

0

精华

新手上路

积分
31
金钱
31
注册时间
2021-8-29
在线时间
12 小时
 楼主| 发表于 2021-9-7 07:13:59 | 显示全部楼层
茂茂2019 发表于 2021-9-6 17:23
The boot partition can be selected for an MMC4.x card after
the card initialization is complete. Th ...

这个解释说的通,算是大致搞明白了,
回复 支持 反对

使用道具 举报

0

主题

12

帖子

0

精华

新手上路

积分
31
金钱
31
注册时间
2021-8-29
在线时间
12 小时
 楼主| 发表于 2021-9-7 07:48:54 | 显示全部楼层
本帖最后由 arminker 于 2021-9-8 11:48 编辑

谢谢各位大佬的细心解答,经过这番讨论,和我自己的实验,做一个总结:

1. emmc上有多个硬件分区,从实验结果来看,至少包含:
(1)UDA(user data area):        

        mmc dev 1 0               进入硬件分区0(UDA),这里的 0 表示UDA
        mmc part                    查看UDA下的软件分区,如下图:               
        |-----10MB------|--------- part1(128MB)--------|------ part2(7318MB)-------|                    
        0                    20480                                     282624                                    
         1.png
(2)boot1(boot area partition 1)(4MB)  

        mmc dev 1  1              进入硬件分区1(boot area partition 1),这里最后的数字1表示boot area partition 1
        mmc part                    这个硬件分区没有分区表,因此提示错误,如下所示:
        mmc info                    查看大小,为4MB
         2.png
(3)boot2(boot area partition 2)(4MB)        
        mmc dev 1  2              进入硬件分区1(boot area partition 2) ,这里最后的数字1表示boot area partition 2
        mmc part                    这个硬件分区没有分区表,因此提示错误,如下所示:
        mmc info                    查看大小,为4MB

         3.png

2. 关于mmc partconf 命令
        mmc partconf  n1  n2   n3  n4
        n3:  
            0: emmc不作为启动设备
            1: 选择从boot area partition 1启动
            2: 选择从boot area partition 2启动
            7: 选择从UDA启动

             关于UDA,空间排布如下:
             |-----10MB------|--------- part1(128MB)--------|------ part2(7318MB)-------|
             前面10MB空间中,最前面2个section(2*512Bytes)存放分区表,uboot可以放在第二个扇区之后。

(1)mmc partconf  1 1 1 0
        如果mfgtools烧写系统后,紧接着输入下面任何一条命令(前提是用户自己没有通过uboot烧写uboot到UDA中)

        mmc partconf  1 1 0 0
        mmc partconf  1 1 7 0
        都导致uboot无法启动,需要执行mmc partconf  1 1 1 0后,才能复原。

        这说明:mfgtools默认将uboot烧写在boot area partition 1

(2)mmc partconf  1 1 0 0
        第三个数字为0,表示此emmc设备无法作为启动设备。
        但是结果还是启动了,这可能是因为imx6ull文档中描述的那样,所以能够启动。
          下载.jpg
(3)mmc partconf  1 1 7 0
        第三个数字为7,表示从UDA启动,理所当然,启动的uboot是UDA区域的uboot







回复 支持 反对

使用道具 举报

0

主题

12

帖子

0

精华

新手上路

积分
31
金钱
31
注册时间
2021-8-29
在线时间
12 小时
 楼主| 发表于 2021-9-7 07:52:20 | 显示全部楼层
本帖最后由 arminker 于 2021-9-7 10:54 编辑
仰望星空之云 发表于 2021-9-6 14:46
uboot下你输入mmc?就可以查询指令的用法了

老兄的分析很好,不过参数3,应该是指emmc的硬件分区(至少从实验结果来看是这样,每个硬件分区有自己独立的硬件地址空间),硬件分区0指的应该是UDA,这个UDA上可以进行再划分软件分区(GPT或者MBR方式),通过:
mmc dev 1 0
mmc part   
可以看出来
回复 支持 反对

使用道具 举报

0

主题

12

帖子

0

精华

新手上路

积分
31
金钱
31
注册时间
2021-8-29
在线时间
12 小时
 楼主| 发表于 2021-9-7 07:53:02 | 显示全部楼层
瓦达 发表于 2021-9-6 19:38
为啥我发表的没看到,奇怪了,可能我是新人吧,需要审核
我想说的是,楼主那个手册的截图不是6ull的,应该 ...

谢谢,这个地方很好的解答了为什么mmc partconf 1 1 0 0 也可以启动的疑问
回复 支持 反对

使用道具 举报

9

主题

890

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
2390
金钱
2390
注册时间
2019-9-25
在线时间
397 小时
发表于 2021-9-7 21:50:08 | 显示全部楼层
楼主总结的很好,赞一个
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

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

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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