ARM體系結構與編程

《ARM體系結構與編程》是清華大學出版社於2003年出版的書籍,作者是杜春雷。

內容簡介

ARM處理器是一種16/32位的高性能、低成本、低功耗的嵌入式RISC微處理器,由ARM公司設計,然後授權給各半導體廠商生產,它目前已經成為套用最為廣泛的嵌入式處理器。

本書分14章對ARM處理器的體系結構、指令系統和開發工具作了比較全面的介紹。其中包括ARM體系介紹、ARM程式設計模型、ARM彙編語言程式設計、ARM C/C++語言程式設計、ARM連線器的使用、ARM集成開發環境CodeWarrior IDE的介紹及高性能的調試工具ADW的使用。並在此基礎之上介紹一些典型的基於ARM體系的嵌入式套用系統設計時的基本技術。通過閱讀本書可以使讀者掌握開發基於ARM的套用系統的各方面的知識。

本書既可作為學習ARM技術的培訓材料,也可作為嵌入式系統開發人員的參考手冊。

參考文獻

1. KaiHwang著.王鼎興,沈美明等譯《高等計算機系統結構並行性可擴展性可程式性》北京:清華大學出版社1995

2. 鄭緯民,湯志忠編著.《計算機系統結構》北京:清華大學出版社1998

3. NucleusPLUSReferencemanual.AcceleratedTechnology

4. L7200-05SDB-HWusersmanual.LinkUpSystemsCorporation2000

5. L7210DataBookRev1_2.LinkUpSystemsCorporation2000

6. DDI0100E_ARM_ARM.ARMLimited2000

7. DUI0068B_ADS1_2_Assembler.ARMLimited2001

8. DUI0151A_ADS1_2_LinkUt.ARMLimited2001

9. DUI0067D_ADS1_2_CompLib.ARMLimited2001

10. DUI0065D_ADS1_2_CodeWarrior.ARMLimited2001

11. DUI0058D_ADS1_2_DebugTarg.ARMLimited2001

12. DDI0192A_720T_R3.ARMLimited2000

13. DAI0048A_scatterload.ARMLimited1998

14. AdamCaly.FlashMemoryLoaderSelectedAspectstoConsiderDuringDesignandImplementation.Motorola,Inc.

15. DennisEdwards.ExecutingOutofROM.2002EmbeddedSystemsConference,SanFrancisco

作品目錄

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

1. 1 ARM技術的套用領域及其特點

1. 2 ARM體系結構的版本及命名方法

1. 2. 1 ARM體系結構的版本

1. 2. 2 ARM體系的變種

1. 2. 3 ARM/Thumb體系版本的命名格式

l. 3 ARM處理器系列

1. 3. 1 ARM7系列

1. 3. 2 ARM9系列

1. 3. 3 ARM9E系列

1. 3. 4 ARM1OE系列

1. 3. 5 SecurCore系列

l. 4 ARM處理器模式

1. 5 ARM暫存器介紹

1. 5. l 通用暫存器

1. 5. 3 程式狀態暫存器

1. 6 ARM體系的異常中斷

1. 6. 1 ARM中異常中斷種類

1. 6. 2 ARM處理器對異常中斷的回響過程

1. 6. 3 從異常中斷處理程式中返回

1. 7 ARM體系中存儲系統

1. 7. 1 ARM體系中的存儲空間

1. 7. 2 ARM存儲器格式

1. 7. 3 非對齊的存儲訪問操作

1. 7. 4 指令預取和自修改代碼

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

2. 1 ARM指令集概要介紹

2. 1. 1 ARM指令的分類

2. 1. 2 ARM指令的一般編碼格式

2. 1. 3 ARM指令的條件碼域

2. 2 ARM指令定址方式

2. 2. l 數據處理指令的運算元的定址方式

2. 2. 2 字及無符號位元組的Load/Store指令的定址方式

2. 2. 3 雜類Load/Store指令的定址方式

2. 2. 4 批量Load/Store指令的定址方式

