[ZYNQ Ultrascale + MPSOC FPGA教程]第24章PS侧SD卡读写
原始声明:该原始教程是由信义电子技术(上海)有限公司(ALINX)创建的。版权归我们公司所有。
如果需要重印,则需要授权并注明出处。适用于板型号:AXU2CGA / AXU2CGB / AXU3EG / AXU4EV-E / AXU4EV-P / AXU5EV-E / AXU5EV-P / AXU9EG / AXU15EG vitis项目目录是“ ps_sd / vitis”。
本章介绍使用FatFs文件系统模块读取SD卡的BMP图片并通过DP显示它。 1. FatFs简介FatFs是一个通用文件系统模块,用于在小型嵌入式系统中实现FAT文件系统。
FatF的编写遵循ANSIC,因此它不依赖于硬件平台。它可以嵌入廉价的微控制器中,例如8051,PIC,AVR,SH,Z80,H8,ARM等,而无需进行任何修改。
应用程序通过API函数调用FatFs系统模块,以控制SD卡的存储设备。 FatFs系统提供许多API函数。
下面我们列出了将在例程中使用的API函数。 f_mount-注册/注销工作区(WorkArea)f_open-打开/创建文件f_close-关闭文件f_read-read文件f_write-write文件有关API函数的介绍和描述,您可以访问以下网站以进行更深入的了解,每个API函数的说明和示例在此网站上提供。
http://elm-chan.org/fsw/ff/00index_e.html 2. Vitis程序开发1)打开Vitis软件,我们为每个人生成了一个sd_bmp项目。在这里,您需要配置BSP支持包的属性。
在BoardSupportPackageSettings中选择xilffs项目,以使项目支持xilffs文件系统。关于xilffs库是Xilinx提供的FAT文件系统支持程序包。
用户可以调用库中的API函数,以在SD / eMMC和其他设备上实现操作。 xilffs库主要包含FAT文件系统(FileSystemFiles)和驱动程序层文件(GlueLayerFiles)。
2)有关xilffs库的介绍和应用,您可以参考以下Xilinx官方网站链接:http://www.wiki.xilinx.com/xilffs 3)接下来,让我们看一下sd_bmp的工程代码。在工程代码中,我们需要读取存储在SD卡中的bmp格式的图像数据,删除图像标题并将其放在DP显示缓冲区中,然后在DP监视器上实现图像显示。
4)在bmp.c文件中,我们添加了bmp_read函数。在此功能中,首先使用f_open函数在SD卡中打开bmp图像文件。
然后读取该文件的前54个字节,因为BMP图像文件的前54个字节是图像头文件,其中包含图像的像素大小信息。读取的图像数据逐行存储在DP帧显示缓冲区中。
由于BMP的存储是颠倒的,因此在bmp_read函数中调整顺序并将其存储在帧缓冲区中。 5)同时,我们还准备了BMP文件头结构以及一些常用的分辨率图像头设置,并将它们放在bmp.h文件中。
6)与以前的小猫图片显示结合,以bmp格式保存小猫图片并将其保存到SD卡。在bmp_write函数中,组合bmp标头和bmp数据并将其保存到SD卡。
7)在main函数中,调用bmp_read函数以实现将从SD卡读取的图像存储到DP显示缓冲区。此处BMP映像的文件名1.bmp必须与存储在SD卡中的文件名相同。
使用bmp_write将小猫图片写入SD卡。 3.板载验证1)首先,需要将1920 * 1080像素,24位BMP文件保存到SD卡,文件名为1.bmp(文件位于项目目录中),SD卡为关闭开发板电源时,请关闭电源。
将卡插入卡座。 2)将开发板连接到DP监视器,然后打开电源,下载的程序运行后,我们可以在DP监视器上显示存储在SD卡中的1.bmp文件的图像。
3)之后,可以关闭开发板的电源,将SD卡插入计算机,可以看到还有更多的CAT.BMP。