物联网下的RTOS开发(四)——数据存储

文章目录

  • 数据存储
    • 一、存储介质
    • 二、物联网场景
    • 三、模型设计
      • 直接存储
      • 可靠性直接存储
      • 文件系统应用

数据存储

在window或者linux下开发程序,程序员往往不会关心文件存储的介质。因为操作系统已经为我们封装好了操作硬件(磁盘)的可能会用的绝大部分接口。只要我们调用一下相关IO接口就能完成对磁盘的操作。而目前IOT设备资源很限,用于存储的可以是ram或者flash,ram的容量往往是几K字节到几百K字节,flash往往小于8M字节。这给我们带来没有很好地文件系统支持。磁盘的擦写均匀管理,掉电数据保存等问题,这些都会增加开发的复杂性,带来数据保存稳定性以及代码可移植性的问题。
接下去我会根据工作开发中遇到的经验提出几种现有的方案,以及推荐的做法。

一、存储介质

IOT系统下的存储介质可以简单分为ram和flash。我们知道ram掉电就会丢失,但是注意是掉电而不是重启。这样我们就有机会将重启原因,或者一些必须重启才能完成工作而又要保留flag的一些参数存储在这里。
Flash分为norflash 和 nandflash,IOT的设备这两种都会遇到,如果能上nandflash的系统主芯片能够提供的资源也会相对丰富,存储的接口一般会提供,这里我们主要讨论norflash。flash的特点是,只能将bit为1的地方写成0,这样写之前就要擦除操作。读取flash的速度是很快的,但是写很慢,擦除更慢。这里我用上海复旦微FM25Q16A型号为例,以下图片摘自其datasheet,可以看出擦除一个sector(4K)正常需要35ms的时间。对于MCU来说这个时间已经有点久了。如果程序设计不当,会影响其他任务的执行,甚至可能导致看门狗喂狗不及时而导致系统重启的情况。

你可能感兴趣的:(RTOS,物联网,设计模型)