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"); +}