陈工-创龙科技 发表于 2026-7-14 10:07:02

嵌入式存储健康助手:创龙 TL3588 设备 eMMC 全维度检测开发方案

本帖最后由 陈工-创龙科技 于 2026-7-14 10:08 编辑

前言本文主要介绍基于单板机/工控机的eMMC健康管理开发案例,实现读取板载eMMC内部健康管理信息的功能。备注:本文适用于SBC-TL3588单板机及EPC-TL3588工控机系列(由SBC-TL3588单板机搭配扩展板与外壳组成),文中所有演示均基于4GByte LPDDR4X + 32GByte eMMC硬件配置的单板机开展。开发环境Windows开发环境:Windows10 64bit、Windows7 64bitLinux开发环境:VMware16.2.5、Ubuntu22.04.4 64bit系统版本:Tronlong-Desktop 22.04(类Ubuntu)、Linux-6.1.141、U-Boot 2017.09sysroot:rk3588-Tronlong-Desktop-22.04-sysroot-[版本号].tar.gz应用开发交叉编译工具链:aarch64-linux-gnu-gcc(版本为11.4.0,通过网络下载)术语表为便于阅读,下表对文档出现的关键术语进行解释;对于广泛认同释义的术语,在此不做注释。
https://file1.elecfans.com/web3/M00/6A/F9/wKgZPGpVjKSASnKpAABYqyqvRyg528.png

注意事项(1)无特殊说明,默认从eMMC启动系统,使用DEBUG作为调试串口。(2)我司提供的eMMC健康管理开发案例emmc_get_info位于产品资料“4-软件资料\Demo\base-demos\”目录下,具体说明如下。https://file1.elecfans.com/web3/M00/6A/F4/wKgZO2pVjLqAedYwAAAXaHd5Gn8637.png
一、案例说明案例功能:通过向程序传入eMMC的设备节点路径、品牌等参数,实现读取eMMC内部健康管理信息的功能。该程序对获取的信息进行整理后打印输出,并同步记录日志,便于**查阅。程序流程图如下图所示。
https://file1.elecfans.com/web3/M00/6A/F4/wKgZO2pVjM6ADeBbAAwmGBqtO20824.png图 1


二、案例测试将单板机启动后,请将案例lib目录下的所有日志库文件拷贝至文件系统的"/usr/lib/"目录下,并将案例bin目录下emmc_get_info可执行文件拷贝至文件系统的任意目录下,执行如下命令查看程序参数说明。Target# ./emmc_get_info /dev/mmcblk0 -f h
https://file1.elecfans.com/web3/M00/6A/F4/wKgZO2pVjOCAItnuAAA0f3TYEek916.png图 2
参数解析:-c:查询eMMC extcsd;-h:查看帮助菜单;-bw:查询佰维存储品牌eMMC寿命评估信息;-jbl:查询江波龙品牌eMMC寿命评估信息;-ky:查询康盈品牌eMMC寿命评估信息。
2.1 信息查询(1)查询eMMC的EXT_CSD寄存器内容eMMC作为广泛应用于移动设备、嵌入式系统的存储解决方案,其功能配置、状态监控和高级特性主要通过EXT_CSD寄存器实现。执行如下命令,可查询eMMC的EXT_CSD寄存器(扩展配置寄存器)内容。Target# ./emmc_get_info /dev/mmcblk0 -f c
https://file1.elecfans.com/web3/M00/6A/F9/wKgZPGpVjPSAOQxiAADZkt3yeLI843.png图 3
https://file1.elecfans.com/web3/M00/6A/F4/wKgZO2pVjPSAGGG0AACpvUaEC-A958.png图 4
https://file1.elecfans.com/web3/M00/6A/F4/wKgZO2pVjPSAT14jAAFT7fGs_Ko612.png图 5
(2)查询eMMC寿命状态信息本次演示所使用的单板机,其板载eMMC的厂商为佰维存储,颗粒类型为MLC。执行如下命令,查询eMMC寿命状态信息。Target# ./emmc_get_info /dev/mmcblk0 -f bw备注:目前单板机所有配置板载eMMC的厂商均为佰维存储。
https://file1.elecfans.com/web3/M00/6A/F9/wKgZPGpVjR-AWlUhAAA59Y-L7Co743.png图 6
https://file1.elecfans.com/web3/M00/6A/F4/wKgZO2pVjR-AVEVMAABfToSRM7k082.png
eMMC的颗粒类型有SLC、MLC、TLC等,它们在存储数据的方式、性能、寿命以及成本等方面存在一定差异。SLC(Single-Level Cell)为单层存储单元,特点是寿命长、速度快,通常用于缓存或关键数据。MLC/TLC(Multi/Triple-Level Cell)为多层存储单元,容量大但寿命较短,用于主存储区。本次演示所使用的单板机,其板载eMMC颗粒类型为MLC。以下对本次获取的eMMC相关信息说明如下:(1)MLC_TLC Min_Erase_Count、MLC_TLC Max_Erase_Count、MLC_TLC Avg_Erase_Count擦写次数分布在1~4次,相对eMMC的3000次可循环擦写次数来说,健康状态良好。(2)eMMC Run Bad Pieces:4,即运行过程中产生的4个坏块数。(3)Host Total_Write:25161MB,当前总数据写入量对eMMC寿命几乎无影响。(4)eMMC Life Time Estimation A:0x00,基于SLC颗粒类型eMMC的最大擦写次数磨损的寿命预估A。(5)eMMC Life Time Estimation B:0x01,基于MLC/TLC颗粒类型eMMC的最大擦写次数磨损的寿命预估B。(6)00%-10% device life time used,说明eMMC消耗寿命≤10%。https://file1.elecfans.com/web3/M00/6A/F6/wKgZO2pVkpiAZtcaAAAfa1bS0Ns772.png
2.2 日志功能程序首次执行后将自动生成zlog日志配置文件,并且该文件默认关闭日志Log信息。如需开启日志Log信息,请执行如下命令修改zlog.conf日志配置文件。Target#vi zlog.conf

