ARM體係結構與編程(第2版)

ARM體係結構與編程(第2版) pdf epub mobi txt 電子書 下載 2025

杜春雷 著
圖書標籤:
  • ARM
  • 嵌入式係統
  • 體係結構
  • 編程
  • 匯編
  • C語言
  • 單片機
  • 處理器
  • 計算機組成原理
  • 技術
想要找書就要到 靜流書站
立刻按 ctrl+D收藏本頁
你會得到大驚喜!!
齣版社: 清華大學齣版社
ISBN:9787302403425
版次:2
商品編碼:11742624
品牌:清華大學
包裝:平裝
開本:16開
齣版時間:2015-07-01
用紙:膠版紙
頁數:512
字數:797
正文語種:中文

具體描述

內容簡介

  ARM處理器是一種16/32位的高性能、低成本、低功耗的嵌入式RISC微處理器,由ARM公司設計,然後授權給各半導體廠商生産,它目前已經成為應用最為廣泛的嵌入式處理器。《ARM體係結構與編程(第2版)》共為分14章,對ARM處理器的體係結構、指令係統和開發工具進行瞭比較全麵的介紹。其中包括ARM體係、ARM程序設計模型、ARM匯編語言程序設計、ARM C/C++語言程序設計、ARM連接器的使用、ARM集成開發環境CodeWarrior IDE的介紹及高性能的調試工具ADW的使用。並在此基礎上介紹一些典型的基於ARM體係的嵌入式應用係統設計的基本技術。通過閱讀本書,可以使讀者掌握開發基於ARM的應用係統的各方麵的知識。本書既可作為學習ARM技術的培訓材料,也可作為嵌入式係統開發人員的參考手冊。

目錄

第1章 ARM概述及其基本編程模型 1

1.1 ARM技術的應用領域及其特點 1

1.2 ARM體係結構的版本及命名方法 2

1.3 ARM處理器係列 7

1.4 ARM處理器的運行模式 11

1.5 ARM寄存器介紹 11

1.6 ARM體係的異常中斷 17

1.7 ARM體係中的存儲係統 19

第2章 ARM指令分類及其尋址方式 22

2.1 ARM指令集概要介紹 22

2.2 ARM指令的尋址方式 24

第3章 ARM指令集介紹 61

3.1 ARM指令集 61

3.2 一些基本的ARM指令功能段 110

3.3 Thumb指令介紹 120

第4章 ARM匯編語言程序設計 122

4.1 僞操作 122

4.2 ARM匯編語言僞指令 151

4.3 ARM匯編語言語句的格式 153

4.4 ARM匯編語言程序的格式 162

4.5 ARM匯編編譯器的使用 164

4.6 匯編程序設計舉例 166

第5章 ARM的存儲係統 175

5.1 ARM存儲係統概述 175

5.2 ARM中用於存儲管理的係統控製

協處理器CP15 176

5.3 存儲器管理單元MMU 186

5.4 高速緩衝存儲器和寫緩衝區 205

5.5 快速上下文切換技術 217

5.6 與存儲係統相關的程序設計指南 219

5.7 ARM存儲係統的實例 225

第6章 ATPCS介紹 242

6.1 ATPCS概述 242

6.2 基本ATPCS 242

6.3 幾種特定的ATPCS 246

第7章 ARM程序和Thumb程序混閤

使用 250

7.1 概述 250

7.2 在匯編語言程序中通過用戶代碼

支持interwork 251

7.3 在C/C++程序中實現interwork 256

7.4 在匯編語言程序中通過連接器

支持interwork 259

第8章 C/C++以及匯編語言的混閤

編程 263

8.1 內嵌匯編器的使用 263

8.2 從匯編程序中訪問C程序變量 270

8.3 匯編程序、C程序以及C++程序的

相互調用 271

第9章 異常中斷處理 276

9.1 ARM中的異常中斷處理概述 276

9.2 進入和退齣異常中斷的過程 279

9.3 在應用程序中安排異常中斷處理

程序 285

9.4 SWI異常中斷處理程序 288

9.5 FIQ和IRQ異常中斷處理程序 297

9.6 復位異常中斷處理程序 302

9.7 未定義指令異常中斷 302

9.8 指令預取中止異常中斷處理程序 303

9.9 數據訪問中止異常中斷處理程序 303

第10章 ARM C/C++編譯器 304

10.1 ARM C/C++編譯器概述 304

10.2 ARM編譯器命令行格式 306

10.3 ARM編譯器中的pragmas 319

10.4 ARM編譯器特定的關鍵詞 321

10.5 ARM編譯器支持的基本數據

類型 335

10.6 ARM編譯器中的預定義宏 337

10.7 ARM中的C/C++庫 339

第11章 ARM連接器 347

11.1 ARM映像文件 347

11.2 ARM連接器介紹 351

11.3 ARM連接器生成的符號 353

11.4 連接器的優化功能 354

11.5 運行時庫的使用 355

11.6 從一個映像文件中使用另一個映像

文件中的符號 359

11.7 隱藏或者重命名全局符號 362

11.8 ARM連接器的命令行選項 363

11.9 使用scatter文件定義映像文件的

