-- 會員 / 註冊 --  
 帳號:
 密碼:
  | 註冊 | 忘記密碼
3/26 新書到! 3/19 新書到! 3/14 新書到! 12/12 新書到!
購書流程Q & A站務留言版客服信箱
3ds MaxMayaRhinoAfter EffectsSketchUpZBrushPainterUnity
PhotoShopAutoCadMasterCamSolidWorksCreoUGRevitNuke
C#CC++Java遊戲程式Linux嵌入式PLCFPGAMatlab
駭客資料庫搜索引擎影像處理FluentVR+ARANSYS深度學習
單晶片AVROpenGLArduinoRaspberry Pi電路設計CadenceProtel
HadoopPythonStm32CortexLabview手機程式AndroidiPhone
可查書名,作者,ISBN,3dwoo書號
詳細書籍分類

嵌入式ARM開發實戰

( 簡體 字)
作者:[美] James A. Langbridge 著 類別:1. -> 電腦組織與體系結構 -> 嵌入式系統
   2. -> Cortex
譯者:陳青華 張龍杰 司維超 譯
出版社:清華大學出版社嵌入式ARM開發實戰 3dWoo書號: 41699
詢問書籍請說出此書號!

缺書
NT售價: 250

出版日:5/19/2015
頁數:362
光碟數:0
站長推薦:
印刷:黑白印刷語系: ( 簡體 版 )
加入購物車 加到我的最愛
(請先登入會員)
ISBN:9787302396192
作者序 | 譯者序 | 前言 | 內容簡介 | 目錄 | 
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證)
作者序:

譯者序:

前言:

