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

Got NRF_FAULT_ID_SD_ASSERT with PC == 0x14CE0, SOFTDEVICE V7.2.0

Hi :

    We create  UART Over BLE service on NRF52832 SoC.  It worked fine used SoftDevice V2.0.

    Now update SoftDevice to V7.2.0.  got this issue.  where can i found SoftDevice ASSERT detail information? How to solution this issue?

   the NRF52840 dongle can find it , connected, get it's service.

Here is my config:


    // config S132 softDevice
    // first link
    memset(&cfg, 0, sizeof(ble_cfg_t));
    cfg.conn_cfg.conn_cfg_tag = 1;
    cfg.conn_cfg.params.gap_conn_cfg.conn_count = 1;
    cfg.conn_cfg.params.gap_conn_cfg.event_length = 6;
    err_code = sd_ble_cfg_set(BLE_CONN_CFG_GAP, &cfg, app_ram_base);
    memset(&cfg, 0, sizeof(ble_cfg_t));
    cfg.common_cfg.vs_uuid_cfg.vs_uuid_count = 4;
    err_code = sd_ble_cfg_set(BLE_COMMON_CFG_VS_UUID, &cfg, app_ram_base);
//    // config GATT MUT size to 247
//    memset(&cfg, 0, sizeof(ble_cfg_t));
//    cfg.conn_cfg.conn_cfg_tag = 1;
//    cfg.conn_cfg.params.gatt_conn_cfg.att_mtu = 247;
//    err_code = sd_ble_cfg_set(BLE_CONN_CFG_GATT, &cfg, app_ram_base);
    // config GAP role & connect
    memset(&cfg, 0, sizeof(ble_cfg_t));
    cfg.gap_cfg.role_count_cfg.periph_role_count = 1;
    cfg.gap_cfg.role_count_cfg.central_role_count = 0;
    cfg.gap_cfg.role_count_cfg.central_sec_count  = 0;
    err_code = sd_ble_cfg_set(BLE_GAP_CFG_ROLE_COUNT, &cfg, app_ram_base);
    // config Gatts attribute tab size & service changed flag
    memset(&cfg, 0, sizeof(ble_cfg_t));
    cfg.gatts_cfg.attr_tab_size.attr_tab_size = 1536;
    err_code = sd_ble_cfg_set(BLE_GATTS_CFG_ATTR_TAB_SIZE, &cfg, app_ram_base);
    memset(&cfg, 0, sizeof(ble_cfg_t));
    cfg.gatts_cfg.service_changed.service_changed = 1;
    err_code = sd_ble_cfg_set(BLE_GATTS_CFG_SERVICE_CHANGED, &cfg, app_ram_base);

    err_code = sd_ble_enable(&app_ram_base);

  • I have no issues using your configuration on the ble_uart peripheral example and no no issues or asserts so far.

    I am using nrf_sdh_ble.c file and changed the values like attr_tab size and service changed enabled like you have.

    I also had to change the ram start and size configuration since you were using larger attr_tab size than default ble_app_uart example

     <warning> nrf_sdh_ble: Change the RAM start location from 0x20002AD8 to 0x20002B88.

    After changing that everything seems to work. 

    So the configuration you attached seems not to be me the reason for the softdevice assert. The assert seems to be happening inside the ll_controller scheduler which most likely happens when you have some other high priority interrupt masking the ll_controller scheduler. It could be that you forgot to configure the priority of some interrupt for the peripheral you have enabled. If not, then i would like to get the minimalistic project from your side to be able to reproduce this at my desk so that i can debug and investigate more on the cause of this assert.

Related