《DFZU2EG_4EV MPSoC之嵌入式Vitis开发指南》第十五章 eMMC读写测试实验​
  95kVyaJuybju 2023年11月13日 15 0

eMMC读写测试实验​

eMMC是一种嵌入式多媒体存储卡,它具有存储容量大、传输速度快、易于使用等优点,主要应用于对存储容量有较高要求的消费电子产品,如智能手机、平板电脑和车载导航等。本章我们将使用MPSOC开发板学习如何对eMMC卡进行读写操作。

本章包括以下几个部分:

  1. 简介
  2. 实验任务
  3. 硬件设计
  4. 软件设计
  5. 下载验证


简介

eMMC的英文全称是Embedded Multi Media Card,即嵌入式多媒体卡(又叫嵌入式存储),eMMC是MMC协会所订立的内嵌式存储器标准规格,主要是针对手机或者平板电脑为主,是一种非易失性的存储器件。

eMMC采用统一的MMC标准接口,把高密度的NAND Flash以及Device Controller(也叫Flash控制器)封装在一颗BGA芯片中,从而减少了对PCB主板空间的占用。Flash控制器用于对Flash进行管理,相比于直接将NAND Flash接入到Host端(MPSOC开发板),eMMC 屏蔽了NAND Flash的物理特性,可以减少Host端软件的复杂度,让Host端专注于应用,省去对NAND Flash进行特殊的处理。同时,eMMC通过使用Cache、Memory Array等技术,在读写性能上也比NAND Flash要好很多。

正是由于eMMC采用统一的MMC标准接口,使得我们可以像操作SD卡一样操作eMMC,SD卡和eMMC的接口和传输协议类似,只不过SD卡是一种外置卡,方便插拔;而eMMC是直接焊接在主板上,其连接性更为可靠,读写速率也更高。所以,eMMC更像是直接焊接在主板上的SD卡,我们甚至能看到,有些网友将废旧手机上的eMMC拆下,飞线到读卡器卡槽中,把eMMC当成TF卡来使用。

MPSOC开发板板载的eMMC芯片型号是KLM8G1GETF,存储容量为8GByte,可以用于存储一些用户数据,其和MPSOC开发板的连接示意图如下:

《DFZU2EG_4EV MPSoC之嵌入式Vitis开发指南》第十五章 eMMC读写测试实验​_开发板


15.1.1 MPSOC开发板和eMMC连接示意图

CLK:时钟信号,用于对命令和数据进行同步。

RST:复位信号。

CMD:双向信号,用于对器件进行初始化和传输命令。

DAT0~7双向数据信号。

随着eMMC协议的版本迭代,eMMC总线的速率也越来越高。为了兼容旧版本的eMMC Device,所有Devices在上电启动或者Reset后,都会先进入兼容速率模式(Backward Compatible Mode)。在完成eMMC Devices的初始化后,Host可以通过特定的流程,让Device进入高速率模式。在兼容速率模式下,eMMC的时钟频率范围是0~26Mhz;而在高速率模式下,时钟频率最高可达200Mhz。

eMMC为并行数据接口,且为半双工通信,如果想提高传输速率,需要提高时钟和数据的频率。由于eMMC是并口,快速并行接口同步就是一个瓶颈了,即便同步问题解决了,信号之间的串扰也是无法避免的。因此对于更高带宽传输的场景,一般采用UFSUniversal Flash Storage,通用闪存存储),UFS闪存是基于串行数据传输技术打造,其内部存储单元与主控之间虽然只有两个数据通道,但由于采用串行数据传输,其实际数据传输时速远超基于并行技术的eMMC闪存。此外UFS闪存支持的是全双工模式,所有数据通道均可以同时执行读写操作,在数据读写的响应速度上也要凌驾于eMMC闪存,但同时其成本也更高。

实验任务

本章的实验任务是通过Xilinx Vitis自带的FATFS库,完成对eMMC读写的功能,并将读写测试结果通过串口打印出来。

硬件设计

我们的MPSOC开发板上板载了一个eMMC(U16),原理图如下图所示:

