国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

FatFs文件系統(tǒng)在微型水聲監(jiān)測系統(tǒng)中的應(yīng)用

2016-10-31 20:55:02鄧開邱政梁國龍
電腦知識與技術(shù) 2016年22期
關(guān)鍵詞:監(jiān)測系統(tǒng)水聲

鄧開+邱政+梁國龍

摘要:以典型微型水聲監(jiān)測系統(tǒng)硬件結(jié)構(gòu)為例,分析了幾種常見嵌入式應(yīng)用方面的文件系統(tǒng)的優(yōu)缺點(diǎn),介紹了FatFs文件系統(tǒng)的詳細(xì)移植方法和過程,最后以監(jiān)測系統(tǒng)的實(shí)際使用效果證明了應(yīng)用FatFs文件系統(tǒng)的優(yōu)勢。

關(guān)鍵詞:FatFs;文件系統(tǒng);水聲;監(jiān)測系統(tǒng)

中圖分類號:TP368 文獻(xiàn)標(biāo)識碼: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 引言

隨著科學(xué)技術(shù)的進(jìn)一步發(fā)展和海洋探索的進(jìn)一步加深,采用電池供電的便攜式微型監(jiān)測系統(tǒng)在水聲信號采集和存儲領(lǐng)域有著更多的需求[1]。尤其是目前對水聲監(jiān)測系統(tǒng)越來越長的工作時(shí)間要求,致使監(jiān)測數(shù)據(jù)動輒幾百M(fèi)、幾G甚至幾十G字節(jié),在這種情況下,對監(jiān)測數(shù)據(jù)采用何種存儲方式就顯得尤為重要。

傳統(tǒng)的存儲方式一般采用在軟盤、光盤、硬盤、閃存等存儲介質(zhì)上直接寫入監(jiān)測數(shù)據(jù),完成監(jiān)測任務(wù)后再使用特定編寫的軟件讀出監(jiān)測數(shù)據(jù),轉(zhuǎn)換成與操作系統(tǒng)兼容的TXT、DAT、XLS等文件,以便分析使用或者歸檔存儲。隨著存儲數(shù)據(jù)量的越來越大,這種傳統(tǒng)存儲方式的弊端也愈發(fā)突出,如無法避免的轉(zhuǎn)換過程、轉(zhuǎn)換時(shí)間越來越長、多次記錄數(shù)據(jù)管理能力的缺失等,都成為了水聲監(jiān)測系統(tǒng)發(fā)展上的制約。采用嵌入文件系統(tǒng)的存儲方式,可以直接把數(shù)據(jù)存儲為與操作系統(tǒng)兼容的文件格式,并且支持多次記錄數(shù)據(jù)的管理,從而簡化監(jiān)測系統(tǒng)設(shè)計(jì)上的復(fù)雜度,減少監(jiān)測任務(wù)后的數(shù)據(jù)處理時(shí)間,增加水聲監(jiān)測系統(tǒng)使用方法上的靈活性。

2 硬件結(jié)構(gòu)

本文重在討論FatFs文件系統(tǒng)在微型水聲監(jiān)測系統(tǒng)中的應(yīng)用,因此硬件系統(tǒng)結(jié)構(gòu)選擇有代表性的典型部件來舉例說明。在此,我們選擇STM32F103RE作為MPU,ADS8326為AD采樣核心器件,16G Micro SD卡作為存儲介質(zhì)。此外,硬件系統(tǒng)器件均采用低功耗器件,并進(jìn)行最小化電路設(shè)計(jì),使得我們可以選擇普通手機(jī)電池為系統(tǒng)電源,以達(dá)到降低硬件系統(tǒng)成本和減少系統(tǒng)復(fù)雜度的目的。硬件結(jié)構(gòu)如圖1所示。

3 文件系統(tǒng)

