TL;DR - Mcuboot seems to be erasing my app images in split configuration,
and I can't figure out why...(or what I'm doing wrong)

Hi All,

I'm trying to get split images working but having no luck. Currently, I'm
following these instructions:
http://mynewt.apache.org/latest/os/modules/split/split.html#image-upgrade-split
(With slight modifications to use mcumgr instead of newtmgr.

Here's my setup:
1x NRF52DK (pca10400) dev board
top-of-tree newt tool (build from source)
top-of-tree mcumgr (go get github.com/apache/mynewt-mcumgr-cli/mcumgr)
This repo has all the code: https://github.com/alvarop/split_test

I'm using mcuboot with target nrf52_boot
I'm using bleprph from apache-mynewt-nimble as my loader
I'm using splitty from apache-mynewt-core as my main app

First I load the booatloader with newt load nrf52_boot
I then create the split image with create-image split-nrf52dk 1.0.0
I then load the image with newt load split-nrf52dk

I query the images over BLE:
mcumgr image list -c mybleprph
Images:
 slot=0
    version: 1.0.0
    bootable: true
    flags: active confirmed
    hash: 31a1b0568dffb840a30a361db1cf747ba63f97c141aef2ac18674744000f12fb
 slot=1
    version: 1.0.0
    bootable: true
    flags:
    hash: f13c88e281e8b790e189b8db45abac25f86c19e6c85f8f56bfeec2ece349112a
Split status: N/A (0)

Right off the bat, the system never boots into the app image, it stays in
the loader. Maybe it's because it is marked as active.. ok.

I create a "new" image so we can differentiate with newt-dev create-image
split-nrf52dk 1.0.1
I upload the new image:
mcumgr image upload -c mybleprph
bin/targets/split-nrf52dk/app/apps/splitty/splitty.img

And confirm it is there:
mcumgr image list -c mybleprph
Images:
 slot=0
    version: 1.0.0
    bootable: true
    flags: active confirmed
    hash: 31a1b0568dffb840a30a361db1cf747ba63f97c141aef2ac18674744000f12fb
 slot=1
    version: 1.0.1
    bootable: true
    flags:
    hash: 45f5338c09eb5ea04729ef0092c3645876e7bd6a8ebf307a040780d9b50dea25
Split status: N/A (0)

I then want to test it and use:
mcumgr image test -c mybleprph
45f5338c09eb5ea04729ef0092c3645876e7bd6a8ebf307a040780d9b50dea25
Images:
 slot=0
    version: 1.0.0
    bootable: true
    flags: active confirmed
    hash: 31a1b0568dffb840a30a361db1cf747ba63f97c141aef2ac18674744000f12fb
 slot=1
    version: 1.0.1
    bootable: true
    flags: pending
    hash: 45f5338c09eb5ea04729ef0092c3645876e7bd6a8ebf307a040780d9b50dea25
Split status: N/A (0)

Now the new image in slot 1 is pending. Resetting should switch to it.
mcumgr reset -c mybleprph

When I check again, the image is gone:
mcumgr image list -c mybleprph
Images:
 slot=0
    version: 1.0.0
    bootable: true
    flags: active confirmed
    hash: 31a1b0568dffb840a30a361db1cf747ba63f97c141aef2ac18674744000f12fb
Split status: N/A (0)

I have verified that the flash has been erased and that mcuboot did it. I
want to check if there's anything obviously wrong with my procedure before
digging in deeper into mcuboot.

Thank you for your help,

Cheers,

Alvaro

Reply via email to