出版時間:20101015 出版社:人民郵電出版社 作者:Gene Sally 頁數(shù):336 譯者:郭旭
Tag標(biāo)簽:無
前言
在大約十年前進(jìn)入嵌入式Linux領(lǐng)域時,我面對的一個問題是:我是不是應(yīng)該使用操作系統(tǒng)?選擇Linux意味著經(jīng)常需要將該操作系統(tǒng)移植到目標(biāo)硬件上運(yùn)行,并聯(lián)編移植所需的工具。隨著時間的流逝,事情有了很大的變化,對許多項(xiàng)目來說Linux已經(jīng)是默認(rèn)選項(xiàng),而需要決策的是在具體項(xiàng)目上應(yīng)該使用該操作系統(tǒng)的哪些特性。如今的問題是:我應(yīng)該如何配置我的Linux發(fā)布版?用技術(shù)術(shù)語來說,這是開發(fā)者態(tài)度在很短的時間范圍內(nèi)所發(fā)生的巨大轉(zhuǎn)變。 在嵌入式領(lǐng)域,Linux是如此普遍,以至于嵌入式處理器和開發(fā)板默認(rèn)情況下都附帶了Linux。買家都期望開發(fā)板會啟動Linux,并帶有隨硬件一同提供的、進(jìn)行嵌入式開發(fā)所需的工具。不同于Linux發(fā)展的早期階段,現(xiàn)在的開發(fā)者無需把Linux移植到相應(yīng)的開發(fā)板上,只需要對一個已經(jīng)能夠運(yùn)行的Linux內(nèi)核和根文件系統(tǒng)進(jìn)行配置,使之適合應(yīng)用的需求即可。 著眼于這樣的背景,我以一個用戶的視角來撰寫本書:他即將開始其項(xiàng)目,而手頭已經(jīng)有一個可以在開發(fā)板上運(yùn)行的Linux發(fā)布版。這不見得是最終隨產(chǎn)品交付的Linux發(fā)布版,但很可能作為開發(fā)的起點(diǎn)。本書描述了諸如從頭開始構(gòu)建交叉編譯器之類的任務(wù),以便讀者理解,但讀者或許會使用與開發(fā)板一同提供的交叉編譯器,這樣讀者就可以集中精力開發(fā)實(shí)際的應(yīng)用。但學(xué)習(xí)構(gòu)建和配置用于Linux系統(tǒng)的工具絕非浪費(fèi),當(dāng)讀者需要從你的系統(tǒng)中壓榨出內(nèi)存的每一位時,這些就成為基本功了。 更進(jìn)一步,對于新的片上系統(tǒng)(System on a Chip, SOC)式設(shè)計,開發(fā)板附帶的Linux發(fā)布版帶有芯片上的設(shè)備所需的所有驅(qū)動程序。需要開發(fā)驅(qū)動程序的情形是比較罕見的。這意味著,大多數(shù)工程師把時間花費(fèi)在內(nèi)核的定制上,而不需要構(gòu)建新的內(nèi)核組件,而花費(fèi)在所有內(nèi)核配置和開發(fā)方面的總時間,只是過去幾年的幾分之一。 隨著嵌入式設(shè)備中的處理器變得更為強(qiáng)大,開發(fā)者逐漸發(fā)現(xiàn)可以使用C以外的語言進(jìn)行開發(fā)。將C++用于開發(fā)已經(jīng)很常見,還有其他高級語言如Python、TCL、Java,甚至Perl或PHP。對于使用匯編語言開始嵌入式開發(fā)的人來說,在嵌入式目標(biāo)機(jī)上使用類似Perl的語言幾乎是異端(如果不算是叛教的話)。但這些高級語言可以大大提高嵌入式開發(fā)的效率。在上市時間至關(guān)重要的環(huán)境下,高級語言顯然會成為主流。 嵌入式項(xiàng)目的開發(fā)過程不同于其他的軟件項(xiàng)目。首先會有一個設(shè)計過程,這涉及建立一個專用的容器,以及一個用戶界面(可能是一個小的LCD顯示器和一些按鈕)。但更重要的是軟件的部署和更新。項(xiàng)目的代碼不會放到CD或網(wǎng)站上,而必須下載到帶有Linux發(fā)布版的目標(biāo)板上。在軟件最初安裝后,可能需要將其更新為包含bug修正或其他特性的新版本。根據(jù)系統(tǒng)的配置方式,更新系統(tǒng)本身可能會成為另一個項(xiàng)目。 如果讀者是在工作中開始一個嵌入式項(xiàng)目,或購買了某種面向計算機(jī)業(yè)余愛好者的比較廉價的開發(fā)板,我預(yù)祝你的努力能夠獲得好運(yùn)。與以前任何時候相比,目前在嵌入式項(xiàng)目中使用Linux都更為容易,且有更多樂趣。
內(nèi)容概要
時至今日,多數(shù)嵌入式產(chǎn)品中都有l(wèi)inux的身影。嵌入式開發(fā)人員可以使用更先進(jìn)的方法、花費(fèi)更多的時間來調(diào)優(yōu)linux,并可以利用開源代碼構(gòu)建健壯的、特性豐富的應(yīng)用程序?! ”緯鴥?nèi)容新穎、邏輯嚴(yán)密,全面介紹了linux嵌入式開發(fā)環(huán)境,還進(jìn)一步就目標(biāo)板和開發(fā)環(huán)境的選擇提供了建議。全書以項(xiàng)目方式帶領(lǐng)讀者一步步深入嵌入式linux開發(fā)的各種技術(shù),分析了開發(fā)中的常見問題?! ∪绻闶菍I(yè)的嵌入式開發(fā)人員,并對linux開發(fā)有基本的了解,那么本書恰好適合你閱讀。
作者簡介
Gene Sally 從十幾歲就開始接觸計算機(jī),有著近10年的嵌入式項(xiàng)目開發(fā)經(jīng)驗(yàn)。利用Linux開發(fā)過會計、保險處理、社會福利系統(tǒng)以及電信管理軟件的測試軟件。曾任職于一家專門開發(fā)嵌入式Linux工具和發(fā)布版的公司,擔(dān)任過工程師、培訓(xùn)師、技術(shù)支持等職務(wù)。
書籍目錄
第1章 嵌入式linux簡介 第2章 配置軟件環(huán)境 第3章 目標(biāo)機(jī)仿真與虛擬機(jī) 第4章 開始你的項(xiàng)目 第5章 獲取對應(yīng)于目標(biāo)板的linux 第6章 從頭開始創(chuàng)建linux發(fā)布版 第7章 啟動目標(biāo)板 第8章 配置應(yīng)用開發(fā)環(huán)境 第9章 應(yīng)用開發(fā) 第10章 調(diào)試應(yīng)用程序 第11章 內(nèi)核配置和開發(fā) 第12章 實(shí)時 第13章 使用開源軟件項(xiàng)目 第14章 busybox 第15章 系統(tǒng)設(shè)計 第16章 系統(tǒng)微調(diào) 第17章 部署應(yīng)用程序 第18章 處理現(xiàn)場更新
章節(jié)摘錄
插圖:1.基于標(biāo)準(zhǔn)Linux操作系統(tǒng)和相關(guān)的開源項(xiàng)目遵守工業(yè)標(biāo)準(zhǔn)。大多數(shù)情況下,可用的開源實(shí)現(xiàn)是某個標(biāo)準(zhǔn)的規(guī)范或參考實(shí)現(xiàn)。參考實(shí)現(xiàn)包含了對規(guī)范的解釋,是一致性測試的基礎(chǔ)。簡言之,參考實(shí)現(xiàn)是用于度量其他實(shí)現(xiàn)的標(biāo)準(zhǔn)。如果讀者不熟悉參考實(shí)現(xiàn)的概念,可能會有點(diǎn)困惑。例如,POSIX中用于處理線程和進(jìn)程間通信的部分,通常稱作標(biāo)準(zhǔn)組是IEEE(Institute of Electricaland Electronics Engineers,電氣和電子工程師協(xié)會)的一部分,它是一個委員會,設(shè)計了用于與線程交互的API,但該標(biāo)準(zhǔn)的實(shí)現(xiàn)則由另一個標(biāo)準(zhǔn)組完成。實(shí)際上,在標(biāo)準(zhǔn)的工作開始時,委員會的一個或多個參與者會自愿創(chuàng)建相關(guān)的代碼,即參考實(shí)現(xiàn)。參考實(shí)現(xiàn)會包括一個測試套件,其他實(shí)現(xiàn)需要通過測試套件,才能證明相關(guān)代碼是按照規(guī)范編寫的。使用基于標(biāo)準(zhǔn)的軟件,不僅關(guān)系到質(zhì)量,也關(guān)系到平臺無關(guān)性。項(xiàng)目基于遵守標(biāo)準(zhǔn)的軟件,可以減少因?yàn)樘囟ㄓ趶S商的特性而鎖定到具體平臺的可能性。廠商可能是善意的,但這些額外特性的好處通常會因?yàn)槿狈ゲ僮餍院妥杂蛇x擇權(quán)而被抵消,互操作性和自由選擇權(quán)已經(jīng)悄然成為商業(yè)事務(wù)的一部分,但很少被認(rèn)真考慮。在一個有許多嵌入式設(shè)備建立連接(很多時候是連接到任意的系統(tǒng),而非彼此連接)的世界里,標(biāo)準(zhǔn)變得越發(fā)重要。以太網(wǎng)是一種這樣的連接方法,但還有其他選擇,如Zigbee、CANbus、SCSI,這只是其中幾個例子而已。2.進(jìn)程隔離與控制Linux內(nèi)核在最基本的層面上,以通用API的形式提供了這些服務(wù),供訪問系統(tǒng)資源之用。管理任務(wù),使之與內(nèi)核彼此隔離。提供統(tǒng)一接口,供訪問系統(tǒng)硬件資源之用。當(dāng)存在爭用時,充當(dāng)資源的仲裁者。這些是非常重要的特性,與硬件和資源訪問未能得到嚴(yán)密管理的環(huán)境相比,這些特性將產(chǎn)生一個更為穩(wěn)定的環(huán)境。例如,在沒有操作系統(tǒng)時,每個運(yùn)行的程序?qū)λ锌捎玫奈锢韮?nèi)存都具有同等訪問權(quán)限。這意味著,一個程序中的溢出錯誤,將會寫入到由另一個程序使用的內(nèi)存中,除非對系統(tǒng)中所有的代碼進(jìn)行檢查,否則第二個程序的失敗原因會看似神秘而無法解釋。資源爭用的概念是比較復(fù)雜的,不僅僅只是確保兩個進(jìn)程不會同時向串口寫數(shù)據(jù)這樣簡單,稀缺的資源是處理器時間,而操作系統(tǒng)可以決定在何時運(yùn)行哪個進(jìn)程,以便最大化所能處理的工作量。
媒體關(guān)注與評論
“如果你從事Linux嵌入式開發(fā),此書絕對不容錯過?!薄 獊嗰R遜讀者討論
編輯推薦
《Linux嵌入式系統(tǒng)高級程序設(shè)計》:Linux嵌入式系統(tǒng)開發(fā)最新動態(tài),以項(xiàng)目方式揭示Linux嵌入式開發(fā)的全過程,嵌入式系統(tǒng)開發(fā)人員必備。
圖書封面
圖書標(biāo)簽Tags
無
評論、評分、閱讀與下載
Linux嵌入式系統(tǒng)高級程序設(shè)計 PDF格式下載