注冊 | 登錄讀書好,好讀書,讀好書!
讀書網(wǎng)-DuShu.com
當前位置: 首頁出版圖書教育/教材/教輔考試計算機考試ARM認證工程師應試指南

ARM認證工程師應試指南

ARM認證工程師應試指南

定 價:¥49.00

作 者: 奚海蛟,諶利 著
出版社: 電子工業(yè)出版社
叢編項: 嵌入式技術與應用叢書
標 簽: 電工電氣 工業(yè)技術

ISBN: 9787121213618 出版時間: 2013-09-01 包裝: 平裝
開本: 16開 頁數(shù): 264 字數(shù):  

內容簡介

  《嵌入式技術與應用叢書:ARM認證工程師應試指南》是針對ARMAAE考試認證編寫的,旨在為對參加AAE認證考試的讀者提供有益的幫助,對匯編語言和C語言的程序員提供有用的信息?!肚度胧郊夹g與應用叢書:ARM認證工程師應試指南》分為ARM認證工程師學習指南和Cortex-A系列程序員指南兩部分。在ARM認證工程師學習指南部分給出了AAE認證考試的要點及其要求掌握的程度;在Cortex-A系列程序員指南部分對第1部分給出的要點進行了詳細論述,內容涵蓋:ARM簡介,ARM體系結構和處理器,工具、操作系統(tǒng)和開發(fā)板,ARM寄存器、模式和指令集,匯編語言簡介,ARM/Thumb的統(tǒng)一匯編,浮點,NEON簡介,高速緩存,內存管理單元,內存訪問排序,異常處理,中斷處理,其他異常處理程序,引導代碼,移植,應用程序二進制接口,性能分析,優(yōu)化運行在ARM處理器的代碼,編寫NEON代碼,多重處理器簡介,SMP架構考慮,并行軟件,并行軟件的問題,電源管理,安全性,虛擬化,big.LITTLE簡介,調試。

作者簡介

  奚海蛟,男,北京航空航天大學博士、博士后,2000年開始在多個大型培訓機構和高校任講師,主講的課程有信號與系統(tǒng)、通信原理、游戲客戶端開發(fā)、3D數(shù)學、嵌入式移植、嵌入式驅動程序設計、ARM體系結構開發(fā)、物聯(lián)網(wǎng)等;2009創(chuàng)建北京融慧廣澤科技有限公司,2010年創(chuàng)建北京通聯(lián)物網(wǎng)教育咨詢有限公司合伙人,總經(jīng)理。

圖書目錄

目 錄
第1部分 ARM認證工程師學習指南

第1章 學習指南 2
1.1 ARM認證工程師介紹 2
1.2 ARM認證工程師大綱概述 2
1.3 大綱詳述 3
1.3.1 實現(xiàn) 3
1.3.2 軟件調試 4
1.3.3 架構 9
1.3.4 軟件開發(fā) 21
1.3.5 系統(tǒng) 30
1.3.6 軟件優(yōu)化 33

第2部分 Cortex-A系列程序員指南

