<?xml version="1.0" encoding="utf-8"?>

<package schemaVersion="1.3" xmlns:xs="http://www.w3.org/2001/XMLSchema-instance" xs:noNamespaceSchemaLocation="PACK.xsd">
    <vendor>HDSC</vendor>
    <name>HC32M120</name>
    <description>HC32M120 ARM Cortex-M0+ Device Family Pack</description>
    <url>https://raw.githubusercontent.com/hdscmcu/pack/master/</url>
    <supportContact>mcu_eco@hdsc.com.cn</supportContact>
    <!-- optional license file -->
    <!-- 
  <license>
  </license>
  -->
    <releases>
        <release version="1.0.2" date="2019-11-18">
            update examples and support contact
        </release>
        <release version="1.0.1" date="2019-11-12">
            update flashloader algorithm
        </release>
        <release version="1.0.0" date="2019-10-08">
            Initial Version
        </release>
    </releases>

    <keywords>
        <!-- keywords for indexing -->
        <keyword>HDSC</keyword>
        <keyword>Device Support</keyword>
        <keyword>HC32M120</keyword>
    </keywords>

    <devices>
        <family Dfamily="HC32M120-Series" Dvendor="HDSC:145">
            <processor Dcore="Cortex-M0+" DcoreVersion="r0p1" Dfpu="0" Dmpu="0" Dendian="Little-endian" Dclock="48000000" />
            <debugconfig type="swd" clock="1000000" />
            <description>
                The HC32M120 device family contains an ARM Cortex-M0+ processor, running up to 48 MHz with a versatile set of on-chip peripherals.
            </description>
            
            <environment name="iar">
                <compile    define="ewarm"/><!-- needed for driver library -->
            </environment>

            <!-- ************************  Subfamily 'HC32M120'  **************************** -->
            <subFamily DsubFamily="HC32M120">
                <processor Dclock="48000000"/>
                    <!-- *************************  Device 'HC32M120F8TA'  ***************************** -->
                    <device Dname="HC32M120J6TB">
                        <memory    id="IROM1"                   start="0x00000000" size="0x8000" startup="1" default="1"/>
                        <memory    id="IRAM1"                   start="0x20000000" size="0x1000" init   ="0" default="1"/>
                        <algorithm  name="FlashARM/HC32M120.FLM" start="0x00000000"  size="0x10000" default="1"/>
                        <algorithm  name="FlashIAR/FlashHC32M120.flash" start="0x00000000"  size="0x10000" default="0" style="IAR"/>
                        <compile header="Device/Include/HC32M120J6TB.h"/>
                        <debug svd="SVD/HC32M120J6TB.SFR"/>
                        <debug svd="SVD/HC32M120J6TB.svd"/>
                        <environment name="iar">
                          <debugger>
                            <param name="xdsdevicename" value="HC32M120"/>
                          </debugger>
                        </environment>
                    </device>
            
                    <!-- *************************  Device 'HC32M120F6TA'  ***************************** -->
                    <device Dname="HC32M120F6TB">
                        <memory    id="IROM1"                   start="0x00000000" size="0x8000" startup="1" default="1"/>
                        <memory    id="IRAM1"                   start="0x20000000" size="0x1000" init   ="0" default="1"/>
                        <algorithm  name="FlashARM/HC32M120.FLM" start="0x00000000"  size="0x10000" default="1"/>
                        <algorithm  name="FlashIAR/FlashHC32M120.flash" start="0x00000000"  size="0x10000" default="1" style="IAR"/>
                        <compile header="Device/Include/HC32M120F6TB.h"/>
                        <debug svd="SVD/HC32M120F6TB.SFR"/>
                        <debug svd="SVD/HC32M120F6TB.svd"/>
                        <environment name="iar">
                          <debugger>
                            <param name="xdsdevicename" value="HC32M120"/>
                          </debugger>
                        </environment>
                    </device>
                    
            </subFamily>
        </family>
    </devices>

    <conditions>
        <!-- Compiler Conditions -->
        <condition id="Compiler ARM">
            <description>Startup assembler file for ARMCC</description>
            <require Tcompiler="ARMCC"/>
        </condition>
        <condition id="Compiler IAR">
            <description>Startup assembler file for IAR</description>
            <require Tcompiler="IAR"/>
        </condition>

        <!-- Device Conditions -->
        <condition id="HC32M120">
            <description>HDSC HC32M120 Device</description>
            <require Dvendor="HDSC:145" Dname="HC32M120*"/>
            <require Cclass="Device" Cgroup="Startup"/>
        </condition>
        
        <!-- P/N Conditions -->
        <condition id = "HC32M120J6TB">
            <require Dname="HC32M120J6TB"/>
        </condition>
        <condition id = "HC32M120F6TB">
            <require Dname="HC32M120F6TB"/>
        </condition>
        <!-- Device + CMSIS Conditions -->
        <condition id="HC32M120 CMSIS">
            <description>HDSC HC32M120 Series devices and CMSIS-CORE</description>
            <require condition="HC32M120"/>
            <require Cclass="CMSIS" Cgroup="CORE"/>
        </condition>
    </conditions>

    <components>
    <!-- Startup HC32M120 -->
        <component Cclass="Device" Cgroup="Startup" Cversion="1.0.0" condition="HC32M120 CMSIS">
            <description>System Startup for HC32M120 series</description>
            <RTE_Components_h>
            <!-- the following content goes into file 'RTE_Components.h' -->
            <!--#define RTE_DEVICE_STARTUP_HC32M120    /* Device Startup for HC32M120 */-->
            </RTE_Components_h>
      
            <files>
                <!-- include folder -->  
                <file category="include" name="Device/Include/"/>
                <file category="header" name="Device/Include/HC32M120.h"/>
                <file category="header" name="Device/Include/HC32M120J6TB.h" condition="HC32M120J6TB" attr="config" version="1.0.0"/>
                <file category="header" name="Device/Include/HC32M120F6TB.h" condition="HC32M120F6TB" attr="config" version="1.0.0"/>
                <!-- startup file -->
                <file category="source" name="Device/Source/ARM/startup_hc32m120.s" attr="config" version="1.0.0" condition="Compiler ARM"/>
                <file category="source" name="Device/Source/IAR/startup_hc32m120.s" attr="config" version="1.0.0" condition="Compiler IAR"/>
                <!-- system file -->
                <file category="source" name="Device/Source/system_hc32m120.c"  attr="config" version="1.0.0"/>
                <file category="header" name="Device/Include/system_hc32m120.h" attr="config" version="1.0.0"/>
                <!-- example file -->
                <file category="source"  name="Examples/EmptyMain/main.c" attr="template" select="Empty C main" version="1.0.0"/>
            </files>
        </component>
    </components>
    
    <boards>
        <board vendor="HDSC" name="STK_HC32M120_LQFP48_050_V11">
            <description>HC32M120 44-Pin Target board</description>
            <mountedDevice    deviceIndex="0" Dvendor="HDSC:145" Dname="HC32M120J6TB"/>
            <compatibleDevice deviceIndex="0" Dvendor="HDSC:145" Dfamily="HC32M120-Series" DsubFamily="HC32M120"/>
            <debugInterface adapter="JTAG/SW" connector="10-pin Cortex Debug Connector (0.05 inch connector)"/>
        </board>
    </boards>


    <examples>
        <example name="EmptyMain" folder="Examples/EmptyMain" doc="Abstract.txt" version="1.0.0">
        <description>This is a basic example providing an empty main body</description>
        <board name="STK_HC32M120_LQFP48_050_V11" vendor="HDSC"/>
        <project>
            <environment name="uv"  load="ARM/EmptyMain.uvprojx"/>
            <environment name="iar" load="IAR/EmptyMain/EmptyMain.ewp" />
        </project>
        <attributes>
            <component Cclass="CMSIS" Cgroup="CORE"/>
            <component Cclass="Device" Cgroup="Startup"/>
            <keyword>Empty</keyword>
            <keyword>Main</keyword>
            <keyword>Getting Started</keyword> 
        </attributes>
        </example>
    </examples>


</package>
