新書推薦:
《
少女映像室 唯美人像摄影从入门到实战
》
售價:NT$
505.0
《
詹姆斯·伍德系列:不负责任的自我:论笑与小说(“美国图书评论奖”入围作品 当代重要文学批评家詹姆斯·伍德对“文学中的笑与喜剧”的精湛研究)
》
售價:NT$
398.0
《
武当内家散手
》
售價:NT$
230.0
《
诛吕:“诸吕之乱”的真相与吕太后时期的权力结构
》
售價:NT$
454.0
《
炙野(全2册)
》
售價:NT$
356.0
《
女人的胜利
》
售價:NT$
254.0
《
数据有道:数据分析+图论与网络+微课+Python编程(鸢尾花数学大系:从加减乘除到机器学习)
》
售價:NT$
1214.0
《
500万次倾听:陪伤心的人聊聊
》
售價:NT$
245.0
|
編輯推薦: |
物联网时代,32位MCU性能大幅提高,价格逐渐走低,成为智能产品开发和设计的选择。本书基于STM32F4、STM32Cube软件工具,以及集成在Cube软件中的FreeRTOS嵌入式实时多任务操作系统进行撰写,部分章节使用了Tracealyzer RTOS分析软件,这套组合是目前物联网和嵌入式开发的主流平台,无论对于有实际项目需求的开发者还是在高校学习并准备参加电子大赛的学生都具备实际应用价值。
国内出版的FreeRTOS的图书很少,内容多为内核详述以及面向产品和外设应用的开发指南,很少有课程和图书详细讲解μC/OS和FreeRTOS内核机制并分析内核行为,作者更是进一步将数十年实时系统设计经验,落地在实战性的STM32F4、SMT32Cube和FreeRTOS软件上,这是本书的亮点。
|
內容簡介: |
《嵌入式实时操作系统——基于STM32Cube、FreeRTOS和Tracealyzer的应用开发》(原书第2版)从实战角度出发,依托STM32F4 Discovery开发套件丰富的软硬件开发资源,基于嵌入式实时多任务操作系统FreeRTOS,通过一系列的实验,深入分析了RTOS的工作原理和实现机制。《嵌入式实时操作系统——基于STM32Cube、FreeRTOS和Tracealyzer的应用开发》(原书第2版)*篇介绍了嵌入式系统应用开发流程及软硬件开发工具。第二篇内核基础实验将RTOS理论付诸实践,演示了任务创建,优先级调度策略,多任务应用面临的共享资源的争用、性能降低及优先级反转等问题。实验实现了各种任务交互的机制,帮助读者直观地了解RTOS的工作机理。第三篇针对多任务RTOS应用的运行时行为,采用Tracealyzer工具,可视化FreeRTOS的运行行为,展示了运行时分析工具的价值,通过具体的应用分析,帮助读者理解和控制软件的运行时行为。第四篇介绍了STM32F4硬件定时器机制,为RTOS任务故障检测奠定硬件基础。第五篇和第六篇介绍了如何提高代码的重用性及自学RTOS的在线资料。 《嵌入式实时操作系统——基于STM32Cube、FreeRTOS和Tracealyzer的应用开发》(原书第2版)的读者可以是有一定嵌入式系统与MCU开发知识、希望学习STM32和FreeRTOS的初学者,也可以是有一定RTOS开发经验、希望进一步深入学习RTOS的工程师、高校教师和学生。本书既可以作为嵌入式系统相关课程辅助教材,也可以作为工程技术人员项目开发的参考资料。
|
關於作者: |
Jim Cooling 博士,在嵌入式实时操作系统领域拥有多年经验,出版了多本著作,涵盖嵌入式系统的许多方面,如实时接口、编程、软件设计和软件工程。曾任英国飞机公司飞行控制系统设计师; Marconi Radar Systems Ltd.的电子电路和系统设计师;海军电子控制系统项目经理;英国拉夫堡大学研究员和高级讲师。现为Lindentree Associates顾问兼合伙人,为嵌入式实时系统提供咨询和培训。
译者简介:
何小庆 嵌入式系统知名专家,《单片机与嵌入式系统应用》副主编,嵌入式系统联谊会秘书长,麦克泰软件公司创始人。长期从事嵌入式与物联网技术、产业和教育方面工作,发表论文100余篇,有《嵌入式操作系统风云录》《嵌入式软件精解》等著译作5本,在高校和企业讲授物联网和创业课程。
张爱华 麦克泰软件公司技术总监,长期从事RTOS技术研究与工程应用,有《嵌入式实时操作系统μC/OS –Ⅲ应用开发》等译作2本,是FreeRTOS 和μC/OS课程的主讲老师。
付元斌 麦克泰软件公司高级应用工程师,长期从事嵌入式软件工具研究与工程应用。
|
目錄:
|
篇应用代码开发
第1章开发流程及软硬件开发工具
1.1从设计到编程的实践方法
1.1.1概述
1.1.2源代码生成
1.1.3目标代码生成
1.2STM32Cube软件工具介绍
1.2.1工具概述
1.2.2STM32CubeMX特性
1.2.3STM32Cube嵌入式软件库及
文档
1.3实用工具
1.3.1集成开发环境
1.3.2STM32F4 Discovery Kit硬件
1.4STM32Cube图形工具
1.4.1STM32CubeMX概述
1.4.2选择微控制器
1.4.3使用向导设置引脚功能
1.4.4代码生成
1.4.5自动生成的代码
1.5STM32Cube HAL库
1.6Cube工程中的FreeRTOS配置
1.7STM32CubeIDE开发平台
1.7.1STM32CubeIDE开发环境
概述
1.7.2Eclipse平台介绍
1.7.3CubeIDE使用介绍
1.7.4CubeIDE的透视图、视图及
编辑器
1.7.5在CubeIDE中构建和安装
项目
1.8要点回顾
第二篇内核基础实验
第2章多任务设计与实现基础
2.1预备实验简单I/O交互
2.1.1概述
2.1.2简单I/O交互框图
2.1.3设计实现
2.1.4实验API参考指南
2.1.5实验回顾
2.2实验1创建并运行连续执行的单个
任务
2.2.1任务框图
2.2.2设计实现
2.2.3使用osDelay函数实现延时
2.2.4使用FreeRTOS原生API实现
延时
2.2.5进一步实验
2.2.6实验回顾
2.2.7实验附录
2.3实验2周期任务实现
2.3.1延时实现
2.3.2周期任务实现
2.3.3实验分析
2.3.4补充实验
2.3.5实验回顾
2.3.6实验附录: DelayUntil函数
描述
2.4实验3创建和运行多个独立的周期
任务
2.4.1背景介绍
2.4.2设计框图
2.4.3设计实现
2.4.4实验回顾
2.5实验4优先级抢占调度策略分析
2.5.1背景介绍
2.5.2设计概述
2.5.3实验描述
2.5.4实验细节
2.5.5实验回顾
第3章共享资源使用
3.1实验5访问竞争问题分析
3.1.1竞争问题介绍
3.1.2竞争问题概述
3.1.3实验细节
3.1.4实验回顾
3.2实验6通过挂起调度器消除资源
竞争
3.2.1方法介绍
3.2.2实验细节
3.2.3实验回顾
3.3实验7演示系统性能的降低
3.3.1介绍
3.3.2实验细节
3.3.3实验回顾
3.4实验8使用信号量
保护临界代码
3.4.1背景介绍
3.4.2实验细节
3.4.3实验回顾
3.5实验9使用互斥信号量保护临界
代码
3.5.1实现细节
3.5.2实验回顾
3.6实验10使用封装机制提升系统
安全
3.6.1机制介绍
3.6.2实现概述
3.6.3实验实现
3.6.4实验回顾
3.7实验11优先级反转影响演示
3.7.1介绍
3.7.2实现及关键代码
3.7.3实验实现
3.7.4实验讨论及回顾
3.8实验12使用优先级继承机制消除
优先级反转
3.8.1实验介绍
3.8.2问题概述
3.8.3实验回顾
第4章任务交互实现
4.1实验13使用标志协调任务活动
4.1.1机制介绍
4.1.2实现概述
4.1.3实现细节
4.1.4实验总结
4.2实验14使用事件标志实现单向
同步
4.2.1实现介绍
4.2.2事件标志、信号及FreeRTOS/
CMSIS的关系
4.2.3实验实现
4.2.4总结与回顾
4.3实验15使用信号量实现单向同步
4.3.1简介及实现
4.3.2实验细节
4.3.3总结与回顾
4.4实验16使用信号量实现双向同步
4.4.1双向同步介绍
4.4.2实现细节
4.4.3总结与回顾
4.5实验17使用信号量实现多个任务
同步
4.5.1原理介绍
4.5.2实现细节
4.5.3单信号量会合阻塞实现
4.5.4N个信号量会合阻塞实现
4.5.5回顾与总结
4.6实验18使用内存池提供数据共享
机制
4.6.1实现介绍
4.6.2实现细节
4.6.3实验回顾
4.7实验19使用队列传输数据
4.7.1队列介绍
4.7.2实验细节
4.7.3具体实现
4.7.4实验回顾
4.7.5CMSISRTOS API中的
状态和错误编码
4.8实验20使用邮箱传输数据
4.8.1邮箱介绍
4.8.2邮箱构建
4.8.3实验细节
4.8.4实验回顾
4.8.5实验附录使用FreeRTOS
原生API构建邮箱
4.9实验21按键中断服务实现
4.9.1介绍
4.9.2使用CubeMX自动生成
ISR代码框架
4.9.3实验细节
4.9.4实验回顾
4.10实验22演示为何需要快速实现
中断处理
4.10.1实验概述和时间参数
4.10.2使用CubeMX
4.10.3实验回顾
4.11实验23使用可延期服务器减少
ISR影响
4.11.1中断信号延时响应
4.11.2实验概述和时间细节
4.11.3代码生成及运行
4.11.4实验回顾
第三篇使用Tracealyzer
可视化软件行为
第5章Tracealyzer集成和配置
指南
5.1Tracealyzer实验1Tracealyzer
介绍
5.2集成跟踪记录器库
5.2.1将记录器库添加到项目
5.2.2为应用配置库文件
5.3在FreeRTOS中启用Tracealyzer
记录器
5.4配置CubeMX项目以符合工具需求
5.5初始化/启动跟踪记录
5.5.1快照跟踪模式
5.5.2流跟踪模式
5.6附加检查
第6章Tracealyzer的基本特点和
使用
6.1Tracealyzer实验2Tracealyzer
基础知识
6.2Tracealyzer实验3分析跟踪记录
6.3Tracealyzer实验4一个双任务
设计的运行时分析
6.4Tracealyzer实验5研究优先级
抢占调度
6.4.1实验5.1跟踪抢占调度
任务的执行
6.4.2实验5.2设定跟踪起始
位置
6.5Tracealyzer实验6分析FreeRTOS
的延时函数
6.5.1实验6.1
6.5.2实验6.2
6.5.3实验6.3
6.5.4评论和小结
第7章流模式操作介绍
Tracealyzer实验7使用流模式进行跟踪
记录
第8章分析资源共享和任务间
通信
8.1Tracealyzer实验8互斥: 使用受
保护的共享资源
8.2Tracealyzer实验9研究任务之间的
非同步数据传输
8.2.1软件行为概述
8.2.2跟踪记录: 无报警场景
8.2.3跟踪记录: 报警场景
8.3Tracealyzer实验10研究任务之间的
同步数据传输
8.4Tracealyzer实验11评估可延期
服务器的使用
8.4.1总体描述
8.4.2任务时间
8.4.3实验11a
8.4.4实验11b
8.4.5实验11c
第四篇扩展你的知识、
超越RTOS范围
第9章STM Studio软件工具
9.1STM Studio介绍
9.2STM Studio的使用
9.3回顾和总结
第10章STM32F4通用定时器
10.1附加实验1使用定时器定时产生
ISR调用
10.1.1定时器: ISR运行模式
简介
10.1.2热身实验细节
10.1.3关于定时器的细节
10.1.4实验回顾
10.2附加实验2控制定时器产生
的ISR
10.2.1实验细节
10.2.2实验回顾
10.3附加实验3产生波形: 脉冲宽度
调制
10.3.1脉冲宽度调制是什么
10.3.2在STM32F411上产生
PWM波形
10.3.3实验回顾
10.4附加实验4使用PWM控制
LED灯亮度
10.4.1实验简介
10.4.2低速PWM
10.4.3快速PWM
10.4.4实验回顾
10.5附加实验5产生波形: 脉冲
计数
10.5.1实验简介
10.5.2实验细节
10.5.3实验回顾
10.6附加实验6测量脉冲间隔
10.6.1实验简介
10.6.2实验1使用主动采样
方式
10.6.3实验1回顾
10.6.4实验2使用基于中断的
方式
10.6.5实验2回顾
10.7附加实验7测量脉冲频率
10.7.1实验简介
10.7.2实验细节
10.7.3实验回顾
第11章使用STM32F4看门狗
定时器
11.1附加实验8看门狗定时器基础
11.1.1序言
11.1.2STM32F4独立看门狗
简介
11.1.3实验细节: 使用STM库
函数的简单样例
11.1.4实验回顾
11.2附加实验9正确使用
看门狗定时器
11.3附加实验10使用CubeMX
激活IWDG
11.4附加实验11使用CubeMX针对
应用设置WDT
11.5附加实验12看门狗的窗口化
运行
11.5.1序言
11.5.2STM32F4窗口看门狗
(WWDG)的概念结构
11.5.3STM32F4 WWDG: 功能和
行为细节
11.5.4设置和使用窗口看门狗
11.5.5实验细节: 演示WWDG的
超时
11.5.6实验回顾
11.6附加实验13正确使用WWDG
11.7附加实验14过早地踢WWDG
11.8附加实验15使用CubeMX正确
激活WWDG
11.9附加实验16早期唤醒中断
(EWI)
11.9.1看门狗恢复机制(WRM)
简介
11.9.2EWI代码结构和内容
11.9.3实验细节
11.9.4实验回顾
11.10附加实验17WWDG ISR的简化
实现
11.11附加实验18检测失败的单定期
任务
11.11.1背景
11.11.2实验细节
11.11.3实验回顾
第12章多任务设计中的通用任务
故障检测技术
12.1附加实验19单定期任务的看门狗
保护机制
12.1.1简介
12.1.2应用任务T1设计
12.1.3基于状态的监督任务
设计
12.1.4测试系统
12.1.5小结
12.2附加实验20两个定期任务的
故障检测
12.2.1简介
12.2.2更多讨论
12.2.3测试和小结
12.3附加实验21单一非定期任务的
故障检测
12.3.1检测非定期任务的故障的
可选方式
12.3.2创建和使用FreeRTOS
软件定时器
12.3.3实验细节
12.3.4实验回顾
12.4附加实验22混合定期与非定期
任务的故障检测
12.4.1实验简介
12.4.2实验的测试步骤
12.4.3后记
第五篇结束语: 展望未来
第13章自我改进指南
13.1实践工作的影响
13.2OS相关的问题
13.3应用程序的可移植性
13.4应用级代码结构
13.5结束语
第六篇帮助你自学的在线资料
第14章在线资料的参考指南
14.1STM32Cube嵌入式软件
14.2STM32CubeMX的特点
14.3STM32Cube嵌入式软件库和
文档
14.4硬件开发板: STM32F4
Discovery kit
14.5内容丰富的视频
14.6STM Studio
14.7STM32F4定时器资料
14.8STM32CubeIDE相关信息
14.9FreeRTOS 文档
14.10Percepio Tracealyzer RTOS
跟踪分析工具
14.11实验代码
|
內容試閱:
|
欢迎中国读者
尊敬的读者,我感到非常高兴能够为中国读者提供我撰写的RealTime Operating Systems Book 2—The Practice中文版本,我希望你会同意它是易于阅读、内容翔实和非常有趣的!如果不是因为Allan He(何小庆)的努力,这绝不会发生。Allan负责启动这个项目,在过去的数月中,他和他的团队承担翻译工作,也为负责撰写、翻译和出版工作的许多人提供了坚定的支持。此外,他在寻找愿意出版这本书的中国出版公司一事上发挥了重要作用,Allan,谢谢你所做的一切。
我与中国的接触始于1980年,那时中国看到了快速发展的关键在于提高其技术水平和专业知识储备。通过派遣高素质的工程师,在西方学习长达两年的时间可以做到这一点。当时我是大学讲师,专门研究实时嵌入式系统。有一天我的部门主管要求让来访的一位中国学者加入我的研究小组,并由我监督他的工作一年。事实证明,这是一段非常有趣的经历,让我对中国及其人民有了了解。我的学生实际上是一位优秀的雷达工程师,后来成为中国电子科技大学学者和教授。在过去的40年中,我们一直保持着联系,因此,我看到了中国电子行业取得了长足的进步。中国现在在许多技术领域占主导地位,尤其是在通信领域。我非常希望我能以某种方式帮助促进中国软件的技术发展。
为什么要写这本书
当你想成为某个技术领域的专家时,你需要了解其理论知识(几乎没有什么可走的捷径,但确实如此),我称其为“头衔”的赞赏。但是,如果你想变得真正精通,那还远远不够——你还需要具有其“核心”的理解。我的意思是对这个领域有一种真实的感觉,我认为做到这一点的方法是将理论付诸实践,边做边学。
环顾四周就会发现很多人属于这两种类别中的一种。基于“头衔”的专家是大学的计算机科学领域的理论家。与之形成鲜明对比的是,典型的“核心”专家是自学成才的程序员,他们对专业基础知识缺乏很深入的了解。本书试图缩小这种差距,本书的篇涉及“头衔”方面; 第二篇是通俗易懂实用的知识。使用本书作为资料,可以将理论变成实践,从而帮助你成为真正的专家。
这在理论上似乎是个好主意,但实践却更具挑战性。首先,你需要一个方便实用的工具来完成工作。其次,对于许多自学者来说,成本是一个问题,工具一定不能很贵。后,它们一定不难获得,但使用和维护很方便。因此,这里我们为你提供用于RTOS实验的低成本工具、软件和开发板的方法。
实用工具
用于此工作的工具和软件包括:
(1) 用于配置MCU(STM32F某个特定版本)的图形工具——STM32CubeMX软件应用程序。
(2) 用于生成机器代码的集成开发环境(译者注: 如 STM32CubeIDE、IAR 和 Keil)。
(3) 带有内置编程器和调试器的低成本MCU开发板。
所有软件都是免费的,或者提供可以免费使用的版本,可以在Windows、Mac OSX或Linux平台上运行,从许多电子供应商处都可以轻松获得STM32F4 Discovery套件,我们在这项工作中使用的RTOS是FreeRTOS,它与CubeMX工具集成在一起。此处给出的所有练习都是在STM32F4 Discovery套件上执行的,https://www.st.com/en/evaluationtools/32f411ediscovery.html(网站上也称为STM32F411EDISCO板)。个别的实例是在老版本的STM32F4 Discovery套件上测试的。https://www.st.com/content/st_com/en/products/evaluationtools/productevaluationtools/mcumpuevaltools/stm32mcumpuevaltools/stm32discoverykits/stm32f4discovery.html。
如果你愿意,可以使用更便宜的STM32L100C Discovery套件,网址为http://www.st.com/en/evaluationtools/32l100cdiscovery.html。
这本书的哲学
本书的基本哲学是“理解理论的方法是将其付诸实践”。太好了!我认为我们都可以同意这一点了。但是有一个非常重要的问题出现了,我们到底该怎么做? 这是一个更基本的问题,我们到底想实现什么? 例如,假设你有强烈的愿望根据图0.1所示的椅子制作自己的木椅。
不幸的是,你没有任何木工知识和经验,所以你开始学习木工理论,并以此为基础启动你的项目。好吧,你可能不会成功结束这个项目,造成了灾难性的结果,如图0.2所示,后做了一件不太专业的事情。
图0.1你希望制作的椅子
图0.2你实际完成的项目
在你投入项目之前,除了期望(或者说祈祷)一切顺利外,你还应该做些什么? 现在令人眼花缭乱的事情很多,在开始任何实际项目之前,首先需要学习市场上有什么工具以及如何使用它们。因此作为新手木匠,我们将从图0.3所示的传统的木工工具开始。
图0.3传统木工工具
在这个阶段,你实际上不需要了解工具的工作原理,重要的是了解它们的作用是什么,以及如何使用它们。掌握了这些工具之后,你就可以在实际项目中放心地使用它们了,这就是本书所涉及的实践工作的基础。
因此,不要指望学习如何设计和编写一个操作系统。本书也没有教你如何设计一个使用RTOS的嵌入式系统。但是,你将实实在在学到的是:
(1) 有哪些可用的工具。
(2) 每种工具的工作方式。
(3) 为什么以及如何使用这些工具。
(4) 使用各种工具的不利之处。
实验的目的是为你提供一条学习真正的商业工具的途径,实际工作从简单的问题开始,然后逐步推进到更复杂的层面。如果你不熟悉即将开展的工作,请按照我们的顺序进行。在你成功地完成序列中的每一项之前,不要跳过任何实验。如果在实践结束时,你认为还是没有学会这些基本工具,那或许就是我的问题了。
后是我的建议: 如果您想了解嵌入式实时操作系统的基础知识,那么本书并不适合您。为此,您需要阅读我的另外一本著作Realtime Operating Systems Book 1—The Theory(或同类图书)中的内容。本书读者需要熟悉相关理论知识并具有一定的技能水平。
致谢
本书的更新版本包含使用可视化工具Tracealyzer的材料。我要对Percepio 公司提供的所有帮助表示极大的感谢,还要感谢Percepio公司提供的技术支持,特别是Johan Kraft博士(公司首席执行官)和Niclas Lindblom(资深FAE)所提供的技术支持。要说这些是无价也不为过。
吉姆·考林(Jim Cooling)
2020年12月于马克菲尔德(英国)
|
|