㈠ 嵌入式設備的嵌入式設備上的linux系統開發
Linux正在嵌入式開發領域穩步發展。因為Linux使用GPL(請參閱本文後面的參考資料),所以任何對將Linux定製於PDA、掌上機或者可佩帶設備感興趣的人都可以從網際網路免費下載其內核和應用程序,並開始移植或開發。許多Linux改良品種迎合了嵌入式/實時市場。它們包括RTLinux(實時Linux)、uclinux(用於非MMU設備的Linux)、MontavistaLinux(用於ARM、MIPS、PPC的Linux分發版)、ARM-Linux(ARM上的Linux)和其它Linux系統
嵌入式Linux開發大致涉及三個層次:引導裝載程序、Linux內核和圖形用戶界配鎮鉛面(或稱GUI)。引導裝載程序通常是在任何硬體上執行的第一段代碼。在象台式機這樣的常規系統中,通常將引導裝載程序裝入主引導記錄(MasterBootRecord,(MBR))中,或者裝入Linux駐留的磁碟的第一個扇區中。通常,在台式機或其它系統上,BIOS將控制移交給引導裝載程序。
專用軟體可以直接與遠程系統上的快閃記憶體設備進行交互並將引導裝載程序安裝在快閃記憶體的給定位置中。快閃記憶體設備是與存儲設備功能類似的特殊晶元,而且它們能持久存儲信息—即,在重新引導時不會擦除其內容。旅腔
某些種類的嵌入式設備具有微小的引導代碼—根據幾個位元組的指令—它將初始化一些DRAM設置並啟用目標上的一個串列(或者USB,或者乙太網)埠與主機程序通信。然後,主機程序或裝入程序可以使用這個連接將引導裝載程序傳送到目標上,並將它寫入快閃記憶體。設置工具鏈在主機機器上創建一個用於編譯將在目標上運行的內核和應用程序的構建環境—這是因為目標硬體可能沒有與主機兼容的二進制執行級別。
工具鏈由一套用於編譯、匯編和鏈接內核及應用程序的組件組成。這些組件包括:Binutils—用於操作二進制文件的實用程序集合。它們包括諸如ar、as、objmp、obj這樣的實用程序。G—GNUC編譯器。Glibc—所有用戶應用程序都將鏈接到的C庫。避免使用任何C庫函數的內核和其它應用程序可以在沒有該培好庫的情況下進行編譯。構建工具鏈建立了一個交叉編譯器環境。本地編譯器編譯與本機同類的處理器的指令。交叉編譯器運行在某一種處理器上,卻可以編譯另一種處理器的指令。重頭設置交叉編譯器工具鏈可不是一項簡單的任務:它包括下載源代碼、修補補丁、配置、編譯、設置頭文件、安裝以及很多很多的操作。另外,這樣一個徹底的構建過程對內存和硬碟的需求是巨大的。如果沒有足夠的內存和硬碟空間,那麼在構建階段由於相關性、配置或頭文件設置等問題會突然冒出許多問題。
因此能夠從網際網路上獲得已預編譯的二進制文件是一件好事(但不太好的一點是,它們大多數只限於基於ARM的系統,但遲早會改變的)。一些比較流行的已預編譯的工具鏈包括那些來自Compaq(FamiliarLinux)、LART(LARTLinux)和Embedian(基於Debian但與它無關)的工具鏈—所有這些工具鏈都用於基於ARM的平台。從用戶的觀點來看,圖形用戶界面(GUI)是系統的一個最至關重要的方面:用戶通過GUI與系統進行交互。所以GUI應該易於使用並且非常可靠。但它還需要是有內存意識的,以便在內存受限的、微型嵌入式設備上可以無縫執行。所以,它應該是輕量級的,並且能夠快速裝入。
另一個要考慮的重要方面涉及許可證問題。一些GUI分發版具有允許免費使用的許可證,甚至在一些商業產品中也是如此。另一些許可證要求如果想將GUI合並入項目中則要支付版稅。
最後,大多數開發人員可能會選擇XFree86,因為XFree86為他們提供了一個能使用他們喜歡的工具的熟悉環境。但是市場上較新的GUI,象CenturySoftware的(Nano-X)和TrolltechQT/Embedded,與X在嵌入式Linux的競技舞台中展開了激烈競爭,這主要是因為它們佔用很少的資源、執行的速度很快並且具有定製窗口構件的支持。
㈡ 作為一個新人,怎樣學習嵌入式Linux
先學會基本操作
Linux學習要點(轉載自紅聯)
一、學習Linux的基本要求
1. 掌握至少50個以上的常用命令。
2. 熟悉Gnome/KDE等X-windows桌面環境操作 。
3. 掌握.tgz、.rpm等軟體包的常雹山用安裝方法
4. 學習添加外設,安裝設卜笑備驅動程序(比如網卡)
5. 熟悉Grub/Lilo引導器及簡單的修復操作 。
6. 熟悉Linux文件系統 和目錄結構。
7. 掌握vi,gcc,gdb等常用編輯器,編譯器,調試器 。
8. 理解shell別名、管道、I/O重定向、輸入和輸出以及shell腳本編程。
9. 學習Linux環境下的組網。
二、Linux常用命令
安裝和登錄命令:login、 shutdown、 halt、 reboot 、mount、umount 、chsh
文件處理命令:file、 mkdir、 grep、dd、 find、 mv 、ls 、diff、 cat、 ln
系統管理相關命令: df、 top、 free、 quota 、at、 lp、 adser、 groupadd kill、 crontab、 tar、 unzip、 gunzip 、last
網路操作命令:ifconfig、 ip 、ping 、 netstat 、telnet、 ftp、 route、 rlogin rcp 、finger 、mail 、nslookup
系統安全相關命令: passwd 、su、 umask 、chgrp、 chmod、chown、chattr、sudo、 pswho
三、Linux下常用軟體
[媒體播放]
1)divx影片:mplayer
2)rm影片:realplayer10 for linux, mplayer
3)mp3: xmms,beep media player, mplayer
4)ape: xmms+monkey's audio plugin(http://supermmx.org/linux/mac/)
5)其他格式(wma, wmv, mkv, quicktime): mplayer 各種格式的文檔和文件
[文件瀏覽]
1)打開微軟的office文檔: openoffice, starsuite
2)查看pdf文件:acroread for linux, kpdf, xpdf, ggv
3)查看ps文件: gsview, ggv, kghostview
4)chm文件: archmage,chmsee, Xchm,chmviewer
5)mht文件: ripmime,firefox+MAF插件
6)圖表繪制: dia (等同於visio)
7).bin虛擬光碟: 用bin2iso或bchunk轉成iso後mount
8)壓縮文件
.rar: rar for linux或unrar
.zip: unzip
.bz2: bunzip2
.tar/.tgz: tar
[中文輸入法]
1)scim
2)fcitx
[網路軟體]
1) QQ: lumaqq, Gaim+openq plugin
2) MSN,icq,yahoo: Gaim
3) web瀏覽器:mozilla-firefox, mozilla, opera
4) ftp客戶端(圖形界面) :gftp, Iglooftp
5) ftp客戶端(終端) :源弊中 lftp, ncftp
6) ftp伺服器: pureftpd, proftpd, vsftpd
7) http下載(終端): wget, curl, prozilla
8) bt下載: bittorrent(終端), azureus(圖形界面)
9) email軟體(圖形界面):KMail, thunderbird, sylpheed, evolution, opera M2
10) email終端: mutt, pine, gnus
11) RSS:liferea, aKregator
12) BBS:qterm, {rxvt,xterm,gnome-terminal,...}+BBSbot
[編輯器]
1) 文本: vim, emacs, jedit
2) 16進制: hexedit, ghex, mc
3) 圖片瀏覽: gImageView, gqview
4) 圖片處理: gimp, ImageMagick
5) 音頻處理: audacity
[常用工具]
1)英漢字典: stardict(屏幕取詞,詞庫大,英漢,漢英, 英英)
ibmdict(包含科技詞典,詞庫大,英漢,漢英)
dictd:英漢 漢英 可以使用stardict的全部詞庫
cdict:英漢 漢英 使用安裝方便,彩色顯示.
2)科學計算:matlab, octave
3)科學作圖:gnuplot, metapost
[虛擬機]
1) win下虛擬linux: cygwin, virtual-pc, colinux
2) linux下虛擬win: win4lin
3) 跨平台: vmware, bochs
4) linux下運行windows程序: wine, winex, crossover office
5) console下的中文環境: zhcon, cce