嵌入式Linux开发板eMMC分区信息查看全攻略:从U-Boot到内核的10种实用方法

嵌入式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

这些工具可以提供更详细的硬件信息,包括制造商、型号、固件版本等。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值