嵌入式系統(tǒng)Linux內(nèi)核開(kāi)發(fā)實(shí)戰(zhàn)指南

出版時(shí)間:2009-3  出版社:電子工業(yè)出版社  作者:王洪輝  頁(yè)數(shù):1124  
Tag標(biāo)簽:無(wú)  

前言

2007年8月,我從上家公司辭職出來(lái),放棄了剛上市公司骨干中層干部的職位,放棄了豐厚的待遇。自1996年畢業(yè)以來(lái),我一直從事嵌入式系統(tǒng)和Linux內(nèi)核一線技術(shù)開(kāi)發(fā)工作,我所承擔(dān)的任務(wù)和項(xiàng)目基本都是由自己獨(dú)立完成,即使擔(dān)任了硬件部主管或技術(shù)總監(jiān)職務(wù),我對(duì)自己專(zhuān)長(zhǎng)的工作仍是親歷親為的。一方面,自己熱愛(ài)這項(xiàng)工作,每攻克一個(gè)難題都能體驗(yàn)到莫大的成就感(相信技術(shù)工程師都有過(guò)這種體會(huì));另一方面,目前國(guó)內(nèi)做嵌入式系統(tǒng)和Linux內(nèi)核開(kāi)發(fā)的工程師供不應(yīng)求,水平高的更是奇缺,相關(guān)職位的待遇相對(duì)其他職位的偏高,少招一個(gè)新員工就為公司節(jié)省一筆開(kāi)支,減輕一份負(fù)擔(dān),所以對(duì)于比較簡(jiǎn)單和事務(wù)性的工作我會(huì)安排給其他員工,而難度大的工作我?guī)缀醵加H自上陣。我習(xí)慣加班,來(lái)了興致甚至通宵達(dá)旦,憑著這股干勁,經(jīng)過(guò)多年實(shí)踐積累,自己常能在短時(shí)間內(nèi)解決很多人長(zhǎng)時(shí)間沒(méi)有解決的問(wèn)題。在我工作中接觸到Linux之初,為了更好更深入地學(xué)習(xí)嵌入式系統(tǒng)和Linux內(nèi)核開(kāi)發(fā)技能,我在業(yè)余時(shí)間自己花錢(qián)設(shè)計(jì)制作了MC68VZ328和S3C4510兩種開(kāi)發(fā)板以及簡(jiǎn)易JTAG下載、燒寫(xiě)線纜,并成功移植、固化?Clinux到這兩個(gè)開(kāi)發(fā)板上——到目前為止,我已經(jīng)在當(dāng)今流行的各種嵌入式硬件平臺(tái)(包括單片機(jī)、MC68K、PowerPC、ARM、MIPS、DSP)和嵌入式操作系統(tǒng)(包括VRTX、VxWorks、PSOS、Linux)上都做過(guò)實(shí)際開(kāi)發(fā)工作,編寫(xiě)、移植或者調(diào)試過(guò)UART、Ethernet、I2C、HDLC+E1、LCD、Keyboard、VFD、SCSI、SATA、IDE、CVBS、VGA、PCI、USB等接口和設(shè)備的驅(qū)動(dòng)程序。在與Linux打交道的這么多年里,我一心想把這個(gè)開(kāi)放源碼的優(yōu)秀操作系統(tǒng)吃透,并理所當(dāng)然地覺(jué)得,隨著時(shí)間的推移和所做項(xiàng)目的增多,自己一定會(huì)逐漸認(rèn)識(shí)Linux內(nèi)核的真實(shí)面目;可是一直以來(lái),每當(dāng)我想在腦海中對(duì)Linux內(nèi)核各組件及其原理進(jìn)行全面系統(tǒng)概括描述時(shí)卻總是如鯁在喉,不得其解,這讓我心里一直潛藏著一絲隱憂(yōu)和茫然:由于不了解Linux內(nèi)核原理,盡管自己能憑借10多年的工作經(jīng)驗(yàn)通過(guò)適當(dāng)方法很快把任務(wù)完成、把難題解決,但卻不能在碰到難題一開(kāi)始就從原理上把握應(yīng)該從哪兒下手,怎樣做、做什么,缺乏全局預(yù)見(jiàn)性和高瞻遠(yuǎn)矚的能力,這種心中“沒(méi)底”的感覺(jué)驅(qū)使我去更深入鉆研、發(fā)掘,去力爭(zhēng)做到心中“有底”;這也讓我意識(shí)到,雖然經(jīng)過(guò)10多年的勤奮工作,自己已經(jīng)積累了足夠的工作經(jīng)驗(yàn),不過(guò)由于平時(shí)很少閱讀理論書(shū)籍和Linux內(nèi)核源代碼,Linux內(nèi)核原理知識(shí)并沒(méi)有像我原來(lái)想象的那樣自然而然地裝進(jìn)自己的大腦,所以自己的理論水平仍然很欠缺,要想提高就必須經(jīng)過(guò)一個(gè)艱苦的沉淀過(guò)程;由于平時(shí)工作忙、任務(wù)緊,我很少有時(shí)間來(lái)做系統(tǒng)的總結(jié)和歸納,在這種情況下,出于對(duì)公司和自己負(fù)責(zé)任考慮,我決定辭去工作,在家專(zhuān)心、系統(tǒng)研讀Linux內(nèi)核源代碼,同時(shí)也對(duì)自己10多年的工作進(jìn)行一次全面概括和總結(jié)。我花了半年多時(shí)間閱讀針對(duì)ARM處理器平臺(tái)的Linux 2.6.10內(nèi)核源代碼,記了2000多頁(yè)的源代碼閱讀筆記和心得。2008年4月,我在家坐不住想去找工作——辭職前,我常開(kāi)車(chē)去兜風(fēng)或帶家人郊游,辭職后不久,為了節(jié)省支出,我把車(chē)賣(mài)了,這半年多時(shí)間里,我除了早晨出去鍛煉外,一天難得出門(mén),沒(méi)有娛樂(lè),沒(méi)有朋友交流,沒(méi)有旅游,這對(duì)于一個(gè)身處物欲橫流的繁華都市鬧市區(qū)的人來(lái)說(shuō)會(huì)是一種怎樣的生活體驗(yàn)?zāi)??更何況對(duì)于英俊瀟灑、才華橫溢、熱情好動(dòng)的本人呢(?)——于是我在腦海中總結(jié)半年多來(lái)的學(xué)習(xí)成果和收獲,雖然感覺(jué)眼前比以前亮堂了許多,但仍是朦朦朧朧,似是而非,不得已只好強(qiáng)迫自己繼續(xù)坐下去。我把以前的工作筆記、工作總結(jié)、自制的開(kāi)發(fā)板全部找出來(lái),又買(mǎi)了幾本介紹Linux內(nèi)核原理、驅(qū)動(dòng)程序編寫(xiě)方面的理論書(shū)籍,把所有這些與半年多來(lái)閱讀Linux 2.6內(nèi)核源代碼的筆記和心得進(jìn)行交叉學(xué)習(xí),相互印證,加深理解,同時(shí)對(duì)這些資料再次進(jìn)行總結(jié)、歸納、記筆記、寫(xiě)心得;到2008年6月,當(dāng)我再次回頭清理頭緒,翻看新的筆記時(shí),頓然感覺(jué)Linux 2.6內(nèi)核的輪廓漸漸清晰起來(lái),我很興奮并突發(fā)想象:何不將新的筆記、心得整理完善一下,那樣不就可以編輯成一本介紹嵌入式系統(tǒng)硬件原理及軟硬件設(shè)計(jì)流程與方法、嵌入式Linux內(nèi)核原理及開(kāi)發(fā)方法與技能、常見(jiàn)設(shè)備工作原理及其驅(qū)動(dòng)程序的編寫(xiě)方法的完整的書(shū)了?聯(lián)想到現(xiàn)在越來(lái)越多的年輕人開(kāi)始熱衷于嵌入式系統(tǒng)Linux內(nèi)核開(kāi)發(fā)這項(xiàng)高科技、高薪工作,卻苦于找不到一本從實(shí)戰(zhàn)出發(fā)全面深入介紹這方面技術(shù)的指導(dǎo)書(shū),他們有的不惜花重金去參加培訓(xùn),可是當(dāng)這些培訓(xùn)后的部分人到我那面試時(shí),我卻發(fā)現(xiàn)他們所學(xué)甚淺,不懂原理,只知道操作流程,有的甚至連基本的流程都不熟悉;加上以前在一些嵌入式系統(tǒng)和Linux論壇中看到很多網(wǎng)友呼吁有經(jīng)驗(yàn)的開(kāi)發(fā)人員把自己的工作經(jīng)驗(yàn)總結(jié)一下寫(xiě)出來(lái)供大家參考,這更讓我有了寫(xiě)這本書(shū)的沖動(dòng)。于是我又耐心坐了3個(gè)多月,繼續(xù)總結(jié)、歸納、提煉、整理、完善,到了2008年9月,原來(lái)的筆記和心得就濃縮成了《嵌入式系統(tǒng)Linux內(nèi)核開(kāi)發(fā)實(shí)戰(zhàn)指南(ARM平臺(tái))》,我也實(shí)現(xiàn)了一次自我超越,從“摸著石頭過(guò)河”的尷尬與無(wú)奈走向了“不管風(fēng)吹浪打,勝似閑庭信步”的瀟灑與從容!《嵌入式系統(tǒng)Linux內(nèi)核開(kāi)發(fā)實(shí)戰(zhàn)指南(ARM平臺(tái))》包含了我11年的工作筆記、經(jīng)驗(yàn)總結(jié),一年多來(lái)對(duì)ARM處理器平臺(tái)Linux 2.6內(nèi)核源代碼的閱讀心得和體會(huì)以及對(duì)幾本理論參考書(shū)的閱讀筆記和心得,這本書(shū)是從這些內(nèi)容中提煉出來(lái)的,是我對(duì)自己12年工作和學(xué)習(xí)的概括與總結(jié)?!肚度胧较到y(tǒng)Linux內(nèi)核開(kāi)發(fā)實(shí)戰(zhàn)指南(ARM平臺(tái))》以嵌入式系統(tǒng)Linux內(nèi)核開(kāi)發(fā)的整個(gè)過(guò)程為線索,按照先硬件后軟件、先易后難的順序編寫(xiě)。書(shū)中內(nèi)容覆蓋了嵌入式系統(tǒng)Linux內(nèi)核開(kāi)發(fā)的各個(gè)方面,全書(shū)由“嵌入式系統(tǒng)硬件開(kāi)發(fā)(共10章)”、“Linux內(nèi)核開(kāi)發(fā)初步(共6章)”、“Linux 2.6內(nèi)核原理(共9章)”、“Linux內(nèi)核開(kāi)發(fā)高級(jí)指南(共7章)”四部分組成,共32章。其中“嵌入式系統(tǒng)硬件開(kāi)發(fā)”部分主要以ARM處理器為例介紹了嵌入式處理器的特點(diǎn)、內(nèi)部原理以及硬件開(kāi)發(fā)調(diào)試流程和方法,還介紹了如何制作簡(jiǎn)易JTAG線纜和編寫(xiě)燒寫(xiě)程序;“Linux內(nèi)核開(kāi)發(fā)初步”部分主要介紹各種bootloader、Linux開(kāi)發(fā)環(huán)境的創(chuàng)建、Linux內(nèi)核的配置和編譯以及根文件系統(tǒng)的制作,還簡(jiǎn)單介紹了?Clinux;“Linux 2.6內(nèi)核原理”部分是本書(shū)的核心,該部分以Linux 2.6.10內(nèi)核源代碼為基礎(chǔ)深入剖析了Linux 2.6內(nèi)核的各個(gè)組成部分及其實(shí)現(xiàn)原理,包括Linux啟動(dòng)過(guò)程、內(nèi)存管理、進(jìn)程調(diào)度、文件系統(tǒng)、模塊設(shè)計(jì)、異常中斷處理、軟中斷和工作隊(duì)列、并發(fā)和競(jìng)態(tài)、設(shè)備驅(qū)動(dòng)程序等,是以源代碼閱讀心得和體會(huì)+參考書(shū)閱讀筆記和心得+源代碼詳細(xì)注釋方式編寫(xiě)的,因?yàn)長(zhǎng)inux源代碼是Linux操作系統(tǒng)理論的實(shí)踐成果,講解Linux內(nèi)核理論的同時(shí)加上必要的源代碼注釋就會(huì)非常直觀,否則恐怕又會(huì)是乏味的天書(shū);“Linux內(nèi)核開(kāi)發(fā)高級(jí)指南”部分則介紹了一些比較高級(jí)的技能和開(kāi)發(fā)人員平時(shí)很少關(guān)注的方面,這部分包括Linux系統(tǒng)參數(shù)設(shè)置、內(nèi)核調(diào)試、內(nèi)核移植、內(nèi)核優(yōu)化、定時(shí)器、雜項(xiàng)以及編譯鏈接文件說(shuō)明等?!肚度胧较到y(tǒng)Linux內(nèi)核開(kāi)發(fā)實(shí)戰(zhàn)指南(ARM平臺(tái))》適合已經(jīng)或者志愿從事嵌入式系統(tǒng)Linux內(nèi)核開(kāi)發(fā)各階段、各層次的人員閱讀。初級(jí)開(kāi)發(fā)人員包括在校大學(xué)生可以從中找到努力的方向;中級(jí)開(kāi)發(fā)人員可以從中找到更深層細(xì)致的內(nèi)容和有效的方法;高級(jí)開(kāi)發(fā)人員可以從中發(fā)現(xiàn)不少解決難題的點(diǎn)睛之筆——總之我希望并相信這本書(shū)能對(duì)愛(ài)好或從事嵌入式系統(tǒng)和Linux內(nèi)核開(kāi)發(fā)的讀者有一定幫助,使他們?cè)诩夹g(shù)開(kāi)發(fā)的道路上少走一些彎路!當(dāng)然,一本書(shū)不可能包括全部細(xì)節(jié),Linux 2.6內(nèi)核源代碼本身就遠(yuǎn)不是一本1000多頁(yè)的書(shū)所能容納的。事實(shí)上,隨著寫(xiě)作的深入,我發(fā)現(xiàn)要寫(xiě)和想寫(xiě)的東西越來(lái)越多,這或許就是知識(shí)的擴(kuò)張效應(yīng)吧:當(dāng)我們了解的東西很少的時(shí)候,未知領(lǐng)域和已知領(lǐng)域的分界線只是一個(gè)很小的圈,隨著我們知識(shí)的增加和積累,這個(gè)圈慢慢向外伸展,越來(lái)越大,于是我們就感覺(jué)到不懂的東西越來(lái)越多而不是越來(lái)越少。正是這種感覺(jué)激發(fā)了人們的求知欲,有多少科學(xué)家特別是我們中國(guó)的科學(xué)家,把自己的一生都默默奉獻(xiàn)給了國(guó)家的科學(xué)發(fā)展事業(yè),成就了中國(guó)世界科技大國(guó)的地位!他們從不奢望也不屑獲得所謂的“諾貝爾”!——但是無(wú)論如何,這本書(shū)只能就此告一段落,如果有可能,我會(huì)把更多內(nèi)容和細(xì)節(jié)寫(xiě)入下一本書(shū)中。由于書(shū)中內(nèi)容太多,其中難免出現(xiàn)一些錯(cuò)別字或文筆不通的現(xiàn)象,也可能會(huì)有錯(cuò)誤,如果讀者碰到這種情況,請(qǐng)?jiān)趶V泛查閱相關(guān)資料并親自實(shí)驗(yàn)的基礎(chǔ)上得出并堅(jiān)持正確的結(jié)論,不要迷信書(shū)本和權(quán)威,要敢于懷疑,勤于思考和驗(yàn)證,這樣才能更快地進(jìn)步,這才是科學(xué)態(tài)度。我誠(chéng)摯期望讀者能向我指出書(shū)中的錯(cuò)誤和不足,這樣我就能與讀者共同進(jìn)步和提高!最后我要特別提到,在學(xué)習(xí)和寫(xiě)作的整個(gè)過(guò)程中,我常看《恰同學(xué)少年》——想到那么多平凡而壯麗的人生,自己一年多來(lái)吃的這點(diǎn)“苦”又算得了什么呢?呵呵,毛毛雨而已!