地址映射 371

第12章 嵌入式應用程序示例 384

12.1 嵌入式應用程序設計的基本知識 384

12.2 使用semihosting的C語言程序

示例 388

12.3 一個嵌入式應用係統示例 392

12.4 進行ROM/RAM地址重映射的

嵌入式應用係統 401

12.5 一個嵌入式操作係統示例 405

第13章 使用CodeWarrior 412

13.1 CodeWarrior for ARM概述 412

13.2 簡單工程項目的使用 413

13.3 配置生成目標 424

13.4 復雜工程項目的使用 451

13.5 工程項目模闆 456

13.6 編譯和連接工程項目 461

第14章 ARM體係中的調試方法 465

14.1 ARM體係中的調試係統概述 465

14.2 基於Angel的調試係統 466

14.3 基於JTAG的調試係統 495

14.4 ADW使用介紹 498

參考文獻 513

精彩書摘

  其中的符號及參數說明如下。

  :是指令助記符,如ADD錶示算術加操作指令。

  {}:錶示指令執行的條件。

  {S}:決定指令的操作是否影響CPSR的值。

  :錶示目標寄存器。

  :錶示包含第1個操作數的寄存器。

  :錶示第2個操作數。

  通常有下麵3種格式。

  (1) 立即數方式。每個立即數由一個8位的常數循環右移偶數位得到。其中循環右移的位數由一個4位二進製的兩倍錶示。如果立即數記作,8位常數記作immed_8,4位的循環右移值記作rotate_imm,則有:

  = immed_8循環右移(2*rotate_imm)

  這樣並不是每一個32位的常數都是閤法的立即數,隻有能夠通過上麵構造方法得到的纔是閤法的立即數。下麵的常數是閤法的立即數:

  0Xff,0x104,0xff0,0xff00

  而下麵的數不能通過上述構造方法得到,則不是閤法的立即數:

  0x101,0x102,0xFF1

  同時按照上麵的構造方法,一個閤法的立即數可能有多種編碼方法。如0x3F0是一個閤法的立即數,它可以采用下麵兩種編碼方法:

  immed_8=0x3F,rotate_imm=0xE 或者

  immed_8=0xFC,rotate_imm=0Xf

  但是,由於這種立即數的構造方法中包含瞭循環移位操作,而循環移位操作會影響CPSR的條件標誌位C。因此,同一個閤法的立即數由於采用瞭不同的編碼方式,將使某些指令的執行産生不同的結果,這是不能允許的。ARM匯編編譯器按照下麵的規則來生成立即數的編碼。

  當立即數數值在0和0xFF範圍中時,令immed_8=,rotate_ imm=0。

  其他情況下,匯編編譯器選擇使rotate_imm數值最小的編碼方式。

  (2) 寄存器方式。在寄存器尋址方式下,操作數即為寄存器的數值。如下例所示:

  MOV R3,R2 ; 將R2的數值放到R3中

  ADD R0,R1,R2 ; R0的數值等於R1的數值加上R2的數值

  (3) 寄存器移位方式。寄存器移位方式的操作數為寄存器的數值做相應的移位(或者循環移位)而得到。具體的移位(或者循環移位)的方式有下麵幾種。

  ASR:算術右移。

  LSL:邏輯左移。

  LSR:邏輯右移。

  ROR:循環右移。

  RRX:擴展的循環右移。

  移位(或者循環移位)的位數可以用立即數方式或者寄存器方式錶示。

  下麵是一些寄存器移位方式的操作數示例:

  MOV R0,R1,LSL #3 ; R0=R1*(2**3)

  ADD R0,R1,R1,LSL #3 ; R0=R1+R1*(2**3)

  SUB R0,R1,R2,LSR #4 ; R0=R1-R2/(2**4)

  MOV R0,R1,ROR R2 ; R0=R1循環右移R2位

  數據處理指令操作數的具體尋址方式有下麵11種。

  #

  , LSL #

  , LSL

  , LSR #

  , LSR

  , ASR #

  , ASR

  , ROR #

  , ROR

  , RRX

  1. #

  指令編碼格式

  31 28 27 25 24 21 20 19 16 15 12 11 8 7 0

  cond 0 0 1 opcode S Rn Rd rotate_imm immed_8

  操作數生成方法

  指令的操作數即為立即數#。立即數#的生成方法見前麵章節的介紹。當rotate_imm=0時,循環器的進位值(即 Carry-out 位)為CPSR中的C條件標誌位;當rotate_imm!=0時,循環器的進位值(即 Carry-out 位)為操作數的最高位bit[31]。

  指令中操作數的語法格式

  #

  其中,= immed_8循環右移(2*rotate_imm)。

  指令中操作數尋址操作的僞代碼

  shifter_operand = immed_8 Rotate_Right (rotate_imm * 2)

  if rotate_imm == 0 then

  shifter_carry_out = C flag

  else /* rotate_imm != 0 */

  shifter_carry_out = shifter_operand[31]

  使用說明

  這裏需要注意,關於立即數的閤法性以及立即數編碼的規則,具體細節在上一節已經做瞭詳細描述,這裏不再重復。

  示例

  MOV R0,#0xFC0 ; 令R0的數值為0xFC0

  2.

  指令編碼格式

  31 28 27 25 24 21 20 19 16 15 12 11 7 6 4 3 0

  cond 0 0 0 opcode S Rn Rd 0 0 0 0 0 0 0 0 Rm

  操作數生成方法

  指令的操作數即為寄存器的數值。循環器的進位值(即 Carry-out 位)為CPSR中的C條件標誌位。

  指令中操作數的語法格式

  其中,指定操作數所在的寄存器。

  指令中操作數尋址操作的僞代碼

  shifter_operand = Rm

  shifter_carry_out = C Flag

  使用說明

  當R15用作第1個源操作數Rn或者第2個操作數Rm時,操作數即為當前指令地址加常數8。

  示例

  MOV R3,R2 ; 將R2的數值放到R3中

  ADD R0,R1,R2 ; R0的數值等於R1的數值加上R2的數值

  3. , LSL #

  指令編碼格式

  31 28 27 25 24 21 20 19 16 15 12 11 7 6 4 3 0

  cond 0 0 0 opcode S Rn Rd shift_imm 0 0 0 Rm

  操作數生成方法

  指令的操作數為寄存器Rm的數值邏輯左移shift_imm位。由於shift _imm為5位,所以移位的範圍為0~31位。進行移位操作後,空齣的位添0。當shift_imm=0時,循環器的進位值(即Carry-out位)為CPSR中的C條件標誌位;當shift_imm!=0時,循環器的進位值為操作數的最高位bit[31]。

  指令中操作數的語法格式

  ,LSL #

  其中:

  為進行邏輯左移操作的寄存器。

  LSL錶示邏輯左移操作。

  為邏輯左移位數,範圍為0~31。

  指令中操作數尋址操作的僞代碼

  if shift_imm == 0 then /*寄存器操作數 */

  shifter_operand = Rm

  shifter_carry_out = C Flag

  else /* shift_imm > 0 */

  shifter_operand = Rm Logical_Shift_Left shift_imm

  shifter_carry_out = Rm[32 - shift_imm]

  使用說明

  當R15用作第1個源操作數Rn或者第2個操作數Rm時,操作數即為當前指令地址加常數8。

  示例

  MOV R0,R0,LSL #n ; R0=R0*(2**n)

  4. , LSL

  指令編碼格式

  31 28 27 25 24 21 20 19 16 15 12 11 8 7 4 3 0

  cond 0 0 0 opcode S Rn Rd Rs 0 0 0 1 Rm

  ……

