【【萌新的SOC学习之SD卡读写TXT文本实验】】

news2024/12/23 11:14:14

萌新的SOC学习之SD卡读写TXT文本实验

SD卡
Secure Digital Card
在这里插入图片描述
在这里插入图片描述

SD卡的引脚定义
在这里插入图片描述

我们会用的数据脚就这几个
在这里插入图片描述

对于我们FPGA 其实更会倾向于选择 SPI的功能
在这里插入图片描述

而TF卡相对于SD卡的区别在于
SD卡只有一个电源地

在这里插入图片描述
在这里插入图片描述

这里相对于原本的SPI多了一个CD引脚
CD信号是相当于一个卡检测信号 连接上 CD变为 低 没有插入卡电平就被上拉为高

文件系统 (File System)
负责管理和存储文件信息的软件机构称为文件管理系统,简称文件系统。即在磁盘上组织文件的方法。
常用的文件系统
-FAT/FATFS : 大部分SD卡的文件系统
-NTFS : 基于安全性的文件系统,是windows NT所采用的独特的文件系统结构
-CDFS :CDFS是大部分的光盘的文件系统
-exFAT

SD 卡读写TXT文本实验
先把TF卡连接到开发板中,然后PS端对开发板进行读写操作。它会在TF卡中创建一个.txt的文本
朝文本里面写入数据,再把数据读出来,我们再验证写入读出的数据是否一致
因为TF端引脚都是连接到PS端上的 PS端包含了外设 通过这个外设对SD卡完成这样子的读写操作
SD/SDIO 就是我们使用的外设接口

我们先介绍SDIO 控制器的使用流程
SD/SDIO 外设有2个 一个连接到了SD卡 还有一个连接到 eMMC
在本讲中,我们并不是直接操作SDIO控制器,而是通过操作文件操作系统FATFS来完成对SDIO控制器的读写
因为我们创建的是.txt的文本是属于文件系统的范畴了

我们先看zynq-7000的结构框图
在这里插入图片描述

这里我们会发现有两个接口SD/SDIO 完成对SD和eMMC 的操作
SD是在MMC的基础上发展起来的
针对SD接口我们可以选择一线或者四线的方式进行传输
SDIO可以路由连接到MIO的接口 或者通过EMIO接口连接到PL引脚
eMMC 不能作为主要启动设备(第一启动设备) 只能作为第二启动设备或者说辅助启动器件
开发板有一个拨码开关 他可以控制我们的从哪里启动 是从SD卡 还是QS_PIFlash 并不支持直接从eMMC中直接启动

而SD/SDIO这种外设又是怎么和ARM交互的呢 它是通过 AHB总线—高带宽
APB 高级外设总线 —传输数据比较小的情况
在这里插入图片描述

AHB与arm连接 SD/SDIO 连接外部

下面我们讲解 FATFS文件系统
文件系统 (File System)
负责管理和存储文件信息的软件机构称为文件管理系统,简称文件系统。即在磁盘上组织文件的方法。
常用的文件系统
-FAT/FATFS : 大部分SD卡的文件系统
-NTFS : 基于安全性的文件系统,是windows NT所采用的独特的文件系统结构
-CDFS :CDFS是大部分的光盘的文件系统
-exFAT

FATFS是一个完全免费开源的FAT文件系统模块,专门为小型的嵌入式系统设计。 用标准的C语言写
FATFS是可裁剪的文件系统。
在这里插入图片描述

这个FATFS模块的层次结构图
在这里插入图片描述

最顶层是应用层,使用者无需理会 FATFS 的内部结构和复杂的 FAT 协议,只需要调用 FATFS 模块提供给用户的一系列应用接口函数,如 f_open,f_read,f_write 和 f_close 等,就可以像在 PC 上读/写文件那样简单。中间层 FATFS 模块,实现了 FAT 文件读/写协议。FATFS 模块提供的是 ff.c 和 ff.h。除非有必要,使用者一般不用修改,使用时将头文件直接包含进去即可。FATFS 模块提供的底层接口,它包括存储媒介读/写接口(disk I/O)和供给文件创建修改时间的实时时钟。
在这里插入图片描述

先分配一个动态的工作区域
然后可以来挂载我们的逻辑磁盘
f_open
f_mount重新挂载

