下载 FreeRTOS
 

出色的 RTOS & 嵌入式软件

内核
最新资讯
简化任何设备的身份验证云连接。
利用 CoAP 设计节能型云连接 IoT 解决方案。
11.0.0 版 FreeRTOS 内核简介:
FreeRTOS 路线图和代码贡献流程。
使用 FreeRTOS 实现 OPC-UA over TSN。

升级到 FreeRTOS V8.x.x
从 FreeRTOS V7.x.x


FreeRTOS V8 向后兼容 FreeRTOS V7

FreeRTOS V8.x.x 是 FreeRTOS V7.x 的直接兼容替代品, 尽管如果更改用于引用字符串的类型,可能会在升级后导致应用程序 代码生成一些易于清除的编译器警告, 而且更新后的 typedef 命名规范表明目前不推荐使用旧的 typedef 名称(请参阅 config configENABLE_BACKWARD_COMPATIBILITY)。


FreeRTOS V8 中的新特性和更新


事件组(或事件标志)简介

FreeRTOS V8 包含一个全新的功能——事件组。 事件组 实现包含在名为 event_groups.c 的新源文件中。 与现有 timers.c 源文件一样,event_groups.c 是可选的,只有在应用程序使用事件组时才需要将其包含到项目中 。

阅读更多:


集中延迟中断处理

理想情况下,中断服务程序 (ISR) 需尽可能短, 但有时 ISR 要么需要处理很多任务, 要么需要执行非确定性处理。过去,在这些情况下, 通常会利用信号量解除中断中高优先级应用程序任务的阻塞, 将实际处理延迟到应用程序任务(所谓的延迟 中断处理)。 FreeRTOS 允许中断直接返回到 未阻塞的任务,以确保立即执行处理。

FreeRTOS V8 提供了集中延迟中断处理机制——允许在 RTOS 守护进程任务(正式名称为定时器守护进程任务)中执行延迟处理, 使用户无需承受实现延迟中断机制的负担 。

阅读更多:


使用 stdint.h

除下述字符指针外,所有标准 C 类型均替换为 来自 stdint.h 头文件的等效 typedef。 例如,unsigned long 已替换为 uint32_tshort 已替换为 int16_t 等。


字符指针

字符指针用于引用文本字符串,例如分配给任务的名称 。

以前,根据良好软件工程实践的要求,FreeRTOS 编码标准不允许使用未显式 限定为 signedunsigned 的字符类型。 因此,用于引用字符串的字符指针需要进行强制转换, 正如使用任何标准字符串处理函数一样。 强制转换可以确保, 编译器警告不会由默认为有符号的非限定 char 类型的编译器 或默认为无符号的非限定 char 类型的编译器生成 。

根据后来的 MISRA 标准的规定,此规则已经放宽了,现在允许使用非限定 char 类型,但仅适用于下述情况:

  • char 用于指向人类可读文本字符串。
  • char 用于保存单个 ASCII 字符。


跟踪和可视化

目前,跟踪功能已增强,涵盖了堆使用和新的 事件组特性。

注意: FreeRTOS v8.0.0 需要 FreeRTOS-Plus-Trace 版本 2.6 或更高版本。


由新 FreeRTOS 定义的 typedef 名称

为了确保与新近推出的 FreeRTOS-Plus 软件组件保持一致, 以及与 stdint.h 定义的 typedef 保持一致, 适应多个用户请求,在核心 FreeRTOS 代码中分配给 typedef 的名称按照下表进行了更改。 现在所有 typedefed 类型都以 '_t' 结尾。

注意:为了确保向后兼容,代码中保留了旧名称, 但我们强烈不建议使用旧名称(请参阅 configENABLE_BACKWARD_COMPATIBILITY)。

旧名称 新名称 说明
xTaskHandle TaskHandle_t 用于引用任务。
xQueueHandle QueueHandle_t 用于引用队列。
xSemaphoreHandle SemaphoreHandle_t 用于引用二进制信号量、计数信号量、递归信号量和互斥型信号量。
xTimerHandle TimerHandle_t 用于引用软件定时器。
xCoRoutineHandle CoRoutineHandle_t 用于引用协程。
portTickType TickType_t 用于保存 tick 计数值。
portBASE_TYPE BaseType_t 定义为架构的最有效的有符号类型。
无符号的 portBASE_TYPE UBaseType_t 定义为架构的最有效的无符号类型。
xQueueSetHandle QueueSetHandle_t 用于引用队列集
xQueueSetMemberHandle QueueSetMemberHandle_t 用于引用队列集的成员,该成员可以是队列或任何信号量类型。
xMemoryRegion MemoryRegion_t 与支持内存保护的端口一起使用。
xTaskParameters TaskParameters_t 与支持内存保护的端口一起使用。
xTaskStatusType TaskStatus_t uxTaskGetSystemState() 函数一起使用。
pdTASK_HOOK_CODE TaskHookFunction_t 与任务标签函数一起使用(例如 vTaskSetApplicationTag()
pdTASK_CODE TaskFunction_t xTaskCreate() 函数一起使用。
tmrTIMER_CALLBACK TimerCallbackFunction_t xTimerCreate() 函数一起使用。
xTimeOutType TimeOut_t 仅适用于高级用户。





Copyright (C) Amazon Web Services, Inc. or its affiliates. All rights reserved.