<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 如何在C51系統上實(shí)現YAFFS文件系統

如何在C51系統上實(shí)現YAFFS文件系統

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

3.2 向風(fēng)格轉化

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

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

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

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

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

4 C51下的YAFFS使用實(shí)例

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

yaffs_StartUp();//設置一些參數,包括各分區在Flash中的起始塊和結束塊的地址、預留塊數等
yaffs_mount(/flash); //YAFFS支持多個(gè)分區,這里選擇掛載/flash分區新建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);//以讀/寫(xiě)的方式打開(kāi)文件db1.dbf
r=yaffs_write(f,hello,5);//向文件寫(xiě)數據
yaffs_lseek(f,2,SEEK_SET);//移動(dòng)文件讀/寫(xiě)指針
r=yaffs_write(f,world,5);
r=yaffs_lseek(f,0,SEEK_SET);
r=yaffs_read(f,buffer,10);//從文件讀取數據
r=yaffs_close(f);//關(guān)閉文件db1.dbf
r=yaffs_unlink(/flash/db1.dbf);//刪除文件db1.dbf

  可見(jiàn), YAFFS的接口函數的使用方法與標準C語(yǔ)言中對文件的操作函數十分相似,簡(jiǎn)單易用。

5 總結

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


上一頁(yè) 1 2 下一頁(yè)

關(guān)鍵詞: 系統 文件 YAFFS 實(shí)現 如何 C51

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>