<?xml version="1.0" encoding="UTF-8"?>
<package xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"
         schemaVersion="1.3"
         xs:schemaLocation="http://www.atmel.com/schemas/pack-device-atmel-extension PACK.DEVICE.ATMEL.EXTENSION.xsd"
         xs:noNamespaceSchemaLocation="PACK.xsd">
   <vendor>Microchip</vendor>
   <url>https://packs.download.microchip.com/</url>
   <name>PIC32CM-LS_DFP</name>
   <description>Microchip PIC32CM-LS Series Device Support</description>
   <releases>
      <release version="1.1.162" date="2022-06-03">
		  - Removed 256K flash devices.
		  - Improved memory area naming.
	  </release>
      <release version="1.0.154" date="2022-03-24">
          - Initial release.
      </release>
   </releases>
   <keywords>
      <keyword>Microchip</keyword>
      <keyword>Device Family Package Microchip</keyword>
      <keyword>Device Support</keyword>
      <keyword>PIC32CM-LS</keyword>
   </keywords>
   <devices>
      <family Dfamily="PIC32CM-LS" Dvendor="Microchip:3">
         <flashinfo name="NVM User Row (UROW)"
                    start="0x00804000"
                    blankval="0xFFFFFFFF"
                    pagesize="0x00000020"
                    ptime="100000"
                    etime="1000000">
            <block count="1" size="0x24" arg="0"/>
         </flashinfo>
         <flashinfo name="NVM Boot Configuration Row (BOCOR)"
                    start="0x0080C000"
                    blankval="0xFFFFFFFF"
                    pagesize="0x00000100"
                    ptime="100000"
                    etime="1000000">
            <block count="1" size="0x100" arg="0"/>
         </flashinfo>
         <debugvars configfile="PIC32CM-LS00/keil/debug/PIC32CMLS00.dbgconf" version="1.0">
          // Debugger Setup
          __var CE_Select                = 0x00000002;
          __var CE0_Keyword0             = 0xFFFFFFFF;
          __var CE0_Keyword1             = 0xFFFFFFFF;
          __var CE0_Keyword2             = 0xFFFFFFFF;
          __var CE0_Keyword3             = 0xFFFFFFFF;
          __var CE1_Keyword0             = 0xFFFFFFFF;
          __var CE1_Keyword1             = 0xFFFFFFFF;
          __var CE1_Keyword2             = 0xFFFFFFFF;
          __var CE1_Keyword3             = 0xFFFFFFFF;
          __var CE2_Keyword0             = 0xFFFFFFFF;
          __var CE2_Keyword1             = 0xFFFFFFFF;
          __var CE2_Keyword2             = 0xFFFFFFFF;
          __var CE2_Keyword3             = 0xFFFFFFFF;
          // Device Setup
          __var ProgramDebugAccessLevel  = 0x00000002;
          __var UROW_Program             = 0x00000000;
          __var BOCOR_Program            = 0x00000000;
          //   UROW Configuration
          __var UROW_Config0             = 0xB000433F;
          __var UROW_Config1             = 0x000010BB;
          __var UROW_Config2             = 0x700007FF;
          __var UROW_Config3             = 0x000005FF;
          __var UROW_NONSECA             = 0x00000000;
          __var UROW_NONSECB             = 0x00000000;
          __var UROW_NONSECC             = 0x00000000;
          __var UROW_CDIROFFSET          = 0x00000000;		  
		  
          //   BOCOR Configuration
          __var BOCOR_Config0            = 0xA0000000;
          __var BOCOR_Config1            = 0x00030000;
          __var BOCOR_ROMVersion         = 0x0000003A;
          __var BOCOR_CE0_Keyword0       = 0xFFFFFFFF;
          __var BOCOR_CE0_Keyword1       = 0xFFFFFFFF;
          __var BOCOR_CE0_Keyword2       = 0xFFFFFFFF;
          __var BOCOR_CE0_Keyword3       = 0xFFFFFFFF;
          __var BOCOR_CE1_Keyword0       = 0xFFFFFFFF;
          __var BOCOR_CE1_Keyword1       = 0xFFFFFFFF;
          __var BOCOR_CE1_Keyword2       = 0xFFFFFFFF;
          __var BOCOR_CE1_Keyword3       = 0xFFFFFFFF;
          __var BOCOR_CE2_Keyword0       = 0xFFFFFFFF;
          __var BOCOR_CE2_Keyword1       = 0xFFFFFFFF;
          __var BOCOR_CE2_Keyword2       = 0xFFFFFFFF;
          __var BOCOR_CE2_Keyword3       = 0xFFFFFFFF;
          __var BOCOR_CRC_Keyword0       = 0xFFFFFFFF;
          __var BOCOR_CRC_Keyword1       = 0xFFFFFFFF;
          __var BOCOR_CRC_Keyword2       = 0xFFFFFFFF;
          __var BOCOR_CRC_Keyword3       = 0xFFFFFFFF;
          __var BOCOR_BOOT_Keyword0      = 0xFFFFFFFF;
          __var BOCOR_BOOT_Keyword1      = 0xFFFFFFFF;
          __var BOCOR_BOOT_Keyword2      = 0xFFFFFFFF;
          __var BOCOR_BOOT_Keyword3      = 0xFFFFFFFF;
          __var BOCOR_BOOT_Keyword4      = 0xFFFFFFFF;
          __var BOCOR_BOOT_Keyword5      = 0xFFFFFFFF;
          __var BOCOR_BOOT_Keyword6      = 0xFFFFFFFF;
          __var BOCOR_BOOT_Keyword7      = 0xFFFFFFFF;
          __var BOCOR_UDS_Keyword0       = 0xFFFFFFFF;
          __var BOCOR_UDS_Keyword1       = 0xFFFFFFFF;
          __var BOCOR_UDS_Keyword2       = 0xFFFFFFFF;
          __var BOCOR_UDS_Keyword3       = 0xFFFFFFFF;
          __var BOCOR_UDS_Keyword4       = 0xFFFFFFFF;
          __var BOCOR_UDS_Keyword5       = 0xFFFFFFFF;
          __var BOCOR_UDS_Keyword6       = 0xFFFFFFFF;
          __var BOCOR_UDS_Keyword7       = 0xFFFFFFFF;
          __var BOCOR_IOPROTKEY_Keyword0 = 0xFFFFFFFF;
          __var BOCOR_IOPROTKEY_Keyword1 = 0xFFFFFFFF;
          __var BOCOR_IOPROTKEY_Keyword2 = 0xFFFFFFFF;
          __var BOCOR_IOPROTKEY_Keyword3 = 0xFFFFFFFF;
          __var BOCOR_IOPROTKEY_Keyword4 = 0xFFFFFFFF;
          __var BOCOR_IOPROTKEY_Keyword5 = 0xFFFFFFFF;
          __var BOCOR_IOPROTKEY_Keyword6 = 0xFFFFFFFF;
          __var BOCOR_IOPROTKEY_Keyword7 = 0xFFFFFFFF;
        </debugvars>
         <sequences><!-- added by ARM -->
            <sequence name="ResetHardwareAssert">
               <block>
                __var nReset = 0x80;
              
                // De-assert nRESET line to activate the hardware reset
                DAP_SWJ_Pins(0, nReset, 0);
            </block>
               <control if="__connection &amp; (1 &lt;&lt; 16)"
                        info="Connection under reset - Cold Plugin - otherwise DP is not accessible">
                  <block>
                Sequence("ColdPlugin");
              </block>
               </control>
            </sequence>
            <sequence name="ResetHardwareDeassertDefault">
               <block>
              __var nReset      = 0x80;
              __var SWCLK_TCK   = 0x01;
              __var canReadPins = 0;

              // Assert nRESET line and check if nRESET is readable
              canReadPins = (DAP_SWJ_Pins(nReset, nReset, 0) != 0xFFFFFFFF);
            </block>
               <!-- Wait max. 1s for nRESET to recover from reset if readable-->
               <control if="canReadPins"
                        while="(DAP_SWJ_Pins(nReset, nReset, 0) &amp; nReset) == 0"
                        timeout="1000000"/>
               <!-- Wait 100ms for recovery if nRESET not readable -->
               <control if="!canReadPins">
                  <block>
                DAP_Delay(100000);
              </block>
               </control>
            </sequence>
            <sequence name="ResetHardwareDeassert">
               <block>
              __var SWCLK_TCK   = 0x01;
              
              DAP_SWJ_Pins(SWCLK_TCK, SWCLK_TCK, 0);  // Make sure that SWCLK/TCK is HIGH for hot-plugin
              
              Sequence("ResetHardwareDeassertDefault");
            </block>
            </sequence>
            <sequence name="BootDelay">
               <block>
              // Typical Boot Timings for PIC32CMLS
              // - BOOTOPT=0         : 2.30 ms
              // - BOOTOPT=1, BS=0x40:  207 ms
              // - BOOTOPT=1, BS=0x80:  409 ms
              // - BOOTOPT=2, BS=0x40:  209 ms
              // - BOOTOPT=2, BS=0x80:  411 ms
              DAP_Delay(420000);                                               // Time for bootloader : Longest period + a few extra ms
                                                                               // Possible Enhancement: Read out Boot options to optimize
            </block>
            </sequence>
            <!-- To be callable in uVision (current limitation) -->
            <sequence name="DebugPortSetup">
               <block>
              __var isSWJ    = ((__protocol &amp; 0x00010000) != 0);
              __var protType = __protocol &amp; 0x0000FFFF;
            </block>
               <!-- JTAG Protocol -->
               <control if="protType == 1">
                  <control if="isSWJ">
                     <block atomic="1">
                  // Ensure current debug interface is in reset state
                  DAP_SWJ_Sequence(51, 0x0007FFFFFFFFFFFF);
                  
                  // Execute SWJ-DP Switch Sequence SWD to JTAG (0xE73C)
                  // Change if SWJ-DP uses deprecated switch code (0xAEAE)
                  DAP_SWJ_Sequence(16, 0xE73C);
                  
                  // Ensure JTAG interface is reset
                  DAP_SWJ_Sequence(6, 0x3F);
                </block>
                  </control>
                  <block atomic="1">
                // JTAG "Soft" Reset
                DAP_JTAG_Sequence(6, 1, 0x3F);
                DAP_JTAG_Sequence(1, 0, 0x01);
              </block>
               </control>
               <!-- SWD Protocol -->
               <control if="protType == 2">
                  <control if="isSWJ">
                     <block atomic="1">
                  // Ensure current debug interface is in reset state
                  DAP_SWJ_Sequence(51, 0x0007FFFFFFFFFFFF);
                  
                  // Execute SWJ-DP Switch Sequence JTAG to SWD (0xE79E)
                  // Change if SWJ-DP uses deprecated switch code (0xEDB6)
                  DAP_SWJ_Sequence(16, 0xE79E);
                  
                  // Enter SWD Line Reset State
                  DAP_SWJ_Sequence(51, 0x0007FFFFFFFFFFFF);  // &gt; 50 cycles SWDIO/TMS High
                  DAP_SWJ_Sequence(3,  0x00);                // At least 2 idle cycles (SWDIO/TMS Low)
                </block>
                  </control>
                  <control if="!isSWJ">
                     <block atomic="1">
                  // Enter SWD Line Reset State
                  DAP_SWJ_Sequence(51, 0x0007FFFFFFFFFFFF);  // &gt; 50 cycles SWDIO/TMS High
                  DAP_SWJ_Sequence(3,  0x00);                // At least 2 idle cycles (SWDIO/TMS Low)
                </block>
                  </control>
                  <block>
                // Read DPIDR to enable SWD interface (SW-DPv1 and SW-DPv2)
                ReadDP(0x0);
              </block>
               </control>
            </sequence>
            <!-- To be callable in uVision (current limitation) -->
            <sequence name="DebugPortStart">
               <block>
              __var SW_DP_ABORT  = 0x0;
              __var DP_CTRL_STAT = 0x4;
              __var DP_SELECT    = 0x8;
              __var powered_down = 0;
              
              // Switch to DP Register Bank 0
              WriteDP(DP_SELECT, 0x00000000);
            
              // Read DP CTRL/STAT Register and check if CSYSPWRUPACK and CDBGPWRUPACK bits are set
              powered_down = ((ReadDP(DP_CTRL_STAT) &amp; 0xA0000000) != 0xA0000000);
            </block>
               <control if="powered_down">
                  <block>
                // Request Debug/System Power-Up
                WriteDP(DP_CTRL_STAT, 0x50000000);
              </block>
                  <!-- Wait for Power-Up Request to be acknowledged -->
                  <control while="(ReadDP(DP_CTRL_STAT) &amp; 0xA0000000) != 0xA0000000"
                           timeout="1000000"/>
                  <!-- JTAG Specific Part of sequence -->
                  <control if="(__protocol &amp; 0xFFFF) == 1">
                     <block>
                  // Init AP Transfer Mode, Transaction Counter, and Lane Mask (Normal Transfer Mode, Include all Byte Lanes)
                  // Additionally clear STICKYORUN, STICKYCMP, and STICKYERR bits by writing '1'
                  WriteDP(DP_CTRL_STAT, 0x50000F32);
                </block>
                  </control>
                  <!-- SWD Specific Part of sequence -->
                  <control if="(__protocol &amp; 0xFFFF) == 2">
                     <block>
                  // Init AP Transfer Mode, Transaction Counter, and Lane Mask (Normal Transfer Mode, Include all Byte Lanes)
                  WriteDP(DP_CTRL_STAT, 0x50000F00);
                  
                  // Clear WDATAERR, STICKYORUN, STICKYCMP, and STICKYERR bits of CTRL/STAT Register by write to ABORT register
                  WriteDP(SW_DP_ABORT, 0x0000001E);
                </block>
                  </control>
               </control>
            </sequence>
            <sequence name="ColdPlugin">
               <block>
              DAP_SWJ_Pins(0x00, 0x01, 0);  // Pull down SWCLK/TCK for cold-plugin
              Sequence("ResetHardwareDeassertDefault");
            </block>
            </sequence>
            <!-- Check Boot ROM Status and Flag Errors-->
            <sequence name="Bootrom_CheckError">
               <block>
              __var DSU_BCC1_Addr = 0x41002124;  // Access DSU External Address Range (for all DALs)
              __var DSU_BCC1_Val  = 0;
              __var msgType       = 0;

              DSU_BCC1_Val = Read32(DSU_BCC1_Addr);
            </block>
               <control if="(DSU_BCC1_Val &gt;= 0xEC000010) &amp;&amp; (DSU_BCC1_Val &lt;= 0xEC000015)"
                        info="error?">
                  <block>
                msgType = 1;
              </block>
               </control>
               <control if="(DSU_BCC1_Val &gt;= 0xEC000022) &amp;&amp; (DSU_BCC1_Val &lt;= 0xEC000023)"
                        info="error?">
                  <block>
                msgType = 2;
              </block>
               </control>
               <control if="(DSU_BCC1_Val == 0xEC000025)" info="error?">
                  <block>
                msgType = 1;
              </block>
               </control>
               <control if="(DSU_BCC1_Val &gt;= 0xEC000027) &amp;&amp; (DSU_BCC1_Val &lt;= 0xEC000036)"
                        info="error?">
                  <block>
                msgType = 2;
              </block>
               </control>
               <control if="(DSU_BCC1_Val &gt;= 0xEC000040) &amp;&amp; (DSU_BCC1_Val &lt;= 0xEC0000F0)"
                        info="error?">
                  <block>
                msgType = 1;
              </block>
               </control>
               <control if="msgType == 2">
                  <block>
                Sequence("ResetPulse");                 // Bring device (and boot ROM) back into defined state
              </block>
               </control>
               <control if="msgType &gt; 0">
                  <block>
                Message(msgType, "Boot ROM error - 0x%08X", DSU_BCC1_Val);
              </block>
               </control>
            </sequence>
            <sequence name="CheckForChecksumError">
               <block>
              __var DSU_BCC1_Addr      = 0x41002124;    // Access DSU External Address Range (for all DALs)
              __var DSU_BCC1_Val       = 0;
              __var ChecksumErr        = 0;
              
              DSU_BCC1_Val = Read32(DSU_BCC1_Addr);
              ChecksumErr = (DSU_BCC1_Val == 0xEC000011) || (DSU_BCC1_Val == 0xEC000013) || (DSU_BCC1_Val == 0xEC000041) || (DSU_BCC1_Val == 0xEC000041);
            </block>
               <control if="ChecksumErr">
                  <block>
                Query(0, "Checksum/hash error!\nErase and reprogram chip under reset.", 1);
                Message(2, "Checksum/hash error (0x%08X)! Erase and reprogram chip under reset.", DSU_BCC1_Val);
              </block>
               </control>
            </sequence>
            <!-- Establish Connection to Boot ROM -->
            <sequence name="Bootrom_Connect">
               <block>
              __var DSU_Ctrl_Stat_Addr = 0x41002100;    // Access DSU External Address Range (for all DALs)
              
              Write32(DSU_Ctrl_Stat_Addr, 0x00001C00);  // Clear Error Flags in DSU.STATA (PERR, FAIL, BERR)
              Write32(DSU_Ctrl_Stat_Addr, 0x00000200);  // Clear CPU Reset Extension in DSU.STATA
              DAP_Delay(5000);                          // Wait 5 ms after CPU Release
              Sequence("Bootrom_CheckError");           // Check Boot ROM Status
            </block>
            </sequence>
            <!-- Enter Interactive Boot ROM Mode -->
            <sequence name="Bootrom_CMD_INIT">
               <block>
              __var DSU_BCC0_Addr = 0x41002120;         // Access DSU External Address Range (for all DALs)
              
              Write32(DSU_BCC0_Addr, 0x44424755);       // Write CMD_INIT
              Sequence("Bootrom_CheckError");
            </block>
            </sequence>
            <!-- Execute Full Chip Erase -->
            <sequence name="Bootrom_CMD_CEx" info="Selected Chip Erase">
               <block>
              __var DSU_Ctrl_Stat_Addr = 0x41002100;    // Access DSU External Address Range (for all DALs)
              __var DSU_BCC0_Addr      = 0x41002120;    // Access DSU External Address Range (for all DALs)
              __var DSU_BCC1_Addr      = 0x41002124;    // Access DSU External Address Range (for all DALs)
              __var DSU_BCC1_Val       = 0;
              __var CE_Keyword0        = CE2_Keyword0;  // CE2_Keyword0 by default
              __var CE_Keyword1        = CE2_Keyword1;  // CE2_Keyword1 by default
              __var CE_Keyword2        = CE2_Keyword2;  // CE2_Keyword2 by default
              __var CE_Keyword3        = CE2_Keyword3;  // CE2_Keyword3 by default
              __var CE_CMD             = 0x444247E2;    // CMD_CE2 by default
              
              Message(0, "Execute Chip Erase (CE%u)...", CE_Select);
            </block>
               <control if="CE_Select == 0" info="Set CE0 Parameters">
                  <block>
                CE_CMD      = 0x444247E0;         // Use CE0
                CE_Keyword0 = CE0_Keyword0;       // Use CE0_Keyword0
                CE_Keyword1 = CE0_Keyword1;       // Use CE0_Keyword1
                CE_Keyword2 = CE0_Keyword2;       // Use CE0_Keyword2
                CE_Keyword3 = CE0_Keyword3;       // Use CE0_Keyword3
              </block>
               </control>
               <control if="CE_Select == 1" info="Set CE1 Parameters">
                  <block>
                CE_CMD      = 0x444247E1;         // Use CE1
                CE_Keyword0 = CE1_Keyword0;       // Use CE1_Keyword0
                CE_Keyword1 = CE1_Keyword1;       // Use CE1_Keyword1
                CE_Keyword2 = CE1_Keyword2;       // Use CE1_Keyword2
                CE_Keyword3 = CE1_Keyword3;       // Use CE1_Keyword3
              </block>
               </control>
               <block>
              Write32(DSU_BCC0_Addr, CE_CMD);           // Write CMD_CE1
              Sequence("Bootrom_CheckError");
            </block>
               <block>
              Write32(DSU_BCC0_Addr, CE_Keyword0);      // Write CE_Keyword0
            </block>
               <control while="(Read32(DSU_Ctrl_Stat_Addr) &amp; 0x00400000)"
                        timeout="1000000"
                        info="Poll DSU STATUSB.BCCD0 until cleared"/>
               <block>
              Write32(DSU_BCC0_Addr, CE_Keyword1);      // Write CE_Keyword1
            </block>
               <control while="(Read32(DSU_Ctrl_Stat_Addr) &amp; 0x00400000)"
                        timeout="1000000"
                        info="Poll DSU STATUSB.BCCD0 until cleared"/>
               <block>
              Write32(DSU_BCC0_Addr, CE_Keyword2);      // Write CE_Keyword2
            </block>
               <control while="(Read32(DSU_Ctrl_Stat_Addr) &amp; 0x00400000)"
                        timeout="1000000"
                        info="Poll DSU STATUSB.BCCD0 until cleared"/>
               <block>
              Write32(DSU_BCC0_Addr, CE_Keyword3);      // Write CE_Keyword3
            </block>
               <control while="(Read32(DSU_Ctrl_Stat_Addr) &amp; 0x00400000)"
                        timeout="1000000"
                        info="Poll DSU STATUSB.BCCD0 until cleared"/>
               <control while="(DSU_BCC1_Val = Read32(DSU_BCC1_Addr)) != 0xEC000021"
                        timeout="3000000"
                        info="Wait for SIG_CMD_SUCCESS">
                  <block>
                Sequence("Bootrom_CheckError");
              </block>
               </control>
            </sequence>
            <!-- Exit Boot ROM to User Application (not possible after CMD_INIT) -->
            <sequence name="Bootrom_CMD_EXIT_ToApp">
               <block>
              __var DSU_Ctrl_Stat_Addr = 0x41002100;    // Access DSU External Address Range (for all DALs)
              __var DSU_BCC0_Addr      = 0x41002120;    // Access DSU External Address Range (for all DALs)
              
              Write32(DSU_Ctrl_Stat_Addr, 0x00002000);  // Boot Rom Phase Extension in DSU.STATA to return to app after CMD_EXIT
              Write32(DSU_BCC0_Addr, 0x444247AA);       // Write CMD_EXIT
              Sequence("Bootrom_CheckError");
            </block>
            </sequence>
            <!-- Exit Boot ROM to CPU Park Mode (allows access to NVMCTRL while CPU still halted, not possible after CMD_INIT) -->
            <sequence name="Bootrom_CMD_EXIT_ToPark">
               <block>
              __var DSU_Ctrl_Stat_Addr = 0x41002100;    // Access DSU External Address Range (for all DALs)
              __var DSU_BCC0_Addr      = 0x41002120;    // Access DSU External Address Range (for all DALs)
              __var DSU_BCC1_Addr      = 0x41002124;    // Access DSU External Address Range (for all DALs)
              __var DSU_BCC1_Val       = 0;
              
              Write32(DSU_BCC0_Addr, 0x444247AA);       // Write CMD_EXIT
              Sequence("Bootrom_CheckError");
            </block>
            </sequence>
            <!-- Execute System Reset via Boot ROM -->
            <sequence name="Bootrom_CMD_RESET" info="System Reset">
               <block>
              __var DSU_Ctrl_Stat_Addr = 0x41002100;    // Access DSU External Address Range (for all DALs)
              __var DSU_BCC0_Addr      = 0x41002120;    // Access DSU External Address Range (for all DALs)
              
              Message(0, "Execute Bootrom Reset...");
              
              __errorcontrol = 1;                       // Ignore errors
              Write32(DSU_BCC0_Addr, 0x44424752);       // Write CMD_RESET
              __errorcontrol = 0;                       // Check errors
              
              Sequence("DebugPortSetup");
              Sequence("DebugPortStart");
            </block>
            </sequence>
            <!-- Program Debug Access Level 1 -->
            <sequence name="NVMCTRL_SetDAL1">
               <block>
              __var DSU_Ctrl_Stat_Addr   = 0x41002100;  // Access DSU External Address Range (for all DALs)
              __var PAC_WRCTRL_Addr      = 0x40000000;
              __var NVMCTRL_CTRLA_Addr   = 0x41004000;
              __var DebugAccessLevel     = 0;
              
              Message(0, "Set Debug Access Level 1...");
              
              DebugAccessLevel = (Read32(DSU_Ctrl_Stat_Addr) &amp; 0x00030000) &gt;&gt; 16;  // Read Debug Access Level
            </block>
               <control if="DebugAccessLevel == 2" info="Secure Debug Access?">
                  <block>
                PAC_WRCTRL_Addr    += 0x0200;           // Use secure alias
                NVMCTRL_CTRLA_Addr += 0x1000;           // Use secure alias
              </block>
               </control>
               <block>
              Write32(PAC_WRCTRL_Addr, (( 1 &lt;&lt; 16) | (34 &lt;&lt;  0)));  // Disable NVMCTRL Write Protection
              Write32(NVMCTRL_CTRLA_Addr, 0xA54C);                              // Set Debug Access Level 1 (Non-Volatile until next Chip Erase or Set DAL 0)
            </block>
            </sequence>
            <!-- Program Debug Access Level 0 -->
            <sequence name="NVMCTRL_SetDAL0">
               <block>
              __var DSU_Ctrl_Stat_Addr   = 0x41002100;  // Access DSU External Address Range (for all DALs)
              __var PAC_WRCTRL_Addr      = 0x40000000;
              __var NVMCTRL_CTRLA_Addr   = 0x41004000;
              __var DebugAccessLevel     = 0;
              
              Message(0, "Set Debug Access Level 0...");
              
              DebugAccessLevel = (Read32(DSU_Ctrl_Stat_Addr) &amp; 0x00030000) &gt;&gt; 16;  // Read Debug Access Level
            </block>
               <control if="DebugAccessLevel == 2" info="Secure Debug Access?">
                  <block>
                PAC_WRCTRL_Addr    += 0x0200;           // Use secure alias
                NVMCTRL_CTRLA_Addr += 0x1000;           // Use secure alias
              </block>
               </control>
               <block>
              Write32(PAC_WRCTRL_Addr, (( 1 &lt;&lt; 16) | (34 &lt;&lt;  0)));  // Disable NVMCTRL Write Protection
              Write32(NVMCTRL_CTRLA_Addr, 0xA54B);                              // Set Debug Access Level 0 (Non-Volatile until next Chip Erase)
            </block>
            </sequence>
            <!-- Force CPU into Debug Halt - To be reviewed -->
            <sequence name="ForceCoreHalt">
               <block>
              __var DSU_Ctrl_Stat_Addr = 0x41002100;    // Access DSU External Address Range (for all DALs)
              __var DHCSR_Addr         = 0xE000EDF0;
              __var DCRSR_Addr         = 0xE000EDF4;
              __var DCRDR_Addr         = 0xE000EDF8;
              __var DebugAccessLevel   = 0;
              
              DAP_Delay(5000);                          // Workaround for MDK issue to be fixed
            </block>
               <!-- wait until core has stopped -->
               <control while="(Read32(DHCSR_Addr) &amp; 0x00020000) == 0" timeout="100000"/>
               <block info="Halt core">
              Write32(DHCSR_Addr,0xA05F0003);                                  // halt core in any case
            </block>
               <block info="Update xPSR register">
              Write32(DCRDR_Addr, 0x01000000);
              Write32(DCRSR_Addr, 0x00010010);                                 // update xPSR register (TODO: why?)
            </block>
               <control while="(Read32(DHCSR_Addr) &amp; 0x00010000) == 0" timeout="100000"/>
            </sequence>
            <!-- Unlock Device -->
            <sequence name="DebugDeviceUnlock">
               <block>
              __var DSU_Ctrl_Stat_Addr = 0x41002100;    // Access DSU External Address Range (for all DALs)
              __var DSU_Ctrl_Stat_Val  = 0;
              __var DebugAccessLevel   = 0;
              __var QueryResult        = 0;

              DSU_Ctrl_Stat_Val = Read32(DSU_Ctrl_Stat_Addr);
            </block>
               <!-- "under reset" bit not in current uVision build -->
               <control if="DSU_Ctrl_Stat_Val &amp; 0x00000200"
                        info="STATUSB.CRSTEXT active - Cold Plugin">
                  <control if="(__connection &amp; 0xFF) != 2"><!-- Release to App for normal debug connection -->
                     <block>
                  Sequence("CheckForChecksumError");
                  Sequence("Bootrom_Connect");
                  Sequence("Bootrom_CMD_EXIT_ToApp");
                  Sequence("BootDelay");
                  Sequence("ForceCoreHalt");
                </block>
                  </control>
                  <control if="(__connection &amp; 0xFF) == 2"><!-- Selected Chip Erase for Flash Download connection under reset -->
                     <block>
                  Sequence("Bootrom_Connect");
                  Sequence("Bootrom_CMD_INIT");
                  Sequence("Bootrom_CMD_CEx");
                  Sequence("ResetHardware");
                  Sequence("ForceCoreHalt");
                </block>
                  </control>
               </control>
            </sequence>
            <!-- SYSRESETREQ -->
            <sequence name="ResetSystem" info="SYSRESETREQ">
               <block>
              __var AIRCR_Addr = 0xE000ED0C;
              __var DHCSR_Addr = 0xE000EDF0;

              __errorcontrol = 1;                                              // ignore errors
              Write32(AIRCR_Addr, 0x05FA0004);                                 // Execute SYSRESETREQ via AIRCR
              __errorcontrol = 0;                                              // check errors

              Sequence("BootDelay");
            </block>
               <!-- Reset Recovery: Wait for DHCSR.S_RESET_ST bit to clear on read -->
               <control while="(Read32(DHCSR_Addr) &amp; 0x02000000) != 0" timeout="100000"/>
               <block>
              Sequence("ForceCoreHalt");                                       // halt the core
            </block>
            </sequence>
            <!-- VECTRESET - Disabled -->
            <sequence name="ResetProcessor" disable="true" info="VECTRESET"><!-- ResetProcessor not available for CM23 --></sequence>
            <sequence name="ResetPulse">
               <block>
              __var nReset      = 0x80;
              __var SWCLK_TCK   = 0x01;
              __var canReadPins = 0;

              canReadPins = (DAP_SWJ_Pins(0x00, nReset, 0) != 0xFFFFFFFF);     // Deassert nRESET line
            </block>
               <control while="(DAP_SWJ_Pins(0x00, nReset, 0) &amp; nReset) == nReset"
                        timeout="1000000"/>
               <!-- Keep reset active for 50 ms -->
               <block>
              DAP_Delay(50000);
            </block>
               <block>
              DAP_SWJ_Pins(SWCLK_TCK, SWCLK_TCK, 0);  // Make sure that SWCLK/TCK is HIGH for PIC32CMLS hot-plugin
            </block>
               <control if="canReadPins"><!-- Assert nRESET line and wait max. 1s for recovery -->
                  <control while="(DAP_SWJ_Pins(nReset, nReset, 0) &amp; nReset) == 0"
                           timeout="1000000"/>
               </control>
               <control if="!canReadPins">
                  <block>
                DAP_SWJ_Pins(nReset, nReset, 0);                               // Assert nRESET line
                DAP_Delay(100000);                                             // Wait 100ms for recovery if nRESET not readable
              </block>
               </control>
            </sequence>
            <!-- HW Reset -->
            <sequence name="ResetHardware" info="HW RESET">
               <block>
              Sequence("ResetPulse");
              Sequence("BootDelay");
              Sequence("DebugPortSetup");
              Sequence("DebugPortStart");
            </block>
            </sequence>
            <!-- Stop After Bootloader -->
            <sequence name="ResetCatchSet">
               <block>
              __var DSU_Ctrl_Stat_Addr = 0x41002100;  // Access DSU External Address Range (for all DALs)
              __var DHCSR_Addr         = 0xE000EDF0;
              __var DEMCR_Addr         = 0xE000EDFC;
              __var FP_CTRL_Addr       = 0xE0002000;
              __var FP_COMP0_Addr      = 0xE0002008;
              __var FPB_KEY            = 0x00000002;
              __var FPB_ENABLE         = 0x00000001;
              __var DWT_COMP0_Addr     = 0xE0001020;
              __var DWT_FUNCTION0_Addr = 0xE0001028;
              __var DWT_COMP1_Addr     = 0xE0001030;
              __var DWT_FUNCTION1_Addr = 0xE0001038;
              __var DebugAccessLevel   = 0;
              __var value              = 0;
              __var resetVect          = 0x00000000;
              
              DebugAccessLevel = (Read32(DSU_Ctrl_Stat_Addr) &amp; 0x00030000) &gt;&gt; 16;  // Read Debug Access Level
            </block>
               <control if="DebugAccessLevel == 2" info="Use Secure Reset Vector">
                  <block>
                value = Read32(DEMCR_Addr);
                Write32(DEMCR_Addr, (value &amp; ~0x00000001));                  // Disable Reset Vector Catch


                resetVect = Read32(0x00000004);                                  // Read Reset Vector
                Write32(FP_COMP0_Addr, (resetVect | FPB_ENABLE));                // Set BP0 to Reset Vector (ARMv8M)
                Write32(FP_CTRL_Addr,  (FPB_KEY   | FPB_ENABLE));                // Enable FPB
              </block>
               </control>
               <control if="DebugAccessLevel == 1"
                        info="Use Instruction Address Range Match for DAL1">
                  <block>
                Write32(DWT_FUNCTION0_Addr, 0x00000412);                         // DWT_FUNCTION0: DATAVSIZE - 2, ACTION - Debug Event, MATCH - Instrucion Address
                Write32(DWT_COMP0_Addr,     0x00000000);                         // DWT_COMP0: Start of available code flash
                Write32(DWT_COMP1_Addr,     0x00400000);                         // DWT_COMP1: Start of available data flash
                Write32(DWT_FUNCTION1_Addr, 0x00000403);                         // DWT_FUNCTION1: DATAVSIZE - 2, ACTION - Trigger only, MATCH - Instrucion Address Limit
                
                value      = Read32(DEMCR_Addr);                                 // Read DEMCR
                value &amp;= ~0x00000001;                                        // Disable Reset Vector Catch
                value     |= 0x01000000;                                         // Ensure TRCENA is set
                Write32(DEMCR_Addr, value);                                      // Write back DEMCR
              </block>
               </control>
               <block>
              Read32(DHCSR_Addr);                                                // Read DHCSR to clear potentially set DHCSR.S_RESET_ST bit
            </block>
               <!-- Do nothing for DebugAccessLevel == 0 -->
            </sequence>
            <sequence name="ResetCatchClear">
               <block>
              __var DSU_Ctrl_Stat_Addr = 0x41002100;  // Access DSU External Address Range (for all DALs)
              __var FP_CTRL_Addr       = 0xE0002000;
              __var FP_COMP0_Addr      = 0xE0002008;
              __var FPB_KEY            = 0x00000002;
              __var DWT_COMP0_Addr     = 0xE0001020;
              __var DWT_FUNCTION0_Addr = 0xE0001028;
              __var DWT_COMP1_Addr     = 0xE0001030;
              __var DWT_FUNCTION1_Addr = 0xE0001038;
              __var DebugAccessLevel   = 0;

              DebugAccessLevel = (Read32(DSU_Ctrl_Stat_Addr) &amp; 0x00030000) &gt;&gt; 16;  // Read Debug Access Level
            </block>
               <control if="DebugAccessLevel == 2" info="Clear used FPB resources">
                  <block>
                Write32(FP_COMP0_Addr, 0x00000000);              // Clear BP0
                Write32(FP_CTRL_Addr,  FPB_KEY   );              // Disable FPB
              </block>
               </control>
               <control if="DebugAccessLevel == 1" info="Clear used DWT resources">
                  <block>
                Write32(DWT_FUNCTION0_Addr, 0x00000000);         // Clear DWT_FUNCTION0
                Write32(DWT_FUNCTION1_Addr, 0x00000000);         // Clear DWT_FUNCTION1
                Write32(DWT_COMP0_Addr,     0x00000000);         // Clear DWT_COMP0
                Write32(DWT_COMP1_Addr,     0x00000000);         // Clear DWT_COMP1
              </block>
               </control>
            </sequence>
            <sequence name="ClearFlashPageBuffer">
               <block>
              __var NVMCTRL_Base_Addr    = 0x41004000;
              __var DSU_Ctrl_Stat_Addr   = 0x41002100;           // Access DSU External Address Range (for DALs)
              __var PageBufferDirty      = 0;
              __var DebugAccessLevel     = 0;
              
              DebugAccessLevel = (Read32(DSU_Ctrl_Stat_Addr) &amp; 0x00030000) &gt;&gt; 16;  // Read Debug Access Level
            </block>
               <control if="DebugAccessLevel == 2" info="Secure Debug Access?">
                  <block>
                NVMCTRL_Base_Addr += 0x1000;                     // Use secure alias
              </block>
               </control>
               <block>
              PageBufferDirty = Read8(NVMCTRL_Base_Addr + 0x18) &amp; 0x02;           // NVMCTRL.STATUS: Check if LOAD bit set (page buffer not empty)
            </block>
               <control if="PageBufferDirty"
                        info="Only clear page buffer if necessary. PBC commands can otherwise fail.">
                  <block info="Clear page buffer command">
                Write8 (NVMCTRL_Base_Addr + 0x14, 0x1F);                              // NVMCTRL.INTFLAG: Clear all errors and DONE flag
                Write16(NVMCTRL_Base_Addr, ((0xA5 &lt;&lt; 8) | (0x44 &lt;&lt; 0)));  // NVMCTRL.CTRLA:   Clear page buffer command
              </block>
                  <control while="(Read16(NVMCTRL_Base_Addr + 0x18) &amp; 0x06) != (1 &lt;&lt; 2)"
                           timeout="100000"
                           info="NVMCTRL.STATUS: READY and not LOAD (page buffer cleared)"/>
                  <control if="(Read8(NVMCTRL_Base_Addr + 0x14) &amp; 0x1F) != 0x01"
                           info="NVMCTRL.INTFLAG: Check for errors and command done">
                     <block>
                  __Result = -1;                                                      // Clear page buffer finished with errors
                </block>
                  </control>
               </control>
            </sequence>
            <sequence name="PrepareFlashOperation">
               <block info="initalize local variables">
              __var PAC_WRCTRL_Addr      = 0x40000000;
              __var NVMCTRL_Base_Addr    = 0x41004000;
              __var DSU_Ctrl_Stat_Addr   = 0x41002100;  // Access DSU External Address Range (for all DALs)
              __var DebugAccessLevel     = 0;
              
              __Result = 0;                             // Initialize __Result to OK
              DebugAccessLevel = (Read32(DSU_Ctrl_Stat_Addr) &amp; 0x00030000) &gt;&gt; 16;  // Read Debug Access Level
            </block>
               <control if="DebugAccessLevel == 2" info="Secure Debug Access?">
                  <block>
                PAC_WRCTRL_Addr   += 0x0200;            // Use secure alias
                NVMCTRL_Base_Addr += 0x1000;            // Use secure alias
              </block>
               </control>
               <block info="configure Flash access">
              Write32(PAC_WRCTRL_Addr,          (( 1 &lt;&lt; 16) | (34 &lt;&lt;  0)));  // PAC.WRCTRL: disable NVMCTRL Write Protection via Secure alias
              Write32(NVMCTRL_Base_Addr + 0x04, (( 1 &lt;&lt; 18) | (15 &lt;&lt;  1)));  // NVMCTRL.CTRLB: cache disabled, read wait states = 15
              Write8 (NVMCTRL_Base_Addr + 0x08, (( 1 &lt;&lt;  0)                   ));  // NVMCTRL.CTRLC: manual write
            </block>
            </sequence>
            <!-- CMSIS Flash Algorithm - FlashInit -->
            <sequence name="FlashInit">
               <block>
              Sequence("PrepareFlashOperation");
            </block>
               <control if="__FlashOp == 1"><!-- special initialization code for erase -->
                  <block/>
               </control>
               <control if="__FlashOp == 2"><!-- special initialization code for program -->
                  <block>
                Sequence("ClearFlashPageBuffer");
              </block>
               </control>
            </sequence>
            <!-- CMSIS Flash Algorithm - FlashUninit -->
            <sequence name="FlashUninit">
               <block info="initalize result to OK">
              __Result = 0;
            </block>
            </sequence>
            <!-- CMSIS Flash Algorithm - FlashEraseChip - Disabled -->
            <sequence name="FlashEraseChip" disable="0"><!-- FlashEraseChip not implemented --></sequence>
            <sequence name="EraseUROW">
               <block info="initalize local variables">
              __var NVMCTRL_Base_Addr    = 0x41004000;
              __var DSU_Ctrl_Stat_Addr   = 0x41002100;              // Access DSU External Address Range (for DALs)
              __var IndirectAddressing   = 0;
              __var DebugAccessLevel     = 0;
              __var SectorAddr           = 0x00804000;
              
              Message(0, "Erase UROW...");

              __Result = 0;                                         // Initialize __Result to OK
              
              DebugAccessLevel   = (Read32(DSU_Ctrl_Stat_Addr) &amp; 0x00030000) &gt;&gt; 16;           // Read Debug Access Level
              IndirectAddressing = (DebugAccessLevel &lt; 2);                                           // DAL1 and Code/Data Flash
            </block>
               <control if="DebugAccessLevel == 2" info="Secure Debug Access?">
                  <block>
                NVMCTRL_Base_Addr += 0x1000;                        // Use secure alias
              </block>
               </control>
               <block>
              Sequence("PrepareFlashOperation");
              Sequence("ClearFlashPageBuffer");
            </block>
               <block info="Erase row command - Clear Status">
              Write8 (NVMCTRL_Base_Addr + 0x14, 0x1F);              // NVMCTRL.INTFLAG: Clear all errors and DONE flag
            </block>
               <control if="IndirectAddressing"
                        info="Erase row command - Set Page Address (Indirect Addressing)">
                  <block>
                Sequence("ClearFlashPageBuffer");
                Write32(SectorAddr, 0xFFFFFFFF);                   // Indirect setting of NVMCTRL.ADDR: Cannot be directly written at DAL1
              </block>
               </control>
               <control if="!IndirectAddressing"
                        info="Erase row command - Set Page Address (Direct Addressing)">
                  <block>
                Write32(NVMCTRL_Base_Addr + 0x1C, SectorAddr);     // NVMCTRL.ADDR: 0..15 offset, 22..23 array (0 = Flash, 1 = DataFlsh, 2= AuxFlash)
              </block>
               </control>
               <block info="Erase row command - Do Erase">
              Write16(NVMCTRL_Base_Addr, ((0xA5 &lt;&lt; 8) | (0x02 &lt;&lt; 0)));  // NVMCTRL.CTRLA: Erase row command
            </block>
               <control while="(Read16(NVMCTRL_Base_Addr + 0x18) &amp; (1 &lt;&lt; 2)) == 0"
                        timeout="100000"
                        info="NVMCTRL.STATUS: Wait for operation to finish"/>
               <control if="(Read8(NVMCTRL_Base_Addr + 0x14) &amp; 0x1F) != 0x01"
                        info="NVMCTRL.INTFLAG: Check for errors">
                  <block>
                __Result = -1;                                      // Erase row finished with errors
              </block>
               </control>
            </sequence>
            <sequence name="EraseBOCOR">
               <block info="initalize local variables">
              __var NVMCTRL_Base_Addr    = 0x41004000;
              __var DSU_Ctrl_Stat_Addr   = 0x41002100;              // Access DSU External Address Range (for DALs)
              __var IndirectAddressing   = 0;
              __var DebugAccessLevel     = 0;
              __var SectorAddr           = 0x0080C000;
              
              Message(0, "Erase BOCOR...");

              __Result = 0;                                         // Initialize __Result to OK
              
              DebugAccessLevel   = (Read32(DSU_Ctrl_Stat_Addr) &amp; 0x00030000) &gt;&gt; 16;           // Read Debug Access Level
              IndirectAddressing = (DebugAccessLevel &lt; 2);                                           // DAL1 and Code/Data Flash
            </block>
               <control if="DebugAccessLevel == 2" info="Secure Debug Access?">
                  <block>
                NVMCTRL_Base_Addr += 0x1000;                        // Use secure alias
              </block>
               </control>
               <control while="__Result == 0 &amp;&amp; (SectorAddr &lt; 0x0080C100)">
                  <block>
                Sequence("PrepareFlashOperation");
                Sequence("ClearFlashPageBuffer");
              </block>
                  <block info="Erase row command - Clear Status">
                Write8 (NVMCTRL_Base_Addr + 0x14, 0x1F);              // NVMCTRL.INTFLAG: Clear all errors and DONE flag
              </block>
                  <control if="IndirectAddressing"
                           info="Erase row command - Set Page Address (Indirect Addressing)">
                     <block>
                  Sequence("ClearFlashPageBuffer");
                  Write32(SectorAddr, 0xFFFFFFFF);                   // Indirect setting of NVMCTRL.ADDR: Cannot be directly written at DAL1
                </block>
                  </control>
                  <control if="!IndirectAddressing"
                           info="Erase row command - Set Page Address (Direct Addressing)">
                     <block>
                  Write32(NVMCTRL_Base_Addr + 0x1C, SectorAddr);     // NVMCTRL.ADDR: 0..15 offset, 22..23 array (0 = Flash, 1 = DataFlsh, 2= AuxFlash)
                </block>
                  </control>
                  <block info="Erase row command - Do Erase">
                Write16(NVMCTRL_Base_Addr, ((0xA5 &lt;&lt; 8) | (0x02 &lt;&lt; 0)));  // NVMCTRL.CTRLA: Erase row command
              </block>
                  <control while="(Read16(NVMCTRL_Base_Addr + 0x18) &amp; (1 &lt;&lt; 2)) == 0"
                           timeout="100000"
                           info="NVMCTRL.STATUS: Wait for operation to finish"/>
                  <control if="(Read8(NVMCTRL_Base_Addr + 0x14) &amp; 0x1F) != 0x01"
                           info="NVMCTRL.INTFLAG: Check for errors">
                     <block>
                  __Result = -1;                                      // Erase row finished with errors
                </block>
                  </control>
                  <block>
                SectorAddr += 0x20;
              </block>
               </control>
            </sequence>
            <sequence name="EraseBSHashRow">
               <block info="initalize local variables">
              __var NVMCTRL_Base_Addr    = 0x41004000;
              __var DSU_Ctrl_Stat_Addr   = 0x41002100;              // Access DSU External Address Range (for DALs)
              __var IndirectAddressing   = 0;
              __var DebugAccessLevel     = 0;
              __var SectorAddr           = 0x00000000;
              __var SectorSize           = 0x100;
              __var BS_HashAddr          = 0x00000000;
              __var BS_Length            = 0;
              __var BNSC_Length          = 0;
              __var BS_Setup             = 0;
              
              Message(0, "Erase Row for Boot Image hashsum...");

              __Result = 0;                                         // Initialize __Result to OK
              
              DebugAccessLevel   = (Read32(DSU_Ctrl_Stat_Addr) &amp; 0x00030000) &gt;&gt; 16; // Read Debug Access Level
              IndirectAddressing = (DebugAccessLevel &lt; 2);                                 // DAL1 and Code/Data Flash
              
			  BS_Setup     = Read32(0x0080C000);
			  BNSC_Length  = (BS_Setup &amp; 0x3FF80000) &gt;&gt; 19;			  
              BNSC_Length *= 0x20;
              BS_Setup     = Read32(0x0080C004);
              BS_Length    = (BS_Setup &amp; 0x000FFF00) &gt;&gt;  8;
              BS_Length   *= 0x100;
              BS_HashAddr  = BS_Length - BNSC_Length - 0x20;
              SectorAddr   = BS_HashAddr &amp; ~(SectorSize - 1);
			  
            </block>
               <control if="DebugAccessLevel == 2" info="Secure Debug Access?">
                  <block>
                NVMCTRL_Base_Addr += 0x1000;                        // Use secure alias
              </block>
               </control>
               <block>
              Sequence("PrepareFlashOperation");
              Sequence("ClearFlashPageBuffer");
            </block>
               <block info="Erase row command - Clear Status">
              Write8 (NVMCTRL_Base_Addr + 0x14, 0x1F);              // NVMCTRL.INTFLAG: Clear all errors and DONE flag
            </block>
               <control if="IndirectAddressing"
                        info="Erase row command - Set Page Address (Indirect Addressing)">
                  <block>
                Sequence("ClearFlashPageBuffer");
                Write32(SectorAddr, 0xFFFFFFFF);                   // Indirect setting of NVMCTRL.ADDR: Cannot be directly written at DAL1
              </block>
               </control>
               <control if="!IndirectAddressing"
                        info="Erase row command - Set Page Address (Direct Addressing)">
                  <block>
                Write32(NVMCTRL_Base_Addr + 0x1C, SectorAddr);     // NVMCTRL.ADDR: 0..15 offset, 22..23 array (0 = Flash, 1 = DataFlsh, 2= AuxFlash)
              </block>
               </control>
               <block info="Erase row command - Do Erase">
              Write16(NVMCTRL_Base_Addr, ((0xA5 &lt;&lt; 8) | (0x02 &lt;&lt; 0)));  // NVMCTRL.CTRLA: Erase row command
            </block>
               <control while="(Read16(NVMCTRL_Base_Addr + 0x18) &amp; (1 &lt;&lt; 2)) == 0"
                        timeout="100000"
                        info="NVMCTRL.STATUS: Wait for operation to finish"/>
               <control if="(Read8(NVMCTRL_Base_Addr + 0x14) &amp; 0x1F) != 0x01"
                        info="NVMCTRL.INTFLAG: Check for errors">
                  <block>
                __Result = -1;                                      // Erase row finished with errors
              </block>
               </control>
            </sequence>
            <!-- CMSIS Flash Algorithm - FlashEraseSector -->
            <sequence name="FlashEraseSector">
               <block info="initalize local variables">
              __var NVMCTRL_Base_Addr    = 0x41004000;
              __var DSU_Ctrl_Stat_Addr   = 0x41002100;              // Access DSU External Address Range (for DALs)
              __var IndirectAddressing   = 0;
              __var DebugAccessLevel     = 0;
              
              // Message(0, "Erase Row: 0x%08X...", __FlashAddr);

              __Result = 0;                                         // Initialize __Result to OK
              
              DebugAccessLevel   = (Read32(DSU_Ctrl_Stat_Addr) &amp; 0x00030000) &gt;&gt; 16;           // Read Debug Access Level
              IndirectAddressing = (DebugAccessLevel &lt; 2);                                           // DAL1 and Code/Data Flash
            </block>
               <control if="DebugAccessLevel == 2" info="Secure Debug Access?">
                  <block>
                NVMCTRL_Base_Addr += 0x1000;                        // Use secure alias
              </block>
               </control>
               <block info="Erase row command - Clear Status">
              Write8 (NVMCTRL_Base_Addr + 0x14, 0x1F);              // NVMCTRL.INTFLAG: Clear all errors and DONE flag
            </block>
               <control if="IndirectAddressing"
                        info="Erase row command - Set Page Address (Indirect Addressing)">
                  <block>
                Sequence("ClearFlashPageBuffer");
                Write32(__FlashAddr, 0xFFFFFFFF);                   // Indirect setting of NVMCTRL.ADDR: Cannot be directly written at DAL1
              </block>
               </control>
               <control if="!IndirectAddressing"
                        info="Erase row command - Set Page Address (Direct Addressing)">
                  <block>
                Write32(NVMCTRL_Base_Addr + 0x1C, __FlashAddr);     // NVMCTRL.ADDR: 0..15 offset, 22..23 array (0 = Flash, 1 = DataFlsh, 2= AuxFlash)
              </block>
               </control>
               <block info="Erase row command - Do Erase">
              Write16(NVMCTRL_Base_Addr, ((0xA5 &lt;&lt; 8) | (0x02 &lt;&lt; 0)));  // NVMCTRL.CTRLA: Erase row command
            </block>
               <control while="(Read16(NVMCTRL_Base_Addr + 0x18) &amp; (1 &lt;&lt; 2)) == 0"
                        timeout="100000"
                        info="NVMCTRL.STATUS: Wait for operation to finish"/>
               <control if="(Read8(NVMCTRL_Base_Addr + 0x14) &amp; 0x1F) != 0x01"
                        info="NVMCTRL.INTFLAG: Check for errors">
                  <block>
                __Result = -1;                                      // Erase row finished with errors
              </block>
               </control>
            </sequence>
            <sequence name="ExecPageWrite">
               <block>
              __var NVMCTRL_Base_Addr    = 0x41004000;
              __var DSU_Ctrl_Stat_Addr   = 0x41002100;              // Access DSU External Address Range (for DALs)
              __var DebugAccessLevel     = 0;

              DebugAccessLevel = (Read32(DSU_Ctrl_Stat_Addr) &amp; 0x00030000) &gt;&gt; 16;  // Read Debug Access Level
            </block>
               <control if="DebugAccessLevel == 2" info="Secure Debug Access?">
                  <block>
                NVMCTRL_Base_Addr += 0x1000;                        // Use secure alias
              </block>
               </control>
               <block info="Write page command">
              Write8 (NVMCTRL_Base_Addr + 0x14, 0x1F);                                     // NVMCTRL.INTFLAG: Clear all errors and DONE flag
              Write16(NVMCTRL_Base_Addr,        ((0xA5 &lt;&lt; 8) | (0x04 &lt;&lt; 0)));  // NVMCTRL.CTRLA: Write page command
            </block>
               <control while="(Read16(NVMCTRL_Base_Addr + 0x18) &amp; (1 &lt;&lt; 2)) == 0"
                        timeout="100000"
                        info="NVMCTRL.STATUS"/>
               <control if="(Read8(NVMCTRL_Base_Addr + 0x14) &amp; 0x1F) != 0x01"
                        info="NVMCTRL.INTFLAG: Check for errors and command done">
                  <block>
                __Result = -1;                                                             // Write page finished with errors
              </block>
               </control>
            </sequence>
            <!-- CMSIS Flash Algorithm - FlashProgramPage -->
            <sequence name="FlashProgramPage">
               <block info="initalize local variables">
              __var write_size           = __FlashLen;
              
              // Message(0, "Program Page: 0x%08X...", __FlashAddr);

              __Result   = 0;                                            // Initialize __Result to OK
              write_size = (__FlashLen + 3) &amp; ~3;                    // Adjust size to word
              FlashWriteBuffer (__FlashAddr, 0, write_size, (32 | 1) );  // Write Page Buffer
              Sequence("ExecPageWrite");                                 // Execute the page write
            </block>
            </sequence>
            <!-- UROW Programming based on dbgconf setup -->
            <sequence name="ProgramUROW">
               <block>
              __var value = 0;
            </block>
               <control if="UROW_Program">
                  <block>
                // Prepare UROW Content Buffer
                BufferSet(0, 0x00, 0x24, 1, 0xFF);

                // Read BOD12 setup from target (must not be changed, calibrated in factory)
                value  = (Read32(0x00804000) &amp; 0x01FF0000);
                value |= UROW_Config0 &amp; 0xFE00FFFF;
                
                // Set UROW contents for programming
                BufferSet(0, 0x00, 0x01, 4, value);
                BufferSet(0, 0x04, 0x01, 4, UROW_Config1);
                BufferSet(0, 0x08, 0x01, 4, UROW_Config2);
                BufferSet(0, 0x0C, 0x01, 4, UROW_Config3);
                BufferSet(0, 0x10, 0x01, 4, UROW_NONSECA);
                BufferSet(0, 0x14, 0x01, 4, UROW_NONSECB);
                BufferSet(0, 0x18, 0x01, 4, UROW_NONSECC);
                BufferSet(0, 0x1C, 0x01, 4, UROW_CDIROFFSET);				
                
                // Generate UROW Checksum
                Message (0, "Generate UROW checksum...");
                BufferStreamOut(0, 0x08, 0x18, "$P/UROW_contents.bin", 0, 0);
                RunApplication("$S/PIC32CM-LS00/keil/utilities/GenerateCRC.exe", "\"$P/UROW_contents.bin\" -o \"$P/UROW_crc32.bin\"", "$P", 10000000);
                BufferStreamIn(0, 0x20, 0x4, "$P/UROW_crc32.bin", 0, 0);
                
                // Erase UROW
                Sequence("EraseUROW");
                
                // Program UROW
                Message (0, "Program UROW...");
                Sequence("PrepareFlashOperation");
                Sequence("ClearFlashPageBuffer");
                BufferWrite(0, 0, 0x00804000, 0x24, 32|1);
                Sequence("ExecPageWrite");
              </block>
               </control>
            </sequence>
            <!-- BOCOR Programming based on dbgconf setup -->
            <sequence name="ProgramBOCOR">
               <block>
              __var PageOffset = 0x00000000;
              __var BOCOR_Addr = 0x0080C000;
              __var BS_BootOpt  = 0;
            </block>
               <control if="BOCOR_Program">
                  <block>
                // Prepare BOCOR Content Buffer
                BufferSet(0, 0x00, 0x100, 1, 0xFF);
                
                // Set BOCOR contents for programming - Part 1
                BufferSet(0, 0x00, 0x01, 4, BOCOR_Config0);
                BufferSet(0, 0x04, 0x01, 4, BOCOR_Config1);
                
                // Generate BOCOR Checksum
                Message (0, "Generate BOCOR checksum...");
                BufferStreamOut(0, 0, 0x08, "$P/BOCOR_contents_crc32.bin", 0, 0);
                RunApplication("$S/PIC32CM-LS00/keil/utilities/GenerateCRC.exe", "\"$P/BOCOR_contents_crc32.bin\" -o \"$P/BOCOR_crc32.bin\"", "$P", 10000000);
                BufferStreamIn(0, 0x08, 0x04, "$P/BOCOR_crc32.bin", 0, 0);
                
                // Set BOCOR contents for programming - Part 2
                BufferSet(0, 0x0C, 0x01, 4, BOCOR_ROMVersion);
                
                BufferSet(0, 0x10, 0x01, 4, BOCOR_CE0_Keyword0);
                BufferSet(0, 0x14, 0x01, 4, BOCOR_CE0_Keyword1);
                BufferSet(0, 0x18, 0x01, 4, BOCOR_CE0_Keyword2);
                BufferSet(0, 0x1C, 0x01, 4, BOCOR_CE0_Keyword3);
                
                BufferSet(0, 0x20, 0x01, 4, BOCOR_CE1_Keyword0);
                BufferSet(0, 0x24, 0x01, 4, BOCOR_CE1_Keyword1);
                BufferSet(0, 0x28, 0x01, 4, BOCOR_CE1_Keyword2);
                BufferSet(0, 0x2C, 0x01, 4, BOCOR_CE1_Keyword3);

                BufferSet(0, 0x30, 0x01, 4, BOCOR_CE2_Keyword0);
                BufferSet(0, 0x34, 0x01, 4, BOCOR_CE2_Keyword1);
                BufferSet(0, 0x38, 0x01, 4, BOCOR_CE2_Keyword2);
                BufferSet(0, 0x3C, 0x01, 4, BOCOR_CE2_Keyword3);
                
                BufferSet(0, 0x40, 0x01, 4, BOCOR_CRC_Keyword0);
                BufferSet(0, 0x44, 0x01, 4, BOCOR_CRC_Keyword1);
                BufferSet(0, 0x48, 0x01, 4, BOCOR_CRC_Keyword2);
                BufferSet(0, 0x4C, 0x01, 4, BOCOR_CRC_Keyword3);
                
                BufferSet(0, 0x50, 0x01, 4, BOCOR_BOOT_Keyword0);
                BufferSet(0, 0x54, 0x01, 4, BOCOR_BOOT_Keyword1);
                BufferSet(0, 0x58, 0x01, 4, BOCOR_BOOT_Keyword2);
                BufferSet(0, 0x5C, 0x01, 4, BOCOR_BOOT_Keyword3);

                BufferSet(0, 0x60, 0x01, 4, BOCOR_BOOT_Keyword4);
                BufferSet(0, 0x64, 0x01, 4, BOCOR_BOOT_Keyword5);
                BufferSet(0, 0x68, 0x01, 4, BOCOR_BOOT_Keyword6);
                BufferSet(0, 0x6C, 0x01, 4, BOCOR_BOOT_Keyword7);

                BufferSet(0, 0x70, 0x01, 4, BOCOR_UDS_Keyword0);
                BufferSet(0, 0x74, 0x01, 4, BOCOR_UDS_Keyword1);
                BufferSet(0, 0x78, 0x01, 4, BOCOR_UDS_Keyword2);
                BufferSet(0, 0x7C, 0x01, 4, BOCOR_UDS_Keyword3);

                BufferSet(0, 0x80, 0x01, 4, BOCOR_UDS_Keyword4);
                BufferSet(0, 0x84, 0x01, 4, BOCOR_UDS_Keyword5);
                BufferSet(0, 0x88, 0x01, 4, BOCOR_UDS_Keyword6);
                BufferSet(0, 0x8C, 0x01, 4, BOCOR_UDS_Keyword7);
				
				BufferSet(0, 0x90, 0x01, 4, BOCOR_IOPROTKEY_Keyword0);
                BufferSet(0, 0x94, 0x01, 4, BOCOR_IOPROTKEY_Keyword1);
                BufferSet(0, 0x98, 0x01, 4, BOCOR_IOPROTKEY_Keyword2);
                BufferSet(0, 0x9C, 0x01, 4, BOCOR_IOPROTKEY_Keyword3);

                BufferSet(0, 0xA0, 0x01, 4, BOCOR_IOPROTKEY_Keyword4);
                BufferSet(0, 0xA4, 0x01, 4, BOCOR_IOPROTKEY_Keyword5);
                BufferSet(0, 0xA8, 0x01, 4, BOCOR_IOPROTKEY_Keyword6);
                BufferSet(0, 0xAC, 0x01, 4, BOCOR_IOPROTKEY_Keyword7);

                // Determine BOOTOPT setting for hashsum
                BS_BootOpt = (BOCOR_Config1 &amp; 0xFF);

                Message (0, "Generate BOCOR hashsum...");
              </block>
                  <control if="BS_BootOpt &lt; 2">
                     <block>
                  // Write hashsum input
                  BufferStreamOut(0, 0, 0xE0, "$P/BOCOR_contents.bin", 0x00, 0);  // Write BOCOR contents
                </block>
                  </control>
                  <control if="BS_BootOpt == 2">
                     <block>
                  // Write hashsum input (including 2*BOOTKEY)
                  BufferStreamOut(0, 0x50, 0x20, "$P/BOCOR_contents.bin", 0x00, 0);  // Write  BOOTKEY: First Time
                  BufferStreamOut(0, 0x50, 0x20, "$P/BOCOR_contents.bin", 0x10, 0);  // Append BOOTKEY: Second Time
                  BufferStreamOut(0, 0x00, 0xE0, "$P/BOCOR_contents.bin", 0x10, 0);  // Append BOCOR contents
                </block>
                  </control>
                  <block>
                // Generate hashsum
                RunApplication("$S/PIC32CM-LS00/keil/utilities/GenerateSHA.exe", "\"$P/BOCOR_contents.bin\" -o \"$P/BOCOR_sha256.bin\"", "$P", 10000000);
                BufferStreamIn(0, 0xE0, 0x20, "$P/BOCOR_sha256.bin", 0, 0);
                
                // Erase BOCOR
                Sequence("EraseBOCOR");
                
                // Prepare BOCOR programming
                Message (0, "Program BOCOR...");
                Sequence("PrepareFlashOperation");
              </block>
                  <control while="(__Result == 0) &amp;&amp; (PageOffset &lt; 0x100)">
                     <block>
                  // Program BOCOR pages
                  Sequence("ClearFlashPageBuffer");
                  BufferWrite(0, PageOffset, BOCOR_Addr + PageOffset, 0x20, 32|1);
                  Sequence("ExecPageWrite");
                  PageOffset += 0x20;
                </block>
                  </control>
               </control>
            </sequence>
            <sequence name="ProgramBootImageHash">
               <block>
              __var BS_Address  = 0x00000000;
              __var BS_HashAddr = 0x00000000;
              __var BS_Length   = 0;
              __var BNSC_Length = 0;
              __var BS_Setup    = 0;
              __var BS_BootOpt  = 0;
              __var SectorSize  = 0x100;
              __var SectorAddr  = 0x00000000;
              __var PageAddr    = 0x00000000;
              
			  BS_Setup     = Read32(0x0080C000);
			  BNSC_Length  = (BS_Setup &amp; 0x3FF80000) &gt;&gt; 19;			  
              BNSC_Length *= 0x20;
              BS_Setup     = Read32(0x0080C004);
              BS_BootOpt   = (BS_Setup &amp; 0xFF);
              BS_Length    = (BS_Setup &amp; 0x000FFF00) &gt;&gt;  8;
              BS_Length   *= 0x100;
              BS_HashAddr  = BS_Length - BNSC_Length - 0x20;
              SectorAddr   = BS_HashAddr &amp; ~(SectorSize - 1);
            </block>
               <control if="(BS_BootOpt &gt; 0) &amp;&amp; (BS_Length &gt; 0)">
                  <block>
                Message (0, "Generate Boot Image hashsum...");
                // Read Boot Secure and Non-Secure Callable Code from target
                BufferRead(0, 0, BS_Address, BS_Length, 32|1);
              </block>
                  <control if="BS_BootOpt == 1">
                     <block>
                  // Write hashsum input
                  BufferStreamOut(0, 0, BS_HashAddr, "$P/Boot_contents.bin", 0x00, 0);  // Boot Secure Code: Write to file
                </block>
                  </control>
                  <control if="BS_BootOpt &gt; 1">
                     <block>
                  BufferRead(1, 0, 0x0080C050, 0x20, 32|1);  // Read BOOTKEY from target
                  
                  BufferStreamOut(1, 0,        0x20, "$P/Boot_contents.bin", 0x00, 0);  // Write  BOOTKEY: First Time
                  BufferStreamOut(1, 0,        0x20, "$P/Boot_contents.bin", 0x10, 0);  // Append BOOTKEY: Second Time
                  BufferStreamOut(0, 0, BS_HashAddr, "$P/Boot_contents.bin", 0x10, 0);  // Append Boot Secure Code
                </block>
                  </control>
                  <control if="BNSC_Length &gt; 0">
                     <block>
                  BufferStreamOut(0, BS_Length - BNSC_Length, BNSC_Length, "$P/Boot_contents.bin", 0x10, 0);  // Append Boot Non-Secure Callable Code
                </block>
                  </control>
                  <block>
                RunApplication("$S/PIC32CM-LS00/keil/utilities/GenerateSHA.exe", "\"$P/Boot_contents.bin\" -o \"$P/Boot_sha256.bin\"", "$P", 10000000);
                BufferStreamIn(0, BS_HashAddr, 0x20, "$P/Boot_sha256.bin", 0, 0);
                
                // Erase 
                Sequence("EraseBSHashRow");

                // Prepare hashsum programming (entire row)
                Message (0, "Program Boot Image hashsum...");
                PageAddr = SectorAddr;
                Sequence("PrepareFlashOperation");
              </block>
                  <control while="PageAddr &lt; (SectorAddr + SectorSize)">
                     <block>
                  // Program row pages for hashsum
                  Sequence("ClearFlashPageBuffer");
                  BufferWrite(0, PageAddr, PageAddr, 0x20, 32|1);
                  Sequence("ExecPageWrite");
                  PageAddr += 0x20;
                </block>
                  </control>
               </control>
            </sequence>
            <!-- FlashProgramDone -->
            <sequence name="FlashProgramDone">
               <block info="initalize local variables">
              __var DSU_Ctrl_Stat_Addr   = 0x41002100;                       // Access DSU External Address Range (for DALs)
              __var DebugAccessLevel     = 0;
            </block>
               <control if="ProgramDebugAccessLevel == 2">
                  <block>
                // Program Configuration Rows and Boot Image Hashsum
                Sequence("ProgramUROW");
                Sequence("ProgramBOCOR");
                Sequence("ProgramBootImageHash");
              </block>
               </control>
               <control if="ProgramDebugAccessLevel &lt; 2">
                  <block>
                DebugAccessLevel = (Read32(DSU_Ctrl_Stat_Addr) &amp; 0x00030000) &gt;&gt; 16;  // Read Debug Access Level
              </block>
                  <control if="(ProgramDebugAccessLevel == 1) &amp;&amp; DebugAccessLevel == 2"
                           info="Set DAL to 1">
                     <block>
                  Sequence("NVMCTRL_SetDAL1");
                </block>
                  </control>
                  <control if="(ProgramDebugAccessLevel == 0) &amp;&amp; DebugAccessLevel &gt; 0"
                           info="Set DAL to 0">
                     <block>
                  Sequence("NVMCTRL_SetDAL0");
                </block>
                  </control>
               </control>
            </sequence>
         </sequences>
         <environment name="microchip">
            <mchp:extension xmlns:mchp="http://crownking/pack-device-microchip-extension"
                            schemaVersion="1.0">
               <mchp:prerequisite component="MPLAB X IDE" version="[5.10-"/>
               <mchp:prerequisite component="MPLAB X IPE" version="[5.10-"/>
            </mchp:extension>
         </environment>
         <device Dname="PIC32CM2532LS00048">
            <processor Dcore="Cortex-M23"
                       Dendian="Little-endian"
                       Dmpu="MPU"
                       Dfpu="NO_FPU"
                       Dtz="TZ"/>
            <compile header="PIC32CM-LS00/include/pic32c.h" define="__PIC32CM2532LS00048__"/>
            <debug svd="PIC32CM-LS00/svd/PIC32CM2532LS00048.svd"/>
            <memory id="IROM1"
                    start="0x00000000"
                    size="0x40000"
                    default="1"
                    startup="1"/>
            <memory id="IROM2" start="0x00400000" size="0x2000"/>
            <memory id="IRAM1" start="0x20000000" size="0x8000" default="1"/>
            <flashinfo name="Internal Flash (code) 256KB"
                       start="0x00000000"
                       blankval="0xFFFFFFFF"
                       pagesize="0x00000040"
                       ptime="100000"
                       etime="1000000">
               <block count="1024" size="0x100" arg="0"/>
               <!-- Sector Size 256B (1 row = 4 * page a 64 Byte) -->
            </flashinfo>
            <environment name="atmel">
               <at:extension xmlns:at="http://www.atmel.com/schemas/pack-device-atmel-extension"
                             schemaVersion="1.0">
                  <at:atdf name="PIC32CM-LS00/atdf/PIC32CM2532LS00048.atdf"/>
                  <at:variant ordercode="PIC32CM2532LS00048-I/Y8X"
                              vccmin="1.62"
                              vccmax="3.63"
                              tempmin="-40"
                              tempmax="85"/>
                  <at:variant ordercode="PIC32CM2532LS00048-E/Y8X"
                              vccmin="1.62"
                              vccmax="3.63"
                              tempmin="-40"
                              tempmax="125"/>
                  <at:variant ordercode="PIC32CM2532LS00048-I/U5B"
                              vccmin="1.62"
                              vccmax="3.63"
                              tempmin="-40"
                              tempmax="85"/>
                  <at:variant ordercode="PIC32CM2532LS00048-E/U5B"
                              vccmin="1.62"
                              vccmax="3.63"
                              tempmin="-40"
                              tempmax="125"/>
                  <at:memory name="FLASH"
                             start="0x00000000"
                             size="0x40000"
                             type="flash"
                             pagesize="64"
                             rw="RW"
                             exec="true"
                             address-space="base"/>
                  <at:memory name="AUX0"
                             start="0x00804000"
                             size="0x100"
                             type="fuses"
                             pagesize="64"
                             rw="RW"
                             address-space="base"/>
                  <at:memory name="AUX1"
                             start="0x00806000"
                             size="0x100"
                             type="fuses"
                             pagesize="64"
                             rw="RW"
                             address-space="base"/>
                  <at:memory name="AUX2"
                             start="0x00808000"
                             size="0x100"
                             type="fuses"
                             pagesize="64"
                             rw="RW"
                             address-space="base"/>
                  <at:memory name="AUX3"
                             start="0x0080A000"
                             size="0x100"
                             type="fuses"
                             pagesize="64"
                             rw="RW"
                             address-space="base"/>
                  <at:memory name="AUX4"
                             start="0x0080C000"
                             size="0x100"
                             type="fuses"
                             pagesize="64"
                             rw="RW"
                             address-space="base"/>
                  <at:memory name="AUX5"
                             start="0x0080E000"
                             size="0x100"
                             type="fuses"
                             pagesize="64"
                             rw="RW"
                             address-space="base"/>
                  <at:memory name="BOCOR"
                             start="0x0080C000"
                             size="0x100"
                             type="fuses"
                             pagesize="64"
                             rw="RW"
                             address-space="base"/>
                  <at:memory name="BOCOR1"
                             start="0x0080C008"
                             size="0x8"
                             type="fuses"
                             rw="R"
                             address-space="base"/>
                  <at:memory name="CAL"
                             start="0x00800000"
                             size="0x8"
                             type="fuses"
                             rw="R"
                             address-space="base"/>
                  <at:memory name="DATAFLASH"
                             start="0x00400000"
                             size="0x2000"
                             type="flash"
                             pagesize="64"
                             rw="RW"
                             address-space="base"/>
                  <at:memory name="LOCKROW"
                             start="0x00802000"
                             size="0x4"
                             type="fuses"
                             rw="R"
                             address-space="base"/>
                  <at:memory name="OTP1"
                             start="0x00806000"
                             size="0x8"
                             type="fuses"
                             rw="R"
                             address-space="base"/>
                  <at:memory name="OTP2"
                             start="0x00806008"
                             size="0x8"
                             type="fuses"
                             rw="R"
                             address-space="base"/>
                  <at:memory name="OTP3"
                             start="0x00806010"
                             size="0x8"
                             type="fuses"
                             rw="R"
                             address-space="base"/>
                  <at:memory name="OTP4"
                             start="0x00806018"
                             size="0x8"
                             type="fuses"
                             rw="R"
                             address-space="base"/>
                  <at:memory name="ROM"
                             start="0x00830000"
                             size="0x10000"
                             type="fuses"
                             pagesize="64"
                             rw="RW"
                             address-space="base"/>
                  <at:memory name="SHADOW"
                             start="0x00820000"
                             size="0x8"
                             type="fuses"
                             rw="R"
                             address-space="base"/>
                  <at:memory name="SW_CALIB"
                             start="0x00806020"
                             size="0x4"
                             type="fuses"
                             rw="R"
                             address-space="base"/>
                  <at:memory name="TLATCH"
                             start="0x00810000"
                             size="0x10000"
                             type="fuses"
                             pagesize="64"
                             rw="RW"
                             address-space="base"/>
                  <at:memory name="USER_PAGE"
                             start="0x00804000"
                             size="0x100"
                             type="user_page"
                             pagesize="64"
                             rw="RW"
                             address-space="base"/>
                  <at:memory name="HSRAM"
                             start="0x20000000"
                             size="0x8000"
                             type="ram"
                             rw="RW"
                             exec="true"
                             address-space="base"/>
                  <at:memory name="APBA"
                             start="0x40000000"
                             size="0x8000"
                             type="io"
                             rw="RW"
                             address-space="base"/>
                  <at:memory name="APBB"
                             start="0x41000000"
                             size="0x10000"
                             type="io"
                             rw="RW"
                             address-space="base"/>
                  <at:memory name="APBC"
                             start="0x42000000"
                             size="0x6000"
                             type="io"
                             rw="RW"
                             address-space="base"/>
                  <at:memory name="PPB"
                             start="0xE0000000"
                             size="0x100000"
                             type="io"
                             rw="RW"
                             address-space="base"/>
                  <at:interface type="swd" name="SWD"/>
                  <at:tool id="com.atmel.avrdbg.tool.atmelice"/>
                  <at:tool id="com.atmel.avrdbg.tool.edbg"/>
                  <at:tool id="com.atmel.avrdbg.tool.edbgc"/>
                  <at:tool id="com.atmel.avrdbg.tool.ice4"/>
                  <at:tool id="com.atmel.avrdbg.tool.jtagice3plus"/>
                  <at:tool id="com.atmel.avrdbg.tool.jtagicemk3"/>
                  <at:tool id="com.atmel.avrdbg.tool.medbg"/>
                  <at:tool id="com.atmel.avrdbg.tool.nedbg"/>
                  <at:tool id="com.atmel.avrdbg.tool.pickit4"/>
                  <at:tool id="com.atmel.avrdbg.tool.powerdebugger"/>
                  <at:tool id="com.atmel.avrdbg.tool.samice"/>
                  <at:tool id="com.atmel.avrdbg.tool.snap"/>
                  <at:project name="Barebone C Project">
                     <at:component Cvendor="ARM" Cclass="CMSIS" Cgroup="CORE"/>
                     <at:component Cvendor="Microchip" Cclass="Device" Cgroup="Startup">
                        <at:template select="Main file (.c)"/>
                     </at:component>
                  </at:project>
                  <at:project name="Barebone Cpp Project">
                     <at:component Cvendor="ARM" Cclass="CMSIS" Cgroup="CORE"/>
                     <at:component Cvendor="Microchip" Cclass="Device" Cgroup="Startup">
                        <at:template select="Main file (.cpp)"/>
                     </at:component>
                  </at:project>
                  <at:prerequisite context="compiling" Tcompiler="GCC" component="ARM-GCC"/>
                  <at:prerequisite context="compiling" Tcompiler="IAR" component="ARM-IAR"/>
                  <at:prerequisite context="compiling" Tcompiler="ARMCC" component="ARMCC"/>
               </at:extension>
            </environment>
            <environment name="microchip">
               <mchp:extension xmlns:mchp="http://crownking/pack-device-microchip-extension"
                               schemaVersion="1.0">
                  <mchp:pic name="PIC32CM-LS00/edc/PIC32CM2532LS00048.PIC"/>
                  <mchp:xc32 name="PIC32CM-LS00/xc32"/>
                  <mchp:hwtool type="mplab.mpheader">
                     <mchp:file name="PIC32CM-LS00/hwtools/mplab/MPHeader.xml"/>
                  </mchp:hwtool>
                  <mchp:hwtool type="mplab.pluginboardsupport">
                     <mchp:file name="PIC32CM-LS00/hwtools/mplab/PluginBoardSupport.xml"/>
                  </mchp:hwtool>
                  <mchp:hwtool type="sdm">
                     <mchp:file name="PIC32CM-LS00/hwtools/sdm/sdmSimulator.xml"/>
                     <mchp:file name="PIC32CM-LS00/hwtools/sdm/sdmCompilers.xml"/>
                     <mchp:file name="PIC32CM-LS00/hwtools/sdm/sdmRealICE4.xml"/>
                     <mchp:file name="PIC32CM-LS00/hwtools/sdm/sdmRealICE.xml"/>
                     <mchp:file name="PIC32CM-LS00/hwtools/sdm/sdmICD3.xml"/>
                     <mchp:file name="PIC32CM-LS00/hwtools/sdm/sdmICD4.xml"/>
                     <mchp:file name="PIC32CM-LS00/hwtools/sdm/sdmICE4.xml"/>
                     <mchp:file name="PIC32CM-LS00/hwtools/sdm/sdmDebuggerMap.xml"/>
                  </mchp:hwtool>
                  <mchp:hwtool type="persfr">
                     <mchp:file name="PIC32CM-LS00/hwtools/persfr/arm32.persfr"/>
                  </mchp:hwtool>
                  <mchp:prerequisite component="MPLAB X IDE" version="[5.20-"/>
               </mchp:extension>
            </environment>
            <book name="https://www.microchip.com/wwwproducts/Devices.aspx?product=PIC32CM2532LS00048"
                  title="Device page for PIC32CM2532LS00048"/>
            <book name="https://www.microchip.com/wwwproducts/productds/PIC32CM2532LS00048"
                  title="Datasheet"/>
         </device>
         <device Dname="PIC32CM2532LS00064">
            <processor Dcore="Cortex-M23"
                       Dendian="Little-endian"
                       Dmpu="MPU"
                       Dfpu="NO_FPU"
                       Dtz="TZ"/>
            <compile header="PIC32CM-LS00/include/pic32c.h" define="__PIC32CM2532LS00064__"/>
            <debug svd="PIC32CM-LS00/svd/PIC32CM2532LS00064.svd"/>
            <memory id="IROM1"
                    start="0x00000000"
                    size="0x40000"
                    default="1"
                    startup="1"/>
            <memory id="IROM2" start="0x00400000" size="0x2000"/>
            <memory id="IRAM1" start="0x20000000" size="0x8000" default="1"/>
            <flashinfo name="Internal Flash (code) 256KB"
                       start="0x00000000"
                       blankval="0xFFFFFFFF"
                       pagesize="0x00000040"
                       ptime="100000"
                       etime="1000000">
               <block count="1024" size="0x100" arg="0"/>
               <!-- Sector Size 256B (1 row = 4 * page a 64 Byte) -->
            </flashinfo>
            <environment name="atmel">
               <at:extension xmlns:at="http://www.atmel.com/schemas/pack-device-atmel-extension"
                             schemaVersion="1.0">
                  <at:atdf name="PIC32CM-LS00/atdf/PIC32CM2532LS00064.atdf"/>
                  <at:variant ordercode="PIC32CM2532LS00064-I/PT"
                              vccmin="1.62"
                              vccmax="3.63"
                              tempmin="-40"
                              tempmax="85"/>
                  <at:variant ordercode="PIC32CM2532LS00064-E/PT"
                              vccmin="1.62"
                              vccmax="3.63"
                              tempmin="-40"
                              tempmax="125"/>
                  <at:variant ordercode="PIC32CM2532LS00064-I/5LX"
                              vccmin="1.62"
                              vccmax="3.63"
                              tempmin="-40"
                              tempmax="85"/>
                  <at:variant ordercode="PIC32CM2532LS00064-E/5LX"
                              vccmin="1.62"
                              vccmax="3.63"
                              tempmin="-40"
                              tempmax="125"/>
                  <at:memory name="FLASH"
                             start="0x00000000"
                             size="0x40000"
                             type="flash"
                             pagesize="64"
                             rw="RW"
                             exec="true"
                             address-space="base"/>
                  <at:memory name="AUX0"
                             start="0x00804000"
                             size="0x100"
                             type="fuses"
                             pagesize="64"
                             rw="RW"
                             address-space="base"/>
                  <at:memory name="AUX1"
                             start="0x00806000"
                             size="0x100"
                             type="fuses"
                             pagesize="64"
                             rw="RW"
                             address-space="base"/>
                  <at:memory name="AUX2"
                             start="0x00808000"
                             size="0x100"
                             type="fuses"
                             pagesize="64"
                             rw="RW"
                             address-space="base"/>
                  <at:memory name="AUX3"
                             start="0x0080A000"
                             size="0x100"
                             type="fuses"
                             pagesize="64"
                             rw="RW"
                             address-space="base"/>
                  <at:memory name="AUX4"
                             start="0x0080C000"
                             size="0x100"
                             type="fuses"
                             pagesize="64"
                             rw="RW"
                             address-space="base"/>
                  <at:memory name="AUX5"
                             start="0x0080E000"
                             size="0x100"
                             type="fuses"
                             pagesize="64"
                             rw="RW"
                             address-space="base"/>
                  <at:memory name="BOCOR"
                             start="0x0080C000"
                             size="0x100"
                             type="fuses"
                             pagesize="64"
                             rw="RW"
                             address-space="base"/>
                  <at:memory name="BOCOR1"
                             start="0x0080C008"
                             size="0x8"
                             type="fuses"
                             rw="R"
                             address-space="base"/>
                  <at:memory name="CAL"
                             start="0x00800000"
                             size="0x8"
                             type="fuses"
                             rw="R"
                             address-space="base"/>
                  <at:memory name="DATAFLASH"
                             start="0x00400000"
                             size="0x2000"
                             type="flash"
                             pagesize="64"
                             rw="RW"
                             address-space="base"/>
                  <at:memory name="LOCKROW"
                             start="0x00802000"
                             size="0x4"
                             type="fuses"
                             rw="R"
                             address-space="base"/>
                  <at:memory name="OTP1"
                             start="0x00806000"
                             size="0x8"
                             type="fuses"
                             rw="R"
                             address-space="base"/>
                  <at:memory name="OTP2"
                             start="0x00806008"
                             size="0x8"
                             type="fuses"
                             rw="R"
                             address-space="base"/>
                  <at:memory name="OTP3"
                             start="0x00806010"
                             size="0x8"
                             type="fuses"
                             rw="R"
                             address-space="base"/>
                  <at:memory name="OTP4"
                             start="0x00806018"
                             size="0x8"
                             type="fuses"
                             rw="R"
                             address-space="base"/>
                  <at:memory name="ROM"
                             start="0x00830000"
                             size="0x10000"
                             type="fuses"
                             pagesize="64"
                             rw="RW"
                             address-space="base"/>
                  <at:memory name="SHADOW"
                             start="0x00820000"
                             size="0x8"
                             type="fuses"
                             rw="R"
                             address-space="base"/>
                  <at:memory name="SW_CALIB"
                             start="0x00806020"
                             size="0x4"
                             type="fuses"
                             rw="R"
                             address-space="base"/>
                  <at:memory name="TLATCH"
                             start="0x00810000"
                             size="0x10000"
                             type="fuses"
                             pagesize="64"
                             rw="RW"
                             address-space="base"/>
                  <at:memory name="USER_PAGE"
                             start="0x00804000"
                             size="0x100"
                             type="user_page"
                             pagesize="64"
                             rw="RW"
                             address-space="base"/>
                  <at:memory name="HSRAM"
                             start="0x20000000"
                             size="0x8000"
                             type="ram"
                             rw="RW"
                             exec="true"
                             address-space="base"/>
                  <at:memory name="APBA"
                             start="0x40000000"
                             size="0x8000"
                             type="io"
                             rw="RW"
                             address-space="base"/>
                  <at:memory name="APBB"
                             start="0x41000000"
                             size="0x10000"
                             type="io"
                             rw="RW"
                             address-space="base"/>
                  <at:memory name="APBC"
                             start="0x42000000"
                             size="0x6000"
                             type="io"
                             rw="RW"
                             address-space="base"/>
                  <at:memory name="PPB"
                             start="0xE0000000"
                             size="0x100000"
                             type="io"
                             rw="RW"
                             address-space="base"/>
                  <at:interface type="swd" name="SWD"/>
                  <at:tool id="com.atmel.avrdbg.tool.atmelice"/>
                  <at:tool id="com.atmel.avrdbg.tool.edbg"/>
                  <at:tool id="com.atmel.avrdbg.tool.edbgc"/>
                  <at:tool id="com.atmel.avrdbg.tool.ice4"/>
                  <at:tool id="com.atmel.avrdbg.tool.jtagice3plus"/>
                  <at:tool id="com.atmel.avrdbg.tool.jtagicemk3"/>
                  <at:tool id="com.atmel.avrdbg.tool.medbg"/>
                  <at:tool id="com.atmel.avrdbg.tool.nedbg"/>
                  <at:tool id="com.atmel.avrdbg.tool.pickit4"/>
                  <at:tool id="com.atmel.avrdbg.tool.powerdebugger"/>
                  <at:tool id="com.atmel.avrdbg.tool.samice"/>
                  <at:tool id="com.atmel.avrdbg.tool.snap"/>
                  <at:project name="Barebone C Project">
                     <at:component Cvendor="ARM" Cclass="CMSIS" Cgroup="CORE"/>
                     <at:component Cvendor="Microchip" Cclass="Device" Cgroup="Startup">
                        <at:template select="Main file (.c)"/>
                     </at:component>
                  </at:project>
                  <at:project name="Barebone Cpp Project">
                     <at:component Cvendor="ARM" Cclass="CMSIS" Cgroup="CORE"/>
                     <at:component Cvendor="Microchip" Cclass="Device" Cgroup="Startup">
                        <at:template select="Main file (.cpp)"/>
                     </at:component>
                  </at:project>
                  <at:prerequisite context="compiling" Tcompiler="GCC" component="ARM-GCC"/>
                  <at:prerequisite context="compiling" Tcompiler="IAR" component="ARM-IAR"/>
                  <at:prerequisite context="compiling" Tcompiler="ARMCC" component="ARMCC"/>
               </at:extension>
            </environment>
            <environment name="microchip">
               <mchp:extension xmlns:mchp="http://crownking/pack-device-microchip-extension"
                               schemaVersion="1.0">
                  <mchp:pic name="PIC32CM-LS00/edc/PIC32CM2532LS00064.PIC"/>
                  <mchp:xc32 name="PIC32CM-LS00/xc32"/>
                  <mchp:hwtool type="mplab.mpheader">
                     <mchp:file name="PIC32CM-LS00/hwtools/mplab/MPHeader.xml"/>
                  </mchp:hwtool>
                  <mchp:hwtool type="mplab.pluginboardsupport">
                     <mchp:file name="PIC32CM-LS00/hwtools/mplab/PluginBoardSupport.xml"/>
                  </mchp:hwtool>
                  <mchp:hwtool type="sdm">
                     <mchp:file name="PIC32CM-LS00/hwtools/sdm/sdmSimulator.xml"/>
                     <mchp:file name="PIC32CM-LS00/hwtools/sdm/sdmCompilers.xml"/>
                     <mchp:file name="PIC32CM-LS00/hwtools/sdm/sdmRealICE4.xml"/>
                     <mchp:file name="PIC32CM-LS00/hwtools/sdm/sdmRealICE.xml"/>
                     <mchp:file name="PIC32CM-LS00/hwtools/sdm/sdmICD3.xml"/>
                     <mchp:file name="PIC32CM-LS00/hwtools/sdm/sdmICD4.xml"/>
                     <mchp:file name="PIC32CM-LS00/hwtools/sdm/sdmICE4.xml"/>
                     <mchp:file name="PIC32CM-LS00/hwtools/sdm/sdmDebuggerMap.xml"/>
                  </mchp:hwtool>
                  <mchp:hwtool type="persfr">
                     <mchp:file name="PIC32CM-LS00/hwtools/persfr/arm32.persfr"/>
                  </mchp:hwtool>
                  <mchp:prerequisite component="MPLAB X IDE" version="[5.20-"/>
               </mchp:extension>
            </environment>
            <book name="https://www.microchip.com/wwwproducts/Devices.aspx?product=PIC32CM2532LS00064"
                  title="Device page for PIC32CM2532LS00064"/>
            <book name="https://www.microchip.com/wwwproducts/productds/PIC32CM2532LS00064"
                  title="Datasheet"/>
         </device>
         <device Dname="PIC32CM2532LS00100">
            <processor Dcore="Cortex-M23"
                       Dendian="Little-endian"
                       Dmpu="MPU"
                       Dfpu="NO_FPU"
                       Dtz="TZ"/>
            <compile header="PIC32CM-LS00/include/pic32c.h" define="__PIC32CM2532LS00100__"/>
            <debug svd="PIC32CM-LS00/svd/PIC32CM2532LS00100.svd"/>
            <memory id="IROM1"
                    start="0x00000000"
                    size="0x40000"
                    default="1"
                    startup="1"/>
            <memory id="IROM2" start="0x00400000" size="0x2000"/>
            <memory id="IRAM1" start="0x20000000" size="0x8000" default="1"/>
            <flashinfo name="Internal Flash (code) 256KB"
                       start="0x00000000"
                       blankval="0xFFFFFFFF"
                       pagesize="0x00000040"
                       ptime="100000"
                       etime="1000000">
               <block count="1024" size="0x100" arg="0"/>
               <!-- Sector Size 256B (1 row = 4 * page a 64 Byte) -->
            </flashinfo>
            <environment name="atmel">
               <at:extension xmlns:at="http://www.atmel.com/schemas/pack-device-atmel-extension"
                             schemaVersion="1.0">
                  <at:atdf name="PIC32CM-LS00/atdf/PIC32CM2532LS00100.atdf"/>
                  <at:variant ordercode="PIC32CM2532LS00100-I/PF"
                              vccmin="1.62"
                              vccmax="3.63"
                              tempmin="-40"
                              tempmax="85"/>
                  <at:variant ordercode="PIC32CM2532LS00100-E/PF"
                              vccmin="1.62"
                              vccmax="3.63"
                              tempmin="-40"
                              tempmax="125"/>
                  <at:memory name="FLASH"
                             start="0x00000000"
                             size="0x40000"
                             type="flash"
                             pagesize="64"
                             rw="RW"
                             exec="true"
                             address-space="base"/>
                  <at:memory name="AUX0"
                             start="0x00804000"
                             size="0x100"
                             type="fuses"
                             pagesize="64"
                             rw="RW"
                             address-space="base"/>
                  <at:memory name="AUX1"
                             start="0x00806000"
                             size="0x100"
                             type="fuses"
                             pagesize="64"
                             rw="RW"
                             address-space="base"/>
                  <at:memory name="AUX2"
                             start="0x00808000"
                             size="0x100"
                             type="fuses"
                             pagesize="64"
                             rw="RW"
                             address-space="base"/>
                  <at:memory name="AUX3"
                             start="0x0080A000"
                             size="0x100"
                             type="fuses"
                             pagesize="64"
                             rw="RW"
                             address-space="base"/>
                  <at:memory name="AUX4"
                             start="0x0080C000"
                             size="0x100"
                             type="fuses"
                             pagesize="64"
                             rw="RW"
                             address-space="base"/>
                  <at:memory name="AUX5"
                             start="0x0080E000"
                             size="0x100"
                             type="fuses"
                             pagesize="64"
                             rw="RW"
                             address-space="base"/>
                  <at:memory name="BOCOR"
                             start="0x0080C000"
                             size="0x100"
                             type="fuses"
                             pagesize="64"
                             rw="RW"
                             address-space="base"/>
                  <at:memory name="BOCOR1"
                             start="0x0080C008"
                             size="0x8"
                             type="fuses"
                             rw="R"
                             address-space="base"/>
                  <at:memory name="CAL"
                             start="0x00800000"
                             size="0x8"
                             type="fuses"
                             rw="R"
                             address-space="base"/>
                  <at:memory name="DATAFLASH"
                             start="0x00400000"
                             size="0x2000"
                             type="flash"
                             pagesize="64"
                             rw="RW"
                             address-space="base"/>
                  <at:memory name="LOCKROW"
                             start="0x00802000"
                             size="0x4"
                             type="fuses"
                             rw="R"
                             address-space="base"/>
                  <at:memory name="OTP1"
                             start="0x00806000"
                             size="0x8"
                             type="fuses"
                             rw="R"
                             address-space="base"/>
                  <at:memory name="OTP2"
                             start="0x00806008"
                             size="0x8"
                             type="fuses"
                             rw="R"
                             address-space="base"/>
                  <at:memory name="OTP3"
                             start="0x00806010"
                             size="0x8"
                             type="fuses"
                             rw="R"
                             address-space="base"/>
                  <at:memory name="OTP4"
                             start="0x00806018"
                             size="0x8"
                             type="fuses"
                             rw="R"
                             address-space="base"/>
                  <at:memory name="ROM"
                             start="0x00830000"
                             size="0x10000"
                             type="fuses"
                             pagesize="64"
                             rw="RW"
                             address-space="base"/>
                  <at:memory name="SHADOW"
                             start="0x00820000"
                             size="0x8"
                             type="fuses"
                             rw="R"
                             address-space="base"/>
                  <at:memory name="SW_CALIB"
                             start="0x00806020"
                             size="0x4"
                             type="fuses"
                             rw="R"
                             address-space="base"/>
                  <at:memory name="TLATCH"
                             start="0x00810000"
                             size="0x10000"
                             type="fuses"
                             pagesize="64"
                             rw="RW"
                             address-space="base"/>
                  <at:memory name="USER_PAGE"
                             start="0x00804000"
                             size="0x100"
                             type="user_page"
                             pagesize="64"
                             rw="RW"
                             address-space="base"/>
                  <at:memory name="HSRAM"
                             start="0x20000000"
                             size="0x8000"
                             type="ram"
                             rw="RW"
                             exec="true"
                             address-space="base"/>
                  <at:memory name="APBA"
                             start="0x40000000"
                             size="0x8000"
                             type="io"
                             rw="RW"
                             address-space="base"/>
                  <at:memory name="APBB"
                             start="0x41000000"
                             size="0x10000"
                             type="io"
                             rw="RW"
                             address-space="base"/>
                  <at:memory name="APBC"
                             start="0x42000000"
                             size="0x6000"
                             type="io"
                             rw="RW"
                             address-space="base"/>
                  <at:memory name="PPB"
                             start="0xE0000000"
                             size="0x100000"
                             type="io"
                             rw="RW"
                             address-space="base"/>
                  <at:interface type="swd" name="SWD"/>
                  <at:tool id="com.atmel.avrdbg.tool.atmelice"/>
                  <at:tool id="com.atmel.avrdbg.tool.edbg"/>
                  <at:tool id="com.atmel.avrdbg.tool.edbgc"/>
                  <at:tool id="com.atmel.avrdbg.tool.ice4"/>
                  <at:tool id="com.atmel.avrdbg.tool.jtagice3plus"/>
                  <at:tool id="com.atmel.avrdbg.tool.jtagicemk3"/>
                  <at:tool id="com.atmel.avrdbg.tool.medbg"/>
                  <at:tool id="com.atmel.avrdbg.tool.nedbg"/>
                  <at:tool id="com.atmel.avrdbg.tool.pickit4"/>
                  <at:tool id="com.atmel.avrdbg.tool.powerdebugger"/>
                  <at:tool id="com.atmel.avrdbg.tool.samice"/>
                  <at:tool id="com.atmel.avrdbg.tool.snap"/>
                  <at:project name="Barebone C Project">
                     <at:component Cvendor="ARM" Cclass="CMSIS" Cgroup="CORE"/>
                     <at:component Cvendor="Microchip" Cclass="Device" Cgroup="Startup">
                        <at:template select="Main file (.c)"/>
                     </at:component>
                  </at:project>
                  <at:project name="Barebone Cpp Project">
                     <at:component Cvendor="ARM" Cclass="CMSIS" Cgroup="CORE"/>
                     <at:component Cvendor="Microchip" Cclass="Device" Cgroup="Startup">
                        <at:template select="Main file (.cpp)"/>
                     </at:component>
                  </at:project>
                  <at:prerequisite context="compiling" Tcompiler="GCC" component="ARM-GCC"/>
                  <at:prerequisite context="compiling" Tcompiler="IAR" component="ARM-IAR"/>
                  <at:prerequisite context="compiling" Tcompiler="ARMCC" component="ARMCC"/>
               </at:extension>
            </environment>
            <environment name="microchip">
               <mchp:extension xmlns:mchp="http://crownking/pack-device-microchip-extension"
                               schemaVersion="1.0">
                  <mchp:pic name="PIC32CM-LS00/edc/PIC32CM2532LS00100.PIC"/>
                  <mchp:xc32 name="PIC32CM-LS00/xc32"/>
                  <mchp:hwtool type="mplab.mpheader">
                     <mchp:file name="PIC32CM-LS00/hwtools/mplab/MPHeader.xml"/>
                  </mchp:hwtool>
                  <mchp:hwtool type="mplab.pluginboardsupport">
                     <mchp:file name="PIC32CM-LS00/hwtools/mplab/PluginBoardSupport.xml"/>
                  </mchp:hwtool>
                  <mchp:hwtool type="sdm">
                     <mchp:file name="PIC32CM-LS00/hwtools/sdm/sdmSimulator.xml"/>
                     <mchp:file name="PIC32CM-LS00/hwtools/sdm/sdmCompilers.xml"/>
                     <mchp:file name="PIC32CM-LS00/hwtools/sdm/sdmRealICE4.xml"/>
                     <mchp:file name="PIC32CM-LS00/hwtools/sdm/sdmRealICE.xml"/>
                     <mchp:file name="PIC32CM-LS00/hwtools/sdm/sdmICD3.xml"/>
                     <mchp:file name="PIC32CM-LS00/hwtools/sdm/sdmICD4.xml"/>
                     <mchp:file name="PIC32CM-LS00/hwtools/sdm/sdmICE4.xml"/>
                     <mchp:file name="PIC32CM-LS00/hwtools/sdm/sdmDebuggerMap.xml"/>
                  </mchp:hwtool>
                  <mchp:hwtool type="persfr">
                     <mchp:file name="PIC32CM-LS00/hwtools/persfr/arm32.persfr"/>
                  </mchp:hwtool>
                  <mchp:prerequisite component="MPLAB X IDE" version="[5.20-"/>
               </mchp:extension>
            </environment>
            <book name="https://www.microchip.com/wwwproducts/Devices.aspx?product=PIC32CM2532LS00100"
                  title="Device page for PIC32CM2532LS00100"/>
            <book name="https://www.microchip.com/wwwproducts/productds/PIC32CM2532LS00100"
                  title="Datasheet"/>
         </device>
         <device Dname="PIC32CM5164LS00048">
            <processor Dcore="Cortex-M23"
                       Dendian="Little-endian"
                       Dmpu="MPU"
                       Dfpu="NO_FPU"
                       Dtz="TZ"/>
            <compile header="PIC32CM-LS00/include/pic32c.h" define="__PIC32CM5164LS00048__"/>
            <debug svd="PIC32CM-LS00/svd/PIC32CM5164LS00048.svd"/>
            <memory id="IROM1"
                    start="0x00000000"
                    size="0x80000"
                    default="1"
                    startup="1"/>
            <memory id="IROM2" start="0x00400000" size="0x4000"/>
            <memory id="IRAM1" start="0x20000000" size="0x10000" default="1"/>
            <flashinfo name="Internal Flash (code) 512KB"
                       start="0x00000000"
                       blankval="0xFFFFFFFF"
                       pagesize="0x00000040"
                       ptime="100000"
                       etime="1000000">
               <block count="2048" size="0x100" arg="0"/>
               <!-- Sector Size 256B (1 row = 4 * page a 64 Byte) -->
            </flashinfo>
            <environment name="atmel">
               <at:extension xmlns:at="http://www.atmel.com/schemas/pack-device-atmel-extension"
                             schemaVersion="1.0">
                  <at:atdf name="PIC32CM-LS00/atdf/PIC32CM5164LS00048.atdf"/>
                  <at:variant ordercode="PIC32CM5164LS00048-I/Y8X"
                              vccmin="1.62"
                              vccmax="3.63"
                              tempmin="-40"
                              tempmax="85"/>
                  <at:variant ordercode="PIC32CM5164LS00048-E/Y8X"
                              vccmin="1.62"
                              vccmax="3.63"
                              tempmin="-40"
                              tempmax="125"/>
                  <at:variant ordercode="PIC32CM5164LS00048-I/U5B"
                              vccmin="1.62"
                              vccmax="3.63"
                              tempmin="-40"
                              tempmax="85"/>
                  <at:variant ordercode="PIC32CM5164LS00048-E/U5B"
                              vccmin="1.62"
                              vccmax="3.63"
                              tempmin="-40"
                              tempmax="125"/>
                  <at:memory name="FLASH"
                             start="0x00000000"
                             size="0x80000"
                             type="flash"
                             pagesize="64"
                             rw="RW"
                             exec="true"
                             address-space="base"/>
                  <at:memory name="AUX0"
                             start="0x00804000"
                             size="0x100"
                             type="fuses"
                             pagesize="64"
                             rw="RW"
                             address-space="base"/>
                  <at:memory name="AUX1"
                             start="0x00806000"
                             size="0x100"
                             type="fuses"
                             pagesize="64"
                             rw="RW"
                             address-space="base"/>
                  <at:memory name="AUX2"
                             start="0x00808000"
                             size="0x100"
                             type="fuses"
                             pagesize="64"
                             rw="RW"
                             address-space="base"/>
                  <at:memory name="AUX3"
                             start="0x0080A000"
                             size="0x100"
                             type="fuses"
                             pagesize="64"
                             rw="RW"
                             address-space="base"/>
                  <at:memory name="AUX4"
                             start="0x0080C000"
                             size="0x100"
                             type="fuses"
                             pagesize="64"
                             rw="RW"
                             address-space="base"/>
                  <at:memory name="AUX5"
                             start="0x0080E000"
                             size="0x100"
                             type="fuses"
                             pagesize="64"
                             rw="RW"
                             address-space="base"/>
                  <at:memory name="BOCOR"
                             start="0x0080C000"
                             size="0x100"
                             type="fuses"
                             pagesize="64"
                             rw="RW"
                             address-space="base"/>
                  <at:memory name="BOCOR1"
                             start="0x0080C008"
                             size="0x8"
                             type="fuses"
                             rw="R"
                             address-space="base"/>
                  <at:memory name="CAL"
                             start="0x00800000"
                             size="0x8"
                             type="fuses"
                             rw="R"
                             address-space="base"/>
                  <at:memory name="DATAFLASH"
                             start="0x00400000"
                             size="0x4000"
                             type="flash"
                             pagesize="64"
                             rw="RW"
                             address-space="base"/>
                  <at:memory name="LOCKROW"
                             start="0x00802000"
                             size="0x4"
                             type="fuses"
                             rw="R"
                             address-space="base"/>
                  <at:memory name="OTP1"
                             start="0x00806000"
                             size="0x8"
                             type="fuses"
                             rw="R"
                             address-space="base"/>
                  <at:memory name="OTP2"
                             start="0x00806008"
                             size="0x8"
                             type="fuses"
                             rw="R"
                             address-space="base"/>
                  <at:memory name="OTP3"
                             start="0x00806010"
                             size="0x8"
                             type="fuses"
                             rw="R"
                             address-space="base"/>
                  <at:memory name="OTP4"
                             start="0x00806018"
                             size="0x8"
                             type="fuses"
                             rw="R"
                             address-space="base"/>
                  <at:memory name="ROM"
                             start="0x00830000"
                             size="0x10000"
                             type="fuses"
                             pagesize="64"
                             rw="RW"
                             address-space="base"/>
                  <at:memory name="SHADOW"
                             start="0x00820000"
                             size="0x8"
                             type="fuses"
                             rw="R"
                             address-space="base"/>
                  <at:memory name="SW_CALIB"
                             start="0x00806020"
                             size="0x4"
                             type="fuses"
                             rw="R"
                             address-space="base"/>
                  <at:memory name="TLATCH"
                             start="0x00810000"
                             size="0x10000"
                             type="fuses"
                             pagesize="64"
                             rw="RW"
                             address-space="base"/>
                  <at:memory name="USER_PAGE"
                             start="0x00804000"
                             size="0x100"
                             type="user_page"
                             pagesize="64"
                             rw="RW"
                             address-space="base"/>
                  <at:memory name="HSRAM"
                             start="0x20000000"
                             size="0x10000"
                             type="ram"
                             rw="RW"
                             exec="true"
                             address-space="base"/>
                  <at:memory name="APBA"
                             start="0x40000000"
                             size="0x8000"
                             type="io"
                             rw="RW"
                             address-space="base"/>
                  <at:memory name="APBB"
                             start="0x41000000"
                             size="0x10000"
                             type="io"
                             rw="RW"
                             address-space="base"/>
                  <at:memory name="APBC"
                             start="0x42000000"
                             size="0x6000"
                             type="io"
                             rw="RW"
                             address-space="base"/>
                  <at:memory name="PPB"
                             start="0xE0000000"
                             size="0x100000"
                             type="io"
                             rw="RW"
                             address-space="base"/>
                  <at:interface type="swd" name="SWD"/>
                  <at:tool id="com.atmel.avrdbg.tool.atmelice"/>
                  <at:tool id="com.atmel.avrdbg.tool.edbg"/>
                  <at:tool id="com.atmel.avrdbg.tool.edbgc"/>
                  <at:tool id="com.atmel.avrdbg.tool.ice4"/>
                  <at:tool id="com.atmel.avrdbg.tool.jtagice3plus"/>
                  <at:tool id="com.atmel.avrdbg.tool.jtagicemk3"/>
                  <at:tool id="com.atmel.avrdbg.tool.medbg"/>
                  <at:tool id="com.atmel.avrdbg.tool.nedbg"/>
                  <at:tool id="com.atmel.avrdbg.tool.pickit4"/>
                  <at:tool id="com.atmel.avrdbg.tool.powerdebugger"/>
                  <at:tool id="com.atmel.avrdbg.tool.samice"/>
                  <at:tool id="com.atmel.avrdbg.tool.snap"/>
                  <at:project name="Barebone C Project">
                     <at:component Cvendor="ARM" Cclass="CMSIS" Cgroup="CORE"/>
                     <at:component Cvendor="Microchip" Cclass="Device" Cgroup="Startup">
                        <at:template select="Main file (.c)"/>
                     </at:component>
                  </at:project>
                  <at:project name="Barebone Cpp Project">
                     <at:component Cvendor="ARM" Cclass="CMSIS" Cgroup="CORE"/>
                     <at:component Cvendor="Microchip" Cclass="Device" Cgroup="Startup">
                        <at:template select="Main file (.cpp)"/>
                     </at:component>
                  </at:project>
                  <at:prerequisite context="compiling" Tcompiler="GCC" component="ARM-GCC"/>
                  <at:prerequisite context="compiling" Tcompiler="IAR" component="ARM-IAR"/>
                  <at:prerequisite context="compiling" Tcompiler="ARMCC" component="ARMCC"/>
               </at:extension>
            </environment>
            <environment name="microchip">
               <mchp:extension xmlns:mchp="http://crownking/pack-device-microchip-extension"
                               schemaVersion="1.0">
                  <mchp:pic name="PIC32CM-LS00/edc/PIC32CM5164LS00048.PIC"/>
                  <mchp:xc32 name="PIC32CM-LS00/xc32"/>
                  <mchp:hwtool type="mplab.mpheader">
                     <mchp:file name="PIC32CM-LS00/hwtools/mplab/MPHeader.xml"/>
                  </mchp:hwtool>
                  <mchp:hwtool type="mplab.pluginboardsupport">
                     <mchp:file name="PIC32CM-LS00/hwtools/mplab/PluginBoardSupport.xml"/>
                  </mchp:hwtool>
                  <mchp:hwtool type="sdm">
                     <mchp:file name="PIC32CM-LS00/hwtools/sdm/sdmSimulator.xml"/>
                     <mchp:file name="PIC32CM-LS00/hwtools/sdm/sdmCompilers.xml"/>
                     <mchp:file name="PIC32CM-LS00/hwtools/sdm/sdmRealICE4.xml"/>
                     <mchp:file name="PIC32CM-LS00/hwtools/sdm/sdmRealICE.xml"/>
                     <mchp:file name="PIC32CM-LS00/hwtools/sdm/sdmICD3.xml"/>
                     <mchp:file name="PIC32CM-LS00/hwtools/sdm/sdmICD4.xml"/>
                     <mchp:file name="PIC32CM-LS00/hwtools/sdm/sdmICE4.xml"/>
                     <mchp:file name="PIC32CM-LS00/hwtools/sdm/sdmDebuggerMap.xml"/>
                  </mchp:hwtool>
                  <mchp:hwtool type="persfr">
                     <mchp:file name="PIC32CM-LS00/hwtools/persfr/arm32.persfr"/>
                  </mchp:hwtool>
                  <mchp:prerequisite component="MPLAB X IDE" version="[5.20-"/>
               </mchp:extension>
            </environment>
            <book name="https://www.microchip.com/wwwproducts/Devices.aspx?product=PIC32CM5164LS00048"
                  title="Device page for PIC32CM5164LS00048"/>
            <book name="https://www.microchip.com/wwwproducts/productds/PIC32CM5164LS00048"
                  title="Datasheet"/>
         </device>
         <device Dname="PIC32CM5164LS00064">
            <processor Dcore="Cortex-M23"
                       Dendian="Little-endian"
                       Dmpu="MPU"
                       Dfpu="NO_FPU"
                       Dtz="TZ"/>
            <compile header="PIC32CM-LS00/include/pic32c.h" define="__PIC32CM5164LS00064__"/>
            <debug svd="PIC32CM-LS00/svd/PIC32CM5164LS00064.svd"/>
            <memory id="IROM1"
                    start="0x00000000"
                    size="0x80000"
                    default="1"
                    startup="1"/>
            <memory id="IROM2" start="0x00400000" size="0x4000"/>
            <memory id="IRAM1" start="0x20000000" size="0x10000" default="1"/>
            <flashinfo name="Internal Flash (code) 512KB"
                       start="0x00000000"
                       blankval="0xFFFFFFFF"
                       pagesize="0x00000040"
                       ptime="100000"
                       etime="1000000">
               <block count="2048" size="0x100" arg="0"/>
               <!-- Sector Size 256B (1 row = 4 * page a 64 Byte) -->
            </flashinfo>
            <environment name="atmel">
               <at:extension xmlns:at="http://www.atmel.com/schemas/pack-device-atmel-extension"
                             schemaVersion="1.0">
                  <at:atdf name="PIC32CM-LS00/atdf/PIC32CM5164LS00064.atdf"/>
                  <at:variant ordercode="PIC32CM5164LS00064-I/PT"
                              vccmin="1.62"
                              vccmax="3.63"
                              tempmin="-40"
                              tempmax="85"/>
                  <at:variant ordercode="PIC32CM5164LS00064-E/PT"
                              vccmin="1.62"
                              vccmax="3.63"
                              tempmin="-40"
                              tempmax="125"/>
                  <at:variant ordercode="PIC32CM5164LS00064-I/5LX"
                              vccmin="1.62"
                              vccmax="3.63"
                              tempmin="-40"
                              tempmax="85"/>
                  <at:variant ordercode="PIC32CM5164LS00064-E/5LX"
                              vccmin="1.62"
                              vccmax="3.63"
                              tempmin="-40"
                              tempmax="125"/>
                  <at:memory name="FLASH"
                             start="0x00000000"
                             size="0x80000"
                             type="flash"
                             pagesize="64"
                             rw="RW"
                             exec="true"
                             address-space="base"/>
                  <at:memory name="AUX0"
                             start="0x00804000"
                             size="0x100"
                             type="fuses"
                             pagesize="64"
                             rw="RW"
                             address-space="base"/>
                  <at:memory name="AUX1"
                             start="0x00806000"
                             size="0x100"
                             type="fuses"
                             pagesize="64"
                             rw="RW"
                             address-space="base"/>
                  <at:memory name="AUX2"
                             start="0x00808000"
                             size="0x100"
                             type="fuses"
                             pagesize="64"
                             rw="RW"
                             address-space="base"/>
                  <at:memory name="AUX3"
                             start="0x0080A000"
                             size="0x100"
                             type="fuses"
                             pagesize="64"
                             rw="RW"
                             address-space="base"/>
                  <at:memory name="AUX4"
                             start="0x0080C000"
                             size="0x100"
                             type="fuses"
                             pagesize="64"
                             rw="RW"
                             address-space="base"/>
                  <at:memory name="AUX5"
                             start="0x0080E000"
                             size="0x100"
                             type="fuses"
                             pagesize="64"
                             rw="RW"
                             address-space="base"/>
                  <at:memory name="BOCOR"
                             start="0x0080C000"
                             size="0x100"
                             type="fuses"
                             pagesize="64"
                             rw="RW"
                             address-space="base"/>
                  <at:memory name="BOCOR1"
                             start="0x0080C008"
                             size="0x8"
                             type="fuses"
                             rw="R"
                             address-space="base"/>
                  <at:memory name="CAL"
                             start="0x00800000"
                             size="0x8"
                             type="fuses"
                             rw="R"
                             address-space="base"/>
                  <at:memory name="DATAFLASH"
                             start="0x00400000"
                             size="0x4000"
                             type="flash"
                             pagesize="64"
                             rw="RW"
                             address-space="base"/>
                  <at:memory name="LOCKROW"
                             start="0x00802000"
                             size="0x4"
                             type="fuses"
                             rw="R"
                             address-space="base"/>
                  <at:memory name="OTP1"
                             start="0x00806000"
                             size="0x8"
                             type="fuses"
                             rw="R"
                             address-space="base"/>
                  <at:memory name="OTP2"
                             start="0x00806008"
                             size="0x8"
                             type="fuses"
                             rw="R"
                             address-space="base"/>
                  <at:memory name="OTP3"
                             start="0x00806010"
                             size="0x8"
                             type="fuses"
                             rw="R"
                             address-space="base"/>
                  <at:memory name="OTP4"
                             start="0x00806018"
                             size="0x8"
                             type="fuses"
                             rw="R"
                             address-space="base"/>
                  <at:memory name="ROM"
                             start="0x00830000"
                             size="0x10000"
                             type="fuses"
                             pagesize="64"
                             rw="RW"
                             address-space="base"/>
                  <at:memory name="SHADOW"
                             start="0x00820000"
                             size="0x8"
                             type="fuses"
                             rw="R"
                             address-space="base"/>
                  <at:memory name="SW_CALIB"
                             start="0x00806020"
                             size="0x4"
                             type="fuses"
                             rw="R"
                             address-space="base"/>
                  <at:memory name="TLATCH"
                             start="0x00810000"
                             size="0x10000"
                             type="fuses"
                             pagesize="64"
                             rw="RW"
                             address-space="base"/>
                  <at:memory name="USER_PAGE"
                             start="0x00804000"
                             size="0x100"
                             type="user_page"
                             pagesize="64"
                             rw="RW"
                             address-space="base"/>
                  <at:memory name="HSRAM"
                             start="0x20000000"
                             size="0x10000"
                             type="ram"
                             rw="RW"
                             exec="true"
                             address-space="base"/>
                  <at:memory name="APBA"
                             start="0x40000000"
                             size="0x8000"
                             type="io"
                             rw="RW"
                             address-space="base"/>
                  <at:memory name="APBB"
                             start="0x41000000"
                             size="0x10000"
                             type="io"
                             rw="RW"
                             address-space="base"/>
                  <at:memory name="APBC"
                             start="0x42000000"
                             size="0x6000"
                             type="io"
                             rw="RW"
                             address-space="base"/>
                  <at:memory name="PPB"
                             start="0xE0000000"
                             size="0x100000"
                             type="io"
                             rw="RW"
                             address-space="base"/>
                  <at:interface type="swd" name="SWD"/>
                  <at:tool id="com.atmel.avrdbg.tool.atmelice"/>
                  <at:tool id="com.atmel.avrdbg.tool.edbg"/>
                  <at:tool id="com.atmel.avrdbg.tool.edbgc"/>
                  <at:tool id="com.atmel.avrdbg.tool.ice4"/>
                  <at:tool id="com.atmel.avrdbg.tool.jtagice3plus"/>
                  <at:tool id="com.atmel.avrdbg.tool.jtagicemk3"/>
                  <at:tool id="com.atmel.avrdbg.tool.medbg"/>
                  <at:tool id="com.atmel.avrdbg.tool.nedbg"/>
                  <at:tool id="com.atmel.avrdbg.tool.pickit4"/>
                  <at:tool id="com.atmel.avrdbg.tool.powerdebugger"/>
                  <at:tool id="com.atmel.avrdbg.tool.samice"/>
                  <at:tool id="com.atmel.avrdbg.tool.snap"/>
                  <at:project name="Barebone C Project">
                     <at:component Cvendor="ARM" Cclass="CMSIS" Cgroup="CORE"/>
                     <at:component Cvendor="Microchip" Cclass="Device" Cgroup="Startup">
                        <at:template select="Main file (.c)"/>
                     </at:component>
                  </at:project>
                  <at:project name="Barebone Cpp Project">
                     <at:component Cvendor="ARM" Cclass="CMSIS" Cgroup="CORE"/>
                     <at:component Cvendor="Microchip" Cclass="Device" Cgroup="Startup">
                        <at:template select="Main file (.cpp)"/>
                     </at:component>
                  </at:project>
                  <at:prerequisite context="compiling" Tcompiler="GCC" component="ARM-GCC"/>
                  <at:prerequisite context="compiling" Tcompiler="IAR" component="ARM-IAR"/>
                  <at:prerequisite context="compiling" Tcompiler="ARMCC" component="ARMCC"/>
               </at:extension>
            </environment>
            <environment name="microchip">
               <mchp:extension xmlns:mchp="http://crownking/pack-device-microchip-extension"
                               schemaVersion="1.0">
                  <mchp:pic name="PIC32CM-LS00/edc/PIC32CM5164LS00064.PIC"/>
                  <mchp:xc32 name="PIC32CM-LS00/xc32"/>
                  <mchp:hwtool type="mplab.mpheader">
                     <mchp:file name="PIC32CM-LS00/hwtools/mplab/MPHeader.xml"/>
                  </mchp:hwtool>
                  <mchp:hwtool type="mplab.pluginboardsupport">
                     <mchp:file name="PIC32CM-LS00/hwtools/mplab/PluginBoardSupport.xml"/>
                  </mchp:hwtool>
                  <mchp:hwtool type="sdm">
                     <mchp:file name="PIC32CM-LS00/hwtools/sdm/sdmSimulator.xml"/>
                     <mchp:file name="PIC32CM-LS00/hwtools/sdm/sdmCompilers.xml"/>
                     <mchp:file name="PIC32CM-LS00/hwtools/sdm/sdmRealICE4.xml"/>
                     <mchp:file name="PIC32CM-LS00/hwtools/sdm/sdmRealICE.xml"/>
                     <mchp:file name="PIC32CM-LS00/hwtools/sdm/sdmICD3.xml"/>
                     <mchp:file name="PIC32CM-LS00/hwtools/sdm/sdmICD4.xml"/>
                     <mchp:file name="PIC32CM-LS00/hwtools/sdm/sdmICE4.xml"/>
                     <mchp:file name="PIC32CM-LS00/hwtools/sdm/sdmDebuggerMap.xml"/>
                  </mchp:hwtool>
                  <mchp:hwtool type="persfr">
                     <mchp:file name="PIC32CM-LS00/hwtools/persfr/arm32.persfr"/>
                  </mchp:hwtool>
                  <mchp:prerequisite component="MPLAB X IDE" version="[5.20-"/>
               </mchp:extension>
            </environment>
            <book name="https://www.microchip.com/wwwproducts/Devices.aspx?product=PIC32CM5164LS00064"
                  title="Device page for PIC32CM5164LS00064"/>
            <book name="https://www.microchip.com/wwwproducts/productds/PIC32CM5164LS00064"
                  title="Datasheet"/>
         </device>
         <device Dname="PIC32CM5164LS00100">
            <processor Dcore="Cortex-M23"
                       Dendian="Little-endian"
                       Dmpu="MPU"
                       Dfpu="NO_FPU"
                       Dtz="TZ"/>
            <compile header="PIC32CM-LS00/include/pic32c.h" define="__PIC32CM5164LS00100__"/>
            <debug svd="PIC32CM-LS00/svd/PIC32CM5164LS00100.svd"/>
            <memory id="IROM1"
                    start="0x00000000"
                    size="0x80000"
                    default="1"
                    startup="1"/>
            <memory id="IROM2" start="0x00400000" size="0x4000"/>
            <memory id="IRAM1" start="0x20000000" size="0x10000" default="1"/>
            <flashinfo name="Internal Flash (code) 512KB"
                       start="0x00000000"
                       blankval="0xFFFFFFFF"
                       pagesize="0x00000040"
                       ptime="100000"
                       etime="1000000">
               <block count="2048" size="0x100" arg="0"/>
               <!-- Sector Size 256B (1 row = 4 * page a 64 Byte) -->
            </flashinfo>
            <environment name="atmel">
               <at:extension xmlns:at="http://www.atmel.com/schemas/pack-device-atmel-extension"
                             schemaVersion="1.0">
                  <at:atdf name="PIC32CM-LS00/atdf/PIC32CM5164LS00100.atdf"/>
                  <at:variant ordercode="PIC32CM5164LS00100-I/PF"
                              vccmin="1.62"
                              vccmax="3.63"
                              tempmin="-40"
                              tempmax="85"/>
                  <at:variant ordercode="PIC32CM5164LS00100-E/PF"
                              vccmin="1.62"
                              vccmax="3.63"
                              tempmin="-40"
                              tempmax="125"/>
                  <at:memory name="FLASH"
                             start="0x00000000"
                             size="0x80000"
                             type="flash"
                             pagesize="64"
                             rw="RW"
                             exec="true"
                             address-space="base"/>
                  <at:memory name="AUX0"
                             start="0x00804000"
                             size="0x100"
                             type="fuses"
                             pagesize="64"
                             rw="RW"
                             address-space="base"/>
                  <at:memory name="AUX1"
                             start="0x00806000"
                             size="0x100"
                             type="fuses"
                             pagesize="64"
                             rw="RW"
                             address-space="base"/>
                  <at:memory name="AUX2"
                             start="0x00808000"
                             size="0x100"
                             type="fuses"
                             pagesize="64"
                             rw="RW"
                             address-space="base"/>
                  <at:memory name="AUX3"
                             start="0x0080A000"
                             size="0x100"
                             type="fuses"
                             pagesize="64"
                             rw="RW"
                             address-space="base"/>
                  <at:memory name="AUX4"
                             start="0x0080C000"
                             size="0x100"
                             type="fuses"
                             pagesize="64"
                             rw="RW"
                             address-space="base"/>
                  <at:memory name="AUX5"
                             start="0x0080E000"
                             size="0x100"
                             type="fuses"
                             pagesize="64"
                             rw="RW"
                             address-space="base"/>
                  <at:memory name="BOCOR"
                             start="0x0080C000"
                             size="0x100"
                             type="fuses"
                             pagesize="64"
                             rw="RW"
                             address-space="base"/>
                  <at:memory name="BOCOR1"
                             start="0x0080C008"
                             size="0x8"
                             type="fuses"
                             rw="R"
                             address-space="base"/>
                  <at:memory name="CAL"
                             start="0x00800000"
                             size="0x8"
                             type="fuses"
                             rw="R"
                             address-space="base"/>
                  <at:memory name="DATAFLASH"
                             start="0x00400000"
                             size="0x4000"
                             type="flash"
                             pagesize="64"
                             rw="RW"
                             address-space="base"/>
                  <at:memory name="LOCKROW"
                             start="0x00802000"
                             size="0x4"
                             type="fuses"
                             rw="R"
                             address-space="base"/>
                  <at:memory name="OTP1"
                             start="0x00806000"
                             size="0x8"
                             type="fuses"
                             rw="R"
                             address-space="base"/>
                  <at:memory name="OTP2"
                             start="0x00806008"
                             size="0x8"
                             type="fuses"
                             rw="R"
                             address-space="base"/>
                  <at:memory name="OTP3"
                             start="0x00806010"
                             size="0x8"
                             type="fuses"
                             rw="R"
                             address-space="base"/>
                  <at:memory name="OTP4"
                             start="0x00806018"
                             size="0x8"
                             type="fuses"
                             rw="R"
                             address-space="base"/>
                  <at:memory name="ROM"
                             start="0x00830000"
                             size="0x10000"
                             type="fuses"
                             pagesize="64"
                             rw="RW"
                             address-space="base"/>
                  <at:memory name="SHADOW"
                             start="0x00820000"
                             size="0x8"
                             type="fuses"
                             rw="R"
                             address-space="base"/>
                  <at:memory name="SW_CALIB"
                             start="0x00806020"
                             size="0x4"
                             type="fuses"
                             rw="R"
                             address-space="base"/>
                  <at:memory name="TLATCH"
                             start="0x00810000"
                             size="0x10000"
                             type="fuses"
                             pagesize="64"
                             rw="RW"
                             address-space="base"/>
                  <at:memory name="USER_PAGE"
                             start="0x00804000"
                             size="0x100"
                             type="user_page"
                             pagesize="64"
                             rw="RW"
                             address-space="base"/>
                  <at:memory name="HSRAM"
                             start="0x20000000"
                             size="0x10000"
                             type="ram"
                             rw="RW"
                             exec="true"
                             address-space="base"/>
                  <at:memory name="APBA"
                             start="0x40000000"
                             size="0x8000"
                             type="io"
                             rw="RW"
                             address-space="base"/>
                  <at:memory name="APBB"
                             start="0x41000000"
                             size="0x10000"
                             type="io"
                             rw="RW"
                             address-space="base"/>
                  <at:memory name="APBC"
                             start="0x42000000"
                             size="0x6000"
                             type="io"
                             rw="RW"
                             address-space="base"/>
                  <at:memory name="PPB"
                             start="0xE0000000"
                             size="0x100000"
                             type="io"
                             rw="RW"
                             address-space="base"/>
                  <at:interface type="swd" name="SWD"/>
                  <at:tool id="com.atmel.avrdbg.tool.atmelice"/>
                  <at:tool id="com.atmel.avrdbg.tool.edbg"/>
                  <at:tool id="com.atmel.avrdbg.tool.edbgc"/>
                  <at:tool id="com.atmel.avrdbg.tool.ice4"/>
                  <at:tool id="com.atmel.avrdbg.tool.jtagice3plus"/>
                  <at:tool id="com.atmel.avrdbg.tool.jtagicemk3"/>
                  <at:tool id="com.atmel.avrdbg.tool.medbg"/>
                  <at:tool id="com.atmel.avrdbg.tool.nedbg"/>
                  <at:tool id="com.atmel.avrdbg.tool.pickit4"/>
                  <at:tool id="com.atmel.avrdbg.tool.powerdebugger"/>
                  <at:tool id="com.atmel.avrdbg.tool.samice"/>
                  <at:tool id="com.atmel.avrdbg.tool.snap"/>
                  <at:project name="Barebone C Project">
                     <at:component Cvendor="ARM" Cclass="CMSIS" Cgroup="CORE"/>
                     <at:component Cvendor="Microchip" Cclass="Device" Cgroup="Startup">
                        <at:template select="Main file (.c)"/>
                     </at:component>
                  </at:project>
                  <at:project name="Barebone Cpp Project">
                     <at:component Cvendor="ARM" Cclass="CMSIS" Cgroup="CORE"/>
                     <at:component Cvendor="Microchip" Cclass="Device" Cgroup="Startup">
                        <at:template select="Main file (.cpp)"/>
                     </at:component>
                  </at:project>
                  <at:prerequisite context="compiling" Tcompiler="GCC" component="ARM-GCC"/>
                  <at:prerequisite context="compiling" Tcompiler="IAR" component="ARM-IAR"/>
                  <at:prerequisite context="compiling" Tcompiler="ARMCC" component="ARMCC"/>
               </at:extension>
            </environment>
            <environment name="microchip">
               <mchp:extension xmlns:mchp="http://crownking/pack-device-microchip-extension"
                               schemaVersion="1.0">
                  <mchp:pic name="PIC32CM-LS00/edc/PIC32CM5164LS00100.PIC"/>
                  <mchp:xc32 name="PIC32CM-LS00/xc32"/>
                  <mchp:hwtool type="mplab.mpheader">
                     <mchp:file name="PIC32CM-LS00/hwtools/mplab/MPHeader.xml"/>
                  </mchp:hwtool>
                  <mchp:hwtool type="mplab.pluginboardsupport">
                     <mchp:file name="PIC32CM-LS00/hwtools/mplab/PluginBoardSupport.xml"/>
                  </mchp:hwtool>
                  <mchp:hwtool type="sdm">
                     <mchp:file name="PIC32CM-LS00/hwtools/sdm/sdmSimulator.xml"/>
                     <mchp:file name="PIC32CM-LS00/hwtools/sdm/sdmCompilers.xml"/>
                     <mchp:file name="PIC32CM-LS00/hwtools/sdm/sdmRealICE4.xml"/>
                     <mchp:file name="PIC32CM-LS00/hwtools/sdm/sdmRealICE.xml"/>
                     <mchp:file name="PIC32CM-LS00/hwtools/sdm/sdmICD3.xml"/>
                     <mchp:file name="PIC32CM-LS00/hwtools/sdm/sdmICD4.xml"/>
                     <mchp:file name="PIC32CM-LS00/hwtools/sdm/sdmICE4.xml"/>
                     <mchp:file name="PIC32CM-LS00/hwtools/sdm/sdmDebuggerMap.xml"/>
                  </mchp:hwtool>
                  <mchp:hwtool type="persfr">
                     <mchp:file name="PIC32CM-LS00/hwtools/persfr/arm32.persfr"/>
                  </mchp:hwtool>
                  <mchp:prerequisite component="MPLAB X IDE" version="[5.20-"/>
               </mchp:extension>
            </environment>
            <book name="https://www.microchip.com/wwwproducts/Devices.aspx?product=PIC32CM5164LS00100"
                  title="Device page for PIC32CM5164LS00100"/>
            <book name="https://www.microchip.com/wwwproducts/productds/PIC32CM5164LS00100"
                  title="Datasheet"/>
         </device>
         <device Dname="PIC32CM5164LS60048">
            <processor Dcore="Cortex-M23"
                       Dendian="Little-endian"
                       Dmpu="MPU"
                       Dfpu="NO_FPU"
                       Dtz="TZ"/>
            <compile header="PIC32CM-LS60/include/pic32c.h" define="__PIC32CM5164LS60048__"/>
            <debug svd="PIC32CM-LS60/svd/PIC32CM5164LS60048.svd"/>
            <memory id="IROM1"
                    start="0x00000000"
                    size="0x80000"
                    default="1"
                    startup="1"/>
            <memory id="IROM2" start="0x00400000" size="0x4000"/>
            <memory id="IRAM1" start="0x20000000" size="0x10000" default="1"/>
            <flashinfo name="Internal Flash (code) 512KB"
                       start="0x00000000"
                       blankval="0xFFFFFFFF"
                       pagesize="0x00000040"
                       ptime="100000"
                       etime="1000000">
               <block count="2048" size="0x100" arg="0"/>
               <!-- Sector Size 256B (1 row = 4 * page a 64 Byte) -->
            </flashinfo>
            <environment name="atmel">
               <at:extension xmlns:at="http://www.atmel.com/schemas/pack-device-atmel-extension"
                             schemaVersion="1.0">
                  <at:atdf name="PIC32CM-LS60/atdf/PIC32CM5164LS60048.atdf"/>
                  <at:variant ordercode="PIC32CM5164LS60048-I/U5B"
                              vccmin="2.0"
                              vccmax="3.63"
                              tempmin="-40"
                              tempmax="85"/>
                  <at:memory name="FLASH"
                             start="0x00000000"
                             size="0x80000"
                             type="flash"
                             pagesize="64"
                             rw="RW"
                             exec="true"
                             address-space="base"/>
                  <at:memory name="AUX0"
                             start="0x00804000"
                             size="0x100"
                             type="fuses"
                             pagesize="64"
                             rw="RW"
                             address-space="base"/>
                  <at:memory name="AUX1"
                             start="0x00806000"
                             size="0x100"
                             type="fuses"
                             pagesize="64"
                             rw="RW"
                             address-space="base"/>
                  <at:memory name="AUX2"
                             start="0x00808000"
                             size="0x100"
                             type="fuses"
                             pagesize="64"
                             rw="RW"
                             address-space="base"/>
                  <at:memory name="AUX3"
                             start="0x0080A000"
                             size="0x100"
                             type="fuses"
                             pagesize="64"
                             rw="RW"
                             address-space="base"/>
                  <at:memory name="AUX4"
                             start="0x0080C000"
                             size="0x100"
                             type="fuses"
                             pagesize="64"
                             rw="RW"
                             address-space="base"/>
                  <at:memory name="AUX5"
                             start="0x0080E000"
                             size="0x100"
                             type="fuses"
                             pagesize="64"
                             rw="RW"
                             address-space="base"/>
                  <at:memory name="BOCOR"
                             start="0x0080C000"
                             size="0x100"
                             type="fuses"
                             pagesize="64"
                             rw="RW"
                             address-space="base"/>
                  <at:memory name="BOCOR1"
                             start="0x0080C008"
                             size="0x8"
                             type="fuses"
                             rw="R"
                             address-space="base"/>
                  <at:memory name="CAL"
                             start="0x00800000"
                             size="0x8"
                             type="fuses"
                             rw="R"
                             address-space="base"/>
                  <at:memory name="DATAFLASH"
                             start="0x00400000"
                             size="0x4000"
                             type="flash"
                             pagesize="64"
                             rw="RW"
                             address-space="base"/>
                  <at:memory name="LOCKROW"
                             start="0x00802000"
                             size="0x4"
                             type="fuses"
                             rw="R"
                             address-space="base"/>
                  <at:memory name="OTP1"
                             start="0x00806000"
                             size="0x8"
                             type="fuses"
                             rw="R"
                             address-space="base"/>
                  <at:memory name="OTP2"
                             start="0x00806008"
                             size="0x8"
                             type="fuses"
                             rw="R"
                             address-space="base"/>
                  <at:memory name="OTP3"
                             start="0x00806010"
                             size="0x8"
                             type="fuses"
                             rw="R"
                             address-space="base"/>
                  <at:memory name="OTP4"
                             start="0x00806018"
                             size="0x8"
                             type="fuses"
                             rw="R"
                             address-space="base"/>
                  <at:memory name="ROM"
                             start="0x00830000"
                             size="0x10000"
                             type="fuses"
                             pagesize="64"
                             rw="RW"
                             address-space="base"/>
                  <at:memory name="SHADOW"
                             start="0x00820000"
                             size="0x8"
                             type="fuses"
                             rw="R"
                             address-space="base"/>
                  <at:memory name="SW_CALIB"
                             start="0x00806020"
                             size="0x4"
                             type="fuses"
                             rw="R"
                             address-space="base"/>
                  <at:memory name="TLATCH"
                             start="0x00810000"
                             size="0x10000"
                             type="fuses"
                             pagesize="64"
                             rw="RW"
                             address-space="base"/>
                  <at:memory name="USER_PAGE"
                             start="0x00804000"
                             size="0x100"
                             type="user_page"
                             pagesize="64"
                             rw="RW"
                             address-space="base"/>
                  <at:memory name="HSRAM"
                             start="0x20000000"
                             size="0x10000"
                             type="ram"
                             rw="RW"
                             exec="true"
                             address-space="base"/>
                  <at:memory name="APBA"
                             start="0x40000000"
                             size="0x8000"
                             type="io"
                             rw="RW"
                             address-space="base"/>
                  <at:memory name="APBB"
                             start="0x41000000"
                             size="0x10000"
                             type="io"
                             rw="RW"
                             address-space="base"/>
                  <at:memory name="APBC"
                             start="0x42000000"
                             size="0x6000"
                             type="io"
                             rw="RW"
                             address-space="base"/>
                  <at:memory name="PPB"
                             start="0xE0000000"
                             size="0x100000"
                             type="io"
                             rw="RW"
                             address-space="base"/>
                  <at:interface type="swd" name="SWD"/>
                  <at:tool id="com.atmel.avrdbg.tool.atmelice"/>
                  <at:tool id="com.atmel.avrdbg.tool.edbg"/>
                  <at:tool id="com.atmel.avrdbg.tool.edbgc"/>
                  <at:tool id="com.atmel.avrdbg.tool.ice4"/>
                  <at:tool id="com.atmel.avrdbg.tool.jtagice3plus"/>
                  <at:tool id="com.atmel.avrdbg.tool.jtagicemk3"/>
                  <at:tool id="com.atmel.avrdbg.tool.medbg"/>
                  <at:tool id="com.atmel.avrdbg.tool.nedbg"/>
                  <at:tool id="com.atmel.avrdbg.tool.pickit4"/>
                  <at:tool id="com.atmel.avrdbg.tool.powerdebugger"/>
                  <at:tool id="com.atmel.avrdbg.tool.samice"/>
                  <at:tool id="com.atmel.avrdbg.tool.snap"/>
                  <at:project name="Barebone C Project">
                     <at:component Cvendor="ARM" Cclass="CMSIS" Cgroup="CORE"/>
                     <at:component Cvendor="Microchip" Cclass="Device" Cgroup="Startup">
                        <at:template select="Main file (.c)"/>
                     </at:component>
                  </at:project>
                  <at:project name="Barebone Cpp Project">
                     <at:component Cvendor="ARM" Cclass="CMSIS" Cgroup="CORE"/>
                     <at:component Cvendor="Microchip" Cclass="Device" Cgroup="Startup">
                        <at:template select="Main file (.cpp)"/>
                     </at:component>
                  </at:project>
                  <at:prerequisite context="compiling" Tcompiler="GCC" component="ARM-GCC"/>
                  <at:prerequisite context="compiling" Tcompiler="IAR" component="ARM-IAR"/>
                  <at:prerequisite context="compiling" Tcompiler="ARMCC" component="ARMCC"/>
               </at:extension>
            </environment>
            <environment name="microchip">
               <mchp:extension xmlns:mchp="http://crownking/pack-device-microchip-extension"
                               schemaVersion="1.0">
                  <mchp:pic name="PIC32CM-LS60/edc/PIC32CM5164LS60048.PIC"/>
                  <mchp:xc32 name="PIC32CM-LS60/xc32"/>
                  <mchp:hwtool type="mplab.mpheader">
                     <mchp:file name="PIC32CM-LS60/hwtools/mplab/MPHeader.xml"/>
                  </mchp:hwtool>
                  <mchp:hwtool type="mplab.pluginboardsupport">
                     <mchp:file name="PIC32CM-LS60/hwtools/mplab/PluginBoardSupport.xml"/>
                  </mchp:hwtool>
                  <mchp:hwtool type="sdm">
                     <mchp:file name="PIC32CM-LS60/hwtools/sdm/sdmSimulator.xml"/>
                     <mchp:file name="PIC32CM-LS60/hwtools/sdm/sdmCompilers.xml"/>
                     <mchp:file name="PIC32CM-LS60/hwtools/sdm/sdmRealICE4.xml"/>
                     <mchp:file name="PIC32CM-LS60/hwtools/sdm/sdmRealICE.xml"/>
                     <mchp:file name="PIC32CM-LS60/hwtools/sdm/sdmICD3.xml"/>
                     <mchp:file name="PIC32CM-LS60/hwtools/sdm/sdmICD4.xml"/>
                     <mchp:file name="PIC32CM-LS60/hwtools/sdm/sdmICE4.xml"/>
                     <mchp:file name="PIC32CM-LS60/hwtools/sdm/sdmDebuggerMap.xml"/>
                  </mchp:hwtool>
                  <mchp:hwtool type="persfr">
                     <mchp:file name="PIC32CM-LS60/hwtools/persfr/arm32.persfr"/>
                  </mchp:hwtool>
                  <mchp:prerequisite component="MPLAB X IDE" version="[5.20-"/>
               </mchp:extension>
            </environment>
            <book name="https://www.microchip.com/wwwproducts/Devices.aspx?product=PIC32CM5164LS60048"
                  title="Device page for PIC32CM5164LS60048"/>
            <book name="https://www.microchip.com/wwwproducts/productds/PIC32CM5164LS60048"
                  title="Datasheet"/>
         </device>
         <device Dname="PIC32CM5164LS60064">
            <processor Dcore="Cortex-M23"
                       Dendian="Little-endian"
                       Dmpu="MPU"
                       Dfpu="NO_FPU"
                       Dtz="TZ"/>
            <compile header="PIC32CM-LS60/include/pic32c.h" define="__PIC32CM5164LS60064__"/>
            <debug svd="PIC32CM-LS60/svd/PIC32CM5164LS60064.svd"/>
            <memory id="IROM1"
                    start="0x00000000"
                    size="0x80000"
                    default="1"
                    startup="1"/>
            <memory id="IROM2" start="0x00400000" size="0x4000"/>
            <memory id="IRAM1" start="0x20000000" size="0x10000" default="1"/>
            <flashinfo name="Internal Flash (code) 512KB"
                       start="0x00000000"
                       blankval="0xFFFFFFFF"
                       pagesize="0x00000040"
                       ptime="100000"
                       etime="1000000">
               <block count="2048" size="0x100" arg="0"/>
               <!-- Sector Size 256B (1 row = 4 * page a 64 Byte) -->
            </flashinfo>
            <environment name="atmel">
               <at:extension xmlns:at="http://www.atmel.com/schemas/pack-device-atmel-extension"
                             schemaVersion="1.0">
                  <at:atdf name="PIC32CM-LS60/atdf/PIC32CM5164LS60064.atdf"/>
                  <at:variant ordercode="PIC32CM5164LS60064-I/PT"
                              vccmin="2.0"
                              vccmax="3.63"
                              tempmin="-40"
                              tempmax="85"/>
                  <at:variant ordercode="PIC32CM5164LS60064-I/5LX"
                              vccmin="2.0"
                              vccmax="3.63"
                              tempmin="-40"
                              tempmax="85"/>
                  <at:memory name="FLASH"
                             start="0x00000000"
                             size="0x80000"
                             type="flash"
                             pagesize="64"
                             rw="RW"
                             exec="true"
                             address-space="base"/>
                  <at:memory name="AUX0"
                             start="0x00804000"
                             size="0x100"
                             type="fuses"
                             pagesize="64"
                             rw="RW"
                             address-space="base"/>
                  <at:memory name="AUX1"
                             start="0x00806000"
                             size="0x100"
                             type="fuses"
                             pagesize="64"
                             rw="RW"
                             address-space="base"/>
                  <at:memory name="AUX2"
                             start="0x00808000"
                             size="0x100"
                             type="fuses"
                             pagesize="64"
                             rw="RW"
                             address-space="base"/>
                  <at:memory name="AUX3"
                             start="0x0080A000"
                             size="0x100"
                             type="fuses"
                             pagesize="64"
                             rw="RW"
                             address-space="base"/>
                  <at:memory name="AUX4"
                             start="0x0080C000"
                             size="0x100"
                             type="fuses"
                             pagesize="64"
                             rw="RW"
                             address-space="base"/>
                  <at:memory name="AUX5"
                             start="0x0080E000"
                             size="0x100"
                             type="fuses"
                             pagesize="64"
                             rw="RW"
                             address-space="base"/>
                  <at:memory name="BOCOR"
                             start="0x0080C000"
                             size="0x100"
                             type="fuses"
                             pagesize="64"
                             rw="RW"
                             address-space="base"/>
                  <at:memory name="BOCOR1"
                             start="0x0080C008"
                             size="0x8"
                             type="fuses"
                             rw="R"
                             address-space="base"/>
                  <at:memory name="CAL"
                             start="0x00800000"
                             size="0x8"
                             type="fuses"
                             rw="R"
                             address-space="base"/>
                  <at:memory name="DATAFLASH"
                             start="0x00400000"
                             size="0x4000"
                             type="flash"
                             pagesize="64"
                             rw="RW"
                             address-space="base"/>
                  <at:memory name="LOCKROW"
                             start="0x00802000"
                             size="0x4"
                             type="fuses"
                             rw="R"
                             address-space="base"/>
                  <at:memory name="OTP1"
                             start="0x00806000"
                             size="0x8"
                             type="fuses"
                             rw="R"
                             address-space="base"/>
                  <at:memory name="OTP2"
                             start="0x00806008"
                             size="0x8"
                             type="fuses"
                             rw="R"
                             address-space="base"/>
                  <at:memory name="OTP3"
                             start="0x00806010"
                             size="0x8"
                             type="fuses"
                             rw="R"
                             address-space="base"/>
                  <at:memory name="OTP4"
                             start="0x00806018"
                             size="0x8"
                             type="fuses"
                             rw="R"
                             address-space="base"/>
                  <at:memory name="ROM"
                             start="0x00830000"
                             size="0x10000"
                             type="fuses"
                             pagesize="64"
                             rw="RW"
                             address-space="base"/>
                  <at:memory name="SHADOW"
                             start="0x00820000"
                             size="0x8"
                             type="fuses"
                             rw="R"
                             address-space="base"/>
                  <at:memory name="SW_CALIB"
                             start="0x00806020"
                             size="0x4"
                             type="fuses"
                             rw="R"
                             address-space="base"/>
                  <at:memory name="TLATCH"
                             start="0x00810000"
                             size="0x10000"
                             type="fuses"
                             pagesize="64"
                             rw="RW"
                             address-space="base"/>
                  <at:memory name="USER_PAGE"
                             start="0x00804000"
                             size="0x100"
                             type="user_page"
                             pagesize="64"
                             rw="RW"
                             address-space="base"/>
                  <at:memory name="HSRAM"
                             start="0x20000000"
                             size="0x10000"
                             type="ram"
                             rw="RW"
                             exec="true"
                             address-space="base"/>
                  <at:memory name="APBA"
                             start="0x40000000"
                             size="0x8000"
                             type="io"
                             rw="RW"
                             address-space="base"/>
                  <at:memory name="APBB"
                             start="0x41000000"
                             size="0x10000"
                             type="io"
                             rw="RW"
                             address-space="base"/>
                  <at:memory name="APBC"
                             start="0x42000000"
                             size="0x6000"
                             type="io"
                             rw="RW"
                             address-space="base"/>
                  <at:memory name="PPB"
                             start="0xE0000000"
                             size="0x100000"
                             type="io"
                             rw="RW"
                             address-space="base"/>
                  <at:interface type="swd" name="SWD"/>
                  <at:tool id="com.atmel.avrdbg.tool.atmelice"/>
                  <at:tool id="com.atmel.avrdbg.tool.edbg"/>
                  <at:tool id="com.atmel.avrdbg.tool.edbgc"/>
                  <at:tool id="com.atmel.avrdbg.tool.ice4"/>
                  <at:tool id="com.atmel.avrdbg.tool.jtagice3plus"/>
                  <at:tool id="com.atmel.avrdbg.tool.jtagicemk3"/>
                  <at:tool id="com.atmel.avrdbg.tool.medbg"/>
                  <at:tool id="com.atmel.avrdbg.tool.nedbg"/>
                  <at:tool id="com.atmel.avrdbg.tool.pickit4"/>
                  <at:tool id="com.atmel.avrdbg.tool.powerdebugger"/>
                  <at:tool id="com.atmel.avrdbg.tool.samice"/>
                  <at:tool id="com.atmel.avrdbg.tool.snap"/>
                  <at:project name="Barebone C Project">
                     <at:component Cvendor="ARM" Cclass="CMSIS" Cgroup="CORE"/>
                     <at:component Cvendor="Microchip" Cclass="Device" Cgroup="Startup">
                        <at:template select="Main file (.c)"/>
                     </at:component>
                  </at:project>
                  <at:project name="Barebone Cpp Project">
                     <at:component Cvendor="ARM" Cclass="CMSIS" Cgroup="CORE"/>
                     <at:component Cvendor="Microchip" Cclass="Device" Cgroup="Startup">
                        <at:template select="Main file (.cpp)"/>
                     </at:component>
                  </at:project>
                  <at:prerequisite context="compiling" Tcompiler="GCC" component="ARM-GCC"/>
                  <at:prerequisite context="compiling" Tcompiler="IAR" component="ARM-IAR"/>
                  <at:prerequisite context="compiling" Tcompiler="ARMCC" component="ARMCC"/>
               </at:extension>
            </environment>
            <environment name="microchip">
               <mchp:extension xmlns:mchp="http://crownking/pack-device-microchip-extension"
                               schemaVersion="1.0">
                  <mchp:pic name="PIC32CM-LS60/edc/PIC32CM5164LS60064.PIC"/>
                  <mchp:xc32 name="PIC32CM-LS60/xc32"/>
                  <mchp:hwtool type="mplab.mpheader">
                     <mchp:file name="PIC32CM-LS60/hwtools/mplab/MPHeader.xml"/>
                  </mchp:hwtool>
                  <mchp:hwtool type="mplab.pluginboardsupport">
                     <mchp:file name="PIC32CM-LS60/hwtools/mplab/PluginBoardSupport.xml"/>
                  </mchp:hwtool>
                  <mchp:hwtool type="sdm">
                     <mchp:file name="PIC32CM-LS60/hwtools/sdm/sdmSimulator.xml"/>
                     <mchp:file name="PIC32CM-LS60/hwtools/sdm/sdmCompilers.xml"/>
                     <mchp:file name="PIC32CM-LS60/hwtools/sdm/sdmRealICE4.xml"/>
                     <mchp:file name="PIC32CM-LS60/hwtools/sdm/sdmRealICE.xml"/>
                     <mchp:file name="PIC32CM-LS60/hwtools/sdm/sdmICD3.xml"/>
                     <mchp:file name="PIC32CM-LS60/hwtools/sdm/sdmICD4.xml"/>
                     <mchp:file name="PIC32CM-LS60/hwtools/sdm/sdmICE4.xml"/>
                     <mchp:file name="PIC32CM-LS60/hwtools/sdm/sdmDebuggerMap.xml"/>
                  </mchp:hwtool>
                  <mchp:hwtool type="persfr">
                     <mchp:file name="PIC32CM-LS60/hwtools/persfr/arm32.persfr"/>
                  </mchp:hwtool>
                  <mchp:prerequisite component="MPLAB X IDE" version="[5.20-"/>
               </mchp:extension>
            </environment>
            <book name="https://www.microchip.com/wwwproducts/Devices.aspx?product=PIC32CM5164LS60064"
                  title="Device page for PIC32CM5164LS60064"/>
            <book name="https://www.microchip.com/wwwproducts/productds/PIC32CM5164LS60064"
                  title="Datasheet"/>
         </device>
         <device Dname="PIC32CM5164LS60100">
            <processor Dcore="Cortex-M23"
                       Dendian="Little-endian"
                       Dmpu="MPU"
                       Dfpu="NO_FPU"
                       Dtz="TZ"/>
            <compile header="PIC32CM-LS60/include/pic32c.h" define="__PIC32CM5164LS60100__"/>
            <debug svd="PIC32CM-LS60/svd/PIC32CM5164LS60100.svd"/>
            <memory id="IROM1"
                    start="0x00000000"
                    size="0x80000"
                    default="1"
                    startup="1"/>
            <memory id="IROM2" start="0x00400000" size="0x4000"/>
            <memory id="IRAM1" start="0x20000000" size="0x10000" default="1"/>
            <flashinfo name="Internal Flash (code) 512KB"
                       start="0x00000000"
                       blankval="0xFFFFFFFF"
                       pagesize="0x00000040"
                       ptime="100000"
                       etime="1000000">
               <block count="2048" size="0x100" arg="0"/>
               <!-- Sector Size 256B (1 row = 4 * page a 64 Byte) -->
            </flashinfo>
            <environment name="atmel">
               <at:extension xmlns:at="http://www.atmel.com/schemas/pack-device-atmel-extension"
                             schemaVersion="1.0">
                  <at:atdf name="PIC32CM-LS60/atdf/PIC32CM5164LS60100.atdf"/>
                  <at:variant ordercode="PIC32CM5164LS60100-I/PF"
                              vccmin="2.0"
                              vccmax="3.63"
                              tempmin="-40"
                              tempmax="85"/>
                  <at:memory name="FLASH"
                             start="0x00000000"
                             size="0x80000"
                             type="flash"
                             pagesize="64"
                             rw="RW"
                             exec="true"
                             address-space="base"/>
                  <at:memory name="AUX0"
                             start="0x00804000"
                             size="0x100"
                             type="fuses"
                             pagesize="64"
                             rw="RW"
                             address-space="base"/>
                  <at:memory name="AUX1"
                             start="0x00806000"
                             size="0x100"
                             type="fuses"
                             pagesize="64"
                             rw="RW"
                             address-space="base"/>
                  <at:memory name="AUX2"
                             start="0x00808000"
                             size="0x100"
                             type="fuses"
                             pagesize="64"
                             rw="RW"
                             address-space="base"/>
                  <at:memory name="AUX3"
                             start="0x0080A000"
                             size="0x100"
                             type="fuses"
                             pagesize="64"
                             rw="RW"
                             address-space="base"/>
                  <at:memory name="AUX4"
                             start="0x0080C000"
                             size="0x100"
                             type="fuses"
                             pagesize="64"
                             rw="RW"
                             address-space="base"/>
                  <at:memory name="AUX5"
                             start="0x0080E000"
                             size="0x100"
                             type="fuses"
                             pagesize="64"
                             rw="RW"
                             address-space="base"/>
                  <at:memory name="BOCOR"
                             start="0x0080C000"
                             size="0x100"
                             type="fuses"
                             pagesize="64"
                             rw="RW"
                             address-space="base"/>
                  <at:memory name="BOCOR1"
                             start="0x0080C008"
                             size="0x8"
                             type="fuses"
                             rw="R"
                             address-space="base"/>
                  <at:memory name="CAL"
                             start="0x00800000"
                             size="0x8"
                             type="fuses"
                             rw="R"
                             address-space="base"/>
                  <at:memory name="DATAFLASH"
                             start="0x00400000"
                             size="0x4000"
                             type="flash"
                             pagesize="64"
                             rw="RW"
                             address-space="base"/>
                  <at:memory name="LOCKROW"
                             start="0x00802000"
                             size="0x4"
                             type="fuses"
                             rw="R"
                             address-space="base"/>
                  <at:memory name="OTP1"
                             start="0x00806000"
                             size="0x8"
                             type="fuses"
                             rw="R"
                             address-space="base"/>
                  <at:memory name="OTP2"
                             start="0x00806008"
                             size="0x8"
                             type="fuses"
                             rw="R"
                             address-space="base"/>
                  <at:memory name="OTP3"
                             start="0x00806010"
                             size="0x8"
                             type="fuses"
                             rw="R"
                             address-space="base"/>
                  <at:memory name="OTP4"
                             start="0x00806018"
                             size="0x8"
                             type="fuses"
                             rw="R"
                             address-space="base"/>
                  <at:memory name="ROM"
                             start="0x00830000"
                             size="0x10000"
                             type="fuses"
                             pagesize="64"
                             rw="RW"
                             address-space="base"/>
                  <at:memory name="SHADOW"
                             start="0x00820000"
                             size="0x8"
                             type="fuses"
                             rw="R"
                             address-space="base"/>
                  <at:memory name="SW_CALIB"
                             start="0x00806020"
                             size="0x4"
                             type="fuses"
                             rw="R"
                             address-space="base"/>
                  <at:memory name="TLATCH"
                             start="0x00810000"
                             size="0x10000"
                             type="fuses"
                             pagesize="64"
                             rw="RW"
                             address-space="base"/>
                  <at:memory name="USER_PAGE"
                             start="0x00804000"
                             size="0x100"
                             type="user_page"
                             pagesize="64"
                             rw="RW"
                             address-space="base"/>
                  <at:memory name="HSRAM"
                             start="0x20000000"
                             size="0x10000"
                             type="ram"
                             rw="RW"
                             exec="true"
                             address-space="base"/>
                  <at:memory name="APBA"
                             start="0x40000000"
                             size="0x8000"
                             type="io"
                             rw="RW"
                             address-space="base"/>
                  <at:memory name="APBB"
                             start="0x41000000"
                             size="0x10000"
                             type="io"
                             rw="RW"
                             address-space="base"/>
                  <at:memory name="APBC"
                             start="0x42000000"
                             size="0x6000"
                             type="io"
                             rw="RW"
                             address-space="base"/>
                  <at:memory name="PPB"
                             start="0xE0000000"
                             size="0x100000"
                             type="io"
                             rw="RW"
                             address-space="base"/>
                  <at:interface type="swd" name="SWD"/>
                  <at:tool id="com.atmel.avrdbg.tool.atmelice"/>
                  <at:tool id="com.atmel.avrdbg.tool.edbg"/>
                  <at:tool id="com.atmel.avrdbg.tool.edbgc"/>
                  <at:tool id="com.atmel.avrdbg.tool.ice4"/>
                  <at:tool id="com.atmel.avrdbg.tool.jtagice3plus"/>
                  <at:tool id="com.atmel.avrdbg.tool.jtagicemk3"/>
                  <at:tool id="com.atmel.avrdbg.tool.medbg"/>
                  <at:tool id="com.atmel.avrdbg.tool.nedbg"/>
                  <at:tool id="com.atmel.avrdbg.tool.pickit4"/>
                  <at:tool id="com.atmel.avrdbg.tool.powerdebugger"/>
                  <at:tool id="com.atmel.avrdbg.tool.samice"/>
                  <at:tool id="com.atmel.avrdbg.tool.snap"/>
                  <at:project name="Barebone C Project">
                     <at:component Cvendor="ARM" Cclass="CMSIS" Cgroup="CORE"/>
                     <at:component Cvendor="Microchip" Cclass="Device" Cgroup="Startup">
                        <at:template select="Main file (.c)"/>
                     </at:component>
                  </at:project>
                  <at:project name="Barebone Cpp Project">
                     <at:component Cvendor="ARM" Cclass="CMSIS" Cgroup="CORE"/>
                     <at:component Cvendor="Microchip" Cclass="Device" Cgroup="Startup">
                        <at:template select="Main file (.cpp)"/>
                     </at:component>
                  </at:project>
                  <at:prerequisite context="compiling" Tcompiler="GCC" component="ARM-GCC"/>
                  <at:prerequisite context="compiling" Tcompiler="IAR" component="ARM-IAR"/>
                  <at:prerequisite context="compiling" Tcompiler="ARMCC" component="ARMCC"/>
               </at:extension>
            </environment>
            <environment name="microchip">
               <mchp:extension xmlns:mchp="http://crownking/pack-device-microchip-extension"
                               schemaVersion="1.0">
                  <mchp:pic name="PIC32CM-LS60/edc/PIC32CM5164LS60100.PIC"/>
                  <mchp:xc32 name="PIC32CM-LS60/xc32"/>
                  <mchp:hwtool type="mplab.mpheader">
                     <mchp:file name="PIC32CM-LS60/hwtools/mplab/MPHeader.xml"/>
                  </mchp:hwtool>
                  <mchp:hwtool type="mplab.pluginboardsupport">
                     <mchp:file name="PIC32CM-LS60/hwtools/mplab/PluginBoardSupport.xml"/>
                  </mchp:hwtool>
                  <mchp:hwtool type="sdm">
                     <mchp:file name="PIC32CM-LS60/hwtools/sdm/sdmSimulator.xml"/>
                     <mchp:file name="PIC32CM-LS60/hwtools/sdm/sdmCompilers.xml"/>
                     <mchp:file name="PIC32CM-LS60/hwtools/sdm/sdmRealICE4.xml"/>
                     <mchp:file name="PIC32CM-LS60/hwtools/sdm/sdmRealICE.xml"/>
                     <mchp:file name="PIC32CM-LS60/hwtools/sdm/sdmICD3.xml"/>
                     <mchp:file name="PIC32CM-LS60/hwtools/sdm/sdmICD4.xml"/>
                     <mchp:file name="PIC32CM-LS60/hwtools/sdm/sdmICE4.xml"/>
                     <mchp:file name="PIC32CM-LS60/hwtools/sdm/sdmDebuggerMap.xml"/>
                  </mchp:hwtool>
                  <mchp:hwtool type="persfr">
                     <mchp:file name="PIC32CM-LS60/hwtools/persfr/arm32.persfr"/>
                  </mchp:hwtool>
                  <mchp:prerequisite component="MPLAB X IDE" version="[5.20-"/>
               </mchp:extension>
            </environment>
            <book name="https://www.microchip.com/wwwproducts/Devices.aspx?product=PIC32CM5164LS60100"
                  title="Device page for PIC32CM5164LS60100"/>
            <book name="https://www.microchip.com/wwwproducts/productds/PIC32CM5164LS60100"
                  title="Datasheet"/>
         </device>
      </family>
   </devices>
   <conditions>
      <condition id="ARMCC Exe">
         <accept Tcompiler="ARMCC" Toutput="exe"/>
      </condition>
      <condition id="GCC">
         <accept Tcompiler="GCC"/>
      </condition>
      <condition id="GCC Exe">
         <accept Tcompiler="GCC" Toutput="exe"/>
      </condition>
      <condition id="IAR Exe">
         <accept Tcompiler="IAR" Toutput="exe"/>
      </condition>
      <condition id="XC">
         <accept Tcompiler="XC"/>
      </condition>
      <condition id="C">
         <accept Tcompiler="ARMCC"/>
         <accept Tcompiler="GCC"/>
         <accept Tcompiler="IAR"/>
      </condition>
      <condition id="C Exe">
         <accept Tcompiler="ARMCC" Toutput="exe"/>
         <accept Tcompiler="GCC" Toutput="exe"/>
         <accept Tcompiler="IAR" Toutput="exe"/>
      </condition>
      <condition id="C Lib">
         <accept Tcompiler="ARMCC" Toutput="lib"/>
         <accept Tcompiler="GCC" Toutput="lib"/>
         <accept Tcompiler="IAR" Toutput="lib"/>
      </condition>
      <condition id="PIC32CM2532LS00048">
         <require Dvendor="Microchip:3" Dname="PIC32CM2532LS00048"/>
         <require Cclass="CMSIS" Cgroup="CORE"/>
      </condition>
      <condition id="PIC32CM2532LS00064">
         <require Dvendor="Microchip:3" Dname="PIC32CM2532LS00064"/>
         <require Cclass="CMSIS" Cgroup="CORE"/>
      </condition>
      <condition id="PIC32CM2532LS00100">
         <require Dvendor="Microchip:3" Dname="PIC32CM2532LS00100"/>
         <require Cclass="CMSIS" Cgroup="CORE"/>
      </condition>
      <condition id="PIC32CM5164LS00048">
         <require Dvendor="Microchip:3" Dname="PIC32CM5164LS00048"/>
         <require Cclass="CMSIS" Cgroup="CORE"/>
      </condition>
      <condition id="PIC32CM5164LS00064">
         <require Dvendor="Microchip:3" Dname="PIC32CM5164LS00064"/>
         <require Cclass="CMSIS" Cgroup="CORE"/>
      </condition>
      <condition id="PIC32CM5164LS00100">
         <require Dvendor="Microchip:3" Dname="PIC32CM5164LS00100"/>
         <require Cclass="CMSIS" Cgroup="CORE"/>
      </condition>
      <condition id="PIC32CM5164LS60048">
         <require Dvendor="Microchip:3" Dname="PIC32CM5164LS60048"/>
         <require Cclass="CMSIS" Cgroup="CORE"/>
      </condition>
      <condition id="PIC32CM5164LS60064">
         <require Dvendor="Microchip:3" Dname="PIC32CM5164LS60064"/>
         <require Cclass="CMSIS" Cgroup="CORE"/>
      </condition>
      <condition id="PIC32CM5164LS60100">
         <require Dvendor="Microchip:3" Dname="PIC32CM5164LS60100"/>
         <require Cclass="CMSIS" Cgroup="CORE"/>
      </condition>
   </conditions>
   <components>
      <component Cvendor="Microchip"
                 Cclass="Device"
                 Cgroup="Startup"
                 Cversion="1.1.0"
                 condition="PIC32CM2532LS00048">
         <description>Headers and startup code for Microchip PIC32CM2532LS00048</description>
         <files>
            <file condition="C" category="include" name="PIC32CM-LS00/include/"/>
            <file condition="C"
                  category="header"
                  name="PIC32CM-LS00/include/pic32c.h"/>
            <file condition="C Exe"
                  category="source"
                  name="PIC32CM-LS00/templates/main.c"
                  attr="template"
                  select="Main file (.c)"/>
            <file condition="C Exe"
                  category="source"
                  name="PIC32CM-LS00/templates/main.cpp"
                  attr="template"
                  select="Main file (.cpp)"/>
            <file condition="C Lib"
                  category="source"
                  name="PIC32CM-LS00/templates/library.c"
                  attr="template"
                  select="Main file (.c)"/>
            <file condition="C Lib"
                  category="source"
                  name="PIC32CM-LS00/templates/library.cpp"
                  attr="template"
                  select="Main file (.cpp)"/>
            <file condition="GCC Exe"
                  category="source"
                  name="PIC32CM-LS00/gcc/gcc/startup_pic32cm2532ls00048.c"
                  attr="config"/>
            <file condition="GCC Exe"
                  category="source"
                  name="PIC32CM-LS00/gcc/system_pic32cm2532ls00048.c"
                  attr="config"/>
            <file condition="GCC Exe"
                  category="linkerScript"
                  name="PIC32CM-LS00/gcc/gcc/pic32cm2532ls00048_flash.ld"
                  attr="config"/>
            <file condition="GCC Exe"
                  category="other"
                  name="PIC32CM-LS00/gcc/gcc/pic32cm2532ls00048_sram.ld"
                  attr="config"/>
            <file condition="ARMCC Exe"
                  category="source"
                  name="PIC32CM-LS00/armcc/armcc/startup_pic32cm2532ls00048.s"
                  attr="config"/>
            <file condition="ARMCC Exe"
                  category="source"
                  name="PIC32CM-LS00/armcc/system_pic32cm2532ls00048.c"
                  attr="config"/>
            <file condition="IAR Exe"
                  category="source"
                  name="PIC32CM-LS00/iar/iar/startup_pic32cm2532ls00048.c"
                  attr="config"/>
            <file condition="IAR Exe"
                  category="source"
                  name="PIC32CM-LS00/iar/system_pic32cm2532ls00048.c"
                  attr="config"/>
            <file condition="IAR Exe"
                  category="linkerScript"
                  name="PIC32CM-LS00/iar/config/linker/Microchip/pic32cm2532ls00048/sram.icf"
                  attr="config"/>
            <file condition="IAR Exe"
                  category="other"
                  name="PIC32CM-LS00/iar/config/linker/Microchip/pic32cm2532ls00048/flash.icf"
                  attr="config"/>
         </files>
      </component>
      <component Cvendor="Microchip"
                 Cclass="Device"
                 Cgroup="Startup"
                 Cversion="1.1.0"
                 condition="PIC32CM2532LS00064">
         <description>Headers and startup code for Microchip PIC32CM2532LS00064</description>
         <files>
            <file condition="C" category="include" name="PIC32CM-LS00/include/"/>
            <file condition="C"
                  category="header"
                  name="PIC32CM-LS00/include/pic32c.h"/>
            <file condition="C Exe"
                  category="source"
                  name="PIC32CM-LS00/templates/main.c"
                  attr="template"
                  select="Main file (.c)"/>
            <file condition="C Exe"
                  category="source"
                  name="PIC32CM-LS00/templates/main.cpp"
                  attr="template"
                  select="Main file (.cpp)"/>
            <file condition="C Lib"
                  category="source"
                  name="PIC32CM-LS00/templates/library.c"
                  attr="template"
                  select="Main file (.c)"/>
            <file condition="C Lib"
                  category="source"
                  name="PIC32CM-LS00/templates/library.cpp"
                  attr="template"
                  select="Main file (.cpp)"/>
            <file condition="GCC Exe"
                  category="source"
                  name="PIC32CM-LS00/gcc/gcc/startup_pic32cm2532ls00064.c"
                  attr="config"/>
            <file condition="GCC Exe"
                  category="source"
                  name="PIC32CM-LS00/gcc/system_pic32cm2532ls00064.c"
                  attr="config"/>
            <file condition="GCC Exe"
                  category="linkerScript"
                  name="PIC32CM-LS00/gcc/gcc/pic32cm2532ls00064_flash.ld"
                  attr="config"/>
            <file condition="GCC Exe"
                  category="other"
                  name="PIC32CM-LS00/gcc/gcc/pic32cm2532ls00064_sram.ld"
                  attr="config"/>
            <file condition="ARMCC Exe"
                  category="source"
                  name="PIC32CM-LS00/armcc/armcc/startup_pic32cm2532ls00064.s"
                  attr="config"/>
            <file condition="ARMCC Exe"
                  category="source"
                  name="PIC32CM-LS00/armcc/system_pic32cm2532ls00064.c"
                  attr="config"/>
            <file condition="IAR Exe"
                  category="source"
                  name="PIC32CM-LS00/iar/iar/startup_pic32cm2532ls00064.c"
                  attr="config"/>
            <file condition="IAR Exe"
                  category="source"
                  name="PIC32CM-LS00/iar/system_pic32cm2532ls00064.c"
                  attr="config"/>
            <file condition="IAR Exe"
                  category="linkerScript"
                  name="PIC32CM-LS00/iar/config/linker/Microchip/pic32cm2532ls00064/sram.icf"
                  attr="config"/>
            <file condition="IAR Exe"
                  category="other"
                  name="PIC32CM-LS00/iar/config/linker/Microchip/pic32cm2532ls00064/flash.icf"
                  attr="config"/>
         </files>
      </component>
      <component Cvendor="Microchip"
                 Cclass="Device"
                 Cgroup="Startup"
                 Cversion="1.1.0"
                 condition="PIC32CM2532LS00100">
         <description>Headers and startup code for Microchip PIC32CM2532LS00100</description>
         <files>
            <file condition="C" category="include" name="PIC32CM-LS00/include/"/>
            <file condition="C"
                  category="header"
                  name="PIC32CM-LS00/include/pic32c.h"/>
            <file condition="C Exe"
                  category="source"
                  name="PIC32CM-LS00/templates/main.c"
                  attr="template"
                  select="Main file (.c)"/>
            <file condition="C Exe"
                  category="source"
                  name="PIC32CM-LS00/templates/main.cpp"
                  attr="template"
                  select="Main file (.cpp)"/>
            <file condition="C Lib"
                  category="source"
                  name="PIC32CM-LS00/templates/library.c"
                  attr="template"
                  select="Main file (.c)"/>
            <file condition="C Lib"
                  category="source"
                  name="PIC32CM-LS00/templates/library.cpp"
                  attr="template"
                  select="Main file (.cpp)"/>
            <file condition="GCC Exe"
                  category="source"
                  name="PIC32CM-LS00/gcc/gcc/startup_pic32cm2532ls00100.c"
                  attr="config"/>
            <file condition="GCC Exe"
                  category="source"
                  name="PIC32CM-LS00/gcc/system_pic32cm2532ls00100.c"
                  attr="config"/>
            <file condition="GCC Exe"
                  category="linkerScript"
                  name="PIC32CM-LS00/gcc/gcc/pic32cm2532ls00100_flash.ld"
                  attr="config"/>
            <file condition="GCC Exe"
                  category="other"
                  name="PIC32CM-LS00/gcc/gcc/pic32cm2532ls00100_sram.ld"
                  attr="config"/>
            <file condition="ARMCC Exe"
                  category="source"
                  name="PIC32CM-LS00/armcc/armcc/startup_pic32cm2532ls00100.s"
                  attr="config"/>
            <file condition="ARMCC Exe"
                  category="source"
                  name="PIC32CM-LS00/armcc/system_pic32cm2532ls00100.c"
                  attr="config"/>
            <file condition="IAR Exe"
                  category="source"
                  name="PIC32CM-LS00/iar/iar/startup_pic32cm2532ls00100.c"
                  attr="config"/>
            <file condition="IAR Exe"
                  category="source"
                  name="PIC32CM-LS00/iar/system_pic32cm2532ls00100.c"
                  attr="config"/>
            <file condition="IAR Exe"
                  category="linkerScript"
                  name="PIC32CM-LS00/iar/config/linker/Microchip/pic32cm2532ls00100/sram.icf"
                  attr="config"/>
            <file condition="IAR Exe"
                  category="other"
                  name="PIC32CM-LS00/iar/config/linker/Microchip/pic32cm2532ls00100/flash.icf"
                  attr="config"/>
         </files>
      </component>
      <component Cvendor="Microchip"
                 Cclass="Device"
                 Cgroup="Startup"
                 Cversion="1.1.0"
                 condition="PIC32CM5164LS00048">
         <description>Headers and startup code for Microchip PIC32CM5164LS00048</description>
         <files>
            <file condition="C" category="include" name="PIC32CM-LS00/include/"/>
            <file condition="C"
                  category="header"
                  name="PIC32CM-LS00/include/pic32c.h"/>
            <file condition="C Exe"
                  category="source"
                  name="PIC32CM-LS00/templates/main.c"
                  attr="template"
                  select="Main file (.c)"/>
            <file condition="C Exe"
                  category="source"
                  name="PIC32CM-LS00/templates/main.cpp"
                  attr="template"
                  select="Main file (.cpp)"/>
            <file condition="C Lib"
                  category="source"
                  name="PIC32CM-LS00/templates/library.c"
                  attr="template"
                  select="Main file (.c)"/>
            <file condition="C Lib"
                  category="source"
                  name="PIC32CM-LS00/templates/library.cpp"
                  attr="template"
                  select="Main file (.cpp)"/>
            <file condition="GCC Exe"
                  category="source"
                  name="PIC32CM-LS00/gcc/gcc/startup_pic32cm5164ls00048.c"
                  attr="config"/>
            <file condition="GCC Exe"
                  category="source"
                  name="PIC32CM-LS00/gcc/system_pic32cm5164ls00048.c"
                  attr="config"/>
            <file condition="GCC Exe"
                  category="linkerScript"
                  name="PIC32CM-LS00/gcc/gcc/pic32cm5164ls00048_flash.ld"
                  attr="config"/>
            <file condition="GCC Exe"
                  category="other"
                  name="PIC32CM-LS00/gcc/gcc/pic32cm5164ls00048_sram.ld"
                  attr="config"/>
            <file condition="ARMCC Exe"
                  category="source"
                  name="PIC32CM-LS00/armcc/armcc/startup_pic32cm5164ls00048.s"
                  attr="config"/>
            <file condition="ARMCC Exe"
                  category="source"
                  name="PIC32CM-LS00/armcc/system_pic32cm5164ls00048.c"
                  attr="config"/>
            <file condition="IAR Exe"
                  category="source"
                  name="PIC32CM-LS00/iar/iar/startup_pic32cm5164ls00048.c"
                  attr="config"/>
            <file condition="IAR Exe"
                  category="source"
                  name="PIC32CM-LS00/iar/system_pic32cm5164ls00048.c"
                  attr="config"/>
            <file condition="IAR Exe"
                  category="linkerScript"
                  name="PIC32CM-LS00/iar/config/linker/Microchip/pic32cm5164ls00048/sram.icf"
                  attr="config"/>
            <file condition="IAR Exe"
                  category="other"
                  name="PIC32CM-LS00/iar/config/linker/Microchip/pic32cm5164ls00048/flash.icf"
                  attr="config"/>
         </files>
      </component>
      <component Cvendor="Microchip"
                 Cclass="Device"
                 Cgroup="Startup"
                 Cversion="1.1.0"
                 condition="PIC32CM5164LS00064">
         <description>Headers and startup code for Microchip PIC32CM5164LS00064</description>
         <files>
            <file condition="C" category="include" name="PIC32CM-LS00/include/"/>
            <file condition="C"
                  category="header"
                  name="PIC32CM-LS00/include/pic32c.h"/>
            <file condition="C Exe"
                  category="source"
                  name="PIC32CM-LS00/templates/main.c"
                  attr="template"
                  select="Main file (.c)"/>
            <file condition="C Exe"
                  category="source"
                  name="PIC32CM-LS00/templates/main.cpp"
                  attr="template"
                  select="Main file (.cpp)"/>
            <file condition="C Lib"
                  category="source"
                  name="PIC32CM-LS00/templates/library.c"
                  attr="template"
                  select="Main file (.c)"/>
            <file condition="C Lib"
                  category="source"
                  name="PIC32CM-LS00/templates/library.cpp"
                  attr="template"
                  select="Main file (.cpp)"/>
            <file condition="GCC Exe"
                  category="source"
                  name="PIC32CM-LS00/gcc/gcc/startup_pic32cm5164ls00064.c"
                  attr="config"/>
            <file condition="GCC Exe"
                  category="source"
                  name="PIC32CM-LS00/gcc/system_pic32cm5164ls00064.c"
                  attr="config"/>
            <file condition="GCC Exe"
                  category="linkerScript"
                  name="PIC32CM-LS00/gcc/gcc/pic32cm5164ls00064_flash.ld"
                  attr="config"/>
            <file condition="GCC Exe"
                  category="other"
                  name="PIC32CM-LS00/gcc/gcc/pic32cm5164ls00064_sram.ld"
                  attr="config"/>
            <file condition="ARMCC Exe"
                  category="source"
                  name="PIC32CM-LS00/armcc/armcc/startup_pic32cm5164ls00064.s"
                  attr="config"/>
            <file condition="ARMCC Exe"
                  category="source"
                  name="PIC32CM-LS00/armcc/system_pic32cm5164ls00064.c"
                  attr="config"/>
            <file condition="IAR Exe"
                  category="source"
                  name="PIC32CM-LS00/iar/iar/startup_pic32cm5164ls00064.c"
                  attr="config"/>
            <file condition="IAR Exe"
                  category="source"
                  name="PIC32CM-LS00/iar/system_pic32cm5164ls00064.c"
                  attr="config"/>
            <file condition="IAR Exe"
                  category="linkerScript"
                  name="PIC32CM-LS00/iar/config/linker/Microchip/pic32cm5164ls00064/sram.icf"
                  attr="config"/>
            <file condition="IAR Exe"
                  category="other"
                  name="PIC32CM-LS00/iar/config/linker/Microchip/pic32cm5164ls00064/flash.icf"
                  attr="config"/>
         </files>
      </component>
      <component Cvendor="Microchip"
                 Cclass="Device"
                 Cgroup="Startup"
                 Cversion="1.1.0"
                 condition="PIC32CM5164LS00100">
         <description>Headers and startup code for Microchip PIC32CM5164LS00100</description>
         <files>
            <file condition="C" category="include" name="PIC32CM-LS00/include/"/>
            <file condition="C"
                  category="header"
                  name="PIC32CM-LS00/include/pic32c.h"/>
            <file condition="C Exe"
                  category="source"
                  name="PIC32CM-LS00/templates/main.c"
                  attr="template"
                  select="Main file (.c)"/>
            <file condition="C Exe"
                  category="source"
                  name="PIC32CM-LS00/templates/main.cpp"
                  attr="template"
                  select="Main file (.cpp)"/>
            <file condition="C Lib"
                  category="source"
                  name="PIC32CM-LS00/templates/library.c"
                  attr="template"
                  select="Main file (.c)"/>
            <file condition="C Lib"
                  category="source"
                  name="PIC32CM-LS00/templates/library.cpp"
                  attr="template"
                  select="Main file (.cpp)"/>
            <file condition="GCC Exe"
                  category="source"
                  name="PIC32CM-LS00/gcc/gcc/startup_pic32cm5164ls00100.c"
                  attr="config"/>
            <file condition="GCC Exe"
                  category="source"
                  name="PIC32CM-LS00/gcc/system_pic32cm5164ls00100.c"
                  attr="config"/>
            <file condition="GCC Exe"
                  category="linkerScript"
                  name="PIC32CM-LS00/gcc/gcc/pic32cm5164ls00100_flash.ld"
                  attr="config"/>
            <file condition="GCC Exe"
                  category="other"
                  name="PIC32CM-LS00/gcc/gcc/pic32cm5164ls00100_sram.ld"
                  attr="config"/>
            <file condition="ARMCC Exe"
                  category="source"
                  name="PIC32CM-LS00/armcc/armcc/startup_pic32cm5164ls00100.s"
                  attr="config"/>
            <file condition="ARMCC Exe"
                  category="source"
                  name="PIC32CM-LS00/armcc/system_pic32cm5164ls00100.c"
                  attr="config"/>
            <file condition="IAR Exe"
                  category="source"
                  name="PIC32CM-LS00/iar/iar/startup_pic32cm5164ls00100.c"
                  attr="config"/>
            <file condition="IAR Exe"
                  category="source"
                  name="PIC32CM-LS00/iar/system_pic32cm5164ls00100.c"
                  attr="config"/>
            <file condition="IAR Exe"
                  category="linkerScript"
                  name="PIC32CM-LS00/iar/config/linker/Microchip/pic32cm5164ls00100/sram.icf"
                  attr="config"/>
            <file condition="IAR Exe"
                  category="other"
                  name="PIC32CM-LS00/iar/config/linker/Microchip/pic32cm5164ls00100/flash.icf"
                  attr="config"/>
         </files>
      </component>
      <component Cvendor="Microchip"
                 Cclass="Device"
                 Cgroup="Startup"
                 Cversion="1.1.0"
                 condition="PIC32CM5164LS60048">
         <description>Headers and startup code for Microchip PIC32CM5164LS60048</description>
         <files>
            <file condition="C" category="include" name="PIC32CM-LS60/include/"/>
            <file condition="C"
                  category="header"
                  name="PIC32CM-LS60/include/pic32c.h"/>
            <file condition="C Exe"
                  category="source"
                  name="PIC32CM-LS60/templates/main.c"
                  attr="template"
                  select="Main file (.c)"/>
            <file condition="C Exe"
                  category="source"
                  name="PIC32CM-LS60/templates/main.cpp"
                  attr="template"
                  select="Main file (.cpp)"/>
            <file condition="C Lib"
                  category="source"
                  name="PIC32CM-LS60/templates/library.c"
                  attr="template"
                  select="Main file (.c)"/>
            <file condition="C Lib"
                  category="source"
                  name="PIC32CM-LS60/templates/library.cpp"
                  attr="template"
                  select="Main file (.cpp)"/>
            <file condition="GCC Exe"
                  category="source"
                  name="PIC32CM-LS60/gcc/gcc/startup_pic32cm5164ls60048.c"
                  attr="config"/>
            <file condition="GCC Exe"
                  category="source"
                  name="PIC32CM-LS60/gcc/system_pic32cm5164ls60048.c"
                  attr="config"/>
            <file condition="GCC Exe"
                  category="linkerScript"
                  name="PIC32CM-LS60/gcc/gcc/pic32cm5164ls60048_flash.ld"
                  attr="config"/>
            <file condition="GCC Exe"
                  category="other"
                  name="PIC32CM-LS60/gcc/gcc/pic32cm5164ls60048_sram.ld"
                  attr="config"/>
            <file condition="ARMCC Exe"
                  category="source"
                  name="PIC32CM-LS60/armcc/armcc/startup_pic32cm5164ls60048.s"
                  attr="config"/>
            <file condition="ARMCC Exe"
                  category="source"
                  name="PIC32CM-LS60/armcc/system_pic32cm5164ls60048.c"
                  attr="config"/>
            <file condition="IAR Exe"
                  category="source"
                  name="PIC32CM-LS60/iar/iar/startup_pic32cm5164ls60048.c"
                  attr="config"/>
            <file condition="IAR Exe"
                  category="source"
                  name="PIC32CM-LS60/iar/system_pic32cm5164ls60048.c"
                  attr="config"/>
            <file condition="IAR Exe"
                  category="linkerScript"
                  name="PIC32CM-LS60/iar/config/linker/Microchip/pic32cm5164ls60048/sram.icf"
                  attr="config"/>
            <file condition="IAR Exe"
                  category="other"
                  name="PIC32CM-LS60/iar/config/linker/Microchip/pic32cm5164ls60048/flash.icf"
                  attr="config"/>
         </files>
      </component>
      <component Cvendor="Microchip"
                 Cclass="Device"
                 Cgroup="Startup"
                 Cversion="1.1.0"
                 condition="PIC32CM5164LS60064">
         <description>Headers and startup code for Microchip PIC32CM5164LS60064</description>
         <files>
            <file condition="C" category="include" name="PIC32CM-LS60/include/"/>
            <file condition="C"
                  category="header"
                  name="PIC32CM-LS60/include/pic32c.h"/>
            <file condition="C Exe"
                  category="source"
                  name="PIC32CM-LS60/templates/main.c"
                  attr="template"
                  select="Main file (.c)"/>
            <file condition="C Exe"
                  category="source"
                  name="PIC32CM-LS60/templates/main.cpp"
                  attr="template"
                  select="Main file (.cpp)"/>
            <file condition="C Lib"
                  category="source"
                  name="PIC32CM-LS60/templates/library.c"
                  attr="template"
                  select="Main file (.c)"/>
            <file condition="C Lib"
                  category="source"
                  name="PIC32CM-LS60/templates/library.cpp"
                  attr="template"
                  select="Main file (.cpp)"/>
            <file condition="GCC Exe"
                  category="source"
                  name="PIC32CM-LS60/gcc/gcc/startup_pic32cm5164ls60064.c"
                  attr="config"/>
            <file condition="GCC Exe"
                  category="source"
                  name="PIC32CM-LS60/gcc/system_pic32cm5164ls60064.c"
                  attr="config"/>
            <file condition="GCC Exe"
                  category="linkerScript"
                  name="PIC32CM-LS60/gcc/gcc/pic32cm5164ls60064_flash.ld"
                  attr="config"/>
            <file condition="GCC Exe"
                  category="other"
                  name="PIC32CM-LS60/gcc/gcc/pic32cm5164ls60064_sram.ld"
                  attr="config"/>
            <file condition="ARMCC Exe"
                  category="source"
                  name="PIC32CM-LS60/armcc/armcc/startup_pic32cm5164ls60064.s"
                  attr="config"/>
            <file condition="ARMCC Exe"
                  category="source"
                  name="PIC32CM-LS60/armcc/system_pic32cm5164ls60064.c"
                  attr="config"/>
            <file condition="IAR Exe"
                  category="source"
                  name="PIC32CM-LS60/iar/iar/startup_pic32cm5164ls60064.c"
                  attr="config"/>
            <file condition="IAR Exe"
                  category="source"
                  name="PIC32CM-LS60/iar/system_pic32cm5164ls60064.c"
                  attr="config"/>
            <file condition="IAR Exe"
                  category="linkerScript"
                  name="PIC32CM-LS60/iar/config/linker/Microchip/pic32cm5164ls60064/sram.icf"
                  attr="config"/>
            <file condition="IAR Exe"
                  category="other"
                  name="PIC32CM-LS60/iar/config/linker/Microchip/pic32cm5164ls60064/flash.icf"
                  attr="config"/>
         </files>
      </component>
      <component Cvendor="Microchip"
                 Cclass="Device"
                 Cgroup="Startup"
                 Cversion="1.1.0"
                 condition="PIC32CM5164LS60100">
         <description>Headers and startup code for Microchip PIC32CM5164LS60100</description>
         <files>
            <file condition="C" category="include" name="PIC32CM-LS60/include/"/>
            <file condition="C"
                  category="header"
                  name="PIC32CM-LS60/include/pic32c.h"/>
            <file condition="C Exe"
                  category="source"
                  name="PIC32CM-LS60/templates/main.c"
                  attr="template"
                  select="Main file (.c)"/>
            <file condition="C Exe"
                  category="source"
                  name="PIC32CM-LS60/templates/main.cpp"
                  attr="template"
                  select="Main file (.cpp)"/>
            <file condition="C Lib"
                  category="source"
                  name="PIC32CM-LS60/templates/library.c"
                  attr="template"
                  select="Main file (.c)"/>
            <file condition="C Lib"
                  category="source"
                  name="PIC32CM-LS60/templates/library.cpp"
                  attr="template"
                  select="Main file (.cpp)"/>
            <file condition="GCC Exe"
                  category="source"
                  name="PIC32CM-LS60/gcc/gcc/startup_pic32cm5164ls60100.c"
                  attr="config"/>
            <file condition="GCC Exe"
                  category="source"
                  name="PIC32CM-LS60/gcc/system_pic32cm5164ls60100.c"
                  attr="config"/>
            <file condition="GCC Exe"
                  category="linkerScript"
                  name="PIC32CM-LS60/gcc/gcc/pic32cm5164ls60100_flash.ld"
                  attr="config"/>
            <file condition="GCC Exe"
                  category="other"
                  name="PIC32CM-LS60/gcc/gcc/pic32cm5164ls60100_sram.ld"
                  attr="config"/>
            <file condition="ARMCC Exe"
                  category="source"
                  name="PIC32CM-LS60/armcc/armcc/startup_pic32cm5164ls60100.s"
                  attr="config"/>
            <file condition="ARMCC Exe"
                  category="source"
                  name="PIC32CM-LS60/armcc/system_pic32cm5164ls60100.c"
                  attr="config"/>
            <file condition="IAR Exe"
                  category="source"
                  name="PIC32CM-LS60/iar/iar/startup_pic32cm5164ls60100.c"
                  attr="config"/>
            <file condition="IAR Exe"
                  category="source"
                  name="PIC32CM-LS60/iar/system_pic32cm5164ls60100.c"
                  attr="config"/>
            <file condition="IAR Exe"
                  category="linkerScript"
                  name="PIC32CM-LS60/iar/config/linker/Microchip/pic32cm5164ls60100/sram.icf"
                  attr="config"/>
            <file condition="IAR Exe"
                  category="other"
                  name="PIC32CM-LS60/iar/config/linker/Microchip/pic32cm5164ls60100/flash.icf"
                  attr="config"/>
         </files>
      </component>
   </components>
</package>
