Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1671211
  • 博文数量: 124
  • 博客积分: 4078
  • 博客等级: 中校
  • 技术积分: 3943
  • 用 户 组: 普通用户
  • 注册时间: 2010-07-21 11:28
个人简介

新博客:http://sparkandshine.net/

文章分类

全部博文(124)

分类: 嵌入式

2012-03-29 11:45:47

摘要:

    本文讲述了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更具定制性,效率应该也高。

阅读(4156) | 评论(2) | 转发(1) |
给主人留下些什么吧!~~

Jelline2012-03-30 11:14:07

图片MM: 各种API( ⊙ o ⊙ )啊!.....
Contiki向上层应用提供统一的接口cfs_open/read/write/seek,只是在移植Contiki需要了解这些,设计好底层函数

图片MM2012-03-30 01:10:34

各种API( ⊙ o ⊙ )啊!