下冰雹 · 2020年10月16日

FreeRTOS历史版本更新记录

前言:本文会不定期更新,一方面FreeRTOS发布新版本时会第一时间跟进;另一方面,会慢慢补上V8.0之后的版本更新内容。

说明:我上传FreeRTOS源码是为了为网友提供方便,为了增加上传权限才每个资源设置1个积分,想着等阵子权限足够了就把积分设置成0。但是现在CSDN官方强制自动设置每个资源需要的下载积分!我上传的资源有一个竟然设置成了需要44积分才能下载,所以不建议从CSDN下载,可以点击这里下载

FreeRTOS V9.0.0相对于FreeRTOS V9.0.0rc2更新记录:

FreeRTOSV9.0.0发行于2016.05.25,推荐官方网站下载。考虑到官方网站的服务器在美国,下载速度较慢,下面给出CSDN下载地址:点击下载,下载需要1个资源分,请原谅博主需要资源分增加上传权限。

内核更新:

  • 修改新API函数xTaskCreateStatic()的原型,去除一个参数并且改善和其它"CreateStatic()" API函数的兼容性。点击此处查看更多信息。

    在FreeRTOS V9.0.0rc2版本中,xTaskCreateStatic()原型为:

         BaseType_txTaskCreateStatic( TaskFunction_t pxTaskCode,
                                  const char * const pcName,
                                 constuint32_t ulStackDepth,
                                  void* const pvParameters,
                                 UBaseType_t uxPriority,
                                  TaskHandle_t*pxCreatedTask,
                                 StackType_t * const puxStackBuffer,
                                 StaticTask_t * const pxTaskBuffer );
    
    

    在FreeRTOS V9.0.0正式版中,xTaskCreateStatic()原型为:

        TaskHandle_txTaskCreateStatic( TaskFunction_t pxTaskCode,
                               const char * const pcName,
                               const uint32_t ulStackDepth,
                               void * const pvParameters,
                               UBaseType_t uxPriority,
                               StackType_t * const puxStackBuffer,
                              StaticTask_t * const pxTaskBuffer );
    
    
    
    

    注:博主看过FreeRTOS V9.0.0rc2版,也看过V9.0.0正式版,发现两个版本函数xTaskCreateStatic()是相同的。

  • GCC ARM Cortex-A移植层接口:增加configUSE_TASK_FPU_SUPPORT配置宏。当这个宏设置为2时,每一个任务自动使用浮点(FPU)环境。
  • GCC ARM Cortex-A移植层接口:使用vApplicationFPUSafeIRQHandler()来代替vApplicationIRQHandler()可以在任意中断嵌套入口处自动保存和恢复所有浮点寄存器。
  • 所有ARMCortex-M3/4F/7移植层接口:当使用ARM Cortex-M3/4/7架构文件而要求严格一致的创建任务时,清除位于任务堆栈中的任务入口地址的最低有效位(通常不会有什么明显作用,除非使用QMEU仿真器)。

增加GCC和Keil ARMCortex-M4F MPU移植层接口,之前仅ARM Cortex-M3支持使用MPU。

  • ARM Cortex-M3/4F MPU移植层接口:现在完全支持FreeRTOS V9.0.0 API,增加一个演示例程,展示如何使用更新后的MPU移植层接口。演示例程位于:FreeRTOS/Demo/CORTEX_MPU_Simulator_Keil_GCC。
  • 所有ARMCortex-M3/4F/7移植层接口:在默认低功耗Tickless实现中增加同步指令。
  • 所有ARMCortex-M0移植层接口:防止第一个运行任务堆栈的项目被丢弃。

Win32移植层接口:减少堆栈的使用数目,改变删除Windows线程方法,增加最大执行时间。
增加用于MikroC编译器的ARMCortex-M4F移植层接口。

  • MPS430X IAR移植层接口:更新至和最新的EW430工具一致。
  • IAR32 GCC移植层接口:纠正当onfigMAX_API_CALL_INTERRUPT_PRIORITY == portMAX_PRIORITY时,函数vPortExitCritical()的错误。
  • 更新一致性:函数vTaskGetTaskInfo()现在有一个别名为vTaskGetInfo()、函数xTaskGetTaskHandle()现在有一个别名为xTaskGetHandle()、函数pcQueueGetQueueName()现在有一个别名为pcQueueGetName()。
  • 修改其它注释错误和编译器警告。

    演示例程更新:

  • 更新AtmelStudio工程,现在可使用Atmel Studio 7编译。
  • 更新Xilinx SDK版本,使用2016.01月版本。
  • PIC32演示例程中,删除依赖IO库的部分。
  • 将XilinxUltraScale Cortex-R5演示例程移动到主目录下。
  • l MSP432库更新到最新版本。
  • l 增加使用GCC、Keil和MikroC编译器的MicrochipCEC1302 (ARM Cortex-M4F)演示例程。
  • l 将AtmelSAMA5D2演示例程移动到主目录下。

