Hi all
After successful installation of an update with the hep of dfu_target module, I am expecting the bootloader to swap the image and boot the new image with swap_type TEST.
I need to know in the firmware if there was a software update and therefore I read out the swap type after startup. I use mcuboot_swap_type() function from mcuboot.h module for that.
Swapping after successful update works fine. The problem is that the swap type is not what I expect. It's always "REVERT", but that makes no sense because I can see that I am running on the new image which was previously updated.
Here the logoutput which shows what I mean:
[00:01:19.006,256] <inf> dfu_target_mcuboot: MCUBoot image upgrade scheduled. Reset device to apply *** Booting Zephyr OS build v2.6.0-rc1-ncs1-9-g9b5948cc9ef4 *** I: Starting bootloader I: Primary image: magic=good, swap_type=0x4, copy_done=0x1, image_ok=0x1 I: Secondary image: magic=good, swap_type=0x2, copy_done=0x3, image_ok=0x3 I: Boot source: none I: Swap type: test <<--- HERE IS SWAPTYPE TEST I: Bootloader chainload address offset: 0x10000 *** Booting Zephyr OS build v2.6.0-rc1-ncs1-9-g9b5948cc9ef4 *** Flash regions Domain Permissions 00 03 0x00000 0x20000 Secure rwxl 04 31 0x20000 0x100000 Non-Secure rwxl Non-secure callable region 0 placed in flash region 3 with size 32. SRAM region Domain Permissions 00 07 0x00000 0x10000 Secure rwxl 08 31 0x10000 0x40000 Non-Secure rwxl Peripheral Domain Status 00 NRF_P0 Non-Secure OK 01 NRF_CLOCK Non-Secure OK 02 NRF_RTC0 Non-Secure OK 03 NRF_RTC1 Non-Secure OK 04 NRF_NVMC Non-Secure OK 05 NRF_UARTE1 Non-Secure OK 06 NRF_UARTE2 Secure SKIP 07 NRF_TWIM2 Non-Secure OK 08 NRF_SPIM3 Non-Secure OK 09 NRF_TIMER0 Non-Secure OK 10 NRF_TIMER1 Non-Secure OK 11 NRF_TIMER2 Non-Secure OK 12 NRF_SAADC Non-Secure OK 13 NRF_PWM0 Non-Secure OK 14 NRF_PWM1 Non-Secure OK 15 NRF_PWM2 Non-Secure OK 16 NRF_PWM3 Non-Secure OK 17 NRF_WDT Non-Secure OK 18 NRF_IPC Non-Secure OK 19 NRF_VMC Non-Secure OK 20 NRF_FPU Non-Secure OK 21 NRF_EGU1 Non-Secure OK 22 NRF_EGU2 Non-Secure OK 23 NRF_DPPIC Non-Secure OK 24 NRF_REGULATORS Non-Secure OK 25 NRF_PDM Non-Secure OK 26 NRF_I2S Non-Secure OK 27 NRF_GPIOTE1 Non-Secure OK SPM: NS image at 0x20200 SPM: NS MSP at 0x2002c948 SPM: NS reset vector at 0x2e2f9 SPM: prepare to jump to Non-Secure image. [00:00:00.001,068] <inf> mcuboot_util: Swap type: revert <<--- AND THEN SUDDENLY REVERT!?
I put comments in the logs to point out what is strange.
The update process is based on https://developer.nordicsemi.com/nRF_Connect_SDK/doc/1.0.0/nrf/samples/nrf9160/http_application_update/README.html
I need a reliable mechanism to detect if the firmware has changed since last reboot. If swap_type is not reliable, then maybe there's another way? Any suggestions?
best regards