新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 基于INTEL StrataFlash在VxWorks上構建TrueFFS文件系統

        基于INTEL StrataFlash在VxWorks上構建TrueFFS文件系統

        作者: 時間:2012-05-21 來源:網絡 收藏

        一 前言

        是美國WindRiver公司于1983年推出的一種嵌入式(RTOS),它以突出的可靠性,實時性,可裁減性等特點被廣泛應用于航空,航天,軍事,通信,安防等領域。

        在嵌入式系統中,通常用flash作為永久存儲介質,用來存儲系統引導程序、操作系統映像、用戶應用程序以及系統的配置參數等。基于 操作系統,在flash上建立TureFFS,可以使用戶操作flash時,就像操作硬盤一樣,支持文件的建立、拷貝、刪除等操作。

        StrataFlash系列flash是2005年初INTEL公司推出的在技術上有重大突破的產品,它開創了在單個晶體管中存儲兩位數據的存儲技術,從而大大地降低了成本,一經推出,迅速被廣泛采用。在其上構建TrueFFS,可以為其他開發者提供有益的借鑒。

        二 TrueFFS介紹

        TrueFFS文件系統為種類繁多的flash存儲設備提供了統一的塊設備接口,它具有可重入性、線程安全等特點。在TrueFFS的支持下,應用程序對flash設備的操作就好像對有DOS文件系統支持的硬盤設備的操作一樣。

        TrueFFS文件系統包括一個核心層(Core Layer)和三個功能層:轉換層(Translation Layer)、驅動層(Memory Technology Driver (MTD) Layer)、套接層(Socket Layer),共四層。層次結構如圖 1所示。

        核心層的主要功能是使其他各層互相連接,為其他層的通信提供通道以及完成一些象碎片收集,定時器管理等全局任務。WindRiver公司通常以二進制代碼的形式提供核心層模塊,開發者不需對核心層進行任何修改。

        轉換層主要負責維護一個文件系統的邏輯塊和flash中刪除塊之間的映射圖。這個映射圖主要是用來實現對flash的平衡磨損策略,以及進行錯誤恢復。所謂平衡磨損是指,flash的壽命通常是有限的,每個塊的擦寫次數大概在十萬次左右(實際上要少的多),因此在擦寫時不能一直對某一個塊重復擦寫,即使是對同一個數據改寫時也是這樣,一個數據改寫前在這個塊中存放,改寫后可能就存放到另外一塊了,而且flash是先寫后刪,這就可以在寫入發生錯誤時進行錯誤恢復了。轉換層也是以二進制代碼的形式提供的。

        驅動層是對不同種類的flash提供底層的操作,如映射(map),讀(read),寫(write),刪(erase)等。構建TrueFFS文件系統的主要工作就是針對不同類型的flash芯片編寫相應的驅動層代碼。

        套接層是提供TrueFFS和硬件之間的接口,提供訪問特定硬件的訪問進程。包括套接字注冊,電源管理,寫保護等。WindRiver公司為開發者提供一個套接層模板,需要針對特定的硬件進行修改。

        三 INTEL StrataFlash系列FLASH上構建TrueFFS文件系統

        本文以INTEL StrataFlash系列中常用的32Mbit 28F320J3A為例說明構建TrueFFS文件系統的過程。

        1 修改相關系統文件

        修改config.h文件,此文件一般存放在BSP文件夾中,在此文件中定義支持TrueFFS功能以及其他相關功能的宏,包括:

        #define INCLUDE_

        #ifdef INCLUDE_

        #define INCLUDE_DOSFS

        #define INCLUDE_SHOW_ROUTINES

        #endif

        修改sysTffs.c文件,此文件一般存放在BSP文件夾中,此文件定義哪個MTD驅動和轉換層模塊被包含到TrueFFS中,以及定義flash的基地址和大小,會有以下定義出現:

        #define INCLUDE_MTD_I28FJ3A

        #define INCLUDE_TL_FTL

        #define FLASH_BASE_ADRS 0x10000000

        #defineFLASH_SIZE 0x00400000

        修改sysLib.c文件,此文件一般存放在BSP文件夾中,在數組sysPhysMemDesc[]中加入FLASH_BASE_ADRS、 FLASH_SIZE所指定的地址段,MMU屬性設為VM_STATE_WRITABLE和VM_STATE_CACHEABLE_NOT等。


        上一頁 1 2 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 东平县| 长乐市| 女性| 淮阳县| 蓬安县| 乐平市| 班戈县| 苗栗县| 滨海县| 都昌县| 洛川县| 津南区| 汾阳市| 铜鼓县| 凤台县| 通辽市| 扬中市| 东港市| 甘德县| 腾冲县| 凤冈县| 天台县| 锡林郭勒盟| 台州市| 车险| 洛宁县| 藁城市| 富源县| 莲花县| 临沧市| 呼玛县| 黎平县| 应用必备| 惠来县| 左贡县| 临泽县| 板桥市| 陈巴尔虎旗| 苍溪县| 云浮市| 牟定县|