<?xml version="1.0" encoding="utf-8"?>

<package schemaVersion="1.4" xmlns:xs="http://www.w3.org/2001/XMLSchema-instance" xs:noNamespaceSchemaLocation="PACK.xsd">
  <vendor>ARM</vendor>
  <name>CMSIS-FreeRTOS</name>
  <description>Bundle of FreeRTOS for Cortex-M and Cortex-A</description>
  <url>http://www.keil.com/pack/</url>
  <license>License/license.txt</license>

  <releases>
    <release version="10.3.1" date="2020-04-30">
      FreeRTOS 10.3.1
      Maintenance for CMSIS 5.7.0:
      - Enhanced kernel configuration handling and checking when using CMSIS-RTOS2 API
      - Added CMSIS-RTOS2 Blinky example for IAR using EWARM simulator
      - Modified pack description to avoid component identification issues
    </release>
    <release version="10.3.0" date="2019-12-04">
      FreeRTOS 10.2.1
      Maintenance for CMSIS 5.4.0:
       - Added osMemoryPool functions using FreeRTOS
       - Corrected osEventFlagsWait flag comparison when using osFlagsWaitAll
       - Corrected osThreadGetStackSpace return value (bytes instead of words)
       - Removed Cortex-A examples (available in device specific packs)
    </release>
    <release version="10.2.0" date="2019-04-12">
      FreeRTOS 10.2.0
      Maintenance for CMSIS 5.4.0:
      - Updated to CMSIS RTOS2 API 2.1.3
      - Updated Arm standard C library interface
      - Added configuration for the Event Recorder
      - Added TrustZone example for Armv8M using RTOS2 API
      - Enhanced FreeRTOS component viewer
      - Corrected osDelayUntil execution duration
      - Corrected SysTick_Handler execution when kernel is not started
      - Corrected critical section for osKernelGetSysTimerCount
    </release>
    <release version="10.0.1" date="2018-02-20">
      FreeRTOS 10.0.0
      Maintenance for CMSIS 5.3.0:
       - Added queue registry support to CMSIS:RTOS2:FreeRTOS component.
       - Updated CMSIS-FreeRTOS component view to display queue, mutex and semaphore objects.
       - Updated to CMSIS RTOS2 API 2.1.2 and OS Tick API 1.0.1.
       - Fixed context switch response latency for API calls from ISR.
    </release>
    <release version="9.1.0" date="2017-08-11">
      FreeRTOS 9.0.0
      Maintenance release for CMSIS 5.1.0:
      - Added support for ARM Compiler 6
      - Updated Cortex-A example to use IRQ Controller component
      - Corrected stack size allocation in RTOS2 osThreadNew function
      - Added support for OS Tick component
      - Added documentation for configuration options (native/CMSIS-RTOS2)
      - Debug event TaskIncrementTick level set to Detail
    </release>
    <release version="9.0.0" date="2017-03-13">
      Initial release version:
      - native FreeRTOS component (RTOS: Variant=FreeRTOS)
      - CMSIS-RTOS FreeRTOS for Cortex-M and Cortex-A9 (CMSIS:RTOS:FreeRTOS, CMSIS:RTOS2:FreeRTOS)
    </release>
  </releases>

  <requirements>
    <packages>
      <package vendor="ARM" name="CMSIS" version="5.4.0-0"/>
    </packages>
  </requirements>

  <conditions>
    <condition id="ARMCC6">
      <accept Tcompiler="ARMCC" Toptions="AC6"/>
      <accept Tcompiler="ARMCC" Toptions="AC6LTO"/>
    </condition>
    <condition id="ARMCC">
      <require Tcompiler="ARMCC" Toptions="AC5"/>
    </condition>
    <condition id="GCC">
      <require Tcompiler="GCC"/>
    </condition>
    <condition id="IAR">
      <require Tcompiler="IAR"/>
    </condition>

    <condition id="CM0">
      <description>Cortex-M0 or Cortex-M0+ or SC000 processor based device</description>
      <accept Dcore="Cortex-M0"/>
      <accept Dcore="Cortex-M0+"/>
      <accept Dcore="SC000"/>
    </condition>

    <condition id="CM3">
      <description>Cortex-M3 or SC300 processor based device</description>
      <accept Dcore="Cortex-M3"/>
      <accept Dcore="SC300"/>
    </condition>

    <condition id="CM4">
      <description>Cortex-M4 processor based device</description>
      <require Dcore="Cortex-M4" Dfpu="NO_FPU"/>
    </condition>

    <condition id="CM4_FP">
      <description>Cortex-M4 processor based device using Floating Point Unit</description>
      <require Dcore="Cortex-M4" Dfpu="FPU"/>
    </condition>

    <condition id="CM7">
      <description>Cortex-M7 processor based device</description>
      <require Dcore="Cortex-M7" Dfpu="NO_FPU"/>
    </condition>

    <condition id="CM7_FP">
      <description>Cortex-M7 processor based device using Floating Point Unit</description>
      <accept Dcore="Cortex-M7" Dfpu="SP_FPU"/>
      <accept Dcore="Cortex-M7" Dfpu="DP_FPU"/>
    </condition>

    <condition id="CM7_SP">
      <description>Cortex-M7 processor based device using Floating Point Unit (SP)</description>
      <require Dcore="Cortex-M7" Dfpu="SP_FPU"/>
    </condition>

    <condition id="CM7_DP">
      <description>Cortex-M7 processor based device using Floating Point Unit (DP)</description>
      <require Dcore="Cortex-M7" Dfpu="DP_FPU"/>
    </condition>

    <condition id="CM23">
      <description>Cortex-M23 processor based device</description>
      <require Dcore="Cortex-M23"/>
    </condition>

    <condition id="CM23_NoTZ">
      <description>Cortex-M23 processor based device without TrustZone</description>
      <require condition="CM23"/>
      <require Dtz="NO_TZ"/>
    </condition>

    <condition id="CM23_TZ">
      <description>Cortex-M23 processor based device with TrustZone</description>
      <require condition="CM23"/>
      <require Dtz="TZ"/>
    </condition>

    <condition id="CM33">
      <description>Cortex-M33 processor based device</description>
      <accept Dcore="Cortex-M33"/>
    </condition>

    <condition id="CM33_NoTZ">
      <description>Cortex-M33 processor based device without TrustZone</description>
      <require condition="CM33"/>
      <require Dtz="NO_TZ"/>
    </condition>

    <condition id="CM33_TZ">
      <description>Cortex-M33 processor based device with TrustZone</description>
      <require condition="CM33"/>
      <require Dtz="TZ"/>
    </condition>

    <condition id="CA9_DP">
      <description>Cortex-A9 processor based device using Floating Point Unit (DP)</description>
      <require Dcore="Cortex-A9" Dfpu="DP_FPU"/>
    </condition>

    <condition id="CoreM">
      <description>Cortex-M processor based device</description>
      <accept condition="CM0"/>
      <accept condition="CM3"/>
      <accept condition="CM4"/>
      <accept condition="CM4_FP"/>
      <accept condition="CM7"/>
      <accept condition="CM7_FP"/>
      <accept condition="CM23"/>
      <accept condition="CM33"/>
    </condition>

    <condition id="CoreA">
      <description>Cortex-A processor based device</description>
      <accept condition="CA9_DP"/>
    </condition>

    <!-- ARMCC compiler -->
    <condition id="CM0_ARMCC">
      <description>Cortex-M0 or Cortex-M0+ or SC000 processor based device for the ARM Compiler 5</description>
      <require condition="CM0"/>
      <require condition="ARMCC"/>
    </condition>

    <condition id="CM3_ARMCC">
      <description>Cortex-M3 or SC300 processor based device for the ARM Compiler 5</description>
      <require condition="CM3"/>
      <require condition="ARMCC"/>
    </condition>

    <condition id="CM4_ARMCC">
      <description>Cortex-M4 processor based device for the ARM Compiler 5</description>
      <require condition="CM4"/>
      <require condition="ARMCC"/>
    </condition>
    <condition id="CM4_FP_ARMCC">
      <description>Cortex-M4 processor based device using Floating Point Unit for the ARM Compiler 5</description>
      <require condition="CM4_FP"/>
      <require condition="ARMCC"/>
    </condition>

    <condition id="CM7_ARMCC">
      <description>Cortex-M7 processor based device for the ARM Compiler 5</description>
      <require condition="CM7"/>
      <require condition="ARMCC"/>
    </condition>
    <condition id="CM7_SP_ARMCC">
      <description>Cortex-M7 processor based device using Floating Point Unit (SP) for the ARM Compiler 5</description>
      <require condition="CM7_SP"/>
      <require condition="ARMCC"/>
    </condition>
    <condition id="CM7_DP_ARMCC">
      <description>Cortex-M7 processor based device using Floating Point Unit (DP) for the ARM Compiler 5</description>
      <require condition="CM7_DP"/>
      <require condition="ARMCC"/>
    </condition>

    <condition id="CA9_DP_ARMCC">
      <description>Cortex-A9 processor based device using Floating Point Unit (DP) for the ARM Compiler 5</description>
      <require condition="CA9_DP"/>
      <require condition="ARMCC"/>
    </condition>

    <!-- ARMCC6 compiler -->
    <condition id="CM0_ARMCC6">
      <description>Cortex-M0 or Cortex-M0+ or SC000 processor based device for the ARM Compiler 6</description>
      <require condition="CM0"/>
      <require condition="ARMCC6"/>
    </condition>

    <condition id="CM3_ARMCC6">
      <description>Cortex-M3 or SC300 processor based device for the ARM Compiler 6</description>
      <require condition="CM3"/>
      <require condition="ARMCC6"/>
    </condition>

    <condition id="CM4_ARMCC6">
      <description>Cortex-M4 processor based device for the ARM Compiler 6</description>
      <require condition="CM4"/>
      <require condition="ARMCC6"/>
    </condition>
    <condition id="CM4_FP_ARMCC6">
      <description>Cortex-M4 processor based device using Floating Point Unit for the ARM Compiler 6</description>
      <require condition="CM4_FP"/>
      <require condition="ARMCC6"/>
    </condition>

    <condition id="CM7_ARMCC6">
      <description>Cortex-M7 processor based device for the ARM Compiler 6</description>
      <require condition="CM7"/>
      <require condition="ARMCC6"/>
    </condition>
    <condition id="CM7_SP_ARMCC6">
      <description>Cortex-M7 processor based device using Floating Point Unit (SP) for the ARM Compiler 6</description>
      <require condition="CM7_SP"/>
      <require condition="ARMCC6"/>
    </condition>
    <condition id="CM7_DP_ARMCC6">
      <description>Cortex-M7 processor based device using Floating Point Unit (DP) for the ARM Compiler 6</description>
      <require condition="CM7_DP"/>
      <require condition="ARMCC6"/>
    </condition>

    <condition id="CM23_ARMCC6">
      <description>Cortex-M23 processor based device for the ARM Compiler 6</description>
      <require condition="CM23"/>
      <require condition="ARMCC6"/>
    </condition>
    <condition id="CM23_NoTZ_ARMCC6">
      <description>Cortex-M23 processor based device without TrustZone for the ARM Compiler 6</description>
      <require condition="CM23_NoTZ"/>
      <require condition="ARMCC6"/>
    </condition>
    <condition id="CM23_TZ_ARMCC6">
      <description>Cortex-M23 processor based device with TrustZone for the ARM Compiler 6</description>
      <require condition="CM23_TZ"/>
      <require condition="ARMCC6"/>
    </condition>

    <condition id="CM33_ARMCC6">
      <description>Cortex-M33 processor based device for the ARM Compiler 6</description>
      <require condition="CM33"/>
      <require condition="ARMCC6"/>
    </condition>
    <condition id="CM33_NoTZ_ARMCC6">
      <description>Cortex-M33 processor based device without TrustZone for the ARM Compiler 6</description>
      <require condition="CM33_NoTZ"/>
      <require condition="ARMCC6"/>
    </condition>
    <condition id="CM33_TZ_ARMCC6">
      <description>Cortex-M33 processor based device with TrustZone for the ARM Compiler 6</description>
      <require condition="CM33_TZ"/>
      <require condition="ARMCC6"/>
    </condition>

    <condition id="CA9_DP_ARMCC6">
      <description>Cortex-A9 processor based device using Floating Point Unit (DP) for the ARM Compiler 6</description>
      <require condition="CA9_DP"/>
      <require condition="ARMCC6"/>
    </condition>

    <!-- GCC compiler -->
    <condition id="CM0_GCC">
      <description>Cortex-M0 or Cortex-M0+ or SC000 processor based device for the GCC Compiler</description>
      <require condition="CM0"/>
      <require condition="GCC"/>
    </condition>

    <condition id="CM3_GCC">
      <description>Cortex-M3 or SC300 processor based device for the GCC Compiler</description>
      <require condition="CM3"/>
      <require condition="GCC"/>
    </condition>

    <condition id="CM4_GCC">
      <description>Cortex-M4 processor based device for the GCC Compiler</description>
      <require condition="CM4"/>
      <require condition="GCC"/>
    </condition>
    <condition id="CM4_FP_GCC">
      <description>Cortex-M4 processor based device using Floating Point Unit for the GCC Compiler</description>
      <require condition="CM4_FP"/>
      <require condition="GCC"/>
    </condition>

    <condition id="CM7_GCC">
      <description>Cortex-M7 processor based device for the GCC Compiler</description>
      <require condition="CM7"/>
      <require condition="GCC"/>
    </condition>
    <condition id="CM7_SP_GCC">
      <description>Cortex-M7 processor based device using Floating Point Unit (SP) for the GCC Compiler</description>
      <require condition="CM7_SP"/>
      <require condition="GCC"/>
    </condition>
    <condition id="CM7_DP_GCC">
      <description>Cortex-M7 processor based device using Floating Point Unit (DP) for the GCC Compiler</description>
      <require condition="CM7_DP"/>
      <require condition="GCC"/>
    </condition>

    <condition id="CM23_GCC">
      <description>Cortex-M23 processor based device for the GCC Compiler</description>
      <require condition="CM23"/>
      <require condition="GCC"/>
    </condition>
    <condition id="CM23_NoTZ_GCC">
      <description>Cortex-M23 processor based device without TrustZone for the GCC Compiler</description>
      <require condition="CM23_NoTZ"/>
      <require condition="GCC"/>
    </condition>
    <condition id="CM23_TZ_GCC">
      <description>Cortex-M23 processor based device with TrustZone for the GCC Compiler</description>
      <require condition="CM23_TZ"/>
      <require condition="GCC"/>
    </condition>

    <condition id="CM33_GCC">
      <description>Cortex-M33 processor based device for the GCC Compiler</description>
      <require condition="CM33"/>
      <require condition="GCC"/>
    </condition>
    <condition id="CM33_NoTZ_GCC">
      <description>Cortex-M33 processor based device without TrustZone for the GCC Compiler</description>
      <require condition="CM33_NoTZ"/>
      <require condition="GCC"/>
    </condition>
    <condition id="CM33_TZ_GCC">
      <description>Cortex-M33 processor based device with TrustZone for the GCC Compiler</description>
      <require condition="CM33_TZ"/>
      <require condition="GCC"/>
    </condition>

    <condition id="CA9_DP_GCC">
      <description>Cortex-A9 processor based device using Floating Point Unit (DP) for the GCC Compiler</description>
      <require condition="CA9_DP"/>
      <require condition="GCC"/>
    </condition>

    <!-- IAR compiler -->
    <condition id="CM0_IAR">
      <description>Cortex-M0 or Cortex-M0+ or SC000 processor based device for the IAR Compiler</description>
      <require condition="CM0"/>
      <require condition="IAR"/>
    </condition>

    <condition id="CM3_IAR">
      <description>Cortex-M3 or SC300 processor based device for the IAR Compiler</description>
      <require condition="CM3"/>
      <require condition="IAR"/>
    </condition>

    <condition id="CM4_IAR">
      <description>Cortex-M4 processor based device for the IAR Compiler</description>
      <require condition="CM4"/>
      <require condition="IAR"/>
    </condition>
    <condition id="CM4_FP_IAR">
      <description>Cortex-M4 processor based device using Floating Point Unit for the IAR Compiler</description>
      <require condition="CM4_FP"/>
      <require condition="IAR"/>
    </condition>

    <condition id="CM7_IAR">
      <description>Cortex-M7 processor based device for the IAR Compiler</description>
      <require condition="CM7"/>
      <require condition="IAR"/>
    </condition>
    <condition id="CM7_SP_IAR">
      <description>Cortex-M7 processor based device using Floating Point Unit (SP) for the IAR Compiler</description>
      <require condition="CM7_SP"/>
      <require condition="IAR"/>
    </condition>
    <condition id="CM7_DP_IAR">
      <description>Cortex-M7 processor based device using Floating Point Unit (DP) for the IAR Compiler</description>
      <require condition="CM7_DP"/>
      <require condition="IAR"/>
    </condition>

    <condition id="CM23_IAR">
      <description>Cortex-M23 processor based device for the IAR Compiler</description>
      <require condition="CM23"/>
      <require condition="IAR"/>
    </condition>
    <condition id="CM23_NoTZ_IAR">
      <description>Cortex-M23 processor based device without TrustZone for the IAR Compiler</description>
      <require condition="CM23_NoTZ"/>
      <require condition="IAR"/>
    </condition>
    <condition id="CM23_TZ_IAR">
      <description>Cortex-M23 processor based device with TrustZone for the IAR Compiler</description>
      <require condition="CM23_TZ"/>
      <require condition="IAR"/>
    </condition>

    <condition id="CM33_IAR">
      <description>Cortex-M33 processor based device for the IAR Compiler</description>
      <require condition="CM33"/>
      <require condition="IAR"/>
    </condition>
    <condition id="CM33_NoTZ_IAR">
      <description>Cortex-M33 processor based device without TrustZone for the IAR Compiler</description>
      <require condition="CM33_NoTZ"/>
      <require condition="IAR"/>
    </condition>
    <condition id="CM33_TZ_IAR">
      <description>Cortex-M33 processor based device with TrustZone for the IAR Compiler</description>
      <require condition="CM33_TZ"/>
      <require condition="IAR"/>
    </condition>

    <condition id="CA9_DP_IAR">
      <description>Cortex-A9 processor based device using Floating Point Unit (DP) for the IAR Compiler</description>
      <require condition="CA9_DP"/>
      <require condition="IAR"/>
    </condition>

    <!-- FreeRTOS ports for the Arm Cortex core -->
    <condition id="FreeRTOS Port Cortex-M0">
      <description>Requirements for FreeRTOS port for Cortex-M0 and Cortex-M0+</description>
      <accept condition="CM0_ARMCC"/>
      <accept condition="CM0_ARMCC6"/>
      <accept condition="CM0_GCC"/>
      <accept condition="CM0_IAR"/>
    </condition>
    <condition id="FreeRTOS Port Cortex-M3">
      <description>Requirements for FreeRTOS port for Cortex-M3</description>
      <accept condition="CM3_ARMCC"/>
      <accept condition="CM3_ARMCC6"/>
      <accept condition="CM3_GCC"/>
      <accept condition="CM3_IAR"/>
    </condition>
    <condition id="FreeRTOS Port Cortex-M3 MPU">
      <description>Requirements for FreeRTOS port for Cortex-M3 using MPU</description>
      <accept condition="CM3_ARMCC6"/>
      <accept condition="CM3_GCC"/>
    </condition>
    <condition id="FreeRTOS Port Cortex-M4">
      <description>Requirements for FreeRTOS port for Cortex-M4</description>
      <accept condition="CM4_ARMCC"/>
      <accept condition="CM4_ARMCC6"/>
      <accept condition="CM4_GCC"/>
      <accept condition="CM4_IAR"/>
    </condition>
    <condition id="FreeRTOS Port Cortex-M4 MPU">
      <description>Requirements for FreeRTOS port for Cortex-M4 using MPU</description>
      <accept condition="CM4_ARMCC6"/>
      <accept condition="CM4_GCC"/>
    </condition>
    <condition id="FreeRTOS Port Cortex-M4 FPU">
      <description>Requirements for FreeRTOS port for Cortex-M4 using FPU</description>
      <accept condition="CM4_FP_ARMCC"/>
      <accept condition="CM4_FP_ARMCC6"/>
      <accept condition="CM4_FP_GCC"/>
      <accept condition="CM4_FP_IAR"/>
    </condition>
    <condition id="FreeRTOS Port Cortex-M4 FPU MPU">
      <description>Requirements for FreeRTOS port for Cortex-M4 using FPU and MPU</description>
      <accept condition="CM4_FP_ARMCC"/>
      <accept condition="CM4_FP_ARMCC6"/>
      <accept condition="CM4_FP_GCC"/>
      <accept condition="CM4_FP_IAR"/>
    </condition>
    <condition id="FreeRTOS Port Cortex-M7">
      <description>Requirements for FreeRTOS port for Cortex-M7</description>
      <accept condition="CM7_ARMCC"/>
      <accept condition="CM7_ARMCC6"/>
      <accept condition="CM7_GCC"/>
      <accept condition="CM7_IAR"/>
    </condition>
    <condition id="FreeRTOS Port Cortex-M7 FPU SP">
      <description>Requirements for FreeRTOS port for Cortex-M7 using FPU (SP)</description>
      <accept condition="CM7_SP_ARMCC"/>
      <accept condition="CM7_SP_ARMCC6"/>
      <accept condition="CM7_SP_GCC"/>
      <accept condition="CM7_SP_IAR"/>
    </condition>
    <condition id="FreeRTOS Port Cortex-M7 FPU DP">
      <description>Requirements for FreeRTOS port for Cortex-M7 using FPU (DP)</description>
      <accept condition="CM7_DP_ARMCC"/>
      <accept condition="CM7_DP_ARMCC6"/>
      <accept condition="CM7_DP_GCC"/>
      <accept condition="CM7_DP_IAR"/>
    </condition>
    <condition id="FreeRTOS Port Cortex-M23">
      <description>Requirements for FreeRTOS port for Cortex-M23</description>
      <accept condition="CM23_ARMCC6"/>
      <accept condition="CM23_GCC"/>
      <accept condition="CM23_IAR"/>
    </condition>
    <condition id="FreeRTOS Port Cortex-M23 NoTZ">
      <description>Requirements for FreeRTOS port for Cortex-M23 without TrustZone</description>
      <accept condition="CM23_NoTZ_ARMCC6"/>
      <accept condition="CM23_NoTZ_GCC"/>
      <accept condition="CM23_NoTZ_IAR"/>
    </condition>
    <condition id="FreeRTOS Port Cortex-M23 TZ">
      <description>Requirements for FreeRTOS port for Cortex-M23 with TrustZone</description>
      <accept condition="CM23_TZ_ARMCC6"/>
      <accept condition="CM23_TZ_GCC"/>
      <accept condition="CM23_TZ_IAR"/>
    </condition>
    <condition id="FreeRTOS Port Cortex-M33">
      <description>Requirements for FreeRTOS port for Cortex-M33</description>
      <accept condition="CM33_ARMCC6"/>
      <accept condition="CM33_GCC"/>
      <accept condition="CM33_IAR"/>
    </condition>
    <condition id="FreeRTOS Port Cortex-M33 NoTZ">
      <description>Requirements for FreeRTOS port for Cortex-M33 without TrustZone</description>
      <accept condition="CM33_NoTZ_ARMCC6"/>
      <accept condition="CM33_NoTZ_GCC"/>
      <accept condition="CM33_NoTZ_IAR"/>
    </condition>
    <condition id="FreeRTOS Port Cortex-M33 TZ">
      <description>Requirements for FreeRTOS port for Cortex-M33 with TrustZone</description>
      <accept condition="CM33_TZ_ARMCC6"/>
      <accept condition="CM33_TZ_GCC"/>
      <accept condition="CM33_TZ_IAR"/>
    </condition>
    <condition id="FreeRTOS Port Cortex-A9 FPU DP">
      <description>Requirements for FreeRTOS port for Cortex-A9 using FPU (DP)</description>
      <accept condition="CA9_DP_ARMCC"/>
      <accept condition="CA9_DP_ARMCC6"/>
      <accept condition="CA9_DP_GCC"/>
      <accept condition="CA9_DP_IAR"/>
    </condition>

    <condition id="FreeRTOS Port Cortex-M v6_v7">
      <description>Requirements for FreeRTOS port for Cortex-M v6 and v7</description>
      <accept condition="FreeRTOS Port Cortex-M0"/>
      <accept condition="FreeRTOS Port Cortex-M3"/>
      <accept condition="FreeRTOS Port Cortex-M4"/>
      <accept condition="FreeRTOS Port Cortex-M4 FPU"/>
      <accept condition="FreeRTOS Port Cortex-M7"/>
      <accept condition="FreeRTOS Port Cortex-M7 FPU SP"/>
      <accept condition="FreeRTOS Port Cortex-M7 FPU DP"/>
    </condition>
    <condition id="FreeRTOS Port Cortex-M v6_v7 MPU">
      <description>Requirements for FreeRTOS port for Cortex-M v6 and v7 using MPU</description>
      <accept condition="FreeRTOS Port Cortex-M3 MPU"/>
      <accept condition="FreeRTOS Port Cortex-M4 MPU"/>
      <accept condition="FreeRTOS Port Cortex-M4 FPU MPU"/>
    </condition>
    <condition id="FreeRTOS Port Cortex-M v8">
      <description>Requirements for FreeRTOS port for Cortex-M v8</description>
      <accept condition="FreeRTOS Port Cortex-M23"/>
      <accept condition="FreeRTOS Port Cortex-M23 NoTZ"/>
      <accept condition="FreeRTOS Port Cortex-M23 TZ"/>
      <accept condition="FreeRTOS Port Cortex-M33"/>
      <accept condition="FreeRTOS Port Cortex-M33 NoTZ"/>
      <accept condition="FreeRTOS Port Cortex-M33 TZ"/>
    </condition>
    <condition id="FreeRTOS Port Cortex-M v8 TZ">
      <description>Requirements for FreeRTOS port for Cortex-M v8 with TrustZone</description>
      <accept condition="FreeRTOS Port Cortex-M23 TZ"/>
      <accept condition="FreeRTOS Port Cortex-M33 TZ"/>
    </condition>
    <condition id="FreeRTOS Port Cortex-A">
      <description>Requirements for FreeRTOS port for Cortex-A</description>
      <accept condition="FreeRTOS Port Cortex-A9 FPU DP"/>
    </condition>
    <condition id="FreeRTOS Port Cortex-M">
      <description>Requirements for FreeRTOS port for Cortex-M</description>
      <accept condition="FreeRTOS Port Cortex-M v6_v7"/>
      <accept condition="FreeRTOS Port Cortex-M v8"/>
    </condition>
    <condition id="FreeRTOS Port">
      <description>FreeRTOS ports for Arm Cortex combined</description>
      <accept condition="FreeRTOS Port Cortex-A"/>
      <accept condition="FreeRTOS Port Cortex-M"/>
    </condition>

    <!-- Conditions for RTOS::FreeRTOS components -->
    <condition id="FreeRTOS Message or Stream Buffer API">
      <description>FreeRTOS Message or Stream Buffer component</description>
      <accept Cclass="RTOS" Cbundle="FreeRTOS" Cgroup="Message Buffer"/>
      <accept Cclass="RTOS" Cbundle="FreeRTOS" Cgroup="Stream Buffer"/>
    </condition>

    <condition id="FreeRTOS Core CA">
      <description>Requirements for FreeRTOS Core for Cortex-A</description>
      <require condition="FreeRTOS Port Cortex-A"/>

      <require Cclass="Device" Cgroup="Startup"/>
      <require Cclass="RTOS" Cbundle="FreeRTOS" Cgroup="Config"/>
      <require Cclass="RTOS" Cbundle="FreeRTOS" Cgroup="Heap"/>
    </condition>

    <condition id="FreeRTOS Core CM">
      <description>Requirements for FreeRTOS Core for Cortex-M</description>
      <require condition="FreeRTOS Port Cortex-M"/>

      <require Cclass="Device" Cgroup="Startup"/>
      <require Cclass="RTOS" Cbundle="FreeRTOS" Cgroup="Config"/>
      <require Cclass="RTOS" Cbundle="FreeRTOS" Cgroup="Heap"/>
    </condition>

    <condition id="FreeRTOS Core CM v6_v7 MPU">
    <description>Requirements for FreeRTOS Core with MPU support for Cortex-M v6 and v7</description>
      <require condition="FreeRTOS Port Cortex-M v6_v7 MPU"/>

      <require Cclass="Device" Cgroup="Startup"/>
      <require Cclass="RTOS" Cbundle="FreeRTOS" Cgroup="Config"/>
      <require Cclass="RTOS" Cbundle="FreeRTOS" Cgroup="Heap"/>
      <require Cclass="RTOS" Cbundle="FreeRTOS" Cgroup="Event Groups"/>
      <require Cclass="RTOS" Cbundle="FreeRTOS" Cgroup="Timers"/>
      <require condition="FreeRTOS Message or Stream Buffer API"/>
    </condition>

    <condition id="FreeRTOS Core TZ">
      <description>Requirements for FreeRTOS Core with TrustZone support</description>
      <require condition="FreeRTOS Port Cortex-M v8 TZ"/>

      <require Cclass="Device" Cgroup="Startup"/>
      <require Cclass="RTOS" Cbundle="FreeRTOS" Cgroup="Config"/>
      <require Cclass="RTOS" Cbundle="FreeRTOS" Cgroup="Heap"/>
    </condition>

    <condition id="FreeRTOS Core TZ MPU">
      <description>Requirements for FreeRTOS Core with TrustZone and MPU support</description>
      <require condition="FreeRTOS Port Cortex-M v8 TZ"/>

      <require Cclass="Device" Cgroup="Startup"/>
      <require Cclass="RTOS" Cbundle="FreeRTOS" Cgroup="Config"/>
      <require Cclass="RTOS" Cbundle="FreeRTOS" Cgroup="Heap"/>
      <require Cclass="RTOS" Cbundle="FreeRTOS" Cgroup="Event Groups"/>
      <require Cclass="RTOS" Cbundle="FreeRTOS" Cgroup="Timers"/>
      <require condition="FreeRTOS Message or Stream Buffer API"/>
    </condition>

    <condition id="FreeRTOS Config Native">
      <description>Components required for FreeRTOS Config Native variant</description>
      <require condition="FreeRTOS Port"/>

      <require Cclass="RTOS" Cbundle="FreeRTOS" Cgroup="Core"/>
    </condition>

    <condition id="FreeRTOS Config CMSIS RTOS2">
      <description>Components required for FreeRTOS Config CMSIS RTOS2 variant</description>
      <require condition="FreeRTOS Port"/>

      <require Cclass="CMSIS" Cgroup="RTOS2" Csub="FreeRTOS"/>
    </condition>

    <condition id="FreeRTOS Coroutines">
      <description>Components required for FreeRTOS Coroutines</description>
      <require condition="FreeRTOS Port"/>

      <require Cclass="RTOS" Cbundle="FreeRTOS" Cgroup="Core"/>
    </condition>

    <condition id="FreeRTOS Event Groups">
      <description>Components required for FreeRTOS Event Groups</description>
      <require condition="FreeRTOS Port"/>

      <require Cclass="RTOS" Cbundle="FreeRTOS" Cgroup="Core"/>
    </condition>

    <condition id="FreeRTOS Heap">
      <description>Components required for FreeRTOS Heap</description>
      <require condition="FreeRTOS Port"/>

      <require Cclass="RTOS" Cbundle="FreeRTOS" Cgroup="Core"/>
    </condition>

    <condition id="FreeRTOS Message Buffer">
      <description>Components required for FreeRTOS Message Buffer</description>
      <require condition="FreeRTOS Port"/>

      <require Cclass="RTOS" Cbundle="FreeRTOS" Cgroup="Core"/>
    </condition>

    <condition id="FreeRTOS Stream Buffer">
      <description>Components required for FreeRTOS Stream Buffer</description>
      <require condition="FreeRTOS Port"/>

      <require Cclass="RTOS" Cbundle="FreeRTOS" Cgroup="Core"/>
    </condition>

    <condition id="FreeRTOS Timers">
      <description>Components required for FreeRTOS Timers</description>
      <require condition="FreeRTOS Port"/>

      <require Cclass="RTOS" Cbundle="FreeRTOS" Cgroup="Core"/>
    </condition>

    <condition id="FreeRTOS TrustZone">
      <description>Components required for FreeRTOS TrustZone</description>
      <require condition="FreeRTOS Port Cortex-M v8 TZ"/>

      <!-- TrustZone Secure Context is a standalone component -->
      <deny Cclass="CMSIS" Cgroup="RTOS"  Csub="FreeRTOS"/>
      <deny Cclass="CMSIS" Cgroup="RTOS2" Csub="FreeRTOS"/>

      <deny Cclass="RTOS" Cbundle="FreeRTOS" Cgroup="Config"/>
      <deny Cclass="RTOS" Cbundle="FreeRTOS" Cgroup="Core"/>
      <deny Cclass="RTOS" Cbundle="FreeRTOS" Cgroup="Coroutines"/>
      <deny Cclass="RTOS" Cbundle="FreeRTOS" Cgroup="Heap"/>
      <deny Cclass="RTOS" Cbundle="FreeRTOS" Cgroup="Event Groups"/>
      <deny Cclass="RTOS" Cbundle="FreeRTOS" Cgroup="Message Buffer"/>
      <deny Cclass="RTOS" Cbundle="FreeRTOS" Cgroup="Stream Buffer"/>
      <deny Cclass="RTOS" Cbundle="FreeRTOS" Cgroup="Timers"/>
    </condition>
    
    <condition id="CMSIS RTOS FreeRTOS">
      <description>Components required for CMSIS RTOS API on top of FreeRTOS</description>
      <require condition="FreeRTOS Port"/>

      <require Cclass="CMSIS" Cgroup="RTOS2" Csub="FreeRTOS"/>
    </condition>

    <condition id="CMSIS RTOS2 FreeRTOS CortexM">
      <description>Components required for CMSIS RTOS2 API on top of FreeRTOS for Cortex-M</description>
      <require condition="FreeRTOS Port Cortex-M"/>

      <require Cclass="RTOS" Cbundle="FreeRTOS" Cgroup="Config" Cvariant="CMSIS RTOS2"/>
      <require Cclass="RTOS" Cbundle="FreeRTOS" Cgroup="Core"/>
      <require Cclass="RTOS" Cbundle="FreeRTOS" Cgroup="Event Groups"/>
      <require Cclass="RTOS" Cbundle="FreeRTOS" Cgroup="Timers"/>
    </condition>

    <condition id="CMSIS RTOS2 FreeRTOS CortexA">
      <description>Components required for CMSIS RTOS2 API on top of FreeRTOS for Cortex-A</description>
      <require condition="FreeRTOS Port Cortex-A"/>

      <require Cclass="Device" Cgroup="IRQ Controller"/>
      <require Cclass="Device" Cgroup="OS Tick"/>
      <require Cclass="RTOS" Cbundle="FreeRTOS" Cgroup="Config" Cvariant="CMSIS RTOS2"/>
      <require Cclass="RTOS" Cbundle="FreeRTOS" Cgroup="Core"/>
      <require Cclass="RTOS" Cbundle="FreeRTOS" Cgroup="Event Groups"/>
      <require Cclass="RTOS" Cbundle="FreeRTOS" Cgroup="Timers"/>
    </condition>

  </conditions>

  <components>
    <!-- CMSIS-RTOS FreeRTOS component -->
    <component Cclass="CMSIS" Cgroup="RTOS" Csub="FreeRTOS" Cversion="10.3.1" Capiversion="1.0.0" condition="CMSIS RTOS FreeRTOS">
      <description>CMSIS-RTOS implementation for Cortex-M based on FreeRTOS</description>
      <RTE_Components_h>
        #define RTE_CMSIS_RTOS                  /* CMSIS-RTOS */
        #define RTE_CMSIS_RTOS_FreeRTOS         /* CMSIS-RTOS FreeRTOS */
      </RTE_Components_h>
      <files>
        <file category="header" name="CMSIS/RTOS2/FreeRTOS/Include1/cmsis_os.h"/>
        <file category="source" name="CMSIS/RTOS2/FreeRTOS/Source/cmsis_os1.c"/>
      </files>
    </component>

    <!-- CMSIS-RTOS2 FreeRTOS component -->
    <component Cclass="CMSIS" Cgroup="RTOS2" Csub="FreeRTOS" Cvariant="Cortex-M" Cversion="10.3.1" Capiversion="2.1.3" condition="CMSIS RTOS2 FreeRTOS CortexM">
      <description>CMSIS-RTOS2 implementation for Cortex-M based on FreeRTOS</description>
      <RTE_Components_h>
        #define RTE_CMSIS_RTOS2                 /* CMSIS-RTOS2 */
        #define RTE_CMSIS_RTOS2_FreeRTOS        /* CMSIS-RTOS2 FreeRTOS */
      </RTE_Components_h>
      <files>
        <file category="doc"    name="CMSIS/Documentation/General/html/index.html"/>
        <file category="header" name="CMSIS/RTOS2/FreeRTOS/Include/freertos_mpool.h"/>
        <file category="source" name="CMSIS/RTOS2/FreeRTOS/Source/cmsis_os2.c"/>
        <file category="source" name="CMSIS/RTOS2/FreeRTOS/Source/ARM/clib_arm.c" condition="ARMCC"/>
        <file category="source" name="CMSIS/RTOS2/FreeRTOS/Source/ARM/clib_arm.c" condition="ARMCC6"/>

        <file category="source" name="CMSIS/RTOS2/FreeRTOS/Source/os_systick.c"/>
      </files>
    </component>

    <component Cclass="CMSIS" Cgroup="RTOS2" Csub="FreeRTOS" Cvariant="Cortex-A" Cversion="10.3.1" Capiversion="2.1.3" condition="CMSIS RTOS2 FreeRTOS CortexA">
      <description>CMSIS-RTOS2 implementation for Cortex-A based on FreeRTOS</description>
      <RTE_Components_h>
        #define RTE_CMSIS_RTOS2                 /* CMSIS-RTOS2 */
        #define RTE_CMSIS_RTOS2_FreeRTOS        /* CMSIS-RTOS2 FreeRTOS */
      </RTE_Components_h>
      <files>
        <file category="doc"    name="CMSIS/Documentation/General/html/index.html"/>
        <file category="header" name="CMSIS/RTOS2/FreeRTOS/Include/freertos_mpool.h"/>
        <file category="source" name="CMSIS/RTOS2/FreeRTOS/Source/cmsis_os2.c"/>
        <file category="source" name="CMSIS/RTOS2/FreeRTOS/Source/ARM/clib_arm.c" condition="ARMCC"/>
        <file category="source" name="CMSIS/RTOS2/FreeRTOS/Source/ARM/clib_arm.c" condition="ARMCC6"/>

        <file category="source" attr="config" name="CMSIS/RTOS2/FreeRTOS/Source/handlers.c" version="9.1.0"/>
      </files>
    </component>

    <bundle Cbundle="FreeRTOS" Cclass="RTOS" Cversion="10.3.1">
      <description>FreeRTOS Real Time Kernel</description>
      <doc>https://www.freertos.org/Documentation/FreeRTOS_Reference_Manual_V10.0.0.pdf</doc>

      <component Cgroup="Core" Cvariant="Cortex-M" isDefaultVariant="true" condition="FreeRTOS Core CM">
        <description>Core API (Kernel, Tasks, Semaphores, Mutexes, Queues) for Cortex-M</description>
        <RTE_Components_h>
          #define RTE_RTOS_FreeRTOS_CORE          /* RTOS FreeRTOS Core */
        </RTE_Components_h>
        <files>
          <file category="include" name="Source/include/"/>

          <file category="header"  name="Source/include/FreeRTOS.h"/>
          <file category="header"  name="Source/include/queue.h"/>
          <file category="header"  name="Source/include/semphr.h"/>
          <file category="header"  name="Source/include/task.h"/>

          <file category="source"  name="Source/list.c"/>
          <file category="source"  name="Source/queue.c"/>
          <file category="source"  name="Source/tasks.c"/>

          <file category="include"   condition="CM0_ARMCC"    name="Source/portable/RVDS/ARM_CM0/"/>
          <file category="source"    condition="CM0_ARMCC"    name="Source/portable/RVDS/ARM_CM0/port.c"/>
          <file category="include"   condition="CM3_ARMCC"    name="Source/portable/RVDS/ARM_CM3/"/>
          <file category="source"    condition="CM3_ARMCC"    name="Source/portable/RVDS/ARM_CM3/port.c"/>
          <file category="include"   condition="CM4_ARMCC"    name="Source/portable/RVDS/ARM_CM3/"/>
          <file category="source"    condition="CM4_ARMCC"    name="Source/portable/RVDS/ARM_CM3/port.c"/>
          <file category="include"   condition="CM4_FP_ARMCC" name="Source/portable/RVDS/ARM_CM4F/"/>
          <file category="source"    condition="CM4_FP_ARMCC" name="Source/portable/RVDS/ARM_CM4F/port.c"/>
          <file category="include"   condition="CM7_ARMCC"    name="Source/portable/RVDS/ARM_CM3/"/>
          <file category="source"    condition="CM7_ARMCC"    name="Source/portable/RVDS/ARM_CM3/port.c"/>
          <file category="include"   condition="CM7_DP_ARMCC" name="Source/portable/RVDS/ARM_CM7/r0p1/"/>
          <file category="source"    condition="CM7_DP_ARMCC" name="Source/portable/RVDS/ARM_CM7/r0p1/port.c"/>
          <file category="include"   condition="CM7_SP_ARMCC" name="Source/portable/RVDS/ARM_CM7/r0p1/"/>
          <file category="source"    condition="CM7_SP_ARMCC" name="Source/portable/RVDS/ARM_CM7/r0p1/port.c"/>

          <file category="include"   condition="CM0_ARMCC6"    name="Source/portable/GCC/ARM_CM0/"/>
          <file category="source"    condition="CM0_ARMCC6"    name="Source/portable/GCC/ARM_CM0/port.c"/>
          <file category="include"   condition="CM3_ARMCC6"    name="Source/portable/GCC/ARM_CM3/"/>
          <file category="source"    condition="CM3_ARMCC6"    name="Source/portable/GCC/ARM_CM3/port.c"/>
          <file category="include"   condition="CM4_ARMCC6"    name="Source/portable/GCC/ARM_CM3/"/>
          <file category="source"    condition="CM4_ARMCC6"    name="Source/portable/GCC/ARM_CM3/port.c"/>
          <file category="include"   condition="CM4_FP_ARMCC6" name="Source/portable/GCC/ARM_CM4F/"/>
          <file category="source"    condition="CM4_FP_ARMCC6" name="Source/portable/GCC/ARM_CM4F/port.c"/>
          <file category="include"   condition="CM7_ARMCC6"    name="Source/portable/GCC/ARM_CM3/"/>
          <file category="source"    condition="CM7_ARMCC6"    name="Source/portable/GCC/ARM_CM3/port.c"/>
          <file category="include"   condition="CM7_DP_ARMCC6" name="Source/portable/GCC/ARM_CM7/r0p1/"/>
          <file category="source"    condition="CM7_DP_ARMCC6" name="Source/portable/GCC/ARM_CM7/r0p1/port.c"/>
          <file category="include"   condition="CM7_SP_ARMCC6" name="Source/portable/GCC/ARM_CM7/r0p1/"/>
          <file category="source"    condition="CM7_SP_ARMCC6" name="Source/portable/GCC/ARM_CM7/r0p1/port.c"/>
          <file category="include"   condition="CM23_ARMCC6"   name="Source/portable/GCC/ARM_CM23_NTZ/non_secure/"/>
          <file category="source"    condition="CM23_ARMCC6"   name="Source/portable/GCC/ARM_CM23_NTZ/non_secure/port.c"/>
          <file category="source"    condition="CM23_ARMCC6"   name="Source/portable/GCC/ARM_CM23_NTZ/non_secure/portasm.c"/>
          <file category="include"   condition="CM33_ARMCC6"   name="Source/portable/GCC/ARM_CM33_NTZ/non_secure/"/>
          <file category="source"    condition="CM33_ARMCC6"   name="Source/portable/GCC/ARM_CM33_NTZ/non_secure/port.c"/>
          <file category="source"    condition="CM33_ARMCC6"   name="Source/portable/GCC/ARM_CM33_NTZ/non_secure/portasm.c"/>

          <file category="include"   condition="CM0_GCC"    name="Source/portable/GCC/ARM_CM0/"/>
          <file category="source"    condition="CM0_GCC"    name="Source/portable/GCC/ARM_CM0/port.c"/>
          <file category="include"   condition="CM3_GCC"    name="Source/portable/GCC/ARM_CM3/"/>
          <file category="source"    condition="CM3_GCC"    name="Source/portable/GCC/ARM_CM3/port.c"/>
          <file category="include"   condition="CM4_GCC"    name="Source/portable/GCC/ARM_CM3/"/>
          <file category="source"    condition="CM4_GCC"    name="Source/portable/GCC/ARM_CM3/port.c"/>
          <file category="include"   condition="CM4_FP_GCC" name="Source/portable/GCC/ARM_CM4F/"/>
          <file category="source"    condition="CM4_FP_GCC" name="Source/portable/GCC/ARM_CM4F/port.c"/>
          <file category="include"   condition="CM7_GCC"    name="Source/portable/GCC/ARM_CM3/"/>
          <file category="source"    condition="CM7_GCC"    name="Source/portable/GCC/ARM_CM3/port.c"/>
          <file category="include"   condition="CM7_DP_GCC" name="Source/portable/GCC/ARM_CM7/r0p1/"/>
          <file category="source"    condition="CM7_DP_GCC" name="Source/portable/GCC/ARM_CM7/r0p1/port.c"/>
          <file category="include"   condition="CM7_SP_GCC" name="Source/portable/GCC/ARM_CM7/r0p1/"/>
          <file category="source"    condition="CM7_SP_GCC" name="Source/portable/GCC/ARM_CM7/r0p1/port.c"/>
          <file category="include"   condition="CM23_GCC"   name="Source/portable/GCC/ARM_CM23_NTZ/non_secure/"/>
          <file category="source"    condition="CM23_GCC"   name="Source/portable/GCC/ARM_CM23_NTZ/non_secure/port.c"/>
          <file category="source"    condition="CM23_GCC"   name="Source/portable/GCC/ARM_CM23_NTZ/non_secure/portasm.c"/>
          <file category="include"   condition="CM33_GCC"   name="Source/portable/GCC/ARM_CM33_NTZ/non_secure/"/>
          <file category="source"    condition="CM33_GCC"   name="Source/portable/GCC/ARM_CM33_NTZ/non_secure/port.c"/>
          <file category="source"    condition="CM33_GCC"   name="Source/portable/GCC/ARM_CM33_NTZ/non_secure/portasm.c"/>

          <file category="include"   condition="CM0_IAR"    name="Source/portable/IAR/ARM_CM0/"/>
          <file category="source"    condition="CM0_IAR"    name="Source/portable/IAR/ARM_CM0/port.c"/>
          <file category="sourceAsm" condition="CM0_IAR"    name="Source/portable/IAR/ARM_CM0/portasm.s"/>
          <file category="include"   condition="CM3_IAR"    name="Source/portable/IAR/ARM_CM3/"/>
          <file category="source"    condition="CM3_IAR"    name="Source/portable/IAR/ARM_CM3/port.c"/>
          <file category="sourceAsm" condition="CM3_IAR"    name="Source/portable/IAR/ARM_CM3/portasm.s"/>
          <file category="include"   condition="CM4_IAR"    name="Source/portable/IAR/ARM_CM3/"/>
          <file category="source"    condition="CM4_IAR"    name="Source/portable/IAR/ARM_CM3/port.c"/>
          <file category="sourceAsm" condition="CM4_IAR"    name="Source/portable/IAR/ARM_CM3/portasm.s"/>
          <file category="include"   condition="CM4_FP_IAR" name="Source/portable/IAR/ARM_CM4F/"/>
          <file category="source"    condition="CM4_FP_IAR" name="Source/portable/IAR/ARM_CM4F/port.c"/>
          <file category="sourceAsm" condition="CM4_FP_IAR" name="Source/portable/IAR/ARM_CM4F/portasm.s"/>
          <file category="include"   condition="CM7_IAR"    name="Source/portable/IAR/ARM_CM3/"/>
          <file category="source"    condition="CM7_IAR"    name="Source/portable/IAR/ARM_CM3/port.c"/>
          <file category="sourceAsm" condition="CM7_IAR"    name="Source/portable/IAR/ARM_CM3/portasm.s"/>
          <file category="include"   condition="CM7_DP_IAR" name="Source/portable/IAR/ARM_CM7/r0p1/"/>
          <file category="source"    condition="CM7_DP_IAR" name="Source/portable/IAR/ARM_CM7/r0p1/port.c"/>
          <file category="sourceAsm" condition="CM7_DP_IAR" name="Source/portable/IAR/ARM_CM7/r0p1/portasm.s"/>
          <file category="include"   condition="CM7_SP_IAR" name="Source/portable/IAR/ARM_CM7/r0p1/"/>
          <file category="source"    condition="CM7_SP_IAR" name="Source/portable/IAR/ARM_CM7/r0p1/port.c"/>
          <file category="sourceAsm" condition="CM7_SP_IAR" name="Source/portable/IAR/ARM_CM7/r0p1/portasm.s"/>
          <file category="include"   condition="CM23_IAR"   name="Source/portable/IAR/ARM_CM23_NTZ/non_secure/"/>
          <file category="source"    condition="CM23_IAR"   name="Source/portable/IAR/ARM_CM23_NTZ/non_secure/port.c"/>
          <file category="source"    condition="CM23_IAR"   name="Source/portable/IAR/ARM_CM23_NTZ/non_secure/portasm.s"/>
          <file category="include"   condition="CM33_IAR"   name="Source/portable/IAR/ARM_CM33_NTZ/non_secure/"/>
          <file category="source"    condition="CM33_IAR"   name="Source/portable/IAR/ARM_CM33_NTZ/non_secure/port.c"/>
          <file category="source"    condition="CM33_IAR"   name="Source/portable/IAR/ARM_CM33_NTZ/non_secure/portasm.s"/>

          <file category="include" name="CMSIS/RTOS2/FreeRTOS/Include/"/>
          <file category="source"  name="CMSIS/RTOS2/FreeRTOS/Source/freertos_evr.c"/>
          <file category="other"   name="CMSIS/RTOS2/FreeRTOS/FreeRTOS.scvd"/>
        </files>
      </component>

      <component Cgroup="Core" Cvariant="Cortex-M MPU" condition="FreeRTOS Core CM v6_v7 MPU">
        <description>Core API (Kernel, Tasks, Semaphores, Mutexes, Queues) for Cortex-M using MPU</description>
        <RTE_Components_h>
          #define RTE_RTOS_FreeRTOS_CORE          /* RTOS FreeRTOS Core */
          #define RTE_RTOS_FreeRTOS_CORE_MPU      /* RTOS FreeRTOS Core with MPU support */
        </RTE_Components_h>
        <files>
          <file category="include" name="Source/include/"/>

          <file category="header"  name="Source/include/FreeRTOS.h"/>
          <file category="header"  name="Source/include/queue.h"/>
          <file category="header"  name="Source/include/semphr.h"/>
          <file category="header"  name="Source/include/task.h"/>

          <file category="source"  name="Source/list.c"/>
          <file category="source"  name="Source/queue.c"/>
          <file category="source"  name="Source/tasks.c"/>
          <file category="source"  name="Source/portable/Common/mpu_wrappers.c"/>

          <file category="include"   condition="CM4_FP_ARMCC" name="Source/portable/RVDS/ARM_CM4_MPU/"/>
          <file category="source"    condition="CM4_FP_ARMCC" name="Source/portable/RVDS/ARM_CM4_MPU/port.c"/>

          <file category="include"   condition="CM3_ARMCC6"    name="Source/portable/GCC/ARM_CM3_MPU/"/>
          <file category="source"    condition="CM3_ARMCC6"    name="Source/portable/GCC/ARM_CM3_MPU/port.c"/>
          <file category="include"   condition="CM4_ARMCC6"    name="Source/portable/GCC/ARM_CM3_MPU/"/>
          <file category="source"    condition="CM4_ARMCC6"    name="Source/portable/GCC/ARM_CM3_MPU/port.c"/>
          <file category="include"   condition="CM4_FP_ARMCC6" name="Source/portable/GCC/ARM_CM4_MPU/"/>
          <file category="source"    condition="CM4_FP_ARMCC6" name="Source/portable/GCC/ARM_CM4_MPU/port.c"/>

          <file category="include"   condition="CM3_GCC"    name="Source/portable/GCC/ARM_CM3_MPU/"/>
          <file category="source"    condition="CM3_GCC"    name="Source/portable/GCC/ARM_CM3_MPU/port.c"/>
          <file category="include"   condition="CM4_GCC"    name="Source/portable/GCC/ARM_CM3_MPU/"/>
          <file category="source"    condition="CM4_GCC"    name="Source/portable/GCC/ARM_CM3_MPU/port.c"/>
          <file category="include"   condition="CM4_FP_GCC" name="Source/portable/GCC/ARM_CM4_MPU/"/>
          <file category="source"    condition="CM4_FP_GCC" name="Source/portable/GCC/ARM_CM4_MPU/port.c"/>

          <file category="include"   condition="CM4_FP_IAR" name="Source/portable/IAR/ARM_CM4F_MPU/"/>
          <file category="source"    condition="CM4_FP_IAR" name="Source/portable/IAR/ARM_CM4F_MPU/port.c"/>
          <file category="sourceAsm" condition="CM4_FP_IAR" name="Source/portable/IAR/ARM_CM4F_MPU/portasm.s"/>

          <file category="include" name="CMSIS/RTOS2/FreeRTOS/Include/"/>
          <file category="source"  name="CMSIS/RTOS2/FreeRTOS/Source/freertos_evr.c"/>
          <file category="other"   name="CMSIS/RTOS2/FreeRTOS/FreeRTOS.scvd"/>
        </files>
      </component>

      <component Cgroup="Core" Cvariant="Cortex-M Non-Secure" condition="FreeRTOS Core TZ">
        <description>Core API (Kernel, Tasks, Semaphores, Mutexes, Queues) for Cortex-M using Non-Secure Domain (TrustZone)</description>
        <RTE_Components_h>
          #define RTE_RTOS_FreeRTOS_CORE          /* RTOS FreeRTOS Core */
          #define RTE_RTOS_FreeRTOS_CORE_TZ_NS    /* RTOS FreeRTOS Core with TrustZone Non-Secure Domain */
        </RTE_Components_h>
        <files>
          <file category="include" name="Source/include/"/>

          <file category="header"  name="Source/include/FreeRTOS.h"/>
          <file category="header"  name="Source/include/queue.h"/>
          <file category="header"  name="Source/include/semphr.h"/>
          <file category="header"  name="Source/include/task.h"/>

          <file category="source"  name="Source/list.c"/>
          <file category="source"  name="Source/queue.c"/>
          <file category="source"  name="Source/tasks.c"/>

          <file category="include"   condition="CM23_ARMCC6" name="Source/portable/GCC/ARM_CM23/secure/"/>
          <file category="include"   condition="CM23_ARMCC6" name="Source/portable/GCC/ARM_CM23/non_secure/"/>
          <file category="source"    condition="CM23_ARMCC6" name="Source/portable/GCC/ARM_CM23/non_secure/port.c"/>
          <file category="source"    condition="CM23_ARMCC6" name="Source/portable/GCC/ARM_CM23/non_secure/portasm.c"/>
          <file category="include"   condition="CM33_ARMCC6" name="Source/portable/GCC/ARM_CM33/secure/"/>
          <file category="include"   condition="CM33_ARMCC6" name="Source/portable/GCC/ARM_CM33/non_secure/"/>
          <file category="source"    condition="CM33_ARMCC6" name="Source/portable/GCC/ARM_CM33/non_secure/port.c"/>
          <file category="source"    condition="CM33_ARMCC6" name="Source/portable/GCC/ARM_CM33/non_secure/portasm.c"/>

          <file category="include"   condition="CM23_GCC"    name="Source/portable/GCC/ARM_CM23/secure/"/>
          <file category="include"   condition="CM23_GCC"    name="Source/portable/GCC/ARM_CM23/non_secure/"/>
          <file category="source"    condition="CM23_GCC"    name="Source/portable/GCC/ARM_CM23/non_secure/port.c"/>
          <file category="source"    condition="CM23_GCC"    name="Source/portable/GCC/ARM_CM23/non_secure/portasm.c"/>
          <file category="include"   condition="CM33_GCC"    name="Source/portable/GCC/ARM_CM33/secure/"/>
          <file category="include"   condition="CM33_GCC"    name="Source/portable/GCC/ARM_CM33/non_secure/"/>
          <file category="source"    condition="CM33_GCC"    name="Source/portable/GCC/ARM_CM33/non_secure/port.c"/>
          <file category="source"    condition="CM33_GCC"    name="Source/portable/GCC/ARM_CM33/non_secure/portasm.c"/>

          <file category="include"   condition="CM23_IAR"    name="Source/portable/IAR/ARM_CM23/secure/"/>
          <file category="include"   condition="CM23_IAR"    name="Source/portable/IAR/ARM_CM23/non_secure/"/>
          <file category="source"    condition="CM23_IAR"    name="Source/portable/IAR/ARM_CM23/non_secure/port.c"/>
          <file category="sourceAsm" condition="CM23_IAR"    name="Source/portable/IAR/ARM_CM23/non_secure/portasm.s"/>
          <file category="include"   condition="CM33_IAR"    name="Source/portable/IAR/ARM_CM33/secure/"/>
          <file category="include"   condition="CM33_IAR"    name="Source/portable/IAR/ARM_CM33/non_secure/"/>
          <file category="source"    condition="CM33_IAR"    name="Source/portable/IAR/ARM_CM33/non_secure/port.c"/>
          <file category="sourceAsm" condition="CM33_IAR"    name="Source/portable/IAR/ARM_CM33/non_secure/portasm.s"/>

          <file category="include" name="CMSIS/RTOS2/FreeRTOS/Include/"/>
          <file category="source"  name="CMSIS/RTOS2/FreeRTOS/Source/freertos_evr.c"/>
          <file category="other"   name="CMSIS/RTOS2/FreeRTOS/FreeRTOS.scvd"/>
        </files>
      </component>

      <component Cgroup="Core" Cvariant="Cortex-M Non-Secure MPU" condition="FreeRTOS Core TZ MPU">
        <description>Core API (Kernel, Tasks, Semaphores, Mutexes, Queues) for Cortex-M using Non-Secure Domain (TrustZone) and MPU</description>
        <RTE_Components_h>
          #define RTE_RTOS_FreeRTOS_CORE          /* RTOS FreeRTOS Core */
          #define RTE_RTOS_FreeRTOS_CORE_MPU      /* RTOS FreeRTOS Core with MPU support */
          #define RTE_RTOS_FreeRTOS_CORE_TZ_NS    /* RTOS FreeRTOS Core with TrustZone Non-Secure Domain */
        </RTE_Components_h>
        <files>
          <file category="include" name="Source/include/"/>

          <file category="header"  name="Source/include/FreeRTOS.h"/>
          <file category="header"  name="Source/include/queue.h"/>
          <file category="header"  name="Source/include/semphr.h"/>
          <file category="header"  name="Source/include/task.h"/>

          <file category="source"  name="Source/list.c"/>
          <file category="source"  name="Source/queue.c"/>
          <file category="source"  name="Source/tasks.c"/>
          <file category="source"  name="Source/portable/Common/mpu_wrappers.c"/>

          <file category="include"   condition="CM23_ARMCC6" name="Source/portable/GCC/ARM_CM23/secure/"/>
          <file category="include"   condition="CM23_ARMCC6" name="Source/portable/GCC/ARM_CM23/non_secure/"/>
          <file category="source"    condition="CM23_ARMCC6" name="Source/portable/GCC/ARM_CM23/non_secure/port.c"/>
          <file category="source"    condition="CM23_ARMCC6" name="Source/portable/GCC/ARM_CM23/non_secure/portasm.c"/>
          <file category="include"   condition="CM33_ARMCC6" name="Source/portable/GCC/ARM_CM33/secure/"/>
          <file category="include"   condition="CM33_ARMCC6" name="Source/portable/GCC/ARM_CM33/non_secure/"/>
          <file category="source"    condition="CM33_ARMCC6" name="Source/portable/GCC/ARM_CM33/non_secure/port.c"/>
          <file category="source"    condition="CM33_ARMCC6" name="Source/portable/GCC/ARM_CM33/non_secure/portasm.c"/>

          <file category="include"   condition="CM23_GCC"    name="Source/portable/GCC/ARM_CM23/secure/"/>
          <file category="include"   condition="CM23_GCC"    name="Source/portable/GCC/ARM_CM23/non_secure/"/>
          <file category="source"    condition="CM23_GCC"    name="Source/portable/GCC/ARM_CM23/non_secure/port.c"/>
          <file category="source"    condition="CM23_GCC"    name="Source/portable/GCC/ARM_CM23/non_secure/portasm.c"/>
          <file category="include"   condition="CM33_GCC"    name="Source/portable/GCC/ARM_CM33/secure/"/>
          <file category="include"   condition="CM33_GCC"    name="Source/portable/GCC/ARM_CM33/non_secure/"/>
          <file category="source"    condition="CM33_GCC"    name="Source/portable/GCC/ARM_CM33/non_secure/port.c"/>
          <file category="source"    condition="CM33_GCC"    name="Source/portable/GCC/ARM_CM33/non_secure/portasm.c"/>

          <file category="include"   condition="CM23_IAR"    name="Source/portable/IAR/ARM_CM23/secure/"/>
          <file category="include"   condition="CM23_IAR"    name="Source/portable/IAR/ARM_CM23/non_secure/"/>
          <file category="source"    condition="CM23_IAR"    name="Source/portable/IAR/ARM_CM23/non_secure/port.c"/>
          <file category="sourceAsm" condition="CM23_IAR"    name="Source/portable/IAR/ARM_CM23/non_secure/portasm.s"/>
          <file category="include"   condition="CM33_IAR"    name="Source/portable/IAR/ARM_CM33/secure/"/>
          <file category="include"   condition="CM33_IAR"    name="Source/portable/IAR/ARM_CM33/non_secure/"/>
          <file category="source"    condition="CM33_IAR"    name="Source/portable/IAR/ARM_CM33/non_secure/port.c"/>
          <file category="sourceAsm" condition="CM33_IAR"    name="Source/portable/IAR/ARM_CM33/non_secure/portasm.s"/>

          <file category="include" name="CMSIS/RTOS2/FreeRTOS/Include/"/>
          <file category="source"  name="CMSIS/RTOS2/FreeRTOS/Source/freertos_evr.c"/>
          <file category="other"   name="CMSIS/RTOS2/FreeRTOS/FreeRTOS.scvd"/>
        </files>
      </component>

      <component Cgroup="Core" Cvariant="Cortex-A" isDefaultVariant="true" condition="FreeRTOS Core CA">
        <description>Core API (Kernel, Tasks, Semaphores, Mutexes, Queues) for Cortex-A</description>
        <RTE_Components_h>
          #define RTE_RTOS_FreeRTOS_CORE          /* RTOS FreeRTOS Core */
        </RTE_Components_h>
        <files>
          <file category="include" name="Source/include/"/>

          <file category="header"  name="Source/include/FreeRTOS.h"/>
          <file category="header"  name="Source/include/queue.h"/>
          <file category="header"  name="Source/include/semphr.h"/>
          <file category="header"  name="Source/include/task.h"/>

          <file category="source"  name="Source/list.c"/>
          <file category="source"  name="Source/queue.c"/>
          <file category="source"  name="Source/tasks.c"/>

          <file category="include"   condition="ARMCC"  name="Source/portable/RVDS/ARM_CA9/"/>
          <file category="source"    condition="ARMCC"  name="Source/portable/RVDS/ARM_CA9/port.c"/>
          <file category="sourceAsm" condition="ARMCC"  name="Source/portable/RVDS/ARM_CA9/portASM.s"/>

          <file category="include"   condition="ARMCC6" name="Source/portable/GCC/ARM_CA9/"/>
          <file category="source"    condition="ARMCC6" name="Source/portable/GCC/ARM_CA9/port.c"/>
          <file category="sourceAsm" condition="ARMCC6" name="Source/portable/GCC/ARM_CA9/portASM.S"/>

          <file category="include"   condition="GCC"    name="Source/portable/GCC/ARM_CA9/"/>
          <file category="source"    condition="GCC"    name="Source/portable/GCC/ARM_CA9/port.c"/>
          <file category="sourceAsm" condition="GCC"    name="Source/portable/GCC/ARM_CA9/portASM.S"/>

          <file category="include"   condition="IAR"    name="Source/portable/IAR/ARM_CA9/"/>
          <file category="source"    condition="IAR"    name="Source/portable/IAR/ARM_CA9/port.c"/>
          <file category="sourceAsm" condition="IAR"    name="Source/portable/IAR/ARM_CA9/portASM.s"/>

          <file category="include" name="CMSIS/RTOS2/FreeRTOS/Include/"/>
          <file category="source"  name="CMSIS/RTOS2/FreeRTOS/Source/freertos_evr.c"/>
          <file category="other"   name="CMSIS/RTOS2/FreeRTOS/FreeRTOS.scvd"/>
        </files>
      </component>

      <component Cgroup="Config" Cvariant="CMSIS RTOS2" condition="FreeRTOS Config CMSIS RTOS2">
        <description>FreeRTOS CMSIS-RTOS2 API configuration file</description>
        <RTE_Components_h>
          #define RTE_RTOS_FreeRTOS_CONFIG_RTOS2  /* RTOS FreeRTOS Config for CMSIS RTOS2 API */
        </RTE_Components_h>
        <files>
          <file category="doc"    name="CMSIS/Documentation/General/html/cre_freertos_proj.html#cmsis_freertos_config"/>
          <file category="header" attr="config" name="CMSIS/RTOS2/FreeRTOS/Config/ARMCM/FreeRTOSConfig.h" version="10.2.0" condition="CoreM"/>
          <file category="header" attr="config" name="CMSIS/RTOS2/FreeRTOS/Config/ARMCA/FreeRTOSConfig.h" version="10.2.0" condition="CoreA"/>
        </files>
      </component>

      <component Cgroup="Config" Cvariant="FreeRTOS" condition="FreeRTOS Config Native">
        <description>FreeRTOS API configuration file</description>
        <RTE_Components_h>
          #define RTE_RTOS_FreeRTOS_CONFIG        /* RTOS FreeRTOS Config for FreeRTOS API */
        </RTE_Components_h>
        <files>
          <file category="doc"    name="CMSIS/Documentation/General/html/cre_freertos_proj.html#native_freertos_config"/>
          <file category="header" attr="config" name="Config/ARMCM/FreeRTOSConfig.h" version="10.2.0" condition="CoreM"/>
          <file category="header" attr="config" name="Config/ARMCA/FreeRTOSConfig.h" version="10.2.0" condition="CoreA"/>
        </files>
      </component>

      <component Cgroup="Coroutines" condition="FreeRTOS Coroutines">
        <description>Co-routine API</description>
        <RTE_Components_h>
          #define RTE_RTOS_FreeRTOS_COROUTINE     /* RTOS FreeRTOS Co-routines */
        </RTE_Components_h>
        <files>
          <file category="header" name="Source/include/croutine.h"/>
          <file category="source" name="Source/croutine.c"/>
        </files>
      </component>

      <component Cgroup="Event Groups" condition="FreeRTOS Event Groups">
        <description>Event Group API</description>
        <RTE_Components_h>
          #define RTE_RTOS_FreeRTOS_EVENTGROUPS   /* RTOS FreeRTOS Event Groups */
        </RTE_Components_h>
        <files>
          <file category="header" name="Source/include/event_groups.h"/>
          <file category="source" name="Source/event_groups.c"/>
        </files>
      </component>

      <component Cgroup="Heap" Cvariant="Heap_1" condition="FreeRTOS Heap">
        <description>Very simple, does not permit memory to be freed.</description>
        <RTE_Components_h>
          #define RTE_RTOS_FreeRTOS_HEAP_1        /* RTOS FreeRTOS Heap 1 */
        </RTE_Components_h>
        <files>
          <file category="source" name="Source/portable/MemMang/heap_1.c"/>
          <file category="doc"    name="http://www.freertos.org/a00111.html"/>
        </files>
      </component>

      <component Cgroup="Heap" Cvariant="Heap_2" condition="FreeRTOS Heap">
        <description>Permits memory to be freed, but not does coalescence adjacent free memory blocks.</description>
        <RTE_Components_h>
          #define RTE_RTOS_FreeRTOS_HEAP_2        /* RTOS FreeRTOS Heap 2 */
        </RTE_Components_h>
        <files>
          <file category="source" name="Source/portable/MemMang/heap_2.c"/>
          <file category="doc"    name="http://www.freertos.org/a00111.html"/>
        </files>
      </component>

      <component Cgroup="Heap" Cvariant="Heap_3" condition="FreeRTOS Heap">
        <description>Wraps the standard malloc() and free() for thread safety.</description>
        <RTE_Components_h>
          #define RTE_RTOS_FreeRTOS_HEAP_3        /* RTOS FreeRTOS Heap 3 */
        </RTE_Components_h>
        <files>
          <file category="source" name="Source/portable/MemMang/heap_3.c"/>
          <file category="doc"    name="http://www.freertos.org/a00111.html"/>
        </files>
      </component>

      <component Cgroup="Heap" Cvariant="Heap_4" condition="FreeRTOS Heap" isDefaultVariant="true">
        <description>Coalescences adjacent free memory blocks to avoid fragmentation. Includes absolute address placement option.</description>
        <RTE_Components_h>
          #define RTE_RTOS_FreeRTOS_HEAP_4        /* RTOS FreeRTOS Heap 4 */
        </RTE_Components_h>
        <files>
          <file category="source" name="Source/portable/MemMang/heap_4.c"/>
          <file category="doc"    name="http://www.freertos.org/a00111.html"/>
        </files>
      </component>

      <component Cgroup="Heap" Cvariant="Heap_5" condition="FreeRTOS Heap">
        <description>Same as Heap_4, with the ability to span the heap across multiple non-adjacent memory areas.</description>
        <RTE_Components_h>
          #define RTE_RTOS_FreeRTOS_HEAP_5        /* RTOS FreeRTOS Heap 5 */
        </RTE_Components_h>
        <files>
          <file category="source" name="Source/portable/MemMang/heap_5.c"/>
          <file category="doc"    name="http://www.freertos.org/a00111.html"/>
        </files>
      </component>

      <component Cgroup="Message Buffer" condition="FreeRTOS Message Buffer">
        <description>Message Buffer API</description>
        <RTE_Components_h>
          #define RTE_RTOS_FreeRTOS_MESSAGE_BUFFER /* RTOS FreeRTOS Message Buffers */
        </RTE_Components_h>
        <files>
          <file category="header" name="Source/include/message_buffer.h"/>
          <file category="source" name="Source/stream_buffer.c"/>
        </files>
      </component>

      <component Cgroup="Stream Buffer" condition="FreeRTOS Stream Buffer">
        <description>Stream Buffer API</description>
        <RTE_Components_h>
          #define RTE_RTOS_FreeRTOS_STREAM_BUFFER /* RTOS FreeRTOS Stream Buffers */
        </RTE_Components_h>
        <files>
          <file category="header" name="Source/include/stream_buffer.h"/>
          <file category="source" name="Source/stream_buffer.c"/>
        </files>
      </component>

      <component Cgroup="Timers" condition="FreeRTOS Timers">
        <description>Timer API</description>
        <RTE_Components_h>
          #define RTE_RTOS_FreeRTOS_TIMERS        /* RTOS FreeRTOS Timers */
        </RTE_Components_h>
        <files>
          <file category="header" name="Source/include/timers.h"/>
          <file category="source" name="Source/timers.c"/>
        </files>
      </component>

      <component Cgroup="TrustZone" condition="FreeRTOS TrustZone">
        <description>TrustZone Secure Context API</description>
        <RTE_Components_h>
          #define RTE_RTOS_FreeRTOS_TZ
        </RTE_Components_h>
        <files>
          <file category="header" attr="config" name="CMSIS/RTOS2/FreeRTOS/Config/ARMCM_TZ/FreeRTOSConfig.h" version="10.2.0"/>

          <file category="header"    condition="CM23_TZ_ARMCC6" name="Source/portable/GCC/ARM_CM23/secure/secure_port_macros.h"/>
          <file category="include"   condition="CM23_TZ_ARMCC6" name="Source/portable/GCC/ARM_CM23/secure/"/>
          <file category="source"    condition="CM23_TZ_ARMCC6" name="Source/portable/GCC/ARM_CM23/secure/secure_context.c"/>
          <file category="source"    condition="CM23_TZ_ARMCC6" name="Source/portable/GCC/ARM_CM23/secure/secure_context_port.c"/>
          <file category="source"    condition="CM23_TZ_ARMCC6" name="Source/portable/GCC/ARM_CM23/secure/secure_heap.c"/>
          <file category="source"    condition="CM23_TZ_ARMCC6" name="Source/portable/GCC/ARM_CM23/secure/secure_init.c"/>
          <file category="header"    condition="CM33_TZ_ARMCC6" name="Source/portable/GCC/ARM_CM33/secure/secure_port_macros.h"/>
          <file category="include"   condition="CM33_TZ_ARMCC6" name="Source/portable/GCC/ARM_CM33/secure/"/>
          <file category="source"    condition="CM33_TZ_ARMCC6" name="Source/portable/GCC/ARM_CM33/secure/secure_context.c"/>
          <file category="source"    condition="CM33_TZ_ARMCC6" name="Source/portable/GCC/ARM_CM33/secure/secure_context_port.c"/>
          <file category="source"    condition="CM33_TZ_ARMCC6" name="Source/portable/GCC/ARM_CM33/secure/secure_heap.c"/>
          <file category="source"    condition="CM33_TZ_ARMCC6" name="Source/portable/GCC/ARM_CM33/secure/secure_init.c"/>

          <file category="header"    condition="CM23_TZ_GCC"    name="Source/portable/GCC/ARM_CM23/secure/secure_port_macros.h"/>
          <file category="include"   condition="CM23_TZ_GCC"    name="Source/portable/GCC/ARM_CM23/secure/"/>
          <file category="source"    condition="CM23_TZ_GCC"    name="Source/portable/GCC/ARM_CM23/secure/secure_context.c"/>
          <file category="source"    condition="CM23_TZ_GCC"    name="Source/portable/GCC/ARM_CM23/secure/secure_context_port.c"/>
          <file category="source"    condition="CM23_TZ_GCC"    name="Source/portable/GCC/ARM_CM23/secure/secure_heap.c"/>
          <file category="source"    condition="CM23_TZ_GCC"    name="Source/portable/GCC/ARM_CM23/secure/secure_init.c"/>
          <file category="header"    condition="CM33_TZ_GCC"    name="Source/portable/GCC/ARM_CM33/secure/secure_port_macros.h"/>
          <file category="include"   condition="CM33_TZ_GCC"    name="Source/portable/GCC/ARM_CM33/secure/"/>
          <file category="source"    condition="CM33_TZ_GCC"    name="Source/portable/GCC/ARM_CM33/secure/secure_context.c"/>
          <file category="source"    condition="CM33_TZ_GCC"    name="Source/portable/GCC/ARM_CM33/secure/secure_context_port.c"/>
          <file category="source"    condition="CM33_TZ_GCC"    name="Source/portable/GCC/ARM_CM33/secure/secure_heap.c"/>
          <file category="source"    condition="CM33_TZ_GCC"    name="Source/portable/GCC/ARM_CM33/secure/secure_init.c"/>

          <file category="header"    condition="CM23_TZ_IAR"    name="Source/portable/IAR/ARM_CM23/secure/secure_port_macros.h"/>
          <file category="include"   condition="CM23_TZ_IAR"    name="Source/portable/IAR/ARM_CM23/secure/"/>
          <file category="source"    condition="CM23_TZ_IAR"    name="Source/portable/IAR/ARM_CM23/secure/secure_context.c"/>
          <file category="source"    condition="CM23_TZ_IAR"    name="Source/portable/IAR/ARM_CM23/secure/secure_context_port.c"/>
          <file category="sourceAsm" condition="CM23_TZ_IAR"    name="Source/portable/IAR/ARM_CM23/secure/secure_context_port_asm.s"/>
          <file category="source"    condition="CM23_TZ_IAR"    name="Source/portable/IAR/ARM_CM23/secure/secure_heap.c"/>
          <file category="source"    condition="CM23_TZ_IAR"    name="Source/portable/IAR/ARM_CM23/secure/secure_init.c"/>
          <file category="header"    condition="CM33_TZ_IAR"    name="Source/portable/IAR/ARM_CM33/secure/secure_port_macros.h"/>
          <file category="include"   condition="CM33_TZ_IAR"    name="Source/portable/IAR/ARM_CM33/secure/"/>
          <file category="source"    condition="CM33_TZ_IAR"    name="Source/portable/IAR/ARM_CM33/secure/secure_context.c"/>
          <file category="source"    condition="CM33_TZ_IAR"    name="Source/portable/IAR/ARM_CM33/secure/secure_context_port.c"/>
          <file category="sourceAsm" condition="CM33_TZ_IAR"    name="Source/portable/IAR/ARM_CM33/secure/secure_context_port_asm.s"/>
          <file category="source"    condition="CM33_TZ_IAR"    name="Source/portable/IAR/ARM_CM33/secure/secure_heap.c"/>
          <file category="source"    condition="CM33_TZ_IAR"    name="Source/portable/IAR/ARM_CM33/secure/secure_init.c"/>
        </files>
      </component>
    </bundle>
  </components>

  <examples>
    <example name="CMSIS-RTOS2 FreeRTOS Blinky" doc="Abstract.txt" folder="CMSIS/RTOS2/FreeRTOS/Examples/Blinky">
      <description>CMSIS-RTOS2 Blinky example using FreeRTOS</description>
      <board name="uVision Simulator" vendor="Keil"/>
      <project>
        <environment name="uv" load="Blinky.uvprojx"/>
      </project>
      <attributes>
        <component Cclass="CMSIS" Cgroup="CORE"/>
        <component Cclass="CMSIS" Cgroup="RTOS2"/>
        <component Cclass="Device" Cgroup="Startup"/>
        <category>Getting Started</category>
      </attributes>
    </example>

    <example name="Native FreeRTOS Blinky" doc="Abstract.txt" folder="CMSIS/RTOS2/FreeRTOS/Examples/Native_Blinky">
      <description>Blinky example using FreeRTOS natively</description>
      <board name="uVision Simulator" vendor="Keil"/>
      <project>
        <environment name="uv" load="Blinky.uvprojx"/>
      </project>
      <attributes>
        <component Cclass="CMSIS" Cgroup="CORE"/>
        <component Cclass="CMSIS" Cgroup="RTOS2"/>
        <component Cclass="Device" Cgroup="Startup"/>
        <category>Getting Started</category>
      </attributes>
    </example>

    <example name="TrustZone for ARMv8-M" doc="NonSecure/Abstract.txt" folder="CMSIS/RTOS2/FreeRTOS/Examples/TrustZone">
      <description>CMSIS-RTOS2 example with secure/non-secure thread context management using FreeRTOS</description>
      <board name="uVision Simulator" vendor="Keil"/>
      <project>
        <environment name="uv" load="TrustZone.uvmpw"/>
      </project>
      <attributes>
        <component Cclass="CMSIS" Cgroup="CORE"/>
        <component Cclass="CMSIS" Cgroup="RTOS2"/>
        <component Cclass="Device" Cgroup="Startup"/>
        <category>Getting Started</category>
      </attributes>
    </example>

    <example name="CMSIS-RTOS2 FreeRTOS Blinky" doc="Blinky/Abstract.txt" folder="CMSIS/RTOS2/FreeRTOS/Examples/Blinky_IAR">
      <description>CMSIS-RTOS2 Blinky example using FreeRTOS</description>
      <board name="EWARM Simulator" vendor="iar"/>
      <project>
        <environment name="iar" load="Blinky/Blinky.ewp"/>
      </project>
      <attributes>
        <component Cclass="CMSIS" Cgroup="CORE"/>
        <component Cclass="CMSIS" Cgroup="RTOS2"/>
        <component Cclass="Device" Cgroup="Startup"/>
        <category>Getting Started</category>
      </attributes>
    </example>

  </examples>
</package>