2. 2. 5 協處理器Load/Store指令的定址方式

第3章 ARM指令集介紹

3. 1 ARM指令集

3. 1. l 跳轉指令

3. l. 2 數據處理指令

3. 1. 3 乘法指令

3. 1. 4 雜類的算術指令

3. 1. 5 狀態暫存器訪問指令

3. l. 6 Load/Store記憶體訪問指令

3. 1. 7 批量Load/Store記憶體訪問指令

3. 1. 8 信號量操作指令

3. 1. 9 異常中斷產生指令

3. 1. 10 ARM協處理器指令

3. 2 一些基本的ARM指令功能段

3. 2. l 算術邏輯運算指令的套用

3. 2. 2 跳轉指令的套用

3. 2. 3 Loacl/Store指令的套用

3. 2. 4 批量Load/Store指令的套用

3. 2. 5 信號量指令的套用

3. 2. 6 與系統相關的一些指令代碼段

3. 3 Thumb指令介紹

第4章 ARM彙編語言程式設計

4. 1 偽操作

4. 1. l 符號定義偽操作

4. 1. 2 數據定義偽操作

4. 1. 3 彙編控制偽操作

4. 1. 4 棧中數據幀描述偽操作

4. 1. 5 信息報告偽操作

4. 1. 6 其他的偽操作

4. 2 ARM彙編語言偽指令

4. 3 ARM彙編語言語句格式

4. 3. 1 ARM彙編語言中的符號

4. 3. 2 ARM彙編語言中的表達式

4. 4 ARM彙編語言程式格式.

4. 4. l 彙編語言程式格式

4. 4. 2 彙編語言子程式調用

4. 5 ARM彙編編譯器的使用

4. 6 彙編程式設計舉例

4. 6. 1 ARM中偽操作使用實例

4. 6. 2 ARM中彙編程式實例

第5章 ARM存儲系統

5. 1 ARM存儲系統概述

5. 2 ARM中用於存儲管理的系統控制協處理器CP15

5. 2. 1 訪問CP15暫存器的指令

5. 2. 2 CP15中的暫存器

5. 3 存儲器管理單元MMU

5. 3. l 存儲器管理單元MMU概述

5. 3. 2 禁止/使能MMU

5. 3. 3 MMU中地址變換過程

5. 3. 4 MMU中存儲訪問許可權控制

5. 3. 5 MMU中的域

5. 3. 6 關於快表的操作

5. 3. 7 ARM中的存儲訪問失效

5. 4 高速緩衝存儲器和寫緩衝區

5. 4. 1 基本概念

5. 4. 2 cache的工作原理和地址映像方法

5. 4. 3 cache的分類

5. 4. 4 cache的替換算法

5. 4. 5 緩衝技術的使用注意事項

5. 4. 6 存儲系統的一致性問題

5. 4. 7 cache內容鎖定

5. 4. 8 與cache和寫緩衝區相關的編程接口

5. 5 快速上下文切換技術

5. 5. l 快速上下文切換技術原理

5. 5. 2 快速上下文切換技術編程接口

5. 6 與存儲系統相關的程式設計指南

5. 6. l 地址空間

5. 6. 2 存儲器格式

5. 6. 3 非對齊的存儲訪問操作

5. 6. 4 指令預取和自修改代碼

5. 6. 5 IMB

5. 6. 6 存儲器映射的I/O空間

5. 7 AIOA存儲系統的實例

5. 7. 1 L7205的存儲系統概述

5. 7. 2 L7205中的SDRAM

5. 7. 3 L7205中的 MMU

第6章 ATPCS介紹

6. 1 ATPCS概述

6. 2 基本ATPCS

6. 2. l 暫存器的使用規則

6. 2. 2 數據棧使用規則

6. 2. 3 參數傳遞規則

6. 3 幾種特定的ATPCS

6. 3. l 支持數據棧限制檢查的ATPCS

6. 3. 2 支持唯讀段位置無關(ROPI)的ATPCS

