ARM Cortex-M0與Cortex-M0+指南(第2版)

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

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

具體描述

基本信息

書名:ARM Cortex-M0與Cortex-M0+指南(第2版)

定價:128.00元

售價:125.4元,便宜2.6元,摺扣97

作者: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》(中文翻譯版均由清華大學齣版社齣版發行)。

文摘






序言



嵌入式係統設計與開發實用手冊:基於主流微控製器平颱的實踐指南 本書旨在為電子工程、嵌入式係統開發及相關專業領域的工程師、技術人員和學生提供一本全麵、深入且高度實用的技術參考與實踐指南。 本書著眼於當前工業界和學術界廣泛應用的幾類主流32位微控製器(MCU)架構,重點剖析其硬件特性、軟件開發流程、底層驅動實現以及高級應用技術,幫助讀者快速掌握從概念到實際産品的完整開發鏈條。 第一部分:微控製器基礎架構與選型策略 本部分首先係統地介紹瞭現代嵌入式係統的基本構成要素,包括微處理器核心、存儲器層次結構、各種片上外設(如定時器、ADC/DAC、通信接口)的工作原理。我們將深入探討不同係列微控製器的體係結構差異,例如,針對低功耗物聯網(IoT)應用的MCU與麵嚮高性能控製領域的MCU在指令集特性、能效比和內存布局上的設計哲學區彆。 1.1 32位MCU核心架構概述: 詳細解析RISC架構的基本原理,探討主流指令集(如ARM Cortex-M係列以外的某些架構)的特點,包括流水綫、分支預測機製對代碼執行效率的影響。 1.2 存儲器係統深度解析: 區分SRAM、Flash(NOR/NAND)、EEPROM等存儲介質的特性、讀寫時序要求以及在嵌入式應用中的最佳使用場景。重點講解程序存儲器(Code Flash)的保護機製與固件更新(OTA)的底層存儲管理策略。 1.3 關鍵片上外設的硬件原理: 定時器/計數器模塊: 不僅限於基礎的定時功能,更深入講解PWM生成的高級模式、輸入捕獲、看門狗定時器(WDT)的配置與復位策略。 模數/數模轉換器(ADC/DAC): 涵蓋采樣定理、量化誤差、多通道掃描模式、DMA輔助下的高速數據采集,以及校準技術的實踐應用。 通信接口詳解: 詳述UART/USART、SPI、I2C等串行通信協議的電氣特性、握手機製和錯誤處理流程,並輔以總綫仲裁和多主/多從配置的實例分析。 1.4 MCU選型與功耗優化: 提供一套係統的MCU選型決策框架,評估芯片的性能指標(DMIPS/MHz)、實時性(中斷延遲)、內存容量與成本的平衡點。針對電池供電設備,深入探討不同睡眠模式(Sleep, Stop, Standby)的功耗特性、喚醒源管理以及實時時鍾(RTC)的精度保持技術。 第二部分:嵌入式軟件開發環境與工具鏈 本部分聚焦於高效的軟件開發實踐,涵蓋從編譯、鏈接到調試的完整流程。 2.1 交叉編譯工具鏈的配置與使用: 詳細指導如何搭建和配置GNU工具鏈(GCC)用於特定的目標架構,包括編譯選項的優化、鏈接腳本(Linker Script)的定製化編寫,以精確控製代碼和數據在目標硬件上的內存布局。 2.2 啓動代碼與初始化序列: 剖析MCU上電復位後的執行流程。重點講解啓動代碼(Startup Code)的作用,包括設置堆棧指針、初始化數據段(.data和.bss)、配置時鍾係統和初始化內存映射寄存器。 2.3 驅動程序開發與抽象層設計: 闡述如何編寫健壯、可移植的底層硬件驅動。采用寄存器直接操作法與庫函數封裝法的對比分析,推薦HAL(硬件抽象層)的設計模式,以確保驅動代碼能夠在不同型號的MCU之間輕鬆移植。 2.4 調試與性能分析技術: 介紹使用JTAG/SWD接口進行硬件調試的關鍵步驟,包括斷點設置、內存/寄存器觀察、單步執行。重點講解軟件調試工具(如GDB)的高級用法,以及利用邏輯分析儀或示波器對時序和信號完整性進行驗證的方法。 第三部分:實時操作係統(RTOS)在嵌入式係統中的應用 對於需要復雜任務調度的嵌入式應用,RTOS是不可或缺的中間件。本部分將以主流的輕量級RTOS為例,講解其核心機製和實踐應用。 3.1 RTOS核心機製詳解: 深入講解任務管理(Task Control Block, TCB)、上下文切換(Context Switching)的實現細節、任務狀態轉換圖及調度算法(如固定優先級、輪轉等)。 3.2 進程間通信(IPC)與同步機製: 詳細介紹信號量(Semaphore)、互斥鎖(Mutex)、消息隊列(Message Queue)、事件組(Event Group)等IPC原語的工作原理、正確使用場景及潛在的死鎖(Deadlock)預防措施。 3.3 實時性與確定性保證: 探討中斷服務程序(ISR)的設計規範,如何確保ISR對係統的影響最小化,避免長時間占用CPU,從而保證關鍵任務的實時性需求。分析優先級反轉問題及其解決方案(如優先級繼承協議)。 第四部分:高級係統集成與應用實例 本部分將理論與實踐相結閤,通過具體的應用場景展示如何集成復雜功能。 4.1 DMA控製器的高效數據傳輸: 闡述直接內存訪問(DMA)的工作模式(循環、單次),通道配置的技巧,以及如何利用DMA機製卸載CPU負擔,實現高速數據流(如音頻或圖像數據)的處理。 4.2 嵌入式網絡通信協議棧: 介紹TCP/IP協議棧在資源受限設備上的移植與優化,重點講解輕量級網絡庫(如LwIP)的配置、網絡接口驅動的編寫,以及MQTT等IoT協議在設備端的實現要點。 4.3 嵌入式文件係統與存儲管理: 探討在非易失性存儲器上實現文件管理的需求,介紹FATFS、LittleFS等嵌入式文件係統的結構、初始化、讀寫操作的原子性保證,以及磨損均衡(Wear Leveling)技術對Flash壽命的意義。 4.4 嵌入式安全基礎: 介紹嵌入式係統麵臨的基本安全威脅,包括固件篡改和數據泄露。討論代碼保護技術,如代碼加密、安全啓動(Secure Boot)的簡化流程,以及硬件加密加速器的初步使用方法。 本書的編寫風格側重於工程實踐和底層細節,通過大量的代碼示例、寄存器配置對照錶和實測數據圖,確保讀者能夠將所學知識直接應用於實際的嵌入式産品開發項目中。

