nRF5340 ESB OTA

Hello,

I have tested the smp_svr with hci_rpmsg Bluetooth OTA feature and I have successfully uploaded the firmware which worked with the old device manager Android app. I would like to use 2 nrf5340 with ESB protocol. What would be a good starting point do I use the hci_rpmsg existing code and enable ESB and configure it as such or is it better to use bootloader UART code? I am a bit stuck as the hci_rpmsg sample code is dependent on bluetooth defines and ESB and bluetooth give an error message when both are enabled. So if you could give me some guidance on the right decision and how I should handle the problem. Thank you

I am using:
2x NRF5340 DK 
nRF Connect for desktop v4.1.2
nRF Connect SDK v2.4.0

Parents
  • Hi Domen

    I think you're on a bit lower level here than what you need to be in NCS. We have a library for specifically sending DFU images to the NET core on the nRF5340 here.

    I'm not very familiar with the IPC service I'm afraid, but I think that the secondary partition for the NET core image is configured in the shared RAM between the NET and APP cores. So the NET core will take care of swapping the NET core's image in this case, and that would be why you don't see mentions of the IPC in the mgmt.c.

    Best regards,

    Simon

  • Hey Simon,

    thank you for your information. What I am after here is the understanding of the application core writing to flash or rather how to packetize the binary app_update.bin when received by the network core into a structure which is then sent over IPC to the app core, where the app core then writes onto flash. From the documentation you have sent it says that the application core cannot access the flash of the network core, I assume that the network core cannot access the applications core's flash either. So my question is when I received the binary data in the network core I want to sent this now to the app core, assuming this transfer is being done in the IPC_service, how do I need to structure the binary data and packetize it so when I send it over to the app core that it flashes the new binary?

    In my previous post the second image is a printout of what is being sent through the IPC service. Infont of the packets sent is I assume a command and padding of sorts following the data. When I initiate the firmware update through bluetooth with the device manager android app, you can distinguish that the data sent is the binary file. What I would like to do is use the ESB example for the network core, open the same IPC service, packetize the gotten binary as it needs to be and send it to the app core. I am just stuck at the stage understanding on how to make this packets for the app core to decipher that the sent data is the binary update.

    I am assuming this is the procedure of writing the binary data gotten from the network core that updates the app core. If it is different in fact, please let me know how it is done.

    Best regards,

    Domen

Reply
  • Hey Simon,

    thank you for your information. What I am after here is the understanding of the application core writing to flash or rather how to packetize the binary app_update.bin when received by the network core into a structure which is then sent over IPC to the app core, where the app core then writes onto flash. From the documentation you have sent it says that the application core cannot access the flash of the network core, I assume that the network core cannot access the applications core's flash either. So my question is when I received the binary data in the network core I want to sent this now to the app core, assuming this transfer is being done in the IPC_service, how do I need to structure the binary data and packetize it so when I send it over to the app core that it flashes the new binary?

    In my previous post the second image is a printout of what is being sent through the IPC service. Infont of the packets sent is I assume a command and padding of sorts following the data. When I initiate the firmware update through bluetooth with the device manager android app, you can distinguish that the data sent is the binary file. What I would like to do is use the ESB example for the network core, open the same IPC service, packetize the gotten binary as it needs to be and send it to the app core. I am just stuck at the stage understanding on how to make this packets for the app core to decipher that the sent data is the binary update.

    I am assuming this is the procedure of writing the binary data gotten from the network core that updates the app core. If it is different in fact, please let me know how it is done.

    Best regards,

    Domen

Children
No Data
Related