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