diff --git a/README.md b/README.md index fa3b054..08b8f58 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,8 @@ MCUboot bootloader porting for Arduino [Mbed OS](https://os.mbed.com/docs/mbed-o The following boards are supported: * [Portenta H7](https://store.arduino.cc/products/portenta-h7) * [Portenta H7 Lite](https://store.arduino.cc/products/portenta-h7-lite) - * [Portenta H7 Lite Connected]((https://store.arduino.cc/products/portenta-h7-lite)) + * [Portenta H7 Lite Connected](https://store.arduino.cc/products/portenta-h7-lite) + * [Nicla Vision](https://store.arduino.cc/products/nicla-vision) ## :grey_question: What MCUboot provides secure boot for 32-bit microcontrollers. For a detailed description on what MCUboot does and how it works please read the [official documentaion](https://docs.mcuboot.com/). @@ -112,7 +113,7 @@ The following command will setup the mbed environment and clone the needed repos mbed config root . && mbed deploy mbed compile -m PORTENTA_H7_M7 -t GCC_ARM --profile=release --profile mbed-os/tools/profiles/extensions/lto.json ``` -Additional flags are needed for [Lite](generate_rel.sh#L24) and [Lite Connected](generate_rel.sh#L35) boards. +Additional flags are needed for [Lite](generate_rel.sh#L24), [Lite Connected](generate_rel.sh#L35) and [Nicla Vision](generate_rel.sh#L46) boards. ### Debug @@ -121,7 +122,7 @@ Additional flags are needed for [Lite](generate_rel.sh#L24) and [Lite Connected] - MCUboot idle: The board green LED will fade-in fade-out 2. Serial - - MCUboot debug prints are disabled by default. They can be enabled putting `BT_SEL` (`PI8`) pin `HIGH` or calling `MCUboot::bootDebug(1);` in your Sketch. + - MCUboot debug prints are disabled by default. They can be enabled putting `BT_SEL` (`PI8`) pin `HIGH` if available or calling `MCUboot::bootDebug(1);` in your Sketch. ## :mag_right: Other resources diff --git a/app/board.h b/app/board.h index c7e14f4..c2520c6 100644 --- a/app/board.h +++ b/app/board.h @@ -63,76 +63,148 @@ #define BOARD_EXTCLOCK 25 #endif -#define BOARD_GREEN_LED PK_6 -#define BOARD_RED_LED PK_5 -#define BOARD_BLUE_LED PK_7 +#if BOARD_HAS_VIDEO + #define BOARD_VIDEO_ENABLE PJ_2 + #define BOARD_VIDEO_RESET PJ_3 +#endif -#define BOARD_BOOT_SEL PI_8 -#define BOARD_USB_RESET PJ_4 +#if defined TARGET_PORTENTA_H7_M7 + #define BOARD_GREEN_LED PK_6 + #define BOARD_RED_LED PK_5 + #define BOARD_BLUE_LED PK_7 + + #define BOARD_USB_RESET PJ_4 + #define BOARD_BOOT_SEL PI_8 + + #define BOARD_I2C_SCL PB_6 + #define BOARD_I2C_SDA PB_7 + + #define BOARD_USBD_VID 0x2341 + #define BOARD_USBD_PID 0x035B + + #define BOARD_USBD_STRING "Portenta H7 MCUboot" + + #define BOARD_QSPI_SO0 PD_11 + #define BOARD_QSPI_SO1 PD_12 + #define BOARD_QSPI_SO2 PF_7 + #define BOARD_QSPI_SO3 PD_13 + #define BOARD_QSPI_SCK PF_10 + #define BOARD_QSPI_CS PG_6 + + #define BOARD_USB_OTG_FS_DM_DP_PIN (GPIO_PIN_11 | GPIO_PIN_12) + #define BOARD_USB_OTG_FS_DM_DP_MODE (GPIO_MODE_AF_PP) + #define BOARD_USB_OTG_FS_DM_DP_PULL (GPIO_NOPULL) + #define BOARD_USB_OTG_FS_DM_DP_SPEED (GPIO_SPEED_FREQ_VERY_HIGH) + #define BOARD_USB_OTG_FS_DM_DP_ALTERNATE (GPIO_AF10_OTG1_FS) + #define BOARD_USB_OTG_FS_DM_DP_GPIO (GPIOA) + + #define BOARD_USB_OTG_HS_CLK_PIN (GPIO_PIN_5) + #define BOARD_USB_OTG_HS_CLK_MODE (GPIO_MODE_AF_PP) + #define BOARD_USB_OTG_HS_CLK_PULL (GPIO_NOPULL) + #define BOARD_USB_OTG_HS_CLK_SPEED (GPIO_SPEED_FREQ_VERY_HIGH) + #define BOARD_USB_OTG_HS_CLK_ALTERNATE (GPIO_AF10_OTG2_HS) + #define BOARD_USB_OTG_HS_CLK_GPIO (GPIOA) + + #define BOARD_USB_OTG_HS_D0_PIN (GPIO_PIN_3) + #define BOARD_USB_OTG_HS_D0_MODE (GPIO_MODE_AF_PP) + #define BOARD_USB_OTG_HS_D0_PULL (GPIO_NOPULL) + #define BOARD_USB_OTG_HS_D0_SPEED (GPIO_SPEED_FREQ_VERY_HIGH) + #define BOARD_USB_OTG_HS_D0_ALTERNATE (GPIO_AF10_OTG2_HS) + #define BOARD_USB_OTG_HS_D0_GPIO (GPIOA) + + #define BOARD_USB_OTG_HS_D1_D7_PIN (GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_5 | GPIO_PIN_10 | GPIO_PIN_11 | GPIO_PIN_12 | GPIO_PIN_13) + #define BOARD_USB_OTG_HS_D1_D7_MODE (GPIO_MODE_AF_PP) + #define BOARD_USB_OTG_HS_D1_D7_PULL (GPIO_NOPULL) + #define BOARD_USB_OTG_HS_D1_D7_ALTERNATE (GPIO_AF10_OTG2_HS) + #define BOARD_USB_OTG_HS_D1_D7_GPIO (GPIOB) + + #define BOARD_USB_OTG_HS_STP_PIN (GPIO_PIN_0) + #define BOARD_USB_OTG_HS_STP_MODE (GPIO_MODE_AF_PP) + #define BOARD_USB_OTG_HS_STP_PULL (GPIO_NOPULL) + #define BOARD_USB_OTG_HS_STP_ALTERNATE (GPIO_AF10_OTG2_HS) + #define BOARD_USB_OTG_HS_STP_GPIO (GPIOC) + + #define BOARD_USB_OTG_HS_NXT_PIN (GPIO_PIN_4) + #define BOARD_USB_OTG_HS_NXT_MODE (GPIO_MODE_AF_PP) + #define BOARD_USB_OTG_HS_NXT_PULL (GPIO_NOPULL) + #define BOARD_USB_OTG_HS_NXT_ALTERNATE (GPIO_AF10_OTG2_HS) + #define BOARD_USB_OTG_HS_NXT_GPIO (GPIOH) + + #define BOARD_USB_OTG_HS_DIR_PIN (GPIO_PIN_11) + #define BOARD_USB_OTG_HS_DIR_MODE (GPIO_MODE_AF_PP) + #define BOARD_USB_OTG_HS_DIR_PULL (GPIO_NOPULL) + #define BOARD_USB_OTG_HS_DIR_ALTERNATE (GPIO_AF10_OTG2_HS) + #define BOARD_USB_OTG_HS_DIR_GPIO (GPIOI) + +#elif defined TARGET_NICLA_VISION + #define BOARD_GREEN_LED PC_13 + #define BOARD_RED_LED PE_3 + #define BOARD_BLUE_LED PF_4 + + #define BOARD_USB_RESET PA_2 + + #define BOARD_I2C_SCL PF_1 + #define BOARD_I2C_SDA PF_0 + + #define BOARD_USBD_VID 0x2341 + #define BOARD_USBD_PID 0x035F + + #define BOARD_USBD_STRING "Nicla Vision MCUboot" + + #define BOARD_QSPI_SO0 PD_11 + #define BOARD_QSPI_SO1 PF_9 + #define BOARD_QSPI_SO2 PE_2 + #define BOARD_QSPI_SO3 PD_13 + #define BOARD_QSPI_SCK PF_10 + #define BOARD_QSPI_CS PG_6 + + #define BOARD_USB_OTG_FS_DM_DP_PIN (GPIO_PIN_11 | GPIO_PIN_12) + #define BOARD_USB_OTG_FS_DM_DP_MODE (GPIO_MODE_AF_PP) + #define BOARD_USB_OTG_FS_DM_DP_PULL (GPIO_PULLUP) + #define BOARD_USB_OTG_FS_DM_DP_SPEED (GPIO_SPEED_FREQ_VERY_HIGH) + #define BOARD_USB_OTG_FS_DM_DP_ALTERNATE (GPIO_AF10_OTG1_FS) + #define BOARD_USB_OTG_FS_DM_DP_GPIO (GPIOA) + + #define BOARD_USB_OTG_HS_CLK_PIN (GPIO_PIN_5) + #define BOARD_USB_OTG_HS_CLK_MODE (GPIO_MODE_AF_PP) + #define BOARD_USB_OTG_HS_CLK_PULL (GPIO_NOPULL) + #define BOARD_USB_OTG_HS_CLK_SPEED (GPIO_SPEED_FREQ_VERY_HIGH) + #define BOARD_USB_OTG_HS_CLK_ALTERNATE (GPIO_AF10_OTG2_HS) + #define BOARD_USB_OTG_HS_CLK_GPIO (GPIOA) + + #define BOARD_USB_OTG_HS_D0_PIN (GPIO_PIN_3) + #define BOARD_USB_OTG_HS_D0_MODE (GPIO_MODE_AF_PP) + #define BOARD_USB_OTG_HS_D0_PULL (GPIO_NOPULL) + #define BOARD_USB_OTG_HS_D0_SPEED (GPIO_SPEED_FREQ_VERY_HIGH) + #define BOARD_USB_OTG_HS_D0_ALTERNATE (GPIO_AF10_OTG2_HS) + #define BOARD_USB_OTG_HS_D0_GPIO (GPIOA) + + #define BOARD_USB_OTG_HS_D1_D7_PIN (GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_5 | GPIO_PIN_10 | GPIO_PIN_11 | GPIO_PIN_12 | GPIO_PIN_13) + #define BOARD_USB_OTG_HS_D1_D7_MODE (GPIO_MODE_AF_PP) + #define BOARD_USB_OTG_HS_D1_D7_PULL (GPIO_NOPULL) + #define BOARD_USB_OTG_HS_D1_D7_ALTERNATE (GPIO_AF10_OTG2_HS) + #define BOARD_USB_OTG_HS_D1_D7_GPIO (GPIOB) + + #define BOARD_USB_OTG_HS_STP_PIN (GPIO_PIN_0) + #define BOARD_USB_OTG_HS_STP_MODE (GPIO_MODE_AF_PP) + #define BOARD_USB_OTG_HS_STP_PULL (GPIO_NOPULL) + #define BOARD_USB_OTG_HS_STP_ALTERNATE (GPIO_AF10_OTG2_HS) + #define BOARD_USB_OTG_HS_STP_GPIO (GPIOC) + + #define BOARD_USB_OTG_HS_NXT_PIN (GPIO_PIN_3) + #define BOARD_USB_OTG_HS_NXT_MODE (GPIO_MODE_AF_PP) + #define BOARD_USB_OTG_HS_NXT_PULL (GPIO_NOPULL) + #define BOARD_USB_OTG_HS_NXT_ALTERNATE (GPIO_AF10_OTG2_HS) + #define BOARD_USB_OTG_HS_NXT_GPIO (GPIOC) + + #define BOARD_USB_OTG_HS_DIR_PIN (GPIO_PIN_2) + #define BOARD_USB_OTG_HS_DIR_MODE (GPIO_MODE_AF_PP) + #define BOARD_USB_OTG_HS_DIR_PULL (GPIO_NOPULL) + #define BOARD_USB_OTG_HS_DIR_ALTERNATE (GPIO_AF10_OTG2_HS) + #define BOARD_USB_OTG_HS_DIR_GPIO (GPIOC) -#ifdef BOARD_HAS_VIDEO -#define BOARD_VIDEO_ENABLE PJ_2 -#define BOARD_VIDEO_RESET PJ_3 -#endif +#else -#define BOARD_I2C_SCL PB_6 -#define BOARD_I2C_SDA PB_7 - -#define BOARD_USBD_VID 0x2341 -#define BOARD_USBD_PID 0x035B - -#define BOARD_USBD_STRING "Portenta H7 MCUboot" - -#define BOARD_QSPI_SO0 PD_11 -#define BOARD_QSPI_SO1 PD_12 -#define BOARD_QSPI_SO2 PF_7 -#define BOARD_QSPI_SO3 PD_13 -#define BOARD_QSPI_SCK PF_10 -#define BOARD_QSPI_CS PG_6 - -#define BOARD_USB_OTG_FS_DM_DP_PIN (GPIO_PIN_11 | GPIO_PIN_12) -#define BOARD_USB_OTG_FS_DM_DP_MODE (GPIO_MODE_AF_PP) -#define BOARD_USB_OTG_FS_DM_DP_PULL (GPIO_NOPULL) -#define BOARD_USB_OTG_FS_DM_DP_SPEED (GPIO_SPEED_FREQ_VERY_HIGH) -#define BOARD_USB_OTG_FS_DM_DP_ALTERNATE (GPIO_AF10_OTG1_FS) -#define BOARD_USB_OTG_FS_DM_DP_GPIO (GPIOA) - -#define BOARD_USB_OTG_HS_CLK_PIN (GPIO_PIN_5) -#define BOARD_USB_OTG_HS_CLK_MODE (GPIO_MODE_AF_PP) -#define BOARD_USB_OTG_HS_CLK_PULL (GPIO_NOPULL) -#define BOARD_USB_OTG_HS_CLK_SPEED (GPIO_SPEED_FREQ_VERY_HIGH) -#define BOARD_USB_OTG_HS_CLK_ALTERNATE (GPIO_AF10_OTG2_HS) -#define BOARD_USB_OTG_HS_CLK_GPIO (GPIOA) - -#define BOARD_USB_OTG_HS_D0_PIN (GPIO_PIN_3) -#define BOARD_USB_OTG_HS_D0_MODE (GPIO_MODE_AF_PP) -#define BOARD_USB_OTG_HS_D0_PULL (GPIO_NOPULL) -#define BOARD_USB_OTG_HS_D0_SPEED (GPIO_SPEED_FREQ_VERY_HIGH) -#define BOARD_USB_OTG_HS_D0_ALTERNATE (GPIO_AF10_OTG2_HS) -#define BOARD_USB_OTG_HS_D0_GPIO (GPIOA) - -#define BOARD_USB_OTG_HS_D1_D7_PIN (GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_5 | GPIO_PIN_10 | GPIO_PIN_11 | GPIO_PIN_12 | GPIO_PIN_13) -#define BOARD_USB_OTG_HS_D1_D7_MODE (GPIO_MODE_AF_PP) -#define BOARD_USB_OTG_HS_D1_D7_PULL (GPIO_NOPULL) -#define BOARD_USB_OTG_HS_D1_D7_ALTERNATE (GPIO_AF10_OTG2_HS) -#define BOARD_USB_OTG_HS_D1_D7_GPIO (GPIOB) - -#define BOARD_USB_OTG_HS_STP_PIN (GPIO_PIN_0) -#define BOARD_USB_OTG_HS_STP_MODE (GPIO_MODE_AF_PP) -#define BOARD_USB_OTG_HS_STP_PULL (GPIO_NOPULL) -#define BOARD_USB_OTG_HS_STP_ALTERNATE (GPIO_AF10_OTG2_HS) -#define BOARD_USB_OTG_HS_STP_GPIO (GPIOC) - -#define BOARD_USB_OTG_HS_NXT_PIN (GPIO_PIN_4) -#define BOARD_USB_OTG_HS_NXT_MODE (GPIO_MODE_AF_PP) -#define BOARD_USB_OTG_HS_NXT_PULL (GPIO_NOPULL) -#define BOARD_USB_OTG_HS_NXT_ALTERNATE (GPIO_AF10_OTG2_HS) -#define BOARD_USB_OTG_HS_NXT_GPIO (GPIOH) - -#define BOARD_USB_OTG_HS_DIR_PIN (GPIO_PIN_11) -#define BOARD_USB_OTG_HS_DIR_MODE (GPIO_MODE_AF_PP) -#define BOARD_USB_OTG_HS_DIR_PULL (GPIO_NOPULL) -#define BOARD_USB_OTG_HS_DIR_ALTERNATE (GPIO_AF10_OTG2_HS) -#define BOARD_USB_OTG_HS_DIR_GPIO (GPIOI) +#endif #endif /* __BOARD_H */ diff --git a/app/default_bd.cpp b/app/default_bd.cpp index 8baf7a1..96210db 100644 --- a/app/default_bd.cpp +++ b/app/default_bd.cpp @@ -148,7 +148,7 @@ static void initBlockTable(void) { BOOT_LOG_ERR("SDMMC"); #endif } else if (block_info[SECONDARY_BLOCK_DEVICE].raw_type & QSPI_FLASH_FLAG) { - block_info[SECONDARY_BLOCK_DEVICE].raw_bd = new QSPIFBlockDevice(PD_11, PD_12, PF_7, PD_13, PF_10, PG_6, QSPIF_POLARITY_MODE_1, 40000000); + block_info[SECONDARY_BLOCK_DEVICE].raw_bd = mbed::BlockDevice::get_default_instance(); block_info[SCRATCH_BLOCK_DEVICE].raw_bd = block_info[SECONDARY_BLOCK_DEVICE].raw_bd; } else { BOOT_LOG_ERR("Config"); @@ -236,7 +236,7 @@ static void initBlockTable(void) { BOOT_LOG_ERR("SDMMC"); #endif } else if (block_info[SECONDARY_BLOCK_DEVICE].raw_type & QSPI_FLASH_FLAG) { - block_info[SECONDARY_BLOCK_DEVICE].raw_bd = new QSPIFBlockDevice(PD_11, PD_12, PF_7, PD_13, PF_10, PG_6, QSPIF_POLARITY_MODE_1, 40000000); + block_info[SECONDARY_BLOCK_DEVICE].raw_bd = mbed::BlockDevice::get_default_instance(); } else { BOOT_LOG_ERR("U config"); } @@ -250,7 +250,7 @@ static void initBlockTable(void) { BOOT_LOG_ERR("SDMMC"); #endif } else if (block_info[SCRATCH_BLOCK_DEVICE].raw_type & QSPI_FLASH_FLAG) { - block_info[SCRATCH_BLOCK_DEVICE].raw_bd = new QSPIFBlockDevice(PD_11, PD_12, PF_7, PD_13, PF_10, PG_6, QSPIF_POLARITY_MODE_1, 40000000); + block_info[SCRATCH_BLOCK_DEVICE].raw_bd = mbed::BlockDevice::get_default_instance(); } else { BOOT_LOG_ERR("S config"); } @@ -395,11 +395,13 @@ mbed::BlockDevice* get_scratch_bd(void) { return nullptr; } +#if !defined(BOOTUTIL_LIBARY_BUILD) mbed::BlockDevice* BlockDevice::get_default_instance() { static QSPIFBlockDevice default_bd(BOARD_QSPI_SO0, BOARD_QSPI_SO1, BOARD_QSPI_SO2, BOARD_QSPI_SO3, BOARD_QSPI_SCK, BOARD_QSPI_CS, QSPIF_POLARITY_MODE_1, 40000000); return &default_bd; } +#endif FlashIAP flash; diff --git a/app/main.cpp b/app/main.cpp index e6d533b..dcc0f0c 100644 --- a/app/main.cpp +++ b/app/main.cpp @@ -66,7 +66,11 @@ USBD_HandleTypeDef USBD_Device; DigitalOut red(BOARD_RED_LED, 1); DigitalOut green(BOARD_GREEN_LED, 1); DigitalOut blue(BOARD_BLUE_LED, 1); +#if defined(TARGET_NICLA_VISION) +bool boot_sel = false; +#else DigitalIn boot_sel(BOARD_BOOT_SEL,PullDown); +#endif Ticker swap_ticker; bool debug_enabled = false; diff --git a/app/power/power.cpp b/app/power/power.cpp index 1bdebff..0ba673a 100644 --- a/app/power/power.cpp +++ b/app/power/power.cpp @@ -20,6 +20,7 @@ #include "board.h" #include "mbed.h" +#if defined TARGET_PORTENTA_H7_M7 static void portenta_power_init() { I2C i2c(BOARD_I2C_SDA, BOARD_I2C_SCL); @@ -85,8 +86,46 @@ static void portenta_power_init() { data[1]=0xF; i2c.write(8 << 1, data, sizeof(data)); } +#endif +#if defined TARGET_NICLA_VISION +static void nicla_vision_power_init() { + I2C i2c(BOARD_I2C_SDA, BOARD_I2C_SCL); + + char data[2]; + + data[0]=0x9C; + data[1]=(1 << 7); + i2c.write(8 << 1, data, sizeof(data)); + + // Disable charger led + data[0]=0x9E; + data[1]=(1 << 5); + i2c.write(8 << 1, data, sizeof(data)); + + HAL_Delay(10); + + // SW3: set 2A as current limit + // Helps keeping the rail up at wifi startup + data[0]=0x42; + data[1]=(2); + i2c.write(8 << 1, data, sizeof(data)); + + HAL_Delay(10); + + // Change VBUS INPUT CURRENT LIMIT to 1.5A + data[0]=0x94; + data[1]=(20 << 3); + i2c.write(8 << 1, data, sizeof(data)); +} +#endif void power_init() { +#if defined TARGET_PORTENTA_H7_M7 portenta_power_init(); -} \ No newline at end of file +#elif defined TARGET_NICLA_VISION + nicla_vision_power_init(); +#else + +#endif +} diff --git a/app/power/power.h b/app/power/power.h index f6028c3..1921322 100644 --- a/app/power/power.h +++ b/app/power/power.h @@ -21,4 +21,4 @@ void power_init(); -#endif //__POWER_H \ No newline at end of file +#endif //__POWER_H diff --git a/app/sdcard/BSP.c b/app/sdcard/BSP.c index e5ab77b..d320901 100644 --- a/app/sdcard/BSP.c +++ b/app/sdcard/BSP.c @@ -454,7 +454,7 @@ __weak void BSP_SD_ReadCpltCallback(void) } -void SDMMC2_IRQHandler(void) +__weak void SDMMC2_IRQHandler(void) { BSP_SD_IRQHandler(); } diff --git a/generate_lib.sh b/generate_lib.sh deleted file mode 100755 index 1ba7f73..0000000 --- a/generate_lib.sh +++ /dev/null @@ -1,8 +0,0 @@ -#!/bin/bash -mbed compile -c -m PORTENTA_H7_M7 -t GCC_ARM --app=mbed_app_bootutil.json -echo -echo Generating library -find ./BUILD/PORTENTA_H7_M7/GCC_ARM/ \( -name "FileBlockDevice.o" -o -name "BSP.o" -o -name "SDMMCBlockDevice.o" -o -name "target.o" -o -name "rtc.o" -o -name "default_bd.o" -o -name "bootutil_extra.o" -o -name "flash_map_backend.o" -o -name "bootutil_public.o" \) | xargs arm-none-eabi-ar -csr libbootutil.a -echo -n "Library: " -find ./ -name "libbootutil.a" -echo diff --git a/generate_rel.sh b/generate_rel.sh index 0fe9913..51629fb 100755 --- a/generate_rel.sh +++ b/generate_rel.sh @@ -1,13 +1,17 @@ #!/bin/bash rm -rf release +rm -rf BUILD -mbed compile -c -m PORTENTA_H7_M7 -t GCC_ARM --app=mbed_app_bootutil.json +if [[ $1 == "library" ]] || [[ $1 == "all" ]]; then +mbed compile -c -m PORTENTA_H7_M7 -t GCC_ARM --app=mbed_app_bootutil.json -DBOOTUTIL_LIBARY_BUILD=1 echo echo Generating bootutil library -find ./BUILD/PORTENTA_H7_M7/GCC_ARM/ \( -name "FileBlockDevice.o" -o -name "BSP.o" -o -name "SDMMCBlockDevice.o" -o -name "target.o" -o -name "rtc.o" -o -name "default_bd.o" -o -name "bootutil_extra.o" -o -name "flash_map_backend.o" -o -name "bootutil_public.o" \) | xargs arm-none-eabi-ar -csr libbootutil.a +find ./BUILD/PORTENTA_H7_M7/GCC_ARM/ \( -name "FileBlockDevice.o" -o -name "BSP.o" -o -name "SDMMCBlockDevice.o" -o -name "rtc.o" -o -name "default_bd.o" -o -name "bootutil_extra.o" -o -name "flash_map_backend.o" -o -name "bootutil_public.o" \) | xargs arm-none-eabi-ar -csr libbootutil.a echo -n "Library: " find ./ -name "libbootutil.a" +fi +if [[ $1 == "portenta" ]] || [[ $1 == "all" ]]; then echo echo Generating binaries for PORTENTA H7 mbed compile -c -m PORTENTA_H7_M7 -t GCC_ARM --profile=release --profile mbed-os/tools/profiles/extensions/lto.json -N mcuboot_portenta_h7 @@ -18,7 +22,9 @@ cp ./BUILD/PORTENTA_H7_M7/GCC_ARM-RELEASE/mcuboot_portenta_h7_application.elf ./ xxd -i ./release/PORTENTA_H7/mcuboot_portenta_h7.bin > ./release/PORTENTA_H7/mcuboot_portenta_h7.h sed -i "s/unsigned char __release_PORTENTA_H7_mcuboot_portenta_h7_bin/const unsigned char mcuboot_portenta_h7_bin/" ./release/PORTENTA_H7/mcuboot_portenta_h7.h sed -i "s/__release_PORTENTA_H7_mcuboot_portenta_h7_bin_len/mcuboot_portenta_h7_bin_len/" ./release/PORTENTA_H7/mcuboot_portenta_h7.h +fi +if [[ $1 == "lite" ]] || [[ $1 == "all" ]]; then echo echo Generating binaries for PORTENTA H7 Lite mbed compile -c -m PORTENTA_H7_M7 -t GCC_ARM --profile=release --profile mbed-os/tools/profiles/extensions/lto.json -DBOARD_HAS_VIDEO=0 -DBOARD_HAS_WIFI=0 -N mcuboot_portenta_h7_lite @@ -29,14 +35,30 @@ cp ./BUILD/PORTENTA_H7_M7/GCC_ARM-RELEASE/mcuboot_portenta_h7_lite_application.e xxd -i ./release/PORTENTA_H7_Lite/mcuboot_portenta_h7_lite.bin > ./release/PORTENTA_H7_Lite/mcuboot_portenta_h7_lite.h sed -i "s/unsigned char __release_PORTENTA_H7_mcuboot_portenta_h7_lite_bin/const unsigned char mcuboot_portenta_h7_lite_bin/" ./release/PORTENTA_H7_Lite/mcuboot_portenta_h7_lite.h sed -i "s/__release_PORTENTA_H7_mcuboot_portenta_h7_lite_bin_len/mcuboot_portenta_h7_lite_bin_len/" ./release/PORTENTA_H7_Lite/mcuboot_portenta_h7_lite.h +fi +if [[ $1 == "connected" ]] || [[ $1 == "all" ]]; then echo echo Generating binaries for PORTENTA H7 Lite Connected mbed compile -c -m PORTENTA_H7_M7 -t GCC_ARM --profile=release --profile mbed-os/tools/profiles/extensions/lto.json -DBOARD_HAS_VIDEO=0 -N mcuboot_portenta_h7_lite_connected mkdir -p release/PORTENTA_H7_Lite_Connected -mv ./libbootutil.a ./release/PORTENTA_H7_Lite_Connected +cp ./libbootutil.a ./release/PORTENTA_H7_Lite_Connected cp ./BUILD/PORTENTA_H7_M7/GCC_ARM-RELEASE/mcuboot_portenta_h7_lite_connected.bin ./release/PORTENTA_H7_Lite_Connected/mcuboot_portenta_h7_lite_connected.bin cp ./BUILD/PORTENTA_H7_M7/GCC_ARM-RELEASE/mcuboot_portenta_h7_lite_connected_application.elf ./release/PORTENTA_H7_Lite_Connected/mcuboot_portenta_h7_lite_connected.elf xxd -i ./release/PORTENTA_H7_Lite_Connected/mcuboot_portenta_h7_lite_connected.bin > ./release/PORTENTA_H7_Lite_Connected/mcuboot_portenta_h7_lite_connected.h sed -i "s/unsigned char __release_PORTENTA_H7_mcuboot_portenta_h7_lite_connected_bin/const unsigned char mcuboot_portenta_h7_lite_connected_bin/" ./release/PORTENTA_H7_Lite_Connected/mcuboot_portenta_h7_lite_connected.h -sed -i "s/__release_PORTENTA_H7_mcuboot_portenta_h7_lite_connected_bin_len/mcuboot_portenta_h7_lite_connected_bin_len/" ./release/PORTENTA_H7_Lite_Connected/mcuboot_portenta_h7_lite_connected.h \ No newline at end of file +sed -i "s/__release_PORTENTA_H7_mcuboot_portenta_h7_lite_connected_bin_len/mcuboot_portenta_h7_lite_connected_bin_len/" ./release/PORTENTA_H7_Lite_Connected/mcuboot_portenta_h7_lite_connected.h +fi + +if [[ $1 == "nicla" ]] || [[ $1 == "all" ]]; then +echo +echo Generating binaries for NICLA VISION +mbed compile -c -m NICLA_VISION -t GCC_ARM --profile=release --profile mbed-os/tools/profiles/extensions/lto.json -N mcuboot_nicla_vision +mkdir -p release/NICLA_VISION +mv ./libbootutil.a ./release/NICLA_VISION +cp ./BUILD/NICLA_VISION/GCC_ARM-RELEASE/mcuboot_nicla_vision.bin ./release/NICLA_VISION/mcuboot_nicla_vision.bin +cp ./BUILD/NICLA_VISION/GCC_ARM-RELEASE/mcuboot_nicla_vision_application.elf ./release/NICLA_VISION/mcuboot_nicla_vision.elf +xxd -i ./release/NICLA_VISION/mcuboot_nicla_vision.bin > ./release/NICLA_VISION/mcuboot_nicla_vision.h +sed -i "s/unsigned char __release_NICLA_VISION_mcuboot_nicla_vision_bin/const unsigned char mcuboot_nicla_vision_bin/" ./release/NICLA_VISION/mcuboot_nicla_vision.h +sed -i "s/__release_NICLA_VISION_mcuboot_nicla_vision_bin_len/mcuboot_nicla_vision_bin_len/" ./release/NICLA_VISION/mcuboot_nicla_vision.h +fi diff --git a/mbed_app.json b/mbed_app.json index b24a964..01d3766 100644 --- a/mbed_app.json +++ b/mbed_app.json @@ -48,6 +48,41 @@ "mcuboot.bootloader-build": false, "mcuboot.encrypt-scratch": true, "mcuboot.swap-buf-size": 131072 + }, + "NICLA_VISION": { + "target.clock_source": "USE_PLL_HSE_EXTC", + "target.use-mpu": false, + "target.components_remove" : ["WHD", "4343W_FS", "CYW43XXX", "SE050"], + "target.extra_labels_remove" : ["CORDIO"], + "target.features_remove" : ["BLE"], + "target.device_has_remove": ["USBDEVICE", "EMAC", "CAN", "SPI_ASYNCH", "SPISLAVE", "SPI","SERIAL_FC", "PWMOUT", "ANALOGIN", "ANALOGOUT", "I2CSLAVE", "I2C_ASYNC", "OSPI", "TRNG", "DAC", "CRC", "WATCHDOG", "RTC", "LPTICKER", "SLEEP"], + "target.printf_lib": "minimal-printf", + "target.i2c_timing_value_algo": false, + "target.macros_add":["BOARD_HAS_VIDEO=0", "BOARD_HAS_ETHERNET=0"], + "platform.minimal-printf-enable-floating-point": false, + "platform.minimal-printf-enable-64-bit": false, + "platform.stdio-flush-at-exit": false, + "platform.stdio-baud-rate": 115200, + "fat_chan.ff_use_mkfs": 0, + "fat_chan.ff_use_lfn": 0, + "fat_chan.ff_fs_rpath": 0, + "mcuboot.primary-slot-address": "0x8020000", + "mcuboot.slot-size": "0x1E0000", + "mcuboot.scratch-address": "0x9000000", + "mcuboot.scratch-size": "0x20000", + "mcuboot.max-img-sectors": "0x3C0", + "mcuboot.max-align": 32, + "mcuboot.bootstrap": true, + "mcuboot.application-hooks": true, + "mcuboot.application-littlefs": true, + "mcuboot.application-sdcard": null, + "mcuboot.application-dfu": true, + "mcuboot.signature-algorithm": "SIGNATURE_TYPE_EC256", + "mcuboot.encrypt-ec256": true, + "mcuboot.include-keys": null, + "mcuboot.bootloader-build": false, + "mcuboot.encrypt-scratch": true, + "mcuboot.swap-buf-size": 131072 } } } diff --git a/mbed_app_bootutil.json b/mbed_app_bootutil.json index 00fa61f..6acff71 100644 --- a/mbed_app_bootutil.json +++ b/mbed_app_bootutil.json @@ -15,37 +15,6 @@ "mbed-trace.enable": false, "mbed-trace.fea-ipv6": false }, - "NRF52840_DK": { - "target.features_remove": ["CRYPTOCELL310"], - "target.macros_remove": ["MBEDTLS_CONFIG_HW_SUPPORT"], - "mcuboot.primary-slot-address": "0x20000", - "mcuboot.slot-size": "0xC0000", - "mcuboot.scratch-address": "0xE0000", - "mcuboot.scratch-size": "0x20000", - "mcuboot.max-img-sectors": "0x180", - "mcuboot.read-granularity": 4, - "qspif.QSPI_MIN_PROG_SIZE": 4 - }, - "EP_AGORA": { - "target.features_remove": ["CRYPTOCELL310"], - "target.macros_remove": ["MBEDTLS_CONFIG_HW_SUPPORT"], - "mcuboot.primary-slot-address": "0x20000", - "mcuboot.slot-size": "0xC0000", - "mcuboot.scratch-address": "0xE0000", - "mcuboot.scratch-size": "0x20000", - "mcuboot.max-img-sectors": "0x180", - "mcuboot.read-granularity": 4, - "qspif.QSPI_MIN_PROG_SIZE": 4 - }, - "DISCO_L475VG_IOT01A": { - "mcuboot.primary-slot-address": "0x8020000", - "mcuboot.slot-size": "0xC0000", - "mcuboot.scratch-address": "0x80E0000", - "mcuboot.scratch-size": "0x20000", - "mcuboot.max-img-sectors": "0x180", - "mcuboot.read-granularity": 1, - "qspif.QSPI_MIN_PROG_SIZE": 1 - }, "PORTENTA_H7_M7": { "target.clock_source": "USE_PLL_HSE_EXTC", "target.use-mpu": false, @@ -70,7 +39,7 @@ "mcuboot.max-align": 32, "mcuboot.bootstrap": true, "mcuboot.application-hooks": true, - "mcuboot.application-littlefs": null, + "mcuboot.application-littlefs": true, "mcuboot.application-sdcard": true, "mcuboot.application-dfu": null, "mcuboot.signature-algorithm": "SIGNATURE_TYPE_EC256",