ZYNQ7000系列学习之TF卡读写实验
TF卡读写实验
1、实验原理
开发板上自动带有TF卡外接接口,这里只需调用封装好的IP核即可实现该功能。当然,你还需要一个TF卡(感觉SD卡也可以,反正这两种卡差不多)。实验就是调用一个IP核,不涉及其他的设计,所以比较简单。
2、实验步骤
1)新建工程
file》new》project走一遍就可以,没有现成的模块使用。
2)新建bd文件并添加ARM内核
在左侧有Create block design ,可以直接创建bd文件,在中心的加号添加zynq内核即可。
3)zynq7的配置
首先确认勾选了UART和SD,其他的选项全部去掉。(在PS-PLConfiguration中可以找到所有打勾的,去掉即可)这时的bd只有一个内核和UART和SD模块的功能,不去掉也可以,但不利于逐步理解。关键是要综合bd文件,这些会报错。(可以直接生成产品,跳过综合,但是这不是一个好习惯)
4)硬件设计的结束
生成产品和构建顶层,即可直接生成硬件平台,跳过了bit流。原因也简单,没有PL段的设计,就是一个纯的ARM工程。
5)新建软件工程
打开vitis(软件内有内联启动),file》new得到APP工程。这里的操作就不再赘述,依旧是在第二个界面的第二页加入xsa文件。构成后依旧使用hello world模板。
6)软件设计
这里首先得添加ff.h的库,也就是SD卡读写的软件编程条件。
在系统(就是创建工程下面会有选择系统名称的选项)》platform.spr【双击】》standalone on ps7_cortexa9_0》board support package【单击】》modify BSP settings【单击】》选择xilffs即可。
在helloworld.c文件中输入如下代码:
#include <stdio.h>
#include "platform.h"
#include "xil_printf.h"
#include "xdevcfg.h"
#include "xparameters.h"
#include "ff.h"
int SD_Init(void);
int Sd_Test_Write(void);
int Sd_Test_Read(void);
int main()
{
init_platform();
print("zynq_sd_card_fatfs-test \r\n");
SD_Init();
Sd_Test_Write();
Sd_Test_Read();
while(1)
{
;
}
cleanup_platform();
return 0;
}
static FATFS fatfs;
int SD_Init()
{
FRESULT rc;
rc = f_mount(&fatfs,"",0);
if(rc)
{
xil_printf("ERROR: f_mount returned %d\r\n",rc);
return XST_FAILURE;
}
return XST_SUCCESS;
}
int Sd_Test_Write()
{
FIL fil;
FRESULT rc;
UINT br;
const char src_str1[] = "hsp test sd card write and read line1 string. if you see this message,sd_card fatfs test ok!\n";
rc = f_open(&fil,"test.txt",FA_WRITE|FA_CREATE_NEW);
if(rc)
{
xil_printf("ERROR : f_open returned %d\r\n",rc);
return XST_FAILURE;
}
rc = f_write(&fil,src_str1,sizeof(src_str1),&br);rc = f_sync(&fil);
rc = f_close(&fil);
}
int Sd_Test_Read()
{
FIL fil;
FRESULT rc;
UINT br;
const char src_str[4096]={0};
rc = f_open(&fil,"test.txt",FA_READ);
if(rc)
{
xil_printf("ERROR : f_open returned %d\r\n",rc);
return XST_FAILURE;
}
rc = f_lseek(&fil, 0);
rc = f_read(&fil,src_str,4096,&br);
xil_printf(src_str);
rc = f_close(&fil);
}
编译,调试,运行。
这里由于我没有格式化SD卡,得到的记过是错误提示:
3、实验结果
总的来说,实验结果还是简单的。由于缺少读卡器,就不做其他测试性实验了。注意到基本的操作就行。
ZYNQ7000系列学习之TF卡读写实验的更多相关文章
- Keil MDK STM32系列(九) 基于HAL和FatFs的FAT格式SD卡TF卡读写
Keil MDK STM32系列 Keil MDK STM32系列(一) 基于标准外设库SPL的STM32F103开发 Keil MDK STM32系列(二) 基于标准外设库SPL的STM32F401 ...
- 联盛德 HLK-W806 (十三): 运行FatFs读写FAT和exFat格式的SD卡/TF卡
目录 联盛德 HLK-W806 (一): Ubuntu20.04下的开发环境配置, 编译和烧录说明 联盛德 HLK-W806 (二): Win10下的开发环境配置, 编译和烧录说明 联盛德 HLK-W ...
- 第36章 SDIO—SD卡读写测试
第36章 SDIO—SD卡读写测试 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.com/f ...
- 第36章 SDIO—SD卡读写测试—零死角玩转STM32-F429系列
第36章 SDIO—SD卡读写测试 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.com/f ...
- 【雕爷学编程】Arduino动手做(52)---MicroSD卡读写模块
37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止37种 的.鉴于本人手头积累了一些传感器和模块,依照实践(动手试试)出真知的理念,以学习和交流为目的,这里准 ...
- MicroSD卡(TF卡)SPI模式实现方法
现在我们手机的内存卡多为Micro SD卡,又叫TF卡,所以Micro SD卡比SD卡常见.自己曾经也想写写SD卡的读取程序,但又不想特地再去买个SD卡,这时想起手机内存卡不是和SD卡很像吗?在网上查 ...
- FAT32文件系统--For TF卡
1. TF卡空间是如何分配的? 下面以4GB TF卡为例,通过WinHex工具进行分析,其空间分配如下图所示: FAT32把目录当做文件来管理,所以没有独立的目录区,所有的文件目录项都是在数据区里面的 ...
- TF卡的Class4/Class6/Class10
TF卡全称TransFlash卡,即T-Flash又称MicroSD,随设备微型化的需要,TF卡用途越来越广,速度也越来越快,从最初的Class2早已发展到目前主流的Class10,TF卡体积为15m ...
- TF卡速度测试对比 Class数越高速度越快
存储卡(TF卡)是手机扩展存储的大杀器,让你多装n部学习资料,多装n个外语听力练习.除了装东西外,存储卡性能不佳也会影响手机的整体性能以及体验的.本文主要针对Android手机,我是懒人,但我讨厌懒人 ...
- TF卡和SD卡的区别
小型存储设备凭借低廉的价格.多样化的品种.实用等特性大量充斥在大家身边,比如智能手机手机上.数码照相机上.游戏机上(一般是掌机)等都小型电子设备都频繁的使用到这种统称为SD的产品,比如TF卡和SD卡( ...
随机推荐
- 解决zabbix中文乱码
原因是zabbix的web端缺少中文相关字体, 这里我们利用winscp, 将本机的中文楷体字体文件(simkai.ttf)上传到服务器: 找到web端字体文件夹,我的是:/var/www/html/ ...
- Java I/O 教程(六) BufferedInputStream 类
Java BufferedInputStream Class Java BufferedInputStream class 用于从输入流读取数据,和BufferedOutStream一样内部使用缓冲机 ...
- EF Invalid column name 'Discriminator' Invalid column name 'TagCode'.
参考资料:Invalid column name 'TagCode'. 该异常和Discriminator没关系,一般原因:1.数据库中字段和实体类字段不一致导致的2.创建新增继承于数据库对应的实体类 ...
- 【Azure Redis 缓存】Azure Redis 4.0 被扫描到漏洞,如何修补呢?
问题描述 在安全级别要求高的公司中,任何系统都会进行安全扫描.比如Azure 云上的Redis服务,也在扫描的范围中,最后发现Redis 4.0存在以下漏洞: CVE-2019-10192:https ...
- Android---Android 开发四大组件
Android 应用程序组件 应用程序组件是一个Android应用程序的基本构建块.这些组件由应用清单文件松耦合的组织.AndroidManifest.xml描述了应用程序的每个组件,以及他们如何交互 ...
- 青少年CTF训练平台-web部分随笔
文章管理系统 首先打开环境(>ω<。人)ZZz♪♪ 既然要做题,就要做全面了,图上说了,既然有假flag我就先找出来: 假flag: 打开vmware,使用sqlmap进行处理: sqlm ...
- jenkins 上传文件参数
注意:文件参数不支持Jenkins流水线 文件上传以后会上传至 workspace 里对应的project下面,但是文件会被重命名为File location(设置路径)输入库的值, 如果在jenki ...
- MySQL日志15连问,redo log与biglog
1. redo log是什么? 为什么需要redo log? redo log 是什么呢? redo log 是重做日志. 它记录了数据页上的改动. 它指事务中修改了的数据,将会备份存储. 发生数据库 ...
- 解决windows11远程连接阿里云Centos7
本地连接CentOs7时报错 Permission denied (publickey,gssapi-keyex,gssapi-with-mic). 网上大部分说的是去修改 vim /etc/ss ...
- 油猴脚本 - dicts.cn 单词自动跳转 双核浏览器可用
跳转格式 http://www.dicts.cn/?w=blight 20230605 更新 // ==UserScript== // @name dicts.cn 单词自动跳转 双核浏览器可用 // ...