ARM Cortex-M0 全可編程SoC原理及實現:麵嚮處理器、協議、外設、編程和操作係統

ARM Cortex-M0 全可編程SoC原理及實現:麵嚮處理器、協議、外設、編程和操作係統 pdf epub mobi txt 電子書 下載 2025

何賓 著
圖書標籤:
  • ARM Cortex-M0
  • 嵌入式係統
  • SoC
  • 處理器
  • 協議
  • 外設
  • 編程
  • 操作係統
  • 單片機
  • 硬件設計
想要找書就要到 新城書站
立刻按 ctrl+D收藏本頁
你會得到大驚喜!!
齣版社: 清華大學齣版社
ISBN:9787302457329
版次:1
商品編碼:12142420
包裝:平裝
開本:16開
齣版時間:2017-02-01
用紙:膠版紙
頁數:479
字數:783000
正文語種:中文

具體描述

編輯推薦

  1. 知識融閤 將ARM公司開源的Cortex-M0 IP用於典型嵌入式係統設計,內容涵蓋瞭處理器架構、指令集、匯編語言、協議、接口、C語言、操作係統等方麵的知識。   2. 深入分析 在本書中,通過Xilinx 7係列現場可編程門陣列(FPGA)實現Cortex-M0嵌入式係統硬件設計;通過Keil μVision5集成開發環境,實現軟件程序設計。此外,通過軟件和硬件開發工具提供的仿真、調試和跟蹤功能,深度分析瞭處理器內部架構、處理器與存儲器和外設之間的通信機製,以及軟件和硬件協同設計方法。   3. 知識*威 在編寫本書的過程中,ARM公司課程開發團隊提供瞭大量的教學參考資料,包括設計案例、教學課件以及技術文檔等。使得本書能從硬件和軟件兩個方麵準確反映Cortex-M0嵌入式係統的設計和實現方法。   4. 實例豐富 提供瞭Cortex-M0典型應用的設計案例、設計代碼和參考資料,便於讀者自學,快速動手實踐。

內容簡介

  《ARM Cortex-M0 全可編程SoC原理及實現:麵嚮處理器、協議、外設、編程和操作係統》以ARM公司免費開放的Cortex�睲0 DesignStart處理器 IP核為基礎,以Cortex�睲0處理器架構、AMBA規範、外設、匯編語言、C語言、CMSIS、驅動程序開發以及RTX操作係統為主綫,詳細介紹瞭通過Xilinx Vivado以及Keil μVision5集成開發環境構建Cortex�睲0全可編程嵌入式係統的硬件和軟件設計方法。

  全書共分18章,主要內容包括: 全可編程SoC設計導論、Cortex�睲0 CPU結構、Cortex�睲0指令集、Cortex�睲0低功耗特性、AHB�睱ite總綫結構分析、Cortex�睲0匯編語言編程基礎、Cortex�睲0 DesignStart架構、Xilinx Artix��7 FPGA結構、Cortex�睲0嵌入式係統設計與實現、7段數碼管控製器設計與實現、中斷係統設計與實現、定時器設計與實現、UART串口控製器設計與實現、VGA控製器設計與實現、DDR3存儲器係統設計與實現、Cortex�睲0 C語言編程基礎、CMSIS和驅動程序開發、RTX操作係統原理及應用。

  本書可作為講授ARM Cortex�睲0嵌入式係統課程以及Cortex�睲0可編程SoC係統設計課程的教學參考用書,也可作為學習Xilinx Vivado集成開發環境和Verilog HDL語言的參考用書。


作者簡介

  何賓,著名的嵌入式技術和EDA技術專傢,長期從事電子設計自動化方麵的教學和科研工作,與全球多傢知名的半導體廠商和EDA工具廠商大學計劃保持緊密閤作。目前已經齣版嵌入式和EDA方麵的著作30餘部,內容涵蓋電路仿真、電路設計、可編程邏輯器件、數字信號處理、單片機、嵌入式係統、片上可編程係統等。典型的代錶作有《Xilinx FPGA設計*威指南》《Xilinx FPGA數字設計——從門級到行為級的雙重描述》《Xilinx FPGA數字信號處理*威指南——從HDL、模型到C的描述》《Xilinx All Programmable Zynq-7000 嵌入式係統設計與實現》《模擬與數字係統協同設計*威指南——Cypress集成開發環境》《STC單片機原理及應用》《STC單片機C語言程序設計》《Altium Designer 13.0電路設計、仿真與驗證*威指南》《Altium Designer 15.0電路仿真、設計、驗證與工藝實現*威指南》。

內頁插圖

目錄

第1章全可編程SoC設計導論

1.1SoC基礎知識

1.1.1SoC的概念

1.1.2SoC與MCU及CPU的比較

1.1.3典型的商用SoC器件

1.2SoC設計流程

1.3SoC體係架構

1.4全可編程SoC技術

1.4.1基於軟核的全可編程SoC

1.4.2基於硬核的全可編程SoC

1.5全可編程SoC設計流程

第2章Cortex�睲0 CPU結構

2.1ARM處理器類型

2.2Cortex�睲係列處理器概述

2.2.1Cortex�睲係列處理器的特點

2.2.2Cortex�睲係列處理器的性能參數

2.3Cortex�睲0處理器性能和結構

2.3.1Cortex�睲0處理器的性能

2.3.2Cortex�睲0處理器的結構

2.4Cortex�睲0處理器寄存器組

2.4.1通用寄存器

2.4.2堆棧指針

2.4.3程序計數器

2.4.4鏈接寄存器

2.4.5組閤程序狀態寄存器

2.4.6中斷屏蔽特殊寄存器

2.4.7特殊寄存器

2.5Cortex�睲0存儲器空間映射

2.6Cortex�睲0程序鏡像原理及生成方法

2.7Cortex�睲0的端及分配

2.8Cortex�睲0處理器異常及處理

2.8.1異常原理

2.8.2異常優先級

2.8.3嚮量錶

2.8.4異常類型

第3章Cortex�睲0指令集

3.1Thumb指令集

3.2Cortex�睲0匯編語言格式

3.3寄存器訪問指令: MOVE

3.4存儲器訪問指令: LOAD

3.5存儲器訪問指令: STORE

3.6多數據訪問指令: LDM和STM

3.7堆棧訪問指令: PUSH和POP

3.8算術運算指令

3.8.1加法指令

3.8.2減法指令

3.8.3乘法指令

3.8.4比較指令

3.9邏輯操作指令

3.10移位操作指令

3.10.1右移指令

3.10.2左移指令

3.11反序操作指令

3.12擴展操作指令

3.13程序流控製指令

3.14存儲器屏蔽指令

3.15異常相關指令

3.16休眠相關指令

3.17其他指令

3.18數據插入和對齊操作

第4章Cortex�睲0低功耗特性

4.1低功耗要求

4.2Cortex�睲0低功耗特性及優勢

4.2.1Cortex�睲0低功耗特性

4.2.2Cortex�睲0低功耗結構

4.3Cortex�睲0休眠模式

4.4喚醒中斷控製器

4.5降低功耗的其他方法

第5章AHB�睱ite總綫結構分析

5.1總綫及分類

5.1.1總綫的概念

5.1.2總綫分類

5.2ARM AMBA係統總綫

5.3AMBA3 AHB�睱ite總綫

5.3.1AHB�睱ite概述

5.3.2AHB�睱ite總綫操作

5.4AHB�睱ite總綫結構

5.4.1全局信號

5.4.2AHB�睱ite主設備接口

5.4.3AHB�睱ite從設備接口

5.4.4地址譯碼器和多路復用器

5.5AHB�睱ite總綫時序

5.5.1無等待基本讀傳輸

5.5.2有等待基本讀傳輸

5.5.3無等待基本寫傳輸

5.5.4有等待基本寫傳輸

5.6硬件實現

第6章Cortex�睲0匯編語言編程基礎

6.1Keil MDK開發套件

6.1.1下載MDK開發套件

6.1.2安裝MDK開發套件

6.1.3MDK程序處理流程

6.2Cortex�睲0匯編語言程序設計

6.2.1建立新設計工程

6.2.2工程參數設置

6.2.3添加匯編文件

6.2.4匯編語言語法

6.3.lst文件分析

6.4.map文件分析

6.5.hex文件分析

6.6軟件仿真和調試

6.6.1查看Cortex�睲0寄存器內容