用戶評價

評分

這本書的齣現,無疑為我這個正在攻剋嵌入式係統難題的研究生提供瞭極大的幫助。我一直深耕於嵌入式底層開發,對CPU架構有著濃厚的興趣。ARM Cortex-M0和M0+雖然入門門檻相對較低,但要真正理解其內部工作機製,並進行高效的優化,依然需要一本高質量的參考書。這本書的“指南”性質,讓我相信它能夠提供係統性的指導,而“第2版”的更新,則意味著其內容的時效性。我特彆關注書中關於指令集架構(ISA)的詳細闡述,以及與匯編語言的結閤,這對於理解CPU是如何執行指令至關重要。同時,我對書中關於調試技術和性能分析的章節充滿瞭期待,希望能夠學習到如何有效地定位和解決代碼中的問題,並提升程序的運行效率。書中如果有關於實時操作係統(RTOS)在Cortex-M0/M0+平颱上應用的介紹,那將是極大的驚喜,能夠幫助我更好地進行復雜係統的開發。

評分

這本書的封麵設計就足夠吸引我瞭,簡潔大氣的風格,配閤書名中“ARM Cortex-M0與Cortex-M0+指南(第2版)”的字樣,預示著這是一本深入淺齣的技術著作。我是一名剛剛接觸嵌入式開發不久的學生,對於各種微控製器架構感到有些迷茫,尤其是M0和M0+這兩款在低功耗和成本敏感領域非常流行的處理器。我一直在尋找一本能夠係統性地介紹它們核心概念、指令集、寄存器模型以及外設接口的權威指南,並且能夠提供實際開發指導的書籍。這本書的“指南”二字,讓我對其內容充滿瞭期待,希望它能像一位經驗豐富的老朋友一樣,一步步帶領我解開Cortex-M0/M0+的奧秘。我對書中關於功耗管理和中斷處理的部分尤為感興趣,因為這對於嵌入式係統至關重要。同時,如果書中包含一些實際的例程或者項目演示,那將是錦上添花,能夠幫助我更好地理解理論知識,並將其應用到實際開發中。我對第二版的信息也感到很欣慰,這意味著它應該包含瞭最新的技術發展和修正,能夠讓我學習到更具前瞻性的內容。

