Hi DevZone,
I have recently updated:
- nRF5 SDK to 17.1.0 from 15.3.0
- S140 to 7.2.0 from 6.1.1
- SES to v6.20a from 4.16
The SoftDevice now fails to initialize when using the "Build and Run" option with SES.
The code initializes without issue if I:
- Use Programmer v2.3.3 from nRF Connect for Desktop v3.10.0
- If I Power Cycle the hardware after each flash of the .hex files
- If I "Build and Debug" with SES
Is this a known issue, and could it potentially be a timing issue?
Code that fails:
void ble_stack_init(void)
{
ret_code_t err_code;
err_code = nrf_sdh_enable_request();
APP_ERROR_CHECK(err_code);
// Configure the BLE stack using the default settings.
// Fetch the start address of the application RAM.
uint32_t ram_start = 0;
err_code = nrf_sdh_ble_default_cfg_set(BLE_CONN_CFG_TAG, &ram_start);
APP_ERROR_CHECK(err_code);
// Enable BLE stack.
err_code = nrf_sdh_ble_enable(&ram_start);
APP_ERROR_CHECK(err_code);
// // NO OBSERVERS AT THIS POINT
// // Register a handler for BLE events.
// NRF_SDH_BLE_OBSERVER(m_ble_observer, APP_BLE_OBSERVER_PRIO, ble_evt_handler, NULL);
}
Specifically the call to nrf_sdh_enable_request() returns with error code NRF_ERROR_INVALID_STATE (0x00000008).
This should mean that the SoftDevice is already initialized when reading the documentation. However, preceding the nrf_sdh_enable_request() call with a nrf_sdh_is_enabled()
tells me that it is not.
Comparing with example projects:
I have compared to the example projects given in SDK 17.1.0, and the initialization code for the BLE stack seems unchanged between versions 17.1.0 and 15.3.0.
Also, I have tried building and running the peripheral example from SDK 17.1.0 "usbd_ble_uart_freertos" both on our hardware and an nRF52840-DK, which fails with the same error code.
So, even with code directly from the SDK and on multiple hardware the issue is the same.
Thanks in advance.
Br. Casper

