目前基于ARM架構的嵌入式CPU在手持移動設備和通信等嵌入式領域占據絕對市場的狀況,應重視學習嵌入式體系架構,首選是ARM體系架構。編者唐振明認為:學習ARM體系架構不僅是概念的羅列、知識點的講解及理論的貫穿,更重要的是在理解ARM設計理念的同時,要有好的配套實驗或跟蹤的案例,即強調“理論+實踐”的學習方法。《ARM體系結構與編程》就是圍繞這一方法而編寫的,主要內容包括ARM處理器概述、ARM體系結構、ARM編程模型、ARM微處理器的指令系統、ARM匯編語言程序設計、Bootloader啟動代碼分析和ARM RealView MDK集成開發環境,并針對ARM硬件寄存器和RISC指令集做了大量的配套實驗及調試方法,最后在理解以上知識點的基礎上對Bootloader進行了詳細的分析。
《ARM體系結構與編程》適合作為計算機、軟件工程、電氣自動化及電子信息工程等大專生、本科生或研究生課程的教材。
唐振明主編的《ARM體系結構與編程》共分為7章,前后關聯、層層遞進、由簡單到復雜、由單一到綜合并配有大量的跟蹤實驗;從理論到實踐,從感性到理性,從而使讀者學習ARM體系結構及ARM匯編等不再枯燥無味。適合作為計算機、軟件工程、電氣自動化及電子信息工程等大專生、本科生或研究生課程的教材。
第1章 ARM處理器概述
1.1 嵌入式處理器簡介
1.1.1 嵌入式處理器分類
1.1.2 嵌入式操作系統
1.1.3 嵌入式處理器評價指標
1.2 什么是ARM
1.2.1 ARM的概念
1.2.2 ARM公司發跡史
1.3 ARM體系結構的命名規則
1.4 ARM系列處理器簡介
1.4.1 ARM7系列
1.4.2 ARM9系列
1.4.3 ARM9E系列
1.4.4 ARM10系列
1.4.5 ARM11系列
1.4.6 SecurCore系列
1.4.7 ARM Cortex-A8處理器
1.5 ARM處理器的技術優勢及其應用
1.6 本章小結
1.7 課后練習
第2章 ARM體系結構
2.1 ARM體系結構的特點
2.1.1 RISC設計思想的體現
2.2 ARM流水線
2.2.1 ARM流水線的概念與原理
2.2.2 流水線的分類
2.2.3 3級流水線ARM組織
2.2.4 5級流水線ARM組織
2.2.5 6級流水線ARM組織
2.2.6 影響流水線性能的因素
2.3 ARM存儲器
2.4 I/O管理
2.5 ARM開發調試方法
2.5.1 指令集模擬器
2.5.2 駐留監控軟件
2.5.3 JTAG仿真調試
2.5.4 基于ULINK在線仿真器
2.6 本章小結
2.7 課后練習
第3章 ARM編程模型
3.1 數據類型
3.1.1 ARM的基本數據類型
3.1.2 浮點數據類型
3.1.3 存儲器大/小端
3.2 處理器工作模式
3.3 ARM寄存器組織
3.3.1 通用寄存器
3.3.2 程序狀態寄存器
3.4 異常中斷處理
3.4.1 異常種類
3.4.2 異常優先級
3.4.3 處理器模式和異常
3.4.4 異常響應流程
3.4.5 從異常處理程序中返回
3.5 本章小結
3.6 課后練習
第4章 ARM微處理器的指令系統
4.1 ARM微處理器的指令集概述
4.1.1 ARM微處理器的指令的分類與格式
4.1.2 指令的條件域
4.2 ARM指令集
4.2.1 數據處理指令
4.2.2 移位指令
4.2.3 乘法指令與乘加指令
4.2.4 批量數據加載/存儲指令
4.2.5 跳轉指令
4.2.6 程序狀態寄存器訪問指令
4.2.7 加載/存儲指令
4.2.8 協處理器指令
4.2.9 異常產生指令
4.3 ARM指令的尋址方式
4.3.1 立即尋址
4.3.2 寄存器尋址
4.3.3 寄存器間接尋址
4.3.4 基址變址尋址
4.3.5 多寄存器尋址
4.3.6 相對尋址
4.3.7 堆棧尋址
4.4 Thumb指令及應用
4.5 本章小結
4.6 課后練習
第5章 ARM匯編語言程序設計
5.1 ARM匯編器所支持的偽操作
5.1.1 符號定義Symbol Definition偽操作
5.1.2 數據定義Data Definition偽操作
5.1.3 匯編控制Assembly Control偽操作
5.1.4 信息報告Reporting偽操作
5.1.5 指令集選擇Instruction Set Selection偽操作
5.1.6 其他偽操作
5.2 ARM匯編器所支持的偽指令
5.2.1 ADR偽指令
5.2.2 ADRL偽指令
5.2.3 MOV32偽指令
5.2.4 LDR偽指令
5.3 匯編語言文件格式
5.3.1 ARM匯編語言語句格式
5.3.2 ARM匯編語言中的符號
5.3.3 匯編語言程序中的表達式和運算符
5.3.4 匯編語言預定義寄存器和協處理器
5.3.5 匯編語言的程序結構
5.3.6 匯編語言子程序調用
5.4 ARM匯編語言與C語言混合編程
5.4.1 在C語言中內嵌匯編語言
5.4.2 在C語言中調用匯編語言的函數
5.4.3 在匯編語言中調用C語言的函數
5.5 本章小結
5.6 課后練習
第6章 Bootload啟動代碼分析
6.1 匯編基礎
6.2 啟動代碼功能模塊分解
6.2.1 程序的入口地址
6.2.2 看門狗及中斷的禁止
6.2.3 系統時鐘初始化
6.2.4 初始化內存控制器
6.2.5 系統堆棧的初始化
6.2.6 建立中斷向量表
6.2.7 跳轉到C語言入口
6.3 Bootload實驗部分
6.3.1 實驗環境
6.3.2 實驗步驟
6.3.3 實驗總結
6.4 Bootload擴展部分-U-Boot分析
6.4.1 Bootloader的引導方式
6.4.2 Bootloader的種類
6.4.3 U-Boot源碼結構
6.4.4 U-Boot的編譯
6.4.5 U-Boot的移植
6.4.6 添加U-Boot命令
6.4.7 U-Boot的調試
6.4.8 U-Boot與內核的關系
6.4.9 U-Boot的常用命令
6.4.1 0 U-Boot的環境變量
6.4.1 1 使用U-Boot
6.5 本章小結
6.6 課后練習
第7章 ARM RealView MDK集成開發環境
7.1 RealView MDK突出特性
7.2 MDK功能介紹
7.2.1 Vision4 IDE
7.2.2 Vision4 IDE主要特性
7.2.3 啟動代碼配置向導
7.2.4 Vision4設備模擬器
7.2.5 性能分析器
7.2.6 RealView編譯器
7.2.7 MicroLib
7.2.8 RealView Real-Time Library RealView RTL實時庫
7.2.9 ARM軟件開發工具解決方案
7.3 RealView MDK的使用
7.3.1 Vision4的安裝
7.3.2 創建Vision工程
7.4 Keil MDK編譯器與ULINK2使用
7.4.1 ULINK2概述
7.4.2 ULINK2與MDK的鏈接使用
7.5 Keil MDK編譯器與J-LINK使用
7.5.1 J-LINK概述
7.5.2 J-LINK與MDK的鏈接使用
7.6 Keil MDK編譯器與H-JTAG使用
7.6.1 H-JTAG概述
7.6.2 H-JTAG 調試結構
7.6.3 H-JTAG的安裝
7.6.4 H-JTAG配置
7.6.5 MDK的安裝與設置
7.6.6 調試
7.7 Keil開發工具鏈
7.7.1 用UltraEdit查看和編輯程序源文件
7.7.2 Keil MDK生成BIN過程
7.7.3 ARM工具鏈準備實驗
7.7.4 armasm匯編器的使用
7.7.5 armlink鏈接器的使用
7.7.6 armcc編譯器的使用
7.7.7 FromELF實用工具實驗
7.8 本章小結
7.9 課后練習
參考文獻