6. 3. 3 支持可讀寫段位置無關(RWPI)的ATPCS

6. 3. 4 支持ARM程式和Thumb程式混合使用的ATPCS

6. 3. 5 處理浮點運算的ATPCS

第7章 ARM程式和Thumb程式混合使用

7. 1 概述

7. 2 在彙編語言程式中通過用戶代碼支持interwork

7. 2. l 可以實現程式狀態切換的指令

7. 2. 2 與程式狀態切換相關的偽操作

7. 2. 3 進行狀態切換的彙編程式實例

7. 3 在C/C++程式中實現interwork

7. 4 在彙編語言程式中通過連線器支持interwork

7. 4. l 利用veneers實現彙編程式間的程式狀態切換

7. 4. 2 利用veneers實現彙編程式與C/C++程式間的程式狀態切換

第8章 C\C++以及彙編語言的混合編程

8. l 內嵌彙編器的使用

8. 1. l 內嵌的彙編指令用法

8. 1. 2 內嵌的彙編器和armasm的區別

8. l. 3 在C\C++程式中使用內嵌的彙編指令

8. 1. 4 內嵌彙編指令的套用舉例

8. 2 從彙編程式中訪問C程式變數

8. 3 彙編程式.C程式以及C++程式的相互調用

8. 3. l 在C++程式中使用C程式頭檔案

8. 3. 2 彙編程式.C程式以及C++程式的相互調用舉例

第9章 異常中斷處理

9. 1 ARM中異常中斷處理概述

9. 1. 1 ARM體系中異常中斷種類

9. 1. 2 異常中斷向量表及異常中斷優先權

9. 1. 3 異常中斷使用的暫存器

9. 2 進入和退出異常中斷的過程

9. 2. 1 ARM處理器對異常中斷的回響過程

9. 2. 2 從異常中斷處理程式中返回

9. 3 在應用程式中安裝異常中斷處理程式

9. 3. 1 在系統復位時安裝異常中斷處理程式

9. 3. 2 在C程式中安裝異常中斷處理程式

9. 4 SWI異常中斷處理程式

9. 4. 1 SWI異常中斷處理程式的實現

9. 4. 2 SWI異常中斷調用

9. 5 FIQ和IRQ異常中斷處理程式

9. 5. 1 IRQ/FIQ異常中斷處理程式

9. 5. 2 IRQ異常中斷處理程式舉例

9. 6 復位異常中斷處理程式

9. 7 未定義指令異常中斷

9. 8 指令預取中止異常中斷處理程式

9. 9 數據訪問中止異常中斷處理程式

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

10. 1 ARM C/C++編譯器概述

10. 1. 1 ARM C/C++編譯器及語言庫介紹

10. l. 2 ARM編譯器中與搜尋路徑相關的一些基本概念

10. 2 ARM編譯器命令行格式

10. 2. l 過程調用標準

10. 2. 2 設定源程式語言類型

10. 2. 3 指定搜尋路徑

10. 2. 4 設定預處理選項

10. 2. 5 設定輸出檔案類型

10. 2. 6 指定目標處理器和ARM體系版本

10. 2. 7 生成調試信息

10. 2. 8 代碼生成的控制

10. 2. 9 控制警告信息的產生

10. 2. 10 編譯時進行的一些額外的檢查

10. 2. 11 控制錯誤信息

10. 3 ARM編譯器中的pragmas

10. 4 ARM編譯器特定的關鍵字

10. 4. 1 用於聲明函式的關鍵字

10. 4. 2 用於聲明交量的關鍵字

10. 4. 3 用於限定數據類型的關鍵字

10. 5 ARM編譯器支持的基本數據類型

10. 6 ARM編譯器中預定義宏

10. 7 ARM中C/C++庫

10. 7. 1 ARM中C/C++運行時庫概述

10. 7. 2 建立一個包含C/C++運行時庫的C/C++應用程式

10. 7. 3 建立不包含C運行時庫的應用程式

