在過去的10年間,ARM體系統結構已經成為世界上*流行的體系結構之一,從蜂窩電話到汽車制動系統,在這些產品中使用了超過20億片基于ARM的處理器。許多半導體廠商和產品設計公司組成了全球范圍的ARM開發者團體,包括軟件開發者、系統設計師和硬件設計師。就ARM系統和軟件開發來說,到目前為止,還沒有其它任何一本書籍能夠真正滿足其需求,本書將填補這一空白。 本書涵蓋了ARM和Thumb指令集、Intel的XScale處理器,概括了ARM體系結構的不同版本之間的差異,示范了如何實現DSP算法,解釋了異常和中斷處理,描述了圍繞ARM內核的cache技術,以及*有效的存儲器管理技術。
內容摘要:
《ARM嵌入式系統開發:軟件設計與優化》從軟件設計的角度,全面、系統地介紹了ARM處理器的基本體系結構和軟件設計與優化方法。內容包括:ARM處理器基礎;ARM/Thumb指令集;C語言與匯編語言程序的設計與優化;基本運算、操作的優化;基于ARM的DSP;異常與中斷處理;固件與嵌入式OS;cache與存儲器管理;ARMv6體系結構的特點等。全書內容完整,針對各種不同的ARM內核系統結構都有詳盡論述,并有大量的例子和源代碼。附錄給出了完整的ARMv4/v5/Thumb指令的功能、編碼、周期定時以及匯編參考。
本書適于從事ARM嵌入式系統教學與研發,或想把其它嵌入式平臺的軟件移植到ARM平臺上去的專業技術人員使用,要求對ARM處理器有的了解,并有C語言和匯編語言基礎。若在編譯原理、操作系統、數字信號處理、計算機體系結構等方面有的基礎,則效果會更好。
目錄:
第1章 基于ARM的嵌入式系統
1.1 RISC設計思想
1.2 ARM設計思想
1.3 嵌入式系統的硬件
1.3.1 ARM總線技術
1.3.2 AMBA總線協議
1.3.3 存儲器
1.3.4 外設
1.4 嵌入式系統的軟件
1.4.1 初始化(啟動)代碼
1.4.2 操作系統
1.4.3 應用程序
1.5 總結
第2章 ARM處理器基礎
2.1 寄存器
2.2 當前程序狀態寄存器
2.2.1 處理器模式
2.2.2 分組寄存器
2.2.3 狀態和指令集
2.2.4 中斷屏蔽
2.2.5 條件標志
2.2.6 條件執行
2.3 流水線
2.4 異常、中斷及向量表
2.5 內核擴展
2.5.1 cache和緊耦合存儲器
2.5.2 存儲管理
2.5.3 協處理器
2.6 體系結構的不同版本
2.6.1 命名規則
2.6.2 體系結構的發展
2.7 ARM處理器系列
2.7.1 ARM7系列
2.7.2 ARM9系列
2.7.3 ARM10系列
2.7.4 ARM11系列
2.7.5 專用處理器
2.8 總結
第3章 ARM指令集
3.1 數據處理指令
3.1.1 MOVE指令
3.1.2 桶形移位器
3.1.3 算術指令
3.1.4 算術指令使用桶形移位器
3.1.5 邏輯指令
3.1.6 比較指令
3.1.7 乘法指令
3.2 分支指令
3.3 loadstore指令
3.3.1 單寄存器傳送指令
3.3.2 單寄存器loadstore指令的尋址方式
3.3.3 多寄存器傳送指令
3.3.4 交換指令
3.4 軟件中斷指令
3.5 程序狀態寄存器指令
3.5.1 協處理器指令
3.5.2 協處理器15(CP15)指令語法
3.6 常量的裝載
3.7 ARMv5E擴展
3.7.1 零計數指令
3.7.2 飽和算術指令
3.7.3 ARMv5E乘法指令
3.8 條件執行
3.9 總結
第4章 Thumb指令集
4.1 Thumb寄存器的使用
4.2 ARM-Thumb交互
4.3 其它分支指令
4.4 數據處理指令
4.5 單寄存器load-store指令
4.6 多寄存器load-store指令
4.7 堆棧指令
4.8 軟件中斷指令
4.9 總結
第5章 高效的C編程
5.1 C編譯器及其優化概述
5.2 基本的C數據類型
5.2.1 局部變量類型
5.2.2 函數參數類型
5.2.3 有符號數與無符號數
5.3 C循環結構
5.3.1 固定次數的循環
5.3.2 不定次數的循環
5.3.3 循環展開
5.4 寄存器分配
5.5 函數調用
5.6 指針別名
5.7 結構體安排
5.8 位域
5.9 邊界不對齊數據和字節排列方式(大/小端)
5.10 除法
5.10.1 帶余數的無符號重復除法
5.10.2 把除轉換為乘
5.10.3 除數是常數的無符號除法
5.10.4 除數是常數的有符號除法
5.11 浮點運算
5.12 內聯函數和內嵌匯編
5.13 移植問題
5.14 總結
第6章 ARM匯編與優化
6.1 編寫匯編代碼
6.2 性能分析和周期計數
6.3 指令調整
6.4 寄存器分配
6.4.1 分配變量給寄存器
6.4.2 使用超過14個的局部變量
6.4.3 限度地使用寄存器
6.5 條件執行
6.6 循環結構
6.6.1 減計數循環
6.6.2 展開計數循環
6.6.3 多層嵌套循環
6.6.4 其它計數循環
6.7 位操作
6.7.1 固定寬度的位域打包和解包
6.7.2 可變寬度編碼的位流打包
6.7.3 可變寬度編碼的位流解包
6.8 高效的switch
6.8.1 在范圍0≤x
6.8.2 基于通用變量x的switch
6.9 邊界不對齊數據的處理
6.10 總結
第7章 基本運算優化
7.1 雙精度整數乘法
7.1.1 長整型乘法
7.1.2 128位結果的無符號64位乘法
7.1.3 128位結果的有符號64位整數乘法
7.2 整數規格化和前導0計數
7.2.1 ARMv5及以上體系結構的整數規格化
7.2.2 在ARMv4體系結構上的規格化
7.2.3 后綴0計數
7.3 除法
7.3.1 通過試探減法實現無符號數除法
7.3.2 無符號整數的NewtonRaphson除法
7.3.3 無符號小數NewtonRaphson除法
7.3.4 有符號數除法
7.4 平方根
7.4.1 通過試探減法計算平方根
7.4.2 使用NewtonRaphson迭代計算平方根
7.5 超越函數:log,exp,sin,cos
7.5.1 以2為底的對數運算
7.5.2 2的乘冪
7.5.3 三角函數
7.6 字節順序反轉和位操作
7.6.1 字節順序反轉
7.6.2 位變換
7.6.3‘1’位計數
7.7 飽和及舍入運算
7.7.1 飽和32位數到16位
7.7.2 飽和左移
7.7.3 舍入右移
7.7.4 飽和的32位加減法
7.7.5 飽和值
7.8 數產生
7.9 總結
第8章 數字信號處理
8.1 表示一個數字信號
8.1.1 選擇一種表示方法
8.1.2 操作以定點格式存儲的值
8.1.3 定點信號的加法和減法
8.1.4 定點信號的乘法
8.1.5 定點信號的除法
8.1.6 定點信號的平方根
8.1.7 小結:數字信號的表示
8.2 基于ARM的DSP介紹
8.2.1 ARM7TDMI的DSP
8.2.2 ARM9TDMI的DSP
8.2.3 StrongARM的DSP
8.2.4 ARM9E的DSP
8.2.5 ARM10E的DSP
8.2.6 Intel Xscale的DSP
8.3 FIR濾波器
8.4 IIR濾波
8.5 離散傅里葉變換
8.6 總結
第9章 異常和中斷處理
9.1 異常處理
9.1.1 ARM處理器模式及異常
9.1.2 向量表
9.1.3 異常級
9.1.4 鏈接寄存器偏移
9.2 中斷
9.2.1 分配中斷
9.2.2 中斷延遲
9.2.3 IRQ與FIQ異常
9.2.4 基本的中斷堆棧設計與實現
9.3 中斷處理方法
9.3.1 非嵌套中斷處理
9.3.2 嵌套中斷處理
9.3.3 可重入中斷處理
9.3.4 級簡單中斷處理
9.3.5 級標準中斷處理
9.3.6 級直接中斷處理
9.3.7 級分組中斷處理
9.3.8 基于VIC PL190的中斷服務例程
9.4 總結
第10章 固件
10.1 固件和引導裝載程序
10.1.1 ARM Firmware Suite
10.1.2 Red Hat Redboot
10.2 例子:Sandstone
10.2.1 Sandstone的目錄結構
10.2.2 Sandstone的代碼結構
10.3 總結
第11章 嵌入式操作系統
11.1 基本模塊
11.2 實例:簡單小型操作系統SLOS
11.2.1 SLOS目錄結構
11.2.2 初始化
11.2.3 存儲模型
11.2.4 中斷和異常處理
11.2.5 調度程序
11.2.6 上下文切換
11.2.7 設備驅動程序框架
11.3 總結
第12章 高速緩沖存儲器cache
12.1 存儲層次和cache
12.2 cache結構
12.2.1 cache存儲器的基本結構
12.2.2 cache控制器的基本操作
12.2.3 cache與主存的關系
12.2.4 組相聯
12.2.5 寫緩沖器
12.2.6 cache效率的衡量
12.3 cache策略
12.3.1 寫策略——直寫法或回寫法
12.3.2 cache行替換策略
12.3.3 cache失效時的分配策略
12.4 協處理器15與cache
12.5 清除和清理cache
12.5.1 清除cache
12.5.2 清理cache
12.5.3 清理Dcache
12.5.4 使用路和組索引尋址清理D-cache
12.5.5 使用test-clean命令清理D-cache
12.5.6 在Intel XScale SA110和Intel StrongARM內核中清理D-cache
12.5.7 清理和清除部分cache
12.6 cache鎖定
12.6.1 在cache中鎖定代碼和數據
12.6.2 通過增加路索引來鎖定cache
12.6.3 使用鎖定位鎖定cache
12.6.4 在Intel XScale SA110中鎖定cache行
12.7 cache與軟件性能
12.8 總結
第13章 存儲器保護單元MPU
13.1 受保護的區域
13.1.1 重疊區域
13.1.2 背景區域
13.2 初始化MPU,cache和寫緩沖器
13.2.1 定義區域的大小和位置
13.2.2 訪問權限
13.2.3 設置區域的cache和寫緩沖器屬性
13.2.4 使能區域和MPU
13.3 MPU系統示例
13.3.1 系統需求
13.3.2 使用存儲器映射分配區域
13.3.3 初始化MPU
13.3.4 初始化和配置區域
13.3.5 完成初始化MPU
13.3.6 受保護系統的上下文切換
13.3.7 mpuSLOS
13.4 總結
第14章 存儲管理單元
第15章 ARM體系結構的發展
。。。
網友評價:
一:書不錯,很有幫助。對于嵌入式初學者來說是本好書。多讀幾遍差不多就通了。
二:我是一個剛開始學ARM的初學者,雖然看這本書可能有些早,但是這本書對從宏觀到微觀把握ARM的工作原理十分有幫助,比《ARM體系結構與編程》看起來好多了(《ARM體系結構與編程》看了半天沒看下去),容易上手和入門,強烈推薦!