Contiki学习笔记:Contiki/core/cfs/文件关系

4233阅读 2评论2012-03-29 Jelline
分类:嵌入式

摘要:

    本文讲述了Contiki\core\cfs\目录下的文件关系,理清这些关系,有助于移植、应用开发。


一、Contiki\core\cfs\文件关系

1.1 文件清单

[1]cfs.h                 --Coffee文件系统抽象API

[2]cfs-posix.c       --基于POSIX的Coffee API实现(文件操作部分) 

[3]cfs-posix-dir.c --基于POSIX的Coffee API实现(目录操作部分)

[4]cfs-ram.c          --基于RAM的Coffee API实现

[5]cfs-coffee.h      --基于FLASH的Coffee头文件 

[6]cfs-coffee.c      --基于FLASH的Coffee API实现

[7]cfs-eeprom.c    --基于eeprom的Coffee API实现

[8]cfs-xmem.c       --基于外部存储器的Coffee API实现

1.2 说明 

    [2][3]是基于POSIX的Coffee API实现,当在InstantContiki直接运行(即运行平台是Linux,native),则调用cfs-posix、cfs-posix-dir 中相关的cfs_open/read/write/,而这些函数调用POSIX标准的open/read/write函数。

    [5][6]是基于FLASH的Coffee API实现,测试cfs_open/read/write之前需要把文件cfs_coffee_arch.c宏COFFEE_READ、COFFEE_WRITE、COFFEE_ERASE分别映射到硬件相关的函数。感觉cfs-coffee会更通用一些,可以映射到片内FLASH(如stm32_falsh_read/write/erase)、片外FLASH(如xmem_pread/pwrite/erase)、eeprom(eeprom_read/write/erase)、甚至是SD卡(sd_read/write/erase)。而其他诸如cfs-xmem/eeprom,更具定制性,无须宏COFFEE_READ/WRITE/ERASE映射。

    [4]是基于RAM的Coffee API实现,如果版子的RAM太小,那几乎跑不起了。

    [8]cfs-xmem.c是基于外部存储器(external memory)的Coffee API实现,比如ST M25P16就是这样用的。


二、移植相关

    在IAR平台,包含cfs/所有文件会报重定义错误,只能包含[2][3]或[4]或[5][6]或[7]或[8]其中一个。xmem也可能是FLASH(比如ST M25P16),也可直接用cfs-coffee.c,使用的时候,将宏COFFEE_READ/WRITE/ERASE映射到硬件相关的函数(如xmem_pread/pwrite/erase),只是cfs-xmem更具定制性,效率应该也高。

上一篇:Contiki学习笔记:Contiki内核移植
下一篇:Contiki学习笔记:Coffee文件系统终于跑起来了!

文章评论