This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

MCUBOOT configuration and usage

Dear Nordic, 

Could you please suggest the hands-on guide to implement MCUboot functionality in our project for 52840? We've spent around two complete days without any positive outcome.

In few words, the task is really simple:

1. Add bootloader functionality to the project without immutable bootloader at the moment (but may be with it in future).

2. Updates of the firmware over BLE (mandatory) and USB (optionally, for testing and emergency recovery only).

3. FW updates should be signed by private keys (yep, we have that already in MCUboot).

And the questions: 

1. If there any complete guide how to setup MCUboot properly? That doesn't help: https://developer.nordicsemi.com/nRF_Connect_SDK/doc/latest/nrf/app_bootloaders.html

2. Why there are at least two places to define flash regions (config files and board *.dts)? Which one we should consider?

3. If we enable RTT console output in MCUboot, the any RTT output doesn't work when running to main application, why? 

4. We're going to implement one application slot because of app size. What is the recommended approach: to implement BLE DFU in MCUboot or use external flash (where main app downloads the image at QSPI NOR flash, and then calls MCUboot API to update it)?

5. When trying to start a USB DFU config we just see an unknown device 'MCUBOOT' in Win10 Device Manager and nothing more. Hence, nRF Programmer tool doesn't see the device and can't access it. What we're doing wrong here? BTW, nRF Dongle doesn't create DFU port, just USB CDC ACM - it seems Programmer accesses it.

6. Should CONFIG_IS_BOOTLOADER option be checked for MCUboot configuration?

7. How to enable BLE DFU service (in bootloader or main app)?

Parents
  • Hello,

     

    1. If there any complete guide how to setup MCUboot properly?

    This blog post is the closest thing I could find. You can also look at https://developer.nordicsemi.com/nRF_Connect_SDK/doc/latest/nrf/ug_nrf52.html#fota-upgrades or try running this sample.

     

    2. Why there are at least two places to define flash regions (config files and board *.dts)? Which one we should consider?

    You shouldn't go with either of them. This is handled by the partition manager, and is not something you need to worry about.

     

    3. If we enable RTT console output in MCUboot, the any RTT output doesn't work when running to main application, why? 

     What configs did you set when enabling RTT, and what else did you change?

     

    4. We're going to implement one application slot because of app size. What is the recommended approach: to implement BLE DFU in MCUboot or use external flash (where main app downloads the image at QSPI NOR flash, and then calls MCUboot API to update it)?

     You should go with external flash and have the secondary slot on the external flash. BLE DFU will not work in that case.

     

    5. When trying to start a USB DFU config we just see an unknown device 'MCUBOOT' in Win10 Device Manager and nothing more. Hence, nRF Programmer tool doesn't see the device and can't access it. What we're doing wrong here? BTW, nRF Dongle doesn't create DFU port, just USB CDC ACM - it seems Programmer accesses it.

     Is the issue reproducible on other platforms/OSes as well? Win10 should have CDC drivers preinstalled, so this would normally be a Win7 issue.

    Also, I would recommend you create a separate ticket for this question.

     

    6. Should CONFIG_IS_BOOTLOADER option be checked for MCUboot configuration?

     Not as far as I know.

     

    7. How to enable BLE DFU service (in bootloader or main app)?

     You should refer to this part of the documenation.

Reply
  • Hello,

     

    1. If there any complete guide how to setup MCUboot properly?

    This blog post is the closest thing I could find. You can also look at https://developer.nordicsemi.com/nRF_Connect_SDK/doc/latest/nrf/ug_nrf52.html#fota-upgrades or try running this sample.

     

    2. Why there are at least two places to define flash regions (config files and board *.dts)? Which one we should consider?

    You shouldn't go with either of them. This is handled by the partition manager, and is not something you need to worry about.

     

    3. If we enable RTT console output in MCUboot, the any RTT output doesn't work when running to main application, why? 

     What configs did you set when enabling RTT, and what else did you change?

     

    4. We're going to implement one application slot because of app size. What is the recommended approach: to implement BLE DFU in MCUboot or use external flash (where main app downloads the image at QSPI NOR flash, and then calls MCUboot API to update it)?

     You should go with external flash and have the secondary slot on the external flash. BLE DFU will not work in that case.

     

    5. When trying to start a USB DFU config we just see an unknown device 'MCUBOOT' in Win10 Device Manager and nothing more. Hence, nRF Programmer tool doesn't see the device and can't access it. What we're doing wrong here? BTW, nRF Dongle doesn't create DFU port, just USB CDC ACM - it seems Programmer accesses it.

     Is the issue reproducible on other platforms/OSes as well? Win10 should have CDC drivers preinstalled, so this would normally be a Win7 issue.

    Also, I would recommend you create a separate ticket for this question.

     

    6. Should CONFIG_IS_BOOTLOADER option be checked for MCUboot configuration?

     Not as far as I know.

     

    7. How to enable BLE DFU service (in bootloader or main app)?

     You should refer to this part of the documenation.

Children
No Data
Related