6.6.2查看Cortex�睲0存儲器內容

6.6.3查看監視窗口的內容

6.7匯編語言其他常用語法介紹

6.7.1標識符的命名規則

6.7.2變量

6.7.3常數

6.7.4EQU命令

6.7.5IMPORT/EXTERN命令

6.7.6子程序調用

6.7.7宏定義和使用

第7章Cortex�睲0 DesignStart架構

7.1獲取Cortex�睲0 DesignStart

7.2Cortex�睲0 DesignStart頂層符號

7.2.1中斷

7.2.2狀態輸齣

7.2.3事件信號

7.3AHB�睱ite接口

7.4將Cortex�睲0 DesignStart集成到係統的方法

第8章XILINX Artix��7 FPGA結構

8.1Artix��7器件邏輯資源

8.2可配置邏輯塊

8.2.1可配置邏輯塊概述

8.2.2查找錶

8.2.3多路復用器

8.2.4進位邏輯

8.2.5存儲元素

8.2.6分布式RAM(隻有SLICEM)

8.2.7隻讀存儲器(ROM)

8.2.8移位寄存器(隻有SLICEM)

8.3時鍾資源和時鍾管理單元

8.3.17係列FPGA時鍾資源

8.3.27係列內部時鍾結構

8.3.37係列FPGA時鍾管理模塊

8.4塊存儲器資源

8.5專用的DSP模塊

8.6輸入/輸齣塊

8.6.1I/O特性概述

8.6.2Artix��7中的I/O列和類型

8.6.3I/O電氣資源

8.6.4I/O邏輯資源

8.7XADC模塊

8.8吉比特收發器

8.9PCI�睧模塊

8.10配置模塊

8.11互連資源

第9章Cortex�睲0嵌入式係統設計與實現

9.1設計目標

9.2Cortex�睲0 SoC係統的構建

9.2.1啓動Vivado 2016集成開發環境

9.2.2創建新的設計工程

9.2.3添加Cortex�睲0處理器源文件

9.2.4添加係統主時鍾IP核

9.3設計文件修改和分析

9.3.1AHB總綫地址譯碼器

9.3.2AHB總綫從設備多路復用器

9.3.3AHB片上存儲器外設

9.3.4AHB LED外設

9.3.5AHBLITE_SYS頂層文件

9.4程序代碼的編寫

9.4.1建立新設計工程

9.4.2工程參數設置

9.4.3添加和編譯匯編文件

9.4.4分析HEX文件與匯編文件的關係

9.4.5添加HEX文件到當前工程

9.5RTL詳細描述和分析

9.6仿真原理和行為級仿真

9.6.1仿真實現的不同功能

9.6.2Vivado所支持的仿真工具

9.6.3行為級仿真實現

9.6.4添加信號並仿真

9.6.5仿真結果分析

9.7設計綜閤和分析

9.7.1綜閤過程的關鍵問題

9.7.2設計綜閤選項

9.7.3Vivado支持的屬性

9.7.4執行設計綜閤

9.7.5查看綜閤報告

9.8創建實現約束

9.8.1實現約束的原理

9.8.2I/O規劃器功能

9.8.3引腳位置約束的實現

9.9設計實現和分析

9.9.1實現過程原理

9.9.2設計實現選項

9.9.3設計實現

9.9.4查看布局布綫後的結果

9.9.5查看實現後的報告

9.9.6功耗分析

9.9.7靜態時序分析

9.10實現後時序仿真

9.11生成編程文件

9.12下載比特流文件到FPGA

9.13生成並下載外部存儲器文件

第10章7段數碼管控製器設計與實現

10.1設計目標

10.2打開前麵的設計工程

10.3添加並分析7段數碼管控製器源文件

10.3.1添加7段數碼管控製器源文件

10.3.2分析7段數碼管控製器源文件

10.4修改並分析頂層設計文件

10.5編寫程序代碼

10.5.1建立新設計工程

10.5.2工程參數設置

10.5.3添加和編譯匯編文件

10.5.4添加HEX文件到當前工程

10.6設計綜閤

10.7添加約束條件

10.8設計實現

10.9下載比特流文件

10.10係統在綫調試原理

10.11係統在綫調試實現

10.11.1建立新的調試工程

10.11.2添加調試網絡

10.11.3在綫測試分析

第11章中斷係統設計與實現

11.1設計目標

11.2中斷控製器原理

11.2.1NVIC特點

11.2.2NVIC映射

11.2.3NVIC寄存器

11.3進入和退齣異常句柄的過程

11.3.1進入中斷句柄的過程

11.3.2退齣中斷句柄的過程

11.4打開前麵的設計工程

11.5添加並分析按鍵消抖模塊源文件

11.5.1添加按鍵消抖模塊源文件

11.5.2分析按鍵消抖模塊源文件

11.6修改並分析頂層設計文件

11.7編寫程序代碼

11.7.1建立新設計工程

11.7.2工程參數設置

11.7.3軟件初始化中斷

11.7.4添加和編譯匯編文件

11.7.5添加HEX文件到當前工程

11.8設計綜閤

11.9添加約束條件

11.10設計實現

11.11下載比特流文件

第12章定時器設計與實現

12.1設計目標

12.2打開前麵的設計工程

12.3添加並分析定時器模塊源文件

12.3.1定時器模塊設計原理

12.3.2添加定時器源文件

12.3.3分析定時器源文件

12.4修改並分析頂層設計文件

12.5編寫程序代碼

12.5.1建立新設計工程

12.5.2工程參數設置

12.5.3添加和編譯匯編文件

12.5.4添加HEX文件到當前工程

12.6設計綜閤

12.7設計實現

12.8下載比特流文件

第13章UART串口控製器設計與實現

13.1設計目標

13.2串行通信基礎

13.2.1串行和並行通信之間的比較

13.2.2串行通信的類型

13.3通用異步收發數據格式和編碼

13.3.1數據格式

13.3.2字符編碼規則

13.4UART串口控製器的實現原理

13.4.1UART發送器

13.4.2UART接收器

13.4.3發送器/接收器FIFO

13.5打開前麵的設計工程

13.6添加並分析UART模塊源文件

13.6.1添加UART模塊源文件

13.6.2分析UART模塊源文件

13.7修改並分析頂層設計文件

13.8編寫程序代碼

13.8.1建立新設計工程

13.8.2工程參數設置

13.8.3添加和編譯匯編文件

13.8.4添加HEX文件到當前工程

13.9設計綜閤

13.10添加約束條件

13.11設計實現

13.12下載比特流文件

第14章VGA控製器設計與實現

14.1設計目標

14.2VGA工作原理

14.2.1VGA連接器

14.2.2CRT原理

14.2.3VGA接口信號

14.2.4VGA時序

14.3VGA顯示硬件實現原理

14.3.1VGA圖像緩衝區

14.3.2VGA控製颱

14.3.3VGA控製器存儲器空間

14.4打開前麵的設計工程

14.5添加並分析VGA模塊源文件

14.5.1添加VGA模塊源文件

14.5.2分析VGA模塊源文件

14.6修改其他設計

14.6.1添加並分析頂層設計文件

14.6.2修改時鍾生成器輸齣頻率

14.6.3修改波特率時鍾

14.7編寫程序代碼

14.7.1建立新設計工程

14.7.2工程參數設置

14.7.3添加和編譯匯編文件

14.7.4添加HEX文件到當前工程

14.8設計綜閤

14.9添加約束條件

14.10設計實現

14.11下載比特流文件

第15章DDR3存儲器係統設計與實現

15.1計算機搭載的存儲器設備

15.2存儲器類型

15.2.1易失性存儲器

15.2.2非易失性存儲器

15.3係統設計目標

15.3.1硬件構建目標

15.3.2軟件編程目標

15.4DDR3 SDRAM控製器設計原理

15.4.1DDR3 SDRAM存儲器結構

15.4.2DDR3 SDRAM控製器結構

15.4.3DDR3 SDRAM的讀寫訪問時序

15.5DDR3 SDRAM控製器係統設計與實現

15.5.1打開前麵的設計工程

15.5.2設計DDR3 SDRAM存儲器控製器

15.5.3修改係統設計文件

15.5.4編寫程序代碼

15.5.5設計綜閤

15.5.6設計實現

15.5.7下載比特流文件

第16章Cortex�睲0 C語言編程基礎

16.1C語言處理流程

16.2C語言鏡像文件內容和存儲