前言/序言

  嵌入式係統是指以應用為中心,以計算機技術為基礎,軟件硬件可裁剪,適應應用係統對功能、可靠性、成本、體積和功耗嚴格要求的專用計算機係統。

  嵌入式係統並不是最近齣現的新技術,隻是隨著微電子技術和計算機技術的發展,微控製芯片功能越來越強大,嵌入微控製芯片的設備和係統越來越多,從而使得這種技術越來越引人注目而已。嵌入式係統與通用的計算機係統既有相似之處,也有明顯的區彆。通常,嵌入式係統中的係統程序(包括操作係統)與應用程序是渾然一體的,這些程序被編譯連接成一個可以執行的二進製映像文件(Image),這個二進製映像文件被固化在係統中,在係統復位後自動執行。嵌入式係統的開發係統與實際運行的係統並不相同,需要交叉編譯係統和適當的調試係統。

  ARM嵌入式處理器是一種高性能、低功耗的RISC芯片。它由英國ARM公司設計,世界上幾乎所有的主要半導體廠商都生産基於ARM體係結構的通用芯片,或在其專用芯片中嵌入ARM的相關技術。如TI、Motorola、Intel、NS、Philips、Altera、Agilent、Atmel、Hynix、Sharp、Triscend、NEC、Cirrus Logic、Samsung和LinkUp等公司都有相應的産品。目前ARM芯片廣泛應用於無綫産品、PDA、GPS、網絡、消費電子産品、STB及智能卡中,基於ARM內核的處理器年産量突破90億個,已經成為業界的龍頭。本書比較全麵地介紹基於ARM技術的嵌入式應用係統的開發技術。

  1. 本書的主要讀者

  本書對ARM處理器的體係結構、指令係統、開發工具做瞭比較全麵的介紹。並在此基礎上討論一些典型的基於ARM體係嵌入式應用係統設計時的基本技術。通過閱讀本書,可以使讀者能夠掌握開發基於ARM的應用係統的各方麵的知識。它既可作為學習ARM技術的培訓材料,也可作為嵌入式係統開發人員的參考手冊。

  2. 本書的主要內容

  本書以可執行的二進製映像文件(Image)為中心,介紹基於ARM微處理器的嵌入式係統的開發過程所涉及的知識,主要包括以下幾部分。

  * Image文件的“原材料”,包括*.c、*.h、*.obj、*.asm及*.lib文件。這些文件包括操作係統,通常以*.lib形式提供,也有一些操作係統附屬的源代碼,可以為*.c、*.h、*.asm;BSP(其實也是操作係統的一部分,因為它對於不同的計算機主闆是不同的,這裏將其單獨列齣),它通常為*.c、*.h、*.asm;語言庫(如C語言運行庫),通常為*.lib;用戶自己的應用程序,通常為*.c、*.h、*.asm。

  本書將對應地介紹:ARM的體係結構;ARM的指令係統;ARM匯編語言,對應於*.asm文件;ARM C語言的獨到部分(與標準C相同的部分這裏不做介紹),對應於*.c;ARM的編程指南;ARM的編譯器使用。

  本書還將介紹ARM公司提供的集成開發環境CodeWarrior IDE的使用方法。

  * Image文件各部分的組織方法以及在內存中的安排。

  本書將對應地介紹ELF格式的映像文件的組成、ARM連接器的使用、程序在 ROM中的存放技術。

  * Image文件中各部分的功能。

  本書將對應地介紹一個嵌入式係統各部分的功能,著重介紹係統啓動部分的設計。這部分是嵌入式係統涉及的難點,將通過一些實例來介紹。

  * Image的調試。

  本書主要介紹ARM公司的調試工具ADW的使用方法。同時將介紹嵌入式係統的基本調試方法。

  3. 本書的結構安排

  全書包括14章。各章主要內容說明如下。

  第1章簡要介紹ARM公司的情況以及基於ARM技術的嵌入式係統的應用情況,比較詳細地介紹當前ARM體係結構的主要版本,簡要介紹目前ARM處理器的種類及其主要特點。通過這一章的介紹,讀者可以對ARM技術有一個總體的瞭解。

  第2章介紹ARM編程模型的基本知識。主要包括ARM處理器模式、ARM體係中的寄存器及其使用方式、ARM體係中異常中斷處理的基本概念以及ARM體係中存儲訪問的基本知識。通過這一章的介紹,讀者將瞭解ARM編程模型的基本知識,為詳細瞭解ARM程序設計的各項技術打好基礎。

  第3章詳細介紹ARM體係的指令係統以及尋址方式。將介紹ARM指令集和Thumb指令集各自的應用領域。雖然沒有詳細介紹Thumb指令集,但並不是因為Thumb指令集不重要,而是因為從功能上來講,它是ARM指令集的子集,在瞭解ARM指令集的基礎上很容易理解Thumb指令。介紹各指令的編碼格式、語法格式、執行的操作以及應用方法。最後將介紹一些常用的ARM指令代碼段,幫助用戶進一步理解各指令的用法,積纍一些ARM代碼設計的基本方法。

  第4章介紹ARM匯編語言程序設計的基本方法以及ARM匯編器armasm的使用方法。其中包括ARM匯編語言中的僞操作(Directives)、宏指令(Pseudo-instruction)、匯編語言格式、armasm的使用方法以及一些匯編語言程序示例。通過這些介紹,讀者可以掌握ARM匯編語言設計的方法。

  第5章介紹ARM體係的存儲係統。在一個嵌入式係統中,存儲係統是非常重要的一部分。這裏將介紹ARM體係中用於存儲管理的協處理器CP15、存儲管理單元MMU、寫緩衝以及Cache、快速上下文切換技術,還將介紹有關存儲係統的程序設計。並以LinkUp公司ARM處理器芯片L7210中的存儲係統為例,介紹ARM存儲係統的設計技術。其中沒有介紹存儲保護單元MPU,這是因為MPU更簡單,而MMU的應用更為廣泛。該章對於虛擬存儲技術、緩衝技術以及Cache技術都將做比較詳細的介紹,使那些從事基於低端單片機應用的開發人員更容易理解ARM體係中存儲係統的設計技術。

  第6章介紹ARM/Thumb過程調用的標準。為瞭能使單獨編譯的C語言程序和匯編程序之間能夠相互調用,必須為子程序間的調用製定一定的規則。ATPCS規定瞭ARM程序和Thumb程序中子程序調用的基本規則。這些基本規則包括子程序調用過程中寄存器的使用規則、數據棧的使用規則和參數的傳遞規則等。同時,該章還將介紹支持數據棧檢查的ATPCS以及與代碼/數據位置無關的ATPCS。

  第7章介紹ARM程序和Thumb程序混閤使用的方法。如果程序遵守支持ARM程序和Thumb程序混閤使用的ATPCS,則程序中的ARM子程序和Thumb子程序可以相互調用。對於C/C++源程序而言,隻要在編譯時指定-apcs /interwork選項,編譯器生成的代碼就遵守支持ARM程序和Thumb程序混閤使用的ATPCS。而對於匯編源程序而言,用戶必須保證編寫的代碼遵守支持ARM程序和Thumb程序混閤使用的ATPCS。該章將介紹相關的選項和編程技術。

  第8章介紹ARM匯編程序以及C/C++程序之間相互調用的技術。其中將介紹C編譯器中內嵌的匯編器的使用方法。

  第9章詳細介紹ARM體係中的異常中斷技術。其中包括異常中斷處理的處理過程,各種異常中斷處理的進入和返迴機製,在應用程序中使用異常中斷處理的方法以及各種異常中斷的詳細使用技術。

  第10章主要介紹ARM體係中C/C++語言程序設計的基本知識。其中包括ARM C/C++語言的一些特性、ARM C/C++編譯器的使用方法,以及ARM C/C++運行時庫的使用方法。通過這些介紹,可以使讀者掌握開發嵌入式C/C++應用程序的基本知識和方法,進一步瞭解嵌入式應用係統的特點。

  第11章介紹如何由目標文件以及庫文件得到可執行的映像文件。其中包括ELF格式的可執行映像文件的組成、ARM連接器的使用方法,以及連接過程所執行的各種操作。最後通過一些實例介紹在映像文件中各部分內容的地址映射關係。

  第12章介紹嵌入式應用程序設計的基本知識,然後通過幾個示例具體說明嵌入式應用程序的設計方法。對於每個示例,不僅詳細介紹程序設計的要點,而且介紹如何使用ARM開發工具編譯、連接這些程序,生成映像文件。該章是對前麵幾章知識的綜閤應用。

  第13章介紹CodeWarrior IDE集成開發環境的使用方法。其中著重介紹在CodeWarrior IDE中工程項目的使用方法,以及生成目標的設置方法。這些知識是使用CodeWarrior IDE進行應用程序開發時最為重要的部分。

  第14章介紹ARM體係的調試係統和ARM公司的高性能調試工具ADW的使用方法。ADW的功能非常多,本書並不是一本專門介紹ADW的書。因而隻是介紹其中的一些基本功能和嵌入式係統的基本調試方法。

  4. 閱讀本書時的注意事項

  在嵌入式應用係統的開發技術中,涉及很多名詞術語,本書主要使用在國內單片機技術領域中通用的一些名詞術語,但仍有一些ARM體係中特有的名詞術語較難翻譯。本書中有很多詞是按照其技術含義來錶達的,而不是按單詞直接翻譯。同時,對於一些名詞術語,本書在括號內給齣瞭其英文名稱,便於讀者理解。

  對於ARM指令係統,本書給齣瞭詳細的介紹,是希望該部分能作為編寫ARM匯編程序的開發人員的參考資料,提高開發人員的工作效率。

  本書在編寫過程中,得到瞭ARM(上海)的大力支持,在此錶示衷心的感謝。

  作 者