第2章 ARM簡介 38
2.1 ARM的歷史 38
2.2 片上系統(tǒng)(SoC) 39
2.3 嵌入式系統(tǒng) 39
第3章 ARM體系結構和處理器 41
3.1 體系結構的版本 42
3.2 體系結構的歷史與擴展 42
3.3 ARM Cortex-A系列處理器架構關鍵點 45
3.4 處理器和路徑 46
3.5 Cortex-A系列處理器 47
3.5.1 Cortex-A5處理器 47
3.5.2 Cortex-A7處理器 48
3.5.3 Cortex-A8處理器 48
3.5.4 Cortex-A9處理器 49
3.5.5 Cortex-A15處理器 50
3.5.6 高通公司的Scorpion 51
第4章 工具、操作系統(tǒng)和開發(fā)板 52
4.1 Linux發(fā)行版 52
4.1.1 ARM的Linux系統(tǒng) 52
4.1.2 Linux術語 53
4.1.3 嵌入式Linux 54
4.1.4 板級支持包 54
4.1.5 Linaro 54
4.2 有用工具 55
4.3 ARM處理器的軟件工具鏈 56
4.4 ARM DS-5 58
4.5 示例平臺 60
第5章 ARM寄存器、模式和指令集 61
5.1 指令集 61
5.2 模式 62
5.3 寄存器 62
5.4 指令流水線 64
5.4.1 并發(fā)流水線 66
5.4.2 寄存器重命名 66
5.5 分支預測 67
5.5.1 返回棧 67
5.5.2 程序員的觀點 68
第6章 匯編語言簡介 69
6.1 與其他匯編語言的對比 69
6.2 指令集 70
6.3 GNU匯編器簡介 71
6.3.1 激活GNU匯編器 71
6.3.2 GNU匯編器語法 71
6.3.3 程序段 72
6.3.4 編譯器的偽指令 72
6.3.5 表達式 73
6.3.6 GNU工具的命名慣例 73
6.4 ARM工具匯編語言 73
6.4.1 ARM匯編語法 74
6.4.2 標簽 74
6.4.3 偽指令 74
6.5 交互工作 75
6.6 識別匯編代碼 76
第7章 ARM/Thumb的統(tǒng)一匯編語言指令 77
7.1 指令集基礎 77
7.1.1 常量的值 77
7.1.2 條件執(zhí)行 78
7.1.3 狀態(tài)標志位和條件碼 80
7.2 數(shù)據(jù)處理操作 80
7.3 乘法運算 82
7.4 存儲器指令 83
7.4.1 尋址方式 84
7.4.2 多指令傳送 84
7.5 分支指令 85
7.6 整數(shù)SIMD指令 85
7.6.1 整數(shù)寄存器SIMD指令 86
7.6.2 整數(shù)寄存器SIMD乘法 86
7.6.3 絕對差之和 87
7.6.4 數(shù)據(jù)打包和解包 87
7.6.5 字節(jié)選擇 88
7.7 飽和算法 88
7.8 雜項指令 88
7.8.1 協(xié)處理器指令 88
7.8.2 協(xié)處理器15(CP15) 89
7.8.3 SVC 90
7.8.4 修改PSR 91
7.8.5 位操作 91
7.8.6 高速緩存預加載 91
7.8.7 字節(jié)反轉 91
7.8.8 其他指令 92
第8章 浮點 93
8.1 浮點運算的基本知識以及IEEE 754標準 93
8.1.1 舍入算法 95
8.1.2 ARM VFP 95
8.1.3 指令 97
8.1.4 啟用VFP 97
8.2 GCC對VFP的支持 97
8.3 ARM編譯器對VFP的支持 98
8.4 Linux對VFP的支持 98
8.5 浮點優(yōu)化 99
第9章 NEON簡介 100
9.1 SIMD 100
9.2 NEON結構概述 101
9.2.1 VFP的通用性 102
9.2.2 數(shù)據(jù)類型 102
9.2.3 NEON寄存器 102
9.2.4 NEON指令集 104
第10章 高速緩存 106
10.1 為什么高速緩存卓有成效 107
10.2 高速緩存的缺點 107
10.3 存儲器層次 107
10.4 高速緩存的結構 108
10.4.1 高速緩存控制器 109
10.4.2 直接映射高速緩存 109
10.4.3 Set關聯(lián)高速緩存 110
10.4.4 高速緩存術語 111
10.4.5 現(xiàn)實中的例子 112
10.4.6 虛擬和物理的標簽和索引 112
10.5 緩存策略 113
10.5.1 分配策略 113
10.5.2 替換策略 113
10.5.3 寫策略 114
10.6 寫緩沖區(qū)和取緩沖區(qū) 114
10.7 緩存的性能和命中率 115
10.8 無效化和清空緩存 115
10.9 一致點和統(tǒng)一點 116
10.10 二級緩存控制器 117
10.11 奇偶校驗和ECC高速緩存 117
第11章 內存管理單元 118
11.1 虛擬內存 119
11.2 一級頁表 120
11.3 二級頁表 122
11.4 轉換查找緩沖區(qū) 123
11.5 TLB的一致性 124
11.6 頁大小的選擇 124
11.7 內存屬性 125
11.7.1 內存訪問權限 125
11.7.2 內存類型 125
11.7.3 域 126
11.8 多任務和操作系統(tǒng)使用的頁表 127
11.8.1 地址空間ID 127
11.8.2 頁表基址寄存器0和1 128
11.8.3 快速上下文切換擴展 128
11.9 大物理地址擴展 129
第12章 內存訪問排序 131
12.1 ARM存儲排序模型 132
12.1.1 Strongly-ordered和Device內存 132
12.1.2 Normal內存 133
12.2 內存隔離 134
12.2.1 內存隔離使用示例 135
12.2.2 用隔離避免死鎖 136
12.2.3 WFE和WFI的隔離 137
12.2.4 Linux下使用的隔離 137
12.3 緩存一致性問題 138
12.3.1 復制代碼的問題 138
12.3.2 編譯器的重新排序優(yōu)化 138
第13章 異常處理 139
13.1 異常類型 140
13.2 異常模式一覽 141
13.3 進入異常處理程序 142
13.4 退出異常處理程序 143
13.5 向量表 143
13.6 返回指令 143
第14章 中斷處理 144
14.1 外部中斷請求 144
14.1.1 中斷分配 145
14.1.2 簡單中斷處理 145
14.1.3 中斷嵌套處理 145
14.2 通用中斷控制器 146
14.2.1 配置 147
14.2.2 初始化順序 147
14.2.3 中斷處理 147
第15章 其他異常處理程序 149
15.1 中止異常處理程序 149
15.2 未定義指令處理 149
15.3 SVC異常處理 150
15.4 LINUX的異常程序流 150
15.4.1 引導過程 151
15.4.2 中斷調度 151
第16章 引導代碼 152
16.1 啟動一個裸機系統(tǒng) 152
16.2 配置 156
16.3 引導LINUX 156
16.3.1 復位異常處理 157
16.3.2 引導程序 157
16.3.3 初始化內存系統(tǒng) 157
16.3.4 內核鏡像 157
16.3.5 內核參數(shù) 158
16.3.6 內核入口 158
16.3.7 平臺的具體行為 158
16.3.8 內核啟動代碼 158
第17章 移植 160
17.1 大小端 160
17.2 對齊 163
17.3 其他的C代碼移植問題 164
17.3.1 unsigned char和signed char 164
17.3.2 編譯器packing結構體 164
17.3.3 堆棧的使用 165
17.3.4 其他問題 166
17.4 移植ARM的匯編代碼到ARMV-7 166
17.5 移植ARM代碼到THUMB架構 167
17.5.1 使用PC作為操作數(shù) 167
17.5.2 分支和互連 167
17.5.3 操作數(shù)組合 168
17.5.4 ARM/Thumb的其他差異 169
第18章 應用程序二進制接口 170
18.1 過程調用標準 170
18.1.1 VFP和NEON寄存器的使用 173
18.1.2 鏈接 174
18.1.3 棧和堆 175
18.1.4 返回結果 175
18.2 C和匯編代碼混合編程 175
第19章 性能分析 178
19.1 分析器輸出 179
19.2 Gprof 179
19.3 OProfile 180
19.4 DS-5 Streamline 180
19.5 ARM性能監(jiān)視器 181
19.6 Linux的Perf事件 182
19.7 Ftrace 182
19.8 Valgrind和Cachegrind 182
第20章 優(yōu)化運行在ARM處理器的代碼 183
20.1 編譯器優(yōu)化 184
20.1.1 函數(shù)內聯(lián) 184
20.1.2 消除公共子表達式 184
20.1.3 循環(huán)展開 185
20.1.4 GCC優(yōu)化選項 186
20.1.5 armcc優(yōu)化選項 187
20.2 ARM存儲系統(tǒng)優(yōu)化 187
20.2.1 數(shù)據(jù)緩存優(yōu)化 188
20.2.2 循環(huán)分片 188
20.2.3 循環(huán)交換 189
20.2.4 結構對齊 189
20.2.5 關聯(lián)性的影響 190
20.2.6 優(yōu)化指令緩存的使用 190
20.2.7 優(yōu)化L2和外部緩存的使用 191
20.2.8 優(yōu)化TLB的使用 191
20.2.9 數(shù)據(jù)中止優(yōu)化 191
20.2.10 預取內存塊訪問 192
20.3 修改源代碼 192
20.3.1 循環(huán)結束 192
20.3.2 循環(huán)合并 192
20.3.3 減少堆和棧的使用 193
20.3.4 變量選擇 193
20.3.5 指針別名 194
20.3.6 除法和取模 195
20.3.7 外部數(shù)據(jù) 195
20.3.8 內聯(lián)或嵌入?yún)R編 195
20.3.9 復雜尋址模式 195
20.3.10 非對齊訪問 196
20.3.11 鏈接器優(yōu)化 196
第21章 編寫NEON代碼 197
21.1 NEON C編譯器和匯編器 197
21.1.1 矢量化 197
21.1.2 NEON庫 197
21.1.3 內部函數(shù) 198
21.1.4 C的NEON類型 198
21.1.5 變量和常量 199
21.1.6 從C/C++代碼生成NEON指令 199
21.1.7 NEON匯編器和ABI的限制 200
21.1.8 檢測NEON 200
21.2 優(yōu)化NEON匯編代碼 201
21.2.1 內存訪問優(yōu)化 201
21.2.2 對齊 202
21.2.3 調度 202
21.3 NEON省電 202
第22章 多重處理器簡介 204
22.1 多處理器ARM系統(tǒng) 205
22.2 對稱多重處理 206
22.3 非對稱多重處理AMP 207
第23章 SMP架構考慮 209
23.1 緩存一致性 209
23.1.1 MESI協(xié)議 210
23.1.2 MOESI協(xié)議 210
23.1.3 ACP 211
23.2 TLB和緩存維護廣播 211
23.3 在SMP系統(tǒng)中處理中斷 212
23.4 獨占訪問 212
23.5 引導SMP系統(tǒng) 215
23.5.1 處理器ID 215
23.5.2 Linux中SMP啟動 216
23.6 私有內存區(qū)域 216
第24章 并行軟件 218
24.1 分解法 218
24.2 線程模型 219
24.3 線程庫 220
24.3.1 線程間的通信 222
24.3.2 線程性能 222
24.3.3 線程關聯(lián) 222
24.4 Linux內核中的同步機制 222
24.4.1 結束(Completions)機制 222
24.4.2 自旋鎖 223
24.4.3 信號量 223
24.4.4 無鎖同步 223
第25章 并行軟件的問題 224
25.1 線程安全性和可重入性 224
25.2 性能問題 225
25.2.1 帶寬問題 225
25.2.2 線程依賴性 225
25.2.3 緩存抖動 226
25.2.4 偽共享 226
25.2.5 死鎖和活鎖 226
25.3 剖析SMP系統(tǒng) 226
第26章 電源管理 227
26.1 待機模式 228
26.2 休眠模式 228
26.3 匯編語言電源指令 229
26.4 動態(tài)電壓和頻率調整 229
第27章 安全性 230
27.1 可信區(qū)的硬件架構 230
27.2 多處理器系統(tǒng)的安全性擴展 232
27.3 正常世界和安全世界的相互作用 233
第28章 虛擬化 235
28.1 用于ARMV7-A的虛擬化擴展 236
28.1.1 在ARMv7-A的虛擬化擴展中的權限模型 236
28.1.2 超級管理模式 236
28.1.3 內存轉換 237
28.2 超級監(jiān)控程序異常模型 237
28.3 虛擬化和ARM安全擴展之間的關系 238
第29章 big.LITTLE簡介 239
29.1 big.LITTLE配置 239
29.2 big.LITTLE系統(tǒng)的結構 240
29.3 big.LITTLE中的執(zhí)行模型 241
29.3.1 big.LITTLE遷移模型 241
29.3.2 集群遷移 242
29.3.3 CPU遷移 243
29.4 big.LITTLE MP操作 244
第30章 調試 245
30.1 ARM調試硬件 245
30.2 ARM跟蹤硬件 246
30.3 調試監(jiān)視器 248
30.4 調試Linux應用程序 248
30.5 DS-5的調試和跟蹤 249
30.5.1 使用DS-5調試Linux應用程序 250
30.5.2 調試Linux內核模塊 250
30.5.3 使用DS-5調試Linux內核 251
30.5.4 使用DS-5調試多線程應用程序 251
30.5.5 調試共享庫 251
30.5.6 DS-5的跟蹤支持 251
參考文獻 254

本目錄推薦

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