16.2.1C語言鏡像文件的內容

16.2.2C語言鏡像文件的存儲位置

16.3啓動代碼的分析

16.4C語言中數據的存儲空間

16.5C語言數據類型及實現

16.5.1C語言支持的數據類型

16.5.2數據類型修飾符

16.6C語言編程Cortex�睲0

16.6.1定義中斷嚮量錶

16.6.2定義堆和堆棧

16.6.3讀寫外設寄存器

16.6.4匯編調用C函數

16.6.5C語言調用匯編語言

16.6.6C語言嵌入匯編語言

16.7C語言驅動的設計和實現

16.7.1打開前麵的設計工程

16.7.2建立新的軟件設計工程

16.7.3軟件工程參數設置

16.7.4創建並添加匯編文件

16.7.5創建並添加頭文件

16.7.6創建並添加C文件

16.7.7添加HEX文件到當前工程

16.7.8設計綜閤

16.7.9設計實現

16.7.10下載比特流文件

16.8C語言重定嚮及實現

16.8.1打開前麵的設計工程

16.8.2打開前麵的軟件設計工程

16.8.3修改啓動引導文件

16.8.4導入並修改retarget.c文件

16.8.5修改C設計文件

16.8.6添加HEX文件到當前工程

16.8.7設計綜閤

16.8.8設計實現

16.8.9下載比特流文件

第17章CMSIS和驅動程序開發

17.1引入CMSIS的必要性

17.2CMSIS的優勢

17.3CMSIS的框架

17.4使用CMSIS訪問不同資源

17.4.1訪問NVIC

17.4.2訪問特殊寄存器

17.4.3訪問特殊指令

17.4.4訪問係統

17.5軟件驅動程序的設計

17.5.1軟件驅動程序的功能

17.5.2AHB外設驅動設計

17.6動態圖形交互係統設計

17.6.1動態圖形交互硬件平颱

17.6.2觸摸屏顯示控製方法

17.6.3觸摸屏觸摸控製方法

17.6.4打開前麵的設計工程

17.6.5觸摸屏控製器模塊的設計實現

17.6.6修改頂層設計文件

17.6.7C語言程序的設計和實現

17.6.8設計綜閤

17.6.9添加約束條件

17.6.10設計實現

17.6.11下載比特流文件

第18章RTX操作係統原理及應用

18.1RTOS的優勢

18.2操作係統的概念

18.3操作係統支持特性

18.3.1SysTick定時器

18.3.2堆棧指針

18.3.3SVC

18.3.4PendSV

18.4RTX內核架構的特點

18.5RTX的具體實現過程

18.5.1實現目標

18.5.2打開前麵的工程

18.5.3修改工程屬性設置

18.5.4修改啓動代碼

18.5.5導入RTX_Config.c文件

18.5.6修改main.c文件

18.5.7軟件調試和測試

18.6RTX內核功能

18.6.1定時器滴答中斷

18.6.2係統任務管理器

18.6.3任務管理

18.6.4空閑任務

18.6.5係統資源

18.6.6任務調度策略

18.6.7優先級倒置

18.6.8堆棧管理

18.6.9用戶定時器

18.6.10中斷函數


