Skip to content

Commit 2809926

Browse files
committed
Update FreeRTOS kernel to v11.2.0
1 parent 8a72204 commit 2809926

764 files changed

Lines changed: 34546 additions & 8743 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

ARM.CMSIS-FreeRTOS.pdsc

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -847,7 +847,7 @@
847847

848848
<components>
849849
<!-- CMSIS-RTOS2 FreeRTOS component -->
850-
<component Cclass="CMSIS" Cgroup="RTOS2" Csub="FreeRTOS" Cvariant="Cortex-M" Cversion="11.1.0" Capiversion="2.3.0" condition="CMSIS RTOS2 FreeRTOS CortexM">
850+
<component Cclass="CMSIS" Cgroup="RTOS2" Csub="FreeRTOS" Cvariant="Cortex-M" Cversion="11.2.0" Capiversion="2.3.0" condition="CMSIS RTOS2 FreeRTOS CortexM">
851851
<description>CMSIS-RTOS2 implementation for Cortex-M based on FreeRTOS</description>
852852
<RTE_Components_h>
853853
#define RTE_CMSIS_RTOS2 /* CMSIS-RTOS2 */
@@ -861,7 +861,7 @@
861861
</files>
862862
</component>
863863

864-
<component Cclass="CMSIS" Cgroup="RTOS2" Csub="FreeRTOS" Cvariant="Cortex-A" Cversion="11.1.0" Capiversion="2.3.0" condition="CMSIS RTOS2 FreeRTOS CortexA">
864+
<component Cclass="CMSIS" Cgroup="RTOS2" Csub="FreeRTOS" Cvariant="Cortex-A" Cversion="11.2.0" Capiversion="2.3.0" condition="CMSIS RTOS2 FreeRTOS CortexA">
865865
<description>CMSIS-RTOS2 implementation for Cortex-A based on FreeRTOS</description>
866866
<RTE_Components_h>
867867
#define RTE_CMSIS_RTOS2 /* CMSIS-RTOS2 */
@@ -877,7 +877,7 @@
877877
</files>
878878
</component>
879879

880-
<bundle Cbundle="FreeRTOS" Cclass="RTOS" Cversion="11.1.0">
880+
<bundle Cbundle="FreeRTOS" Cclass="RTOS" Cversion="11.2.0">
881881
<description>FreeRTOS Real Time Kernel</description>
882882
<doc>https://www.freertos.org/RTOS.html</doc>
883883

@@ -1306,7 +1306,7 @@
13061306
</RTE_Components_h>
13071307
<files>
13081308
<file category="doc" name="Documentation/html/cre_freertos_proj.html#native_freertos_config"/>
1309-
<file category="header" attr="config" name="Source/examples/template_configuration/FreeRTOSConfig.h" version="11.0.0"/>
1309+
<file category="header" attr="config" name="Source/examples/template_configuration/FreeRTOSConfig.h" version="11.2.0"/>
13101310
</files>
13111311
</component>
13121312

Source/CMakeLists.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -138,15 +138,18 @@ if(NOT FREERTOS_PORT)
138138
" IAR_ARM_CM33_NONSECURE - Compiler: IAR Target: ARM Cortex-M33 non-secure\n"
139139
" IAR_ARM_CM33_SECURE - Compiler: IAR Target: ARM Cortex-M33 secure\n"
140140
" IAR_ARM_CM33_NTZ_NONSECURE - Compiler: IAR Target: ARM Cortex-M33 non-trustzone non-secure\n"
141+
" IAR_ARM_CM33_TFM - Compiler: IAR Target: ARM Cortex-M33 non-secure for TF-M\n"
141142
" IAR_ARM_CM35P_NONSECURE - Compiler: IAR Target: ARM Cortex-M35P non-secure\n"
142143
" IAR_ARM_CM35P_SECURE - Compiler: IAR Target: ARM Cortex-M35P secure\n"
143144
" IAR_ARM_CM35P_NTZ_NONSECURE - Compiler: IAR Target: ARM Cortex-M35P non-trustzone non-secure\n"
144145
" IAR_ARM_CM55_NONSECURE - Compiler: IAR Target: ARM Cortex-M55 non-secure\n"
145146
" IAR_ARM_CM55_SECURE - Compiler: IAR Target: ARM Cortex-M55 secure\n"
146147
" IAR_ARM_CM55_NTZ_NONSECURE - Compiler: IAR Target: ARM Cortex-M55 non-trustzone non-secure\n"
148+
" IAR_ARM_CM55_TFM - Compiler: IAR Target: ARM Cortex-M55 non-secure for TF-M\n"
147149
" IAR_ARM_CM85_NONSECURE - Compiler: IAR Target: ARM Cortex-M85 non-secure\n"
148150
" IAR_ARM_CM85_SECURE - Compiler: IAR Target: ARM Cortex-M85 secure\n"
149151
" IAR_ARM_CM85_NTZ_NONSECURE - Compiler: IAR Target: ARM Cortex-M85 non-trustzone non-secure\n"
152+
" IAR_ARM_CM85_TFM - Compiler: IAR Target: ARM Cortex-M85 non-secure for TF-M\n"
150153
" IAR_ARM_CRX_NOGIC - Compiler: IAR Target: ARM Cortex-Rx no GIC\n"
151154
" IAR_ATMEGA323 - Compiler: IAR Target: ATMega323\n"
152155
" IAR_ATMEL_SAM7S64 - Compiler: IAR Target: Atmel SAM7S64\n"

