新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 大容量SD卡在海洋数据存储中的应用

大容量SD卡在海洋数据存储中的应用

作者: 时间:2010-06-14 来源:网络 收藏
由于采用的是HC卡和FAT32文件系统,紧接在FAT区之后的是文件目录区,真正意义上的从这个区开始,以簇编号,顺序上第1个簇编号为第2簇,此簇通常为FAT32根目录所用。FAT16从根目录所占的32个扇区之后的第一个扇区开始以簇为单位进行处理,这之前仍以扇区为单位。目录与数据是统一放到这个区域的,并且都不是在一个连续的区域内存放。没有任何特殊标记来区分哪个簇是目录项,哪个簇是数据项,而是由文件系统从根目录出发通过查找的方法来确定簇的类型。

3.2 FAT32文件系统实现

本文设计的文件系统采用模块化层次结构,其总体框架如图4所示。其中,箭头表示调用关系。



程序是面向用户的,为满足某种功能需求而编写的程序。可以通过调用文件系统提供的API函数对文件和目录进行相应的操作。

文件管理和目录管理模块是直接与程序接口的模块,位于整个文件系统的最高层。文件管理模块提供所有与文件操作相关的函数,目录管理模块提供所有与目录操作相关的函数。在对文件操作的大多数情况下,文件管理模块需要调用目录管理模块的相关功能。

文件分配表管理模块主要用来对文件系统的FAT表进行管理,根据系统的请求对FAT表的内容进行相应的修改。文件目录表管理模块主要提供对文件和目录的基本属性信息的管理。这两个模块管理着文件系统的两个重要数据结构,程序不能直接调用它们。

缓存模块是为了降低系统访问卡的次数,提高整个系统的处理速度而加入的。它使用了部分RAM作为缓存来保存一些访问过的扇区的数据,一般用来加载FAT表和FDT表的数据;向卡写入数据时,也需要用它加载数据。

以上几个模块的操作都建立在底层驱动程序上。底层驱动程序主要是向读写某个扇区的程序。

文件分配表管理模块包含几个处理簇链的函数,如获取指定簇下一簇簇号(fat_next_clus())、建立簇与指定簇的链接关系(fat_link_clus())、在簇后增加一个空白簇到簇链中(fat_add_clus())和删除指定簇的簇链(fat_del_clus_chain())。文件目录表管理模块包含几个处理文件登记项的函数,如在给定目录下查找文件(fat_find_fdt())、在给定目录下添加文件(fat_add_fdt())和在给定目录下删除文件(fat_delete_fdt())。目录管理模块主要是实现建立、删除目录的操作,包含的函数有根据路径查找目录所在簇(fat_open_dir())、建立目录(fat_make_dir())和删除目录(fat_del_dir())。用户使用文件系统主要是对文件的操作,文件管理模块提供了对文件的创建、修改和删除等操作,包含函数新建文件(file_create())、打开文件(file_open())、读写指针设定(file_seek())、读取文件数据(file_read())、写入文件数据(file_write())、删除文件(file_delete())和关闭文件(file_close())。

结语

本文介绍了SD数据中的应用,使用高性能的STM32F103xx系列处理器提高了的数据读写速率,很好地解决了数据采集中的问题和SDl.x与SD2.0的识别问题,并给出了适用于的FAT32文件系统的参数设置及其实现方法。

本文引用地址:https://www.eepw.com.cn/article/173307.htm

上一页 1 2 3 下一页

评论


相关推荐

技术专区

关闭