FreeRTOS V9.0.0rc2相对于FreeRTOS V9.0.0rc1更新记录:

FreeRTOSV9.0.0rc2发行于2016.03.30,推荐官方网站下载。考虑到官方网站的服务器在美国,下载速度较慢,下面给出CSDN下载地址:点击下载,下载需要1个资源分,请原谅博主需要资源分增加上传权限。

  • 使用静态内存分配方法创建RTOS对象更简单了,如果传递的缓冲区参数是NULL,则不能转成动态内存分配,而是返回错误信息。
  • 增加configSUPPORT_DYNAMIC_ALLOCATION配置宏,允许应用程序不使用堆空间(设置为0)。
  • 小幅优化运行时间。
  • 新增两个基于SiliconLabs EFM32微控制器的Tickless低功耗实现例子。
  • 增加API函数xTimerGetPeriod()和xTimerGetExpireTime()。

FreeRTOS V9.0.0rc1相对于FreeRTOS V8.2.3更新记录:

FreeRTOSV9.0.0rc1发行于2016.02.19,推荐官方网站下载。考虑到官方网站的服务器在美国,下载速度较慢,下面给出CSDN下载地址:点击下载,下载需要1个资源分,请原谅博主需要资源分增加上传权限。

RTOS内核更新:

  • 主要新功能:现在可以使用静态分配内存创建任务、信号量、队列、定时器和事件组,因此可以完全不需要调用pvPortMalloc()函数。
  • 主要新功能:增加API函数xTaskAbortDelay(),允许一个任务强制另一个任务立即离开阻塞状态,即使被阻塞的任务等待的事件还没发生,或者被阻塞的任务超时定时器还没有超时。
  • 一些必要更新,允许FreeRTOS运行在64位架构上。
  • 增加函数vApplicationDaemonTaskStartupHook()。当RTOS守护进程(被定时器服务任务调用)启动运行时执行。如果应用程序希望启动调度器后再执行某些初始化代码,这个函数是比较有用。
  • 增加API函数xTaskGetTaskHandle(),用于根据任务名称获取任务句柄。这个函数使用多重字符串比较操作,比较费时,因此建议一个任务只使用一次,将获取的任务句柄保存到局部变量中,下次使用这个局部变量中保存的值。
  • 增加API函数pcQueueGetQueueName(),用于根据队列句柄获取队列名字。

现在,即使configUSE_PREEMPTION配置为0,也可以使用Tickless空闲(用于低功耗应用,通过降低系统节拍定时器中断频率使CPU长期处于低功耗状态)了。

  • 现在,如果一个任务删除另外一个任务,被删除任务的堆栈和TCB立即释放。如果一个任务删除自己,则任务的堆栈和TCB和以前一样,通过空闲任务删除。
  • 在中断服务程序中,如果使用任务通知解除任务阻塞状态,但是参数xHigherPriorityTaskWoken并没有使用(正确情况下,使用这个参数来人为判断是否要进行上下文切换),则下次系统节拍时钟中断将会挂起一个上下文切换请求。
  • heap_1.c和heap_2.c现在可以使用configAPPLICATION_ALLOCATED_HEAP设置选项,以前这个选项仅用在heap_4.c。configAPPLICATION_ALLOCATED_HEAP允许应用程序自己定义一个数组来代替FreeRTOS的堆,数组必须为:uint8_t ucHeap[ configTOTAL_HEAP_SIZE ];这样做的好处是程序可以指定堆的存储位置,比如内部RAM或外扩RAM等。
  • 现在,TaskStatus_t结构体包含任务堆栈的基地址了。TaskStatus_t结构体用于获取任务的详细信息,一般用在可视化追踪调试中。
  • 增加API函数vTaskGetTaskInfo(),用于返回一个TaskStatus_t结构体,结构体包含单个任务的信息。以前这个信息只能通过调用一个获取所有任务信息的API函数(uxTaskGetSystemState())间接得到(使用TaskStatus_t结构体数组存储这些信息)。
  • 增加API函数uxSemaphoreGetCount(),用于计数信号量,返回当前的计数值。
  • 优化Cortex-M3移植层接口

    演示例程更新:

  • 更新SAM4L AtmelStudio工程,Atmel Studio 7可以使用该工程了
  • 增加ARMCortex-A53 64位移植层接口
  • 增加用于Xilinx公司产品UltrascaleMPSoC的移植层接口和演示例程
  • 增加Cortex-M7SAME70 GCC演示例程
  • 增加EFM32 Giant和Wonder Gecko演示例程