Source/History.txt

Lines changed: 139 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,140 @@
11
Documentation and download available at https://www.FreeRTOS.org/
22

3+
Changes between FreeRTOS V11.1.0 and FreeRTOS V11.2.0 released March 04, 2025
4+
5+
+ Add CC-RH port for Renesas F1Kx devices. We thank @TrongNguyenR for their
6+
contribution.
7+
+ Add Pointer Authentication (PAC) and Branch Target Identification (BTI)
8+
support to the ARMv8-M ports. We thank @AhmedIsmail02 for their
9+
contribution.
10+
+ Add Floating Point Unit (FPU) support to the ARM_AARCH64 port. We thank
11+
@StefanBalt for their contribution.
12+
+ Add FPU Safe Application IRQ Handler suport to the ARM_AARCH64_SRE port.
13+
We thank @GhMarwen for their contribution.
14+
+ Add Privileged eXecute Never MPU attribute support to the ARMv8-M ports.
15+
We thank @AhmedIsmail02 for their contribution.
16+
+ Update XMOS xcore.ai port to be compatible with FreeRTOS Kernel version
17+
11. We thank @ACascarino for their contribution.
18+
+ ARM_CRx_No_GIC port updates:
19+
- Remove inline assembly and move assembly code to separate portASM.S
20+
file.
21+
- Add support for Floating Point Unit (FPU).
22+
- Add support to allow the application writer to handle SVC calls raised
23+
from the application code.
24+
- Add support for vApplicationFPUSafeIRQHandler.
25+
+ POSIX port updates:
26+
- Set PTHREAD_MUTEX_ROBUST attribute on the mutex to prevent application
27+
hangs when a thread dies while holding a mutex.
28+
- Avoid calling pthread_sigmask on non-FreeROS threads when
29+
vPortEndScheduler is called from a non-FreeRTOS thread. We thank
30+
@johnboiles for their contribution.
31+
- Remove unnecessary call to pthread_attr_setstacksize. We thank
32+
@hollinsky for their contribution.
33+
- Add an assert to catch if vPortYield is called from a non-FreeRTOS
34+
thread. We thank @johnboiles for their contribution.
35+
- Fix Posix port compilation on FreeBSD. We thank @tymmej for their
36+
contribution.
37+
+ Update the Xtensa port and move it to the Partner-Supported-Ports
38+
repository. We thank @ianstcdns for their contribution.
39+
+ Add vPortGenerateSimulatedInterruptFromWindowsThread API in the MSVC-MingW
40+
port to enable native windows thread to synchronize with FreeRTOS task
41+
through simulated interrupt.
42+
+ Update Windows port to use Waitable Timer instead of Sleep to improve tick
43+
accuracy. We thank @bknicholls and @leegeth for their contribution.
44+
+ Update the value of queueQUEUE_TYPE_SET to a unique value (5) to allow
45+
tracers to differentiate between queues and queue sets. We thank @schilkp
46+
for their contribution.
47+
+ Add traceSTARTING_SCHEDULER tracing hook to enable tracers to run code on
48+
startup. We thank @schilkp for their contribution.
49+
+ Define vApplicationGetTimerTaskMemory only when configUSE_TIMERS is set to
50+
1. We thank @HazardyKnusperkeks for their contribution.
51+
+ Reset xNextTaskUnblockTime in task notify FromISR APIs to allow the core
52+
to enter sleep mode at the earliest possible time when using tickless
53+
idle.
54+
+ Optimize xTaskIncrementTick for SMP by removing xYieldRequiredForCore. We
55+
thank @cymizer for their contribution.
56+
+ Update the SMP scheduler to re-select a core to yield when the core
57+
affinity of a ready task is changed.
58+
+ Update xEventGroupSetBits to read the event bits value to be returned to
59+
the caller while the scheduler is suspended. This fixes dereference after
60+
the event group is deleted by higher priority task. We thank @skotopes for
61+
their contribution.
62+
+ Optimize certain getter APIs by removing unnecessary calls to
63+
task{ENTER|EXIT}_CRITICAL() when the data access is atomic. We thank
64+
@GuilhermeGiacomoSimoes for their contribution.
65+
+ Optimize xTaskNotifyWait and ulTaskNotifyTake APIs to suspend the
66+
scheduler only if the task is not already notified, and the caller is
67+
willing to wait for the notification. We thank @jefftenney for
68+
their contribution.
69+
+ Fix error checking of prvCreateIdleTasks. We thank @kakkoko for their
70+
contribution.
71+
+ Update SMP lock macros and critical nesting macros to pass core ID as an
72+
argument. This reduces the number of accesses to a peripheral register to
73+
query core ID. We thank @felixvanoost for their contribution.
74+
+ Add stack pointer bounds check when configCHECK_FOR_STACK_OVERFLOW is set
75+
to 2 to improve reliability of stack overflow detection. We thank
76+
@jiladahe1997 for their contribution.
77+
+ Update run-time stats to include time elapsed since the last context
78+
switch for the currently running task.
79+
+ Add xQueueCreateSetStatic API for static creation of Queue Sets. We thank
80+
@kzorer for their contribution.
81+
+ Update the traceMALLOC() macro to pass the actual size of the allocated
82+
block for secure_heap, heap_2, heap_4 and heap_5. We thank @DazzlingOkami
83+
for their contribution.
84+
+ Update heap_1 to use heapADD_WILL_OVERFLOW macro to improve readability.
85+
We thank @wdfk-prog for their contribution.
86+
+ Add pointer protection to the pxNextFreeBlock member of the allocated
87+
block's metadata in heap_4 and heap_5 when configENABLE_HEAP_PROTECTOR is
88+
set to 1. We thank @Saiiijchan for their contribution.
89+
+ Allow the application writer to override pointer validation for heap_5
90+
when configENABLE_HEAP_PROTECTOR is used. We thank @Saiiijchan for their
91+
contribution.
92+
+ Add xPortResetHeapMinimumEverFreeHeapSize to heap_4.c and heap_5.c.
93+
We thank @TomasGalbickaNXP for their contribution.
94+
+ Add NULL check in the event_create function in the POSIX port. We thank
95+
@laroche for their contribution.
96+
+ Use _GNU_SOURCE macro instead of __USE_GNU in the Posix port. We thank
97+
@maxiaogood for their contribution.
98+
+ Use the new __ARM_FP macro instead of the deprectred __VFP_FP__ macro in
99+
GCC/ARM_CM7, GCC/ARM_CM4_MPU, and GCC/ARM_CM4F ports. We thank @haydenridd
100+
for their contribution.
101+
+ Add portMEMORY_BARRIER definition to the Xtensa port. We thank @superroc
102+
for their contribution.
103+
+ Move the hardware include msp430.h to port.c from portmacro.h. We thank
104+
@mayl for their contribution.
105+
+ Update ARM assembly syntax for Cortex-M ports. We thank @laroche for their
106+
contribution.
107+
+ Update the Windows port to records a pending yield in
108+
vPortCloseRunningThread to ensure that the next tick interrupt schedules
109+
the next task regardless of the value of configUSE_PREEMPTION.
110+
+ Fix the context switch issue in the RL78 port. We thank @KeitaKashima for
111+
their contribution.
112+
+ Fix compilation issue in ARM CM0 port when using Keil MDK. We thank
113+
@TomasGalbickaNXP for their contribution.
114+
+ Fix IA32 port compilation when configUSE_COMMON_INTERRUPT_ENTRY_POINT is
115+
set to 0. We thank @Ryzee119 for their contribution.
116+
+ Store configMTIMECMP_BASE_ADDRESS in a 64-bit integer for the RISC-V port.
117+
We thank @vishwamartur for their contribution.
118+
+ Fix nested interrupt handling and optimize FPU related context switching
119+
for the F1Kx port. We thank @TrongNguyenR for their contribution.
120+
+ Update the RP2040 port to add support for Raspberry Pi Pico SDK 2.0.0.
121+
We thank @kilograham for their contribution.
122+
+ Fix the return value of portYIELD_FROM_ISR macro for the MSVC-MingW port.
123+
We thank @wwhheerree for their contribution.
124+
+ Optimize vApplicationFPUSafeIRQHandler for the Coretex-A9 port by
125+
removing the unnecessarily preserved callee saved registers. We thank
126+
@Saiiijchan for their contribution.
127+
+ Fix the context array size for MPU ports to ensure the saved context
128+
location falls within the reserved context area rather than overlapping
129+
with the next MPU_SETTINGS structure member.
130+
+ Update CMake files for RP2040 port to fetch the port from the
131+
Community-Supported-Ports repo. We thank @kilograham for their
132+
contribution.
133+
+ Fix CMake file for the GCC ARM_CM0 port to include MPU files. We thank
134+
@0mhu for their contribution.
135+
+ Add an example of human readable table generated by vTaskListTasks() in
136+
the function documentation. We thank @wwhheerree for their contribution.
137+
3138
Changes between FreeRTOS V11.0.1 and FreeRTOS V11.1.0 released April 22, 2024
4139

