專利名稱:電視機嵌入式Linux系統下USB存儲設備實現實時熱拔插的方法
技術領域:
本發明涉及嵌入式操作系統領域,尤其是涉及一種在電視機嵌入式Linux系統下實時進行USB存儲設備熱拔插的方法。
背景技術:
采用USB接口的產品不能在它正在工作時進行拔插,特別是對USB移動存貯設備,可能損壞其中的數據,一般只有格式化后才能重新使用。另外不能在短時間內頻繁拔插閃盤,因為當把產品插入USB接口后,系統需要一定時間,才能作出反應,而馬上又把它拔下來,則很有可能造成系統錯誤。
對于嵌入式Linux系統,這個問題尤其突出。在嵌入式Linux中,內核和設備支持都刪減了許多;并且在嵌入式Linux中,針對USB存儲設備并沒有一套完整的熱拔插和掛載機制。要建立這樣一套機制,可以在內核中進行修改,不過這樣修改技術難度較大,且不能保證內核完整性。
發明內容
本發明的目的在于提供一種在電視機嵌入式Linux系統下實時進行USB存儲設備熱拔插的方法。
本發明的目的是由以下技術方案實現的這種電視機嵌入式Linux系統下USB存儲設備實現實時熱拔插的方法,其改進之處在于在核心程序與應用級程序之間創建一個守護進程,使應用級程序實時了解USB存儲設備的連接情況,該方法包括當守護進程發現USB存儲設備插入時,檢查是否為存儲設備;若是,檢查USB存儲設備分區情況;
根據分區情況掛載分區;掛載完成后,向應用級程序發送成功信;當守護進程發現掛載好的USB存儲設備拔出時,發出警告信息給應用級程序;根據USB存儲設備拔出情況進行分區卸載。
上述電視機嵌入式Linux系統下USB存儲設備實現實時熱拔插的方法,所述的守護進程獨立于控制終端并且周期性地執行某種任務或等待處理某些發生的事件;其監測點可以是/proc/scsi/usb-storage目錄下的數字文件,具體監測周期設定為秒級。
上述電視機嵌入式Linux系統下USB存儲設備實現實時熱拔插的方法,根據分區情況進行掛載分區時,采用同步寫入的掛載方法。
通過該方法可以在電視機嵌入式Linux系統下實時進行USB存儲設備熱拔插,而不會出現數據丟失的情況。該方法簡單實用,不破壞內核完整性,而且響應速度快。由于不修改內核,維護調試成本大大降低。同時,提高了Linux的實時性。
圖1為本發明的方法流程圖。
具體實施例方式
下面結合附圖對本發明作進一步詳細說明請參閱圖1所示,本發明在電視機嵌入式Linux上實時進行USB存儲設備熱拔插的方法是利用嵌入式Linux中守護進程(Daemon)來監視USB存儲設備的拔插情況,并反饋給應用層的程序,由應用級程序來控制USB存儲設備的掛載和卸載,從而實現實時的熱拔插方法。
首先創建一個Linux的守護進程(Daemon),讓其不斷監測USB設備的拔插情況。守護進程(Daemon)是運行在后臺的一種特殊進程。它獨立于控制終端并且周期性地執行某種任務或等待處理某些發生的事件。其監測點可以是/proc/scsi/usb-storage-?目錄下的數字文件,具體監測周期可以視應用復雜度來決定,這里設定為秒級。
當守護進程發現有USB設備插入時,就會檢查是否為存儲設備,若是,則檢查設備的分區情況。同時,根據分區的情況進行掛載分區。掛載完成后,向其它的應用層的程序發送一條消息,以便其它程序進行處理。當根據分區情況進行掛載分區時,本方法采用了“同步寫入”的掛載方法,使其寫入緩存失效。這樣做會降低一些性能,但是,由于USB存儲設備速度快,且在讀出時緩存仍有效,所以其性能降低不明顯,卻能顯著提升其穩定性,在突然掉電、寫入過程中拔出均能保證寫入的可靠性。
當守護進程發現有掛載好的USB設備拔出時,會立即發出警告信息給應用層的程序,并從系統中刪除掛載點。由于掛載時采用同步寫入方式,突然的拔出不會給系統帶來任何危害。
權利要求
1.一種電視機嵌入式Linux系統下USB存儲設備實現實時熱拔插的方法,其特征在于在核心程序與應用級程序之間創建一個守護進程,使應用級程序實時了解USB存儲設備的連接情況,該方法包括當守護進程發現USB存儲設備插入時,檢查是否為存儲設備;若是,檢查USB存儲設備分區情況;根據分區情況掛載分區;掛載完成后,向應用級程序發送成功信號;當守護進程發現掛載好的USB存儲設備拔出時,發出警告信息給應用級程序;根據USB存儲設備拔出情況進行分區卸載。
2.根據權利要求1所述的一種電視機嵌入式Linux系統下USB存儲設備實現實時熱拔插的方法,其特征在于所述的守護進程獨立于控制終端并且周期性地執行某種任務或等待處理某些發生的事件;其監測點可以是/proc/scsi/usb-storage目錄下的數字文件,具體監測周期設定為秒級。
3.根據權利要求1所述的一種電視機嵌入式Linux系統下USB存儲設備實現實時熱拔插的方法,其特征在于根據分區情況進行掛載分區時,采用同步寫入的掛載方法。
全文摘要
本發明涉及嵌入式操作系統領域,尤其是涉及一種在電視機嵌入式Linux系統下實時進行USB存儲設備熱拔插的方法。該方法的改進之處在于在核心程序與應用級程序之間創建一個守護進程,使應用級程序實時了解USB存儲設備的連接情況,并根據USB存儲設備插入或拔出情況進行分區自動掛載或分區卸載。該方法簡單實用,不破壞內核完整性,且響應速度快,維護調試成本大大降低。在USB存儲設備拔出后,不出現數據損壞。同時,提高了Linux系統的實時性。
文檔編號H04N5/765GK1877550SQ20061003284
公開日2006年12月13日 申請日期2006年1月13日 優先權日2006年1月13日
發明者白驥, 郭敏強, 徐勇, 何彥, 黃黎明, 許雪松 申請人:深圳創維-Rgb電子有限公司