注冊 | 登錄讀書好,好讀書,讀好書!
讀書網(wǎng)-DuShu.com
當(dāng)前位置: 首頁出版圖書科學(xué)技術(shù)計算機/網(wǎng)絡(luò)軟件工程及軟件方法學(xué)從零開始學(xué)ARM

從零開始學(xué)ARM

從零開始學(xué)ARM

定 價:¥99.80

作 者: 彭丹 周海濤
出版社: 人民郵電出版社
叢編項:
標(biāo) 簽: 暫缺

ISBN: 9787115606884 出版時間: 2023-05-01 包裝: 平裝-膠訂
開本: 128開 頁數(shù): 字?jǐn)?shù):  

內(nèi)容簡介

  本書主要介紹ARM開發(fā)的相關(guān)知識,詳細講解常用的ARM指令及如何基于ARM架構(gòu)的外設(shè)編寫驅(qū)動程序,并分析了開源軟件U-Boot的啟動源代碼和網(wǎng)絡(luò)協(xié)議棧。本書第1~4章為基礎(chǔ)篇,主要介紹CPU與ARM、搭建環(huán)境、ARM編程、異常等;第5~13章為編程篇,主要介紹基于Exynos 4412的常用外設(shè)的工作原理及驅(qū)動程序編寫等;第14~17章為應(yīng)用篇,主要介紹開源軟件U-Boot的使用及啟動程序,并分析網(wǎng)卡DM9000AE的驅(qū)動和網(wǎng)絡(luò)協(xié)議棧;以及關(guān)于匯編的兩點補充。 本書適合從事嵌入式開發(fā)的工程師和有一定計算機基礎(chǔ)和C語言編程經(jīng)驗的初學(xué)者學(xué)習(xí)參考。

作者簡介

  彭丹,碩士,“一口Linux”公眾號創(chuàng)始人,南京六九零二科技有限公司高級嵌入式驅(qū)動工程師。從事嵌入式軟件開發(fā)工作16年。精通計算機網(wǎng)絡(luò)、ARM、基于Linux的驅(qū)動開發(fā)。獲得多項科技發(fā)明授權(quán)、多篇軟件文章等。 周海濤,碩士,長期從事網(wǎng)絡(luò)安全和信息化建設(shè)相關(guān)工作,著有多篇論文,江蘇省第六期333高層次人才培養(yǎng)工程培養(yǎng)對象。

圖書目錄