《ARM體係結構與編程(第2版)》圖書簡介 探索嵌入式世界的核心驅動力,解鎖高性能計算的無限可能 在當今科技飛速發展的時代,嵌入式係統已滲透到我們生活的方方麵麵,從智能手機、物聯網設備到汽車電子、工業自動化,無處不閃耀著其智慧的光芒。而 ARM 處理器,作為全球最受歡迎的處理器架構之一,憑藉其卓越的能效比、靈活的指令集以及強大的性能,成為瞭驅動這些嵌入式係統蓬勃發展的核心力量。 《ARM體係結構與編程(第2版)》是一部深度剖析 ARM 處理器架構精髓、引導讀者掌握 ARM 體係結構下高效編程技藝的權威指南。本書並非僅僅羅列技術細節,而是以一種循序漸進、融會貫通的方式,帶領您從宏觀的體係結構概念,逐步深入到微觀的指令集編程,直至高級的操作係統移植和性能優化。無論您是初涉嵌入式領域的學生、渴望提升專業技能的開發者,還是對高性能計算充滿好奇的工程師,《ARM體係結構與編程(第2版)》都將是您不可或缺的學習夥伴和案頭必備的參考寶典。 第一部分:ARM體係結構概覽與基礎認知 本書的開篇,我們將首先為您構建一個堅實的 ARM 體係結構認知基礎。您將瞭解 ARM 處理器發展的演進曆程,認識不同 ARM 內核(如 Cortex-A、Cortex-R、Cortex-M 係列)的特點與應用領域,理解它們在功耗、性能和實時性方麵的權衡與優勢。 ARM 架構的哲學與優勢: 深入探討 ARM 架構為何能夠占據如此重要的地位,理解其 RISC(精簡指令集計算機)設計的理念,以及這如何轉化為高效的功耗管理和卓越的性能。我們將剖析 ARM 架構在指令集設計、流水綫技術、緩存機製等方麵的獨特之處,解釋這些設計如何協同工作,以實現低功耗和高性能的完美平衡。 ARM 處理器傢族的演進: 迴顧 ARM 處理器從早期版本到如今的 Cortex 係列的精彩曆程,理解不同係列在定位、特性和目標應用上的差異。例如,Cortex-A 係列專注於高性能應用,如智能手機和服務器;Cortex-R 係列則麵嚮實時性要求極高的嵌入式係統,如汽車安全係統;而 Cortex-M 係列則以其低功耗和高性價比,廣泛應用於微控製器領域。 內存模型與總綫接口: 理解 ARM 處理器如何與內存和外部設備進行交互至關重要。本書將詳細講解 ARM 的內存訪問模型,包括字節序(大端與小端)、內存映射的概念,以及 AHB、AXI 等主流總綫接口協議。掌握這些知識,您將能更清晰地理解數據如何在處理器、內存和外設之間流動。 中斷與異常處理機製: 在實時嵌入式係統中,高效可靠的中斷和異常處理是保證係統穩定運行的關鍵。我們將深入講解 ARM 處理器的中斷控製器(GIC)的工作原理,以及各種異常(如復位、未定義指令、預取中止、數據中止、SVC 調用等)的産生、嚮量錶查找和處理流程。理解這些機製,您將能夠編寫齣響應及時、處理到位的異常處理程序。 第二部分:ARM指令集精講與匯編編程實踐 深入理解 ARM 處理器,離不開對指令集的透徹掌握。本部分將帶領您步入 ARM 匯編編程的世界,從基礎指令到高級應用,逐步提升您的編程能力。 ARM 指令集架構(ISA)詳解: 詳細講解 ARMv7-A/R/M 和 ARMv8-A 架構中的關鍵指令集,包括數據處理指令、加載/存儲指令、分支指令、協處理器指令等。我們將逐一剖析每條指令的格式、操作數、尋址模式以及執行效果,並輔以豐富的實例,幫助您理解指令的功能和用途。 寄存器與尋址模式: 深入理解 ARM 處理器的寄存器結構,包括通用寄存器、程序計數器(PC)、狀態寄存器(CPSR/SPSR)等,以及它們在程序執行中的作用。同時,您將學習 ARM 豐富的尋址模式,如立即數尋址、寄存器尋址、寄存器偏移尋址、基址加偏移尋址、索引尋址等,理解它們如何靈活地訪問內存中的數據。 Thumb 與 Thumb-2 指令集: 介紹 ARM 處理器中高效的 Thumb 和 Thumb-2 指令集,分析它們如何通過更緊湊的指令編碼來提高代碼密度,並實現與 ARM 指令集的無縫切換。您將學習如何利用 Thumb 指令集優化代碼大小,特彆是在資源受限的嵌入式係統中。 匯編語言編程實踐: 通過大量的實際匯編程序示例,引導您從零開始編寫 ARM 匯編程序。您將學習如何實現基本的算術運算、邏輯操作、數據傳輸,以及如何使用分支和循環來控製程序流程。這些實踐將幫助您建立起對底層程序執行的直觀認識,並為後續的高級編程打下堅實基礎。 編譯器與匯編器工作流程: 理解 C/C++ 代碼如何通過編譯器轉換為匯編代碼,再由匯編器轉換為機器碼,是理解軟件開發流程的關鍵。本書將簡要介紹 GCC 等主流編譯工具鏈的工作原理,以及匯編器如何處理符號、段和重定位等問題。 第三部分:ARM Cortex-M係列微控製器編程與應用 Cortex-M 係列微控製器以其低功耗、高性能和豐富的外設,在物聯網、嵌入式控製等領域占據主導地位。本部分將聚焦 Cortex-M 係列,為您提供詳盡的編程指導和實際應用案例。 Cortex-M 處理器內核詳解: 深入剖析 Cortex-M3、Cortex-M4(含 FPU)、Cortex-M7 等主流 Cortex-M 內核的特性,包括流水綫結構、NVIC(嵌套嚮量中斷控製器)、SysTick 定時器等。您將理解這些內核如何在有限的功耗預算下提供齣色的性能。 CMSIS(Cortex Microcontroller Software Interface Standard)標準: 詳細介紹 CMSIS 標準,它為不同廠商的 Cortex-M 微控製器提供瞭一緻的軟件接口,極大地簡化瞭跨平颱開發。您將學習如何利用 CMSIS-Core、CMSIS-DSP 等組件來編寫可移植的代碼。 外設驅動開發: 針對常見的微控製器外設,如 GPIO(通用輸入輸齣)、UART(通用異步收發傳輸器)、SPI(串行外設接口)、I2C(集成電路總綫)、ADC(模數轉換器)、DAC(數模轉換器)等,本書將提供詳細的寄存器配置方法和驅動程序編寫示例。您將掌握如何直接操作硬件寄存器,實現對這些外設的精確控製。 實時操作係統(RTOS)入門: 在許多復雜的嵌入式應用中,需要藉助 RTOS 來管理任務、調度資源和處理並發。本書將介紹 RTOS 的基本概念,如任務、調度、信號量、消息隊列等,並以 FreeRTOS 為例,演示如何在 Cortex-M 微控製器上移植和使用 RTOS。 低功耗設計與優化: 深入探討在嵌入式係統中實現低功耗的關鍵技術,包括各種睡眠模式、時鍾門控、電源管理單元(PMU)的應用。您將學習如何通過軟件和硬件協同優化,最大限度地延長電池供電設備的續航時間。 第四部分:ARM Cortex-A係列處理器的高級應用與係統開發 Cortex-A 係列處理器是構建高性能嵌入式係統的基石,廣泛應用於智能手機、平闆電腦、嵌入式 Linux 係統以及更復雜的應用場景。本部分將帶領您探索 Cortex-A 係列的廣闊天地。 Cortex-A 處理器架構深入: 詳細分析 Cortex-A 係列在多核、緩存一緻性、MMU(內存管理單元)、TrustZone 安全技術等方麵的先進設計。您將理解它們如何支持復雜的操作係統和高性能的應用。 嵌入式 Linux 係統開發: 講解如何在 ARM Cortex-A 平颱上進行嵌入式 Linux 係統開發,包括 Bootloader(如 U-Boot)的原理與配置,Linux 內核的編譯與移植,以及根文件係統的構建。您將學習如何使用交叉編譯工具鏈,為目標硬件平颱定製 Linux 係統。 設備樹(Device Tree)詳解: 介紹設備樹在嵌入式 Linux 中的核心作用,它是一種描述硬件配置的數據結構,允許內核獨立於硬件進行編譯。您將學習如何編寫和解析設備樹文件,以便內核能夠正確地識彆和驅動硬件設備。 驅動程序開發(Linux Kernel Module): 講解如何在 Linux 內核環境下開發設備驅動程序,包括內核模塊的加載與卸載、與用戶空間程序的交互、中斷處理等。掌握設備驅動開發,您將能夠為各種外設編寫高效的 Linux 驅動。 性能分析與優化: 介紹 ARM 處理器提供的性能分析工具,如 `perf`、`ftrace` 等,以及如何利用它們來識彆程序中的性能瓶頸。您將學習各種性能優化技術,包括緩存優化、指令流水綫優化、並發並行優化等,以充分釋放 ARM 處理器的強大性能。 ARM TrustZone 安全技術: 探討 ARM TrustZone 技術如何實現硬件級彆的安全隔離,為敏感數據和關鍵操作提供安全保障。您將瞭解 TrustZone 的安全世界(Secure World)和普通世界(Normal World)的概念,以及如何在應用中利用 TrustZone 來構建安全的嵌入式係統。 《ARM體係結構與編程(第2版)》的價值所在: 係統性與深度: 本書不僅涵蓋瞭 ARM 體係結構的基礎知識,更深入探討瞭不同係列處理器的核心特性、指令集細節以及高級應用,為讀者提供瞭一個全麵而深入的學習路徑。 實踐導嚮: 大量的代碼示例、實戰項目和調試技巧,能夠幫助讀者將理論知識轉化為實際技能,快速上手 ARM 體係結構的開發。 權威性與前瞻性: 本書緊跟 ARM 技術發展的最新動嚮,對 ARMv8-A 等新架構進行瞭詳細介紹,為讀者提供前沿的技術視野。 廣泛的適用性: 無論您是從事微控製器開發、嵌入式 Linux 開發,還是對高性能計算感興趣,本書都將為您提供寶貴的知識和技能。 誰適閤閱讀本書? 計算機科學、電子工程等專業的在校學生: 為掌握嵌入式係統核心技術,深入理解計算機底層原理打下堅實基礎。 嵌入式係統開發者: 提升 ARM 體係結構和編程能力,掌握更高效的開發技巧,應對復雜項目需求。 硬件工程師: 深入理解處理器工作原理,更好地進行軟硬件協同設計和調試。 對嵌入式技術感興趣的技術愛好者: 探索嵌入式領域的奧秘,開啓全新的技術學習之旅。 《ARM體係結構與編程(第2版)》將是您在 ARM 處理器領域的探索之旅中,最值得信賴的嚮導。通過本書的學習,您將不僅能夠理解 ARM 處理器的工作原理,更能夠掌握利用這一強大架構創造無限可能的關鍵技術。立即翻開本書,開啓您的 ARM 學習之旅,解鎖嵌入式世界的新篇章!

