Skip to content

riotboot_flashwrite: Failure on the nrf52 #11274

Closed
@bergzand

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

Metadata

Labels

Area: OTAArea: Over-the-air updatesArea: build systemArea: Build systemType: bugThe issue reports a bug / The PR fixes a bug (including spelling errors)

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions