This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

Forwarding Interrupts to application without SD use

Hello,

I have an application that uses the Soft-Device. That application want to start a SPI-Bootloader. That SPI-Bootloader isn't the only bootloader on the device, so I just want the application to forward all interrupts to the SPI-Bootloader. The SPI-bootloader doesn't make use of the softdevice.

this is the code, that tries to start the bootloader:

void start_bootloader_without_sd( std::uint32_t start_address )
{
    sd_softdevice_disable();

    // set vector table of master bootrecord direct to the bootloaders start address
    sd_mbr_command_t command = { SD_MBR_COMMAND_VECTOR_TABLE_BASE_SET };
    command.params.base_set.address = start_address;

    const auto rc = sd_mbr_command( &command );
    static_cast< void >( rc );
    assert( rc != NRF_SUCCESS );

    NVIC_SystemReset();
}

After the final reset, the MBR does not forward the reset handler to the SPI bootloader. When I try to debug the startup, it looks like the MBR tries to start an application at 0xffffffff. In addion, I observed, that the RAM is inaccessable from the debugger.

According to the documentation, I would say, the code above should work, but it doesn't. Any idea, why it is not working as expected?

Softdevice is S310, version is 2.0.

kind regards,

Torsten

Parents Reply Children
No Data
Related