5140
+ Add ARMv7-R port with Memory Protection Unit (MPU) support.
@@ -528,7 +663,7 @@ Changes between FreeRTOS V10.4.3 and FreeRTOS V10.4.4 released May 28 2021
528663
in more files.
529664
+ Other minor updates include adding additional configASSERT() checks and
530665
correcting and improving code comments.
531-
+ Go look at the smp branch to see the progress towards the Symetric
666+
+ Go look at the smp branch to see the progress towards the Symmetric
532667
Multiprocessing Kernel. https://github.com/FreeRTOS/FreeRTOS-Kernel/tree/smp
533668

534669
Changes between FreeRTOS V10.4.2 and FreeRTOS V10.4.3 released December 14 2020
@@ -2015,7 +2150,7 @@ Changes between V6.1.0 and V6.1.1 released January 14 2011
20152150
Embedded Workbench.
20162151
+ Added a new port for the MSP430X core using the IAR Embedded Workbench.
20172152
+ Updated all the RX62N demo projects that target the Renesas Demonstration
2018-
Kit (RDK) to take into account the revered LED wiring on later hardware
2153+
Kit (RDK) to take into account the reversed LED wiring on later hardware
20192154
revisions, and the new J-Link debug interface DLL.
20202155
+ Updated all the RX62N demo projects so the IO page served by the example
20212156
embedded web server works with all web browsers.
@@ -3174,7 +3309,7 @@ Changes between V1.2.3 and V1.2.4
31743309
xSerialPortInitMinimal() and the function xPortInit() has been renamed
31753310
to xSerialPortInit().
31763311
+ The function sSerialPutChar() has been renamed cSerialPutChar() and
3177-
the function return type chaned to portCHAR.
3312+
the function return type changed to portCHAR.
31783313
+ The integer and flop tasks now include calls to tskYIELD(), allowing
31793314
them to be used with the cooperative scheduler.
31803315
+ All the demo applications now use the integer and comtest tasks when the
@@ -3308,7 +3443,7 @@ Changes between V1.01 and V1.2.0
33083443
ports to allocate a different maximum number of priorities.
33093444
+ By default the trace facility is off, previously USE_TRACE_FACILITY
33103445
was defined.
3311-
+ comtest.c now uses a psuedo random delay between sends. This allows for
3446+
+ comtest.c now uses a pseudo random delay between sends. This allows for
33123447
better testing as the interrupts do not arrive at regular intervals.
33133448
+ Minor change to the Flashlite serial port driver. The driver is written
33143449
to demonstrate the scheduler and is not written to be efficient.

