FreeRTOS upgraded to V11.0.0, with many updates (embedded source code download)
[Copy link]
Compared with FreeRTOS V10.6.2, V11.0.0 has the following updates:
+ SMP merged into mainline: While FreeRTOS introduced asymmetric multiprocessing (AMP) support in 2017, FreeRTOS version 11.0.0 is the first to merge symmetric multiprocessing (SMP) support into the mainline release. SMP enables one instance of the FreeRTOS kernel to schedule tasks across multiple identical processor cores. We thank Mike Bruno and Jerry McCarthy of XMOS and Darian Liang, Sudeep Mohanty, and Zim Kalinowski of Espressif Systems for their contributions.
+ Switched MISRA compliance checking from PC Lint to Coverity and updated from MISRA C:2004 to MISRA C:2012.
+ Added template FreeRTOSConfig.h with a short description of each configuration item. Application writers can use this template as a starting point to create a FreeRTOSConfig.h file for their application.
+ Added template FreeRTOS Port that can be used as a starting point for developing new FreeRTOS ports.
+ Added bounds checking and obfuscation to internal heap block pointers in heap_4.c and heap_5.c to help catch pointer corruption. Applications can enable these checks by setting configENABLE_HEAP_PROTECTOR to 1 in FreeRTOSConfig.h. We thank @oliverlavery for his contribution.
+ Updated vTaskList and vTaskGetRunTimeStats APIs to replace sprintf with snprintf.
+ Added trace macros to ports to trace ISR interactions with scheduler events. We thank @conara for his contribution.
+ Added trace macros that trace entry and exit of all APIs. We thank @Techcore123 for his contribution.
+ Added uxTaskBasePriorityGet and uxTaskBasePriorityGetFromISR APIs to get the base priority of a task. The base priority of a task is the last priority assigned to that task - due to priority inheritance, it may not be the current priority of the task.
+ Added pdTICKS_TO_MS macro to convert FreeRTOS tick times to millisecond times. We thank @Dazza0 for this contribution.
+ Added default implementations of vApplicationGetIdleTaskMemory and vApplicationGetTimerTaskMemory. Applications can enable these default implementations by setting configKERNEL_PROVIDED_STATIC_MEMORY to 1 in FreeRTOSConfig.h. We thank @mdnr-g for this contribution.
+ Updated vTaskGetInfo to include the start and end of the stack (as long as both values are available). We thank @vinceburns for this contribution.
+ Prevented resuming a task waiting for notification by calling vTaskResume or vTaskResumeFromISR. We thank @Moral-Hao for this contribution.
+ Added assertions to verify that the application has correctly installed the FreeRTOS handlers for PendSV and SVCall interrupts on Cortex-M devices. We thank @jefftenney for this contribution.
+ Renamed ARM_CA53_64_BIT and ARM_CA53_64_BIT_SRE ports to Arm_AARCH64 and Arm_AARCH64_SRE respectively, as these ports work on all AArch64 architectures. We thank @urutva for his contribution.
+ Added CMake support to allow application writers to select RISC-V chip extensions. We thank @JoeBenczarski for his contribution.
+ Added CMake support to allow application writers to build applications using only static allocations. We thank @conara for his contribution.
+ Made taskYIELD available for non-privileged tasks for the ARMv8-M port.
+ Updated the Cortex-M23 port to not use PSPLIM_NS. We thank @urutva for his contribution.
+ Updated the SysTick setup code for the ARMv8-M port to first configure the clock source, then enable SysTick. This is to work around a bug in QEMU versions older than 7.0.0 that caused emulation errors if SysTick was enabled without first selecting a valid clock source. We thank @jefftenney for his contribution.
+ Added a port-optimized task selection algorithm usable for the ARMv7-M port to the ARMv8-M port. We thank @jefftenney for his contribution.
+ Improved speed of pvPortMalloc in heap_4.c and heap_5.c by removing unnecessary steps while splitting large memory blocks into two parts. We thank @Moral-Hao for his contribution.
+ Shortened critical sections in pvPortMalloc in heap_2.c, heap_4.c and heap_5.c by moving size calculations out of the critical section. We thank @Moral-Hao for his contribution.
+ Updated xTaskNotifyWait and ulTaskNotifyTake to remove non-deterministic operations from traversing links from critical sections. We thank @karver8 for his contribution.
+ Fixed stack end and stack size calculation in POSIX port to meet stack alignment requirements on MacOS. We thank @tegimeki for the contribution.
+ Update vTaskPrioritySet implementation to use the new priority when a task inherits a priority from a mutex it holds and the new priority is greater than the inherited priority. We thank @Moral-Hao for the contribution.
+ Add stack alignment adjustment if the stack grows upwards. We thank @ivq for the contribution.
+ Fix pxTopOfStack calculation in configINIT_TLS_BLOCK when picolib C is selected as the C library implementation to ensure that pxPortInitialiseStack does not overwrite data in the TLS block part of the stack. We thank @bebebib-rs for the contribution.
+ Fix vPortEndScheduler() of the MSVC port so that the prvProcessSimulatedInterrupts function does not fall into an infinite loop.
The scheduler is stopped. We thank @Ju1He1 for the contribution.
+ Added pull request (PR) process, explaining the stages a PR goes through.
|