《DFZU2EG_4EV MPSoC之嵌入式Vitis开发指南》第十五章 eMMC读写测试实验​_开发板_02


15.3.1 eMMC原理图

中的U19AKLM8G1GETF芯片原理图中的一部分,由于eMMC的引脚较多,且大多数为没有用到的引脚(NC),因此这里仅贴出关键引脚的原理图。由上图可知,eMMC共8个数据IO。另外eMMCIO电平(VCC_PSAUX)为1.8V

从实验任务我们可以画出如下的系统框图,DDR中存放和运行程序、SD控制器驱动eMMC,UART实现串口通信。

《DFZU2EG_4EV MPSoC之嵌入式Vitis开发指南》第十五章 eMMC读写测试实验​_引脚_03


15.3.2 系统框图

由系统框图可知,本次实验和“SD卡读写TXT文本实验”相比,只是将TF卡替换成eMMC,因为eMMC的MMC接口的驱动时序和SD卡非常类似,我们完全可以像驱动SD卡一样驱动eMMC,并且eMMC也是支持FATFS文件系统的。所以上图是在MPSOC嵌入式最小系统的基础上,添加了SD控制器,用于驱动eMMC。需要说明的是,eMMC连接的是PS的MIO端口,因此本次实验没有用到PL的资源。

我们直接在“Hello World实验”的基础上,将工程另存为“emmc_rw”工程。

这里简单介绍下Zynq Ultrascale+ MPSOC的配置界面,如所示。配置界面选择的是SD0 MIO13..22,接口类型(Slot Type)选择的是eMMC,Data Transfer Mode选择8bit,并勾选复位引脚,如下图所示:

《DFZU2EG_4EV MPSoC之嵌入式Vitis开发指南》第十五章 eMMC读写测试实验​_闪存_04


15.3.3 SD卡控制器配置界面

需要注意的是,eMMC的引脚连接到MPSOC的Bank0端口,Bank0的IO电压为1.8V,因此在MIO的配置界面将Bank0的电压改为“LVCMOS 1.8V”。

嵌入式系统最终搭建的框图如15.3.4所示:

《DFZU2EG_4EV MPSoC之嵌入式Vitis开发指南》第十五章 eMMC读写测试实验​_开发板_05


15.3.4 最终原理图界面

最后导出HardWare,并打开Vitis软件。

软件设计

在硬件设计的最后,我们打开了Vitis开发环境。

在菜单栏中选择File->New->Application Project新建一个名为emmc_rw的Vitis应用工程

接下来的操作,和“SD卡读写TXT文本实验”一样,甚至软件代码也可以直接拷贝过来,不用做任何修改,故此处不再赘述。

下载验证

首先我将下载器与开发板上的JTAG接口连接,下载器另外一端与电脑连接然后使用USB连接线将开发板上的USB_UART接口(PS_PORT)与电脑连接,用于口通信。eMMC位于ZYNQ FPGA的右下方位置,如下图所示。

《DFZU2EG_4EV MPSoC之嵌入式Vitis开发指南》第十五章 eMMC读写测试实验​_引脚_06


15.5.1 开发板上的eMMC位置

最后连接开发板的电源,给开发板上电。

软件下载完成后,在下方的Terminal中可以看到应用程序打印的信息src_str is equal to dest_str, eMMC test success!”,如下图所示:

《DFZU2EG_4EV MPSoC之嵌入式Vitis开发指南》第十五章 eMMC读写测试实验​_闪存_07


15.5.2 打印eMMC读写测试结果

由上图可知,显示写入的字符和读出的字符一致,说明eMMC读写测试成功。

由于eMMC是焊接在开发板上的,我们不可能像TF卡一样,在电脑上查看是否有创建“ZDYZ.txt”文本,仅从串口中打印的信息可以得知,eMMC读写测试成功。

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月13日 0

暂无评论

推荐阅读
  QtpjMRSUUfXb   2023年12月08日   35   0   0 引脚#include看门狗
  UYSNSBVoGd8R   2023年12月08日   10   0   0 引脚#include#define
95kVyaJuybju