<?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>HC32F120</name>
    <description>HC32F120 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 debug mode and startup_hc32f120.s
        </release>
        <release version="1.0.1" date="2019-11-12">
            update flashloader algorithm
        </release>
        <release version="1.0.0" date="2019-07-02">
            Initial Version
        </release>
    </releases>

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

    <devices>
        <family Dfamily="HC32F120-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 HC32F120 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 'HC32F120'  **************************** -->
            <subFamily DsubFamily="HC32F120">
                <processor Dclock="48000000"/>
                    <!-- *************************  Device 'HC32F120F8TA'  ***************************** -->
                    <device Dname="HC32F120F8TA">
                        <memory    id="IROM1"                   start="0x00000000" size="0x10000" startup="1" default="1"/>
                        <memory    id="IRAM1"                   start="0x20000000" size="0x1000" init   ="0" default="1"/>
                        <algorithm  name="FlashARM/HC32F120.FLM" start="0x00000000"  size="0x10000" default="1"/>
                        <algorithm  name="FlashIAR/FlashHC32F120.flash" start="0x00000000"  size="0x10000" default="0" style="IAR"/>
                        <compile header="Device/Include/HC32F120F8TA.h"/>
                        <!--  <debug svd="SVD/HC32F120F8TA.SFR"/>-->
                        <debug svd="SVD/HC32F120F8TA.svd"/>
                        <environment name="iar">
                          <debugger>
                            <param name="xdsdevicename" value="HC32F120"/>
                          </debugger>
                        </environment>
                    </device>
            
                    <!-- *************************  Device 'HC32F120F6TA'  ***************************** -->
                    <device Dname="HC32F120F6TA">
                        <memory    id="IROM1"                   start="0x00000000" size="0x10000" startup="1" default="1"/>
                        <memory    id="IRAM1"                   start="0x20000000" size="0x1000" init   ="0" default="1"/>
                        <algorithm  name="FlashARM/HC32F120.FLM" start="0x00000000"  size="0x10000" default="1"/>
                        <algorithm  name="FlashIAR/FlashHC32F120.flash" start="0x00000000"  size="0x10000" default="1" style="IAR"/>
                        <compile header="Device/Include/HC32F120F6TA.h"/>
                        <!-- <debug svd="SVD/HC32F120F6TA.SFR"/> -->
                        <debug svd="SVD/HC32F120F6TA.svd"/>
                        <environment name="iar">
                          <debugger>
                            <param name="xdsdevicename" value="HC32F120"/>
                          </debugger>
                        </environment>
                    </device>
                    
                    <!-- *************************  Device 'HC32F120H8TA'  ***************************** -->  
                    <device Dname="HC32F120H8TA">
                        <memory    id="IROM1"                   start="0x00000000" size="0x10000" startup="1" default="1"/>
                        <memory    id="IRAM1"                   start="0x20000000" size="0x1000" init   ="0" default="1"/>
                        <algorithm  name="FlashARM/HC32F120.FLM" start="0x00000000"  size="0x10000" default="1"/>
                        <algorithm  name="FlashIAR/FlashHC32F120.flash" start="0x00000000"  size="0x10000" default="1" style="IAR"/>
                        <compile header="Device/Include/HC32F120H8TA.h"/>
                        <!-- <debug svd="SVD/HC32F120H8TA.SFR"/> -->
                        <debug svd="SVD/HC32F120H8TA.svd"/>
                        <environment name="iar">
                          <debugger>
                            <param name="xdsdevicename" value="HC32F120"/>
                          </debugger>
                        </environment>
                    </device>
                    
                    <!-- *************************  Device 'HC32F120H6TA'  ***************************** -->
                    <device Dname="HC32F120H6TA">
                        <memory    id="IROM1"                   start="0x00000000" size="0x10000" startup="1" default="1"/>
                        <memory    id="IRAM1"                   start="0x20000000" size="0x1000" init   ="0" default="1"/>
                        <algorithm  name="FlashARM/HC32F120.FLM" start="0x00000000"  size="0x10000" default="1"/>
                        <algorithm  name="FlashIAR/FlashHC32F120.flash" start="0x00000000"  size="0x10000" default="1" style="IAR"/>
                        <compile header="Device/Include/HC32F120H6TA.h"/>
                        <!-- <debug svd="SVD/HC32F120H6TA.SFR"/> -->
                        <debug svd="SVD/HC32F120H6TA.svd"/>
                        <environment name="iar">
                          <debugger>
                            <param name="xdsdevicename" value="HC32F120"/>
                          </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="HC32F120">
            <description>HDSC HC32F120 Device</description>
            <require Dvendor="HDSC:145" Dname="HC32F120*"/>
            <require Cclass="Device" Cgroup="Startup"/>
        </condition>
        
        <!-- P/N Conditions -->
        <condition id = "HC32F120F8TA">
            <require Dname="HC32F120F8TA"/>
        </condition>
        <condition id = "HC32F120F6TA">
            <require Dname="HC32F120F6TA"/>
        </condition>
        <condition id = "HC32F120H8TA">
            <require Dname="HC32F120H8TA"/>
        </condition>
        <condition id = "HC32F120H6TA">
            <require Dname="HC32F120H6TA"/>
        </condition>
        <!-- Device + CMSIS Conditions -->
        <condition id="HC32F120 CMSIS">
            <description>HDSC HC32F120 Series devices and CMSIS-CORE</description>
            <require condition="HC32F120"/>
            <require Cclass="CMSIS" Cgroup="CORE"/>
        </condition>
    </conditions>

    <components>
    <!-- Startup HC32F120 -->
        <component Cclass="Device" Cgroup="Startup" Cversion="1.0.0" condition="HC32F120 CMSIS">
            <description>System Startup for HC32F120 series</description>
            <RTE_Components_h>
            <!-- the following content goes into file 'RTE_Components.h' -->
            <!--#define RTE_DEVICE_STARTUP_HC32F120    /* Device Startup for HC32F120 */-->
            </RTE_Components_h>
      
            <files>
                <!-- include folder -->  
                <file category="include" name="Device/Include/"/>
                <file category="header" name="Device/Include/HC32F120.h"/>
                <file category="header" name="Device/Include/HC32F120F8TA.h" condition="HC32F120F8TA" attr="config" version="1.0.0"/>
                <file category="header" name="Device/Include/HC32F120F6TA.h" condition="HC32F120F6TA" attr="config" version="1.0.0"/>
                <file category="header" name="Device/Include/HC32F120H8TA.h" condition="HC32F120H8TA" attr="config" version="1.0.0"/>
                <file category="header" name="Device/Include/HC32F120H6TA.h" condition="HC32F120H6TA" attr="config" version="1.0.0"/>
                <!-- startup file -->
                <file category="source" name="Device/Source/ARM/startup_hc32f120.s" attr="config" version="1.0.0" condition="Compiler ARM"/>
                <file category="source" name="Device/Source/IAR/startup_hc32f120.s" attr="config" version="1.0.0" condition="Compiler IAR"/>
                <!-- system file -->
                <file category="source" name="Device/Source/system_hc32f120.c"  attr="config" version="1.0.0"/>
                <file category="header" name="Device/Include/system_hc32f120.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_HC32F120_LQFP44_080_V10">
            <description>HC32F120 44-Pin Target board</description>
            <mountedDevice    deviceIndex="0" Dvendor="HDSC:145" Dname="HC32F120H8TA"/>
            <compatibleDevice deviceIndex="0" Dvendor="HDSC:145" Dfamily="HC32F120-Series" DsubFamily="HC32F120"/>
            <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_HC32F120_LQFP44_080_V10" 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>
