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