diff --git a/.github/workflows/test-configs.yml b/.github/workflows/test-configs.yml
index 5060ae33a..4e266d2f2 100644
--- a/.github/workflows/test-configs.yml
+++ b/.github/workflows/test-configs.yml
@@ -21,6 +21,18 @@ jobs:
# with:
# arch: riscv
# config-file: ./config/examples/hifive.config
+ #
+ same51_test:
+ uses: ./.github/workflows/test-build.yml
+ with:
+ arch: arm
+ config-file: ./config/examples/same51.config
+
+ same51_dbank_test:
+ uses: ./.github/workflows/test-build.yml
+ with:
+ arch: arm
+ config-file: ./config/examples/same51-dualbank.config
imx_rt1050_test:
uses: ./.github/workflows/test-build-mcux-sdk.yml
diff --git a/.gitignore b/.gitignore
index 30a4563e9..e314db651 100644
--- a/.gitignore
+++ b/.gitignore
@@ -91,6 +91,7 @@ include/target.h
.wolfboot-offset
.wolfboot-partition-size
.bootloader-partition-size
+MPLabX/wolfBoot-SAME51.X/.generated_files/
# Test tools
tools/check_config/check_config
@@ -142,3 +143,7 @@ debug/lauterbach
*.gcda
*.gcno
coverage.*
+IDE/MPLAB/test-app/test-usb-updater.same51.X/dist/
+IDE/MPLAB/test-app/test-usb-updater.same51.X/.generated_files/
+IDE/MPLAB/bootloader/wolfboot-same51.dualbank.X/dist/
+IDE/MPLAB/bootloader/wolfboot-same51.dualbank.X/.generated_files/
diff --git a/IDE/MPLAB/README.md b/IDE/MPLAB/README.md
new file mode 100644
index 000000000..c5eaf9a1b
--- /dev/null
+++ b/IDE/MPLAB/README.md
@@ -0,0 +1,204 @@
+# wolfBoot demo application for MPLABx IDE
+
+Instruction to compile and test under Windows or Linux OS.
+
+
+## Target platform
+
+This example application has been configured to work on SAM E51 Curiosity Nano
+evaluation board.
+
+wolfBoot is configured in `DUAL_BANK` mode, meaning that it will use the
+bank-swapping feature available on SAM E51 to update the firmware. This operation
+is much faster than physically swapping the content of two partitions one sector
+at a time.
+
+
+wolfBoot is stored and executed at the beginning of the flash (0x00000000), while the signed
+application image starts at address 0x0000 8000.
+
+
+## Before starting
+
+- Read the instructions in [Targets.md](/docs/Targets.md) before starting. If your
+version of xc32 does not have a license for optimizers, wolfBoot binary image
+will normally not fit in the first 32B of the flash. If this is the case, you may
+want to consider compiling wolfBoot separately, by providing a .config file and
+running `make`.
+
+- The key provided in the bootloader project (in the test/keystore.c source file)
+is for demo purposes only. This is a 'test' key that should not be used in
+production, because in fact, it's very well known as it's distributed with the
+wolfBoot sources. Please read the instructions [to generate or import your own
+keys](/docs/Signing.md) if you intend to secure your target device. The
+`test/keystore.c` source file generates warnings about this when included in the
+build. Replace with your automatically generated `keystore.c` when you run `keygen`.
+
+
+## Instructions
+
+### Creating the keys
+
+This step is required to compile the bootloader with a valid key.
+
+Enter the `tools/keytools` directory and run make. This will create the `keygen` and `sign` tools.
+On Windows, you can use the .sln file provided to build the keytools using Visual Studio.
+
+Check [docs/Signing.md](/docs/Signing.md) for the detailed instructions on compiling the tools and
+creating keys using the `keygen` tool.
+
+When used with the `-g` option, the `keygen` tool will generate a keypair. The
+file `wolfboot_signing_private_key.der` in the root of the repository contains
+the private key that will be used to sign valid firmware images.
+
+The file `src/keystore.c` now contains the public key that the bootloader
+incorporates, to use it later to verify the image.
+
+After generating your own private + public keys, remember to replace the file
+`IDE/MPLAB/test/keystore.c` with the newly created one, `src/keystore.c`:
+
+
+```
+cp src/keystore.c IDE/MPLAB/test
+```
+
+
+### Compiling and linking the images
+
+Now both projects (wolfboot and test-app) can be compiled and linked.
+The resulting images will be placed in the output directory `dist/default/production/`
+under the main directory of each of the two projects.
+
+The only requirement for the application to be staged by wolfboot is the modified
+entry point when setting the origin of the space in ROM.
+
+With the example configuration (ecc384+sha256), the manifest header size is 512B
+(0x200), and the main BOOT partition starts at 32 KB (0x8000).
+
+The entry point for the application firmware must take the total offset into
+account, by setting `ROM_ORIGIN` to 0x8200. Change this parameter accordingly if
+you plan to modify the geometry of your partitions in FLASH.
+
+The FLASH memory configuration for this demo is located in include/MPLAB/target.h.
+
+The file can be changed manually to set a new partitions geometry, or a new target.h
+could be created in the include/ directory by running `make`, which will be based
+on the chosen configuration via the `.config` file. If a custom `target.h` is created
+by `make`, the demo version in `include/MPLAB` can be removed.
+
+The wolfBoot project should build with no modifications to the project, because it
+does not use any .c files from the manufacturer's BSP.
+
+On the other hand, the application uses the Harmony libraries to access the UART
+USB and other peripherals. To generate the necessary files, once you open the
+project in MPLAB X IDE, click on the MCC icon on top, then click on "Generate" to
+download the latest Microchip libraries and device support in your local repository.
+
+
+### Converting to .bin format
+
+MPLAB ide produces executables of the bootloader and the test firmware images in
+both `.elf` and `.hex` formats.
+
+Using the `objcopy` tool from the gcc toolchain, we can convert the images to the
+binary format.
+
+To convert the wolfBoot image from `.hex` to `.bin` run:
+
+
+```
+arm-none-eabi-objcopy -I ihex -O binary IDE/MPLAB/bootloader/wolfboot-same51.dualbank.X/dist/default/production/wolfboot-same51.dualbank.X.production.hex mplab_wolfboot.bin
+
+```
+
+To convert the application the same way:
+
+```
+arm-none-eabi-objcopy -I ihex -O binary IDE/MPLAB/test-app/test-usb-updater.same51.X/dist/default/production/test-usb-updater.same51.X.production.hex mplab_app.bin
+```
+
+
+### Signing the application image
+
+The test application (`mplab_app.bin`) must be now tagged with a version number
+and signed. This is done by the `sign` tool.
+
+The tool requires the location of the private key and one numeric argument, stored
+as the version tag for the signed image. Running it with version "1":
+
+```
+tools/keytools/sign --ecc384 mplab_app.bin wolfboot_signing_private_key.der 1
+```
+
+will create a new file `mplab_app_v1_signed.bin`, that can be uploaded into the
+flash memory at address 0x8000. The first 512 B in this binary file are
+reserved by wolfBoot for the manifest header.
+
+
+### Uploading the binary images to the target
+
+Follow the instructions in [docs/Targets.md](/docs/Targets.md) to upload the binary
+images (`mplab_wolfboot.bin` and `mplab_app_v1_signed.bin`) to the target.
+
+### Verify that the system is up and running
+
+When the application starts, it will send a few bytes through the USB UART
+interface associated.
+
+This data can be parsed with a small tool used in wolfBoot's automated tests,
+`test-expect-version`.
+
+- Compile the tool via:
+
+```
+make -C tools/test-expect-version
+```
+
+- Run the program:
+
+```
+tools/test-expect-version/test-expect-version
+```
+
+- Reset the target.
+
+The tool will display the version of the current firmware running.
+This data is sent by the application itself when it boots.
+
+### Update the firmware via test-update-server (Linux and MacOS only)
+
+A demo update server via USB UART is provided in the directory
+`tools/test-update-server`.
+
+To test the update mechanism, first compile the tool via:
+
+```
+make -C tools/test-update-server
+```
+
+To provide a signed update package, sign and tag a different version of the
+application, e.g. for version "8" run:
+
+
+```
+tools/keytools/sign --ecc384 mplab_app.bin wolfboot_signing_private_key.der 8
+```
+
+Run the update server:
+
+```
+tools/test-update-server/server mplab_app_v8_signed.bin
+```
+
+Reset the target. The application will initiate an update request, to which
+the server will reply and will send the signed image through the USB UART.
+
+The server should display the progress of the update on screen.
+
+At the end of the update, verify that wolfboot has swapped the mapping of the
+two FLASH banks, cloned itself so it sits at the beginning of both banks, and
+correctly verified and staged the new firmware, by checking via
+`test-expect-version` that the current firmware running has version '8'.
+
+
+
diff --git a/IDE/MPLAB/bootloader/src/config/default/ATSAME51J20A.ld b/IDE/MPLAB/bootloader/src/config/default/ATSAME51J20A.ld
new file mode 100644
index 000000000..60030c03d
--- /dev/null
+++ b/IDE/MPLAB/bootloader/src/config/default/ATSAME51J20A.ld
@@ -0,0 +1,274 @@
+/*--------------------------------------------------------------------------
+ * MPLAB XC32 Compiler - ATSAME51J20A linker script
+ *
+ * Copyright (c) 2023, Microchip Technology Inc. and its subsidiaries ("Microchip")
+ * All rights reserved.
+ *
+ * This software is developed by Microchip Technology Inc. and its
+ * subsidiaries ("Microchip").
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials provided
+ * with the distribution.
+ * 3. Microchip's name may not be used to endorse or promote products
+ * derived from this software without specific prior written
+ * permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY MICROCHIP "AS IS" AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS FOR PURPOSE ARE DISCLAIMED. IN NO EVENT
+ * SHALL MICROCHIP BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING BUT NOT LIMITED TO
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA OR PROFITS;
+ * OR BUSINESS INTERRUPTION) HOWSOEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ */
+
+OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
+OUTPUT_ARCH(arm)
+SEARCH_DIR(.)
+
+/*
+ * Define the __XC32_RESET_HANDLER_NAME macro on the command line when you
+ * want to use a different name for the Reset Handler function.
+ */
+#ifndef __XC32_RESET_HANDLER_NAME
+#define __XC32_RESET_HANDLER_NAME Reset_Handler
+#endif /* __XC32_RESET_HANDLER_NAME */
+
+/* Set the entry point in the ELF file. Once the entry point is in the ELF
+ * file, you can then use the --write-sla option to xc32-bin2hex to place
+ * the address into the hex file using the SLA field (RECTYPE 5). This hex
+ * record may be useful for a bootloader that needs to determine the entry
+ * point to the application.
+ */
+ENTRY(__XC32_RESET_HANDLER_NAME)
+
+/*************************************************************************
+ * Memory-Region Macro Definitions
+ * The XC32 linker preprocesses linker scripts. You may define these
+ * macros in the MPLAB X project properties or on the command line when
+ * calling the linker via the xc32-gcc shell.
+ *************************************************************************/
+
+#ifndef ROM_ORIGIN
+# define ROM_ORIGIN 0x0
+#endif
+#ifndef ROM_LENGTH
+# define ROM_LENGTH 0x100000
+#elif (ROM_LENGTH > 0x100000)
+# error ROM_LENGTH is greater than the max size of 0x100000
+#endif
+#ifndef RAM_ORIGIN
+# define RAM_ORIGIN 0x20000000
+#endif
+#ifndef RAM_LENGTH
+# define RAM_LENGTH 0x40000
+#elif (RAM_LENGTH > 0x40000)
+# error RAM_LENGTH is greater than the max size of 0x40000
+#endif
+#ifndef TCM_ORIGIN
+# define TCM_ORIGIN 0x3000000
+#endif
+#ifndef __XC32_TCM_LENGTH
+# define __XC32_TCM_LENGTH 0x0
+#elif (defined(__XC32_TCM_LENGTH) && __XC32_TCM_LENGTH != 0x0 && __XC32_TCM_LENGTH != 0x800 && __XC32_TCM_LENGTH != 0xc00 && __XC32_TCM_LENGTH != 0x1000)
+# warning Non-standard ITCM length, using default 0x1000
+# undef __XC32_TCM_LENGTH
+# define __XC32_TCM_LENGTH 0x1000
+#endif
+#ifndef BKUPRAM_ORIGIN
+# define BKUPRAM_ORIGIN 0x47000000
+#endif
+#ifndef BKUPRAM_LENGTH
+# define BKUPRAM_LENGTH 0x2000
+#elif (BKUPRAM_LENGTH > 0x2000)
+# error BKUPRAM_LENGTH is greater than the max size of 0x2000
+#endif
+
+
+
+/*************************************************************************
+ * Memory-Region Definitions
+ * The MEMORY command describes the location and size of blocks of memory
+ * on the target device. The command below uses the macros defined above.
+ *************************************************************************/
+MEMORY
+{
+ rom (LRX) : ORIGIN = ROM_ORIGIN, LENGTH = ROM_LENGTH
+ ram (WX!R) : ORIGIN = RAM_ORIGIN, LENGTH = RAM_LENGTH
+ tcm (WX) : ORIGIN = TCM_ORIGIN, LENGTH = __XC32_TCM_LENGTH
+ bkupram : ORIGIN = BKUPRAM_ORIGIN, LENGTH = BKUPRAM_LENGTH
+ config_00804000 : ORIGIN = 0x00804000, LENGTH = 0x4
+ config_00804004 : ORIGIN = 0x00804004, LENGTH = 0x4
+ config_00804008 : ORIGIN = 0x00804008, LENGTH = 0x4
+
+}
+/*************************************************************************
+ * Output region definitions.
+ * CODE_REGION defines the output region for .text/.rodata.
+ * DATA_REGION defines the output region for .data/.bss
+ * VECTOR_REGION defines the output region for .vectors.
+ *
+ * CODE_REGION defaults to 'rom', if rom is present (non-zero length),
+ * and 'ram' otherwise.
+ * N.B. The BFA will still allocate code to any MEMORY named 'rom' regardless
+ * of CODE_REGION's value. If you wish to use rom for something else please
+ * rename the MEMORY entry.
+ * DATA_REGION defaults to 'ram', which must be present.
+ * VECTOR_REGION defaults to CODE_REGION, unless 'boot_rom' is present.
+ */
+#ifndef CODE_REGION
+# if ROM_LENGTH > 0
+# define CODE_REGION rom
+# else
+# define CODE_REGION ram
+# endif
+#endif
+#ifndef DATA_REGION
+# define DATA_REGION ram
+#endif
+#ifndef VECTOR_REGION
+# define VECTOR_REGION CODE_REGION
+#endif
+
+__rom_end = ORIGIN(rom) + LENGTH(rom);
+__ram_end = ORIGIN(ram) + LENGTH(ram);
+
+/*************************************************************************
+ * Section Definitions - Map input sections to output sections
+ *************************************************************************/
+SECTIONS
+{
+ .config_00804000 : {
+ KEEP(*(.config_00804000))
+ } > config_00804000
+ .config_00804004 : {
+ KEEP(*(.config_00804004))
+ } > config_00804004
+ .config_00804008 : {
+ KEEP(*(.config_00804008))
+ } > config_00804008
+
+ /*
+ * The linker moves the .vectors section into itcm when itcm is
+ * enabled via the -mitcm option, but only when this .vectors output
+ * section exists in the linker script.
+ */
+ .vectors :
+ {
+ . = ALIGN(4);
+ _sfixed = .;
+ KEEP(*(.vectors .vectors.* .vectors_default .vectors_default.*))
+ KEEP(*(.isr_vector))
+ KEEP(*(.reset*))
+ KEEP(*(.after_vectors))
+ } > VECTOR_REGION
+ /*
+ * Code Sections - Note that standard input sections such as
+ * *(.text), *(.text.*), *(.rodata), & *(.rodata.*)
+ * are not mapped here. The best-fit allocator locates them,
+ * so that input sections may flow around absolute sections
+ * as needed.
+ */
+ .text :
+ {
+ . = ALIGN(4);
+ *(.glue_7t) *(.glue_7)
+ *(.gnu.linkonce.r.*)
+ *(.ARM.extab* .gnu.linkonce.armextab.*)
+
+ /* Support C constructors, and C destructors in both user code
+ and the C library. This also provides support for C++ code. */
+ . = ALIGN(4);
+ KEEP(*(.init))
+ . = ALIGN(4);
+ __preinit_array_start = .;
+ KEEP (*(.preinit_array))
+ __preinit_array_end = .;
+
+ . = ALIGN(4);
+ __init_array_start = .;
+ KEEP (*(SORT(.init_array.*)))
+ KEEP (*(.init_array))
+ __init_array_end = .;
+
+ . = ALIGN(0x4);
+ KEEP (*crtbegin.o(.ctors))
+ KEEP (*(EXCLUDE_FILE (*crtend.o) .ctors))
+ KEEP (*(SORT(.ctors.*)))
+ KEEP (*crtend.o(.ctors))
+
+ . = ALIGN(4);
+ KEEP(*(.fini))
+
+ . = ALIGN(4);
+ __fini_array_start = .;
+ KEEP (*(.fini_array))
+ KEEP (*(SORT(.fini_array.*)))
+ __fini_array_end = .;
+
+ KEEP (*crtbegin.o(.dtors))
+ KEEP (*(EXCLUDE_FILE (*crtend.o) .dtors))
+ KEEP (*(SORT(.dtors.*)))
+ KEEP (*crtend.o(.dtors))
+
+ . = ALIGN(4);
+ _efixed = .; /* End of text section */
+ } > CODE_REGION
+
+ /* .ARM.exidx is sorted, so has to go in its own output section. */
+ PROVIDE_HIDDEN (__exidx_start = .);
+ .ARM.exidx :
+ {
+ *(.ARM.exidx* .gnu.linkonce.armexidx.*)
+ } > CODE_REGION
+ PROVIDE_HIDDEN (__exidx_end = .);
+
+ . = ALIGN(4);
+ _etext = .;
+
+
+ /*
+ * Align here to ensure that the .bss section occupies space up to
+ * _end. Align after .bss to ensure correct alignment even if the
+ * .bss section disappears because there are no input sections.
+ *
+ * Note that input sections named .bss* are no longer mapped here.
+ * The best-fit allocator locates them, so that they may flow
+ * around absolute sections as needed.
+ */
+ .bss (NOLOAD) :
+ {
+ . = ALIGN(4);
+ __bss_start__ = .;
+ _sbss = . ;
+ _szero = .;
+ *(COMMON)
+ . = ALIGN(4);
+ __bss_end__ = .;
+ _ebss = . ;
+ _ezero = .;
+ } > DATA_REGION
+
+ . = ALIGN(4);
+ _end = . ;
+ _ram_end_ = ORIGIN(ram) + LENGTH(ram) -1 ;
+
+ .bkupram_bss :
+ {
+ *(.bkupram_bss .bkupram_bss.*)
+ *(.pbss .pbss.*)
+ } > bkupram
+}
+
diff --git a/IDE/MPLAB/bootloader/src/config/default/harmony-manifest-success.yml b/IDE/MPLAB/bootloader/src/config/default/harmony-manifest-success.yml
new file mode 100644
index 000000000..ac40fc1cf
--- /dev/null
+++ b/IDE/MPLAB/bootloader/src/config/default/harmony-manifest-success.yml
@@ -0,0 +1,21 @@
+
+# This file has been autogenerated by MPLAB Code Configurator. Please do not edit this file.
+# Project "bootloader" has been created by using mentioned Harmony 3 packages
+
+
+project: bootloader
+creation_date: 2024-02-13T06:44:44.911-08:00[America/Los_Angeles] # ISO 8601 format: https://www.w3.org/TR/NOTE-datetime
+operating_system: Windows 10
+mcc_mode: IDE # [IDE|Standalone|Headless]
+mcc_version: v5.5.0
+mcc_core_version: v5.7.0
+mplabx_version: v6.20 # if MPLAB X plugin only
+harmony_version: v1.5.1
+compiler: XC32 4.35
+
+modules:
+ - {name: "csp", version: "v3.18.2"}
+
+packs:
+ - {name: "SAME51_DFP", version: "3.7.242"}
+
diff --git a/IDE/MPLAB/bootloader/src/config/default/pin_configurations.csv b/IDE/MPLAB/bootloader/src/config/default/pin_configurations.csv
new file mode 100644
index 000000000..b43dfbc72
--- /dev/null
+++ b/IDE/MPLAB/bootloader/src/config/default/pin_configurations.csv
@@ -0,0 +1,52 @@
+Pin Number,Pin ID,Custom Name,Function,Mode, Direction,Latch,Pull Up,Pull Down,Drive Strength
+1,PA00,,Available,,,,,,NORMAL
+2,PA01,,Available,,,,,,NORMAL
+3,PA02,,Available,,,,,,NORMAL
+4,PA03,,Available,,,,,,NORMAL
+5,PB04,,Available,,,,,,NORMAL
+6,PB05,,Available,,,,,,NORMAL
+9,PB06,,Available,,,,,,NORMAL
+10,PB07,,Available,,,,,,NORMAL
+11,PB08,,Available,,,,,,NORMAL
+12,PB09,,Available,,,,,,NORMAL
+13,PA04,,Available,,,,,,NORMAL
+14,PA05,,Available,,,,,,NORMAL
+15,PA06,,Available,,,,,,NORMAL
+16,PA07,,Available,,,,,,NORMAL
+17,PA08,,Available,,,,,,NORMAL
+18,PA09,,Available,,,,,,NORMAL
+19,PA10,,Available,,,,,,NORMAL
+20,PA11,,Available,,,,,,NORMAL
+23,PB10,,Available,,,,,,NORMAL
+24,PB11,,Available,,,,,,NORMAL
+25,PB12,,Available,,,,,,NORMAL
+26,PB13,,Available,,,,,,NORMAL
+27,PB14,,Available,,,,,,NORMAL
+28,PB15,,Available,,,,,,NORMAL
+29,PA12,,Available,,,,,,NORMAL
+30,PA13,,Available,,,,,,NORMAL
+31,PA14,,Available,,,,,,NORMAL
+32,PA15,,Available,,,,,,NORMAL
+35,PA16,,Available,,,,,,NORMAL
+36,PA17,,Available,,,,,,NORMAL
+37,PA18,,Available,,,,,,NORMAL
+38,PA19,,Available,,,,,,NORMAL
+39,PB16,,Available,,,,,,NORMAL
+40,PB17,,Available,,,,,,NORMAL
+41,PA20,,Available,,,,,,NORMAL
+42,PA21,,Available,,,,,,NORMAL
+43,PA22,,Available,,,,,,NORMAL
+44,PA23,,Available,,,,,,NORMAL
+45,PA24,,Available,,,,,,NORMAL
+46,PA25,,Available,,,,,,NORMAL
+49,PB22,,Available,,,,,,NORMAL
+50,PB23,,Available,,,,,,NORMAL
+51,PA27,,Available,,,,,,NORMAL
+57,PA30,,Available,,,,,,NORMAL
+58,PA31,,Available,,,,,,NORMAL
+59,PB30,,Available,,,,,,NORMAL
+60,PB31,,Available,,,,,,NORMAL
+61,PB00,,Available,,,,,,NORMAL
+62,PB01,,Available,,,,,,NORMAL
+63,PB02,,Available,,,,,,NORMAL
+64,PB03,,Available,,,,,,NORMAL
diff --git a/IDE/MPLAB/bootloader/wolfboot-same51.dualbank.X/Makefile b/IDE/MPLAB/bootloader/wolfboot-same51.dualbank.X/Makefile
new file mode 100644
index 000000000..fca8e2ccd
--- /dev/null
+++ b/IDE/MPLAB/bootloader/wolfboot-same51.dualbank.X/Makefile
@@ -0,0 +1,113 @@
+#
+# There exist several targets which are by default empty and which can be
+# used for execution of your targets. These targets are usually executed
+# before and after some main targets. They are:
+#
+# .build-pre: called before 'build' target
+# .build-post: called after 'build' target
+# .clean-pre: called before 'clean' target
+# .clean-post: called after 'clean' target
+# .clobber-pre: called before 'clobber' target
+# .clobber-post: called after 'clobber' target
+# .all-pre: called before 'all' target
+# .all-post: called after 'all' target
+# .help-pre: called before 'help' target
+# .help-post: called after 'help' target
+#
+# Targets beginning with '.' are not intended to be called on their own.
+#
+# Main targets can be executed directly, and they are:
+#
+# build build a specific configuration
+# clean remove built files from a configuration
+# clobber remove all built files
+# all build all configurations
+# help print help mesage
+#
+# Targets .build-impl, .clean-impl, .clobber-impl, .all-impl, and
+# .help-impl are implemented in nbproject/makefile-impl.mk.
+#
+# Available make variables:
+#
+# CND_BASEDIR base directory for relative paths
+# CND_DISTDIR default top distribution directory (build artifacts)
+# CND_BUILDDIR default top build directory (object files, ...)
+# CONF name of current configuration
+# CND_ARTIFACT_DIR_${CONF} directory of build artifact (current configuration)
+# CND_ARTIFACT_NAME_${CONF} name of build artifact (current configuration)
+# CND_ARTIFACT_PATH_${CONF} path to build artifact (current configuration)
+# CND_PACKAGE_DIR_${CONF} directory of package (current configuration)
+# CND_PACKAGE_NAME_${CONF} name of package (current configuration)
+# CND_PACKAGE_PATH_${CONF} path to package (current configuration)
+#
+# NOCDDL
+
+
+# Environment
+MKDIR=mkdir
+CP=cp
+CCADMIN=CCadmin
+RANLIB=ranlib
+
+
+# build
+build: .build-post
+
+.build-pre:
+# Add your pre 'build' code here...
+
+.build-post: .build-impl
+# Add your post 'build' code here...
+
+
+# clean
+clean: .clean-post
+
+.clean-pre:
+# Add your pre 'clean' code here...
+# WARNING: the IDE does not call this target since it takes a long time to
+# simply run make. Instead, the IDE removes the configuration directories
+# under build and dist directly without calling make.
+# This target is left here so people can do a clean when running a clean
+# outside the IDE.
+
+.clean-post: .clean-impl
+# Add your post 'clean' code here...
+
+
+# clobber
+clobber: .clobber-post
+
+.clobber-pre:
+# Add your pre 'clobber' code here...
+
+.clobber-post: .clobber-impl
+# Add your post 'clobber' code here...
+
+
+# all
+all: .all-post
+
+.all-pre:
+# Add your pre 'all' code here...
+
+.all-post: .all-impl
+# Add your post 'all' code here...
+
+
+# help
+help: .help-post
+
+.help-pre:
+# Add your pre 'help' code here...
+
+.help-post: .help-impl
+# Add your post 'help' code here...
+
+
+
+# include project implementation makefile
+include nbproject/Makefile-impl.mk
+
+# include project make variables
+include nbproject/Makefile-variables.mk
diff --git a/IDE/MPLAB/bootloader/wolfboot-same51.dualbank.X/mcc-manifest-autosave.yml b/IDE/MPLAB/bootloader/wolfboot-same51.dualbank.X/mcc-manifest-autosave.yml
new file mode 100644
index 000000000..64374463c
--- /dev/null
+++ b/IDE/MPLAB/bootloader/wolfboot-same51.dualbank.X/mcc-manifest-autosave.yml
@@ -0,0 +1,21 @@
+# This file has been autogenerated by MPLAB Code Configurator. Please do not edit this file.
+
+manifest_file_version: 1.0.0
+project: wolfboot-same51.dualbank
+creation_date: 2024-02-13T06:45:04.448-08:00[America/Los_Angeles]
+operating_system: Windows 10
+mcc_mode: IDE
+mcc_mode_version: v6.20
+device_name: ATSAME51J20A
+compiler: XC32 4.35
+mcc_version: 5.5.0
+mcc_core_version: 5.7.0
+content_manager_version: 5.0.0
+is_mcc_offline: false
+is_using_prerelease_versions: false
+mcc_content_registries: https://registry.npmjs.org/
+device_library: {library_class: com.microchip.mcc.harmony.Harmony3Library, name: Harmony
+ V3, version: 1.5.1}
+packs: {name: SAME51_DFP, version: 3.7.242}
+modules:
+- {name: csp, type: HARMONY, version: v3.18.2}
diff --git a/IDE/MPLAB/bootloader/wolfboot-same51.dualbank.X/mcc-manifest-generated-success.yml b/IDE/MPLAB/bootloader/wolfboot-same51.dualbank.X/mcc-manifest-generated-success.yml
new file mode 100644
index 000000000..94dd31d79
--- /dev/null
+++ b/IDE/MPLAB/bootloader/wolfboot-same51.dualbank.X/mcc-manifest-generated-success.yml
@@ -0,0 +1,21 @@
+# This file has been autogenerated by MPLAB Code Configurator. Please do not edit this file.
+
+manifest_file_version: 1.0.0
+project: wolfboot-same51.dualbank
+creation_date: 2024-02-13T06:44:44.890-08:00[America/Los_Angeles]
+operating_system: Windows 10
+mcc_mode: IDE
+mcc_mode_version: v6.20
+device_name: ATSAME51J20A
+compiler: XC32 4.35
+mcc_version: 5.5.0
+mcc_core_version: 5.7.0
+content_manager_version: 5.0.0
+is_mcc_offline: false
+is_using_prerelease_versions: false
+mcc_content_registries: https://registry.npmjs.org/
+device_library: {library_class: com.microchip.mcc.harmony.Harmony3Library, name: Harmony
+ V3, version: 1.5.1}
+packs: {name: SAME51_DFP, version: 3.7.242}
+modules:
+- {name: csp, type: HARMONY, version: v3.18.2}
diff --git a/IDE/MPLAB/bootloader/wolfboot-same51.dualbank.X/nbproject/Makefile-default.mk b/IDE/MPLAB/bootloader/wolfboot-same51.dualbank.X/nbproject/Makefile-default.mk
new file mode 100644
index 000000000..974a5f844
--- /dev/null
+++ b/IDE/MPLAB/bootloader/wolfboot-same51.dualbank.X/nbproject/Makefile-default.mk
@@ -0,0 +1,353 @@
+#
+# Generated Makefile - do not edit!
+#
+# Edit the Makefile in the project folder instead (../Makefile). Each target
+# has a -pre and a -post target defined where you can add customized code.
+#
+# This makefile implements configuration specific macros and targets.
+
+
+# Include project Makefile
+ifeq "${IGNORE_LOCAL}" "TRUE"
+# do not include local makefile. User is passing all local related variables already
+else
+include Makefile
+# Include makefile containing local settings
+ifeq "$(wildcard nbproject/Makefile-local-default.mk)" "nbproject/Makefile-local-default.mk"
+include nbproject/Makefile-local-default.mk
+endif
+endif
+
+# Environment
+MKDIR=mkdir -p
+RM=rm -f
+MV=mv
+CP=cp
+
+# Macros
+CND_CONF=default
+ifeq ($(TYPE_IMAGE), DEBUG_RUN)
+IMAGE_TYPE=debug
+OUTPUT_SUFFIX=elf
+DEBUGGABLE_SUFFIX=elf
+FINAL_IMAGE=${DISTDIR}/wolfboot-same51.dualbank.X.${IMAGE_TYPE}.${OUTPUT_SUFFIX}
+else
+IMAGE_TYPE=production
+OUTPUT_SUFFIX=hex
+DEBUGGABLE_SUFFIX=elf
+FINAL_IMAGE=${DISTDIR}/wolfboot-same51.dualbank.X.${IMAGE_TYPE}.${OUTPUT_SUFFIX}
+endif
+
+ifeq ($(COMPARE_BUILD), true)
+COMPARISON_BUILD=-mafrlcsj
+else
+COMPARISON_BUILD=
+endif
+
+# Object Directory
+OBJECTDIR=build/${CND_CONF}/${IMAGE_TYPE}
+
+# Distribution Directory
+DISTDIR=dist/${CND_CONF}/${IMAGE_TYPE}
+
+# Source Files Quoted if spaced
+SOURCEFILES_QUOTED_IF_SPACED=../../../../lib/wolfssl/wolfcrypt/src/asn.c ../../../../lib/wolfssl/wolfcrypt/src/ecc.c ../../../../lib/wolfssl/wolfcrypt/src/hash.c ../../../../lib/wolfssl/wolfcrypt/src/memory.c ../../../../lib/wolfssl/wolfcrypt/src/sha256.c ../../../../lib/wolfssl/wolfcrypt/src/sp_c32.c ../../../../lib/wolfssl/wolfcrypt/src/sp_int.c ../../../../lib/wolfssl/wolfcrypt/src/wc_port.c ../../../../lib/wolfssl/wolfcrypt/src/wolfmath.c ../../../../src/boot_arm.c ../../../../src/image.c ../../../../src/libwolfboot.c ../../../../src/loader.c ../../../../src/string.c ../../../../src/update_flash_hwswap.c ../../../../hal/same51.c ../../test/keystore.c
+
+# Object Files Quoted if spaced
+OBJECTFILES_QUOTED_IF_SPACED=${OBJECTDIR}/_ext/1946630766/asn.o ${OBJECTDIR}/_ext/1946630766/ecc.o ${OBJECTDIR}/_ext/1946630766/hash.o ${OBJECTDIR}/_ext/1946630766/memory.o ${OBJECTDIR}/_ext/1946630766/sha256.o ${OBJECTDIR}/_ext/1946630766/sp_c32.o ${OBJECTDIR}/_ext/1946630766/sp_int.o ${OBJECTDIR}/_ext/1946630766/wc_port.o ${OBJECTDIR}/_ext/1946630766/wolfmath.o ${OBJECTDIR}/_ext/671464796/boot_arm.o ${OBJECTDIR}/_ext/671464796/image.o ${OBJECTDIR}/_ext/671464796/libwolfboot.o ${OBJECTDIR}/_ext/671464796/loader.o ${OBJECTDIR}/_ext/671464796/string.o ${OBJECTDIR}/_ext/671464796/update_flash_hwswap.o ${OBJECTDIR}/_ext/671475885/same51.o ${OBJECTDIR}/_ext/1853860402/keystore.o
+POSSIBLE_DEPFILES=${OBJECTDIR}/_ext/1946630766/asn.o.d ${OBJECTDIR}/_ext/1946630766/ecc.o.d ${OBJECTDIR}/_ext/1946630766/hash.o.d ${OBJECTDIR}/_ext/1946630766/memory.o.d ${OBJECTDIR}/_ext/1946630766/sha256.o.d ${OBJECTDIR}/_ext/1946630766/sp_c32.o.d ${OBJECTDIR}/_ext/1946630766/sp_int.o.d ${OBJECTDIR}/_ext/1946630766/wc_port.o.d ${OBJECTDIR}/_ext/1946630766/wolfmath.o.d ${OBJECTDIR}/_ext/671464796/boot_arm.o.d ${OBJECTDIR}/_ext/671464796/image.o.d ${OBJECTDIR}/_ext/671464796/libwolfboot.o.d ${OBJECTDIR}/_ext/671464796/loader.o.d ${OBJECTDIR}/_ext/671464796/string.o.d ${OBJECTDIR}/_ext/671464796/update_flash_hwswap.o.d ${OBJECTDIR}/_ext/671475885/same51.o.d ${OBJECTDIR}/_ext/1853860402/keystore.o.d
+
+# Object Files
+OBJECTFILES=${OBJECTDIR}/_ext/1946630766/asn.o ${OBJECTDIR}/_ext/1946630766/ecc.o ${OBJECTDIR}/_ext/1946630766/hash.o ${OBJECTDIR}/_ext/1946630766/memory.o ${OBJECTDIR}/_ext/1946630766/sha256.o ${OBJECTDIR}/_ext/1946630766/sp_c32.o ${OBJECTDIR}/_ext/1946630766/sp_int.o ${OBJECTDIR}/_ext/1946630766/wc_port.o ${OBJECTDIR}/_ext/1946630766/wolfmath.o ${OBJECTDIR}/_ext/671464796/boot_arm.o ${OBJECTDIR}/_ext/671464796/image.o ${OBJECTDIR}/_ext/671464796/libwolfboot.o ${OBJECTDIR}/_ext/671464796/loader.o ${OBJECTDIR}/_ext/671464796/string.o ${OBJECTDIR}/_ext/671464796/update_flash_hwswap.o ${OBJECTDIR}/_ext/671475885/same51.o ${OBJECTDIR}/_ext/1853860402/keystore.o
+
+# Source Files
+SOURCEFILES=../../../../lib/wolfssl/wolfcrypt/src/asn.c ../../../../lib/wolfssl/wolfcrypt/src/ecc.c ../../../../lib/wolfssl/wolfcrypt/src/hash.c ../../../../lib/wolfssl/wolfcrypt/src/memory.c ../../../../lib/wolfssl/wolfcrypt/src/sha256.c ../../../../lib/wolfssl/wolfcrypt/src/sp_c32.c ../../../../lib/wolfssl/wolfcrypt/src/sp_int.c ../../../../lib/wolfssl/wolfcrypt/src/wc_port.c ../../../../lib/wolfssl/wolfcrypt/src/wolfmath.c ../../../../src/boot_arm.c ../../../../src/image.c ../../../../src/libwolfboot.c ../../../../src/loader.c ../../../../src/string.c ../../../../src/update_flash_hwswap.c ../../../../hal/same51.c ../../test/keystore.c
+
+# Pack Options
+PACK_COMMON_OPTIONS=-I "${CMSIS_DIR}/CMSIS/Core/Include"
+
+
+
+CFLAGS=
+ASFLAGS=
+LDLIBSOPTIONS=
+
+############# Tool locations ##########################################
+# If you copy a project from one host to another, the path where the #
+# compiler is installed may be different. #
+# If you open this project with MPLAB X in the new host, this #
+# makefile will be regenerated and the paths will be corrected. #
+#######################################################################
+# fixDeps replaces a bunch of sed/cat/printf statements that slow down the build
+FIXDEPS=fixDeps
+
+.build-conf: ${BUILD_SUBPROJECTS}
+ifneq ($(INFORMATION_MESSAGE), )
+ @echo $(INFORMATION_MESSAGE)
+endif
+ ${MAKE} -f nbproject/Makefile-default.mk ${DISTDIR}/wolfboot-same51.dualbank.X.${IMAGE_TYPE}.${OUTPUT_SUFFIX}
+
+MP_PROCESSOR_OPTION=ATSAME51J20A
+MP_LINKER_FILE_OPTION=,--script="../../../../hal/same51.ld"
+# ------------------------------------------------------------------------------------
+# Rules for buildStep: assemble
+ifeq ($(TYPE_IMAGE), DEBUG_RUN)
+else
+endif
+
+# ------------------------------------------------------------------------------------
+# Rules for buildStep: assembleWithPreprocess
+ifeq ($(TYPE_IMAGE), DEBUG_RUN)
+else
+endif
+
+# ------------------------------------------------------------------------------------
+# Rules for buildStep: compile
+ifeq ($(TYPE_IMAGE), DEBUG_RUN)
+${OBJECTDIR}/_ext/1946630766/asn.o: ../../../../lib/wolfssl/wolfcrypt/src/asn.c .generated_files/flags/default/f28eedc420c224fc831c2e8146ec1fbf6a059e06 .generated_files/flags/default/da39a3ee5e6b4b0d3255bfef95601890afd80709
+ @${MKDIR} "${OBJECTDIR}/_ext/1946630766"
+ @${RM} ${OBJECTDIR}/_ext/1946630766/asn.o.d
+ @${RM} ${OBJECTDIR}/_ext/1946630766/asn.o
+ ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -fno-common -D__WOLFBOOT -DWOLFBOOT_SIGN_ECC384 -DDUALBANK_SWAP=1 -DWOLFBOOT_HASH_SHA256 -DIMAGE_HEADER_SIZE=512 -DWOLFBOOT_ARCH_ARM -DTARGET_same51 -DWOLFBOOT_DUALBOOT -DWOLFSSL_USER_SETTINGS -I"../src" -I"../src/config/default" -I"../src/packs/ATSAME51J20A_DFP" -I"../src/packs/CMSIS/" -I"../src/packs/CMSIS/CMSIS/Core/Include" -I"../../../../include/wolfboot" -I"../../../../include/MPLAB" -I"../../../../lib/wolfssl" -I"../../../../include" -MP -MMD -MF "${OBJECTDIR}/_ext/1946630766/asn.o.d" -o ${OBJECTDIR}/_ext/1946630766/asn.o ../../../../lib/wolfssl/wolfcrypt/src/asn.c -DXPRJ_default=$(CND_CONF) $(COMPARISON_BUILD) -mdfp="${DFP_DIR}" ${PACK_COMMON_OPTIONS}
+
+${OBJECTDIR}/_ext/1946630766/ecc.o: ../../../../lib/wolfssl/wolfcrypt/src/ecc.c .generated_files/flags/default/9980cd7fb08f9830fc16800f788926b3761ee333 .generated_files/flags/default/da39a3ee5e6b4b0d3255bfef95601890afd80709
+ @${MKDIR} "${OBJECTDIR}/_ext/1946630766"
+ @${RM} ${OBJECTDIR}/_ext/1946630766/ecc.o.d
+ @${RM} ${OBJECTDIR}/_ext/1946630766/ecc.o
+ ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -fno-common -D__WOLFBOOT -DWOLFBOOT_SIGN_ECC384 -DDUALBANK_SWAP=1 -DWOLFBOOT_HASH_SHA256 -DIMAGE_HEADER_SIZE=512 -DWOLFBOOT_ARCH_ARM -DTARGET_same51 -DWOLFBOOT_DUALBOOT -DWOLFSSL_USER_SETTINGS -I"../src" -I"../src/config/default" -I"../src/packs/ATSAME51J20A_DFP" -I"../src/packs/CMSIS/" -I"../src/packs/CMSIS/CMSIS/Core/Include" -I"../../../../include/wolfboot" -I"../../../../include/MPLAB" -I"../../../../lib/wolfssl" -I"../../../../include" -MP -MMD -MF "${OBJECTDIR}/_ext/1946630766/ecc.o.d" -o ${OBJECTDIR}/_ext/1946630766/ecc.o ../../../../lib/wolfssl/wolfcrypt/src/ecc.c -DXPRJ_default=$(CND_CONF) $(COMPARISON_BUILD) -mdfp="${DFP_DIR}" ${PACK_COMMON_OPTIONS}
+
+${OBJECTDIR}/_ext/1946630766/hash.o: ../../../../lib/wolfssl/wolfcrypt/src/hash.c .generated_files/flags/default/e9793b92361724c519042e91df438e4b8cc066a2 .generated_files/flags/default/da39a3ee5e6b4b0d3255bfef95601890afd80709
+ @${MKDIR} "${OBJECTDIR}/_ext/1946630766"
+ @${RM} ${OBJECTDIR}/_ext/1946630766/hash.o.d
+ @${RM} ${OBJECTDIR}/_ext/1946630766/hash.o
+ ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -fno-common -D__WOLFBOOT -DWOLFBOOT_SIGN_ECC384 -DDUALBANK_SWAP=1 -DWOLFBOOT_HASH_SHA256 -DIMAGE_HEADER_SIZE=512 -DWOLFBOOT_ARCH_ARM -DTARGET_same51 -DWOLFBOOT_DUALBOOT -DWOLFSSL_USER_SETTINGS -I"../src" -I"../src/config/default" -I"../src/packs/ATSAME51J20A_DFP" -I"../src/packs/CMSIS/" -I"../src/packs/CMSIS/CMSIS/Core/Include" -I"../../../../include/wolfboot" -I"../../../../include/MPLAB" -I"../../../../lib/wolfssl" -I"../../../../include" -MP -MMD -MF "${OBJECTDIR}/_ext/1946630766/hash.o.d" -o ${OBJECTDIR}/_ext/1946630766/hash.o ../../../../lib/wolfssl/wolfcrypt/src/hash.c -DXPRJ_default=$(CND_CONF) $(COMPARISON_BUILD) -mdfp="${DFP_DIR}" ${PACK_COMMON_OPTIONS}
+
+${OBJECTDIR}/_ext/1946630766/memory.o: ../../../../lib/wolfssl/wolfcrypt/src/memory.c .generated_files/flags/default/1d64ef964076f320d4074ad20345500c1ece6326 .generated_files/flags/default/da39a3ee5e6b4b0d3255bfef95601890afd80709
+ @${MKDIR} "${OBJECTDIR}/_ext/1946630766"
+ @${RM} ${OBJECTDIR}/_ext/1946630766/memory.o.d
+ @${RM} ${OBJECTDIR}/_ext/1946630766/memory.o
+ ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -fno-common -D__WOLFBOOT -DWOLFBOOT_SIGN_ECC384 -DDUALBANK_SWAP=1 -DWOLFBOOT_HASH_SHA256 -DIMAGE_HEADER_SIZE=512 -DWOLFBOOT_ARCH_ARM -DTARGET_same51 -DWOLFBOOT_DUALBOOT -DWOLFSSL_USER_SETTINGS -I"../src" -I"../src/config/default" -I"../src/packs/ATSAME51J20A_DFP" -I"../src/packs/CMSIS/" -I"../src/packs/CMSIS/CMSIS/Core/Include" -I"../../../../include/wolfboot" -I"../../../../include/MPLAB" -I"../../../../lib/wolfssl" -I"../../../../include" -MP -MMD -MF "${OBJECTDIR}/_ext/1946630766/memory.o.d" -o ${OBJECTDIR}/_ext/1946630766/memory.o ../../../../lib/wolfssl/wolfcrypt/src/memory.c -DXPRJ_default=$(CND_CONF) $(COMPARISON_BUILD) -mdfp="${DFP_DIR}" ${PACK_COMMON_OPTIONS}
+
+${OBJECTDIR}/_ext/1946630766/sha256.o: ../../../../lib/wolfssl/wolfcrypt/src/sha256.c .generated_files/flags/default/5e6ae4fe9477793479f3a94cb846174879eee7ed .generated_files/flags/default/da39a3ee5e6b4b0d3255bfef95601890afd80709
+ @${MKDIR} "${OBJECTDIR}/_ext/1946630766"
+ @${RM} ${OBJECTDIR}/_ext/1946630766/sha256.o.d
+ @${RM} ${OBJECTDIR}/_ext/1946630766/sha256.o
+ ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -fno-common -D__WOLFBOOT -DWOLFBOOT_SIGN_ECC384 -DDUALBANK_SWAP=1 -DWOLFBOOT_HASH_SHA256 -DIMAGE_HEADER_SIZE=512 -DWOLFBOOT_ARCH_ARM -DTARGET_same51 -DWOLFBOOT_DUALBOOT -DWOLFSSL_USER_SETTINGS -I"../src" -I"../src/config/default" -I"../src/packs/ATSAME51J20A_DFP" -I"../src/packs/CMSIS/" -I"../src/packs/CMSIS/CMSIS/Core/Include" -I"../../../../include/wolfboot" -I"../../../../include/MPLAB" -I"../../../../lib/wolfssl" -I"../../../../include" -MP -MMD -MF "${OBJECTDIR}/_ext/1946630766/sha256.o.d" -o ${OBJECTDIR}/_ext/1946630766/sha256.o ../../../../lib/wolfssl/wolfcrypt/src/sha256.c -DXPRJ_default=$(CND_CONF) $(COMPARISON_BUILD) -mdfp="${DFP_DIR}" ${PACK_COMMON_OPTIONS}
+
+${OBJECTDIR}/_ext/1946630766/sp_c32.o: ../../../../lib/wolfssl/wolfcrypt/src/sp_c32.c .generated_files/flags/default/ced3e02d6aa7ba2274d54ba91e4157bf423f58aa .generated_files/flags/default/da39a3ee5e6b4b0d3255bfef95601890afd80709
+ @${MKDIR} "${OBJECTDIR}/_ext/1946630766"
+ @${RM} ${OBJECTDIR}/_ext/1946630766/sp_c32.o.d
+ @${RM} ${OBJECTDIR}/_ext/1946630766/sp_c32.o
+ ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -fno-common -D__WOLFBOOT -DWOLFBOOT_SIGN_ECC384 -DDUALBANK_SWAP=1 -DWOLFBOOT_HASH_SHA256 -DIMAGE_HEADER_SIZE=512 -DWOLFBOOT_ARCH_ARM -DTARGET_same51 -DWOLFBOOT_DUALBOOT -DWOLFSSL_USER_SETTINGS -I"../src" -I"../src/config/default" -I"../src/packs/ATSAME51J20A_DFP" -I"../src/packs/CMSIS/" -I"../src/packs/CMSIS/CMSIS/Core/Include" -I"../../../../include/wolfboot" -I"../../../../include/MPLAB" -I"../../../../lib/wolfssl" -I"../../../../include" -MP -MMD -MF "${OBJECTDIR}/_ext/1946630766/sp_c32.o.d" -o ${OBJECTDIR}/_ext/1946630766/sp_c32.o ../../../../lib/wolfssl/wolfcrypt/src/sp_c32.c -DXPRJ_default=$(CND_CONF) $(COMPARISON_BUILD) -mdfp="${DFP_DIR}" ${PACK_COMMON_OPTIONS}
+
+${OBJECTDIR}/_ext/1946630766/sp_int.o: ../../../../lib/wolfssl/wolfcrypt/src/sp_int.c .generated_files/flags/default/421f3b00f78ba51d7b6ae7d4e42b10fca51e266 .generated_files/flags/default/da39a3ee5e6b4b0d3255bfef95601890afd80709
+ @${MKDIR} "${OBJECTDIR}/_ext/1946630766"
+ @${RM} ${OBJECTDIR}/_ext/1946630766/sp_int.o.d
+ @${RM} ${OBJECTDIR}/_ext/1946630766/sp_int.o
+ ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -fno-common -D__WOLFBOOT -DWOLFBOOT_SIGN_ECC384 -DDUALBANK_SWAP=1 -DWOLFBOOT_HASH_SHA256 -DIMAGE_HEADER_SIZE=512 -DWOLFBOOT_ARCH_ARM -DTARGET_same51 -DWOLFBOOT_DUALBOOT -DWOLFSSL_USER_SETTINGS -I"../src" -I"../src/config/default" -I"../src/packs/ATSAME51J20A_DFP" -I"../src/packs/CMSIS/" -I"../src/packs/CMSIS/CMSIS/Core/Include" -I"../../../../include/wolfboot" -I"../../../../include/MPLAB" -I"../../../../lib/wolfssl" -I"../../../../include" -MP -MMD -MF "${OBJECTDIR}/_ext/1946630766/sp_int.o.d" -o ${OBJECTDIR}/_ext/1946630766/sp_int.o ../../../../lib/wolfssl/wolfcrypt/src/sp_int.c -DXPRJ_default=$(CND_CONF) $(COMPARISON_BUILD) -mdfp="${DFP_DIR}" ${PACK_COMMON_OPTIONS}
+
+${OBJECTDIR}/_ext/1946630766/wc_port.o: ../../../../lib/wolfssl/wolfcrypt/src/wc_port.c .generated_files/flags/default/5a986bbea5f14b9ea38f4193bc2f343d089b3679 .generated_files/flags/default/da39a3ee5e6b4b0d3255bfef95601890afd80709
+ @${MKDIR} "${OBJECTDIR}/_ext/1946630766"
+ @${RM} ${OBJECTDIR}/_ext/1946630766/wc_port.o.d
+ @${RM} ${OBJECTDIR}/_ext/1946630766/wc_port.o
+ ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -fno-common -D__WOLFBOOT -DWOLFBOOT_SIGN_ECC384 -DDUALBANK_SWAP=1 -DWOLFBOOT_HASH_SHA256 -DIMAGE_HEADER_SIZE=512 -DWOLFBOOT_ARCH_ARM -DTARGET_same51 -DWOLFBOOT_DUALBOOT -DWOLFSSL_USER_SETTINGS -I"../src" -I"../src/config/default" -I"../src/packs/ATSAME51J20A_DFP" -I"../src/packs/CMSIS/" -I"../src/packs/CMSIS/CMSIS/Core/Include" -I"../../../../include/wolfboot" -I"../../../../include/MPLAB" -I"../../../../lib/wolfssl" -I"../../../../include" -MP -MMD -MF "${OBJECTDIR}/_ext/1946630766/wc_port.o.d" -o ${OBJECTDIR}/_ext/1946630766/wc_port.o ../../../../lib/wolfssl/wolfcrypt/src/wc_port.c -DXPRJ_default=$(CND_CONF) $(COMPARISON_BUILD) -mdfp="${DFP_DIR}" ${PACK_COMMON_OPTIONS}
+
+${OBJECTDIR}/_ext/1946630766/wolfmath.o: ../../../../lib/wolfssl/wolfcrypt/src/wolfmath.c .generated_files/flags/default/4e20b0d0e58bc07d129dddf5f672e144511d170d .generated_files/flags/default/da39a3ee5e6b4b0d3255bfef95601890afd80709
+ @${MKDIR} "${OBJECTDIR}/_ext/1946630766"
+ @${RM} ${OBJECTDIR}/_ext/1946630766/wolfmath.o.d
+ @${RM} ${OBJECTDIR}/_ext/1946630766/wolfmath.o
+ ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -fno-common -D__WOLFBOOT -DWOLFBOOT_SIGN_ECC384 -DDUALBANK_SWAP=1 -DWOLFBOOT_HASH_SHA256 -DIMAGE_HEADER_SIZE=512 -DWOLFBOOT_ARCH_ARM -DTARGET_same51 -DWOLFBOOT_DUALBOOT -DWOLFSSL_USER_SETTINGS -I"../src" -I"../src/config/default" -I"../src/packs/ATSAME51J20A_DFP" -I"../src/packs/CMSIS/" -I"../src/packs/CMSIS/CMSIS/Core/Include" -I"../../../../include/wolfboot" -I"../../../../include/MPLAB" -I"../../../../lib/wolfssl" -I"../../../../include" -MP -MMD -MF "${OBJECTDIR}/_ext/1946630766/wolfmath.o.d" -o ${OBJECTDIR}/_ext/1946630766/wolfmath.o ../../../../lib/wolfssl/wolfcrypt/src/wolfmath.c -DXPRJ_default=$(CND_CONF) $(COMPARISON_BUILD) -mdfp="${DFP_DIR}" ${PACK_COMMON_OPTIONS}
+
+${OBJECTDIR}/_ext/671464796/boot_arm.o: ../../../../src/boot_arm.c .generated_files/flags/default/17d299757e94e02281f843b2d8c6feef0d39a855 .generated_files/flags/default/da39a3ee5e6b4b0d3255bfef95601890afd80709
+ @${MKDIR} "${OBJECTDIR}/_ext/671464796"
+ @${RM} ${OBJECTDIR}/_ext/671464796/boot_arm.o.d
+ @${RM} ${OBJECTDIR}/_ext/671464796/boot_arm.o
+ ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -fno-common -D__WOLFBOOT -DWOLFBOOT_SIGN_ECC384 -DDUALBANK_SWAP=1 -DWOLFBOOT_HASH_SHA256 -DIMAGE_HEADER_SIZE=512 -DWOLFBOOT_ARCH_ARM -DTARGET_same51 -DWOLFBOOT_DUALBOOT -DWOLFSSL_USER_SETTINGS -I"../src" -I"../src/config/default" -I"../src/packs/ATSAME51J20A_DFP" -I"../src/packs/CMSIS/" -I"../src/packs/CMSIS/CMSIS/Core/Include" -I"../../../../include/wolfboot" -I"../../../../include/MPLAB" -I"../../../../lib/wolfssl" -I"../../../../include" -MP -MMD -MF "${OBJECTDIR}/_ext/671464796/boot_arm.o.d" -o ${OBJECTDIR}/_ext/671464796/boot_arm.o ../../../../src/boot_arm.c -DXPRJ_default=$(CND_CONF) $(COMPARISON_BUILD) -mdfp="${DFP_DIR}" ${PACK_COMMON_OPTIONS}
+
+${OBJECTDIR}/_ext/671464796/image.o: ../../../../src/image.c .generated_files/flags/default/ab485ee46917c707f4018f5d9ffb434c4ac9f06d .generated_files/flags/default/da39a3ee5e6b4b0d3255bfef95601890afd80709
+ @${MKDIR} "${OBJECTDIR}/_ext/671464796"
+ @${RM} ${OBJECTDIR}/_ext/671464796/image.o.d
+ @${RM} ${OBJECTDIR}/_ext/671464796/image.o
+ ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -fno-common -D__WOLFBOOT -DWOLFBOOT_SIGN_ECC384 -DDUALBANK_SWAP=1 -DWOLFBOOT_HASH_SHA256 -DIMAGE_HEADER_SIZE=512 -DWOLFBOOT_ARCH_ARM -DTARGET_same51 -DWOLFBOOT_DUALBOOT -DWOLFSSL_USER_SETTINGS -I"../src" -I"../src/config/default" -I"../src/packs/ATSAME51J20A_DFP" -I"../src/packs/CMSIS/" -I"../src/packs/CMSIS/CMSIS/Core/Include" -I"../../../../include/wolfboot" -I"../../../../include/MPLAB" -I"../../../../lib/wolfssl" -I"../../../../include" -MP -MMD -MF "${OBJECTDIR}/_ext/671464796/image.o.d" -o ${OBJECTDIR}/_ext/671464796/image.o ../../../../src/image.c -DXPRJ_default=$(CND_CONF) $(COMPARISON_BUILD) -mdfp="${DFP_DIR}" ${PACK_COMMON_OPTIONS}
+
+${OBJECTDIR}/_ext/671464796/libwolfboot.o: ../../../../src/libwolfboot.c .generated_files/flags/default/80a9201f0aaf43700b832d5419f74de0fa69ffd3 .generated_files/flags/default/da39a3ee5e6b4b0d3255bfef95601890afd80709
+ @${MKDIR} "${OBJECTDIR}/_ext/671464796"
+ @${RM} ${OBJECTDIR}/_ext/671464796/libwolfboot.o.d
+ @${RM} ${OBJECTDIR}/_ext/671464796/libwolfboot.o
+ ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -fno-common -D__WOLFBOOT -DWOLFBOOT_SIGN_ECC384 -DDUALBANK_SWAP=1 -DWOLFBOOT_HASH_SHA256 -DIMAGE_HEADER_SIZE=512 -DWOLFBOOT_ARCH_ARM -DTARGET_same51 -DWOLFBOOT_DUALBOOT -DWOLFSSL_USER_SETTINGS -I"../src" -I"../src/config/default" -I"../src/packs/ATSAME51J20A_DFP" -I"../src/packs/CMSIS/" -I"../src/packs/CMSIS/CMSIS/Core/Include" -I"../../../../include/wolfboot" -I"../../../../include/MPLAB" -I"../../../../lib/wolfssl" -I"../../../../include" -MP -MMD -MF "${OBJECTDIR}/_ext/671464796/libwolfboot.o.d" -o ${OBJECTDIR}/_ext/671464796/libwolfboot.o ../../../../src/libwolfboot.c -DXPRJ_default=$(CND_CONF) $(COMPARISON_BUILD) -mdfp="${DFP_DIR}" ${PACK_COMMON_OPTIONS}
+
+${OBJECTDIR}/_ext/671464796/loader.o: ../../../../src/loader.c .generated_files/flags/default/b5777e5e3af5ea6e7440860725c626fd20692099 .generated_files/flags/default/da39a3ee5e6b4b0d3255bfef95601890afd80709
+ @${MKDIR} "${OBJECTDIR}/_ext/671464796"
+ @${RM} ${OBJECTDIR}/_ext/671464796/loader.o.d
+ @${RM} ${OBJECTDIR}/_ext/671464796/loader.o
+ ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -fno-common -D__WOLFBOOT -DWOLFBOOT_SIGN_ECC384 -DDUALBANK_SWAP=1 -DWOLFBOOT_HASH_SHA256 -DIMAGE_HEADER_SIZE=512 -DWOLFBOOT_ARCH_ARM -DTARGET_same51 -DWOLFBOOT_DUALBOOT -DWOLFSSL_USER_SETTINGS -I"../src" -I"../src/config/default" -I"../src/packs/ATSAME51J20A_DFP" -I"../src/packs/CMSIS/" -I"../src/packs/CMSIS/CMSIS/Core/Include" -I"../../../../include/wolfboot" -I"../../../../include/MPLAB" -I"../../../../lib/wolfssl" -I"../../../../include" -MP -MMD -MF "${OBJECTDIR}/_ext/671464796/loader.o.d" -o ${OBJECTDIR}/_ext/671464796/loader.o ../../../../src/loader.c -DXPRJ_default=$(CND_CONF) $(COMPARISON_BUILD) -mdfp="${DFP_DIR}" ${PACK_COMMON_OPTIONS}
+
+${OBJECTDIR}/_ext/671464796/string.o: ../../../../src/string.c .generated_files/flags/default/6ffb4717243d6421976e004be688210a4d03aa5a .generated_files/flags/default/da39a3ee5e6b4b0d3255bfef95601890afd80709
+ @${MKDIR} "${OBJECTDIR}/_ext/671464796"
+ @${RM} ${OBJECTDIR}/_ext/671464796/string.o.d
+ @${RM} ${OBJECTDIR}/_ext/671464796/string.o
+ ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -fno-common -D__WOLFBOOT -DWOLFBOOT_SIGN_ECC384 -DDUALBANK_SWAP=1 -DWOLFBOOT_HASH_SHA256 -DIMAGE_HEADER_SIZE=512 -DWOLFBOOT_ARCH_ARM -DTARGET_same51 -DWOLFBOOT_DUALBOOT -DWOLFSSL_USER_SETTINGS -I"../src" -I"../src/config/default" -I"../src/packs/ATSAME51J20A_DFP" -I"../src/packs/CMSIS/" -I"../src/packs/CMSIS/CMSIS/Core/Include" -I"../../../../include/wolfboot" -I"../../../../include/MPLAB" -I"../../../../lib/wolfssl" -I"../../../../include" -MP -MMD -MF "${OBJECTDIR}/_ext/671464796/string.o.d" -o ${OBJECTDIR}/_ext/671464796/string.o ../../../../src/string.c -DXPRJ_default=$(CND_CONF) $(COMPARISON_BUILD) -mdfp="${DFP_DIR}" ${PACK_COMMON_OPTIONS}
+
+${OBJECTDIR}/_ext/671464796/update_flash_hwswap.o: ../../../../src/update_flash_hwswap.c .generated_files/flags/default/22ddcba4029509d4d5222aaf8ae2fb48e35d5896 .generated_files/flags/default/da39a3ee5e6b4b0d3255bfef95601890afd80709
+ @${MKDIR} "${OBJECTDIR}/_ext/671464796"
+ @${RM} ${OBJECTDIR}/_ext/671464796/update_flash_hwswap.o.d
+ @${RM} ${OBJECTDIR}/_ext/671464796/update_flash_hwswap.o
+ ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -fno-common -D__WOLFBOOT -DWOLFBOOT_SIGN_ECC384 -DDUALBANK_SWAP=1 -DWOLFBOOT_HASH_SHA256 -DIMAGE_HEADER_SIZE=512 -DWOLFBOOT_ARCH_ARM -DTARGET_same51 -DWOLFBOOT_DUALBOOT -DWOLFSSL_USER_SETTINGS -I"../src" -I"../src/config/default" -I"../src/packs/ATSAME51J20A_DFP" -I"../src/packs/CMSIS/" -I"../src/packs/CMSIS/CMSIS/Core/Include" -I"../../../../include/wolfboot" -I"../../../../include/MPLAB" -I"../../../../lib/wolfssl" -I"../../../../include" -MP -MMD -MF "${OBJECTDIR}/_ext/671464796/update_flash_hwswap.o.d" -o ${OBJECTDIR}/_ext/671464796/update_flash_hwswap.o ../../../../src/update_flash_hwswap.c -DXPRJ_default=$(CND_CONF) $(COMPARISON_BUILD) -mdfp="${DFP_DIR}" ${PACK_COMMON_OPTIONS}
+
+${OBJECTDIR}/_ext/671475885/same51.o: ../../../../hal/same51.c .generated_files/flags/default/606416e42313d4ffea725a25297be71257861de3 .generated_files/flags/default/da39a3ee5e6b4b0d3255bfef95601890afd80709
+ @${MKDIR} "${OBJECTDIR}/_ext/671475885"
+ @${RM} ${OBJECTDIR}/_ext/671475885/same51.o.d
+ @${RM} ${OBJECTDIR}/_ext/671475885/same51.o
+ ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -fno-common -D__WOLFBOOT -DWOLFBOOT_SIGN_ECC384 -DDUALBANK_SWAP=1 -DWOLFBOOT_HASH_SHA256 -DIMAGE_HEADER_SIZE=512 -DWOLFBOOT_ARCH_ARM -DTARGET_same51 -DWOLFBOOT_DUALBOOT -DWOLFSSL_USER_SETTINGS -I"../src" -I"../src/config/default" -I"../src/packs/ATSAME51J20A_DFP" -I"../src/packs/CMSIS/" -I"../src/packs/CMSIS/CMSIS/Core/Include" -I"../../../../include/wolfboot" -I"../../../../include/MPLAB" -I"../../../../lib/wolfssl" -I"../../../../include" -MP -MMD -MF "${OBJECTDIR}/_ext/671475885/same51.o.d" -o ${OBJECTDIR}/_ext/671475885/same51.o ../../../../hal/same51.c -DXPRJ_default=$(CND_CONF) $(COMPARISON_BUILD) -mdfp="${DFP_DIR}" ${PACK_COMMON_OPTIONS}
+
+${OBJECTDIR}/_ext/1853860402/keystore.o: ../../test/keystore.c .generated_files/flags/default/b733d3503c6dd06f92e4f7f5befc3e4471283bf2 .generated_files/flags/default/da39a3ee5e6b4b0d3255bfef95601890afd80709
+ @${MKDIR} "${OBJECTDIR}/_ext/1853860402"
+ @${RM} ${OBJECTDIR}/_ext/1853860402/keystore.o.d
+ @${RM} ${OBJECTDIR}/_ext/1853860402/keystore.o
+ ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -fno-common -D__WOLFBOOT -DWOLFBOOT_SIGN_ECC384 -DDUALBANK_SWAP=1 -DWOLFBOOT_HASH_SHA256 -DIMAGE_HEADER_SIZE=512 -DWOLFBOOT_ARCH_ARM -DTARGET_same51 -DWOLFBOOT_DUALBOOT -DWOLFSSL_USER_SETTINGS -I"../src" -I"../src/config/default" -I"../src/packs/ATSAME51J20A_DFP" -I"../src/packs/CMSIS/" -I"../src/packs/CMSIS/CMSIS/Core/Include" -I"../../../../include/wolfboot" -I"../../../../include/MPLAB" -I"../../../../lib/wolfssl" -I"../../../../include" -MP -MMD -MF "${OBJECTDIR}/_ext/1853860402/keystore.o.d" -o ${OBJECTDIR}/_ext/1853860402/keystore.o ../../test/keystore.c -DXPRJ_default=$(CND_CONF) $(COMPARISON_BUILD) -mdfp="${DFP_DIR}" ${PACK_COMMON_OPTIONS}
+
+else
+${OBJECTDIR}/_ext/1946630766/asn.o: ../../../../lib/wolfssl/wolfcrypt/src/asn.c .generated_files/flags/default/9c6a6ec6093e86d901ddb49cf2d84fbcbe28ed55 .generated_files/flags/default/da39a3ee5e6b4b0d3255bfef95601890afd80709
+ @${MKDIR} "${OBJECTDIR}/_ext/1946630766"
+ @${RM} ${OBJECTDIR}/_ext/1946630766/asn.o.d
+ @${RM} ${OBJECTDIR}/_ext/1946630766/asn.o
+ ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -fno-common -D__WOLFBOOT -DWOLFBOOT_SIGN_ECC384 -DDUALBANK_SWAP=1 -DWOLFBOOT_HASH_SHA256 -DIMAGE_HEADER_SIZE=512 -DWOLFBOOT_ARCH_ARM -DTARGET_same51 -DWOLFBOOT_DUALBOOT -DWOLFSSL_USER_SETTINGS -I"../src" -I"../src/config/default" -I"../src/packs/ATSAME51J20A_DFP" -I"../src/packs/CMSIS/" -I"../src/packs/CMSIS/CMSIS/Core/Include" -I"../../../../include/wolfboot" -I"../../../../include/MPLAB" -I"../../../../lib/wolfssl" -I"../../../../include" -MP -MMD -MF "${OBJECTDIR}/_ext/1946630766/asn.o.d" -o ${OBJECTDIR}/_ext/1946630766/asn.o ../../../../lib/wolfssl/wolfcrypt/src/asn.c -DXPRJ_default=$(CND_CONF) $(COMPARISON_BUILD) -mdfp="${DFP_DIR}" ${PACK_COMMON_OPTIONS}
+
+${OBJECTDIR}/_ext/1946630766/ecc.o: ../../../../lib/wolfssl/wolfcrypt/src/ecc.c .generated_files/flags/default/9c52fc07ee576f2655e60deb35a3deb7d12474a5 .generated_files/flags/default/da39a3ee5e6b4b0d3255bfef95601890afd80709
+ @${MKDIR} "${OBJECTDIR}/_ext/1946630766"
+ @${RM} ${OBJECTDIR}/_ext/1946630766/ecc.o.d
+ @${RM} ${OBJECTDIR}/_ext/1946630766/ecc.o
+ ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -fno-common -D__WOLFBOOT -DWOLFBOOT_SIGN_ECC384 -DDUALBANK_SWAP=1 -DWOLFBOOT_HASH_SHA256 -DIMAGE_HEADER_SIZE=512 -DWOLFBOOT_ARCH_ARM -DTARGET_same51 -DWOLFBOOT_DUALBOOT -DWOLFSSL_USER_SETTINGS -I"../src" -I"../src/config/default" -I"../src/packs/ATSAME51J20A_DFP" -I"../src/packs/CMSIS/" -I"../src/packs/CMSIS/CMSIS/Core/Include" -I"../../../../include/wolfboot" -I"../../../../include/MPLAB" -I"../../../../lib/wolfssl" -I"../../../../include" -MP -MMD -MF "${OBJECTDIR}/_ext/1946630766/ecc.o.d" -o ${OBJECTDIR}/_ext/1946630766/ecc.o ../../../../lib/wolfssl/wolfcrypt/src/ecc.c -DXPRJ_default=$(CND_CONF) $(COMPARISON_BUILD) -mdfp="${DFP_DIR}" ${PACK_COMMON_OPTIONS}
+
+${OBJECTDIR}/_ext/1946630766/hash.o: ../../../../lib/wolfssl/wolfcrypt/src/hash.c .generated_files/flags/default/7725e6ea1e372e9a3e3755b57411564936f2e473 .generated_files/flags/default/da39a3ee5e6b4b0d3255bfef95601890afd80709
+ @${MKDIR} "${OBJECTDIR}/_ext/1946630766"
+ @${RM} ${OBJECTDIR}/_ext/1946630766/hash.o.d
+ @${RM} ${OBJECTDIR}/_ext/1946630766/hash.o
+ ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -fno-common -D__WOLFBOOT -DWOLFBOOT_SIGN_ECC384 -DDUALBANK_SWAP=1 -DWOLFBOOT_HASH_SHA256 -DIMAGE_HEADER_SIZE=512 -DWOLFBOOT_ARCH_ARM -DTARGET_same51 -DWOLFBOOT_DUALBOOT -DWOLFSSL_USER_SETTINGS -I"../src" -I"../src/config/default" -I"../src/packs/ATSAME51J20A_DFP" -I"../src/packs/CMSIS/" -I"../src/packs/CMSIS/CMSIS/Core/Include" -I"../../../../include/wolfboot" -I"../../../../include/MPLAB" -I"../../../../lib/wolfssl" -I"../../../../include" -MP -MMD -MF "${OBJECTDIR}/_ext/1946630766/hash.o.d" -o ${OBJECTDIR}/_ext/1946630766/hash.o ../../../../lib/wolfssl/wolfcrypt/src/hash.c -DXPRJ_default=$(CND_CONF) $(COMPARISON_BUILD) -mdfp="${DFP_DIR}" ${PACK_COMMON_OPTIONS}
+
+${OBJECTDIR}/_ext/1946630766/memory.o: ../../../../lib/wolfssl/wolfcrypt/src/memory.c .generated_files/flags/default/c00c61cba5809b7afc92d5c3b73f50819ccf8c18 .generated_files/flags/default/da39a3ee5e6b4b0d3255bfef95601890afd80709
+ @${MKDIR} "${OBJECTDIR}/_ext/1946630766"
+ @${RM} ${OBJECTDIR}/_ext/1946630766/memory.o.d
+ @${RM} ${OBJECTDIR}/_ext/1946630766/memory.o
+ ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -fno-common -D__WOLFBOOT -DWOLFBOOT_SIGN_ECC384 -DDUALBANK_SWAP=1 -DWOLFBOOT_HASH_SHA256 -DIMAGE_HEADER_SIZE=512 -DWOLFBOOT_ARCH_ARM -DTARGET_same51 -DWOLFBOOT_DUALBOOT -DWOLFSSL_USER_SETTINGS -I"../src" -I"../src/config/default" -I"../src/packs/ATSAME51J20A_DFP" -I"../src/packs/CMSIS/" -I"../src/packs/CMSIS/CMSIS/Core/Include" -I"../../../../include/wolfboot" -I"../../../../include/MPLAB" -I"../../../../lib/wolfssl" -I"../../../../include" -MP -MMD -MF "${OBJECTDIR}/_ext/1946630766/memory.o.d" -o ${OBJECTDIR}/_ext/1946630766/memory.o ../../../../lib/wolfssl/wolfcrypt/src/memory.c -DXPRJ_default=$(CND_CONF) $(COMPARISON_BUILD) -mdfp="${DFP_DIR}" ${PACK_COMMON_OPTIONS}
+
+${OBJECTDIR}/_ext/1946630766/sha256.o: ../../../../lib/wolfssl/wolfcrypt/src/sha256.c .generated_files/flags/default/71bc61287ac9959a5b8ea59af4d0281e2f676f6d .generated_files/flags/default/da39a3ee5e6b4b0d3255bfef95601890afd80709
+ @${MKDIR} "${OBJECTDIR}/_ext/1946630766"
+ @${RM} ${OBJECTDIR}/_ext/1946630766/sha256.o.d
+ @${RM} ${OBJECTDIR}/_ext/1946630766/sha256.o
+ ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -fno-common -D__WOLFBOOT -DWOLFBOOT_SIGN_ECC384 -DDUALBANK_SWAP=1 -DWOLFBOOT_HASH_SHA256 -DIMAGE_HEADER_SIZE=512 -DWOLFBOOT_ARCH_ARM -DTARGET_same51 -DWOLFBOOT_DUALBOOT -DWOLFSSL_USER_SETTINGS -I"../src" -I"../src/config/default" -I"../src/packs/ATSAME51J20A_DFP" -I"../src/packs/CMSIS/" -I"../src/packs/CMSIS/CMSIS/Core/Include" -I"../../../../include/wolfboot" -I"../../../../include/MPLAB" -I"../../../../lib/wolfssl" -I"../../../../include" -MP -MMD -MF "${OBJECTDIR}/_ext/1946630766/sha256.o.d" -o ${OBJECTDIR}/_ext/1946630766/sha256.o ../../../../lib/wolfssl/wolfcrypt/src/sha256.c -DXPRJ_default=$(CND_CONF) $(COMPARISON_BUILD) -mdfp="${DFP_DIR}" ${PACK_COMMON_OPTIONS}
+
+${OBJECTDIR}/_ext/1946630766/sp_c32.o: ../../../../lib/wolfssl/wolfcrypt/src/sp_c32.c .generated_files/flags/default/baea2952ab6b37eb6e92b8ef2417917e336b86b8 .generated_files/flags/default/da39a3ee5e6b4b0d3255bfef95601890afd80709
+ @${MKDIR} "${OBJECTDIR}/_ext/1946630766"
+ @${RM} ${OBJECTDIR}/_ext/1946630766/sp_c32.o.d
+ @${RM} ${OBJECTDIR}/_ext/1946630766/sp_c32.o
+ ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -fno-common -D__WOLFBOOT -DWOLFBOOT_SIGN_ECC384 -DDUALBANK_SWAP=1 -DWOLFBOOT_HASH_SHA256 -DIMAGE_HEADER_SIZE=512 -DWOLFBOOT_ARCH_ARM -DTARGET_same51 -DWOLFBOOT_DUALBOOT -DWOLFSSL_USER_SETTINGS -I"../src" -I"../src/config/default" -I"../src/packs/ATSAME51J20A_DFP" -I"../src/packs/CMSIS/" -I"../src/packs/CMSIS/CMSIS/Core/Include" -I"../../../../include/wolfboot" -I"../../../../include/MPLAB" -I"../../../../lib/wolfssl" -I"../../../../include" -MP -MMD -MF "${OBJECTDIR}/_ext/1946630766/sp_c32.o.d" -o ${OBJECTDIR}/_ext/1946630766/sp_c32.o ../../../../lib/wolfssl/wolfcrypt/src/sp_c32.c -DXPRJ_default=$(CND_CONF) $(COMPARISON_BUILD) -mdfp="${DFP_DIR}" ${PACK_COMMON_OPTIONS}
+
+${OBJECTDIR}/_ext/1946630766/sp_int.o: ../../../../lib/wolfssl/wolfcrypt/src/sp_int.c .generated_files/flags/default/2ebf72c3f667e9dbeb3bc7523b17b1df9750d860 .generated_files/flags/default/da39a3ee5e6b4b0d3255bfef95601890afd80709
+ @${MKDIR} "${OBJECTDIR}/_ext/1946630766"
+ @${RM} ${OBJECTDIR}/_ext/1946630766/sp_int.o.d
+ @${RM} ${OBJECTDIR}/_ext/1946630766/sp_int.o
+ ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -fno-common -D__WOLFBOOT -DWOLFBOOT_SIGN_ECC384 -DDUALBANK_SWAP=1 -DWOLFBOOT_HASH_SHA256 -DIMAGE_HEADER_SIZE=512 -DWOLFBOOT_ARCH_ARM -DTARGET_same51 -DWOLFBOOT_DUALBOOT -DWOLFSSL_USER_SETTINGS -I"../src" -I"../src/config/default" -I"../src/packs/ATSAME51J20A_DFP" -I"../src/packs/CMSIS/" -I"../src/packs/CMSIS/CMSIS/Core/Include" -I"../../../../include/wolfboot" -I"../../../../include/MPLAB" -I"../../../../lib/wolfssl" -I"../../../../include" -MP -MMD -MF "${OBJECTDIR}/_ext/1946630766/sp_int.o.d" -o ${OBJECTDIR}/_ext/1946630766/sp_int.o ../../../../lib/wolfssl/wolfcrypt/src/sp_int.c -DXPRJ_default=$(CND_CONF) $(COMPARISON_BUILD) -mdfp="${DFP_DIR}" ${PACK_COMMON_OPTIONS}
+
+${OBJECTDIR}/_ext/1946630766/wc_port.o: ../../../../lib/wolfssl/wolfcrypt/src/wc_port.c .generated_files/flags/default/3ff2284389b562474fe7e0ae3f67384eaf363d06 .generated_files/flags/default/da39a3ee5e6b4b0d3255bfef95601890afd80709
+ @${MKDIR} "${OBJECTDIR}/_ext/1946630766"
+ @${RM} ${OBJECTDIR}/_ext/1946630766/wc_port.o.d
+ @${RM} ${OBJECTDIR}/_ext/1946630766/wc_port.o
+ ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -fno-common -D__WOLFBOOT -DWOLFBOOT_SIGN_ECC384 -DDUALBANK_SWAP=1 -DWOLFBOOT_HASH_SHA256 -DIMAGE_HEADER_SIZE=512 -DWOLFBOOT_ARCH_ARM -DTARGET_same51 -DWOLFBOOT_DUALBOOT -DWOLFSSL_USER_SETTINGS -I"../src" -I"../src/config/default" -I"../src/packs/ATSAME51J20A_DFP" -I"../src/packs/CMSIS/" -I"../src/packs/CMSIS/CMSIS/Core/Include" -I"../../../../include/wolfboot" -I"../../../../include/MPLAB" -I"../../../../lib/wolfssl" -I"../../../../include" -MP -MMD -MF "${OBJECTDIR}/_ext/1946630766/wc_port.o.d" -o ${OBJECTDIR}/_ext/1946630766/wc_port.o ../../../../lib/wolfssl/wolfcrypt/src/wc_port.c -DXPRJ_default=$(CND_CONF) $(COMPARISON_BUILD) -mdfp="${DFP_DIR}" ${PACK_COMMON_OPTIONS}
+
+${OBJECTDIR}/_ext/1946630766/wolfmath.o: ../../../../lib/wolfssl/wolfcrypt/src/wolfmath.c .generated_files/flags/default/8dd1576c1da4fa28af0b4fffbea6e87903e504da .generated_files/flags/default/da39a3ee5e6b4b0d3255bfef95601890afd80709
+ @${MKDIR} "${OBJECTDIR}/_ext/1946630766"
+ @${RM} ${OBJECTDIR}/_ext/1946630766/wolfmath.o.d
+ @${RM} ${OBJECTDIR}/_ext/1946630766/wolfmath.o
+ ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -fno-common -D__WOLFBOOT -DWOLFBOOT_SIGN_ECC384 -DDUALBANK_SWAP=1 -DWOLFBOOT_HASH_SHA256 -DIMAGE_HEADER_SIZE=512 -DWOLFBOOT_ARCH_ARM -DTARGET_same51 -DWOLFBOOT_DUALBOOT -DWOLFSSL_USER_SETTINGS -I"../src" -I"../src/config/default" -I"../src/packs/ATSAME51J20A_DFP" -I"../src/packs/CMSIS/" -I"../src/packs/CMSIS/CMSIS/Core/Include" -I"../../../../include/wolfboot" -I"../../../../include/MPLAB" -I"../../../../lib/wolfssl" -I"../../../../include" -MP -MMD -MF "${OBJECTDIR}/_ext/1946630766/wolfmath.o.d" -o ${OBJECTDIR}/_ext/1946630766/wolfmath.o ../../../../lib/wolfssl/wolfcrypt/src/wolfmath.c -DXPRJ_default=$(CND_CONF) $(COMPARISON_BUILD) -mdfp="${DFP_DIR}" ${PACK_COMMON_OPTIONS}
+
+${OBJECTDIR}/_ext/671464796/boot_arm.o: ../../../../src/boot_arm.c .generated_files/flags/default/9e223f514d85604cc70f84aeb5c7e6ed5de8049f .generated_files/flags/default/da39a3ee5e6b4b0d3255bfef95601890afd80709
+ @${MKDIR} "${OBJECTDIR}/_ext/671464796"
+ @${RM} ${OBJECTDIR}/_ext/671464796/boot_arm.o.d
+ @${RM} ${OBJECTDIR}/_ext/671464796/boot_arm.o
+ ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -fno-common -D__WOLFBOOT -DWOLFBOOT_SIGN_ECC384 -DDUALBANK_SWAP=1 -DWOLFBOOT_HASH_SHA256 -DIMAGE_HEADER_SIZE=512 -DWOLFBOOT_ARCH_ARM -DTARGET_same51 -DWOLFBOOT_DUALBOOT -DWOLFSSL_USER_SETTINGS -I"../src" -I"../src/config/default" -I"../src/packs/ATSAME51J20A_DFP" -I"../src/packs/CMSIS/" -I"../src/packs/CMSIS/CMSIS/Core/Include" -I"../../../../include/wolfboot" -I"../../../../include/MPLAB" -I"../../../../lib/wolfssl" -I"../../../../include" -MP -MMD -MF "${OBJECTDIR}/_ext/671464796/boot_arm.o.d" -o ${OBJECTDIR}/_ext/671464796/boot_arm.o ../../../../src/boot_arm.c -DXPRJ_default=$(CND_CONF) $(COMPARISON_BUILD) -mdfp="${DFP_DIR}" ${PACK_COMMON_OPTIONS}
+
+${OBJECTDIR}/_ext/671464796/image.o: ../../../../src/image.c .generated_files/flags/default/31b30afe69d73463d858b26e56fec2eab871301b .generated_files/flags/default/da39a3ee5e6b4b0d3255bfef95601890afd80709
+ @${MKDIR} "${OBJECTDIR}/_ext/671464796"
+ @${RM} ${OBJECTDIR}/_ext/671464796/image.o.d
+ @${RM} ${OBJECTDIR}/_ext/671464796/image.o
+ ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -fno-common -D__WOLFBOOT -DWOLFBOOT_SIGN_ECC384 -DDUALBANK_SWAP=1 -DWOLFBOOT_HASH_SHA256 -DIMAGE_HEADER_SIZE=512 -DWOLFBOOT_ARCH_ARM -DTARGET_same51 -DWOLFBOOT_DUALBOOT -DWOLFSSL_USER_SETTINGS -I"../src" -I"../src/config/default" -I"../src/packs/ATSAME51J20A_DFP" -I"../src/packs/CMSIS/" -I"../src/packs/CMSIS/CMSIS/Core/Include" -I"../../../../include/wolfboot" -I"../../../../include/MPLAB" -I"../../../../lib/wolfssl" -I"../../../../include" -MP -MMD -MF "${OBJECTDIR}/_ext/671464796/image.o.d" -o ${OBJECTDIR}/_ext/671464796/image.o ../../../../src/image.c -DXPRJ_default=$(CND_CONF) $(COMPARISON_BUILD) -mdfp="${DFP_DIR}" ${PACK_COMMON_OPTIONS}
+
+${OBJECTDIR}/_ext/671464796/libwolfboot.o: ../../../../src/libwolfboot.c .generated_files/flags/default/aeb1a54bb763f1bd5e7d11efd3adc9be1dfdfabf .generated_files/flags/default/da39a3ee5e6b4b0d3255bfef95601890afd80709
+ @${MKDIR} "${OBJECTDIR}/_ext/671464796"
+ @${RM} ${OBJECTDIR}/_ext/671464796/libwolfboot.o.d
+ @${RM} ${OBJECTDIR}/_ext/671464796/libwolfboot.o
+ ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -fno-common -D__WOLFBOOT -DWOLFBOOT_SIGN_ECC384 -DDUALBANK_SWAP=1 -DWOLFBOOT_HASH_SHA256 -DIMAGE_HEADER_SIZE=512 -DWOLFBOOT_ARCH_ARM -DTARGET_same51 -DWOLFBOOT_DUALBOOT -DWOLFSSL_USER_SETTINGS -I"../src" -I"../src/config/default" -I"../src/packs/ATSAME51J20A_DFP" -I"../src/packs/CMSIS/" -I"../src/packs/CMSIS/CMSIS/Core/Include" -I"../../../../include/wolfboot" -I"../../../../include/MPLAB" -I"../../../../lib/wolfssl" -I"../../../../include" -MP -MMD -MF "${OBJECTDIR}/_ext/671464796/libwolfboot.o.d" -o ${OBJECTDIR}/_ext/671464796/libwolfboot.o ../../../../src/libwolfboot.c -DXPRJ_default=$(CND_CONF) $(COMPARISON_BUILD) -mdfp="${DFP_DIR}" ${PACK_COMMON_OPTIONS}
+
+${OBJECTDIR}/_ext/671464796/loader.o: ../../../../src/loader.c .generated_files/flags/default/28e2276d70e6f317b823554c2e660f51957c3a1f .generated_files/flags/default/da39a3ee5e6b4b0d3255bfef95601890afd80709
+ @${MKDIR} "${OBJECTDIR}/_ext/671464796"
+ @${RM} ${OBJECTDIR}/_ext/671464796/loader.o.d
+ @${RM} ${OBJECTDIR}/_ext/671464796/loader.o
+ ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -fno-common -D__WOLFBOOT -DWOLFBOOT_SIGN_ECC384 -DDUALBANK_SWAP=1 -DWOLFBOOT_HASH_SHA256 -DIMAGE_HEADER_SIZE=512 -DWOLFBOOT_ARCH_ARM -DTARGET_same51 -DWOLFBOOT_DUALBOOT -DWOLFSSL_USER_SETTINGS -I"../src" -I"../src/config/default" -I"../src/packs/ATSAME51J20A_DFP" -I"../src/packs/CMSIS/" -I"../src/packs/CMSIS/CMSIS/Core/Include" -I"../../../../include/wolfboot" -I"../../../../include/MPLAB" -I"../../../../lib/wolfssl" -I"../../../../include" -MP -MMD -MF "${OBJECTDIR}/_ext/671464796/loader.o.d" -o ${OBJECTDIR}/_ext/671464796/loader.o ../../../../src/loader.c -DXPRJ_default=$(CND_CONF) $(COMPARISON_BUILD) -mdfp="${DFP_DIR}" ${PACK_COMMON_OPTIONS}
+
+${OBJECTDIR}/_ext/671464796/string.o: ../../../../src/string.c .generated_files/flags/default/c4378132ca7cb44a57ff6fad1a7651c9859159f5 .generated_files/flags/default/da39a3ee5e6b4b0d3255bfef95601890afd80709
+ @${MKDIR} "${OBJECTDIR}/_ext/671464796"
+ @${RM} ${OBJECTDIR}/_ext/671464796/string.o.d
+ @${RM} ${OBJECTDIR}/_ext/671464796/string.o
+ ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -fno-common -D__WOLFBOOT -DWOLFBOOT_SIGN_ECC384 -DDUALBANK_SWAP=1 -DWOLFBOOT_HASH_SHA256 -DIMAGE_HEADER_SIZE=512 -DWOLFBOOT_ARCH_ARM -DTARGET_same51 -DWOLFBOOT_DUALBOOT -DWOLFSSL_USER_SETTINGS -I"../src" -I"../src/config/default" -I"../src/packs/ATSAME51J20A_DFP" -I"../src/packs/CMSIS/" -I"../src/packs/CMSIS/CMSIS/Core/Include" -I"../../../../include/wolfboot" -I"../../../../include/MPLAB" -I"../../../../lib/wolfssl" -I"../../../../include" -MP -MMD -MF "${OBJECTDIR}/_ext/671464796/string.o.d" -o ${OBJECTDIR}/_ext/671464796/string.o ../../../../src/string.c -DXPRJ_default=$(CND_CONF) $(COMPARISON_BUILD) -mdfp="${DFP_DIR}" ${PACK_COMMON_OPTIONS}
+
+${OBJECTDIR}/_ext/671464796/update_flash_hwswap.o: ../../../../src/update_flash_hwswap.c .generated_files/flags/default/4b5af4ba0742a8a1d247fa5010d591eabd1a9c02 .generated_files/flags/default/da39a3ee5e6b4b0d3255bfef95601890afd80709
+ @${MKDIR} "${OBJECTDIR}/_ext/671464796"
+ @${RM} ${OBJECTDIR}/_ext/671464796/update_flash_hwswap.o.d
+ @${RM} ${OBJECTDIR}/_ext/671464796/update_flash_hwswap.o
+ ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -fno-common -D__WOLFBOOT -DWOLFBOOT_SIGN_ECC384 -DDUALBANK_SWAP=1 -DWOLFBOOT_HASH_SHA256 -DIMAGE_HEADER_SIZE=512 -DWOLFBOOT_ARCH_ARM -DTARGET_same51 -DWOLFBOOT_DUALBOOT -DWOLFSSL_USER_SETTINGS -I"../src" -I"../src/config/default" -I"../src/packs/ATSAME51J20A_DFP" -I"../src/packs/CMSIS/" -I"../src/packs/CMSIS/CMSIS/Core/Include" -I"../../../../include/wolfboot" -I"../../../../include/MPLAB" -I"../../../../lib/wolfssl" -I"../../../../include" -MP -MMD -MF "${OBJECTDIR}/_ext/671464796/update_flash_hwswap.o.d" -o ${OBJECTDIR}/_ext/671464796/update_flash_hwswap.o ../../../../src/update_flash_hwswap.c -DXPRJ_default=$(CND_CONF) $(COMPARISON_BUILD) -mdfp="${DFP_DIR}" ${PACK_COMMON_OPTIONS}
+
+${OBJECTDIR}/_ext/671475885/same51.o: ../../../../hal/same51.c .generated_files/flags/default/e4c0da3a201f4947e16f6df2afb2384696c12dfc .generated_files/flags/default/da39a3ee5e6b4b0d3255bfef95601890afd80709
+ @${MKDIR} "${OBJECTDIR}/_ext/671475885"
+ @${RM} ${OBJECTDIR}/_ext/671475885/same51.o.d
+ @${RM} ${OBJECTDIR}/_ext/671475885/same51.o
+ ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -fno-common -D__WOLFBOOT -DWOLFBOOT_SIGN_ECC384 -DDUALBANK_SWAP=1 -DWOLFBOOT_HASH_SHA256 -DIMAGE_HEADER_SIZE=512 -DWOLFBOOT_ARCH_ARM -DTARGET_same51 -DWOLFBOOT_DUALBOOT -DWOLFSSL_USER_SETTINGS -I"../src" -I"../src/config/default" -I"../src/packs/ATSAME51J20A_DFP" -I"../src/packs/CMSIS/" -I"../src/packs/CMSIS/CMSIS/Core/Include" -I"../../../../include/wolfboot" -I"../../../../include/MPLAB" -I"../../../../lib/wolfssl" -I"../../../../include" -MP -MMD -MF "${OBJECTDIR}/_ext/671475885/same51.o.d" -o ${OBJECTDIR}/_ext/671475885/same51.o ../../../../hal/same51.c -DXPRJ_default=$(CND_CONF) $(COMPARISON_BUILD) -mdfp="${DFP_DIR}" ${PACK_COMMON_OPTIONS}
+
+${OBJECTDIR}/_ext/1853860402/keystore.o: ../../test/keystore.c .generated_files/flags/default/3086ea5bce91a81ee3681489448ee5a0551e7bf0 .generated_files/flags/default/da39a3ee5e6b4b0d3255bfef95601890afd80709
+ @${MKDIR} "${OBJECTDIR}/_ext/1853860402"
+ @${RM} ${OBJECTDIR}/_ext/1853860402/keystore.o.d
+ @${RM} ${OBJECTDIR}/_ext/1853860402/keystore.o
+ ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -fno-common -D__WOLFBOOT -DWOLFBOOT_SIGN_ECC384 -DDUALBANK_SWAP=1 -DWOLFBOOT_HASH_SHA256 -DIMAGE_HEADER_SIZE=512 -DWOLFBOOT_ARCH_ARM -DTARGET_same51 -DWOLFBOOT_DUALBOOT -DWOLFSSL_USER_SETTINGS -I"../src" -I"../src/config/default" -I"../src/packs/ATSAME51J20A_DFP" -I"../src/packs/CMSIS/" -I"../src/packs/CMSIS/CMSIS/Core/Include" -I"../../../../include/wolfboot" -I"../../../../include/MPLAB" -I"../../../../lib/wolfssl" -I"../../../../include" -MP -MMD -MF "${OBJECTDIR}/_ext/1853860402/keystore.o.d" -o ${OBJECTDIR}/_ext/1853860402/keystore.o ../../test/keystore.c -DXPRJ_default=$(CND_CONF) $(COMPARISON_BUILD) -mdfp="${DFP_DIR}" ${PACK_COMMON_OPTIONS}
+
+endif
+
+# ------------------------------------------------------------------------------------
+# Rules for buildStep: compileCPP
+ifeq ($(TYPE_IMAGE), DEBUG_RUN)
+else
+endif
+
+# ------------------------------------------------------------------------------------
+# Rules for buildStep: link
+ifeq ($(TYPE_IMAGE), DEBUG_RUN)
+${DISTDIR}/wolfboot-same51.dualbank.X.${IMAGE_TYPE}.${OUTPUT_SUFFIX}: ${OBJECTFILES} nbproject/Makefile-${CND_CONF}.mk ../../../../hal/same51.ld
+ @${MKDIR} ${DISTDIR}
+ ${MP_CC} $(MP_EXTRA_LD_PRE) -g -mprocessor=$(MP_PROCESSOR_OPTION) -mno-device-startup-code -o ${DISTDIR}/wolfboot-same51.dualbank.X.${IMAGE_TYPE}.${OUTPUT_SUFFIX} ${OBJECTFILES_QUOTED_IF_SPACED} -DXPRJ_default=$(CND_CONF) $(COMPARISON_BUILD) -Wl,--defsym=__MPLAB_BUILD=1$(MP_EXTRA_LD_POST)$(MP_LINKER_FILE_OPTION),--defsym=__ICD2RAM=1,--defsym=__MPLAB_DEBUG=1,--defsym=__DEBUG=1,-D=__DEBUG_D,--defsym=_min_heap_size=512,-Map="${DISTDIR}/${PROJECTNAME}.${IMAGE_TYPE}.map",--memorysummary,${DISTDIR}/memoryfile.xml -mdfp="${DFP_DIR}"
+
+else
+${DISTDIR}/wolfboot-same51.dualbank.X.${IMAGE_TYPE}.${OUTPUT_SUFFIX}: ${OBJECTFILES} nbproject/Makefile-${CND_CONF}.mk ../../../../hal/same51.ld
+ @${MKDIR} ${DISTDIR}
+ ${MP_CC} $(MP_EXTRA_LD_PRE) -mprocessor=$(MP_PROCESSOR_OPTION) -mno-device-startup-code -o ${DISTDIR}/wolfboot-same51.dualbank.X.${IMAGE_TYPE}.${DEBUGGABLE_SUFFIX} ${OBJECTFILES_QUOTED_IF_SPACED} -DXPRJ_default=$(CND_CONF) $(COMPARISON_BUILD) -Wl,--defsym=__MPLAB_BUILD=1$(MP_EXTRA_LD_POST)$(MP_LINKER_FILE_OPTION),--defsym=_min_heap_size=512,-Map="${DISTDIR}/${PROJECTNAME}.${IMAGE_TYPE}.map",--memorysummary,${DISTDIR}/memoryfile.xml -mdfp="${DFP_DIR}"
+ ${MP_CC_DIR}/xc32-bin2hex ${DISTDIR}/wolfboot-same51.dualbank.X.${IMAGE_TYPE}.${DEBUGGABLE_SUFFIX}
+endif
+
+
+# Subprojects
+.build-subprojects:
+
+
+# Subprojects
+.clean-subprojects:
+
+# Clean Targets
+.clean-conf: ${CLEAN_SUBPROJECTS}
+ ${RM} -r ${OBJECTDIR}
+ ${RM} -r ${DISTDIR}
+
+# Enable dependency checking
+.dep.inc: .depcheck-impl
+
+DEPFILES=$(wildcard ${POSSIBLE_DEPFILES})
+ifneq (${DEPFILES},)
+include ${DEPFILES}
+endif
diff --git a/IDE/MPLAB/bootloader/wolfboot-same51.dualbank.X/nbproject/Makefile-genesis.properties b/IDE/MPLAB/bootloader/wolfboot-same51.dualbank.X/nbproject/Makefile-genesis.properties
new file mode 100644
index 000000000..5ad38d5b0
--- /dev/null
+++ b/IDE/MPLAB/bootloader/wolfboot-same51.dualbank.X/nbproject/Makefile-genesis.properties
@@ -0,0 +1,13 @@
+#
+#Thu Feb 15 09:28:13 CET 2024
+default.languagetoolchain.version=4.35
+default.Pack.dfplocation=/opt/microchip/mplabx/v6.15/packs/Microchip/SAME51_DFP/3.7.242
+conf.ids=default
+default.languagetoolchain.dir=/opt/microchip/xc32/v4.35/bin
+default.com-microchip-mplab-nbide-toolchain-xc32-XC32LanguageToolchain.md5=e989febc09d7cc672934350596f7f1d2
+host.id=130a-gnot-23
+default.platformTool.md5=null
+configurations-xml=7935fecede17ee8833df09129a7dba38
+com-microchip-mplab-nbide-embedded-makeproject-MakeProject.md5=e62346c0c0ecee2637e613b49cb7b7fa
+proj.dir=/home/dan/src/wolfboot-mplab-test/IDE/MPLAB/bootloader/wolfboot-same51.dualbank.X
+host.platform=linux
diff --git a/IDE/MPLAB/bootloader/wolfboot-same51.dualbank.X/nbproject/Makefile-impl.mk b/IDE/MPLAB/bootloader/wolfboot-same51.dualbank.X/nbproject/Makefile-impl.mk
new file mode 100644
index 000000000..3177d7d57
--- /dev/null
+++ b/IDE/MPLAB/bootloader/wolfboot-same51.dualbank.X/nbproject/Makefile-impl.mk
@@ -0,0 +1,69 @@
+#
+# Generated Makefile - do not edit!
+#
+# Edit the Makefile in the project folder instead (../Makefile). Each target
+# has a pre- and a post- target defined where you can add customization code.
+#
+# This makefile implements macros and targets common to all configurations.
+#
+# NOCDDL
+
+
+# Building and Cleaning subprojects are done by default, but can be controlled with the SUB
+# macro. If SUB=no, subprojects will not be built or cleaned. The following macro
+# statements set BUILD_SUB-CONF and CLEAN_SUB-CONF to .build-reqprojects-conf
+# and .clean-reqprojects-conf unless SUB has the value 'no'
+SUB_no=NO
+SUBPROJECTS=${SUB_${SUB}}
+BUILD_SUBPROJECTS_=.build-subprojects
+BUILD_SUBPROJECTS_NO=
+BUILD_SUBPROJECTS=${BUILD_SUBPROJECTS_${SUBPROJECTS}}
+CLEAN_SUBPROJECTS_=.clean-subprojects
+CLEAN_SUBPROJECTS_NO=
+CLEAN_SUBPROJECTS=${CLEAN_SUBPROJECTS_${SUBPROJECTS}}
+
+
+# Project Name
+PROJECTNAME=wolfboot-same51.dualbank.X
+
+# Active Configuration
+DEFAULTCONF=default
+CONF=${DEFAULTCONF}
+
+# All Configurations
+ALLCONFS=default
+
+
+# build
+.build-impl: .build-pre
+ ${MAKE} -f nbproject/Makefile-${CONF}.mk SUBPROJECTS=${SUBPROJECTS} .build-conf
+
+
+# clean
+.clean-impl: .clean-pre
+ ${MAKE} -f nbproject/Makefile-${CONF}.mk SUBPROJECTS=${SUBPROJECTS} .clean-conf
+
+# clobber
+.clobber-impl: .clobber-pre .depcheck-impl
+ ${MAKE} SUBPROJECTS=${SUBPROJECTS} CONF=default clean
+
+
+
+# all
+.all-impl: .all-pre .depcheck-impl
+ ${MAKE} SUBPROJECTS=${SUBPROJECTS} CONF=default build
+
+
+
+# dependency checking support
+.depcheck-impl:
+# @echo "# This code depends on make tool being used" >.dep.inc
+# @if [ -n "${MAKE_VERSION}" ]; then \
+# echo "DEPFILES=\$$(wildcard \$$(addsuffix .d, \$${OBJECTFILES}))" >>.dep.inc; \
+# echo "ifneq (\$${DEPFILES},)" >>.dep.inc; \
+# echo "include \$${DEPFILES}" >>.dep.inc; \
+# echo "endif" >>.dep.inc; \
+# else \
+# echo ".KEEP_STATE:" >>.dep.inc; \
+# echo ".KEEP_STATE_FILE:.make.state.\$${CONF}" >>.dep.inc; \
+# fi
diff --git a/IDE/MPLAB/bootloader/wolfboot-same51.dualbank.X/nbproject/Makefile-local-default.mk b/IDE/MPLAB/bootloader/wolfboot-same51.dualbank.X/nbproject/Makefile-local-default.mk
new file mode 100644
index 000000000..0b43dcf43
--- /dev/null
+++ b/IDE/MPLAB/bootloader/wolfboot-same51.dualbank.X/nbproject/Makefile-local-default.mk
@@ -0,0 +1,37 @@
+#
+# Generated Makefile - do not edit!
+#
+#
+# This file contains information about the location of compilers and other tools.
+# If you commmit this file into your revision control server, you will be able to
+# to checkout the project and build it from the command line with make. However,
+# if more than one person works on the same project, then this file might show
+# conflicts since different users are bound to have compilers in different places.
+# In that case you might choose to not commit this file and let MPLAB X recreate this file
+# for each user. The disadvantage of not commiting this file is that you must run MPLAB X at
+# least once so the file gets created and the project can be built. Finally, you can also
+# avoid using this file at all if you are only building from the command line with make.
+# You can invoke make with the values of the macros:
+# $ makeMP_CC="/opt/microchip/mplabc30/v3.30c/bin/pic30-gcc" ...
+#
+PATH_TO_IDE_BIN=/opt/microchip/mplabx/v6.15/mplab_platform/platform/../mplab_ide/modules/../../bin/
+# Adding MPLAB X bin directory to path.
+PATH:=/opt/microchip/mplabx/v6.15/mplab_platform/platform/../mplab_ide/modules/../../bin/:$(PATH)
+# Path to java used to run MPLAB X when this makefile was created
+MP_JAVA_PATH="/opt/microchip/mplabx/v6.15/sys/java/zulu8.64.0.19-ca-fx-jre8.0.345-linux_x64/bin/"
+OS_CURRENT="$(shell uname -s)"
+MP_CC="/opt/microchip/xc32/v4.35/bin/xc32-gcc"
+MP_CPPC="/opt/microchip/xc32/v4.35/bin/xc32-g++"
+# MP_BC is not defined
+MP_AS="/opt/microchip/xc32/v4.35/bin/xc32-as"
+MP_LD="/opt/microchip/xc32/v4.35/bin/xc32-ld"
+MP_AR="/opt/microchip/xc32/v4.35/bin/xc32-ar"
+DEP_GEN=${MP_JAVA_PATH}java -jar "/opt/microchip/mplabx/v6.15/mplab_platform/platform/../mplab_ide/modules/../../bin/extractobjectdependencies.jar"
+MP_CC_DIR="/opt/microchip/xc32/v4.35/bin"
+MP_CPPC_DIR="/opt/microchip/xc32/v4.35/bin"
+# MP_BC_DIR is not defined
+MP_AS_DIR="/opt/microchip/xc32/v4.35/bin"
+MP_LD_DIR="/opt/microchip/xc32/v4.35/bin"
+MP_AR_DIR="/opt/microchip/xc32/v4.35/bin"
+CMSIS_DIR=/opt/microchip/mplabx/v6.15/packs/arm/CMSIS/5.4.0
+DFP_DIR=/opt/microchip/mplabx/v6.15/packs/Microchip/SAME51_DFP/3.7.242
diff --git a/IDE/MPLAB/bootloader/wolfboot-same51.dualbank.X/nbproject/Makefile-variables.mk b/IDE/MPLAB/bootloader/wolfboot-same51.dualbank.X/nbproject/Makefile-variables.mk
new file mode 100644
index 000000000..dad6068de
--- /dev/null
+++ b/IDE/MPLAB/bootloader/wolfboot-same51.dualbank.X/nbproject/Makefile-variables.mk
@@ -0,0 +1,10 @@
+#
+# Generated - do not edit!
+#
+# NOCDDL
+#
+CND_BASEDIR=`pwd`
+# default configuration
+CND_ARTIFACT_DIR_default=dist/default/production
+CND_ARTIFACT_NAME_default=wolfboot-same51.dualbank.X.production.hex
+CND_ARTIFACT_PATH_default=dist/default/production/wolfboot-same51.dualbank.X.production.hex
diff --git a/IDE/MPLAB/bootloader/wolfboot-same51.dualbank.X/nbproject/configurations.xml b/IDE/MPLAB/bootloader/wolfboot-same51.dualbank.X/nbproject/configurations.xml
new file mode 100644
index 000000000..e8a52c1e9
--- /dev/null
+++ b/IDE/MPLAB/bootloader/wolfboot-same51.dualbank.X/nbproject/configurations.xml
@@ -0,0 +1,334 @@
+
+
+
+
+
+
+
+
+ ../src/config/default/peripheral/clock/plib_clock.h
+
+
+ ../src/config/default/peripheral/cmcc/plib_cmcc.h
+
+
+ ../src/config/default/peripheral/nvic/plib_nvic.h
+
+
+ ../src/config/default/peripheral/port/plib_port.h
+
+
+ ../src/config/default/definitions.h
+ ../src/config/default/device_vectors.h
+ ../src/config/default/interrupts.h
+ ../src/config/default/toolchain_specifics.h
+ ../src/config/default/device_cache.h
+
+
+
+
+ Makefile
+ wolfboot-same51.dualbank.mc3
+
+
+
+
+
+
+ ../../../../hal/same51.ld
+
+
+
+ ../../../../lib/wolfssl/wolfcrypt/src/asn.c
+ ../../../../lib/wolfssl/wolfcrypt/src/ecc.c
+ ../../../../lib/wolfssl/wolfcrypt/src/hash.c
+ ../../../../lib/wolfssl/wolfcrypt/src/memory.c
+ ../../../../lib/wolfssl/wolfcrypt/src/sha256.c
+ ../../../../lib/wolfssl/wolfcrypt/src/sp_c32.c
+ ../../../../lib/wolfssl/wolfcrypt/src/sp_int.c
+ ../../../../lib/wolfssl/wolfcrypt/src/wc_port.c
+ ../../../../lib/wolfssl/wolfcrypt/src/wolfmath.c
+
+ ../src/config/default/pin_configurations.csv
+ ../../../../src/boot_arm.c
+ ../../../../src/image.c
+ ../../../../src/libwolfboot.c
+ ../../../../src/loader.c
+ ../../../../src/string.c
+ ../../../../src/update_flash_hwswap.c
+ ../../../../hal/same51.c
+ ../../test/keystore.c
+
+
+
+ ../../../../src
+ ../../../../hal
+ ../../../../lib/wolfssl/wolfcrypt/src
+ ../../test
+
+ Makefile
+
+
+
+ localhost
+ ATSAME51J20A
+
+
+ noID
+ XC32
+ 4.35
+ 3
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ false
+ false
+
+
+
+
+
+
+ false
+ false
+
+ false
+
+ false
+ false
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/IDE/MPLAB/bootloader/wolfboot-same51.dualbank.X/nbproject/private/configurations.xml b/IDE/MPLAB/bootloader/wolfboot-same51.dualbank.X/nbproject/private/configurations.xml
new file mode 100644
index 000000000..4b34d5b4c
--- /dev/null
+++ b/IDE/MPLAB/bootloader/wolfboot-same51.dualbank.X/nbproject/private/configurations.xml
@@ -0,0 +1,25 @@
+
+
+ Makefile
+ 0
+
+
+ noToolString
+ /opt/microchip/xc32/v4.35/bin
+
+ place holder 1
+ place holder 2
+
+
+
+
+ true
+ 0
+ 0
+ 0
+
+
+
+
+
+
diff --git a/IDE/MPLAB/bootloader/wolfboot-same51.dualbank.X/nbproject/private/private.xml b/IDE/MPLAB/bootloader/wolfboot-same51.dualbank.X/nbproject/private/private.xml
new file mode 100644
index 000000000..6807a2ba1
--- /dev/null
+++ b/IDE/MPLAB/bootloader/wolfboot-same51.dualbank.X/nbproject/private/private.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/IDE/MPLAB/bootloader/wolfboot-same51.dualbank.X/nbproject/project.xml b/IDE/MPLAB/bootloader/wolfboot-same51.dualbank.X/nbproject/project.xml
new file mode 100644
index 000000000..2ac9d8653
--- /dev/null
+++ b/IDE/MPLAB/bootloader/wolfboot-same51.dualbank.X/nbproject/project.xml
@@ -0,0 +1,28 @@
+
+
+ com.microchip.mplab.nbide.embedded.makeproject
+
+
+ wolfboot-same51.dualbank
+ 9665afff-1e3b-4391-aaf1-cf963e78df7c
+ 0
+ ISO-8859-1
+
+
+ ../../../../src
+ ../../../../hal
+ ../../../../lib/wolfssl/wolfcrypt/src
+ ../../test
+
+
+
+ default
+ 2
+
+
+
+ false
+
+
+
+
diff --git a/IDE/MPLAB/bootloader/wolfboot-same51.dualbank.X/wolfboot-same51.dualbank.mc3 b/IDE/MPLAB/bootloader/wolfboot-same51.dualbank.X/wolfboot-same51.dualbank.mc3
new file mode 100644
index 000000000..707323206
--- /dev/null
+++ b/IDE/MPLAB/bootloader/wolfboot-same51.dualbank.X/wolfboot-same51.dualbank.mc3
@@ -0,0 +1,125 @@
+
+
+
+
+ core
+ class com.microchip.mcc.harmony.HarmonyModule
+
+
+
+
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><UserData>
+ <UserData dnOrder="0">
+ <GraphSettings canvasHeight="90" canvasWidth="646" dnOrder="0"/>
+ <PowerProfiles dnOrder="1">
+ <Profile dnOrder="0" id="profile0" name="Main"/>
+ </PowerProfiles>
+ <ComponentGraph dnOrder="2" id="__ROOTVIEW">
+ <ElementPositions dnOrder="0">
+ <ElementPosition dnOrder="0" id="core" x="79" y="35"/>
+ </ElementPositions>
+ </ComponentGraph>
+ </UserData>
+</UserData>
+
+
+
+
+ __ROOTVIEW
+
+
+
+
+ ..\src\config\default\ATSAME51J20A.ld
+ 15cc39143f19337d981ec510fb70d42c944cd8b2cf96c6fe85f9c053341dfae2
+
+
+ ..\src\config\default\definitions.h
+ a4a5a502bbcae342761e0f1f939f346fae85b9dbaa35ae40af75c2f15408a977
+
+
+ ..\src\config\default\device_cache.h
+ e2914501b361bbc93a56d6915b1bf4fac00277e61f31fdee87a587bc15dea5b6
+
+
+ ..\src\config\default\device_vectors.h
+ 73940897ea4570f75fde55f65cc755757d1989db12e039b9960b0de07853cb45
+
+
+ ..\src\config\default\exceptions.c
+ 1fd383302c4cdf1cc6a804aa03b8abe8c1e5e5e9ea3450438c34dcea441e6b34
+
+
+ ..\src\config\default\initialization.c
+ 24706670006feed4de04af4bfd110715cf56b74ecffa06c16c35f7f6ca71c27c
+
+
+ ..\src\config\default\interrupts.c
+ 3bc333af2886370b608c63acb457051702f74b5c62c95a205ffe6aafaf39d6d2
+
+
+ ..\src\config\default\interrupts.h
+ 10080c41767fdbcc6dea33e17ea2f3f5d3646a1c55bb9114e603adbdd306bbc9
+
+
+ ..\src\config\default\libc_syscalls.c
+ 88bb2e34c939601b5b7ad076556e3ee0fcedf388436b8cddb6d6fd3e9d07472f
+
+
+ ..\src\config\default\peripheral\clock\plib_clock.c
+ 2e7cab9007e403576bfc88f2d08162d8925ddfec7720bc840dbcd530db9b747c
+
+
+ ..\src\config\default\peripheral\clock\plib_clock.h
+ 59322a99314cb17c6b595d51d18769582e61189140188aa053acfdc671487f21
+
+
+ ..\src\config\default\peripheral\cmcc\plib_cmcc.c
+ 3b03e762c5515130718e7694736be6c25984ff8078c84d21a3fb9eba54f68e5d
+
+
+ ..\src\config\default\peripheral\cmcc\plib_cmcc.h
+ 89b940242bfa0ecdba3ac53666c5996e25fab712227d37d2d6881c8a86b5f497
+
+
+ ..\src\config\default\peripheral\nvic\plib_nvic.c
+ 3d89f9371ce4e519ebca69b0bda48169332067a95f4dbfdb90c6131ced1470c4
+
+
+ ..\src\config\default\peripheral\nvic\plib_nvic.h
+ 81e813a093101d546799e00723cbf7245e2d18471fa51c8d130c5809cecca03e
+
+
+ ..\src\config\default\peripheral\port\plib_port.c
+ 989c0672607ff55b62b6f7d7733b24d7b4b2f9b0d95959ba29ba44a85a2a0a9b
+
+
+ ..\src\config\default\peripheral\port\plib_port.h
+ 6f4efd039ad6c9647412bc4496f2707909de692e43efdc176e9147f0312bf10b
+
+
+ ..\src\config\default\pin_configurations.csv
+ f7de9214fce4b79d319cc5fd5497be30a2a730d0294a413c8b820c6a9c411a7f
+
+
+ ..\src\config\default\startup_xc32.c
+ f374b97d65f92553f1b75d8c9239b8b0f8581c710f78ea47b02c7f6fa6f74c74
+
+
+ ..\src\config\default\stdio\xc32_monitor.c
+ 858f8710d4287200a5ee7f3b3ad7c24f505aed9c05c16956ab0ff9f7bb162a6a
+
+
+ ..\src\config\default\toolchain_specifics.h
+ 6fc0551b0fa3362678b3d7a227386fafa343140d31e4da3ad4af972e61cd0acb
+
+
+ ..\src\main.c
+ d3c233d419e6304bfacbafc18cc68c0f5c26e365f23b20ea40ccfac458f664c5
+
+
+
\ No newline at end of file
diff --git a/IDE/MPLAB/test-app/src/config/default/ATSAME51J20A.ld b/IDE/MPLAB/test-app/src/config/default/ATSAME51J20A.ld
new file mode 100644
index 000000000..3b5b98797
--- /dev/null
+++ b/IDE/MPLAB/test-app/src/config/default/ATSAME51J20A.ld
@@ -0,0 +1,126 @@
+OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
+OUTPUT_ARCH(arm)
+SEARCH_DIR(.)
+ENTRY(isr_reset)
+# define ROM_ORIGIN 0x8000 + 0x200
+# define ROM_LENGTH 0x100000
+# define RAM_ORIGIN 0x20000000
+# define RAM_LENGTH 0x40000
+# define TCM_ORIGIN 0x3000000
+#endif
+
+#ifndef __XC32_TCM_LENGTH
+# define __XC32_TCM_LENGTH 0x0
+#elif (defined(__XC32_TCM_LENGTH) && __XC32_TCM_LENGTH != 0x0 && __XC32_TCM_LENGTH != 0x800 && __XC32_TCM_LENGTH != 0xc00 && __XC32_TCM_LENGTH != 0x1000)
+# warning Non-standard ITCM length, using default 0x1000
+# undef __XC32_TCM_LENGTH
+# define __XC32_TCM_LENGTH 0x1000
+#endif
+#ifndef BKUPRAM_ORIGIN
+# define BKUPRAM_ORIGIN 0x47000000
+#endif
+#ifndef BKUPRAM_LENGTH
+# define BKUPRAM_LENGTH 0x2000
+#elif (BKUPRAM_LENGTH > 0x2000)
+# error BKUPRAM_LENGTH is greater than the max size of 0x2000
+#endif
+
+MEMORY
+{
+ FLASH (LRX) : ORIGIN = ROM_ORIGIN, LENGTH = (ROM_LENGTH - 0x8200)
+ RAM (WX!R) : ORIGIN = RAM_ORIGIN, LENGTH = RAM_LENGTH
+ TCM (WX) : ORIGIN = TCM_ORIGIN, LENGTH = __XC32_TCM_LENGTH
+ BRAM : ORIGIN = BKUPRAM_ORIGIN, LENGTH = BKUPRAM_LENGTH
+}
+
+SECTIONS
+{
+ .vectors :
+ {
+ . = ALIGN(4);
+ _sfixed = .;
+ KEEP(*(.vectors .vectors.* .vectors_default .vectors_default.*))
+ KEEP(*(.isr_vector))
+ KEEP(*(.reset*))
+ KEEP(*(.after_vectors))
+ } > FLASH
+
+ .text :
+ {
+ . = ALIGN(4);
+ *(.glue_7t) *(.glue_7)
+ *(.gnu.linkonce.r.*)
+ *(.ARM.extab* .gnu.linkonce.armextab.*)
+
+ . = ALIGN(4);
+ KEEP(*(.init))
+ . = ALIGN(4);
+ __preinit_array_start = .;
+ KEEP (*(.preinit_array))
+ __preinit_array_end = .;
+
+ . = ALIGN(4);
+ __init_array_start = .;
+ KEEP (*(SORT(.init_array.*)))
+ KEEP (*(.init_array))
+ __init_array_end = .;
+
+ . = ALIGN(0x4);
+ KEEP (*crtbegin.o(.ctors))
+ KEEP (*(EXCLUDE_FILE (*crtend.o) .ctors))
+ KEEP (*(SORT(.ctors.*)))
+ KEEP (*crtend.o(.ctors))
+
+ . = ALIGN(4);
+ KEEP(*(.fini))
+
+ . = ALIGN(4);
+ __fini_array_start = .;
+ KEEP (*(.fini_array))
+ KEEP (*(SORT(.fini_array.*)))
+ __fini_array_end = .;
+
+ KEEP (*crtbegin.o(.dtors))
+ KEEP (*(EXCLUDE_FILE (*crtend.o) .dtors))
+ KEEP (*(SORT(.dtors.*)))
+ KEEP (*crtend.o(.dtors))
+
+ . = ALIGN(4);
+ _efixed = .;
+ } > FLASH
+
+ PROVIDE_HIDDEN (__exidx_start = .);
+ .ARM.exidx :
+ {
+ *(.ARM.exidx* .gnu.linkonce.armexidx.*)
+ } > FLASH
+ PROVIDE_HIDDEN (__exidx_end = .);
+ . = ALIGN(4);
+ _etext = .;
+ .bss (NOLOAD) :
+ {
+ . = ALIGN(4);
+ __bss_start__ = .;
+ _sbss = . ;
+ _szero = .;
+ *(COMMON)
+ . = ALIGN(4);
+ __bss_end__ = .;
+ _ebss = . ;
+ _ezero = .;
+ } > RAM
+
+ . = ALIGN(4);
+ _end = . ;
+ _ram_end_ = ORIGIN(RAM) + LENGTH(RAM) -1 ;
+
+ .bkupram_bss :
+ {
+ *(.bkupram_bss .bkupram_bss.*)
+ *(.pbss .pbss.*)
+ } > BRAM
+}
+
+
+__rom_end = ORIGIN(FLASH) + LENGTH(FLASH);
+__ram_end = ORIGIN(RAM) + LENGTH(RAM);
diff --git a/IDE/MPLAB/test-app/src/main.c b/IDE/MPLAB/test-app/src/main.c
new file mode 100644
index 000000000..77bc0bf87
--- /dev/null
+++ b/IDE/MPLAB/test-app/src/main.c
@@ -0,0 +1,2 @@
+/* Empty file. */
+
diff --git a/IDE/MPLAB/test-app/test-usb-updater.same51.X/Makefile b/IDE/MPLAB/test-app/test-usb-updater.same51.X/Makefile
new file mode 100644
index 000000000..fca8e2ccd
--- /dev/null
+++ b/IDE/MPLAB/test-app/test-usb-updater.same51.X/Makefile
@@ -0,0 +1,113 @@
+#
+# There exist several targets which are by default empty and which can be
+# used for execution of your targets. These targets are usually executed
+# before and after some main targets. They are:
+#
+# .build-pre: called before 'build' target
+# .build-post: called after 'build' target
+# .clean-pre: called before 'clean' target
+# .clean-post: called after 'clean' target
+# .clobber-pre: called before 'clobber' target
+# .clobber-post: called after 'clobber' target
+# .all-pre: called before 'all' target
+# .all-post: called after 'all' target
+# .help-pre: called before 'help' target
+# .help-post: called after 'help' target
+#
+# Targets beginning with '.' are not intended to be called on their own.
+#
+# Main targets can be executed directly, and they are:
+#
+# build build a specific configuration
+# clean remove built files from a configuration
+# clobber remove all built files
+# all build all configurations
+# help print help mesage
+#
+# Targets .build-impl, .clean-impl, .clobber-impl, .all-impl, and
+# .help-impl are implemented in nbproject/makefile-impl.mk.
+#
+# Available make variables:
+#
+# CND_BASEDIR base directory for relative paths
+# CND_DISTDIR default top distribution directory (build artifacts)
+# CND_BUILDDIR default top build directory (object files, ...)
+# CONF name of current configuration
+# CND_ARTIFACT_DIR_${CONF} directory of build artifact (current configuration)
+# CND_ARTIFACT_NAME_${CONF} name of build artifact (current configuration)
+# CND_ARTIFACT_PATH_${CONF} path to build artifact (current configuration)
+# CND_PACKAGE_DIR_${CONF} directory of package (current configuration)
+# CND_PACKAGE_NAME_${CONF} name of package (current configuration)
+# CND_PACKAGE_PATH_${CONF} path to package (current configuration)
+#
+# NOCDDL
+
+
+# Environment
+MKDIR=mkdir
+CP=cp
+CCADMIN=CCadmin
+RANLIB=ranlib
+
+
+# build
+build: .build-post
+
+.build-pre:
+# Add your pre 'build' code here...
+
+.build-post: .build-impl
+# Add your post 'build' code here...
+
+
+# clean
+clean: .clean-post
+
+.clean-pre:
+# Add your pre 'clean' code here...
+# WARNING: the IDE does not call this target since it takes a long time to
+# simply run make. Instead, the IDE removes the configuration directories
+# under build and dist directly without calling make.
+# This target is left here so people can do a clean when running a clean
+# outside the IDE.
+
+.clean-post: .clean-impl
+# Add your post 'clean' code here...
+
+
+# clobber
+clobber: .clobber-post
+
+.clobber-pre:
+# Add your pre 'clobber' code here...
+
+.clobber-post: .clobber-impl
+# Add your post 'clobber' code here...
+
+
+# all
+all: .all-post
+
+.all-pre:
+# Add your pre 'all' code here...
+
+.all-post: .all-impl
+# Add your post 'all' code here...
+
+
+# help
+help: .help-post
+
+.help-pre:
+# Add your pre 'help' code here...
+
+.help-post: .help-impl
+# Add your post 'help' code here...
+
+
+
+# include project implementation makefile
+include nbproject/Makefile-impl.mk
+
+# include project make variables
+include nbproject/Makefile-variables.mk
diff --git a/IDE/MPLAB/test-app/test-usb-updater.same51.X/app.c b/IDE/MPLAB/test-app/test-usb-updater.same51.X/app.c
new file mode 100644
index 000000000..b11497f3f
--- /dev/null
+++ b/IDE/MPLAB/test-app/test-usb-updater.same51.X/app.c
@@ -0,0 +1,181 @@
+/* app.c
+ *
+ * Copyright (C) 2024 wolfSSL Inc.
+ *
+ * This file is part of wolfBoot.
+ *
+ * wolfBoot is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * wolfBoot is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA
+ */
+/**
+ * @file app.c
+ * @brief test update application for microchip targets, over SERCOM5
+ * verification.
+ */
+#include "config/default/definitions.h"
+#include
+#include
+#include
+#include
+#include "hal.h"
+#define HAVE_LIBWOLFBOOT 1
+
+#define USART_BUFFER_SZ (16)
+
+static const char UPDATE_ERR = '!';
+static const char UPDATE_START = '*';
+static const char UPDATE_ACK = '#';
+
+void APP_Initialize(void) {
+ int i;
+ uint32_t ver;
+ uint8_t *v_array = (uint8_t *) & ver;
+ unsigned char cmd;
+ SERCOM5_USART_Enable();
+#ifdef HAVE_LIBWOLFBOOT
+ wolfBoot_success();
+ ver = wolfBoot_current_firmware_version();
+#else
+ #define WOLFBOOT_SECTOR_SIZE (0x8000)
+ #define WOLFBOOT_PARTITION_SIZE (0x20000)
+ #define WOLFBOOT_PARTITION_UPDATE_ADDRESS (0x088000)
+ ver = 1U;
+#endif
+ /* Send command to start the update */
+ cmd = UPDATE_START;
+ SERCOM5_USART_Write(&cmd, 1);
+
+ /* Send current version */
+ for (i = 3; i >= 0; i--) {
+ SERCOM5_USART_Write(&v_array[i], 1);
+ }
+
+ /* Ready to receive the update now */
+
+}
+
+static void ack(uint32_t _off)
+{
+ uint8_t *off = (uint8_t *)(&_off);
+ unsigned char cmd = UPDATE_ACK;
+ SERCOM5_USART_Write(&cmd, 1);
+ SERCOM5_USART_Write(off, 4);
+}
+
+static int check(uint8_t *pkt, int size)
+{
+ int i;
+ uint16_t c = 0;
+ uint16_t c_rx = *((uint16_t *)(pkt + 2));
+ uint16_t *p = (uint16_t *)(pkt + 4);
+ for (i = 0; i < ((size - 4) >> 1); i++)
+ c += p[i];
+ if (c == c_rx)
+ return 0;
+ return -1;
+}
+
+static uint8_t rxbuf[USART_BUFFER_SZ];
+#define PAGESIZE 256
+static uint8_t page[PAGESIZE];
+
+void APP_Tasks(void) {
+
+ uint32_t r_total = 0;
+ uint32_t tot_len = 0, tlen = 0;
+ uint32_t next_seq = 0, recv_seq = 0;
+ hal_flash_unlock();
+ while (1) {
+ int r;
+ r_total = 0;
+ do {
+ /* Serial update packages start with "0xA5 0x5A"
+ *
+ * Loop until synchronized
+ */
+ while (r_total < 2) {
+ r = SERCOM5_USART_Read(&rxbuf[r_total], 1);
+ if (r == 1)
+ r_total++;
+
+ if ((r_total == 2) && ((rxbuf[0] != 0xA5) || rxbuf[1] != 0x5A)) {
+ r_total = 0;
+ continue;
+ }
+ }
+ r = SERCOM5_USART_Read(&rxbuf[r_total], 1);
+ if (r > 0)
+ r_total += r;
+
+ /* Break if tot_len is received from the host */
+ if ((tot_len == 0) && r_total == 2 + sizeof (uint32_t))
+ break;
+ /* Break if data received is bigger than the total len */
+ if ((r_total > 8) && (tot_len <= ((r_total - 8) + next_seq)))
+ break;
+ } while (r_total < USART_BUFFER_SZ);
+
+ /* Set total length based on the first packet received */
+ if (tot_len == 0) {
+ tlen = rxbuf[2] + (rxbuf[3] << 8) + (rxbuf[4] << 16) + (rxbuf[5] << 24);
+ if (tlen > WOLFBOOT_PARTITION_SIZE - 8) {
+ /* Invalid total length: abort transfer + restart */
+ unsigned char cmd = UPDATE_ERR;
+ SERCOM5_USART_Write(&cmd, 1);
+ SERCOM5_USART_Write(&cmd, 1);
+ SERCOM5_USART_Write(&cmd, 1);
+ cmd = UPDATE_START;
+ SERCOM5_USART_Write(&cmd, 1);
+ recv_seq = 0;
+ tot_len = 0;
+ continue;
+ }
+ tot_len = tlen;
+ /* (acknowledging '0' starts the actual transfer) */
+ ack(0);
+ continue;
+ }
+
+ if (check(rxbuf, r_total) < 0) {
+ ack(next_seq);
+ continue;
+ }
+ recv_seq = rxbuf[4] + (rxbuf[5] << 8) + (rxbuf[6] << 16) + (rxbuf[7] << 24);
+ if (recv_seq == next_seq) {
+ int psize = r_total - 8;
+ int page_idx = recv_seq % PAGESIZE;
+ memcpy(&page[recv_seq % PAGESIZE], rxbuf + 8, psize);
+ page_idx += psize;
+ if ((page_idx == PAGESIZE) || (next_seq + psize >= tot_len)) {
+ uint32_t dst = (WOLFBOOT_PARTITION_UPDATE_ADDRESS + recv_seq + psize) - page_idx;
+ if ((dst % WOLFBOOT_SECTOR_SIZE) == 0) {
+ hal_flash_erase(dst, WOLFBOOT_SECTOR_SIZE);
+ }
+ hal_flash_write(dst, page, PAGESIZE);
+ memset(page, 0xFF, PAGESIZE);
+ }
+ next_seq += psize;
+ }
+ ack(next_seq);
+ if (next_seq >= tot_len) {
+ /* Update complete */
+ wolfBoot_update_trigger();
+ hal_flash_lock();
+ break;
+ }
+ }
+ /* Wait for reboot */
+ while (1)
+ ;
+}
diff --git a/IDE/MPLAB/test-app/test-usb-updater.same51.X/main.c b/IDE/MPLAB/test-app/test-usb-updater.same51.X/main.c
new file mode 100644
index 000000000..d5f7f4344
--- /dev/null
+++ b/IDE/MPLAB/test-app/test-usb-updater.same51.X/main.c
@@ -0,0 +1,46 @@
+/* main.c
+ *
+ * Copyright (C) 2024 wolfSSL Inc.
+ *
+ * This file is part of wolfBoot.
+ *
+ * wolfBoot is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * wolfBoot is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA
+ */
+#include // Defines NULL
+#include // Defines true
+#include // Defines EXIT_FAILURE
+#include "definitions.h" // SYS function prototypes
+
+
+extern void APP_Initialize(void);
+extern void APP_Tasks(void);
+int main ( void )
+{
+ /* Initialize all modules */
+ SYS_Initialize ( NULL );
+ APP_Initialize();
+
+ while ( true )
+ {
+ /* Maintain state machines of all polled MPLAB Harmony modules. */
+ SYS_Tasks ( );
+ APP_Tasks();
+ }
+
+ /* Execution should not come here during normal operation */
+
+ return ( EXIT_FAILURE );
+}
+
diff --git a/IDE/MPLAB/test-app/test-usb-updater.same51.X/mcc-manifest-autosave.yml b/IDE/MPLAB/test-app/test-usb-updater.same51.X/mcc-manifest-autosave.yml
new file mode 100644
index 000000000..4cc288894
--- /dev/null
+++ b/IDE/MPLAB/test-app/test-usb-updater.same51.X/mcc-manifest-autosave.yml
@@ -0,0 +1,22 @@
+# This file has been autogenerated by MPLAB Code Configurator. Please do not edit this file.
+
+manifest_file_version: 1.0.0
+project: test-usb-updater.same51
+creation_date: 2024-02-15T10:21:42.729+01:00[Europe/Rome]
+operating_system: Linux
+mcc_mode: IDE
+mcc_mode_version: v6.20
+device_name: ATSAME51J20A
+compiler: XC32 4.35
+mcc_version: 5.5.0
+mcc_core_version: 5.7.0
+content_manager_version: 5.0.0
+is_mcc_offline: false
+is_using_prerelease_versions: false
+mcc_content_registries: https://registry.npmjs.org/
+device_library: {library_class: com.microchip.mcc.harmony.Harmony3Library, name: Harmony
+ V3, version: 1.5.1}
+packs: {name: SAME51_DFP, version: 3.7.242}
+modules:
+- {name: csp, type: HARMONY, version: v3.18.2}
+- {name: CMSIS_5, type: HARMONY, version: 5.9.0}
diff --git a/IDE/MPLAB/test-app/test-usb-updater.same51.X/mcc-manifest-generated-success.yml b/IDE/MPLAB/test-app/test-usb-updater.same51.X/mcc-manifest-generated-success.yml
new file mode 100644
index 000000000..8e6ec5054
--- /dev/null
+++ b/IDE/MPLAB/test-app/test-usb-updater.same51.X/mcc-manifest-generated-success.yml
@@ -0,0 +1,22 @@
+# This file has been autogenerated by MPLAB Code Configurator. Please do not edit this file.
+
+manifest_file_version: 1.0.0
+project: test-usb-updater.same51
+creation_date: 2024-02-15T10:21:42.689+01:00[Europe/Rome]
+operating_system: Linux
+mcc_mode: IDE
+mcc_mode_version: v6.20
+device_name: ATSAME51J20A
+compiler: XC32 4.35
+mcc_version: 5.5.0
+mcc_core_version: 5.7.0
+content_manager_version: 5.0.0
+is_mcc_offline: false
+is_using_prerelease_versions: false
+mcc_content_registries: https://registry.npmjs.org/
+device_library: {library_class: com.microchip.mcc.harmony.Harmony3Library, name: Harmony
+ V3, version: 1.5.1}
+packs: {name: SAME51_DFP, version: 3.7.242}
+modules:
+- {name: csp, type: HARMONY, version: v3.18.2}
+- {name: CMSIS_5, type: HARMONY, version: 5.9.0}
diff --git a/IDE/MPLAB/test-app/test-usb-updater.same51.X/nbproject/Makefile-default.mk b/IDE/MPLAB/test-app/test-usb-updater.same51.X/nbproject/Makefile-default.mk
new file mode 100644
index 000000000..f01589dc0
--- /dev/null
+++ b/IDE/MPLAB/test-app/test-usb-updater.same51.X/nbproject/Makefile-default.mk
@@ -0,0 +1,365 @@
+#
+# Generated Makefile - do not edit!
+#
+# Edit the Makefile in the project folder instead (../Makefile). Each target
+# has a -pre and a -post target defined where you can add customized code.
+#
+# This makefile implements configuration specific macros and targets.
+
+
+# Include project Makefile
+ifeq "${IGNORE_LOCAL}" "TRUE"
+# do not include local makefile. User is passing all local related variables already
+else
+include Makefile
+# Include makefile containing local settings
+ifeq "$(wildcard nbproject/Makefile-local-default.mk)" "nbproject/Makefile-local-default.mk"
+include nbproject/Makefile-local-default.mk
+endif
+endif
+
+# Environment
+MKDIR=mkdir -p
+RM=rm -f
+MV=mv
+CP=cp
+
+# Macros
+CND_CONF=default
+ifeq ($(TYPE_IMAGE), DEBUG_RUN)
+IMAGE_TYPE=debug
+OUTPUT_SUFFIX=elf
+DEBUGGABLE_SUFFIX=elf
+FINAL_IMAGE=${DISTDIR}/test-usb-updater.same51.X.${IMAGE_TYPE}.${OUTPUT_SUFFIX}
+else
+IMAGE_TYPE=production
+OUTPUT_SUFFIX=hex
+DEBUGGABLE_SUFFIX=elf
+FINAL_IMAGE=${DISTDIR}/test-usb-updater.same51.X.${IMAGE_TYPE}.${OUTPUT_SUFFIX}
+endif
+
+ifeq ($(COMPARE_BUILD), true)
+COMPARISON_BUILD=-mafrlcsj
+else
+COMPARISON_BUILD=
+endif
+
+# Object Directory
+OBJECTDIR=build/${CND_CONF}/${IMAGE_TYPE}
+
+# Distribution Directory
+DISTDIR=dist/${CND_CONF}/${IMAGE_TYPE}
+
+# Source Files Quoted if spaced
+SOURCEFILES_QUOTED_IF_SPACED=../src/config/default/peripheral/clock/plib_clock.c ../src/config/default/peripheral/cmcc/plib_cmcc.c ../src/config/default/peripheral/evsys/plib_evsys.c ../src/config/default/peripheral/nvic/plib_nvic.c ../src/config/default/peripheral/nvmctrl/plib_nvmctrl.c ../src/config/default/peripheral/port/plib_port.c ../src/config/default/peripheral/sercom/usart/plib_sercom5_usart.c ../src/config/default/stdio/xc32_monitor.c ../src/config/default/startup_xc32.c ../src/config/default/libc_syscalls.c ../src/config/default/initialization.c ../src/config/default/exceptions.c ../src/config/default/interrupts.c ../../../../src/libwolfboot.c ../../../../hal/same51.c app.c main.c ../src/main.c
+
+# Object Files Quoted if spaced
+OBJECTFILES_QUOTED_IF_SPACED=${OBJECTDIR}/_ext/1984496892/plib_clock.o ${OBJECTDIR}/_ext/1865131932/plib_cmcc.o ${OBJECTDIR}/_ext/1986646378/plib_evsys.o ${OBJECTDIR}/_ext/1865468468/plib_nvic.o ${OBJECTDIR}/_ext/1593096446/plib_nvmctrl.o ${OBJECTDIR}/_ext/1865521619/plib_port.o ${OBJECTDIR}/_ext/504274921/plib_sercom5_usart.o ${OBJECTDIR}/_ext/163028504/xc32_monitor.o ${OBJECTDIR}/_ext/1171490990/startup_xc32.o ${OBJECTDIR}/_ext/1171490990/libc_syscalls.o ${OBJECTDIR}/_ext/1171490990/initialization.o ${OBJECTDIR}/_ext/1171490990/exceptions.o ${OBJECTDIR}/_ext/1171490990/interrupts.o ${OBJECTDIR}/_ext/671464796/libwolfboot.o ${OBJECTDIR}/_ext/671475885/same51.o ${OBJECTDIR}/app.o ${OBJECTDIR}/main.o ${OBJECTDIR}/_ext/1360937237/main.o
+POSSIBLE_DEPFILES=${OBJECTDIR}/_ext/1984496892/plib_clock.o.d ${OBJECTDIR}/_ext/1865131932/plib_cmcc.o.d ${OBJECTDIR}/_ext/1986646378/plib_evsys.o.d ${OBJECTDIR}/_ext/1865468468/plib_nvic.o.d ${OBJECTDIR}/_ext/1593096446/plib_nvmctrl.o.d ${OBJECTDIR}/_ext/1865521619/plib_port.o.d ${OBJECTDIR}/_ext/504274921/plib_sercom5_usart.o.d ${OBJECTDIR}/_ext/163028504/xc32_monitor.o.d ${OBJECTDIR}/_ext/1171490990/startup_xc32.o.d ${OBJECTDIR}/_ext/1171490990/libc_syscalls.o.d ${OBJECTDIR}/_ext/1171490990/initialization.o.d ${OBJECTDIR}/_ext/1171490990/exceptions.o.d ${OBJECTDIR}/_ext/1171490990/interrupts.o.d ${OBJECTDIR}/_ext/671464796/libwolfboot.o.d ${OBJECTDIR}/_ext/671475885/same51.o.d ${OBJECTDIR}/app.o.d ${OBJECTDIR}/main.o.d ${OBJECTDIR}/_ext/1360937237/main.o.d
+
+# Object Files
+OBJECTFILES=${OBJECTDIR}/_ext/1984496892/plib_clock.o ${OBJECTDIR}/_ext/1865131932/plib_cmcc.o ${OBJECTDIR}/_ext/1986646378/plib_evsys.o ${OBJECTDIR}/_ext/1865468468/plib_nvic.o ${OBJECTDIR}/_ext/1593096446/plib_nvmctrl.o ${OBJECTDIR}/_ext/1865521619/plib_port.o ${OBJECTDIR}/_ext/504274921/plib_sercom5_usart.o ${OBJECTDIR}/_ext/163028504/xc32_monitor.o ${OBJECTDIR}/_ext/1171490990/startup_xc32.o ${OBJECTDIR}/_ext/1171490990/libc_syscalls.o ${OBJECTDIR}/_ext/1171490990/initialization.o ${OBJECTDIR}/_ext/1171490990/exceptions.o ${OBJECTDIR}/_ext/1171490990/interrupts.o ${OBJECTDIR}/_ext/671464796/libwolfboot.o ${OBJECTDIR}/_ext/671475885/same51.o ${OBJECTDIR}/app.o ${OBJECTDIR}/main.o ${OBJECTDIR}/_ext/1360937237/main.o
+
+# Source Files
+SOURCEFILES=../src/config/default/peripheral/clock/plib_clock.c ../src/config/default/peripheral/cmcc/plib_cmcc.c ../src/config/default/peripheral/evsys/plib_evsys.c ../src/config/default/peripheral/nvic/plib_nvic.c ../src/config/default/peripheral/nvmctrl/plib_nvmctrl.c ../src/config/default/peripheral/port/plib_port.c ../src/config/default/peripheral/sercom/usart/plib_sercom5_usart.c ../src/config/default/stdio/xc32_monitor.c ../src/config/default/startup_xc32.c ../src/config/default/libc_syscalls.c ../src/config/default/initialization.c ../src/config/default/exceptions.c ../src/config/default/interrupts.c ../../../../src/libwolfboot.c ../../../../hal/same51.c app.c main.c ../src/main.c
+
+# Pack Options
+PACK_COMMON_OPTIONS=-I "${CMSIS_DIR}/CMSIS/Core/Include"
+
+
+
+CFLAGS=
+ASFLAGS=
+LDLIBSOPTIONS=
+
+############# Tool locations ##########################################
+# If you copy a project from one host to another, the path where the #
+# compiler is installed may be different. #
+# If you open this project with MPLAB X in the new host, this #
+# makefile will be regenerated and the paths will be corrected. #
+#######################################################################
+# fixDeps replaces a bunch of sed/cat/printf statements that slow down the build
+FIXDEPS=fixDeps
+
+.build-conf: ${BUILD_SUBPROJECTS}
+ifneq ($(INFORMATION_MESSAGE), )
+ @echo $(INFORMATION_MESSAGE)
+endif
+ ${MAKE} -f nbproject/Makefile-default.mk ${DISTDIR}/test-usb-updater.same51.X.${IMAGE_TYPE}.${OUTPUT_SUFFIX}
+
+MP_PROCESSOR_OPTION=ATSAME51J20A
+MP_LINKER_FILE_OPTION=,--script="../src/config/default/ATSAME51J20A.ld"
+# ------------------------------------------------------------------------------------
+# Rules for buildStep: assemble
+ifeq ($(TYPE_IMAGE), DEBUG_RUN)
+else
+endif
+
+# ------------------------------------------------------------------------------------
+# Rules for buildStep: assembleWithPreprocess
+ifeq ($(TYPE_IMAGE), DEBUG_RUN)
+else
+endif
+
+# ------------------------------------------------------------------------------------
+# Rules for buildStep: compile
+ifeq ($(TYPE_IMAGE), DEBUG_RUN)
+${OBJECTDIR}/_ext/1984496892/plib_clock.o: ../src/config/default/peripheral/clock/plib_clock.c .generated_files/flags/default/83b420e1cdcf270f1754b7eb8e0166171e87a7b8 .generated_files/flags/default/da39a3ee5e6b4b0d3255bfef95601890afd80709
+ @${MKDIR} "${OBJECTDIR}/_ext/1984496892"
+ @${RM} ${OBJECTDIR}/_ext/1984496892/plib_clock.o.d
+ @${RM} ${OBJECTDIR}/_ext/1984496892/plib_clock.o
+ ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -fno-common -I"../src" -I"../src/config/default" -I"../src/packs/ATSAME51J20A_DFP" -I"../src/packs/CMSIS/" -I"../src/packs/CMSIS/CMSIS/Core/Include" -I"../../../../include" -I"../../../../include/MPLAB" -MP -MMD -MF "${OBJECTDIR}/_ext/1984496892/plib_clock.o.d" -o ${OBJECTDIR}/_ext/1984496892/plib_clock.o ../src/config/default/peripheral/clock/plib_clock.c -DXPRJ_default=$(CND_CONF) $(COMPARISON_BUILD) -mdfp="${DFP_DIR}" ${PACK_COMMON_OPTIONS}
+
+${OBJECTDIR}/_ext/1865131932/plib_cmcc.o: ../src/config/default/peripheral/cmcc/plib_cmcc.c .generated_files/flags/default/99807fdeeecf26a082172e71f0ce8450e2148fd9 .generated_files/flags/default/da39a3ee5e6b4b0d3255bfef95601890afd80709
+ @${MKDIR} "${OBJECTDIR}/_ext/1865131932"
+ @${RM} ${OBJECTDIR}/_ext/1865131932/plib_cmcc.o.d
+ @${RM} ${OBJECTDIR}/_ext/1865131932/plib_cmcc.o
+ ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -fno-common -I"../src" -I"../src/config/default" -I"../src/packs/ATSAME51J20A_DFP" -I"../src/packs/CMSIS/" -I"../src/packs/CMSIS/CMSIS/Core/Include" -I"../../../../include" -I"../../../../include/MPLAB" -MP -MMD -MF "${OBJECTDIR}/_ext/1865131932/plib_cmcc.o.d" -o ${OBJECTDIR}/_ext/1865131932/plib_cmcc.o ../src/config/default/peripheral/cmcc/plib_cmcc.c -DXPRJ_default=$(CND_CONF) $(COMPARISON_BUILD) -mdfp="${DFP_DIR}" ${PACK_COMMON_OPTIONS}
+
+${OBJECTDIR}/_ext/1986646378/plib_evsys.o: ../src/config/default/peripheral/evsys/plib_evsys.c .generated_files/flags/default/b5ae65b6d446734cb6c2ba413579ad9b6e54e585 .generated_files/flags/default/da39a3ee5e6b4b0d3255bfef95601890afd80709
+ @${MKDIR} "${OBJECTDIR}/_ext/1986646378"
+ @${RM} ${OBJECTDIR}/_ext/1986646378/plib_evsys.o.d
+ @${RM} ${OBJECTDIR}/_ext/1986646378/plib_evsys.o
+ ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -fno-common -I"../src" -I"../src/config/default" -I"../src/packs/ATSAME51J20A_DFP" -I"../src/packs/CMSIS/" -I"../src/packs/CMSIS/CMSIS/Core/Include" -I"../../../../include" -I"../../../../include/MPLAB" -MP -MMD -MF "${OBJECTDIR}/_ext/1986646378/plib_evsys.o.d" -o ${OBJECTDIR}/_ext/1986646378/plib_evsys.o ../src/config/default/peripheral/evsys/plib_evsys.c -DXPRJ_default=$(CND_CONF) $(COMPARISON_BUILD) -mdfp="${DFP_DIR}" ${PACK_COMMON_OPTIONS}
+
+${OBJECTDIR}/_ext/1865468468/plib_nvic.o: ../src/config/default/peripheral/nvic/plib_nvic.c .generated_files/flags/default/13c01c38c36dbaeb047dddc21eca7e15ebe71fd2 .generated_files/flags/default/da39a3ee5e6b4b0d3255bfef95601890afd80709
+ @${MKDIR} "${OBJECTDIR}/_ext/1865468468"
+ @${RM} ${OBJECTDIR}/_ext/1865468468/plib_nvic.o.d
+ @${RM} ${OBJECTDIR}/_ext/1865468468/plib_nvic.o
+ ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -fno-common -I"../src" -I"../src/config/default" -I"../src/packs/ATSAME51J20A_DFP" -I"../src/packs/CMSIS/" -I"../src/packs/CMSIS/CMSIS/Core/Include" -I"../../../../include" -I"../../../../include/MPLAB" -MP -MMD -MF "${OBJECTDIR}/_ext/1865468468/plib_nvic.o.d" -o ${OBJECTDIR}/_ext/1865468468/plib_nvic.o ../src/config/default/peripheral/nvic/plib_nvic.c -DXPRJ_default=$(CND_CONF) $(COMPARISON_BUILD) -mdfp="${DFP_DIR}" ${PACK_COMMON_OPTIONS}
+
+${OBJECTDIR}/_ext/1593096446/plib_nvmctrl.o: ../src/config/default/peripheral/nvmctrl/plib_nvmctrl.c .generated_files/flags/default/546c9250923b6e4b17ea8c63459839777b2305dd .generated_files/flags/default/da39a3ee5e6b4b0d3255bfef95601890afd80709
+ @${MKDIR} "${OBJECTDIR}/_ext/1593096446"
+ @${RM} ${OBJECTDIR}/_ext/1593096446/plib_nvmctrl.o.d
+ @${RM} ${OBJECTDIR}/_ext/1593096446/plib_nvmctrl.o
+ ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -fno-common -I"../src" -I"../src/config/default" -I"../src/packs/ATSAME51J20A_DFP" -I"../src/packs/CMSIS/" -I"../src/packs/CMSIS/CMSIS/Core/Include" -I"../../../../include" -I"../../../../include/MPLAB" -MP -MMD -MF "${OBJECTDIR}/_ext/1593096446/plib_nvmctrl.o.d" -o ${OBJECTDIR}/_ext/1593096446/plib_nvmctrl.o ../src/config/default/peripheral/nvmctrl/plib_nvmctrl.c -DXPRJ_default=$(CND_CONF) $(COMPARISON_BUILD) -mdfp="${DFP_DIR}" ${PACK_COMMON_OPTIONS}
+
+${OBJECTDIR}/_ext/1865521619/plib_port.o: ../src/config/default/peripheral/port/plib_port.c .generated_files/flags/default/ee68e637b1a93f6ff3b7533a5ed5f077412719f3 .generated_files/flags/default/da39a3ee5e6b4b0d3255bfef95601890afd80709
+ @${MKDIR} "${OBJECTDIR}/_ext/1865521619"
+ @${RM} ${OBJECTDIR}/_ext/1865521619/plib_port.o.d
+ @${RM} ${OBJECTDIR}/_ext/1865521619/plib_port.o
+ ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -fno-common -I"../src" -I"../src/config/default" -I"../src/packs/ATSAME51J20A_DFP" -I"../src/packs/CMSIS/" -I"../src/packs/CMSIS/CMSIS/Core/Include" -I"../../../../include" -I"../../../../include/MPLAB" -MP -MMD -MF "${OBJECTDIR}/_ext/1865521619/plib_port.o.d" -o ${OBJECTDIR}/_ext/1865521619/plib_port.o ../src/config/default/peripheral/port/plib_port.c -DXPRJ_default=$(CND_CONF) $(COMPARISON_BUILD) -mdfp="${DFP_DIR}" ${PACK_COMMON_OPTIONS}
+
+${OBJECTDIR}/_ext/504274921/plib_sercom5_usart.o: ../src/config/default/peripheral/sercom/usart/plib_sercom5_usart.c .generated_files/flags/default/13a6a3e2a77afda3d48a4d24f90de32a2d454000 .generated_files/flags/default/da39a3ee5e6b4b0d3255bfef95601890afd80709
+ @${MKDIR} "${OBJECTDIR}/_ext/504274921"
+ @${RM} ${OBJECTDIR}/_ext/504274921/plib_sercom5_usart.o.d
+ @${RM} ${OBJECTDIR}/_ext/504274921/plib_sercom5_usart.o
+ ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -fno-common -I"../src" -I"../src/config/default" -I"../src/packs/ATSAME51J20A_DFP" -I"../src/packs/CMSIS/" -I"../src/packs/CMSIS/CMSIS/Core/Include" -I"../../../../include" -I"../../../../include/MPLAB" -MP -MMD -MF "${OBJECTDIR}/_ext/504274921/plib_sercom5_usart.o.d" -o ${OBJECTDIR}/_ext/504274921/plib_sercom5_usart.o ../src/config/default/peripheral/sercom/usart/plib_sercom5_usart.c -DXPRJ_default=$(CND_CONF) $(COMPARISON_BUILD) -mdfp="${DFP_DIR}" ${PACK_COMMON_OPTIONS}
+
+${OBJECTDIR}/_ext/163028504/xc32_monitor.o: ../src/config/default/stdio/xc32_monitor.c .generated_files/flags/default/8c989ab6859f95dcac8aea61ada17491d4409299 .generated_files/flags/default/da39a3ee5e6b4b0d3255bfef95601890afd80709
+ @${MKDIR} "${OBJECTDIR}/_ext/163028504"
+ @${RM} ${OBJECTDIR}/_ext/163028504/xc32_monitor.o.d
+ @${RM} ${OBJECTDIR}/_ext/163028504/xc32_monitor.o
+ ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -fno-common -I"../src" -I"../src/config/default" -I"../src/packs/ATSAME51J20A_DFP" -I"../src/packs/CMSIS/" -I"../src/packs/CMSIS/CMSIS/Core/Include" -I"../../../../include" -I"../../../../include/MPLAB" -MP -MMD -MF "${OBJECTDIR}/_ext/163028504/xc32_monitor.o.d" -o ${OBJECTDIR}/_ext/163028504/xc32_monitor.o ../src/config/default/stdio/xc32_monitor.c -DXPRJ_default=$(CND_CONF) $(COMPARISON_BUILD) -mdfp="${DFP_DIR}" ${PACK_COMMON_OPTIONS}
+
+${OBJECTDIR}/_ext/1171490990/startup_xc32.o: ../src/config/default/startup_xc32.c .generated_files/flags/default/fc32e804533f9997b198f581efbcb688776cc849 .generated_files/flags/default/da39a3ee5e6b4b0d3255bfef95601890afd80709
+ @${MKDIR} "${OBJECTDIR}/_ext/1171490990"
+ @${RM} ${OBJECTDIR}/_ext/1171490990/startup_xc32.o.d
+ @${RM} ${OBJECTDIR}/_ext/1171490990/startup_xc32.o
+ ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -fno-common -I"../src" -I"../src/config/default" -I"../src/packs/ATSAME51J20A_DFP" -I"../src/packs/CMSIS/" -I"../src/packs/CMSIS/CMSIS/Core/Include" -I"../../../../include" -I"../../../../include/MPLAB" -MP -MMD -MF "${OBJECTDIR}/_ext/1171490990/startup_xc32.o.d" -o ${OBJECTDIR}/_ext/1171490990/startup_xc32.o ../src/config/default/startup_xc32.c -DXPRJ_default=$(CND_CONF) $(COMPARISON_BUILD) -mdfp="${DFP_DIR}" ${PACK_COMMON_OPTIONS}
+
+${OBJECTDIR}/_ext/1171490990/libc_syscalls.o: ../src/config/default/libc_syscalls.c .generated_files/flags/default/d8ddfe2ee01c3e227088b4573e67ecf9c08cb32f .generated_files/flags/default/da39a3ee5e6b4b0d3255bfef95601890afd80709
+ @${MKDIR} "${OBJECTDIR}/_ext/1171490990"
+ @${RM} ${OBJECTDIR}/_ext/1171490990/libc_syscalls.o.d
+ @${RM} ${OBJECTDIR}/_ext/1171490990/libc_syscalls.o
+ ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -fno-common -I"../src" -I"../src/config/default" -I"../src/packs/ATSAME51J20A_DFP" -I"../src/packs/CMSIS/" -I"../src/packs/CMSIS/CMSIS/Core/Include" -I"../../../../include" -I"../../../../include/MPLAB" -MP -MMD -MF "${OBJECTDIR}/_ext/1171490990/libc_syscalls.o.d" -o ${OBJECTDIR}/_ext/1171490990/libc_syscalls.o ../src/config/default/libc_syscalls.c -DXPRJ_default=$(CND_CONF) $(COMPARISON_BUILD) -mdfp="${DFP_DIR}" ${PACK_COMMON_OPTIONS}
+
+${OBJECTDIR}/_ext/1171490990/initialization.o: ../src/config/default/initialization.c .generated_files/flags/default/138a0c36911693433f66dfc8f8157e76a222ed61 .generated_files/flags/default/da39a3ee5e6b4b0d3255bfef95601890afd80709
+ @${MKDIR} "${OBJECTDIR}/_ext/1171490990"
+ @${RM} ${OBJECTDIR}/_ext/1171490990/initialization.o.d
+ @${RM} ${OBJECTDIR}/_ext/1171490990/initialization.o
+ ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -fno-common -I"../src" -I"../src/config/default" -I"../src/packs/ATSAME51J20A_DFP" -I"../src/packs/CMSIS/" -I"../src/packs/CMSIS/CMSIS/Core/Include" -I"../../../../include" -I"../../../../include/MPLAB" -MP -MMD -MF "${OBJECTDIR}/_ext/1171490990/initialization.o.d" -o ${OBJECTDIR}/_ext/1171490990/initialization.o ../src/config/default/initialization.c -DXPRJ_default=$(CND_CONF) $(COMPARISON_BUILD) -mdfp="${DFP_DIR}" ${PACK_COMMON_OPTIONS}
+
+${OBJECTDIR}/_ext/1171490990/exceptions.o: ../src/config/default/exceptions.c .generated_files/flags/default/2feab613077a3cd8f5522d6c9ac381b6d14b264b .generated_files/flags/default/da39a3ee5e6b4b0d3255bfef95601890afd80709
+ @${MKDIR} "${OBJECTDIR}/_ext/1171490990"
+ @${RM} ${OBJECTDIR}/_ext/1171490990/exceptions.o.d
+ @${RM} ${OBJECTDIR}/_ext/1171490990/exceptions.o
+ ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -fno-common -I"../src" -I"../src/config/default" -I"../src/packs/ATSAME51J20A_DFP" -I"../src/packs/CMSIS/" -I"../src/packs/CMSIS/CMSIS/Core/Include" -I"../../../../include" -I"../../../../include/MPLAB" -MP -MMD -MF "${OBJECTDIR}/_ext/1171490990/exceptions.o.d" -o ${OBJECTDIR}/_ext/1171490990/exceptions.o ../src/config/default/exceptions.c -DXPRJ_default=$(CND_CONF) $(COMPARISON_BUILD) -mdfp="${DFP_DIR}" ${PACK_COMMON_OPTIONS}
+
+${OBJECTDIR}/_ext/1171490990/interrupts.o: ../src/config/default/interrupts.c .generated_files/flags/default/6ae49f5f5ebf70d425ee03fe9508a28384944900 .generated_files/flags/default/da39a3ee5e6b4b0d3255bfef95601890afd80709
+ @${MKDIR} "${OBJECTDIR}/_ext/1171490990"
+ @${RM} ${OBJECTDIR}/_ext/1171490990/interrupts.o.d
+ @${RM} ${OBJECTDIR}/_ext/1171490990/interrupts.o
+ ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -fno-common -I"../src" -I"../src/config/default" -I"../src/packs/ATSAME51J20A_DFP" -I"../src/packs/CMSIS/" -I"../src/packs/CMSIS/CMSIS/Core/Include" -I"../../../../include" -I"../../../../include/MPLAB" -MP -MMD -MF "${OBJECTDIR}/_ext/1171490990/interrupts.o.d" -o ${OBJECTDIR}/_ext/1171490990/interrupts.o ../src/config/default/interrupts.c -DXPRJ_default=$(CND_CONF) $(COMPARISON_BUILD) -mdfp="${DFP_DIR}" ${PACK_COMMON_OPTIONS}
+
+${OBJECTDIR}/_ext/671464796/libwolfboot.o: ../../../../src/libwolfboot.c .generated_files/flags/default/3eebb1e3be98aae7d5cb938447f854bbb9bd8d43 .generated_files/flags/default/da39a3ee5e6b4b0d3255bfef95601890afd80709
+ @${MKDIR} "${OBJECTDIR}/_ext/671464796"
+ @${RM} ${OBJECTDIR}/_ext/671464796/libwolfboot.o.d
+ @${RM} ${OBJECTDIR}/_ext/671464796/libwolfboot.o
+ ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -fno-common -I"../src" -I"../src/config/default" -I"../src/packs/ATSAME51J20A_DFP" -I"../src/packs/CMSIS/" -I"../src/packs/CMSIS/CMSIS/Core/Include" -I"../../../../include" -I"../../../../include/MPLAB" -MP -MMD -MF "${OBJECTDIR}/_ext/671464796/libwolfboot.o.d" -o ${OBJECTDIR}/_ext/671464796/libwolfboot.o ../../../../src/libwolfboot.c -DXPRJ_default=$(CND_CONF) $(COMPARISON_BUILD) -mdfp="${DFP_DIR}" ${PACK_COMMON_OPTIONS}
+
+${OBJECTDIR}/_ext/671475885/same51.o: ../../../../hal/same51.c .generated_files/flags/default/4152d4e83d0acdb9935377009a42dd9144894dc2 .generated_files/flags/default/da39a3ee5e6b4b0d3255bfef95601890afd80709
+ @${MKDIR} "${OBJECTDIR}/_ext/671475885"
+ @${RM} ${OBJECTDIR}/_ext/671475885/same51.o.d
+ @${RM} ${OBJECTDIR}/_ext/671475885/same51.o
+ ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -fno-common -I"../src" -I"../src/config/default" -I"../src/packs/ATSAME51J20A_DFP" -I"../src/packs/CMSIS/" -I"../src/packs/CMSIS/CMSIS/Core/Include" -I"../../../../include" -I"../../../../include/MPLAB" -MP -MMD -MF "${OBJECTDIR}/_ext/671475885/same51.o.d" -o ${OBJECTDIR}/_ext/671475885/same51.o ../../../../hal/same51.c -DXPRJ_default=$(CND_CONF) $(COMPARISON_BUILD) -mdfp="${DFP_DIR}" ${PACK_COMMON_OPTIONS}
+
+${OBJECTDIR}/app.o: app.c .generated_files/flags/default/373b6329b03336523ae95b01d7e1c631d4b623f .generated_files/flags/default/da39a3ee5e6b4b0d3255bfef95601890afd80709
+ @${MKDIR} "${OBJECTDIR}"
+ @${RM} ${OBJECTDIR}/app.o.d
+ @${RM} ${OBJECTDIR}/app.o
+ ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -fno-common -I"../src" -I"../src/config/default" -I"../src/packs/ATSAME51J20A_DFP" -I"../src/packs/CMSIS/" -I"../src/packs/CMSIS/CMSIS/Core/Include" -I"../../../../include" -I"../../../../include/MPLAB" -MP -MMD -MF "${OBJECTDIR}/app.o.d" -o ${OBJECTDIR}/app.o app.c -DXPRJ_default=$(CND_CONF) $(COMPARISON_BUILD) -mdfp="${DFP_DIR}" ${PACK_COMMON_OPTIONS}
+
+${OBJECTDIR}/main.o: main.c .generated_files/flags/default/61c362f6eea208ce1eae62cffedc921ebff5a613 .generated_files/flags/default/da39a3ee5e6b4b0d3255bfef95601890afd80709
+ @${MKDIR} "${OBJECTDIR}"
+ @${RM} ${OBJECTDIR}/main.o.d
+ @${RM} ${OBJECTDIR}/main.o
+ ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -fno-common -I"../src" -I"../src/config/default" -I"../src/packs/ATSAME51J20A_DFP" -I"../src/packs/CMSIS/" -I"../src/packs/CMSIS/CMSIS/Core/Include" -I"../../../../include" -I"../../../../include/MPLAB" -MP -MMD -MF "${OBJECTDIR}/main.o.d" -o ${OBJECTDIR}/main.o main.c -DXPRJ_default=$(CND_CONF) $(COMPARISON_BUILD) -mdfp="${DFP_DIR}" ${PACK_COMMON_OPTIONS}
+
+${OBJECTDIR}/_ext/1360937237/main.o: ../src/main.c .generated_files/flags/default/8396f59db54cc8f435c8b0315a7d1c278e582251 .generated_files/flags/default/da39a3ee5e6b4b0d3255bfef95601890afd80709
+ @${MKDIR} "${OBJECTDIR}/_ext/1360937237"
+ @${RM} ${OBJECTDIR}/_ext/1360937237/main.o.d
+ @${RM} ${OBJECTDIR}/_ext/1360937237/main.o
+ ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -fno-common -I"../src" -I"../src/config/default" -I"../src/packs/ATSAME51J20A_DFP" -I"../src/packs/CMSIS/" -I"../src/packs/CMSIS/CMSIS/Core/Include" -I"../../../../include" -I"../../../../include/MPLAB" -MP -MMD -MF "${OBJECTDIR}/_ext/1360937237/main.o.d" -o ${OBJECTDIR}/_ext/1360937237/main.o ../src/main.c -DXPRJ_default=$(CND_CONF) $(COMPARISON_BUILD) -mdfp="${DFP_DIR}" ${PACK_COMMON_OPTIONS}
+
+else
+${OBJECTDIR}/_ext/1984496892/plib_clock.o: ../src/config/default/peripheral/clock/plib_clock.c .generated_files/flags/default/5e7f133bf8a48121c28f192ba2f3036981e254be .generated_files/flags/default/da39a3ee5e6b4b0d3255bfef95601890afd80709
+ @${MKDIR} "${OBJECTDIR}/_ext/1984496892"
+ @${RM} ${OBJECTDIR}/_ext/1984496892/plib_clock.o.d
+ @${RM} ${OBJECTDIR}/_ext/1984496892/plib_clock.o
+ ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -fno-common -I"../src" -I"../src/config/default" -I"../src/packs/ATSAME51J20A_DFP" -I"../src/packs/CMSIS/" -I"../src/packs/CMSIS/CMSIS/Core/Include" -I"../../../../include" -I"../../../../include/MPLAB" -MP -MMD -MF "${OBJECTDIR}/_ext/1984496892/plib_clock.o.d" -o ${OBJECTDIR}/_ext/1984496892/plib_clock.o ../src/config/default/peripheral/clock/plib_clock.c -DXPRJ_default=$(CND_CONF) $(COMPARISON_BUILD) -mdfp="${DFP_DIR}" ${PACK_COMMON_OPTIONS}
+
+${OBJECTDIR}/_ext/1865131932/plib_cmcc.o: ../src/config/default/peripheral/cmcc/plib_cmcc.c .generated_files/flags/default/9e0af8875ae6fc0859bf385af5c2fcf96b7b8eca .generated_files/flags/default/da39a3ee5e6b4b0d3255bfef95601890afd80709
+ @${MKDIR} "${OBJECTDIR}/_ext/1865131932"
+ @${RM} ${OBJECTDIR}/_ext/1865131932/plib_cmcc.o.d
+ @${RM} ${OBJECTDIR}/_ext/1865131932/plib_cmcc.o
+ ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -fno-common -I"../src" -I"../src/config/default" -I"../src/packs/ATSAME51J20A_DFP" -I"../src/packs/CMSIS/" -I"../src/packs/CMSIS/CMSIS/Core/Include" -I"../../../../include" -I"../../../../include/MPLAB" -MP -MMD -MF "${OBJECTDIR}/_ext/1865131932/plib_cmcc.o.d" -o ${OBJECTDIR}/_ext/1865131932/plib_cmcc.o ../src/config/default/peripheral/cmcc/plib_cmcc.c -DXPRJ_default=$(CND_CONF) $(COMPARISON_BUILD) -mdfp="${DFP_DIR}" ${PACK_COMMON_OPTIONS}
+
+${OBJECTDIR}/_ext/1986646378/plib_evsys.o: ../src/config/default/peripheral/evsys/plib_evsys.c .generated_files/flags/default/85fcd5304bfa480860a98439c365fea92dd8fd4c .generated_files/flags/default/da39a3ee5e6b4b0d3255bfef95601890afd80709
+ @${MKDIR} "${OBJECTDIR}/_ext/1986646378"
+ @${RM} ${OBJECTDIR}/_ext/1986646378/plib_evsys.o.d
+ @${RM} ${OBJECTDIR}/_ext/1986646378/plib_evsys.o
+ ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -fno-common -I"../src" -I"../src/config/default" -I"../src/packs/ATSAME51J20A_DFP" -I"../src/packs/CMSIS/" -I"../src/packs/CMSIS/CMSIS/Core/Include" -I"../../../../include" -I"../../../../include/MPLAB" -MP -MMD -MF "${OBJECTDIR}/_ext/1986646378/plib_evsys.o.d" -o ${OBJECTDIR}/_ext/1986646378/plib_evsys.o ../src/config/default/peripheral/evsys/plib_evsys.c -DXPRJ_default=$(CND_CONF) $(COMPARISON_BUILD) -mdfp="${DFP_DIR}" ${PACK_COMMON_OPTIONS}
+
+${OBJECTDIR}/_ext/1865468468/plib_nvic.o: ../src/config/default/peripheral/nvic/plib_nvic.c .generated_files/flags/default/8cea8862421d2f12075bb4e4d8f0672234432b6 .generated_files/flags/default/da39a3ee5e6b4b0d3255bfef95601890afd80709
+ @${MKDIR} "${OBJECTDIR}/_ext/1865468468"
+ @${RM} ${OBJECTDIR}/_ext/1865468468/plib_nvic.o.d
+ @${RM} ${OBJECTDIR}/_ext/1865468468/plib_nvic.o
+ ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -fno-common -I"../src" -I"../src/config/default" -I"../src/packs/ATSAME51J20A_DFP" -I"../src/packs/CMSIS/" -I"../src/packs/CMSIS/CMSIS/Core/Include" -I"../../../../include" -I"../../../../include/MPLAB" -MP -MMD -MF "${OBJECTDIR}/_ext/1865468468/plib_nvic.o.d" -o ${OBJECTDIR}/_ext/1865468468/plib_nvic.o ../src/config/default/peripheral/nvic/plib_nvic.c -DXPRJ_default=$(CND_CONF) $(COMPARISON_BUILD) -mdfp="${DFP_DIR}" ${PACK_COMMON_OPTIONS}
+
+${OBJECTDIR}/_ext/1593096446/plib_nvmctrl.o: ../src/config/default/peripheral/nvmctrl/plib_nvmctrl.c .generated_files/flags/default/f60e3d21b9dcf860a5914968b51ea2856610e6fa .generated_files/flags/default/da39a3ee5e6b4b0d3255bfef95601890afd80709
+ @${MKDIR} "${OBJECTDIR}/_ext/1593096446"
+ @${RM} ${OBJECTDIR}/_ext/1593096446/plib_nvmctrl.o.d
+ @${RM} ${OBJECTDIR}/_ext/1593096446/plib_nvmctrl.o
+ ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -fno-common -I"../src" -I"../src/config/default" -I"../src/packs/ATSAME51J20A_DFP" -I"../src/packs/CMSIS/" -I"../src/packs/CMSIS/CMSIS/Core/Include" -I"../../../../include" -I"../../../../include/MPLAB" -MP -MMD -MF "${OBJECTDIR}/_ext/1593096446/plib_nvmctrl.o.d" -o ${OBJECTDIR}/_ext/1593096446/plib_nvmctrl.o ../src/config/default/peripheral/nvmctrl/plib_nvmctrl.c -DXPRJ_default=$(CND_CONF) $(COMPARISON_BUILD) -mdfp="${DFP_DIR}" ${PACK_COMMON_OPTIONS}
+
+${OBJECTDIR}/_ext/1865521619/plib_port.o: ../src/config/default/peripheral/port/plib_port.c .generated_files/flags/default/e3a0e761d0a32e4357b6d035c2593c0501d183a1 .generated_files/flags/default/da39a3ee5e6b4b0d3255bfef95601890afd80709
+ @${MKDIR} "${OBJECTDIR}/_ext/1865521619"
+ @${RM} ${OBJECTDIR}/_ext/1865521619/plib_port.o.d
+ @${RM} ${OBJECTDIR}/_ext/1865521619/plib_port.o
+ ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -fno-common -I"../src" -I"../src/config/default" -I"../src/packs/ATSAME51J20A_DFP" -I"../src/packs/CMSIS/" -I"../src/packs/CMSIS/CMSIS/Core/Include" -I"../../../../include" -I"../../../../include/MPLAB" -MP -MMD -MF "${OBJECTDIR}/_ext/1865521619/plib_port.o.d" -o ${OBJECTDIR}/_ext/1865521619/plib_port.o ../src/config/default/peripheral/port/plib_port.c -DXPRJ_default=$(CND_CONF) $(COMPARISON_BUILD) -mdfp="${DFP_DIR}" ${PACK_COMMON_OPTIONS}
+
+${OBJECTDIR}/_ext/504274921/plib_sercom5_usart.o: ../src/config/default/peripheral/sercom/usart/plib_sercom5_usart.c .generated_files/flags/default/ec8c9039acda2315bdeb384e86eb6a6b5d3c3240 .generated_files/flags/default/da39a3ee5e6b4b0d3255bfef95601890afd80709
+ @${MKDIR} "${OBJECTDIR}/_ext/504274921"
+ @${RM} ${OBJECTDIR}/_ext/504274921/plib_sercom5_usart.o.d
+ @${RM} ${OBJECTDIR}/_ext/504274921/plib_sercom5_usart.o
+ ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -fno-common -I"../src" -I"../src/config/default" -I"../src/packs/ATSAME51J20A_DFP" -I"../src/packs/CMSIS/" -I"../src/packs/CMSIS/CMSIS/Core/Include" -I"../../../../include" -I"../../../../include/MPLAB" -MP -MMD -MF "${OBJECTDIR}/_ext/504274921/plib_sercom5_usart.o.d" -o ${OBJECTDIR}/_ext/504274921/plib_sercom5_usart.o ../src/config/default/peripheral/sercom/usart/plib_sercom5_usart.c -DXPRJ_default=$(CND_CONF) $(COMPARISON_BUILD) -mdfp="${DFP_DIR}" ${PACK_COMMON_OPTIONS}
+
+${OBJECTDIR}/_ext/163028504/xc32_monitor.o: ../src/config/default/stdio/xc32_monitor.c .generated_files/flags/default/356eed14747c86cc1af6516a343bd13314f8236b .generated_files/flags/default/da39a3ee5e6b4b0d3255bfef95601890afd80709
+ @${MKDIR} "${OBJECTDIR}/_ext/163028504"
+ @${RM} ${OBJECTDIR}/_ext/163028504/xc32_monitor.o.d
+ @${RM} ${OBJECTDIR}/_ext/163028504/xc32_monitor.o
+ ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -fno-common -I"../src" -I"../src/config/default" -I"../src/packs/ATSAME51J20A_DFP" -I"../src/packs/CMSIS/" -I"../src/packs/CMSIS/CMSIS/Core/Include" -I"../../../../include" -I"../../../../include/MPLAB" -MP -MMD -MF "${OBJECTDIR}/_ext/163028504/xc32_monitor.o.d" -o ${OBJECTDIR}/_ext/163028504/xc32_monitor.o ../src/config/default/stdio/xc32_monitor.c -DXPRJ_default=$(CND_CONF) $(COMPARISON_BUILD) -mdfp="${DFP_DIR}" ${PACK_COMMON_OPTIONS}
+
+${OBJECTDIR}/_ext/1171490990/startup_xc32.o: ../src/config/default/startup_xc32.c .generated_files/flags/default/4ee48d7bf55db7ce0733e9235dcb692a3535d819 .generated_files/flags/default/da39a3ee5e6b4b0d3255bfef95601890afd80709
+ @${MKDIR} "${OBJECTDIR}/_ext/1171490990"
+ @${RM} ${OBJECTDIR}/_ext/1171490990/startup_xc32.o.d
+ @${RM} ${OBJECTDIR}/_ext/1171490990/startup_xc32.o
+ ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -fno-common -I"../src" -I"../src/config/default" -I"../src/packs/ATSAME51J20A_DFP" -I"../src/packs/CMSIS/" -I"../src/packs/CMSIS/CMSIS/Core/Include" -I"../../../../include" -I"../../../../include/MPLAB" -MP -MMD -MF "${OBJECTDIR}/_ext/1171490990/startup_xc32.o.d" -o ${OBJECTDIR}/_ext/1171490990/startup_xc32.o ../src/config/default/startup_xc32.c -DXPRJ_default=$(CND_CONF) $(COMPARISON_BUILD) -mdfp="${DFP_DIR}" ${PACK_COMMON_OPTIONS}
+
+${OBJECTDIR}/_ext/1171490990/libc_syscalls.o: ../src/config/default/libc_syscalls.c .generated_files/flags/default/5718cd6ab25d3abccce913ceb6506bd4033c6f3f .generated_files/flags/default/da39a3ee5e6b4b0d3255bfef95601890afd80709
+ @${MKDIR} "${OBJECTDIR}/_ext/1171490990"
+ @${RM} ${OBJECTDIR}/_ext/1171490990/libc_syscalls.o.d
+ @${RM} ${OBJECTDIR}/_ext/1171490990/libc_syscalls.o
+ ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -fno-common -I"../src" -I"../src/config/default" -I"../src/packs/ATSAME51J20A_DFP" -I"../src/packs/CMSIS/" -I"../src/packs/CMSIS/CMSIS/Core/Include" -I"../../../../include" -I"../../../../include/MPLAB" -MP -MMD -MF "${OBJECTDIR}/_ext/1171490990/libc_syscalls.o.d" -o ${OBJECTDIR}/_ext/1171490990/libc_syscalls.o ../src/config/default/libc_syscalls.c -DXPRJ_default=$(CND_CONF) $(COMPARISON_BUILD) -mdfp="${DFP_DIR}" ${PACK_COMMON_OPTIONS}
+
+${OBJECTDIR}/_ext/1171490990/initialization.o: ../src/config/default/initialization.c .generated_files/flags/default/75a78e299a3f934c04427585608134f454ca59a7 .generated_files/flags/default/da39a3ee5e6b4b0d3255bfef95601890afd80709
+ @${MKDIR} "${OBJECTDIR}/_ext/1171490990"
+ @${RM} ${OBJECTDIR}/_ext/1171490990/initialization.o.d
+ @${RM} ${OBJECTDIR}/_ext/1171490990/initialization.o
+ ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -fno-common -I"../src" -I"../src/config/default" -I"../src/packs/ATSAME51J20A_DFP" -I"../src/packs/CMSIS/" -I"../src/packs/CMSIS/CMSIS/Core/Include" -I"../../../../include" -I"../../../../include/MPLAB" -MP -MMD -MF "${OBJECTDIR}/_ext/1171490990/initialization.o.d" -o ${OBJECTDIR}/_ext/1171490990/initialization.o ../src/config/default/initialization.c -DXPRJ_default=$(CND_CONF) $(COMPARISON_BUILD) -mdfp="${DFP_DIR}" ${PACK_COMMON_OPTIONS}
+
+${OBJECTDIR}/_ext/1171490990/exceptions.o: ../src/config/default/exceptions.c .generated_files/flags/default/6d84c9151836ab594cfd7c8d4a42f63a1747bcf .generated_files/flags/default/da39a3ee5e6b4b0d3255bfef95601890afd80709
+ @${MKDIR} "${OBJECTDIR}/_ext/1171490990"
+ @${RM} ${OBJECTDIR}/_ext/1171490990/exceptions.o.d
+ @${RM} ${OBJECTDIR}/_ext/1171490990/exceptions.o
+ ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -fno-common -I"../src" -I"../src/config/default" -I"../src/packs/ATSAME51J20A_DFP" -I"../src/packs/CMSIS/" -I"../src/packs/CMSIS/CMSIS/Core/Include" -I"../../../../include" -I"../../../../include/MPLAB" -MP -MMD -MF "${OBJECTDIR}/_ext/1171490990/exceptions.o.d" -o ${OBJECTDIR}/_ext/1171490990/exceptions.o ../src/config/default/exceptions.c -DXPRJ_default=$(CND_CONF) $(COMPARISON_BUILD) -mdfp="${DFP_DIR}" ${PACK_COMMON_OPTIONS}
+
+${OBJECTDIR}/_ext/1171490990/interrupts.o: ../src/config/default/interrupts.c .generated_files/flags/default/52045e7a884b685d815b674fad3aa8d271eddf05 .generated_files/flags/default/da39a3ee5e6b4b0d3255bfef95601890afd80709
+ @${MKDIR} "${OBJECTDIR}/_ext/1171490990"
+ @${RM} ${OBJECTDIR}/_ext/1171490990/interrupts.o.d
+ @${RM} ${OBJECTDIR}/_ext/1171490990/interrupts.o
+ ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -fno-common -I"../src" -I"../src/config/default" -I"../src/packs/ATSAME51J20A_DFP" -I"../src/packs/CMSIS/" -I"../src/packs/CMSIS/CMSIS/Core/Include" -I"../../../../include" -I"../../../../include/MPLAB" -MP -MMD -MF "${OBJECTDIR}/_ext/1171490990/interrupts.o.d" -o ${OBJECTDIR}/_ext/1171490990/interrupts.o ../src/config/default/interrupts.c -DXPRJ_default=$(CND_CONF) $(COMPARISON_BUILD) -mdfp="${DFP_DIR}" ${PACK_COMMON_OPTIONS}
+
+${OBJECTDIR}/_ext/671464796/libwolfboot.o: ../../../../src/libwolfboot.c .generated_files/flags/default/d60b2b12329fc29f657bd551c786f5b606b9a96 .generated_files/flags/default/da39a3ee5e6b4b0d3255bfef95601890afd80709
+ @${MKDIR} "${OBJECTDIR}/_ext/671464796"
+ @${RM} ${OBJECTDIR}/_ext/671464796/libwolfboot.o.d
+ @${RM} ${OBJECTDIR}/_ext/671464796/libwolfboot.o
+ ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -fno-common -I"../src" -I"../src/config/default" -I"../src/packs/ATSAME51J20A_DFP" -I"../src/packs/CMSIS/" -I"../src/packs/CMSIS/CMSIS/Core/Include" -I"../../../../include" -I"../../../../include/MPLAB" -MP -MMD -MF "${OBJECTDIR}/_ext/671464796/libwolfboot.o.d" -o ${OBJECTDIR}/_ext/671464796/libwolfboot.o ../../../../src/libwolfboot.c -DXPRJ_default=$(CND_CONF) $(COMPARISON_BUILD) -mdfp="${DFP_DIR}" ${PACK_COMMON_OPTIONS}
+
+${OBJECTDIR}/_ext/671475885/same51.o: ../../../../hal/same51.c .generated_files/flags/default/bfe4d75294049ab8add4b983c09de294a9ef49db .generated_files/flags/default/da39a3ee5e6b4b0d3255bfef95601890afd80709
+ @${MKDIR} "${OBJECTDIR}/_ext/671475885"
+ @${RM} ${OBJECTDIR}/_ext/671475885/same51.o.d
+ @${RM} ${OBJECTDIR}/_ext/671475885/same51.o
+ ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -fno-common -I"../src" -I"../src/config/default" -I"../src/packs/ATSAME51J20A_DFP" -I"../src/packs/CMSIS/" -I"../src/packs/CMSIS/CMSIS/Core/Include" -I"../../../../include" -I"../../../../include/MPLAB" -MP -MMD -MF "${OBJECTDIR}/_ext/671475885/same51.o.d" -o ${OBJECTDIR}/_ext/671475885/same51.o ../../../../hal/same51.c -DXPRJ_default=$(CND_CONF) $(COMPARISON_BUILD) -mdfp="${DFP_DIR}" ${PACK_COMMON_OPTIONS}
+
+${OBJECTDIR}/app.o: app.c .generated_files/flags/default/98f630d327a8cb2690a69b39f38fdeebd9fa0608 .generated_files/flags/default/da39a3ee5e6b4b0d3255bfef95601890afd80709
+ @${MKDIR} "${OBJECTDIR}"
+ @${RM} ${OBJECTDIR}/app.o.d
+ @${RM} ${OBJECTDIR}/app.o
+ ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -fno-common -I"../src" -I"../src/config/default" -I"../src/packs/ATSAME51J20A_DFP" -I"../src/packs/CMSIS/" -I"../src/packs/CMSIS/CMSIS/Core/Include" -I"../../../../include" -I"../../../../include/MPLAB" -MP -MMD -MF "${OBJECTDIR}/app.o.d" -o ${OBJECTDIR}/app.o app.c -DXPRJ_default=$(CND_CONF) $(COMPARISON_BUILD) -mdfp="${DFP_DIR}" ${PACK_COMMON_OPTIONS}
+
+${OBJECTDIR}/main.o: main.c .generated_files/flags/default/5962f2a78ca666c0ddc8319f905192af57fce9cb .generated_files/flags/default/da39a3ee5e6b4b0d3255bfef95601890afd80709
+ @${MKDIR} "${OBJECTDIR}"
+ @${RM} ${OBJECTDIR}/main.o.d
+ @${RM} ${OBJECTDIR}/main.o
+ ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -fno-common -I"../src" -I"../src/config/default" -I"../src/packs/ATSAME51J20A_DFP" -I"../src/packs/CMSIS/" -I"../src/packs/CMSIS/CMSIS/Core/Include" -I"../../../../include" -I"../../../../include/MPLAB" -MP -MMD -MF "${OBJECTDIR}/main.o.d" -o ${OBJECTDIR}/main.o main.c -DXPRJ_default=$(CND_CONF) $(COMPARISON_BUILD) -mdfp="${DFP_DIR}" ${PACK_COMMON_OPTIONS}
+
+${OBJECTDIR}/_ext/1360937237/main.o: ../src/main.c .generated_files/flags/default/7ebb835cd8eac308f45a10c5dc99841489cbc93d .generated_files/flags/default/da39a3ee5e6b4b0d3255bfef95601890afd80709
+ @${MKDIR} "${OBJECTDIR}/_ext/1360937237"
+ @${RM} ${OBJECTDIR}/_ext/1360937237/main.o.d
+ @${RM} ${OBJECTDIR}/_ext/1360937237/main.o
+ ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -fno-common -I"../src" -I"../src/config/default" -I"../src/packs/ATSAME51J20A_DFP" -I"../src/packs/CMSIS/" -I"../src/packs/CMSIS/CMSIS/Core/Include" -I"../../../../include" -I"../../../../include/MPLAB" -MP -MMD -MF "${OBJECTDIR}/_ext/1360937237/main.o.d" -o ${OBJECTDIR}/_ext/1360937237/main.o ../src/main.c -DXPRJ_default=$(CND_CONF) $(COMPARISON_BUILD) -mdfp="${DFP_DIR}" ${PACK_COMMON_OPTIONS}
+
+endif
+
+# ------------------------------------------------------------------------------------
+# Rules for buildStep: compileCPP
+ifeq ($(TYPE_IMAGE), DEBUG_RUN)
+else
+endif
+
+# ------------------------------------------------------------------------------------
+# Rules for buildStep: link
+ifeq ($(TYPE_IMAGE), DEBUG_RUN)
+${DISTDIR}/test-usb-updater.same51.X.${IMAGE_TYPE}.${OUTPUT_SUFFIX}: ${OBJECTFILES} nbproject/Makefile-${CND_CONF}.mk ../src/config/default/ATSAME51J20A.ld
+ @${MKDIR} ${DISTDIR}
+ ${MP_CC} $(MP_EXTRA_LD_PRE) -g -mprocessor=$(MP_PROCESSOR_OPTION) -mno-device-startup-code -o ${DISTDIR}/test-usb-updater.same51.X.${IMAGE_TYPE}.${OUTPUT_SUFFIX} ${OBJECTFILES_QUOTED_IF_SPACED} -DXPRJ_default=$(CND_CONF) $(COMPARISON_BUILD) -Wl,--defsym=__MPLAB_BUILD=1$(MP_EXTRA_LD_POST)$(MP_LINKER_FILE_OPTION),--defsym=__ICD2RAM=1,--defsym=__MPLAB_DEBUG=1,--defsym=__DEBUG=1,-D=__DEBUG_D,--defsym=_min_heap_size=512,-Map="${DISTDIR}/${PROJECTNAME}.${IMAGE_TYPE}.map",--memorysummary,${DISTDIR}/memoryfile.xml -mdfp="${DFP_DIR}"
+
+else
+${DISTDIR}/test-usb-updater.same51.X.${IMAGE_TYPE}.${OUTPUT_SUFFIX}: ${OBJECTFILES} nbproject/Makefile-${CND_CONF}.mk ../src/config/default/ATSAME51J20A.ld
+ @${MKDIR} ${DISTDIR}
+ ${MP_CC} $(MP_EXTRA_LD_PRE) -mprocessor=$(MP_PROCESSOR_OPTION) -mno-device-startup-code -o ${DISTDIR}/test-usb-updater.same51.X.${IMAGE_TYPE}.${DEBUGGABLE_SUFFIX} ${OBJECTFILES_QUOTED_IF_SPACED} -DXPRJ_default=$(CND_CONF) $(COMPARISON_BUILD) -Wl,--defsym=__MPLAB_BUILD=1$(MP_EXTRA_LD_POST)$(MP_LINKER_FILE_OPTION),--defsym=_min_heap_size=512,-Map="${DISTDIR}/${PROJECTNAME}.${IMAGE_TYPE}.map",--memorysummary,${DISTDIR}/memoryfile.xml -mdfp="${DFP_DIR}"
+ ${MP_CC_DIR}/xc32-bin2hex ${DISTDIR}/test-usb-updater.same51.X.${IMAGE_TYPE}.${DEBUGGABLE_SUFFIX}
+endif
+
+
+# Subprojects
+.build-subprojects:
+
+
+# Subprojects
+.clean-subprojects:
+
+# Clean Targets
+.clean-conf: ${CLEAN_SUBPROJECTS}
+ ${RM} -r ${OBJECTDIR}
+ ${RM} -r ${DISTDIR}
+
+# Enable dependency checking
+.dep.inc: .depcheck-impl
+
+DEPFILES=$(wildcard ${POSSIBLE_DEPFILES})
+ifneq (${DEPFILES},)
+include ${DEPFILES}
+endif
diff --git a/IDE/MPLAB/test-app/test-usb-updater.same51.X/nbproject/Makefile-genesis.properties b/IDE/MPLAB/test-app/test-usb-updater.same51.X/nbproject/Makefile-genesis.properties
new file mode 100644
index 000000000..767d270dd
--- /dev/null
+++ b/IDE/MPLAB/test-app/test-usb-updater.same51.X/nbproject/Makefile-genesis.properties
@@ -0,0 +1,13 @@
+#
+#Thu Feb 15 10:21:43 CET 2024
+default.languagetoolchain.version=4.35
+default.Pack.dfplocation=/opt/microchip/mplabx/v6.20/packs/Microchip/SAME51_DFP/3.7.242
+conf.ids=default
+default.languagetoolchain.dir=/opt/microchip/xc32/v4.35/bin
+default.com-microchip-mplab-nbide-toolchain-xc32-XC32LanguageToolchain.md5=1eaf555a844840d91945cb14109201c3
+host.id=130a-gnot-23
+default.platformTool.md5=null
+configurations-xml=421df5dce52a0ffe2c69c26c9103526f
+com-microchip-mplab-nbide-embedded-makeproject-MakeProject.md5=f612087c95360c842296d189edfe3321
+proj.dir=/home/dan/src/wolfboot-mplab-test/IDE/MPLAB/test-app/test-usb-updater.same51.X
+host.platform=linux
diff --git a/IDE/MPLAB/test-app/test-usb-updater.same51.X/nbproject/Makefile-impl.mk b/IDE/MPLAB/test-app/test-usb-updater.same51.X/nbproject/Makefile-impl.mk
new file mode 100644
index 000000000..1aa6be2aa
--- /dev/null
+++ b/IDE/MPLAB/test-app/test-usb-updater.same51.X/nbproject/Makefile-impl.mk
@@ -0,0 +1,69 @@
+#
+# Generated Makefile - do not edit!
+#
+# Edit the Makefile in the project folder instead (../Makefile). Each target
+# has a pre- and a post- target defined where you can add customization code.
+#
+# This makefile implements macros and targets common to all configurations.
+#
+# NOCDDL
+
+
+# Building and Cleaning subprojects are done by default, but can be controlled with the SUB
+# macro. If SUB=no, subprojects will not be built or cleaned. The following macro
+# statements set BUILD_SUB-CONF and CLEAN_SUB-CONF to .build-reqprojects-conf
+# and .clean-reqprojects-conf unless SUB has the value 'no'
+SUB_no=NO
+SUBPROJECTS=${SUB_${SUB}}
+BUILD_SUBPROJECTS_=.build-subprojects
+BUILD_SUBPROJECTS_NO=
+BUILD_SUBPROJECTS=${BUILD_SUBPROJECTS_${SUBPROJECTS}}
+CLEAN_SUBPROJECTS_=.clean-subprojects
+CLEAN_SUBPROJECTS_NO=
+CLEAN_SUBPROJECTS=${CLEAN_SUBPROJECTS_${SUBPROJECTS}}
+
+
+# Project Name
+PROJECTNAME=test-usb-updater.same51.X
+
+# Active Configuration
+DEFAULTCONF=default
+CONF=${DEFAULTCONF}
+
+# All Configurations
+ALLCONFS=default
+
+
+# build
+.build-impl: .build-pre
+ ${MAKE} -f nbproject/Makefile-${CONF}.mk SUBPROJECTS=${SUBPROJECTS} .build-conf
+
+
+# clean
+.clean-impl: .clean-pre
+ ${MAKE} -f nbproject/Makefile-${CONF}.mk SUBPROJECTS=${SUBPROJECTS} .clean-conf
+
+# clobber
+.clobber-impl: .clobber-pre .depcheck-impl
+ ${MAKE} SUBPROJECTS=${SUBPROJECTS} CONF=default clean
+
+
+
+# all
+.all-impl: .all-pre .depcheck-impl
+ ${MAKE} SUBPROJECTS=${SUBPROJECTS} CONF=default build
+
+
+
+# dependency checking support
+.depcheck-impl:
+# @echo "# This code depends on make tool being used" >.dep.inc
+# @if [ -n "${MAKE_VERSION}" ]; then \
+# echo "DEPFILES=\$$(wildcard \$$(addsuffix .d, \$${OBJECTFILES}))" >>.dep.inc; \
+# echo "ifneq (\$${DEPFILES},)" >>.dep.inc; \
+# echo "include \$${DEPFILES}" >>.dep.inc; \
+# echo "endif" >>.dep.inc; \
+# else \
+# echo ".KEEP_STATE:" >>.dep.inc; \
+# echo ".KEEP_STATE_FILE:.make.state.\$${CONF}" >>.dep.inc; \
+# fi
diff --git a/IDE/MPLAB/test-app/test-usb-updater.same51.X/nbproject/Makefile-local-default.mk b/IDE/MPLAB/test-app/test-usb-updater.same51.X/nbproject/Makefile-local-default.mk
new file mode 100644
index 000000000..0d5cbf637
--- /dev/null
+++ b/IDE/MPLAB/test-app/test-usb-updater.same51.X/nbproject/Makefile-local-default.mk
@@ -0,0 +1,37 @@
+#
+# Generated Makefile - do not edit!
+#
+#
+# This file contains information about the location of compilers and other tools.
+# If you commmit this file into your revision control server, you will be able to
+# to checkout the project and build it from the command line with make. However,
+# if more than one person works on the same project, then this file might show
+# conflicts since different users are bound to have compilers in different places.
+# In that case you might choose to not commit this file and let MPLAB X recreate this file
+# for each user. The disadvantage of not commiting this file is that you must run MPLAB X at
+# least once so the file gets created and the project can be built. Finally, you can also
+# avoid using this file at all if you are only building from the command line with make.
+# You can invoke make with the values of the macros:
+# $ makeMP_CC="/opt/microchip/mplabc30/v3.30c/bin/pic30-gcc" ...
+#
+PATH_TO_IDE_BIN=/opt/microchip/mplabx/v6.20/mplab_platform/platform/../mplab_ide/modules/../../bin/
+# Adding MPLAB X bin directory to path.
+PATH:=/opt/microchip/mplabx/v6.20/mplab_platform/platform/../mplab_ide/modules/../../bin/:$(PATH)
+# Path to java used to run MPLAB X when this makefile was created
+MP_JAVA_PATH="/opt/microchip/mplabx/v6.20/sys/java/zulu8.64.0.19-ca-fx-jre8.0.345-linux_x64/bin/"
+OS_CURRENT="$(shell uname -s)"
+MP_CC="/opt/microchip/xc32/v4.35/bin/xc32-gcc"
+MP_CPPC="/opt/microchip/xc32/v4.35/bin/xc32-g++"
+# MP_BC is not defined
+MP_AS="/opt/microchip/xc32/v4.35/bin/xc32-as"
+MP_LD="/opt/microchip/xc32/v4.35/bin/xc32-ld"
+MP_AR="/opt/microchip/xc32/v4.35/bin/xc32-ar"
+DEP_GEN=${MP_JAVA_PATH}java -jar "/opt/microchip/mplabx/v6.20/mplab_platform/platform/../mplab_ide/modules/../../bin/extractobjectdependencies.jar"
+MP_CC_DIR="/opt/microchip/xc32/v4.35/bin"
+MP_CPPC_DIR="/opt/microchip/xc32/v4.35/bin"
+# MP_BC_DIR is not defined
+MP_AS_DIR="/opt/microchip/xc32/v4.35/bin"
+MP_LD_DIR="/opt/microchip/xc32/v4.35/bin"
+MP_AR_DIR="/opt/microchip/xc32/v4.35/bin"
+DFP_DIR=/opt/microchip/mplabx/v6.20/packs/Microchip/SAME51_DFP/3.7.242
+CMSIS_DIR=/opt/microchip/mplabx/v6.20/packs/arm/CMSIS/5.4.0
diff --git a/IDE/MPLAB/test-app/test-usb-updater.same51.X/nbproject/Makefile-variables.mk b/IDE/MPLAB/test-app/test-usb-updater.same51.X/nbproject/Makefile-variables.mk
new file mode 100644
index 000000000..1dc578e33
--- /dev/null
+++ b/IDE/MPLAB/test-app/test-usb-updater.same51.X/nbproject/Makefile-variables.mk
@@ -0,0 +1,10 @@
+#
+# Generated - do not edit!
+#
+# NOCDDL
+#
+CND_BASEDIR=`pwd`
+# default configuration
+CND_ARTIFACT_DIR_default=dist/default/production
+CND_ARTIFACT_NAME_default=test-usb-updater.same51.X.production.hex
+CND_ARTIFACT_PATH_default=dist/default/production/test-usb-updater.same51.X.production.hex
diff --git a/IDE/MPLAB/test-app/test-usb-updater.same51.X/nbproject/configurations.xml b/IDE/MPLAB/test-app/test-usb-updater.same51.X/nbproject/configurations.xml
new file mode 100644
index 000000000..4e3c2bf54
--- /dev/null
+++ b/IDE/MPLAB/test-app/test-usb-updater.same51.X/nbproject/configurations.xml
@@ -0,0 +1,431 @@
+
+
+
+
+
+
+
+
+ ../src/config/default/peripheral/clock/plib_clock.h
+
+
+ ../src/config/default/peripheral/cmcc/plib_cmcc.h
+
+
+ ../src/config/default/peripheral/evsys/plib_evsys.h
+
+
+ ../src/config/default/peripheral/nvic/plib_nvic.h
+
+
+ ../src/config/default/peripheral/nvmctrl/plib_nvmctrl.h
+
+
+ ../src/config/default/peripheral/port/plib_port.h
+
+
+
+ ../src/config/default/peripheral/sercom/usart/plib_sercom5_usart.h
+ ../src/config/default/peripheral/sercom/usart/plib_sercom_usart_common.h
+
+
+
+ ../src/config/default/device_vectors.h
+ ../src/config/default/device.h
+ ../src/config/default/device_cache.h
+ ../src/config/default/interrupts.h
+ ../src/config/default/definitions.h
+ ../src/config/default/toolchain_specifics.h
+
+
+
+
+
+ ../src/packs/ATSAME51J20A_DFP/component/wdt.h
+ ../src/packs/ATSAME51J20A_DFP/component/usb.h
+ ../src/packs/ATSAME51J20A_DFP/component/icm.h
+ ../src/packs/ATSAME51J20A_DFP/component/nvmctrl.h
+ ../src/packs/ATSAME51J20A_DFP/component/eic.h
+ ../src/packs/ATSAME51J20A_DFP/component/ac.h
+ ../src/packs/ATSAME51J20A_DFP/component/pac.h
+ ../src/packs/ATSAME51J20A_DFP/component/tc.h
+ ../src/packs/ATSAME51J20A_DFP/component/port.h
+ ../src/packs/ATSAME51J20A_DFP/component/dsu.h
+ ../src/packs/ATSAME51J20A_DFP/component/cmcc.h
+ ../src/packs/ATSAME51J20A_DFP/component/gclk.h
+ ../src/packs/ATSAME51J20A_DFP/component/adc.h
+ ../src/packs/ATSAME51J20A_DFP/component/pm.h
+ ../src/packs/ATSAME51J20A_DFP/component/pdec.h
+ ../src/packs/ATSAME51J20A_DFP/component/pcc.h
+ ../src/packs/ATSAME51J20A_DFP/component/mclk.h
+ ../src/packs/ATSAME51J20A_DFP/component/sdhc.h
+ ../src/packs/ATSAME51J20A_DFP/component/i2s.h
+ ../src/packs/ATSAME51J20A_DFP/component/fuses.h
+ ../src/packs/ATSAME51J20A_DFP/component/evsys.h
+ ../src/packs/ATSAME51J20A_DFP/component/freqm.h
+ ../src/packs/ATSAME51J20A_DFP/component/ccl.h
+ ../src/packs/ATSAME51J20A_DFP/component/dac.h
+ ../src/packs/ATSAME51J20A_DFP/component/can.h
+ ../src/packs/ATSAME51J20A_DFP/component/tcc.h
+ ../src/packs/ATSAME51J20A_DFP/component/qspi.h
+ ../src/packs/ATSAME51J20A_DFP/component/osc32kctrl.h
+ ../src/packs/ATSAME51J20A_DFP/component/pukcc.h
+ ../src/packs/ATSAME51J20A_DFP/component/ramecc.h
+ ../src/packs/ATSAME51J20A_DFP/component/oscctrl.h
+ ../src/packs/ATSAME51J20A_DFP/component/dmac.h
+ ../src/packs/ATSAME51J20A_DFP/component/hmatrixb.h
+ ../src/packs/ATSAME51J20A_DFP/component/rstc.h
+ ../src/packs/ATSAME51J20A_DFP/component/trng.h
+ ../src/packs/ATSAME51J20A_DFP/component/rtc.h
+ ../src/packs/ATSAME51J20A_DFP/component/supc.h
+ ../src/packs/ATSAME51J20A_DFP/component/sercom.h
+ ../src/packs/ATSAME51J20A_DFP/component/aes.h
+
+
+ ../src/packs/ATSAME51J20A_DFP/instance/ramecc.h
+ ../src/packs/ATSAME51J20A_DFP/instance/dac.h
+ ../src/packs/ATSAME51J20A_DFP/instance/sercom7.h
+ ../src/packs/ATSAME51J20A_DFP/instance/tc2.h
+ ../src/packs/ATSAME51J20A_DFP/instance/tc6.h
+ ../src/packs/ATSAME51J20A_DFP/instance/osc32kctrl.h
+ ../src/packs/ATSAME51J20A_DFP/instance/qspi.h
+ ../src/packs/ATSAME51J20A_DFP/instance/adc0.h
+ ../src/packs/ATSAME51J20A_DFP/instance/sercom3.h
+ ../src/packs/ATSAME51J20A_DFP/instance/rstc.h
+ ../src/packs/ATSAME51J20A_DFP/instance/i2s.h
+ ../src/packs/ATSAME51J20A_DFP/instance/tcc3.h
+ ../src/packs/ATSAME51J20A_DFP/instance/can1.h
+ ../src/packs/ATSAME51J20A_DFP/instance/mclk.h
+ ../src/packs/ATSAME51J20A_DFP/instance/gclk.h
+ ../src/packs/ATSAME51J20A_DFP/instance/cmcc.h
+ ../src/packs/ATSAME51J20A_DFP/instance/sercom4.h
+ ../src/packs/ATSAME51J20A_DFP/instance/tc5.h
+ ../src/packs/ATSAME51J20A_DFP/instance/rtc.h
+ ../src/packs/ATSAME51J20A_DFP/instance/pm.h
+ ../src/packs/ATSAME51J20A_DFP/instance/aes.h
+ ../src/packs/ATSAME51J20A_DFP/instance/oscctrl.h
+ ../src/packs/ATSAME51J20A_DFP/instance/sercom0.h
+ ../src/packs/ATSAME51J20A_DFP/instance/freqm.h
+ ../src/packs/ATSAME51J20A_DFP/instance/fuses.h
+ ../src/packs/ATSAME51J20A_DFP/instance/tcc2.h
+ ../src/packs/ATSAME51J20A_DFP/instance/ccl.h
+ ../src/packs/ATSAME51J20A_DFP/instance/tc1.h
+ ../src/packs/ATSAME51J20A_DFP/instance/can0.h
+ ../src/packs/ATSAME51J20A_DFP/instance/sdhc0.h
+ ../src/packs/ATSAME51J20A_DFP/instance/pdec.h
+ ../src/packs/ATSAME51J20A_DFP/instance/sercom5.h
+ ../src/packs/ATSAME51J20A_DFP/instance/tc4.h
+ ../src/packs/ATSAME51J20A_DFP/instance/nvmctrl.h
+ ../src/packs/ATSAME51J20A_DFP/instance/wdt.h
+ ../src/packs/ATSAME51J20A_DFP/instance/sercom1.h
+ ../src/packs/ATSAME51J20A_DFP/instance/dmac.h
+ ../src/packs/ATSAME51J20A_DFP/instance/icm.h
+ ../src/packs/ATSAME51J20A_DFP/instance/ac.h
+ ../src/packs/ATSAME51J20A_DFP/instance/tcc1.h
+ ../src/packs/ATSAME51J20A_DFP/instance/port.h
+ ../src/packs/ATSAME51J20A_DFP/instance/tc0.h
+ ../src/packs/ATSAME51J20A_DFP/instance/pac.h
+ ../src/packs/ATSAME51J20A_DFP/instance/supc.h
+ ../src/packs/ATSAME51J20A_DFP/instance/sercom6.h
+ ../src/packs/ATSAME51J20A_DFP/instance/tc3.h
+ ../src/packs/ATSAME51J20A_DFP/instance/hmatrix.h
+ ../src/packs/ATSAME51J20A_DFP/instance/tc7.h
+ ../src/packs/ATSAME51J20A_DFP/instance/dsu.h
+ ../src/packs/ATSAME51J20A_DFP/instance/adc1.h
+ ../src/packs/ATSAME51J20A_DFP/instance/sercom2.h
+ ../src/packs/ATSAME51J20A_DFP/instance/evsys.h
+ ../src/packs/ATSAME51J20A_DFP/instance/eic.h
+ ../src/packs/ATSAME51J20A_DFP/instance/tcc0.h
+ ../src/packs/ATSAME51J20A_DFP/instance/tcc4.h
+ ../src/packs/ATSAME51J20A_DFP/instance/pcc.h
+ ../src/packs/ATSAME51J20A_DFP/instance/trng.h
+ ../src/packs/ATSAME51J20A_DFP/instance/usb.h
+
+
+ ../src/packs/ATSAME51J20A_DFP/pio/same51j20a.h
+
+ ../src/packs/ATSAME51J20A_DFP/same51j20a.h
+
+
+
+
+
+ ../src/packs/CMSIS/CMSIS/Core/Include/cmsis_gcc.h
+ ../src/packs/CMSIS/CMSIS/Core/Include/cmsis_compiler.h
+ ../src/packs/CMSIS/CMSIS/Core/Include/core_cm4.h
+ ../src/packs/CMSIS/CMSIS/Core/Include/cachel1_armv7.h
+ ../src/packs/CMSIS/CMSIS/Core/Include/cmsis_iccarm.h
+ ../src/packs/CMSIS/CMSIS/Core/Include/cmsis_armclang_ltm.h
+ ../src/packs/CMSIS/CMSIS/Core/Include/cmsis_armcc.h
+ ../src/packs/CMSIS/CMSIS/Core/Include/cmsis_version.h
+ ../src/packs/CMSIS/CMSIS/Core/Include/cmsis_armclang.h
+ ../src/packs/CMSIS/CMSIS/Core/Include/mpu_armv7.h
+
+
+
+
+
+
+
+ Makefile
+ test-usb-updater.same51.mc3
+
+
+
+
+ ../src/config/default/ATSAME51J20A.ld
+
+
+
+
+
+
+
+
+ ../src/config/default/peripheral/clock/plib_clock.c
+
+
+ ../src/config/default/peripheral/cmcc/plib_cmcc.c
+
+
+ ../src/config/default/peripheral/evsys/plib_evsys.c
+
+
+ ../src/config/default/peripheral/nvic/plib_nvic.c
+
+
+ ../src/config/default/peripheral/nvmctrl/plib_nvmctrl.c
+
+
+ ../src/config/default/peripheral/port/plib_port.c
+
+
+
+ ../src/config/default/peripheral/sercom/usart/plib_sercom5_usart.c
+
+
+
+
+ ../src/config/default/stdio/xc32_monitor.c
+
+ ../src/config/default/startup_xc32.c
+ ../src/config/default/libc_syscalls.c
+ ../src/config/default/initialization.c
+ ../src/config/default/exceptions.c
+ ../src/config/default/interrupts.c
+
+
+
+ ../../../../src/libwolfboot.c
+ ../../../../hal/same51.c
+
+ app.c
+ main.c
+ ../src/config/default/pin_configurations.csv
+ ../src/main.c
+
+
+
+ .
+ ../../../../src
+ ../../../../hal
+
+ Makefile
+
+
+
+ localhost
+ ATSAME51J20A
+
+
+ noID
+ XC32
+ 4.35
+ 2
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ false
+ false
+
+
+
+
+
+
+ false
+ false
+
+ false
+
+ false
+ false
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/IDE/MPLAB/test-app/test-usb-updater.same51.X/nbproject/private/configurations.xml b/IDE/MPLAB/test-app/test-usb-updater.same51.X/nbproject/private/configurations.xml
new file mode 100644
index 000000000..4b34d5b4c
--- /dev/null
+++ b/IDE/MPLAB/test-app/test-usb-updater.same51.X/nbproject/private/configurations.xml
@@ -0,0 +1,25 @@
+
+
+ Makefile
+ 0
+
+
+ noToolString
+ /opt/microchip/xc32/v4.35/bin
+
+ place holder 1
+ place holder 2
+
+
+
+
+ true
+ 0
+ 0
+ 0
+
+
+
+
+
+
diff --git a/IDE/MPLAB/test-app/test-usb-updater.same51.X/nbproject/private/private.xml b/IDE/MPLAB/test-app/test-usb-updater.same51.X/nbproject/private/private.xml
new file mode 100644
index 000000000..c2d91754a
--- /dev/null
+++ b/IDE/MPLAB/test-app/test-usb-updater.same51.X/nbproject/private/private.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
+ file:/home/dan/src/wolfboot-mplab-test/IDE/MPLAB/test-app/src/main.c
+ file:/home/dan/src/wolfboot-mplab-test/IDE/MPLAB/test-app/test-usb-updater.same51.X/main.c
+ file:/home/dan/src/wolfboot-mplab-test/IDE/MPLAB/test-app/src/config/default/pin_configurations.csv
+ file:/home/dan/src/wolfboot-mplab-test/IDE/MPLAB/test-app/src/config/default/definitions.h
+
+
+
diff --git a/IDE/MPLAB/test-app/test-usb-updater.same51.X/nbproject/project.xml b/IDE/MPLAB/test-app/test-usb-updater.same51.X/nbproject/project.xml
new file mode 100644
index 000000000..d27a4e445
--- /dev/null
+++ b/IDE/MPLAB/test-app/test-usb-updater.same51.X/nbproject/project.xml
@@ -0,0 +1,27 @@
+
+
+ com.microchip.mplab.nbide.embedded.makeproject
+
+
+ test-usb-updater.same51
+ cd05a95a-5bb7-48a9-a8b6-2bfd13f565c2
+ 0
+ ISO-8859-1
+
+
+ .
+ ../../../../src
+ ../../../../hal
+
+
+
+ default
+ 2
+
+
+
+ false
+
+
+
+
diff --git a/IDE/MPLAB/test-app/test-usb-updater.same51.X/test-usb-updater.same51.mc3 b/IDE/MPLAB/test-app/test-usb-updater.same51.X/test-usb-updater.same51.mc3
new file mode 100644
index 000000000..923b8d6c3
--- /dev/null
+++ b/IDE/MPLAB/test-app/test-usb-updater.same51.X/test-usb-updater.same51.mc3
@@ -0,0 +1,2250 @@
+
+
+
+
+ cmsis
+ class com.microchip.mcc.harmony.HarmonyModule
+
+
+ core
+ class com.microchip.mcc.harmony.HarmonyModule
+
+
+ dfp
+ class com.microchip.mcc.harmony.HarmonyModule
+
+
+ evsys
+ class com.microchip.mcc.harmony.HarmonyModule
+
+
+ nvmctrl
+ class com.microchip.mcc.harmony.HarmonyModule
+
+
+ sercom5
+ class com.microchip.mcc.harmony.HarmonyModule
+
+
+
+
+
+
+
+
+ __ROOTVIEW
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><UserData>
+ <UserData dnOrder="0">
+ <GraphSettings canvasHeight="315" canvasWidth="641" dnOrder="0"/>
+ <PowerProfiles dnOrder="1">
+ <Profile dnOrder="0" id="profile0" name="Main"/>
+ </PowerProfiles>
+ <ComponentGraph dnOrder="2" id="__ROOTVIEW">
+ <ElementPositions dnOrder="0">
+ <ElementPosition dnOrder="0" id="cmsis" x="330" y="60"/>
+ <ElementPosition dnOrder="1" id="core" x="560" y="20"/>
+ <ElementPosition dnOrder="2" id="dfp" x="340" y="20"/>
+ <ElementPosition dnOrder="3" id="evsys" x="180" y="20"/>
+ <ElementPosition dnOrder="4" id="nvmctrl" x="20" y="20"/>
+ <ElementPosition dnOrder="5" id="sercom5" x="179" y="154"/>
+ </ElementPositions>
+ </ComponentGraph>
+ </UserData>
+</UserData>
+
+
+
+
+ __ROOTVIEW
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><core>
+ <core dnOrder="0" id="GCLK_ID_35_CHEN">
+ <Values dnOrder="0">
+ <Dynamic dnOrder="0" id="core" value="true"/>
+ </Values>
+ </core>
+</core>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><core>
+ <core dnOrder="0" id="GCLK_ID_35_FREQ">
+ <Values dnOrder="0">
+ <Dynamic dnOrder="0" id="core" value="60000000"/>
+ </Values>
+ </core>
+</core>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><core>
+ <core dnOrder="0" id="MCLK_APBD_INITIAL_VALUE">
+ <Values dnOrder="0">
+ <Dynamic dnOrder="0" id="core" value="0x2"/>
+ </Values>
+ </core>
+</core>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><core>
+ <core dnOrder="0" id="NVIC_66_0_ENABLE">
+ <Values dnOrder="0">
+ <Dynamic dnOrder="0" id="core" value="true"/>
+ <User dnOrder="1" value="false"/>
+ </Values>
+ </core>
+</core>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><core>
+ <core dnOrder="0" id="NVIC_66_0_HANDLER">
+ <Values dnOrder="0">
+ <Dynamic dnOrder="0" id="core" value="SERCOM5_USART_InterruptHandler"/>
+ <User dnOrder="1" value="SERCOM5_0_Handler"/>
+ </Values>
+ </core>
+</core>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><core>
+ <core dnOrder="0" id="NVIC_66_0_HANDLER_LOCK">
+ <Values dnOrder="0">
+ <Dynamic dnOrder="0" id="core" value="true"/>
+ </Values>
+ </core>
+</core>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><core>
+ <core dnOrder="0" id="NVIC_67_0_ENABLE">
+ <Values dnOrder="0">
+ <Dynamic dnOrder="0" id="core" value="true"/>
+ <User dnOrder="1" value="true"/>
+ </Values>
+ </core>
+</core>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><core>
+ <core dnOrder="0" id="NVIC_67_0_HANDLER">
+ <Values dnOrder="0">
+ <Dynamic dnOrder="0" id="core" value="SERCOM5_USART_InterruptHandler"/>
+ </Values>
+ </core>
+</core>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><core>
+ <core dnOrder="0" id="NVIC_67_0_HANDLER_LOCK">
+ <Values dnOrder="0">
+ <Dynamic dnOrder="0" id="core" value="true"/>
+ </Values>
+ </core>
+</core>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><core>
+ <core dnOrder="0" id="NVIC_68_0_ENABLE">
+ <Values dnOrder="0">
+ <Dynamic dnOrder="0" id="core" value="true"/>
+ <User dnOrder="1" value="true"/>
+ </Values>
+ </core>
+</core>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><core>
+ <core dnOrder="0" id="NVIC_68_0_HANDLER">
+ <Values dnOrder="0">
+ <Dynamic dnOrder="0" id="core" value="SERCOM5_USART_InterruptHandler"/>
+ </Values>
+ </core>
+</core>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><core>
+ <core dnOrder="0" id="NVIC_68_0_HANDLER_LOCK">
+ <Values dnOrder="0">
+ <Dynamic dnOrder="0" id="core" value="true"/>
+ </Values>
+ </core>
+</core>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><core>
+ <core dnOrder="0" id="NVIC_69_0_ENABLE">
+ <Values dnOrder="0">
+ <Dynamic dnOrder="0" id="core" value="true"/>
+ <User dnOrder="1" value="true"/>
+ </Values>
+ </core>
+</core>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><core>
+ <core dnOrder="0" id="NVIC_69_0_HANDLER">
+ <Values dnOrder="0">
+ <Dynamic dnOrder="0" id="core" value="SERCOM5_USART_InterruptHandler"/>
+ </Values>
+ </core>
+</core>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><core>
+ <core dnOrder="0" id="NVIC_69_0_HANDLER_LOCK">
+ <Values dnOrder="0">
+ <Dynamic dnOrder="0" id="core" value="true"/>
+ </Values>
+ </core>
+</core>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><core>
+ <core dnOrder="0" id="PIN_39_FUNCTION_TYPE">
+ <Values dnOrder="0">
+ <User dnOrder="0" value="SERCOM5_PAD0"/>
+ </Values>
+ </core>
+</core>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><core>
+ <core dnOrder="0" id="PIN_39_MODE">
+ <Values dnOrder="0">
+ <User dnOrder="0" value=""/>
+ </Values>
+ </core>
+</core>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><core>
+ <core dnOrder="0" id="PIN_39_PERIPHERAL_FUNCTION">
+ <Values dnOrder="0">
+ <User dnOrder="0" value="C"/>
+ </Values>
+ </core>
+</core>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><core>
+ <core dnOrder="0" id="PIN_40_FUNCTION_TYPE">
+ <Values dnOrder="0">
+ <User dnOrder="0" value="SERCOM5_PAD1"/>
+ </Values>
+ </core>
+</core>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><core>
+ <core dnOrder="0" id="PIN_40_MODE">
+ <Values dnOrder="0">
+ <User dnOrder="0" value=""/>
+ </Values>
+ </core>
+</core>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><core>
+ <core dnOrder="0" id="PIN_40_PERIPHERAL_FUNCTION">
+ <Values dnOrder="0">
+ <User dnOrder="0" value="C"/>
+ </Values>
+ </core>
+</core>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><core>
+ <core dnOrder="0" id="PORT_GROUP_1_PAD_16">
+ <Values dnOrder="0">
+ <Dynamic dnOrder="0" id="core" value="PB16"/>
+ </Values>
+ </core>
+</core>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><core>
+ <core dnOrder="0" id="PORT_GROUP_1_PAD_17">
+ <Values dnOrder="0">
+ <Dynamic dnOrder="0" id="core" value="PB17"/>
+ </Values>
+ </core>
+</core>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><core>
+ <core dnOrder="0" id="PORT_GROUP_1_PINCFG16">
+ <Values dnOrder="0">
+ <Dynamic dnOrder="0" id="core" value="0x1"/>
+ </Values>
+ </core>
+</core>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><core>
+ <core dnOrder="0" id="PORT_GROUP_1_PINCFG17">
+ <Values dnOrder="0">
+ <Dynamic dnOrder="0" id="core" value="0x1"/>
+ </Values>
+ </core>
+</core>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><core>
+ <core dnOrder="0" id="PORT_GROUP_1_PIN_16_USED">
+ <Values dnOrder="0">
+ <Dynamic dnOrder="0" id="core" value="true"/>
+ </Values>
+ </core>
+</core>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><core>
+ <core dnOrder="0" id="PORT_GROUP_1_PIN_17_USED">
+ <Values dnOrder="0">
+ <Dynamic dnOrder="0" id="core" value="true"/>
+ </Values>
+ </core>
+</core>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><core>
+ <core dnOrder="0" id="PORT_GROUP_1_PMUX8">
+ <Values dnOrder="0">
+ <Dynamic dnOrder="0" id="core" value="0x22"/>
+ </Values>
+ </core>
+</core>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><core>
+ <core dnOrder="0" id="SERCOM5_0_INTERRUPT_ENABLE">
+ <Values dnOrder="0">
+ <Dynamic dnOrder="0" id="sercom5" value="true"/>
+ </Values>
+ </core>
+</core>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><core>
+ <core dnOrder="0" id="SERCOM5_0_INTERRUPT_ENABLE_UPDATE">
+ <Values dnOrder="0">
+ <Dynamic dnOrder="0" id="core" value="true"/>
+ </Values>
+ </core>
+</core>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><core>
+ <core dnOrder="0" id="SERCOM5_0_INTERRUPT_HANDLER">
+ <Values dnOrder="0">
+ <Dynamic dnOrder="0" id="sercom5" value="SERCOM5_USART_InterruptHandler"/>
+ </Values>
+ </core>
+</core>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><core>
+ <core dnOrder="0" id="SERCOM5_0_INTERRUPT_HANDLER_LOCK">
+ <Values dnOrder="0">
+ <Dynamic dnOrder="0" id="sercom5" value="true"/>
+ </Values>
+ </core>
+</core>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><core>
+ <core dnOrder="0" id="SERCOM5_1_INTERRUPT_ENABLE">
+ <Values dnOrder="0">
+ <Dynamic dnOrder="0" id="sercom5" value="true"/>
+ </Values>
+ </core>
+</core>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><core>
+ <core dnOrder="0" id="SERCOM5_1_INTERRUPT_ENABLE_UPDATE">
+ <Values dnOrder="0">
+ <Dynamic dnOrder="0" id="core" value="false"/>
+ </Values>
+ </core>
+</core>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><core>
+ <core dnOrder="0" id="SERCOM5_1_INTERRUPT_HANDLER">
+ <Values dnOrder="0">
+ <Dynamic dnOrder="0" id="sercom5" value="SERCOM5_USART_InterruptHandler"/>
+ </Values>
+ </core>
+</core>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><core>
+ <core dnOrder="0" id="SERCOM5_1_INTERRUPT_HANDLER_LOCK">
+ <Values dnOrder="0">
+ <Dynamic dnOrder="0" id="sercom5" value="true"/>
+ </Values>
+ </core>
+</core>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><core>
+ <core dnOrder="0" id="SERCOM5_2_INTERRUPT_ENABLE">
+ <Values dnOrder="0">
+ <Dynamic dnOrder="0" id="sercom5" value="true"/>
+ </Values>
+ </core>
+</core>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><core>
+ <core dnOrder="0" id="SERCOM5_2_INTERRUPT_ENABLE_UPDATE">
+ <Values dnOrder="0">
+ <Dynamic dnOrder="0" id="core" value="false"/>
+ </Values>
+ </core>
+</core>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><core>
+ <core dnOrder="0" id="SERCOM5_2_INTERRUPT_HANDLER">
+ <Values dnOrder="0">
+ <Dynamic dnOrder="0" id="sercom5" value="SERCOM5_USART_InterruptHandler"/>
+ </Values>
+ </core>
+</core>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><core>
+ <core dnOrder="0" id="SERCOM5_2_INTERRUPT_HANDLER_LOCK">
+ <Values dnOrder="0">
+ <Dynamic dnOrder="0" id="sercom5" value="true"/>
+ </Values>
+ </core>
+</core>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><core>
+ <core dnOrder="0" id="SERCOM5_CORE_CLOCK_ENABLE">
+ <Values dnOrder="0">
+ <Dynamic dnOrder="0" id="sercom5" value="true"/>
+ </Values>
+ </core>
+</core>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><core>
+ <core dnOrder="0" id="SERCOM5_CORE_CLOCK_FREQUENCY">
+ <Values dnOrder="0">
+ <Dynamic dnOrder="0" id="core" value="60000000"/>
+ </Values>
+ </core>
+</core>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><core>
+ <core dnOrder="0" id="SERCOM5_OTHER_INTERRUPT_ENABLE">
+ <Values dnOrder="0">
+ <Dynamic dnOrder="0" id="sercom5" value="true"/>
+ </Values>
+ </core>
+</core>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><core>
+ <core dnOrder="0" id="SERCOM5_OTHER_INTERRUPT_ENABLE_UPDATE">
+ <Values dnOrder="0">
+ <Dynamic dnOrder="0" id="core" value="false"/>
+ </Values>
+ </core>
+</core>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><core>
+ <core dnOrder="0" id="SERCOM5_OTHER_INTERRUPT_HANDLER">
+ <Values dnOrder="0">
+ <Dynamic dnOrder="0" id="sercom5" value="SERCOM5_USART_InterruptHandler"/>
+ </Values>
+ </core>
+</core>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><core>
+ <core dnOrder="0" id="SERCOM5_OTHER_INTERRUPT_HANDLER_LOCK">
+ <Values dnOrder="0">
+ <Dynamic dnOrder="0" id="sercom5" value="true"/>
+ </Values>
+ </core>
+</core>
+
+
+
+
+ __ROOTVIEW
+
+
+
+ __ROOTVIEW
+
+
+
+ __ROOTVIEW
+
+
+
+ __ROOTVIEW
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><sercom5>
+ <sercom5 dnOrder="0" id="I2CM_ADDR_SIZE">
+ <Values dnOrder="0"/>
+ </sercom5>
+</sercom5>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><sercom5>
+ <sercom5 dnOrder="0" id="I2CM_BAUD">
+ <Values dnOrder="0">
+ <Dynamic dnOrder="0" id="sercom5" value="255"/>
+ </Values>
+ </sercom5>
+</sercom5>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><sercom5>
+ <sercom5 dnOrder="0" id="I2CM_BAUD_SIZE">
+ <Values dnOrder="0"/>
+ </sercom5>
+</sercom5>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><sercom5>
+ <sercom5 dnOrder="0" id="I2CM_MODE">
+ <Values dnOrder="0"/>
+ </sercom5>
+</sercom5>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><sercom5>
+ <sercom5 dnOrder="0" id="I2CM_TRISE">
+ <Values dnOrder="0"/>
+ </sercom5>
+</sercom5>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><sercom5>
+ <sercom5 dnOrder="0" id="I2CS_INTENSET_ERROR">
+ <Values dnOrder="0"/>
+ </sercom5>
+</sercom5>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><sercom5>
+ <sercom5 dnOrder="0" id="I2CS_INTERRUPT_MODE">
+ <Values dnOrder="0"/>
+ </sercom5>
+</sercom5>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><sercom5>
+ <sercom5 dnOrder="0" id="I2CS_LOWTOUT_ERROR_SUPPORT">
+ <Values dnOrder="0"/>
+ </sercom5>
+</sercom5>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><sercom5>
+ <sercom5 dnOrder="0" id="I2CS_LOWTOUT_SUPPORT">
+ <Values dnOrder="0"/>
+ </sercom5>
+</sercom5>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><sercom5>
+ <sercom5 dnOrder="0" id="I2CS_MODE">
+ <Values dnOrder="0"/>
+ </sercom5>
+</sercom5>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><sercom5>
+ <sercom5 dnOrder="0" id="I2CS_PLIB_API_PREFIX">
+ <Values dnOrder="0"/>
+ </sercom5>
+</sercom5>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><sercom5>
+ <sercom5 dnOrder="0" id="I2CS_RUNSTDBY">
+ <Values dnOrder="0"/>
+ </sercom5>
+</sercom5>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><sercom5>
+ <sercom5 dnOrder="0" id="I2CS_SCLSM">
+ <Values dnOrder="0"/>
+ </sercom5>
+</sercom5>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><sercom5>
+ <sercom5 dnOrder="0" id="I2CS_SDAHOLD_TIME">
+ <Values dnOrder="0"/>
+ </sercom5>
+</sercom5>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><sercom5>
+ <sercom5 dnOrder="0" id="I2CS_SDASETUP_MAX_VALUE">
+ <Values dnOrder="0"/>
+ </sercom5>
+</sercom5>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><sercom5>
+ <sercom5 dnOrder="0" id="I2CS_SDASETUP_TIME_NS">
+ <Values dnOrder="0"/>
+ </sercom5>
+</sercom5>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><sercom5>
+ <sercom5 dnOrder="0" id="I2CS_SDASETUP_TIME_REG_VALUE">
+ <Values dnOrder="0"/>
+ </sercom5>
+</sercom5>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><sercom5>
+ <sercom5 dnOrder="0" id="I2CS_SDASETUP_TIME_SUPPORT">
+ <Values dnOrder="0">
+ <Dynamic dnOrder="0" id="sercom5" value="true"/>
+ </Values>
+ </sercom5>
+</sercom5>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><sercom5>
+ <sercom5 dnOrder="0" id="I2CS_SEXTTOEN_SUPPORT">
+ <Values dnOrder="0"/>
+ </sercom5>
+</sercom5>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><sercom5>
+ <sercom5 dnOrder="0" id="I2CS_SEXTTOOUT_ERROR_SUPPORT">
+ <Values dnOrder="0"/>
+ </sercom5>
+</sercom5>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><sercom5>
+ <sercom5 dnOrder="0" id="I2CS_SLAVE_ADDDRESS">
+ <Values dnOrder="0"/>
+ </sercom5>
+</sercom5>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><sercom5>
+ <sercom5 dnOrder="0" id="I2CS_SMEN">
+ <Values dnOrder="0"/>
+ </sercom5>
+</sercom5>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><sercom5>
+ <sercom5 dnOrder="0" id="I2CS_TENBITEN_SUPPORT">
+ <Values dnOrder="0"/>
+ </sercom5>
+</sercom5>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><sercom5>
+ <sercom5 dnOrder="0" id="I2C_ADDR_TENBITEN">
+ <Values dnOrder="0"/>
+ </sercom5>
+</sercom5>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><sercom5>
+ <sercom5 dnOrder="0" id="I2C_CLOCK_SPEED">
+ <Values dnOrder="0"/>
+ </sercom5>
+</sercom5>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><sercom5>
+ <sercom5 dnOrder="0" id="I2C_CLOCK_SPEED_HZ">
+ <Values dnOrder="0"/>
+ </sercom5>
+</sercom5>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><sercom5>
+ <sercom5 dnOrder="0" id="I2C_INTERRUPT_MODE">
+ <Values dnOrder="0"/>
+ </sercom5>
+</sercom5>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><sercom5>
+ <sercom5 dnOrder="0" id="I2C_MASTER_CODE">
+ <Values dnOrder="0"/>
+ </sercom5>
+</sercom5>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><sercom5>
+ <sercom5 dnOrder="0" id="I2C_PLIB_API_PREFIX">
+ <Values dnOrder="0"/>
+ </sercom5>
+</sercom5>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><sercom5>
+ <sercom5 dnOrder="0" id="I2C_RUNSTDBY">
+ <Values dnOrder="0"/>
+ </sercom5>
+</sercom5>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><sercom5>
+ <sercom5 dnOrder="0" id="I2C_SCLSM">
+ <Values dnOrder="0"/>
+ </sercom5>
+</sercom5>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><sercom5>
+ <sercom5 dnOrder="0" id="I2C_SDAHOLD_TIME">
+ <Values dnOrder="0"/>
+ </sercom5>
+</sercom5>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><sercom5>
+ <sercom5 dnOrder="0" id="RECEIVE_DATA_REGISTER">
+ <Values dnOrder="0"/>
+ </sercom5>
+</sercom5>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><sercom5>
+ <sercom5 dnOrder="0" id="SERCOM_INSTANCE_NAME">
+ <Values dnOrder="0"/>
+ </sercom5>
+</sercom5>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><sercom5>
+ <sercom5 dnOrder="0" id="SERCOM_MODE">
+ <Values dnOrder="0"/>
+ </sercom5>
+</sercom5>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><sercom5>
+ <sercom5 dnOrder="0" id="SERCOM_SYNCBUSY">
+ <Values dnOrder="0"/>
+ </sercom5>
+</sercom5>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><sercom5>
+ <sercom5 dnOrder="0" id="SERCOM_USART_HEADER">
+ <Attributes dnOrder="0">
+ <String dnOrder="0" id="source">
+ <Value dnOrder="0">../peripheral/sercom_u2201/templates/plib_sercom_usart.h.ftl</Value>
+ </String>
+ </Attributes>
+ </sercom5>
+</sercom5>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><sercom5>
+ <sercom5 dnOrder="0" id="SERCOM_USART_SOURCE">
+ <Attributes dnOrder="0">
+ <String dnOrder="0" id="source">
+ <Value dnOrder="0">../peripheral/sercom_u2201/templates/plib_sercom_usart.c.ftl</Value>
+ </String>
+ </Attributes>
+ </sercom5>
+</sercom5>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><sercom5>
+ <sercom5 dnOrder="0" id="SPIS_BUSY_PIN">
+ <Values dnOrder="0"/>
+ </sercom5>
+</sercom5>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><sercom5>
+ <sercom5 dnOrder="0" id="SPIS_BUSY_PIN_LOGIC_LEVEL">
+ <Values dnOrder="0"/>
+ </sercom5>
+</sercom5>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><sercom5>
+ <sercom5 dnOrder="0" id="SPIS_CHARSIZE_BITS">
+ <Values dnOrder="0"/>
+ </sercom5>
+</sercom5>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><sercom5>
+ <sercom5 dnOrder="0" id="SPIS_CLOCK_PHASE">
+ <Values dnOrder="0"/>
+ </sercom5>
+</sercom5>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><sercom5>
+ <sercom5 dnOrder="0" id="SPIS_CLOCK_POLARITY">
+ <Values dnOrder="0"/>
+ </sercom5>
+</sercom5>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><sercom5>
+ <sercom5 dnOrder="0" id="SPIS_DATA_ORDER">
+ <Values dnOrder="0"/>
+ </sercom5>
+</sercom5>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><sercom5>
+ <sercom5 dnOrder="0" id="SPIS_DATA_SIZE">
+ <Values dnOrder="0"/>
+ </sercom5>
+</sercom5>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><sercom5>
+ <sercom5 dnOrder="0" id="SPIS_DIPO">
+ <Values dnOrder="0"/>
+ </sercom5>
+</sercom5>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><sercom5>
+ <sercom5 dnOrder="0" id="SPIS_DOPO">
+ <Values dnOrder="0"/>
+ </sercom5>
+</sercom5>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><sercom5>
+ <sercom5 dnOrder="0" id="SPIS_INTENSET_ERROR">
+ <Values dnOrder="0"/>
+ </sercom5>
+</sercom5>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><sercom5>
+ <sercom5 dnOrder="0" id="SPIS_INTERRUPT_MODE">
+ <Values dnOrder="0"/>
+ </sercom5>
+</sercom5>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><sercom5>
+ <sercom5 dnOrder="0" id="SPIS_RUNSTDBY">
+ <Values dnOrder="0"/>
+ </sercom5>
+</sercom5>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><sercom5>
+ <sercom5 dnOrder="0" id="SPIS_RX_BUFFER_SIZE">
+ <Values dnOrder="0"/>
+ </sercom5>
+</sercom5>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><sercom5>
+ <sercom5 dnOrder="0" id="SPIS_SSDE">
+ <Values dnOrder="0"/>
+ </sercom5>
+</sercom5>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><sercom5>
+ <sercom5 dnOrder="0" id="SPIS_TX_BUFFER_SIZE">
+ <Values dnOrder="0"/>
+ </sercom5>
+</sercom5>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><sercom5>
+ <sercom5 dnOrder="0" id="SPIS_USE_BUSY_PIN">
+ <Values dnOrder="0"/>
+ </sercom5>
+</sercom5>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><sercom5>
+ <sercom5 dnOrder="0" id="SPI_BAUD_RATE">
+ <Values dnOrder="0"/>
+ </sercom5>
+</sercom5>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><sercom5>
+ <sercom5 dnOrder="0" id="SPI_BAUD_REG_VALUE">
+ <Values dnOrder="0">
+ <Dynamic dnOrder="0" id="sercom5" value="29"/>
+ </Values>
+ </sercom5>
+</sercom5>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><sercom5>
+ <sercom5 dnOrder="0" id="SPI_CHARSIZE_BITS">
+ <Values dnOrder="0"/>
+ </sercom5>
+</sercom5>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><sercom5>
+ <sercom5 dnOrder="0" id="SPI_CHARSIZE_BITS_8_BIT_MASK">
+ <Values dnOrder="0"/>
+ </sercom5>
+</sercom5>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><sercom5>
+ <sercom5 dnOrder="0" id="SPI_CHARSIZE_BITS_9_BIT_MASK">
+ <Values dnOrder="0"/>
+ </sercom5>
+</sercom5>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><sercom5>
+ <sercom5 dnOrder="0" id="SPI_CLOCK_PHASE">
+ <Values dnOrder="0"/>
+ </sercom5>
+</sercom5>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><sercom5>
+ <sercom5 dnOrder="0" id="SPI_CLOCK_PHASE_LEADING_MASK">
+ <Values dnOrder="0"/>
+ </sercom5>
+</sercom5>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><sercom5>
+ <sercom5 dnOrder="0" id="SPI_CLOCK_PHASE_TRAILING_MASK">
+ <Values dnOrder="0"/>
+ </sercom5>
+</sercom5>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><sercom5>
+ <sercom5 dnOrder="0" id="SPI_CLOCK_POLARITY">
+ <Values dnOrder="0"/>
+ </sercom5>
+</sercom5>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><sercom5>
+ <sercom5 dnOrder="0" id="SPI_CLOCK_POLARITY_HIGH_MASK">
+ <Values dnOrder="0"/>
+ </sercom5>
+</sercom5>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><sercom5>
+ <sercom5 dnOrder="0" id="SPI_CLOCK_POLARITY_LOW_MASK">
+ <Values dnOrder="0"/>
+ </sercom5>
+</sercom5>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><sercom5>
+ <sercom5 dnOrder="0" id="SPI_DATA_ORDER">
+ <Values dnOrder="0"/>
+ </sercom5>
+</sercom5>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><sercom5>
+ <sercom5 dnOrder="0" id="SPI_DIPO">
+ <Values dnOrder="0"/>
+ </sercom5>
+</sercom5>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><sercom5>
+ <sercom5 dnOrder="0" id="SPI_DOPO">
+ <Values dnOrder="0"/>
+ </sercom5>
+</sercom5>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><sercom5>
+ <sercom5 dnOrder="0" id="SPI_INTENSET_ERROR">
+ <Values dnOrder="0"/>
+ </sercom5>
+</sercom5>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><sercom5>
+ <sercom5 dnOrder="0" id="SPI_INTERRUPT_MODE">
+ <Values dnOrder="0"/>
+ </sercom5>
+</sercom5>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><sercom5>
+ <sercom5 dnOrder="0" id="SPI_MSSEN">
+ <Values dnOrder="0"/>
+ </sercom5>
+</sercom5>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><sercom5>
+ <sercom5 dnOrder="0" id="SPI_PLIB_API_PREFIX">
+ <Values dnOrder="0"/>
+ </sercom5>
+</sercom5>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><sercom5>
+ <sercom5 dnOrder="0" id="SPI_RECIEVER_ENABLE">
+ <Values dnOrder="0"/>
+ </sercom5>
+</sercom5>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><sercom5>
+ <sercom5 dnOrder="0" id="SPI_RUNSTDBY">
+ <Values dnOrder="0"/>
+ </sercom5>
+</sercom5>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><sercom5>
+ <sercom5 dnOrder="0" id="SPI_STATUS_OVERRUN_MASK">
+ <Values dnOrder="0"/>
+ </sercom5>
+</sercom5>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><sercom5>
+ <sercom5 dnOrder="0" id="TRANSMIT_DATA_REGISTER">
+ <Values dnOrder="0"/>
+ </sercom5>
+</sercom5>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><sercom5>
+ <sercom5 dnOrder="0" id="USART_BAUD_RATE">
+ <Values dnOrder="0"/>
+ </sercom5>
+</sercom5>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><sercom5>
+ <sercom5 dnOrder="0" id="USART_BAUD_VALUE">
+ <Values dnOrder="0">
+ <Dynamic dnOrder="0" id="sercom5" value="63522"/>
+ </Values>
+ </sercom5>
+</sercom5>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><sercom5>
+ <sercom5 dnOrder="0" id="USART_CHARSIZE_BITS">
+ <Values dnOrder="0"/>
+ </sercom5>
+</sercom5>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><sercom5>
+ <sercom5 dnOrder="0" id="USART_CTRLC_GTIME">
+ <Values dnOrder="0"/>
+ </sercom5>
+</sercom5>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><sercom5>
+ <sercom5 dnOrder="0" id="USART_DATA_5_BIT_MASK">
+ <Values dnOrder="0"/>
+ </sercom5>
+</sercom5>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><sercom5>
+ <sercom5 dnOrder="0" id="USART_DATA_6_BIT_MASK">
+ <Values dnOrder="0"/>
+ </sercom5>
+</sercom5>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><sercom5>
+ <sercom5 dnOrder="0" id="USART_DATA_7_BIT_MASK">
+ <Values dnOrder="0"/>
+ </sercom5>
+</sercom5>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><sercom5>
+ <sercom5 dnOrder="0" id="USART_DATA_8_BIT_MASK">
+ <Values dnOrder="0"/>
+ </sercom5>
+</sercom5>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><sercom5>
+ <sercom5 dnOrder="0" id="USART_DATA_9_BIT_MASK">
+ <Values dnOrder="0"/>
+ </sercom5>
+</sercom5>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><sercom5>
+ <sercom5 dnOrder="0" id="USART_DATA_BITS">
+ <Values dnOrder="0"/>
+ </sercom5>
+</sercom5>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><sercom5>
+ <sercom5 dnOrder="0" id="USART_FLOW_CONTROL">
+ <Values dnOrder="0"/>
+ </sercom5>
+</sercom5>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><sercom5>
+ <sercom5 dnOrder="0" id="USART_FORM">
+ <Values dnOrder="0"/>
+ </sercom5>
+</sercom5>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><sercom5>
+ <sercom5 dnOrder="0" id="USART_FRAMING_ERROR_VALUE">
+ <Values dnOrder="0"/>
+ </sercom5>
+</sercom5>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><sercom5>
+ <sercom5 dnOrder="0" id="USART_INTENSET_ERROR">
+ <Values dnOrder="0"/>
+ </sercom5>
+</sercom5>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><sercom5>
+ <sercom5 dnOrder="0" id="USART_INTERRUPT_MODE">
+ <Values dnOrder="0"/>
+ </sercom5>
+</sercom5>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><sercom5>
+ <sercom5 dnOrder="0" id="USART_INTERRUPT_MODE_ENABLE">
+ <Values dnOrder="0">
+ <Dynamic dnOrder="0" id="sercom5" value="true"/>
+ </Values>
+ </sercom5>
+</sercom5>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><sercom5>
+ <sercom5 dnOrder="0" id="USART_LIN_MASTER_BREAK_LEN">
+ <Values dnOrder="0"/>
+ </sercom5>
+</sercom5>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><sercom5>
+ <sercom5 dnOrder="0" id="USART_LIN_MASTER_HDRDLY">
+ <Values dnOrder="0"/>
+ </sercom5>
+</sercom5>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><sercom5>
+ <sercom5 dnOrder="0" id="USART_LIN_MASTER_SUPPORTED">
+ <Values dnOrder="0">
+ <Dynamic dnOrder="0" id="sercom5" value="true"/>
+ </Values>
+ </sercom5>
+</sercom5>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><sercom5>
+ <sercom5 dnOrder="0" id="USART_OPERATING_MODE">
+ <Values dnOrder="0">
+ <User dnOrder="0" value="1"/>
+ </Values>
+ </sercom5>
+</sercom5>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><sercom5>
+ <sercom5 dnOrder="0" id="USART_OVERRUN_ERROR_VALUE">
+ <Values dnOrder="0"/>
+ </sercom5>
+</sercom5>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><sercom5>
+ <sercom5 dnOrder="0" id="USART_PARITY_ERROR_VALUE">
+ <Values dnOrder="0"/>
+ </sercom5>
+</sercom5>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><sercom5>
+ <sercom5 dnOrder="0" id="USART_PARITY_EVEN_MASK">
+ <Values dnOrder="0"/>
+ </sercom5>
+</sercom5>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><sercom5>
+ <sercom5 dnOrder="0" id="USART_PARITY_MODE">
+ <Values dnOrder="0"/>
+ </sercom5>
+</sercom5>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><sercom5>
+ <sercom5 dnOrder="0" id="USART_PARITY_NONE_MASK">
+ <Values dnOrder="0"/>
+ </sercom5>
+</sercom5>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><sercom5>
+ <sercom5 dnOrder="0" id="USART_PARITY_ODD_MASK">
+ <Values dnOrder="0"/>
+ </sercom5>
+</sercom5>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><sercom5>
+ <sercom5 dnOrder="0" id="USART_PLIB_API_PREFIX">
+ <Values dnOrder="0"/>
+ </sercom5>
+</sercom5>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><sercom5>
+ <sercom5 dnOrder="0" id="USART_RING_BUFFER_ENABLE">
+ <Values dnOrder="0"/>
+ </sercom5>
+</sercom5>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><sercom5>
+ <sercom5 dnOrder="0" id="USART_RING_BUFFER_MODE_ENABLE">
+ <Values dnOrder="0">
+ <Dynamic dnOrder="0" id="sercom5" value="false"/>
+ </Values>
+ </sercom5>
+</sercom5>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><sercom5>
+ <sercom5 dnOrder="0" id="USART_RS485">
+ <Values dnOrder="0"/>
+ </sercom5>
+</sercom5>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><sercom5>
+ <sercom5 dnOrder="0" id="USART_RUNSTDBY">
+ <Values dnOrder="0">
+ <User dnOrder="0" value="false"/>
+ </Values>
+ </sercom5>
+</sercom5>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><sercom5>
+ <sercom5 dnOrder="0" id="USART_RXPO">
+ <Values dnOrder="0"/>
+ </sercom5>
+</sercom5>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><sercom5>
+ <sercom5 dnOrder="0" id="USART_RX_ENABLE">
+ <Values dnOrder="0"/>
+ </sercom5>
+</sercom5>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><sercom5>
+ <sercom5 dnOrder="0" id="USART_RX_RING_BUFFER_SIZE">
+ <Values dnOrder="0"/>
+ </sercom5>
+</sercom5>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><sercom5>
+ <sercom5 dnOrder="0" id="USART_SAMPLE_COUNT">
+ <Values dnOrder="0">
+ <Dynamic dnOrder="0" id="sercom5" value="16"/>
+ </Values>
+ </sercom5>
+</sercom5>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><sercom5>
+ <sercom5 dnOrder="0" id="USART_SAMPLE_RATE">
+ <Values dnOrder="0">
+ <Dynamic dnOrder="0" id="sercom5" value="0"/>
+ </Values>
+ </sercom5>
+</sercom5>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><sercom5>
+ <sercom5 dnOrder="0" id="USART_SFDE">
+ <Values dnOrder="0"/>
+ </sercom5>
+</sercom5>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><sercom5>
+ <sercom5 dnOrder="0" id="USART_STOP_1_BIT_MASK">
+ <Values dnOrder="0"/>
+ </sercom5>
+</sercom5>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><sercom5>
+ <sercom5 dnOrder="0" id="USART_STOP_2_BIT_MASK">
+ <Values dnOrder="0"/>
+ </sercom5>
+</sercom5>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><sercom5>
+ <sercom5 dnOrder="0" id="USART_STOP_BIT">
+ <Values dnOrder="0"/>
+ </sercom5>
+</sercom5>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><sercom5>
+ <sercom5 dnOrder="0" id="USART_TXPO">
+ <Values dnOrder="0"/>
+ </sercom5>
+</sercom5>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><sercom5>
+ <sercom5 dnOrder="0" id="USART_TX_ENABLE">
+ <Values dnOrder="0"/>
+ </sercom5>
+</sercom5>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><sercom5>
+ <sercom5 dnOrder="0" id="USART_TX_RING_BUFFER_SIZE">
+ <Values dnOrder="0"/>
+ </sercom5>
+</sercom5>
+
+
+
+
+
+ ../src/config/default/ATSAME51J20A.ld
+ 15cc39143f19337d981ec510fb70d42c944cd8b2cf96c6fe85f9c053341dfae2
+
+
+ ../src/config/default/definitions.h
+ a3e220bb8905f3e52cca32c4ac9a814d3e58c25ae9f3bcc5b3a1e9d13f117a70
+
+
+ ../src/config/default/device.h
+ 5ef6927cc338505efe55c8d90bcf721643a2210567cd529c1d26195b8a96f17f
+
+
+ ../src/config/default/device_cache.h
+ e2914501b361bbc93a56d6915b1bf4fac00277e61f31fdee87a587bc15dea5b6
+
+
+ ../src/config/default/device_vectors.h
+ 73940897ea4570f75fde55f65cc755757d1989db12e039b9960b0de07853cb45
+
+
+ ../src/config/default/exceptions.c
+ 1fd383302c4cdf1cc6a804aa03b8abe8c1e5e5e9ea3450438c34dcea441e6b34
+
+
+ ../src/config/default/initialization.c
+ 43a3d0f21ead5914e46d18c31e1285403cc308a18c26e95ee99829d848e38bd6
+
+
+ ../src/config/default/interrupts.c
+ 1fd61b9edde4a66bd7d8fe7c21294439bd6433e32f296b2766d72ef847855783
+
+
+ ../src/config/default/interrupts.h
+ 9e8b7e9f6877331da7a486c6e8de42ba7caa87ffdb0ca3b903fc3c62c0ee0233
+
+
+ ../src/config/default/libc_syscalls.c
+ 88bb2e34c939601b5b7ad076556e3ee0fcedf388436b8cddb6d6fd3e9d07472f
+
+
+ ../src/config/default/peripheral/clock/plib_clock.c
+ bc8c16c339d428ea109c1b74d34e7cd1e82ad485352b62b263dbf4fee5b46d82
+
+
+ ../src/config/default/peripheral/clock/plib_clock.h
+ 59322a99314cb17c6b595d51d18769582e61189140188aa053acfdc671487f21
+
+
+ ../src/config/default/peripheral/cmcc/plib_cmcc.c
+ 3b03e762c5515130718e7694736be6c25984ff8078c84d21a3fb9eba54f68e5d
+
+
+ ../src/config/default/peripheral/cmcc/plib_cmcc.h
+ 89b940242bfa0ecdba3ac53666c5996e25fab712227d37d2d6881c8a86b5f497
+
+
+ ../src/config/default/peripheral/evsys/plib_evsys.c
+ b2e1a8004049e687fc5544133f3346f743ced50cdaf860c8e3c7f58df3cc163f
+
+
+ ../src/config/default/peripheral/evsys/plib_evsys.h
+ f7d08eb8162f271ce1db384c082586a6624e506aa7f502c64c4ab5a1aadac47d
+
+
+ ../src/config/default/peripheral/nvic/plib_nvic.c
+ 27a04bb02dc989f8ddf9d5b252e769f1d4533b21f887968b63bd71c06c0d7316
+
+
+ ../src/config/default/peripheral/nvic/plib_nvic.h
+ 81e813a093101d546799e00723cbf7245e2d18471fa51c8d130c5809cecca03e
+
+
+ ../src/config/default/peripheral/nvmctrl/plib_nvmctrl.c
+ 1a6bdac00590cbec796a13351597c695bc1d962a95641bdb573d1bf0dc38b2d8
+
+
+ ../src/config/default/peripheral/nvmctrl/plib_nvmctrl.h
+ fd7749dc74a885efd7c593394454abc74afc7cf184123f0315425a3600c26ac5
+
+
+ ../src/config/default/peripheral/port/plib_port.c
+ 589d2d648ef2b6147f7ac519986c4194148d612a9cc977ef81ad2048ec9a737c
+
+
+ ../src/config/default/peripheral/port/plib_port.h
+ e960c88b8ed75f85e9c8997353bb7de730dd73d0dd2590130b50a245047d8949
+
+
+ ../src/config/default/peripheral/sercom/usart/plib_sercom5_usart.c
+ 5558b71299b1f1fc8d085d2419cfb2cf0753b2e2516c76fa4c3883f3fe7eb2e5
+
+
+ ../src/config/default/peripheral/sercom/usart/plib_sercom5_usart.h
+ c1b506966a99e2e2c73d0a415917a028ce593d827e324d6035e5d5dbf135115f
+
+
+ ../src/config/default/peripheral/sercom/usart/plib_sercom_usart_common.h
+ f19dafabe0928d60dd83d7e19f35889f200e3fbadff09e2f42523d320acf780a
+
+
+ ../src/config/default/pin_configurations.csv
+ 16a4a6fb78bf3f21aa3966903bc0298f705b763502f94f80d8a9b5890fff9a48
+
+
+ ../src/config/default/startup_xc32.c
+ f374b97d65f92553f1b75d8c9239b8b0f8581c710f78ea47b02c7f6fa6f74c74
+
+
+ ../src/config/default/stdio/xc32_monitor.c
+ 858f8710d4287200a5ee7f3b3ad7c24f505aed9c05c16956ab0ff9f7bb162a6a
+
+
+ ../src/config/default/toolchain_specifics.h
+ 6fc0551b0fa3362678b3d7a227386fafa343140d31e4da3ad4af972e61cd0acb
+
+
+ ../src/main.c
+ d3c233d419e6304bfacbafc18cc68c0f5c26e365f23b20ea40ccfac458f664c5
+
+
+ ../src/packs/ATSAME51J20A_DFP/component/ac.h
+ 3c654199445119481841c9673fa7616d050f5c83a9dfe626287e55d077a05439
+
+
+ ../src/packs/ATSAME51J20A_DFP/component/adc.h
+ 40c635359e8eb7b5c0f457a98758c69556415279ac6e7227d20d18dc27b5d5bd
+
+
+ ../src/packs/ATSAME51J20A_DFP/component/aes.h
+ 330b0c7b3473018c47f25a557c7110222a7b0e070e01a355c8559b9844f13b16
+
+
+ ../src/packs/ATSAME51J20A_DFP/component/can.h
+ 615dbf905d4a45aa3a7803794d00661df310cde437ed94f7d5bc8e205a2d0d0c
+
+
+ ../src/packs/ATSAME51J20A_DFP/component/ccl.h
+ 23babd444ac6b2ee91f67b98d8f0f9209bab96aa57d88d0d0d16e2b50e919126
+
+
+ ../src/packs/ATSAME51J20A_DFP/component/cmcc.h
+ 4b3e61a49ccf4dfa0325e5fb6349f35230b96e27ecdc907ae3d6901155d0b0fe
+
+
+ ../src/packs/ATSAME51J20A_DFP/component/dac.h
+ 76d210acf5a15a1be9833feb465a07c3b8465595830a3c008dee79d896787973
+
+
+ ../src/packs/ATSAME51J20A_DFP/component/dmac.h
+ 4b0176f10816bff2775ccac6b1a6c7dd6b0e10c16399a84bd787b5d0c94c285d
+
+
+ ../src/packs/ATSAME51J20A_DFP/component/dsu.h
+ f29f83b0bb5829d43a29ec29e66556fc8e6dd417bf8c20022a611bab1a3c5823
+
+
+ ../src/packs/ATSAME51J20A_DFP/component/eic.h
+ 2e19b9a1f44567da7f09710746824495e0c2ea389fed92ab22460f43da5c1718
+
+
+ ../src/packs/ATSAME51J20A_DFP/component/evsys.h
+ d44a0b5b6b6787dba61ce9f02082c63efd1a36c9d9354843a2aee02697532c65
+
+
+ ../src/packs/ATSAME51J20A_DFP/component/freqm.h
+ 275513ff8cda33e2896fb114b6f9b1d2679a22756c6d212b6d1ecf620b5a3750
+
+
+ ../src/packs/ATSAME51J20A_DFP/component/fuses.h
+ 340ba40f72c13340132c5dd060ef5a7dff423b38313595364b92bbf95f12757c
+
+
+ ../src/packs/ATSAME51J20A_DFP/component/gclk.h
+ 26926e2483df5de1da579caa924a23027a51941e4fdcd070a4d333bd6f16f121
+
+
+ ../src/packs/ATSAME51J20A_DFP/component/hmatrixb.h
+ 2d469ff5c0faef3e13a5a441395babb7f94cfe556ef5a553a01e214c5bc45705
+
+
+ ../src/packs/ATSAME51J20A_DFP/component/i2s.h
+ cb1cad95694f5a301efa483741a19095cccb332aa9d773205a7d16721f4a8339
+
+
+ ../src/packs/ATSAME51J20A_DFP/component/icm.h
+ c13cc80fc05733bb2544714b8d37fb1030023fd51b325b7c85e1e434c5fd5e0d
+
+
+ ../src/packs/ATSAME51J20A_DFP/component/mclk.h
+ 44413a208e2f0f407f236cd262949ed8c9b527b8461bac4d532c5f4338e8c54a
+
+
+ ../src/packs/ATSAME51J20A_DFP/component/nvmctrl.h
+ 519bd8b81f3df727a34f3a9c81ad96eca25c6b4e7df166e25113291f50062415
+
+
+ ../src/packs/ATSAME51J20A_DFP/component/osc32kctrl.h
+ 8babf9629ac21b2cff66fc30dad2ff31f64a5b2228a1fef275e8e146d66ed85d
+
+
+ ../src/packs/ATSAME51J20A_DFP/component/oscctrl.h
+ c51b1aed31d3e7880a01e22dbff241ad3ca50930aeec25db054ed27430121251
+
+
+ ../src/packs/ATSAME51J20A_DFP/component/pac.h
+ dada7b6dc528c64369ef4ed0acbc541601b651cb4fbd8edd5b2eb86e2bd84640
+
+
+ ../src/packs/ATSAME51J20A_DFP/component/pcc.h
+ 2736f552a080e6bdfcaaf1f2a30e8ee65dc934c34c2789a7ac338e620c095070
+
+
+ ../src/packs/ATSAME51J20A_DFP/component/pdec.h
+ dbea79497d409b29fda82f081c8157d55b2d11e7337a4299dca8bde16d8143f4
+
+
+ ../src/packs/ATSAME51J20A_DFP/component/pm.h
+ 35b6594a249d8ea14fa2fe73ee4f9b1fcd73a87ae1627e27bdf99a6c0bcecdd6
+
+
+ ../src/packs/ATSAME51J20A_DFP/component/port.h
+ f1ee8cd8dcb2f3fde2a650e76b7d7f7c5f124d0b5bb2cd9defa51c5d479dcfd7
+
+
+ ../src/packs/ATSAME51J20A_DFP/component/pukcc.h
+ 02edb60314483cee7eb86e97af5eacbdb14fb68a77ec810c88742ebf123d3008
+
+
+ ../src/packs/ATSAME51J20A_DFP/component/qspi.h
+ 320c3fe9bf885a689631c05bf588b0fe00f644c72b9cb4f8e443628165926be4
+
+
+ ../src/packs/ATSAME51J20A_DFP/component/ramecc.h
+ c0e2cfc641f9b1450f4aff22d76a2e654cb196b6d1315d189db597ff39c2d893
+
+
+ ../src/packs/ATSAME51J20A_DFP/component/rstc.h
+ 425f9b775eb79abefdf1f2a09a9b2a39af45383f9a1065577ca4af580ead50c4
+
+
+ ../src/packs/ATSAME51J20A_DFP/component/rtc.h
+ 6850767b6f183fd4ff5a672c62b5b4c3b6e6b4ce66772db71457bafc7c9b6995
+
+
+ ../src/packs/ATSAME51J20A_DFP/component/sdhc.h
+ 9c5c0da9a2c74c7a560fd5218ac4054a5b66f35724eeaf5060f0daadd0dc7761
+
+
+ ../src/packs/ATSAME51J20A_DFP/component/sercom.h
+ 9cfd58850bdbe5f52b6fbc8a6b5b5e999a0dde485454e7551fb17ef1c124fa94
+
+
+ ../src/packs/ATSAME51J20A_DFP/component/supc.h
+ 411f832c5788198d4cd12258d78b67c54084b0a594bdc24a5025160b0331c36f
+
+
+ ../src/packs/ATSAME51J20A_DFP/component/tc.h
+ c94e8a55afafa40a1730a655f23eb06a6793dcb4885f40fd0c96205afac6c24f
+
+
+ ../src/packs/ATSAME51J20A_DFP/component/tcc.h
+ 32fa9a257fc55388a157eb555d265e28be86e50f5067bdb6457c31d12bc93179
+
+
+ ../src/packs/ATSAME51J20A_DFP/component/trng.h
+ 06ba2ceb1c5711e86292cea5d1905f84e9898272d2525adff359bb725e1ec3f9
+
+
+ ../src/packs/ATSAME51J20A_DFP/component/usb.h
+ 1428aee3c7e6b6c46411db4ee6371ff23c638ac2167f3c00ebfc005fff32ccfe
+
+
+ ../src/packs/ATSAME51J20A_DFP/component/wdt.h
+ 2b810e4d10c04da4fa6666404a906977754fadbb07fdd94a27c0e812399eaed7
+
+
+ ../src/packs/ATSAME51J20A_DFP/instance/ac.h
+ cf8bccadca5bd7bb22ebbb82ca6b2d0a911861a0830fc086271f5dfe3845cd6f
+
+
+ ../src/packs/ATSAME51J20A_DFP/instance/adc0.h
+ cae698d90e4c21306151dff1dfedc3ca6cf46c05bb8a6cdc5a99cb18e7de07aa
+
+
+ ../src/packs/ATSAME51J20A_DFP/instance/adc1.h
+ a40b86bca6b1a2689a49f14a6ae1002097e2c5e5b665024a54c1d35e22abd10c
+
+
+ ../src/packs/ATSAME51J20A_DFP/instance/aes.h
+ 9d63c362f34006299462514e958c7ae4eff54fa34073bffef377fc99e4daf873
+
+
+ ../src/packs/ATSAME51J20A_DFP/instance/can0.h
+ 08991dcd49141a18f5e3ccc2e8c7a93e9fda7f3872a9abf3253909c4bbd542e4
+
+
+ ../src/packs/ATSAME51J20A_DFP/instance/can1.h
+ f02bc9abf7f8c1bdc2d8f46d49b368f6108ef1f6e6703193406445f4fddd801e
+
+
+ ../src/packs/ATSAME51J20A_DFP/instance/ccl.h
+ af381c20215324c33792c1522f02df6787ebd271ffdc5b9510c6f2c25674ff22
+
+
+ ../src/packs/ATSAME51J20A_DFP/instance/cmcc.h
+ c1c3bfcd8afc805c7bd3687c01b61e36f857fae9b35f62fe32800d3a022d65d9
+
+
+ ../src/packs/ATSAME51J20A_DFP/instance/dac.h
+ 6bb0cb75ad81eb2af278be9dbaa47de0a71a2f7fede6999b7357977716a00346
+
+
+ ../src/packs/ATSAME51J20A_DFP/instance/dmac.h
+ 7f1b3b22396404b2b3b29519d18163e06d7832a55e7267ed12234b70b4bf3ac8
+
+
+ ../src/packs/ATSAME51J20A_DFP/instance/dsu.h
+ ecf9aa94c178309ee5ff34774ea02c229596fd831559c837ecb4cffa3d855ef9
+
+
+ ../src/packs/ATSAME51J20A_DFP/instance/eic.h
+ 82e4df0e59cb35e8f625507ccdfe79052cbd7e5164374e69b16ca332a92ddc32
+
+
+ ../src/packs/ATSAME51J20A_DFP/instance/evsys.h
+ d8fd9b40db458c6fd2c7c75c36950f10e91b39b4478d6cccfde4494c4c437dfb
+
+
+ ../src/packs/ATSAME51J20A_DFP/instance/freqm.h
+ 23dc3da789a0fc659987dbd7f5853d88825f823b895711c79ae90b0705510197
+
+
+ ../src/packs/ATSAME51J20A_DFP/instance/fuses.h
+ ee648d899a8e97829f6b6c6cfa7a1f9ea196b7efc448480e8fed41fd679b429e
+
+
+ ../src/packs/ATSAME51J20A_DFP/instance/gclk.h
+ a77e2d58a7958e96ed65639a352d185a3b1c305efb005ca22d2075cc575c4a09
+
+
+ ../src/packs/ATSAME51J20A_DFP/instance/hmatrix.h
+ 4c00a55527fb9f54ecc8d5fd2ac13749fbd40c4dc878c763594a3f8a3e91e123
+
+
+ ../src/packs/ATSAME51J20A_DFP/instance/i2s.h
+ cbb23bdea8726d82803acc98f6e2151a89fb3aa16c2e41964bd955b19edb5d2b
+
+
+ ../src/packs/ATSAME51J20A_DFP/instance/icm.h
+ a8707627834d0dbdfb861bb44d5789665876b0cdfa961533a62cfe957957b68f
+
+
+ ../src/packs/ATSAME51J20A_DFP/instance/mclk.h
+ fcc32aec30f621e99ef7ed0a1b11c0478d2213c30a5f99df7b210eea7402b40e
+
+
+ ../src/packs/ATSAME51J20A_DFP/instance/nvmctrl.h
+ 79f841cd85017dce864c44cec0e9b623bb777bb7953dd3d950401ae507bcdc2e
+
+
+ ../src/packs/ATSAME51J20A_DFP/instance/osc32kctrl.h
+ 39b699dcd205a789714971a4d9e44f4c596cacc1f114acbc4bc9266f0a3b89c0
+
+
+ ../src/packs/ATSAME51J20A_DFP/instance/oscctrl.h
+ 85fab1eebc94bb2f79ff54c6c0f28894d2e3b19adc661ceb4b33d201ad1047e3
+
+
+ ../src/packs/ATSAME51J20A_DFP/instance/pac.h
+ 1af48f37cf4edeeae68ae435694667606a98ed679ebca28478ea23913574826e
+
+
+ ../src/packs/ATSAME51J20A_DFP/instance/pcc.h
+ 4e67b425da6c02c6d9c1de0119434da3aa3eeffed5739aebc84421b7c1e554a9
+
+
+ ../src/packs/ATSAME51J20A_DFP/instance/pdec.h
+ 50866aab5cc4261f99750d110d343bb7c16d7db89747b0ad70a754c01da3bad8
+
+
+ ../src/packs/ATSAME51J20A_DFP/instance/pm.h
+ eefb8c1969dd3c6f68fa4e1041d8821acc7c864174a5c96bfbe35d768b8512e4
+
+
+ ../src/packs/ATSAME51J20A_DFP/instance/port.h
+ 19736dce73ce13291fa4dc24ce6f6effb7d8c59909752ce0eedd66738a3ec2e6
+
+
+ ../src/packs/ATSAME51J20A_DFP/instance/qspi.h
+ 8d25ad0cc93ecd727ea34792261d57dde7ff7ea1037c5fedc202c1b539496374
+
+
+ ../src/packs/ATSAME51J20A_DFP/instance/ramecc.h
+ b386ce590951347c4a00dae722b72aaf60352505d333d213066406ee2a19ca35
+
+
+ ../src/packs/ATSAME51J20A_DFP/instance/rstc.h
+ 7b645b3c95e85b91dcaa285937200482d69f3912ad7be3fe111b7b1c858beb5a
+
+
+ ../src/packs/ATSAME51J20A_DFP/instance/rtc.h
+ 5a08583905fa066ac8bbee3f34ec50e61b5876be0c2080a96e1ff7ed52cef866
+
+
+ ../src/packs/ATSAME51J20A_DFP/instance/sdhc0.h
+ fd795d5cc7e5390e91fae90d9faaa4c93916943a1b1b9209906958c1631a08af
+
+
+ ../src/packs/ATSAME51J20A_DFP/instance/sercom0.h
+ 56de9750a91f40e891e90ebd2a94a972b26c3869b829f2765c7e6396b27d65fc
+
+
+ ../src/packs/ATSAME51J20A_DFP/instance/sercom1.h
+ f99ef6978e99bae8edeb0f1b4dd3c01e85261c4eabcf6be3faa939aa481b2ac6
+
+
+ ../src/packs/ATSAME51J20A_DFP/instance/sercom2.h
+ 9ffc25b630889efc0a3f1b51a5107f83facd556dea4d57a6560254d1f4ec7e92
+
+
+ ../src/packs/ATSAME51J20A_DFP/instance/sercom3.h
+ 20637cdd91ed2bc7997cc056b28aa999a45853d43b41c0e12c82643711517774
+
+
+ ../src/packs/ATSAME51J20A_DFP/instance/sercom4.h
+ 435ee699b80f6b8a75097c2a0db75ff7d8edbe1f9007fb578f3efbc2deb346db
+
+
+ ../src/packs/ATSAME51J20A_DFP/instance/sercom5.h
+ 84d44cea0c3b1f4a2d530b61c438958be9f22cbac3cf0e66ac000ff6682261e1
+
+
+ ../src/packs/ATSAME51J20A_DFP/instance/sercom6.h
+ 20d49c52eaaad8d1bab8281311652fbf5d6a26e09fa90064931b9a3f186af2fb
+
+
+ ../src/packs/ATSAME51J20A_DFP/instance/sercom7.h
+ ef8dddcc272204308add1eee859b5cd96db394fcc573516f5d2c1e2f571b006f
+
+
+ ../src/packs/ATSAME51J20A_DFP/instance/supc.h
+ c712ec44db8c08f4ee1908257ff53b117d6404b13b253b4be443104e2947235e
+
+
+ ../src/packs/ATSAME51J20A_DFP/instance/tc0.h
+ b926c72c60a5209f87f32a964953e5e18ed7156a1d0714b5bfc0964a3e4db4ad
+
+
+ ../src/packs/ATSAME51J20A_DFP/instance/tc1.h
+ 59bb9638cf2d71cddc8006bcaa7b7d58ad51f3e1fb96b095345e10b9a4247e81
+
+
+ ../src/packs/ATSAME51J20A_DFP/instance/tc2.h
+ ea221f213bb9cb0b414df784fb7c6b1b77124c4dcc1f737a2029610a16c893c8
+
+
+ ../src/packs/ATSAME51J20A_DFP/instance/tc3.h
+ f7c91e3285c307ce3c6cf95908bbfe68463ee6ab8eeec972d26f2b85d6a2570e
+
+
+ ../src/packs/ATSAME51J20A_DFP/instance/tc4.h
+ 817a8896cb07727ea9ff7d533ea33c8e906676c28caf93f72090f9e1beb8aabc
+
+
+ ../src/packs/ATSAME51J20A_DFP/instance/tc5.h
+ 4e52c5644bc17730eb7177697f1ca6ec5708db4a90e349926d47317cbc938c00
+
+
+ ../src/packs/ATSAME51J20A_DFP/instance/tc6.h
+ 2bd39068e349d0347ae2e071add326502c244dd475856b02bc8d6c0a7aa9b5d5
+
+
+ ../src/packs/ATSAME51J20A_DFP/instance/tc7.h
+ 1ad42c8e1b17d3cdceddf87578a809f32424aadcef440977a93fca12d93c5f2e
+
+
+ ../src/packs/ATSAME51J20A_DFP/instance/tcc0.h
+ 35993e030cd19621a1fe05ba1fed264eaa2cd77c2476d619e24032665263cc63
+
+
+ ../src/packs/ATSAME51J20A_DFP/instance/tcc1.h
+ f2dc0e5030d27eeacf2a74ade4bb7d7b5f2db413880f69b122a6eb0919a96af8
+
+
+ ../src/packs/ATSAME51J20A_DFP/instance/tcc2.h
+ 995085f7f1bef05c3aa92aad7fae05a2ef24a49611b432ef1bc39a4b5bdecea0
+
+
+ ../src/packs/ATSAME51J20A_DFP/instance/tcc3.h
+ d853335dacd3275363c3a893f6f759b67ea9cda2d45c5e289df1d0dd04c0f312
+
+
+ ../src/packs/ATSAME51J20A_DFP/instance/tcc4.h
+ 7f78b71763838a402bf50e197d913b422cb115b421243df1287eba926ce7d812
+
+
+ ../src/packs/ATSAME51J20A_DFP/instance/trng.h
+ c06a6922011ab2c282e886c72b6051a688829776cbf0786e746ef2d28f4accb0
+
+
+ ../src/packs/ATSAME51J20A_DFP/instance/usb.h
+ a8a9affbaabaa627aea80af70261ef21c21473e895df243fa1bf21a4f0feee1b
+
+
+ ../src/packs/ATSAME51J20A_DFP/instance/wdt.h
+ 0ee35e8dce59f82a8109aa51a481e6319e5e62a72424571fc92f49caefa33964
+
+
+ ../src/packs/ATSAME51J20A_DFP/pio/same51j20a.h
+ 92a8021af75873384445867c66105c2bdce6efe22262eeba31351d0de6b2cab3
+
+
+ ../src/packs/ATSAME51J20A_DFP/same51j20a.h
+ 08cbd43a3fbb4499ba422c6888a17a7ec0b804543dc116a41f1a448ce99b8551
+
+
+ ../src/packs/CMSIS/CMSIS/Core/Include/cachel1_armv7.h
+ 6cdb5b324f2fd1bb5b2f47298ba6e6777e735d7cad3bb8d942cd36e2c6e65328
+
+
+ ../src/packs/CMSIS/CMSIS/Core/Include/cmsis_armcc.h
+ d074534d7106cec83474b3b0a897bd2553e1a8895ecbd54f4f4fb25928066eee
+
+
+ ../src/packs/CMSIS/CMSIS/Core/Include/cmsis_armclang.h
+ 11b39b96ddc1125124762b3423a77b90dd40ea5b4582a3513830245046b24311
+
+
+ ../src/packs/CMSIS/CMSIS/Core/Include/cmsis_armclang_ltm.h
+ 8621969ea669a1b230ff2125a760ef66d575c48cb45e9e457f768909abcbda46
+
+
+ ../src/packs/CMSIS/CMSIS/Core/Include/cmsis_compiler.h
+ 869640702d811c4c63abb52206715c891a93fd03be954df5ad40d378355af3d6
+
+
+ ../src/packs/CMSIS/CMSIS/Core/Include/cmsis_gcc.h
+ 3d4e265d0aa42f888385ccf073666e6ebb5ec9f834760b9da27c474e177f708d
+
+
+ ../src/packs/CMSIS/CMSIS/Core/Include/cmsis_iccarm.h
+ f28119adbc81fb0e3c957c9aebe8fb423ad93634e76ead3caa2b0818d2e123ae
+
+
+ ../src/packs/CMSIS/CMSIS/Core/Include/cmsis_version.h
+ 8cda7ac3ff6f0eb5e83c4fe613dd195151b24da54167f5c3c007e599a03f1edc
+
+
+ ../src/packs/CMSIS/CMSIS/Core/Include/core_cm4.h
+ d59a9e3ed4cf43a3c74a2e48f344d41be2b6363ef9394ea2c551052fe553a6af
+
+
+ ../src/packs/CMSIS/CMSIS/Core/Include/mpu_armv7.h
+ de1b5eb9ed566527b66dc06f4ecb6a43ab6800f7dac47e87c9cb42984dca41bb
+
+
+
\ No newline at end of file
diff --git a/IDE/MPLAB/test/keystore.c b/IDE/MPLAB/test/keystore.c
new file mode 100644
index 000000000..68422faea
--- /dev/null
+++ b/IDE/MPLAB/test/keystore.c
@@ -0,0 +1,96 @@
+/* Keystore file for wolfBoot, automatically generated. Do not edit. */
+/*
+ * This file has been generated and contains the public keys
+ * used by wolfBoot to verify the updates.
+ */
+#include
+#include "wolfboot/wolfboot.h"
+#include "keystore.h"
+
+
+#warning "*** * THIS IS THE EXAMPLE KEYSTORE.C FILE * ***"
+#warning " DO NOT USE IN PRODUCTION "
+#warning "This file is part of the open source distribution of wolfBoot."
+#warning "Replace with a new key created using keytools."
+#warning " SECURE BOOT ENABLED JUST FOR TESTING "
+
+
+
+#ifdef WOLFBOOT_NO_SIGN
+ #define NUM_PUBKEYS 0
+#else
+
+#if !defined(KEYSTORE_ANY) && (KEYSTORE_PUBKEY_SIZE != KEYSTORE_PUBKEY_SIZE_ECC384)
+ #error Key algorithm mismatch. Remove old keys via 'make keysclean'
+#else
+
+#if defined(__APPLE__) && defined(__MACH__)
+#define KEYSTORE_SECTION __attribute__((section ("__KEYSTORE,__keystore")))
+#elif defined(__CCRX__)
+#define KEYSTORE_SECTION
+#else
+#define KEYSTORE_SECTION __attribute__((section (".keystore")))
+#endif
+
+#define NUM_PUBKEYS 1
+const KEYSTORE_SECTION struct keystore_slot PubKeys[NUM_PUBKEYS] = {
+
+ /* Key associated to file 'wolfboot_signing_private_key.der' */
+ {
+ .slot_id = 0,
+ .key_type = AUTH_KEY_ECC384,
+ .part_id_mask = 0xFFFFFFFF,
+ .pubkey_size = KEYSTORE_PUBKEY_SIZE_ECC384,
+ .pubkey = {
+
+ 0x24, 0x46, 0xf8, 0x0e, 0x33, 0xed, 0xdd, 0x5b,
+ 0x3b, 0x01, 0xea, 0xcf, 0x89, 0x2e, 0x56, 0xe8,
+ 0x41, 0x73, 0xc8, 0x2f, 0xe1, 0x57, 0x68, 0x51,
+ 0x4f, 0x0d, 0xa6, 0x86, 0xa1, 0x92, 0xa2, 0x92,
+ 0xdf, 0xac, 0x31, 0x30, 0xa7, 0x15, 0xb7, 0x99,
+ 0xd7, 0x05, 0x2e, 0x20, 0x87, 0x1a, 0x19, 0x93,
+ 0xaa, 0x2f, 0xcb, 0xd6, 0x23, 0x68, 0xda, 0x00,
+ 0x1b, 0x4e, 0x4f, 0x63, 0x95, 0x80, 0xb7, 0x56,
+ 0xde, 0xfc, 0x8b, 0x73, 0x8d, 0xd1, 0x81, 0xe4,
+ 0x53, 0xfc, 0x61, 0x88, 0xfa, 0xef, 0x2b, 0xcb,
+ 0x62, 0x63, 0x8d, 0xb1, 0x98, 0x06, 0x3d, 0x29,
+ 0xe1, 0xb5, 0xe9, 0xa9, 0x07, 0xa2, 0xaf, 0x48
+ },
+ },
+
+
+};
+
+int keystore_num_pubkeys(void)
+{
+ return NUM_PUBKEYS;
+}
+
+uint8_t *keystore_get_buffer(int id)
+{
+ if (id >= keystore_num_pubkeys())
+ return (uint8_t *)0;
+ return (uint8_t *)PubKeys[id].pubkey;
+}
+
+int keystore_get_size(int id)
+{
+ if (id >= keystore_num_pubkeys())
+ return -1;
+ return (int)PubKeys[id].pubkey_size;
+}
+
+uint32_t keystore_get_mask(int id)
+{
+ if (id >= keystore_num_pubkeys())
+ return -1;
+ return (int)PubKeys[id].part_id_mask;
+}
+
+uint32_t keystore_get_key_type(int id)
+{
+ return PubKeys[id].key_type;
+}
+
+#endif /* Keystore public key size check */
+#endif /* WOLFBOOT_NO_SIGN */
diff --git a/config/examples/same51-dualbank.config b/config/examples/same51-dualbank.config
new file mode 100644
index 000000000..05a903f99
--- /dev/null
+++ b/config/examples/same51-dualbank.config
@@ -0,0 +1,14 @@
+ARCH?=ARM
+TARGET?=same51
+SIGN?=ECC256
+HASH?=SHA256
+VTOR?=1
+SPMATH?=1
+ARCH_FLASH_OFFSET=0x00000000
+WOLFBOOT_PARTITION_SIZE?=0x20000
+WOLFBOOT_SECTOR_SIZE?=0x8000
+WOLFBOOT_PARTITION_BOOT_ADDRESS?=0x08000
+WOLFBOOT_PARTITION_UPDATE_ADDRESS?=0x088000
+WOLFBOOT_PARTITION_SWAP_ADDRESS?=0x200000
+DEBUG=0
+DUALBANK_SWAP=1
diff --git a/config/examples/same51.config b/config/examples/same51.config
new file mode 100644
index 000000000..ce551a2ec
--- /dev/null
+++ b/config/examples/same51.config
@@ -0,0 +1,12 @@
+ARCH?=ARM
+TARGET?=same51
+SIGN?=ECC256
+HASH?=SHA256
+VTOR?=1
+SPMATH?=1
+ARCH_FLASH_OFFSET=0x00000000
+WOLFBOOT_PARTITION_SIZE?=0x20000
+WOLFBOOT_SECTOR_SIZE?=0x8000
+WOLFBOOT_PARTITION_BOOT_ADDRESS?=0x8000
+WOLFBOOT_PARTITION_UPDATE_ADDRESS?=0x80000
+WOLFBOOT_PARTITION_SWAP_ADDRESS?=0xF8000
diff --git a/docs/Targets.md b/docs/Targets.md
index 0f2bc0b24..62db578a8 100644
--- a/docs/Targets.md
+++ b/docs/Targets.md
@@ -6,6 +6,7 @@ This README describes configuration of supported targets.
* [Cortex-A53 / Raspberry PI 3](#cortex-a53--raspberry-pi-3-experimental)
* [Cypress PSoC-6](#cypress-psoc-6)
+* [Microchip SAME51](#microchip-same51)
* [Nordic nRF52840](#nordic-nrf52840)
* [NXP LPC54xxx](#nxp-lpc54xxx)
* [NXP iMX-RT](#nxp-imx-rt)
@@ -1133,6 +1134,60 @@ the monitor command sequence below:
(gdb) mon psoc6 reset_halt
```
+## Microchip SAME51
+
+SAME51 is a Cortex-M4 microcontroller with a dual-bank, 1MB flash memory divided
+in blocks of 8KB.
+
+### Toolchain
+
+Although it is possible to build wolfBoot with xc32 compilers,
+we recommend to use gcc for building wolfBoot for best results in terms of
+footprint and performance, due to some assembly optimizations in wolfCrypt, being
+available for gcc only. There is no limitation however on the toolchain used
+to compile the application firmware or RTOS as the two binary files are independent.
+
+
+### Building using gcc/makefile
+
+The following configurations have been tested using ATSAME51J20A development kit.
+
+ * `config/examples/same51.config` - example configuration with swap partition (dual-bank disabled)
+ * `config/examples/same51-dualbank.config` - configuration with two banks (no swap partition)
+
+To build wolfBoot, copy the selected configuration into `.config` and run `make`.
+
+
+### Building using MPLAB IDE
+
+Example projects are provided to build wolfBoot and a test application using MPLAB.
+These projects are configured to build both stages using xc32-gcc, and have been
+tested with MpLab IDE v. 6.20.
+
+The example application can be used to update the firmware over USB.
+
+More details about building the example projects can be found in the
+[IDE/MPLAB](/IDE/MPLAB) directory in this repository.
+
+
+### Uploading the bootloader and the firmware image
+
+Secure boot and updates have been tested on the SAM E51 Curiosity Nano evaluation
+board, connecting to a Pro debugger to the D0/D1 pads.
+
+The two firmware images can be uploaded separately using the JLinkExe utility:
+
+```
+$ JLinkExe -if swd -speed 1000 -Device ATSAME51J20
+
+J-Link> loadbin wolfboot.bin 0x0
+
+J-Link> loadbin test-app/image_v1_signed.bin 0x8000
+```
+
+The above is assuming the default configuration where the BOOT partition starts at
+address `0x8000`.
+
## NXP iMX-RT
diff --git a/hal/same51.c b/hal/same51.c
new file mode 100644
index 000000000..a04f38b95
--- /dev/null
+++ b/hal/same51.c
@@ -0,0 +1,398 @@
+/* same51.c
+ *
+ * Copyright (C) 2024 wolfSSL Inc.
+ *
+ * This file is part of wolfBoot.
+ *
+ * wolfBoot is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * wolfBoot is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA
+ */
+
+#include
+#include "image.h"
+#include "hal.h"
+
+/*
+ * Clock settings for cpu same51 @ 120MHz
+ */
+#define CPU_FREQ (120000000)
+
+
+/*
+ * Flash settings for same51
+ */
+#define FLASH_SIZE (1024 * 1024)
+#define FLASH_PAGESIZE 512
+#define FLASH_N_PAGES 4096
+
+
+/*
+ * Oscillator controller
+ */
+#define OSCCTRL_BASE (0x40001000U)
+
+/* Map only DPLL0 */
+#define OSCCTRL_DPLL0CTRLA *((volatile uint32_t *)(OSCCTRL_BASE + 0x30))
+#define OSCCTRL_DPLL0RATIO *((volatile uint32_t *)(OSCCTRL_BASE + 0x34))
+#define OSCCTRL_DPLL0CTRLB *((volatile uint32_t *)(OSCCTRL_BASE + 0x38))
+#define OSCCTRL_DPLL0SYNCBUSY *((volatile uint32_t *)(OSCCTRL_BASE + 0x3c))
+#define OSCCTRL_DPLL0STATUS *((volatile uint32_t *)(OSCCTRL_BASE + 0x40))
+
+#define DPLL0CTRLA_ENABLE (1u << 1)
+
+#define DPLL0CTRLB_FILTER_MASK (0x0fu << 0)
+#define DPLL0CTRLB_REFCLK_MASK (0x07u << 5)
+#define DPLL0CTRLB_LTIME_MASK (0x07u << 8)
+
+#define DPLL0RATIO_LDR_MASK (0x0fffu << 0)
+#define DPLL0RATIO_LDRFRAC_MASK (0xfu << 16)
+
+#define DPLL0SYNCBUSY_ENABLE (1u << 1)
+#define DPLL0SYNCBUSY_RATIO (1u << 2)
+
+#define DPLL0STATUS_LOCK (1u << 0)
+#define DPLL0STATUS_CLKRDY (1u << 1)
+
+/*
+ * 32KHz Oscillator controller
+ */
+#define OSC32KCTRL_BASE (0x4001400U)
+#define OSC32KCTRL_RTCCTRL *((volatile uint32_t *)(OSC32KCTRL_BASE + 0x10))
+#define RTCCTRL_RTCSEL_MASK (0x03)
+
+/*
+ * Generic clock generator
+ */
+#define GCLK_BASE (0x40001C00)
+#define GCLK_CTRLA *((volatile uint32_t *)(GCLK_BASE + 0x00))
+#define GCLK_SYNCBUSY *((volatile uint32_t *)(GCLK_BASE + 0x04))
+#define CTRLA_SWRST (1 << 0)
+#define SYNCBUSY_SWRST (1 << 0)
+#define SYNCBUSY_GENCTRL(x) (1 << (2 + x))
+#define GCLK_IS_BUSY(x) ((GCLK_SYNCBUSY & (SYNCBUSY_GENCTRL(x))) != 0)
+
+/* Array of 12 GCLK_GENCTRL[x] 32-bit registers */
+#define GCLK_GENCTRL ((volatile uint32_t *)(GCLK_BASE + 0x20))
+#define GENCTRLx_SRC_DFLL 0x06u
+#define GENCTRLx_SRC_PLL0 0x07u
+#define GENCTRLx_GENEN (1u << 8)
+#define GENCTRLx_DIVSHIFT (16)
+#define GENCTRLx_SRC_MASK (0x0Fu)
+#define GENCTRLx_DIV_MASK (0xFFFFu << 16)
+
+/* Array of 48 GCLK_PCHCTRLx */
+#define GCLK_PCHCTRL ((volatile uint32_t *)(GCLK_BASE + 0x80))
+#define PCHCTRLx_CHEN (1u << 6)
+
+/* Main clock */
+#define MCLK_BASE (0x40000800)
+#define MCLK_CPUDIV *((volatile uint8_t *)(MCLK_BASE + 0x05))
+#define MCLK_INTFLAG *((volatile uint8_t *)(MCLK_BASE + 0x03))
+#define MCLK_AHBMASK *((volatile uint32_t *)(MCLK_BASE + 0x10))
+#define MCLK_APBAMASK *((volatile uint32_t *)(MCLK_BASE + 0x14))
+#define MCLK_APBBMASK *((volatile uint32_t *)(MCLK_BASE + 0x18))
+#define MCLK_APBCMASK *((volatile uint32_t *)(MCLK_BASE + 0x1c))
+#define MCLK_APBDMASK *((volatile uint32_t *)(MCLK_BASE + 0x20))
+
+
+#define CKRDY (1u << 0)
+
+/*
+ * Watchdog controller
+ */
+#define WDT_CTRL *((volatile uint8_t *)(0x40002000))
+#define WDT_EN (1u << 1)
+
+/* Peripheral access control
+ *
+ */
+#define PAC_BASE (0x41000000)
+#define PAC_WRCTRL *((volatile uint32_t *)(PAC_BASE))
+#define PAC_WRKEY_SET (2 << 16U)
+#define PAC_WRKEY_CLEAR (1 << 16U)
+#define PAC_PERID_NVMCTL ((32 * 1) + 2)
+
+#define PAC_WR
+
+/*
+ * NVM controller */
+
+#define NVMCTRL_BASE (0x41004000)
+#define NVMCTRLA *((volatile uint16_t *)(NVMCTRL_BASE))
+#define NVMCTRLB *((volatile uint32_t *)(NVMCTRL_BASE + 0x04))
+#define NVMCTRL_INTFLAG *((volatile uint16_t *)(NVMCTRL_BASE + 0x10))
+#define NVMCTRL_STATUS *((volatile uint16_t *)(NVMCTRL_BASE + 0x12))
+#define NVMCTRL_ADDR *((volatile uint32_t *)(NVMCTRL_BASE + 0x14))
+#define NVMCTRL_SEESTAT *((volatile uint32_t *)(NVMCTRL_BASE + 0x2c))
+
+
+/* Extra NVMCTRL options (unused: leaving default values) */
+#define NVMCTRLA_DISABLE_CACHES (0xC000)
+#define NVMCTRLA_RWS_MASK (0x0F00)
+#define NVMCTRLA_RWS_SHIFT 8
+#define NVMCTRLA_AUTOWS (1 << 2)
+
+#define NVMCMD_KEY ((0xA5) << 8)
+#define NVMCMD_ERASE_PAGE (0x00)
+#define NVMCMD_ERASE_BLOCK (0x01)
+#define NVMCMD_WP (0x03)
+#define NVMCMD_WQW (0x04)
+#define NVMCMD_PBC (0x15)
+#define NVMCMD_SSB (0x16) /* Set secure bit */
+#define NVMCMD_BKSWRST (0x17) /* Bank swap + reset */
+#define NVMCTRL_INTFLAG_CMD_DONE (1)
+
+#define NVMSTATUS_AFIRST (1 << 4)
+
+volatile uint32_t psize, bsize;
+
+/* Clock initialization */
+static void clock_init(void)
+{
+ uint32_t reg;
+
+ /* Prepare 32K oscillator */
+ OSC32KCTRL_RTCCTRL &= ~RTCCTRL_RTCSEL_MASK;
+
+ /* Set Generic Clock generator #2 */
+ reg = GCLK_GENCTRL[2];
+
+ /* - Clear clock and source selection */
+ reg &= ~(GENCTRLx_DIV_MASK | GENCTRLx_SRC_MASK);
+
+ /* - Select DFLL48M oscillator output as source
+ * - Set divisor to 48
+ * - Enable the generator
+ */
+ GCLK_GENCTRL[2] = reg | GENCTRLx_SRC_DFLL | (48u << GENCTRLx_DIVSHIFT) |
+ GENCTRLx_GENEN;
+
+ while(GCLK_IS_BUSY(2))
+ ;
+
+ /* Connect peripheral '1' (FDPLL0) to clock generator '2' and enable */
+ reg = GCLK_PCHCTRL[1] & (~ 0x0F);
+ GCLK_PCHCTRL[1] = reg | 0x02 | PCHCTRLx_CHEN;
+
+ /* Wait until enabled */
+ while ((GCLK_PCHCTRL[1] & PCHCTRLx_CHEN) == 0)
+ ;
+
+ /* Reset PLL parameters */
+ OSCCTRL_DPLL0CTRLB = 0;
+
+ /* Set PLL ratio LDR */
+ OSCCTRL_DPLL0RATIO = (120 - 1);
+
+ /* Wait until ratio has been set */
+ while ((OSCCTRL_DPLL0SYNCBUSY & DPLL0SYNCBUSY_RATIO) != 0)
+ ;
+
+ /* Enable PLL */
+ OSCCTRL_DPLL0CTRLA = DPLL0CTRLA_ENABLE;
+
+ /* Wait until the PLL is enabled */
+ while ((OSCCTRL_DPLL0SYNCBUSY & DPLL0SYNCBUSY_ENABLE) != 0)
+ ;
+
+ /* Wait for final lock + clock ready */
+ while ((OSCCTRL_DPLL0STATUS & (DPLL0STATUS_LOCK | DPLL0STATUS_CLKRDY)) !=
+ (DPLL0STATUS_LOCK | DPLL0STATUS_CLKRDY) )
+ ;
+
+ /* Set main clock divisor */
+ MCLK_CPUDIV = 0x01u;
+
+ /* Wait until ready */
+ while ((MCLK_INTFLAG & CKRDY) == 0)
+ ;
+
+ /* generic clock generator #0: set source to FDPLL200M0, div 1 and enable */
+ reg = GCLK_GENCTRL[0];
+ reg &= ~(GENCTRLx_SRC_MASK | GENCTRLx_DIV_MASK);
+ GCLK_GENCTRL[0] = reg | GENCTRLx_SRC_PLL0 | (1 << GENCTRLx_DIVSHIFT) |
+ GENCTRLx_GENEN;
+ while (GCLK_IS_BUSY(0))
+ ;
+
+ /* generic clock generator #1: set source to FDPLL200M0, div 2 and enable */
+ reg = GCLK_GENCTRL[1];
+ reg &= ~(GENCTRLx_SRC_MASK | GENCTRLx_DIV_MASK);
+ GCLK_GENCTRL[1] = reg | GENCTRLx_SRC_PLL0 | (2 << GENCTRLx_DIVSHIFT) |
+ GENCTRLx_GENEN;
+ while (GCLK_IS_BUSY(1))
+ ;
+
+ /* select clock generator for EIC */
+ reg = GCLK_PCHCTRL[4] & (~0x0F);
+ GCLK_PCHCTRL[4] = reg | 0x01 | PCHCTRLx_CHEN;
+
+ /* Wait until enabled */
+ while ((GCLK_PCHCTRL[4] & PCHCTRLx_CHEN) == 0)
+ ;
+
+ /* select clock generator for SERCOM5_CORE */
+ reg = GCLK_PCHCTRL[35] & (~0x0F);
+ GCLK_PCHCTRL[35] = reg | 0x01 | PCHCTRLx_CHEN;
+
+ /* wait until enabled */
+ while ((GCLK_PCHCTRL[35] & PCHCTRLx_CHEN) == 0)
+ ;
+
+}
+
+
+#ifdef __WOLFBOOT
+#ifdef DUALBANK_SWAP
+#define BANKA_BASE 0x00000000
+#define BANKB_BASE 0x00080000
+
+#include
+
+static void RAMFUNCTION fork_bootloader(void)
+{
+ uint32_t r;
+ uint32_t len = (uint32_t)(WOLFBOOT_PARTITION_BOOT_ADDRESS - BANKA_BASE);
+ if (memcmp((void *)BANKA_BASE, (void *)BANKB_BASE, len) == 0)
+ return;
+ hal_flash_unlock();
+ hal_flash_erase(BANKB_BASE, len);
+ for (r = 0; r < len; r += WOLFBOOT_SECTOR_SIZE) {
+ hal_flash_write(BANKB_BASE + r, (void *)(BANKA_BASE + r), WOLFBOOT_SECTOR_SIZE);
+ }
+ hal_flash_lock();
+}
+#endif /* DUALBANK_SWAP */
+
+void hal_init(void)
+{
+ /* Turn off watchdog */
+ WDT_CTRL &= (~WDT_EN);
+ /* Run the bootloader with interrupts off */
+ __asm__ volatile ("cpsid i");
+
+ /* Initialize clock */
+ clock_init();
+
+ /* enable all the AHB clocks */
+ MCLK_AHBMASK = 0xffffffU;
+
+ /* Enable flash memory controller via APBB */
+ MCLK_APBBMASK |= (1 << 2);
+
+ /* enable all the APBA clocks */
+ MCLK_APBAMASK = 0x7ffU;
+
+ /* enable all the APBD clocks */
+ MCLK_APBDMASK = 0x2U;
+
+#ifdef DUALBANK_SWAP
+ fork_bootloader();
+#endif
+}
+
+void RAMFUNCTION hal_flash_dualbank_swap(void)
+{
+ hal_flash_unlock();
+ NVMCTRLB = NVMCMD_BKSWRST | NVMCMD_KEY;
+
+ /* Next loop should never be reached: system is restarted */
+ while(!(NVMCTRL_INTFLAG & NVMCTRL_INTFLAG_CMD_DONE))
+ ;
+ while( 1 )
+ ;
+}
+
+
+void RAMFUNCTION hal_prepare_boot(void)
+{
+ /* Reset clock controller */
+ GCLK_CTRLA |= CTRLA_SWRST;
+
+ /* Wait until reset is complete */
+ while ((GCLK_SYNCBUSY & SYNCBUSY_SWRST) != 0)
+ ;
+
+ /* Disable PLL */
+ OSCCTRL_DPLL0CTRLA = 0;
+ /* Wait until the PLL is enabled */
+ while ((OSCCTRL_DPLL0SYNCBUSY & DPLL0SYNCBUSY_ENABLE) != 0)
+ ;
+
+ /* Clear PLL options */
+ OSCCTRL_DPLL0CTRLB = 0;
+}
+
+#endif /* __WOLFBOOT */
+
+int RAMFUNCTION hal_flash_write(uint32_t address, const uint8_t *data, int len)
+{
+ int i = 0;
+ uint32_t *src, *dst;
+
+ if (len <= 0)
+ return 0;
+
+ /* Clear page buffer */
+ NVMCTRLB = (NVMCMD_PBC | NVMCMD_KEY);
+ while (i < len) {
+ if ((len - i > 3) && ((((address + i) & 0x03) == 0) && ((((uint32_t)data) + i) & 0x03) == 0)) {
+ dst = (uint32_t *)address;
+ src = (uint32_t *)data;
+ dst[i >> 2] = src[i >> 2];
+ i+=4;
+ } else {
+ uint32_t val;
+ uint8_t *vbytes = (uint8_t *)(&val);
+ uint32_t off = (address % 4);
+ dst = (uint32_t *)(address - off);
+ uint32_t dst_idx = (i + off) >> 2;
+ val = dst[dst_idx];
+ while (off < 4) {
+ if (i < len)
+ vbytes[off++] = data[i++];
+ else
+ off++;
+ }
+ dst[dst_idx] = val;
+ }
+ if ((i == len) || ((i % 16)== 0))
+ NVMCTRLB = (NVMCMD_WQW | NVMCMD_KEY);
+ }
+ return 0;
+}
+
+void RAMFUNCTION hal_flash_unlock(void)
+{
+ PAC_WRCTRL = PAC_WRKEY_CLEAR | PAC_PERID_NVMCTL;
+}
+
+void RAMFUNCTION hal_flash_lock(void)
+{
+ PAC_WRCTRL = PAC_WRKEY_SET | PAC_PERID_NVMCTL;
+}
+
+int RAMFUNCTION hal_flash_erase(uint32_t address, int len)
+{
+ while (len > 0) {
+ NVMCTRL_ADDR = (address);
+ NVMCTRLB = NVMCMD_ERASE_BLOCK | NVMCMD_KEY;
+ while(!(NVMCTRL_INTFLAG & NVMCTRL_INTFLAG_CMD_DONE))
+ ;
+ len -= WOLFBOOT_SECTOR_SIZE;
+ }
+ return 0;
+}
+
+
diff --git a/hal/same51.ld b/hal/same51.ld
new file mode 100644
index 000000000..6e929cf94
--- /dev/null
+++ b/hal/same51.ld
@@ -0,0 +1,52 @@
+MEMORY
+{
+ FLASH (rx) : ORIGIN = 0x00000000, LENGTH = 0x20000
+ RAM (rwx) : ORIGIN = 0x20000000, LENGTH = 0x8000
+}
+
+SECTIONS
+{
+ .text :
+ {
+ _start_text = .;
+ KEEP(*(.isr_vector))
+ *(.text*)
+ *(.rodata*)
+ *(.init*)
+ *(.fini*)
+ . = ALIGN(4);
+ _end_text = .;
+ } > FLASH
+
+ .edidx :
+ {
+ . = ALIGN(4);
+ *(.ARM.exidx*)
+ } > FLASH
+
+ _stored_data = .;
+
+ .data : AT (_stored_data)
+ {
+ _start_data = .;
+ KEEP(*(.data.wolfboot_version*))
+ KEEP(*(.data*))
+ . = ALIGN(4);
+ _end_data = .;
+ } > RAM
+
+ .bss (NOLOAD) :
+ {
+ _start_bss = .;
+ __bss_start__ = .;
+ *(.bss*)
+ *(COMMON)
+ . = ALIGN(4);
+ _end_bss = .;
+ __bss_end__ = .;
+ _end = .;
+ } > RAM
+ . = ALIGN(4);
+}
+
+END_STACK = ORIGIN(RAM) + LENGTH(RAM);
diff --git a/include/MPLAB/target.h b/include/MPLAB/target.h
new file mode 100644
index 000000000..6a168d8ed
--- /dev/null
+++ b/include/MPLAB/target.h
@@ -0,0 +1,100 @@
+/* target.h
+ *
+ * User configurable build-time options for bootloader and application offsets
+ *
+ * target.h is automatically generated using the template in target.h.in by running
+ * "make config".
+ *
+ * Copyright (C) 2021 wolfSSL Inc.
+ *
+ * This file is part of wolfBoot.
+ *
+ * wolfBoot is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * wolfBoot is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA
+ */
+
+#ifndef H_TARGETS_TARGET_
+#define H_TARGETS_TARGET_
+
+
+#ifndef WOLFBOOT_NO_PARTITIONS
+# define WOLFBOOT_FIXED_PARTITIONS
+#endif
+
+#define WOLFBOOT_SECTOR_SIZE 0x8000
+
+#ifdef WOLFBOOT_FIXED_PARTITIONS
+
+#ifdef ARCH_SIM
+ #include
+ /* use runtime ram base for simulator */
+ extern uint8_t *sim_ram_base;
+ #undef ARCH_FLASH_OFFSET
+ #define ARCH_FLASH_OFFSET ((size_t)sim_ram_base)
+ #define WOLFBOOT_PART_USE_ARCH_OFFSET
+#endif
+
+#ifdef PULL_LINKER_DEFINES
+ #include
+
+ /* linker script variables */
+ extern const uint32_t _wolfboot_partition_boot_address[];
+ extern const uint32_t _wolfboot_partition_size[];
+ extern const uint32_t _wolfboot_partition_update_address[];
+ extern const uint32_t _wolfboot_partition_swap_address[];
+
+ /* create plain integers from linker script variables */
+ static const uint32_t WOLFBOOT_PARTITION_BOOT_ADDRESS = (uint32_t)_wolfboot_partition_boot_address;
+ static const uint32_t WOLFBOOT_PARTITION_SIZE = (uint32_t)_wolfboot_partition_size;
+ static const uint32_t WOLFBOOT_PARTITION_UPDATE_ADDRESS = (uint32_t)_wolfboot_partition_update_address;
+ static const uint32_t WOLFBOOT_PARTITION_SWAP_ADDRESS = (uint32_t)_wolfboot_partition_swap_address;
+#else
+ #if defined(WOLFBOOT_PART_USE_ARCH_OFFSET)
+ #if !defined(EXT_FLASH) || (defined(EXT_FLASH) && !defined(PART_BOOT_EXT))
+ #define WOLFBOOT_PARTITION_BOOT_ADDRESS (ARCH_FLASH_OFFSET + 0x08000)
+ #endif
+ #if !defined(EXT_FLASH) || (defined(EXT_FLASH) && !defined(PART_UPDATE_EXT))
+ #define WOLFBOOT_PARTITION_UPDATE_ADDRESS (ARCH_FLASH_OFFSET + 0x088000)
+ #endif
+ #if !defined(EXT_FLASH) || (defined(EXT_FLASH) && !defined(PART_SWAP_EXT))
+ #define WOLFBOOT_PARTITION_SWAP_ADDRESS (ARCH_FLASH_OFFSET + 0x200000)
+ #endif
+ #endif
+
+ /* use values provided on input template parsing */
+ #ifndef WOLFBOOT_PARTITION_BOOT_ADDRESS
+ #define WOLFBOOT_PARTITION_BOOT_ADDRESS 0x08000
+ #endif
+ #ifndef WOLFBOOT_PARTITION_UPDATE_ADDRESS
+ #define WOLFBOOT_PARTITION_UPDATE_ADDRESS 0x088000
+ #endif
+ #ifndef WOLFBOOT_PARTITION_SWAP_ADDRESS
+ #define WOLFBOOT_PARTITION_SWAP_ADDRESS 0x200000
+ #endif
+ #ifndef WOLFBOOT_PARTITION_SIZE
+ #define WOLFBOOT_PARTITION_SIZE 0x20000
+ #endif
+#endif
+
+#define WOLFBOOT_DTS_BOOT_ADDRESS
+#define WOLFBOOT_DTS_UPDATE_ADDRESS
+
+#endif /* WOLFBOOT_FIXED_PARTITIONS */
+
+/* Load address in RAM for staged OS (update_ram only) */
+#define WOLFBOOT_LOAD_ADDRESS
+#define WOLFBOOT_LOAD_DTS_ADDRESS
+
+
+#endif /* !H_TARGETS_TARGET_ */
diff --git a/src/string.c b/src/string.c
index 3401ebc4e..e3d070238 100644
--- a/src/string.c
+++ b/src/string.c
@@ -48,7 +48,8 @@ size_t strlen(const char *s); /* forward declaration */
/* allow using built-in libc if WOLFBOOT_USE_STDLIBC is defined */
#ifndef WOLFBOOT_USE_STDLIBC
#if !(defined(BUILD_LOADER_STAGE1) && defined(ARCH_PPC)) || \
- (defined(PRINTF_ENABLED) && defined(DEBUG_UART))
+ (defined(PRINTF_ENABLED) && defined(DEBUG_UART)) \
+ || defined(TARGET_same51)
int islower(int c)
{
diff --git a/test-app/app_same51.c b/test-app/app_same51.c
new file mode 100644
index 000000000..84da6ee16
--- /dev/null
+++ b/test-app/app_same51.c
@@ -0,0 +1,44 @@
+/* same51.c
+ *
+ * Copyright (C) 2024 wolfSSL Inc.
+ *
+ * This file is part of wolfBoot.
+ *
+ * wolfBoot is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * wolfBoot is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA
+ */
+
+#include
+#include
+#include
+#include "hal.h"
+#include "wolfboot/wolfboot.h"
+
+#define PORT_BASE 0x41008000
+#define GPIOA_BASE PORT_BASE
+#define GPIOA_DIR *((volatile uint32_t *)(GPIOA_BASE + 0x00))
+#define GPIOA_OUT *((volatile uint32_t *)(GPIOA_BASE + 0x10))
+#define GPIOA_WRCONFIG *((volatile uint32_t *)(GPIOA_BASE + 0x28))
+
+#define WRCONFIG_INEN (1 << 1)
+#define WRCONFIG_PULLEN (1 << 2)
+
+void main(void) {
+ GPIOA_WRCONFIG &= ~(WRCONFIG_PULLEN | WRCONFIG_INEN);
+ GPIOA_DIR |= (1 << 2);
+ GPIOA_OUT |= (1 << 2);
+ asm volatile ("cpsie i");
+ while(1)
+ asm volatile("WFI");
+}