fdcavalcanti opened a new pull request, #3135: URL: https://github.com/apache/nuttx-apps/pull/3135
## Summary This example makes it possible to use a binary from local storage for MCUBoot update. It copies the binary file to the secondary slot instead of downloading from a remote URL. Can be used to update from a SD Card, for example. ## Impact - Impact on user: Yes, adds new MCUBoot example to update the image from a local storage. - Impact on build: No. - Impact on hardware: No. - Impact on documentation: Yes. Updates documentation on main NuttX repo: link - Impact on security: No. - Impact on compatibility: No. ## Testing The following example updates the firmware using a binary from a SD Card mounted to `/data`. ### Building - `./tools/configure.sh esp32-devkitc:mcuboot_update_agent` - Enable `CONFIG_EXAMPLES_MCUBOOT_LOCAL_AGENT` - Merge the SD Card config: `kconfig-merge -m .config boards/risc-v/esp32c6/esp32c6-devkitc/configs/sdmmc_spi/defconfig` - make and flash Now generate the 2nd image: - Change the image target slot to 2nd slot by setting `CONFIG_ESPRESSIF_ESPTOOL_TARGET_SECONDARY` - Optionally change the MOTD to have a visual ID of the updated image - make Have the image transferred to a SD Card and mount it to `/data`: ``` nsh> mount -t vfat /dev/mmcsd0 /mnt nsh> ls /mnt /mnt: nuttx.txt nuttx_c6_ota.bin ``` ### Running Now just run the example and it should copy the binary to the 2nd slot and MCUBoot will update the image: ``` nsh> mcuboot_local_agent /mnt/nuttx_c6_ota.bin MCUBoot Local Update Agent Firmware file: /mnt/nuttx_c6_ota.bin Firmware file size: 1048576 bytes Erasing secondary flash slot... Copying firmware to secondary slot... Progress: 4096/1048576 bytes [0%] Progress: 8192/1048576 bytes [0%] Progress: 12288/1048576 bytes [1%] .... Progress: 1044480/1048576 bytes [99%] Progress: 1048576/1048576 bytes [100%] Firmware copy completed successfully! Firmware successfully copied to secondary slot! Update scheduled for next boot. Restarting... reboot status=0 ``` ### Results MCUBoot shows the image is updated: ``` reboot status=0 WPA: Clear old PMK and PTK ESP-ROM:esp32c6-20220919 Build:Sep 19 2022 rst:0xc (SW_CPU),boot:0x6f (SPI_FAST_FLASH_BOOT) Saved PC:0x40803964 SPIWP:0xee mode:DIO, clock div:2 load:0x40860610,len:0x24c8 load:0x40869610,len:0x2870 load:0x40873bb8,len:0x1938 entry 0x4086be2a [esp32c6] [INF] *** Booting MCUboot build v2.2.0-rc1 *** [esp32c6] [INF] [boot] chip revision: v0.0 [esp32c6] [INF] [boot.esp32c6] SPI Speed : 80MHz [esp32c6] [INF] [boot.esp32c6] SPI Mode : DIO [esp32c6] [INF] [boot.esp32c6] SPI Flash Size : 4MB [esp32c6] [INF] [boot] Enabling RNG early entropy source... [esp32c6] [INF] Primary image: magic=good, swap_type=0x1, copy_done=0x3, image_ok=0x1 [esp32c6] [INF] Scratch: magic=unset, swap_type=0x1, copy_done=0x3, image_ok=0x3 [esp32c6] [INF] Boot source: primary slot [esp32c6] [INF] Image index: 0, Swap type: test [esp32c6] [INF] Starting swap using scratch algorithm. [esp32c6] [INF] Disabling RNG early entropy source... [esp32c6] [INF] br_image_off = 0x10000 [esp32c6] [INF] ih_hdr_size = 0x20 [esp32c6] [INF] Loading image 0 - slot 0 from flash, area id: 1 [esp32c6] [INF] DRAM segment: start=0x21d8c, size=0x2c48, vaddr=0x40811d10 [esp32c6] [INF] IRAM segment: start=0x10080, size=0x11d0c, vaddr=0x40800000 [esp32c6] [INF] LP_RAM segment: paddr=0010e3e0h, vaddr=50000010h, size=00018h ( 24) load [esp32c6] [INF] LP_IRAM segment: paddr=0010e3e0h, vaddr=50000000h, size=00010h ( 16) load [esp32c6] [INF] start=0x40806558 ABCDEInitializing /dev/spi2... INFO: init MMC/SD slot 0 on SPI2: /dev/mmcsd0 INFO: MMCSD initialized I (25584) pp: pp rom version: 5b8dcfa I (25585) net80211: net80211 rom version: 5b8dcfa I (25588) wifi_init: rx ba win: 6 I (25588) wifi_init: LWIP disabled I (25590) phy_init: phy_version 331,5b89037,Mar 3 2025,16:01:12 NuttShell (NSH) NuttX-10.4.0 This is MCUBoot Updated Image!! nsh> ``` -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: commits-unsubscr...@nuttx.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org