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、实验结果
总的来说,实验结果还是简单的。由于缺少读卡器,就不做其他测试性实验了。注意到基本的操作就行。
======== ======\\ ======= -
|| || \\ // \\ /-\
|| || || // // \\
|| || // || // \\
====== ======= || === ========
|| || || \\ // \\
|| || \\ || // \\
|| || \\ // // \\
|| || ======= // \\
作者:绿叶落秋风,专注FPGA技术分析和分享,转载请注明原文链接:https://www.cnblogs.com/electricdream/p/12898988.html,文中资源链接如下:
1. GITHUB开源仓库