書單推薦 新書推薦 |
嵌入式Linux系統(tǒng)與工程實(shí)踐(第2版) ![]()
本書以Linux嵌入式系統(tǒng)的基本開發(fā)技術(shù)為主線,以基于ARM架構(gòu)的嵌入式處理器為嵌入式硬件平臺(tái),全面介紹嵌入式系統(tǒng)開發(fā)過程、ARM體系結(jié)構(gòu)、Linux基礎(chǔ)、Linux進(jìn)程、Linux開發(fā)環(huán)境的建立、Linux操作系統(tǒng)移植、Bootloader的使用、Linux根文件系統(tǒng)的構(gòu)建、設(shè)備驅(qū)動(dòng)程序的開發(fā)、嵌入式GUI開發(fā)等嵌入式知識(shí),*后介紹近年來較為熱門的GPS導(dǎo)航系統(tǒng)的設(shè)計(jì)。 本書在*版的基礎(chǔ)上進(jìn)行改版,結(jié)合眾多讀者的返饋意見,優(yōu)化了內(nèi)容結(jié)構(gòu)和程序代碼,實(shí)例操作配有視頻講解。
本書是在第1版的基礎(chǔ)上,結(jié)合眾多讀者的反饋意見進(jìn)行改版,對圖書內(nèi)容和實(shí)例程序代碼等進(jìn)行了優(yōu)化,對書中實(shí)例全部配有視頻講解,使讀者能夠輕松掌握書中知識(shí),并盡快應(yīng)用于實(shí)際工作中。本書實(shí)例代碼和視頻等素材,請讀者到華信教育資源網(wǎng)的本書頁面下載(www.hxedu.com.cn)。
前 言
嵌入式系統(tǒng)已經(jīng)廣泛地滲透到航空航天、汽車電子、醫(yī)療網(wǎng)絡(luò)通信、工業(yè)控制等各個(gè)領(lǐng)域,正在以不同的形式悄悄地改變著人們的生產(chǎn)、生活方式,已經(jīng)成為當(dāng)今計(jì)算機(jī)領(lǐng)域的一個(gè)亮點(diǎn)。嵌入式系統(tǒng)和Linux的有機(jī)結(jié)合,成為后PC時(shí)代計(jì)算機(jī)最普遍的應(yīng)用形式。嵌入式Linux不僅繼承了Linux源代碼開放、內(nèi)核穩(wěn)定高效、軟件豐富、強(qiáng)大的網(wǎng)絡(luò)支持功能、優(yōu)秀的開發(fā)工具等優(yōu)勢,還具備支持廣泛的處理器結(jié)構(gòu)和硬件平臺(tái)占有空間小、成本低等特點(diǎn)。 嵌入式Linux需要相應(yīng)的嵌入式開發(fā)板和軟件,還需要有經(jīng)驗(yàn)的人員進(jìn)行指導(dǎo)開發(fā),目前國內(nèi)大部分高校都很難達(dá)到這種要求,這也造成了目前國內(nèi)嵌入式Linux開發(fā)人才極其缺乏的局面。 從技術(shù)角度來講,嵌入式系統(tǒng)是軟件和硬件的有機(jī)結(jié)合體。一名合格的嵌入式系統(tǒng)設(shè)計(jì)人員往往要求同時(shí)具備軟件和硬件兩方面的知識(shí)。因此,這也是編寫本書的目的所在。 本書分為4篇12章,涉及嵌入式系統(tǒng)開發(fā)基礎(chǔ)、嵌入式Linux開發(fā)入門、嵌入式系統(tǒng)移植與構(gòu)建、嵌入式系統(tǒng)開發(fā)四大部分內(nèi)容,依次介紹嵌入式系統(tǒng)基本概念、嵌入式系統(tǒng)開發(fā)過程與工具、嵌入式處理器體系結(jié)構(gòu)、Linux基礎(chǔ)概述、Linux內(nèi)核、Linux開發(fā)環(huán)境建立、Linux操作系統(tǒng)移植、Bootloader的使用、Linux根文件系統(tǒng)的構(gòu)建、設(shè)備驅(qū)動(dòng)程序開發(fā)、嵌入式GUI開發(fā)、綜合工程實(shí)例等內(nèi)容。 第1章 嵌入式系統(tǒng)介紹。本章首先介紹嵌入式系統(tǒng)的組成部分、處理器、常見的嵌入式操作系統(tǒng)和新型的嵌入式操作系統(tǒng),然后介紹嵌入式系統(tǒng)的應(yīng)用,最后講述嵌入式系統(tǒng)的發(fā)展趨勢。 第2章 嵌入式系統(tǒng)開發(fā)過程與工具。本章首先講述嵌入式軟件的開發(fā)流程和軟件測試技術(shù),重點(diǎn)介紹基于JTAG的ARM系統(tǒng)調(diào)試。通過綜合實(shí)例掌握ADS集成開發(fā)環(huán)境的使用。 第3章 嵌入式處理器體系結(jié)構(gòu)。本章主要介紹ARM體系結(jié)構(gòu)的組成部分、技術(shù)特征、ARM微處理器的分類和應(yīng)用選型。接著,重點(diǎn)以S3C2410處理器為例進(jìn)行講述,并詳細(xì)介紹ARM編程模型、ARM指令的尋址方式和ARM指令集的使用。最后,描述了ARM微處理器的異常情況。 第4章 Linux開發(fā)常用操作。本章首先講述Linux的概況,然后分別介紹Linux命令和vi編輯器的使用。接著,講述Shell程序設(shè)計(jì)語言的使用。最后,通過講述編寫清除/var/log下的log文件和編寫尋找死鏈接文件兩個(gè)綜合實(shí)例的操作,掌握Shell編程的具體使用。 第5章 Linux內(nèi)核介紹。本章首先講述進(jìn)程結(jié)構(gòu)的控制操作和屬性,然后分別介紹管道、信號、信號量、共享內(nèi)存和消息隊(duì)列的使用,最后通過多個(gè)實(shí)例的操作,使讀者掌握進(jìn)程的具體使用。 第6章 Linux開發(fā)環(huán)境的構(gòu)建。本章首先講述Cygwin和VMware Workstation兩種開發(fā)環(huán)境的建立,介紹建立交叉編譯環(huán)境的主要過程。然后分別介紹gcc編輯器和gdb調(diào)試器的使用方法。最后詳細(xì)講解Makefile變量的使用以及隱含規(guī)則的應(yīng)用。通過多個(gè)實(shí)例的操作,使讀者掌握Linux開發(fā)環(huán)境的建立。 第7章 Bootloader的移植。本章首先介紹Bootloader的工作模式,講述Bootloader的啟動(dòng)方式和流程。然后詳細(xì)介紹vivi代碼的兩個(gè)階段,并重點(diǎn)介紹vivi的配置與編譯、U-boot常用命令和源代碼目錄結(jié)構(gòu),講述U-boot的啟動(dòng)模式和啟動(dòng)流程,并重點(diǎn)介紹U-boot在S3C2410上的移植。最后簡單介紹其他常見的Bootloader,通過多個(gè)實(shí)例的操作,使讀者掌握Bootloader的使用。 第8章 Linux內(nèi)核裁剪和移植。本章主要介紹Linux操作系統(tǒng)移植知識(shí),重點(diǎn)講述Linux內(nèi)核結(jié)構(gòu)和操作系統(tǒng)移植,通過多個(gè)綜合實(shí)例的操作,使讀者掌握Linux操作系統(tǒng)的移植技術(shù)。 第9章Linux根文件系統(tǒng)的構(gòu)建。本章首先講述文件系統(tǒng),然后利用BusyBox構(gòu)建根文件系統(tǒng),使讀者對根文件系統(tǒng)有全面的了解。 第10章 設(shè)備驅(qū)動(dòng)程序開發(fā)。本章首先講述Linux設(shè)備驅(qū)動(dòng)程序的分類,包括字符設(shè)備、塊設(shè)備、網(wǎng)絡(luò)設(shè)備;驅(qū)動(dòng)程序在Linux中的層次結(jié)構(gòu)和其特點(diǎn)。然后對設(shè)備驅(qū)動(dòng)程序與文件系統(tǒng)的關(guān)系、Linux設(shè)備驅(qū)動(dòng)程序的接口、Linux驅(qū)動(dòng)程序的加載方法及其步驟進(jìn)行分析。接著,講述設(shè)備驅(qū)動(dòng)程序的使用、網(wǎng)絡(luò)設(shè)備的基礎(chǔ)知識(shí)和網(wǎng)絡(luò)設(shè)備驅(qū)動(dòng)程序的體系結(jié)構(gòu)、模塊分析、實(shí)現(xiàn)模式。最后,通過多個(gè)實(shí)例的操作,使讀者掌握設(shè)備驅(qū)動(dòng)程序的具體使用。 第11章 嵌入式常用GUI開發(fā)。本章主要介紹各種嵌入式GUI的相關(guān)知識(shí),包括MiniGUI的實(shí)現(xiàn)、Qt/E的界面編程和Qtopia移植等。大部分知識(shí)點(diǎn)后面都有相關(guān)的實(shí)例,介紹其內(nèi)容的具體應(yīng)用。通過本章的學(xué)習(xí),應(yīng)該掌握如何建立Qt/Embedded的開發(fā)環(huán)境及編寫Qt/Embedded或Qtopia程序的開發(fā)流程。 第12章 嵌入式系統(tǒng)綜合工程實(shí)例。本章主要介紹文件系統(tǒng)的構(gòu)建和燒寫、數(shù)碼相框、基于Linux的Mplayer解碼播放器和基于Linux的GPS導(dǎo)航系統(tǒng)的開發(fā)實(shí)例。在開發(fā)這些工程實(shí)例的過程中,熟悉Linux系統(tǒng)在嵌入式方面的應(yīng)用,熟悉其他章節(jié)的知識(shí)在開發(fā)中的具體應(yīng)用。 本書主要由戴璐平、何淵仁、吳志男完成編寫,本書是在第1版的基礎(chǔ)上,結(jié)合眾多讀者的返饋意見進(jìn)行改版,對圖書內(nèi)容和實(shí)例程序代碼等進(jìn)行了優(yōu)化,對書中實(shí)例全部配有視頻講解,使讀者能夠輕松掌握書中知識(shí),并盡快應(yīng)用于實(shí)際工作中,本書實(shí)例代碼和視頻等素材,請讀者到華信教育資源網(wǎng)下載(www.hxedu.com.cn)。但由于作者教學(xué)任務(wù)重、時(shí)間緊,書中仍會(huì)有不妥之處,請讀者批評指正,讀者可通過電子郵件xucq@phei.com.cn與我們交流。
江西師范大學(xué)畢業(yè)后,一直在宜春學(xué)院任教,從講師到教授,到系副主任,堅(jiān)持在教學(xué)一線,教學(xué)經(jīng)驗(yàn)豐富。主持或作為骨干成員參加多項(xiàng)*和省部級課題,省文化科技創(chuàng)新工程項(xiàng)目1項(xiàng),省部級中青年骨干教師。
目 錄
第一篇 嵌入式系統(tǒng)開發(fā)基礎(chǔ) 第1章 嵌入式系統(tǒng)介紹(1) 1.1 嵌入式系統(tǒng)的概念(1) 1.1.1 嵌入式系統(tǒng)的定義(1) 1.1.2 嵌入式系統(tǒng)的特點(diǎn)(2) 1.2 嵌入式系統(tǒng)的組成(2) 1.2.1 嵌入式處理器(3) 1.2.2 外圍設(shè)備(3) 1.2.3 嵌入式操作系統(tǒng)(3) 1.2.4 應(yīng)用軟件(3) 1.3 嵌入式處理器(4) 1.3.1 嵌入式處理器的分類(4) 1.3.2 嵌入式微處理器(5) 1.3.3 嵌入式微控制器(5) 1.3.4 嵌入式DSP處理器(6) 1.3.5 嵌入式片上系統(tǒng)(6) 1.3.6 選擇嵌入式處理器(7) 1.4 嵌入式操作系統(tǒng)(7) 1.4.1 操作系統(tǒng)的概念和分類(8) 1.4.2 實(shí)時(shí)操作系統(tǒng)(8) 1.4.3 常用的嵌入式操作系統(tǒng)(10) 1.5 新型的嵌入式操作系統(tǒng)(13) 1.5.1 Android(13) 1.5.2 MontaVista(15) 1.6 嵌入式系統(tǒng)的應(yīng)用(15) 1.7 嵌入式系統(tǒng)的發(fā)展趨勢(18) 1.7.1 嵌入式系統(tǒng)面臨的挑戰(zhàn)(18) 1.7.2 嵌入式系統(tǒng)的發(fā)展前景(19) 1.8 本章小結(jié)(20) 第2章 嵌入式軟件開發(fā)過程與工具(21) 2.1 嵌入式軟件開發(fā)介紹(21) 2.1.1 嵌入式軟件開發(fā)的特殊性(21) 2.1.2 嵌入式軟件的分類(22) 2.1.3 嵌入式軟件的開發(fā)流程(22) 2.1.4 嵌入式軟件開發(fā)工具的發(fā)展趨勢(24) 2.2 嵌入式軟件的調(diào)試技術(shù)(25) 2.2.1 調(diào)試技術(shù)介紹(25) 2.2.2 基于JTAG的ARM系統(tǒng)調(diào)試(26) 2.3 嵌入式軟件測試技術(shù)(27) 2.3.1 宿主機(jī)目標(biāo)機(jī)開發(fā)模式(27) 2.3.2 目標(biāo)監(jiān)控器(28) 2.4 嵌入式系統(tǒng)集成開發(fā)環(huán)境(30) 2.4.1 ADS的介紹(30) 2.4.2 ADS建立工程的使用介紹(32) 2.4.3 AXD調(diào)試器的使用介紹(37) 實(shí)例2-1 ARM開發(fā)環(huán)境ADS的使用實(shí)例(39) 2.5 本章小結(jié)(43) 第3章 嵌入式處理器體系結(jié)構(gòu)(44) 3.1 ARM體系結(jié)構(gòu)概述(44) 3.1.1 ARM體系結(jié)構(gòu)簡介(45) 3.1.2 ARM體系結(jié)構(gòu)的技術(shù)特征(47) 3.1.3 CISC的體系結(jié)構(gòu)(48) 3.1.4 RISC的體系結(jié)構(gòu)(48) 3.1.5 RISC系統(tǒng)和CISC系統(tǒng)的比較(50) 3.2 ARM微處理器的分類(51) 3.2.1 ARM7微處理器(51) 3.2.2 ARM9微處理器(52) 3.2.3 ARM9E微處理器(52) 3.2.4 ARM10E微處理器(53) 3.2.5 ARM11微處理器(54) 3.2.6 SecurCore微處理器(54) 3.2.7 StrongARM微處理器(54) 3.2.8 XScale微處理器(55) 3.3 ARM微處理器的應(yīng)用(55) 3.3.1 ARM微處理器的應(yīng)用選型(55) 3.3.2 S3C2410處理器(56) 3.4 存儲(chǔ)器(57) 3.4.1 存儲(chǔ)器簡介(57) 3.4.2 SDRAM操作(59) 3.4.3 Flash(60) 3.5 ARM編程模型(61) 3.5.1 數(shù)據(jù)類型(61) 3.5.2 存儲(chǔ)器格式(62) 3.5.3 處理器工作狀態(tài)(62) 3.5.4 處理器運(yùn)行模式(63) 3.5.5 寄存器組織(63) 3.5.6 內(nèi)部寄存器(66) 3.6 ARM指令的尋址方式(67) 3.6.1 立即尋址(67) 3.6.2 寄存器尋址(68) 3.6.3 寄存器間接尋址(68) 3.6.4 相對尋址(69) 3.6.5 堆棧尋址(69) 3.6.6 塊復(fù)制尋址(70) 3.6.7 變址尋址(70) 3.6.8 多寄存器尋址(71) 3.7 ARM指令集(71) 3.7.1 ARM指令的格式(71) 3.7.2 ARM指令分類(72) 3.7.3 Thumb指令介紹(78) 3.7.4 Thumb指令分類(79) 3.7.5 ARM指令集和Thumb指令集的區(qū)別(82) 3.8 ARM微處理器的異常(83) 3.8.1 ARM體系結(jié)構(gòu)所支持的異常類型(84) 3.8.2 異常矢量表(85) 3.8.3 異常優(yōu)先級(85) 3.8.4 應(yīng)用程序中的異常處理(86) 3.8.5 各類異常的具體描述(87) 3.9 本章小結(jié)(91) 第二篇 Linux開發(fā)入門 第4章 Linux開發(fā)常用操作(92) 4.1 Linux系統(tǒng)介紹(92) 4.1.1 Linux的概況(93) 4.1.2 Linux操作系統(tǒng)的構(gòu)成(94) 4.1.3 Linux常見的發(fā)行版本(95) 4.1.4 Linux內(nèi)核的特點(diǎn)(97) 4.2 Linux命令的使用(98) 4.3 vi編輯器的使用(108) 4.3.1 vi編輯器的進(jìn)入(108) 4.3.2 命令模式的命令(109) 4.3.3 末行模式的命令(110) 實(shí)例4-1 vi編輯器使用實(shí)例(110) 4.4 Shell編程(112) 4.4.1 Shell基礎(chǔ)介紹(112) 4.4.2 Shell程序的變量和參數(shù)(114) 4.4.3 運(yùn)行Shell程序(116) 4.4.4 Shell程序設(shè)計(jì)的流程控制(117) 4.4.5 Shell輸入與輸出(121) 4.4.6 bash介紹(123) 4.5 綜合實(shí)例(124) 實(shí)例4-2 編寫清除/var/log下的log文件綜合實(shí)例(124) 實(shí)例4-3 編寫尋找死鏈接文件綜合實(shí)例(127) 4.6 本章小結(jié)(131) 第5章 Linux內(nèi)核介紹(132) 5.1 進(jìn)程概述(132) 5.1.1 進(jìn)程結(jié)構(gòu)(133) 5.1.2 進(jìn)程的控制操作(134) 5.1.3 進(jìn)程的屬性(136) 5.1.4 進(jìn)程的創(chuàng)建和調(diào)度(137) 5.1.5 Linux進(jìn)程命令(139) 5.2 系統(tǒng)調(diào)用(143) 5.2.1 系統(tǒng)調(diào)用概述(143) 5.2.2 系統(tǒng)調(diào)用的進(jìn)入(144) 5.2.3 與進(jìn)程管理相關(guān)的系統(tǒng)調(diào)用(145) 5.3 管道(145) 5.3.1 管道系統(tǒng)調(diào)用(145) 5.3.2 管道的分類(147) 實(shí)例5-1 管道通信實(shí)例(148) 5.4 信號(150) 5.4.1 常見的信號種類(150) 5.4.2 系統(tǒng)調(diào)用函數(shù)(151) 5.4.3 信號的處理(152) 5.4.4 信號與系統(tǒng)調(diào)用的關(guān)系(152) 實(shí)例5-2 信號實(shí)例(153) 5.5 信號量(154) 5.5.1 信號量概述(154) 5.5.2 相關(guān)的數(shù)據(jù)結(jié)構(gòu)(155) 5.5.3 相關(guān)的函數(shù)(157) 實(shí)例5-3 信號量實(shí)例(158) 5.6 共享內(nèi)存(163) 5.6.1 共享內(nèi)存原理(163) 5.6.2 共享內(nèi)存對象的結(jié)構(gòu)(164) 5.6.3 相關(guān)的函數(shù)(165) 實(shí)例5-4 共享內(nèi)存實(shí)例(166) 5.7 消息隊(duì)列(171) 5.7.1 有關(guān)的數(shù)據(jù)結(jié)構(gòu)(171) 5.7.2 相關(guān)的函數(shù)(174) 實(shí)例5-5 消息隊(duì)列實(shí)例(176) 5.8 綜合實(shí)例(179) 實(shí)例5-6 多線程編程實(shí)例(179) 5.9 本章小結(jié)(180) 第6章 Linux開發(fā)環(huán)境的構(gòu)建(181) 6.1 建立Linux開發(fā)環(huán)境概述(181) 6.1.1 Cygwin開發(fā)環(huán)境(181) 6.1.2 VMware Workstation開發(fā)環(huán)境(183) 6.2 交叉編譯的使用(185) 6.2.1 GNU交叉工具鏈的設(shè)置(185) 6.2.2 ARM GNU常用匯編語言(188) 6.2.3 GNU交叉工具鏈的常用工具(190) 6.2.4 交叉編譯環(huán)境(193) 6.3 Linux下的C編程(196) 6.3.1 Linux程序設(shè)計(jì)特點(diǎn)(196) 6.3.2 Linux下C語言編碼的風(fēng)格(197) 6.3.3 Linux程序基礎(chǔ)(197) 6.3.4 Linux下C編程的庫依賴(199) 6.4 gcc的使用與開發(fā)(199) 6.4.1 gcc簡介和使用(199) 6.4.2 gcc選項(xiàng)(200) 6.4.3 gcc的錯(cuò)誤類型(203) 實(shí)例6-1 gcc編譯器環(huán)境的應(yīng)用實(shí)例(204) 6.5 gdb調(diào)試器的介紹和使用(205) 6.5.1 gdb調(diào)試器的使用(205) 6.5.2 在gdb中運(yùn)行程序(206) 6.5.3 暫停和恢復(fù)程序運(yùn)行(208) 6.5.4 遠(yuǎn)程調(diào)試(211) 實(shí)例6-2 gdb調(diào)試器環(huán)境的應(yīng)用實(shí)例(211) 6.6 GNU make和Makefile的使用(213) 6.6.1 Makefile的基本結(jié)構(gòu)(214) 6.6.2 Makefile的變量(215) 6.6.3 Makefile的隱含規(guī)則(217) 6.6.4 Makefile的命令使用(220) 6.6.5 Makefile的函數(shù)使用(221) 6.6.6 Makefile文件的運(yùn)行(223) 6.6.7 Makefile規(guī)則書寫命令(225) 實(shí)例6-3 Makefile的命令使用實(shí)例(231) 6.7 autoconf和automake的使用(233) 6.7.1 autoconf的使用(233) 6.7.2 Makefile.am的編寫(236) 6.7.3 automake的使用(236) 6.7.4 使用automake和autoconf產(chǎn)生Makefile(237) 6.7.5 自動(dòng)生成Makefile的方法(237) 6.8 綜合實(shí)例(238) 實(shí)例6-4 gcc編譯器的綜合實(shí)例(238) 實(shí)例6-5 gdb調(diào)試器的綜合實(shí)例(241) 實(shí)例6-6 Makefile的綜合實(shí)例(244) 6.9 本章小結(jié)(246) 第三篇 嵌入式系統(tǒng)移植與構(gòu)建 第7章 Bootloader的使用(247) 7.1 Bootloader 概述(248) 7.1.1 Bootloader的作用(248) 7.1.2 Bootloader的功能(249) 7.1.3 Bootloader的種類(250) 7.1.4 Bootloader的工作模式(251) 7.1.5 Bootloader的啟動(dòng)方式(251) 7.1.6 Bootloader的啟動(dòng)流程(253) 7.1.7 Bootloader與主機(jī)的通信(253) 7.2 vivi的移植(253) 7.2.1 vivi的常用命令和文件結(jié)構(gòu)(254) 7.2.2 vivi第一階段的分析(255) 7.2.3 vivi第二階段的分析(261) 7.2.4 vivi的配置與編譯(263) 7.3 U-boot的移植(264) 7.3.1 U-boot常用命令和源代碼目錄結(jié)構(gòu)(264) 7.3.2 U-boot支持的主要功能(268) 7.3.3 U-boot的編譯和添加命令(268) 7.3.4 U-boot的啟動(dòng)介紹(272) 7.3.5 U-boot的移植和使用(273) 7.3.6 U-boot的啟動(dòng)過程(275) 7.3.7 U-boot的調(diào)試(276) 7.4 其他常見的Bootloader(278) 7.5 綜合實(shí)例(280) 實(shí)例7-1 vivi編譯實(shí)例(280) 實(shí)例7-2 U-boot在S3C2410上的移植實(shí)例(281) 實(shí)例7-3 Bootloader設(shè)計(jì)實(shí)例(283) 7.6 本章小結(jié)(285) 第8章 Linux內(nèi)核裁剪與移植(286) 8.1 Linux移植簡介(286) 8.1.1 Linux可移植性發(fā)展(287) 8.1.2 Linux的移植性(287) 8.2 Linu
你還可能感興趣
我要評論
|





