本文在PS的Standalone程序中使用xilffs库实现对SD卡文件的读写操作。
本文主要参考以下两篇博客:
https://blog.csdn.net/jinhua1990/article/details/84100100
https://blog.csdn.net/lixiaolin126/article/details/83959214
本文配套源码已上传至
https://download.csdn.net/download/botao_li/10992054
Block Design
建立zcu102的Vivado工程,新建Block Design,并且添加zynq模块
运行Run Block Automation,双击打开zynq模块配置查看SD接口配置
注意,CD指Card Detection,WP指Write Protection
参考ug1182,发现MIO39~MIO42的自动配置与之不符,而且SD接口协议并不存在8Bit的Data Transfer Mode
但是问题无解
保留UART和SD1,关闭其它外设接口以及PS-PL接口
保存后依次运行Generate Output Products和Create HDL Wrapper
在Flow Navigator中选择Generate Bitstream,完成后先Export Hardware,再Launch SDK
PS程序
在SDK中建立Hello World模板程序,并新建BSP工程
接下来在BSP工程配置xilffs库
在BSP工程上,右键菜单选择Board Support Package Settings
进入Settings窗口,在Overview界面选中xilffs库
点击standalone下方的xilffs,进入xilffs配置界面,将use_lfn设置为true,使xilffs库支持长文件名
配置完成后点击OK
打开BSP工程中的system.mss文件,可以在最下方发现xilffs库,选择Import Examples导入示例工程
参考示例工程,修改helloworld.c文件内容如下:
#include <stdio.h>
#include "platform.h"
#include "xil_printf.h"
#include "ff.h"
int main()
{
xil_printf("SD Card File Test Begin\n\r");
FIL fil;//文件
FATFS fatfs;