基于 fat32 文件系统,预分配存储数据

使用环境:

  • U盘,sd卡,tf卡等存储媒介(storage medium,SM)插入指定设备,该设备能够识别出SM。
  • 支持c标准库。

开发语言:

  • C语言。

功能描述:

  • 基于 fat32 文件系统,预分配存储数据。
  • 在存储数据前,事先将 SM划分为若干区域,如图片区,视频区,日志区等,每个区域只存一种类型的文件。
  • 每种类型文件的个数固定。每个文件的大小,文件名等相关信息,在存储前就已经固定。
  • 采用轮回存储方式存储数据。

    如视频区预分配了1.avi 2.avi 3.avi 三个视频文件,每个视频文件大小 1GB。前1GB的视频数据存在 1.avi 文件里,第 1GB+1B 的数据存在 2.avi 文件里,第 3GB+1B 的数据覆盖 1.avi 文件里的第 1B 的数据,以此类推。
  • 记录可以计算时间的参数(方便使用者能够根据时间信息,读出相关数据)。

    要求前端写入数据时,提供时间信息。否则只能提供相对模糊时间
  • 存储在 SM 中的数据,能够被 windows,linux 操作系统识别并正确读出。

实施方案:

  • 预留SM的部分空间给文件系统用。
  • 图片等离散存储类型文件,时间信息存储在文件的最后修改时间属性里。
  • 视频等连续存储类型文件,每种文件分配两个指针,始终分别指向该类型文件的起始位置和结束位置。预留空间存储文件的结束时间,码率变化时,存储当前码率和对应的起始、结束指针。
  • 提供预分配格式化函数,能够根据 SM 的设备名(如/dev/sdb1)预分配 SM。
  • 提供写数据函数,能够按照预分配方式写入数据。
  • 提供读数据函数,能够按照时间顺序读出数据。
阅读更多:   C语言
添加新评论

icon_redface.gificon_idea.gificon_cool.gif2016kuk.gificon_mrgreen.gif2016shuai.gif2016tp.gif2016db.gif2016ch.gificon_razz.gif2016zj.gificon_sad.gificon_cry.gif2016zhh.gificon_question.gif2016jk.gif2016bs.gificon_lol.gif2016qiao.gificon_surprised.gif2016fendou.gif2016ll.gif