精彩書摘

  第5章AHB�睱ite總綫結構分析

  ARM公司提供的高級微控製器總綫結構(Advanced Microcontroller Bus Architecture,AMBA)規範是實現ARM處理器和外部設備互連的基礎。在基於ARM Cortex�睲0的SoC中,通過AMBA規範中的AHB�睱ite協議,實現ARM Cortex�睲0處理器主設備對多個從設備的無障礙訪問。

  根據ARM AMBA規範,本章將詳細介紹AMBA規範中的AHB�睱ite協議,內容主要包括總綫及分類、ARM AMBA係統總綫、AMBA3 AHB�睱ite總綫、AHB�睱ite總綫結構、AHB�睱ite總綫時序,以及硬件實現。

  通過本章的學習,要求讀者掌握AHB�睱ite的結構、接口信號和訪問時序關係,這些內容是讀者可以順利學習本章後續內容的基礎。

  5.1總綫及分類

  本節介紹總綫的概念及分類。

  5.1.1總綫的概念

  傳統上,總綫是一個通信係統,用於在一個計算機的不同部件之間實現數據傳輸。硬件和軟件兩個方麵定義瞭構成總綫的要素:

  (1) 從硬件上來說,包括物理實現,如電纜或者連綫。例如,使用PCI總綫電纜連接一個颱式計算機內的部件,如圖5.1所示。

  圖5.1PCI插槽和連綫

  (2) 從軟件上來說,包括總綫協議,如PCI總綫協議。

  5.1.2總綫分類

  在計算機係統中,通常將總綫分為兩類。

  1) 外部總綫

  外部總綫主要用於連接外部設備,例如,將一颱計算機與一颱打印機進行連接。

  2) 內部總綫

  (1) 內部總綫也稱為係統總綫,用於連接一颱計算機的內部部件,例如,將CPU連接到存儲器。

  (2) 較少的開銷,例如,不需要處理電特性,以及配置檢測等。

  (3) 內部總綫的工作速度比外部總綫要快。

  (4) 在SoC內,將內部總綫集成到單個芯片中,因此稱它為片上係統總綫。

  思考與練習5��1: 說明計算機係統總綫的分類,以及它們的作用。

  5.2ARM AMBA係統總綫

  在SoC設計中,高級微控製器總綫結構(Advanced Microcontroller Bus Architecture,AMBA)用於片上總綫。自從AMBA齣現後,其應用領域早已超齣瞭微控製器設備,現在被廣泛地應用於各種範圍的ASIC和SOC器件,包括用於便攜設備的應用處理器。

  AMBA協議是一個開放標準的片上互聯規範(除AMBA��5以外),用於SoC內功能模塊的連接和管理。它便於第一時間開發包含大量控製器和外設的多處理器設計。其發展過程如下:

  1) 1996年,ARM公司推齣瞭AMBA的第一個版本,包括:

  (1) 高級係統總綫(Advanced System Bus,ASB);

  (2) 高級外設總綫(Advanced Peripheral Bus,APB)。

  2) 第2個版本為AMBA2,ARM增加瞭AMBA高性能總綫(AMBA High�瞤erformance Bus, AHB),它是一個單個時鍾沿的協議。AMBA2用於ARM公司的ARM7和ARM9處理器。

  3) 2003年,ARM推齣瞭第三個版本即AMBA3,增加瞭以下規範:

  (1) 高級可擴展接口(Advanced Extensible Interface,AXI)v1.0/AXI3,它用於實現更高性能的互連。

  (2) 高級跟蹤總綫(Advanced Trace Bus,ATB)v1.0,它用於CoreSight片上調試和跟蹤解決方案。

  此外,還包含下麵的協議:

  (1) 高級高性能總綫簡化(Advanced High�瞤erformance Bus Lite,AHB�睱ite)v1.0。

  (2) 高級外設總綫(Advanced Peripheral Bus,APB)v1.0。

  其中:

  (1) AHB�睱ite和APB規範用於ARM的Cortex�睲0、M3和M4。

  (2) AXI規範,用於ARM的Cortex�睞9、A8、R4和R5的處理器。

  4) 2009年,Xilinx同ARM密切閤作,共同為基於FPGA的高性能係統和設計定義瞭AXI4規範。並且在其新一代可編程門陣列芯片上采用瞭高級可擴展接口AXI4協議。主要包括:

  (1) AXI一緻性擴展(AXI Coherency Extensions,ACE)。

  (2) AXI一緻性擴展簡化(AXI Coherency Extensions Lite,ACE�睱ite)。

  (3) 高級可擴展接口4(Advanced eXtensible Interface 4,AXI4)。

  (4) 高級可擴展接口4簡化(Advanced eXtensible Interface 4 Lite,AXI4�睱ite)。

  (5) 高級可擴展接口4流(Advanced eXtensible Interface 4 Stream,AXI4�睸tream)v1.0。

  (6) 高級跟蹤總綫(Advanced Trace Bus,ATB)v1.1。

  (7) 高級外設總綫(Advanced Peripheral Bus,APB)v2.0。

  其中的ACE規範用於ARM的Cortex�睞7和A15處理器。

  5) 2013年,ARM推齣瞭AMBA5。該協議增加瞭一緻集綫器接口(Coherent Hub Interface,CHI)規劃,用於ARM Cortex�睞50係列處理器,以高性能、一緻性處理“集綫器”方式協同工作,這樣就能在企業級市場中實現高速可靠的數據傳輸。

  思考與練習5��2: 說明ARM AMBA的含義,以及所實現的目的。

  思考與練習5��3: 說明在ARM Cortex�睲0中所采用的總綫規範。

  思考與練習5��4: 在ARM AMBA中,對於APB、AHB和AXI來說,性能最高的是,性能最低的是。

  5.3AMBA3 AHB�睱ite總綫

  AMBA3中的AHB,被稱為高性能總綫,主要體現在:

  (1) 可以實現高性能的同步設計;

  (2) 支持多個總綫主設備;

  (3) 提供高帶寬操作。

  而AHB�睱ite是AHB的子集,簡化瞭AHB總綫的設計,典型地,隻有一個主設備。

  5.3.1AHB�睱ite概述

  在基於AHB�睱ite總綫構成的係統中,通過該總綫,處理器實現對所有外設的控製,如圖5.2所示。在該係統中,所有外設均提供AHB�睱ite接口,用於和主處理器進行連接。對於AHB�睱ite來說,它包含數據總綫、控製總綫和額外的控製信號,其中:

  (1) 數據總綫用於交換數據信息。

  (2) 地址總綫用於選擇一個外設,或者一個外設中的某個寄存器。

  (3) 控製信號用於同步和識彆交易,如: 準備,寫/讀以及傳輸模式信號。

  圖5.2由AHB�睱ite構成的處理係統

  5.3.2AHB�睱ite總綫操作

  圖5.3總綫操作過程

  處理器訪問一個AHB�睱ite外設的操作過程,如圖5.3所示。該過程主要包括:

  (1) 通過地址總綫,處理器給齣所要訪問AHB�睱ite外設的地址信息。

  (2) 通過地址譯碼器,生成選擇一個外設或者寄存器的選擇信號。同時,處理器提供用於控製所選AHB�睱ite外設的控製信號,如讀/寫,傳輸數據的數量等。

  (3) 如果處理器給齣的是讀取AHB�睱ite外設的控製信號,則等待外設準備好後,讀取該外設的數據。

  除瞭上麵介紹的基本操作過程外,AHB�睱ite總綫可以實現更多復雜的功能,如傳輸個數和猝發模式等。

  思考與練習5��5: 說明在AHB�睱ite中所包含的總綫類型,以及這些總綫各自的作用。

  思考與練習5��6: 根據圖5.3,詳細說明Cortex�睲0處理器和AHB�睱ite外設的信息交互過程。

  5.4AHB�睱ite總綫結構

  基於AHB�睱ite總綫所構成的計算機係統架構,如圖5.4所示。在該係統中,包括以下功能部件:

  圖5.4構成AHB�睱ite係統的單元

  (1) 主設備。在本書中,主設備是指Cortex�睲0處理器。此外,在包含直接存儲器訪問(Direct Memory Access,DMA)控製器的係統中,主設備還包括DMA控製器。

  (2) 地址譯碼器。主要用於選擇Cortex�睲0所要訪問的從設備。

  (3) 從設備多路復用器。主要用於從多個從設備中選擇所要讀取的數據和響應信號。

  (4) 多個從設備。它們都包含AHB�睱ite接口,主設備可以通過該接口訪問它們。

  此外,係統還應該包含時鍾和復位模塊單元。時鍾模塊用於為整個SoC係統提供時鍾源; 復位模塊用於為整個SoC係統提供復位信號。通過時鍾和復位信號,使得SoC係統內的各個功能部件有序工作。

  5.4.1全局信號

  在AHB�睱ite協議中,提供瞭兩個全局信號,如錶5.1所示。在該設計中,HCLK的頻率與Cortex�睲0處理器的頻率相同。在Cortex�睲0係統中,所有的功能部件都包含該全局信號。在基於ARM Cortex�睲0處理器的SoC係統中,時鍾模塊和復位模塊用於提供全局信號。

  錶5.1AHB�睱ite協議中的全局信號

  信號名字和方嚮描述

  HCLK時鍾,源指嚮所有的部件總綫時鍾用來驅動所有的總綫傳輸。所有信號的時序均以HCK時鍾的上升沿為基準

  HRESETn復位,由控製器指嚮所有的部件總綫復位信號低有效,用於復位係統和總綫

  5.4.2AHB�睱ite主設備接口

  AHB�睱ite主設備提供地址和控製信息,用於初始化讀和寫操作。然後,主設備接收來自從設備的響應信息,包括數據、準備信號和響應信號,如圖5.5所示。在該設計中,主設備隻有Cortex�睲0處理器,它用於提供訪問從設備的AHB�睱ite接口信號。

  圖5.5構成AHB�睱ite主設備接口信號

  為瞭方便對本書後續內容的學習,下麵給齣AHB�睱ite主設備接口信號的詳細信息,如錶5.2所示。

  錶5.2AHB�睱ite主設備接口信號

  信號方嚮描述

  HADDR [31∶0]由主設備指嚮從設備以及譯碼器32位係統地址總綫

  HWDATA [31∶0]由主設備指嚮從設備寫數據總綫,用於在寫操作周期內將數據從主設備發送到從設備

  HWRITE由主設備指嚮從設備用於指示傳輸的方嚮。當該信號為高時,錶示寫傳輸; 當該信號為低時,錶示讀傳輸

  HSIZE [2∶0]由主設備指嚮從設備錶示傳輸的寬度,如字節、半字和字

  HBURST [2∶0]由主設備指嚮從設備猝發類型,錶示傳輸是單個傳輸還是猝發的一部分

  HPROT [3∶0]由主設備指嚮從設備保護控製信號提供瞭關於總綫訪問的額外的信息。它被模塊使用,用於實現某個級彆的保護

  HTRANS [1∶0]由主設備指嚮從設備錶示當前傳輸的類型,可以是IDLE、BUSY、NONSEQUENTIAL或SEQUENTIAL

  HMASTLOCK由主設備指嚮從設備當該信號為高時,錶示當前傳輸是某個鎖定序列的一部分

  本書所使用的Cortex�睲0處理器IP核,通過組閤錶5.2中的信號可以得到四種基本的傳輸類型,如錶5.3所示。

  錶5.3處理器AHB�睱ite交易類型

  交易訪問描述

  HSTRANS[1∶0]=2'b00空閑處理器不希望執行任何交易

  HSTRANS[1∶0]=2'b10

  HPROT[0]=1'b0

  HSIZE[1∶0]=2'b10

  HWRITE=1'b0取指處理器希望執行取指操作。處理器一次從存儲器中取齣32位的指令,如果有其他要求,則處理器內部緩衝和管理兩個16位指令的提取

  HSTRANS[1∶0]=2'b10

  HPROT[0]=1'b1

  HSIZE[1∶0]=2'b00字節處理器希望執行一個由LDRB、LDRBS、STRB指令所産生的8位數據訪問操作。加載指令將驅動HWRITE信號為低; 保存指令將驅動HWRITE信號為高

  續錶

  交易訪問描述

  HSTRANS[1∶0]=2'b10

  HPROT[0]=1'b1

  HSIZE[1∶0]=2'b01半字處理器希望執行一個由LDRH、LDRHS、STRH指令所産生的16位數據訪問操作。加載指令將驅動HWRITE信號為低; 保存指令將驅動HWRITE信號為高

  HSTRANS[1∶0]=2'b10

  HPROT[0]=1'b1

  HSIZE[1∶0]=2'b10字

  處理器希望執行一個由LDR、LDM、POP、STR、STM、PUSH指令,或者異常入口的一部分,或者返迴所産生的32位數據訪問操作。加載指令將驅動HWRITE信號為低; 保存指令將驅動HWRITE信號為高

  本書所使用的Cortex�睲0處理器,總是工作在小端模式,所有的交易總是自然對齊。HRDATA和HWDATA活動字節的通道,以及它們在Cortex�睲0處理器裏對應的源/目的寄存器,如錶5.4所示。

  錶5.4處理器AHB�睱ite讀/寫數據字節通道

  地 址 階 段數 據 階 段

  HSIZE[1∶0]HADDR[1∶0]HxDATA

  [31∶24]HxDATA

  [23∶16]HxDATA

  [15∶8]HxDATA

  [7∶0]

  0000———Rd[7∶0]

  0001——Rd[7∶0]—

  0010—Rd[7∶0]——

  0011Rd[7∶0]———

  0100——Rd[15∶8]Rd[7∶0]

  0110Rd[15∶8]Rd[7∶0]——

  1000Rd[31∶24]Rd[23∶16]Rd[15∶8]Rd[7∶0]

  用於Cortex�睲0處理器的存儲器屬性由ARMv6�睲架構決定,其地址空間的使用規則是固定的。從HADDR映射齣來的HPROT[3∶2]位含義如錶5.5所示。

  錶5.5處理器存儲器映射屬性

  HADDR[31∶0]類型HPROT[3∶2]推薦的用法

  32′hF0000000~

  32′hFFFFFFFFF設備01無

  32′hE0000000~

  32′hEFFFFFFFF保留—映射到處理器內部的外設,如NVIC

  32′hA0000000~

  32′hDFFFFFFFF設備01外設

  32′h80000000~

  32'′h9FFFFFFFF正常(寫通過)10片外RAM

  32′h60000000~

  32′h7FFFFFFFF正常(寫迴和寫分配)11片外RAM

  續錶

  HADDR[31∶0]類型HPROT[3∶2]推薦的用法

  32′h40000000~

  32′h5FFFFFFFF設備01外設

  32′h20000000~

  32′h3FFFFFFFF正常(寫迴和寫分配)11片上RAM

  32′h00000000~

  32′h1FFFFFFFF正常(寫通過)10程序代碼

  5.4.3AHB�睱ite從設備接口

  為瞭響應係統主設備所建立的傳輸,從設備也需要提供對應的AHB�睱ite接口,如圖5.6所示。通過本身所提供的AHB�睱ite接口,從設備與主設備實現數據傳輸。

  在從設備接口上,有一個HSELx信號,由地址譯碼器的輸齣信號HSELx給齣,用於在一個時刻選擇所要訪問的一個從設備。

  圖5.6構成AHB�睱ite從設備接口信號

  為瞭方便本書後續內容的學習,下麵給齣AHB�睱ite從設備接口信號的詳細信息,如錶5.6所示。

  錶5.6AHB�睱ite從設備接口信號

  信號方嚮描述

  HRDATA [31∶0]由從設備指嚮多路選擇器在讀傳輸時,讀數據總綫將所選中從設備的數據發送到從設備多路選擇器,然後由從設備多路選擇器將數據傳給主設備

  HREADYOUT由從設備指嚮多路選擇器當該信號為高時,完成總綫上的傳輸過程; 該信號驅動為低時,擴展一個傳輸

  HRESP由從設備指嚮多路選擇器傳輸響應,當通過多路復用器時,為主設備提供額外的傳輸狀態信息。當該信號為低時,錶示傳輸狀態為OKAY; 當該位為高時,錶示傳輸狀態是ERROR

  5.4.4地址譯碼器和多路復用器

  基於AHB�睱ite所構建的Cortex�睲0 SoC係統還提供瞭地址譯碼器和多路復用器。從結構上來說:

  (1) 地址譯碼器為一對多設備,由一個主設備指嚮多個從設備;

  (2) 多路復用器為多對一設備,由多個從設備指嚮一個主設備。

  注: 在本書中,主設備隻有ARM Cortex�睲0處理器。

  1. 地址譯碼器的功能

  在係統中,地址譯碼器的輸入為地址信號,輸齣為選擇信號,如圖5.7所示,它實現的功能主要包括:

  (1) 根據主設備在地址總綫上所提供的訪問地址空間信息,生成選擇一個從設備的選擇信號。

  (2) 同時,選擇信號也連接到從設備多路選擇器,用於從多個從設備中選擇所對應的從設備返迴信息。

  圖5.7地址譯碼器和從設備多路復用器

  2. 多路復用器的功能

  在係統中,來自不同從設備的響應信號,包括: HRDATA、HREADY和HRESP連接到多路復用器的輸入,如圖5.7所示。根據地址譯碼器所生成的選擇信號,多路復用器將選擇的從設備響應信號送給主設備。

  3. 接口信號

  譯碼器和多路選擇器信號的詳細信息,如錶5.7所示。

  錶5.7譯碼器和多路選擇器信號

  信號方嚮描述

  HRDATA [31∶0]由多路復用器指嚮主設備來自多路復用器到主設備的讀數據

  HREADY由多路復用器指嚮主設備和從設備來自多路復用器到主設備的準備信號。當該位為高時,該信號錶示到主設備和先前完成傳輸的所有從設備

  續錶

  信號方嚮描述

  HRESP由多路復用器指嚮主設備來自多路復用器到主設備的傳輸響應信號

  HSELx由譯碼器指嚮從設備每個AHB�睱ite從設備有自己的從設備選擇信號HSELx,該信號錶示當前傳輸所對應的從設備。當一開始就選中該從設備時,它也必須監視HREADY的狀態,以確保在響應當前傳輸前,已經完成前麵的總綫傳輸

  思考與練習5��7: 說明在基於AHB�睱ite所構建的SoC係統中所包含的主要功能部件。

  思考與練習5��8: 說明在基於AHB�睱ite所構建的SoC係統中地址譯碼器的功能。

  思考與練習5��9: 說明在基於AHB�睱ite所構建的SoC係統中多路復用器的功能。

  思考與練習5��10: 根據圖5.7,分析基於AHB�睱ite的架構。

  5.5AHB�睱ite總綫時序

  一個AHB�睱ite傳輸包括兩個階段:

  1) 地址階段

  隻持續一個HCLK周期,除非被前麵的總綫傳輸進行瞭擴展。

  2) 數據階段

  可能要求幾個HCLK周期。使用HREADY信號來控製完成傳輸所需要的周期數。

  在AHB�睱ite中,引入瞭流水綫傳輸的機製,包括:

  (1) 當前操作的數據訪問可以與下一個操作的地址訪問重疊。

  (2) 使能高性能的操作,同時仍然為從設備提供充分的時間,為傳輸提供響應信息。

  注: 在後續的介紹中,隻實現基本的總綫操作,即

  (1) HBURST[2∶0]=3'b000,錶示沒有猝發交易;

  (2) HMASTLOCK=1'b0,錶示不産生帶鎖定的交易;

  (3) HTRANS[1∶0]=2'b00或者2'b10,錶示發起的交易為非順序的傳輸。

  5.5.1無等待基本讀傳輸

  無等待的基本讀傳輸時序,如圖5.8所示,包括:

  ……

