Quality RTOS & Embedded Software


Upgrading From FreeRTOS V10.2.1 to V10.3.0

Backward Compatibility

FreeRTOS 10.3.0 contains the new configuration options described in the sections below. New options that are left undefined will default to a value that ensures backward compatibility with FreeRTOS V10.2.x. Therefore FreeRTOS 10.3.0 is a backward compatible drop-in replacement for FreeRTOS V10.2.1.

ARM Cortex-M Memory Protection Unit (MPU) Ports

The ARMv7-M (ARM Cortex-M3, ARM Cortex-M4F and ARM Cortex-M7) ports that use the Memory Protection Unit (MPU) have the following new configuration option:
When configENFORCE_SYSTEM_CALLS_FROM_KERNEL_ONLY is defined to 1 in FreeRTOSConfig.h, privilege escalations can only occur from within FreeRTOS kernel code (other than escalations performed by the hardware itself when an interrupt is entered). It requires that all the functions with freertos_system_calls attribute are placed in a separate section and the following two additional variables are exported from linker scripts to inform the location of this section:
  • __syscalls_flash_start__
  • __syscalls_flash_end__
Pre-configured examples are provided for GCC, Keil uVision and IAR Embedded Workbench in the FreeRTOS/Demo/CORTEX_MPU_STM32L4_Discovery_GCC_IAR_Keil and FreeRTOS/Demo/CORTEX_MPU_M3_NUCLEO_L152RE_GCC directories. See FreeRTOS Memory Protection Unit (MPU) Support for more details about how to use FreeRTOS-MPU ports.

RISC-V Ports

The configCLINT_BASE_ADDRESS configuration setting is deprecated and replaced by configMTIME_BASE_ADDRESS and configMTIMECMP_BASE_ADDRESS. The new settings are described on the Using FreeRTOS on RISC-V Microcontrollers documentation page. Legacy applications that still use configCLINT_BASE_ADDRESS will generate a compiler warning, but otherwise continue to build and function as before.

Other Changes

See the change history for more details of new ports and other enhancements.

Copyright (C) Amazon Web Services, Inc. or its affiliates. All rights reserved.