《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 設計應用 > 基于VxWorks的FLASH存儲器實時存取管理方案
基于VxWorks的FLASH存儲器實時存取管理方案
摘要: VxWorks操作系統提供文件系統來訪問和管理Flash 存儲器,這種方式不能滿足實時寫入和系統可控的要求。本文提出一種通過接管系統時鐘中斷來控制Flash Memory讀寫操作和基于管理區的簡單可控文件管理方案,實現移動通信系統在不影響業務模塊運行的前提下,滿足對實時性和可控性要求。
Abstract:
Key words :

  1. 引言

  Cdma2000 1x移動通信系統的基站主處理機采用WindRiver公司VxWorks" title="VxWorks">VxWorks嵌入式實時操作系統,選用FLASH 存儲器(以下簡稱FLASH)作為外部存儲設備保存系統參數和業務數據。

  FLASH與普通磁介質存儲器最大的差異在于寫操作方式不同,其寫操作相對于普通磁盤是比較慢的過程,消耗掉大量的CPU資源。FLASH基于命令字的寫操作方式導致的寫入錯誤,雖然幾率很小但實際上是存在的。而商用VxWorks操作系統提供的dosFs文件系統和專用TrueFFS文件系統對該情況處理不足,并且用戶沒有相應的源碼,系統一旦出現寫操作錯誤,將不可控制,降低了系統的可控性。所以,有必要對FLASH的存取操作加以改進或控制,并設計一套相對應的專用FLASH文件管理方案,滿足系統可控性的要求。

  2. 存取設計

  FLASH寫操作基于命令字方式完成,分為擦除(erase)和編程(program)兩個階段。由于FLASH的編程指令只能使“1”改為“0”,擦除指令只能使“0”改為“1”,而且,擦除操作不能在字節或任意數據區域進行,而必須是一個完整的扇區,所以向FLA

 

SH某位置寫入數據時,要先擦除目標位置所在扇區的所有數據,然后才能進行編程操作。實際上,只須向特定的寄存器寫入標準的指令序列,具體的擦除和編程過程就可由內部嵌入的算法執行。

 

  2.1 設計思想

  通常,FLASH寫操作指令下達后,由驅動程序完成命令字的設置。此時,數據被臨時存儲于FLASH的鎖存器中,但系統仍需要保持數據總線直到寫入操作終止或完成才釋放。

  一個扇區的擦除是十幾毫秒的時間,一個字節的寫入是幾微秒的時間,可以看到,數據總線的占用過程消耗了大量的CPU時間。這部分資源的節約對于嵌入式實時系統來說是必要的。操作系統完全可以在設置寫操作命令字后釋放數據總線,退出FLASH操作,把擦除/編程過程的CPU時間用來執行其他指令,等當前命令字執行完畢后,通過某個事件的觸發,使CPU跳轉回來設置下一個命令字。這就是改進FLASH操作過程的設計思想。

  2.2 實現過程

  觸發事件選擇和跳轉周期長短的控制是問題解決的關鍵,即在一個命令字操作完成后,選用什么方式來觸發下一個命令字操作。可以考慮的方式主要有掃描方式和中斷方式。

  通過掃描方式,當應用程序完成一次完整的處理周期時,掃描某個標志狀態,判斷FLASH寫入操作是否進行完成。如果完成,則再次設置命令字進行操作。由于程序處理周期取決于應用層業務處理時間,這種方式會導致觸發周期不固定。

  采用中斷方式,可以通過設置中斷頻率來控制觸發周期。但必須選擇合適的中斷源,使其精度達到要求并且對系統沒有額外的影響。由于基站系統采用外部GPS時鐘,系統的單板時鐘閑置,其精度對于FLASH操作是足夠的,所以可以考慮選擇CPU時鐘中斷。問題在于VxWorks對該中斷是否有使用。實際上,VxWorks通過該時鐘中斷完成系統記數器,從而在其基礎上實現系統定時器,看門狗定時器,任務分時調度等功能組件。因此,接管時鐘中斷,必須在修改時鐘頻率同時,保證操作系統所需的系統記數器頻率不變。

  VxWorks提供sysClkConnect()函數允許時鐘中斷發生時,根據指定參數掛接用戶定義的中斷處理程序,中斷處理完成后由用戶程序返回。VxWorks提供的usrClock()函數是系統缺省時鐘中斷處理函數,用來調用計數器函數tickAnnounce(),實現系統計數器的作用。時鐘中斷頻率由SYS_CLK_RATE設定,缺省值是60。因此,我們在替換時鐘中斷處理函數時,需要包含操作系統的記數器函數tickAnnounce(),并通過分頻的方法保證tickAnnounce()的調用和時鐘頻率修改前的調用頻率是一致的,從而使操作系統計數器感覺不到時鐘頻率修改和中斷處理函數被替換的區別。

  當然,系統時鐘頻率的設置不能太高,通常時鐘頻率設置為60HZ(或100HZ),當頻率超過600HZ時,會使內核調度用時比率偏高,而實際任務可用的CPU時間下降,處理器將花費大多數時間來處理時鐘而使系統運行效率下降或不可用。

  圖1給出了具體的實現流程圖。sysClkChange()是自定義的系統時鐘頻率調整控制函數,該函數根據入口參數設置系統時鐘中斷頻率,選擇掛接中斷的處理函數flsClock()或usrClock()。自定義的中斷處理函數的flsClock()通過調用usrClock()函數完成系統計數器功能。sysClkRateGet()和sysClkRateSet()函數是VxWorks提供的時鐘頻率設置函數。

具體的實現流程圖

  flsClock()還需要負責實際的寫入操作。首先檢查上一次中斷處理中的FLASH操作是否已經完成。如果沒有完成,則返回,并記錄返回次數,若返回次數超過了一定限度,即認為該片FLASH發生故障,向應用層發出FLASH故障告警;如果已經完成,則開始進行本次操作,即先確定操作的類型(擦除還是編程)和相關參數(包括目標扇區序號,目的地址,數據源地址等等),然后調用驅動程序提供的FLASH操作接口,完成命令字設置等操作。

 

  3. 管理設計

  在I/O系統基本結構中,應用程序可以通過符合標準I/O接口的文件系統調用設備驅動程序來操作設備,也可以直接與驅動程序連接來操作設備(VxWorks本身并不支持這種做法)。通常,采用文件系統來操作存取設備的方式,減少了驅動程序必須支持的I/O操作接口函數的數目,在VxWorks開發中得到廣泛的應用。

  VxWorks提供與MS-DOS兼容的dosFs文件系統供I/O接口調用,但dosFs文件系統本質上容易受到某種類型磁盤故障的影響,導致更新過程中數據結構不一致性,而且,dosFs文件系統是一個不考慮容錯性能的文件系統,沒有考慮FLASH操作的特殊性,對于底層驅動程序中FLASH命令字方式導致的寫入錯誤無法處理。作為VxWorks的可選組

 

件,M-System公司為VxWorks定制的TrueFFS組件提供了面向FLASH的專用文件系統。

 

  TrueFFS文件系統使用block-to-flash轉換系統將閃存抽象為普通塊設備。基于動態維護的映射圖使FLASH索引成一系列連續塊。進行數據寫入時,如果目標塊已寫有數據,TrueFFS另找空閑區寫入,待數據安全寫入后,TrueFFS更新映射圖,將該塊指向寫入的新FLASH地址。TrueFFS文件系統機制非常完善,但基站系統對FLASH功能要求比較單一,存儲的數據文件類型和存儲方式相對單一,TrueFFS文件系統并不能發揮其強大功能,反而降低了系統的性能。

  3.1 設計思想

  參考dosFs文件系統和TrueFFS文件系統的管理方法,選取其中重要功能重新設計,實現一個應用層可控的FLASH管理方案。把FLASH劃分為管理區和數據區兩部分進行組織管理。其中管理區存放文件管理信息,數據區存放數據文件。為了防止在修改管理區的過程中掉電,在存儲區的兩端設置雙備份的管理區。

  我們將FLASH最小管理單位定義為一個FLASH扇區(塊)。進行FLASH操作之前,先將目標扇區內容備份到內存,在內存中修改完畢后再固化到FLASH。管理區和數據區占用的空間是扇區的整數倍,這樣才不會在更新某些數據的同時,造成對已有數據的修改。對于比較小的文件,可能小于一個扇區的空間,導致FLASH空間的浪費,但避免了因為共享同一扇區造成不同文件操作之間的相互影響,降低數據被破壞的可能性,簡化管理策略。

  3.2 實現過程

  根據文件管理方案,假定用戶可修改的FLASH塊數為512,其中前后兩個管理區占用64塊,數據區可用448塊。FLASH管理區需要包含的內容如表1所示。

FLASH管理區需要包含的內容

  任何時刻,處于活動狀態的管理區只有一個。在更新數據的時候,首先更新處于活動狀態的管理區,然后寫入數據文件,等待寫入穩定后,更新另一個管理區,然后將另一個管理區置為當前活動狀態,原先管理區置為非活動狀態。這樣可以保證在數據文件寫入失敗時,通過兩個管理區管理信息的一致性來識別數據的有效性。

  FLASH塊列表的每個字節對應一個扇區的占用情況,1表示該扇區已分配,0表示該扇區未分配,0xff表示該扇區壞死,不能使用。

  文件信息記錄位置按照系統配置好的處理機數目采用固定順序存放。更新任何一個數據文件之前,要更新該文件的信息記錄,確定該文件操作狀態,版本信息和存放位置。具體的組織結構如表2所示。

具體的組織結構如表2所示

  系統需要從FLASH讀取數據時,首先比較兩個FLASH管理區管理信息是否一致。如果一致,認為數據有效,直接讀取;如果不一致,則說明存在FLASH操作異常,向系統操作維護控制臺(OMC)告警,并通知應用程序請求向OMC下載寫入新的數據文件。

  當需要刪除FLASH上數據文件時,只需將管理區中該文件操作狀態置成“無效”,并將其占用的扇區置成“未分配”狀態,然后更新FLASH管理區信息即可。

  這里沒有給出碎片收集和垃圾數據處理的機制,實際上,刪除操作所實現的功能即有回收垃圾數據所在扇區的作用,并且由應用層控制,實現了系統可控性。對于FLASH中存在的碎片,由于我們采取的是以扇區為單元進行數據管理的,數據文件的存儲空間是整數塊,而且塊列表可以不連續,所以不存在碎片的問題,從而就巧妙的避免了碎片收集的復雜性。

  4. 總結

  本文介紹的FLASH操作方法以及與之配套的文件管理方案,為系統運行節省了可觀的時間,可以很好的解決了業務運行與數據備份之間對系統資源占用的矛盾,對于FLASH操作相對頻繁和數據備份實時性要求較高的系統,都是適用的。

 

  5. 參考文獻

  [1] WindRiver Inc. VxWorks Programmer's Guide 5.4 Edition 1[EB/OL].1999

  [2] WindRiver Inc. Tornado User's Guide 2.2 [EB/OL].2002

  [3] 陳智育 溫彥軍等.VxWorks程序開發實踐[M].北京:人民郵電出版,2003-9-1.177-200.

