Skip to content

V10.6.0

Compare
Choose a tag to compare
@github-actions github-actions released this 13 Jul 11:45
· 355 commits to main since this release

Changes between FreeRTOS V10.5.1 and FreeRTOS 10.6.0 released July 13, 2023

+ Add a new MPU wrapper that places additional restrictions on unprivileged
  tasks. The following is the list of changes introduced with the new MPU
  wrapper:

  1. Opaque and indirectly verifiable integers for kernel object handles:
     All the kernel object handles (for example, queue handles) are now
     opaque integers. Previously object handles were raw pointers.
  2. Save the task context in Task Control Block (TCB): When a task is
     swapped out by the scheduler, the task's context is now saved in its
     TCB. Previously the task's context was saved on its stack.
  3. Execute system calls on a separate privileged only stack: FreeRTOS
     system calls, which execute with elevated privilege, now use a
     separate privileged only stack. Previously system calls used the
     calling task's stack. The application writer can control the size of
     the system call stack using new configSYSTEM_CALL_STACK_SIZE config
     macro.
  4. Memory bounds checks: FreeRTOS system calls which accept a pointer
     and de-reference it, now verify that the calling task has required
     permissions to access the memory location referenced by the pointer.
  5. System calls restrictions: The following system calls are no longer
     available to unprivileged tasks:
      - vQueueDelete
      - xQueueCreateMutex
      - xQueueCreateMutexStatic
      - xQueueCreateCountingSemaphore
      - xQueueCreateCountingSemaphoreStatic
      - xQueueGenericCreate
      - xQueueGenericCreateStatic
      - xQueueCreateSet
      - xQueueRemoveFromSet
      - xQueueGenericReset
      - xTaskCreate
      - xTaskCreateStatic
      - vTaskDelete
      - vTaskPrioritySet
      - vTaskSuspendAll
      - xTaskResumeAll
      - xTaskGetHandle
      - xTaskCallApplicationTaskHook
      - vTaskList
      - vTaskGetRunTimeStats
      - xTaskCatchUpTicks
      - xEventGroupCreate
      - xEventGroupCreateStatic
      - vEventGroupDelete
      - xStreamBufferGenericCreate
      - xStreamBufferGenericCreateStatic
      - vStreamBufferDelete
      - xStreamBufferReset
     Also, an unprivileged task can no longer use vTaskSuspend to suspend
     any task other than itself.

  We thank the following people for their inputs in these enhancements:
    - David Reiss of Meta Platforms, Inc.
    - Lan Luo, Xinhui Shao, Yumeng Wei, Zixia Liu, Huaiyu Yan and Zhen Ling
      of School of Computer Science and Engineering, Southeast University,
      China.
    - Xinwen Fu of Department of Computer Science, University of
      Massachusetts Lowell, USA.
    - Yueqi Chen, Zicheng Wang, Minghao Lin, Jiahe Wang of University of
      Colorado Boulder, USA.
+ Add Cortex-M35P port. Contributed by @urutva.
+ Add embedded extension (RV32E) support to the IAR RISC-V port.
+ Add ulTaskGetRunTimeCounter and ulTaskGetRunTimePercent APIs. Contributed by
  @chrisnc.
+ Add APIs to get the application supplied buffers from statically
  created kernel objects. The following new APIs are added:
  - xTaskGetStaticBuffers
  - xQueueGetStaticBuffers
  - xQueueGenericGetStaticBuffers
  - xSemaphoreGetStaticBuffer
  - xEventGroupGetStaticBuffer
  - xStreamBufferGetStaticBuffers
  - xMessageBufferGetStaticBuffers
  These APIs enable the application writer to obtain static buffers from
  the kernel object and free/reuse them at the time of deletion. Earlier
  the application writer had to maintain the association of static buffers
  and the kernel object in the application. Contributed by @Dazza0.
+ Add Thread Local Storage (TLS) support using picolibc function. Contributed
  by @keith-packard.
+ Add configTICK_TYPE_WIDTH_IN_BITS to configure TickType_t data type. As a result,
  the number of bits in an event group also increases with big data type. Contributed
  by @Hadatko.
+ Update eTaskGetState and uxTaskGetSystemState to return eReady for pending ready
  tasks. Contributed by @Dazza0.
+ Update heap_4 and heap_5 to add padding only if the resulting block is not
  already aligned.
+ Fix the scheduler logic in a couple of places to not preempt a task when an
  equal priority task becomes ready.
+ Add macros used in FreeRTOS-Plus libraries. Contributed by @Holden.
+ Fix clang compiler warnings. Contributed by @phelter.
+ Add assertions to ARMv8-M ports to detect when FreeRTOS APIs are called from
  interrupts with priority higher than the configMAX_SYSCALL_INTERRUPT_PRIORITY.
  Contributed by @urutva.
+ Add xPortIsInsideInterrupt API to ARM_CM0 ports.
+ Fix build warning in MSP430X port when large data model is used.
+ Add the ability to use Cortex-R5 port on the parts without FPU.
+ Fix build warning in heap implementations on PIC24/dsPIC.
+ Update interrupt priority asserts for Cortex-M ports so that these do not fire
  on QEMU which does not implement PRIO bits.
+ Update ARMv7-M ports to ensure that kernel interrupts run at the lowest priority.
  configKERNEL_INTERRUPT_PRIORITY is now obsolete for ARMv7-M ports and brings
  these ports inline with the newer ARMv8-M ports. Contributed by @chrisnc.
+ Fix build issue in POSIX GCC port on Windows Subsystem for Linux (WSL). Contributed
  by @jacky309.
+ Add portMEMORY_BARRIER to Microblaze port. Contributed by @bbain.
+ Add portPOINTER_SIZE_TYPE definition for ATmega port. Contributed by @jputcu.
+ Multiple improvements in the CMake support. Contributed by @phelte and @cookpate.