用戶評價

評分

這本《ARM體係結構與編程(第2版)》簡直是ARM開發者的福音!我是一名嵌入式工程師,在接觸這本書之前,對於ARM的理解一直停留在淺層,很多底層細節和高級特性的實現總讓我感覺雲裏霧裏。翻開這本書,簡直像是打開瞭新世界的大門。作者的講解條理清晰,從最基礎的ARM指令集架構開始,層層遞進,深入到各個處理器的核心特性。書中的很多插圖和僞代碼都非常精妙,將復雜的概念形象化,即使是初學者也能很快理解。我特彆喜歡書中關於內存管理和流水綫技術的講解,以前覺得這些是高不可攀的理論,現在通過書中的實例分析,我能清晰地看到它們是如何影響程序性能的。而且,這本書沒有隻停留在理論層麵,它還提供瞭大量的實際編程示例,從簡單的GPIO控製到復雜的操作係統移植,都覆蓋到瞭。我跟著書中的例子,一步步實踐,感覺自己的編程能力得到瞭質的飛躍。尤其是書中對於異常處理和中斷機製的詳細闡述,讓我對嵌入式係統的穩定性和可靠性有瞭更深刻的認識。總而言之,如果你是ARM領域的開發者,無論是初學者還是有一定經驗的工程師,這本書都絕對是值得你入手和反復研讀的寶藏。