此內容為AET網站原創,未經授權禁止轉載。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
久久国产一区二区三区| 欧美精品一区二区三区蜜臀| 日韩网站在线| 亚洲国产婷婷综合在线精品| 欧美一级一区| 午夜视频在线观看一区| 亚洲一区二区三区欧美| 亚洲精品在线观看视频| 91久久久久久久久| 亚洲国内高清视频| 亚洲区国产区| 99这里只有久久精品视频| 日韩一级黄色大片| 亚洲最新视频在线播放| 99精品免费| 亚洲视频一二区| 亚洲一区二区三区在线| 亚洲一区在线播放| 午夜亚洲影视| 久久国内精品视频| 91久久在线观看| 99riav1国产精品视频| 亚洲精品欧美| 一区二区三区 在线观看视频| 亚洲视频每日更新| 亚洲欧美第一页| 欧美亚洲一区二区在线| 久久精品国产清自在天天线| 久久噜噜亚洲综合| 欧美99在线视频观看| 欧美精品一级| 国产精品久久久久一区二区三区共 | 欧美日韩精品高清| 欧美午夜a级限制福利片| 国产精品国产三级国产| 国产日本欧美一区二区三区在线 | 久久国产乱子精品免费女| 久久精品免费| 亚洲免费电影在线| 亚洲欧美卡通另类91av| 久久精品二区三区| 欧美电影免费观看高清完整版| 欧美日韩一区二区高清| 国产日韩欧美亚洲| 亚洲国内在线| 亚洲午夜精品视频| 久久精品国产99精品国产亚洲性色 | 欧美成人免费全部观看天天性色| 欧美日韩免费观看一区三区| 国产乱码精品一区二区三区五月婷| 黑人中文字幕一区二区三区| 亚洲人成啪啪网站| 亚洲欧美中文日韩在线| 亚洲国产福利在线| 亚洲网站在线播放| 久久精品首页| 欧美乱大交xxxxx| 国产亚洲免费的视频看| 亚洲区国产区| 欧美专区在线| 亚洲午夜精品网| 久久一区免费| 国产精品你懂的在线欣赏| 1000精品久久久久久久久| 亚洲视频一二区| 亚洲精品视频免费观看| 久久aⅴ国产欧美74aaa| 欧美全黄视频| 黄色亚洲免费| 亚洲欧美日韩专区| 一本色道久久综合亚洲二区三区| 久久精品导航| 国产精品国产三级国产普通话99 | 黄色一区二区在线| 一区二区三区久久| 亚洲精品国产精品乱码不99按摩 | 欧美一级在线视频| 欧美激情一区二区| 国产亚洲一区二区在线观看| 99pao成人国产永久免费视频| 久久精品国产清高在天天线| 亚洲欧美国产精品va在线观看| 欧美成人久久| 国产一区二区三区在线观看免费 | 亚洲网站啪啪| 欧美高清你懂得| 国产真实乱偷精品视频免| 在线一区亚洲| 日韩亚洲欧美综合| 免费一级欧美片在线观看| 国产欧美一区二区三区视频| 国产精品99久久不卡二区| 99re6这里只有精品| 免费成人小视频| 狠狠久久五月精品中文字幕| 性久久久久久久久| 亚洲欧美日韩国产中文| 欧美日韩国产成人在线| 亚洲第一免费播放区| 久久精品一区二区| 久久精品91| 国产精品网站在线播放| 在线综合欧美| 亚洲一区免费网站| 欧美午夜免费影院| 日韩小视频在线观看| 9l国产精品久久久久麻豆| 欧美激情一二三区| 91久久精品日日躁夜夜躁国产| 久久精品亚洲乱码伦伦中文 | 亚洲第一精品影视| 亚洲风情在线资源站| 久久青草欧美一区二区三区| 国产一区二区欧美| 欧美一区二区精品久久911| 欧美一区二区日韩一区二区| 国产精品美女久久| 亚洲尤物视频在线| 羞羞色国产精品| 国产欧美日韩在线视频| 亚洲欧美在线x视频| 久久av一区二区三区漫画| 国产精品视频一二| 午夜亚洲激情| 久久婷婷麻豆| 在线精品国精品国产尤物884a| 亚洲国产高清一区二区三区| 卡一卡二国产精品| 亚洲成人在线网| 99精品视频网| 欧美午夜在线视频| 亚洲一区二区三区欧美| 久久国产精品99久久久久久老狼 | 久久亚裔精品欧美| 在线国产亚洲欧美| 99精品国产99久久久久久福利| 欧美日韩少妇| 亚洲天堂男人| 久久精品午夜| 亚洲二区在线视频| 一区二区日韩免费看| 国产精品久久久久久一区二区三区| 亚洲欧美日韩一区二区三区在线观看| 欧美自拍偷拍午夜视频| 在线观看成人小视频| 在线一区二区日韩| 国产精品一区二区你懂得| 亚洲福利视频专区| 欧美日韩亚洲高清一区二区| 亚洲在线观看视频网站| 久久久久成人精品| 亚洲人成久久| 欧美一区二区三区在线看| 在线免费观看日韩欧美| 一区二区三区国产在线| 国产精品私拍pans大尺度在线| 欧美尤物巨大精品爽| 欧美交受高潮1| 亚洲女人小视频在线观看| 久久综合中文色婷婷| av72成人在线| 久久人人97超碰国产公开结果| 亚洲人成精品久久久久| 午夜精品一区二区三区在线视| 伊人久久亚洲美女图片| 亚洲一二三区精品| 国语自产精品视频在线看一大j8| 艳女tv在线观看国产一区| 国产麻豆精品theporn| 91久久精品国产91久久| 国产精品国产三级国产a| 亚洲国产精品传媒在线观看| 欧美日韩一区二区三区四区在线观看 | 久久aⅴ乱码一区二区三区| 亚洲国产精品va在看黑人| 亚洲欧美激情精品一区二区| 在线欧美不卡| 午夜影院日韩| 亚洲精品一区二区在线观看| 久久久久久久成人| 日韩小视频在线观看专区| 久久人人爽人人爽| 国产精品99久久久久久久久| 欧美不卡一区| 校园激情久久| 国产精品高潮在线| 亚洲精品一区在线观看香蕉| 国产视频亚洲精品| 亚洲一级免费视频| 亚洲福利小视频| 久久精品国产一区二区三区| 99re热这里只有精品免费视频| 久久久久网址| 亚洲一区二区精品| 欧美日韩成人综合| 亚洲欧洲在线播放| 国内伊人久久久久久网站视频| 亚洲欧美清纯在线制服| 亚洲精品综合精品自拍| 蜜桃视频一区|