操作系統(tǒng)中負(fù)責(zé)管理和存儲文件信息的軟件機(jī)構(gòu)稱為文件管理系統(tǒng),簡稱文件系統(tǒng)[2]。文件系統(tǒng)由三部分組成:與文件管理有關(guān)的軟件、被管理的文件以及實(shí)施文件管理所需的數(shù)據(jù)結(jié)構(gòu)。從系統(tǒng)角度來看,文件系統(tǒng)是對文件存儲空間進(jìn)行組織和分配,負(fù)責(zé)文件存儲并對存入的文件進(jìn)行保護(hù)和檢索的系統(tǒng)。具體地說,它負(fù)責(zé)為用戶建立文件,存入、讀出、修改、轉(zhuǎn)儲文件,控制文件的存取,當(dāng)用戶不再使用時(shí)撤銷文件等。

3.1 常見文件系統(tǒng)對比

我們最早和經(jīng)常接觸的文件系統(tǒng)主要在計(jì)算機(jī)應(yīng)用方面,比較常見的有window系統(tǒng)的FAT12、FAT16、FAT32和NTFS,Linux 系統(tǒng)的Ext2、Ext3和Ext4,還有大部分光盤使用的CDFS等。同樣,在嵌入式系統(tǒng)應(yīng)用方面,也有UC/FS、ZLG/FS、efsl、MINIFAT、FatFs等眾多常見文件系統(tǒng),下面進(jìn)行簡要介紹[3-4]。

UC/FS是由Micrium公司開發(fā)的文件系統(tǒng),它是一個高度可移植、可固化的嵌入式FAT文件系統(tǒng)。UC/FS是為與各種類型的硬件兼容而設(shè)計(jì)的,它適用于所有的存儲介質(zhì)。但它是一個付費(fèi)的嵌入式文件管理系統(tǒng),是一個商業(yè)版軟件,它比較大,且對磁盤的操作效率不高。

ZLG/FS是廣州周立功單片機(jī)科技有限公司開發(fā)的嵌入式文件系統(tǒng),其公司很多的開發(fā)板上面都送了這個文件系統(tǒng)的源代碼,但它對磁盤讀寫操作速度太慢,不適用于實(shí)際應(yīng)用,比較適用于教學(xué)。

efsl是sourceforge.net網(wǎng)站發(fā)布的一個開源、免費(fèi)的文件系統(tǒng),它的整體結(jié)構(gòu)很簡單,只需要提供讀扇區(qū)和寫扇區(qū)2個函數(shù)即可,因此移植工作量很少,但它功能較少,穩(wěn)定性較差。

MINIFAT是 Toshiba 提供的一個文件系統(tǒng),此文件系統(tǒng)只支持 fat12/16,提供了比較完整的文件操作函數(shù),支持多設(shè)備和多文件,也支持cache管理,有較高的管理效率。但此文件系統(tǒng)不支持長文件名的讀取,所有的文件都嚴(yán)格要求是Dos8.3格式的短文件名,總體來說代碼清晰,可以自行擴(kuò)展fat32及長文件名的支持。

FatFs是一個完全免費(fèi)開源的文件系統(tǒng),它是一個專門為小型嵌入式系統(tǒng)設(shè)計(jì)的通用FAT文件系統(tǒng)模塊。FatFs完全用標(biāo)準(zhǔn)C語言編寫,并且完全與磁盤I/O層分開,因此它獨(dú)立于硬件架構(gòu)。它可以被嵌入到低成本的微控制器中,如AVR, 8051,PIC ,ARM, Z80, 68K等等,而且移植比較簡單。它支持FATl2、FATl6 和FAT32,支持多個存儲介質(zhì);有獨(dú)立的緩沖區(qū),可以對多個文件進(jìn)行讀/寫,并特別對8 位單片機(jī)和16 位單片機(jī)做了優(yōu)化。

經(jīng)過以上比較分析,F(xiàn)atFs文件系統(tǒng)比較適用于便攜式的微型水聲監(jiān)測系統(tǒng)。

3.2 FatFs文件系統(tǒng)簡介

FatFs文件系統(tǒng)的層次結(jié)構(gòu)如圖2所示。

圖2 FatFs文件系統(tǒng)層次結(jié)構(gòu)

最頂層是應(yīng)用層,使用者無需理會FatFs的內(nèi)部結(jié)構(gòu)和復(fù)雜的FAT 協(xié)議,只需要調(diào)用FatFs模塊提供給用戶的一系列應(yīng)用接口函數(shù),如f_open,f_read,f_write 和f_close等,就可以像在PC 上讀/寫文件那樣簡單。

