Skip to content

Commit 2c1e8ea

Browse files
committed
freeRTOS - Release 10.5.0 - 16 September
1 parent 31e46ba commit 2c1e8ea

26 files changed

+256
-263
lines changed

library.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
name=FreeRTOS
2-
version=10.4.6-8
2+
version=10.5.0-0
33
author=Richard Barry <[email protected]>
44
maintainer=Phillip Stevens <[email protected]>
55
sentence=<h3>FreeRTOS Real Time Operating System implemented for AVR (Uno, Nano, Leonardo, Mega).</h3>

readme.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,8 @@ My other [AVRfreeRTOS Sourceforge Repository](https://sourceforge.net/projects/a
1313

1414
This library was the genesis of [generalised support for the ATmega platform within FreeRTOS](https://github.com/FreeRTOS/FreeRTOS-Kernel/pull/48).
1515

16-
Over the past few years freeRTOS development has become increasingly 32-bit orientated, with little change or improvement for the 8-bit world. As such I'm treating this 1st January 2022 10.4.6 snapshot as my LTS release. Bugfixes to 7th August 2022 have been added.
16+
Over the past few years freeRTOS development has become increasingly 32-bit orientated, with little change or improvement for the 8-bit world. As such I'm treating this 16th September 2022 10.5.0 release as my LTS release.
17+
1718

1819
## General
1920

src/FreeRTOSConfig.h

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

src/History.txt

Lines changed: 123 additions & 70 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,99 @@
1-
Changes between FreeRTOS V10.4.6 and TBD
1+
Changes between FreeRTOS V10.4.6 and FreeRTOS V10.5.0 released September 16 2022
22

33
Documentation and download available at https://www.FreeRTOS.org/
44

5-
+ Changed uxAutoReload parameter in timer functions to xAutoReload. The
6-
type is now BaseType_t. This matches the type of pdTRUE and pdFALSE.
7-
The new function xTimerGetAutoReload() provides the auto-reload state as
8-
a BaseType_t. The legacy function uxTimerGetAutoReload is retained with the
9-
original UBaseType_t return value.
5+
+ Heap improvements:
6+
- Add a check to heap_2 to track if a memory block is allocated to
7+
the application or not. The MSB of the size field is used for this
8+
purpose. The same check already exists in heap_4 and heap_5. This
9+
check prevents double free errors.
10+
- Add a new flag configHEAP_CLEAR_MEMORY_ON_FREE to heap_2, heap_4
11+
and heap_5. If the flag is set in FreeRTOSConfig.h then memory freed using
12+
vPortFree() is automatically cleared to zero.
13+
- Add a new API pvPortCalloc to heap_2, heap_4 and heap_5 which has the same
14+
signature as the standard library calloc function.
15+
- Update the pointer types to portPOINTER_SIZE_TYPE. Contributed by
16+
@Octaviarius.
17+
+ Add the ability to override send and receive completed callbacks for each
18+
instance of a stream buffer or message buffer. Earlier there could be
19+
one send and one receive callback for all instances of stream and message
20+
buffers. Having separate callbacks per instance allows different message
21+
and stream buffers to be used differently - for example, some for inter core
22+
communication and others for same core communication.
23+
The feature can be controlled by setting the configuration option
24+
configUSE_SB_COMPLETED_CALLBACK in FreeRTOSConfig.h. When the option is set to 1,
25+
APIs xStreamBufferCreateWithCallback() or xStreamBufferCreateStaticWithCallback()
26+
(and likewise APIs for message buffer) can be used to create a stream buffer
27+
or message buffer instance with application provided callback overrides. When
28+
the option is set to 0, then the default callbacks as defined by
29+
sbSEND_COMPLETED() and sbRECEIVE_COMPLETED() macros are invoked. To maintain
30+
backwards compatibility, configUSE_SB_COMPLETED_CALLBACK defaults to 0. The
31+
functionality is currently not supported for MPU enabled ports.
32+
+ Generalize the FreeRTOS's Thread Local Storage (TLS) support so that it
33+
is not tied to newlib and can be used with other c-runtime libraries also.
34+
The default behavior for newlib support is kept same for backward
35+
compatibility.
36+
+ Add support to build and link FreeRTOS using CMake build system. Contributed
37+
by @yhsb2k.
38+
+ Add support to generate Software Bill of Materials (SBOM) for every release.
1039
+ Introduce the configUSE_MINI_LIST_ITEM configuration option. When this
1140
option is set to 1, ListItem_t and MiniLitItem_t remain separate types.
1241
However, when configUSE_MINI_LIST_ITEM == 0, MiniLitItem_t and ListItem_t
1342
are both typedefs of the same struct xLIST_ITEM. This addresses some issues
1443
observed when strict-aliasing and link time optimization are enabled.
1544
To maintain backwards compatibility, configUSE_MINI_LIST_ITEM defaults to 1.
16-
+ Add the ability to override send and receive completed callbacks for each
17-
instance of a stream buffer or message buffer. The feature can be controlled
18-
by setting the configuration option configUSE_SB_COMPLETED_CALLBACK in
19-
FreeRTOSConfig.h. When the option is set to 1, APIs
20-
xStreamBufferCreateWithCallback() or xStreamBufferCreateStaticWithCallback()
21-
(and likewise APIs from message buffer) can be used to create a stream buffer
22-
or message buffer instance with application provided callback overrides. When
23-
the option is set to 0, then the default callbacks as defined by
24-
sbSEND_COMPLETED() and sbRECEIVE_COMPLETED() macros are invoked. To maintain
25-
backwards compatibility, configUSE_SB_COMPLETED_CALLBACK defaults to 0. The
26-
functionaility is currently not supported for MPU enabled ports.
45+
+ Simplify prvInitialiseNewTask to memset newly allocated TCB structures
46+
to zero, and remove code that set individual structure members to zero.
47+
+ Add prototype for prvPortYieldFromISR to the POSIX port so that it builds
48+
without any warning with -Wmissing-prototypes compiler option.
49+
+ Add top of stack and end of stack to the task info report obtained using
50+
vTaskGetInfo(). Contributed by @shreyasbharath.
51+
+ Add a cap to the cRxLock and cTxLock members of the queue data structure.
52+
These locks count the number items received and sent to the queue while
53+
the queue was locked. These are later used to unblock tasks waiting on
54+
the queue when the queue is unlocked. This PR caps the values of the
55+
cRxLock and cTxLock to the number of tasks in the system because we cannot
56+
unblock more tasks than there are in the system. Note that the same assert
57+
could still be triggered is the application creates more than 127 tasks.
58+
+ Changed uxAutoReload parameter in timer functions to xAutoReload. The
59+
type is now BaseType_t. This matches the type of pdTRUE and pdFALSE.
60+
The new function xTimerGetAutoReload() provides the auto-reload state as
61+
a BaseType_t. The legacy function uxTimerGetAutoReload is retained with the
62+
original UBaseType_t return value.
63+
+ Fix support for user implementations of tickless idle that call
64+
vTaskStepTick() with xExpectedIdleTime ticks to step. The new code
65+
ensures xTickCount reaches xNextTaskUnblockTime inside xTaskIncrementTick()
66+
instead of inside vTaskStepTick(). This fixes the typical case where a task
67+
wakes up one tick late and a rare case assertion failure when xTickCount\
68+
rolls over. Contributed by @jefftenney.
69+
+ Fix deadlock in event groups when pvPortMalloc and vPortFree functions
70+
are protected with a mutex. Contributed by @clemenskresser.
71+
+ Fix a warning in tasks.c when compiled with -Wduplicated-branches
72+
GCC option. Contributed by @pierrenoel-bouteville-act.
73+
+ Fix compilation error in tasks.c when configSUPPORT_DYNAMIC_ALLOCATION
74+
is set to zero. Contributed by @rdpoor.
75+
+ Fix prvWriteMessageToBuffer() function in stream_buffer.c so that it correctly
76+
copies length on big endian platforms too.
77+
+ Remove the need for INCLUDE_vTaskSuspend to be set to 1
78+
when configUSE_TICKLESS_IDLE is enabled. Contributed by @pramithkv.
79+
+ Update the RL78 IAR port to the latest version of IAR which uses the
80+
industry standard ELF format as opposed to earlier UBROF object format.
81+
Contributed by @felipe-iar.
82+
+ Add tick type is atomic flag when tick count is 16-bit to PIC24 port. This
83+
allows the PIC24 family of 16 bit processors to read the tick count without
84+
a critical section when the tick count is also 16 bits.
85+
+ Fix offset-out-of-range errors for GCC CM3/CM4 mpu ports when
86+
Link Time Optimization is enabled. Contributed by @niniemann.
87+
+ Remove #error when RISC-V port is compiled on a 64-bit RISC-V platform.
88+
Contributed by @cmdrf.
89+
+ Fix ullPortInterruptNesting alignment in Cortex-A53 port so that it is
90+
8-byte aligned. This fixes the unaligned access exception. Contributed
91+
by @Atomar25.
92+
+ Fix Interrupt Handler Register Function and Exception Process in NiosII
93+
Port. Contributed by @ghost.
94+
+ Update the uncrustify config file to match the version of the uncrustify
95+
used in the CI Action. Also, pin the version of uncrustify in CI. Contributed
96+
by @swaldhoer.
2797

2898
Changes between FreeRTOS V10.4.5 and FreeRTOS V10.4.6 released November 12 2021
2999

@@ -52,57 +122,45 @@ Changes between FreeRTOS V10.4.4 and FreeRTOS V10.4.5 released September 10 2021
52122
time is only a good measure of the slack time in a system if there are no
53123
other tasks executing at the idle priority, tickless idle is not used, and
54124
configIDLE_SHOULD_YIELD is set to 0.
55-
+ ARMv8-M secure-side port: Tasks that call secure functions from the
56-
non-secure side of an ARMv8-M MCU (ARM Cortex-M23 and Cortex-M33) have two
57-
contexts - one on the non-secure side and one on the secure-side. Previous
58-
versions of the FreeRTOS ARMv8-M secure-side ports allocated the structures
59-
that reference secure-side contexts at run time. Now the structures are
60-
allocated statically at compile time. The change necessitates the
61-
introduction of the secureconfigMAX_SECURE_CONTEXTS configuration constant,
62-
which sets the number of statically allocated secure contexts.
63-
secureconfigMAX_SECURE_CONTEXTS defaults to 8 if left undefined.
64-
Applications that only use FreeRTOS code on the non-secure side, such as
65-
those running third-party code on the secure side, are not affected by
66-
this change.
67125

68126
Changes between FreeRTOS V10.4.3 and FreeRTOS V10.4.4 released May 28 2021
69-
+ Minor performance improvements to xTaskIncrementTick() achieved by providing
70-
macro versions of uxListRemove() and vListInsertEnd().
71-
+ Minor refactor of timers.c that obsoletes the need for the
72-
tmrCOMMAND_START_DONT_TRACE macro and removes the need for timers.c to
73-
post to its own event queue. A consequence of this change is that auto-
74-
reload timers that miss their intended next execution time will execute
75-
again immediately rather than executing again the next time the command
76-
queue is processed. (thanks Jeff Tenney).
77-
+ Fix a race condition in the message buffer implementation. The
78-
underlying cause was that length and data bytes are written and read as
79-
two distinct operations, which both modify the size of the buffer. If a
80-
context switch occurs after adding or removing the length bytes, but
81-
before adding or removing the data bytes, then another task may observe
82-
the message buffer in an invalid state.
83-
+ The xTaskCreate() and xTaskCreateStatic() functions accept a task priority
84-
as an input parameter. The priority has always been silently capped to
85-
(configMAX_PRIORITIES - 1) should it be set to a value above that priority.
86-
Now values above that priority will also trigger a configASSERT() failure.
127+
+ Minor performance improvements to xTaskIncrementTick() achieved by providing
128+
macro versions of uxListRemove() and vListInsertEnd().
129+
+ Minor refactor of timers.c that obsoletes the need for the
130+
tmrCOMMAND_START_DONT_TRACE macro and removes the need for timers.c to
131+
post to its own event queue. A consequence of this change is that auto-
132+
reload timers that miss their intended next execution time will execute
133+
again immediately rather than executing again the next time the command
134+
queue is processed. (thanks Jeff Tenney).
135+
+ Fix a race condition in the message buffer implementation. The
136+
underlying cause was that length and data bytes are written and read as
137+
two distinct operations, which both modify the size of the buffer. If a
138+
context switch occurs after adding or removing the length bytes, but
139+
before adding or removing the data bytes, then another task may observe
140+
the message buffer in an invalid state.
141+
+ The xTaskCreate() and xTaskCreateStatic() functions accept a task priority
142+
as an input parameter. The priority has always been silently capped to
143+
(configMAX_PRIORITIES - 1) should it be set to a value above that priority.
144+
Now values above that priority will also trigger a configASSERT() failure.
87145
+ Replace configASSERT( pcQueueName ) in vQueueAddToRegistry with a NULL
88-
pointer check.
89-
+ Introduce the configSTACK_ALLOCATION_FROM_SEPARATE_HEAP configuration
90-
constant that enables the stack allocated to tasks to come from a heap other
91-
than the heap used by other memory allocations. This enables stacks to be
92-
placed within special regions, such as fast tightly coupled memory.
93-
+ If there is an attempt to add the same queue or semaphore handle to the
94-
queue registry more than once then prior versions would create two separate
95-
entries. Now if this is done the first entry is overwritten rather than
96-
duplicated.
97-
+ Update the ESP32 port and TF-M (Trusted Firmware M)code to the latest from
98-
their respective repositories.
99-
+ Correct a build error in the POSIX port.
100-
+ Additional minor formatting updates, including replacing tabs with spaces
101-
in more files.
102-
+ Other minor updates include adding additional configASSERT() checks and
103-
correcting and improving code comments.
104-
+ Go look at the smp branch to see the progress towards the Symetric
105-
Multiprocessing Kernel. https://github.com/FreeRTOS/FreeRTOS-Kernel/tree/smp
146+
pointer check.
147+
+ Introduce the configSTACK_ALLOCATION_FROM_SEPARATE_HEAP configuration
148+
constant that enables the stack allocated to tasks to come from a heap other
149+
than the heap used by other memory allocations. This enables stacks to be
150+
placed within special regions, such as fast tightly coupled memory.
151+
+ If there is an attempt to add the same queue or semaphore handle to the
152+
queue registry more than once then prior versions would create two separate
153+
entries. Now if this is done the first entry is overwritten rather than
154+
duplicated.
155+
+ Update the ESP32 port and TF-M (Trusted Firmware M)code to the latest from
156+
their respective repositories.
157+
+ Correct a build error in the POSIX port.
158+
+ Additional minor formatting updates, including replacing tabs with spaces
159+
in more files.
160+
+ Other minor updates include adding additional configASSERT() checks and
161+
correcting and improving code comments.
162+
+ Go look at the smp branch to see the progress towards the Symetric
163+
Multiprocessing Kernel. https://github.com/FreeRTOS/FreeRTOS-Kernel/tree/smp
106164

107165
Changes between FreeRTOS V10.4.2 and FreeRTOS V10.4.3 released December 14 2020
108166

@@ -334,8 +392,6 @@ Changes between FreeRTOS V10.0.1 and FreeRTOS V10.1.0 released 22 August 2018
334392
+ Added Xtensa port and demo application for the XCC compiler.
335393
+ Changed the implementation of vPortEndScheduler() for the Win32 port to
336394
simply call exit( 0 ).
337-
+ Bug fix in vPortEnableInterrupt() for the GCC Microblaze port to protect
338-
the read modify write access to an internal Microblaze register.
339395
+ Fix minor niggles when the MPU is used with regards to prototype
340396
differences, static struct size differences, etc.
341397
+ The uxStackHighWaterMark member of the TaskStatus_t structure now has type
@@ -2922,6 +2978,3 @@ Changes between V1.00 and V1.01
29222978
+ Prevent the call to kbhit() in main.c for debug builds as the debugger
29232979
seems to have problems stepping over the call. This if for the PC port
29242980
only.
2925-
2926-
2927-

src/atomic.h

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

src/event_groups.c

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

src/event_groups.h

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* FreeRTOS Kernel V10.4.6
2+
* FreeRTOS Kernel V10.5.0
33
* Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
44
*
55
* SPDX-License-Identifier: MIT
@@ -423,7 +423,7 @@ EventBits_t xEventGroupClearBits( EventGroupHandle_t xEventGroup,
423423
const EventBits_t uxBitsToClear ) PRIVILEGED_FUNCTION;
424424
#else
425425
#define xEventGroupClearBitsFromISR( xEventGroup, uxBitsToClear ) \
426-
xTimerPendFunctionCallFromISR( vEventGroupClearBitsCallback, ( void * ) xEventGroup, ( uint32_t ) uxBitsToClear, NULL )
426+
xTimerPendFunctionCallFromISR( vEventGroupClearBitsCallback, ( void * ) ( xEventGroup ), ( uint32_t ) ( uxBitsToClear ), NULL )
427427
#endif
428428

429429
/**
@@ -579,7 +579,7 @@ EventBits_t xEventGroupSetBits( EventGroupHandle_t xEventGroup,
579579
BaseType_t * pxHigherPriorityTaskWoken ) PRIVILEGED_FUNCTION;
580580
#else
581581
#define xEventGroupSetBitsFromISR( xEventGroup, uxBitsToSet, pxHigherPriorityTaskWoken ) \
582-
xTimerPendFunctionCallFromISR( vEventGroupSetBitsCallback, ( void * ) xEventGroup, ( uint32_t ) uxBitsToSet, pxHigherPriorityTaskWoken )
582+
xTimerPendFunctionCallFromISR( vEventGroupSetBitsCallback, ( void * ) ( xEventGroup ), ( uint32_t ) ( uxBitsToSet ), ( pxHigherPriorityTaskWoken ) )
583583
#endif
584584

585585
/**
@@ -728,7 +728,7 @@ EventBits_t xEventGroupSync( EventGroupHandle_t xEventGroup,
728728
* \defgroup xEventGroupGetBits xEventGroupGetBits
729729
* \ingroup EventGroup
730730
*/
731-
#define xEventGroupGetBits( xEventGroup ) xEventGroupClearBits( xEventGroup, 0 )
731+
#define xEventGroupGetBits( xEventGroup ) xEventGroupClearBits( ( xEventGroup ), 0 )
732732

733733
/**
734734
* event_groups.h

src/heap_3.c

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

src/list.c

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

src/list.h

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

0 commit comments

Comments
 (0)