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