定 價:44.8 元
叢書名:普通高等教育“十三五”電子信息類規(guī)劃教材
- 作者:張平均 歐忠良 黃家善
- 出版時間:2019/2/1
- ISBN:9787111615231
- 出 版 社:機械工業(yè)出版社
- 中圖法分類:TP332
- 頁碼:
- 紙張:膠版紙
- 版次:
- 開本:16開
本書以S3C2440嵌入式處理器為核心,介紹嵌入式系統(tǒng)的原理與結構、Linux驅動及編程基礎、嵌入式系統(tǒng)開發(fā)環(huán)境的搭建、嵌入式系統(tǒng)開發(fā)和調試工具、嵌入式Linux系統(tǒng)的驅動及應用程序設計、SQLite數(shù)據(jù)庫的嵌入式應用及實例開發(fā)。本書內容具有系統(tǒng)性與實用性相結合的特點,在注重嵌入式系統(tǒng)軟件與硬件知識的講解的同時,加強了對Linux系統(tǒng)的應用基礎與開發(fā)技術的介紹,也兼顧了Linux系統(tǒng)在GUI和數(shù)據(jù)庫等方面的應用。
嵌入式系統(tǒng)是軟硬件相結合、創(chuàng)新與應用相結合的工程復雜性系統(tǒng),它涉及信息處理與通信、電子科學、計算機等多學科的知識與技能。嵌入式系統(tǒng)已經(jīng)廣泛地應用于通信及消費類電子、傳感與檢測、工業(yè)控制、物聯(lián)網(wǎng)和多媒體應用等諸多領域。
全書分為8章。第1章介紹嵌入式系統(tǒng)的基本概念和特征,嵌入式處理器和嵌入式操作系統(tǒng)的主要類型及其發(fā)展,嵌入式Linux應用系統(tǒng)的開發(fā)流程;第2章介紹Linux常用shell命令的使用,Linux下的程序開發(fā)的工具軟件,為在Linux環(huán)境下的嵌入式開發(fā)提供技術基礎;第3章介紹嵌入式Linux交叉編譯環(huán)境的搭建,基于開源代碼UBoot對S3C2440的配置編譯與移植,基于Linux2.6的內核源代碼,實現(xiàn)S3C2440目標平臺的嵌入式Linux內核配置編譯與移植,基于BusyBox構建嵌入式Linux根文件系統(tǒng)及其移植,為后續(xù)的驅動程序與應用程序的開發(fā)提供板級軟件環(huán)境的支持;第4章介紹Linux系統(tǒng)的設備管理體系結構,Linux的驅動程序接口函數(shù)與數(shù)據(jù)結構;第5章介紹ARM CPU S3C2440的性能與電氣特性,介紹其引腳定義、相關寄存器配置及其驅動程序代碼設計;第6章介紹幾種流行的嵌入式GUI開發(fā)軟件,以Qt為例,介紹嵌入式應用程序設計的編程方法及其要求,并給出了設計實例;第7章以SQLite為例,介紹數(shù)據(jù)庫在嵌入式系統(tǒng)中的應用設計基礎,包含數(shù)據(jù)庫的基本結構原理,數(shù)據(jù)庫的命令及其API的應用基礎,最后給出了應用實例;第8章給出了嵌入式系統(tǒng)應用開發(fā)的幾個實例。全書涵蓋了嵌入式數(shù)據(jù)采集與通信、嵌入式游戲開發(fā)、嵌入式數(shù)據(jù)庫和Qt應用編程等內容,致力于培養(yǎng)學生的動手能力,使學生能夠掌握嵌入式系統(tǒng)應用設計的基本方法、流程和功能實現(xiàn)。
本書參考學時為48學時,有關章節(jié)內容可以根據(jù)各學校的專業(yè)要求及其學時情況酌情 調整。
本書覆蓋了ARM嵌入式系統(tǒng)應用開發(fā)的操作系統(tǒng)與硬件體系知識、基礎技能與項目開發(fā)實踐技能等內容,結合了編者在高校教學及企業(yè)產品開發(fā)人員培訓中的素材及教學經(jīng)驗。本書可作為高等院校的電子信息工程、通信工程、物聯(lián)網(wǎng)工程、自動化及計算機等專業(yè)的教材,也可作為從事嵌入式系統(tǒng)應用研究與產品開發(fā)的工程技術人員的參考書。
本書由福建工程學院信息科學與工程學院張平均教授、廈門傳一信息科技(卓越教育)有限公司技術總監(jiān)歐忠良、福建工程學院國脈信息學院黃家善教授承擔主要編寫工作;福建工程學院的陳婧講師參與編寫了本書的第2~4章的內容;廈門傳一信息科技(卓越教育)有限公司李雅靜工程師參與編寫了本書的第7~8章的內容。
本書在編寫過程中參考了許多優(yōu)秀的著作與教材,引用了廈門傳一信息科技(卓越教育)有限公司嵌入式技術與應用培訓課程的案例,并得到機械工業(yè)出版社的大力支持與指導,在此對他們表示衷心的感謝。
由于作者學識水平有限,殷切希望教師、學生和專業(yè)技術人員對本書的內容、結構及存在的疏漏與錯誤之處給予批評、指正。
編 者
目 錄
前 言
第1章 嵌入式系統(tǒng)概述1
1.1 嵌入式系統(tǒng)的基本概念1
1.1.1 嵌入式系統(tǒng)的定義1
1.1.2 嵌入式系統(tǒng)的體系結構2
1.1.3 嵌入式系統(tǒng)的應用3
1.1.4 嵌入式系統(tǒng)的發(fā)展3
1.2 嵌入式處理器4
1.2.1 ARM微處理器概述4
1.2.2 ARM微處理器系列5
1.3 嵌入式操作系統(tǒng)8
1.3.1 嵌入式操作系統(tǒng)的發(fā)展8
1.3.2 嵌入式操作系統(tǒng)的分類8
1.4 嵌入式系統(tǒng)開發(fā)的基本流程9
1.4.1 硬件開發(fā)流程10
1.4.2 軟件開發(fā)流程11
本章小結11
習題與思考題12
第2章 Linux應用及編程基礎13
2.1 Linux概述13
2.1.1 Linux的基本特性13
2.1.2 Linux的版本14
2.1.3 Linux的內核架構15
2.1.4 Linux軟件層次結構16
2.2 Linux的常用命令17
2.2.1 基本操作類命令18
2.2.2 文件系統(tǒng)類命令21
2.2.3 進程控制類命令25
2.2.4 網(wǎng)絡管理類命令26
2.2.5 模塊操作類命令27
2.3 Linux下的程序開發(fā)工具應用基礎28
2.3.1 編輯器28
2.3.2 GCC編譯器29
2.3.3 GDB調試器31
2.4 Linux程序編譯基礎34
2.4.1 Makefile文件34
2.4.2 Make工具及其應用42
本章小結45
習題與思考題45
第3章 嵌入式Linux開發(fā)環(huán)境的構建46
3.1 Linux環(huán)境下的嵌入式系統(tǒng)開發(fā)模式46
3.2 嵌入式Linux交叉編譯環(huán)境的搭建47
3.2.1 宿主機交叉編譯工具的配置47
3.2.2 宿主機串口工具的配置與使用48
3.2.3 NFS安裝、配置與測試52
3.2.4 TFTP安裝、配置與測試53
3.3 UBoot54
3.3.1 BootLoader簡介54
3.3.2 UBoot代碼分析55
3.3.3 UBoot的移植59
3.4 嵌入式Linux內核的配置編譯與移植65
3.4.1 Linux內核的源代碼結構66
3.4.2 Linux內核中的Kconfig和Makefile文件67
3.4.3 嵌入式Linux內核的配置69
3.4.4 嵌入式Linux內核的編譯以及燒寫73
3.5 嵌入式Linux根文件系統(tǒng)的構建與移植74
3.5.1 Linux支持的文件系統(tǒng)74
3.5.2 根文件系統(tǒng)的基礎76
3.5.3 BusyBox的配置與編譯77
3.5.4 制作YAFFS2根文件系統(tǒng)鏡像81
本章小結84
習題與思考題84
第4章 嵌入式Linux的設備驅動開發(fā)基礎85
4.1 Linux設備管理基礎85
4.1.1 Linux設備分類86
4.1.2 Linux設備文件86
4.1.3 Linux模塊與設備管理88
4.1.4 模塊的自動加載88
4.2 Linux模塊化程序的代碼結構88
4.3 Linux字符設備驅動程序93
4.3.1 設備驅動程序框架94
4.3.2 Linux下設備驅動的數(shù)據(jù)結構96
4.3.3 Linux下設備驅動的調用函數(shù)100
4.4 Linux設備驅動的相關技術101
4.4.1 Linux設備驅動的并發(fā)控制101
4.4.2 Linux設備驅動中的阻塞和非阻塞104
4.4.3 Linux設備驅動中的異步通知108
4.5 Linux設備驅動程序的靜態(tài)編譯到內核109
4.6 Linux設備驅動程序模塊的加/卸載111
4.7 Linux字符設備驅動測試程序代碼113
本章小結114
習題與思考題114
第5章 基于S3C2440的嵌入式Linux驅動程序開發(fā)115
5.1 S3C2440的體系結構簡介115
5.2 ARM920T處理器的編程基礎117
5.2.1 ARM9微處理器的工作模式117
5.2.2 ARM9微處理器的寄存器組織117
5.2.3 ARM9的存儲方式119
5.2.4 ARM處理器的異常處理119
5.2.5 S3C2440的存儲管理120
5.2.6 S3C2440的啟動過程122
5.3 S3C2440的GPIO驅動編程124
5.3.1 S3C2440的GPIO硬件基礎124
5.3.2 S3C2440的GPIO寄存器125
5.3.3 S3C2440的GPIO驅動程序126
5.4 S3C2440中斷方式的驅動編程129
5.4.1 中斷原理129
5.4.2 S3C2440的中斷機制130
5.4.3 S3C2440的中斷寄存器135
5.4.4 Linux中斷相關的API139
5.4.5 S3C2440的中斷程序140
5.5 S3C2440的串口驅動編程145
5.5.1 S3C2440的串口通信基礎146
5.5.2 S3C2440的串口驅動編程寄存器148
5.5.3 S3C2440的串口驅動代碼155
5.6 S3C2440的ADC和觸摸屏驅動編程159
5.6.1 S3C2440的ADC寄存器159
5.6.2 S3C2440的ADC驅動程序設計161
5.6.3 S3C2440的觸摸屏驅動基礎167
5.6.4 S3C2440的觸摸屏寄存器169
5.6.5 S3C2440的觸摸屏程序170
本章小結177
習題與思考題177
第6章 嵌入式Linux系統(tǒng)的Qt編程178
6.1 嵌入式Linux的GUI簡介178
6.2 Qt/Qt/Embedded概述180
6.2.1 Qt體系架構180
6.2.2 Qt/Embedded181
6.2.3 Qtopia182
6.3 Qt/Embedded程序開發(fā)基礎183
6.3.1 Qt對象模型183
6.3.2 Qt信號與槽184
6.3.3 Qt/Embedded事件192
6.3.4 Qt類庫基礎197
6.4 Qt的安裝與移植198
6.4.1 Qt的安裝198
6.4.2 Qt4.7.0的移植200
6.5 Qt編程實例202
本章小結209
習題與思考題209
第7章 SQLite數(shù)據(jù)庫的嵌入式應用210
7.1 數(shù)據(jù)庫概述210
7.2 主流的嵌入式數(shù)據(jù)庫211
7.3 SQLite應用設計基礎213
7.3.1 SQLite數(shù)據(jù)類型213
7.3.2 SQLite“點”命令213
7.3.3 SQL數(shù)據(jù)庫操作語言215
7.3.4 事務與鎖223
7.4 SQLite3數(shù)據(jù)庫編程API224
7.4.1 SQLite3 API接口224
7.4.2 API實例分析226
本章小結234
習題與思考題234
第8章 嵌入式系統(tǒng)應用開發(fā)實例235
8.1 停車場管理系統(tǒng)數(shù)據(jù)庫開發(fā)235
8.1.1 停車場管理系統(tǒng)簡介235
8.1.2 系統(tǒng)總體設計235
8