https://file1.elecfans.com/web3/M00/6A/F6/wKgZO2pVkt6AEu2sAAAFK7vpIbs996.png图 7
修改内容如下:cat.* //取消注释
https://file1.elecfans.com/web3/M00/51/C8/wKgZPGnLcmiAb8L7AAAudGL_Sbc380.png图 8
再次运行程序将在当前目录下生成日志文件zlog.log。
https://file1.elecfans.com/web3/M00/6A/F6/wKgZO2pVk2-APHW7AADkF0o_teE319.png图 9
三、案例编译请将案例src文件夹拷贝至Ubuntu工作目录下,请先确保已参考《系统开发手册》文档安装LinuxSDK并完成LinuxSDK编译。在案例src目录执行如下命令,配置交叉编译工具链环境变量,进行案例编译。编译完成后,将在当前目录下生成可执行文件。Host# source /home/tronlong/RK3588/environmentHost# make
https://file1.elecfans.com/web3/M00/6A/FB/wKgZPGpVk4OAYBjLAAD5IHmd2RY942.png图 10
四、关键代码(1)打印说明菜单。

https://file1.elecfans.com/web3/M00/6A/F6/wKgZO2pVk5aABMpzAABKslGg2EI845.png图 11 main.c


(2)zlog初始化。

https://file1.elecfans.com/web3/M00/6A/F6/wKgZO2pVk6OAFbPRAACQr4fLh9o172.png图 12 supplement_zlog.c


(3)创建zlog配置文件。

https://file1.elecfans.com/web3/M00/6A/F6/wKgZO2pVk6-AI-JSAAA_pAM0XA8587.png图 13 supplement_zlog.c


(4)读取csd寄存器信息。

https://file1.elecfans.com/web3/M00/6A/FB/wKgZPGpVk72AcD8oAAC0-bQvt6A764.png图 14 extra_mmc.c


(5)查看各eMMC品牌的寿命评估信息。
https://file1.elecfans.com/web3/M00/6A/F6/wKgZO2pVk8eAG8ElAAA9Q6L0X0k842.png图 15 main.c
页: [1]
查看完整版本: 嵌入式存储健康助手:创龙 TL3588 设备 eMMC 全维度检测开发方案