中間層是FatFs模塊,實(shí)現(xiàn)了FAT 文件讀/寫協(xié)議。FatFs模塊提供的源代碼文件是ff.c和ff.h,除非有必要,使用者一般不用修改,使用時(shí)將頭文件直接包含進(jìn)去即可。

需要我們編寫移植代碼的是FatFs模塊提供的底層接口,它包括存儲介質(zhì)讀/寫接口(disk I/O)和供給文件創(chuàng)建修改時(shí)間的實(shí)時(shí)時(shí)鐘。

官方網(wǎng)站下載FatFs文件系統(tǒng)源代碼后,發(fā)現(xiàn)移植需要的源代碼文件有6個,文件及其說明列舉如表1。

FatFs源代碼文件中還包括一個名為option的文件夾,其中是一些可選的外部c文件,包含了多語言支持需要用到的文件和轉(zhuǎn)換函數(shù)。比如我們需要簡體中文支持,則需要添加cc936.c文件,此文件包含了簡體中文的GBK和轉(zhuǎn)換函數(shù)。

4 FatFs文件系統(tǒng)移植

FatFs文件系統(tǒng)的移植過程大致分為三步。第一步修改數(shù)據(jù)類型定義文件interger.h,使之與CCS、Keil、IAR等硬件開發(fā)平臺相適應(yīng)。第二步修改FatFs模塊配置文件ffconf.h,滿足我們對FatFs模塊的裁減、設(shè)置等需求。第三步根據(jù)用戶實(shí)際硬件結(jié)構(gòu),補(bǔ)充完善disk I/O模塊接口層文件diskio.c,需要用戶提供實(shí)現(xiàn)底層物理磁盤的讀寫和獲取當(dāng)前時(shí)間的功能函數(shù)。

4.1 修改數(shù)據(jù)類型定義文件

修改數(shù)據(jù)類型定義文件前,需要了解硬件開發(fā)平臺所用編譯器的數(shù)據(jù)類型定義,根據(jù)編譯器數(shù)據(jù)類型修改數(shù)據(jù)類型定義文件。STM32F103RE是以Cortex-M3 為內(nèi)核的32 位微處理器,支持的開發(fā)環(huán)境有Keil 和IAR 等,程序清單1為在KEIL 下定義的數(shù)據(jù)類型。

程序清單1 數(shù)據(jù)類型定義

Prog.1 Data Type Definition

/* 以下類型必須為8位 */

typedef char CHAR;

typedef unsigned char UCHAR;

typedef unsigned char BYTE;

/*以下類型必須為16位*/

typedef short SHORT;

typedef unsigned short USHORT;

typedef unsigned short WORD;

typedef unsigned short WCHAR;

/*以下類型必須為16或32位,Keil下為32 位*/

typedef int INT;

typedef unsigned int UINT;

/*以下類型必須為32位*/

typedef long LONG;

typedef unsigned long ULONG;

typedef unsigned long DWORD;

4.2 修改FatFs模塊配置文件

從FatFs的R0.07e版開始,需要對FatFs配置的選項(xiàng)從ff.h分離出來,成為1個單獨(dú)的文件ffconf.h。ffconf.h中提供了豐富的配置選項(xiàng),移植者可以根據(jù)硬件資源的多少和需要使用的功能進(jìn)行配置,從而達(dá)到優(yōu)化設(shè)計(jì)的目的[5]。下面我們介紹本硬件平臺移植中的幾個重要配置選項(xiàng),其他配置項(xiàng)在FatFs的說明文檔里有很詳細(xì)的介紹。

1. _FS_TIN。這個選項(xiàng)在R0.07版本中開始出現(xiàn),之前都是以獨(dú)立的C文件出現(xiàn),有了這個選項(xiàng)后,兩者整合在一起,使用起來更方便。本次移植這個選項(xiàng)定義為0。

2._FS_READONLY。這個選項(xiàng)用來配置是不是只讀。我們移植文件系統(tǒng)用于水聲監(jiān)測系統(tǒng),需要寫入記錄的數(shù)據(jù),因此定義為0。