評分

作為一個資深的嵌入式軟件開發人員,我對ARM架構的理解已經比較深入,但每次遇到新的ARM處理器或者新的技術特性,總會感覺知識有所欠缺。《ARM體係結構與編程(第2版)》這本書,為我提供瞭一個非常全麵和係統的迴顧與更新。書中的內容非常詳實,幾乎涵蓋瞭ARM架構的方方麵麵,從指令集、寄存器、流水綫,到內存管理、中斷和異常處理,再到最新的ARMv8架構及其64位特性。作者對每個部分的講解都非常到位,既有宏觀的概述,又有微觀的細節剖析。我尤其贊賞書中關於SIMD(單指令多數據流)和NEON指令集的講解,這些指令在多媒體處理和信號處理等領域至關重要,而這本書的講解非常透徹,並附帶瞭實際的應用案例。書中的一些高級主題,比如內存一緻性模型和多核協同,也讓我受益匪淺。總的來說,這本書不僅僅是入門指南,更是一本值得反復查閱的參考書,能夠幫助我及時跟進ARM技術的發展,保持在技術前沿。

評分

這本書的標題《ARM體係結構與編程(第2版)》聽起來就非常專業,但當我真正翻開它,卻發現它比我想象的要更容易理解。我之前在學校裏接觸過一些ARM的皮毛,但始終沒有形成一個完整的概念。這本書就像一個經驗豐富的老師,耐心地引導我一步步深入ARM的世界。它沒有像某些教材那樣,上來就給齣一大堆枯燥的代碼和概念,而是先用通俗易懂的語言解釋ARM的由來和發展,讓我對ARM有一個基本的認識。然後,它循序漸進地講解ARM的指令係統,包括各種尋址模式和指令的格式,讓我能夠理解匯編語言是如何工作的。我特彆喜歡書中關於“ARM處理器的調試技巧”的章節,它提供瞭一些非常實用的方法,幫助我解決在調試過程中遇到的各種棘手問題。而且,書中的例子代碼都非常簡潔明瞭,我跟著例子,能夠輕鬆地在我的開發闆上運行起來。這本書真的讓我對ARM的理解不再是霧裏看花,而是變得清晰可見。

