You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nuttx.apache.org by "fdcavalcanti (via GitHub)" <gi...@apache.org> on 2025/07/15 17:25:27 UTC
[PR] examples/mcuboot: add example to update from binary in local storage [nuttx-apps]
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-unsubscribe@nuttx.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [PR] examples/mcuboot: add example to update from binary in local storage [nuttx-apps]
Posted by "xiaoxiang781216 (via GitHub)" <gi...@apache.org>.
xiaoxiang781216 merged PR #3135:
URL: https://github.com/apache/nuttx-apps/pull/3135
--
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-unsubscribe@nuttx.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org