日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于ARM技術(shù)的uClinux系統(tǒng)設(shè)計與應(yīng)用分析

電子設(shè)計 ? 來源:電子設(shè)計 ? 作者:電子設(shè)計 ? 2020-10-30 09:57 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

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


一、引言

隨著電子產(chǎn)業(yè)的不斷發(fā)展,基于 ARM 技術(shù)的系統(tǒng)設(shè)計和開發(fā)平臺越來越多地在控制類、消費類、通信類等電子產(chǎn)品中廣泛應(yīng)用。從軟件角度上看,構(gòu)建基于 ARM 技術(shù) uClinux 系統(tǒng)要涉及到引導(dǎo)加載程序、Linux 內(nèi)核、文件系統(tǒng)、用戶應(yīng)用程序幾部分的設(shè)計。

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

二、開發(fā)環(huán)境簡介

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

三、 Cramfs 文件系統(tǒng)簡介

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

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

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

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

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

/bin 引導(dǎo)啟動所需的命令或用戶可能用的命令。

/sbin 系統(tǒng)管理員服務(wù)程序,其中最重要的是供內(nèi)核初始化之后執(zhí)行的 /sbin/init 進程,系統(tǒng)啟動時由 init 解釋并運行 /etc/inittab, inittab 將指導(dǎo) int 去調(diào)用一個系統(tǒng)初始化程序 /etc/init.d/rcS。

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

/lib 文件系統(tǒng)上的程序所需的動態(tài)庫。

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

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

/mnt 用于設(shè)備安裝的目錄。/mnt/etc/init.d/rcS 完成各個文件系統(tǒng)的 Mount,執(zhí)行 /usr/etc/rc.local;通過 rcS 可以調(diào)動 dhcp 程序配置網(wǎng)絡(luò)。rcS 執(zhí)行完以后,就會打開 Shell。

/proc 系統(tǒng)狀態(tài)文件目錄, 目錄中的文件可以用于訪問有關(guān)內(nèi)核的狀態(tài)、計算機的屬性、正在運行的進程的狀態(tài)等信息。盡管 /proc 中的文件是虛擬的,但它們?nèi)钥梢允褂萌魏挝募庉嬈骰蛳瘛甿ore’, ‘less’或 ‘cat’這樣的程序來查看。

四、 Cramfs 文件系統(tǒng)的移植過程

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

4.1、在內(nèi)核中加入對 CramFS 文件系統(tǒng)支持

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

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

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

MTD partitioning support [Y/m/n/?] Y 支持 MTD 分區(qū)

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

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

在 File systems 選項中進行配置:

Compressed ROM file system support [Y/m/n/?] Y ROM 文件系統(tǒng)的支持

完成上述修改并編譯后,完成 uCliunx 內(nèi)核對 CramFS 文件系統(tǒng)的支持。

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

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

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

#tar xvfz busybox-1.00.tar.gz

#cd busybox-1.00

#make menuconfig

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

Build Options

Build BusyBox as a static binary (no shared libs)

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

Do you want to build BusyBox with a Cross Compiler

選擇你自己定義的交叉編譯環(huán)境。

installation Options

don’t use /usr

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

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

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

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

4.3 、利用 mkcramfs 工具生成 cramfs 壓縮文件系統(tǒng)

一般情況下都要把已經(jīng)規(guī)劃好的目錄結(jié)構(gòu)轉(zhuǎn)換成一個映象文件,創(chuàng)建 Cramfs 文件系統(tǒng)需要 mkcramfs 工具,mkcramfs 能把相應(yīng)的 Cramfs 目錄樹壓縮成為單一的映象文件,這個映象文件就是我們需要移植的文件系統(tǒng)。Mkcramfs 的命令格式為:

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

#mkcramfs root cramfs.Img

用以上的命令就可以生成我們需要的 cramfs 文件系統(tǒng)映象文件,我們可以發(fā)現(xiàn)原本為 2.36Mbytes 大小的目錄內(nèi)容,被壓縮成一個 1.08Mbytes 的 CramFS 文件系統(tǒng)映象文件, 通過 vivi 或測試程序?qū)⑵鋵懭?Flash 中就可以驗證是否移植成功。