3._USE_STRFUNC。這個選項(xiàng)用來配置是否支持字符串操作。除了要寫入數(shù)據(jù),我們還需要記錄一些信息,故定義為1。

4._USE_MKFS。這個選項(xiàng)用來配置是否支持格式化。我們在初始化硬件系統(tǒng)的時(shí)候需要把SD卡格式化為FAT16或者FAT32,定義為1。

5._US_FASTSEEK。使能快速定位。多次監(jiān)測時(shí)需要找到文件末尾處繼續(xù)記錄,定義為1。

6._CODE_PAGE。需要支持中文GBK碼,定義為936。

7._USE_LFN。是否支持長文件名。0表示不支持,1~3表示支持但文件名存儲區(qū)域不同。我們定義為3。

8._VOLUMES。邏輯存儲介質(zhì)個數(shù)。定義為1。

9._MAX_SS。扇區(qū)緩沖的最大值,設(shè)置為512。

4.3 補(bǔ)充完善disk I/O模塊接口層文件

在disk I/O模塊接口層文件中,我們需要編寫6個接口函數(shù):disk_initialize,disk_status,disk_read,disk_write,disk_ioctl,get_fattime。它們分別實(shí)現(xiàn)存儲介質(zhì)初始化、狀態(tài)讀取、介質(zhì)讀、介質(zhì)寫、介質(zhì)控制和獲取時(shí)鐘的功能。根據(jù)水聲監(jiān)測系統(tǒng)功能,存儲介質(zhì)的狀態(tài)在讀寫操作之后讀入并判斷等待過程中會簡單使用到,故無需專門編寫接口函數(shù),返回RES_OK即可。另外介質(zhì)控制和獲取時(shí)鐘功能不需要,因此分別返回RES_OK和返回0即可。需要編寫的另外3個接口函數(shù)如程序清單2~4所示。

程序清單2 disk_initialize函數(shù)

Prog.2 disk_initialize function