前言/序言

  前言

  在當今社會中,嵌入式係統的應用越來越廣泛,例如以智能手機為代錶的嵌入式係統應用已經融入人們的日常生活中。英國ARM公司作為全球知名的嵌入式處理器IP核供應商,其所提供的Cortex�睲、Cortex�睷和Cortex�睞三大係列處理器IP核以及基於這些IP核所構建的生態係統,已經成為當今嵌入式係統設計和應用的基礎。

  由於保護知識産權的需要,一直以來ARM公司對其處理器設計技術進行嚴格保密,這使得掌握Cortex處理器架構並熟練高效應用Cortex處理器變得異常睏難。此外,ARM Cortex處理器架構和指令集也比較復雜。這些因素都使得一個嵌入式係統設計人員很難從處理器架構、接口、外設、編程語言和操作係統等方麵全麵徹底掌握嵌入式係統設計知識。

  近年來,國內很多高校都相繼開設瞭嵌入式係統相關的課程。但是,由於前麵所提到的諸多因素,在市麵上已經齣版的ARM嵌入式係統教材並沒有全麵係統地從處理器架構、AMBA規範、接口、外設、編程語言和操作係統等方麵全方位係統地對設計嵌入式係統所需要的知識進行解讀,這給ARM嵌入式係統技術在國內教育界的普及推廣造成很大睏難。目前,國內嵌入式係統課程的教學大都局限在APP開發,API函數調用的層麵,與工業界對培養高素質嵌入式人纔的要求有相當大的差距。

  去年,ARM公司做瞭一件讓中國教育界非常高興的事情,它提供瞭免費開放的Cortex�睲0 DesignStart內核等效RTL級設計代碼,可用於中國高校的嵌入式係統課程教學。通過ARM大學計劃經理陳瑋先生的幫助,本書作者得到瞭這個免費開放的Cortex�睲0 DesignStart內核RTL級等效設計代碼。通過這個免費開放的Cortex�睲0 DesignStart IP核以及Xilinx的Vivado 2016.1集成開發環境,作者在Xilinx最新的7係列FPGA內構建瞭Cortex�睲0嵌入式係統硬件,同時,通過Keil μVision5集成開發環境為該嵌入式係統硬件開發瞭軟件應用程序。

  與傳統采用專用Cortex�睲處理器介紹嵌入式係統設計的教學模式相比,采用在FPGA內構建Cortex�睲0嵌入式係統的方法可以為嵌入式係統課程的教學帶來以下好處:

  (1) 當采用開放的Cortex�睲0內核構建嵌入式係統時,教師和學生可以清楚地理解Cortex�睲0的運行機製,包括處理器架構、指令集、存儲器空間映射和中斷機製。

  (2) 通過對AHB�睱ite規範的詳細介紹和說明,教師和學生可以清楚地知道在一個芯片內將Cortex�睲0嵌入式處理器與外設模塊和存儲器係統連接的方法。

  (3) 通過使用Verilog HDL對實現特定功能外設的寄存器傳輸級RTL描述,教師和學生可以清楚地理解軟件寄存器與硬件邏輯行為之間的關係,也就是將軟件命令轉換成硬件邏輯行為的方法。

  (4) 通過為所定製的Cortex�睲0嵌入式係統硬件編寫軟件應用,教師和學生可以徹底理解和掌握軟件和硬件協同設計、協同仿真和協同調試的方法。

  (5) 基於開放的Cortex�睲0 DesignStart IP核,教師和學生可以從硬件底層逐步完成嵌入式係統的構建,以深入理解和全麵掌握嵌入式係統的設計流程。

  正是由於這種方法在未來嵌入式係統課程教學中有著無可比擬的巨大優勢,使得作者可以從處理器架構、指令集、AHB�睱ite規範、匯編語言、C語言、外設、CMSIS和驅動,以及操作係統等幾個方麵,全方位地對嵌入式係統的構建方法進行介紹,以期解決目前國內高校嵌入式係統課程教學所麵臨的睏境,並且為學習更高層次的嵌入式係統設計和應用拋磚引玉。

  本書的最大特色就是將嵌入式係統的設計理論和實踐深度融閤,通過典型且完整的設計案例多角度全方位地解讀嵌入式係統的設計方法。為瞭方便老師的教學和學生的自學,本書提供瞭教學課件和設計實例的完整代碼,以及公開的視頻教學資源,這些資源的獲取方式詳見書中的學習說明。

  本書的編寫得到瞭ARM大學計劃經理陳瑋先生的大力支持和幫助,他為本書申請瞭免費開放的Cortex�睲0 DesignStart IP核設計資源以及教學資源。此外,Xilinx公司的FAE對作者設計案例時遇到的問題進行瞭耐心細緻的迴答。作者的研究生李寶隆編寫瞭本書第1章的內容,張艷輝編寫瞭本書第2章的內容,作者的本科生湯宗美編寫並整理瞭本書的配套教學課件,王中正對本書的部分設計案例進行瞭驗證。此外,在本書編寫期間,平涼職業技術學院的惠小軍和唐海天老師進行瞭相關內容的學習,並幫助作者編寫瞭第17章和第18章的內容。他們的支持和幫助是作者高質量按時完成該書的重要保證,在此一並嚮他們錶示感謝。

  在本書齣版的過程中,也得到瞭清華大學齣版社各位編輯的幫助和指導,在此也錶示深深的謝意。由於編者水平有限,編寫時間倉促,書中難免有疏漏之處,敬請讀者批評指正。

  作者

  2017年1月於北京


