嵌入式linux啟動過程
A. 誰能給我說一下嵌入式linux的開發流程包括哪些步驟請詳細介紹,謝謝了
嵌入式Linux開發流程
在一個嵌入式系統中使用Linux開發,根據應用需求的不同有不同的配置開發方法,但是一般都要經過如下的過程:
1.建立開發環境
操作系統一般使用RedHat-Linux,版本從7到9都可以,選擇定製安裝或全部安裝,通過網路下載相應的GCC交叉編譯器進行安裝(例如arm-Linux-gcc、arm-μclibc-gcc),或者安裝產品廠家提供的交叉編譯器。
2.配置開發主機
配置MINICOM,一般的參數為波特率為115 200bps,數據位為8位,停止位為1,無奇偶校驗,軟體硬體流控設為無。在Windows下的超級終端的配置也是這樣的。MINICOM軟體的作用是作為調試嵌入式開發板的信息輸出的監視器和鍵盤輸入的工具。配置網路,主要是配置NFS網路文件系統,需要關閉防火牆,簡化嵌入式網路調試環境設置過程。
3.建立引導裝載程序BOOTLOADER
從網路上下載一些公開源代碼的BOOTLOADER,如U-BOOT、BLOB、VIVI、LILO、ARM-BOOT、RED-BOOT等,根據自己具體的晶元進行移植修改。有些晶元沒有內置引導裝載程序,例如三星的ARM7、ARM9系列晶元,這樣就需要編寫開發板上Flash的燒寫程序,網路上有免費下載的Windows下通過JTAG並口簡易模擬器燒寫ARM外圍Flash晶元的燒寫程序,也有Linux下的公開源代碼的J-Flash程序。如果不能燒寫自己的開發板,就需要根據自己的具體電路進行源代碼修改。這是系統正常運行的第一步。如果購買了廠家的模擬器當然比較容易燒寫Flash,這對於需要迅速開發自己產品的人來說可以極大地提高開發速度,但是其中的核心技術是無法了解的。
4.下載別人已經移植好的Linux操作系統
如μCLinux、ARM-Linux、PPC-Linux等,如果有專門針對所使用的CPU移植好的Linux操作系統那是再好不過的,下載後再添加自己的特定硬體的驅動程序,進行調試修改,對於帶MMU的CPU可以使用模塊方式調試驅動,對於μCLinux這樣的系統則需編譯進內核進行調試。
5.建立根文件系統
從www.busybox.net下載使用BUSYBOX軟體進行功能裁減,產生一個最基本的根文件系統,再根據自己的應用需要添加其他程序。默認的啟動腳本一般都不會符合應用的需要,所以就要修改根文件系統中的啟動腳本,它的存放位置位於/etc目錄下,包括:/etc/init.d/rc.S、/etc/profile、/etc/.profile等,自動掛裝文件系統的配置文件/etc/fstab,具體情況會隨系統不同而不同。根文件系統在嵌入式系統中一般設為只讀,需要使用mkcramfs、genromfs等工具產生燒寫映像文件。
6.建立應用程序的Flash磁碟分區
一般使用JFFS2或YAFFS文件系統,這需要在內核中提供這些文件系統的驅動,有的系統使用一個線性Flash(NOR型)512KB~32MB,有的系統使用非線性Flash(NAND型)8~512MB,有的兩個同時使用,需要根據應用規劃Flash的分區方案。
7.開發應用程序
應用程序可以放入根文件系統中,也可以放入YAFFS、JFFS2文件系統中,有的應用不使用根文件系統,直接將應用程序和內核設計在一起,這有點類似於μCOS-II的方式。
8.燒寫內核、根文件系統、應用程序
9.發布產品
B. 結合嵌入式系統平台,簡述Linux系統內核詳細的引導過程並用流程框圖加以說明.
可以自己跟內核代碼 start_kernel()函數開始,或者網路「linux啟動過程」
C. 嵌入式linux系統的啟動流程是什麼樣的
1) 初始化 RAM
因為 Linux 內核一般都會在 RAM 中運行,所以在調用 Linux 內核之前 Bootloader 必須設置和初始化 RAM,為調用 Linux內核做好准備。初始化 RAM 的任務包括設置 CPU 的控制寄存器參數,以便能正常使用 RAM 以及檢測RAM 大小等。
2) 初始化串口埠
在 Linux 的啟動過程中有著非常重要的作用,它是 Linux內核和用戶交互的方式之一。Linux 在啟動過程中可以將信息通過串口輸出,這樣便可清楚的了解 Linux 的啟動過程。雖然它並不是 Bootloader 必須要完成的工作,但是通過串口輸出信息是調試 Bootloader 和Linux 內核的強有力的工具,所以一般的 Bootloader 都會在執行過程中初始化一個串口作為調試埠。
3) 檢測處理器類型
Bootloader在調用 Linux內核前必須檢測系統的處理器類型,並將其保存到某個常量中提供給 Linux 內核。Linux 內核在啟動過程中會根據該處理器類型調用相應的初始化程序。
4) 設置 Linux啟動參數
Bootloader在執行過程中必須設置和初始化 Linux 的內核啟動參數。
5) 調用 Linux內核映像
Bootloader完成的最後一項工作便是調用 Linux內核。如果 Linux 內核存放在 Flash 中,並且可直接在上面運行(這里的 Flash 指 Nor Flash),那麼可直接跳轉到內核中去執行。但由於在 Flash 中執行代碼會有種種限制,而且速度也遠不及 RAM 快,所以一般的嵌入式系統都是將 Linux內核拷貝到 RAM 中,然後跳轉到 RAM 中去執行。
D. 如何修改嵌入式linux啟動進度條
1.分析
ARM-Linux啟動時會先在LCD左上角顯示一個ARMLINUX的小企鵝圖案,也就是我們所說的bootlogo。
首先分析一下Logo的顯示代碼:
不難發現Logo顯示是在載入顯示驅動fb後由kernel/drivers/video/fbcon.c中的fbcon_show_logo函數來完成的。
fbcon_show_logo函數中有很多兼容性代碼,不是都會用到的!
再仔細看一下,這里用到的顯示數據均來自kernel/include/linux/linux_logo.h。這里同樣也有一些兼容性的數據,其中對我們有用的是:
linux_logo_red[] —— 調色板中的紅色分量
linux_logo_green[] —— 調色板中的綠色分量
linux_logo_blue[] —— 調色板中的藍色分量
linux_logo[] —— Logo圖案的點陣
以上數據都是不需要你修改的在fbcon_show_logo里只做了256色的顯示,所以要先設置一個RGB調色板。這里的調色板是從0x20色開始編的,所以實際好象只有最多224色的顯示。linux_logo.h里默認是做了一個214級的灰度調色板,如果想要更多色彩的話可以自已修改(注意調色板的顏色不能超過224種)
再看linux_logo[],這是Logo圖案的點陣。因為是256色的圖,所以每點為一個Byte。Logo圖案是80*80大小,所以這里總共有6400 Byte。一共是800行,每行8 Byte即8 Point,每10行數據對應Logo圖案中一行。可以先自己試試放一些簡單圖形進去顯示看看。(同樣注意顏色要從0x20開始,0-0x1f的32種顏色是不確定的)。
以上分析是針對系統原版內核256色80x80的啟動圖標的說明。而我們要通過修改或替代原內核文件,來實現我們製做公司的的啟動圖標,要求如下:
1.開發板起動以後以全屏顯示即240x320模式顯示
2.圖像以224色彩顯示
2.方案設計
當然你不會只想顯示一些簡單圖形,而是希望能把自已做的圖片放上去。建議使用PhotoShop8.0這里提供三個方法加工圖片:
1)先搞一個256色調色板,前面32個顏色空著,把後面224種顏色設一下吧。注意要盡量把顏色選全一些,要能覆蓋到整個顏色區域上。這樣就有一個通用的調色板,可適用所有圖片,但顏色的真實性稍差。然後把自己的圖片打開,先將顏色設置到RGB空間里,然後裁剪/縮放到240x320象數的尺寸,再將顏色優化到先前定義好的調色板里,圖片就加工好了。
2)不用通用調色板,打開自己的圖片,先將顏色設置到RGB空間,裁剪/縮放到240x320象素的尺寸,然後指定優化為224色圖象。這樣圖片就加工好了,但其調色板就是專用的,不適合用到其他圖片里。
3)GIMP+FBLOGOGIMP為LINUX下一個繪圖程序,我們使用它打開圖片後在菜單欄先擇:圖片->模式->索引顏色,然後通過工具選項將圖片大小調整到240x320象數大小,保存為.png格式。在使FBLOGO工具將其轉換成linux_logo.h文件。
使用前兩種方法加工圖片,還需要把數據放到我們的linux_logo.h里。調色板可以直接保存為文件,然後可以通過自製的小程序讀出來就可以了。圖片的點陣比較難取,當然也可以自己做個程序去取屏幕上的點,不過比較困難。而後一種方法使用fblogo工具將用GIMP轉換的圖片文件自動生成linux_logo.h文件。
3.最終實施方案
通過以上內容分析,我們確定使用第三種方法GIMP加fblogo工具的方案進行實施,以下我們製做的流程及其方法:
軟體環境:linux虛擬機、fblogo工具、linux下的圖像編輯工具GIMP
硬體環境:X86PC機一台、優龍ST2410開發板一個、交叉網線一條。
1.調試並編譯開發板所相對應的內核包,調試通過後保留.config配製文件,准備編譯bootlogo時使用。
2.在linux上解壓fblogo_0.52.tgz包,並進行軟體安裝,生成fblogo二進制可執行文件。
3.進入linux的kde圖形界面,在終端下使用gimp命令運行gimp工具。
4.打開公司的logo.jpg圖像文件,依次選擇 圖像->模式->索引顏色、並將其圖片大小調至240x320象素,最後將文件保存為logo.png格式。
5.將上述文件保存到fblogo工具所在文件夾,首先在命令行下執行convert –colors 223 logo.png logo.png 將文件保存為224色素(目前fblogo工具僅支持到224色),接著再使用fblogo logo.png linux_logo.h 生成linux_logo.h內核啟動代碼中的圖像緩沖區文件格式。
6.將linux_logo.h文件拷貝到kernel的include/linux目錄即可。
7.重新編譯linux系統內核,將生成的zImage內核鏡像拷貝到windows下,准備對目標板進行燒寫。
8.用串口將目標板與PC主機相連,接通電源,使用bnw工具進入目標板的bios程序並將生成的zImage內核鏡像拷燒寫到板子上,重起目標板,你會發現目標板上已經出現了美麗的logo圖片。如果沒有,請核對以上的步驟,並重新測試直到成功為止。
4 方案總結
4.1 方案實施過程中的關鍵問題
1.確保內核能夠正常運行,編譯時對開發板各硬體的驅動支持及其相關的配製,啟動後能夠自動載入文件系統。
2.安裝fblogo工具,fblogo工具的編譯需要使用到第三方的庫文件libpng.so庫以及zliba.a庫的支持,編譯成功後,在命令行試運行fblogo 如果安裝成功將出現其使用的幫助信息。
3.fblogo工具對圖片的要求是僅支持PNG格式的224色圖片。
4.最後針對不同的開發板的LCD顯示屏應使用與其相適應的圖片大小,否則可能使系統無法正常工作。
4.2 方案實施後的遺留問題
由於使用到了logo的製做工具fblogo 所以圖片在色彩上最大僅能支持到224色圖片,在bootlogo啟動文件linux_logo.h中有圖像的色彩域點陣代碼(即圖片的16位進制的代碼),如有需要可以自行修改,但其難度可想而知,建議可以將圖片保存為TIF之類的非壓縮格式,然後自已編寫小程序將其從圖象文件中的固定位置取點陣數據。
5 2.6內核啟動Logo
在配置內核的時候選中了啟動Logo的支持。
使用下面的方法可以將企鵝的Logo換成自己喜歡的任意圖片。
首先准備一幅自己喜歡的圖片,然後將背景塗成黑色。然後將該圖片保存成png格式,例如linuxlogo.png。在Linux下使用下面的命令:
# pngtopnm linuxlogo.png > linuxlogo.pnm
# pnmquant 224 linuxlogo.pnm > linuxlogo224.pnm
# pnmtoplainpnm linuxlogo224.pnm > linuxlogo224.ppm
然後用生成的linuxlogo224.ppm替換/usr/src/linux-2.6.8.1/drivers/video/logo/logo_linux_clut224.ppm(最好先做好備份),然後刪除同一目錄下的logo_linux_clut224.c文件,重新編譯內核,啟動之後就可以在屏幕左上方看到自己的Logo了。
E. 嵌入式linux的bootloader的啟動流程是怎樣的
嵌入式 Linux 系統從軟體角度看可以分為四個部分:引導載入程序(Bootloader), Linux 內核,文件系統,應用程序。
當系統首次引導時,或系統被重置時,處理器會執行一個位於Flash/ROM中的已知位置處的代碼,Bootloader就是這第一段代碼。它主要用來初始化處理器及外設,然後調用 Linux 內核。Linux 內核在完成系統的初始化之後需要掛載某個文件系統作為根文件系統(Root Filesystem),然後載入必要的內核模塊,啟動應用程序。這就是嵌入式Linux系統啟動過程 Linux 引導的整個過程。
Bootloader 的啟動方式:
網路啟動方式。這種方式的開發板不需要較大的存儲介質,跟無盤工作站有點類似,但是使用這種啟動方式之前,需要把Bootloader安裝到板上的EPROM或者Flash中。Bootloader通過乙太網介面遠程下載Linux內核映像或者文件系統。Bootloader下載文件一般都使用TFTP網路協議,還可以通過DHCP的方式動態配置IP地址。
硬碟啟動方式
傳統的Linux系統運行在台式機或者伺服器上,這些計算機一般都使用BIOS引導,並使用磁碟作為存儲介質。Linux傳統上是LILO (Linux Loader) 引導,後來又出現了GUN的軟體 (Grand Unified Bootloader) 。 這兩種Bootloader廣泛應用在X86的Linux系統上。Flash啟動方式。大多數嵌入式系統上都使用Flash存儲介質。Flash有很多類型,包括NOR Flash、NAND Flash和其它半導體盤。它們之間的不同在於: NOR Flash 支持晶元內執行(XIP, eXecute In Place),這樣代碼可以在Flash上直接執行而不必拷貝到RAM中去執行。而NAND Flash並不支持XIP,所以要想執行 NAND Flash 上的代碼,必須先將其拷貝到 RAM中去,然後跳到 RAM 中去執行。NOR Flash 使用最為普遍。Bootloader一般放在Flash的底端或者頂端,這需要根據處理器的復位向量來進行設置。可以配置成MTD設備來訪問Flash分區。
F. 嵌入式linux 驅動設備識別過程
驅動程序識別設備時,有以下兩種方法:
(1)驅動程序本身帶有設備的信息,比如開始地址、中斷號等:載入驅動程序時,就可以根據這些信息來識別設備。
(2)驅動程序本身沒有設備的信息,但是內核中已經(或以後)根據其他方式確定了很多設備的信息;載入驅動程序時,將驅動程序與這些設備逐個比較,確定兩者是否匹配(match)。如果驅動程序與某個設備匹配,就可以通過該驅動程序操作這個設備了。內核常使用第二種方法來識別設備,這可以將各種設備集中在-一個文件中管理,當開發板的配置改變時,便於修改代碼。在內核文件includePnuxÔatform _device.h 中,定義了兩個數據結構來表示這些設備和驅動程序: platform_ device 結構用來描述設備的名稱、ID、所佔用的資源(比如內存地址/大小、中斷號)等; platform_ driver 結構用來描述各種操作函數, 比如枚舉函數、移除設備函數、驅動的名稱等。內核啟動後,首先構造鏈表將描述設備的platform_device結構組織起來,得到一一個設備的列表:當載入某個驅動程序的platform_ driver 結構時,使用一.些匹配函數來檢查驅動程序能否支持這些設備,常用的檢查方法很簡單:比較驅動程序和設備的名稱。
G. 做一個嵌入式Linux系統究竟要做哪些工作
1、Linux 基礎
安裝Linux操作系統 Linux文件系統 Linux常用命令 Linux啟動過程詳解 熟悉Linux服務能夠獨立安裝Linux操作系統
能夠熟練使用Linux系統的基本命令 認識Linux系統的常用服務安裝Linux操作系統 Linux基本命令實踐 設置Linux環境變數 定製Linux的服務
Shell 編程基礎使用vi編輯文件 使用Emacs編輯文件 使用其他編輯器
2、Shell 編程基礎
Shell簡介 認識後台程序Bash編程熟悉Linux系統下的編輯環境 熟悉Linux下的各種Shell 熟練進行shell編程熟悉vi基本操作
熟悉Emacs的基本操作 比較不同shell的區別 編寫一個測試伺服器是否連通的shell腳本程序 編寫一個查看進程是否存在的shell腳本程序
編寫一個帶有循環語句的shell腳本程序
3、Linux 下的C 編程基礎
linux C語言環境概述 Gcc使用方法 Gdb調試技術 Autoconf Automake Makefile 代碼優化
熟悉Linux系統下的開發環境 熟悉Gcc編譯器 熟悉Makefile規則編寫Hello,World程序 使用 make命令編譯程序 編寫帶有一個循環的程序
調試一個有問題的程序
4、嵌入式系統開發基礎
嵌入式系統概述交叉編譯 配置TFTP服務 配置NFS服務 下載Bootloader和內核
嵌入式Linux應用軟體開發流程熟悉嵌入式系統概念以及開發流程 建立嵌入式系統開發環境製作cross_gcc工具鏈 編譯並下載U-boot
編譯並下載Linux內核 編譯並下載Linux應用程序
5、嵌入式系統移植
Linux內核代碼 平台相關代碼分析 ARM平台介紹 平台移植的關鍵技術 移植Linux內核到 ARM平台 了解移植的概念
能夠移植Linux內核移植Linux2.6內核到 ARM9開發板
6、嵌入式 Linux 下串口通信
串列I/O的基本概念 嵌入式Linux應用軟體開發流程 Linux系統的文件和設備 與文件相關的系統調用 配置超級終端和MiniCOM
能夠熟悉進行串口通信 熟悉文件I/O 編寫串口通信程序 編寫多串口通信程序
7、嵌入式系統中多進程程序設計
Linux系統進程概述 嵌入式系統的進程特點 進程操作 守護進程 相關的系統調用了解Linux系統中進程的概念 能夠編寫多進程程序編寫多進程程序
編寫一個守護進程程序 sleep系統調用任務管理、同步與通信 Linux任務概述任務調度 管道 信號 共享內存 任務管理 API 了解Linux系統任務管理機制
熟悉進程間通信的幾種方式 熟悉嵌入式Linux中的任務間同步與通信編寫一個簡單的管道程序實現文件傳輸 編寫一個使用共享內存的程序
8、嵌入式系統中多線程程序設計
線程的基礎知識 多線程編程方法 線程應用中的同步問題了解線程的概念 能夠編寫簡單的多線程程序編寫一個多線程程序
9、嵌入式 Linux 網路編程
網路基礎知識 嵌入式Linux中TCP/IP網路結構 socket 編程 常用 API函數 分析Ping命令的實現 基本UDP套介面編程 許可證管理
PPP協議 GPRS 了解嵌入式Linux網路體系結構 能夠進行嵌入式Linux環境下的socket 編程 熟悉UDP協議、PPP協議 熟悉GPRS
使用socket 編寫代理伺服器 使用socket 編寫路由器 編寫許可證伺服器 指出TCP和UDP的優缺點 編寫一個web伺服器 編寫一個運行在
ARM平台的網路播放器
10、GUI 程序開發
GUI基礎 嵌入式系統GUI類型 編譯QT 進行QT開發熟悉嵌入式系統常用的GUI 能夠進行QT編程使用QT編寫「Hello,World」程序
調試一個加入信號/槽的實例 通過重載QWidget 類方法處理事件
11、Linux 字元設備驅動程序
設備驅動程序基礎知識 Linux系統的模塊 字元設備驅動分析 fs_operation結構 載入驅動程序了解設備驅動程序的概念
了解Linux字元設備驅動程序結構 能夠編寫字元設備驅動程序編寫Skull驅動 編寫鍵盤驅動 編寫I/O驅動 分析一個看門狗驅動程序
對比Linux2.6內核與2.4內核中字元設備驅動的不同Linux 塊設備驅動程序塊設備驅動程序工作原理 典型的塊設備驅動程序分析
塊設備的讀寫請求隊列了解Linux塊設備驅動程序結構 能夠編寫簡單的塊設備驅動程序比較字元設備與塊設備的異同 編寫MMC卡驅動程序 分析一個文件系統
對比Linux2.6內核與2.4內核中塊設備驅動的不同
12、文件系統
虛擬文件系統 文件系統的建立 ramfs內存文件系統 proc文件系統 devfs 文件系統 MTD技術簡介 MTD塊設備初始化
MTD塊設備的讀寫操作了解Linux系統的文件系統 了解嵌入式Linux的文件系統 了解MTD技術 能夠編寫簡單的文件系統為 ARM9開發板添加 MTD支持
移植JFFS2文件系統 通過proc文件系統修改操作系統參數 分析romfs 文件系統源代碼 創建一個cramfs 文件系統
無論選擇哪一方向,基本的linux的知識是需要具備的,其他還需要掌握的知識有ARM(最常用的一款嵌入式處理器)和C語言編程,每一方面知識的掌握熟練程度都最終決定了個人進行嵌入式linux開發的綜合能力。
更多詳情來源:《華清遠見嵌入式學院》
H. 嵌入式Linux的開發流程包括哪些步驟請詳細介紹。
這個問題,你可以直接買一本書來看,好多書上都有詳細的常式,而且這些常式都是完整的。不過這些常式都是結合具體的板子開發,有比較高的針對性。
I. 關於嵌入試LINUX系統的資料誰有,謝謝!
我幫你查找了兩個資料,你看看對你是否可以有點幫助;
嵌入式Linux系統的設計與應用
摘要:隨著嵌入式Linux系統的迅速發展,嵌入式Linux已發展成為嵌入式操作系統的一個重要分支。本文介紹了嵌入式Linux的設計和幾種流行的嵌入式Linux系統。
關鍵詞:嵌入式Linux
一、引言
嵌入式系統(Embedded Systems)是根據應用的要求,將操作系統和功能軟體集成於計算機硬體系統之中,從而實現軟體與硬體一體化的計算機系統。嵌入式系統出現於60年代晚期,它最初被用於控制機電電話交換機,如今已被廣泛的應用於工業製造、過程式控制制、通訊、儀器、儀表、汽車、船舶、航空、航天、軍事裝備、消費類產品等眾多領域。嵌入式系統在數量上遠遠超過了各種通用計算機系統:計算機系統核心CPU,每年在全球范圍內的產量大概在二十億顆左右,其中超過80%應用於各類專用性很強的嵌入式系統。
一般的說,凡是帶有微處理器的專用軟硬體系統都可以稱為嵌入式系統。和通用的計算平台相比,嵌入式系統往往具有功能單一、體積小、功耗低、可靠性高、剪裁性好、軟硬體集成度高、計算能力相對較低等特點。多年來,嵌入式設備中沒有操作系統,其主要原因有二:首先,諸如洗衣機、微波爐、電冰箱這樣的設備僅僅需要一道簡單的控製程序,以管理數量有限的按鈕和指示燈,沒有使用操作系統的必要;其次,它往往只具有有限的硬體資源,不足以支持一個操作系統。
然而,隨著硬體的發展,嵌入式系統變得越來越復雜,最初的控製程序中逐步的加入了許多功能,而這些功能中有很多可以由操作系統提供。於是,在70年代末期出現了嵌入式操作系統(Embedded Operating Systems),它的出現大大簡化了應用程序設計,並可以有效的保障軟體質量和縮短開發周期。簡單的ES一般並不使用操作系統,只包含一些控制流程,但是隨著嵌入式操作系統在復雜性上的增長,簡單的流程式控制制就不能滿足系統的要求,這是就必須考慮使用操作系統做系統軟體。因此,嵌入式操作系統就應運而生。
隨著EOS的廣泛應用,業界已推出一些應用比較成功的EOS產品。歸納起來EOS應該具有以下幾個特點:小巧、實時性、可裝卸、固化代碼、弱交互性、強穩定性和統一的介面。目前使用最多的EOS產品包括有:Vxwork、QNX、PalmOS、WindowsCE、pSOS、Hopen OS(國內凱思集團公司自主研製開發)等。其中,Vxwork使用最為廣泛、市場佔有率最高,其突出特點是實時性強(採用優先順序搶占和輪轉調度等機制),除此之外,其可靠性和可剪裁性也相當不錯。QNX是一種伸縮性極佳的系統,其核心加上實時POSIX環境和一個完整的窗口系統還不到一兆。相比之下,Microsoft WinCE的核心體積龐大,實時性能也差強人意,但由於Windows系列友好的用戶界面和為程序員所熟悉的API,並捆綁IE、Office等應用程序,正逐漸獲得更大的市場份額。而與這些商業化的操作系統相比,Linux已經越來越受到人們的注意。
二、嵌入式Linux概述
Linux是一個成熟而穩定的網路操作系統。將Linux植入嵌入式設備具有眾多的優點。首先,Linux的源代碼是開放的,任何人都可以獲取並修改,用之開發自己的產品。其次,Lirmx是可以定製的,其系統內核最小隻有約134kB。一個帶有中文系統和圖形用戶界面的核心程序也可以做到不足1MB,並且同樣穩定。另外,它和多數Unix系統兼容,應用程序的開發和移植相當容易。同時,由於具有良好的可移植性,人們已成功使Linux運行於數百種硬體平台之上。
然而,Linux並非專門為實時性應用而設計,因此如果想在對實時性要求較高的嵌入式系統中運行Linux,就必須為之添加實時軟體模塊。這些模塊運行的內核空間正是操作系統實現進程調度、中斷處理和程序執行的部分,因此錯誤的代碼可能會破壞操作系統,進而影響整個系統的可靠性和穩定性。Linux的眾多優點還是使它在嵌入式領域獲得了廣泛的應用,並出現了數量可觀的嵌入式Linux系統。其中有代表性的包括:uClinux、ETLinux、ThinLinux、LOAF等。ETLinux通常用於在小型工業計算機,尤其是PC/104模塊。ThinLinux面向專用的照相機伺服器、X-10控制器、MP3播放器和其它類似的嵌入式應用。LOAF是Linux On A Floppy的縮略語,它運行在386平台上。
三、Linux作為嵌入式操作系統的優勢
Linux作為嵌入式操作系統的優勢主要有以下幾點:
1、 可應用於多種硬體平台。Linux已經被移植到多種硬體平台,這對於經費,時間受限制的研究與開發項目是很有吸引力的。原型可以在標准平台上開發後移植到具體的硬體上,加快了軟體與硬體的開發過程。Linux採用一個統一的框架對硬體進行管理,從一個硬體平台到另一個硬體平台的改動與上層應用無關。Linux可以隨意地配置,不需要任何的許可證或商家的合作關系,源代碼可以免費得到。這使得採用Linux作為操作系統不會遇到任何關於版權的糾紛。毫無疑問,這會節省大量的開發費用。本身內置網路支持,而目前嵌入式系統對網路支持要求越來越高。Linux的高度模塊化使添加部件非常容易。
2、 Linux是一個和Unix相似、以內核為基礎的、具有完全的內存訪問控制,支持大量硬體(包括X86,Alpha、ARM和Motorola等現有的大部分晶元)等特性的一種通用操作系統。其程序源碼全部公開,任何人可以修改並在GUN通用公共許可證(GNU General Public License)下發行。這樣,開發人員可以對操作系統進行定製,適應其特殊需要。
3、 Linux帶有Unix用戶熟悉的完善的開發工具,幾乎所有的Unix系統的應用軟體都已移植到了Linux上。Linux還提供了強大的網路功能,有多種可選擇窗口管理器(X Windows)。其強大的語言編譯器GCC,C++等也可以很容易得到,不但成熟完善,而且使用方便。
四、嵌入式Linux的建立
完整的嵌入式Linux解決方案應包括嵌入式Linux操作系統內核、運行環境、圖形化界面和應用軟體等。由於嵌入式設備的特殊要求,嵌入式Linux解決方案中的內核、環境、GUI等都與標准Linux有很大不同,其主要挑戰是如何在狹小的FLASH、ROM和內存中實現高質量的任務實時調度、圖形化顯示、網路通信等功能。
1、 精簡內核
Linux內核有自己的結構體系,其中進程管理、內存管理和文件系統是其最基本的3個子系統。圖1簡單表示了它的框架。用戶進程可直接通過系統調用或者函數庫來訪問內核資源。正因為Linux內核具有這樣的結構,因此修改內核時必須注意各個子系統之間的協調。
嵌入式Linux內核一般由標准Linux內核裁剪而來。用戶可根據需求配置系統,剔除不需的服務功能、文件系統和設備驅動。經過裁剪、壓縮後的系統內核一般只有300k左右,十分適合嵌入式設備。同標准Linux不同的是嵌入式Linux必須要實現從FLASH或ROM的啟動。標准Linux啟動代碼實現了系統初始化和從軟盤、硬碟O盤區引導內核。嵌入式Linux一般保存在FLASH或ROM中,標准LILO無法引導。在支持直接從FLASH設備引導的系統中,如華恆公司的uClinux,引導程序主要完成對硬體系統的初始化工作和操作系統的解壓、移位工作。在不支持直接從FLASH引導的系統中,FLASH設備只能作為非引導磁碟使用。此時,可採用先從硬碟或軟盤載入一個小操作系統,如嵌入式DOS,然後再執行"Loadlin"載入程序從FLASH引導嵌入式Linux。
對標准Linux的修改主要是虛擬內存和調度程序部分的改動。因為標准Linux系統使用虛擬內存管理的目的是為了能同時運行多個進程,但是這樣每個待運行的進程所能分配的CPU時間片就受限制,資源的使用效率就低。這樣對於實時性要求較高的嵌入式系統來說,實時任務往往要求CPU具有很高的突發處理能力,即在有些時候需要極高的處理效率,因此需要屏蔽內核的虛擬內存管理機制。對於無硬碟設備的嵌入式系統,不必採用虛存管理。強實時需求的嵌入式應用可以通過修改任務調度模塊實現,主要是在內核和設備驅動程序中加入了許多切換點。在該點處,系統檢測是否存在未處理的緊急中斷,有則剝奪內核的運行,及時處理中斷。實現實時性服務的一個較好的方法是在標準的Linux內核上增加一個實時內核,標准Linux內核作為一個任務運行於實時內核上,強實時性任務也直接運行在實時內核上,如RT-Linux等。
文件系統是嵌入式Linux操作系統必不可少的。但標准Linux支持大量的文件系統,因此除了滿足系統的正常運行需要而保留一種外,其它的全部可以刪除,利用原有的設置選項可以移除。一般嵌入式設備文件系統主要使用RamDisk技術和網路文件系統技術。RamDisk可駐留於Flash,運行時載入到內存中。
2、 精簡運行環境
Linux通常的運行環境指用戶運行任何應用的基礎設施,主要包括函數庫和基本命令集等。標准Linux系統同時向用戶提供了靜態和動態函數庫。靜態函數庫在生成應用時直接鏈接到用戶應用中。動態庫在應用運行時才鏈接。由於嵌入式系統應用一般都是在開發平台上預先生成的,因此嵌入式系統只需向應用提供動態函數庫。Linux應用運行所需的函數庫主要有C庫、數學庫、線程庫、加密庫、網路通信庫等。其中最基本的是C語言的運行庫glib。這個庫主要完成基本的輸入輸出,內存訪問,文件處理。一個標準的glib庫大約要1200kB存儲空間,考慮到嵌入式Linux內核往往很小,這種運行庫實在太大,我們做了一些精簡的工作,方法有兩種:(1)、使用靜態連接的方法,完全不使用運行庫動態連接;(2)、對這個庫的函數進行精簡。
在一個桌面系統上,使用動態連接可以帶來許多好處。使用動態連接庫,可以讓應用程序跟函數庫的更新、升級分離,便於維護,可以讓同時運行的多個程序共享一段代碼。但是,在嵌入式系統中,很少有多個程序並行的可能,程序的維護,尤其是庫函數的維護更新是不常見的。這時,使用靜態連接的優勢就極為明顯。因為靜態連接可以只將庫中用到的部分連接進程序。在應用程序較少(小於5)的情況下,靜態連接可以達到較好的結果。為了便於將來擴充的需要,我們也採用第二種方法,針對我們的需要,對庫函數的內容進行精簡,只保留一些基本功能,還有一種方法是採用其它的C語言運行庫。但是這些庫對兼容性影響很大。
基本命令集同樣是運行用戶應用的基礎,主要包括初始化進程init,終端獲取getty、Shell和基本命令等。嵌入式系統的啟動過程可能與標准Linux不同,例如跳過登錄過程直接啟動GUI等。這就要求修改init,getty等。標准Linux命令集同樣由於體積問題無法直接應用於嵌入式環境。目前,小命令集的解決方法主要有集成方法和匯編方法兩種。集成方法採用集成公共部分減少命令集整體體積,用C實現,有較好的平台移植性;匯編方法則採用匯編編程減少每個命令的體積.這樣可使體積很小但其平台移植性較差。
3、 嵌入式Linux下的GUI
GUI在嵌入式系統或者實時系統中的地位越來越重要,比如PDA、DVD播放機、WAP手機等,都需要一個完整.漂亮的圖形用戶界面。這些系統對GUI的基本要求包括:(1)、輕型、佔用資源少;(2)、高性能;(3)、高可靠性;(4)、可配置。這些也成為評價嵌入式系統的重要指標。目前,嵌入式Linux上的GUI主要有winCE、Micro Window、緊縮的X Window、MiniGUI(國內做得較好的自由軟體之一)。標准Linux的Xfree86由於體積龐大,運行環境要求高,無法運行於嵌入式環境。嵌入式GUI主要通過削減功能,降低性能來實現體積小和佔用資源少。目前嵌入式Linux上的GUI環境主要有兩類:X類和win32類。X類GUI分為服務方和客戶方兩方。伺服器方提供滑鼠、鍵盤處理和顯示功能,客戶方是用戶應用,服務方和客戶方通過socket介面和X協議通信。採用該方式十分有利於遠程網路圖形化服務,客戶方和服務方可通過網路實現X協議和圖形顯示。典型的X類GUI有Micro Window、緊縮的X Window等。win32類的GUI不存在客戶方和服務方,每個任務都自成一體,任何任務間的切換、事件分發由專門的管理任務負責。如wiCE、MiniGUI就是類似於win32類的GUI。
五、當前流行的幾種嵌入式Linux系統
除了智能數字終端領域以外,Linux在移動計算平台、智能工業控制、金融業終端系統,甚至軍事領域都有著廣泛的應用前景。這些Linux被統稱為"嵌入式Linux"。
1、RT-Linux
這是由美國墨西哥理工學院開發的嵌入式Linux操作系統。到目前為止,RT-Linux已經成功地應用於太空梭的空間數據採集、科學儀器測控和電影特技圖像處理等廣泛領域。RT-Linux開發者並沒有針對實時操作系統的特性而重寫Linux的內核,因為這樣做的工作量非常大,而且要保證兼容性也非常困難。為此,RT-Linux提出了精巧的內核,並把標準的Linux核心作為實時核心的一個進程,同用戶的實時進程一起調度。這樣對Linux內核的改動非常小,並且充分利用了Linux下現有的豐富的軟體資源。
2、uClinux
uCLinux是Lineo公司的主打產品,同時也是開放源碼的嵌入式Linux的典範之作。uCLinux主要是針對目標處理器沒有存儲管理單元MMU(Memory Management Unit) 的嵌入式系統而設計的。它已經被成功地移植到了很多平台上。由於沒有MMU,其多任務的實現需要一定技巧。uCLinux是一種優秀的嵌入式Linux版本,是micro-Conrol-Linux的縮寫。它秉承了標准Linux的優良特性,經過各方面的小型化改造,形成了一個高度優化的、代碼緊湊的嵌入式Linux。雖然它的體積很小,卻仍然保留了Linux的大多數的優點:穩定、良好的移植性、優秀的網路功能、對各種文件系統完備的支持和標准豐富的API。它專為嵌入式系統做了許多小型化的工作,目前已支持多款CPU。其編譯後目標文件可控制在幾百KB數量級,並已經被成功地移植到很多平台上。
3、Embedix
Embedix是由嵌入式Linux行業主要廠商之一Luneo推出的,是根據嵌入式應用系統的特點重新設計的Linux發行版本。Embedix提供了超過25種的Linux系統服務,包括Web伺服器等。系統需要最小8MB內存,3MB ROM或快速快閃記憶體。Embedix基於Linux 2.2內核,並已經成功地移植到了Intel x86和PowerPC處理器系列上。像其它的Linux版本一樣,Embedix可以免費獲得。Luneo還發布了另一個重要的軟體產品,它可以讓在Windows CE上運行的程序能夠在Embedix上運行。Luneo還將計劃推出Embedix的開發調試工具包、基於圖形界面的瀏覽器等。可以說,Embedix是一種完整的嵌入式Linux解決方案。
4、Xlinux
XLinux是由美國網虎公司推出,主要開發者是陳盈豪。他在加盟網虎幾個月後便開發出了基於XLinux的、號稱是世界上最小的嵌入式Linux系統,內核只有143KB,而且還在不斷減小。XLinux核心採用了"超字元集"專利技術,讓Linux核心不僅可能與標准字元集相容,還含蓋了1 2個國家和地區的字元集。因此,XLinux在推廣Linux的國際應用方面有獨特的優勢。
5、PoketLinux
由Agenda公司採用、作為其新產品"VR3PDA"的嵌入式Linux操作系統。它可以提供跨操作系統構造統一的、標准化的和開放的信息通信基礎結構,在此結構上實現端到端方案的完整平台。PoketLinux資源框架開放,使普通的軟體結構可以為所有用戶提供一致的服務。PoketLinux平台使用戶的視線從設備、平台和網路上移開,由此引發了信息技術新時代的產生。在PoketLinux中,稱之為用戶化信息交換(CIE),也就是提供和訪問為每個用戶需求而定製的"主題"信息的能力,而不管正在使用的設備是什麼。
6、MidoriLinux
由Transmeta公司推出的MidoriLinux操作系統代碼開放,在GUN普通公共許可(GPL)下發布,可以在http://midori.transmeta.com上立即獲得。該公司有個名為"MidoriLinux計劃"。"MidoriLinux"這個名字來源於日本的"綠色"---Midori,用來反映其Linux操作系統的環保外觀。
7、紅旗嵌入式Linux
由北京中科院紅旗軟體公司推出的嵌入式Linux是國內做得較好的一款嵌入式操作系統。目前,中科院計算所自行開發的開放源碼的嵌入式操作系統---Easy Embedded OS(EEOS)也已經開始進入實用階段了。該款嵌入式操作系統重點支持p-Java。系統目標一方面是小型化,另一方面能重用Linux的驅動和其它模塊。由於有中科院計算所的強大科研力量做後盾,EEOS有望發展成為功能完善、穩定、可靠的國產嵌入式操作系統平台。
六、結束語
由於Linux是一個內核源代碼開放、具備一整套工具鏈、有強大的網路支持及成本低廉的操作系統,因此嵌入式Linux自誕生起就秉承了這眾多獨特優勢,這使它正在並越來越多地受到人們的關注。據Even Data數據顯示,期望使用嵌入式Linux的用戶從2001年的11%增到2002年27%,而同期Vxwork只是從16%到18%,Win CE從9%到14%。另外,在嵌入式Linux的各種應用市場中,通信(語音和數據)名列第一,2000年的銷售額是1300萬美元,而2005年預計將達到1.26億美元,可以預見,嵌入式Linux將在未來的通信用嵌入式操作系統中占據強有力的地位
Linux是目前十分火爆的操作系統。它是由芬蘭赫爾辛基大學的一個大學生Linus B. Torvolds在1991年首次編寫的。標志性圖標是一個可愛的小企鵝。
Linux是一種類Unix系統,Linus當時編寫它的目的是為了替代一種名叫Minix的操作系統。Minix是由一個名叫Andrew Tannebaum的計算機教授編寫的,當時由於Unix是一個商業軟體,其源代碼是不能拿來進行教學的,Andrew教授就自己編寫了一個系統用於教學。最
初的Minix用一張軟盤就能裝下,麻雀雖小、五臟俱全,Minix具有一般操作系統的特徵,它同時兼容Unix系統。
Linux是一個免費的操作系統,用戶可以免費獲得其源代碼,並能夠隨意修改。它是在共用許可證GPL(General Public License)保護下的自由軟體,也有好幾種版本,如Red Hat Linux、Slackware,以及國內的Xteam Linux等。
Linux具有許多Unix系統的功能和特點,能夠兼容Unix,但無需支付Unix高額的費用。比如一個Unix程序員在單位可以在Unix系統上進行工作,回到家裡在Linux系統上也能完成同樣的工作,而不必重新購買Unix。要知道Unix的價格比常見的Windows要高出若干倍,和Linux的低廉更是相距甚遠。
Linux的應用也十分廣泛。Sony最新的PS2游戲機就採用了Linux作為系統軟體,使PS2搖身一變,成為了一台Linux工作站。著名的電影《泰坦尼克號》的數字技術合成工作就是利用100多台Linux伺服器來完成的。
2001年8月17日,Linux發布了最新的Linux 2.4.9版,它也已經十歲了。
Linux的優點
Linux的流行是因為它具有許多誘人之處。
1、完全免費
Linux是一款免費的操作系統,用戶可以通過網路或其他途徑免費獲得,並可以任意修改其源代碼。這是其他的操作系統所做不到的。正是由於這一點,來自全世界的無數程序員參與了Linux的修改、編寫工作,程序員可以根據自己的興趣和靈感對其進行改變。這讓Linux吸收了無數程序員的精華,不斷壯大。
2、完全兼容POSIX 1.0標准
這使得可以在Linux下通過相應的模擬器運行常見的DOS、Windows的程序。這為用戶從Windows轉到Linux奠定了基礎。許多用戶在考慮使用Linux時,就想到以前在Windows下常見的程序是否能正常運行,這一點就消除了他們的疑慮。
3、多用戶、多任務
Linux支持多用戶,各個用戶對於自己的文件設備有自己特殊的權利,保證了各用戶之間互不影響。多任務則是現在電腦最主要的一個特點,Linux可以使多個程序同時並獨立地運行。
4、良好的界面
Linux同時具有字元界面和圖形界面。在字元界面用戶可以通過鍵盤輸入相應的指令來進行操作。它同時也提供了類似Windows圖形界面的X-Windows系統,用戶可以使用滑鼠對其進行操作。在X-Windows環境中就和在Windows中相似,可以說是一個Linux版的Windows。
5、豐富的網路功能
互聯網是在Unix的基礎上繁榮起來的,Linux的網路功能當然不會遜色。它的網路功能和其內核緊密相連,在這方面Linux要優於其他操作系統。在Linux中,用戶可以輕松實現網頁瀏覽、文件傳輸、遠程登陸等網路工作。並且可以作為伺服器提供WWW、FTP、E-Mail等服務。
6、可靠的安全、穩定性能
Linux採取了許多安全技術措施,其中有對讀、寫進行許可權控制、審計跟蹤、核心授權等技術,這些都為安全提供了保障。Linux由於需要應用到網路伺服器,這對穩定性也有比較高的要求,實際上Linux在這方面也十分出色。
7、支持多種平台
Linux可以運行在多種硬體平台上,如具有x86、680x0、SPARC、Alpha等處理器的平台。此外Linux還是一種嵌入式操作系統,可以運行在掌上電腦、機頂盒或游戲機上。2001年1月份發布的Linux 2.4版內核已經能夠完全支持Intel 64位晶元架構。同時Linux也支持多處理器技術。多個處理器同時工作,使系統性能大大提高。
Linux的不足
由於在現在的個人電腦操作系統行業中,微軟的Windows系統仍然佔有大部分的份額,絕大多數的軟體公司都支持Windows。這使得Windows上的應用軟體應有盡有,而其他的操作系統就要少一些。許多用戶在換操作系統的時候都會考慮以前的軟體能否繼續使用,換了操作系統後是否會不方便。雖然Linux具有DOS、Windows模擬器,可以運行一些Windows程序,但Windows系統極其復雜,模擬器所模擬的運行環境不可能完全與真實的Windows環境一模一樣,這就使得一些軟體無法正常運行。
許多硬體設備面對Linux的驅動程序也不足,不少硬體廠商是在推出Windows版本的驅動程序後才編寫Linux版的。但一些大硬體廠商在這方面做得還不錯,他們的Linux版驅動程序一般都推出得比較及時。
軟體支持的不足是Linux最大的缺憾,但隨著Linux的發展,越來越多的軟體廠商會支持Linux,它應用的范圍也越來越廣。這只小企鵝的前景是十分光明的。
J. 系統學習嵌入式的步驟是什麼
新手必讀「嵌入式系統學習11大步驟」
1、Linux 基礎
安裝Linux操作系統 Linux文件系統 Linux常用命令 Linux啟動過程詳解 熟悉Linux服務能夠獨立安裝Linux操作系統 能夠熟練使用Linux系統的基本命令 認識Linux系統的常用服務安裝Linux操作系統 Linux基本命令實踐 設置Linux環境變數 定製Linux的服務 Shell 編程基礎使用vi編輯文件 使用Emacs編輯文件 使用其他編輯器
2、Shell 編程基礎
Shell簡介 認識後台程序Bash編程熟悉Linux系統下的編輯環境 熟悉Linux下的各種Shell 熟練進行shell編程熟悉vi基本操作 熟悉Emacs的基本操作 比較不同shell的區別 編寫一個測試伺服器是否連通的shell腳本程序 編寫一個查看進程是否存在的shell腳本程序 編寫一個帶有循環語句的shell腳本程序 (更多相關內容請關註:東方賽富——國內一流嵌入式培訓學院)
3、Linux 下的 C 編程基礎
linux C語言環境概述 Gcc使用方法 Gdb調試技術 Autoconf Automake Makefile 代碼優化 熟悉Linux系統下的開發環境 熟悉Gcc編譯器 熟悉Makefile規則編寫Hello,World程序 使用 make命令編譯程序 編寫帶有一個循環的程序 調試一個有問題的程序
4、嵌入式系統開發基礎
嵌入式系統概述 交叉編譯 配置TFTP服務 配置NFS服務 下載Bootloader和內核 嵌入式Linux應用軟體開發流程熟悉嵌入式系統概念以及開發流程 建立嵌入式系統開發環境製作cross_gcc工具鏈 編譯並下載U-boot 編譯並下載Linux內核 編譯並下載Linux應用程序
4、嵌入式系統移植
Linux內核代碼 平台相關代碼分析 ARM平台介紹 平台移植的關鍵技術 移植Linux內核到 ARM平台 了解移植的概念 能夠移植Linux內核移植Linux2.6內核到 ARM9開發板
5、嵌入式 Linux 下串口通信
串列I/O的基本概念 嵌入式Linux應用軟體開發流程 Linux系統的文件和設備 與文件相關的系統調用 配置超級終端和MiniCOM 能夠熟悉進行串口通信 熟悉文件I/O 編寫串口通信程序 編寫多串口通信程序(更多相關內容請關註:東方賽富——國內一流嵌入式培訓學院)
6、嵌入式系統中多進程程序設計
Linux系統進程概述 嵌入式系統的進程特點 進程操作 守護進程 相關的系統調用了解Linux系統中進程的概念 能夠編寫多進程程序編寫多進程程序 編寫一個守護進程程序 sleep系統調用任務管理、同步與通信 Linux任務概述任務調度 管道 信號 共享內存 任務管理 API 了解Linux系統任務管理機制 熟悉進程間通信的幾種方式 熟悉嵌入式Linux中的任務間同步與通信編寫一個簡單的管道程序實現文件傳輸 編寫一個使用共享內存的程序
7、嵌入式系統中多線程程序設計
線程的基礎知識 多線程編程方法 線程應用中的同步問題了解線程的概念 能夠編寫簡單的多線程程序編寫一個多線程程序
8、嵌入式 Linux 網路編程
網路基礎知識 嵌入式Linux中TCP/IP網路結構 socket 編程 常用 API函數 分析Ping命令的實現 基本UDP套介面編程 許可證管理 PPP協議 GPRS 了解嵌入式Linux網路體系結構 能夠進行嵌入式Linux環境下的socket 編程 熟悉UDP協議、PPP協議 熟悉GPRS 使用socket 編寫代理伺服器 使用socket 編寫路由器 編寫許可證伺服器 指出TCP和UDP的優缺點 編寫一個web伺服器 編寫一個運行在 ARM平台的網路播放器
9、GUI 程序開發
GUI基礎 嵌入式系統GUI類型 編譯QT 進行QT開發熟悉嵌入式系統常用的GUI 能夠進行QT編程使用QT編寫「Hello,World」程序 調試一個加入信號/槽的實例 通過重載QWidget 類方法處理事件(更多相關內容請關註:東方賽富——國內一流嵌入式培訓學院)
10、Linux 字元設備驅動程序
設備驅動程序基礎知識 Linux系統的模塊 字元設備驅動分析 fs_operation結構 載入驅動程序了解設備驅動程序的概念 了解Linux字元設備驅動程序結構 能夠編寫字元設備驅動程序編寫Skull驅動 編寫鍵盤驅動 編寫I/O驅動 分析一個看門狗驅動程序 對比Linux2.6內核與2.4內核中字元設備驅動的不同Linux 塊設備驅動程序塊設備驅動程序工作原理 典型的塊設備驅動程序分析 塊設備的讀寫請求隊列了解Linux塊設備驅動程序結構 能夠編寫簡單的塊設備驅動程序比較字元設備與塊設備的異同 編寫MMC卡驅動程序 分析一個文件系統 對比Linux2.6內核與2.4內核中塊設備驅動的不同
11、文件系統
虛擬文件系統 文件系統的建立 ramfs內存文件系統 proc文件系統 devfs 文件系統 MTD技術簡介 MTD塊設備初始化 MTD塊設備的讀寫操作了解Linux系統的文件系統 了解嵌入式Linux的文件系統 了解MTD技術 能夠編寫簡單的文件系統為 ARM9開發板添加 MTD支持 移植JFFS2文件系統 通過proc文件系統修改操作系統參數 分析romfs 文件系統源代碼 創建一個cramfs 文件系統 (更多相關內容請關註:東方賽富——國內一流嵌入式培訓學院)