【ZYNQ Ultrascale+ MPSOC FPGA教程】第二十四章 PS端SD卡讀寫

原創聲明:

本原創教程由芯驛電子科技(上海)有限公司(ALINX)創做,版權歸本公司全部,如需轉載,需受權並註明出處。html

適用於板卡型號:

AXU2CGA/AXU2CGB/AXU3EG/AXU4EV-E/AXU4EV-P/AXU5EV-E/AXU5EV-P /AXU9EG/AXU15EG緩存

 

vivado工程目錄爲「ps_hello/vivado」函數

vitis工程目錄爲「ps_sd/vitis」網站

 

本章介紹使用FatFs文件系統模塊讀取SD卡的BMP圖片,並經過DP顯示。spa

1. FatFs簡介

FatFs是一個通用的文件系統模塊,用於在小型嵌入式系統中實現FAT文件系統。FatFs的編寫遵循 ANSI C,所以不依賴於硬件平臺。它能夠嵌入到便宜的微控制器中,如 8051, PIC, AVR, SH, Z80, H8, ARM等等,不須要作任何修改。3d

應用程序經過API函數來調用FatFs系統模塊,從而來控制SD卡這些存儲設備。orm

FatFs 系統提供了不少 API 函數,咱們在下面列舉了如下咱們例程中會用的的 API 函數。htm

f_mount - 註冊/註銷一個工做區域(Work Area)blog

f_open - 打開/建立一個文件教程

f_close - 關閉一個文件

f_read - 讀文件

f_write - 寫文件

關於 API 函數的介紹和說明,你們能夠參考如下的網站進行更深一步的瞭解,這個網站上

給出來了每一個 API 函數的使用說明和例子。

2. Vitis程序開發

1)打開Vitis軟件,咱們已經爲你們生成了一個sd_bmp的工程。這裏須要配置BSP支持包的屬性,在Board Support Package Settings裏選擇xilffs項,使能項目支持xilffs文件系統。

關於xilffs庫是Xilinx提供的FAT文件系統支持包,用戶能夠調用庫裏的API函數實現對

SD/eMMC等設備的操做。xilffs庫裏主要包含FAT的文件系統(File System Files)和驅動層文件(Glue Layer Files)。

2) 關於xilffs庫的介紹和應用,你們能夠參考如下Xilinx官網連接:

3) 接下來咱們來看sd_bmp的工程代碼。在工程代碼裏,咱們須要把 SD 卡里存儲的 bmp格式的圖像數據讀出來,去掉圖像頭後放到DP的顯示緩衝區中,而後實現圖像在DP顯示器的顯示。

4)在bmp.c 文件裏,咱們添加了一個 bmp_read 的函數,在這個函數裏首先用f_open函數打開一個 SD 卡里的bmp的圖片文件。而後讀取這個文件的前面 54 個字節,由於BMP圖像文件的前面54個字節爲圖像頭文件,裏面包含了圖像的像素大小信息。再一行一行的讀取圖像數據存到DP的 frame 顯示緩衝區中。

因爲BMP的存儲是上下顛倒的,所以在bmp_read函數中調整了順序,存入frame緩存區。

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像素,24bit的BMP文件到SD卡里,文件名爲1.bmp(文件在工程目錄下),開發板斷電狀況下,把SD卡插入卡座裏。

2) 開發板鏈接DP顯示器,而後上電,下載程序運行以後咱們能夠在DP顯示器上顯示SD卡里存儲的1.bmp文件的圖像。

3) 以後可將開發板斷電,將SD卡插到電腦上,能夠看到多了CAT.BMP

相關文章
相關標籤/搜索