论文部分内容阅读
摘要:以典型微型水声监测系统硬件结构为例,分析了几种常见嵌入式应用方面的文件系统的优缺点,介绍了FatFs文件系统的详细移植方法和过程,最后以监测系统的实际使用效果证明了应用FatFs文件系统的优势。
关键词:FatFs;文件系统;水声;监测系统
中图分类号:TP368 文献标识码:A 文章编号:1009-3044(2016)22-0200-03
Abstract: Take the hardware structure of the typical miniature hydroaccoustic monitoring system as an example, this paper analyzes the advantages and disadvantages of several common file systems in embedded system application, and introduces the method and process of migrating FatFs file system in detail, finally the practice effect proves that FatFs file system benefits miniature hydroaccoustic monitoring system.
Key words: FatFs; file system; hydroaccoustic monitoring system
1 引言
随着科学技术的进一步发展和海洋探索的进一步加深,采用电池供电的便携式微型监测系统在水声信号采集和存储领域有着更多的需求[1]。尤其是目前对水声监测系统越来越长的工作时间要求,致使监测数据动辄几百M、几G甚至几十G字节,在这种情况下,对监测数据采用何种存储方式就显得尤为重要。
传统的存储方式一般采用在软盘、光盘、硬盘、闪存等存储介质上直接写入监测数据,完成监测任务后再使用特定编写的软件读出监测数据,转换成与操作系统兼容的TXT、DAT、XLS等文件,以便分析使用或者归档存储。随着存储数据量的越来越大,这种传统存储方式的弊端也愈发突出,如无法避免的转换过程、转换时间越来越长、多次记录数据管理能力的缺失等,都成为了水声监测系统发展上的制约。采用嵌入文件系统的存储方式,可以直接把数据存储为与操作系统兼容的文件格式,并且支持多次记录数据的管理,从而简化监测系统设计上的复杂度,减少监测任务后的数据处理时间,增加水声监测系统使用方法上的灵活性。
2 硬件结构
本文重在讨论FatFs文件系统在微型水声监测系统中的应用,因此硬件系统结构选择有代表性的典型部件来举例说明。在此,我们选择STM32F103RE作为MPU,ADS8326为AD采样核心器件,16G Micro SD卡作为存储介质。此外,硬件系统器件均采用低功耗器件,并进行最小化电路设计,使得我们可以选择普通手机电池为系统电源,以达到降低硬件系统成本和减少系统复杂度的目的。硬件结构如图1所示。
3 文件系统
操作系统中负责管理和存储文件信息的软件机构称为文件管理系统,简称文件系统[2]。文件系统由三部分组成:与文件管理有关的软件、被管理的文件以及实施文件管理所需的数据结构。从系统角度来看,文件系统是对文件存储空间进行组织和分配,负责文件存储并对存入的文件进行保护和检索的系统。具体地说,它负责为用户建立文件,存入、读出、修改、转储文件,控制文件的存取,当用户不再使用时撤销文件等。
3.1 常见文件系统对比
我们最早和经常接触的文件系统主要在计算机应用方面,比较常见的有window系统的FAT12、FAT16、FAT32和NTFS,Linux 系统的Ext2、Ext3和Ext4,还有大部分光盘使用的CDFS等。同样,在嵌入式系统应用方面,也有UC/FS、ZLG/FS、efsl、MINIFAT、FatFs等众多常见文件系统,下面进行简要介绍[3-4]。
UC/FS是由Micrium公司开发的文件系统,它是一个高度可移植、可固化的嵌入式FAT文件系统。UC/FS是为与各种类型的硬件兼容而设计的,它适用于所有的存储介质。但它是一个付费的嵌入式文件管理系统,是一个商业版软件,它比较大,且对磁盘的操作效率不高。
ZLG/FS是广州周立功单片机科技有限公司开发的嵌入式文件系统,其公司很多的开发板上面都送了这个文件系统的源代码,但它对磁盘读写操作速度太慢,不适用于实际应用,比较适用于教学。
efsl是sourceforge.net网站发布的一个开源、免费的文件系统,它的整体结构很简单,只需要提供读扇区和写扇区2个函数即可,因此移植工作量很少,但它功能较少,稳定性较差。
MINIFAT是 Toshiba 提供的一个文件系统,此文件系统只支持 fat12/16,提供了比较完整的文件操作函数,支持多设备和多文件,也支持cache管理,有较高的管理效率。但此文件系统不支持长文件名的读取,所有的文件都严格要求是Dos8.3格式的短文件名,总体来说代码清晰,可以自行扩展fat32及长文件名的支持。
FatFs是一个完全免费开源的文件系统,它是一个专门为小型嵌入式系统设计的通用FAT文件系统模块。FatFs完全用标准C语言编写,并且完全与磁盘I/O层分开,因此它独立于硬件架构。它可以被嵌入到低成本的微控制器中,如AVR, 8051,PIC ,ARM, Z80, 68K等等,而且移植比较简单。它支持FATl2、FATl6 和FAT32,支持多个存储介质;有独立的缓冲区,可以对多个文件进行读/写,并特别对8 位单片机和16 位单片机做了优化。 程序清单2 disk_initialize函数
Prog.2 disk_initialize function
DSTATUS disk_initialize (
BYTE drv /* 物理驱动器号 */
)
{
if (drv) /* 只有1个,只能是0 */
{
return STA_NOINIT;
}
Status = SD_Init(); /* SD卡的初始化程序 */
if (Status != SD_OK )
{
return STA_NOINIT;
}
else
{
return RES_OK;
}
}
程序清单3 disk_read函数
Prog.3 disk_read function
DRESULT disk_read (
BYTE drv, /* 物理驱动器号 */
BYTE *buff, /* 数据缓冲区地址指针*/
DWORD sector, /* 起始扇区号*/
BYTE count /* 读取扇区数 */
)
{
if (count > 1)
{
SD_ReadMultiBlocks(buff, sector * BLOCK_SIZE, BLOCK_SIZE, count); /* 读多扇区块函数 */
SD_WaitReadOperation(); /* 等待读操作完成 */
}
else
{
SD_ReadBlock(buff, sector * BLOCK_SIZE, BLOCK_SIZE);
/*读单扇区块函数*/
SD_WaitReadOperation(); /* 等待读操作完成 */
}
return RES_OK;
}
程序清单4 disk_write函数
Prog.4 disk_write function
DRESULT disk_write (
BYTE drv, /* 物理驱动器号 */
BYTE *buff, /* 数据缓冲区地址指针*/
DWORD sector, /* 起始扇区号*/
BYTE count /* 读取扇区数 */
)
{
if (count > 1)
{
SD_WriteMultiBlocks(buff, sector * BLOCK_SIZE, BLOCK_SIZE, count); /* 写多扇区块函数 */
SD_WaitWriteOperation(); /* 等待写操作完成 */
}
else
{
SD_WriteBlock(buff, sector * BLOCK_SIZE, BLOCK_SIZE);
/*写单扇区块函数*/
SD_WaitWriteOperation(); /* 等待写操作完成 */
}
return RES_OK;
}
5 结束语
通过以上三个步骤的移植后,我们即可使用FatFs文件系统提供的多种多样、功能强大的应用层函数进行存储介质的文件系统管理,实现微型水声监测记录系统免除数据文件转换、直接存储系统兼容文件、多次记录数据管理等目的。
在微型水声监测记录系统的实际使用中,连续监测8小时数据量为6GB左右,由于采用FatFs文件系统并直接存储为二进制*.dat文件形式,能节约数据导出和转换时间40分钟左右。对于多次监测记录任务而言,也无需考虑存储区域管理和分配问题,定义不同的存储文件名即可记录不同任务的数据。实践证明,文件系统的使用能简化微型水声监测系统设计上的复杂度,减少监测任务后的数据处理时间,增加水声监测系统使用方法上的灵活性。
参考文献:
[1] 曲加圣,杨松. 便携式水下声信标探测定位设备技术设计与实现[J]. 舰船科学技术,2012(4):75-78.
[2] 席卫华. FatFs文件系统在数码相框上的应用[J]. 信息安全与技术,2012(1): 71-73.
[3] 王亮. 基于FatFs嵌入式文件系统的振动检测设备[J]. 可编程控制器与工厂自动化,2014(7):91-93 126.
[4] 龙德亮. 基于μC/GUI和FATFS的车载GPS数据显示与存储系统[D]. 山东师范大学,2014.
[5] 路敦强,吴晓荣. 基于MSP430F5438和FatFs嵌入式文件系统的实现[J]. 天津师范大学学报:自然科学版,2011(2):28-31 68.
关键词:FatFs;文件系统;水声;监测系统
中图分类号:TP368 文献标识码:A 文章编号:1009-3044(2016)22-0200-03
Abstract: Take the hardware structure of the typical miniature hydroaccoustic monitoring system as an example, this paper analyzes the advantages and disadvantages of several common file systems in embedded system application, and introduces the method and process of migrating FatFs file system in detail, finally the practice effect proves that FatFs file system benefits miniature hydroaccoustic monitoring system.
Key words: FatFs; file system; hydroaccoustic monitoring system
1 引言
随着科学技术的进一步发展和海洋探索的进一步加深,采用电池供电的便携式微型监测系统在水声信号采集和存储领域有着更多的需求[1]。尤其是目前对水声监测系统越来越长的工作时间要求,致使监测数据动辄几百M、几G甚至几十G字节,在这种情况下,对监测数据采用何种存储方式就显得尤为重要。
传统的存储方式一般采用在软盘、光盘、硬盘、闪存等存储介质上直接写入监测数据,完成监测任务后再使用特定编写的软件读出监测数据,转换成与操作系统兼容的TXT、DAT、XLS等文件,以便分析使用或者归档存储。随着存储数据量的越来越大,这种传统存储方式的弊端也愈发突出,如无法避免的转换过程、转换时间越来越长、多次记录数据管理能力的缺失等,都成为了水声监测系统发展上的制约。采用嵌入文件系统的存储方式,可以直接把数据存储为与操作系统兼容的文件格式,并且支持多次记录数据的管理,从而简化监测系统设计上的复杂度,减少监测任务后的数据处理时间,增加水声监测系统使用方法上的灵活性。
2 硬件结构
本文重在讨论FatFs文件系统在微型水声监测系统中的应用,因此硬件系统结构选择有代表性的典型部件来举例说明。在此,我们选择STM32F103RE作为MPU,ADS8326为AD采样核心器件,16G Micro SD卡作为存储介质。此外,硬件系统器件均采用低功耗器件,并进行最小化电路设计,使得我们可以选择普通手机电池为系统电源,以达到降低硬件系统成本和减少系统复杂度的目的。硬件结构如图1所示。
3 文件系统
操作系统中负责管理和存储文件信息的软件机构称为文件管理系统,简称文件系统[2]。文件系统由三部分组成:与文件管理有关的软件、被管理的文件以及实施文件管理所需的数据结构。从系统角度来看,文件系统是对文件存储空间进行组织和分配,负责文件存储并对存入的文件进行保护和检索的系统。具体地说,它负责为用户建立文件,存入、读出、修改、转储文件,控制文件的存取,当用户不再使用时撤销文件等。
3.1 常见文件系统对比
我们最早和经常接触的文件系统主要在计算机应用方面,比较常见的有window系统的FAT12、FAT16、FAT32和NTFS,Linux 系统的Ext2、Ext3和Ext4,还有大部分光盘使用的CDFS等。同样,在嵌入式系统应用方面,也有UC/FS、ZLG/FS、efsl、MINIFAT、FatFs等众多常见文件系统,下面进行简要介绍[3-4]。
UC/FS是由Micrium公司开发的文件系统,它是一个高度可移植、可固化的嵌入式FAT文件系统。UC/FS是为与各种类型的硬件兼容而设计的,它适用于所有的存储介质。但它是一个付费的嵌入式文件管理系统,是一个商业版软件,它比较大,且对磁盘的操作效率不高。
ZLG/FS是广州周立功单片机科技有限公司开发的嵌入式文件系统,其公司很多的开发板上面都送了这个文件系统的源代码,但它对磁盘读写操作速度太慢,不适用于实际应用,比较适用于教学。
efsl是sourceforge.net网站发布的一个开源、免费的文件系统,它的整体结构很简单,只需要提供读扇区和写扇区2个函数即可,因此移植工作量很少,但它功能较少,稳定性较差。
MINIFAT是 Toshiba 提供的一个文件系统,此文件系统只支持 fat12/16,提供了比较完整的文件操作函数,支持多设备和多文件,也支持cache管理,有较高的管理效率。但此文件系统不支持长文件名的读取,所有的文件都严格要求是Dos8.3格式的短文件名,总体来说代码清晰,可以自行扩展fat32及长文件名的支持。
FatFs是一个完全免费开源的文件系统,它是一个专门为小型嵌入式系统设计的通用FAT文件系统模块。FatFs完全用标准C语言编写,并且完全与磁盘I/O层分开,因此它独立于硬件架构。它可以被嵌入到低成本的微控制器中,如AVR, 8051,PIC ,ARM, Z80, 68K等等,而且移植比较简单。它支持FATl2、FATl6 和FAT32,支持多个存储介质;有独立的缓冲区,可以对多个文件进行读/写,并特别对8 位单片机和16 位单片机做了优化。 程序清单2 disk_initialize函数
Prog.2 disk_initialize function
DSTATUS disk_initialize (
BYTE drv /* 物理驱动器号 */
)
{
if (drv) /* 只有1个,只能是0 */
{
return STA_NOINIT;
}
Status = SD_Init(); /* SD卡的初始化程序 */
if (Status != SD_OK )
{
return STA_NOINIT;
}
else
{
return RES_OK;
}
}
程序清单3 disk_read函数
Prog.3 disk_read function
DRESULT disk_read (
BYTE drv, /* 物理驱动器号 */
BYTE *buff, /* 数据缓冲区地址指针*/
DWORD sector, /* 起始扇区号*/
BYTE count /* 读取扇区数 */
)
{
if (count > 1)
{
SD_ReadMultiBlocks(buff, sector * BLOCK_SIZE, BLOCK_SIZE, count); /* 读多扇区块函数 */
SD_WaitReadOperation(); /* 等待读操作完成 */
}
else
{
SD_ReadBlock(buff, sector * BLOCK_SIZE, BLOCK_SIZE);
/*读单扇区块函数*/
SD_WaitReadOperation(); /* 等待读操作完成 */
}
return RES_OK;
}
程序清单4 disk_write函数
Prog.4 disk_write function
DRESULT disk_write (
BYTE drv, /* 物理驱动器号 */
BYTE *buff, /* 数据缓冲区地址指针*/
DWORD sector, /* 起始扇区号*/
BYTE count /* 读取扇区数 */
)
{
if (count > 1)
{
SD_WriteMultiBlocks(buff, sector * BLOCK_SIZE, BLOCK_SIZE, count); /* 写多扇区块函数 */
SD_WaitWriteOperation(); /* 等待写操作完成 */
}
else
{
SD_WriteBlock(buff, sector * BLOCK_SIZE, BLOCK_SIZE);
/*写单扇区块函数*/
SD_WaitWriteOperation(); /* 等待写操作完成 */
}
return RES_OK;
}
5 结束语
通过以上三个步骤的移植后,我们即可使用FatFs文件系统提供的多种多样、功能强大的应用层函数进行存储介质的文件系统管理,实现微型水声监测记录系统免除数据文件转换、直接存储系统兼容文件、多次记录数据管理等目的。
在微型水声监测记录系统的实际使用中,连续监测8小时数据量为6GB左右,由于采用FatFs文件系统并直接存储为二进制*.dat文件形式,能节约数据导出和转换时间40分钟左右。对于多次监测记录任务而言,也无需考虑存储区域管理和分配问题,定义不同的存储文件名即可记录不同任务的数据。实践证明,文件系统的使用能简化微型水声监测系统设计上的复杂度,减少监测任务后的数据处理时间,增加水声监测系统使用方法上的灵活性。
参考文献:
[1] 曲加圣,杨松. 便携式水下声信标探测定位设备技术设计与实现[J]. 舰船科学技术,2012(4):75-78.
[2] 席卫华. FatFs文件系统在数码相框上的应用[J]. 信息安全与技术,2012(1): 71-73.
[3] 王亮. 基于FatFs嵌入式文件系统的振动检测设备[J]. 可编程控制器与工厂自动化,2014(7):91-93 126.
[4] 龙德亮. 基于μC/GUI和FATFS的车载GPS数据显示与存储系统[D]. 山东师范大学,2014.
[5] 路敦强,吴晓荣. 基于MSP430F5438和FatFs嵌入式文件系统的实现[J]. 天津师范大学学报:自然科学版,2011(2):28-31 68.