<?xml version="1.0" encoding="UTF-8"?>
<package schemaVersion="1.7.7" xmlns:xs="http://www.w3.org/2001/XMLSchema-instance" xs:noNamespaceSchemaLocation="PACK.xsd">
  <vendor>Keil</vendor>
  <name>ARM_Compiler</name>
  <description>Keil ARM Compiler extensions for ARM Compiler 5 and ARM Compiler 6</description>
  <url>https://www.keil.com/pack/</url>

  <releases>
    <release version="1.7.2" date="2022-04-26">
      Added support for Arm Cortex-M85 processor based devices.
      Added support for Arm China Star-MC1 processor based devices.
      Updated documentation appearance.
    </release>
    <release version="1.7.1" date="2022-03-31">
      Added clock frequency to internal Event Recorder Initialization message.
    </release>
    <release version="1.7.0" date="2022-02-25">
      Added Event Recorder logging via Semihosting.
    </release>
    <release version="1.6.3" date="2020-04-22">
      Updated SCVD examples to Arm Compiler 6.
      Added Dcore Cortex-M55 to list of supported processors.
      Updated Event Recorder documentation describing the concept of heart beat events.
    </release>
    <release version="1.6.2" date="2019-11-12">
      Added ARMV81MML to list of supported processors.
      Updated EventRecorder.scvd:
      - using level 'Detail' for start/stop A event group.
      - adding prefix attribute to enable linking the event property to the doxygen documentation.
    </release>
    <release version="1.6.1" date="2018-12-12">
      Event Recorder examples - reset in simulation restarts CYCCNT.
      Updated documentation clarifying that the Event Recorder RAM location must not overlap with RAM area used for Flash Programming.
    </release>
    <release version="1.6.0" date="2018-09-06">
      Added Cortex-M35P device support
      Event Recorder:
      - extended SCVD file format with state information
      - changed protocol version to 1.1
      - added example projects for Cortex-M0 and state information
    </release>
    <release version="1.5.0" date="2018-07-31">
      Added Cortex-M1 to the list of support processors
      Event Recorder:
      - added CMSIS RTOS2 as Time Stamp Source
      - extended Time Stamp Timer interface
      - added EventRecorderClockUpdate function
      - enhanced MISRA Compliance
      - improved robustness
      Fixed version numbers
      Updated documentation
    </release>
    <release version="1.4.0" date="2018-03-15">
      Added Event Statistics feature to Event Recorder:
      - added EventStart and EventStop events to Event Recorder component.
      - added Example demonstrating Event Statistic.
      - updated EventRecorder.scvd file adding 'Event Statistics' group and 'Start/Stop' event descriptions.
      - updated Event Recorder documentation for Event Statistics.
    </release>
    <release version="1.3.3" date="2017-10-15">
      Incrementing Compiler Bundle Cversion to 1.2.1 to fix inconsistencies between components' version in the RTE Dialog.
    </release>
    <release version="1.3.2" date="2017-10-02">
      Event Recorder:
      - added support for Cortex-M23
      - updated documentation
    </release>
    <release version="1.3.1" date="2017-04-21">
      Updated SCVD documentation for Event Recording
      Updated SCVD examples to build without warnings using ARM Compiler 6
    </release>
    <release version ="1.3.0" date="2017-02-06">
      Updated documentation for Event Recorder component
      Added support for STDOUT using the Event Recorder
    </release>
    <release version="1.2.0" date="2016-11-11">
      Added Event Recorder component
    </release>
    <release version="1.1.1" date="2016-05-25">
      Fixing condition for supporting MDK-Middleware Variant MDK-Plus
    </release>
    <release version="1.1.0" date="2016-05-09">
      Added support for MDK-Plus
      Added "Event Messaging" component
      Added support for ARM Compiler 6
      Enabled support for Dcore ARMV8MBL and ARMV8MML
    </release>
    <release version="1.0.0" date="2015-03-18">
      Initial release
    </release>
  </releases>

  <conditions>
    <condition id="Cortex-M Device">
      <description>Cortex-M processor based device: Cortex-M0/M0+/M1/M3/M4/M7/M23/M33/M35P/M55/M85, ARMV8MBL/ML, Star-MC1, SC000/300</description>
      <accept Dcore="Cortex-M0"/>
      <accept Dcore="Cortex-M0+"/>
      <accept Dcore="Cortex-M1"/>
      <accept Dcore="Cortex-M3"/>
      <accept Dcore="Cortex-M4"/>
      <accept Dcore="Cortex-M7"/>
      <accept Dcore="Cortex-M23"/>
      <accept Dcore="Cortex-M33"/>
      <accept Dcore="Cortex-M35P"/>
      <accept Dcore="Cortex-M55"/>
      <accept Dcore="Cortex-M85"/>
      <accept Dcore="ARMV8MBL"/>
      <accept Dcore="ARMV8MML"/>
      <accept Dcore="Star-MC1"/>
      <accept Dcore="SC000"/>
      <accept Dcore="SC300"/>
    </condition>
    <condition id="ARMCC Cortex-M">
      <description>ARMCC and Cortex-M</description>
      <require Tcompiler="ARMCC"/>
      <require condition="Cortex-M Device"/>
    </condition>
    <condition id="ARMCC Cortex-M with ITM">
      <description>ARMCC and Cortex-M with ITM</description>
      <require Tcompiler="ARMCC"/>
      <require condition="Cortex-M Device"/>
      <deny Dcore="Cortex-M0"/>
      <deny Dcore="Cortex-M0+"/>
      <deny Dcore="Cortex-M1"/>
      <deny Dcore="SC000"/>
    </condition>
    <condition id="ARMCC Cortex-M with EVR">
      <description>ARMCC and Cortex-M with EVR</description>
      <require Tcompiler="ARMCC"/>
      <require condition="Cortex-M Device"/>
      <require Cclass="Compiler" Cgroup="Event Recorder"/>
    </condition>
    <condition id="ARMCC Cortex-M with File System">
      <description>ARMCC and Cortex-M with File System CORE</description>
      <require Tcompiler="ARMCC"/>
      <require condition="Cortex-M Device"/>
      <accept Cbundle="MDK-Pro"    Cclass="File System" Cgroup="CORE"/>
      <accept Cbundle="MDK-Plus"   Cclass="File System" Cgroup="CORE"/>
      <accept Cbundle="MDK-Source" Cclass="File System" Cgroup="CORE"/>
    </condition>
  </conditions>

  <examples>

    <example name="SCVD Simple Example" doc="Abstract.txt" folder="SCVD_Examples/Simple_View">
      <description>Simple Example introducing the Component Viewer</description>
      <board name="uVision Simulator" vendor="Keil"/>
      <project>
        <environment name="uv" load="Simple_View.uvprojx"/>
      </project>
      <attributes>
        <component Cclass="CMSIS" Cgroup="CORE"/>
        <component Cclass="Device" Cgroup="Startup"/>
        <category>Getting Started</category>
      </attributes>
    </example>

    <example name="SCVD Complex Example" doc="Abstract.txt" folder="SCVD_Examples/Complex_View">
      <description>More complex Component Viewer example</description>
      <board name="uVision Simulator" vendor="Keil"/>
      <project>
        <environment name="uv" load="Complex_View.uvprojx"/>
      </project>
      <attributes>
        <component Cclass="CMSIS" Cgroup="CORE"/>
        <component Cclass="Device" Cgroup="Startup"/>
        <category>Getting Started</category>
      </attributes>
    </example>

    <example name="SCVD in MyComponent" doc="Abstract.txt" folder="SCVD_Examples/MyComponent">
      <description>Example showing Component Viewer and Event Recorder</description>
      <board name="uVision Simulator" vendor="Keil"/>
      <project>
        <environment name="uv" load="MyComponent.uvprojx"/>
      </project>
      <attributes>
        <component Cclass="CMSIS" Cgroup="CORE"/>
        <component Cclass="Device" Cgroup="Startup"/>
        <category>Getting Started</category>
      </attributes>
    </example>

    <example name="SCVD Event Statistics" doc="Abstract.txt" folder="SCVD_Examples/EventStatistic">
      <description>Shows the usage of start/stop events with Event Recorder</description>
      <board name="uVision Simulator" vendor="Keil"/>
      <project>
        <environment name="uv" load="EventStatistic.uvprojx"/>
      </project>
      <attributes>
        <component Cclass="CMSIS" Cgroup="CORE"/>
        <component Cclass="Device" Cgroup="Startup"/>
        <category>Getting Started</category>
      </attributes>
    </example>

    <example name="SCVD Event State" doc="Abstract.txt" folder="SCVD_Examples/EventState">
      <description>Shows the usage of state information Event Recorder and System Viewer</description>
      <board name="uVision Simulator" vendor="Keil"/>
      <project>
        <environment name="uv" load="EventState.uvprojx"/>
      </project>
      <attributes>
        <component Cclass="CMSIS" Cgroup="CORE"/>
        <component Cclass="Device" Cgroup="Startup"/>
        <category>Getting Started</category>
      </attributes>
    </example>

    <example name="SCVD Cortex-M0 SysTick" doc="Abstract.txt" folder="SCVD_Examples/CM0_SysTick">
      <description>Using Event Recorder with SysTick timer a time source</description>
      <board name="uVision Simulator" vendor="Keil"/>
      <project>
        <environment name="uv" load="CM0_SysTick.uvprojx"/>
      </project>
      <attributes>
        <component Cclass="CMSIS" Cgroup="CORE"/>
        <component Cclass="Device" Cgroup="Startup"/>
        <category>Getting Started</category>
      </attributes>
    </example>

    <example name="SCVD Cortex-M0 RTOS" doc="Abstract.txt" folder="SCVD_Examples/CM0_RTOS">
      <description>Using Event Recorder with RTOS System Timer a time source</description>
      <board name="uVision Simulator" vendor="Keil"/>
      <project>
        <environment name="uv" load="CM0_RTOS.uvprojx"/>
      </project>
      <attributes>
        <component Cclass="CMSIS" Cgroup="RTOS2"/>
        <component Cclass="Device" Cgroup="Startup"/>
        <category>Getting Started</category>
      </attributes>
    </example>

    <example name="SCVD printf Redirect Example" doc="Abstract.txt" folder="SCVD_Examples/printf_redirect">
      <description>Retargeting STDOUT via Event Recorder</description>
      <board name="uVision Simulator" vendor="Keil"/>
      <project>
        <environment name="uv" load="printf_redirect.uvprojx"/>
      </project>
      <attributes>
        <component Cclass="CMSIS" Cgroup="CORE"/>
        <component Cclass="Device" Cgroup="Startup"/>
        <category>Getting Started</category>
      </attributes>
    </example>
  </examples>

  <taxonomy>
    <!-- <description Cclass="Compiler" doc="Doc/General/html/index.html">ARM Compiler Software Extensions</description> -->
    <description Cclass="Compiler" Cgroup="I/O" doc="Doc/RetargetIO/html/index.html">Retarget Input/Output</description>
  </taxonomy>

  <components>
    <bundle Cbundle="ARM Compiler" Cclass="Compiler" Cversion="1.7.2">
      <description>Compiler Extensions for ARM Compiler 5 and ARM Compiler 6</description>
      <doc>Doc/General/html/index.html</doc>
      <component Cgroup="I/O" Csub="STDIN" Cvariant="Breakpoint" Cversion="1.2.0" condition="ARMCC Cortex-M">
        <description>Stop program execution at a breakpoint when using STDIN</description>
        <RTE_Components_h>
          #define RTE_Compiler_IO_STDIN           /* Compiler I/O: STDIN */
          #define RTE_Compiler_IO_STDIN_BKPT      /* Compiler I/O: STDIN Breakpoint */
        </RTE_Components_h>
        <files>
          <file category="source" name="Source/retarget_io.c"/>
        </files>
      </component>
      <component Cgroup="I/O" Csub="STDIN" Cvariant="ITM" Cversion="1.2.0" condition="ARMCC Cortex-M with ITM">
        <description>Retrieve STDIN from a debug output window using ITM</description>
        <RTE_Components_h>
          #define RTE_Compiler_IO_STDIN           /* Compiler I/O: STDIN */
          #define RTE_Compiler_IO_STDIN_ITM       /* Compiler I/O: STDIN ITM */
        </RTE_Components_h>
        <files>
          <file category="source" name="Source/retarget_io.c"/>
        </files>
      </component>
      <component Cgroup="I/O" Csub="STDIN" Cvariant="User" Cversion="1.2.0" condition="ARMCC Cortex-M">
        <description>Retrieve STDIN from a user specified input source  (USART, Keyboard or other)</description>
        <RTE_Components_h>
          #define RTE_Compiler_IO_STDIN           /* Compiler I/O: STDIN */
          #define RTE_Compiler_IO_STDIN_User      /* Compiler I/O: STDIN User */
        </RTE_Components_h>
        <files>
          <file category="source" name="Source/retarget_io.c"/>
          <file category="source" name="Template/stdin_user.c"     attr="template" select="STDIN User Template"/>
          <file category="source" name="Template/stdin_USART.c"    attr="template" select="STDIN via USART"/>
          <file category="source" name="Template/stdin_keyboard.c" attr="template" select="STDIN via Keyboard"/>
        </files>
      </component>
      <component Cgroup="I/O" Csub="STDOUT" Cvariant="Breakpoint" Cversion="1.2.0" condition="ARMCC Cortex-M">
        <description>Stop program execution at a breakpoint when using STDOUT</description>
        <RTE_Components_h>
          #define RTE_Compiler_IO_STDOUT          /* Compiler I/O: STDOUT */
          #define RTE_Compiler_IO_STDOUT_BKPT     /* Compiler I/O: STDOUT Breakpoint */
        </RTE_Components_h>
        <files>
          <file category="source" name="Source/retarget_io.c"/>
        </files>
      </component>
      <component Cgroup="I/O" Csub="STDOUT" Cvariant="ITM" Cversion="1.2.0" condition="ARMCC Cortex-M with ITM">
        <description>Redirect STDOUT to a debug output window using ITM</description>
        <RTE_Components_h>
          #define RTE_Compiler_IO_STDOUT          /* Compiler I/O: STDOUT */
          #define RTE_Compiler_IO_STDOUT_ITM      /* Compiler I/O: STDOUT ITM */
        </RTE_Components_h>
        <files>
          <file category="source" name="Source/retarget_io.c"/>
        </files>
      </component>
      <component Cgroup="I/O" Csub="STDOUT" Cvariant="EVR" Cversion="1.2.0" condition="ARMCC Cortex-M with EVR">
        <description>Redirect STDOUT to a debug output window using Event Recorder</description>
        <RTE_Components_h>
          #define RTE_Compiler_IO_STDOUT          /* Compiler I/O: STDOUT */
          #define RTE_Compiler_IO_STDOUT_EVR      /* Compiler I/O: STDOUT EVR */
        </RTE_Components_h>
        <files>
          <file category="source" name="Source/retarget_io.c"/>
        </files>
      </component>
      <component Cgroup="I/O" Csub="STDOUT" Cvariant="User" Cversion="1.2.0" condition="ARMCC Cortex-M">
        <description>Redirect STDOUT to a user defined output target (USART, Graphics Display or other)</description>
        <RTE_Components_h>
          #define RTE_Compiler_IO_STDOUT          /* Compiler I/O: STDOUT */
          #define RTE_Compiler_IO_STDOUT_User     /* Compiler I/O: STDOUT User */
        </RTE_Components_h>
        <files>
          <file category="source" name="Source/retarget_io.c"/>
          <file category="source" name="Template/stdout_user.c"    attr="template" select="STDOUT User Template"/>
          <file category="source" name="Template/stdout_USART.c"   attr="template" select="STDOUT via USART"/>
          <file category="source" name="Template/stdout_display.c" attr="template" select="STDOUT via Display"/>
        </files>
      </component>
      <component Cgroup="I/O" Csub="STDERR" Cvariant="Breakpoint" Cversion="1.2.0" condition="ARMCC Cortex-M">
        <description>Stop program execution at a breakpoint when using STDERR</description>
        <RTE_Components_h>
          #define RTE_Compiler_IO_STDERR          /* Compiler I/O: STDERR */
          #define RTE_Compiler_IO_STDERR_BKPT     /* Compiler I/O: STDERR Breakpoint */
        </RTE_Components_h>
        <files>
          <file category="source" name="Source/retarget_io.c"/>
        </files>
      </component>
      <component Cgroup="I/O" Csub="STDERR" Cvariant="ITM" Cversion="1.2.0" condition="ARMCC Cortex-M with ITM">
        <description>Redirect STDERR to a debug output window using ITM</description>
        <RTE_Components_h>
          #define RTE_Compiler_IO_STDERR          /* Compiler I/O: STDERR */
          #define RTE_Compiler_IO_STDERR_ITM      /* Compiler I/O: STDERR ITM */
        </RTE_Components_h>
        <files>
          <file category="source" name="Source/retarget_io.c"/>
        </files>
      </component>
      <component Cgroup="I/O" Csub="STDERR" Cvariant="User" Cversion="1.2.0" condition="ARMCC Cortex-M">
        <description>Redirect STDERR to a user defined output target (USART, Graphics Display or other)</description>
        <RTE_Components_h>
          #define RTE_Compiler_IO_STDERR          /* Compiler I/O: STDERR */
          #define RTE_Compiler_IO_STDERR_User     /* Compiler I/O: STDERR User */
        </RTE_Components_h>
        <files>
          <file category="source" name="Source/retarget_io.c"/>
          <file category="source" name="Template/stderr_user.c"    attr="template" select="STDERR User Template"/>
          <file category="source" name="Template/stderr_USART.c"   attr="template" select="STDERR via USART"/>
          <file category="source" name="Template/stderr_display.c" attr="template" select="STDERR via Display"/>
        </files>
      </component>
      <component Cgroup="I/O" Csub="TTY" Cvariant="Breakpoint" Cversion="1.2.0" condition="ARMCC Cortex-M">
        <description>Stop program execution at a breakpoint when using TTY</description>
        <RTE_Components_h>
          #define RTE_Compiler_IO_TTY             /* Compiler I/O: TTY */
          #define RTE_Compiler_IO_TTY_BKPT        /* Compiler I/O: TTY Breakpoint */
        </RTE_Components_h>
        <files>
          <file category="source" name="Source/retarget_io.c"/>
        </files>
      </component>
      <component Cgroup="I/O" Csub="TTY" Cvariant="ITM" Cversion="1.2.0" condition="ARMCC Cortex-M with ITM">
        <description>Redirect TTY to a debug output window using ITM</description>
        <RTE_Components_h>
          #define RTE_Compiler_IO_TTY             /* Compiler I/O: TTY */
          #define RTE_Compiler_IO_TTY_ITM         /* Compiler I/O: TTY ITM */
        </RTE_Components_h>
        <files>
          <file category="source" name="Source/retarget_io.c"/>
        </files>
      </component>
      <component Cgroup="I/O" Csub="TTY" Cvariant="User" Cversion="1.2.0" condition="ARMCC Cortex-M">
        <description>Redirect TTY to a user defined output target</description>
        <RTE_Components_h>
          #define RTE_Compiler_IO_TTY             /* Compiler I/O: TTY */
          #define RTE_Compiler_IO_TTY_User        /* Compiler I/O: TTY User */
        </RTE_Components_h>
        <files>
          <file category="source" name="Source/retarget_io.c"/>
          <file category="source" name="Template/tty_user.c" attr="template" select="TTY User Template"/>
        </files>
      </component>
      <component Cgroup="I/O" Csub="File" Cvariant="File System" Cversion="1.2.0" condition="ARMCC Cortex-M with File System">
        <description>Use retargeting together with the File System component</description>
        <RTE_Components_h>
          #define RTE_Compiler_IO_File            /* Compiler I/O: File */
          #define RTE_Compiler_IO_File_FS         /* Compiler I/O: File (File System) */
        </RTE_Components_h>
        <files>
          <file category="source" name="Source/retarget_io.c"/>
        </files>
      </component>
      <component Cgroup="Event Recorder" Cvariant="DAP" Cversion="1.5.1" condition="Cortex-M Device">
        <description>Event Recording and Component Viewer via Debug Access Port (DAP)</description>
        <RTE_Components_h>
          #define RTE_Compiler_EventRecorder
          #define RTE_Compiler_EventRecorder_DAP
        </RTE_Components_h>
        <files>
          <file category="header" name="Config/EventRecorderConf.h" attr="config" version="1.1.0"/>
          <file category="header" name="Include/EventRecorder.h"/>
          <file category="source" name="Source/EventRecorder.c"/>
          <file category="doc"    name="Doc/EventRecorder/html/index.html"/>
          <file category="other"  name="EventRecorder.scvd"/>
        </files>
      </component>
      <component Cgroup="Event Recorder" Cvariant="Semihosting" Cversion="1.5.1" condition="Cortex-M Device">
        <description>Event Recording and Component Viewer via Debug Access Port (DAP) and Semihosting</description>
        <RTE_Components_h>
          #define RTE_Compiler_EventRecorder
          #define RTE_Compiler_EventRecorder_DAP
          #define RTE_Compiler_EventRecorder_Semihosting
        </RTE_Components_h>
        <files>
          <file category="header" name="Config/EventRecorderConf.h" attr="config" version="1.1.0"/>
          <file category="header" name="Include/EventRecorder.h"/>
          <file category="source" name="Source/EventRecorder.c"/>
          <file category="doc"    name="Doc/EventRecorder/html/index.html"/>
          <file category="other"  name="EventRecorder.scvd"/>
        </files>
      </component>
    </bundle>
  </components>
</package>
