嵌入式Linux开发板eMMC分区信息查看全攻略:从U-Boot到内核的10种实用方法
调试嵌入式系统时,开发者经常需要确认eMMC存储的分区布局是否与预期一致。无论是验证固件烧录结果,还是排查启动失败问题,掌握分区信息的查看方法都至关重要。本文将详细介绍从U-Boot阶段到Linux内核运行后的多种实用技巧,帮助开发者全面掌握eMMC存储的调试手段。
1. eMMC存储基础与分区概念
eMMC(Embedded MultiMediaCard)是嵌入式设备中最常见的存储解决方案之一。它集成了闪存芯片和控制器,通过标准接口与主控芯片连接。与传统的SD卡相比,eMMC具有更高的可靠性和更简单的硬件设计。
eMMC存储通常分为几个主要区域:
- Boot Area :包含boot0和boot1两个独立分区,每个分区通常为4MB大小,用于存放启动加载程序
- RPMB (Replay Protected Memory Block):受保护的小容量存储区域,用于安全相关操作
- User Data Area :用户数据存储区,可进一步划分为多个逻辑分区
在嵌入式Linux系统中,User Data Area的分区布局尤为重要。典型的嵌入式系统可能包含以下分区:
| 分区 | 典型用途 | 文件系统类型 |
|---|---|---|
| boot | 内核和设备树 | FAT32/ext4 |
| rootfs | 根文件系统 | ext4/squashfs |
| recovery | 恢复系统 | FAT32/ext4 |
| misc | 配置信息 | 原始数据 |
| cache | 临时数据 | ext4 |
提示:不同厂商的开发板可能使用不同的分区方案,查看分区前应先了解目标设备的设计规范。
2. U-Boot阶段查看分区信息
在系统启动的早期阶段,U-Boot提供了多种命令来检查eMMC的分区情况。这些方法在调试启动失败或验证烧录结果时特别有用。
2.1 使用mmc part命令
最直接的方式是在U-Boot命令行中输入
mmc part
命令。以下是一个典型输出示例:
u-boot=> mmc part
Partition Map for MMC device 2 -- Partition Type: DOS
Part Start Sector Num Sectors UUID Type
1 16384 131072 3bb27e95-01 0c
2 1835008 28942336 3bb27e95-02 83
3 147456 98304 3bb27e95-03 83
4 245760 1589248 3bb27e95-04 0f Extd
5 245762 16382 3bb27e95-05 83
6 262146 1572862 3bb27e95-06 83
输出中各列的含义:
- Part :分区编号
- Start Sector :起始扇区号
- Num Sectors :分区占用的扇区数
- UUID :分区唯一标识符
- Type :分区类型代码
2.2 检查boot分区状态
eMMC的特殊boot分区可以通过以下命令查看:
u-boot=> mmc bootpart
boot partition: 1 (0x1)
boot acknowledge: 1 (0x1)
这个命令显示了当前激活的boot分区(boot0或boot1)以及是否启用了boot acknowledge功能。
3. Linux系统下查看分区信息
系统启动完成后,Linux提供了更多工具来检查eMMC的分区布局。这些方法在日常开发和调试中更为常用。
3.1 通过/proc/partitions查看
/proc/partitions
文件包含了系统识别到的所有块设备及其分区信息:
cat /proc/partitions
典型输出如下:
major minor #blocks name
31 0 8192 mtdblock0
179 0 15388672 mmcblk2
179 1 65536 mmcblk2p1
179 2 14471168 mmcblk2p2
179 3 49152 mmcblk2p3
179 4 1 mmcblk2p4
179 5 8191 mmcblk2p5
179 6 786431 mmcblk2p6
各列含义:
- major/minor :设备的主次设备号
- #blocks :分区大小(以1024字节块为单位)
- name :设备名称
3.2 使用lsblk命令
lsblk
命令以树状结构显示块设备信息,更直观:
lsblk
输出示例:
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
mtdblock0 31:0 0 8M 0 disk
mmcblk2 179:0 0 14.7G 0 disk
├─mmcblk2p1 179:1 0 64M 0 part /run/media/mmcblk2p1
├─mmcblk2p2 179:2 0 13.8G 0 part /
├─mmcblk2p3 179:3 0 48M 0 part
├─mmcblk2p4 179:4 0 1K 0 part
├─mmcblk2p5 179:5 0 8M 0 part /run/media/mmcblk2p5
└─mmcblk2p6 179:6 0 768M 0 part /cache
3.3 使用fdisk查看详细分区表
对于更详细的分区信息,可以使用
fdisk
命令:
fdisk -l /dev/mmcblk2
输出示例:
Disk /dev/mmcblk2: 14.69 GiB, 15758000128 bytes, 30777344 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: 0x3bb27e95
Device Boot Start End Sectors Size Id Type
/dev/mmcblk2p1 16384 147455 131072 64M c W95 FAT32 (LBA)
/dev/mmcblk2p2 1835008 30777343 28942336 13.8G 83 Linux
/dev/mmcblk2p3 147456 245759 98304 48M 83 Linux
/dev/mmcblk2p4 245760 1835007 1589248 776M f W95 Ext'd (LBA)
/dev/mmcblk2p5 245762 262143 16382 8M 83 Linux
/dev/mmcblk2p6 262146 1835007 1572862 768M 83 Linux
4. 高级调试技巧
除了基本的分区查看方法外,嵌入式开发中还有一些高级技巧可以帮助深入分析eMMC存储。
4.1 查看内核启动日志
系统启动时的内核消息通常包含eMMC初始化信息:
dmesg | grep mmc
典型输出可能包含:
[ 1.550000] mmc2: new HS200 MMC card at address 0001
[ 1.555000] mmcblk2: mmc2:0001 S10000 14.7 GiB
[ 1.560000] mmcblk2boot0: mmc2:0001 S10000 4.00 MiB
[ 1.565000] mmcblk2boot1: mmc2:0001 S10000 4.00 MiB
[ 1.570000] mmcblk2: p1 p2 p3 p4 < p5 p6 >
4.2 检查sysfs中的设备信息
Linux的sys文件系统提供了丰富的设备信息:
ls -l /sys/class/block/mmcblk2/
可以查看以下重要文件:
-
size:设备总大小(扇区数) -
range:设备范围 -
serial:设备序列号 -
uevent:设备事件信息
4.3 使用专业工具分析
对于更深入的分析,可以安装使用专业工具:
sudo apt install hwinfo
hwinfo --disk
或者使用
lshw
:
sudo lshw -class disk
这些工具可以提供更详细的硬件信息,包括制造商、型号、固件版本等。

被折叠的 条评论
为什么被折叠?



