ARM-LINUX基础
+ -

SD卡磁盘信息

2025-08-04 25 0

153330763390
150208117815

通过WINHEX分析SD卡的信息:
150003780961

  • 00~1FF:前512字节为MBR
  • 200~3FF:全部为00
  • 400~:bootloader数据
  • FAT32
  • EXT3

64字节的分区信息分为4组,每组16字节,其字节如下:

struct
{
    UCHAR bootFlag;//80表示可引导,00表示普通 分区
    UCHAR StartCH1;
    UCHAR StartCH2;
    UCHAR StartCh3;
    UCHAR PartType;//0C:FAT32,07:NTFS/exFAT,0x83:LINUX原生文件系统,0xEE:GPT保护分区。
    UCHAR EndCH1;
    UCHAR EndCh2;
    UCHAR EndCh3;
    ULONG StartLBA;//512字节
    ULONG LengthLBA;
}

BOOT分区

从0x400开始十六进制写入BOOTLOEADER数据
145931795068

FAT32分区

  • 一个LBA为512字节
  • 800H * 200H = 1M 800H=2048
  • 20000H * 200H = 64M

该分区标识为0x80表示一个可引起分区,故会从分区加载系统内核zImage和需要的设备树文件。

bootloader启动后,会自动加载其存储设备中的引起分区。就和BIOS加载硬盘中的引导分区一样。

EXT3

  • 020800h=133120
  • 03b51c00

EMMC分区信息

核心板EMMC设备分区如下:

Disk /dev/mmcblk1: 7.3 GiB, 7818182656 bytes, 15269888 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x42f6af2a

Device         Boot Start      End  Sectors  Size Id Type
/dev/mmcblk1p1 *     2048    67583    65536   32M  c W95 FAT32 (LBA)
/dev/mmcblk1p2      67584 15269887 15202304  7.3G 83 Linux

打印其分区信息

root@ATK-IMX6U:/run/media/mmcblk1p2# dd if=/dev/mmcblk1 bs=1k skip=0  count=4 | hexdump -C
4+0 records in
4+0 records out
00000000  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
000001b0  00 00 00 00 00 00 00 00  2a af f6 42 00 00 80 20  |........*..B... |
000001c0  21 00 0c 34 30 04 00 08  00 00 00 00 01 00 00 34  |!..40..........4|
000001d0  31 04 83 81 cb b6 00 08  01 00 00 f8 e7 00 00 00  |1...............|
000001e0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001f0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 55 aa  |..............U.|
00000200  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
00001000
4096 bytes (4.1 kB, 4.0 KiB) copied, 0.000377667 s, 10.8 MB/s

可以看到,第一个FAT32分区即存储zImage的设备树的信息如下:

  • 起始LBA:00 08 00 00 0x800 * 0x200 = 1MB
  • 长度LBA:00 00 01 00 0x010000 * 0x200 = 32M

另外根据命令行

dd if=/dev/zero of=/dev/mmcblk1 bs=1k seek=768 conv=fsync count=8

可知,其uboot参数信息存储于768K处

root@ATK-IMX6U:/run/media/mmcblk1p2# dd if=/dev/mmcblk1 bs=1k skip=768  count=4 | hexdump -C
4+0 records in
4+0 records out
4096 bytes (4.1 kB, 4.0 KiB) copied, 0.000432333 s, 9.5 MB/s
00000000  41 e6 a5 41 62 61 75 64  72 61 74 65 3d 31 31 35  |A..Abaudrate=115|
00000010  32 30 30 00 62 6f 61 72  64 5f 6e 61 6d 65 3d 45  |200.board_name=E|
00000020  56 4b 00 62 6f 61 72 64  5f 72 65 76 3d 31 34 58  |VK.board_rev=14X|
00000030  31 34 00 62 6f 6f 74 5f  66 64 74 3d 74 72 79 00  |14.boot_fdt=try.|
00000040  62 6f 6f 74 63 6d 64 3d  72 75 6e 20 66 69 6e 64  |bootcmd=run find|
00000050  66 64 74 3b 6d 6d 63 20  64 65 76 20 24 7b 6d 6d  |fdt;mmc dev ${mm|
00000060  63 64 65 76 7d 3b 6d 6d  63 20 64 65 76 20 24 7b  |cdev};mmc dev ${|
00000070  6d 6d 63 64 65 76 7d 3b  20 69 66 20 6d 6d 63 20  |mmcdev}; if mmc |
00000080  72 65 73 63 61 6e 3b 20  74 68 65 6e 20 69 66 20  |rescan; then if |

eMMC 存储空间分为 多个硬件分区:

分区 用途 访问方式
User Data Area (UDA) 存放主文件系统(如 ext4/FAT) /dev/mmcblk1
Boot0/Boot1 存放 Bootloader(如 U-Boot) /dev/mmcblk1boot0, /dev/mmcblk1boot1
RPMB 安全存储(加密密钥、指纹等) 需特殊授权访问
GPx (General Purpose) 用户自定义分区 可选

所以一个/dev/mmcblk1boot0和 /dev/mmcblk1boot1不需像SD卡一样要在/dev/mmcblk1上分区,只需要启用即可。

0 篇笔记 写笔记

关注公众号
取消
感谢您的支持,我会继续努力的!
扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

您的支持,是我们前进的动力!