評分

坦白說,我買這本書的初衷是想快速瞭解ARM架構,為我的項目做技術儲備,沒抱太大期望能有多麼深入的洞察。但這本書卻給瞭我一個大大的驚喜!它的內容組織方式非常獨特,不像我之前看過的那些枯燥的技術手冊,而是更像一本循序漸進的學習指南。作者的語言風格非常接地氣,沒有過多華麗的辭藻,而是用最簡潔明瞭的方式闡述復雜的技術細節。我尤其欣賞書中對於一些關鍵概念的“由淺入深”的處理,比如,它不會一開始就拋齣大量的寄存器地址和指令碼,而是先從宏觀的架構圖開始,讓你有一個整體的認識,然後再逐步細化到具體的指令和尋址方式。我之前在調試一些性能瓶頸問題時,總是束手無策,這本書中的性能分析章節,簡直是雪中送炭!它教會我如何利用ARM的性能監控單元(PMU)來定位問題,並通過代碼優化來提升效率。書中的例子也很有代錶性,涵蓋瞭從入門到進階的各種場景,讓我能夠將學到的知識立刻應用到實際工作中。我最近在研究RTOS的調度算法,書中的相關章節為我提供瞭非常寶貴的參考。這本書的價值遠超其定價,對於任何想要深入理解ARM處理器的人來說,都是一本不可多得的佳作。

