嵌入式根文件系統制作

1:文件系統分類:
?? 基于flash的文件系統:flash有兩種一種是NOR,另一種NANDNOR型 FLASH主要用于存放程序NAND型 FLASH主要用于存放數據NOR的特點是可在芯片內執行。這樣應用程序可以直接在flash內存內運行,不必再把代碼讀到系統的RAM中。NOR的傳輸效率很高,但寫入和擦除速度較低而NAND結構能提供極高的單元密度。并且寫入和擦除也很快。是提高數據存儲密度的最佳選擇JFFS2型文件系統主要用于NOR型flash。其特點為可讀寫,支持數據壓縮的日志型文件系統.而yaffs文件系統一般是基于NAND FLASH上。yaffs文件系統與jffs相比,減少了一些功能(如支持數據壓縮),所以掛載時間更短,速度更快,對內存占用更小。cramfs文件系統既可以用在NOR型flash上,也可以用在NAND型FLASH上。其特點為只讀的壓縮文件系統

??? 基于RAM的文件系統:ramdisk文件系統,嚴格的講ramdisk并不是一種文件系統,而只是一種磁盤訪問技術。是將內存中一塊區域當作磁盤來用。是一種將實際的文件系統(如ext2)裝入內存的機制。還有一種initramfs文件系統,也是基于RAM的。不做介紹了。進入主題。

?? cramfs是一個壓縮式的文件系統,它并不需要一次性地將文件系統中的所有內容都解壓縮到內存中,
而只是在系統需要訪問到某個位置的數據的時候,馬上計算出該數據在cramfs中的位置,將其實時地
解壓縮到內存之中,然后通過對內存的訪問來獲取文件中需要讀取的數據
cramfs中的解壓縮以及解
壓縮之后的內存中數據存放位置都是由cramfs文件系統本身進行維護的,用戶并不需要了解具體的實現
過程,因此這種方式增強了透明度,對開發人員來說,既方便、又節省了存儲空間。
cramfs擁有以下一些特性:
1、采用實時解壓縮方式,但解壓縮的時候有延遲
2、cramfs的數據都是經過處理、打包的,對其進行寫操作有一定困難。所以cramfs不支持寫操作,這個特性
剛好適合嵌入式應用中使用Flash存儲文件系統的場合
3、在cramfs中,文件最大不能超過16MB

2.1 Linux根文件系統

  根文件系統不同于普通文件系統,它是在內核啟動時掛載(mount)的第一個文件系統, 內核代碼映像文件保存在根文件系統中,而系統引導啟動程序會在根文件系統掛載之后把一 些基本的初始化腳本和服務程序等加載到內存中。

  Linux 根文件系統是樹型結構組織[1,3],它包含了內核和系統管理所需要的各種文檔和程序等。一般來說,根目錄“/”下頂層目錄都有一些比較固定命名和用途,下面列出一

  個Linux 根文件系統中的比較常見的目錄結構。

  /bin:存放二進制可執行命令的目錄。

  /dev:存放設備文件和目錄。

  /etc:存放系統管理和配置文件和目錄。

  /home:用戶主目錄,比如用戶user 的主目錄就是/home/user,可以用~user 來表示。

  /lib:存放動態鏈接共享庫的目錄。

  /sbin:存放系統管理員使用的管理程序的目錄。

  /tmp:公用的臨時文件存儲點。

  /root:系統管理員的主目錄。

  /mnt:用以臨時掛載其他的文件系統。

  /proc:虛擬文件系統,可直接訪問這個目錄來獲取系統信息。

  /var:某些大文件溢出區。

  /usr:存放應用程序和文件。

  對于嵌入式 Linux 系統的根文件系統來說,由于受系統資源的限制,一般沒有上述 那么復雜僅保留一些常用的目錄即可。如/bin、/dev、/etc、/lib、/proc、/var、/tmp、/usr、 /mnt 等[2]。 由于嵌入式系統的設計冗余度小、系統緊湊,通常存儲容量有限,因此,必須選擇 一個合適的根文件系統以使系統運行最佳。目前嵌入式Linux 根文件系統主要的根文件系 統類型有Romfs, JFFS2, RAMDISK, YAFFS/YAFFS2, Cramfs, Squashfs 等[1]。本文主要對 Cramfs 根文件系統進行討論

?

?

3:根文件系統的制作

(1):新建一個目錄,取名為rootfs,在其文件夾下創建根文件系統必須的目錄。這些目錄有:bin,dev,etc,lib,proc,sbin,sys,usr,mnt,tmp,var.usr/bin,usr/lib,usr/sbin,lib/modules。

(2):創建設備文件,以下兩個設備文件必須創建。

?? mknod -m 666 console c 5 1 (說明:C為字符型設備的意思,5為主設備號,1為次設備號)