《深度解析:嵌入式係統設計與開發實戰》 前言: 在當今技術飛速發展的時代,嵌入式係統已滲透到我們生活的方方麵麵,從智能手機、可穿戴設備到汽車電子、工業自動化,無處不在。而嵌入式係統的核心,無疑是其微處理器或微控製器。本書並非專注於某一種特定的處理器架構,而是旨在為讀者構建一個全麵、係統的嵌入式係統設計與開發知識體係,從硬件選型、軟件開發到係統集成,全麵覆蓋實際應用中的關鍵技術和挑戰。我們希望通過本書,幫助讀者掌握構建和優化嵌入式係統的核心能力,理解不同技術之間的協同作用,並能獨立完成復雜的嵌入式項目。 第一章:嵌入式係統概覽與核心概念 本章將帶領讀者進入嵌入式係統設計的廣闊天地。我們將首先界定嵌入式係統的概念,區分其與通用計算係統的不同之處,並探討嵌入式係統在不同領域的典型應用場景,例如消費電子、汽車電子、醫療設備、工業控製等,通過豐富的案例分析,讓讀者對嵌入式係統的實際價值和技術前沿有初步的認識。 接著,我們將深入探討嵌入式係統的關鍵組成部分。這包括核心處理器(Microprocessor/Microcontroller)的選擇原則與考量因素,例如性能、功耗、成本、指令集架構(ISA)的特點,以及它們對係統整體設計的影響。我們還會討論嵌入式係統中的存儲器層次結構,包括RAM、ROM、Flash等不同類型存儲器的作用、特點及在係統中的配置。此外,實時時鍾(RTC)、中斷控製器、定時器/計數器等基礎外設的功能和重要性也將得到闡述,它們是嵌入式係統實現精確控製和響應外部事件的基礎。 本章還將引入嵌入式係統開發中的一些核心概念,例如實時性(Real-time)、可靠性(Reliability)、功耗管理(Power Management)、安全性(Security)以及可擴展性(Scalability)等。我們將解釋這些概念在嵌入式係統設計中的意義,以及在實際項目中需要采取的設計策略來滿足這些需求。例如,對於實時性,我們會討論硬實時和軟實時係統的區彆,以及如何通過中斷處理、任務調度等機製來保證係統的實時響應。功耗管理方麵,我們將介紹低功耗模式、時鍾門控等技術。 通過本章的學習,讀者將對嵌入式係統有一個宏觀的認識,理解其基本構成和設計理念,為後續深入學習奠定堅實的基礎。 第二章:嵌入式硬件設計基礎 本章將聚焦於嵌入式係統的硬件設計。我們將從電路基礎知識齣發,迴顧數字電路和模擬電路的基本原理,以及它們在嵌入式硬件設計中的應用。重點介紹常用電子元器件的選型、特性和應用,例如電阻、電容、二極管、三極管、MOSFET等,以及它們在電源管理、信號調理等方麵的作用。 電源管理是嵌入式係統設計的重中之重,本章將詳細介紹各種電源架構,包括綫性穩壓器(LDO)和開關穩壓器(Switching Regulators)的原理、優缺點及選擇依據。我們將探討如何設計高效穩定的電源供應電路,以及如何實現低功耗運行,例如使用低靜態電流的LDO、采用功率控製策略等。 信號完整性(Signal Integrity)和電源完整性(Power Integrity)是保證嵌入式係統穩定運行的關鍵。本章將介紹這些概念的重要性,以及在PCB(Printed Circuit Board)設計中需要注意的事項,例如走綫長度、阻抗匹配、去耦電容的放置等,以避免信號反射、串擾和電源噪聲。 接口電路設計是連接不同模塊的關鍵。我們將詳細講解各種常用通信接口的硬件實現,包括UART(Universal Asynchronous Receiver/Transmitter)、SPI(Serial Peripheral Interface)、I2C(Inter-Integrated Circuit)等串行通信接口,以及USB(Universal Serial Bus)、Ethernet等更復雜的接口。我們會分析不同接口的電氣特性、時序要求以及硬件電路的設計要點。 此外,本章還將觸及嵌入式係統中的傳感器接口設計。我們將介紹如何將模擬傳感器和數字傳感器的信號接入微控製器,包括ADC(Analog-to-Digital Converter)的采樣原理、分辨率、采樣率的選擇,以及常用的數字傳感器接口協議(如I2C、SPI)的硬件實現。 第三章:嵌入式軟件開發流程與工具鏈 本章將帶領讀者深入到嵌入式軟件的開發世界。我們將詳細介紹一個典型的嵌入式軟件開發流程,從需求分析、係統設計、編碼實現、編譯鏈接,到調試測試和部署,力求使讀者理解整個軟件生命周期。 我們將重點介紹嵌入式開發中常用的集成開發環境(IDE),例如Keil MDK、IAR Embedded Workbench、GCC for ARM等,並詳細講解這些IDE的安裝、配置及基本使用方法。我們將演示如何創建項目、添加源文件、配置編譯選項、進行代碼編寫和管理。 編譯與鏈接是嵌入式軟件開發的核心環節。本章將深入解析編譯器的作用,包括詞法分析、語法分析、語義分析、代碼生成等過程。同時,我們將詳細講解鏈接器的功能,包括符號解析、地址分配、段閤並等,並介紹鏈接腳本(Linker Script)的編寫和作用,它決定瞭程序在內存中的分布。 調試是嵌入式開發中不可或缺的環節。我們將介紹各種調試技術,包括在綫仿真(In-Circuit Debugging)和離綫調試。我們將詳細講解JTAG/SWD接口的工作原理,以及如何使用仿真器(Debugger)來設置斷點、單步執行、觀察變量、查看寄存器狀態等。此外,我們還將介紹printf重定嚮、邏輯分析儀等輔助調試工具的使用。 版本控製是現代軟件開發的基本要求。本章將介紹Git等版本控製係統的使用,包括代碼的提交、分支管理、閤並衝突解決等,幫助讀者養成良好的代碼管理習慣,提高團隊協作效率。 第四章:實時操作係統(RTOS)原理與應用 對於許多復雜的嵌入式係統,需要一個強大的操作係統來管理任務、資源和通信。本章將深入探討實時操作係統(RTOS)的原理和應用。我們將首先解釋RTOS與普通操作係統的區彆,以及其在嵌入式係統中的關鍵作用,例如實現多任務並發、任務調度、資源管理、中斷處理等。 我們將詳細介紹RTOS中的核心概念,包括任務(Task)、綫程(Thread)、信號量(Semaphore)、互斥鎖(Mutex)、消息隊列(Message Queue)、事件標誌組(Event Flag Group)等。我們將逐一講解它們的功能、工作機製以及在實際應用中的使用場景。例如,我們將演示如何使用信號量來實現多任務間的同步,如何使用互斥鎖來保護共享資源,以及如何使用消息隊列來實現任務間的數據傳遞。 任務調度是RTOS的核心功能之一。本章將介紹幾種常見的任務調度算法,例如優先級搶占調度(Priority Preemptive Scheduling)、輪轉調度(Round Robin Scheduling)等,並分析它們的優缺點及適用場景。我們將講解RTOS如何根據調度算法來決定哪個任務獲得CPU的執行權。 中斷處理是嵌入式係統與外部世界交互的關鍵。本章將詳細介紹RTOS中的中斷管理機製,包括中斷嚮量錶、中斷服務程序(ISR)的設計以及如何與RTOS的任務進行交互,例如從ISR嚮任務發送信號或消息。 為瞭讓讀者更好地理解RTOS的應用,我們將選取一到兩個主流的嵌入式RTOS(例如FreeRTOS、RT-Thread等)作為實例,詳細介紹它們的API接口、配置方法和實際開發案例。我們將演示如何在一個簡單的嵌入式項目中使用RTOS來創建和管理任務,實現LED閃爍、按鍵掃描、UART通信等功能。 第五章:嵌入式通信協議詳解 嵌入式係統往往需要與其他設備或係統進行通信。本章將詳細講解各種常用的嵌入式通信協議,從低級硬件接口到高級應用層協議。 我們將從物理層開始,迴顧串行通信(UART)和並行通信的基本原理,以及其在嵌入式係統中的應用。我們將深入講解SPI和I2C協議的細節,包括總綫結構、通信時序、主從設備的工作模式、數據傳輸方式以及在實際應用中的接口電路設計。 接著,我們將探討更復雜的通信協議。對於USB協議,我們將介紹其不同的版本(USB 1.1, 2.0, 3.0等)及其電氣特性,以及在嵌入式設備中作為主機(Host)或設備(Device)的實現方式。我們還將介紹以太網(Ethernet)在嵌入式係統中的應用,包括MAC層和IP層的基本概念,以及相關的硬件接口(如RMII, RGMII)和驅動開發。 無綫通信是現代嵌入式係統的重要組成部分。本章將介紹Wi-Fi、Bluetooth(包括Classic和BLE)等無綫通信技術的基本原理、通信模型、安全機製以及在嵌入式設備中的實現。我們還將討論物聯網(IoT)中常用的通信協議,例如MQTT(Message Queuing Telemetry Transport)和CoAP(Constrained Application Protocol),講解它們的設計理念、消息格式、傳輸機製以及在低功耗、資源受限設備上的優勢。 此外,我們還將觸及CAN(Controller Area Network)總綫,它在汽車電子和工業自動化領域扮演著重要角色。我們將介紹CAN總綫的幀格式、仲裁機製、錯誤檢測和處理,以及在嵌入式係統中的驅動開發。 第六章:嵌入式係統調試與優化 調試和優化是確保嵌入式係統性能和可靠性的關鍵環節。本章將深入探討嵌入式係統的調試技術和性能優化方法。 我們將迴顧和拓展第四章中介紹的調試工具和技術。重點講解邏輯分析儀在分析通信協議、檢測時序問題中的應用,以及示波器在觀察模擬信號、測量電源噪聲中的作用。我們還將介紹一些高級調試技巧,例如使用探針(Probe)進行硬件調試、編寫調試腳本自動化測試流程等。 性能優化是嵌入式係統設計的重要目標,尤其是在資源受限的環境中。本章將從軟件和硬件兩個層麵探討優化策略。在軟件層麵,我們將介紹代碼優化技術,例如算法優化、數據結構選擇、編譯器優化選項的使用。我們將講解如何分析程序運行時的性能瓶頸,例如使用性能分析工具(Profiler)來識彆CPU密集型函數或代碼段。 功耗優化是許多嵌入式係統的關鍵需求。本章將詳細介紹各種低功耗設計技術,包括硬件層麵的低功耗元器件選型、電源管理芯片的應用,以及軟件層麵的低功耗模式(Sleep Mode, Deep Sleep Mode)、時鍾門控、動態電壓頻率調整(DVFS)等。我們將演示如何通過分析功耗麯綫來識彆功耗異常,並采取相應的優化措施。 內存優化也是嵌入式係統設計中的重要考慮因素。我們將介紹如何有效地管理內存,避免內存泄漏,並對程序的代碼段、數據段、堆棧進行閤理的規劃。我們將討論編譯器的內存模型和鏈接腳本的作用,以及如何通過優化內存訪問來提升係統性能。 第七章:嵌入式係統項目實戰 本章將通過一個或多個完整的嵌入式係統項目,將前幾章所學的知識融會貫通。我們將選擇具有代錶性的項目,例如一個智能傢居控製節點、一個數據采集與傳輸模塊、或者一個簡單的嵌入式GUI應用。 在項目實戰中,我們將按照實際的工程開發流程進行。首先,我們將進行需求分析和係統設計,包括硬件選型、軟件架構設計、通信協議選擇等。然後,我們將進行詳細的硬件電路設計和PCB布局布綫。接著,我們將進行嵌入式軟件的開發,包括驅動程序的編寫、RTOS的任務實現、通信協議的集成以及用戶界麵的開發(如果適用)。 在項目開發過程中,我們將持續運用調試和優化技術,確保係統的穩定性和性能。例如,在通信模塊的開發中,我們將使用邏輯分析儀來驗證協議的時序;在功耗敏感的場景中,我們將利用功耗分析工具來優化電源管理策略。 通過項目的全流程實踐,讀者將能夠深刻理解嵌入式係統從概念到落地的整個過程,掌握在實際項目中遇到的常見問題及解決方法,從而提升獨立完成復雜嵌入式項目的能力。 附錄: 常用嵌入式開發工具清單 嵌入式係統常用術語錶 推薦學習資源 結語: 本書力求為讀者提供一個全麵、深入且實用的嵌入式係統設計與開發指南。我們相信,通過係統地學習本書內容,並結閤大量的實踐練習,讀者將能夠構建紮實的理論基礎,掌握核心技術,並在充滿挑戰和機遇的嵌入式領域中取得成功。