在嵌入式系統的領域內,不借助ARM CPU難以長期工作。ARM CPU因其較低的耗電量成為理想的移動嵌入式系統。自2012年以來,幾乎所有PDA和智能手機都使用了ARM CPU,其占據了32位嵌入式系統75%和嵌入式RISC系統的90%的份額。2005年,售出的10億多部手機中98%使用至少一個ARM處理器。ARM處理器使用在手機、平板計算機、MP3播放器、手持游戲機、計算器,甚至計算機外圍設備,如藍牙芯片和硬盤驅動器中。
每兩個月都有超過10億的ARM處理器被送到使用者手中。令人驚訝的是,ARM并非作為處理器而是作為設計內核被使用。ARM的合作伙伴們使用這些設計作為基礎,添加自己的外部設備、外圍設備,或修改ARM的原有速度和功耗功率,從而制成適合自己的處理器。通過與制造商合作,ARM創造了一個巨大的生態系統。結果是誕生了一系列非凡的處理器,可用于所有類型的設備。使用共同的架構,開發人員能夠輕松地切換各個處理器。
ARM處理器不是只擁有有限的微型處理器性能。從用于最小系統的微控制器設備到運用64位處理器的服務器都可運用ARM處理器。
本書介紹嵌入式ARM系統,如何啟動并運行該系統,如何在該平臺上進行開發以及在此巨大的生態系統中可運用的設備。
本書適用對象
本書主要面向初入嵌入式領域的開發人員。對大多數例子來講,需要基本了解C語言,但不需要掌握匯編語言的知識。
該書也便于開發人員更好地掌握處理器的內部構件和深入理解內核工作。
本書涵蓋內容
本書涵蓋了ARM處理器技術的高級內容,著重關注運用于Cortex-A、Cortex-R和Cortex-M設備的ARMv7架構。如果使用了Cortex系列處理器,你會感覺運用自如。但如果使用ARM經典內核,你還可以掌握架構和平臺之間的區別。
本書結構安排
本書為不具備ARM處理器使用經驗的讀者提供盡可能豐富的信息。要理解ARM哲學,有必要了解ARM的起源和產生過程。本書涵蓋了嵌入式項目的所有方面:理解處理器和擴展處理器,理解匯編程序,用更常見的C語言生成第一個程序,并且繼續進行調試和優化。
第1章“ARM發展史”,概述了ARM的傳奇歷史和起源,以及發展現狀。
第2章“ARM嵌入式系統”,介紹了何為嵌入式系統,講述了嵌入式系統的優勢。
第3章“ARM架構”,列舉了ARM處理器的組成元件及其有效的使用方法。
第4章“ARM匯編語言”,介紹了ARM匯編語言,并解釋了理解匯編語言的重要性。
第5章“ARM 入門”,展示一些模擬器和真實芯片來編寫程序,不僅有ARM處理器啟動而且包括更復雜程序應用基礎的編程。本章還列舉了一些真實世界的場景項目。
第6章“Thumb指令集”,介紹了Thumb模式和Thumb-2擴展。Cortex-M處理器僅用于Thumb模式,但在代碼密度要求高的地方Thumb可用于每一個現代處理器。
第7章“匯編指令”,列舉了ARM統一匯編語言中的一系列匯編指令。用淺顯易懂的程序介紹了這一系列匯編指令的用法。
第8章“NEON”,介紹了NEON,ARM先進的單指令多數據處理器,并展示了如何運用它來加速數學密集的例程。
第9章“調試”,通過列舉真實案例描述了何為調試、調試程序所需要的以及調試的成效。
第10章“編寫優化C程序”,描述了應用程序的最終部分—— 優化。通過簡單案例,可以學習如何編寫優化代碼,并了解處理器內部實施進一步的優化的過程。
附錄A“術語”,解釋了使用嵌入式系統(具體指ARM嵌入式系統)工作時遇到的詞匯和術語。
附錄 B“ARM架構版本”,列舉了不同的ARM架構并解釋了每一個版本架構的技術優點,以及處理器所屬的架構。
附錄 C“ARM內核版本”,詳細介紹ARM內核,介紹每個處理器的變化。重點討論了始于ARM6 的每個處理器。引入更多細節介紹現代的Cortex-級處理器。
附錄 D“NEON內部函數和指令”,列舉出可用于ARM NEON引擎的不同指令,同時使用C語言介紹了用于優化NEON計算的內部函數執行方式。
附錄 E“匯編語言指令”,列舉并詳細描述了運用于UAL的不同匯編指令,同時列舉了運用于不同Cortex-M處理器的一系列Thumb指令。
使用本書的必要條件
大多數人猜想嵌入式系統被昂貴的電子設備和高價的軟件授權所包圍,但事實是僅用很少的投入就可以開始嵌入式開發。首先,需要一臺開發計算機。本書給出了Linux系統下的例子,也可以在Windows和MacOS系統下使用。本書提供了免費版權的編譯器,可以使用免費的ARM模擬器來編寫第一個程序,但是稍后使用一個小型的ARM系統將是明智的:不論是來自于一個制造商(指定兩個)的評估版,還是使用廉價的小型計算機,如Raspberry Pi(樹莓派)或者Arduino Due。
要運行書中的示例,需要具備以下條件:
● Linux 系統開發計算機
● Mentor 圖形編譯器套件
● Atmel SAM D20 Xplained Pro evaluation board
● Silicon Lab’s STK3200 and STK3800 evaluation boards
● Raspberry Pi
示例的源代碼可以從Wrox網站上下載,網址如下:
www.wiley.com/go/profembeddedarmdev
約定
為了有助于你從書中獲得最大收獲并能跟蹤正在發生什么,全書使用了一些約定。





