Skip to content

Instantly share code, notes, and snippets.

@avtolstoy
Created July 26, 2019 08:19
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save avtolstoy/2f4b147f3a678bef75afde818a8ff77c to your computer and use it in GitHub Desktop.
Save avtolstoy/2f4b147f3a678bef75afde818a8ff77c to your computer and use it in GitHub Desktop.
FreeRTOS 10.0.1 -> 10.2.1 Changelog
Changes between FreeRTOS V10.2.1 and FreeRTOS V10.2.0 released May 13 2019:
+ Added ARM Cortex-M23 port layer to complement the pre-existing ARM
Cortex-M33 port layer.
+ The RISC-V port now automatically switches between 32-bit and 64-bit
cores.
+ Introduced the portMEMORY_BARRIER macro to prevent instruction re-ordering
when GCC link time optimisation is used.
+ Introduced the portDONT_DISCARD macro to the ARMv8-M ports to try and
prevent the secure side builds from removing symbols required by the
non secure side build.
+ Introduced the portARCH_NAME to provide additional data to select semi-
automated build environments.
+ Cortex-M33 and Cortex-M23 ports now correctly disable the MPU before
updating the MPU registers.
+ Added Nuvoton NuMaker-PFM-M2351 ARM Cortex-M23 demo.
+ Added LPC55S69 ARM Cortex-M33 demo.
+ Added an STM32 dual core AMP stress test demo.
Changes between FreeRTOS V10.1.1 and FreeRTOS V10.2.0 released February 25 2019:
+ Added GCC RISC-V MCU port with three separate demo applications.
+ Included pre-existing ARM Cortex-M33 (ARMv8-M) GCC/ARMclang and IAR ports
with Keil simulator demo.
+ Update the method used to detect if a timer is active. Previously the
timer was deemed to be inactive if it was not referenced from a list.
However, when a timer is updated it is temporarily removed from, then
re-added to a list, so now the timer's active status is stored separately.
+ Add vTimerSetReloadMode(), xTaskGetIdleRunTimeCounter(), and
xTaskGetApplicationTaskTagFromISR() API functions.
+ Updated third party Xtensa port so it is MIT licensed.
+ Added configINCLUDE_PLATFORM_H_INSTEAD_OF_IODEFINE_H to the Renesas
compiler RX600v2 port to enable switching between platform.h and
iodefine.h includes within that port's port.c file.
+ Removed the 'FromISR' functions from the MPU ports as ISRs run privileged
anyway.
+ Added uxTaskGetStackHighWaterMark2() function to enable the return type to
be changed without breaking backward compatibility.
uxTaskGetStackHighWaterMark() returns a UBaseType_t as always,
uxTaskGetStackHighWaterMark2() returns configSTACK_DEPTH_TYPE to allow the
user to determine the return type.
+ Fixed issues in memory protected ports related to different combinations
of static memory only and dynamic memory only builds. As a result the
definition of tskSTATIC_AND_DYNAMIC_ALLOCATION_POSSIBLE became more
complex and was moved to FreeRTOS.h with a table explaining its definition.
+ Added a 'get task tag from ISR' function.
+ Change the method used to determine if a timer is active or not from just
seeing if it is referenced from the active timer list to storing its
active state explicitly. The change prevents the timer reporting that it
is inactive while it is being moved from one list to another.
+ The pcName parameter passed into the task create functions can be NULL,
previously a name had to be provided.
+ When using tickless idle, prvResetNextTaskUnblockTime() is now only called
in xTaskRemoveFromEventList() if the scheduler is not suspended.
+ Introduced portHAS_STACK_OVERFLOW_CHECKING, which should be set to 1 for
FreeRTOS ports that run on architectures that have stack limit registers.
Changes between FreeRTOS V10.1.0 and FreeRTOS V10.1.1 released 7 September 2018
+ Reverted a few structure name changes that broke several kernel aware
debugger plug-ins.
+ Updated to the latest trace recorder code.
+ Fixed some formatting in the FreeRTOS+TCP TCP/IP stack code.
+ Reverted moving some variables from file to function scope as doing so
broke debug scenarios that require the static qualifier to be removed.
Changes between FreeRTOS V10.0.1 and FreeRTOS V10.1.0 released 22 August 2018
FreeRTOS Kernel Changes:
+ Update lint checked MISRA compliance to use the latest MISRA standard, was
previously using the original MISRA standard.
+ Updated all object handles (TaskHandle_t, QueueHandle_t, etc.) to be
unique types instead of void pointers, improving type safety. (this was
attempted some years back but had to be backed out due to bugs in some
debuggers). Note this required the pvContainer member of a ListItem_t
struct to be renamed - set configENABLE_BACKWARD_COMPATIBILITY to 1 if
this causes an issue.
+ Added configUSE_POSIX_ERRNO to enable per task POSIX style errno
functionality in a more user friendly way - previously the generic thread
local storage feature was used for this purpose.
+ Added Xtensa port and demo application for the XCC compiler.
+ Changed the implementation of vPortEndScheduler() for the Win32 port to
simply call exit( 0 ).
+ Bug fix in vPortEnableInterrupt() for the GCC Microblaze port to protect
the read modify write access to an internal Microblaze register.
+ Fix minor niggles when the MPU is used with regards to prototype
differences, static struct size differences, etc.
+ The usStackHighWaterMark member of the TaskStatus_t structure now has type
configSTACK_DEPTH_TYPE in place of uint16_t - that change should have been
made when the configSTACK_DEPTH_TYPE type (which gets around the previous
16-bit limit on stack size specifications) was introduced.
+ Added the xMessageBufferNextLengthBytes() API function and likewise stream
buffer equivalent.
+ Introduce configMESSAGE_BUFFER_LENGTH_TYPE to allow the number of bytes
used to hold the length of a message in the message buffer to be reduced.
configMESSAGE_BUFFER_LENGTH_TYPE default to size_t, but if, for example,
messages can never be more than 255 bytes it could be set to uint8_t,
saving 3 bytes each time a message is written into the message buffer
(assuming sizeof( size_t ) is 4).
+ Updated the StaticTimer_t structure to ensure it matches the size of the
Timer_t structure when the size of TaskFunction_t does not equal the size
of void *.
+ Update various Xilinx demos to use 2018.1 version of the SDK tools.
+ Various updates to demo tasks to maintain test coverage.
+ FreeRTOS+UDP was removed in FreeRTOS V10.1.0 as it was replaced by
FreeRTOS+TCP, which was brought into the main download in FreeRTOS
V10.0.0. FreeRTOS+TCP can be configured as a UDP only stack, and
FreeRTOS+UDP does not contain the patches applied to FreeRTOS+TCP.
FreeRTOS+TCP Changes:
+ Multiple security improvements and fixes in packet parsing routines, DNS
caching, and TCP sequence number and ID generation.
+ Disable NBNS and LLMNR by default.
+ Add TCP hang protection by default.
We thank Ori Karliner of Zimperium zLabs Team for reporting these issues.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment