eMMC应用指南¶
1. 简介¶
1.1 定义¶
单eMMC:eMMC仅作为存储设备,不从该eMMC启动。
eMMC启动:系统从eMMC启动(适用于仅外挂eMMC或在PSRAM上启动的方案)。
2. 单eMMC使用教程¶
适用范围¶
芯片系列:58系列、52A系列(内置NORFlash)、56系列(外挂NOR/nandFlash,通过SD2接口连接eMMC)。
硬件板子:mod566(sdio-tf接口,SD2,驱动IP为drv_sdio)、mod587(SD1接口,驱动IP为drv_sdhci)、EVB567、EVB587。
示例:以下教程以mod566为例(硬件使用sd1接口,驱动IP为sdhci)。
2.1 pinmux配置¶
确认eMMC接口与芯片手册中的SD接口对应。
SD接口pinmux配置参考:
上电配置:在对应芯片平台的
bsp_power.c文件中添加上电函数:
上电调用:在芯片平台的
bsp_init.c(无此文件则在bsp_io.c)中调用:
2.3 excel表配置¶
code及root分区放在内部/外挂NOR Flash,eMMC仅作为外部存储。
配置eMMC大小及blk对齐:
配置文件系统分区及目录:
更多配置参考《Flash分区应用笔记》。
2.4 启动log¶
eMMC初始化log:
文件系统挂载log(首次mount会自动格式化):
2.5 异常排查¶
2.5.1 初始化失败¶
检查eMMC供电是否正常,reset引脚是否为高电平。
用“LightWork.exe”验证pinmux与芯片引脚功能表一致(以566的PA27-SD1_CMD为例):
确认时钟使能:若“SDEMMC1”为0,需调用
HAL_RCC_EnableModule(RCC_MOD_SDMMC1);开启时钟:
确认时钟源配置:
读写超时:检查访问buff地址(不可在ITCM区域(0x00000000),需在SRAM/PSRAM且4字节对齐)。
2.5.2 mount失败¶
文件系统个数不足:增加menuconfig中可挂载分区数。
无LBR分区信息:首次加载时格式化。
读写超时:可能因供电不稳、高频走线问题等,可降低频率尝试。
3. eMMC启动教程¶
适用范围
场景:芯片仅外挂eMMC,或code放eMMC并在PSRAM启动。
芯片:52x、56x、58x(以566外挂eMMC为例)。
3.1 配置步骤¶
3.1.1 pinmux配置¶
与“单eMMC使用教程”一致。
3.1.2 menuconfig配置¶
除单eMMC配置外,需额外设置:
关闭“OTA_EXT_V3”(仅适用于NOR方案升级):
打开“OTA_56X_NAND”(临时解决编译报错):
3.1.3 excel表配置¶
关闭其他外部Flash选项,仅开启SD0;双PSRAM需打开PSRAM1和PSRAM2:
配置code启动地址及分区信息:
更多配置参考《Flash分区应用笔记》。
3.1.4 启动log¶
文件系统加载log:
3.2 异常排查¶
启动无log(可能因eMMC搬移到PSRAM异常):
用“SIFLI Butterfli”工具对比eMMC内code与原始code:
确认eMMC搬移到PSRAM的地址正确(566需为PSRAM1,XIP地址对应PSRAM1地址)。
其他初始化异常与“单eMMC”排查方法一致。
4. eMMC低功耗模式¶
eMMC低功耗分两种模式:
掉电模式(SDIO_POWER_PM_ALL_DOWN)
不掉电模式(SDIO_POWER_PM_UP)
供电说明:eMMC由VCC(器件电源)和VCCQ(颗粒电源)供电,功耗对应Icc与Iccq(参考规格书)。
4.1 基础配置¶
使能standby模式:
使能sdio低功耗模式(默认不掉电):
(注:目前支持standby模式)
4.2 掉电模式(SDIO_POWER_PM_ALL_DOWN)¶
menuconfig配置:
特点:睡眠唤醒后需重新初始化eMMC,耗时约50ms~60ms。
4.3 不掉电模式(SDIO_POWER_PM_UP)¶
menuconfig配置:
特点:睡眠唤醒仅恢复HCPU端eMMC寄存器。
5. FAQ¶
驱动文件问题:联系FAE人员对齐驱动文件。
eMMC裸读写方式: 初始化完成后调用接口(引用
#include "mmcsd_core.h"),addr基地址为0xa0000000:
buff地址错误: 报错如图时,检查buff地址是否4字节对齐且非0x00000000开头:
finsh测试指令:
带文件系统:
fs_read /1.txt 1024 /* 读 / 1.txt,大小 1024K */ fs_write /1.txt 1024 /* 写 / 1.txt,大小 1024K */
裸读写:
fs_read_code 10 85 1024 /* 读地址 0xa0000000+10,buff 初始数据 85,大小 1024 字节 */ fs_write_code 10 85 1024 /* 写地址 0xa0000000+10,数据 85,大小 1024 字节 */
其他注意事项:
55X不支持DDR模式。
eMMC读写速率低:参考eMMC读写性能文件。
睡眠唤醒方案:参考硬件设计手册。