評分

在收到這本書的那一刻,我迫不及待地翻開瞭它。書的紙張觸感很好,印刷清晰,排版也非常閤理,閱讀起來非常舒服。作為一名多年從事嵌入式係統開發的工程師,我一直關注著ARM Cortex-M係列處理器,特彆是M0和M0+在物聯網和消費電子領域的廣泛應用。我手頭已經有一些相關的資料,但是始終覺得缺少一本能夠將這些零散的知識點係統梳理,並且深入剖析其設計哲學和精髓的著作。這本書的書名“指南”讓我看到瞭這種可能性,我希望它能夠不僅僅停留在基礎概念的介紹,更能夠深入到架構的細節,比如其指令流水綫、總綫接口、以及與其他IP核的集成方式。我尤其希望書中能夠對Cortex-M0和Cortex-M0+在性能、功耗和成本上的權衡進行詳細的分析,並給齣如何根據具體應用場景選擇閤適處理器的建議。如果書中能夠包含一些對實際芯片(例如STM32F0或LPC800係列)的深度解析,並與通用架構進行對比,那就更有價值瞭。

評分

作為一名電子工程專業的學生,我對微控製器和嵌入式係統的學習從未停止過。ARM Cortex-M0和M0+憑藉其齣色的性價比和低功耗特性,成為許多教學和實際項目中的首選。這本書《ARM Cortex-M0與Cortex-M0+指南(第2版)》恰好填補瞭我在這方麵的知識空白。我希望書中能夠清晰地解釋M0和M0+之間的主要區彆和聯係,幫助我理解它們的演進過程。我對書中關於處理器內核的詳細介紹充滿好奇,例如它的流水綫結構、中斷控製器以及它如何與外部世界交互。此外,我希望書中能夠提供實用的編程技巧和代碼示例,幫助我快速上手,並掌握在Cortex-M0/M0+平颱上進行嵌入式開發的要領。書中對存儲器映射、GPIO配置以及UART、SPI等常用外設接口的講解,如果能夠詳細且易懂,將對我非常有價值。

評分

我是一位對低功耗嵌入式係統充滿熱情的愛好者,一直關注著ARM Cortex-M0和M0+處理器。它們以其卓越的能效比和成本優勢,在電池供電設備、傳感器節點等領域占據著舉足輕重的地位。當我看到這本書《ARM Cortex-M0與Cortex-M0+指南(第2版)》時,我立刻被它吸引住瞭。我非常期待這本書能夠深入淺齣地講解M0/M0+處理器的核心架構,包括它們的指令集、寄存器、以及內存管理單元。更重要的是,我希望它能提供詳細的功耗優化技巧和中斷處理機製的解析,因為這對於我開發低功耗設備至關重要。我對書中關於開發工具鏈的介紹也抱有很大的期望,希望能瞭解如何在各種IDE和調試器下高效地進行開發。此外,如果書中能包含一些關於實際應用案例的剖析,例如智能傢居、可穿戴設備等,那就太棒瞭,能夠讓我更好地將理論知識轉化為實踐。

相關圖書

本站所有內容均為互聯網搜尋引擎提供的公開搜索信息,本站不存儲任何數據與內容,任何內容與數據均與本站無關,如有需要請聯繫相關搜索引擎包括但不限於百度google,bing,sogou

© 2025 book.coffeedeals.club All Rights Reserved. 靜流書站 版權所有