科技>计算机>操作系统
FreeRTOS实时内核应用指南  

FreeRTOS实时内核应用指南  "

作者:(美)RichardBarry(理查德·巴里)
ISBN:9787121454219
定价:¥98.0
字数:312千字
页数:284
出版时间:2023-05
开本:16开
版次:01-01
装帧:
出版社:电子工业出版社
简介

本书重点讨论了FreeRTOS的堆内存管理、任务管理、队列管理、软件定时器管理、中断管理、资源管理、事件组和任务通知等作为一款优秀的实时操作系统必须具备的功能和特性;为了有助于应用程序的开发和调试,本书也涉及开发者支持和故障排除等内容,总结提高设计开发效率的方法,介绍了多年来用户请求技术支持中排在前几位的问题及其解决方案。

前言

译者序 FreeRTOS 是用于微控制器和小型微处理器的实时操作系统(RTOS),在MIT 开源许可下免费使用,适用于嵌入式领域。FreeRTOS 目前支持 40 多种处理器架构,在嵌入式领域中大量应用,已经成为实时操作系统的事实标准。FreeRTOS 具有以下特性。 1. 值得信赖的小巧和省电内核 FreeRTOS 内核具有公认的健壮性、微小的体积(程序占用低至 9KB)和广泛的设备支持,还支持某些架构的无滴答省电模式。 2. 加快进入市场的时间 通过借鉴现成的详细预配置演示工程,启动新工程开发时不需要从零开始。FreeRTOS 在构建时强调了易用性,快速下载、编译,所以能够使产品更快地进入市场。 3. 广泛的生态系统支持 FreeRTOS 合作伙伴生态系统提供了广泛的选择,包括社区贡献、专业支持和集成的 IDE 与生产力工具。例如,ST 公司针对 STM32 系列 ARM 微控制器的开发平台 STM32CubeMX,已经集成了 FreeRTOS 内核软件包,使开发基于STM32 系列微控制器 + FreeRTOS 的应用程序更加简便和高效。 4. 长期的技术支持 FreeRTOS 通过长期支持(LTS)版本确保功能的稳定性。FreeRTOS LTS 库每两年就会有安全更新和关键错误修复,由亚马逊网络服务(AWS)负责维护。由于 FreeRTOS 的以上特性,FreeRTOS 在基于微控制器和小型微处理器的嵌入式领域得到了广泛应用。例如,在物联网领域,因为对系统功耗有严格要求,所以通常选用低功耗微控制器;同时联网功能要求实现网络协议,采用 FreeRTOS + 网络组件更容易实现。在我们公司基于 ARM Cortex 系列处理器的单板计算机和基于 FPGA ZYNQ 系列的信号处理板等产品中也使用了FreeRTOS。根据实际使用情况,我们认为 FreeRTOS 功能强大且易于使用,可以改变程序员的编程思路和模式,使应用程序更加健壮且开发效率更高。 为了使更多的设计师了解和学习 FreeRTOS,并尽快在设计开发工作中应用,我们将 Mastering the FreeRTOS Real Time Kernel a Hands-on Tutorial Guide 一书翻译成中文。本书作者是亚马逊网络服首席工程师、FreeRTOS 创始人理查德 ?? 巴里,所以本书具有权威性,是一本为初学者提供掌握 FreeRTOS 实时内核的上手教程指南。 本书英文版包括前言、第 1 章~第 12 章等,重点讨论了 FreeRTOS 的堆内存管理、任务管理、队列管理、软件定时器管理、中断管理、资源管理、事件组和任务通知等优秀的实时操作系统必须具备的功能和特性;为了有助于应用程序的开发和调试,本书也涉及了开发者支持和故障排除等内容,总结了提高设计开发效率的方法,介绍了多年来用户请求技术支持中排在前几位的问题及其解决方案。 本书结构清晰,知识讲解循序渐进,重点突出;对 FreeRTOS 内核提供的主要 API 函数,以表格形式详细说明其功能、参数和返回值,方便读者随时查阅;对任务的抢占式调度、任务与任务之间及任务与中断之间进行同步等重要且较抽象的概念,以时序图方式讲解执行顺序,便于读者直观理解。另外,本书的另一重要特色和优点是例程丰富,FreeRTOS 内核提供的主要功能几乎都用例程进行了演示,而且例程都有完整的注释。读者完全可以借助这些例程,首先读懂,然后利用 FreeRTOS 在 Windows 操作系统里的模拟器(FreeRTOS Windows Port)亲手操作实践,加深理解,从而快速地掌握FreeRTOS 实时内核。本书介绍的知识和应用程序设计思路,与其他实时操作系统是相通的,完全可以实现触类旁通,因此本书也可以作为学习其他实时操作系统的参考用书。 本书讲解的 FreeRTOS 内核基于 V8.xx,与内核 V9.xx 和 V10.xx 相比,内核的主要功能和知识点是相同的,并且 V9.xx 和 V10.xx 是向下兼容 V8.xx 的。掌握了 FreeRTOS 内核 V8.xx,再转向内核V9.xx 和 V10.xx,不会有任何障碍。而且,本书在讲解内核函数时,还专门提到 V9.00 新增的对应函数或功能。中文版会以附录形式专门介绍 FreeRTOS 内核的新版本、新特性及 V9 和 V10 的亮点。 另外,本书英文版第 3 章 3.11 节和第 10 章无具体内容,我们根据官网上的相关内容做了适当补充。 本书的翻译过程也是我的学习过程,由于中英文两种语言的差异和个人理解的偏差,以及嵌入式领域对专业术语的命名没有完全统一,中文版必定存在疏漏之处和不准确的描述,恳请读者批评和指正,非常感谢!联系邮箱:viofni@163.com。 本书在翻译过程中,得到了中电科蓉威电子技术有限公司各部门领导和同事的关心与帮助,特别是总经理张伟先生和开发部经理何斌先生一直给予我热情鼓励和大力支持。另外,网友“踏雪寻梅”在中文排版方面提供了协助。在此向他们深表谢意! 我们承担的四川省科研基金项目“基于 3S+C 技术的多源异构数据融合与应用研究”(立项编号:2021YFG0017)借鉴和参考了 FreeRTOS 内核,本书的出版得到了该基金项目的资助,谨向负责该基金项目的领导和同事致谢。 黄 华 中电科蓉威电子技术有限公司 2022 年 8 月

