FPGA和Nios II軟核的SD卡文件系統(tǒng)實現(xiàn)方法
3 znFAT32文件系統(tǒng)的嵌入和SD卡的掛載
3.1 znFAT32文件系統(tǒng)概述
znFAT32是于振南為小型嵌入式設(shè)備完全獨立編寫,且開放源代碼的FAT32文件系統(tǒng)解決方案。znFAT32能夠支持眾多的存儲設(shè)備(SD卡、CF卡、Flash、U盤等),支持多個存儲器共同工作,可以支持同時訪問多個存儲器對文件的操作。對硬件資源要求低,能夠輕松地移植到51單片機、AVR、ARM、DSP、Nios II等處理器上,占用資源極少(僅占用800字節(jié)左右的RAM),非常適合嵌入式開發(fā)中文件系統(tǒng)的嵌入。其代碼完全由C語言編寫,能夠輕松閱讀,移植方便。其代碼結(jié)構(gòu)如圖6所示。本文引用地址:http://www.ex-cimer.com/article/189745.htm
由圖6可知該文件系統(tǒng)包含兩層。
文件系統(tǒng)代碼層——主要提供對存儲設(shè)備進行操作的各種函數(shù)。
存儲設(shè)備接口層——主要是為了掛載不同的存儲設(shè)備。
3.2 文件系統(tǒng)SD卡的掛載
znFAT32文件系統(tǒng)掛載需要SD卡驅(qū)動層提供的扇區(qū)讀寫函數(shù)。將編寫的扇區(qū)讀寫函數(shù)SD_Read_Sector、SD_Write_Sector取代文件系統(tǒng)中的FAT32_ReadSector與FAT32_WriterSector兩個函數(shù)即可。根據(jù)需要的處理器編寫SD卡驅(qū)動程序十分重要,只有保證驅(qū)動程序的正確性,才能進行文件系統(tǒng)的正確掛接,才能在掛接完成后對SD卡進行文件操作。
znFAT32文件系統(tǒng)的掛接需要對znFAT32文件系統(tǒng)提供的用于標定存儲設(shè)備的全局變量Dev_No設(shè)備號進行處理,znFAT32文件系統(tǒng)給我們提供的存儲設(shè)備宏定義如下:
對不同設(shè)備進行文件操作,需要通過設(shè)備號來選擇不同的設(shè)備驅(qū)動函數(shù)。對SD卡操作需將Dev_NO定義為SDCARD。
4 文件系統(tǒng)在Nios II中的應(yīng)用實例
完成SOPC系統(tǒng)的創(chuàng)建后,在生成的Nios II系統(tǒng)上通過Nios II EDS編程,便可將SD卡與文件系統(tǒng)掛接。
4.1 znFAT32文件系統(tǒng)的使用
znFAT32文件系統(tǒng)為用戶提供的對文件的基本操作函數(shù)讓我們能夠輕松地對文件進行操作。下面列舉了幾個基本函數(shù):
通過上面的函數(shù),可以完成對SD卡的文件讀寫、刪除、數(shù)據(jù)添加、目錄創(chuàng)建、文件拷貝、文件重命名等操作。
4.2 SOPC系統(tǒng)對SD卡文件讀寫操作的驗證
為了驗證上述系統(tǒng)能否正常實現(xiàn)SD卡讀寫,筆者選用了4 GB容量的金士頓SDHC卡,進行了文件讀寫實驗。圖7為Nios II EDS給出的Deb ug信息窗口。信息顯示了在構(gòu)建的系統(tǒng)上SD卡的初始化(實現(xiàn)文件系統(tǒng)的掛接),接著讀取SD卡的存儲容量、扇區(qū)大小、每簇扇區(qū)數(shù),并在根目錄下面打開名為TEST.TXT的文件,并對該文件的信息進行讀取。在一級子目錄下面,同樣建立一個TEST.TXT的文件,并對文件信息進行讀取。
由運行結(jié)果可知,初始化成功并識別此SD卡為SDHC卡,容量為964 256(總簇數(shù))×8(每簇扇區(qū)數(shù))×512(每扇區(qū)字節(jié)數(shù))≈3 968 860 160。根目錄下的TEXT.TXT文件被打開,打開文件成功后在DIR1子目錄下面創(chuàng)建TEST.TXT。由主函數(shù)創(chuàng)建的文件日期在TimeCreat[6]={12,1,4,17,40,28)中存放,文件成功后讀取創(chuàng)建的新文件的詳細信息。
為了進一步驗證本系統(tǒng)對SD卡的寫入操作,筆者將此SD卡通過讀卡器與PC機連接,在PC機的文件系統(tǒng)下,顯示了相同的結(jié)果。
結(jié)語
本文通過在CycloneⅡ系列FPGA上構(gòu)建SOPC系統(tǒng),并在該系統(tǒng)上基于NiosⅡ處理器構(gòu)建了SD卡文件系統(tǒng)。該系統(tǒng)以SPI接口方式與SD卡連接,文件系統(tǒng)是面向嵌入式系統(tǒng)的緊湊型開放源碼的系統(tǒng)。經(jīng)過對SD卡的操作驗證,證明本文提供的方案具有設(shè)計靈活、集成度高、通用性強、移植性好等諸多優(yōu)點。在線陣CCD數(shù)據(jù)采集實驗系統(tǒng)以及數(shù)控貼片控制系統(tǒng)上得到了很好的應(yīng)用。
fpga相關(guān)文章:fpga是什么
51單片機相關(guān)文章:51單片機教程
c語言相關(guān)文章:c語言教程
評論