Hi.
I' m using nRF52832, SDK v15.0.0, S132.
I'm want tutorial how make bootloader DFU in IAR.
How I make bootloader DFU for nrf52832 in IAR?
Hi.
I' m using nRF52832, SDK v15.0.0, S132.
I'm want tutorial how make bootloader DFU in IAR.
How I make bootloader DFU for nrf52832 in IAR?
I build project.
I added peer_id.c, peer_data_storage.c, peer_database.c, peer_manager.c, pm_buffer.c, pm_mutex.c, security_dispatcher.c, security_manager.c, gatt_cache_manager.c, gatts_cache_manager.c,id_manager.c include in sdk_config.h CRC16_EABLE, FDS_ENABLE, NRF_DFU_BLE_BUTTONLESS_SUPPORTS_BONDS, NRF_SDH_BLE_SERVICE_CHANGED and BLE_DFU_ENABLED and added BL_SETTINGS_ACCESS_ONLY, NRF_DFU_SVCI_ENABLED
NRF_DFU_TRANSPORT_BLE=1
There is a guide or an application note that explains the several steps needed to integrate buttonless DFU to a custom application?
What do I must make for full completions buttonless DFU?
No, unfortunately we do not have such a guide.
I suggest that you compare the project settings of your ble_app_uart project IAR project with the settings of the ble_app_buttonless_dfu IAR project. You will then see which .c files that are nescessary , which paths to .h files that must be added to the include directories path and which Preprocessor definitions that are needed.
In project ble_app_uart function advertising_start have the form
static void advertising_start(void) { uint32_t err_code = ble_advertising_start(&m_advertising, BLE_ADV_MODE_FAST); APP_ERROR_CHECK(err_code); }
In project ble_app_buttonless_dfu function advertising_start have the form
static void advertising_start(bool erase_bonds)
{
if (erase_bonds == true)
{
delete_bonds();
// Advertising is started by PM_EVT_PEERS_DELETE_SUCCEEDED event.
}
else
{
uint32_t err_code = ble_advertising_start(&m_advertising, BLE_ADV_MODE_FAST);
APP_ERROR_CHECK(err_code);
NRF_LOG_DEBUG("advertising is started");
}
}
Which do one to use function advertising_start ?
Just use the second one, i.e. advertising_start(bool erase_bonds), with erase_bonds = false.
I solved the compilation problems. I changed the function "services_init(void)" of project ble_app_uart in:
static void services_init(void)
{
uint32_t err_code;
ble_nus_init_t nus_init;
nrf_ble_qwr_init_t qwr_init = {0};
ble_dfu_buttonless_init_t dfus_init = {0};
// Initialize Queued Write Module.
qwr_init.error_handler = nrf_qwr_error_handler;
err_code = nrf_ble_qwr_init(&m_qwr, &qwr_init);
APP_ERROR_CHECK(err_code);
// Initialize NUS.
memset(&nus_init, 0, sizeof(nus_init));
nus_init.data_handler = nus_data_handler;
err_code = ble_nus_init(&m_nus, &nus_init);
APP_ERROR_CHECK(err_code);
//***** buttonless DFU *****
// Initialize the async SVCI interface to bootloader.
err_code = ble_dfu_buttonless_async_svci_init();
APP_ERROR_CHECK(err_code);
dfus_init.evt_handler = ble_dfu_evt_handler;
err_code = ble_dfu_buttonless_init(&dfus_init);
APP_ERROR_CHECK(err_code);
//**************************
}
and add peer_manager_init
int main(void)
{
bool erase_bonds;
// static uint32_t pages_to_erase = 1;
// Initialize.
log_init();
timers_init();
buttons_leds_init(&erase_bonds);
power_management_init();
ble_stack_init();
peer_manager_init();
gap_params_init();
gatt_init();
services_init();
advertising_init();
conn_params_init();
// Start execution.
advertising_start(erase_bonds);
I want start buttonless DFU with command. I get command through ble uart. How do I may it make?