評分

我是一名業餘的硬件愛好者,一直對嵌入式係統充滿好奇。市麵上關於ARM的書籍很多,但大部分都過於專業,讓我望而卻步。《ARM體係結構與編程(第2版)》這本書,則給瞭我一個非常友好的入門途徑。它沒有一開始就充斥著晦澀難懂的專業術語,而是從一些基礎概念講起,比如ARM指令集的發展曆史,不同ARM核心的特點等等,讓我能逐步建立起對ARM的整體認識。我特彆喜歡書中關於“ARM的指令集設計哲學”的講解,它讓我理解瞭為什麼ARM能夠如此普及,以及它的設計優勢在哪裏。書中的代碼示例也很實用,我跟著書中的例子,成功地在開發闆上實現瞭一些簡單的功能,這讓我信心倍增。雖然我還沒有深入到操作係統移植的層麵,但這本書為我打下瞭堅實的基礎,讓我不再害怕接觸更復雜的嵌入式開發。我曾經嘗試過閱讀其他書籍,但總是因為理解上的睏難而放棄,這本書的語言風格和內容安排,恰好彌補瞭我的不足。對於像我這樣希望從零開始學習ARM的愛好者來說,這本書絕對是最佳選擇。

評分

內容蠻多的也挺詳細的,希望這本書能對我的學習有所幫助。

評分

挺好的,配送速度很快。好。

評分

1

評分

日期不錯,速度很快,不錯不錯

評分

書是正版的,唯一缺陷就是包裝沒弄好有褶皺

評分

內容充實,知識點說得很具體

評分

好像說有點難懂

評分

不錯的一本書,加油好好學習吧

評分

第二次購買瞭,非常不錯的書

相關圖書

本站所有內容均為互聯網搜尋引擎提供的公開搜索信息,本站不存儲任何數據與內容,任何內容與數據均與本站無關,如有需要請聯繫相關搜索引擎包括但不限於百度google,bing,sogou

© 2025 book.coffeedeals.club All Rights Reserved. 靜流書站 版權所有