- 1、本文档共15页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Lesson7---存储 TinyOS系统经典PPT教程 教学课件
Lesson7 存 储 永久性(non-volatile)数据存储可以允许节点即使在断电或者重新编程时也能保持数据。 了解数据存储的类型。 相关的接口与组件。 一、接口与组件 接口:BlockRead、BlockWrite、Mount、ConfigStorage、LogRead、LogWrite、Storage.h 组件:ConfigStorageC/LogStorageC/BlockStorageC 由于TinyOS支持多平台,每个平台都有它自己的存储驱动的实现。例如: \opt\tinyos-2.x\tos\chips\at45db \opt\tinyos-2.x\tos\chips\stm25p 二、卷Volumes TinyOS 2.x把flash芯片划分成了一个或更多的固定大小的卷,这是在编译时用XML文件指明的。 卷表(volume table),允许应用开发者指明名称、大小以及每个卷在flash中的基础地址。 每个卷提供单一类型的存储抽象(如配置configuration、日志log或块存储block storage)。 volume_table volume name=CONFIGLOG size=65536“ base=“0”/ volume name=PACKETLOG size=65536/ volume name=SENSORLOG size=131072/ volume name=CAMERALOG size=524288/ /volume_table 3.1 配置数据的存储 配置数据(小数据对象)必须能够在复位、电力循环或重编程时存活下来。这种能力在很多场合都是非常有用的。 刻度校正(Calibration):传感器的校准系数可能是出厂配置并保留下来的,所以它们不会在掉电时或者节点重编程时丢失。 身份信息(Identification):设备辨认信息,一旦它们被分配到节点,这些值就会继续存下去,即使碰到复位、电力循环和重编程,也不会丢失。 传感参数(Sensing):检测和发送的处理参数有采样周期、滤波系数以及可调的探测阈值。 例子程序 BlinkConfig -- 1 Step 1 创建volumes-CHIPNAME.xml文件,建立卷表。 例子程序 BlinkConfig -- 2 Step 2 在使用flash芯片前,它必须使用分阶段的mount命令挂载。 例子程序 BlinkConfig -- 3 Step 3 如果卷有效,使用ConfigStore.read命令读取卷。如果卷无效,调用Cmit使它有效。如果read成功,Config.readDone事件触发。 例子程序 BlinkConfig -- 4 Step 4 调用ConfigStore.write命令并触发Config.writeDone事件 。为了确保数据保存在flash里,调用ConfigSmit命令是必须的。当commitDone事件触发,数据被持久地写入到flash 。 3.2 日志数据的存储 对事件和小数据项的可靠记录是一个普通应用程序所必须的。 记录的数据在系统崩溃时是不该丢失的。 日志可以是线性的(当卷存满了就停止录入)或循环的(当卷满了就覆盖最早的记录)。 即使系统掉电(崩溃或电力循环),也只丢失最近的日志记录。 例子程序PacketParrot --1 Step 1 决定你想存入什么样的数据到日志里。PacketParrot(位于/apps/tutorials/PacketParrot/)声明如下的结构体: 例子程序PacketParrot --2 Step 3 若LogRead.read的调用返回SUCCESS,则会马上触发LogRead.readDone事件。检查返回数据是否和预期的长度一样。 例子程序PacketParrot --3 Step 4 调用LogWrite.append命令写入一条日志记录到flash。 3.3 大数据对象的存储 块存储(Block storage)通常用于存储那些不能存于RAM的大数据对象。 块是一个低级的系统接口,只能一次性写入,重写需要擦除,而擦除是比较耗费时间的,以块为单位(例如,256B-64KB)发生,且只能有有限次(例如,10,000到100,000次比较常见)。 TinyOS的网络重编程系统使用了块存储来保存程序镜像。 块存储的实现组件是BlockStorageC,涉及到的接口是BlockRead/BlockWrite。 例子程序位于tinyos-2.x/apps/tests/storage/Block/ 。 * 常见的存储芯片 volume_table volume name=LOGTEST size=26
文档评论(0)