ARM Cortex-M0與Cortex-M0+指南(第2版) Jsoseph Yiu,吳

ARM Cortex-M0與Cortex-M0+指南(第2版) Jsoseph Yiu,吳 pdf epub mobi txt 電子書 下載 2025

Jsoseph Yiu,吳常玉 張淑 吳衛東 著
圖書標籤:
  • ARM
  • Cortex-M0
  • Cortex-M0+
  • 嵌入式係統
  • 單片機
  • C語言
  • 編程
  • 指南
  • 開發
  • 微控製器
  • Jsoseph Yiu
想要找書就要到 新城書站
立刻按 ctrl+D收藏本頁
你會得到大驚喜!!
店鋪: 讀者科技圖書專營店
齣版社: 清華大學齣版社
ISBN:9787302473312
商品編碼:29701043010
包裝:平裝-膠訂
齣版時間:2018-01-01

具體描述

基本信息

書名: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+架構與編程實戰 在物聯網(IoT)、嵌入式設備和低功耗應用日益普及的今天,掌握一款高效、低功耗的微控製器核心至關重要。ARM Cortex-M0和Cortex-M0+處理器傢族,以其卓越的性能、極低的功耗和精巧的架構,成為瞭嵌入式領域炙手可熱的選擇。本書旨在為開發者提供一套全麵、深入的學習指南,從核心架構到實際應用,逐層解析Cortex-M0和Cortex-M0+的精髓,助力讀者掌握其精湛技藝,構建更加智能、高效的嵌入式係統。 內容概覽: 本書內容涵蓋瞭ARM Cortex-M0和Cortex-M0+處理器設計的方方麵麵,從底層的指令集、寄存器,到上層的中斷處理、內存管理,再到實際的編程技巧和開發流程。我們將循序漸進,由淺入深,確保讀者能夠建立起紮實的理論基礎,並將其應用於實際的項目開發中。 第一部分:ARM Cortex-M處理器傢族概覽 嵌入式處理器的演進之路: 簡要迴顧嵌入式處理器技術的發展曆程,引齣ARM架構在其中的重要地位。 ARM Cortex-M係列傢族: 介紹ARM Cortex-M係列處理器(包括M0, M0+, M3, M4, M7等)的定位、特點及其在不同應用領域的優勢。重點闡述Cortex-M0和Cortex-M0+作為入門級高性能核心的獨特魅力。 Cortex-M0與Cortex-M0+的定位與差異: 詳細對比Cortex-M0和Cortex-M0+在功耗、性能、指令集、內存訪問等方麵的主要區彆,幫助讀者根據實際需求選擇最適閤的處理器。例如,Cortex-M0+在功耗優化方麵做得更為極緻,而Cortex-M0則提供瞭更廣泛的應用範圍。 第二部分:Cortex-M0/M0+處理器架構詳解 ARMv6-M架構: 深入解析Cortex-M0/M0+所采用的ARMv6-M架構,這是其高效、低功耗特性的基石。 指令集架構(ISA): Thumb指令集: 重點講解Cortex-M0/M0+所支持的Thumb指令集,包括其16位和32位指令的特點、編碼方式以及與傳統ARM指令集的主要區彆。 常用指令剖析: 詳細解讀數據處理指令、跳轉指令、分支指令、內存訪問指令、狀態寄存器訪問指令等,並提供實際示例。 Cortex-M0+新增指令與優化: 針對Cortex-M0+,介紹其在指令集上針對功耗和性能的進一步優化,例如一些單周期指令和更高效的內存訪問機製。 寄存器模型: 通用寄存器: 詳細說明R0-R12通用寄存器的作用和使用方式。 堆棧指針(SP): 深入理解MSP(主堆棧指針)和PSP(進程堆棧指針)的概念及其切換機製,這對於理解函數調用和中斷處理至關重要。 鏈接寄存器(LR): 講解LR寄存器在函數返迴和中斷返迴中的作用。 程序計數器(PC): 解釋PC寄存器如何指示下一條將要執行的指令。 特殊功能寄存器(SFRs): 介紹包括狀態寄存器(xPSR)、NVIC(嵌套嚮量中斷控製器)、SCB(係統控製塊)、SysTick定時器等在內的核心控製和狀態寄存器,並詳細說明它們的功能。 內存模型與總綫接口: 內存映射: 理解Cortex-M0/M0+的內存空間劃分,包括閃存、RAM、外設寄存器等。 AHB-Lite總綫接口: 講解AHB-Lite總綫接口的工作原理,以及它如何與外設進行高效的數據傳輸。 位帶操作(Bit-banding): (如果目標處理器支持)介紹位帶操作的概念及其在高效修改單個比特位時的優勢。 第三部分:中斷與異常處理 中斷與異常的概念: 區分中斷和異常,理解其觸發機製和執行流程。 嵌套嚮量中斷控製器(NVIC): NVIC架構: 詳細介紹NVIC的結構、功能、中斷使能、優先級配置、中斷分組等。 中斷嚮量錶: 理解中斷嚮量錶的概念,以及如何解析中斷嚮量。 中斷優先級: 講解中斷優先級設置的重要性,以及多級中斷嵌套的處理方式。 中斷延遲: 分析影響中斷延遲的因素,並給齣優化建議。 異常處理流程: 詳細描述從異常發生到異常服務程序執行,再到異常返迴的完整流程,包括寄存器的自動保存與恢復。 係統異常: 介紹如NMI(不可屏蔽中斷)、HardFault(硬錯誤)、MemManage(內存管理錯誤)、BusFault(總綫錯誤)等係統異常的産生原因、處理方式和調試方法。 SysTick 定時器: 深入解析SysTick定時器的功能,包括其作為係統時鍾源、定時器以及實現 RTOS(實時操作係統)的基石作用。 第四部分:低功耗設計與優化 Cortex-M0/M0+的低功耗特性: 闡述Cortex-M0/M0+在設計之初就融入的低功耗理念,例如精簡指令集、單周期執行、更小的核心麵積等。 工作模式與功耗管理: 運行模式(Run Mode): 介紹處理器在正常運行時的功耗。 休眠模式(Sleep Mode): 詳細講解不同級彆的休眠模式(Sleep, Deep Sleep等),以及如何通過中斷喚醒。 待機模式(Standby Mode): (如果目標處理器支持)介紹更深層次的功耗節省模式。 功耗優化策略: 時鍾門控(Clock Gating): 介紹如何通過關閉不使用的時鍾源來降低功耗。 電源門控(Power Gating): (如果硬件支持)講解如何關閉不使用的模塊的電源。 指令優化: 通過使用更高效的指令和算法來減少CPU的執行時間,從而降低功耗。 外設功耗管理: 介紹如何針對外設進行功耗優化,例如關閉不使用的外設,或者將其配置到低功耗模式。 功耗分析工具與方法: (簡要介紹)提及一些常用的功耗分析工具和測量方法,幫助讀者量化和優化係統的功耗。 第五部分:內存管理與數據訪問 內存布局與分配: 詳細討論程序在內存中的分布,包括代碼段(.text)、數據段(.data, .bss)、堆(heap)和棧(stack)。 數據類型與對齊: 講解Cortex-M0/M0+對數據類型的處理方式,以及數據對齊的重要性,錯誤的對齊可能導緻總綫錯誤。 指針與內存訪問: 深入理解指針的概念,以及通過指針進行高效、安全的內存訪問。 內存保護單元(MPU): (如果目標處理器支持)介紹MPU的功能,包括區域劃分、訪問權限設置,以及在嵌入式操作係統和多任務環境中的應用。 第六部分:實際開發與調試技巧 開發環境搭建: 集成開發環境(IDE): 介紹主流的嵌入式開發IDE,如Keil MDK, IAR Embedded Workbench, STM32CubeIDE等,以及它們在Cortex-M0/M0+開發中的使用。 交叉編譯工具鏈: 講解GCC ARM Embedded Toolchain等交叉編譯器的使用。 編寫高效的C/C++代碼: 內聯匯編: 介紹何時以及如何使用內聯匯編來優化關鍵代碼段,實現更精細化的控製。 編譯器優化選項: 講解不同的編譯器優化級彆及其對代碼性能和大小的影響。 代碼結構與可讀性: 強調編寫清晰、模塊化代碼的重要性。 調試技術: 斷點與單步執行: 掌握在IDE中設置斷點、單步執行代碼、查看變量值等基本調試技巧。 內存查看器與寄存器查看器: 學習使用內存查看器和寄存器查看器來分析程序運行時的狀態。 邏輯分析儀與示波器: (簡要提及)介紹使用硬件調試工具來分析信號和時序。 代碼覆蓋率與性能分析: (簡要提及)介紹如何分析代碼的執行效率。 固件更新與升級: Bootloader設計: 介紹Bootloader的作用和基本設計思路,實現固件的遠程更新。 OTA(Over-The-Air)更新: (可選)提及無綫固件更新的概念。 第七部分:典型應用場景與項目實踐 傳感器數據采集與處理: 結閤實際傳感器(如溫度、濕度、加速度計等),演示如何通過GPIO、ADC等外設讀取數據,並進行簡單處理。 通信協議實現: UART通信: 實現串行通信,與其他設備進行數據交換。 I2C/SPI通信: 與其他外設(如EEPROM、顯示屏、傳感器等)進行通信。 低功耗藍牙(BLE): (如果適用)介紹如何利用Cortex-M0/M0+實現BLE通信。 實時操作係統(RTOS)應用: 介紹RTOS(如FreeRTOS, Zephyr等)的基本概念,以及如何在Cortex-M0/M0+上運行RTOS,實現多任務並發。 物聯網節點開發: 結閤實際項目,演示如何構建一個簡單的物聯網傳感器節點,實現數據采集、發送和低功耗管理。 電源管理係統: (可選)設計一個簡單的電源管理模塊,實現高效的電源切換和監控。 本書特點: 理論與實踐相結閤: 不僅深入解析Cortex-M0/M0+的底層架構,更注重實際編程應用,提供豐富的代碼示例和項目實踐。 麵嚮廣泛讀者: 無論您是初學者還是有一定經驗的嵌入式開發者,本書都能為您提供有價值的學習內容。 清晰易懂的語言: 采用通俗易懂的語言,配閤大量的圖示和錶格,幫助讀者輕鬆掌握復雜的技術概念。 關注實際問題: 針對嵌入式開發中常見的難題,如功耗優化、中斷處理、實時性要求等,提供切實可行的解決方案。 目標讀者: 嵌入式係統工程師 物聯網開發者 硬件設計工程師 計算機科學與電子工程專業的學生 對低功耗、高性能嵌入式微控製器感興趣的愛好者 通過本書的學習,您將能夠深刻理解ARM Cortex-M0和Cortex-M0+處理器的強大之處,掌握其核心指令集和架構,並能熟練運用各種開發工具和技術,自信地設計、開發和調試各種嵌入式係統,為您的項目注入更強的生命力。

用戶評價

評分

這次入手這本《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. 新城书站 版權所有