Chipset: msm8926
OS: Android4.4
Kernel: 3.4.0
在N久之前的会议上留下了两个问题:
1. 内核在加载emmc驱动时是如何知道当前有几个分区的?
2. 如何知道/dev/mmcblkXpX对应的是哪个分区呢?
读取分区
加载sd/emmc驱动的时候,有如下流程:
![[笔记分享] [eMMC] 内核eMMC分区及对应名字读取插图1 这里写图片描述](https://img.mushiming.top/app/bianchenghao_cn/29f8bd9e13bb4e7bb9fd013cbcb4b8ba.jpg)
来看看Check_partition():
核心的部分是check_part这个结构体,里面放的都是对应的解析分区的算法:
![[笔记分享] [eMMC] 内核eMMC分区及对应名字读取插图5 这里写图片描述](https://img.mushiming.top/app/bianchenghao_cn/fe6d473648ed495e96dc9260f4a69641.jpg)
算法不是我们需要关注的,解析哪一块区域等小弟看了partition再给大家解释吧。
解析完成之后放到struct parsed_partitions也就是这里的state变量的parts元素里:
![[笔记分享] [eMMC] 内核eMMC分区及对应名字读取插图7 这里写图片描述](https://img.mushiming.top/app/bianchenghao_cn/45937ebaa2f24150bf56d2013091a7bf.jpg)
然后通过add_partition()将这些part信息添加到disk里去。
有多少分区可以从开机Log看到:
![[笔记分享] [eMMC] 内核eMMC分区及对应名字读取插图9 这里写图片描述](https://img.mushiming.top/app/bianchenghao_cn/fc9f499b8476463185113c804781cefa.jpg)
确实我们在8926平台上定义的分区个数是34个:
[non_hlos\common\build\partition_f5.xml]
分区对应label
其实Linux已经在/dev/block下提供了查看方法:
从本质上来说,这些信息是从解析出来的struct parsed_partitions中的info变量获取的:
![[笔记分享] [eMMC] 内核eMMC分区及对应名字读取插图15 这里写图片描述](https://img.mushiming.top/app/bianchenghao_cn/4fc6617f6be347e0a413a2f152691ce3.jpg)
对应的volname存的就是分区的label name.
Kris.Fei
2014/09/11
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/37924.html
![[笔记分享] [eMMC] 内核eMMC分区及对应名字读取插图3 这里写图片描述](https://img.mushiming.top/app/bianchenghao_cn/aebf278fb591450a8d2be2eb5326c0a0.jpg)
![[笔记分享] [eMMC] 内核eMMC分区及对应名字读取插图11 这里写图片描述](https://img.mushiming.top/app/bianchenghao_cn/d14737b3d65b48bcbf16e065c1e2eea0.jpg)
![[笔记分享] [eMMC] 内核eMMC分区及对应名字读取插图13 这里写图片描述](https://img.mushiming.top/app/bianchenghao_cn/ca26766f2dc8499083b075b5e53e0b78.jpg)