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

NRF52840 dongle firmware question

The dongle is an excellent piece of hardware. However the features of DFU is rather limited.

I am wondering if I can put two hex files onto the dongle? For example,

1. My own bootloader right after MBR at flash address 0x1000, takes 64KB

2. My own application firmware hex file, starting from address 0x11000.

In this case my code can manage the entire flash memory up to the nRF bootloader while I can still use nRF connect with nRF DFU bootloader.

So far I have not tried two hex files. I would like to ask first if it is even possible?

  • Hello,

    I can't think of any reasons for why this would not work as long as you only intend to support application updates and not plan on using the Softdevice (BLE stack in the nRF5 SDK). The pre-programmed bootloader will protect itself and the MBR on startup with the ACL peripheral.

    But it would probably be easier if you used a J-link programmer and just removed the existing bootloader. We have a tutorial on the various ways you can program the dongle here: https://devzone.nordicsemi.com/guides/short-range-guides/b/getting-started/posts/nrf52840-dongle-programming-tutorial

    Best regards,

    Vidar

  • Hi Vidar,

    Thanks for your response. I just did some further reading on your Q&A. Here are my understandings:

    1. The nRF MBR will jump to fixed address of 0x1000 if the DFU is not triggered.

    2. nRF tools can only write hex files with specified starting address to dongle.

    If my understandings are correct I believe it is enough for what I wanted.

    I do have j-link, tag-connect pogo cables etc. But I would like to make my system available to people who only have the dongles.

    Also about the j-link, I managed to find out the pin out layout of the tag-connect pogo cables for the dongle. It appears the adapter below may work and I am still waiting for shipment.

    https://www.adafruit.com/product/2094#tutorials

  • Hi,

    1. Yes, correct.

    2. Yes, this limitation applies to when you do serial DFU over the USB interface. The app RAM start address must also be set to 0x20000008 as the first two words are reserved to the MBR (for interrupt forwarding).

  • Thanks again!

    Just did a quick search on the Q&A and learnt that interrupt forwarding is for CM0 which doesn't allow NVIC relocation.

    I didn't know there is such a thing in the world before!!!

    I believe in my own bootloader I can still relocate NVIC because I never meant to build anything for CM0 and I don't plan to use soft device. Is that right?

  • No problem Slight smile  Unlike the M0, the M4 has the VTOR register which, after startup, lets you cange the interrupt forwarding address in HW (default address after reset is always 0x0). And yes, you can set the VTOR to point to your application's vector table when you don't use the Softdevice.

Related