?? mknod -m 666 null c 1 3

(3)在/etc目錄下裝以上文件。inittab ,profile,fstab,init.d(文件夾),init.d/rcS.這幾個文件必須要有,我做實驗的時候是直接拷的開發箱上的這幾個文件。

(4)編譯內核模塊????????? make modules

(5)安裝內核模塊

make modules_install INSTALL_MOD_PATH=/XXX/rootfs(后面跟根文件系統路徑,為什么要安裝模塊到根文件系統,是因為這些模塊是用的時候才加入內核中。保存在根文件系統的lib/modules目錄中)

(6)配置busybox

? busybox主要是制作根文件系統下面的命令,如ls,mkdir等。這是一個很好用的工具。最后編譯成功會生成一個busybox文件,然后這些命令最后都是鏈結到這個busybox文件上。busybox配置中注意的選項有:編譯選項中選擇使用靜態鏈接庫,交叉編譯環境的選擇。特別注意里面有一個installation option.里面有一個busybox installation prefix,把你建的rootfs的路徑填進去。

(7)如果busybox成功配置好,那么你轉到rootfs下的bin目錄就可以看到很多的命令和一個busybox文件。最后一步就是把rootfs打包成適合開發板的鏡像文件了,這一步根據你要選擇的文件系統,開發板的文件系統地址有關。我用的是jffs2文件系統。最后的命令為./mkfs.jffs2 -r rootfs -o rootfs.img -e 0x20000 --pad=0xd00000

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/253876.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/253876.shtml
英文地址,請注明出處:http://en.pswp.cn/news/253876.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

跨時鐘域電路設計——結繩法

信號從快時鐘域到慢時鐘域過渡時,慢時鐘可能無法對快時鐘變化太快的信號進行采樣。 之前的同步器法對兩個時鐘間的關系有要求,結繩法適用于任何時鐘域之間的過渡。 結繩法的原理是將快時鐘信號的脈沖周期延長,等到慢時鐘周期采樣后再“解繩”…

我之理解---計時器setTimeout 和clearTimeout

今天在寫個圖片切換的問題 有動畫滯后的問題,才動手去查setTimeout 和clearTimeout。之前寫的圖片播放器也有類似的問題,有自動start按鈕 和stop按鈕, 其他都正常,問題出在每次多次快速的點擊start按鈕時,圖片播放的速…

002服務提供者Eureka

1、POM配置 和普通Spring Boot工程相比&#xff0c;僅僅添加了Eureka、Spring Boot Starter Actuator依賴和Spring Cloud依賴管理 <dependencies><!--添加Eureka Server依賴--><dependency><groupId>org.springframework.cloud</groupId><art…

使用Busybox構造cramfs根文件系統

使用Busybox構造cramfs根文件系統 11.1、下載Busybox&#xff0c;如果系統中沒有mkcramfs工具則還要下載mkcramfs壓縮工具。本文件系統使用Busybox-1.10.1&#xff0c;cramfs-1.1。壓縮文件Busybox-1.10.1.tar.bz2&#xff0c;cramfs-1.1.tar.gz。 22.解壓文件&#xff1a; tar…

關于二維碼分塊上色(彩色二維碼)的算法研究

原文:關于二維碼分塊上色&#xff08;彩色二維碼&#xff09;的算法研究眾所周知&#xff0c;二維碼通常是黑白的&#xff0c;而且是由若干個長方形或正方形小塊平鋪而成。但從人們的審美角度來看&#xff0c;常見的黑白二維碼不免讓人審美疲勞。本文試著從分塊上色的角度對二維…

20145309信息安全系統設計基礎第12周學習總結后篇

指針與聲明 聲明 1、C語言中變量的聲明 類型&#xff08;type&#xff09; 聲明符&#xff08;declarator&#xff09; 2、最簡單的聲明是變量 3、指針數組 指針數組是一個數組數組里的元素都是指針例&#xff1a;int *daytab[13]4、數組指針 數組指針是一個指針指針指向一個類…

跨時鐘域電路設計——多bit信號FIFO

多個bit信號的跨時鐘域僅僅通過簡單的同步器同步時不安全的。 如下圖&#xff1a; 雖然信號都同步到目的時鐘域&#xff0c;可完成的功能卻與設計的初衷不相符。 解決方案之一為對信號進行格雷碼編碼&#xff0c;但此方案只適用于連續變化的信號。另一種方案為增加新的控制信號…

嵌入式linux系統中設備驅動程序

嵌入式linux系統中設備驅動程序是內核的一部分&#xff0c;完成對設備初始、讀寫操作和控制等功能。驅動程序隱藏了硬件設備的具體細節&#xff0c;對不同的設備提供一致的接口&#xff0c;這些接口通過file_Operation結構來定義&#xff0c;設計驅動程序的大部分工作就是根據硬…

