FreeRTOS實戰:用STM32+SEGGER打造工業級實時嵌入式系統(第2版)

吉姆·尤爾(Jim Yuill)、彭恩·林德(Penn Linder) 王士喜 張嘉旸

  • FreeRTOS實戰:用STM32+SEGGER打造工業級實時嵌入式系統(第2版)-preview-1
FreeRTOS實戰:用STM32+SEGGER打造工業級實時嵌入式系統(第2版)-preview-1

相關主題

商品描述

隨著嵌入式技術飛速發展,實時操作系統已成為嵌入式產品開發的核心基礎,FreeRTOS憑借輕量化、高可靠性、易用性等優勢,被廣泛應用於各類單片機項目中。在實際開發中,如何合理運用RTOS任務、通信組件、同步機制,結合硬件外設驅動完成系統搭建,並做好內存管控、問題調試,是嵌入式開發人員必須掌握的核心技能。 《FreeRTOS實戰:用STM32+SEGGER打造工業級實時嵌入式系統(第2版)》圍繞FreeRTOS展開全面講解,共分為5個部分。第1部分介紹RTOS、配套開發板與開發工具,講解裸機開發中經典的超級循環結構,為後續學習築牢基礎;第 2 部分聚焦FreeRTOS核心能力,詳解調度器、任務、同步機制與任務間通信相關API;第3部分結合硬件實戰,講解基於FreeRTOS開發UART、USB等外設驅動的方法,演示任務、中斷、DMA的協同使用,並講解松耦合架構設計;第4部分講解FreeRTOS內存管理、多核/多處理器應用以及系統故障排查與調試技巧;第5部分為參考附錄,提供開發工具速查、配套參考資料,以及FreeRTOS項目的創建與安裝方法。 《FreeRTOS實戰:用STM32+SEGGER打造工業級實時嵌入式系統(第2版)》內容由淺入深、理論結合實戰,既適合嵌入式系統入門者從零學習RTOS與FreeRTOS開發,也可供具備一定經驗的嵌入式工程師參考,用於提升FreeRTOS項目開發、驅動設計與系統調試能力。

作者簡介

Jim Yuill(吉姆·尤爾),資深計算機系統工程師,擁有30余年的行業經驗,涉足操作系統開發、網絡安全研發、網絡系統編程及高效教學等多個領域。他持有計算機科學博士學位,博士論文研究方向為網絡安全,其博士論文在業內具有很高的引用量。 Penn Linder(彭恩·林德),現任IVEK公司高級電氣工程師,該公司專註於工業泵與控制器的研發制造。自1995年在賓夕法尼亞州立大學修讀第一門嵌入式控制器課程起,他便對嵌入式系統產生了濃厚的興趣。此後,他始終投身於這一領域,先後在多家企業負責嵌入式系統相關的軟硬件產品設計工作。他參與研發的產品涵蓋照明控制設備、醫療設備及工業自動化設備等。在職業生涯早期,他主要為8位微控制器(MCU)編寫裸機匯編代碼;近年來,則使用C語言與FreeRTOS,為32位ARM Cortex-M系列處理器開發嵌入式軟件。

目錄大綱