源代碼
使用本書中的示例時,你既可以選擇手動輸入所有的代碼也可以使用隨書的源代碼文件。本書使用的所有源代碼可以在www.wrox.com上下載。針對本書,代碼下載位于如下頁面Download Code選項卡:
www.wrox.com/go/profembeddedarmdev
也可以通過ISBN(本書的ISBN為978-1-118-78894-3)在www.wrox.com和http://www.tupwk.com.cn/downpage上搜索本書來找到代碼。并且當前所有Wrox圖書完整的代碼列表可以在www.wrox.com/dynamic/books/download.aspx。在第5章的開頭,你會發現該章的主要代碼文件的列表。在這一章,也會發現引用的可供下載的代碼文件的名稱。
www.wrox.com 網頁上的大多數代碼被壓縮成ZIP、RAR格式,或者適合開發平臺類似的格式。
下載代碼后,用你最喜歡的壓縮工具解壓縮。另外,你可以去Wrox 代碼主下載頁面www.wrox.com/dynamic/books/download.aspx上去看本書和其他所有Wrox書適用的代碼。
勘誤表
我們竭盡全力確保本書在文字或代碼中沒有錯誤。然而,人無完人,而錯誤時有發生。如果你在我們任一本書中發現錯誤,如拼寫錯誤或者代碼片段的錯誤,我們將會感激你的反饋。通過發送勘誤表,你可能會節省其他讀者數小時的困惑,與此同時,你也可以幫助我們提供更高質量的信息。
請到網址www.wrox.com/go/profembeddedarmdev找到本書的勘誤表頁面,然后單擊勘誤表鏈接。在這個頁面你能看到由Wrox 編輯為本書提出的所有勘誤。如果在本書勘誤表頁面不能找到“你發現的”錯誤,登錄www.wrox.com/contact/techsupport.shtml,在該頁面完成表單發送你所找到的錯誤給我們。我們會核對信息,如果合適,留言到勘誤表頁面并在隨后的圖書編輯中解決。
p2p.wrox.com
作者和同行可以登錄http://p2p.wrox.com加入 P2P論壇討論。論壇是一個基于Web的系統,便于你發布關于Wrox圖書和相關技術的消息并且與其他讀者和技術用戶交流。論壇提供了電子郵件訂閱功能。Wrox作者、編輯或其他行業專家還有你的讀者也在這些論壇上。
在http://p2p.wrox.com上,不僅當你閱讀本書時,而且在你開發自己的應用程序時,會發現許多不同的對你有幫助的論壇。要想加入論壇,只需按照如下步驟:
(1) 訪問http://p2p.wrox.com并單擊Register鏈接。
(2) 閱讀使用條款并單擊Agree。
(3) 完成所需要的信息填寫,以及任何你要提供的可選信息并單擊Submit。
(4) 你會收到一封電子郵件,郵件描述如何驗證你的賬戶和完成加入過程。




加入后,可以發布新消息和回復其他用戶發布的消息。你可以閱讀網頁上的任何時間的消息。如果你想從一個特定的論壇獲取新的消息并發送電子郵件給你,在論壇名單中單擊訂閱中的本論壇圖標。
關于如何使用Wrox P2P論壇獲取更多信息,一定要讀關于P2P論壇軟件是如何工作的常見問題的解答,以及許多針對P2P和Wrox圖書的常見問題。要想閱讀FAQ,請單擊任何P2P頁面的FAQ鏈接。
內容簡介:

進入嵌入式系統開發的世界
 無論是iPad、Surface平板電腦、iPhone還是任天堂的DS(雙屏游戲機),ARM微處理器技術都能支持它們運行。這些基于ARM的處理器僅用極少的能耗就提供了強有力的數值計算能力,這使得它們非常適用于移動設備。本指南將引領你進入嵌入式ARM開發的世界, 并指導你研究不同的系統常見的ARM處理器。本書探討了嵌入式ARM開發的基礎,包括處理器的概述、處理器使用的編程語言和很多程序設計示例。通過一步一步的詳細講解,你很快就能創建自己的第一個嵌入式應用程序。
主要內容
◆ 通過清晰地解釋不同系統常見的ARM處理器,讓你輕松進入嵌入式ARM開發的世界
◆ 研究嵌入式ARM系統開發所需的工具,包括開發板、軟件和參考資料
◆ 讓你快速熟悉匯編語言以便能開始低級系統編程和調試
◆ 展示如何進行優化以確保從大多數ARM處理器中獲得快速的代碼

