您好,登錄后才能下訂單哦!
本篇文章給大家分享的是有關嵌入式Linux系統flash分區設計及文件系統格式選擇的示例分析,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。
嵌入式系統應用程序升級是比較頻繁的,這就需要將flash進行合理的劃分,一般情況,flash 的基本分區都有這幾部分:
1.uboot分區
2.kernel分區
3.rootfs分區
這三部分是最基本的,一般都有。
如果只是這樣分區,然后應用程序和文件系統放在一起,這樣的話會導致應用程序升級的時候比較麻煩,因為應用程序與文件系統放在了一起,每次升級的時候都要將文件系統重新擦除、寫入,這樣升級浪費時間,而且風險很大,如果正在擦除flash或者正在寫入映像文件時突然斷電了,就會導致設備無法啟動了(文件系統損壞)!這樣還必須從uboot重新下載文件系統,給升級帶來了很大的麻煩。
在嵌入式系統設計的時候一般都會將文件系統與經常更新的應用程序分離開來,放在不同的flash分區里,這樣升級的時候只需要對應用程序分區進行擦除重新即可,這樣即使升級過程中斷電,也不會導致文件系統的損壞,系統依然可以啟動。可以將升級程序與文件系統放在一起,這樣設備重新啟動以后還可以對設備進行升級。
還有一種做法是在Uboot中實現升級,這樣也無法避免斷電帶來的問題,其實最主要的是不能將應用程序與文件系統放在一起。
還有人在flash中做一個“安全模式”分區,系統如果損壞,導致設備無法正常啟動,這時可以從安全模式啟動,安全模式只提供最基本的功能,比如:升級,網絡等,這些基本功能可以幫助你重新做系統。
這個也類似于windows的win PE。
總之,以升級整個文件系統來實現更新應用程序是最不可取的方法。
下面介紹一下嵌入式系統的幾種常用的文件系統格式:
其實嵌入式根文件系統的格式大家都知道,常用的有jffs2,cramfs,ramdisk,以及yaffs等,
他們各自的特點就不詳細介紹了,百度、谷歌講的很詳細了。
這里說一下我當初學習時一些問題和疑惑的地方。
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是可讀寫的文件系統,專門為嵌入式系統設計的。
一個比較完善的嵌入式系統,至少要做到文件系統、應用程序、參數這些分區,而且格式如上所述。這樣很方便以后的升級、維護。
以上就是嵌入式Linux系統flash分區設計及文件系統格式選擇的示例分析,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。