基于SD卡的BMS海量历史数据存储系统设计

时间:2011-03-18来源:网络


2 软件程序设计
软件设计主要难点是SD卡驱动与FAT32文件系统的结合方式设计。FAT32文件系统的实现有一定的复杂性,如果设计地不好不但会浪费大量CPU资源,而且可能造成数据丢失、覆盖等严重后果。采用传统数据流式程序设计思想实现起来比较困难,Debug也很不方便。本设计引用现代Windows操作系统惯用的层次模型划分的方法开发了一套基于SD卡的FAT32文件系统协议包,具有层次分明、结构紧凑、可移植性强及逻辑清晰的特点。
2.1 FAT32文件系统
FAT32是由Microsoft设计并运用得非常成功的文件系统。至今FAT32依然占据着Microsoft Windows文件系统中重要的地位。FAT32改进了FAT16和FAT12不支持大分区、单位簇的容量过大以致空间急剧浪费等缺点。由引导扇区、FAT表、根目录和数据区4大部分组成。图3标出了FAT32分区的基本构成,FAT2是FAT1的备份,用于在FAT1损坏时修复。

8.JPG


FAT表(File Allocation Table文件分配表)记录文件在介质上的放置位置,即簇号序列。每个表项记录的簇号都是32位的,故这个方法称为FAT32。表2所示是一段简化的FAT表,第2簇记录根目录存放位置,第3簇记录某文件存储的下一簇号(该文件从本簇即第3簇开始存放)是6号,第6号又记录接下来的簇号……,至到标记FF表示文件结束。同样道理从第12簇开始存放另一个文件,该文件在第93簇存放结束。从表
中可以看出文件是可以非连续存放的,这样可以充分利用SD存储介质的空间,并且可以保证存放BMS采集数据不会发生重叠,冲掉以前数据。表3列出了FAT表各记录项的取值含义。

9.JPG

10.JPG


系统在存储一个文件时先计算出需要几个簇的空间来存放,再从FAT表中找出这相应个数的空闲簇,并其修改记录项的取值使之首尾连成一串。然后在目录表中创建一个新的文件项,并记录它在介质上存放的首簇号。这样在读文件时,只要直接从目录表中找到该文件的记录项,获取它的首簇号就能把文件读出来了。FAT32文件系统目录的记录项的结构定义如表4所示。

12.JPG


2.2 SD卡SPI通信协议
发送给SD卡的命令采用6字节的格式如表5所示。命令的第1个字节可通过将6位命令码与16进制码0x40进行或运算得到。如果命令需要,则在接下来的4个字节中提供一个32位的参数,最后1个字节包含了从第1个字节到第5个字节的CRC-7校验和。表6列出了部分SD存储卡SPI命令的解释。

13.JPG

1 2 3

关键词: 存储 系统 设计 历史数据 海量 SD BMS 基于

加入微信
获取电子行业最新资讯
搜索微信公众号:EEPW

或用微信扫描左侧二维码

相关文章

查看电脑版