Dear all,
I am using SES, I have an application that relies on a softdevice. For it I developed a custom bootloader that DOES NOT rely on the softdevice and only transfers data from and to an external SPI flash. The main looks like this:
#include <stdint.h>
#include <stdio.h>
extern "C"
{
#include "boards.h"
#include "nrf_bootloader_info.h"
#include "nrf_bootloader_app_start.h"
#include "nrf_nvmc.h"
#include "app_scheduler.h"
#include "app_timer.h"
}
void app_error_handler_bare(uint32_t error_code)
{
(void)error_code;
//NRF_LOG_ERROR("received an error: 0x%08x!\r\n", error_code);
NVIC_SystemReset();
}
int main()
{
nrf_drv_ppi_init();
nrf_drv_gpiote_init();
// necessary SPI transfers here
nrf_bootloader_app_start();
return 0;
}
Now, the problem is that if I build said bootloader with the NO_VTOR_CONFIG flag, any event (for instance from SPI) will hang the system. If I remove all SPI functionality and only leave the nrf_bootloader_app_start() instruction the application starts fine, as no event is ever generated inside the bootloader.
If I compile without the NO_VTOR_CONFIG flag, all SPI functionality in the bootloader works well but then the application hangs after nrf_bootloader_app_start(), which makes me think that I am doing something wrong or missing something.
I would like to keep my bootloader fairly independent from the presence (or lack) of a softdevice. More specifically I would like to have as little dependencies as possible (includes, libraries and so on). What would be the simplest, most generic way to fix this issue?
Thank you