用戶評價

評分

一直以來,嵌入式開發都是我嚮往的領域,但總是苦於找不到一本能夠係統性地講解核心知識的書。直到我遇到瞭《ARM Cortex-M0 全可編程SoC原理及實現:麵嚮處理器、協議、外設、編程和操作係統》,纔感覺找到瞭真正的“聖經”。這本書在處理器原理方麵,深入剖析瞭ARMv6-M架構的精髓,包括其獨特的Thumb-2指令集,以及它是如何在保證低功耗的同時,實現高性能的。作者對於指令流水綫、寄存器組以及堆棧操作的講解,都非常到位,讓我對CPU的內部運作有瞭全新的認識。在SoC的實現層麵,書中對各種片上外設的集成方式,比如內存映射、總綫仲裁以及DMA控製器,都進行瞭詳盡的描述,讓我能夠理解不同模塊是如何協同工作的。我尤其喜歡書中對於通信協議的講解,作者並沒有停留在理論層麵,而是深入到各種協議的實現細節,比如SPI的時序圖、I2C的總綫協議,以及USB的端點類型等,都提供瞭非常清晰的圖示和代碼示例,讓我能夠快速掌握如何在實際項目中應用這些協議。外設部分的講解更是讓我受益匪淺,從GPIO的配置到ADC的采樣,再到定時器的模式,都提供瞭非常實用的指導,讓我能夠避免很多彎路。最後,關於編程和操作係統的內容,作者不僅介紹瞭裸機編程的技巧,還闡述瞭實時操作係統的原理和應用,讓我對如何開發復雜的嵌入式係統有瞭更清晰的認識。這本書的內容結構閤理,循序漸進,是一本不可多得的嵌入式開發學習資料。

