內容簡介
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使用介紹