內容簡介
《ARM體系結構與編程》分14章對ARM處理器的體系結構、指令系統和開發工具作了比較全面的介紹。其中包括ARM體系介紹、ARM程序設計模型、ARM匯編語言程序設計、ARMC/C++語言程序設計、ARM連接器的使用、ARM集成開發環境CodeWarriorIDE的介紹及高性能的調試工具ADW的使用。并在此基礎之上介紹一些典型的基于ARM體系的嵌入式應用系統設計時的基本技術。
目錄
第1章ARM概述及其基本編程模型
1.1ARM技術的應用領域及其特點
1.2ARM體系結構的版本及命名方法
1.2.1ARM體系結構的版本
1.2.2ARM體系的變種
1.2.3ARM/Thumb體系版本的命名格式
l.3ARM處理器系列
1.3.1ARM7系列
1.3.2ARM9系列
1.3.3ARM9E系列
1.3.4ARM1OE系列
1.3.5SecurCore系列
l.4ARM處理器模式
1.5ARM寄存器介紹
1.5.l通用寄存器
1.5.3程序狀態寄存器
1.6ARM體系的異常中斷
1.6.1ARM中異常中斷種類
1.6.2ARM處理器對異常中斷的響應過程
1.6.3從異常中斷處理程序中返回
1.7ARM體系中存儲系統
1.7.1ARM體系中的存儲空間
1.7.2ARM存儲器格式
1.7.3非對齊的存儲訪問操作
1.7.4指令預取和自修改代碼
第2章ARM指令分類及其尋址方式
2.1ARM指令集概要介紹
2.1.1ARM指令的分類
2.1.2ARM指令的一般編碼格式
2.1.3ARM指令的條件碼域
2.2ARM指令尋址方式
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.1ARM指令集
3.1.l跳轉指令
3.l.2數據處理指令
3.1.3乘法指令
3.1.4雜類的算術指令
3.1.5狀態寄存器訪問指令
3.l.6Load/Store內存訪問指令
3.1.7批量Load/Store內存訪問指令
3.1.8信號量操作指令
3.1.9異常中斷產生指令
3.1.10ARM協處理器指令
3.2一些基本的ARM指令功能段
3.2.l算術邏輯運算指令的應用
3.2.2跳轉指令的應用
3.2.3Loacl/Store指令的應用
3.2.4批量Load/Store指令的應用
3.2.5信號量指令的應用
3.2.6與系統相關的一些指令代碼段
3.3Thumb指令介紹
第4章ARM匯編語言程序設計
4.1偽操作
4.1.l符號定義偽操作
4.1.2數據定義偽操作
4.1.3匯編控制偽操作
4.1.4棧中數據幀描述偽操作
4.1.5信息報告偽操作
4.1.6其他的偽操作
4.2ARM匯編語言偽指令
4.3ARM匯編語言語句格式
4.3.1ARM匯編語言中的符號
4.3.2ARM匯編語言中的表達式
4.4ARM匯編語言程序格式.
4.4.l匯編語言程序格式
4.4.2匯編語言子程序調用
4.5ARM匯編編譯器的使用
4.6匯編程序設計舉例
4.6.1ARM中偽操作使用實例
4.6.2ARM中匯編程序實例
第5章ARM存儲系統
5.1ARM存儲系統概述
5.2ARM中用于存儲管理的系統控制協處理器CP15
5.2.1訪問CP15寄存器的指令
5.2.2CP15中的寄存器
5.3存儲器管理單元MMU
5.3.l存儲器管理單元MMU概述
5.3.2禁止/使能MMU
5.3.3MMU中地址變換過程
5.3.4MMU中存儲訪問權限控制
5.3.5MMU中的域
5.3.6關于快表的操作
5.3.7ARM中的存儲訪問失效
5.4高速緩沖存儲器和寫緩沖區
5.4.1基本概念
5.4.2cache的工作原理和地址映像方法
5.4.3cache的分類
5.4.4cache的替換算法
5.4.5緩沖技術的使用注意事項
5.4.6存儲系統的一致性問題
5.4.7cache內容鎖定
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.5IMB
5.6.6存儲器映射的I/O空間
5.7AIOA存儲系統的實例
5.7.1L7205的存儲系統概述
5.7.2L7205中的SDRAM
5.7.3L7205中的MMU
第6章ATPCS介紹
6.1ATPCS概述
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.1ARM中異常中斷處理概述
9.1.1ARM體系中異常中斷種類
9.1.2異常中斷向量表及異常中斷優先級
9.1.3異常中斷使用的寄存器
9.2進入和退出異常中斷的過程
9.2.1ARM處理器對異常中斷的響應過程
9.2.2從異常中斷處理程序中返回
9.3在應用程序中安裝異常中斷處理程序
9.3.1在系統復位時安裝異常中斷處理程序
9.3.2在C程序中安裝異常中斷處理程序
9.4SWI異常中斷處理程序
9.4.1SWI異常中斷處理程序的實現
9.4.2SWI異常中斷調用
9.5FIQ和IRQ異常中斷處理程序
9.5.1IRQ/FIQ異常中斷處理程序
9.5.2IRQ異常中斷處理程序舉例
9.6復位異常中斷處理程序
9.7未定義指令異常中斷
9.8指令預取中止異常中斷處理程序
9.9數據訪問中止異常中斷處理程序
第10章ARMC/0++編譯器
10.1ARMC/C++編譯器概述
10.1.1ARMC/C++編譯器及語言庫介紹
10.l.2ARM編譯器中與搜索路徑相關的一些基本概念
10.2ARM編譯器命令行格式
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.3ARM編譯器中的pragmas
10.4ARM編譯器特定的關鍵詞
10.4.1用于聲明函數的關鍵詞
10.4.2用于聲明交量的關鍵詞
10.4.3用于限定數據類型的關鍵詞
10.5ARM編譯器支持的基本數據類型
10.6ARM編譯器中預定義宏
10.7ARM中C/C++庫
10.7.1ARM中C/C++運行時庫概述
10.7.2建立一個包含C/C++運行時庫的C/C++應用程序
10.7.3建立不包含C運行時庫的應用程序
10.7.4裁減C/C++運行時庫以適應特定的目標運行環境
第11章ARM連接器
11.1ARM映像文件
11.1.1ARM映像文件的組成
11.1.2ARM映像文件的入口點
11.1.3輸入段的排序規則
11.2ARM連接器介紹
11.3ARM連接器生成的符號
11.3.1連接器生成的與域相關的符號
11.3.2連接器生成的與輸出段相關的符號
11.3.3連接器生成的與輸入段相關的符號
11.4連接器的優化功能
11.5運行時庫的使用
11.5.1C/C++運行時庫與目標文件
11.5.2查找需要的C/C++運行時庫
11.5.3選擇合適種類的C/C++運行時庫
11.5.4掃描C/C++運行時庫
11.6從一個映像文件中使用另一個映像文件中的符號
11.6.1symdefs文件
11.6.2建立symdefs文件
11.6.3symdefs文件的使用
11.7隱藏或者重命名全局符號
11.7.lsteering文件的格式
11.7.2steering文件中的命令
11.8ARM連接器命令行選項
11.9使用scatter文件定義映像文件的地址映射
11.9.lscatter文件概述
11.9.2satter文件中各部分介紹
11.9.3scatter文件使用舉例
第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.1CodeWarriorforADS概述
13.2簡單工程項目的使用
13.2.1工程項目窗口
13.2.2簡單工程項目的使用
13.3配置生成目標
13.3.1DebugSettings對話框介紹
13.3.2設置牛成目標的基本選項
13.3.3匯編器選項設置
13.3.4編譯器的選項設置
13.3.5連接器的選項設置
13.3.6fromELF工具的選項設置
13.4復雜工程項目的使用
13.4.l建立一個新的生成目標
13.4.2將一個生成目標更名
13.4.3建立生成目標之間的依賴關系
13.4.4子工程項目的使用
13.5工程項目模板
13.5.1ADS中工程項目模板的使用
13.5.2建立用戶工程項目模板
13.6編譯和連接工程項目
13.6.1編譯文件
13.6.2生成工程項目
第14章ARM體系中的調試方法
14.1ARM體系中調試系統概述
14.2基于Angel的調試系統
14.2.l基于Angel的調試系統的概述
14.2.2使用Angel開發應用程序
14.2.3Angel執行的操作
14.2.4將Angel移植到特定的目標系統
14.3基于JTAG的調試系統
14.3.l基于JTAG的調試系統的特點
14.3.2基于JTAG的調試系統結構
14.3.3目標系統中的調試功能擴展部件
14.3.4基于JTAG的調試過程
14.4ADW使用介紹
14.4.1ADW概述
14.4.2ADW中的窗口
14.4.3ADW使用介紹
1.1ARM技術的應用領域及其特點
1.2ARM體系結構的版本及命名方法
1.2.1ARM體系結構的版本
1.2.2ARM體系的變種
1.2.3ARM/Thumb體系版本的命名格式
l.3ARM處理器系列
1.3.1ARM7系列
1.3.2ARM9系列
1.3.3ARM9E系列
1.3.4ARM1OE系列
1.3.5SecurCore系列
l.4ARM處理器模式
1.5ARM寄存器介紹
1.5.l通用寄存器
1.5.3程序狀態寄存器
1.6ARM體系的異常中斷
1.6.1ARM中異常中斷種類
1.6.2ARM處理器對異常中斷的響應過程
1.6.3從異常中斷處理程序中返回
1.7ARM體系中存儲系統
1.7.1ARM體系中的存儲空間
1.7.2ARM存儲器格式
1.7.3非對齊的存儲訪問操作
1.7.4指令預取和自修改代碼
第2章ARM指令分類及其尋址方式
2.1ARM指令集概要介紹
2.1.1ARM指令的分類
2.1.2ARM指令的一般編碼格式
2.1.3ARM指令的條件碼域
2.2ARM指令尋址方式
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.1ARM指令集
3.1.l跳轉指令
3.l.2數據處理指令
3.1.3乘法指令
3.1.4雜類的算術指令
3.1.5狀態寄存器訪問指令
3.l.6Load/Store內存訪問指令
3.1.7批量Load/Store內存訪問指令
3.1.8信號量操作指令
3.1.9異常中斷產生指令
3.1.10ARM協處理器指令
3.2一些基本的ARM指令功能段
3.2.l算術邏輯運算指令的應用
3.2.2跳轉指令的應用
3.2.3Loacl/Store指令的應用
3.2.4批量Load/Store指令的應用
3.2.5信號量指令的應用
3.2.6與系統相關的一些指令代碼段
3.3Thumb指令介紹
第4章ARM匯編語言程序設計
4.1偽操作
4.1.l符號定義偽操作
4.1.2數據定義偽操作
4.1.3匯編控制偽操作
4.1.4棧中數據幀描述偽操作
4.1.5信息報告偽操作
4.1.6其他的偽操作
4.2ARM匯編語言偽指令
4.3ARM匯編語言語句格式
4.3.1ARM匯編語言中的符號
4.3.2ARM匯編語言中的表達式
4.4ARM匯編語言程序格式.
4.4.l匯編語言程序格式
4.4.2匯編語言子程序調用
4.5ARM匯編編譯器的使用
4.6匯編程序設計舉例
4.6.1ARM中偽操作使用實例
4.6.2ARM中匯編程序實例
第5章ARM存儲系統
5.1ARM存儲系統概述
5.2ARM中用于存儲管理的系統控制協處理器CP15
5.2.1訪問CP15寄存器的指令
5.2.2CP15中的寄存器
5.3存儲器管理單元MMU
5.3.l存儲器管理單元MMU概述
5.3.2禁止/使能MMU
5.3.3MMU中地址變換過程
5.3.4MMU中存儲訪問權限控制
5.3.5MMU中的域
5.3.6關于快表的操作
5.3.7ARM中的存儲訪問失效
5.4高速緩沖存儲器和寫緩沖區
5.4.1基本概念
5.4.2cache的工作原理和地址映像方法
5.4.3cache的分類
5.4.4cache的替換算法
5.4.5緩沖技術的使用注意事項
5.4.6存儲系統的一致性問題
5.4.7cache內容鎖定
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.5IMB
5.6.6存儲器映射的I/O空間
5.7AIOA存儲系統的實例
5.7.1L7205的存儲系統概述
5.7.2L7205中的SDRAM
5.7.3L7205中的MMU
第6章ATPCS介紹
6.1ATPCS概述
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.1ARM中異常中斷處理概述
9.1.1ARM體系中異常中斷種類
9.1.2異常中斷向量表及異常中斷優先級
9.1.3異常中斷使用的寄存器
9.2進入和退出異常中斷的過程
9.2.1ARM處理器對異常中斷的響應過程
9.2.2從異常中斷處理程序中返回
9.3在應用程序中安裝異常中斷處理程序
9.3.1在系統復位時安裝異常中斷處理程序
9.3.2在C程序中安裝異常中斷處理程序
9.4SWI異常中斷處理程序
9.4.1SWI異常中斷處理程序的實現
9.4.2SWI異常中斷調用
9.5FIQ和IRQ異常中斷處理程序
9.5.1IRQ/FIQ異常中斷處理程序
9.5.2IRQ異常中斷處理程序舉例
9.6復位異常中斷處理程序
9.7未定義指令異常中斷
9.8指令預取中止異常中斷處理程序
9.9數據訪問中止異常中斷處理程序
第10章ARMC/0++編譯器
10.1ARMC/C++編譯器概述
10.1.1ARMC/C++編譯器及語言庫介紹
10.l.2ARM編譯器中與搜索路徑相關的一些基本概念
10.2ARM編譯器命令行格式
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.3ARM編譯器中的pragmas
10.4ARM編譯器特定的關鍵詞
10.4.1用于聲明函數的關鍵詞
10.4.2用于聲明交量的關鍵詞
10.4.3用于限定數據類型的關鍵詞
10.5ARM編譯器支持的基本數據類型
10.6ARM編譯器中預定義宏
10.7ARM中C/C++庫
10.7.1ARM中C/C++運行時庫概述
10.7.2建立一個包含C/C++運行時庫的C/C++應用程序
10.7.3建立不包含C運行時庫的應用程序
10.7.4裁減C/C++運行時庫以適應特定的目標運行環境
第11章ARM連接器
11.1ARM映像文件
11.1.1ARM映像文件的組成
11.1.2ARM映像文件的入口點
11.1.3輸入段的排序規則
11.2ARM連接器介紹
11.3ARM連接器生成的符號
11.3.1連接器生成的與域相關的符號
11.3.2連接器生成的與輸出段相關的符號
11.3.3連接器生成的與輸入段相關的符號
11.4連接器的優化功能
11.5運行時庫的使用
11.5.1C/C++運行時庫與目標文件
11.5.2查找需要的C/C++運行時庫
11.5.3選擇合適種類的C/C++運行時庫
11.5.4掃描C/C++運行時庫
11.6從一個映像文件中使用另一個映像文件中的符號
11.6.1symdefs文件
11.6.2建立symdefs文件
11.6.3symdefs文件的使用
11.7隱藏或者重命名全局符號
11.7.lsteering文件的格式
11.7.2steering文件中的命令
11.8ARM連接器命令行選項
11.9使用scatter文件定義映像文件的地址映射
11.9.lscatter文件概述
11.9.2satter文件中各部分介紹
11.9.3scatter文件使用舉例
第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.1CodeWarriorforADS概述
13.2簡單工程項目的使用
13.2.1工程項目窗口
13.2.2簡單工程項目的使用
13.3配置生成目標
13.3.1DebugSettings對話框介紹
13.3.2設置牛成目標的基本選項
13.3.3匯編器選項設置
13.3.4編譯器的選項設置
13.3.5連接器的選項設置
13.3.6fromELF工具的選項設置
13.4復雜工程項目的使用
13.4.l建立一個新的生成目標
13.4.2將一個生成目標更名
13.4.3建立生成目標之間的依賴關系
13.4.4子工程項目的使用
13.5工程項目模板
13.5.1ADS中工程項目模板的使用
13.5.2建立用戶工程項目模板
13.6編譯和連接工程項目
13.6.1編譯文件
13.6.2生成工程項目
第14章ARM體系中的調試方法
14.1ARM體系中調試系統概述
14.2基于Angel的調試系統
14.2.l基于Angel的調試系統的概述
14.2.2使用Angel開發應用程序
14.2.3Angel執行的操作
14.2.4將Angel移植到特定的目標系統
14.3基于JTAG的調試系統
14.3.l基于JTAG的調試系統的特點
14.3.2基于JTAG的調試系統結構
14.3.3目標系統中的調試功能擴展部件
14.3.4基于JTAG的調試過程
14.4ADW使用介紹
14.4.1ADW概述
14.4.2ADW中的窗口
14.4.3ADW使用介紹
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。
舉報投訴
-
嵌入式主板
+關注
關注
7文章
6085瀏覽量
35295 -
米爾科技
+關注
關注
5文章
227瀏覽量
20957
發布評論請先 登錄
相關推薦
了解體系結構 - 介紹 Arm 體系結構
。該體系結構為軟件開發人員公開了一個通用的指令集和工作流程,也稱為程序員模型。這有助于確保架構的不同實現之間的互操作性,以便軟件可以在不同的 Arm 設備上運行。本指南為任何對此感興趣的人介紹了
發表于 08-01 14:35
Arm的DRTM體系結構規范
的原理和術語,但也包含了顯著的差異。
本規范的結構如下:
?第2節,DRTM體系結構概述,概述了DRTM,并介紹了該體系結構如何將DRTM映射到基于
發表于 08-08 07:45
評論