第1部分 RTOS、開發板與工具簡介
第1章 實時系統簡介
1.1 究竟什麼是“實時”
1.1.1 時序要求的範圍
1.1.2 保證實時行為的方法
1.2 硬件與軟件在實時系統中的作用
1.2.1 純硬件實現
1.2.2 底層固件實現
1.2.3 基於RTOS的固件
1.2.4 基於RTOS的軟件
1.2.5 精心設計的操作系統軟件
1.3 RTOS的定義
1.3.1 硬實時系統
1.3.2 固實時系統
1.3.3 軟實時系統
1.4 實際應用中的實時系統
1.4.1 RTOS的類型範圍
1.4.2 本書使用的RTOS
1.5 選擇RTOS
1.6 總結
第2章 開發板簡介
2.1 開發板概述
2.2 了解開發板的組件
2.2.1 MCU
2.2.2 CPU
2.2.3 MCU區域的其他組件
2.2.4 ST-LINK調試探針
2.3.1 MCU產品系列
2.3.2 MCU型號命名規則
2.3.3 開發板產品系列與型號命名規則
2.4 總結
第3章 開發工具介紹
3.1 本書說明與示例程序的使用方法
3.2 IDE與示例程序
3.2.1 STM32CubeIDE簡介
3.2.2 STM32CubeIDE的安裝
3.2.3 本書示例程序的安裝
3.2.4 ProjectExplorer的使用
3.2.5 編輯器的使用
3.2.6 項目的構建
3.3 J-Link、Ozone與SystemView等調試工具
3.3.1 SEGGERJ-Link的使用
3.3.2 工具的下載與安裝
3.3.3 將ST-LINK轉換為J-Link
3.3.4 SEGGEROzone的使用
3.3.5 SEGGERSystemView的使用
3.4 總結
第4章 理解超級循環
4.1 超級循環簡介
4.1.1 基本的超級循環
4.1.2 實時系統中的超級循環
4.2 利用中斷改進超級循環
4.2.1 中斷簡介
4.2.2 理解ISR與抖動
4.2.3 中斷與超級循環
4.3 為超級循環添加定時器
4.3.1 讓定時超級循環進入休眠狀態
4.3.2 利用定時超級循環的特性
4.3.3 時序相關的性能分析
4.4 總結
第5章 實現超級循環
5.1 超級循環示例程序
5.1.2 示例程序的工作原理
5.1.3 設計與測試註意事項
5.1.4 運行示例程序
5.2 了解系統API與硬件特性
5.2.1 HAL_DBGMCU_EnableDBGSleepMode
5.2.2 disable_irq
5.3 超級循環程序的開發方法
5.3.1 創建超級循環程序
5.3.2 安裝並配置調試器軟件
5.3.3 構建並運行固件
5.3.4 使用示波器測量時序
5.4 總結
第2部分 FreeRTOS調度器、任務與核心API
第6章 理解RTOS任務
6.1 FreeRTOS調度器與任務:概念概述
6.1.1 為何需要舍棄單純的超級循環
6.1.2 RTOS任務與超級循環函數的對比
6.1.3 將超級循環函數轉換為RTOS任務
6.2 選擇FreeRTOS作為RTOS
6.3 FreeRTOS調度器與任務實戰
6.3.1 示例程序的理解與使用
6.3.2 FreeRTOS的安裝與配置
6.4 總結
第7章 運行FreeRTOS調度器
7.1 創建任務與啟動調度器
7.1.1 初始化硬件
7.1.2 定義任務函數
7.1.3 創建任務
7.1.4 檢查返回值
7.1.5 啟動調度器
7.2 刪除任務
7.2.1 任務自行刪除
7.2.2 從其他任務刪除任務
7.3 代碼實踐
7.3.1 構建並運行代碼
7.3.2 Ozone的其他功能
7.3.3 使用SystemView分析任務執行
7.4 理解調度器
7.4.1 理解FreeRTOS任務的狀態
7.4.2 空閒任務
7.4.3 調度器的運行機制與運行時機
7.4.4 調度器架構
7.5 任務實現與問題排查
7.5.1 任務內存分配
7.5.2 內存保護任務的創建
7.5.3 任務創建方式匯總
7.5.4 優化任務狀態
7.5.5 任務啟動問題排查
7.6 總結
第8章 數據保護與任務同步
8.1 運行本章的示例程序
8.2 信號量—用於任務同步
8.2.1 理解信號量
8.2.2 使用信號量
8.3 優先級翻轉—信號量的錯誤使用方式
8.3.1 理解優先級翻轉
8.3.2 優先級翻轉示例程序
8.4 互斥鎖—增強型信號量
8.4.1 理解互斥鎖
8.4.2 解決優先級翻轉的示例程序
8.4.3 避免互斥鎖獲取超時
8.5 競態條件—任務未正確同步時引發
8.5.1 使用互斥鎖和信號量避免競態條件
8.5.2 競態條件示例
8.6 軟件定時器
8.6.1 理解軟件定時器
8.6.2 示例程序:一次性定時器與周期性定時器
8.6.3 軟件定時器使用準則
8.7 總結
第9章 任務間通信
9.1 理解RTOS隊列
9.1.2 簡單隊列:接收數據項
9.1.3 滿隊列:發送數據項
9.1.4 空