This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Unable to DFU net-core using SDC to the zephyr BT controller.

I've found a netcore DFU path that doesn't seem to work on the nrf5340 in my application and cannot make sense of the behavior.

SDK: 1.9.1

For all the examples below I am performing a manual DFU by directly flashing the net_core_app_moved_test_update.hex file generated during build and then doing a flash dump of the netcore to compare against the expected merged_CPUNET.hex.

Successful netcore DFUs ( SDC - Soft Device Controller, ZBTC - Zephyr BT Controller):

  • SDC->SDC
    • Starting with netcore configuration using SDC
    • Flash entire 5340 app + net images
    • Create a new netcore image with a slightly modified configuration still using SDC
    • Flash the moved netcore hex file into MCU boot swap space.
    • Read back and confirm netcore is updated
  • ZBTC->ZBTC
    • Start with netcore configuration using zephyr BT controller (CONFIG_BT_LL_SW_SPLIT=y)
    • Flash entire 5340 app + net images
    • Create a new netcore image with a slightly modified configuration still using zephyr BT controller
    • Flash the moved netcore hex file into MCU boot swap space.
    • Read back and confirm netcore is updated
  • ZBTC->SDC
    • Start with netcore configuration using zephyr BT controller (CONFIG_BT_LL_SW_SPLIT=y)
    • Flash entire 5340 app + net images
    • Create a new netcore image using SDC
    • Flash the moved netcore hex file into MCU boot swap space.
    • Read back and confirm netcore is updated

Failing DFU:

  • SDC->ZBTC
    • Starting with netcore configuration using SDC
    • Flash entire 5340 app + net images
    • Create a new netcore image using zephyr BT controller (CONFIG_BT_LL_SW_SPLIT=y)
    • Flash the moved netcore hex file into MCU boot swap space.
    • Read back and be surprised the netcore is not updated

Other observations

  • I started this investigation by trying to do the nrf connect OTA of just the netcore and was able to see the same behavior. The above method of using the net_core_app_moved_test_update.hex file is obviously simpler and narrows the problem area.
  • In the failing case, if I watch the RTT viewer or monitor my device for startup behavior, it behaves as if the MCUBOOT update wasn't even attempted
  • If I install an SDC netcore version that is incompatible with the appcore, the applications hang at bt_enable(). At this point I can then successfully DFU from SDC->ZBTC
Related