10. 7. 4 裁減C/C++運行時庫以適應特定的目標運行環境

第11章 ARM連線器

11. 1 ARM映像檔案

11. 1. 1 ARM映像檔案的組成

11. 1. 2 ARM映像檔案的入口點

11. 1. 3 輸入段的排序規則

11. 2 ARM連線器介紹

11. 3 ARM連線器生成的符號

11. 3. 1 連線器生成的與域相關的符號

11. 3. 2 連線器生成的與輸出段相關的符號

11. 3. 3 連線器生成的與輸入段相關的符號

11. 4 連線器的最佳化功能

11. 5 運行時庫的使用

11. 5. 1 C/C++運行時庫與目標檔案

11. 5. 2 查找需要的C/C++運行時庫

11. 5. 3 選擇合適種類的C/C++運行時庫

11. 5. 4 掃描C/C++運行時庫

11. 6 從一個映像檔案中使用另一個映像檔案中的符號

11. 6. 1 symdefs檔案

11. 6. 2 建立symdefs檔案

11. 6. 3 symdefs檔案的使用

11. 7 隱藏或者重命名全局符號

11. 7. l steering檔案的格式

11. 7. 2 steering檔案中的命令

11. 8 ARM連線器命令行選項

11. 9 使用scatter檔案定義映像檔案的地址映射

11. 9. l scatter檔案概述

11. 9. 2 satter檔案中各部分介紹

11. 9. 3 scatter檔案使用舉例

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

12. l 嵌入式應用程式設計的基本知識

12. 1. 1 嵌入式套用系統中的存儲映射

12. 1. 2 系統初始化

12. 2 使用semihosting的 C語言程式示例

12. 2. 1 源程式分析

12. 2. 2 生成映像檔案

12. 3 一個嵌入式套用系統示例

12. 3. l 源程式分析

12. 3. 2 生成映像檔案

12. 3. 3 本例中地址映射模式

12. 4 進行ROM/RAM地址重映射的嵌入式套用系統

12. 4. l 地址映射模式

12. 4. 2 源程式分析

12. 4. 3 生成映像檔案

12. 5 一個嵌入式作業系統示例

第13章 使用CodeWarrior

13. 1 CodeWarrior for ADS概述

13. 2 簡單工程項目的使用

13. 2. 1 工程項目視窗

13. 2. 2 簡單工程項目的使用

13. 3 配置生成目標

13. 3. 1 Debug Settings對話框介紹

13. 3. 2 設定牛成目標的基本選項

13. 3. 3 彙編器選項設定

13. 3. 4 編譯器的選項設定

13. 3. 5 連線器的選項設定

13. 3. 6 fromELF工具的選項設定

13. 4 複雜工程項目的使用

13. 4. l 建立一個新的生成目標

13. 4. 2 將一個生成目標更名

13. 4. 3 建立生成目標之間的依賴關係

13. 4. 4 子工程項目的使用

13. 5 工程項目模板

13. 5. 1 ADS中工程項目模板的使用

13. 5. 2 建立用戶工程項目模板

13. 6 編譯和連線工程項目

13. 6. 1 編譯檔案

13. 6. 2 生成工程項目

第14章 ARM體系中的調試方法

14. 1 ARM體系中調試系統概述

14. 2 基於Angel的調試系統

14. 2. l 基於Angel的調試系統的概述

14. 2. 2 使用Angel開發應用程式

14. 2. 3 Angel執行的操作

14. 2. 4 將Angel移植到特定的目標系統

14. 3 基於JTAG的調試系統

14. 3. l 基於JTAG的調試系統的特點

14. 3. 2 基於JTAG的調試系統結構

14. 3. 3 目標系統中的調試功能擴展部件

14. 3. 4 基於JTAG的調試過程

14. 4 ADW使用介紹

14. 4. 1 ADW概述

14. 4. 2 ADW中的視窗

14. 4. 3 ADW使用介紹

相關詞條

相關搜尋

熱門詞條

聯絡我們