展开全部

主编推荐语

《FreeRTOS实战》全面解析嵌入式系统开发,兼顾理论与实战,助力工程师提升能力。

内容简介

随着嵌入式技术飞速发展,实时操作系统已成为嵌入式产品开发的核心基础,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项目开发、驱动设计与系统调试能力。

目录

  • 版权信息
  • 版  权
  • 内容提要
  • 关于作者
  • 关于技术审稿人
  • 献  词
  • 前  言
  • 适用读者
  • 本书组织结构
  • 如何充分利用本书
  • 硬件与开发工具
  • 资源与支持
  • 资源获取
  • 提交勘误
  • 与我们联系
  • 关于异步社区和异步图书
  • 第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 了解硬件文档
  • 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 Project Explorer的使用
  • 3.2.5 编辑器的使用
  • 3.2.6 项目的构建
  • 3.3 J-Link、Ozone与SystemView等调试工具
  • 3.3.1 SEGGER J-Link的使用
  • 3.3.2 工具的下载与安装
  • 3.3.3 将ST-LINK转换为J-Link
  • 3.3.4 SEGGER Ozone的使用
  • 3.3.5 SEGGER SystemView的使用
  • 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.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.1 简单队列:发送数据项
  • 9.1.2 简单队列:接收数据项
  • 9.1.3 满队列:发送数据项
  • 9.1.4 空队列:接收数据项
  • 9.1.5 用于任务间通信的队列
  • 9.2 通过队列按值传递数据
  • 9.2.1 按值传递1字节数据
  • 9.2.2 按值传递复合数据类型
  • 9.2.3 理解队列对执行流程的影响
  • 9.2.4 示例的重要说明
  • 9.3 通过队列按引用传递数据
  • 9.3.1 何时按引用传递
  • 9.3.2 按值传递
  • 9.3.3 按引用传递
  • 9.3.4 重要说明
  • 9.4 任务通知
  • 9.4.1 使用任务通知传递简单数据
  • 9.4.2 任务通知的其他操作
  • 9.4.3 任务通知与队列的对比
  • 9.4.4 索引式任务通知
  • 9.5 总结
  • 第3部分 利用FreeRTOS构建系统
  • 第10章 驱动程序与ISR
  • 10.1 UART简介
  • 10.1.1 UART的配置
  • 10.2 创建轮询式UART驱动程序
  • 10.2.1 理解示例程序
  • 10.2.2 运行示例程序
  • 10.2.3 性能分析
  • 10.2.4 轮询式驱动程序的优缺点
  • 10.2.5 轮询式驱动程序的适用场景
  • 10.3 FreeRTOS任务与ISR的对比
  • 10.3.1 任务与ISR的区别
  • 10.3.2 在ISR中调用FreeRTOS API
  • 10.3.3 配置用于FreeRTOS的中断
  • 10.4 创建基于ISR的驱动程序
  • 10.4.1 基于队列的驱动程序
  • 10.4.2 性能分析
  • 10.4.3 基于缓冲区的驱动程序
  • 10.4.4 性能分析
  • 10.5 总结
  • 第11章 更高效的驱动程序与ISR
  • 11.1 构建基础的基于DMA的驱动程序
  • 11.1.1 DMA概念介绍
  • 11.1.2 配置DMA外设
  • 11.1.3 启动DMA接收
  • 11.1.4 基于DMA的缓冲区驱动程序
  • 11.1.5 性能分析
  • 11.2 构建增强型的基于DMA的驱动程序
  • 11.2.1 流缓冲区介绍
  • 11.2.2 双缓冲DMA介绍
  • 11.2.3 驱动程序的实现
  • 11.2.4 流缓冲区的优化方案
  • 11.3 驱动模型的选择
  • 11.3.1 驱动模型选型的核心问题
  • 11.3.2 驱动模型选型的经验法则
  • 11.4 选用第三方库和驱动程序
  • 11.5 总结
  • 第12章 在任务间共享硬件外设
  • 12.1 理解USB消息的发送机制
  • 12.2 使用简易的USB API发送消息
  • 12.2.1 理解代码
  • 12.2.2 运行代码
  • 12.2.3 代码分析
  • 12.2.4 代码改进方案
  • 12.3 基于流缓冲区实现VCP驱动
  • 12.3.1 理解应用程序
  • 12.3.2 理解驱动程序
  • 12.3.3 运行代码
  • 12.3.4 分析驱动程序
  • 12.4 增强VCP驱动以支持多任务调用
  • 12.4.1 理解应用程序
  • 12.4.2 理解驱动程序
  • 12.4.3 性能数据的采集机制
  • 12.5 总结
  • 第13章 利用队列实现松耦合
  • 13.1 创建命令队列
  • 13.1.1 LED的亮度函数
  • 13.1.2 确定队列内容
  • 13.1.3 定义架构
  • 13.1.4 使用代码
  • 13.2 为新目标重用队列定义
  • 13.2.1 队列接口
  • 13.2.2 iPWM接口
  • 13.3 理解队列作为接口的作用
  • 13.4 总结
  • 第4部分 系统设计与故障排除
  • 第14章 FreeRTOS内存管理
  • 14.1 理解内存分配
  • 14.1.1 静态内存
  • 14.1.2 栈内存
  • 14.1.3 堆内存
  • 14.1.4 堆碎片
  • 14.2 FreeRTOS原语的静态分配与动态分配
  • 14.2.1 动态分配示例
  • 14.2.2 静态分配示例
  • 14.2.3 完全禁用动态分配
  • 14.3 FreeRTOS堆实现
  • 14.3.1 5种堆实现
  • 14.3.2 FreeRTOS堆实现的对比
  • 14.3.3 选择FreeRTOS堆实现
  • 14.4 替换malloc和free
  • 14.5 监控栈和堆问题
  • 14.5.1 监控栈空间
  • 14.5.2 监控堆空间
  • 14.6 使用内存保护单元(MPU)
  • 14.7 总结
  • 第15章 多处理器与多核系统
  • 15.1 多核与多处理器系统简介
  • 15.2 多核系统详解
  • 15.2.1 异构多核系统
  • 15.2.2 核心间通信
  • 15.2.3 遗留应用扩展
  • 15.2.4 高需求硬实时系统
  • 15.2.5 同构多核系统
  • 15.3 多处理器系统详解
  • 15.3.1 分布式系统
  • 15.3.2 并行开发
  • 15.3.3 设计复用
  • 15.3.4 高可靠性系统
  • 15.4 处理器间通信详解
  • 15.4.1 选择通信介质的考量因素
  • 15.4.2 通信标准
  • 15.5 多核与多处理器系统的选择
  • 15.5.1 何时使用多核MCU
  • 15.5.2 何时使用多处理器系统
  • 15.6 总结
  • 第16章 故障排除技巧与后续步骤
  • 16.1 FreeRTOS通用调试技术
  • 16.1.1 使用断言
  • 16.1.2 用于分析任务和ISR的工具
  • 16.1.3 内存使用的监控
  • 16.1.4 栈溢出检测
  • 16.2 调试工具故障排除
  • 16.2.1 Ozone故障排除
  • 16.2.2 SystemView故障排除
  • 16.3 后续步骤
  • 第5部分 参考资料与FreeRTOS安装说明
  • 附录A 工具快速参考
  • STM32CubeIDE
  • Ozone
  • SystemView
  • 附录C 创建FreeRTOS项目及安装FreeRTOS
  • C.1 创建用于学习FreeRTOS的IDE项目
  • C.1.1 方法1:复制示例程序的IDE工作区
  • C.1.2 方法2:复制本书代码仓库中提供的FreeRTOS项目
  • C.2 复制并重命名项目(克隆)
  • C.3 安装FreeRTOS和SystemView
  • C.3.1 概述
  • C.3.2 安装过程
  • C.3.3 创建IDE项目
  • C.3.4 安装FreeRTOS
  • C.3.5 编写并运行FreeRTOS程序
  • C.3.6 安装SystemView
  • C.4 安装总结
展开全部

评分及书评

尚无评分
目前还没人评分

出版方

人民邮电出版社

人民邮电出版社是工业和信息化部主管的大型专业出版社,成立于1953年10月1日。人民邮电出版社坚持“立足信息产业、面向现代社会、传播科学知识、服务科教兴国”,致力于通信、计算机、电子技术、教材、少儿、经管、摄影、集邮、旅游、心理学等领域的专业图书出版。