原創(chuàng)聲明:
本原創(chuàng)教程由芯驛電子科技(上海)有限公司(ALINX)創(chuàng)作,版權(quán)歸本公司所有,如需轉(zhuǎn)載,需授權(quán)并注明出處。
適用于板卡型號:
AXU2CGA/AXU2CGB/AXU3EG/AXU4EV-E/AXU4EV-P/AXU5EV-E/AXU5EV-P /AXU9EG/AXU15EG
vivado工程目錄為“ps_hello/vivado”
本章介紹使用FatFs文件系統(tǒng)模塊讀取SD卡的BMP圖片,并通過DP顯示。
1. FatFs簡介
FatFs是一個通用的文件系統(tǒng)模塊,用于在小型嵌入式系統(tǒng)中實現(xiàn)FAT文件系統(tǒng)。FatFs的編寫遵循 ANSI C,因此不依賴于硬件平臺。它可以嵌入到便宜的微控制器中,如 8051, PIC, AVR, SH, Z80, H8, ARM等等,不需要做任何修改。
應(yīng)用程序通過API函數(shù)來調(diào)用FatFs系統(tǒng)模塊,從而來控制SD卡這些存儲設(shè)備。

FatFs 系統(tǒng)提供了很多 API 函數(shù),我們在下面列舉了以下我們例程中會用的的 API 函數(shù)。
f_mount - 注冊/注銷一個工作區(qū)域(Work Area)
f_open - 打開/創(chuàng)建一個文件
f_close - 關(guān)閉一個文件
f_read - 讀文件
f_write - 寫文件
關(guān)于 API 函數(shù)的介紹和說明,大家可以參考以下的網(wǎng)站進行更深一步的了解,這個網(wǎng)站上
給出來了每個 API 函數(shù)的使用說明和例子。
http://elm-chan.org/fsw/ff/00index_e.html
2. Vitis程序開發(fā)
1)打開Vitis軟件,我們已經(jīng)為大家生成了一個sd_bmp的工程。這里需要配置BSP支持包的屬性,在Board Support Package Settings里選擇xilffs項,使能項目支持xilffs文件系統(tǒng)。


關(guān)于xilffs庫是Xilinx提供的FAT文件系統(tǒng)支持包,用戶可以調(diào)用庫里的API函數(shù)實現(xiàn)對
SD/eMMC等設(shè)備的操作。xilffs庫里主要包含F(xiàn)AT的文件系統(tǒng)(File System Files)和驅(qū)動層文件(Glue Layer Files)。
2) 關(guān)于xilffs庫的介紹和應(yīng)用,大家可以參考以下Xilinx官網(wǎng)鏈接:
http://www.wiki.xilinx.com/xilffs
3) 接下來我們來看sd_bmp的工程代碼。在工程代碼里,我們需要把 SD 卡里存儲的 bmp格式的圖像數(shù)據(jù)讀出來,去掉圖像頭后放到DP的顯示緩沖區(qū)中,然后實現(xiàn)圖像在DP顯示器的顯示。
4)在bmp.c 文件里,我們添加了一個 bmp_read 的函數(shù),在這個函數(shù)里首先用f_open函數(shù)打開一個 SD 卡里的bmp的圖片文件。然后讀取這個文件的前面 54 個字節(jié),因為BMP圖像文件的前面54個字節(jié)為圖像頭文件,里面包含了圖像的像素大小信息。再一行一行的讀取圖像數(shù)據(jù)存到DP的 frame 顯示緩沖區(qū)中。
由于BMP的存儲是上下顛倒的,因此在bmp_read函數(shù)中調(diào)整了順序,存入frame緩存區(qū)。

5)同時我們也準(zhǔn)備了BMP文件頭結(jié)構(gòu)體,以及一些常用分辨率的圖像頭設(shè)置,放在bmp.h文件中。

6) 結(jié)合之前小貓圖片的顯示,將小貓圖片保存成bmp格式,保存到SD卡里,在bmp_write函數(shù)中,結(jié)合bmp頭和bmp數(shù)據(jù),保存到SD卡。

7) 在main函數(shù)里,調(diào)用bmp_read函數(shù)實現(xiàn)一副圖像從SD卡讀取到DP顯示緩沖的存儲,這里的 BMP 圖像的文件名1.bmp需要和存儲在SD卡里的文件名一樣。用bmp_write,將小貓圖片寫入SD卡。

3.板上驗證
1) 首先需要先存一副1920*1080像素,24bit的BMP文件到SD卡里,文件名為1.bmp(文件在工程目錄下),開發(fā)板斷電情況下,把SD卡插入卡座里。

2) 開發(fā)板連接DP顯示器,然后上電,下載程序運行之后我們可以在DP顯示器上顯示SD卡里存儲的1.bmp文件的圖像。
3) 之后可將開發(fā)板斷電,將SD卡插到電腦上,可以看到多了CAT.BMP
-
FPGA
+關(guān)注
關(guān)注
1643文章
21967瀏覽量
614268 -
嵌入式
+關(guān)注
關(guān)注
5141文章
19537瀏覽量
315139 -
SD卡
+關(guān)注
關(guān)注
2文章
575瀏覽量
65175 -
Zynq
+關(guān)注
關(guān)注
10文章
614瀏覽量
48033 -
MPSoC
+關(guān)注
關(guān)注
0文章
200瀏覽量
24625
發(fā)布評論請先 登錄
Zynq UltraScale + MPSoC USB 3.0 CDC器件類設(shè)計
如何調(diào)試Zynq UltraScale+ MPSoC VCU DDR控制器
如何調(diào)試Zynq UltraScale+ MPSoC VCU DDR控制器
閑話Zynq UltraScale+ MPSoC(連載1)

閑話Zynq UltraScale+ MPSoC(連載5)

Zynq UltraScale+ MPSoC的發(fā)售消息
米爾科技Zynq UltraScale+ MPSoC技術(shù)參考手冊介紹

如何調(diào)試 Zynq UltraScale+ MPSoC VCU DDR 控制器?

米爾電子zynq ultrascale+ mpsoc底板外設(shè)資源清單分享

ZYNQ Ultrascale+ MPSoC系列FPGA芯片設(shè)計
Zynq UltraScale+ MPSoC中的隔離方法

Zynq UltraScale+ MPSoC的隔離設(shè)計示例

Zynq UltraScale+ MPSoC驗證數(shù)據(jù)手冊

評論