Upgrading From FreeRTOS V10.5.1 to V10.6.x
FreeRTOS V10.6.0 is a drop-in replacement for FreeRTOS V10.5.1 for all ports other than the ports with Memory Protection Unit (MPU) support.
Follow the instructions below to upgrade an application using FreeRTOS MPU support from FreeRTOS V10.5.1 to V10.6.0.
FreeRTOS V10.6.1 is drop-in replacement for FreeRTOS V10.6.0.
FreeRTOS V10.6.2 is drop-in replacement for FreeRTOS V10.6.1. FreeRTOS V10.6.2 introduces the Access Control List (ACL) feature to ports with
Memory Protection Unit (MPU) support. When using MPU wrappers v2, the application writer can set configENABLE_ACCESS_CONTROL_LIST
to 1 in their FreeRTOSConfig.h file to enable the ACL feature. When ACL is enabled, by default an unprivileged task does not have access to
any kernel object other than itself. The application writer needs to explicitly grant the unprivileged task access to the kernel objects it needs
using the APIs provided for this reason.
Porting an Existing Application
FreeRTOS V10.6.0 introduces a new MPU wrapper. If you have an application which uses FreeRTOS MPU support, you have the following 2 options-
- Update to the new enhanced MPU wrapper [Recommended]
- Continue using the old MPU wrapper
1. Update to the new enhanced MPU wrapper [Recommended]
- Compile the following additional files in your project –
portable/Common/mpu_wrappers_v2.c
.
mpu_wrappers_v2_asm.c
or mpu_wrappers_v2_asm.S
file in your
portable/[Compiler]/[Architecture]
directory.
- Define
configUSE_MPU_WRAPPERS_V1
to 0 in your FreeRTOSConfig.h file or leave it undefined.
- Define
configPROTECTED_KERNEL_OBJECT_POOL_SIZE
to the total number of kernel objects (tasks, queues, semaphores, mutexes, timers,
event groups, message buffers and stream buffers) in your application. The application will not be able to have more than
configPROTECTED_KERNEL_OBJECT_POOL_SIZE
kernel objects at any point of time.
- Define
configSYSTEM_CALL_STACK_SIZE
to the size of the system call stack in words. Each task has a statically allocated memory buffer of
this size which is used as stack to execute system calls. For example, if configSYSTEM_CALL_STACK_SIZE
is defined to 128 and there are
10 tasks in the application, the total amount of memory used for system call stacks is 128 * 10 = 1280 words.
2. Continue using the old MPU wrapper
- Define
configUSE_MPU_WRAPPERS_V1
to 1 in your FreeRTOSConfig.h file.
Troubleshooting