在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 如何在C51系統(tǒng)上實現(xiàn)YAFFS文件系統(tǒng)

            如何在C51系統(tǒng)上實現(xiàn)YAFFS文件系統(tǒng)

            作者: 時間:2011-05-18 來源:網(wǎng)絡(luò) 收藏

            3.2 向風(fēng)格轉(zhuǎn)化

              是在Linux環(huán)境下利用開發(fā)用戶程序的C語言開發(fā)的。它與是有些差別的,主要有:

              ◇ 不支持__inline__函數(shù)修飾符,可以將其宏定義為空;
              ◇ u8、u16、u32都需要重新宏定義成為C51的數(shù)據(jù)類型unsigned char、unsigned int和unsigned long;
              ◇ off_t定義為long。

              在源代碼中有用data和bit作為變量的,而在C51中這些都是關(guān)鍵詞,須將其替換。

              在源代碼中yaffs_Device結(jié)構(gòu)體的定義中使用了帶參數(shù)的函數(shù)指針,通過調(diào)用該指針指向的函數(shù)來對Flash硬件進(jìn)行操作,而C51中通過寄存器函數(shù)指針來調(diào)用函數(shù)不能傳遞實際參數(shù),除非所得參數(shù)可在寄存器間傳遞。因此這里將yaffs_Device結(jié)構(gòu)體定義中的函數(shù)指針去掉,而直接調(diào)用yaffs_if.c中的Flash接口函數(shù)。

              向C51風(fēng)格轉(zhuǎn)化時,最好是在Keil集成開發(fā)環(huán)境中一邊修改,一邊編譯,發(fā)現(xiàn)錯誤后再進(jìn)行修改。當(dāng)編譯器提示有多個錯誤時,要從第一個錯誤開始修改;可能前面的錯誤修改完畢,后面的錯誤就不再是錯誤了。

            4 C51下的YAFFS使用實例

              下面的程序代碼是設(shè)計中的對DBF數(shù)據(jù)庫操作的關(guān)鍵代碼。

            yaffs_StartUp();//設(shè)置一些參數(shù),包括各分區(qū)在Flash中的起始塊和結(jié)束塊的地址、預(yù)留塊數(shù)等
            yaffs_mount(/flash); //YAFFS支持多個分區(qū),這里選擇掛載/flash分區(qū)新建db1.dbf
            f=yaffs_open(/flash/db1.dbf, O_CREAT,S_IREAD | S_IWRITE);
            yaffs_close(f);//關(guān)閉文件db1.dbf
            f=yaffs_open(/flash/db1.dbf, O_RDWR,0);//以讀/寫的方式打開文件db1.dbf
            r=yaffs_write(f,hello,5);//向文件寫數(shù)據(jù)
            yaffs_lseek(f,2,SEEK_SET);//移動文件讀/寫指針
            r=yaffs_write(f,world,5);
            r=yaffs_lseek(f,0,SEEK_SET);
            r=yaffs_read(f,buffer,10);//從文件讀取數(shù)據(jù)
            r=yaffs_close(f);//關(guān)閉文件db1.dbf
            r=yaffs_unlink(/flash/db1.dbf);//刪除文件db1.dbf

              可見, YAFFS的接口函數(shù)的使用方法與標(biāo)準(zhǔn)C語言中對文件的操作函數(shù)十分相似,簡單易用。

            5 總結(jié)

              YAFFS文件是第一個專門為NAND Flash存儲器編寫的嵌入式文件系統(tǒng)。它了掉電保護(hù)、疲勞均衡和有效的垃圾回收,與JFFS相比占用資源更少,運行速度更快;與FAT相比,更適合用于管理NAND Flash數(shù)據(jù)存儲器。在C51系統(tǒng)中如果需要Flash文件系統(tǒng),那么移植YAFFS是個不錯的選擇,但是畢竟它是一個在32位機的Linux下開發(fā)出來的,要讓它能與8位機的C51風(fēng)格完美結(jié)合,還需要進(jìn)一步的努力。


            上一頁 1 2 下一頁

            評論


            相關(guān)推薦

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

            關(guān)閉