內(nèi)容概要

《嵌入式系統(tǒng)Linux開(kāi)發(fā)實(shí)戰(zhàn)指南(ARM平臺(tái))》凝聚了作者12年的工作經(jīng)驗(yàn)和學(xué)習(xí)心得與體會(huì),內(nèi)容覆蓋了嵌入式系統(tǒng)Linux內(nèi)核開(kāi)發(fā)的各個(gè)方面。    作者根據(jù)自己11年的一線工作經(jīng)驗(yàn),介紹了嵌入式系統(tǒng)的概念、組織架構(gòu)、工作原理、軟硬件設(shè)計(jì)流程、開(kāi)發(fā)調(diào)試方法以及嵌入式Linux的開(kāi)發(fā)方法與技能,其中列舉了許多作者工作中的實(shí)際案例;      另外,作者根據(jù)自己反復(fù)閱讀Linux2.6內(nèi)核源代碼和Linux內(nèi)核參考書(shū)的筆記與心得,用很大篇幅深入剖析了Linux內(nèi)核的組成結(jié)構(gòu)以及各組件的實(shí)現(xiàn)原理,在闡述理論的同時(shí)對(duì)內(nèi)核源代碼進(jìn)行詳細(xì)注釋?zhuān)@樣既加深了對(duì)Linux內(nèi)核原理的理解,又可引導(dǎo)讀者自行閱讀、分析內(nèi)核源代碼;    該書(shū)共32章,分為四部分,每一部分的內(nèi)容既相互獨(dú)立,又彼此關(guān)聯(lián),讀者可以根據(jù)自己的實(shí)際情況有選擇地閱讀,不必嚴(yán)格依照書(shū)中的章節(jié)順序。

