新聞中心

        EEPW首頁 > EDA/PCB > 設計應用 > FPGA和Nios II軟核的SD卡文件系統(tǒng)實現(xiàn)方法

        FPGA和Nios II軟核的SD卡文件系統(tǒng)實現(xiàn)方法

        作者: 時間:2012-12-06 來源:網(wǎng)絡 收藏

        3 znFAT32文件系統(tǒng)的嵌入和SD卡的掛載
        3.1 znFAT32文件系統(tǒng)概述
        znFAT32是于振南為小型嵌入式設備完全獨立編寫,且開放源代碼的FAT32文件系統(tǒng)解決方案。znFAT32能夠支持眾多的存儲設備(SD卡、CF卡、Flash、U盤等),支持多個存儲器共同工作,可以支持同時訪問多個存儲器對文件的操作。對硬件資源要求低,能夠輕松地移植到51單片機、AVR、ARM、DSP、 II等處理器上,占用資源極少(僅占用800字節(jié)左右的RAM),非常適合嵌入式開發(fā)中文件系統(tǒng)的嵌入。其代碼完全由C語言編寫,能夠輕松閱讀,移植方便。其代碼結(jié)構(gòu)如圖6所示。

        本文引用地址:http://www.104case.com/article/189745.htm

        h.JPG


        由圖6可知該文件系統(tǒng)包含兩層。
        文件系統(tǒng)代碼層——主要提供對存儲設備進行操作的各種函數(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)提供的用于標定存儲設備的全局變量Dev_No設備號進行處理,znFAT32文件系統(tǒng)給我們提供的存儲設備宏定義如下:
        j.JPG
        對不同設備進行文件操作,需要通過設備號來選擇不同的設備驅(qū)動函數(shù)。對SD卡操作需將Dev_NO定義為SDCARD。

        4 文件系統(tǒng)在 II中的應用實例
        完成SOPC系統(tǒng)的創(chuàng)建后,在生成的 II系統(tǒng)上通過Nios II EDS編程,便可將SD卡與文件系統(tǒng)掛接。
        4.1 znFAT32文件系統(tǒng)的使用
        znFAT32文件系統(tǒng)為用戶提供的對文件的基本操作函數(shù)讓我們能夠輕松地對文件進行操作。下面列舉了幾個基本函數(shù):
        k.JPG
        通過上面的函數(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的文件,并對文件信息進行讀取。

        e.JPG


        由運行結(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Ⅱ系列上構(gòu)建SOPC系統(tǒng),并在該系統(tǒng)上基于NiosⅡ處理器構(gòu)建了。該系統(tǒng)以SPI接口方式與SD卡連接,文件系統(tǒng)是面向嵌入式系統(tǒng)的緊湊型開放源碼的系統(tǒng)。經(jīng)過對SD卡的操作驗證,證明本文提供的方案具有設計靈活、集成度高、通用性強、移植性好等諸多優(yōu)點。在線陣CCD數(shù)據(jù)采集實驗系統(tǒng)以及數(shù)控貼片控制系統(tǒng)上得到了很好的應用。

        fpga相關(guān)文章:fpga是什么


        51單片機相關(guān)文章:51單片機教程


        c語言相關(guān)文章:c語言教程



        上一頁 1 2 3 下一頁

        評論


        相關(guān)推薦

        技術(shù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 紫金县| 天水市| 左权县| 犍为县| 永新县| 民丰县| 灌云县| 阳东县| 酒泉市| 固阳县| 神池县| 淄博市| 仙桃市| 格尔木市| 葫芦岛市| 循化| 清丰县| 五峰| 小金县| 平乐县| 龙岩市| 孝义市| 视频| 德昌县| 抚远县| 天镇县| 巴塘县| 舟山市| 五寨县| 汝南县| 饶阳县| 松滋市| 汉中市| 五大连池市| 五寨县| 无为县| 两当县| 阿拉善盟| 合江县| 北辰区| 肥乡县|