@@ -2,28 +2,106 @@ Changes between FreeRTOS V10.4.6 and TBD
2
2
3
3
Documentation and download available at https://www.FreeRTOS.org/
4
4
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
+ + Add support for ARM Cortex-M55.
6
+ + Add vectored mode interrupt support to the RISC-V port.
7
+ + Heap improvements:
8
+ - Add a check to heap_2 to track if a memory block is allocated to
9
+ the application or not. The MSB of the size field is used for this
10
+ purpose. The same check already exists in heap_4 and heap_5. This
11
+ check prevents double free errors.
12
+ - Add a new flag configHEAP_CLEAR_MEMORY_ON_FREE to heap_2, heap_4
13
+ and heap_5. If the flag is set in FreeRTOSConfig.h then memory freed using
14
+ vPortFree() is automatically cleared to zero.
15
+ - Add a new API pvPortCalloc to heap_2, heap_4 and heap_5 which has the same
16
+ signature as the standard library calloc function.
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
+ + Add support to build and link FreeRTOS using CMake build system. Contributed
33
+ by @yhsb2k.
34
+ + Add support to generate Software Bill of Materials (SBOM) for every release.
35
+ + Add support for 16 MPU regions to the GCC Cortex-M33 ports.
36
+ + Add ARM Cortex-M7 r0p0/r0p1 Errata 837070 workaround to ARM CM4 MPU ports.
37
+ The application writer needs to define configENABLE_ERRATA_837070_WORKAROUND
38
+ when using CM4 MPU ports on a Cortex-M7 r0p0/r0p1 core.
39
+ + Add configSYSTICK_CLOCK_HZ to Cortex-M0 ports. This is needed to support
40
+ the case when the SysTick timer is not clocked from the same source as the CPU.
41
+ + Add hardware stack protection support to MicroBlazeV9 port. This ensures that
42
+ the CPU immediately raises Stack Protection Violation exception as soon as any
43
+ task violates its stack limits. Contributed by @uecasm.
10
44
+ Introduce the configUSE_MINI_LIST_ITEM configuration option. When this
11
45
option is set to 1, ListItem_t and MiniLitItem_t remain separate types.
12
46
However, when configUSE_MINI_LIST_ITEM == 0, MiniLitItem_t and ListItem_t
13
47
are both typedefs of the same struct xLIST_ITEM. This addresses some issues
14
48
observed when strict-aliasing and link time optimization are enabled.
15
49
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.
50
+ + Simplify prvInitialiseNewTask to memset newly allocated TCB structures
51
+ to zero, and remove code that set individual structure members to zero.
52
+ + Add prototype for prvPortYieldFromISR to the POSIX port so that it builds
53
+ without any warning with -Wmissing-prototypes compiler option.
54
+ + Add top of stack and end of stack to the task info report obtained using
55
+ vTaskGetInfo(). Contributed by @shreyasbharath.
56
+ + Add a cap to the cRxLock and cTxLock members of the queue data structure.
57
+ These locks count the number items received and sent to the queue while
58
+ the queue was locked. These are later used to unblock tasks waiting on
59
+ the queue when the queue is unlocked. This PR caps the values of the
60
+ cRxLock and cTxLock to the number of tasks in the system because we cannot
61
+ unblock more tasks than there are in the system. Note that the same assert
62
+ could still be triggered is the application creates more than 127 tasks.
63
+ + Changed uxAutoReload parameter in timer functions to xAutoReload. The
64
+ type is now BaseType_t. This matches the type of pdTRUE and pdFALSE.
65
+ The new function xTimerGetAutoReload() provides the auto-reload state as
66
+ a BaseType_t. The legacy function uxTimerGetAutoReload is retained with the
67
+ original UBaseType_t return value.
68
+ + Fix support for user implementations of tickless idle that call
69
+ vTaskStepTick() with xExpectedIdleTime ticks to step. The new code
70
+ ensures xTickCount reaches xNextTaskUnblockTime inside xTaskIncrementTick()
71
+ instead of inside vTaskStepTick(). This fixes the typical case where a task
72
+ wakes up one tick late and a rare case assertion failure when xTickCount\
73
+ rolls over. Contributed by @jefftenney.
74
+ + Fix deadlock in event groups when pvPortMalloc and vPortFree functions
75
+ are protected with a mutex. Contributed by @clemenskresser.
76
+ + Fix a warning in tasks.c when compiled with -Wduplicated-branches
77
+ GCC option. Contributed by @pierrenoel-bouteville-act.
78
+ + Fix compilation error in tasks.c when configSUPPORT_DYNAMIC_ALLOCATION
79
+ is set to zero. Contributed by @rdpoor.
80
+ + Fix prvWriteMessageToBuffer() function in stream_buffer.c so that it correctly
81
+ copies length on big endian platforms too.
82
+ + Remove the need for INCLUDE_vTaskSuspend to be set to 1
83
+ when configUSE_TICKLESS_IDLE is enabled. Contributed by @pramithkv.
84
+ + Update the RL78 IAR port to the latest version of IAR which uses the
85
+ industry standard ELF format as opposed to earlier UBROF object format.
86
+ Contributed by @felipe-iar.
87
+ + Add tick type is atomic flag when tick count is 16-bit to PIC24 port. This
88
+ allows the PIC24 family of 16 bit processors to read the tick count without
89
+ a critical section when the tick count is also 16 bits.
90
+ + Fix offset-out-of-range errors for GCC CM3/CM4 mpu ports when
91
+ Link Time Optimization is enabled. Contributed by @niniemann.
92
+ + Remove #error when RISC-V port is compiled on a 64-bit RISC-V platform.
93
+ Contributed by @cmdrf.
94
+ + Fix ullPortInterruptNesting alignment in Cortex-A53 port so that it is
95
+ 8-byte aligned. This fixes the unaligned access exception. Contributed
96
+ by @Atomar25.
97
+ + Fix Interrupt Handler Register Function and Exception Process in NiosII
98
+ Port. Contributed by @ghost.
99
+ + Change FreeRTOS IRQ Handler for Cortex-A53 SRE port to store and restore
100
+ interrupt acknowledge register. This ensures that the SRE port behavior
101
+ matches the Memory Mapped IO port. Contributed by @sviaunxp.
102
+ + Update the uncrustify config file to match the version of the uncrustify
103
+ used in the CI Action. Also, pin the version of uncrustify in CI. Contributed
104
+ by @swaldhoer.
27
105
28
106
Changes between FreeRTOS V10.4.5 and FreeRTOS V10.4.6 released November 12 2021
29
107
@@ -64,43 +142,43 @@ Changes between FreeRTOS V10.4.4 and FreeRTOS V10.4.5 released September 10 2021
64
142
this change.
65
143
66
144
Changes between FreeRTOS V10.4.3 and FreeRTOS V10.4.4 released May 28 2021
67
- + Minor performance improvements to xTaskIncrementTick() achieved by providing
68
- macro versions of uxListRemove() and vListInsertEnd().
69
- + Minor refactor of timers.c that obsoletes the need for the
70
- tmrCOMMAND_START_DONT_TRACE macro and removes the need for timers.c to
71
- post to its own event queue. A consequence of this change is that auto-
72
- reload timers that miss their intended next execution time will execute
73
- again immediately rather than executing again the next time the command
74
- queue is processed. (thanks Jeff Tenney).
75
- + Fix a race condition in the message buffer implementation. The
76
- underlying cause was that length and data bytes are written and read as
77
- two distinct operations, which both modify the size of the buffer. If a
78
- context switch occurs after adding or removing the length bytes, but
79
- before adding or removing the data bytes, then another task may observe
80
- the message buffer in an invalid state.
81
- + The xTaskCreate() and xTaskCreateStatic() functions accept a task priority
82
- as an input parameter. The priority has always been silently capped to
83
- (configMAX_PRIORITIES - 1) should it be set to a value above that priority.
84
- Now values above that priority will also trigger a configASSERT() failure.
145
+ + Minor performance improvements to xTaskIncrementTick() achieved by providing
146
+ macro versions of uxListRemove() and vListInsertEnd().
147
+ + Minor refactor of timers.c that obsoletes the need for the
148
+ tmrCOMMAND_START_DONT_TRACE macro and removes the need for timers.c to
149
+ post to its own event queue. A consequence of this change is that auto-
150
+ reload timers that miss their intended next execution time will execute
151
+ again immediately rather than executing again the next time the command
152
+ queue is processed. (thanks Jeff Tenney).
153
+ + Fix a race condition in the message buffer implementation. The
154
+ underlying cause was that length and data bytes are written and read as
155
+ two distinct operations, which both modify the size of the buffer. If a
156
+ context switch occurs after adding or removing the length bytes, but
157
+ before adding or removing the data bytes, then another task may observe
158
+ the message buffer in an invalid state.
159
+ + The xTaskCreate() and xTaskCreateStatic() functions accept a task priority
160
+ as an input parameter. The priority has always been silently capped to
161
+ (configMAX_PRIORITIES - 1) should it be set to a value above that priority.
162
+ Now values above that priority will also trigger a configASSERT() failure.
85
163
+ Replace configASSERT( pcQueueName ) in vQueueAddToRegistry with a NULL
86
- pointer check.
87
- + Introduce the configSTACK_ALLOCATION_FROM_SEPARATE_HEAP configuration
88
- constant that enables the stack allocated to tasks to come from a heap other
89
- than the heap used by other memory allocations. This enables stacks to be
90
- placed within special regions, such as fast tightly coupled memory.
91
- + If there is an attempt to add the same queue or semaphore handle to the
92
- queue registry more than once then prior versions would create two separate
93
- entries. Now if this is done the first entry is overwritten rather than
94
- duplicated.
95
- + Update the ESP32 port and TF-M (Trusted Firmware M)code to the latest from
96
- their respective repositories.
97
- + Correct a build error in the POSIX port.
98
- + Additional minor formatting updates, including replacing tabs with spaces
99
- in more files.
100
- + Other minor updates include adding additional configASSERT() checks and
101
- correcting and improving code comments.
102
- + Go look at the smp branch to see the progress towards the Symetric
103
- Multiprocessing Kernel. https://github.com/FreeRTOS/FreeRTOS-Kernel/tree/smp
164
+ pointer check.
165
+ + Introduce the configSTACK_ALLOCATION_FROM_SEPARATE_HEAP configuration
166
+ constant that enables the stack allocated to tasks to come from a heap other
167
+ than the heap used by other memory allocations. This enables stacks to be
168
+ placed within special regions, such as fast tightly coupled memory.
169
+ + If there is an attempt to add the same queue or semaphore handle to the
170
+ queue registry more than once then prior versions would create two separate
171
+ entries. Now if this is done the first entry is overwritten rather than
172
+ duplicated.
173
+ + Update the ESP32 port and TF-M (Trusted Firmware M)code to the latest from
174
+ their respective repositories.
175
+ + Correct a build error in the POSIX port.
176
+ + Additional minor formatting updates, including replacing tabs with spaces
177
+ in more files.
178
+ + Other minor updates include adding additional configASSERT() checks and
179
+ correcting and improving code comments.
180
+ + Go look at the smp branch to see the progress towards the Symetric
181
+ Multiprocessing Kernel. https://github.com/FreeRTOS/FreeRTOS-Kernel/tree/smp
104
182
105
183
Changes between FreeRTOS V10.4.2 and FreeRTOS V10.4.3 released December 14 2020
106
184
0 commit comments