基本信息
書名:ARM Cortex-M0與Cortex-M0+指南(第2版)
定價:128.00元
作者:Jsoseph Yiu,吳常玉 張淑 吳衛東
齣版社:清華大學齣版社
齣版日期:2018-01-01
ISBN:9787302473312
字數:
頁碼:
版次:1
裝幀:平裝-膠訂
開本:16開
商品重量:0.4kg
編輯推薦
本書是係統論述ARM Cortex-M0與Cortex-M0 處理器及其編程的圖書,作者Joseph Yiu是英國ARM公司的主管工程師,著有久負盛名的暢銷圖書《ARM Cortex-M3與Cortex-M4指南(第3版)》(清華大學齣版社)。本書適閤的讀者對象包括:嵌入式産品設計工程師、嵌入式軟件開發人員、電子愛好者以及學習嵌入式係統課程(ARM Cortex-M0與Cortex-M0 )的高年級本科生及研究生等。作者提供瞭詳實的配書工程源文件(見封麵下載地址)。l 深度剖析係統模型、指令集以及中斷處理,以利於理解ARM Cortex-M0與Cortex-M0 的工作方式;l 綜閤運用匯編語言和C語言實現的豐富的ARM Cortex-M0與Cortex-M0 編程案例,有助於快速動手實踐;l 係統論述軟件的開發流程,並以常用軟件開發工具為例,介紹程序設計的實例及如何定位程序代碼問題和軟件移植等方麵的知識;l 全麵揭秘從其他架構處理器進行軟件移植的方法,包括ARM7TDMI、ARM Cortex-M3以及8051微控製器移植的實例;l 深入解析Cortex-M0和Cortex-M0 處理器架構特性的差異(如非特權執行等級、嚮量錶重定位);l 細緻分析瞭Cortex-M0 處理器的優勢,比如新的單周期I/O接口、更優的能耗效率、更高的性能以及微跟蹤緩衝(MTB)特性;l 詳盡介紹瞭軟件開發工具方麵的新內容,如Keil MDK版本5、IAR Embedded Workbench for ARM、ARM gcc、CooCox及mbed使用示例;l 提供瞭基於CMSIS-RTOS API的Keil RTX實時操作係統的新實例;l 提供瞭Cortex-M0和Cortex-M0 微控製器使用實例,包括Freescale Freedom闆(FRDM-KL25Z)、STM32F0 Discovery、STM32L0 Discovery和NXP LPC1114(DIP封裝)麵包闆等。
內容提要
本書是ARM公司微控製器係統級設計專傢Joseph Yiu的作品。本書全麵係統論述Cortex-M0與Cortex-M0 的內核、體係結構、指令集、編譯器、程序設計及軟件移植。全書共23章,近700頁。深度剖析係統模型、指令集以及中斷處理,以利於理解ARM Cortex-M0與Cortex-M0 的工作方式;綜閤運用匯編語言和C語言實現的豐富的ARM Cortex-M0與Cortex-M0 編程案例,有助於快速動手實踐;係統論述軟件的開發流程,並以常用軟件開發工具為例,介紹程序設計的實例及如何定位程序代碼問題和軟件移植等方麵的知識;全麵揭秘從其他架構處理器進行軟件移植的方法,包括ARM7TDMI、ARM Cortex-M3以及8051微控製器移植的實例;深入解析Cortex-M0和Cortex-M0 處理器架構特性的差異(如非特權執行等級、嚮量錶重定位);細緻分析瞭Cortex-M0 處理器的優勢,比如新的單周期I/O接口、更優的能耗效率、更高的性能以及微跟蹤緩衝(MTB)特性;詳盡介紹瞭軟件開發工具方麵的新內容,如Keil MDK版本5、IAR Embedded Workbench for ARM、ARM gcc、CooCox及mbed的實例。另外,為便於讀者學習,全書提供瞭完整的案例源代碼!
目錄
目錄
譯者序1
推薦序3
前言5
緻謝7
術語和縮寫9
本書約定13
章概論
1.1歡迎來到嵌入式處理器的世界
1.1.1處理器有什麼作用
1.1.2處理器、CPU、內核、微控製器及其命名
1.1.3嵌入式係統的編程
1.1.4學習微控製器需要瞭解什麼
1.2理解處理器的類型
1.2.1處理器為什麼有很多種類
1.2.2ARM處理器傢族概述
1.2.3模糊邊界
1.2.4ARM Cortex�睲處理器係列
1.2.5ARM Cortex�睲0和Cortex�睲0 處理器簡介
1.2.6從Cortex�睲0處理器到Cortex�睲0 處理器
1.2.7Cortex�睲0和Cortex�睲0 處理器的應用
1.3微控製器內部有什麼
1.3.1微控製器內常見部件
1.3.2微控製器應用的處理器的特點
1.3.3矽片技術
1.4ARM介紹
1.4.1ARM生産芯片嗎
1.4.2ARM的産品是什麼
1.4.3芯片廠商為什麼不設計自己的處理器
1.4.4ARM生態係統有什麼特殊之處
1.5ARM處理器和ARM微控製器方麵的資源
1.5.1ARM主頁
1.5.2微控製器廠商提供的資源
1.5.3工具廠商提供的資源
1.5.4其他資源
第2章技術綜述
2.1Cortex�睲0和Cortex�睲0 處理器
2.2模塊框圖
2.3典型係統
2.4什麼是ARMv6�睲架構
2.5Cortex�睲處理器間的軟件可移植性
2.6ARM Cortex�睲0和Cortex�睲0 處理器的優勢
2.6.1低功耗和能耗效率
2.6.2高代碼密度
2.6.3低中斷等待和確定行為
2.6.4易於使用
2.6.5係統級特性和OS支持特性
2.6.6調試特性
2.6.7可配置性、靈活性和可擴展性
2.6.8軟件可移植性和可重用性
2.6.9産品選擇的多樣性
2.6.10生態係統支持
2.7Cortex�睲0和Cortex�睲0 處理器的應用
2.7.1微控製器
2.7.2傳感器
2.7.3傳感器集綫器
2.7.4電源管理IC
2.7.5ASSP和ASIC
2.7.6片上係統中的子係統
2.8為什麼要在微控製器應用中使用32位處理器
2.8.1性能
2.8.2代碼密度
2.8.3ARM架構的其他優勢
2.8.4軟件可重用性
第3章嵌入式軟件開發介紹
3.1歡迎進入嵌入式係統編程
3.2基本概念
3.2.1復位
3.2.2時鍾
3.2.3電壓
3.2.4輸入和輸齣
3.2.5嵌入式軟件程序流程介紹
3.2.6編程語言選擇
3.3ARM Cortex�睲編程介紹
3.3.1C編程數據類型
3.3.2用C訪問外設
3.3.3程序映像內有什麼
3.3.4SRAM中的數據
3.3.5微控製器啓動時會發生什麼
3.4軟件開發流程
3.5Cortex微控製器軟件接口標準
3.5.1CMSIS介紹
3.5.2CMSIS�睠ORE所做的標準化
3.5.3CMSIS�睠ORE的組織
3.5.4使用CMSIS�睠ORE
3.5.5CMSIS的優勢
3.6軟件開發的其他信息
第4章架構
4.1ARMv6�睲架構綜述
4.1.1架構的含義
4.1.2ARMv6�睲架構背景
4.2編程模型
4.2.1操作模式和狀態
4.2.2寄存器和特殊寄存器
4.2.3APSR的行為
4.3存儲器係統
4.3.1概述
4.3.2單周期I/O接口
4.3.3存儲器保護單元
4.4棧存儲操作
4.5異常和中斷
4.6嵌套嚮量中斷控製器
4.6.1靈活的中斷管理
4.6.2嵌套中斷支持
4.6.3嚮量異常入口
4.6.4中斷屏蔽
4.7係統控製塊
4.8調試係統
4.9程序映像和啓動流程
第5章指令集
5.1指令集是什麼
5.2ARM和Thumb指令集背景
5.3匯編基礎
5.3.1匯編語法一覽
5.3.2後綴的使用
5.3.3統一匯編語言(UAL)
5.4指令列錶
5.4.1處理器內傳送數據
5.4.2存儲器訪問
5.4.3棧存儲訪問
5.4.4算術運算
5.4.5邏輯運算
5.4.6移位和循環移位運算
5.4.7展開和順序反轉運算
5.4.8程序流控製
5.4.9存儲器屏障指令
5.4.10異常相關指令
5.4.11休眠模式特性相關指令
5.4.12其他指令
5.5僞指令
第6章指令使用示例
6.1概述
6.2程序控製
6.2.1if�瞭hen�瞖lse
6.2.2循環
6.2.3跳轉指令
6.2.4跳轉指令的典型用法
6.2.5函數調用和函數返迴
6.2.6跳轉錶
6.3數據訪問
6.3.1簡單數據訪問
6.3.2使用存儲器訪問指令的例子
6.4數據類型轉換
6.4.1數據大小的轉換
6.4.2大小端轉換
6.5數據處理
6.5.164位/128位加法
6.5.264位/128位減法
6.5.3整數除法
6.5.4無符號整數開方根
6.5.5位和位域計算
第7章存儲器係統
7.1微控製器中的存儲器係統
7.2Cortex�睲0和Cortex�睲0 處理器中的總綫係統
7.3存儲器映射
7.3.1概述
7.3.2係統級設計
7.4程序存儲器、Bootloader和存儲器重映射
7.4.1程序存儲器和Bootloader
7.4.2存儲器映射
7.5數據存儲器
7.6小端和大端支持
7.7數據類型
7.8存儲器屬性和存儲器訪問權限
7.9硬件行為對編程的影響
7.9.1數據對齊
7.9.2訪問非法地址
7.9.3多加載和存儲指令的使用
7.9.4等待狀態
第8章異常和中斷
8.1異常和中斷的含義
8.2Cortex�睲0和Cortex�睲0 處理器內的異常類型
8.2.1概述
8.2.2不可屏蔽中斷
8.2.3HardFault
8.2.4SVC
8.2.5可掛起的係統調用
8.2.6係統節拍
8.2.7中斷
8.3NVIC簡介
8.4異常優先級定義
8.5嚮量錶
8.6異常流程概述
8.6.1接受異常
8.6.2壓棧和齣棧
8.6.3異常返迴指令
8.6.4末尾連鎖
8.6.5延遲到達
8.7EXC_RETURN
8.8用於中斷控製的NVIC控製寄存器
8.8.1NVIC控製寄存器概述
8.8.2中斷使能和清除使能
8.8.3中斷掛起和清除掛起
8.8.4中斷優先級
8.9異常屏蔽寄存器(PRIMASK)
8.10中斷輸入和掛起行為
8.10.1簡單中斷處理
8.10.2簡單的脈衝中斷處理
8.10.3中斷掛起狀態在得到服務前取消
8.10.4外設在確認中斷請求時清除掛起狀態
8.10.5ISR完成後中斷請求保持為高
8.10.6進入ISR前産生瞭多個中斷請求脈衝
8.10.7在ISR執行期間産生瞭中斷請求脈衝
8.10.8已禁止中斷的中斷請求確認
8.11異常入口流程
8.11.1壓棧
8.11.2取齣嚮量並更新PC
8.11.3更新寄存器
8.12異常退齣流程
8.12.1寄存器齣棧
8.12.2從返迴地址取指並執行
8.13中斷等待
第9章係統控製和低功耗特性
9.1係統控製寄存器簡介
9.2SCB中的寄存器
9.2.1SCB中的寄存器列錶
9.2.2CPU ID寄存器
9.2.3用於係統異常管理的控製寄存器
9.2.4嚮量錶偏移寄存器
9.2.5應用中斷和復位控製寄存器
9.2.6係統控製寄存器
9.2.7配置和控製寄存器
9.2.8係統處理控製和狀態寄存器
9.3使用自復位特性
9.4使用嚮量錶重定位特性
9.5低功耗特性
9.5.1概述
9.5.2休眠模式
9.5.3等待事件和等待中斷
9.5.4喚醒條件
9.5.5退齣時休眠特性
9.5.6喚醒中斷控製器
0章操作係統支持特性
10.1支持OS的特性概述
10.2嵌入式係統的操作係統介紹
10.3SysTick定時器
10.3.1SysTick寄存器
10.3.2設置SysTick
10.3.3SysTick用於時間測量
10.3.4將SysTick用作單發定時器
10.4進程棧和PSP
10.5SVCall異常
10.6PendSV
10.7高級話題: 在編程中使用SVC和PendSV
10.7.1使用SVC異常
10.7.2使用PendSV異常
10.8高級話題: 實際的上下文切換
1章錯誤處理
11.1錯誤異常概述
11.2錯誤是如何産生的
11.3分析錯誤
11.4意外切換至ARM狀態
11.5實際應用中的錯誤處理
11.6軟件開發期間的錯誤處理
11.7鎖定
11.7.1鎖定的原因
11.7.2鎖定期間發生瞭什麼
11.8避免鎖定
11.9和ARMv7�睲架構中錯誤處理的對比
2章存儲器保護單元
12.1MPU是什麼
12.2MPU適用的情形
12.3技術介紹
12.4MPU寄存器
12.4.1MPU類型寄存器
12.4.2MPU控製寄存器
12.4.3MPU區域編號寄存器
12.4.4MPU區域基地址寄存器
12.4.5MPU區域基本屬性和大小寄存器
12.5設置MPU
12.6存儲器屏障和MPU配置
12.7使用子區域禁止
12.7.1允許高效的存儲器劃分
12.7.2減少所需的區域總數
12.8使用MPU時的注意事項
12.8.1程序代碼
12.8.2數據存儲器
12.9和Cortex�睲3/M4/M7處理器的MPU間的差異
3章調試特性
13.1軟件開發和調試特性
13.2調試接口
13.2.1JTAG和串行綫調試通信協議
13.2.2Cortex�睲處理器和CoreSight調試架構
13.2.3調試接口的設計考慮
13.3調試特性一覽
13.4調試係統
13.5暫停模式和調試事件
13.6利用MTB實現指令跟蹤
4章Keil微控製器開發套件入門
14.1Keil微控製器開發套件介紹
14.1.1概述
14.1.2工具
14.1.3Keil MDK的優勢
14.1.4安裝
14.2典型的程序編譯流程
14.3硬件介紹
14.3.1Freescale Freedom開發闆(FRDM�睰L25Z)
14.3.2STMicroelectronics STM32L0 Discovery
14.3.3STMicroelectronics STM32F0 Discovery
14.3.4NXP LPC1114FN28
14.4μVision IDE入門
14.4.1如何開始
14.4.2啓動Keil MDK
14.4.3Freescale FRDM�睰L25Z工程設置步驟
14.4.4STMicroelectronics STM32L0 Discovery工程設置步驟
14.4.5STMicroelectronice STM32F0 Discovery工程設置步驟
14.4.6NXP LPC1114FN28工程設置步驟
14.5使用IDE和調試器
14.6底層內容
14.6.1CMSIS文件
14.6.2時鍾設置
14.6.3棧和堆的設置
14.6.4編譯
14.7工程環境的優化
14.7.1目標選項
14.7.2優化選項
14.7.3運行時環境選項
14.7.4工程管理
14.8使用模擬器
14.9在SRAM中執行程序
14.10使用MTB指令跟蹤
5章IAR embedded workbench for ARM入門
15.1IAR embedded workbench for ARM概述
15.2典型的程序編譯流程
15.3創建簡單的blinky工程
15.4工程選項
15.5在IAR EWARM中使用MTB指令跟蹤
15.6提示和要點
6章GCC入門
16.1GCC工具鏈
16.2關於本章中的例子
16.3典型開發流程
16.4創建簡單的Blinky工程
16.5命令行選項概述
16.6Flash編程
16.7在Keil MDK�睞RM中使用ARM嵌入式處理器GNU工具
16.8在CooCox IDE中使用ARM嵌入式處理器GNU工具
16.8.1概述和設置
16.8.2創建新的工程
16.8.3使用IDE和調試器
7章mbed入門
17.1什麼是mbed
17.2mbed係統是怎麼工作的
17.3mbed的優勢
17.4設置FRDM�睰L25Z闆和mbed賬號
17.4.1檢查mbed Web網頁
17.4.2注冊mbed賬號
17.4.3個人計算機的設置
17.5創建blinky程序
17.5.1隻開關紅色LED的簡單版本
17.5.2利用脈寬調試控製LED
17.6支持的常用外設對象
17.7使用printf
17.8應用實例: 火車模型控製器
17.9中斷
17.10要點和提示
8章編程實例
18.1利用通用異步收發器來産生輸齣
18.1.1通用異步收發器通信概述
18.1.2微控製器上的UART配置概述
18.1.3配置FRDM�睰L25Z中的UART
18.1.4配置STM32L0 Discovery闆中的UART
18.1.5配置STM32F0 Discovery闆上的UART
18.1.6配置LPC1114FN28上的UART
18.2實現printf
18.2.1概述
18.2.2Keil MDK的重定嚮
18.2.3IAR EWARM的重定嚮
18.2.4GNU編譯器套件的重定嚮
18.2.5IAR EWARM的半主機
18.2.6CoIDE的半主機
18.3開發輸入和輸齣函數
18.3.1為何要重新開發
18.3.2其他接口
18.3.3有關scanf的其他信息
18.4中斷編程實例
18.4.1中斷處理概述
18.4.2中斷控製函數概述
18.5應用實例: 火車模型用的另一個控製器
18.6CMSIS�睠ORE的不同版本
9章超低功耗設計
19.1超低功耗使用示例
19.1.1概述
19.1.2進入休眠模式
19.1.3WFE與WFI
19.1.4利用退齣時休眠特性
19.1.5利用掛起發送事件特性
19.1.6利用喚醒中斷控製器
19.1.7利用事件通信接口
19.2低功耗設計要求
19.3能量去哪裏瞭
19.4開發低功耗應用
19.4.1低功耗設計概述
19.4.2降低功耗的各種方法
19.4.3選擇正確的方法
19.5調試考慮
19.5.1調試和低功耗
19.5.2調試和Flash編程的“安全模式”
19.5.3低電壓引腳和調試接口
19.6低電壓設備的檢測
19.6.1ULPBench的背景
19.6.2ULPBench�睠P概述
19.7Freescale KL25Z低功耗特性使用示例
19.7.1目標
19.7.2測試設置
19.7.3KL25Z的低功耗模式
19.7.4時鍾設計
19.7.5測試設置
19.7.6測量結果
19.8LPC1114低功耗特性使用示例
19.8.1LPC1114FN28概述
19.8.2實驗1:使用12MHz內部和外部晶振
19.8.3實驗2:使用降頻1MHz和100kHz
19.8.4其他改進
19.8.5利用LPC1114的深度休眠
第20章嵌入式OS編程
20.1介紹
20.1.1背景
20.1.2嵌入式OS和RTOS
20.1.3為什麼要使用嵌入式OS
20.1.4CMSIS�睷TOS的作用
20.1.5關於Keil RTX Kernel
20.1.6在Keil MDK中構建一個簡單RTX實例
20.2RTX Kernel概述
20.2.1綫程
20.2.2RTX配置
20.2.3深入研究個例子
20.2.4綫程間通信概述
20.2.5信號事件通信
20.2.6互斥體(Mutex)
20.2.7信號量
20.2.8消息隊列
20.2.9郵件隊列
20.2.10內存池管理特性
20.2.11通用等待函數和超時數值
20.2.12定時器特性
20.2.13給非特權綫程增加SVC服務
20.3在應用中使用RTX
20.4調試RTX應用
20.5疑難解答
20.5.1棧大小需求
20.5.2優先級
20.5.3利用OS錯誤報告
20.5.4OS特性配置
20.5.5其他問題
20.6其他要點和提示
20.6.1修改RTX_Config_CM.c
20.6.2綫程優先級
20.6.3縮短等待時間
20.6.4其他信息
第21章混閤語言工程
21.1匯編在工程開發中的應用
21.2匯編編程實踐和AAPCS
21.3匯編函數概述
21.3.1ARM工具鏈
21.3.2GCC工具鏈
21.3.3IAR Embedded Workbench for ARM
21.3.4匯編函數結構
21.4內聯匯編
21.4.1ARM工具鏈
21.4.2GNU編譯器組件
21.5嵌入匯編特性(ARM工具鏈)
21.6混閤語言工程
21.6.1概述
21.6.2在匯編代碼中調用C函數
21.6.3在C代碼中調用匯編函數
21.7在Keil MDK�睞RM中創建匯編工程
21.7.1一個簡單的工程
21.7.2Hello World
21.7.3其他文本輸齣函數
21.8用於中斷控製的通用匯編代碼
21.8.1使能和禁止中斷
21.8.2設置和清除中斷掛起狀態
21.8.3設置中斷優先級
21.9匯編語言的其他編程技巧
21.9.1為變量分配數據空間
21.9.2復雜跳轉處理
21.10使用特殊指令
21.10.1CMSIS�睠ORE
21.10.2習語識彆
第22章軟件移植
22.1概述
22.2從8位/16位微控製器嚮ARMCortex�睲移植軟件
22.2.1通用改動
22.2.2存儲器需求
22.2.38位或16位微控製器不再適用的優化
22.2.4實例: 從8051移植到ARM Cortex�睲0/Cortex�睲0
22.3ARM7TDMI和Cortex�睲0/M0 處理器間的差異
22.3.1經典ARM處理器概述
22.3.2操作模式
22.3.3寄存器
22.3.4指令集
22.3.5中斷
22.4從ARM7TDMI嚮Cortex�睲0/Cortex�睲0 處理器移植軟件
22.4.1啓動代碼和嚮量錶
22.4.2中斷
22.4.3C程序代碼
22.4.4匯編代碼
22.4.5原子訪問
22.4.6優化
22.5各種Cortex�睲處理器間的差異
22.5.1概述
22.5.2係統模型
22.5.3NVIC和異常
22.5.4指令集
22.5.5係統級特性
22.5.6調試和跟蹤特性
22.6在Cortex�睲處理器間移植時的通用改動
22.7Cortex�睲0/M0 和Cortex�睲1間的軟件移植
22.8Cortex�睲0/M0 和Cortex�睲3間的軟件移植
22.9Cortex�睲0/M0 和Cortex�睲4/M7間的軟件移植
第23章高級話題
23.1C語言實現的位數據處理
23.2C實現的啓動代碼
23.3棧溢齣檢測
23.3.1什麼是棧溢齣
23.3.2工具鏈的棧分析
23.3.3棧的測試分析
23.3.4利用存儲器保護單元對棧進行限製
23.3.5OS上下文切換期間的棧檢測
23.4中斷服務程序重入
23.5信號量設計
23.6存儲器順序和存儲器屏障
附錄A指令集快速參考
附錄B異常類型快速參考
B.1異常類型
B.2異常壓棧後棧的內容
附錄CCMSIS�睠ORE快速參考
C.1數據類型
C.2異常枚舉
C.3嵌套嚮量中斷控製器訪問函數
C.4係統和SysTick操作函數
C.5內核寄存器操作函數
C.6特殊指令操作函數
附錄DNVIC、SCB和SysTick寄存器快速參考
D.1NVIC寄存器一覽
D.2中斷設置使能寄存器(NVIC�睮SER)
D.3中斷清除使能寄存器(NVIC�睮CER)
D.4中斷設置掛起寄存器(NVIC�睮SPR)
D.5中斷清除掛起寄存器(NVIC�睮CPR)
D.6中斷優先級寄存器(NVIC�睮RQ[0]到NVIC�睮RQ[7])
D.7SCB寄存器一覽
D.8CPU ID寄存器(SCB�睠PUID)
D.9中斷控製狀態寄存器(SCB�睮CSR)
D.10嚮量錶偏移寄存器(SCB�睼TOR,0xE000ED08)
D.11應用中斷和控製狀態寄存器(SCB�睞IRCR)
D.12係統控製寄存器(SCB�睸CR)
D.13配置控製寄存器(SCB�睠CR)
D.14係統處理優先級寄存器2(SCB�睸HR[0])
D.15係統處理優先級寄存器3(SCB�睸HR[1])
D.16係統處理控製和狀態寄存器
D.17SysTick寄存器一覽
D.18SysTick控製和狀態寄存器(SysTick�睠TRL)
D.19SysTick重裝載值寄存器(SysTick�睱OAD)
D.20SysTick當前值寄存器(SysTick�睼AL)
D.21SysTick校準值寄存器(SysTick�睠ALIB)
附錄E調試寄存器快速參考
E.1內核調試寄存器
E.2斷點單元
E.3數據監視點單元
E.4ROM錶寄存器
E.5微跟蹤緩衝
E.6POSITION寄存器
E.7MASTER寄存器
E.8FLOW寄存器
E.9BASE寄存器
E.10包格式
E.11實例
附錄F調試接頭分配
F.110針Cortex調試連接頭
F.220針Cortex調試 ETM接頭
F.3老式的20針IDC接頭排列
附錄G疑難解答
G.1程序不運行/啓動
G.1.1嚮量錶丟失或位置錯誤
G.1.2使用瞭錯誤的C啓動代碼
G.1.3復位嚮量中的值錯誤
G.1.4程序映像沒有被正確地編程到Flash中
G.1.5錯誤的工具鏈配置
G.1.6錯誤的棧指針初始值
G.1.7錯誤的大小端設置
G.2程序啓動,卻進入瞭硬件錯誤
G.2.1非法存儲器訪問
G.2.2非對齊數據訪問
G.2.3存儲器訪問權限(隻限於Cortex�睲0 處理器)
G.2.4從總綫返迴錯誤
G.2.5異常處理中的棧被破壞
G.2.6程序在某些C函數中崩潰
G.2.7意外地試圖切換至ARM狀態
G.2.8在錯誤的優先級上執行SVC
G.3休眠問題
G.3.1執行WFE不進入休眠
G.3.2退齣時休眠過早地引起休眠
G.3.3中斷已經在掛起態時SEVONPEND不工作
G.3.4由於休眠模式可能禁止瞭某些時鍾,處理器無法喚醒
G.3.5競態
G.4中斷問題
G.4.1執行瞭多餘的中斷處理
G.4.2執行瞭多餘的SysTick處理
G.4.3在中斷處理中禁止中斷
G.4.4錯誤的中斷返迴指令
G.4.5異常優先級設置的數值
G.5其他問題
G.5.1錯誤的SVC參數傳遞方法
G.5.2調試連接受到I/O設置或低功耗模式的影響
G.5.3調試協議選擇/配置
G.5.4使用事件輸齣作為脈衝I/O
G.5.5嚮量錶和代碼位置的設備實際需求
G.6其他可能的編程陷阱
G.6.1中斷優先級
G.6.2同時使用主棧和進程棧時的棧溢齣
G.6.3數據對齊
G.6.4丟失volatile關鍵字
G.6.5函數指針
G.6.6讀�殘薷莫殘�
G.6.7中斷禁止
G.6.8SystemInit函數
G.6.9斷點和內聯
附錄HARM Cortex�睲0微控製器麵包闆工程
H.1背景
H.2硬件設計
附錄I參考文檔
作者介紹
Joseph Yiu 英國ARM公司專傢,12年半導體行業從業經曆(在ARM公司工作15年以上)。曾參與多個處理器設計項目,包括ARM Cortex-M3和Cortex-M0,並參與瞭多種ARM IP(知識産權)産品的開發。Joseph Yiu為微控製器係統級設計專傢,並涉獵瞭諸多相關領域,包括ARM Cortex-M係列微控製器軟件開發、微控製器市場以及片上係統設計技術。其他代錶性著作有《The Definitive Guide to the ARM Cortex-M3, 2nd Edition》、《The Definitive Guide to ARM Cortex-M3 and Cortex-M4 Processors, 3rd Edition》(中文翻譯版均由清華大學齣版社齣版發行)。
文摘
序言
這次入手這本《ARM Cortex-M0與Cortex-M0+指南(第2版)》,主要是衝著它在嵌入式開發領域口碑相當不錯的作者 Joseph Yiu,加上又是中文版,看名字吳(作者之一)應該也是國內的專傢,感覺在理解和消化上應該會更順暢些。雖然我個人目前的項目主力並非 Cortex-M0/M0+ 係列,但這個係列憑藉其低功耗和高性價比的特點,在物聯網、傳感器節點以及一些入門級微控製器應用中依然占據著重要的地位。因此,深入瞭解其架構和特性,對於拓寬技術視野、應對未來可能遇到的不同平颱需求,無疑是大有裨益的。這本書的定價也算閤理,對於一本技術專著來說,它的厚度和內容深度似乎預示著物有所值。我尤其期待書中對 M0 和 M0+ 之間關鍵差異的闡述,畢竟 M0+ 在 M0 的基礎上做瞭不少優化,這些細節的對比和分析,對於工程師在實際選型時提供有力的參考。另外,章節的編排和內容的過渡是否自然,會不會因為涉及兩個處理器版本而顯得零散,也是我關注的重點。希望這本書能夠提供清晰的係統框圖、指令集解析以及常用的外設接口應用示例,這樣能讓我在學習過程中更容易將理論與實踐相結閤,畢竟光看理論容易枯燥,而缺少實踐指導的書籍往往難以真正解決實際問題。
評分收到《ARM Cortex-M0與Cortex-M0+指南(第2版)》這本厚實的著作,迫不及待地翻閱。作為一名在嵌入式領域摸爬滾打多年的工程師,我對 Cortex-M 係列處理器並不陌生,但 M0 和 M0+ 因其特殊的定位,總是讓我覺得有些“似曾相識”又“有所保留”,因此一直想找一本權威且深入的讀物來係統梳理。Joseph Yiu 的大名在外,加上國內專傢吳的加盟,讓這本中文版顯得格外親切。書的封麵設計簡潔大方,一看就是硬核技術類的書籍。我尤其好奇書中對於 M0 和 M0+ 在功耗優化、指令集效率、中斷響應機製等方麵具體采用瞭哪些設計策略。對於這些微處理器的深度優化,往往藏著許多玄機,直接影響到其在資源受限場景下的錶現。希望本書能有詳細的圖示和代碼示例,能夠把我從模糊的認知帶入到清晰的理解,甚至能夠舉一反三,觸類旁通。閱讀一本好書,就像與一位經驗豐富的導師對話,能夠快速撥開迷霧,少走彎路。我期待這本書能成為我手中那份最可靠的“兵器譜”,讓我在麵對 Cortex-M0/M0+ 項目時,能夠遊刃有餘,信心十足。
評分我一直關注著 ARM Cortex-M 係列處理器在嵌入式領域的演進,尤其是 Cortex-M0 和 Cortex-M0+ 這兩個麵嚮低功耗和成本優化的核心。這次入手《ARM Cortex-M0與Cortex-M0+指南(第2版)》,是希望能夠更係統、更深入地理解這兩個係列的精髓。Joseph Yiu 的著作在業內享有盛譽,其對 ARM 架構的剖析一直以嚴謹和透徹著稱。再加上中文版由吳參與,我相信它在語言錶達和技術細節的翻譯上能夠做到信達雅,更容易被國內的開發者所接受。我非常期待書中能對 M0 和 M0+ 的微架構進行詳細解讀,例如它們在流水綫設計、指令解碼、寄存器組等方麵的異同,以及這些差異如何體現在性能和功耗上的權衡。此外,對於中斷控製器(NVIC)的配置和中斷嚮量錶的處理,以及低功耗模式的深入分析,也是我非常感興趣的部分。能夠擁有這樣一本指南,可以幫助我在學習和實踐過程中,更準確地把握這兩個處理器的特性,從而在項目開發中做齣更優化的設計選擇,最大化地發揮它們的優勢。
評分收到這本《ARM Cortex-M0與Cortex-M0+指南(第2版)》著實讓我眼前一亮。作為一名經常需要處理嵌入式係統底層開發的工程師,我深知對於像 Cortex-M0 和 Cortex-M0+ 這樣廣泛應用於低成本、低功耗設備的處理器,有一個紮實的理論基礎和詳細的參考手冊是多麼重要。Joseph Yiu 的名聲在外,他編寫的書籍質量一直很高,而這次中文版的齣現,更是讓我不用擔心翻譯的問題。我非常期待書中能對這兩個處理器核心的架構進行細緻的講解,特彆是它們在指令集、中斷處理、內存管理以及與外設接口的交互方麵有哪些精妙的設計。我尤其想瞭解 M0+ 在 M0 的基礎上做瞭哪些改進,這些改進是如何實現的,以及這些改進在實際應用中能帶來哪些好處。這本書的厚度也讓我感覺內容應該會很充實,希望它能提供一些實用的編程技巧和調試方法,幫助我更高效地進行開發。如果能有清晰的框圖和實際的代碼示例,那將是錦上添花。
評分這次入手《ARM Cortex-M0與Cortex-M0+指南(第2版)》,最吸引我的還是其權威的作者陣容。Joseph Yiu 的名字在 Cortex-M 係列書籍中絕對是響當當的招牌,而中文版又加入瞭吳,這對我來說是極大的福音,畢竟能夠用母語來理解如此深入的技術細節,無疑會大大提高學習效率。我一直覺得 M0 和 M0+ 係列是 ARM 傢族中極具性價比和市場覆蓋率的代錶,尤其是在物聯網和消費電子領域,它們的應用無處不在。因此,掌握這兩個係列的深入知識,對於任何一個嵌入式開發者來說都是一項重要的技能。我非常期待書中能夠詳細闡述 M0 和 M0+ 在指令集架構(ISA)、執行單元、功耗管理單元以及總綫接口等方麵的具體實現和區彆。對於中斷處理流程、調試接口(如 SWD)的使用,以及如何優化代碼以達到最佳性能和最低功耗,這些都是我迫切希望從書中找到答案的。一本優秀的指南,應該能夠幫助讀者建立起清晰的認知框架,並提供解決實際問題的能力,我對此書抱有很高的期望。
本站所有內容均為互聯網搜尋引擎提供的公開搜索信息,本站不存儲任何數據與內容,任何內容與數據均與本站無關,如有需要請聯繫相關搜索引擎包括但不限於百度,google,bing,sogou 等
© 2025 book.cndgn.com All Rights Reserved. 新城书站 版權所有