本書是學習嵌入式系統(tǒng)開發(fā)的入門教材。按照嵌入式系統(tǒng)學習的規(guī)律,本書首先詳細介紹了嵌入式系統(tǒng)的原理,包括嵌入式操作系統(tǒng)基礎(chǔ)、ARM體系結(jié)構(gòu)和指令系統(tǒng);然后,以北京博創(chuàng)智聯(lián)科技有限公司的UPMobNetⅡ?qū)嶒炏錇閷嶒炂脚_,按照從簡單到復雜逐步過渡的原則設(shè)計了相關(guān)實驗內(nèi)容,結(jié)合實驗講解了嵌入式系統(tǒng)的開發(fā)過程。此外,本書還對Android開發(fā)環(huán)境搭建進行了初步的描述,供感興趣的讀者參考。
本書內(nèi)容較為翔實,結(jié)構(gòu)合理,實例豐富,用淺顯易懂的語言來解釋理論,用簡單易行的實驗來幫助讀者理解理論并掌握嵌入式系統(tǒng)開發(fā)的實際操作技能。
本書可作為本科、大專和高等職業(yè)院校計算機類、電子類、通信類學生的教材,也可作為計算機等級考試(嵌入式系統(tǒng)三級)的輔導用書,還可作為廣大嵌入式系統(tǒng)愛好者和工程師的自學用書和參考手冊。
嵌入式系統(tǒng)作為物聯(lián)網(wǎng)的核心,是當前最熱門、最有前景的IT應(yīng)用領(lǐng)域之一。嵌入式系統(tǒng)以應(yīng)用為中心,以計算機技術(shù)為基礎(chǔ),軟硬件可定制,適用于不同應(yīng)用場合,是對功能、可靠性、成本、體積、功耗有嚴格要求的專用計算機系統(tǒng)。它一般由嵌入式微處理器、外圍硬件設(shè)備、嵌入式操作系統(tǒng)以及用戶的應(yīng)用程序等四部分組成,用于實現(xiàn)對其他設(shè)備的控制、監(jiān)視或管理等功能。嵌入式系統(tǒng)已經(jīng)廣泛地滲透到科學研究、工業(yè)控制、軍事技術(shù)、交通、通信、醫(yī)療衛(wèi)生、消費娛樂等各個領(lǐng)域。我們平常所使用的手機、PDA、汽車、智能家電、GPS等均是嵌入式系統(tǒng)的典型代表。
本書共9章。第1章介紹了嵌入式系統(tǒng)的基本知識;第2章介紹了嵌入式Linux操作系統(tǒng)的發(fā)展過程;第3章介紹了嵌入式系統(tǒng)的開發(fā)環(huán)境;第4章介紹了嵌入式處理器的類型、結(jié)構(gòu)、工作模式等內(nèi)容;第5章介紹了ARM指令集;第6章介紹了ARM匯編程序設(shè)計基礎(chǔ);第7章以博創(chuàng)UPMobNetⅡ?qū)嶒炏錇槔榻B了嵌入式系統(tǒng)開發(fā)環(huán)境的構(gòu)建;第8章為嵌入式系統(tǒng)基礎(chǔ)實驗,以循序漸進的方式對實驗箱自帶的模塊進行訪問和控制;第9章介紹了Android開發(fā)環(huán)境的搭建方法。
本書特色:
1. 校企合作,內(nèi)容結(jié)合實際
本書包含了嵌入式系統(tǒng)開發(fā)過程中所涉及的各個知識點,適合初學者理解和應(yīng)用該技術(shù)。本書通過校企合作的方式,利用2017年立項的教育部產(chǎn)學研協(xié)同育人項目 “嵌入式系統(tǒng)課程教學內(nèi)容與教學體系改革”,借助北京博創(chuàng)智聯(lián)科技有限公司的實驗箱UPMobNetⅡ,編寫了大量實驗方面的內(nèi)容,由淺入深,使學生對嵌入式技術(shù)的理解能更進一步。
2. 內(nèi)容通俗易懂,圖文并茂
本書結(jié)合計算機等級考試嵌入式系統(tǒng)三級考試大綱,對內(nèi)容進行了合理組織,條理性強,內(nèi)容注重框架方式的講解,培養(yǎng)學生對于完整嵌入式系統(tǒng)的大局觀,使學生便于理解和記憶。
3. 章節(jié)緊湊,針對性強
本書結(jié)合作者教學團隊多年的教學經(jīng)驗及參與科研項目和學生競賽的經(jīng)驗,借鑒了同行專家的意見,注重基礎(chǔ)和實踐,每章都有配套的習題,實驗后面都有相應(yīng)的思考題,有利于學生復習所學知識。
本書由多位老師分工完成:趙宏編寫了第1章;王璐編寫了第2章和第3章;張璽君編寫了第4章、第7章、第8章和第9章;馬維俊編寫了第5章和第6章。全書由張璽君負責策劃、統(tǒng)稿。
在本書的編寫過程中,北京博創(chuàng)智聯(lián)科技有限公司提供了設(shè)備和技術(shù)支持,蘭州理工大學計算機與通信學院物聯(lián)網(wǎng)工程系的各位老師給予了大力的支持,在此表示誠摯的感謝!
因時間倉促,書中疏漏之處在所難免,懇請廣大讀者批評指正。讀者可通過zxjun@lut.cn與作者聯(lián)系。
第1章 嵌入式系統(tǒng)概論 1
1.1 嵌入式系統(tǒng)的定義 1
1.2 嵌入式系統(tǒng)的組成 3
1.3 嵌入式系統(tǒng)的發(fā)展過程 6
1.4 嵌入式系統(tǒng)的開發(fā)流程 7
1.5 嵌入式系統(tǒng)的應(yīng)用領(lǐng)域 8
習題 9
第2章 嵌入式Linux操作系統(tǒng) 10
2.1 主流的嵌入式操作系統(tǒng) 10
2.1.1 嵌入式操作系統(tǒng)概述 10
2.1.2 嵌入式Linux 10
2.1.3 Android操作系統(tǒng) 11
2.1.4 iOS 12
2.1.5 Windows CE 13
2.1.6 VxWorks 13
2.1.7 實時操作系統(tǒng) 13
2.2 μC/OSⅡ嵌入式操作系統(tǒng) 14
2.2.1 μC/OSⅡ操作系統(tǒng)概述 14
2.2.2 μC/OSⅡ的任務(wù)及管理 14
2.2.3 μC/OSⅡ的任務(wù)調(diào)度 15
2.2.4 μC/OSⅡ的移植 16
習題 17
第3章 嵌入式系統(tǒng)開發(fā)環(huán)境 18
3.1 Linux程序設(shè)計 18
3.1.1 Vim編輯器的使用 18
3.1.2 GCC編譯器 21
3.1.3 GDB調(diào)試程序 24
3.1.4 Makefile 26
3.2 嵌入式開發(fā)環(huán)境 29
3.2.1 嵌入式交叉編譯環(huán)境的搭建 29
3.2.2 交叉編譯 30
3.2.3 交叉編譯工具 30
3.2.4 宿主機交叉環(huán)境的建立 30
習題 32
第4章 嵌入式處理器 33
4.1 嵌入式處理器概述 33
4.1.1 嵌入式處理器的結(jié)構(gòu)類型 33
4.1.2 嵌入式處理器簡介 35
4.1.3 ARM處理器系列概述 36
4.2 ARM Cortex處理器 41
4.2.1 CortexM3 41
4.2.2 ARM CortexA8 43
4.2.3 ARM CortexA9 44
4.3 ARM處理器編程模型 45
4.3.1 數(shù)據(jù)類型 45
4.3.2 ARM處理器的工作模式 45
4.3.3 寄存器組織 46
4.3.4 存儲器組織結(jié)構(gòu) 50
4.3.5 ARM的異常處理機制 51
習題 53
第5章 ARM指令集 54
5.1 ARM指令概述 56
5.2 條件執(zhí)行指令 62
5.3 操作數(shù)預處理指令 64
5.4 數(shù)據(jù)處理指令 69
5.5 控制類指令 80
5.6 傳送類指令 89
5.7 ARMv8體系架構(gòu) 97
5.8 Thumb指令集概述 105
習題 107
第6章 ARM匯編程序設(shè)計 108
6.1 ARM匯編集成開發(fā)環(huán)境 108
6.1.1 ADS集成開發(fā)環(huán)境簡介 108
6.1.2 編輯ARM匯編語言源程序 109
6.1.3 在命令行方式下調(diào)試 109
6.1.4 在IDE環(huán)境下調(diào)試 110
6.1.5 ARM DS5集成開發(fā)環(huán)境簡介 114
6.1.6 ARM DS5編輯運行ARM匯編語言源程序 116
6.2 ARM匯編程序基本結(jié)構(gòu) 119
6.2.1 ARM匯編語言的語句格式 119
6.2.2 ARM匯編語言的程序格式 120
6.3 ARM匯編語言程序中的符號和表達式 122
6.3.1 ARM匯編語言中的符號 122
6.3.2 ARM匯編語言中的表達式 123
6.4 ARM匯編語言偽操作 126
6.4.1 符號定義偽操作 127
6.4.2 數(shù)據(jù)定義偽操作 129
6.4.3 雜項偽操作 133
6.4.4 匯編控制偽操作 136
6.4.5 信息報告?zhèn)尾僮?137
6.4.6 框架描述偽操作 138
6.5 ARM匯編語言偽指令 138
6.5.1 ADR偽指令 139
6.5.2 ADRL偽指令 140
6.5.3 LDR偽指令 141
6.6 ARM匯編語言宏指令 143
6.7 ARM匯編語言程序子程序 145
6.8 C語言與ARM匯編語言的混合編程 146
6.8.1 ATPCS簡介 147
6.8.2 使用內(nèi)嵌匯編器 148
6.8.3 內(nèi)嵌匯編指令應(yīng)用舉例 150
6.8.4 在匯編代碼中訪問C程序的全局變量 151
6.8.5 ARM匯編程序與C程序的相互調(diào)用 152
習題 154
第7章 嵌入式系統(tǒng)實驗 156
7.1 認識UPMobNetⅡ?qū)嶒炏?156
7.2 建立開發(fā)環(huán)境 158
7.3 給下位機燒寫軟件系統(tǒng) 162
習題 174
第8章 基礎(chǔ)實驗 175
8.1 熟悉Linux開發(fā)環(huán)境 175
8.2 多線程應(yīng)用程序設(shè)計 177
8.3 串行端口程序設(shè)計 185
8.4 嵌入式Web服務(wù)器 195
習題 203
第9章 Android開發(fā)環(huán)境搭建 204
9.1 Android Ubuntu開發(fā)環(huán)境的建立 204
9.2 Android XP開發(fā)環(huán)境的建立 219
習題 229
參考文獻 230