Description
Description
The riotboot_flashwrite test fails to properly boot after an update on the nrf52 chips. This happens because RIOTBOOT_LEN
is exactly the size of one full flash page. The rest of the flash is divided between the other two slots, giving each slot 128.5 flash pages. This results in SLOT1_OFFSET not starting at a flash page border, violating some of the assumptions of riotboot.
Steps to reproduce the issue
execute the steps from the README.md
in the riotboot_flashwrite test on a nrf52-based board (nrf52840dk for example)
Expected results
Slot1 is booted after a reset
Actual results
Slot0 boots after a result, furthermore debugging slot1 shows that the magic number is not flashed to the first word of the slot.
Quick fix:
Override RIOTBOOT_LEN
in the nrf52 Makefile.include
to 0x2000
.
More generic fix:
Ensure that RIOTBOOT_LEN
is always at least 2 flash pages large. Assuming that most chips with a homogeneous flash page layout always have an even number of flash pages, this would result in the remaining number of flash pages for the two slots also be an even number. Having an even number of remaining flash pages ensures that it can be divided into two slots each starting at a flash page border