目录

第 1 章 FreeRTOS 发行版 / 1 1.1 本章知识点及学习目标 / 1 1.2 了解 FreeRTOS 发行版 / 1 1.3 演示程序 / 5 1.4 创建 FreeRTOS 工程 / 6 1.5 数据类型和编码风格指南 / 8 第 2 章 堆内存管理 / 11 2.1 本章知识点及学习目标 / 11 2.2 内存分配方案示例 / 12 2.3 与堆相关的实用函数 / 22 第 3 章 任务管理 / 25 3.1 本章知识点及学习目标 / 25 3.2 任务函数 / 25 3.3 顶层任务状态 / 26 3.4 创建任务 / 27 3.5 任务优先级 / 34 3.6 时间测量和滴答中断 / 35 3.7 扩展“非运行”状态 / 38 3.8 空闲任务和空闲任务钩子 / 46 3.9 更改任务的优先级 / 49 3.10 删除任务 / 53 3.11 线程本地存储 / 57 3.12 调度算法 / 59 第 4 章 队列管理 / 69 4.1 本章知识点及学习目标 / 69 4.2 队列的特点 / 69 4.3 使用队列 / 72 4.4 从多个来源接收数据 / 79 4.5 处理大数据或可变大小的数据 / 86 4.6 从多队列接收 / 91 4.7 使用队列创建邮箱 / 99 第 5 章 软件定时器管理 / 103 5.1 本章知识点及学习目标 / 103 5.2 软件定时器回调函数 / 103 5.3 软件定时器的属性和状态 / 104 5.4 软件定时器的上下文 / 106 5.5 创建和启动软件定时器 / 109 5.6 定时器 ID / 115 5.7 更改定时器的周期 / 117 5.8 重置软件定时器 / 120 第 6 章 中断管理 / 125 6.1 本章知识点及学习目标 / 125 6.2 在 ISR 中使用 FreeRTOS API / 126 6.3 推迟中断处理 / 129 6.4 用于同步的二进制信号量 / 130 6.5 计数信号量 / 143 6.6 推迟工作到 RTOS 守护任务 / 147 6.7 在中断服务程序中使用队列 / 152 6.8 中断嵌套 / 158 第 7 章 资源管理 / 163 7.1 本章知识点及学习目标 / 163 7.2 临界区和暂停调度器 / 166 7.3 互斥量(和二进制信号量) / 169 7.4 守门人任务 / 182 第 8 章 事件组 / 187 8.1 本章知识点及学习目标 / 187 8.2 事件组的特征 / 188 8.3 使用事件组进行事件管理 / 189 8.4 使用事件组进行任务同步 / 199 第 9 章 任务通知 / 207 9.1 本章知识点及学习目标 / 207 9.2 任务通知:优势和局限 / 208 9.3 使用任务通知 / 209 第 10 章 低功耗支持 / 233 10.1 本章知识点及学习目标 / 233 10.2 节能及与节能有关的宏 / 233 10.3 ARM Cortex-M 微控制器的低功耗实现 / 236 第 11 章 开发者支持 / 241 11.1 本章知识点及学习目标 / 241 11.2 configASSERT() / 241 11.3 FreeRTOS+Trace / 243 11.4 与调试相关的钩子(回调)函数 / 246 11.5 查看运行时信息和任务状态信息 / 246 11.6 跟踪钩子宏 / 254 第 12 章 故障排除 / 259 12.1 本章知识点及学习目标 / 259 12.2 中断优先级 / 259 12.3 栈溢出 / 260 12.4 函数 printf()和 sprintf()的不当使用 / 262 12.5 错误的其他常见来源 / 263 附录 A FreeRTOS 的新版本和新特性 / 265 A.1 FreeRTOS 版本 9 / 265 A.2 FreeRTOS 版本 10 / 268

作者简介

编辑推荐

作者寄语

电子资料

www.luweidong.cn

下一个