最后f_mount(0, " " ,0 ) ;
最后一个是取消挂载 的意思
free(ps) 释放

进行程序设计
本章的实验任务是通过xilinx SDK自带的FATFS库 , 完成对TF卡中 TXT文本读写的功能 ,并将测试结果通过串口打印出来
在这里插入图片描述

SD这个外设主要是对TF卡进行驱动
添加的UART外设 将TF卡的操作结果用串口打印出
f_mount-----注册或取消注册一个卷的区域
f_mount(文件系统的项目 ,逻辑驱动的序号 , 初始化的选项opt)
当这个opt=0 时,表示独立挂载 1 :检测准备好之后开始强制挂载

在这里插入图片描述
在这里插入图片描述

第一个是指针变量 指的是内容我们在上面创建的那块区域
第二个是逻辑分区的序号—这也是指针类型的变量
第三个是 1 挂载
在这里插入图片描述

它会返回一个值 挂载失败之后先格式化SD卡
这里面我们用到了f_mkfs 这个函数
这个函数是格式化f_mkfs( 逻辑驱动的序号 , 格式化的类型,0 ,工作区域 ,工作区域的大小)

其实它整个也是调用函数的形式
在这里插入图片描述

SD卡读写
第一步先打开文件
f_open(指针类型的指向我们的文件参数 ,文件名称 , 创建文件 或者选择写 )
FA_CREATE_ALWAYS
FA_WRITE

f_lseek (取地址 , 0 )
fwrite(结构体指针 , 数据 , 写多少个数据 ,返回一个指针类型表示有多少数据写成功了)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1084705.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

竞赛选题 深度学习+opencv+python实现车道线检测 - 自动驾驶

文章目录 0 前言1 课题背景2 实现效果3 卷积神经网络3.1卷积层3.2 池化层3.3 激活函数:3.4 全连接层3.5 使用tensorflow中keras模块实现卷积神经网络 4 YOLOV56 数据集处理7 模型训练8 最后 0 前言 🔥 优质竞赛项目系列,今天要分享的是 &am…

光纤激光切割机如何高效的切割铜等高反材料

高反射材料的切割过程往往具有挑战性,对于许多光纤激光切割设备厂商而言都是难以解决的问题。但是作为铜、铝、金等常见的高反射性材料又需要在日常生产中经常进行加工处理。 很多厂家解决的办法之一就是采用相应的辅助气体。在光纤激光切割机切割铜时,辅…

xshell 上传下载文件命令

Windows 和 Linux上传或下载某个文件首先你的 Linux上需要安装安装 lrzsz工具包在Linux 上执行 yum install lrzsz 上传文件: 输入 rz 下载文件:运行命令 sz zcly.tar.gz (zcly.tar.gz)为文件名称

多标签分类论文笔记 | ML-Decoder: Scalable and Versatile Classification Head

个人论文精读笔记,主要是翻译心得,欢迎旁观,如果有兴趣可以在评论区留言,我们一起探讨。 Paper: https://arxiv.org/pdf/2111.12933.pdf Code: https://github.com/Alibaba-MIIL/ML_Decoder 文章目录 0. 摘要1. 介绍2. 方法2.1 Ba…

offer

【录用通知书】 如何判断公司的好坏呢。 注意了,我们软件行业,技术管理类,技术类,产品类 好公司好企业基本都会给你说清楚,一项多少钱,加班多少钱,这样的 像这类公司的薪资结构复杂就要特别…

如何批量导出文件名?

如何批量导出文件名?在电商行业从事工作的一些同事可能经常会遇到这样的问题:需要将产品文件夹中的所有图片或产品名称导出到Excel工作表,在工作表中创建这些名称的超链接,并且可能会为每个产名称的后面填写一些相关信息&#xff…

LeetCode【152】乘积最大子数组

题目: 解析: 理解这个题的过程中,有这样的疑问: -2、0、2、3 子数组最大值是2*3 6,并非dp过程中,从下标0累乘的怎么办?这里不用担心,因为在dp的过程中会逐渐的求Math.max和Math.m…

知识付费小程序的推广与用户增长策略

在知识付费小程序开发完成后,推广和用户增长是关键的成功因素。本文将探讨一些推广策略和用户增长方法,并提供代码示例,帮助您在知识付费小程序中实施这些策略。 1. 社交媒体分享功能 在知识付费小程序中添加社交媒体分享功能,…

