SOFTDEVICE : INVALID MEMORY ACCESS ERROR while running integrated multilink ble uart central and nfc writable ndef msg project.

Hi Nordic Team,

My dev environment is as follow:

nRF52832(Ble Central + nfc) + S132+ SES

I have integrated BLE Central Multilink uart project with nfc writable ndef msg project . I have included all the files necessary for nfc and had removed nrf_nvic and nrf_soc files from driver folder as per instruction from one of the post here . But i am still getting "SOFTDEVICE:INVALID MEMORY ACCESS ERROR" and the code gets stuck in line "APP_SCHED_INIT()".

Kindly help me resolve this issue . Thank you.

Parents
  • Hello,

    The NRF_FAULT_ID_APP_MEMACC assert indicates that the app FW either tried to access a Softdevice reserved peripheral (Hardwar peripherals), or wrote something to the Softdevice reserved RAM region.

    Please read the value of the 'info' argument passed to the app_error_fault_handler() when you get the error to see if it was a RAM or peripheral access violation.

    You can make the fault handler print the info value like this:

    __WEAK void app_error_fault_handler(uint32_t id, uint32_t pc, uint32_t info)
    {
        __disable_irq();
        NRF_LOG_FINAL_FLUSH();
    
    #ifndef DEBUG
        NRF_LOG_ERROR("Fatal error");
    #else
        switch (id)
        {
    #if defined(SOFTDEVICE_PRESENT) && SOFTDEVICE_PRESENT
            case NRF_FAULT_ID_SD_ASSERT:
                NRF_LOG_ERROR("SOFTDEVICE: ASSERTION FAILED");
                break;
            case NRF_FAULT_ID_APP_MEMACC:
                NRF_LOG_ERROR("SOFTDEVICE: INVALID MEMORY ACCESS. Info %d", info); // modified line
                break;
    #endif

    Best regards,

    Vidar

Reply
  • Hello,

    The NRF_FAULT_ID_APP_MEMACC assert indicates that the app FW either tried to access a Softdevice reserved peripheral (Hardwar peripherals), or wrote something to the Softdevice reserved RAM region.

    Please read the value of the 'info' argument passed to the app_error_fault_handler() when you get the error to see if it was a RAM or peripheral access violation.

    You can make the fault handler print the info value like this:

    __WEAK void app_error_fault_handler(uint32_t id, uint32_t pc, uint32_t info)
    {
        __disable_irq();
        NRF_LOG_FINAL_FLUSH();
    
    #ifndef DEBUG
        NRF_LOG_ERROR("Fatal error");
    #else
        switch (id)
        {
    #if defined(SOFTDEVICE_PRESENT) && SOFTDEVICE_PRESENT
            case NRF_FAULT_ID_SD_ASSERT:
                NRF_LOG_ERROR("SOFTDEVICE: ASSERTION FAILED");
                break;
            case NRF_FAULT_ID_APP_MEMACC:
                NRF_LOG_ERROR("SOFTDEVICE: INVALID MEMORY ACCESS. Info %d", info); // modified line
                break;
    #endif

    Best regards,

    Vidar

Children
Related