999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于NOR閃存的嵌入式數控系統文件系統設計

2007-12-31 00:00:00王太勇許愛芬
計算機應用研究 2007年10期

摘要:設計了一個基于NOR閃存#65380;面向嵌入式數控系統應用的文件系統TDNCFS,給出了文件系統的層次化結構,詳細分析了各個層次的功能和實現方法,特別對系統記錄區的設計#65380;空閑扇區的管理和flash扇區的均勻磨損的實現進行了深入研究,提出了具體的設計方法#65377;

關鍵詞:NOR閃存; 文件系統; 平均磨損; 扇區管理

中圖分類號:TP334文獻標志碼:A

文章編號:1001-3695(2007)10-0254-03

Flash存儲器作為一種安全#65380;快速的存儲體,具有體積小#65380;容量大#65380;成本低#65380;掉電數據不丟失等一系列優點,目前已經逐步取代其他半導體存儲元件,成為嵌入式系統中的主要數據和程序載體[1]#65377;在實驗室研究設計的基于MC68K微控制器的嵌入式數控系統設計中為了實現對系統參數和加工程序文件的存儲和管理等,在物理存儲介質上采用flash存儲器,并在此基礎上構建了相應的文件系統#65377;

針對數控系統實時性強#65380;系統參數和加工程序文件小的工作特點,在存儲管理部分的設計上主要考慮以下幾點:a)物理存儲介質采用NOR閃存#65377;由于需要存儲和管理的數據與文件相對較小,大容量的NAND閃存不適合,并且NOR閃存帶有SRAM接口,有足夠的地址引腳來尋址,可以很容易地存取其內部的每一個字節#65377;b)數控系統是實時性很強的系統,文件系統部分的運行不能占用過多的系統資源#65377;c)在數控系統中存儲的文件和數據類型相對單一,但對準確性要求很嚴格,不能出現一點差錯,否則將會造成不可預測的后果#65377;基于以上分析,在實際設計中選用AT29C040A作為物理存儲介質,在其上構建了一個具有層次化結構#65380;按名存取#65380;能夠實現flash扇區(sector)的釋放#65380;回收#65380;壞扇區記錄和均勻擦寫的高效文件系統#65377;

1NOR閃存的特點

一般情況下,NOR flash存儲器在讀取數據方面與普通的SRAM 存儲器類似,一般可以實現完全隨機的讀取#65377;與SRAM 存儲器最大的不同在于寫操作#65377;Flash存儲器的寫操作需要經過擦除—寫入兩個操作過程#65377;當希望對flash存儲器的某一個單元進行寫入時,首先必須對這個存儲單元所在的扇區執行擦除操作,將整個扇區的數據內容清空(一般被設置成0xFF);然后對目的單元所在的扇區進行整個扇區數據的寫入,操作成功后還要進行數據正確性的校驗;數據一旦寫入,就不能隨意更改,需要時只能重復上面的過程[2]#65377;AT29C040A是一片典型的NOR flash,其具有如下特點:a)90 ns的字節數據讀取周期,讀取速度基本與SRAM不相上下;b)對字節的擦除和寫入操作在一個操作周期內就能完成,而且對一個256 Byte的扇區的寫入在10 ms內就能完成;c)一片AT29C040A分成2 048個扇區,每個扇區256 Byte,對AT29C040A的寫入操作以扇區為單位進行#65377;

2文件系統的層次化結構

參考Madnick給文件系統劃分的層次化模型[3],結合數控系統和flash存儲器的特點,構建了flash文件系統層次化結構模型,如圖1所示#65377;文件系統共分為兩大部分:a)文件管理部分#65377;它又分為用戶接口層和邏輯文件系統層#65377;用戶接口層根據用戶對文件的存取要求,把不同的系統調用加工改造成不同的內部調用模式;邏輯文件系統層根據第一層所提供的參數——用戶文件名找到文件的說明信息,

并對文件說明信息鏈表進行操作#65377;b)存儲空間管理部分#65377;它又分為物理文件系統層#65380;存儲設備分配層和設備驅動層#65377;物理文件系統層主要是根據文件的邏輯結構找到文件的物理存儲地址,實現文件在物理上的讀取和保存;存儲設備分配層的作用主要是實現對flash存儲扇區的管理,包括分配#65380;回收#65380;均勻擦寫和壞塊記錄等;設備驅動層的作用是為上層提供對flash操作最基本的讀取和寫入驅動#65377;各層由上到下依次排列,下層為上層提供服務,上層使用下層的功能,上下層之間無須彼此了解對方的內部結構和實現方法,只關心兩者的接口#65377;