多媒体应用设计师 开始

https://www.bilibili.com/video/BV1jv411q7mz/?spm_id_from333.337.search-card.all.click&vd_source25bced4af8c6d5f851758632d0ca8444

【2023年新版】40套BIM+GIS项目案例合集,中建中铁中交企业内部学习资源免费领取

最近有很多做工程的朋友想要学习BIMGIS技术,向我询问相关的学习资源和资料。他们面临的普遍问题是不知道如何入门,找到的资料很多,但是很多却用不上。 为了解决大家的问题,我们团队花了近一个月的时间,精心整理了一份…

Vue3实战(05)-教你快速搭建Vue3工程化项目

除了Vue 3这个库,还需Vue 3 最新全家桶。 1 环境准备 之前语法演示直接使用script引入Vue 3,从而在浏览器里实现所有调试功能。但实际项目中,使用专门调试工具。在项目上线之前,代码也需打包压缩,并考虑到研发效率和…

C语言文件操作(2)

🙉本文将继续对文件操作相关知识进行讲解 1. 文件的随机读写 1.1 fseek fseek函数原型: fseek简而言之就是设置文件中的光标,stream就指向对象文件的指针,offset是文件中光标处相对于起始位置的偏移量,origin是光标所…

Docker 容器应急

容器网络简单理解 容器拥有n多张veth网卡与一张docker0网卡 docker 五种网络 bridge 默认网络,Docker启动后创建一个docker0网桥,默认创建的容器也是添加到这个网桥中。host 容器不会获得一个独立的network namespace,而是与宿主机共用一个…

关于Win系统提示由于找不到msvcr120.dll文件问题解决办法

在我使用电脑的过程中,突然弹出了一个错误提示框,提示我系统中缺少msvcp120.dll文件。这个文件是系统运行所必需的,缺少它可能会导致一些软件无法正常运行。经过一番搜索和咨询,我找到了以下几种解决方案,分享给大家&a…

【Java学习之道】文件输入输出流

引言 今天,我们将一起学习Java中的文件输入/输出流,这是许多初学者感到困惑但实际工作中经常遇到的问题。在本部分,我们将探讨文件输入/输出流的基本概念,以及如何使用Java中的类来处理文件输入/输出。 一、文件输入/输出流的概…

C语言,输出最长连号的个数

数据范围&#xff1a;0 < n <10000. 最长连号&#xff0c;就是一组数字里面出现的连续的数字的最长长度。这里的连号最长是2 3 4 5 6&#xff0c;个数为5。 要实现求连号的个数&#xff0c;就要创建一个变量&#xff0c;用来专门计算连号的个数。在不满足连号时&#xf…

shiro反序列化漏洞分析

分析源码 我们去源码里面去找找&#xff0c;搜索rememberMe&#xff1a; 发现有一个 CookieRememberMeManager 这个类&#xff0c;看名字就知道他多半就是处理 RememberMe 的逻辑&#xff0c;所以根据该类查看它干了什么 这里继承 AbstractRememberMeManager 类&#xff0c;Ab…

精益生产与MES生产管理系统相互融合

近年来&#xff0c;精益生产理念在企业管理中越来越受欢迎。它强调以最小的浪费&#xff0c;在最短的时间内&#xff0c;生产出高质量的产品。这一理念的实施手段包括准时制生产方式、适时生产方式等&#xff0c;消除浪费、看板、快换工装等都是精益提高的工具方针。 然而&…

【基础篇】四、本地部署Flink

文章目录 1、部署模式2、本地独立部署会话模式的Flink3、本地独立部署会话模式的Flink集群4、向Flink集群提交作业5、Standalone方式部署单作业模式6、Standalone方式部署应用模式的Flink 1、部署模式 会话模式&#xff08;Session Mode&#xff09; 先启动Flink集群&#xff0…

【BugBounty】记一次XSS绕过

前言 最近一直在看国外的赏金平台&#xff0c;绕waf是真的难受, 记录一下绕过的场景。 初步测试 一开始尝试XSS&#xff0c;发现用户的输入在title中展示&#xff0c;那么一般来说就是看能否闭合&#xff0c;我们从下面图中可以看到&#xff0c;输入尖括号后被转成了实体。 …