在linux系统中对闪存类存储器是采用MTD(内存技术设备)类设备驱动实现的,MTD是用于访问闪存类设备(ROM,FLASH)的linux驱动子系统。它的主要目的是使Flash闪存类设备更加容易的被访问,为此它在硬件和上层提供了一个抽象的接口使得在操作系统下我们可以像操作硬盘一样操作这类设备。仔细观察过linux启动信息的朋友会看到以下一段话。
[ 3.291376] nand: 512 MiB, SLC, erase size: 128 KiB, page size: 2048, OOB size: 64 [ 3.295094] 25 ofpart partitions found on MTD device qcom_nand.0 [ 3.302578] Creating 25 MTD partitions on "qcom_nand.0": [ 3.308758] 0x000000000000-0x000000100000 : "0:SBL1" [ 3.315642] 0x000000100000-0x000000200000 : "0:MIBIB" [ 3.320495] 0x000000200000-0x000000280000 : "0:BOOTCONFIG" [ 3.325100] 0x000000280000-0x000000300000 : "0:BOOTCONFIG1" [ 3.330483] 0x000000300000-0x000000600000 : "0:QSEE_1" [ 3.337874] 0x000000600000-0x000000900000 : "0:QSEE" [ 3.343099] 0x000000900000-0x000000980000 : "0:DEVCFG_1" [ 3.346308] 0x000000980000-0x000000a00000 : "0:DEVCFG" [ 3.351498] 0x000000a00000-0x000000a80000 : "0:APDP" [ 3.356496] 0x000000a80000-0x000000b00000 : "0:APDP_1" [ 3.361601] 0x000000b00000-0x000000b80000 : "0:RPM_1" [ 3.366584] 0x000000b80000-0x000000c00000 : "0:RPM" [ 3.371717] 0x000000c00000-0x000000c80000 : "0:CDT_1" [ 3.376428] 0x000000c80000-0x000000d00000 : "0:CDT" [ 3.381630] 0x000000d00000-0x000000d80000 : "0:APPSBLENV" [ 3.386347] 0x000000d80000-0x000000e80000 : "0:APPSBL_1" [ 3.392203] 0x000000e80000-0x000000f80000 : "0:APPSBL" [ 3.397583] 0x000000f80000-0x000001000000 : "0:ART" [ 3.402148] 0x000001000000-0x000006600000 : "rootfs_1" [ 3.470810] 0x000006600000-0x000006f00000 : "0:WIFIFW_1" [ 3.478369] 0x000006f00000-0x00000c500000 : "rootfs" [ 3.543701] mtd: device 20 (rootfs) set to be root fi3.543963] mtdspli"0:WIFIFW" [ 3.560628] 0x00000ce00000-0x00000ce80000 : "0:ETHPHYFW" [ 3.561844] 0x00000ce80000-0x00000cf80000 : "0:board_data" [ 3.566604] 0x00000cf80000-0x00001e000000 : "0:arc_data" [ 3.775504] spmi spmi-0: PMIC Arb Version-2 (0x20010000)
Creating 25 MTD partitions on "qcom_nand.0":
这段话的意思是,系统在qcom_nand 设备上创建了是25个分区,这几个分区的说明如表所示
分区id号 | 分区位置 | 分区大小 | 分区作用 |
0:SBL1 | 0x000000000000-0x000000100000 | 192KB | 引导程序 |
0:MIBIB | 0x000000030000-0x000000040000 | 64KB | 引导程序配置 |
0:BOOTCONFIG | 0x000000040000-0x000000050000 | 64KB | MT7628初始参数 |
0:BOOTCONFIG1 | 0x000000050000-0x000001000000 | 15.68MB | |
0:QSEE_1 | 0x0000001853f2-0x000001000000 | 14827KB | 固件分区 文件系统子集 |
0:QSEE | 0x0000 00670000-0x000001000000 |
9792KB | 固件分区 文件系统子集 可写分区子集 |
0:DEVCFG_1 | |||
0:DEVCFG | |||
0:APDP | |||
0:APDP_1 | |||
0:RPM_1 | |||
0:RPM | |||
0:CDT_1 | |||
0:CDT | |||
0:APPSBLENV | |||
0:APPSBL_1 | |||
0:APPSBL |
|||
0:APPSBL | |||
0:ART | |||
rootfs_1 | |||
0:WIFIFW_1 | |||
rootfs | |||
0:ETHPHYFW | |||
0:board_data | |||
0:arc_data | |||
由于嵌入式的Flash容量很小,没有调整的必要,所以分区都是固定的,也因此不需要"分区表"这种在计算机