ZYNQ系统中实现FAT32文件系统的SD卡读写之四 经验总结


在上述的三篇BLOG里面主要介绍了步骤和设置,这里简答罗列一下此软件硬件环境中进行FAT32读写的经验总结。



1,SD卡要格式成FAT32格式。否则写大文件失败,上几M的就写不了了。

2,每次建议写256的整数倍字节,否则余数部分就会不能写入,比如f_write函数写参数长度为511字节,实际是写了256字节,写参数是512,513则实际写了长度是512字节。这应该是一个BUG,因为之前没有用过FATFS,所以也不知道是FATFS本身BUG还是移植导致的BUG,后续版本应该会有所解决。

3,如果不按照256整数倍写,返回写入长度和要求写入的参数长度相等,但是实际256余数部分没有写入。

4,调用f_write函数,后传递过去的数组可能被改写,我在实验就遇到过,这点要留意。只要要排除可能。

5,读是没有问题的,无论读多大文件都可以。

6,上述实验是屏蔽了SD0实际是为了只使用SD1进行实验,也可以按不修改默认设置,使用SD0,这使用不需要使用外接模块,插卡在ZEDBOARD的SD卡座就可以进行实验。

7,如果同时使能设置了SD0和SD1,默认默认使用SD0,我们可以也可以设置成使用SD1,设置方法是修改ff.c文件里面的 set_lgnumber,设置返回值为1,则是使用SD1。

8,我做过实验VIVADO下最大设置SDIO时钟是100M,如果设置成125M将会出错,其实默认的设置是50M,实际应用建议设50M或者以下。

9,针对上述2,解决的最简单方法是调用f_write函数将长度参数+255。

10,实际测试过200M字节单独文件的读写,能读写成功。这已经很不错了。



你可能感兴趣的:(FPGA,VERILOG,ZYNQ7,ZEDBOARD)