五、小結(jié)

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

審核編輯 黃昊宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • ARM
    ARM
    +關(guān)注

    關(guān)注

    135

    文章

    9589

    瀏覽量

    393810
  • uClinux
    +關(guān)注

    關(guān)注

    3

    文章

    75

    瀏覽量

    44088
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    Arm全新神經(jīng)技術(shù)即將加入神經(jīng)圖形開發(fā)套件

    移動端神經(jīng)圖形技術(shù)正加速演進。2025 年 8 月 Arm 發(fā)布了神經(jīng)技術(shù) (Neural Technology),該技術(shù)為業(yè)界首創(chuàng),并將專用神經(jīng)加速器引入 2026 年推出的
    的頭像 發(fā)表于 04-21 14:36 ?307次閱讀

    [VirtualLab] 激光引導(dǎo)無焦系統(tǒng)分析與設(shè)計

    ,分析了這種系統(tǒng)的經(jīng)典設(shè)計。然后,通過考慮衍射效應(yīng)并在系統(tǒng)中包括散焦或腰移,可以進一步減小幾何光學(xué)優(yōu)化給出的最小光斑尺寸。 建模任務(wù) #1-簡單的無焦系統(tǒng) ? 激光無焦
    發(fā)表于 04-21 08:21

    arm嵌入式主板優(yōu)缺點

    Windows CE、Linux等主流的嵌入式操作系統(tǒng)。   ARM的優(yōu)點   一、高可靠性、高穩(wěn)定性:在工業(yè)控制領(lǐng)域,性能穩(wěn)定可靠是自動控制基本的要求,ARM嵌入式主板有著很特殊的優(yōu)勢。第一
    發(fā)表于 01-08 07:08

    ARM嵌入式這樣學(xué)

    的內(nèi)核就是ARM內(nèi)核,它的主頻高很多,普通的都有幾百M。CPU緩存大,分有很多級的流水處理線,這樣大大提高了CPU利用率。這種IC的資源足以讓一個嵌入式操作系統(tǒng)正常跑起來,WINCE, LINUX
    發(fā)表于 12-04 07:48

    RDMA設(shè)計4:技術(shù)需求分析2

    專注高性能存儲與傳輸,希望對初學(xué)者有用。注意這里只是拋磚引玉,切莫認(rèn)為參考這就可以完成商用IP設(shè)計。若有NVME或RDMA 產(chǎn)品及項目需求,請看B站視頻后聯(lián)系。 根據(jù)IP適用性技術(shù)需求分析,總結(jié)
    發(fā)表于 11-24 09:09

    Arm SystemReady研討會圓滿召開

    上周除了有備受矚目的 Arm Unlocked 2025 AI 技術(shù)峰會之外,Arm SystemReady 研討會也在深圳熱烈召開。本次會議吸引了來自芯片供應(yīng)商、操作系統(tǒng)廠商、云服務(wù)
    的頭像 發(fā)表于 11-11 11:39 ?1102次閱讀

    深入解析面向不同市場的多樣化Arm計算子系統(tǒng)

    如果你曾基于 Arm 技術(shù)開發(fā)過產(chǎn)品,很大機會已經(jīng)感受到了 Arm 計算子系統(tǒng) (Arm Compute Subsystems,
    的頭像 發(fā)表于 09-06 14:09 ?1143次閱讀
    深入解析面向不同市場的多樣化<b class='flag-5'>Arm</b>計算子<b class='flag-5'>系統(tǒng)</b>

    ARM技術(shù)的特點

    精簡指令集(RISC) 與復(fù)雜指令集(CISC,如 x86 架構(gòu))相比,ARM 指令集更簡潔,指令長度固定(多為 32 位),執(zhí)行效率更高,適合低功耗場景。 低功耗與高性能平衡 設(shè)計注重能效比,在
    發(fā)表于 08-18 13:31

    Arm神經(jīng)技術(shù)是業(yè)界首創(chuàng)在 Arm GPU 上增添專用神經(jīng)加速器的技術(shù),移動設(shè)備上實現(xiàn)PC級別的AI圖形性能

    Arm 神經(jīng)技術(shù)是業(yè)界首創(chuàng)在 Arm GPU 上增添專用神經(jīng)加速器的技術(shù),首次在移動設(shè)備上實現(xiàn) PC 級別的 AI 圖形性能,為未來的端側(cè) AI 創(chuàng)新奠定基礎(chǔ) 神經(jīng)超級采樣是
    的頭像 發(fā)表于 08-14 17:59 ?2949次閱讀

    雙電機驅(qū)動系統(tǒng)消隙技術(shù)分析

    摘要: 雙電機驅(qū)動系統(tǒng)是電力系統(tǒng)中重要的電機系統(tǒng),雙電機驅(qū)動的消隙技術(shù)是雙電機驅(qū)動系統(tǒng)中的關(guān)鍵技術(shù)
    發(fā)表于 06-19 11:01

    ARM Mali GPU 深度解讀

    ARM Mali GPU 深度解讀 ARM Mali 是 Arm 公司面向移動設(shè)備、嵌入式系統(tǒng)和基礎(chǔ)設(shè)施市場設(shè)計的圖形處理器(GPU)IP 核,憑借其異構(gòu)計算架構(gòu)、能效優(yōu)化和生態(tài)協(xié)同,
    的頭像 發(fā)表于 05-29 10:12 ?5004次閱讀

    Arm 公司面向 PC 市場的 ?Arm Niva? 深度解讀

    面向 PC 市場的 ? Arm Niva ? 深度解讀 ? Arm Niva ? 是 Arm 公司為 PC 市場推出的核心計算平臺,屬于其“平臺優(yōu)先”戰(zhàn)略的關(guān)鍵布局。作為 ? Arm
    的頭像 發(fā)表于 05-29 09:56 ?1917次閱讀

    Arm 公司面向移動端市場的 ?Arm Lumex? 深度解讀

    (CSS)? ? 在移動端的落地形態(tài),Lumex 旨在通過高度集成化的軟硬件方案,解決移動設(shè)備在 AI 性能、能效比與開發(fā)效率上的挑戰(zhàn)。以下從技術(shù)架構(gòu)、性能突破、應(yīng)用場景、生態(tài)系統(tǒng)及戰(zhàn)略價值展開分析: 一、
    的頭像 發(fā)表于 05-29 09:54 ?4610次閱讀

    Arm 公司面向汽車市場的 ?Arm Zena? 深度解讀

    汽車市場的落地形態(tài),Zena 旨在解決汽車智能化轉(zhuǎn)型中的算力需求、開發(fā)效率與功能安全挑戰(zhàn)。以下從技術(shù)架構(gòu)、性能優(yōu)勢、應(yīng)用場景、生態(tài)系統(tǒng)及戰(zhàn)略意義展開分析: 一、技術(shù)架構(gòu):異構(gòu)集成與功能
    的頭像 發(fā)表于 05-29 09:51 ?2723次閱讀

    ESD技術(shù)文檔:芯片級ESD與系統(tǒng)級ESD測試標(biāo)準(zhǔn)介紹和差異分析

    ESD技術(shù)文檔:芯片級ESD與系統(tǒng)級ESD測試標(biāo)準(zhǔn)介紹和差異分析
    的頭像 發(fā)表于 05-15 14:25 ?4979次閱讀
    ESD<b class='flag-5'>技術(shù)</b>文檔:芯片級ESD與<b class='flag-5'>系統(tǒng)</b>級ESD測試標(biāo)準(zhǔn)介紹和差異<b class='flag-5'>分析</b>
    平原县| 梧州市| 夏邑县| 来宾市| 广宗县| 太原市| 绥化市| 白城市| 高唐县| 松桃| 太白县| 民和| 忻州市| 内江市| 法库县| 永福县| 乌鲁木齐县| 伊吾县| 中牟县| 德昌县| 博乐市| 蒙山县| 剑阁县| 怀柔区| 宣恩县| 通山县| 扎囊县| 八宿县| 津南区| 来凤县| 庆城县| 三都| 左权县| 荥阳市| 年辖:市辖区| 绥滨县| 龙江县| 金平| 临猗县| 汶川县| 龙南县|