與通用文件系統相比,本文件系統在設計上更適合數控系統對文件和數據的存取要求,主要表現在以下幾點:a)簡化了文件管理部分的設計,根據數控系統的運行特點取消了目錄管理和存取控制部分的設計#65377;此文件系統不具有目錄管理和存取控制功能#65377;b)在存儲空間管理部分的設計上,系統更適合于應用在NOR flash類型的存儲介質的管理上,不具有通用性#65377;c)與通用文件系統相比,本文件系統代碼小#65380;占用空間和系統資源少#65380;運行速度更快,更適合嵌入式系統的應用#65377;

3文件管理部分設計

文件說明信息結構體描述如下:

struct FAT

{ //程序名

char ProgName[6];

//第一個物理存儲號

Ulong FirstFlashSector;

//創建日期

Ulong CreateDate;

//指向前一個文件說明信息節點的指針

struct FAT Prev;

//指向后一個文件說明信息節點的指針

struct FAT Next;

};

typedef struct FAT FILE_FAT;

文件管理部分的設計包括用戶接口層的設計和邏輯文件系統層的設計#65377;用戶接口層是整個文件系統與外界的接口,為操作系統和其他應用程序提供對文件系統操作的接口#65377;在數控系統的文件系統設計中,主要提供對零件加工程序和參數的按名創建#65380;刪除#65380;打開#65380;關閉#65380;保存#65380;復制等#65377;包括的功能函數有:a)創建一個程序Uchar CreateProg(Uchar*ProgName);b)刪除一個程序Uchar DelProg(Uchar*ProgName);c)打開一個程序Uchar OpenProg(Uchar*ProgName);d)關閉一個程序Uchar CloseProg(Uchar*ProgName);e)保存一個程序Uchar SaveProg(Uchar*ProgName);f)復制一個程序Uchar CopyProg(Uchar*ProgName)#65377;邏輯文件系統層的主要功能是根據用戶接口層提供的程序名找到文件的說明信息,并根據需要對文件的說明信息鏈表進行節點插入#65380;刪除以及節點內部成員的信息更改操作#65377;文件說明信息的主要作用是提供文件存取的入口信息#65377;在結構體中包含程序名#65380;第一個物理存儲扇區號#65380;文件的創建日期#65380;指向文件說明信息前一個節點的指針#65380;指向文件說明信息后一個節點的指針#65377;在數控系統中,往往存儲著很多數控加工程序,每個程序都將名字作為關鍵字,并且每個程序都有自己的文件說明信息結構體#65377;因此,為了便于對各個文件說明信息進行管理,在導入系統記錄時將其做成鏈表的形式,頭指針FILE_FAT*FatHead#65380;尾指針FILE_FAT*FatTail分別指向文件說明信息的鏈表頭和鏈表尾#65377;對各個文件說明信息的查找按照文件名的不同依次從頭部到尾部,對鏈表的操作包括插入一個新節點Uchar InsertNewFatNode(FILE_FAT*NewNode)#65380;刪除一個節點Uchar DelFatNode(char*ProgName)#65380;按姓名查找一個節點 FILE_FAT*SearchFatNode(char*ProgName)#65380;更改一個節點的成員信息Uchar EditANode(char*ProgName)等#65377;

4存儲空間管理部分設計

存儲空間管理是文件系統的重要任務之一,只有有效地進行存儲空間管理才能得以實現文件的按名存取,并且存儲空間管理部分設計的好壞直接影響flash的使用壽命#65377;

4.1文件的物理結構設計

一個文件在存儲前通常被劃分成大小相等的數據塊(最后一個數據塊除外),數據塊的大小通常與實際的存儲介質有關#65377;就本文設計中用到的AT29C040A來說,它以256 Byte為一個扇區存儲單位,因此在對一個文件進行數據塊劃分時,數據塊的大小一般不超過256 Byte#65377;

為了實現數據文件的動態增長而又不占用過多的內存空間,在文件物理結構的設計上采用了串聯的物理文件結構[4]#65377;串聯文件的特點是在邏輯上連續的文件在物理上不一定連續#65377;各個存儲塊之間靠指針來連接#65377;在一個物理存儲塊上一部分存放文件數據,另一部分存放指向下一個存儲塊的指針#65377;如圖2所示,文件說明信息中存放串聯文件存儲的第一個物理塊號,在第一個物理塊的末尾又存放第二個物理塊號,依此類推#65377;這樣邏輯上連續的文件,物理上分別放在11#65380;15#65380;21三個不連續的物理塊上#65377;

4.2系統記錄區的設計