作者簡(jiǎn)介

王洪輝,江西豐城人,1996年畢業(yè)于華北航天工業(yè)學(xué)院,被分配到中航北京青云航空儀表公司工作,2000年從青云離職后先后在6家公司工作過(guò);作者一直從事嵌入式系統(tǒng)Linux內(nèi)核開(kāi)發(fā)工作,在當(dāng)今各種流行的嵌入式處理器平臺(tái)和操作系統(tǒng)上都做過(guò)開(kāi)發(fā),編寫(xiě)、移植或者調(diào)試過(guò)各種設(shè)備、接口的驅(qū)動(dòng)程序;作者在職期間即使擔(dān)任硬件部主管或技術(shù)總監(jiān)職務(wù),只要有時(shí)間仍堅(jiān)持親自參與一線技術(shù)開(kāi)發(fā)工作,積累經(jīng)驗(yàn),精益求精,是嵌入式系統(tǒng)Linux內(nèi)核開(kāi)發(fā)領(lǐng)域名副其實(shí)的技術(shù)專(zhuān)家;現(xiàn)在作者主要從事嵌入式系統(tǒng)Linux內(nèi)核研究與教學(xué)工作,并計(jì)劃將來(lái)組織開(kāi)發(fā)自己的操作系統(tǒng)。

