MMC 卡定义

MMC 协议包含使用以 MMC 控制器挂载的 EMMC 存储芯片,标准 SD卡以及 MicroSD(TF卡)

EMMC 相关

EMMC 寿命查询:

sudo mmc extcsd read /dev/mmcblk0 | grep Life
#或(下面信息不一定存在)
cat /sys/class/mmc_host/mmc0/mmc0\\:0001/pre_eol_info
cat /sys/class/mmc_host/mmc0/mmc0\\:0001/life_time

image.png

image.png

Since e.MMC 5.0, device health status became part of the standard. It provides life time estimation for SLC and MLC areas as well as pre EOL status:
    Device life time estimation type A: life time estimation for SLC eraseblocks, provided in steps of 10%, e.g.:
        0x02 means 10%-20% device life time used.
    Device life time estimation type B: life time estimation for MLC eraseblocks, provided in steps of 10%, e.g.:
        0x02 means 10%-20% device life time used.
    Pre EOL information: overall status for reserved blocks. Possible values are:
        0x00 - Not defined.
        0x01 - Normal: consumed less than 80% of the reserved blocks.
        0x02 - Warning: consumed 80% of the reserved blocks.
        0x03 - Urgent: consumed 90% of the reserved blocks.

相关:https://wiki.friendlyelec.com/wiki/index.php/EMMC/zh

查询一个文件系统(分区)的写入量:

sudo dumpe2fs /dev/mmcblk0p2 | grep Lifetime

#20241208 统计
rpi4b:~:% sudo dumpe2fs /dev/mmcblk0p2 | grep Lifetime
Lifetime writes:          125 GB #BAOALN 32G
rpi4b:~:% sudo dumpe2fs /dev/sda1 | grep Lifetime     
Lifetime writes:          612 GB #IS903 256G
rpi4b:~:% sudo dumpe2fs /dev/sdb1 | grep Lifetime
Lifetime writes:          625 GB #X750S 512G
#250107 统计
rpi4b:~:% sudo dumpe2fs /dev/sdc1 | grep Lifetime
Lifetime writes:          996 GB #X750S 512G(量产过)
rpi4b:~:% sudo dumpe2fs /dev/sde1 | grep Lifetime
Lifetime writes:          633 GB #IS903 256G
rpi4b:~:% sudo dumpe2fs /dev/mmcblk0p2 | grep Lifetime
Lifetime writes:          250 GB #BAOALN 32G (剩余寿命 99.20)
# 250113 切换星火 32G 卡
rpi4b:% sudo dumpe2fs /dev/mmcblk0p2 | grep Lifetime
Lifetime writes:          4289 MB #星火 32G
rpi4b:% sudo dumpe2fs /dev/sdb1 | grep Lifetime
Lifetime writes:          633 GB #IS903 256G
rpi4b:% sudo dumpe2fs /dev/sda1 | grep Lifetime
Lifetime writes:          1527 GB #X750S 512G
# 250531
root@rpi4b:~# dumpe2fs /dev/mmcblk0p2 | grep Lifetime
Lifetime writes:          629 GB #DH-TF-S100 64G
root@rpi4b:~# dumpe2fs /dev/sdb1 | grep Lifetime
Lifetime writes:          774 GB #IS903 256G
root@rpi4b:~# dumpe2fs /dev/sda1 | grep Lifetime
Lifetime writes:          5331 GB #X750S 512G
# 250624
root@rpi4b:~# dumpe2fs /dev/mmcblk0p2 | grep Lifetime
Lifetime writes:          775 GB #DH-TF-S100 64G
root@rpi4b:~# dumpe2fs /dev/sdb1 | grep Lifetime
Lifetime writes:          777 GB #IS903 256G
root@rpi4b:~# dumpe2fs /dev/sda1 | grep Lifetime
Lifetime writes:          6847 GB #X750S 512G;更换 1EFL pSLC 250G 继续测试

EMMC 分区结构:

image.png

一般情况下,Boot Area Partitions 和 RPMB Partition 的容量大小通常都为 4MB,部分芯片厂家也会提供配置的机会。General Purpose Partitions (GPP) 则在出厂时默认不被支持,即不存在这些分区,需要用户主动使能,并配置其所要使用的 GPP 的容量大小,GPP 的数量可以为 1 - 4 个,各个 GPP 的容量大小可以不一样。User Data Area (UDA) 的容量大小则为总容量大小减去其他分区所占用的容量。

RPMB 分区:

RPMB(Replay Protected Memory Block)Partition 是 eMMC 中的一个具有安全特性的分区。 eMMC 在写入数据到 RPMB 时,会校验数据的合法性,只有指定的 Host 才能够写入,同时在读数据时,也提供了签名机制,保证 Host 读取到的数据是 RPMB 内部数据,而不是攻击者伪造的数据。 RPMB 在实际应用中,通常用于存储一些有防止非法篡改需求的数据,例如手机上指纹支付相关的公钥、序列号等。RPMB 可以对写入操作进行鉴权,但是读取并不需要鉴权,任何人都可以进行读取的操作,因此存储到 RPMB 的数据通常会进行加密后再存储。