系統記錄區記錄著文件系統啟動所必需的最根本信息#65377;每次系統啟動都要先裝載系統記錄數據void LoadSys(void),通過裝載系統記錄數據以獲得其他信息,如空閑扇區鏈表信息#65380;文件說明信息的存儲塊等#65377;圖3為系統記錄扇區的字節劃分#65377;系統記錄區占用五個扇區#65377;從圖3可以看出,理論上說只用一個扇區容量就足夠了,但考慮到對于flash存儲器,每個扇區擦寫上有一定的壽命(一般為10萬次左右),而且系統記錄區相對來說是擦寫比較頻繁的,又不能進行浮動設計,因此在文件系統設計時采用的策略是對五個扇區輪流交替的擦寫,利用冗余設計的原理來保證系統記錄扇區的壽命#65377;在圖4中,第0個字節的主要作用是辨別五個扇區中哪個是系統的最新記錄,辨別字有A~F,稱之為關鍵字#65377;采用的策略是:對關鍵字進行循環加法計算,所得結果不等于其他的關鍵字,則此關鍵字所在的系統記錄為最新的記錄#65377;同理,采取相應的策略還可以找到系統的最老記錄,讀取記錄時讀最新的記錄,存儲記錄時將最老的記錄覆蓋掉#65377;系統記錄區每進行一次存儲操作都要更新關鍵字#65377;系統記錄扇區的第一#65380;二字節存儲著文件說明信息的第一個存儲扇區號,利用這個扇區號在系統啟動時創建程序文件說明信息鏈表;第三#65380;四兩個字節用來存儲空閑扇區的中間存儲號;第五字節用來記錄系統上電的控制字,主要是系統用來判斷執行初次上電的初始化操作;再接下來的一個字節存儲著壞扇區記錄表的扇區號#65377;

4.3空閑扇區的管理和壞扇區的記錄

空閑扇區的管理是存儲空間管理的一個主要部分,包括空閑扇區鏈表的初始化#65380;分配一個空閑扇區和回收一個不用扇區等#65377;為了對空閑扇區進行管理,將空閑扇區初始化為一個雙向鏈表,初始化操作函數只是在系統的第一次上電被執行,而后不再調用,通過系統上電記錄來控制#65377;如圖4所示,經過初次上電初始化后,扇區號從5~2 047依次連接成一個雙向鏈表#65377;在以后的操作中取扇區將從鏈表頭操作,回收的扇區被放到鏈表尾#65377;這主要是基于flash的擦寫壽命,不會造成某一個扇區頻繁地被擦寫而損壞,使每個扇區的擦寫頻率變得趨于平均#65377;

將一串字符寫入flash扇區時,由于位差錯現象或扇區使用過程中造成的損壞而可能使實際存儲到扇區上的字符與原字符不相同#65377;在將一串字符寫入flash的一個扇區后要進行正確性的校驗#65377;如果發現寫入出錯則再寫入一次,然后再校驗,最多重復寫入和校驗三次#65377;如果三次以后發現仍不能將字符正確地寫入這片扇區,就將這片扇區標志為壞扇區#65377;壞扇區記錄表的相應位由0變為1,并且這片扇區也不會再被放回到空閑扇區鏈表,從而不會再被程序使用#65377;

4.4扇區的平均磨損技術的實現

平均磨損是讓有壽命期限的存儲設備如flash的各個部分同時到達設計期限[4]#65377;NOR flash每個扇區的使用壽命大約是10萬次,在使用過程中如果不采取有效的平均磨損機制,將會使一些扇區由于使用過于頻繁而引起損壞從而影響整片flash的使用壽命#65377;扇區平均磨損技術的實現基于空閑扇區的管理技術,即從空閑扇區鏈表頭獲取一個扇區,將回收的扇區放到空閑扇區的鏈表尾#65377;在實際運行過程中,總有一些數控加工程序文件由于長期使用而存儲在flash上#65377;如果僅僅是基于空閑扇區鏈表管理來平均扇區的磨損,顯然會有一部分扇區被一些程序長期占用而不能回收到空閑鏈表中#65377;如果這部分的扇區數量較大則會造成另一部分扇區的過快磨損,不能達到很好的扇區平均磨損#65377;解決的辦法就是:當一個數控程序文件占用一些扇區達到一定時間后,啟動一個數據搬移進程MC,將這個程序文件的數據搬移到空閑扇區上,并釋放掉這個程序文件原來占用的扇區#65377;

5文件系統的設計實現