書(shū)籍目錄

第1部分  嵌入式系統(tǒng)硬件開(kāi)發(fā)  第1章  嵌入式系統(tǒng)概述	    1.1  嵌入式系統(tǒng)概念	    1.2  嵌入式處理器	    1.3  嵌入式系統(tǒng)應(yīng)用	    1.4  嵌入式系統(tǒng)發(fā)展	    1.5  一些嵌入式處理器的硬件特性比較	  第2章  ARM處理器概述	    2.1  ARM發(fā)展歷程	    2.2  ARM處理器特點(diǎn)	    2.3  ARM處理器應(yīng)用	    2.4  ARM體系架構(gòu)	    2.5  ARM處理器	  第3章  ARM指令及其尋址方式	    3.1  ARM處理器的程序狀態(tài)寄存器(PSR)	    3.2  ARM指令的條件碼	    3.3  ARM指令介紹	    3.4  ARM指令尋址方式	    3.5  ARM匯編偽操作(Directive)	    3.6  ARM匯編偽指令	    3.7  Thumb指令介紹	  第4章  ARM處理器內(nèi)存管理單元(MMU)	    4.1  ARM處理器中CP15協(xié)處理器的寄存器	    4.2  MMU簡(jiǎn)介	    4.3  系統(tǒng)訪問(wèn)存儲(chǔ)空間的過(guò)程	    4.4  ARM處理器地址變換過(guò)程	    4.5  ARM存儲(chǔ)空間訪問(wèn)權(quán)限控制	    4.6  TLB操作	    4.7  存儲(chǔ)訪問(wèn)失效	  第5章  ARM處理器的Cache和Write Buffer	    5.1  Cache和Write Buffer一般性介紹	    5.2  ARM處理器中的Cache和Write Buffer	    5.3  ARM處理器的快速上下文切換技術(shù)	  第6章  ARM處理器存儲(chǔ)訪問(wèn)一致性問(wèn)題	    6.1  存儲(chǔ)訪問(wèn)一致性問(wèn)題介紹	    6.2  Linux中解決存儲(chǔ)訪問(wèn)一致性問(wèn)題的方法	  第7章  ARM處理器工作模式與異常中斷處理	    7.1  ARM處理器工作模式	    7.2  ARM處理器異常中斷向量表和優(yōu)先級(jí)	    7.3  ARM處理器異常中斷處理	    7.4  ARM處理器的中斷(IRQ或FIQ)	  第8章  ARM處理器啟動(dòng)過(guò)程	    8.1  ARM處理器上電/復(fù)位操作	    8.2  ARM處理器系統(tǒng)初始化過(guò)程	    8.3  ARM處理器系統(tǒng)初始化編程注意事項(xiàng)	  第9章  嵌入式系統(tǒng)設(shè)計(jì)與調(diào)試	    9.1  嵌入式系統(tǒng)設(shè)計(jì)流程	    9.2  嵌入式系統(tǒng)硬件原理設(shè)計(jì)與審核	    9.3  硬件設(shè)計(jì)工具軟件	    9.4  嵌入式系統(tǒng)調(diào)試仿真工具	    9.5  嵌入式系統(tǒng)調(diào)試診斷方法	  第10章  自制簡(jiǎn)易JTAG下載燒寫(xiě)工具	    10.1  JTAG簡(jiǎn)介	    10.2  簡(jiǎn)易JTAG線纜原理	    10.3  簡(jiǎn)易JTAG燒寫(xiě)代碼分析	第2部分  Linux內(nèi)核開(kāi)發(fā)初步  第11章  Bootloader	    11.1  Bootloader的任務(wù)和作用	    11.2  各種各樣的Bootloader	    11.3  Bootloader編譯環(huán)境	    11.4  Bootloader的移植與裁減	    11.5  編譯Bootloader	    11.6  燒寫(xiě)B(tài)ootloader	    11.7  Bootloader使用舉例	    11.8  Bootloader修改舉例	  第12章  創(chuàng)建嵌入式Linux開(kāi)發(fā)環(huán)境	    12.1  安裝Linux host	    12.2  在虛擬機(jī)中安裝Linux host	    12.3  安裝Linux交叉編譯環(huán)境	    12.4  在主機(jī)上設(shè)置TFTP Server	    12.5  在主機(jī)上設(shè)置DHCP Server	    12.6  在主機(jī)上設(shè)置Telnet server	    12.7  在開(kāi)發(fā)過(guò)程中使用NFS	    12.8  設(shè)置超級(jí)終端	  第13章  編譯Linux內(nèi)核	    13.1  獲取Linux內(nèi)核源代碼	    13.2  Linux內(nèi)核目錄結(jié)構(gòu)	    13.3  配置Linux內(nèi)核	    13.4  編譯Linux內(nèi)核	  第14章  創(chuàng)建Linux根文件系統(tǒng)	    14.1  根文件系統(tǒng)概述	    14.2  根文件系統(tǒng)目錄結(jié)構(gòu)	    14.3  獲取根文件系統(tǒng)組件源代碼	    14.4  編譯根文件系統(tǒng)源代碼	    14.5  創(chuàng)建一個(gè)32MB的RAMDISK根文件系統(tǒng)	    14.6  在根文件系統(tǒng)中添加驅(qū)動(dòng)模塊或者應(yīng)用程序	  第15章  固化Linux內(nèi)核和根文件系統(tǒng)	  第16章  關(guān)于?Clinux	    16.1?Clinux簡(jiǎn)介	    16.2?Clinux源代碼目錄結(jié)構(gòu)	    16.3?Clinux與標(biāo)準(zhǔn)Linux的區(qū)別	    16.4  編譯Clinux	第3部分  Linux 2.6內(nèi)核原理  第17章  Linux 2.6.10@ARM啟動(dòng)過(guò)程	    17.1  Linux 2.6.10中與ARM處理器平臺(tái)硬件相關(guān)的結(jié)構(gòu)和全局變量	    17.2  Linux匯編代碼入口	    17.3  Linux匯編入口處CPU的狀態(tài)	    17.4  start_kernel()函數(shù)之前的匯編代碼執(zhí)行過(guò)程	    17.5  start_kernel()函數(shù)中調(diào)用的函數(shù)介紹	    17.6  init()進(jìn)程執(zhí)行過(guò)程	  第18章  Linux內(nèi)存管理	    18.1  Linux內(nèi)存管理概述	    18.2  為虛擬(線性地址)存儲(chǔ)空間建立頁(yè)表	    18.3  設(shè)置存儲(chǔ)空間的訪問(wèn)控制屬性	    18.4  Linux中的內(nèi)存分配和釋放	  第19章  Linux進(jìn)程管理	    19.1  進(jìn)程管理概述	    19.2  進(jìn)程管理相關(guān)初始化	    19.3  進(jìn)程創(chuàng)建與刪除	    19.4  進(jìn)程調(diào)度	    19.5  進(jìn)程切換	    19.6  用戶(hù)態(tài)進(jìn)程間通信	  第20章  Linux文件管理	    20.1  文件系統(tǒng)概述	    20.2  文件管理相關(guān)初始化	    20.3  文件系統(tǒng)類(lèi)型注冊(cè)	    20.4  掛接文件系統(tǒng)	    20.5  文件系統(tǒng)類(lèi)型超級(jí)塊讀取	    20.6  路徑名查找	    20.7  訪問(wèn)文件操作	    20.8  異步I/O系統(tǒng)調(diào)用	    20.9  Linux特殊文件系統(tǒng)	    20.10  磁盤(pán)文件系統(tǒng)	    20.11  關(guān)于initramfs	    20.12  關(guān)于initrd	    20.13  關(guān)于gzip壓縮文件	  第21章  Linux模塊設(shè)計(jì)    21.1  Linux模塊設(shè)計(jì)概述	    21.2  Linux的內(nèi)核空間和用戶(hù)空間	    21.3  內(nèi)核模塊與應(yīng)用程序的區(qū)別	    21.4  編譯模塊	    21.5  裝載和卸載模塊	    21.6  模塊層疊	    21.7  模塊版本依賴(lài)	    21.8  模塊編程示例	  第22章  Linux系統(tǒng)異常中斷管理	    22.1  Linux異常中斷處理	    22.2  指令預(yù)取和數(shù)據(jù)訪問(wèn)中止異常中斷處理	    22.3  Linux中斷處理	    22.4  從中斷返回	    22.5  Linux中斷管理	    22.6  Linux系統(tǒng)調(diào)用	  第23章  Linux軟中斷和工作隊(duì)列	    23.1  概述	    23.2  Linux軟中斷	    23.3  Linux工作隊(duì)列	  第24章  Linux并發(fā)與競(jìng)態(tài)	    24.1  并發(fā)與競(jìng)態(tài)概述	    24.2  消除競(jìng)態(tài)的“鎖定”技術(shù)	    24.3  消除競(jìng)態(tài)的非“鎖定”方法	  第25章  Linux設(shè)備驅(qū)動(dòng)程序	    25.1  設(shè)備驅(qū)動(dòng)程序概述	    25.2  字符設(shè)備驅(qū)動(dòng)程序	    25.3  塊設(shè)備驅(qū)動(dòng)程序	    25.4  網(wǎng)絡(luò)設(shè)備驅(qū)動(dòng)程序	    25.5  PCI設(shè)備驅(qū)動(dòng)程序	第4部分  Linux內(nèi)核開(kāi)發(fā)高級(jí)指南  第26章  Linux系統(tǒng)參數(shù)設(shè)置	    26.1  旗語(yǔ)系統(tǒng)參數(shù)(tag)	    26.2  前期命令行設(shè)置的系統(tǒng)參數(shù)	    26.3  老式命令行系統(tǒng)參數(shù)	    26.4  命令行系統(tǒng)參數(shù)	  第27章  Linux內(nèi)核調(diào)試	    27.1  打開(kāi)Linux內(nèi)核及其各模塊自帶的調(diào)試開(kāi)關(guān)	    27.2  內(nèi)核剖析(Profiling)	    27.3  通過(guò)打印調(diào)試(printk)	    27.4  使用proc文件系統(tǒng)調(diào)試	    27.5  oops消息	1098    27.6  通過(guò)跟蹤命令strace調(diào)試	    27.7  使用gdb、kdb、kgdb調(diào)試	  第28章  Linux內(nèi)核移植	  第29章  Linux內(nèi)核優(yōu)化	    29.1  編譯優(yōu)化	    29.2  根據(jù)CPU特性進(jìn)行優(yōu)化	    29.3  對(duì)內(nèi)核進(jìn)行裁減	    29.4  優(yōu)化系統(tǒng)內(nèi)存配置	    29.5  優(yōu)化系統(tǒng)啟動(dòng)過(guò)程以縮減系統(tǒng)啟動(dòng)時(shí)間	    29.6  內(nèi)存映射優(yōu)化	    29.7  工具軟件輔助優(yōu)化	  第30章  Linux定時(shí)器	    30.1  定時(shí)器相關(guān)數(shù)據(jù)結(jié)構(gòu)    30.2  定時(shí)器相關(guān)宏定義	    30.3  定時(shí)器相關(guān)全局變量	    30.4  定時(shí)器和時(shí)鐘初始化	    30.5  獲取系統(tǒng)時(shí)間	    30.6  延遲函數(shù)	    30.7  與定時(shí)器相關(guān)系統(tǒng)調(diào)用	    30.8  使用定時(shí)器方法	  第31章  雜項(xiàng)	    31.1  per_cpu變量	    31.2  Linux中的數(shù)據(jù)類(lèi)型定義	  第32章  編譯鏈接文件說(shuō)明	  參考文獻(xiàn)

