本文主要介绍在zynq中通过xilffs库读写SD卡的一个例子,并给出在使用中遇到的问题
在Xilinx SDK的standalone已移植好了FatFs库(SDK中叫做xilffs),所以在SDK中添加xilffs库后就可以在程序中使用FatFs中各API来操作SD卡,该库支持FAT12, FAT16 and FAT32文件系统(本例将SD卡格式化为FAT32)。FatFs API详细说明可查看http://elm-chan.org/fsw/ff/00index_e.html。
一个例子
zynq中PS部分已经集成了SD卡控制器,在PS部分需要打开SD卡控制器,并配置对应管脚(取决于开发板),本人用的开发板PS部分配置如下图
综合实现生成.bit后导出,lautch SDK进入SDK新建工程和BSP,由于用了xilffs库所以在BSP中需要选择打开xilffs,如下图
对于xilffs的设置如下图
enable_mmc选择false;fs_interface选择1;read_only选择false。可以参考后面Description描述来设置。本例使用如上默认配置即可。
c程序如下:
/*
* main.c
*
* Created on: 2016年8月20日
* Author: hsp
* 本文件实现SD写入一段字符串,然后从其中读出并打印到串口。
*
*/
#include <string.h>
#include "platform.h"
#include "xparameters.h"
#include "xil_printf.h"
#include "ff.h"
#include "xdevcfg.h"