在實際設計中,分析數控系統文件存儲的特點,依據前面提到的技術方法和技術原理設計了適合嵌入式數控系統TDNCL4和TDNCM4應用的文件系統TDNCFS#65377;該文件系統能夠實現對數控系統的加工程序#65380;刀具參數#65380;機床參數#65380;進給軸參數等的管理#65377;圖5為TDNCM4數控系統程序管理界面#65377;從管理界面中能夠得到數控加工程序的名稱#65380;大小#65380;修改人#65380;創建日期等與程序相關的屬性信息,還可以對加工程序進行更名和編輯等操作#65377;圖6為TDNCL4數控系統的刀具參數管理界面,從中可以設置加工刀具的長度和半徑,進行刀具補償信息的設置#65377;

6結束語

本文設計了一個具有層次化結構的#65380;適合于嵌入式數控系統應用的flash文件系統TDNCFS,能夠實現數控加工程序和參數的按名存取#65377;利用冗余設計和關鍵字識別技術來實現系統記錄區的設計#65377;在對flash扇區的管理上,通過建立空閑扇區鏈表來實現扇區的釋放#65380;回收和壞扇區的記錄;在此基礎上,通過時間控制策略調用MC進程來實現扇區的平均磨損#65377;本文件系統已應用在天津大學數字化制造與測控技術研究所研制開發的TDNCL4和TDNCM4數控系統的設計中#65377;其運行速度快#65380;占用資源少#65380;應用效果良好#65377;

參考文獻:

[1]陳峰,尹寒.嵌入式系統中的flash存儲管理[J].單片機與嵌入式系統應用,2003(1):39-42.

[2]羅華春,徐堃.基于flash存儲器的嵌入式文件管理器設計[J].交通與計算機,2005,23(1):99102.

[3]張堯學,史美林.計算機操作系統教程[M].2版.北京:清華大學出版社,2000:179-201.

[4]Woodhouse D. JFFS: the journaling flash file system[EB/OL].[2002-05-06].http://sources.redhat.com/ jffs2/jffs2html/jffs2html.html.

第10期祝生華,等:

“本文中所涉及到的圖表、注解、公式等內容請以PDF格式閱讀原文”

主站蜘蛛池模板: 视频在线观看一区二区| 久久永久精品免费视频| 欧美啪啪一区| 一边摸一边做爽的视频17国产| 欧美在线综合视频| 国内毛片视频| 欧美成人二区| 国产手机在线小视频免费观看| 波多野结衣在线se| www.狠狠| 欧美日本一区二区三区免费| 无码日韩人妻精品久久蜜桃| 五月天香蕉视频国产亚| 日韩人妻无码制服丝袜视频| av午夜福利一片免费看| 久久久噜噜噜| 天天色综网| 毛片视频网| 日韩欧美中文亚洲高清在线| 国产亚洲男人的天堂在线观看| 福利视频久久| 激情国产精品一区| 黄色不卡视频| 国产精品网曝门免费视频| 日韩人妻少妇一区二区| 1024国产在线| 国产福利免费在线观看| 久久成人免费| 五月婷婷欧美| 国产精品漂亮美女在线观看| 亚洲国产日韩在线观看| 4虎影视国产在线观看精品| 色综合久久无码网| yjizz国产在线视频网| 精品三级网站| 91精品在线视频观看| 人人看人人鲁狠狠高清| 精品国产一区91在线| 国产区免费精品视频| 亚洲成人在线网| 午夜精品福利影院| 日本少妇又色又爽又高潮| 最新国产精品第1页| 91精品人妻一区二区| 国产人成网线在线播放va| 特级做a爰片毛片免费69| 国产成a人片在线播放| аⅴ资源中文在线天堂| 伊人大杳蕉中文无码| 亚洲天堂视频在线观看免费| 色九九视频| 亚洲综合精品第一页| 强奷白丝美女在线观看| 精品色综合| 丁香婷婷激情网| 欧美日韩精品一区二区在线线| 国产女人18水真多毛片18精品| 国产成人91精品免费网址在线| 国产综合无码一区二区色蜜蜜| 波多野结衣无码中文字幕在线观看一区二区| 日韩欧美国产区| 日本国产在线| 日本在线免费网站| 久久伊伊香蕉综合精品| 在线无码九区| 国产黄视频网站| 又大又硬又爽免费视频| 伊人福利视频| 全部免费特黄特色大片视频| 久久久精品无码一二三区| 久久毛片网| 在线观看视频99| 欧美国产日产一区二区| 日本一本正道综合久久dvd| 亚洲国产成人精品青青草原| 免费一级无码在线网站| 国产精品妖精视频| 天天摸夜夜操| 小说区 亚洲 自拍 另类| 欧美中文字幕一区| 亚洲av无码成人专区| 国产第八页|