当前位置: 首页 > news >正文

【正点原子FPGA连载】第十五章eMMC读写测试实验 摘自【正点原子】DFZU2EG_4EV MPSoC之嵌入式Vitis开发指南

1)实验平台:正点原子MPSoC开发板
2)平台购买地址:https://detail.tmall.com/item.htm?id=692450874670
3)全套实验源码+手册+视频下载地址: http://www.openedv.com/thread-340252-1-1.html

第十五章eMMC读写测试实验

eMMC是一种嵌入式多媒体存储卡,它具有存储容量大、传输速度快、易于使用等优点,主要应用于对存储容量有较高要求的消费电子产品,如智能手机、平板电脑和车载导航等。本章我们将使用MPSOC开发板学习如何对eMMC卡进行读写操作。
本章包括以下几个部分:
1515.1简介
15.2实验任务
15.3硬件设计
15.4软件设计
15.5下载验证

15.1简介

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开发板的连接示意图如下:
在这里插入图片描述

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

15.2实验任务

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

15.3硬件设计

我们的MPSOC开发板上板载了一个eMMC(U16),原理图如下图所示:
在这里插入图片描述

图15.3.1 eMMC原理图
图中的U19A是KLM8G1GETF芯片原理图中的一部分,由于eMMC的引脚较多,且大多数为没有用到的引脚(NC),因此这里仅贴出关键引脚的原理图。由上图可知,eMMC共8个数据IO。另外eMMC的IO电平(VCC_PSAUX)为1.8V。
从实验任务我们可以画出如下的系统框图,DDR中存放和运行程序、SD控制器驱动eMMC,UART实现串口通信。
在这里插入图片描述

图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,并勾选复位引脚,如下图所示:
在这里插入图片描述

图15.3.3 SD卡控制器配置界面
需要注意的是,eMMC的引脚连接到MPSOC的Bank0端口,Bank0的IO电压为1.8V,因此在MIO的配置界面将Bank0的电压改为“LVCMOS 1.8V”。
嵌入式系统最终搭建的框图如图15.3.4所示:
在这里插入图片描述

图15.3.4 最终原理图界面
最后导出HardWare,并打开Vitis软件。
15.4软件设计
在硬件设计的最后,我们打开了Vitis开发环境。
在菜单栏中选择File->New->Application Project,新建一个名为emmc_rw的Vitis应用工程。
接下来的操作,和“SD卡读写TXT文本实验”一样,甚至软件代码也可以直接拷贝过来,不用做任何修改,故此处不再赘述。
15.5下载验证
首先我们将下载器与开发板上的JTAG接口连接,下载器另外一端与电脑连接。然后使用USB连接线将开发板上的USB_UART接口(PS_PORT)与电脑连接,用于串口通信。eMMC位于ZYNQ FPGA的右下方位置,如下图所示。
在这里插入图片描述

图 15.5.1 开发板上的eMMC位置
最后连接开发板的电源,给开发板上电。
软件下载完成后,在下方的Terminal中可以看到应用程序打印的信息“src_str is equal to dest_str, eMMC test success!”,如下图所示:
在这里插入图片描述

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

相关文章:

【正点原子FPGA连载】第十五章eMMC读写测试实验 摘自【正点原子】DFZU2EG_4EV MPSoC之嵌入式Vitis开发指南

1)实验平台:正点原子MPSoC开发板 2)平台购买地址:https://detail.tmall.com/item.htm?id692450874670 3)全套实验源码手册视频下载地址: http://www.openedv.com/thread-340252-1-1.html 第十五章eMMC读写…...

i2c子系统

i2c 硬件协议 Linux 应用层读写i2c 数据 在Linux系统上,不仅可以在内核中使用 i2c 总线发送、接收数据,同时也支持应用层使用i2c 总线发送、接收。 如果在内核中使能了drivers/i2c/i2c-dev.c 配置,内核就会为每一个i2c 控制器生成一个/dev/…...

【K3s】第17篇 Helm版本和支持的Kubernetes版本对照表

目录 Helm版本和支持的Kubernetes版本对照表 Helm版本和支持的Kubernetes版本对照表 描述了在Helm和Kubernetes之间支持的最大版本偏差。 Helm的版本用 x.y.z 描述,x是主版本,y是次版本,z是补丁版本。 当一个Helm的新版本发布时&#xff0…...

如何自己搭建一个ai画图系统? 从0开始云服务器部署novelai

如何自己搭建一个ai画图系统? 从0开始云服务器部署novelai ​ 上面两张图都是通过ai生成的,是不是有以假乱真的感觉。 本教程提供的是自己搭建一个可以外网访问的ai系统的方法,需要采购gpu服务器(后续会出白嫖的方式)&…...

SpringSecurity过滤请求导致的系统bug

背景 今天开发一个新的会员管理系统,继承了SpringSecurity的,用以控制权限。结果无论怎么配置,都会报错:An Authentication object was not found in the SecurityContext 这句话的意思很明确:指的就是在SecurityCon…...