評分

作為一個對嵌入式領域充滿好奇心的學習者,《ARM Cortex-M0 全可編程SoC原理及實現:麵嚮處理器、協議、外設、編程和操作係統》這本書簡直就是我探索這個世界的最佳嚮導。作者在處理器部分,不僅僅是簡單地介紹Cortex-M0的型號,而是深入挖掘瞭其核心架構的優勢,例如其低功耗特性是如何通過精簡指令集和高效的內存管理來實現的。他對於中斷響應機製的講解,讓我理解瞭為何Cortex-M0能夠快速有效地處理各種外部事件,這對於實時性要求極高的嵌入式應用至關重要。在SoC的實現方麵,書中非常細緻地介紹瞭如何將CPU核心與其他功能模塊,如各種類型的存儲器、時鍾生成單元以及電源管理單元,巧妙地集成在一起,形成一個高性能、低功耗的整體。我特彆欣賞作者在協議方麵的闡述,他用通俗易懂的語言解釋瞭各種通信協議的原理和應用場景,比如如何利用I2C協議實現多設備通信,以及如何通過SPI協議實現高效的數據傳輸,都提供瞭大量的實例和代碼片段,讓我能夠快速上手。外設部分更是讓我驚喜,書中對各種常用外設的功能、配置方法以及實際應用都進行瞭深入的剖析,從簡單的GPIO控製到復雜的ADC采樣,都提供瞭非常清晰的講解和操作指南。更不用說,書中還涉及瞭嵌入式編程的最佳實踐以及實時操作係統的核心概念,這為我構建更復雜的嵌入式應用提供瞭堅實的理論基礎和實踐指導。這本書的內容翔實,邏輯清晰,絕對是我學習嵌入式係統開發過程中最寶貴的一份財富。

評分

我一直對嵌入式係統有著濃厚的興趣,特彆是那些體積小巧但功能強大的處理器。這次入手瞭《ARM Cortex-M0 全可編程SoC原理及實現:麵嚮處理器、協議、外設、編程和操作係統》這本書,簡直是打開瞭新世界的大門!作者在書中深入淺齣地講解瞭Cortex-M0處理器架構的核心理念,從指令集到流水綫,再到中斷處理機製,都進行瞭詳盡的剖析。我尤其喜歡作者對於SoC(System on Chip)設計思想的闡述,如何將CPU、內存、各種外設以及通信接口有機地整閤在一起,形成一個完整的係統,這一點對於理解現代嵌入式設備的運作至關重要。書中對於各種常用通信協議的介紹也相當到位,無論是I2C、SPI這種基礎的片內通信,還是USB、CAN這種更復雜的片外通信,都提供瞭清晰的原理圖和實現示例,讓我能夠快速掌握不同場景下的通信方式。而且,書中對於外設接口的講解也非常實用,從GPIO的配置到ADC/DAC的使用,再到定時器的精妙運用,都提供瞭大量實戰性的指導,讓我不再隻是理論的紙上談兵。當然,最讓我驚喜的是,書中還涉及到瞭嵌入式操作係統的移植和應用,這對於開發大型、復雜的嵌入式項目來說是必不可少的技能。通過閱讀這本書,我不僅鞏固瞭已有的知識,更學到瞭許多全新的概念和技術,為我後續的嵌入式開發之路打下瞭堅實的基礎。

評分

說實話,在拿到《ARM Cortex-M0 全可編程SoC原理及實現:麵嚮處理器、協議、外設、編程和操作係統》這本書之前,我對Cortex-M0的認識僅限於它是一個低功耗的微控製器。但這本書徹底顛覆瞭我的看法。作者在處理器原理部分,用非常精妙的語言闡述瞭Cortex-M0的精簡指令集(RISC)設計理念,以及它是如何在有限的資源下實現高效運算的。他對於嚮量中斷控製器(NVIC)和內存保護單元(MPU)的講解,讓我明白瞭為何Cortex-M0能夠勝任各種嚴苛的嵌入式應用。而SoC的實現,更是讓我大開眼界,書中通過對總綫接口、電源管理單元以及時鍾樹的詳細介紹,讓我看到瞭一個完整的芯片是如何一步步構建起來的。我對協議部分的講解尤為贊賞,作者不僅僅是翻譯標準,而是通過類比和實例,將復雜的通信協議變得生動易懂,比如講解CAN總綫時,他會形象地描述信息如何在網絡中傳遞,以及如何處理仲裁機製,這比死記硬背枯燥的規範要有效得多。外設部分的實例更是豐富多樣,從控製LED的閃爍到讀取傳感器數據,再到實現PWM輸齣,每一個小例子都蘊含著深刻的原理,讓我能夠融會貫通。至於編程和操作係統,作者提供瞭許多實用的技巧,比如如何進行嵌入式C語言的優化,以及如何選擇和配置一個閤適的RTOS來管理任務調度和資源分配。這本書的內容全麵且深入,邏輯清晰,非常適閤想要係統學習Cortex-M0和嵌入式係統開發的讀者。

評分

這本書簡直就是為我量身定做的!我之前嘗試過一些嵌入式開發,但總是感覺碎片化,缺乏係統性的認知。尤其是對於ARM Cortex-M0這種主流的微控製器,總是聽說但又瞭解不深。這次終於找到瞭《ARM Cortex-M0 全可編程SoC原理及實現:麵嚮處理器、協議、外設、編程和操作係統》這本寶典。作者在處理器部分,不僅僅是羅列指令,而是循序漸進地解釋瞭Cortex-M0的設計哲學,例如其低功耗特性是如何通過架構實現的,以及分支預測、緩存等機製對性能的影響。在SoC層麵,書中詳盡地介紹瞭如何將這些處理單元與其他功能模塊集成,從總綫架構到時鍾管理,每一個細節都講解得非常透徹,讓我能窺見一個完整芯片的設計脈絡。協議部分,我非常滿意作者對各種通信協議的講解方式,不隻是枯燥的技術標準,而是結閤實際應用場景,比如如何選擇閤適的協議來實現設備間的數據交換,以及在實際項目中如何進行協議的配置和調試。外設部分更是我的強項,書中對各種常用外設的講解,從寄存器級彆的操作到高級API的封裝,都提供瞭清晰易懂的解釋和代碼示例,讓我能夠快速上手,並且避免瞭一些常見的陷阱。而關於編程和操作係統的內容,更是為我打開瞭新的思路,讓我理解瞭如何在資源受限的環境下進行高效的軟件開發,以及如何利用RTOS來管理多任務和提高係統的響應速度。總而言之,這是一本讓我受益匪淺的書,它係統地梳理瞭嵌入式開發的知識體係,讓我的學習更加高效和深入。

評分

商品滿意

評分

不錯,入門很不錯

評分

很好很不錯

評分

書的內容挺好的,很新。

評分

正版,紙麵清晰,物流快

評分

包裝精美!配送快!

評分

很好很不錯

評分

不錯,入門很不錯

評分

包裝精美!配送快!

相關圖書

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

© 2025 book.cndgn.com All Rights Reserved. 新城书站 版權所有