原創聲明:
本原創教程由芯驛電子科技(上海)有限公司(ALINX)創作,版權歸本公司所有,如需轉載,需授權并注明出處。
適用于板卡型號:
AXU2CGA/AXU2CGB/AXU3EG/AXU4EV-E/AXU4EV-P/AXU5EV-E/AXU5EV-P /AXU9EG/AXU15EG
vivado工程目錄為“ps_hello/vivado”
本章介紹使用FatFs文件系統模塊讀取SD卡的BMP圖片,并通過DP顯示。
1. FatFs簡介
FatFs是一個通用的文件系統模塊,用于在小型嵌入式系統中實現FAT文件系統。FatFs的編寫遵循 ANSI C,因此不依賴于硬件平臺。它可以嵌入到便宜的微控制器中,如 8051, PIC, AVR, SH, Z80, H8, ARM等等,不需要做任何修改。
應用程序通過API函數來調用FatFs系統模塊,從而來控制SD卡這些存儲設備。
FatFs 系統提供了很多 API 函數,我們在下面列舉了以下我們例程中會用的的 API 函數。
f_mount - 注冊/注銷一個工作區域(Work Area)
f_open - 打開/創建一個文件
f_close - 關閉一個文件
f_read - 讀文件
f_write - 寫文件
關于 API 函數的介紹和說明,大家可以參考以下的網站進行更深一步的了解,這個網站上
給出來了每個 API 函數的使用說明和例子。
http://elm-chan.org/fsw/ff/00index_e.html
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官網鏈接:
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的 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
-
FPGA
+關注
關注
1629文章
21729瀏覽量
603008 -
嵌入式
+關注
關注
5082文章
19104瀏覽量
304817 -
SD卡
+關注
關注
2文章
564瀏覽量
63890 -
Zynq
+關注
關注
10文章
609瀏覽量
47175 -
MPSoC
+關注
關注
0文章
198瀏覽量
24272
發布評論請先 登錄
相關推薦
評論