章節(jié)摘錄

插圖:x86架構(gòu)處理器主要用于設(shè)計(jì)成家用PC、筆記本電腦、服務(wù)器以及一些大型的計(jì)算機(jī)系統(tǒng),x86架構(gòu)處理器主要由邏輯算術(shù)運(yùn)算單元、:MMU以及片內(nèi)cache組成,片內(nèi)外設(shè)資源非常有限,其外設(shè)功能都需通過(guò)外接擴(kuò)展芯片來(lái)實(shí)現(xiàn),x86架構(gòu)處理器使用的是復(fù)雜指令集CISC,每條指令所占字節(jié)數(shù)不完全一樣,指令周期也不盡一致,而且內(nèi)存空間與I/O空間是相互獨(dú)立、分別尋址的。在電腦中,除BIOS之外的操作系統(tǒng)以及應(yīng)用程序都被存放在硬盤(pán)上,只有需要的時(shí)候才被調(diào)入內(nèi)存運(yùn)行。電腦上的軟件面對(duì)各種不同需求的廣大用戶(hù),其程序代碼相當(dāng)冗長(zhǎng)而復(fù)雜,涉及范圍也最全面。而嵌入式處理器常常是針對(duì)一定的應(yīng)用進(jìn)行設(shè)計(jì),處理器內(nèi)部除了邏輯算術(shù)運(yùn)算單元、MMU和cache外,還集成了特定應(yīng)用所需要的外設(shè)控制單元,比如以太網(wǎng)MAC、USBhost、IJSBclient、iic、uART、PCI、IDE、SPI等控制器,嵌入式處理器常常使用精簡(jiǎn)指令集RISC,每條指令的長(zhǎng)度和執(zhí)行時(shí)間都是固定的,而且嵌入式處理器的內(nèi)存空間與I/O空間通常都是統(tǒng)一尋址的。另外嵌入式系統(tǒng)中一般都是把所有程序都燒寫(xiě)到非易失存儲(chǔ)設(shè)備(如flash、EPROM等)上,系統(tǒng)加電后又把全部程序搬到內(nèi)存中運(yùn)行。嵌入式系統(tǒng)中的軟件是根據(jù)特定需求編寫(xiě)的,相對(duì)較小且精簡(jiǎn)。從系統(tǒng)功能上講,用x86架構(gòu)處理器設(shè)計(jì)出的臺(tái)式機(jī)或者筆記本電腦,主要通過(guò)人機(jī)交互實(shí)現(xiàn)其功能,而用嵌入式處理器設(shè)計(jì)出的產(chǎn)品則一般都被嵌入在某種設(shè)備中自動(dòng)完成功能。在嵌入式系統(tǒng)開(kāi)發(fā)過(guò)程中,用x86架構(gòu)處理器設(shè)計(jì)的電腦常常用作嵌入式系統(tǒng)開(kāi)發(fā)主機(jī),用來(lái)編輯和交叉編譯嵌入式處理器的程序代碼,外部連接一定的調(diào)試仿真設(shè)備還可以對(duì)嵌入式系統(tǒng)進(jìn)行調(diào)試仿真。

