Probability of receiving when writing falsh using QSPI: SOFTDEVICE ASSERTION FAILED error, causing device reboot.

Hello,

We use QSPI to operate the flash while ble is broadcasting. our software testers tested probabilistic reboots due to SOFTDEVICE: ASSERTION FAILED, pc = 0x0001786a or SOFTDEVICE: ASSERTION FAILED, pc = 0x00015074 or SOFTDEVICE: ASSERTION FAILED, pc = 0x00015a98. I read in the forum that RTOS turn off interrupts cannot turn off BLE interrupts and have done so, but the problem still occurs. when I write flash tests at 100ms, it goes to SOFTDEVICE in about 5 minutes: ASSERTION FAILED error.

Thank you in advance for helping me.

Best regards

Parents
  • Hello,

    What softdevice and version is this? Most of the issues we see with softdevice asserts are that the application have configured interrupt priority that conflict with the softdevice execution, so in this particular case you should likely look at the priority level of the qspi code and make sure you are not at any time disabling interrupts globally.

    Kenneth

  • The version is:s140_nrf52_7.2.0_softdevice. my code to initialize qpsi is above and does not use interrupts. the test group measured that when the program does not operate qspi flash everything is fine, when operating qspi falsh there is a problem, that's why I think it is caused by qspi falsh. the __set_BASEPRI(0x40) I use to turn off interrupts.

Reply
  • The version is:s140_nrf52_7.2.0_softdevice. my code to initialize qpsi is above and does not use interrupts. the test group measured that when the program does not operate qspi flash everything is fine, when operating qspi falsh there is a problem, that's why I think it is caused by qspi falsh. the __set_BASEPRI(0x40) I use to turn off interrupts.

Children
  • The asserts looks to be consistent with timing issues within the softdevice, so it looks like the code you have added here is preventing the softdevice to run uninterrupted. So you need to look into your qspi implementation and how it may be affecting interrupts.

    Kenneth

  • I added the ...\nRF5_SDK_17.1.0_ddde560\examples\ble_peripheral\ble_app_hrs_freertos routine inside the SDK, based on the ...\nRF5_SDK_17.1.0_ddde560\examples\peripheral\qspi routine to make a demo, this demo will read and write flash once in 100ms inside the qspi_task. after some time I still received SOFTDEVICE: ASSERTION FAILED. please replace the path ...\nRF5_SDK_17.1.0_ddde560\examples\ble_peripheral\ble_app_hrs_freertos under main.c with the one I gave to reproduce this problem in PCA10056 development board. thank you for your help!

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    /**
    * Copyright (c) 2014 - 2021, Nordic Semiconductor ASA
    *
    * All rights reserved.
    *
    * Redistribution and use in source and binary forms, with or without modification,
    * are permitted provided that the following conditions are met:
    *
    * 1. Redistributions of source code must retain the above copyright notice, this
    * list of conditions and the following disclaimer.
    *
    * 2. Redistributions in binary form, except as embedded into a Nordic
    * Semiconductor ASA integrated circuit in a product or a software update for
    * such product, must reproduce the above copyright notice, this list of
    * conditions and the following disclaimer in the documentation and/or other
    * materials provided with the distribution.
    *
    * 3. Neither the name of Nordic Semiconductor ASA nor the names of its
    * contributors may be used to endorse or promote products derived from this
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

  • Let me check with the FreeRTOS expert if he can take a look.

    Kenneth

  • Thank you very much!