久久久久久久麻豆,中日韩av在线,麻豆av在线免费,中文字幕二区三区,欧美日韩视频一区二区,亚洲欧美日韩在线一区,国产无毒不卡

嵌入式Linux系統(tǒng)及其應(yīng)用前景


嵌入式Linux系統(tǒng)及其應(yīng)用前景

摘要:主要分析嵌入式Linux系統(tǒng)應(yīng)用開發(fā)的特點;概述其開發(fā)過程和所面臨的挑戰(zhàn);闡述嵌入式Linux的發(fā)展和應(yīng)用前景。

   關(guān)鍵詞:嵌入式Linux 操作系統(tǒng) 應(yīng)用前景

引 言

  近年來,隨著計算技術(shù)、通信技術(shù)的飛速發(fā)展,特別是互聯(lián)網(wǎng)的迅速普及和3C(計算機(jī)、通信、消費電子)合一的加速,微型化和專業(yè)化成為發(fā)展的新趨勢,嵌入式產(chǎn)品成為信息產(chǎn)業(yè)的主流。Linux從1991年問世到現(xiàn)在,短短的十幾年時間已經(jīng)發(fā)展成為功能強大、設(shè)計完善的操作系統(tǒng)之一;可運行在X86、Alpha、Sparc、MIPS、PPC、Motorola、NEC、ARM等多種硬件平臺,而且開放源代碼,可以定制;可與各種傳統(tǒng)的商業(yè)操作系統(tǒng)分庭抗?fàn)帯T絹碓蕉嗟钠髽I(yè)和研發(fā)機(jī)構(gòu)都轉(zhuǎn)向嵌入式Linux的開發(fā)和研究上,在新興的嵌入式操作系統(tǒng)領(lǐng)域內(nèi)也獲得了飛速發(fā)展。

1 嵌入式Linux的特點

  嵌入式系統(tǒng)是以應(yīng)用為中心,以計算機(jī)為基礎(chǔ),軟硬件可裁剪,適用于系統(tǒng)對功能、可靠性、成本、功耗嚴(yán)格要求的專用計算機(jī)系統(tǒng),系統(tǒng)結(jié)構(gòu)見圖1。實時性是嵌入式系統(tǒng)的基本要求,其次,還要求代碼小,速度快,可靠性高。嵌入式Linux(Embedded Linux)是指對Linux經(jīng)過裁剪小型化后,可固化在存儲器或單片機(jī)中,應(yīng)用于特定嵌入式場合的專用Linux操作系統(tǒng)。嵌入式Linux的開發(fā)和研究已經(jīng)成為目前操作系統(tǒng)領(lǐng)域的一個熱點。與其它嵌入式操作系統(tǒng)相比(詳見表1),Linux的特點如下。

表1 專用嵌入式實時操作系統(tǒng)與嵌入式Linux的比較

 專用嵌入式實時操作系統(tǒng)嵌入式Linux操作系統(tǒng)
版權(quán)費每生產(chǎn)一件產(chǎn)品需交納一份版權(quán)費免費
購買費用數(shù)十萬元(RMB)免費
技術(shù)支持由開發(fā)商獨家提供有限的技術(shù)支持全世界的自由軟件開發(fā)者提供支持
網(wǎng)絡(luò)特性另加數(shù)十萬元(RMB)購買免費且性能優(yōu)異
軟件移值難(因為是封閉系統(tǒng))易,代碼開放(有許多應(yīng)用軟件支持)
應(yīng)用產(chǎn)品開發(fā)周期長,因為可參考的代碼有限短,新產(chǎn)品上市迅速,因為有許多公開的代碼可以參考和移植
實時性能須改進(jìn),可用PT_Linux等模塊彌補
穩(wěn)定性較好較好,但在高性能系統(tǒng)中須改進(jìn)

  第一,Linux系統(tǒng)是層次結(jié)構(gòu)且內(nèi)核完全開放。Linux是由很多體積小且性能高的微內(nèi)核系統(tǒng)組成。在內(nèi)核代碼完全開放的前提下,不同領(lǐng)域和不同層次的用戶可以根據(jù)自己的應(yīng)用需要方便地對內(nèi)核進(jìn)行改造,低成本地設(shè)計和開發(fā)出滿足自己需要的嵌入式系統(tǒng)。

  第二,強大的網(wǎng)絡(luò)支持功能。Linux誕生于因特網(wǎng)時代并具有Unix的特性,保證了它支持所有標(biāo)準(zhǔn)因特網(wǎng)協(xié)議,并且可以利用Linux的網(wǎng)絡(luò)協(xié)議棧將其開發(fā)成為嵌入式的TCP/IP網(wǎng)絡(luò)協(xié)議棧。 此外,Linux還支持ext2、fat16、fat32、romfs等文件系統(tǒng),為開發(fā)嵌入式系統(tǒng)應(yīng)用打下了很好的基礎(chǔ)。

  第三,Linux具備一整套工具鏈,容易自行建立嵌入式系統(tǒng)的開發(fā)環(huán)境和交叉運行環(huán)境,可以跨越嵌入式系統(tǒng)開發(fā)中仿真工具的障礙。Linux也符合IEEE POSIX.1標(biāo)準(zhǔn),使應(yīng)用程序具有較好的可移植性。

  傳統(tǒng)的嵌入式開發(fā)的程序調(diào)試和調(diào)試工具是用在線仿真器(ICE)實現(xiàn)的。它通過取代目標(biāo)板的微處理器,給目標(biāo)程序提供一個完整的仿真環(huán)境,完成監(jiān)視和調(diào)試程序;但一般價格比較昂貴,只適合做非常底層的調(diào)試。使用嵌入式Linux,一旦軟硬件能夠支持正常的串口功能,即使不用仿真器,也可以很好地進(jìn)行開發(fā)和調(diào)試工作,從而節(jié)省一筆不小的開發(fā)費用。嵌入式Linux為開發(fā)者提供了一套完整的工具鏈(tool chain)。它利用GNU的gcc做編譯器,用gdb、kgdb、xgdb做調(diào)試工具,能夠很方便地實現(xiàn)從操作系統(tǒng)到應(yīng)用軟件各個級別的調(diào)試。

  第四,Linux具有廣泛的硬件支持特性。無論是RISC還是CISC、32位還是64位等各種處理器,Linux都能運行。Linux通常使用的微處理器是Intel X86芯片家族,但它同樣能運行于Motorola公司的68K系列CPU和IBM、Apple、Motorola公司的PowerPC CPU以及Intel公司的StrongARM CPU等處理器。Linux支持各種主流硬件設(shè)備和最新硬件技術(shù),甚至可以在沒有存儲管理單元(MMU)的處理器上運行。這意味著嵌入式Linux將具有更廣泛的應(yīng)用前景。

2 Linux嵌入式系統(tǒng)開發(fā)平臺

    2.1 系統(tǒng)軟件操作平臺

  操作系統(tǒng)是一種在計算機(jī)上運行的軟件。它的主要任務(wù)是管理計算機(jī)上的系統(tǒng)資源,為用戶提供使用計算機(jī)及其外部設(shè)備的接口。它存在的目的是為了管理所有硬件資源,并且提供應(yīng)用軟件一個合適的操作環(huán)境。嵌入式系統(tǒng)由于硬件的限制,通常只具有極稀少的硬件資源,如主頻較低的CPU、較小的內(nèi)存、小容量的固態(tài)電子盤芯片DoC(Disk on Chip)或DoM(Disk on Module)替代磁盤等。在使用電池的系統(tǒng)中,它還要實現(xiàn)低功耗,延長電池使用時間的功能。

  Linux作為嵌入式操作系統(tǒng)是完全可行的。因為Linux提供了完成嵌入功能的基本內(nèi)核和所需要的所有用戶界面,能處理嵌入式任務(wù)和用戶界面。將Linux看作是連續(xù)的統(tǒng)一體,從一個具有內(nèi)存管理、任務(wù)切換和時間服務(wù)及其它分拆的微內(nèi)核到完整的服務(wù)器,支持所有的文件系統(tǒng)和網(wǎng)絡(luò)服務(wù)。Linux作為嵌入式系統(tǒng),是一個帶有很多優(yōu)勢的新成員。它對許多CPU和硬件平臺都是易移植、穩(wěn)定、功能強大、易于開發(fā)的。

  嵌入式Linux系統(tǒng)需要下面三個基本元素:系統(tǒng)引導(dǎo)工具(用于機(jī)器加電后的系統(tǒng)定位引導(dǎo))、Linux微內(nèi)核(內(nèi)存管理、 程序管理)、初始化進(jìn)程。但如果要它成為完整的操作系統(tǒng)并且繼續(xù)保持小型化,還必須加上硬件驅(qū)動程序、硬件接口程序和應(yīng)用程序組。

  Linux是基于GNU的C編譯器,作為GNU工具鏈的一部分,與gdb源調(diào)試器一起工作的。它提供了開發(fā)嵌入式Linux系統(tǒng)的所有軟件工具。

    2.2 系統(tǒng)硬件平臺

  在選擇硬件時,常由于缺乏完整或精確的信息而使硬件選擇成為復(fù)雜且困難的工作。硬件開發(fā)成本常是我們很關(guān)心的。當(dāng)考慮硬件成本時,須要考慮產(chǎn)品的整個成本而不僅是CPU的成本。因為合適的CPU,一旦加上總線邏輯和延時電路使之與外設(shè)一起工作,硬件系統(tǒng)就可能變得非常昂貴。如果要尋找嵌入式軟件系統(tǒng),那么,應(yīng)首先確定硬件平臺,即確定微處理器CPU的型號。

  現(xiàn)在比較流行的硬件平臺有Intel公司的StrongARM 系列,Motorola公司的DragonBall系列,NEC公司的VR系列,Hitachi公司的SH3、SH4系列等等。選定硬件平臺前,首先要確定系統(tǒng)的應(yīng)用功能和所需要的速度,并制定好外接設(shè)備和接口標(biāo)準(zhǔn)。這樣才能準(zhǔn)確地定位所需要的硬件方案,得到性價比最高的系統(tǒng)。

3 嵌入式Linux系統(tǒng)開發(fā)模式

  嵌入式系統(tǒng)通常為一個資源受限的系統(tǒng)。直接在嵌入式系統(tǒng)的硬件平臺上編寫軟件比較困難,有時甚至是不可能的。一般流程見圖2。目前,一般采用的辦法是,先在通用計算機(jī)上編寫程序,然后,通過交叉編譯,生成目標(biāo)平臺上可運行的二進(jìn)制代碼格式,最后下載到目標(biāo)平臺上的特定位置上運行,具體步驟如下。           

  第一步,建立嵌入式Linux交叉開發(fā)環(huán)境。目前,常用的交叉開發(fā)環(huán)境主要有開放和商業(yè)兩種類型。開放的交叉開發(fā)環(huán)境的典型代表是GNU工具鏈,目前已經(jīng)能夠支持x86、ARM、MIPS、PowerPC等多種處理器。商業(yè)的交叉開發(fā)環(huán)境主要有Metrowerks CodeWarrior、ARM Software Development Toolkit、SDS Cross compiler、WindRiver Tornado、Microsoft Embedded Visual C++等。交叉開發(fā)環(huán)境是指編譯、鏈接和調(diào)試嵌入式應(yīng)用軟件的環(huán)境。它與運行嵌入式應(yīng)用軟件的環(huán)境有所不同,通常采用宿主機(jī)/目標(biāo)機(jī)模式,見圖3。

  第二步,交叉編譯和鏈接。在完成嵌入式軟件的編碼之后,就是進(jìn)行編譯和鏈接,以生成可執(zhí)行代碼。由于開發(fā)過程大多是在Intel公司x86系列CPU的通用計算機(jī)上進(jìn)行的,而目標(biāo)環(huán)境的處理器芯片卻大多為ARM、MIPS、PowerPC、DragonBall等系列的微處理器,這就要求在建立好的交叉開發(fā)環(huán)境中進(jìn)行交叉編譯和鏈接。

  例如,在基于ARM體系結(jié)構(gòu)的gcc交叉開發(fā)環(huán)境中,arm-linux-gcc是交叉編譯器,arm-linux-ld是交叉鏈接器。通常情況下,并不是每一種體系結(jié)構(gòu)的嵌入式微處理器都只對應(yīng)于一種交叉編譯器和交叉鏈接器。如對于M68K體系結(jié)構(gòu)的gcc交叉開發(fā)環(huán)境而言,就對應(yīng)于多種不同的編譯器和鏈接器。如果使用的是COFF格式的可執(zhí)行文件,那么在編譯Linux內(nèi)核時,需要使用m68k-coff-gcc和m68k-coff-ld,而在編譯應(yīng)用程序時則需要使用m68k-coff-pic-gcc和m68k-coff-pic-ld。編寫好的嵌入式軟件經(jīng)過交叉編譯和交叉鏈接后,通常會生成兩種類型的可執(zhí)行文件:用于調(diào)試的可執(zhí)行文件和用于固化的可執(zhí)行文件。

  第三步,交叉調(diào)試。

 ?、?硬件調(diào)試。如果不采用在線仿真器,可以讓CPU直接在其內(nèi)部實現(xiàn)調(diào)試功能,并通過在開發(fā)板上引出的調(diào)試端口,發(fā)送調(diào)試命令和接收調(diào)試信息,完成調(diào)試過程。目前,Motorola公司提供的開發(fā)板上使用的是DBM調(diào)試端口,而ARM公司提供的開發(fā)板上使用的則是JTAG調(diào)試端口。使用合適的軟件工具與這些調(diào)試端口進(jìn)行連接,可以獲得與ICE類似的調(diào)試效果。

  ② 軟件調(diào)試。在嵌入式Linux系統(tǒng)中,Linux系統(tǒng)內(nèi)核調(diào)試,可以先在Linux內(nèi)核中設(shè)置一個調(diào)試樁(debug stub),用作調(diào)試過程中和宿主機(jī)之間的通信服務(wù)器。然后,可以在宿主機(jī)中通過調(diào)試器的串口與調(diào)試樁進(jìn)行通信,并通過調(diào)試器控制目標(biāo)機(jī)上Linux內(nèi)核的運行。

  嵌入式上層應(yīng)用軟件的調(diào)試可以使用本地調(diào)試和遠(yuǎn)程調(diào)試兩種方法。如果采用的是本地調(diào)試,首先要將所需的調(diào)試器移植到目標(biāo)系統(tǒng)中,然后就可以直接在目標(biāo)機(jī)上運行調(diào)試器來調(diào)試應(yīng)用程序了;如果采用的是遠(yuǎn)程調(diào)試,則需要移植一個調(diào)試服務(wù)器到目標(biāo)系統(tǒng)中,并通過它與宿主機(jī)上的調(diào)試器共同完成應(yīng)用程序的調(diào)試。在嵌入式Linux系統(tǒng)的開發(fā)中,遠(yuǎn)程調(diào)試時目標(biāo)機(jī)上使用的調(diào)試服務(wù)器通常是gdbserver,而宿主機(jī)上使用的調(diào)試器則是gdb。兩者相互配合共同完成調(diào)試過程。

  第四步,系統(tǒng)測試。整個軟件系統(tǒng)編譯過程,嵌入式系統(tǒng)的硬件一般采用專門的測試儀器進(jìn)行測試,而軟件則需要有相關(guān)的測試技術(shù)和測試工具的支持,并要采用特定的測試策略。測試技術(shù)指的是軟件測試的專門途徑,以及能夠更加有效地運用這些途徑的特定方法。在嵌入式軟件測試中,常常要在基于目標(biāo)機(jī)的測試和基于宿主機(jī)的測試之間做出折衷。基于目標(biāo)機(jī)的測試需要消耗較多的時間和經(jīng)費,而基于宿主機(jī)的測試雖然代價較小,但畢竟是在仿真環(huán)境中進(jìn)行的,因此難以完全反映軟件運行時的實際情況。這兩種環(huán)境下的測試可以發(fā)現(xiàn)不同的軟件缺陷,關(guān)鍵是要對目標(biāo)機(jī)環(huán)境和宿主機(jī)環(huán)境下的測試內(nèi)容進(jìn)行合理取舍。嵌入式軟件測試中經(jīng)常用到的測試工具主要有:內(nèi)存分析工具、性能分析工具、覆蓋分析工具、缺陷跟蹤工具等,在這里不加詳述。嵌入式Linux系統(tǒng)的典型構(gòu)成見圖4。

以下即為一個典型開發(fā)工具的使用流程:

① 寫入或植入引導(dǎo)碼;

② 向串口打印字符串的編碼;

③ 將gdb目標(biāo)碼移植工作串口,可與另一臺運行g(shù)db程序的Linux主機(jī)系統(tǒng)對話;

④ 利用gdb讓硬件和軟件初始化碼在Linux內(nèi)核啟動時工作;

⑤ Linux內(nèi)核啟動,串口成為Linux控制口并可用于后續(xù)開發(fā);

⑥ 如果在目標(biāo)硬件上已運行了完整的Linux內(nèi)核,即可調(diào)試用戶的應(yīng)用進(jìn)程。

4 嵌入式Linux面臨的挑戰(zhàn)

  目前,對嵌入式Linux系統(tǒng)的開發(fā)正在蓬勃興起,并已形成了很大的市場。除了一些傳統(tǒng)的Linux公司,像RedHat、VA Linux等,正在從事嵌入式Linux的研究之外,一批新公司(如Lineo、TimeSys等)和一些傳統(tǒng)的大公司(如IBM、SGI、Motoro

COPYRIGHT(C) 2011 廈門永宏亞得機(jī)電科技有限公司版權(quán)所有(閩ICP備05025945號) ALL RIGHTS RESERVED?

電話: 0592-5190891 傳真: 0592-5190720 E-Mail: E-mail:yade8895@163.com
地址: 廈門市海滄區(qū)興港六里17號2607室 郵編:361009 聯(lián)系人:翟先生