編輯推薦

《嵌入式系統(tǒng)Linux內(nèi)核開(kāi)發(fā)實(shí)戰(zhàn)指南(ARM平臺(tái))》特色:技術(shù)總監(jiān)辭職一年精心寫(xiě)作作者希望認(rèn)識(shí)技術(shù)水平超越《嵌入式系統(tǒng)Linux內(nèi)核開(kāi)發(fā)實(shí)戰(zhàn)指南(ARM平臺(tái))》內(nèi)容的頂尖專(zhuān)家對(duì)于經(jīng)驗(yàn)非常豐富的高手,可以參照詳細(xì)目錄直接閱讀代碼透析Linux內(nèi)核實(shí)現(xiàn)原理的相關(guān)章節(jié)對(duì)于入行多年的工程師,《嵌入式系統(tǒng)Linux內(nèi)核開(kāi)發(fā)實(shí)戰(zhàn)指南(ARM平臺(tái))》包合作者10多年的實(shí)戰(zhàn)經(jīng)驗(yàn)與技能,讓你遇到難題不求人對(duì)于剛起步的初學(xué)者,《嵌入式系統(tǒng)Linux內(nèi)核開(kāi)發(fā)實(shí)戰(zhàn)指南(ARM平臺(tái))》詳細(xì)介紹了嵌入式Linux開(kāi)發(fā)流程和方法,讓你快速入門(mén),不走彎路

