原創(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圖片,并通過(guò)DP顯示。
1. FatFs簡(jiǎn)介
FatFs是一個(gè)通用的文件系統(tǒng)模塊,用于在小型嵌入式系統(tǒng)中實(shí)現(xiàn)FAT文件系統(tǒng)。FatFs的編寫(xiě)遵循 ANSI C,因此不依賴于硬件平臺(tái)。它可以嵌入到便宜的微控制器中,如 8051, PIC, AVR, SH, Z80, H8, ARM等等,不需要做任何修改。
應(yīng)用程序通過(guò)API函數(shù)來(lái)調(diào)用FatFs系統(tǒng)模塊,從而來(lái)控制SD卡這些存儲(chǔ)設(shè)備。
FatFs 系統(tǒng)提供了很多 API 函數(shù),我們?cè)谙旅媪信e了以下我們例程中會(huì)用的的 API 函數(shù)。
f_mount - 注冊(cè)/注銷(xiāo)一個(gè)工作區(qū)域(Work Area)
f_open - 打開(kāi)/創(chuàng)建一個(gè)文件
f_close - 關(guān)閉一個(gè)文件
f_read - 讀文件
f_write - 寫(xiě)文件
關(guān)于 API 函數(shù)的介紹和說(shuō)明,大家可以參考以下的網(wǎng)站進(jìn)行更深一步的了解,這個(gè)網(wǎng)站上
給出來(lái)了每個(gè) API 函數(shù)的使用說(shuō)明和例子。
http://elm-chan.org/fsw/ff/00index_e.html
2. Vitis程序開(kāi)發(fā)
1)打開(kāi)Vitis軟件,我們已經(jīng)為大家生成了一個(gè)sd_bmp的工程。這里需要配置BSP支持包的屬性,在Board Support Package Settings里選擇xilffs項(xiàng),使能項(xiàng)目支持xilffs文件系統(tǒng)。
關(guān)于xilffs庫(kù)是Xilinx提供的FAT文件系統(tǒng)支持包,用戶可以調(diào)用庫(kù)里的API函數(shù)實(shí)現(xiàn)對(duì)
SD/eMMC等設(shè)備的操作。xilffs庫(kù)里主要包含F(xiàn)AT的文件系統(tǒng)(File System Files)和驅(qū)動(dòng)層文件(Glue Layer Files)。
2) 關(guān)于xilffs庫(kù)的介紹和應(yīng)用,大家可以參考以下Xilinx官網(wǎng)鏈接:
http://www.wiki.xilinx.com/xilffs
3) 接下來(lái)我們來(lái)看sd_bmp的工程代碼。在工程代碼里,我們需要把 SD 卡里存儲(chǔ)的 bmp格式的圖像數(shù)據(jù)讀出來(lái),去掉圖像頭后放到DP的顯示緩沖區(qū)中,然后實(shí)現(xiàn)圖像在DP顯示器的顯示。
4)在bmp.c 文件里,我們添加了一個(gè) bmp_read 的函數(shù),在這個(gè)函數(shù)里首先用f_open函數(shù)打開(kāi)一個(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,將小貓圖片寫(xiě)入SD卡。
3.板上驗(yàn)證
1) 首先需要先存一副1920*1080像素,24bit的BMP文件到SD卡里,文件名為1.bmp(文件在工程目錄下),開(kāi)發(fā)板斷電情況下,把SD卡插入卡座里。
2) 開(kāi)發(fā)板連接DP顯示器,然后上電,下載程序運(yùn)行之后我們可以在DP顯示器上顯示SD卡里存儲(chǔ)的1.bmp文件的圖像。
3) 之后可將開(kāi)發(fā)板斷電,將SD卡插到電腦上,可以看到多了CAT.BMP
-
FPGA
+關(guān)注
關(guān)注
1630文章
21777瀏覽量
604769 -
嵌入式
+關(guān)注
關(guān)注
5088文章
19160瀏覽量
306541 -
SD卡
+關(guān)注
關(guān)注
2文章
566瀏覽量
64008 -
Zynq
+關(guān)注
關(guān)注
10文章
610瀏覽量
47231 -
MPSoC
+關(guān)注
關(guān)注
0文章
199瀏覽量
24302
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論