FreeRTOS V8.2.3相对于FreeRTOS V8.2.2更新记录:

FreeRTOSV8.2.3发行于2015.10.16,推荐官方网站下载。考虑到官方网站的服务器在美国,下载速度较慢,下面给出CSDN下载地址:点击下载 ,下载需要1个资源分,请原谅博主需要资源分增加上传权限。

内核更新:

  • 修正被确定的BUG,当使用软件定时器时,V8.2.2版本修改的软件定时器代码,会导致tickless低功耗应用无限期睡眠。
  • 简化并改善堆栈溢出检查效率
  • 增加API函数xTaskNotifyStateClear()
  • 新增IAR和GCC编译器下的Cortex-R微处理器移植层接口,但是不能使用ARM通用中断控制器。
  • 新增PIC32MEC14xx移植层接口。
  • PIC32MZ 移植层接口中增加对PIC32MZ EF(使用浮点)的支持。
  • Zynq7000移植层接口现在使用弱符号(比如启动文件中经常出现的“[WEAK]”)声明设置和清除系统节拍时钟中断函数,因此它们可以被应用程序覆写。
  • 增加configUSE_TASK_FPU_SUPPORT配置宏,尽管当前只有PIC32MZ EF移植层使用这个宏。
  • 更新RL78和78K0 IAR移植层接口,改善对组合内存模型的支持。
  • 小幅更新heap_5.c,移除引起某些编译器产生警告的代码。
  • 简化许可,见官方程序包/FreeRTOS/License/license.txt

FreeRTOS+ 更新:

  • 使用目录名WolfSSL代替CyaSSL
  • 更新为最新的WolfSSL代码
  • 更新为最新的跟踪记录代码
  • 增加用于串流追踪(streaming trace)的FreeRTOS+追踪记录库。

    演示例程更新:

  • 增加Renesas RZ/T (Cortex-R)、PIC32MZ EF(带浮点硬件的PIC32)、PIC32MEC14xx、RX71M、RX113和RX231演示例程。
  • 整理拼写和编译器警告。

FreeRTOS V8.2.2相对于FreeRTOS V8.2.1更新记录:

FreeRTOSV8.2.2发行于2015.08.12,推荐官方网站下载。考虑到官方网站的服务器在美国,下载速度较慢,下面给出CSDN下载地址:点击下载 ,下载需要1个资源分,请原谅博主需要资源分增加上传权限。

内核更新:

  • 增加英特尔IA32/x86 32位处理器移植层接口
  • 一般性维护
  • 增加PRIVILEGED_FUNCTION和PRIVILEGED_DATA宏,用于内存受保护的系统。
  • 在projdefs.h文件中增加errno定义,用于FreeRTOS+组件。
  • 删除当使用软件定时器时,避免tickless无限期等待的限制代码

增加xTaskNotifyAndQueryFromISR(),这是API函数xTaskNotifyAndQuery()的带中断保护版本。

  • MSP430X移植层接口中增加额外的NOP指令,确保和硬件文档严格一致
  • Microblaze移植层接口:增加用于移植层接口优化任务的选项。
  • Microblaze移植层接口:之前在任务创建时任务继承异常使能状态。现在,只要Microblaze设计支持异常,则所有任务创建时都默认异常使能。

