【文章內容簡介】
些功能,如內置聯(lián)網支持以及圖形等,可以在新項目開發(fā)中節(jié)省很多編碼與整合時間。 隨著大批新一代高速、低成本32b處理器和 Linux 的搶先改進,開發(fā)人員發(fā)現(xiàn)嵌入系統(tǒng)的實時需求已不再是一個負擔。盡管數據速率提高了,但用戶 I/O 的時序仍保持相對穩(wěn)定,程序員在處理今天高速處理器的 I/O 請求時有更多可用的時鐘周期。Linux 并非要提供決定性的性能,而是用于以前需要實時操作系統(tǒng)的一些應用上?! 〉烷_銷 Linux 是模塊化的,開發(fā)者可以構建一個經修改的小型軟件包,裝入每臺設備的內存中,從而消除了專用的多用途操作系統(tǒng)中的代碼開銷。Linux 還支持大量的微處理器,使之最適合于變化多端的消費產品市場。由于設計師可以將 Linux 移植到最常見的嵌入式處理器上,不存在迫使開發(fā)者改變硬件決策的軟件限制。設計師可以用一個低成本的微處理器開始生產,它只需滿足當前的需求,而隨著設備需求和功能的擴展,又能夠方便地升級為一個功能更強大的 CPU?! inux 開發(fā)人員會定期對內核進行更新,使之包含來自用戶社團的插入碼和建議內容??梢詮? 找到最新內核的相關信息,下載最新版本?,F(xiàn)在的 版包括很多搶先點,允許調度器可以掛起一個工作任務,而起動一個更高的優(yōu)先級進程。進程調度算法經過重寫,加快了多任務應用中作業(yè)的切換速度。除了實時方面的改進外, 版還有多個有益于消費設備應用程序的更新。例如,藍牙和 USB 等增強外設選項,ALSA(高級 Linux 聲音架構)可以使應用程序處理多個音頻流,而 Video4Linux 則增加了一個視頻子系統(tǒng)。用于深度嵌入系統(tǒng)的其它更新內容也只占很少空間,適用于容量有限的應用?! inux 的許可協(xié)議對消費設備開發(fā)者來說有正、反兩方面的意義。從好的一面說,你可以下載免費的 Linux 拷貝,在自己的產品中使用,無需支付專利金,想用多少就可以用多少。Linux 是按照 GNU 的 GPL(通用公共許可)使用規(guī)則發(fā)放許可。如果你修改并重新分發(fā) GPL 軟件,你的修改也自動遵從 GPL,并且必須公開源碼。應用程序和設備驅動可能會保持專有性,只要它們與 Linux 內核無關,不含 GPL 代碼。但代碼隔離的要求是小型消費設備開發(fā)者所擔心的事,因為他們會將所有軟件保存在一個 ROM里。 除了許可的不確定性外,Linux 用戶還面臨其它非技術性因素。例如,SCO(Santa Cruz Operation) 集團提出法律質疑,稱 Linux 包含殘余的專有 Unix 代碼,并強制對內核作修改,甚至要求獲得專利金。在2005年 12 月,SCO 集團提出擴展對 Novell 的訴訟,它是 UNIX 知識產權原來的所有者,也是現(xiàn)在的一個 Linux 開發(fā)商。最新的消息和 SCO糾紛的全部歷史可以瀏覽Linux 在線網站?! 群搜a碼 開發(fā)者在開放源 Linux 環(huán)境中預見到的另一個可能的危險是軟件破碎的可能性。如果公司 A 決定修改 Linux 內核來解決自己產品中的一個集成問題,而公司 B 作了類似但不兼容的修改,于是現(xiàn)在就有了三個 Linux 版本。當下一個正式 Linux 更新版推出時,兩家公司都要搜索修正后的代碼,重新納入這些改動內容,或者繼續(xù)使用舊版本。最聰明的選擇恐怕是不修改內核,而使用為調試用的源代碼,或者了解 Linux 的內部功能。現(xiàn)在,Linux 社團利用復雜系統(tǒng)的升級建議與發(fā)布,已經成功地防止了多版本的出現(xiàn)?! ‰m然 Linux 是一個免費的操作系統(tǒng),但很多設計師仍希望付費獲得專業(yè)支持、特殊工具、定制服務以及預包裝好的配置,以方便開發(fā)過程。商業(yè)化供應商用定制的嵌入式配置、訂戶支持包、開發(fā)工具套件、應用實例,以及咨詢服務,作為 Linux 的增強服務。但與限制用戶使用單一來源的商業(yè)化專有操作系統(tǒng)不同,Linux 用戶仍然享有從任何其他供應商處獲得支持的自由?! 】吹?Linux 在 CE 產品中日益普遍的應用,某些商用 RTOS(實時操作系統(tǒng))供應商也加入了開放源運動,提供定制分銷、開發(fā)工具,支持并向嚴格的實時應用推廣自己的專有軟件。例如,Wind River 產品系列經理 Glenn Seiler 這樣總結公司的策略:“市場希望有個選擇。在有些情況下,市場想要 RTOS,因為有嚴格的實時要求或占位面積小的要求,有些客戶仍然反感 GPL 概念。其他一些進行了大量既有投資的用戶也想繼續(xù)使用 RTOS?!薄 eiler 也描述了其他一些客戶,他們希望得到快速創(chuàng)新的好處、無專利金的模式,他們希望控制源碼,希望保持與供應商的無關性,也不怕 GPL 的麻煩。他說,這些客戶的態(tài)度更偏向 Linux。他解釋說:“我們希望提供一種既能滿足 RTOS 客戶,也能滿足 Linux 客戶的解決方案。我們的方案采用了一種基于 Workbench 工具套件的策略,它是一個萬能的生命周期產品,覆蓋從電路板設計到固件開發(fā),直到內核電路板支持開發(fā)、應用程序開發(fā)和調試等全部內容。”Wind River 的 Workbench 套件是建立在開放源的 Eclipse 集成開發(fā)環(huán)境上的(圖 1)。 同樣,MontaVista 軟件公司提供 Linux CEE(消費電子版),這是一個用于 CE 設備的嵌入式操作系統(tǒng)和交叉開發(fā)環(huán)境。該軟件包具有動態(tài)電源管理、增強的文件系統(tǒng)、用于系統(tǒng)性能調整的新開發(fā)工具、處理器和外設的支持、適合應用開發(fā)的交叉開發(fā)工具,以及樣品實用工具、庫和驅動程序等。CEE 支持來自Freescale、Intel、Renesas 和 Texas Instruments的多種為消費設備定制的處理器。MontaVista 還為無線手機和移動產品提供 Linux for Mobile Devices(Mobilinux),滿足它們對電源管理、嚴格實時性能、快速起動以及占位面積小的需求(圖 2)?! iVo 領頭 很多 CE 設備都組合有 Linux 操作系統(tǒng),但 TiVo 個人錄像機是被最普遍公認的。TiVo Linux 也是愛好者們最喜歡拿來修改的軟件,修改后可以使用更大硬盤或通過添加硬盤來增加存儲容量,或者將錄制的節(jié)目傳送到計算機或其它設備中。Linux 可能會成為索尼為它下一代游戲機 PlayStation 3 提供軟件包的一部分,該產品預計在 2006 年春季上市。Linux也為最近推出的諾基亞 770 Internet Tablet所采用,它帶有 、USB 和藍牙連接、800480 像素觸摸屏以及 64 MB 閃存(圖 3)。除了網頁瀏覽器以外,770 還帶有一個 Email 客戶機、媒體播放器、文件管理器、游戲,以及幾個通用應用程序。諾基亞 770 的網購價格為 360 美元?! ≡诮衲昀咕S加斯的消費電子大展上,Sonos 推出了基于 Linux 的 ZonePlayer ZP80(見圖),它是一個無線系統(tǒng)的組成部分,可以使用戶在家中將數字音樂流送至音頻設備。用模擬或數字輸出將 ZP80 連接到任何音頻功放設備上后,該設備就成了一臺無線、多室數字音樂系統(tǒng)的組成部分,你可以用一個彩色的 Sonos 控制器進行操作。ZP80 包含有一個自動檢測的線路輸入連接器,它可以對任何輸入的音頻源進行數字編碼,如 Apple iPod、CD 機或衛(wèi)星收音機。Sonos ZonePlayer ZP80 的零售價為 349 美元?! ∪绻銓?CE 使用的 Linux 還比較陌生,可以到 CELF(消費電子 Linux 論壇)查找消息、討論和定制源碼。該論壇的目標是通過公開規(guī)范并管理面向 CE 的代碼,增強在 CE 設備中使用的 Linux 的功能。另外也可以在 上找到有關 Linux CE 產品的信息。該網站包括最新消息、文章以及有關 Linux 編程的教程、現(xiàn)有分銷商名單,以及有關嵌入系統(tǒng)主題的論壇。 當下一代 CE 設備進入市場時,設計師必須準備好為定制的應用軟件提供復雜的用戶界面、網絡聯(lián)接能力,以及實時數據安全功能。Linux 提供了一種無需專利金的開放源操作系統(tǒng),已經內置了一些這樣那樣的功能。事實上,在互聯(lián)網上已經有數百萬免費的 Linux 兼容軟件,支持 CE 開發(fā)項目。有了這些好處以及越來越多的技術愛好者,Linux 在 CE 行業(yè)一定有光明的前景。第7章 嵌入式uClinux及其應用開發(fā)(1)本章從構建一個針對S3C4510B硬件平臺的嵌入式uClinux操作系統(tǒng)和在其上進行應用程序的開發(fā)入手,逐步講述如何在Linux環(huán)境下編寫用戶應用程序的方法和步驟,并為熟悉Windows操作系統(tǒng)的用戶介紹在這種平臺之上,使用何種工具編寫和編譯自己的應用。通過本章的學習,讀者可以對嵌入式uClinux有一定的了解,并且掌握在Linux和Windows下嵌入式系統(tǒng)應用開發(fā)的基本方法。 本章主要內容有:- 嵌入式uClinux系統(tǒng)概況- 開發(fā)工具GNU的使用- 建立uClinux開發(fā)環(huán)境- 在uClinux下開發(fā)應用程序 嵌入式uClinux系統(tǒng)概況在PC機上開發(fā)應用程序的用戶都會有這樣的感覺,PC機有完善的操作系統(tǒng)并提供應用程序接口(API),開發(fā)好的應用程序可以直接在操作系統(tǒng)上運行。雖然嵌入式系統(tǒng)的應用程序完全可以在裸板上運行,但為了使系統(tǒng)具有任務管理、定時器管理、存儲器管理、資源管理、事件管理、系統(tǒng)管理、消息管理、隊列管理和中斷處理的能力,提供多任務處理,更好的分配系統(tǒng)資源的功能,用戶就需要針對自己的硬件平臺和實際應用選擇適當的嵌入式操作系統(tǒng)(Embedded Operating System,以下簡稱EOS)。本節(jié)將結合本書所談到的硬件平臺S3C4510B,介紹一種針對不帶MMU的ARM微處理器的嵌入式操作系統(tǒng)uClinux。uClinux是一個完全符合GNU/GPL公約的操作系統(tǒng),完全開放代碼,現(xiàn)在由Lineo公司支持維護。uClinux的發(fā)音是“youseelinux”,它的名字來自于希臘字母“mu”和英文大寫字母“C”的結合?!癿u”代表“微小”之意,字母“C”代表“控制器”,所以從字面上就可以看出它的含義,即“微控制領域中的Linux系統(tǒng)”。為了降低硬件成本及運行功耗,有一類CPU在設計中取消了內存管理單元(Memory Management Unit,以下簡稱MMU)功能模塊。最初,運行于這類沒有MMU的CPU之上的都是一些很簡單的單任務操作系統(tǒng),或者更簡單的控制程序,甚至根本就沒有操作系統(tǒng)而直接運行應用程序。在這種情況下,系統(tǒng)無法運行復雜的應用程序,或者效率很低,而且,所有的應用程序需要重寫,并要求程序員十分了解硬件特性。這些都阻礙了應用于這類CPU之上的嵌入式產品開發(fā)的速度。然而,隨著uClinux的誕生,這一切都改變了。uClinux從Linux ,沿襲了主流Linux的絕大部分特性。它是專門針對沒有MMU的CPU,并且為嵌入式系統(tǒng)做了許多小型化的工作。適用于沒有虛擬內存或內存管理單元(MMU)的處理器,例如ARM7TDMI。它通常用于具有很少內存或Flash的嵌入式系統(tǒng)。uClinux是為了支持沒有MMU的處理器而對標準Linux作出的修正。它保留了操作系統(tǒng)的所有特性,為硬件平臺更好的運行各種程序提供了保證。在GNU通用公共許可證(GNU GPL)的保證下,運行uClinux操作系統(tǒng)的用戶可以使用幾乎所有的Linux API函數,不會因為沒有MMU而受到影響。由于uClinux在標準的Linux基礎上進行了適當的裁剪和優(yōu)化,形成了一個高度優(yōu)化的、代碼緊湊的嵌入式Linux,雖然它的體積很小,uClinux仍然保留了Linux的大多數的優(yōu)點:穩(wěn)定、良好的移植性、優(yōu)秀的網絡功能、完備的對各種文件系統(tǒng)的支持、以及標準豐富的API等。 uClinux的基本架構Boot Loader:負責Linux內核的啟動,它用于初始化系統(tǒng)資源,包括SDRAM。這部分代碼用于建立Linux內核運行環(huán)境和從Flash中裝載初始化ramdisk。內核初始化:Linux內核的入口點是start_kernel()函數。它初始化內核的其他部分,包括捕獲,IRQ通道,調度,設備驅動,標定延遲循環(huán),最重要的是能夠fork “init”進程,以啟動整個多任務環(huán)境。系統(tǒng)調用函數/捕獲函數:在執(zhí)行完“init”程序后,內核對程序流不再有直接的控制權,此后,它的作用僅僅是處理異步事件(例如硬件中斷)和為系統(tǒng)調用提供進程。設備驅動:設備驅動占據了Linux內核很大部分。同其他操作系統(tǒng)一樣,設備驅動為它們所控制的硬件設備和操作系統(tǒng)提供接口。文件系統(tǒng):Linux最重要的特性之一就是對多種文件系統(tǒng)的支持。這種特性使得Linux很容易地同其他操作系統(tǒng)共存。文件系統(tǒng)的概念使得用戶能夠查看存儲設備上的文件和路徑而無須考慮實際物理設備的文件系統(tǒng)類型。Linux透明的支持許多不同的文件系統(tǒng),將各種安裝的文件和文件系統(tǒng)以一個完整的虛擬文件系統(tǒng)的形式呈現(xiàn)給用戶。下面介紹一些和uClinux相關的知識。 MMU(內存管理單元) 和VM(虛擬內存)許多嵌入式微處理器都由于沒有MMU而不支持虛擬內存。沒有內存管理單元所帶來的好處是簡化了芯片設計,降低了產品成本。由于大多數的嵌入式設備沒有磁盤或者只有很有限的內存空間,所以無需復雜的內存管理機制。但是由于沒有MMU的管理,操作系統(tǒng)對內存空間是沒有保護的,所有程序訪問的地址都是實際物理地址。但從嵌入式系統(tǒng)一般都是實現(xiàn)某種特定功能的角度考慮,對于內存管理的要求完全可以由程序開發(fā)人員考慮。實時性的支持uClinux本身并不支持實時性,目前存在兩種不同的方案提供uClinux對實時性的支持,它們分別是RTLinux(RTL)和RTAI(Real Time Application Interface)。有了這兩種方案,uClinux可以應用到對實時性要求較高的場合。 平臺支持開發(fā)uClinux的工具鏈:開發(fā)uClinux通常用標準的GNU工具鏈。經過修改的工具鏈支持一些高級特性,比如XIP(ExecuteInPlace)技術,共享庫支持等。uClinux所