DSTATUS disk_initialize (

BYTE drv /* 物理驅(qū)動器號 */

{

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函數(shù)

Prog.3 disk_read function

DRESULT disk_read (

BYTE drv, /* 物理驅(qū)動器號 */

BYTE *buff, /* 數(shù)據(jù)緩沖區(qū)地址指針*/

DWORD sector, /* 起始扇區(qū)號*/

BYTE count /* 讀取扇區(qū)數(shù) */

{

if (count > 1)

{

SD_ReadMultiBlocks(buff, sector * BLOCK_SIZE, BLOCK_SIZE, count); /* 讀多扇區(qū)塊函數(shù) */

SD_WaitReadOperation(); /* 等待讀操作完成 */

}

else

{

SD_ReadBlock(buff, sector * BLOCK_SIZE, BLOCK_SIZE);

/*讀單扇區(qū)塊函數(shù)*/

SD_WaitReadOperation(); /* 等待讀操作完成 */

}

return RES_OK;

}

程序清單4 disk_write函數(shù)

Prog.4 disk_write function

DRESULT disk_write (

BYTE drv, /* 物理驅(qū)動器號 */

BYTE *buff, /* 數(shù)據(jù)緩沖區(qū)地址指針*/

DWORD sector, /* 起始扇區(qū)號*/

BYTE count /* 讀取扇區(qū)數(shù) */

{

if (count > 1)

{

SD_WriteMultiBlocks(buff, sector * BLOCK_SIZE, BLOCK_SIZE, count); /* 寫多扇區(qū)塊函數(shù) */

SD_WaitWriteOperation(); /* 等待寫操作完成 */

}

else

{

SD_WriteBlock(buff, sector * BLOCK_SIZE, BLOCK_SIZE);

/*寫單扇區(qū)塊函數(shù)*/

SD_WaitWriteOperation(); /* 等待寫操作完成 */

}

return RES_OK;

}

5 結(jié)束語

通過以上三個步驟的移植后,我們即可使用FatFs文件系統(tǒng)提供的多種多樣、功能強(qiáng)大的應(yīng)用層函數(shù)進(jìn)行存儲介質(zhì)的文件系統(tǒng)管理,實(shí)現(xiàn)微型水聲監(jiān)測記錄系統(tǒng)免除數(shù)據(jù)文件轉(zhuǎn)換、直接存儲系統(tǒng)兼容文件、多次記錄數(shù)據(jù)管理等目的。

在微型水聲監(jiān)測記錄系統(tǒng)的實(shí)際使用中,連續(xù)監(jiān)測8小時(shí)數(shù)據(jù)量為6GB左右,由于采用FatFs文件系統(tǒng)并直接存儲為二進(jìn)制*.dat文件形式,能節(jié)約數(shù)據(jù)導(dǎo)出和轉(zhuǎn)換時(shí)間40分鐘左右。對于多次監(jiān)測記錄任務(wù)而言,也無需考慮存儲區(qū)域管理和分配問題,定義不同的存儲文件名即可記錄不同任務(wù)的數(shù)據(jù)。實(shí)踐證明,文件系統(tǒng)的使用能簡化微型水聲監(jiān)測系統(tǒng)設(shè)計(jì)上的復(fù)雜度,減少監(jiān)測任務(wù)后的數(shù)據(jù)處理時(shí)間,增加水聲監(jiān)測系統(tǒng)使用方法上的靈活性。

參考文獻(xiàn):

[1] 曲加圣,楊松. 便攜式水下聲信標(biāo)探測定位設(shè)備技術(shù)設(shè)計(jì)與實(shí)現(xiàn)[J]. 艦船科學(xué)技術(shù),2012(4):75-78.

[2] 席衛(wèi)華. FatFs文件系統(tǒng)在數(shù)碼相框上的應(yīng)用[J]. 信息安全與技術(shù),2012(1): 71-73.

[3] 王亮. 基于FatFs嵌入式文件系統(tǒng)的振動檢測設(shè)備[J]. 可編程控制器與工廠自動化,2014(7):91-93+126.

[4] 龍德亮. 基于μC/GUI和FATFS的車載GPS數(shù)據(jù)顯示與存儲系統(tǒng)[D]. 山東師范大學(xué),2014.

[5] 路敦強(qiáng),吳曉榮. 基于MSP430F5438和FatFs嵌入式文件系統(tǒng)的實(shí)現(xiàn)[J]. 天津師范大學(xué)學(xué)報(bào):自然科學(xué)版,2011(2):28-31+68.

猜你喜歡
監(jiān)測系統(tǒng)水聲
一種適用于水聲通信的信號水印認(rèn)證技術(shù)
基于聯(lián)合神經(jīng)網(wǎng)絡(luò)的水聲目標(biāo)識別方法
認(rèn)知水聲通信系統(tǒng)中OFDM技術(shù)的應(yīng)用
電子制作(2017年22期)2017-02-02 07:10:34
新型多功能水聲應(yīng)答器電子系統(tǒng)設(shè)計(jì)
電子制作(2017年19期)2017-02-02 07:08:28
輸電線路融冰過程監(jiān)測系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
室內(nèi)有害氣體監(jiān)測系統(tǒng)設(shè)計(jì)研究
基于數(shù)據(jù)融合的掘進(jìn)機(jī)截齒磨損狀態(tài)監(jiān)測
行波故障指示器在500kV線路故障診斷中的研究與應(yīng)用
基于廣播模式的數(shù)據(jù)實(shí)時(shí)采集與處理系統(tǒng)
軟件工程(2016年8期)2016-10-25 15:54:18
GIS設(shè)備局部放電監(jiān)測系統(tǒng)的研究
商河县| 灵寿县| 泸水县| 天全县| 山阳县| 广东省| 江源县| 甘肃省| 平顺县| 新邵县| 新源县| 万宁市| 石楼县| 上栗县| 全南县| 黎川县| 汤阴县| 睢宁县| 鄱阳县| 景谷| 通渭县| 阆中市| 济宁市| 高邮市| 安新县| 陇南市| 枞阳县| 津南区| 紫阳县| 荆门市| 原平市| 南郑县| 周宁县| 白沙| 长兴县| 漳浦县| 龙井市| 乌拉特后旗| 石泉县| 东乌| 绥江县|