ARM Cortex-M3與Cortex-M4權威指南(第3版)

ARM Cortex-M3與Cortex-M4權威指南(第3版)

本書介紹了ARM Cortex-M3與Cortex-M相關知識的權威指南,目前基本上所有的CortexM設備驅動庫都用上了CMSISCore,而且CMSIS項目也擴展為DSP庫軟體等多個方面。

基本介紹

  • 書名:ARM Cortex-M3與Cortex-M4權威指南(第3版)
  • 作者:Joseph Yiu、吳常玉、曹孟娟、王麗紅
  • ISBN:9787302402923
  • 定價:89元
  • 出版社:清華大學出版社
  • 出版時間:2015.11.01
目錄
第1章ARMCortexM處理器簡介
1.1什麼是ARMCortexM處理器
1.1.1CortexM3和CortexM4處理器
1.1.2CortexM處理器家族
1.1.3處理器和微控制器的區別
1.1.4ARM和微控制器供應商
1.1.5選擇CortexM3和CortexM4微控制器
1.2CortexM處理器的優勢
1.2.1低功耗
1.2.2性能
1.2.3能耗效率
1.2.4代碼密度
1.2.5中斷
1.2.6易於使用
1.2.7可擴展性
1.2.8調試特性
1.2.9OS支持
1.2.10多種系統特性
1.2.11軟體可移植性和可重用性
1.2.12選擇(設備、工具和OS等)
1.3ARMCortexM處理器套用
1.4ARM處理器和ARM微控制器的資源
1.4.1ARM網站上有什麼
1.4.2微控制器供應商提供的文檔
1.4.3工具供應商提供的文檔
1.4.4其他資源
1.5背景和歷史
1.5.1ARM簡史
1.5.2ARM處理器的發展
1.5.3ThumbISA的架構版本
1.5.4處理器命名
1.5.5關於ARM生態系統
第2章嵌入式軟體開發簡介
2.1ARM微控制器是怎樣構成的
2.2開始時需要準備什麼
2.2.1開發組件
2.2.2開發板
2.2.3調試適配器
2.2.4軟體設備驅動
2.2.5例子
2.2.6文檔和其他資源
2.2.7其他設備
2.3軟體開發流程
2.4編譯應用程式
2.5軟體流程
2.5.1輪詢
2.5.2中斷驅動
2.5.3多任務系統
2.6C程式中的數據類型
2.7輸入、輸出和外設訪問
2.8微控制器接口
2.9Cortex微控制器軟體接口標準(CMSIS)
2.9.1CMSIS簡介
2.9.2CMSISCore所做的標準化
2.9.3CMSISCore的組織結構
2.9.4如何使用CMSISCore
2.9.5CMSIS的優勢
2.9.6CMSIS的多個版本
第3章技術綜述
3.1CortexM3和CortexM4處理器的一般信息
3.1.1處理器類型
3.1.2處理器架構
3.1.3指令集
3.1.4模組框圖
3.1.5存儲器系統
3.1.6中斷和異常支持
3.2CortexM3和CortexM4處理器的特性
3.2.1性能
3.2.2代碼密度
3.2.3低功耗
3.2.4存儲器系統
3.2.5存儲器保護單元
3.2.6中斷處理
3.2.7OS支持和系統級特性
3.2.8CortexM4的特殊特性
3.2.9易於使用
3.2.10調試支持
3.2.11可擴展性
3.2.12兼容性
第4章架構
4.1架構簡介
4.2編程模型
4.2.1操作模式和狀態
4.2.2暫存器
4.2.3特殊暫存器
4.2.4浮點暫存器
4.3應用程式狀態暫存器
4.3.1整數狀態標誌
4.3.2Q狀態標誌
4.3.3GE位
4.4存儲器系統
4.4.1存儲器系統特性
4.4.2存儲器映射
4.4.3棧存儲
4.4.4存儲器保護單元(MPU)
4.5異常和中斷
4.5.1什麼是異常
4.5.2嵌套向量中斷控制器(NVIC)
4.5.3向量表
4.5.4錯誤處理
4.6系統控制塊(SCB)
4.7調試
4.8復位和復位流程
第5章指令集
5.1ARMCortexM處理器指令集的背景簡介
5.2ARMCortexM處理器間的指令集比較
5.3理解彙編語言語法
5.4指令後綴的使用
5.5統一彙編語言(UAL)
5.6指令集
5.6.1處理器內傳送數據
5.6.2存儲器訪問指令
5.6.3算術運算
5.6.4邏輯運算
5.6.5移位和循環移位指令
5.6.6數據轉換運算(展開和反序)
5.6.7位域處理指令
5.6.8比較和測試
5.6.9程式流控制
5.6.10飽和運算
5.6.11異常相關指令
5.6.12休眠模式相關指令
5.6.13存儲器屏障指令
5.6.14其他指令
5.6.15不支持的指令
5.7CortexM4特有的指令
5.7.1CortexM4的增強DSP擴展簡介
5.7.2SIMD和飽和指令
5.7.3乘法和MAC指令
5.7.4打包和解包
5.7.5浮點指令
5.8桶形移位器
5.9在編程中訪問特殊暫存器和特殊指令
5.9.1簡介
5.9.2內在函式
5.9.3內聯彙編和嵌入彙編
5.9.4使用其他的編譯器相關的特性
5.9.5訪問特殊暫存器
第6章存儲器系統
6.1存儲器系統特性簡介
6.2存儲器映射
6.3連線處理器到存儲器和外設
6.4存儲器需求
6.5存儲器的端
6.6數據對齊和非對齊數據訪問支持
6.7位段操作
6.7.1簡介
6.7.2位段操作的優勢
6.7.3不同數據大小的位段操作
6.7.4C程式實現的位段操作
6.8默認的存儲器訪問許可權
6.9存儲器訪問屬性
6.10排他訪問
6.11存儲器屏障
6.12微控制器中的存儲器系統
第7章異常和中斷
7.1異常和中斷簡介
7.2異常類型
7.3中斷管理簡介
7.4優先權定義
7.5向量表和向量表重定位
7.6中斷輸入和掛起行為
7.7異常流程簡介
7.7.1接受異常請求
7.7.2異常進入流程
7.7.3執行異常處理
7.7.4異常返回
7.8中斷控制用的NVIC暫存器細節
7.8.1簡介
7.8.2中斷使能暫存器
7.8.3設定中斷掛起和清除中斷掛起
7.8.4活躍狀態
7.8.5優先權
7.8.6軟體觸發中斷暫存器
7.8.7中斷控制器類型暫存器
7.9用於異常和中斷控制的SCB暫存器細節
7.9.1SCB暫存器簡介
7.9.2中斷控制和狀態暫存器(ICSR)
7.9.3向量表偏移暫存器(VTOR)
7.9.4套用中斷和復位控制暫存器(AIRCR)
7.9.5系統處理優先權暫存器(SCB>SHP[0~11])
7.9.6系統處理控制和狀態暫存器(SCB>SHCSR)
7.10用於異常或中斷禁止的特殊暫存器細節
7.10.1PRIMASK
7.10.2FAULTMASK
7.10.3BASEPRI
7.11設定中斷的步驟示例
7.11.1簡單情況
7.11.2向量表重定位時的情況
7.12軟體中斷
7.13要點和提示
第8章深入了解異常處理
8.1簡介
8.1.1關於本章
8.1.2C實現的異常處理
8.1.3棧幀
8.1.4EXC_RETURN
8.2異常流程
8.2.1異常進入和壓棧
8.2.2異常返回和出棧
8.3中斷等待和異常處理最佳化
8.3.1什麼是中斷等待
8.3.2多周期指令執行時的中斷
8.3.3末尾連鎖
8.3.4延遲到達
8.3.5出棧搶占
8.3.6惰性壓棧
第9章低功耗和系統控制特性
9.1低功耗設計
9.1.1低功耗對微控制器有什麼意義
9.1.2低功耗系統需求
9.1.3CortexM3和CortexM4處理器的低功耗特點
9.2低功耗特性
9.2.1休眠模式
9.2.2系統控制暫存器(SCR)
9.2.3進入休眠模式
9.2.4喚醒條件
9.2.5退出時休眠特性
9.2.6掛起傳送事件(SEVONPEND)
9.2.7休眠擴展/喚醒延遲
9.2.8喚醒中斷控制器(WIC)
9.2.9事件通信接口
9.3在編程中使用WFI和WFE
9.3.1何時使用WFI
9.3.2使用WFE
9.4開發低功耗套用
9.4.1降低動態功耗
9.4.2降低活躍周期
9.4.3減小休眠模式電流
9.5SysTick定時器
9.5.1為什麼要有SysTick定時器
9.5.2SysTick定時器操作
9.5.3使用SysTick定時器
9.5.4其他考慮
9.6自復位
9.7CPUID基本暫存器
9.8配置控制暫存器
9.8.1CCR簡介
9.8.2STKALIGN位
9.8.3BFHFNMIGN位
9.8.4DIV_O_TRP位
9.8.5UNALIGN_TRP位
9.8.6USERSETMPEND位
9.8.7NONBASETHRDENA位
9.9輔助控制暫存器
9.10協處理器訪問控制暫存器
第10章OS支持特性
10.1OS支持特性簡介
10.2影子棧指針
10.3SVC異常
10.4PendSV異常
10.5實際的上下文切換
10.6排他訪問和嵌入式OS
第11章存儲器保護單元
11.1MPU簡介
11.1.1關於MPU
11.1.2使用MPU
11.2MPU暫存器
11.2.1MPU類型暫存器
11.2.2MPU控制暫存器
11.2.3MPU區域編號暫存
11.2.4MPU基地址暫存器
11.2.5MPU區域基本屬性和大小暫存器
11.2.6MPU別名暫存器
11.3設定MPU
11.4存儲器屏障和MPU配置
11.5使用子區域禁止
11.5.1允許高效的存儲器劃分
11.5.2減少所需的區域總數
11.6使用MPU時的注意事項
11.6.1程式代碼
11.6.2數據存儲器
11.6.3外設
11.7MPU的其他用法
11.8與CortexM0+處理器中的MPU間的差異
第12章錯誤異常和錯誤處理
12.1錯誤異常簡介
12.2錯誤的原因
12.2.1存儲器管理(MemManage)錯誤
12.2.2匯流排錯誤
12.2.3使用錯誤
12.2.4HardFault
12.3使能錯誤處理
12.3.1MemManage錯誤
12.3.2匯流排錯誤
12.3.3使用錯誤
12.3.4HardFault
12.4錯誤狀態暫存器和錯誤地址暫存器
12.4.1簡介
12.4.2MemManage錯誤信息
12.4.3匯流排錯誤信息
12.4.4使用錯誤信息
12.4.5HardFault狀態暫存器
12.4.6調試錯誤狀態暫存器(DFSR)
12.4.7錯誤地址暫存器MMFAR和BFAR
12.4.8輔助錯誤狀態暫存器
12.5分析錯誤
12.6異常處理相關的錯誤
12.6.1壓棧
12.6.2出棧
12.6.3惰性壓棧
12.6.4取向量
12.6.5非法返回
12.6.6優先權和壓棧或出棧錯誤
12.7鎖定
12.7.1什麼是鎖定
12.7.2避免鎖定
12.8錯誤處理
12.8.1用於調試的HardFault
12.8.2錯誤禁止
12.9其他信息
12.9.1運行具有兩個棧的系統
12.9.2檢測棧溢出
第13章浮點運算
13.1關於浮點數
13.1.1簡介
13.1.2單精度浮點數
13.1.3半精度浮點數
13.1.4雙精度浮點數
13.1.5CortexM處理器中的浮點支持
13.2CortexM4浮點單元(FPU)
13.2.1浮點單元簡介
13.2.2浮點暫存器簡介
13.2.3CPACR暫存器
13.2.4浮點暫存器組
13.2.5浮點狀態和控制暫存器(FPSCR)
13.2.6浮點上下文控制暫存器(FPU>FPCCR)
13.2.7浮點上下文地址暫存器(FPU>FPCAR)
13.2.8浮點默認狀態控制暫存器(FPU>FPDSCR)
13.2.9介質和浮點特性暫存器(FPU>MVFR0、FPU>MVFR1)
13.3惰性壓棧詳解
13.3.1惰性壓棧特性的關鍵點
13.3.2第1種情況:被打斷的任務中沒有浮點上下文
13.3.3第2種情況:被打斷的任務中有浮點上下文,ISR中沒有
13.3.4第3種情況:被打斷的任務和ISR中都有浮點上下文
13.3.5第4種情況:中斷嵌套,且第2箇中斷處理中存在浮點上
下文
13.3.6第5種情況:中斷嵌套,且兩個中斷處理中都存在浮點上
下文
13.3.7惰性壓棧的中斷
13.3.8浮點指令的中斷
13.4使用浮點單元
13.4.1CMSISCore中的浮點支持
13.4.2用C語言實現浮點編程
13.4.3編譯器命令行選項
13.4.4ABI選項:Hardvfp和Softvfp
13.4.5特殊的FPU模式
13.5浮點異常
13.6要點和提示
13.6.1微控制器的運行時庫
13.6.2調試操作
第14章調試和跟蹤特性
14.1調試和跟蹤特性簡介
14.1.1什麼是調試特性
14.1.2什麼是跟蹤特性
14.1.3調試和跟蹤特性總結
14.2調試架構
14.2.1CoreSight調試架構
14.2.2處理器調試接口
14.2.3調試連線埠(DP)、訪問連線埠(AP)和調試訪問連線埠(DAP)
14.2.4跟蹤接口
14.2.5CoreSight的特點
14.3調試模式
14.4調試事件
14.5斷點特性
14.6調試部件簡介
14.6.1處理器調試支持
14.6.2Flash補丁和斷點(FPB)單元
14.6.3數據監視點和跟蹤(DWT)單元
14.6.4指令跟蹤宏單元
14.6.5嵌入式跟蹤宏單元(ETM)
14.6.6跟蹤連線埠接口單元(TPIU)
14.6.7ROM表
14.6.8AHB訪問連線埠(AHBAP)
14.7調試操作
14.7.1調試連線
14.7.2Flash編程
14.7.3斷點
第15章KeilARM微控制器開發套件入門
15.1簡介
15.2典型的程式編譯流程
15.3μVision入門
15.4工程選項
15.4.1Device選項
15.4.2Target選項
15.4.3Output選項
15.4.4Listing選項
15.4.5User選項
15.4.6C/C++選項
15.4.7Asm選項
15.4.8Linker選項
15.4.9Debug選項
15.4.10Utilities選項
15.5使用IDE和調試器
15.6使用指令集模擬器
15.7在SRAM中運行程式
15.8最佳化選項
15.9其他信息和要點
15.9.1棧和堆存儲大小配置
15.9.2其他信息
第16章IAREmbeddedWorkbenchforARM入門
16.1IAREmbeddedWorkbenchforARM簡介
16.2典型的程式編譯流程
16.3創建簡單的blinky工程
16.4工程選項
16.5提示和要點
第17章GCC入門
17.1GCC工具鏈
17.2典型開發流程
17.3創建簡單的blinky工程
17.4命令行選項簡介
17.5Flash編程
17.5.1使用KeilMDKARM
17.5.2使用第三方Flash編程工具
17.6KeilMDKARM和ARM嵌入式處理器GNU工具一起使用
17.7CoIDE和ARM嵌入式處理器GNU工具一起使用
17.8基於gcc的商業版開發組件
17.8.AtollicTrueSTUDIOforARM
17.8.2RedSuite
17.8.3CrossWorksforARM
第18章輸入和輸出軟體實例
18.1產生輸出
18.2重定向到指令跟蹤宏單元(ITM)
18.2.1簡介
18.2.2KeilMDKARM
18.2.3IAREmbeddedWorkbench
18.2.4GCC
18.3半主機
18.4重定向到外設
第19章使用嵌入式作業系統
19.1嵌入式OS簡介
19.1.1什麼是嵌入式OS
19.1.2何時使用嵌入式OS
19.1.3CMSISRTOS的作用
19.2KeilRTXRealTimeKernel
19.2.1關於RTX
19.2.2特性簡介
19.2.3RTX和CMSISRTOS
19.2.4執行緒
19.3CMSISRTOS實例
19.3.1具有兩個執行緒的簡單CMSISRTOS
19.3.2執行緒間通信簡介
19.3.3信號事件通信
19.3.4互斥體(MUTEX)
19.3.5信號量
19.3.6訊息佇列
19.3.7郵件佇列
19.3.8記憶體池管理特性
19.3.9通用等待函式和逾時數值
19.3.10定時器特性
19.3.11訪問非特權設備
19.4OS感知調試
19.5疑難解答
19.5.1棧大小和棧對齊
19.5.2特權等級
19.5.3其他問題
第20章彙編和混合語言工程
20.1彙編代碼在工程中的使用
20.2C和彙編間的互動
20.3彙編函式的結構
20.4例子
20.4.1ARM工具鏈的簡單例子(KeilMDKARM、DS5)
20.4.2ARM嵌入式處理器GNU工具的簡單例子
20.4.3訪問特殊暫存器
20.4.4數據存儲器
20.4.5Helloworld
20.4.6顯示十六進制和十進制的數據
20.4.7NVIC中斷控制
20.4.8無符號整數平方根
20.5混合語言工程
20.5.1從彙編中調用C函式
20.5.2從C中調用彙編函式
20.5.3嵌入彙編(KeilMDKARM/ARMDS5professional)
20.5.4內聯彙編
20.6內在函式
20.7習語識別
第21章ARMCortexM4和DSP套用
21.1微控制器上的DSP
21.2點積實例
21.3傳統DSP處理器的架構
21.4CortexM4的DSP指令
21.4.1暫存器和數據類型
21.4.2小數運算
21.4.3SIMD數據
21.4.4載入和存儲指令
21.4.5算術指令
21.4.6CortexM4的一般最佳化策略
21.4.7指令限制
21.5為CortexM4編寫最佳化的DSP代碼
21.5.1Biquad濾波器
21.5.2快速傅立葉變換
21.5.3FIR濾波器
第22章使用ARMCMSISDSP庫
22.1DSP庫簡介
22.2預構建的二進制代碼
22.3函式命令規則
22.4獲得幫助
22.5例1:DTMF解調
22.5.1產生正弦波
22.5.2使用FIR濾波器進行解析
22.5.3使用FFT進行解析
22.5.4使用Biquad濾波器進行解析
22.5.5DTMF示例代碼
22.6例2:最小二乘法運動跟蹤
第23章高級話題
23.1決斷和跳轉
23.1.1條件跳轉
23.1.2複雜的判決樹
23.2性能考慮
23.3雙字棧對齊
23.4信號量設計的各種方法
23.4.1用SVC服務實現信號量
23.4.2使用位段實現信號量
23.5非基本執行緒使能
23.6中斷服務的重入
23.7C語言實現的位數據處理
23.8啟動代碼
23.9棧溢出檢測
23.9.1工具鏈的棧分析
23.9.2棧的測試分析
23.9.3根據棧布局檢測棧溢出
23.9.4使用MPU
23.9.5使用DWT和調試監控異常
23.9.6OS上下文切換中的棧檢查
23.10Flash補丁特性
23.11CortexM3和CortexM4處理器的版本
23.11.1簡介
23.11.2CortexM3r0p0到r1p0/r1p1的變動
23.11.3CortexM3r1p1到r2p0的變動
23.11.4CortexM3r2p0到r2p1的變動
23.11.5CortexM4r0p0到r0p1的變動
第24章軟體移植
24.1簡介
24.2從8位/16位MCU移植到CortexMMCU
24.2.1架構差異
24.2.2一般調整
24.2.3存儲器大小需求
24.2.48位或16位微控制器不再適用的最佳化
24.2.5例子:從8051移植到ARMCortexM
24.3從ARM7TDMI到CortexM3/M4的軟體移植
24.3.1硬體差異簡介
24.3.2彙編語言檔案
24.3.3C語言檔案
24.3.4預編譯的目標檔案和庫
24.3.5最佳化
24.4不同CortexM處理器間的軟體移植
24.4.1不同CortexM處理器間的差異
24.4.2所需的軟體變動
24.4.3嵌入式OS
24.4.4創建CortexM處理器的可移植程式代碼

相關詞條

熱門詞條

聯絡我們