Windows移植层接口:增加额外的安全措施,确保正确的启动序列和线程切换时间。

  • Windows移植层接口:改善移植层接口实现代码,优化任务选择汇编代码。
  • 更新heap_4.c和heap_5.c,允许在64位处理器上使用。
  • 简化创建队列代码
  • 改善tickless空闲表现
  • 确保公共内核文件中的变量没有初始化为非零值。
  • 改正heap_4.c和heap_5.c中的xHeapStructSize计算

    演示例程更新:

  • 增加用于IA32/x86移植层接口的演示例程工程,使用Galileo硬件。
  • 增加MSP430FR5969演示例程(以前需要单独下载)
  • 增加FreeRTOS BSP,用于Xilinx SDK自动创建FreeRTOS应用程序。
  • 增加基于SAMV71 (ARM Cortex-M7)硬件的Atmel Studio / GCC工程
  • 更新Xilinx SDK工程,SDK使用2015.02月版本。
  • 移除Microblaze演示例程
  • 增加基于MSP43FR5969硬件的IAR和CCS演示例程。

    FreeRTOS+更新:

  • 更新FreeRTOS+跟踪记录库
  • 增加Reliance Edge源码和演示例程。Reliance Edge是一个故障保护事务性文件系统,特别适用于那些要求高可靠性场合的文件存储。
  • 增加configAPPLICATION_PROVIDES_cOutputBuffer配置宏,用于FreeRTOS+CLI使用者向一个固定内存地址放置输出缓存区。
  • 改善NetworkInterface.c文件,该文件用于FreeRTOS+UDP的Windows移植层接口。

FreeRTOS V8.2.1相对于FreeRTOS V8.2.0更新记录:

FreeRTOSV8.2.1发行于2015.03.24,推荐官方网站下载。考虑到官方网站的服务器在美国,下载速度较慢,下面给出CSDN下载地址:点击下载 ,下载需要1个资源分,请原谅博主需要资源分增加上传权限。

内核更新:

  • 增加用户可定义的、灵活的本地存储设备
  • 增加API函数vTimerSetTimerID(),与API函数pvTimerGetTimerID()互补,允许将定时器的ID用作定时器局部存储器。
  • 修正一个在中断服务程序中使用队列有关的潜在问题。
  • 更新一些Xilinx Microblaze GCC有关的移植层接口代码
  • 增加ARM Cortex-M4F移植层接口,使用TI公司CCS编译器。
  • 增加ARM Cortex-M7 r0p1移植层接口,使用IAR、GCC和Keil编译器
  • 如果宏configUSE_CO_ROUTINES设置为0,将整个croutine.c文件代码屏蔽
  • 改变一些数据类型:将uint32_t改为size_t。为64位Windows移植层做准备。
  • 更新PIC32移植层接口,移除使用最新XC32编译器弃用的警告输出。

    演示例程更新:

  • 增加TI公司的MSP432微控制器(ARM Cortex-M4F内核)演示例程,使用IAR、Keil和CCS编译器。
  • 增加STM32F微控制器(ARM Cortex-M7)演示例程,使用IAR和Keil编译器。
  • 增加Atmel公司的SAMV71微处理器(ARM Cortex-M7)演示例程,使用IAR和Keil编译器。
  • 增加Microblaze演示例程,使用2014.04月Xilinx SDK版本、运行在KC705开发板平台。

FreeRTOS V8.2.0相对于FreeRTOS V8.1.2更新记录:

FreeRTOSV8.2.0发行于2015.01.16,推荐官方网站下载。考虑到官方网站的服务器在美国,下载速度较慢,下面给出CSDN下载地址:点击下载 ,下载需要1个资源分,请原谅博主需要资源分增加上传权限。

