doc:appunti:hardware:android_partitions
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revisionLast revisionBoth sides next revision | ||
doc:appunti:hardware:android_partitions [2020/01/17 07:29] – [eMMC Flash and NAND Flash] niccolo | doc:appunti:hardware:android_partitions [2020/01/17 12:37] – [The Scatter File] niccolo | ||
---|---|---|---|
Line 7: | Line 7: | ||
**eMMC Flash** combines NAND memory with a built-in controller, that handles most of the things you have to take care of when dealing with NAND flash. | **eMMC Flash** combines NAND memory with a built-in controller, that handles most of the things you have to take care of when dealing with NAND flash. | ||
- | ===== /proc/partitions ===== | + | |
+ | ===== The Scatter File ===== | ||
+ | |||
+ | A Scatter File is a .txt file which is used to describe **parts of flash memory** in an Android device which is running on a MediaTek’s MTK chipeset. Usually, such files are needed at the time of flashing firmware using tools like the **SP Flash Tool**. | ||
+ | |||
+ | Here it is an **excerpt** of a scatter file, showing **where** to **flash** or **readback** the **recovery partition**: | ||
+ | |||
+ | < | ||
+ | - partition_index: | ||
+ | partition_name: | ||
+ | file_name: recovery.img | ||
+ | is_download: | ||
+ | type: NORMAL_ROM | ||
+ | linear_start_addr: | ||
+ | physical_start_addr: | ||
+ | partition_size: | ||
+ | region: EMMC_USER | ||
+ | storage: HW_STORAGE_EMMC | ||
+ | boundary_check: | ||
+ | is_reserved: | ||
+ | operation_type: | ||
+ | reserve: 0x00 | ||
+ | </file> | ||
+ | |||
+ | The most important data is **linear_start_addr** and **physical_start_addr** (which are always the same, or not?) that states the starting point of that partition into the flash memory, and **partition_size** which is obviously its lenght. | ||
+ | |||
+ | The **SP Flash Tool** program - when performing a //download// (it means a // | ||
+ | ===== EMMC Regions ===== | ||
+ | |||
+ | **Embedded Multi-Media Controller** (eMMC) refers to a package consisting of both flash memory and a flash memory controller integrated into a single on-board chip. Device supports several hardware | ||
+ | |||
+ | * **BOOT** - one or more small partitions intended for boot firmware; eMMC 4.3 spec requires 2 boot partitions. | ||
+ | * **RPMB** - Replay Protected Memory Block - intended to store secure data (ie DRM content protection keys); eMMC 4.4 spec adds the requirement of an RPMB partition. | ||
+ | * **USER** - a large partition intended for general storage; eMMC 4.3 spec requires 1 user partition. | ||
+ | |||
+ | Into a **scatter file** you can see references to **region** labeled **EMMC_BOOT_1** and **EMMC_USER**, | ||
+ | ===== Inspecting partitions on the command line ===== | ||
+ | |||
+ | The following commands were executed on a **ZTE Blade A610**, running **Android 6.0**, via the **adb shell** command line. The phone was rooted so that the **su** command was available. | ||
+ | |||
+ | ==== cat / | ||
< | < | ||
Line 45: | Line 85: | ||
</ | </ | ||
- | ===== gdisk ===== | + | The **mmcblk0** partition is actually the eMMC **USER** region, sized 15388672 blocks (15028 Mb). It is in turn partitioned in 23 partitions. The **boot0**, **boot1** and **rpmb** partitions have a size of 4096 blocks each, i.e. **4194304 (0x400000) bytes**. |
+ | ==== sgdisk | ||
+ | |||
+ | The **/ | ||
< | < | ||
- | gdisk --print / | + | sgdisk |
Disk / | Disk / | ||
Logical sector size: 512 bytes | Logical sector size: 512 bytes | ||
Line 82: | Line 125: | ||
23 30743552 | 23 30743552 | ||
</ | </ | ||
+ | |||
+ | Doing the math, you can see that the 23 partitions existing in **mmcblk0** leave some space: One is at the begin, sized 1024 sectors or **524288 (0x80000) bytes**. The other unpartitioned space is at the end, the size can be calculated by the difference of size shown by '' | ||
+ | ==== / | ||
+ | |||
+ | The partition **/ | ||
+ | |||
+ | The actual Linux device content starts with the characters **EMMC_BOOT**. It seems that it is an header of **2048 (0x800) bytes** and the actual preloader follows that header. FIXME Some stock ROMs include the preloader image, without that header. But if you readback the preloader partition using **SP Flash Tool**, you get an image with that heder included. | ||
===== Web References ===== | ===== Web References ===== | ||
- | * **[[http:// | + | * **[[http:// |
* **[[http:// | * **[[http:// | ||
+ | * **[[http:// |