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

1. 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-posixcfs-posix-dir中相关的cfs_open/read/write/,而这些函数调用POSIX标准的open/read/write函数。

[5][6]是基于FLASH的Coffee API实现,测试cfs_open/read/write之前需要把文件cfs_coffee_arch.cCOFFEE_READCOFFEE_WRITECOFFEE_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就是这样用的。

2. 移植相关

在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更具定制性,效率应该也高。

本文系Spark & Shine原创,转载需注明出处本文最近一次修改时间 2022-03-20 23:00

results matching ""

    No results matching ""