WPF 打印實例

原文:WPF 打印實例在WPF 中可以通過PrintDialog 類方便的實現應用程序打印功能&#xff0c;本文將使用一個簡單實例進行演示。首先在VS中編輯一個圖形&#xff08;如下圖所示&#xff09;。 將需要打印的內容放入同一個<Canvas>中&#xff0c;并起名為“printArea”&…

mongodb 物理刪除數據

剛開始用mongodb的時候&#xff0c;感覺很好用&#xff0c;速度很快&#xff0c;不過后面就遇到一個問題&#xff0c;數據物理內存一直增加&#xff0c;刪除表也不管用。 然后網上找了各種辦法&#xff0c;最后發現一個辦法管用&#xff0c;就是物理刪除存儲數據。 操作如下&am…

計數排序、桶排序和基數排序

計數排序 當輸入的元素是 n 個 0 到 k 之間的整數時&#xff0c;它的運行時間是 Θ(n k)。計數排序不是比較排序&#xff0c;排序的速度快于任何比較排序算法。 由于用來計數的數組C的長度取決于待排序數組中數據的范圍&#xff08;等于待排序數組的最大值與最小值的差加上1&a…

靜態時序分析——基礎概念

一、簡述 靜態時序分析是檢查系統時序是否滿足要求的主要手段。以往時序的驗證依賴于仿真&#xff0c;采用仿真的方法&#xff0c;覆蓋率跟所施加的激勵有關&#xff0c;有些時序違例會被忽略。此外&#xff0c;仿真方法效率非常的低&#xff0c;會大大延長產品的開發周期。靜…

linux framebuffer 例子

昨天做的一個極簡單的framebuffer的例子&#xff0c;用來學習怎樣操作fb設備。 這段代碼是在picogl的vesafb backend部分的基礎上簡出來的&#xff0c;所以變量名還保留著。 流程如下&#xff1a; &#xff11; 打開framebuffer設備&#xff1b; &#xff12; 通過ioctl取得f…

加載數據時,頁面顯示正在加載的動畫,支持移動端

最近在使用ionic3做一個移動端APP&#xff0c;在用戶網絡環境差的時候&#xff0c;查詢數據會比較慢&#xff0c;這個時候需要模擬其他成熟的APP給頁面上加入一個加載的動畫。由于一開始我不知道ionic3本身已經提供了一套組件&#xff0c;所以自己先做了一套樣式。提供給不用框…

靜態時序分析——單周期

一、建立時間的檢查 建立時間的檢查是指檢查電路里每一個觸發器的數據和時鐘的關系是否滿足建立時間的要求。 我們以上圖為例進行建立時間檢查。由圖可知&#xff0c;我們主要針對第二個觸發器UFF1進行檢查。我們可以梳理時序關系如下&#xff1a; 通過這個圖&#xff0c;我們…

自己搭建的CISCO實驗環境

交換機&#xff1a;設備型號&#xff1a; CISCO 3750 24-TS 3臺CISCO 3750 48-PS 1臺路由器&#xff1a;設備型號&#xff1a;1.CISCO 2821 3臺2.CISCO 3745 3臺 物理拓撲圖如下&#xff1a; 轉載于:https://blog.51cto.com/zxs3026/2156424

關于大數定律的討論(轉)

科普一下所謂“大數定律的四種證法” 作者 : 王若度最近網上總是調侃數學、統計博士知道所謂“大數定律的四種證法”&#xff0c;本身是模仿《孔乙己》的橋段&#xff0c;用以調侃數學、統計博士學一些沒什么用的東西。其實我是從來沒聽說過大數定律的四種證法這回事的&#x…

DM365 u-boot 啟動分析

第一階段&#xff1a;匯編語言啟動 先看u-boot/board/davinci/dm365_ipnc/下的文件。 u-boot.lds OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm") OUTPUT_ARCH(arm) ENTRY(_start) SECTIONS { . 0x0000000…

[Luogu1821][USACO07FEB]銀牛派對Silver Cow Party

由題意可知&#xff0c;我們需要求的是很多個點到同一個店的最短距離&#xff0c;然后再求同一個點到很多個點的最短距離。 對于后者我們很好解決&#xff0c;就是很經典的單源最短路徑&#xff0c;跑一邊dijkstra或者SPFA即可。 然而對于前者&#xff0c;我們應該怎么解決呢&a…

CMOS組合邏輯

1. 靜態互補CMOS 實際上就是靜態CMOS反相器擴展為具有多個輸入。更反相器一樣具有良好的穩定性&#xff0c;性能和功耗。 靜態的概念&#xff1a;每一時刻每個門的輸出通過低阻抗路徑連到VDD或VSS上。任何時候輸出即為布爾函數值。動態電路通常依賴把信號暫存在高阻抗節點的電…