Hi,
I'm making my own program to upgrade the nRF9160's modem firmware over SWD. So far, application note nAN41 has helped a lot, but I'm getting stuck when trying to get the firmware loader up and running. After the loader has been programmed into RAM and the IPC transaction is started, the IPC.MODEM_CTRL_EVENT doesn't get set within 10 seconds. The modem control event does get asserted without faults when reading the key digest, so the modem has booted correctly I also verified whether the contents of the loader matched the written RAM, which is the case.
To check whether I'm missing something, I compared the programming sequence of the nrf_dfu_api with nAN41. I saw some differences but it didn't seem to help:
- All IPC events are acknowledged after the IPC is configured (self.acknowlage_events()).
- The RAM is powered on prior to making all sections non-secure (self.api.power_ram_all()). Not sure if it's needed and what this function does as it's a proprietary driver.
- The modem response is read after acknowledging events (self.read_be(0x2000000C))
Is there some step I'm maybe missing after loading the firmware loader? It's not stated in the manual, but do I need to enable the core again because it's halted? If it is, how do I set the correct starting address in the MCU where it should boot from?
Thanks,
Martin