1. 程式人生 > >[筆記分享] [eMMC] 核心eMMC分割槽及對應名字讀取

[筆記分享] [eMMC] 核心eMMC分割槽及對應名字讀取

Chipset: msm8926
OS: Android4.4
Kernel: 3.4.0

在N久之前的會議上留下了兩個問題:
1. 核心在載入emmc驅動時是如何知道當前有幾個分割槽的?
2. 如何知道/dev/mmcblkXpX對應的是哪個分割槽呢?

讀取分割槽

載入sd/emmc驅動的時候,有如下流程:
這裡寫圖片描述
來看看Check_partition():
這裡寫圖片描述

核心的部分是check_part這個結構體,裡面放的都是對應的解析分割槽的演算法:
這裡寫圖片描述
演算法不是我們需要關注的,解析哪一塊區域等小弟看了partition再給大家解釋吧。
解析完成之後放到struct parsed_partitions也就是這裡的state變數的parts元素裡:
這裡寫圖片描述


然後通過add_partition()將這些part資訊新增到disk裡去。

有多少分割槽可以從開機Log看到:
這裡寫圖片描述
確實我們在8926平臺上定義的分割槽個數是34個:
[non_hlos\common\build\partition_f5.xml]
這裡寫圖片描述

分割槽對應label

其實Linux已經在/dev/block下提供了檢視方法:
這裡寫圖片描述

從本質上來說,這些資訊是從解析出來的struct parsed_partitions中的info變數獲取的:
這裡寫圖片描述
對應的volname存的就是分割槽的label name.

                                                    Kris.Fei
                                                    2014/09/11