精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

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

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

3天內不再提示

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

電子設計 ? 來源:電子設計 ? 作者:電子設計 ? 2020-10-30 09:57 ? 次閱讀

根文件系統是構建一個 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 扇區。

三、 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 系統的根文件系統是一個不錯的選擇。

審核編輯 黃昊宇

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

    關注

    134

    文章

    9057

    瀏覽量

    366874
  • uClinux
    +關注

    關注

    3

    文章

    75

    瀏覽量

    42881
收藏 人收藏

    評論

    相關推薦

    Cadence推出基于Arm系統Chiplet

    近日,Cadence宣布其首款基于 Arm系統級小芯片(Chiplet)開發成功并流片,這是一項突破性成就。這項創新標志著芯片技術的關鍵進步,展現了 Cadence 致力于通過其芯片架構和框架推動行業領先解決方案的承諾。
    的頭像 發表于 11-28 15:35 ?93次閱讀
    Cadence推出基于<b class='flag-5'>Arm</b>的<b class='flag-5'>系統</b>Chiplet

    導航分析儀的技術原理和應用場景

      導航分析儀的技術原理  信號接收與處理:信號接收:導航分析儀能夠接收來自導航衛星、地面導航基站等發射的導航信號。這些信號包含了衛星的位置、時間等信息,以及地面基站的相關導航指引信息。例如
    發表于 11-19 15:13

    ARM技術是什么?國內有哪些ARM廠家呢?一起來了解一下!

    。通過采用動態功耗管理技術,如動態電壓頻率調控(DVFS)等,ARM處理器可以根據系統負載情況動態調整功耗水平,以達到性能和功耗的平衡。 高度可定制 :ARM提供IP核授權模式,芯片廠
    發表于 11-18 16:35

    Arm加入OpenCloudOS操作系統開源社區

    從 5G 基礎設施和軟件定義汽車,到移動端和嵌入式設備,Arm 的開源工作覆蓋全球技術生態系統的方方面面。持續的開源合作與技術創新賦能全球超過 2,000 萬開發者在
    的頭像 發表于 11-15 11:34 ?278次閱讀

    RISC-V和arm指令集的對比分析

    RISC-V和ARM指令集是兩種不同的計算機指令集架構,它們在多個方面存在顯著的差異。以下是對這兩種指令集的詳細對比分析: 一、設計理念 RISC-V :RISC-V的設計理念是簡化指令集,提高指令
    發表于 09-28 11:05

    NFC協議分析儀的技術原理和應用場景

    NFC協議分析儀的技術原理和應用場景可以詳細闡述如下:技術原理NFC(Near Field Communication,近場通信)協議分析儀是一種用于
    發表于 09-25 14:45

    Arm精銳超級分辨率技術解析

    近日,Arm 推出了 Arm 精銳超級分辨率技術 (Arm Accuracy Super Resolution, Arm ASR),這是一款
    的頭像 發表于 09-03 11:28 ?876次閱讀
    <b class='flag-5'>Arm</b>精銳超級分辨率<b class='flag-5'>技術</b>解析

    ArmArm Neoverse計算子系統(CSS):Arm Neoverse CSS V3和Arm Neoverse CSS N3

    Arm宣布了兩款新的Arm Neoverse計算子系統(CSS),它們基于“迄今為止最好的一代Neoverse技術”。是什么讓這些新產品在擁擠的計算
    的頭像 發表于 04-24 17:53 ?993次閱讀
    <b class='flag-5'>Arm</b>新<b class='flag-5'>Arm</b> Neoverse計算子<b class='flag-5'>系統</b>(CSS):<b class='flag-5'>Arm</b> Neoverse CSS V3和<b class='flag-5'>Arm</b> Neoverse CSS N3

    fpga封裝技術arm架構的優缺點

    FPGA封裝技術ARM架構是兩個不同的概念,分別屬于硬件設計的不同領域。
    的頭像 發表于 03-26 15:51 ?758次閱讀

    Arm Helium技術誕生的由來 為何不直接采用Neon?

    經過 Arm 研究團隊多年的不懈努力,Arm 于 2019 年推出了適用于 Armv8?M 架構的 Arm Cortex-M 矢量擴展技術 (MVE)——
    的頭像 發表于 02-29 17:01 ?2010次閱讀
    <b class='flag-5'>Arm</b> Helium<b class='flag-5'>技術</b>誕生的由來 為何不直接采用Neon?

    國產ARM超算建設歷程 Arm計算在超算領域的實踐

    ARM 指令集兼容架構已成為HPC 主流技術與未來發展的重要趨勢,可滿足大型超算系統與商用HPC 系統技術需求。
    的頭像 發表于 01-25 14:06 ?1197次閱讀
    國產<b class='flag-5'>ARM</b>超算建設歷程 <b class='flag-5'>Arm</b>計算在超算領域的實踐

    如何使用Arm SPE進行芯片數據采集和性能分析呢?

    Arm Statistical Profiling Extension (SPE, 統計分析擴展) 是一種架構級功能,旨在增強 Arm CPU 的指令執行分析。
    的頭像 發表于 01-24 18:16 ?1693次閱讀

    高速公路機電系統技術方案分析

    電子發燒友網站提供《高速公路機電系統技術方案分析.doc》資料免費下載
    發表于 01-03 10:22 ?2次下載

    Arm Helium技術誕生的由來

    當人工智能 (AI) 下沉到各式各樣的應用當中,作為市場上最大量的物聯網設備也將被賦予智能性。Arm Helium 技術正是為基于 Arm Cortex-M 處理器的設備帶來關鍵機器學習與數字信號處理的性能提升。
    的頭像 發表于 12-22 14:36 ?890次閱讀
    <b class='flag-5'>Arm</b> Helium<b class='flag-5'>技術</b>誕生的由來

    如何利用IDA Pro逆向分析ARM二進制映像

    在本文中,我們將以ANYTONE 878UVII對講機中的固件為例,為大家演示如何對ARM固件映像進行逆向分析。不過,本文中的大部分內容,對于ARM架構來說都是通用的。
    的頭像 發表于 11-30 10:30 ?1953次閱讀
    如何利用IDA Pro逆向<b class='flag-5'>分析</b><b class='flag-5'>ARM</b>二進制映像