首页 理论教育 Contiki物联网操作系统移植Coffee模块

Contiki物联网操作系统移植Coffee模块

时间:2023-11-20 理论教育 版权反馈
【摘要】:程序core/cfs/cfs-coffee.c 中Coffee 实现完全与系统实现是独立的,它依赖于针对平台相关的配置值的一组宏定义和I/O 函数,使用Coffee 的每个平台在cfs-coffee-arch.h中定义了Coffee平台特有的宏,具体描述如下。Coffee移植通常是一个简单的任务,该任务包括把配置参数映射到存储设备参数,并且定义指向设备驱动程序I/O 函数的宏COFFEE_WEITE、COFFEE_READ 和COFFEE_ERESE。因此,这些变量影响Coffee 所使用的静态内存的数量。换句话说,如果用户知道任何文件中没有已写数据将被覆盖,为了减少Coffee 的代码量,微日志功能应该被关闭。

Contiki物联网操作系统移植Coffee模块

程序core/cfs/cfs-coffee.c 中Coffee 实现完全与系统实现是独立的,它依赖于针对平台相关的配置值的一组宏定义和I/O 函数,使用Coffee 的每个平台在cfs-coffee-arch.h中定义了Coffee平台特有的宏,具体描述如下。

Coffee移植通常是一个简单的任务,该任务包括把配置参数映射到存储设备参数,并且定义指向设备驱动程序I/O 函数的宏COFFEE_WEITE、COFFEE_READ 和COFFEE_ERESE。在API 函数不匹配的情况下,例如当设备驱动程序仅提供基于页的I/O 时,对于随机I/O 而言,一个小的模拟层是需要的。

COFFEE_PAGE_SIZE 表示逻辑页大小,cfs-coffee-arch.h 中也必须指定页使用的数据类型coffee_page_t,该数据类型必须可以保存COFFEE_SIZE/COFFEE_PAGE_SIZSE 页 , Coffee 进 一 步 要 求 满 足 条 件 sizeof(COFFEE_PAGE_SIZE)>=sizeof(cfs_offset_t)。COFFEE_PAGE_SIZE 类型可由强制类型转换或由需要类型的值后缀控制,参数不一定必须跟设备驱动器的参数相匹配,例如COFFEE_SECTOR_SIZE 和COFFEE_PAGE_SIZE 可能因其他值调整,只要I/0 函数知道该调整值即可。目前有大量的存储设备,例如SD卡,为了避免在这种设备上慢速地顺序扫描,可能需要较大的COFFEE_SECTOR_SIZE 值。另一方面,EEPROM 设备是不使用页概念的小设备,这种情况下,为了得到Coffee 合理的性能,建议程序设计者定义小的逻辑分区和页(例如比Coffee首部大)。(www.xing528.com)

用于Coffee系统平台定义的宏如下:

如果存储设备开始位置的某些部分被用于其他用途时,COFFEE_START是有用的,COFFEE_SIZE 指定了从COFFEE_START 开始有多少比特应该被Coffee使用。OFFEE_MAX_OPEN_FILES 和COFFEE_FD_SET_SIZE 应被设置为容纳使用平台最大期望工作集的值,这些参数分别定义了数组struct file 和struct file_descriptor 的项数。因此,这些变量影响Coffee 所使用的静态内存的数量。 另一个影响 Coffee 系统 RAM 占用空间的参数是COFFEE_LOG_TABLE_LIMIT,这个参数被用来批量读取日志表项数,Coffee在微日志操作期间能够将COFFEE_LOG_SIZE*2 字节压进栈。COFFEE_DYN_SIZE 和COFFEE_LOG_SIZE 决定了Coffee 系统为普通文件和微日志分配的空间的默认大小,这需要开发者为存储设备的大小定义合适的值,这个过程可能需要调整,以便在系统性能和低的空间开销上找到平衡。最后,如果COFFEE_MICRO_LOG 的值是1,编译Coffee 系统和所有与微日志相关的函数,否则如果它被设置为0,Coffee 系统假定存储设备可以处理就地修改,并且排除微日志和与微日志相关的参数。换句话说,如果用户知道任何文件中没有已写数据将被覆盖,为了减少Coffee 的代码量,微日志功能应该被关闭。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