
FreeRTOS
文章平均质量分 85
浩子_up
人生漫漫,希望能有些点滴能够记录下来~
展开
-
FreeRTOS —— 12.故障排除
12.1本章简介和范围本章重点介绍了FreeRTOS新用户所遇到的最常见问题。 首先,它着眼于三个问题,这些问题已被证明是多年来最常见的支持请求来源。 错误的中断优先级分配,堆栈溢出以及对printf()的不正确使用。 然后以FAQ的形式简要介绍其他常见错误,可能的原因及其解决方案。通过立即捕获并识别许多最常见的错误源,使用configASSERT()可以提高生产率。 强烈建议在开发或调试FreeRTOS应用程序时定义configASSERT()。 configASSERT()在第11.2节中介绍。1原创 2021-04-06 11:09:03 · 6264 阅读 · 0 评论 -
FreeRTOS —— 11.开发者支持
11.1本章简介与适用范围本章重点介绍了一组功能,这些功能可通过以下方式最大程度地提高生产率:提供有关应用程序行为方式的见解。突出优化机会。在发生错误的时刻捕获错误。11.2 configASSERT()在C语言中,宏assert()用于验证程序所做的断言(假设)。 该断言被写为一个C表达式,如果该表达式的值为假(0),则该断言被视为失败。 例如,清单163测试了指针pxMyPointer不是NULL的断言。应用程序编写者通过提供assert()宏的实现来指定断言失败时要采取的措施。F原创 2021-04-06 10:48:11 · 4507 阅读 · 0 评论 -
FreeRTOS —— 10.低功耗支持
待定。 本章将在最终出版之前撰写。原创 2021-04-06 02:22:49 · 3947 阅读 · 0 评论 -
FreeRTOS —— 9.任务通知
9.1本章介绍与范围已经看到,使用FreeRTOS的应用程序被构造为一组独立的任务,并且这些任务很可能必须彼此通信,以便它们可以共同提供有用的系统功能。通过中介对象进行通信本书已经描述了任务之间可以相互通信的各种方式。 到目前为止描述的方法需要创建通信对象。 通信对象的示例包括队列,事件组和各种不同类型的信号量。使用通信对象时,事件和数据不会直接发送到接收任务或接收ISR,而是会发送到通信对象。 同样,任务和ISR从通信对象接收事件和数据,而不是直接从发送事件或数据的任务或ISR接收事件和数据。 这原创 2021-04-06 02:21:50 · 8619 阅读 · 0 评论 -
FreeRTOS —— 8.事件组
8.1本章介绍与适用范围已经注意到,实时嵌入式系统必须响应事件而采取行动。 前面的章节介绍了FreeRTOS的功能,这些功能允许将事件传达给任务。 此类功能的示例包括信号量和队列,它们均具有以下属性:它们允许任务在“阻止”状态下等待单个事件的发生。当事件发生时,它们将取消阻止单个任务-未被阻止的任务是等待事件的优先级最高的任务。事件组是FreeRTOS的另一个功能,它允许将事件传达给任务。 与队列和信号量不同:事件组允许任务在“阻止”状态下等待发生的多个事件之一的组合。事件组发生时,事件组原创 2021-04-04 14:11:19 · 4580 阅读 · 0 评论 -
FreeRTOS —— 7.资源管理
7.1本章介绍与适用范围在多任务系统中,如果一个任务开始访问资源,但是在转换为正在运行状态之前没有完成对资源的访问,则可能会出错。 如果任务使资源处于不一致状态,则任何其他任务或中断对同一资源的访问都可能导致数据损坏或其他类似问题。以下是一些示例:访问外围设备请考虑以下情形,其中两个任务试图写入液晶显示器(LCD)。1.任务A执行并开始将字符串“ Hello world”写入LCD。2.在仅输出字符串的开头“ Hello w”之后,任务B抢占了任务A。3.任务B写下“Abort,Retry原创 2021-04-03 03:07:23 · 4468 阅读 · 0 评论 -
FreeRTOS —— 6.中断管理
6.1本章介绍与范围事件嵌入式实时系统必须采取措施以响应源自环境的事件。 例如,到达以太网外围设备的数据包(事件)可能需要传递到TCP / IP堆栈进行处理(操作)。 非平凡的系统将不得不处理源自多个来源的事件,所有这些事件都将具有不同的处理开销和响应时间要求。 在每种情况下,都必须对最佳事件处理实施策略做出判断:1.如何检测事件? 通常使用中断,但也可以查询输入。2.使用中断时,应在中断服务程序(ISR)内执行多少处理,而在中断服务程序外进行多少处理? 通常希望使每个ISR尽可能短。3.如何将事原创 2021-04-02 17:34:00 · 5720 阅读 · 0 评论 -
FreeRTOS —— 5.软件计时器管理
5.1本章介绍与适用范围软件计时器用于在将来的设定时间或以固定频率周期性地调度功能的执行。 软件计时器执行的功能称为软件计时器的回调功能。软件计时器由FreeRTOS内核实现并受其控制。 它们不需要硬件支持,并且与硬件计时器或硬件计数器无关。请注意,与使用创新设计以确保最大效率的FreeRTOS理念一致,除非软件计时器回调函数正在实际执行,否则软件计时器不会使用任何处理时间。软件计时器功能是可选的。 包括软件计时器功能:作为项目的一部分,构建FreeRTOS源文件FreeRTOS / Sourc原创 2021-04-01 22:20:08 · 4539 阅读 · 0 评论 -
FreeRTOS —— 4.队列管理
4.1 本章介绍与适用范围“队列”提供了任务到任务,任务到中断以及中断到任务的通信机制。范围本章旨在使读者更好地理解:如何创建队列。队列如何管理其包含的数据。如何将数据发送到队列。如何从队列接收数据。阻塞队列意味着什么。如何在多个队列上进行阻止。如何覆盖队列中的数据。如何清除队列。写入队列和从队列读取时任务优先级的影响。本章仅介绍任务之间的通信。 第6章介绍了任务到中断和中断到任务的通信。4.2队列的特征数据存储队列可以容纳有限数量的固定大小的数据项。 队列可以容纳的最大原创 2021-04-01 16:58:24 · 4654 阅读 · 0 评论 -
FreeRTOS —— 3.任务管理
3.任务管理3.1 本章介绍与适用范围范围本章旨在使读者更好地理解:FreeRTOS如何为应用程序中的每个任务分配处理时间。FreeRTOS如何选择应在任何给定时间执行的任务。每个任务的相对优先级如何影响系统行为。任务可以存在的状态。读者还应该对以下内容有充分的了解:如何执行任务。如何创建一个或多个任务实例。如何使用任务参数。如何更改已创建任务的优先级。如何删除任务。如何使用任务实现定期处理(软件计时器将在下一章中讨论)。空闲任务何时执行以及如何使用。本章介绍的概念是原创 2021-03-29 22:02:57 · 4617 阅读 · 0 评论 -
FreeRTOS —— 2.堆内存管理
堆内存管理从FreeRTOS V9.0.0起,可以完全静态分配FreeRTOS应用程序,而无需包括堆内存管理器2.1 本章简介与范围先决条件FreeRTOS是作为一组C源文件提供的,因此,成为一名合格的C程序员是使用FreeRTOS的先决条件,因此,本章假定读者熟悉以下概念:如何构建C项目,包括不同的编译和链接阶段堆和堆栈是什么标准的C库malloc()和free()函数。动态内存分配及其与FreeRTOS的关联从FreeRTOS V9.0.0起,可以在编译时静态分配内核对象,或者在运原创 2021-03-29 16:56:24 · 3968 阅读 · 0 评论 -
FreeRTOS —— 1.FreeRTOS发行版
1.1 本章介绍与适用范围FreeRTOS以单个zip文件存档的形式分发,其中包含所有正式的FreeRTOS端口以及大量的预配置演示应用程序。范围本章旨在通过以下方式帮助用户熟悉FreeRTOS的文件和目录:提供FreeRTOS目录结构的顶层视图。描述任何特定的FreeRTOS项目实际上需要哪些文件。介绍演示应用程序。提供有关如何创建新项目的信息。这里的描述仅与FreeRTOS官方发行版有关。 本书随附的示例使用的组织稍有不同。1.2 了解FreeRTOS发行版定义:FreeRTOS原创 2021-03-29 15:07:20 · 4077 阅读 · 0 评论 -
FreeRTOS —— 0.前言
MCU当遇到比较复杂的开发时,往往都会采用RTOS,而FreeRTOS是最为广泛使用的实时操作系统之一,正好目前工作中使用到了FreeRTOS,借助官方使用介绍文档,一边学习一边翻译。翻译工具主要借助GOOGLE,同时也会优化语句。文档来源:https://www.freertos.org/Documentation/RTOS_book.htmlMastering the FreeRTOS Real Time Kernel - a Hands On Tutorial Guide (掌握FreeRTOS原创 2021-03-29 11:48:23 · 3798 阅读 · 0 评论