關於嵌入式Linux系統flash分區設計及檔案系統格式選擇的一些淺見

來源:互聯網
上載者:User

嵌入式系統應用程式升級是比較頻繁的,這就需要將flash進行合理的劃分,一般情況,flash 的基本分區都有這幾部分:
1.uboot分區
2.kernel分區
3.rootfs分區
這三部分是最基本的,一般都有。
如果只是這樣分區,然後應用程式和檔案系統放在一起,這樣的話會導致應用程式升級的時候比較麻煩,因為應用程式與檔案系統放在了一起,每次升級的時候都要將檔案系統重新擦除、寫入,這樣升級浪費時間,而且風險很大,如果正在擦除flash或者正在寫入映像檔案時突然斷電了,就會導致裝置無法啟動了(檔案系統損壞)!這樣還必須從uboot重新下載檔案系統,給升級帶來了很大的麻煩。
在嵌入式系統設計的時候一般都會將檔案系統與經常更新的應用程式分離開來,放在不同的flash分區裡,這樣升級的時候只需要對應用程式分區進行擦除重新即可,這樣即使升級過程中斷電,也不會導致檔案系統的損壞,系統依然可以啟動。可以將升級程式與檔案系統放在一起,這樣裝置重新啟動以後還可以對裝置進行升級。

還有一種做法是在Uboot中實現升級,這樣也無法避免斷電帶來的問題,其實最主要的是不能將應用程式與檔案系統放在一起。
還有人在flash中做一個“安全模式”分區,系統如果損壞,導致裝置無法正常啟動,這時可以從安全模式啟動,安全模式只提供最基本的功能,比如:升級,網路等,這些準系統可以協助你重新做系統。
這個也類似於windows的win PE。

總之,以升級整個檔案系統來實現更新應用程式是最不可取的方法。


下面介紹一下嵌入式系統的幾種常用的檔案系統格式:
其實嵌入式根檔案系統的格式大家都知道,常用的有jffs2,cramfs,ramdisk,以及yaffs等,
他們各自的特點就不詳細介紹了,百度、Google講的很詳細了。
這裡說一下我當初學習時一些問題和疑惑的地方。
1.flash分區格式
剛開始總是以為flash的分區要對應一種格式,對這很是疑惑,不懂,別人問我你的根檔案系統什麼格式?
都不知道怎麼回答,後來發現這個flash分區是沒有具體的格式的,你下載什麼格式的檔案系統,它就是什麼格式的,並不是像windows下C盤、D盤那樣有FAT32格式、NTFS格式,windows下的這些格式也是格式化後才具有的格式,這個格式化的過程也相當於給這個盤裡裝了一個基本的檔案系統。
2.檔案系統格式
這裡的檔案系統格式就是指的上面提到的jffs2、cramfs等,這些檔案系統格式需要核心支援,一般通過配置核心來實現支援,在核心中選中相關的選項。
簡單介紹一下,產用的搭配方式。
當檔案系統穩定後,準備發布產品,正式下入系統與應用程式時,一般將檔案系統做成ramdisk形式,這樣做的目的是防止嵌入式裝置在運行過程中由於外界不良的條件造成的檔案系統損壞而導致系統無法啟動。ramdisk是系統啟動後將檔案系統映像從flash讀取並解壓到記憶體中運行,所以,裝置運行中對檔案系統所做的改變,在裝置重啟後都會恢複。cramfs是唯讀檔案系統,這裡為什麼沒有選擇cramfs來作為裝置的根檔案系統格式呢?cramfs檔案系統與ramdisk相比確實也有其優點:那就是他不是全部解壓到記憶體的,而是用到多少,就解壓大多數,這樣對於嵌入式裝置來說,是很節省記憶體的,不過這樣也會造成裝置運行時沒有ramdisk快;缺點就是cramfs下是無法建立任何檔案的,程式正常運行中,難免會重建一些臨時檔案(比如:Unix域通訊端,就會在指定的目錄下建立一個檔案),所以我感覺還是用ramdisk比較好一些。
cramfs格式並不是全盤否定,將應用程式做成cramfs格式的就是一個不錯的選擇,應用程式啟動並執行過程中一般我們也是不希望被改動的,這樣做成cramfs,是唯讀,就不會對其造成損壞。
另外我們的系統裡還會做一個參數分區,就是這個分區裡用於儲存一些基本的參數(設定檔),這個分區要求是可讀寫的,這時我們就可以考慮jffs2檔案系統了,jffs2是可讀寫的檔案系統,專門為嵌入式系統設計的。

一個比較完善的嵌入式系統,至少要做到檔案系統、應用程式、參數這些分區,而且格式如上所述。這樣很方便以後的升級、維護。
原文:http://wuquan-1230.blog.163.com/blog/static/2981115320128169

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.