圖書(shū)封面

圖書(shū)標(biāo)簽Tags

無(wú)

評(píng)論、評(píng)分、閱讀與下載


    嵌入式系統(tǒng)Linux內(nèi)核開(kāi)發(fā)實(shí)戰(zhàn)指南 PDF格式下載


用戶(hù)評(píng)論 (總計(jì)39條)

 
 

  •   從簡(jiǎn)至深的詳細(xì)介紹LINUX操作系統(tǒng),配有硬件實(shí)踐資料。很不錯(cuò)!
  •   對(duì)工作 學(xué)習(xí),提高技術(shù)很有幫助。
  •   寫(xiě)的很詳細(xì),很好的一本工具書(shū)
  •   正在讀這本書(shū)。在學(xué)校圖書(shū)館已經(jīng)看到了第七章。非常棒的一本書(shū)。
  •   書(shū)還不錯(cuò) 太厚了
  •   剛收到,書(shū)還沒(méi)看,但包裝還可以,快遞比較給力。
  •   這書(shū)質(zhì)量很好,很厚!
  •   講解很細(xì)致 全面,適合各路人員參考
  •   應(yīng)該說(shuō)是參考手冊(cè)
  •   介紹linux函數(shù)的部分太多,對(duì)與開(kāi)發(fā)的過(guò)程介紹的不夠詳細(xì)!
  •   可以當(dāng)作啟蒙書(shū)和手冊(cè)用,雖然很厚,但有些地方仍然寫(xiě)的語(yǔ)焉不詳,對(duì)于初學(xué)者可能僅有引導(dǎo)作用,對(duì)高級(jí)開(kāi)發(fā)人員又稍顯淺薄。個(gè)人認(rèn)為里面可能還應(yīng)該加一下以模擬器調(diào)試的部分,估計(jì)作者本人也只是在板子上開(kāi)發(fā),沒(méi)有用過(guò)模擬器??傮w來(lái)說(shuō)是本可以用得上的書(shū)。
  •   講的面太多了,不夠詳細(xì)啊,貌似要有很好基礎(chǔ)的才看得
  •   書(shū)比較臟了,看來(lái)買(mǎi)的人不多啊,倉(cāng)庫(kù)該好好收拾一下了
  •   前面砍得還可以,后面就看不下去了,可能是我水平太差了!
  •   還好,就是頁(yè)數(shù)太多,有壓力?。。?/li>
  •   這是一本linux函數(shù)查詢(xún)手冊(cè)。
  •   不知你懂沒(méi)?我反正是不懂了
  •   是一本很好的參考手冊(cè)
  •   今天剛拿到書(shū),送貨速度倒是很快的,不過(guò)我覺(jué)得這本書(shū)的含金量不咋地,買(mǎi)了有點(diǎn)后悔?!凹夹g(shù)總監(jiān)辭職一年精心寫(xiě)作”,1100多頁(yè)的書(shū)一年寫(xiě)成,夠高效。原來(lái)這1k多頁(yè)的大部頭絕大部分在介紹linux的api函數(shù),有點(diǎn)像api使用手冊(cè)了,以前買(mǎi)了本“Linux內(nèi)核完全剖析”,我覺(jué)得linux函數(shù)使用說(shuō)明什么的不應(yīng)該是本書(shū)重點(diǎn),可以通過(guò)其他途徑查詢(xún)吧?重點(diǎn)應(yīng)該是在arm平臺(tái)的“實(shí)戰(zhàn)”上吧?當(dāng)然,每個(gè)讀者的胃口不一樣,書(shū)也是剛拿到,沒(méi)細(xì)看,只是大致翻了一下,本沒(méi)資格評(píng)論什么的,只是拿到書(shū)后第一感覺(jué),跟自己購(gòu)買(mǎi)前的期望落差太大了,心里不大爽,發(fā)點(diǎn)牢騷。
  •   我的larafing@***.***的評(píng)論一樣
    簡(jiǎn)直就是一個(gè)linux內(nèi)核函數(shù)參考手冊(cè)
    我不懷疑作者本身的技術(shù)能力,可能技術(shù)還是可以的
    不過(guò)寫(xiě)書(shū)...真是語(yǔ)無(wú)倫次
    嵌入式系統(tǒng)對(duì)初級(jí)水平的人而言,最多的問(wèn)題都在內(nèi)核版本和開(kāi)發(fā)環(huán)境,以及移植的問(wèn)題上.
    但這本書(shū)根本學(xué)不到這些基本的知識(shí).
    反過(guò)來(lái)說(shuō),這本書(shū)是針對(duì)中高級(jí)水平嗎? 絕不可能.
    中高級(jí)水平用不著再看這種貨色的書(shū).
    這么厚的書(shū),這么貴的書(shū),也是超爛的書(shū),要多爛有多爛.
  •   正在看當(dāng)中,,,
  •   我是一個(gè)初學(xué)者,購(gòu)買(mǎi)之前看到此書(shū)的目錄,覺(jué)得很全面。購(gòu)買(mǎi)之后,內(nèi)容沒(méi)有我認(rèn)為的那么好。許多章節(jié),內(nèi)容過(guò)于簡(jiǎn)單,例子陳舊。例子不是面向ARM9的。還有作者編書(shū)的水平一般,許多內(nèi)容說(shuō)的含糊,過(guò)于簡(jiǎn)化。前言說(shuō)得很感人,目錄編得很誘人,內(nèi)容寫(xiě)得很一般。作者是專(zhuān)家,但寫(xiě)出得東西不適合別人閱讀??偸牵贿m合初學(xué)者使用。
  •   基本不適合初學(xué)者使用,因?yàn)槟愀觯强隙ㄗ霾怀鰜?lái)的,這本書(shū)差不多就是嵌入式系統(tǒng)的理論和計(jì)算機(jī)組成原理的結(jié)合版,感覺(jué)自己在看計(jì)算機(jī)組成原理比較多而且貴,當(dāng)枕頭差不多
  •   我只能說(shuō)買(mǎi)虧了,新手看著這本書(shū)會(huì)頭大,老手看這本書(shū)會(huì)郁悶,可能我水平到一定程度后會(huì)有所共鳴吧
  •   嵌入式開(kāi)發(fā)的書(shū)都過(guò)于偏重一個(gè)重點(diǎn),所以真正能講透講好的書(shū)不多。這本起碼在Linux方面還是非常不錯(cuò)的,不過(guò)對(duì)于硬件開(kāi)發(fā)以及入門(mén)級(jí)的開(kāi)發(fā)者,我不推薦。因?yàn)楫吘惯@是一本很需要基礎(chǔ)的書(shū)。我給這本書(shū)打4分,是因?yàn)槠鋵?duì)于嵌入式Linux開(kāi)發(fā)講得比較透徹,是學(xué)習(xí)嵌入式Linux開(kāi)發(fā)不可多得的好書(shū)!
  •   對(duì)于arm 的結(jié)構(gòu)說(shuō)得比較多對(duì)硬件了解會(huì)有一定增加,但都停留在比較淺顯的水平,內(nèi)核的東西講得太少。書(shū)很貴,完全不值這個(gè)價(jià)
  •   書(shū)不錯(cuò),好好學(xué)習(xí)了準(zhǔn)備
  •   如果你想成為高手,這本書(shū)是必不可少的,它能讓你步入精彩的Linux世界
  •   這書(shū)的介紹說(shuō)什么不會(huì)讓初學(xué)者走彎路,恩,彎路是沒(méi)走,因?yàn)楦緹o(wú)路可走!怎么連板怎么下載都不說(shuō),你是覺(jué)得所有初學(xué)者都是僅僅不懂操作系統(tǒng)的人嘛?!
  •   性?xún)r(jià)比不高,貌似現(xiàn)在也沒(méi)啥用
  •   送貨很快,質(zhì)量挺好
  •   這本書(shū)有些地方還是講得很好,不過(guò)很多地方是在深入分析遇到的每個(gè)函數(shù).我給3個(gè)星
  •   寫(xiě)的不詳細(xì)。而且太厚,看一會(huì)手都酸了,也不弄個(gè)上下冊(cè)
  •   感覺(jué)就是拼湊而已。買(mǎi)了覺(jué)得很失望。
  •   想好好看一下
  •   買(mǎi)回當(dāng)工具書(shū)看,
  •   挺好的數(shù)啊
  •   書(shū)好重,內(nèi)容還沒(méi)仔細(xì)讀
  •   作者集十多年工作經(jīng)驗(yàn)于書(shū)。
 

250萬(wàn)本中文圖書(shū)簡(jiǎn)介、評(píng)論、評(píng)分,PDF格式免費(fèi)下載。 第一圖書(shū)網(wǎng) 手機(jī)版

京ICP備13047387號(hào)-7