zcu102(10)Standalone读写SD卡文件

作者:bt(CSDN)

本文在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文件内容如下:

试验

将zcu102的启动模式设置为JTAG,并且插入SD卡(确保格式化为FAT32格式)

参考ug1182


打开串口调试助手,按下图配置并且连接COM4


板卡上电后在SDK中,对测试工程选择Debug


发现调试结果与代码预期功能相符合

注意

前文所述流程如果出现undefined reference的错误,则来源于SDK配置静态库的bug

https://blog.csdn.net/botao_li/article/details/88416441

在工程上打开右键菜单选择Properties打开工程属性窗口,进入Paths and Symbols的Libraries页,删除默认的配置值(SDK的静态库链接指令有bug),改为用下图所示的顺序添加各静态库(注意确保排列顺序),点击OK按钮保存退出


版权声明:本文为CSDN博主「bt_」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/botao_li/article/details/88101417

最新文章

最新文章