第 1章 ARM與CPU 1
1.1 ARM公司 1
1.2 ARM內(nèi)核與架構(gòu) 4
1.2.1 ARM內(nèi)核 4
1.2.2 ARM架構(gòu) 5
1.2.3 指令集 7
1.2.4 ARM處理器分類 9
1.2.5 什么是SoC? 11
1.2.6 Exynos 4412 SCP 15
1.2.7 ARM授權(quán) 17
1.2.8 總結(jié) 18
1.3 計算機重要貢獻者 18
1.4 CPU架構(gòu) 22
1.4.1 馮諾依曼架構(gòu) 22
1.4.2 哈佛架構(gòu) 23
1.4.3 CPU組成 25
1.5 指令的運行 30
1.6 ARM技術(shù)特征 31
1.7 ARM工作模式 32
1.8 ARM寄存器 33
1.8.1 寄存器分類 33
1.8.2 CPSR格式詳解 36
1.9 協(xié)處理器 37
1.10 Jzelle 38
1.11 指令流水線 39
1.11.1 3級流水線 39
1.11.2 指令對流水線影響 40
第 2章 搭建環(huán)境 44
2.1 KEIL安裝 44
2.1.1 ARM集成開發(fā)環(huán)境 44
2.1.2 KEIL、MDK、uVision、ARM之間的關(guān)系 45
2.1.3 安裝Keil 46
2.1.4 創(chuàng)建第 一個工程 49
2.1.5 編譯代碼 52
2.1.6 如何debug代碼? 53
2.2 GNU編譯環(huán)境搭建 56
2.2.1 安裝VMware Workstation 57
2.2.2 安裝ubuntu 62
2.3 交叉編譯工具安裝 67
第3章 ARM編程 70
3.1 ARM指令格式 71
3.2 數(shù)據(jù)處理指令 72
3.2.1 MOV指令 72
3.2.2 移位操作 75
3.2.3 CMP指令 76
3.2.4 TST指令 77
3.2.5 算數(shù)運算指令 78
3.3 跳轉(zhuǎn)指令 81
3.4 程序狀態(tài)寄存器訪問 84
3.4.1 MRS指令 84
3.4.2 MSR指令 85
3.4.3 舉例 85
3.5 LDR/STR指令 91
3.5.1 LDR指令 91
3.5.2 STR指令 92
3.5.3 LDRB指令 93
3.5.4 LDRH指令 93
3.6 ARM尋址方式 94
3.7 LDREX/STREX指令 103
3.8 MDK與GNU 106
3.9 GNU書寫風(fēng)格 108
3.9.1 標(biāo)號symbol(或label) 108
3.9.2 常數(shù) 109
3.9.3 特殊字符和語法 109
3.9.4 語句格式 110
3.9.5 分段 110
3.9.6 定義入口點 112
3.10 偽操作 112
3.10.1 數(shù)據(jù)定義偽操作 112
3.10.2 .align .end .include .incbin偽操作 113
3.10.3 .rept偽操作 114
3.10.4 macro宏定義 114
3.10.5 .if偽操作 115
3.10.6 .global/.type/.title/.list偽操作 115
3.10.7 雜項偽操作標(biāo)識符 116
3.10.8 偽指令 118
3.13 GNU代碼的編譯 119
3.13.1 交叉編譯工具 119
3.13.2. 交叉編譯工具命名規(guī)則 119
3.13.3 代碼編譯過程 120
3.13.3 編譯選項 122
3.13.4 ELF與bin 126
3.13.5 編譯舉例 127
3.14 ATPCS和AAPCS 132
3.15 內(nèi)聯(lián)匯編 135
3.16 C語言和匯編相互調(diào)用舉例 137
第4章 異常(Exception) 139
4.1 異?;A(chǔ)知識 139
4.2 異常處理 141
4.2.1 異常發(fā)生后硬件操作 141
4.2.2 異常向量表 142
4.2.3 保存執(zhí)行現(xiàn)場 143
4.2.4 異常處理的返回 144
4.2.5 異?;謴?fù) 146
4.3 IRQ中斷異常 146
4.3.1 中斷概念 146
4.3.2 中斷處理流程 147
4.4 軟中斷 148
4.4.1 SWI指令 148
4.4.2 BKPT指令 148
4.4.3 舉例 149
4.4.4 如何同時跳轉(zhuǎn)并切換模式? 151
4.4.5 如何獲取中斷號? 151
第5章 GPIO及LED 152
5.1 GPIO 153
5.1.1 Exynos 4412 GPIO特性 153
5.1.2 LED燈電路圖 154
5.1.3 如何操作GPIO? 155
5.2 LED驅(qū)動編寫 157
5.2.1 匯編代碼 157
5.2.2 c語言實現(xiàn) 158
5.2.3 燒寫代碼 161
第6章 PWM 162
6.1 PWM基礎(chǔ)知識 162
6.2 Exynos 4412 PWM 164
6.2.1 Exynos 4412 PWM特性 165
6.2.2 PWM工作步驟 166
6.3 蜂鳴器驅(qū)動編寫 167
6.3.1 參考電路 167
6.3.2 寄存器 168
6.3.3 代碼實現(xiàn) 172
第7章 中斷、key 173
7.1 GIC 173
7.1.1 分發(fā)器 174
7.1.2 CPU接口 176
7.1.3 中斷分類 176
7.1.4 中斷處理 179
7.2 key驅(qū)動編寫 180
7.2.1 電路圖 180
7.2.2 配置按鍵為中斷觸發(fā)方式 181
7.2.3 寄存器 183
7.2.4 代碼實現(xiàn) 188
7.3 輪詢方式 190
第8章 UART 192
8.1 UART概述 192
8.1.1 UART通信方式 192
8.1.2 UART幀格式 195
8.2 Exynos 4412 UART控制器 196
8.2.1 UART特性 197
8.2.2 UART內(nèi)部功能模塊 197
8.2.3 時鐘源 200
8.4 驅(qū)動編寫 200
8.4.1 參考電路 200
8.4.2 UART寄存器 202
8.4.3 代碼實現(xiàn) 206
8.5 移植printf() 209
第9章 RTC詳解 209
9.1 Exynos 4412 RTC 210
9.1.1 Exynos 4412 RTC特性 210
9.1.2 RTC Block 210
9.1.3 備用電池 211
9.1.4 晶振 211
9.2 RTC寄存器 212
9.3 RTC操作 214
9.4 代碼實現(xiàn) 219
第 10章 看門狗 222
10.1 Exynos 4412 看門狗 222
10.1.1 看門狗定時器模塊圖 223
10.1.2 工作原理 223
10.2 驅(qū)動編寫 224
10.2.1 看門狗軟件程序設(shè)計流程 224
10.2.2 看門狗寄存器 224
10.2.3 代碼實現(xiàn) 226
第 11章 ADC 227
11.1 信號基礎(chǔ)知識 228
11.1.1 信號分類 228
11.1.2 數(shù)字信號優(yōu)點 229
11.1.4 PCM脈沖編碼調(diào)制 229
11.2 Exynos 4412 ADC控制器 231
11.2.1 Exynos 4412 ADC控制器特性 231
11.2.2 寄存器 232
11.2.3 Combiner中斷控制器 234
11.2.4 A/D轉(zhuǎn)換的轉(zhuǎn)換時間計算 236
11.3 驅(qū)動編寫 236
11.3.1 參考電路 236
11.3.2 代碼實例 238
第 12章 I2C 241
12.1 I2C協(xié)議 241
12.1.1 開始和停止條件 241
12.1.2 數(shù)據(jù)有效性 243
12.1.3 數(shù)據(jù)傳輸格式 243
12.1.4 數(shù)據(jù)傳輸格式 245
12.2 Exynos 4412 I2C控制器 245
12.2.1 Exynos 4412 I2C控制器綜述 245
12.2.2 Exynos 4412 I2C總線接口特性 246
12.2.3 I2C數(shù)據(jù)讀寫格式 247
12.2.3 數(shù)據(jù)讀寫流程 248
12.2.4 寄存器 252
12.2.5 寄存器使用規(guī)則 255
12.3 MPU6050及驅(qū)動編寫 255
12.3.1 MPU6050 255
12.3.2 參考電路 258
12.3.3 MPU6050內(nèi)部寄存器 259
12.3.4 代碼實例: 260
第 13章 SPI 264
13.1 SPI基礎(chǔ)知識 264
13.1.1 SPI特點 264
13.1.2 極性和相位 268
13.1.3 采樣波形 268
13.1.4 如何設(shè)置極性和相位 270
13.1.5 數(shù)據(jù)交換(Data Exchanges) 271
13.2 Exynos 4412 SPI控制器 272
13.3 SPI操作 274
13.3.1 參考電路 274
13.3.2 寄存器 275
13.3.3 SPI初始化流程 278
13.3.4 收發(fā)數(shù)據(jù)流程 282
13.4 MCP2515 283
13.4.1 MCP2515簡介 283
13.4.2 MCP2515特性 283
13.4.3 結(jié)構(gòu)框圖 284
13.4.4 SPI 協(xié)議模塊 285
13.4.5 SPI 指令集 285
13.4.6 CAN初始化 289
13.4.7 CAN緩沖區(qū) 296
13.4.8 數(shù)據(jù)發(fā)送 296
13.4.9 CAN數(shù)據(jù)的接收 298
17.6.7 MCP2515驅(qū)動實現(xiàn) 300
第 14章 U-Boot 304
14.1 Bootloader 304
14.1.1 概念 304
14.1.2 分類 305
14.1.3 Bootloader對不同CPU架構(gòu)支持 306
14.2 U-Boot概述 307
14.2.1 U-Boot概念 307
14.2.2 U-Boot的特性 307
14.2.3 工作模式 308
14.2.4 U-Boot常用命令 309
14.2.5 配置舉例 312
14.3 U-Boot移植步驟 313
14.3.1 U-Boot源碼簡介 313
14.3.2 U-boot源碼配置 316
14.3.3 U-Boot源碼編譯 319
14.4 U-Boot硬件驅(qū)動移植 321
14.4.1 實現(xiàn)串口輸出 321
14.4.2 網(wǎng)卡驅(qū)動移植 322
14.4.3 FLASH移植 (EMMC) 325
14.5 SD卡制作 331
14.5.1 編寫腳本 331
14.5.2 sd卡制作 334
14.5.3 通過sd卡啟動燒寫U-Boot 334
14.5.4 網(wǎng)絡(luò)燒寫U-Boot 336
第 15章、U-Boot代碼啟動分析 337
15.1 內(nèi)核啟動流程概述 337
15.1.1 U-boot啟動加載linux內(nèi)核一般流程 337
15.1.2 Exynos 4412內(nèi)存布局 339
15.1.3 Booting Sequence 340
15.1.4 SD卡鏡像布局 342
15.1.5 lds文件 343
15.2 U-Boot啟動流程代碼詳解 344
15.2.1 U-Boot啟動代碼流程 344
15.2.2 U-Boot啟動詳解 346
15.3 U-Boot啟動的幾個關(guān)鍵問題 364
第 16章 網(wǎng)卡DM9000x 365
16.1 網(wǎng)卡概述 365
16.2 DM9000AE 366
16.2.1 DM9000AE概述 366
16.2.2 模塊圖 367
16.2.3 引腳說明 368
16.2.4 DM9000AE內(nèi)部寄存器 372
16.3 SROM 控制器 378
16.3.1 概念 378
16.3.2 寄存器SROM_BW、SROM_BC1 378
16.3.3 配置為SROM模式 383
16.3.4 SROM初始化 388
16.4 DM9000AE驅(qū)動分析 392
16.4.1 網(wǎng)卡注冊 392
16.4.2 網(wǎng)卡注冊代碼分析 394
16.4.5 網(wǎng)卡的初始化 398
16.4.6 數(shù)據(jù)的發(fā)送 402
16.4.7 數(shù)據(jù)的接收 404
16.4.4 網(wǎng)卡注銷 406
16.5 U-Boot中網(wǎng)絡(luò)協(xié)議棧 407
16.5.1 網(wǎng)絡(luò)協(xié)議棧架構(gòu) 407
16.5.2 DNS協(xié)議詳解 408
第 17章 關(guān)于匯編的兩點補充 420
17.1 為什么使用結(jié)構(gòu)體效率會高? 420
17.1.1 定義多個全局變量 420
17.1.2 使用結(jié)構(gòu)體 423
17.1.3 literal pool 424
17.1.4 繼續(xù)優(yōu)化 425
17.2 位置無關(guān)碼 426
17.2.1 為什么需要位置無關(guān)碼? 426
17.2.2 如何編寫位置無關(guān)碼 427
17.2.3 舉例 427
17.2.4 總結(jié) 431
17.2.5 思考題 432

本目錄推薦

掃描二維碼
Copyright ? 讀書網(wǎng) hotzeplotz.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號 鄂公網(wǎng)安備 42010302001612號