css\js\vue知识点

1.css3新特性 css3新特性 1&#xff09;选择器 2&#xff09;阴影 3&#xff09;形状转换&#xff08;2D <-> 3D&#xff09; 4&#xff09;变形 5&#xff09;动画&#xff08;过渡动画、帧动画&#xff09; 6&#xff09;边框 7&#xff09;多重背景 8&#xff09;反…...

在vue项目中使用video.js实现视频播放和视频进度条打点

一、用video.js实现视频播放 1、安装video.js插件 // 安装video.js插件 npm install video.js -S // 如果需要播放rtmp直播流&#xff0c;需安装一下插件 npm install videojs-flash -S 2、在组件代码里使用 <template><div data-vjs-player><video ref&quo…...

【代码训练营】day41 | 01背包问题 416. 分割等和子集

所用代码 java 01背包理论 背包最大重量为&#xff1a;4 重量价值物品0115物品1320物品2430 暴力&#xff1a;O(2^n) 动态规划&#xff1a; 1、二维dp数组 dp[i] [j] dp数组含义&#xff1a;[0, i]物品&#xff0c;任取放进容量为j的背包里的最大价值 递推公式&#xff1a…...

linux网络编程-多进程实现TCP并发服务器

服务端流程步骤socket函数创建监听套接字lfdbind函数将监听套接字绑定ip和端口listen函数设置服务器为被动监听状态&#xff0c;同时创建一条未完成连接队列&#xff08;没走完tcp三次握手流程的连接&#xff09;&#xff0c;和一条已完成连接队列&#xff08;已完成tcp三次握手…...

C语言的学习小结——数组

一、一维数组的创建与初始化 1、格式&#xff1a; type_t arr_name[const_n];//type_t 是指数组的元素类型 //const_n 是一个常量表达式&#xff0c;用来指定数组的大小 注&#xff1a; 数组是使用下标来访问的&#xff0c;下标从0开始。 数组的大小可以通过计算得到&…...

HTB-Photobomb

HTB-Photobomb信息收集开机提权对于问题的思考信息收集 端口扫描 目标首页 有一个http Authorization 目录扫描 在查看源码的时候发现了一个js文件。 并且发现了访问不存在的目录会出现错误提示。 通过搜索得知 Sinatra 是一个基于 Ruby 语言的 DSL&#xff08;领域…...

【LSTM】2 多因素单步骤预测

基于时间序列的预测&#xff0c;一定要明白它的原理&#xff0c;不是工作原理&#xff0c;而是工程落地原因。 基于时间序列&#xff0c;以已知回归未知----这两句话是分量很重的。 多因素单步单输出组合 时间序列&#xff1a;t1 是 特征 1,2,3 预测t2 的回归值41 多因素单步多…...

ChatGPT从下游应用“火”到了上游芯片厂,国内谁将受益?

因库存陷入低迷周期的半导体市场近日因ChatGPT的火热而重新受到外界关注。 原文链接&#xff1a;ChatGPT从下游应用“火”到了上游芯片厂&#xff0c;国内谁将受益&#xff1f; 由于ChatGPT属于生成式AI&#xff0c;被誉为“AI芯片”第一股的英伟达应声而涨。2月13日收盘&#…...

算法单调栈—Java版

单调栈 概念&#xff1a;维护栈中元素的单调性&#xff0c;单调增或者单调减。 什么时候用&#xff1f; 要寻找任一个元素的右边或者左边第一个比自己大或者小的元素的位置。单调栈的本质是空间换时间&#xff0c;在遍历的过程中需要用一个栈来记录右边第一个比当前元素高的元…...

在Linux中进行rocketmq及rocketmq控制台安装与配置

rocketmq下载安装的版本&#xff1a;rocketmq-rocketmq-all-5.0.0.tar.gz rocketmq控制台下载安装的版本&#xff1a;rocketmq-externals-rocketmq-console-1.0.0.tar.gz rocketmq安装 第一步&#xff0c;下载server-jre-8u202-linux-x64.tar.gz安装包。 登录网址&#xff…...

2023年全国最新食品安全管理员精选真题及答案4

百分百题库提供食品安全管理员考试试题、食品安全员考试预测题、食品安全管理员考试真题、食品安全员证考试题库等&#xff0c;提供在线做题刷题&#xff0c;在线模拟考试&#xff0c;助你考试轻松过关。 31.国家对食品添加剂生产实行____制度。 A.产品注册 B.产品备案 C.登…...

es-07脚本查询

脚本查询 概念 Scripting是Elasticsearch支持的一种专门用于复杂场景下支持自定义编程的强大的脚本功能&#xff0c;ES支持多种脚本语言&#xff0c;如painless&#xff0c;其语法类似于Java,也有注释、关键字、类型、变量、函数等&#xff0c;其就要相对于其他脚本高出几倍的性…...

JM员工福利与健康平台,企业关怀Always Online