目錄:

第Ⅰ部分 ARM系統和開發
第1章 ARM發展史 3
1.1 ARM的起源 4
1.1.1 Acorn決定創建新處理器的理由 6
1.1.2 Acorn變成ARM的原因 7
1.1.3 ARM不實際生產微處理器的原因 8
1.2 ARM的命名約定 10
1.2.1 如何辨別正在使用的處理器 11
1.2.2 ARM7TDMI和ARM926EJ-S處理器的差異 13
1.2.3 ARM7和ARMv7的差異 15
1.2.4 Cortex-M和Cortex-A的差異 15
1.3 制造商文獻資料 16
1.4 ARM在今天都做些什么 16
1.5 本章小結 17
第2章 ARM嵌入式系統 19
2.1 ARM嵌入式系統的定義 22
2.1.1 芯片上的系統 23
2.1.2 嵌入式系統和系統程序設計之間的區別 24
2.1.3 優化的重要性 25
2.1.4 RISC架構的優勢 29
2.2 選擇合適的處理器 32
2.3 如何著手 34
2.3.1 可用的電路板 35
2.3.2 現有操作系統 38
2.3.3 最適合我的目的的編譯器 39
2.3.4 準備進行調試 40
2.3.5 是否有完整的開發環境 41
2.3.6 還需要知道什么 42
2.4 本章小結 43
第3章 ARM架構 45
3.1 理解基礎知識 46
3.1.1 寄存器 47
3.1.2 堆棧 48
3.1.3 內部RAM 48
3.1.4 緩存 49
3.2 開始了解不同的ARM子系統 51
3.2.1 處理器寄存器介紹 51
3.2.2 CPSR介紹 55
3.2.3 計算單元 57
3.2.4 流水線 58
3.2.5 緊耦合存儲器 60
3.2.6 協處理器 61
3.3 理解不同的概念 62
3.3.1 異常的概念 62
3.3.2 處理不同的異常 65
3.3.3 操作模式 66
3.3.4 向量表 68
3.3.5 存儲器管理 70
3.4 不同的技術 73
3.4.1 JTAG調試(D) 73
3.4.2 增強的DSP(E) 73
3.4.3 向量浮點(F) 74
3.4.4 EmbeddedICE(I) 75
3.4.5 Jazelle(J) 75
3.4.6 長乘法(M) 75
3.4.7 Thumb(T) 76
3.4.8 合成器(S) 76
3.4.9 TrustZone 77
3.4.10 NEON 78
3.4.11 big.LITTLE 78
3.5 本章小結 80
第4章 ARM匯編語言 81
4.1 匯編語言介紹 82
4.2 與計算機對話 82
4.3 學習匯編語言的理由 84
4.3.1 速度 85
4.3.2 空間 87
4.3.3 趣味性 88
4.3.4 編譯器并不完美 88
4.3.5 通過匯編語言理解計算機科學 89
4.3.6 使用匯編語言編寫 89
4.4 使用匯編語言 90
4.4.1 編寫啟動加載程序 90
4.4.2 逆向工程 91
4.4.3 優化 92
4.5 ARM匯編語言 93
4.5.1 指令格式 93
4.5.2 布局 94
4.5.3 條件代碼 94
4.5.4 更新條件標志 98
4.5.5 尋址模式 101
4.6 ARM匯編語言基礎 105
4.6.1 加載和存儲 105
4.6.2 值的設置 105
4.6.3 分支 105
4.6.4 數學 106
4.6.5 理解一個示范程序 106
4.7 本章小結 108
第5章 ARM入門 109
5.1 Hello World! 110
5.2 刨根問底 115
5.3 Hello World,這次來真的 118
5.4 軟件實現 123
5.5 存儲器映射 125
5.6 實際例子 129
5.6.1 Silicon Labs公司的STK3800 129
5.6.2 Silicon Labs公司的STK3200 135
5.6.3 Atmel公司的D20 Xplained Pro 144
5.7 案例分析:U-BOOT 154
5.8 機器學習:Raspberry Pi 156
5.8.1 引導程序 157
5.8.2 為Raspberry Pi編譯程序 158
5.8.3 接下來做什么 159
5.9 本章小結 160
第6章 Thumb指令集 161
6.1 Thumb 163
6.2 Thumb-2技術 164
6.3 Thumb的執行方式 164
6.4 使用Thumb的優點 166
6.5 使用Thumb的內核 168
6.6 ARM-Thumb交互工作 171
6.7 Thumb-1介紹 172
6.7.1 可用的寄存器 172
6.7.2 被移除的指令 173
6.7.3 沒有條件語句 174
6.7.4 設置標志 174
6.7.5 沒有桶形移位器 174
6.7.6 簡化的立即數 175
6.7.7 棧操作 175
6.8 Thumb-2介紹 175
6.8.1 新的指令 176
6.8.2 協處理器 178
6.8.3 DSP 178
6.8.4 FPU 178
6.9 編寫Thumb程序 179
6.10 本章小結 180
第7章 匯編指令 183
7.1 傳送指令 184
7.1.1 MOV 184
7.1.2 MVN 185
7.1.3 MOVW 186
7.1.4 MOVT 186
7.1.5 NEG 186
7.1.6 示例:從指令流加載32位常量 187
7.2 算術運算 189
7.2.1 ADD 190
7.2.2 ADC 190
7.2.3 SUB 191
7.2.4 SBC 191
7.2.5 RSB 191
7.2.6 RSC 192
7.2.7 示例:基本數學運算 192
7.3 飽和算術運算 193
7.3.1 QADD 194
7.3.2 QSUB 194
7.3.3 QDADD 194
7.3.4 QDSUB 195
7.4 數據傳遞 195
7.4.1 LDR 196
7.4.2 STR 197
7.4.3 示例:字符串復制 197
7.5 邏輯運算 198
7.5.1 AND 198
7.5.2 EOR 198
7.5.3 ORR 199
7.5.4 BIC 199
7.5.5 CLZ 199
7.6 比較運算 199
7.6.1 CMP 200
7.6.2 CMN 200
7.6.3 TST 200
7.6.4 TEQ 200
7.7 分支 201
7.7.1 B 201
7.7.2 BL 202
7.7.3 BX 202
7.7.4 BLX 203
7.7.5 示例:計數到零 203
7.7.6 示例:Thumb交互工作 203
7.7.7 MOV pc, lr是什么 204
7.8 乘法 205
7.8.1 MUL 205
7.8.2 MLA 205
7.8.3 UMULL 206
7.8.4 UMLAL 206
7.8.5 SMULL 206
7.8.6 SMLAL 206
7.9 除法 207
7.9.1 SDIV 208
7.9.2 UDIV 208
7.10 多寄存器數據傳遞 208
7.10.1 STM 210
7.10.2 LDM 210
7.11 桶形移位器 210
7.11.1 LSL 211
7.11.2 LSR 212
7.11.3 ASR 212
7.11.4 ROR 212
7.11.5 RRX 212
7.12 堆棧操作 213
7.12.1 PUSH 213
7.12.2 POP 213
7.12.3 示例:從子例程中返回 213
7.13 協處理器指令 214
7.13.1 MRC 214
7.13.2 MCR 215
7.14 其他指令 216
7.14.1 SVC 216
7.14.2 NOP 216
7.14.3 MRS 216
7.14.4 MSR 217
7.15 本章小結 217
第8章 NEON 219
8.1 NEON的優點 220
8.2 NEON支持的數據類型 222
8.3 用匯編語言使用NEON 223
8.3.1 寄存器的使用 223
8.3.2 加載和存儲數據 224
8.3.3 優化存儲器復制 229
8.3.4 NEON指令 230
8.4 在C語言中使用NEON 231
8.4.1 內部函數描述 232
8.4.2 使用NEON內部函數 235
8.4.3 將圖像轉換為灰度圖像 235
8.5 本章小結 239
第9章 調試 241
9.1 調試器介紹 242
9.1.1 調試器的作用 242
9.1.2 ARM的調試功能 243
9.2 調試的類型 246
9.2.1 循環 246
9.2.2 例程 247
9.2.3 中斷控制器 247
9.2.4 引導程序 247
9.3 調試器 248
9.3.1 GNU調試器 248
9.3.2 J-Link gdb調試器 250
9.4 調試例程 251
9.4.1 無限循環 251
9.4.2 未知異常 254
9.4.3 被零除 255
9.5 深入分析 256
9.5.1 數據中止 256
9.5.2 損壞的串行線路 258
9.5.3 64位計算 260
9.5.4 實時響應 262
9.6 本章小結 263
第10章 編寫優化C程序 265
10.1 代碼優化規則 266
10.1.1 不要一開始就優化 266
10.1.2 了解編譯器 266
10.1.3 了解你的代碼 267
10.2 性能分析 267
10.2.1 基于操作系統的性能分析 268
10.2.2 基于裸機的性能分析 269
10.3 C語言優化 272
10.3.1 基本例子 273
10.3.2 計數下降,不是上升 277
10.3.3 整數 278
10.3.4 除法 278
10.3.5 不要使用太多參數 279
10.3.6 指針,而不是對象 280
10.3.7 不要頻繁地更新系統存儲器 280
10.3.8 對齊 281
10.4 匯編優化 281
10.4.1 特定例程 282
10.4.2 處理中斷 282
10.5 硬件配置優化 284
10.5.1 頻率調節 284
10.5.2 配置緩存 284
10.6 本章小結 287
第Ⅱ部分 參 考
附錄A 術語 291
A.1 分支預測 291
A.2 緩存 292
A.3 緩存命中 292
A.4 緩存行 293
A.5 緩存缺失 293
A.6 協處理器 293
A.7 CP10 294
A.8 CP11 294
A.9 CP14 294
A.10 CP15 294
A.11 循環 295
A.12 異常 295
A.13 中斷 295
A.14 Jazelle 296
A.15 JTAG 296
A.16 MIPS 296
A.17 NEON 297
A.18 失序執行 297
A.19 流水線 297
A.20 寄存器 298
A.21 SIMD 298
A.22 SOC 298
A.23 綜合器 299
A.24 TrustZone 299
A.25 向量表 299
附錄B ARM架構版本 301
B.1 ARMv1 302
B.2 ARMv2 303
B.3 ARMv3 303
B.4 ARMv4 305
B.5 ARMv5 305
B.6 ARMv6 306
B.7 ARMv6-M 306
B.8 ARM v7-A/R 307
B.9 ARM v7-M 307
B.10 ARMv8 308
附錄C ARM內核版本 309
C.1 ARM6 309
C.2 ARM7 310
C.3 ARM7TDMI 310
C.4 ARM8 311
C.5 StrongARM 311
C.6 ARM9TDMI 312
C.7 ARM9E 313
C.8 ARM10 313
C.9 XSCALE 314
C.10 ARM11 314
C.11 Cortex 315
C.11.1 Cortex-A 316
C.11.2 Cortex-R 320
C.11.3 Cortex-M 321
附錄D NEON內聯函數和指令 325
D.1 數據類型 325
D.2 數據通道類型 326
D.3 匯編語言指令 327
D.4 內聯函數命名規則 331
附錄E 匯編語言指令 333
E.1 ARM指令 333
E.1.1 算術運算指令 333
E.1.2 并行運算 337
E.1.3 傳送 339
E.1.4 加載 340
E.1.5 存儲 342
E.1.6 邏輯 343
E.1.7 比較 344
E.1.8 飽和 344
E.1.9 分支 345
E.1.10 擴展 347
E.1.11 其他 349
E.2 Cortex-M內核中的Thumb指令 351
序: