在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

基于ARM技術的uClinux系統設計和應用分析

電子設計 ? 來源:微計算機信息 ? 作者:盧劍翔,劉成安, ? 2020-09-24 17:08 ? 次閱讀

作者:盧劍翔,劉成安,胡和智,劉振剛

根文件系統是構建一個 uCLinux嵌入式系統的重要組成部分。目前嵌入式系統可以選擇的根文件系統有:Romfs、CramFS、Ramfs、Jffs2、Ext2等等,本系統采用 CramFS作為uCLinux嵌入式系統的只讀根文件系統。本文討論了CramFS文件系統的特點,并詳細的說明了Nor Flash上建立一個uClinux的Cramfs根文件系統的一般步驟。

一、引言

隨著電子產業的不斷發展,基于 ARM技術的系統設計和開發平臺越來越多地在控制類、消費類、通信類等電子產品中廣泛應用。從軟件角度上看,構建基于ARM技術的uClinux系統要涉及到引導加載程序、Linux 內核、文件系統、用戶應用程序幾部分的設計。

文件系統是操作系統中用來管理用戶文件的內核軟件層。文件可能存在于磁盤、網絡或者是一些虛擬的文件。文件系統包括根文件系統和建立于內存設備之上文件系統。根文件系統是uClinux系統的核心部分,包含系統使用的軟件和庫,以及所有用來為用戶提供支持架構和用戶使用的應用軟件,并作為存儲數據讀寫結果的區域。由于嵌入式設備中Flash資源很緊張,如何有效地使用有限的存儲空間是嵌入式開發者必須考慮的,合適的文件系統格式是解決這一問題的關鍵所在。本文討論了只讀壓縮CramFS文件系統的特點,并詳細的說明了Nor Flash上建立一個uClinux的Cramfs根文件系統的一般步驟。

二、開發環境簡介

本系統采用的是宿主機+目標板的開發模式,宿主機為PC+Cygwin1.5.1 ,目標板為采用203MHz的ARM920T內核的處理器S3C2410x+uClinux, uClinux版本為2.4.18。在宿主機上將uClinux和應用程序編譯后,下載到目標板的Nor Flash中,啟動運行。使用的SDRAM是2片16MB的HY57v561620,工作在16bit雙字節模式下;使用的Flash是2片AMD AM29LV160DB,大小為2M字節,工作在16bit雙字節模式下。在開發的時候,將Boot Loader燒入AM29LV160DB的1-5扇區;將Linux內核映象文件zImage燒入6-17扇區;將CramFS文件系統映象文件燒入18-35扇區。

基于ARM技術的uClinux系統設計和應用分析

三、 Cramfs文件系統簡介

CramFS(Compressed Rom File System)是Linux Torvalds在Transmeta任職時,所參與開發的文件系統。它是針對Linux內核2.4之后的版本所設計的一種新型只讀文件系統,采用了zlib 壓縮,壓縮比一般可以達到1:2,但仍可以作到高效的隨機讀取,Linux系統中,通常把不需要經常修改的目錄壓縮存放,并在系統引導的時候再將壓縮文件解開。因為Cramfs不會影響系統的讀取文件的速度,而且是一個高度壓縮的文件系統。因此非常廣泛應用于嵌入式系統中。

在嵌入式的環境之下,內存和外存資源都需要節約使用。如果使用RAMDISK方式來使用文件系統,那么在系統運行之后,首先要把Flash上的映像文件解壓縮到內存中,構造起RAMDISK環境,才可以開始運行程序。但是它也有很致命的弱點。在正常情況下,同樣的代碼不僅在Flash中占據了空間(以壓縮后的形式存在),而且還在內存中占用了更大的空間(以解壓縮之后的形式存在),這違背了嵌入式環境下盡量節省資源的要求。

使用CramFS文件系統就是一種解決這個問題的方式。CramFS是一個壓縮格式的文件系統,它并不需要一次性地將文件系統中的所有內容都解壓縮到內存之中,而只是在系統需要訪問某個位置的數據的時候,馬上計算出該數據在CramFS中的位置,將它實時地解壓縮到內存之中,然后通過對內存的訪問來獲取文件系統中需要讀取的數據。CramFS中的解壓縮以及解壓縮之后的內存中數據存放位置都是由CramFS文件系統本身進行維護的,用戶并不需要了解具體的實現過程,因此這種方式增強了透明度,對開發人員來說,既方便,又節省了存儲空間。

一個完整的cramfs文件系統通常包含以下幾個目錄:

/linuxrc 啟動腳本文件,由Boot Loader核心命令行確定init=/linuxrc,加載/etc目錄為ramfs,(cramfs為只讀文件系統),拷貝/mnt/etc到/etc,配置文件目錄重新加載根文件系統和/etc文件系統,執行init進程。

/bin 引導啟動所需的命令或用戶可能用的命令。

/sbin 系統管理員服務程序,其中最重要的是供內核初始化之后執行的/sbin/init進程,系統啟動時由init解釋并運行/etc/inittab, inittab將指導int去調用一個系統初始化程序/etc/init.d/rcS。

/etc 特定機器的配置文件以及用戶數據存放目錄,其中的所有內容是在內核運行后,由linuxrc 從/mnt/etc拷貝得到的。

/lib 文件系統上的程序所需的動態庫。

/dev 驅動程序存放目錄,可以在這里存放自己編寫的驅動程序。

/usr 用于存放用戶程序和配置文件的目錄,可以根據需要進行設置。目錄下的/usr/etc/rc.local執行本地所需要的初始化,如安裝核心模塊,進行網絡,運行應用程序,啟動圖形界面等。/etc/modules.conf在系統運行期間自動加載模塊。

/mnt 用于設備安裝的目錄。/mnt/etc/init.d/rcS完成各個文件系統的Mount,執行/usr/etc/rc.local;通過rcS可以調動dhcp程序配置網絡。rcS執行完以后,就會打開Shell。

/proc 系統狀態文件目錄, 目錄中的文件可以用于訪問有關內核的狀態、計算機的屬性、正在運行的進程的狀態等信息。盡管 /proc 中的文件是虛擬的,但它們仍可以使用任何文件編輯器或像‘more’, ‘less’或 ‘cat’這樣的程序來查看。

四、 Cramfs文件系統的移植過程

文件系統是緊跟uCLinux內核放置,由內核加載,主要存放用戶應用程序和配置信息。CramFS文件系統的基本組成:初始化程序、Shell程序以及其他Linux常用工具、配置文件、鏈接庫、圖形界面程序和用戶應用程序等。本節將介紹移植CramFS文件系統的具體操作方法。

4.1、在內核中加入對CramFS文件系統支持

想要在系統中提供CramFS的能力,我們必須要在編輯uCliunx內核時把支持CramFS的選項加入。盡管uCLinux可以以模塊的形式加載各種類型的設備驅動上,但我們選擇直接把設備驅動及CramFS文件系統靜態地編譯進內核中。

在Memory Technology Devices (MTD)選項中進行配置:

Memory Technology device (MTD) support[Y/m/n/?] Y 內存技術設備支持

MTD partitioning support [Y/m/n/?] Y 支持MTD分區

Direct char device access to MTD devices[Y/m/n/?] Y MTD字符設備直接訪問

Caching block device access to MTD devices[Y/m/n/?] Y MTD塊設備緩沖訪問

在File systems選項中進行配置:

Compressed ROM file system support [Y/m/n/?] Y ROM文件系統的支持

完成上述修改并編譯后,完成uCliunx內核對CramFS文件系統的支持。

4.2、拷貝需要加入的其他文件和鏈接庫

(1)、Busybox 是 Debian GNU/Linux 的大名鼎鼎的 Bruce Perens 首先開發的。Busybox 編譯出一個單個的獨立執行程序,就叫做 busybox。但是它可以根據配置,執行 ash shell的功能,以及幾十個各種小應用程序的功能。這其中包括有一個迷你的vi編輯器,系統不可或缺的/sbin/init程序,以及其他諸如 ifconfig, halt, reboot, mkdir, mount, ln, ls, echo, cat等等。而所有這一切功能卻只有區區1M左右的大小,Busybox已經成為構建嵌入式Linux文件系統的必備軟件。

首先我們從官方網站(http://www.busybox.org/)上下載BusyBox 的版本1.0.0。

#tar xvfz busybox-1.00.tar.gz

#cd busybox-1.00

#make menuconfig

下面是需要編譯進busybox的功能選項,其他的可以根據需要自選。

Build Options

Build BusyBox as a static binary (no shared libs)

這個選項是一定要選擇的,這樣才能把busybox編譯成靜態鏈接的可執行文件,運行時才獨立于其他函數庫,否則必需要其他庫文件才能運行,在單個linux內核不能使他正常工作。

Do you want to build BusyBox with a Cross Compiler

選擇你自己定義的交叉編譯環境。

installation Options

don’t use /usr

這個選項也一定要選,否則make install 后busybox將安裝在原系統的/usr下,這將覆蓋系統原有的命令。選擇這個選項后,make install后會在busybox目錄下生成一個叫_install的目錄,里面有busybox和指向他的鏈接。

其他選項都是一些linux基本命令選項,自己需要哪些命令就編譯進去,一般用默認的就可以了,配置好后退出并保存。編譯BusyBox,如果能成功編譯BusyBox,就將編譯好的busybox 復制到CramFS文件系統的/bin 目錄下,然后創建常用命令的建立快捷方式。建立快捷方式很簡單,只要建一個符號鏈接,比方ln -s /bin/busybox /bin/ls,那么,執行/bin/ls的時候,busybox 就會執行ls的功能,也會按照ls的方式處理命令行參數

(2)、拷貝一些管理員控制程序到/sbin目錄下,最重要的就是要包含一個init命令,可以使用busybox提供的系統工具。比如 ln -s /bin/busybox /sbin/init,這樣我們就有了系統運行不可或缺的 /sbin/init 程序了。

(3)、拷貝應用程序運行時所需要的庫到/lib,庫文件可以從PC機上的交叉編譯工具安裝目錄下拷貝,如libc-2.2.2.so、libcryt-2.2.2.so、libm-2.2.2.so、libutil-2.2.2.so等,為部分相應庫建立快捷方式,提供一些應用程序按快捷方式名稱調用。值得注意的是C庫要采用C庫的版本glibc, glibc位于/lib/libc.so.6。

4.3 、利用mkcramfs工具生成cramfs壓縮文件系統

一般情況下都要把已經規劃好的目錄結構轉換成一個映象文件,創建Cramfs文件系統需要mkcramfs工具,mkcramfs能把相應的Cramfs目錄樹壓縮成為單一的映象文件,這個映象文件就是我們需要移植的文件系統。Mkcramfs的命令格式為:

Mkcramfs [-h] [--e edition] [-I file] [-n name] DirName OutFile

#mkcramfs root cramfs.Img

用以上的命令就可以生成我們需要的cramfs文件系統映象文件,我們可以發現原本為2.36Mbytes大小的目錄內容,被壓縮成一個1.08Mbytes的CramFS文件系統映象文件, 通過vivi或測試程序將其寫入Flash中就可以驗證是否移植成功。

五、小結

CramFS是一個壓縮格式的文件系統,如果系統存儲資源比較緊張的話,采用CramFS作為嵌入式Linux系統的根文件系統是一個不錯的選擇。

責任編輯:gt

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • ARM
    ARM
    +關注

    關注

    134

    文章

    9169

    瀏覽量

    369258
  • 嵌入式
    +關注

    關注

    5094

    文章

    19183

    瀏覽量

    307763
  • Linux
    +關注

    關注

    87

    文章

    11346

    瀏覽量

    210421
收藏 人收藏

    評論

    相關推薦

    基于μClinux ARM的嵌入式系統的設計

    核心的嵌入式硬件平臺的過程,分析了設計過程中的技術重點和難點,并給出了一套可行的解決方案,為應用程序員提供了一個面向操作系統級的嵌入式系統平臺。關鍵詞:移植,
    發表于 03-28 13:12

    基于ARM7TDMI的uClinux移植

    基于ARM7TDMI的uClinux移植 好資料,與你供享。只供學習!
    發表于 03-25 14:59 ?95次下載

    基于ARM的嵌入式uClinux系統設計與Web服務器應用的

    基于ARM的嵌入式uClinux系統設計與Web服務器應用的實現
    發表于 03-25 15:00 ?47次下載

    基于μClinux/ARM的嵌入式系統的設計

    在介紹了ARM處理器和UClinux特點的基礎上,詳細討論了將UClinux操作系統和BLOB系統引導程序移植到以
    發表于 03-28 09:49 ?19次下載

    uClinux下動態Web技術的實現方法

    分析uClinux 操作系統的特點, 實現uClinux 下的Boa Web Server; 討論如何通過編寫CGI 程序來最終實現uClinux
    發表于 04-15 11:10 ?17次下載

    基于ARMuClinux移植與開發

    本文將uClinux 移植到基于ARM7TDMI 芯片S3C4510B 的實驗系統上,實現了PC和uClinux 下位機的通訊,內容包括移植環境的準備,源代碼的編譯以及遇到問題的解決。
    發表于 08-13 10:14 ?26次下載

    基于ARM uCLinux的網絡控制系統設計與實現

    基于ARM uCLinux的網絡控制系統設計與實現 引言 隨著網絡和通信技術的發展,嵌入式系統現已進入高速發展階段。并在社會各個領域得到
    發表于 10-13 14:47 ?620次閱讀
    基于<b class='flag-5'>ARM</b> <b class='flag-5'>uCLinux</b>的網絡控制<b class='flag-5'>系統</b>設計與實現

    ARM開發板上uClinux內核移植

    ARM開發板上uClinux內核移植 簡述:針對“如何在以S3C44B0X為核心的ARMSYS開發板上建立uClinux內核移植”的一個總結,其內容包括對Bootloader的功能分析
    發表于 02-02 11:07 ?736次閱讀

    ARM設計的uClinux及其應用

    摘要:本文討論了基于ARM的嵌入式操作系統uClinux及其應用開發設計及實現。在32位ARM核的微處理器S3C4510B的硬件平臺上
    發表于 07-21 15:14 ?911次閱讀
    <b class='flag-5'>ARM</b>設計的<b class='flag-5'>uClinux</b>及其應用

    Cygwin for ARM support uClinux快速入門

    本文提供了Cygwin for ARM support uClinux快速入門的資料,希望對你的學習有所幫助
    發表于 05-27 15:18 ?92次下載
    Cygwin for <b class='flag-5'>ARM</b> support <b class='flag-5'>uClinux</b>快速入門

    嵌入式uCLinux內核啟動過程分析

    分析uCLinux的啟動過程,可以加快系統啟動速度、正確建立應用環境。本文要研究的就是uCLinux操作系統內核的啟動過程。
    發表于 08-15 16:51 ?796次閱讀

    基于ARM7與uClinux嵌入式智能終端系統_艾紅

    基于ARM7與uClinux嵌入式智能終端系統_艾紅
    發表于 01-12 22:30 ?0次下載

    使用ARM實現uClinux移植的方案詳細說明

    本文針對基于ARMuClinux 0S的特點,詳細介紹了BootLoader,0S啟動以及串口設置幾個關鍵步驟進行了分析與設計。
    發表于 11-01 16:15 ?5次下載
    使用<b class='flag-5'>ARM</b>實現<b class='flag-5'>uClinux</b>移植的方案詳細說明

    基于ARM技術uClinux系統設計與應用分析

    、引言 隨著電子產業的不斷發展,基于 ARM 技術系統設計和開發平臺越來越多地在控制類、消費類、通信類等電子產品中廣泛應用。從軟件角
    的頭像 發表于 10-30 09:57 ?519次閱讀

    基于armuclinux多串口通訊的設計與實現

    電子發燒友網站提供《基于armuclinux多串口通訊的設計與實現.pdf》資料免費下載
    發表于 10-12 10:19 ?0次下載
    基于<b class='flag-5'>arm</b>和<b class='flag-5'>uclinux</b>多串口通訊的設計與實現
    主站蜘蛛池模板: 亚洲欧美性另类春色 | 亚洲人毛茸茸bbxx | 午夜手机福利视频 | 99久久精品免费精品国产 | 亚州1区2区3区4区产品乱码2021 | 亚洲国产成人成上人色 | 国产成人啪午夜精品网站 | 在线观看免费精品国产 | 真实女人寂寞偷人视频 | 国模人体一区二区三区 | 欧美黄色三级 | 午夜精品影院 | 夜夜爱夜夜操 | 午夜影视免费完整高清在线观看网站 | 毛片午夜 | 流不尽奶水的大乳h | 不卡视频一区二区 | 欧美色图综合 | www.毛片.com| 色噜噜亚洲男人的天堂 | 欧美极品在线播放 | 日本口工禁漫画无遮挡全彩 | 日韩欧免费一区二区三区 | 国产成人精品男人的天堂538 | 久操视频在线免费观看 | 操干干 | 亚洲精品系列 | 免费视频你懂得 | 性夜黄 a 爽免费看 性夜黄a爽影免费看 | 日韩免费精品视频 | 国产网站免费视频 | 日本xxxxxx69| 欧美一级黄色影片 | 主人扒开腿揉捏花蒂调教cfh | 99精品在免费线视频 | 亚洲怡红院在线观看 | 日本黄色小视频 | 高h肉肉视频在线播放观看 高黄视频 | 绝色村妇的泛滥春情 | 亚洲影视大全 | 在线色资源 |