原創(chuàng)聲明:
本原創(chuàng)教程由芯驛電子科技(上海)有限公司(ALINX)創(chuàng)作,版權(quán)歸本公司所有,如需轉(zhuǎn)載,需授權(quán)并注明出處。
適用于板卡型號(hào):
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簡(jiǎn)介
FatFs是一個(gè)通用的文件系統(tǒng)模塊,用于在小型嵌入式系統(tǒng)中實(shí)現(xiàn)FAT文件系統(tǒng)。FatFs的編寫遵循 ANSI C,因此不依賴于硬件平臺(tái)。它可以嵌入到便宜的微控制器中,如 8051, PIC, AVR, SH, Z80, H8, ARM等等,不需要做任何修改。
應(yīng)用程序通過API函數(shù)來調(diào)用FatFs系統(tǒng)模塊,從而來控制SD卡這些存儲(chǔ)設(shè)備。

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


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

5)同時(shí)我們也準(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ù)實(shí)現(xiàn)一副圖像從SD卡讀取到DP顯示緩沖的存儲(chǔ),這里的 BMP 圖像的文件名1.bmp需要和存儲(chǔ)在SD卡里的文件名一樣。用bmp_write,將小貓圖片寫入SD卡。

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

2) 開發(fā)板連接DP顯示器,然后上電,下載程序運(yùn)行之后我們可以在DP顯示器上顯示SD卡里存儲(chǔ)的1.bmp文件的圖像。
3) 之后可將開發(fā)板斷電,將SD卡插到電腦上,可以看到多了CAT.BMP
-
FPGA
+關(guān)注
關(guān)注
1645文章
22034瀏覽量
618050 -
嵌入式
+關(guān)注
關(guān)注
5149文章
19653瀏覽量
317257 -
SD卡
+關(guān)注
關(guān)注
2文章
578瀏覽量
65631 -
Zynq
+關(guān)注
關(guān)注
10文章
614瀏覽量
48231 -
MPSoC
+關(guān)注
關(guān)注
0文章
200瀏覽量
24738
發(fā)布評(píng)論請(qǐng)先 登錄
Zynq UltraScale + MPSoC USB 3.0 CDC器件類設(shè)計(jì)
如何調(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ù)參考手冊(cè)介紹

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

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

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

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

Zynq UltraScale+ MPSoC驗(yàn)證數(shù)據(jù)手冊(cè)

評(píng)論