通信領域采用FPGA芯片嵌入式系統分析方案
2.5 配置文件的讀取和發送
根據上述SD卡存儲格式的說明,可以對存儲在其中的配置數據進行讀取并發送出去。在本方案中,數據的讀取和發送是同時進行的。
在對SD卡進行讀取時,首先需要讀取主引導記錄(MBR),獲得邏輯扇區的位置,然后根據該位置讀取BIOS參數數據塊(BPB),得到文件分配表(FAT)的位置以及扇區大 小等參數。在讀取文件分配表之前,需要先讀取根文件夾來獲得文件的起始位置,然后再 通過文件分配表獲得后續數據的位置。
得到文件的起始簇號之后,在文件分配表中讀取對應該起始簇的字節,獲得文件存儲的下一個簇的簇號,這樣可以連續的進行讀取。在讀取一個簇后,即將整簇的數據發送出去。如果發現文件分配表中某一簇對應的數值是0xFFFF,則說明是文件最后一個簇,這時該簇的數據可以不足一個整簇,需要對其中的數據進行取舍,以保證發送數據的正確性。
對配置文件讀取和發送的函數偽碼如下所示。
ReadSD_FAT16(){
讀取物理第0 扇區內容,即MBR,獲取邏輯0 扇區的位置;
讀取邏輯0 扇區的內容,獲取每扇區字節數,每簇扇區數,FAT 表占據的扇區數等參數;
讀取根文件夾的內容,根據配置文件的文件名獲取其起始簇號和文件長度;
將當前簇設置為起始簇;
While(1){
讀取FAT 中對應當前簇的內容,獲得下一個簇的簇號;
FAT 表中對應當前簇的內容為0xFFFF 時,即說明當前簇是最后一個簇,計算該簇內的有效數據,并進行發送;
讀取當前簇內容,進行發送;
當前簇指向下一個簇;
3 結束語
在當前FPGA使用領域日趨廣泛的情況下,對現有的液晶拼接屏幕含有FPGA 的嵌入式產品進行升級更新成為了一項比較繁瑣的工作,特別是在產品數量較多的情況下。本方案提出了采用SD卡存儲配置數據的配置方案,使用了目前嵌入式系統中常見的ARM 微處理器和SD卡,不僅降低了成本,而且利用了現有資源,節省了電路板布線布局的空間。最重要的是使升級 過程更加簡潔,在進行調試時也可以靈活使用。本文只給出了對Virtex FPGA 進行配置的情況,該方案也可以適用于液晶拼接屏幕Spartan 系列FPGA。
linux操作系統文章專題:linux操作系統詳解(linux不再難懂)
評論