Source/MISRA.md

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -115,6 +115,25 @@ _Ref 11.5.5_
115115
because data storage buffers are implemented as uint8_t arrays for the
116116
ease of sizing, alignment and access.
117117

118+
#### Rule 14.3
119+
120+
MISRA C-2012 Rule 14.3: Controlling expressions shall not be invariant.
121+
122+
_Ref 14.3_
123+
- The `configMAX_TASK_NAME_LEN` , `taskRESERVED_TASK_NAME_LENGTH` and `SIZE_MAX`
124+
are evaluated to constants at compile time and may vary based on the build
125+
configuration.
126+
127+
#### Rule 18.1
128+
129+
MISRA C-2012 Rule 18.1: A pointer resulting from arithmetic on a pointer operand
130+
shall address an element of the same array as that pointer operand.
131+
132+
_Ref 18.1_
133+
- Array access remains within bounds since either the null terminator in
134+
the IDLE task name will break the loop, or the loop will break normally
135+
if the array size is smaller than the IDLE task name length.
136+
118137
#### Rule 21.6
119138

120139
MISRA C-2012 Rule 21.6: The Standard Library input/output functions shall not

Source/README.md

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,16 +14,22 @@ application projects. That way you will have the correct FreeRTOS source files
1414
included, and the correct include paths configured. Once a demo application is
1515
building and executing you can remove the demo application files, and start to
1616
add in your own application source files. See the
17-
[FreeRTOS Kernel Quick Start Guide](https://www.FreeRTOS.org/FreeRTOS-quick-start-guide.html)
17+
[FreeRTOS Kernel Quick Start Guide](https://www.freertos.org/Documentation/01-FreeRTOS-quick-start/01-Beginners-guide/02-Quick-start-guide)
1818
for detailed instructions and other useful links.
1919

2020
Additionally, for FreeRTOS kernel feature information refer to the
21-
[Developer Documentation](https://www.FreeRTOS.org/features.html),
22-
and [API Reference](https://www.FreeRTOS.org/a00106.html).
21+
[Developer Documentation](https://www.freertos.org/Documentation/02-Kernel/02-Kernel-features/00-Developer-docs),
22+
and [API Reference](https://www.freertos.org/Documentation/02-Kernel/04-API-references/01-Task-creation/00-TaskHandle).
2323

2424
Also for contributing and creating a Pull Request please refer to
2525
[the instructions here](.github/CONTRIBUTING.md#contributing-via-pull-request).
2626

27+
**FreeRTOS-Kernel V11.1.0
28+
[source code](https://github.com/FreeRTOS/FreeRTOS-Kernel/tree/V11.1.0) is part
29+
of the
30+
[FreeRTOS 202406.00 LTS](https://github.com/FreeRTOS/FreeRTOS-LTS/tree/202406-LTS)
31+
release.**
32+
2733
### Getting help
2834

2935
If you have any questions or need assistance troubleshooting your FreeRTOS project,
@@ -180,3 +186,7 @@ then sort the list, which can be done by running the bash command:
180186
Note that only the FreeRTOS-Kernel Source Files, [include](include),
181187
[portable/MemMang](portable/MemMang), and [portable/Common](portable/Common)
182188
files are checked for proper spelling, and formatting at this time.
189+
190+
## Third Party Tools
191+
Visit [this link](.github/third_party_tools.md) for detailed information about
192+
third-party tools with FreeRTOS support.

Source/croutine.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* FreeRTOS Kernel V11.1.0
2+
* FreeRTOS Kernel V11.2.0
33
* Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
44
*
55
* SPDX-License-Identifier: MIT

Source/event_groups.c

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* FreeRTOS Kernel V11.1.0
2+
* FreeRTOS Kernel V11.2.0
33
* Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
44
*
55
* SPDX-License-Identifier: MIT
@@ -551,7 +551,7 @@
551551
ListItem_t * pxNext;
552552
ListItem_t const * pxListEnd;
553553
List_t const * pxList;
554-
EventBits_t uxBitsToClear = 0, uxBitsWaitedFor, uxControlBits;
554+
EventBits_t uxBitsToClear = 0, uxBitsWaitedFor, uxControlBits, uxReturnBits;
555555
EventGroup_t * pxEventBits = xEventGroup;
556556
BaseType_t xMatchFound = pdFALSE;
557557

@@ -635,12 +635,15 @@
635635
/* Clear any bits that matched when the eventCLEAR_EVENTS_ON_EXIT_BIT
636636
* bit was set in the control word. */
637637
pxEventBits->uxEventBits &= ~uxBitsToClear;
638+
639+
/* Snapshot resulting bits. */
640+
uxReturnBits = pxEventBits->uxEventBits;
638641
}
639642
( void ) xTaskResumeAll();
640643

641-
traceRETURN_xEventGroupSetBits( pxEventBits->uxEventBits );
644+
traceRETURN_xEventGroupSetBits( uxReturnBits );
642645

643-
return pxEventBits->uxEventBits;
646+
return uxReturnBits;
644647
}
645648
/*-----------------------------------------------------------*/
646649

0 commit comments

Comments
 (0)