内核更新:

  • 重要新特性! 任务通知。任务通知可以在大多数情况下代替二进制信号量、计数信号量、事件组,并且任务通知具有更快的运行速度和更少的RAM需求。
  • 增加一个新的头文件,必须包含在编译文件中。将过时的定义分离成单独一个新头文件叫FreeRTOS/Source/include/deprecated_definitions.h。注:这些过时的定义在一些上年头的演示例程中仍会使用。
  • 将xSemaphoreGiveFromISR()设计成一个函数,之前版本是宏定义,真正被调用的函数是xQueueGenericSendFromISR()。做成函数后,会增加编译后的代码大小,但是会提升性能。
  • 更改TCB分配方式,现在任务堆栈增长总是远离分配的TCB空间(这会改善堆栈溢出调试)。
  • 使用GCC、IAR和Keil编译器的Cortex-M4F移植层接口代码使用更对的内联(inline),这可以改善性能,但是以增加代码大小为代价。
  • 创建队列现在只需要调用一次pvPortMalloc()就可以分配队列结构体和队列项存储空间。
  • 引进新的临界区宏,用于读取系统节拍(tick)计数器
  • 在heap_4.c中引入configAPPLICATION_ALLOCATED_HEAP配置宏,允许应用程序提供堆数组空间。
  • 引入configUSE_LIST_DATA_INTEGRITY_CHECK_BYTES配置宏,如果设置为1,则在列表和列表项结构体中包含一个已知值。打算使用这个已知值辅助调试。如果这个值被覆写,则很可能是应用程序代码改写了内核使用的RAM。
  • 所有Cortex-M移植层接口都包含configASSERT(),用于测试中断控制寄存器最低5位,用来防止在中断服务程序中调用taskENTER_CRITICAL(),现在,改为测试中断控制寄存器的最低8位。
  • 新增API函数uxTaskPriorityGetFromISR()。
  • Cortex-A5 GIC-less移植层接口不再向中断处理服务函数传递中断外设地址。
  • 修复一个问题。问题出现在FreeRTOS-MPU中,当删除任务时,会试图释放属于任务的堆栈,即使这个堆栈是使用静态方法分配的。
  • 任务状态信息格式化函数现在会使用空格填充任务名字,确保正确的列对齐,即使任务名字很长也会得体的对齐。

更新FreeRTOS+跟踪记录库的版本为2.7.0

演示例程更新:

  • 增加两个演示例程:IntSemTest和TaskNotify。前者演示并测试在中断中使用互斥量,后者测试任务通知。
  • 增加Atmel SAMA5D4(Cortex-A5 MPU)移植层接口和演示例程。
  • 增加Altera Cyclone V(Cortex-A9 MPU)演示例程。
  • 更新Zynq演示例程,使用2014.04月的Xilinx's SDK版本,并且将RTOS新特性增加到演示例程任务。
  • 更新Atmel SAM4E和SAM4S演示例程,包含很多额外的测试和演示任务。
  • 修复一个极端情况下出现的问题。该问题会导致Atmel SAM4L执行低功耗tickless代码。
  • 修改中断队列测试,使之更能容忍CPU负载变化。
  • 更新MSVC FreeRTOS模拟器演示例程,包含最新标准的测试和演示任务。
  • 更新MingW/Eclipse FreeRTOS模拟器演示例程,使之匹配FreeRTOS MSVC模拟器演示例程。
  • 更新所有使用FreeRTOS+跟踪代码的演示例程,使用最新的跟踪记录代码。

FreeRTOS V8.1.2相对于FreeRTOS V8.1.1更新记录:

FreeRTOSV8.1.2发行于2014.09.02,推荐官方网站下载。考虑到官方网站的服务器在美国,下载速度较慢,下面给出CSDN下载地址:点击下载 ,下载需要1个资源分,请原谅博主需要资源分增加上传权限。

  • 在个别移植层接口代码中,默认打开configUSE_PORT_OPTIMISED_TASK_SELECTION,以允许使用硬件特殊指令加快任务切换(比如Cortex-M硬件接口)。

FreeRTOS V8.1.1相对于FreeRTOS V8.1.0更新记录:
FreeRTOSV8.1.1发行于2014.08.29,推荐官方网站下载。考虑到官方网站的服务器在美国,下载速度较慢,下面给出CSDN下载地址:点击下载 ,下载需要1个资源分,请原谅博主需要资源分增加上传权限。

  • 按照大家要求,小幅修改V8.1.0代码,使得在中断服务程序中可以释放互斥类型信号量(带有优先级继承)。

相关阅读

RS-485接口电路指南(TI:SLLA036D)
FreeRTOS高级篇11---空闲任务分析

作者:朱工
首发博客:https://freertos.blog.csdn.net/article/details/51525665
关注FreeRTOS从基础到高级专栏,即时收取FreeRTOS系列文章。
推荐阅读
关注数
3246
内容数
54
介绍FreeRTOS的基本功能,移植与使用。主要介绍FreeRTOS的裁剪、任务、内存管理、队列、信号量、任务通知等基本组成,看完可以会用FreeRTOS,高级篇会深入介绍FreeRTOS的实现细节、方法、技巧。
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息