庄信万丰(Johnson Matthey, JM)&#xff0c;全球性专用化学品公司&#xff0c;是可持续发展技术的全球领导者。在30多个国家和地区拥有13000多名员工。 JM的价值观之一是保护人类和地球。在生产过程中&#xff0c;JM保持对环境保护和能源清洁的高度关注&#xff1b;在员工福利…...

如何使用U-Mail搭建企业邮件服务器?

在当今的信息时代&#xff0c;企业也应该跟上时代的步伐。做好企业信息化建设&#xff0c;对企业事业单位尤为重要。电子邮件作为企业信息化过程中的重要组成部分&#xff0c;在企业内部沟通和外部沟通中发挥着重要作用。目前&#xff0c;有实力的企业已经开始倾向于自己搭建邮…...

用规则来搭建团队:写周报不一定是坏事

你好&#xff0c;我是Smile&#xff0c;一位有二十年工作经验的技术专家。今天我会结合我的经历&#xff0c;和你聊聊搭建技术团队这个话题。 众所周知&#xff0c;技术团队很大程度上决定了一个公司业务的生命力和生命周期&#xff0c;因此技术团队的投入成本往往很高&#x…...

C++实现分布式网络通信框架RPC(3)--rpc调用端

目录 一、前言 二、UserServiceRpc_Stub 三、 CallMethod方法的重写 头文件 实现 四、rpc调用端的调用 实现 五、 google::protobuf::RpcController *controller 头文件 实现 六、总结 一、前言 在前边的文章中&#xff0c;我们已经大致实现了rpc服务端的各项功能代…...

云计算——弹性云计算器(ECS)

弹性云服务器&#xff1a;ECS 概述 云计算重构了ICT系统&#xff0c;云计算平台厂商推出使得厂家能够主要关注应用管理而非平台管理的云平台&#xff0c;包含如下主要概念。 ECS&#xff08;Elastic Cloud Server&#xff09;&#xff1a;即弹性云服务器&#xff0c;是云计算…...

mongodb源码分析session执行handleRequest命令find过程

mongo/transport/service_state_machine.cpp已经分析startSession创建ASIOSession过程&#xff0c;并且验证connection是否超过限制ASIOSession和connection是循环接受客户端命令&#xff0c;把数据流转换成Message&#xff0c;状态转变流程是&#xff1a;State::Created 》 St…...

376. Wiggle Subsequence

376. Wiggle Subsequence 代码 class Solution { public:int wiggleMaxLength(vector<int>& nums) {int n nums.size();int res 1;int prediff 0;int curdiff 0;for(int i 0;i < n-1;i){curdiff nums[i1] - nums[i];if( (prediff > 0 && curdif…...

Spring AI 入门:Java 开发者的生成式 AI 实践之路

一、Spring AI 简介 在人工智能技术快速迭代的今天&#xff0c;Spring AI 作为 Spring 生态系统的新生力量&#xff0c;正在成为 Java 开发者拥抱生成式 AI 的最佳选择。该框架通过模块化设计实现了与主流 AI 服务&#xff08;如 OpenAI、Anthropic&#xff09;的无缝对接&…...

css3笔记 (1) 自用

outline: none 用于移除元素获得焦点时默认的轮廓线 broder:0 用于移除边框 font-size&#xff1a;0 用于设置字体不显示 list-style: none 消除<li> 标签默认样式 margin: xx auto 版心居中 width:100% 通栏 vertical-align 作用于行内元素 / 表格单元格&#xff…...

企业如何增强终端安全?

在数字化转型加速的今天&#xff0c;企业的业务运行越来越依赖于终端设备。从员工的笔记本电脑、智能手机&#xff0c;到工厂里的物联网设备、智能传感器&#xff0c;这些终端构成了企业与外部世界连接的 “神经末梢”。然而&#xff0c;随着远程办公的常态化和设备接入的爆炸式…...

docker 部署发现spring.profiles.active 问题

报错&#xff1a; org.springframework.boot.context.config.InvalidConfigDataPropertyException: Property spring.profiles.active imported from location class path resource [application-test.yml] is invalid in a profile specific resource [origin: class path re…...

R语言速释制剂QBD解决方案之三

本文是《Quality by Design for ANDAs: An Example for Immediate-Release Dosage Forms》第一个处方的R语言解决方案。 第一个处方研究评估原料药粒径分布、MCC/Lactose比例、崩解剂用量对制剂CQAs的影响。 第二处方研究用于理解颗粒外加硬脂酸镁和滑石粉对片剂质量和可生产…...

动态 Web 开发技术入门篇

一、HTTP 协议核心 1.1 HTTP 基础 协议全称 &#xff1a;HyperText Transfer Protocol&#xff08;超文本传输协议&#xff09; 默认端口 &#xff1a;HTTP 使用 80 端口&#xff0c;HTTPS 使用 443 端口。 请求方法 &#xff1a; GET &#xff1a;用于获取资源&#xff0c;…...