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

52810, how to use dfu?

Hello, guys, I develop 52810 with sdk 14.1.0, i need the OTA features, but i couldn't find the dfu demo(ble secure dfu bootloader and buttonless dfu template app, pca10040e), what can i do ?

Do you give the dfu demo for 52810 later?

  • Hello!Some about DFU example migrated to nRF52810.

    1.Modify nrf_ble_dfu_s112.c by this code:

    	#if (NRF_SD_BLE_API_VERSION >= 3)// && !S112)
    				case BLE_GATTS_EVT_EXCHANGE_MTU_REQUEST:
    				{
    						err_code = sd_ble_gatts_exchange_mtu_reply(p_ble_evt->evt.gatts_evt.conn_handle,
    																											 NRF_SDH_BLE_GATT_MAX_MTU_SIZE);
    						APP_ERROR_CHECK(err_code);
    				} break; // BLE_GATTS_EVT_EXCHANGE_MTU_REQUEST
    #if (!S112)
    				case BLE_GAP_EVT_DATA_LENGTH_UPDATE_REQUEST:
    				{
    						ble_gap_data_length_params_t const dlp =
    						{
    								.max_rx_octets = BLE_GAP_DATA_LENGTH_AUTO,
    								.max_tx_octets = BLE_GAP_DATA_LENGTH_AUTO,
    						};
    
    						err_code = sd_ble_gap_data_length_update(p_ble_evt->evt.gatts_evt.conn_handle,
    																										 &dlp, NULL);
    						APP_ERROR_CHECK(err_code);
    				} break; // BLE_GAP_EVT_DATA_LENGTH_UPDATE_REQUEST
    #endif
    #endif
    
    1. Firmware id for s112 is 0xA6 (--sd-req 0xA6). It used for generate dfu image.
  • Thank you very much! Recently I changed nrf52832 because RAM and ROM, thank you very much too!

  • The changes proposed by @maksym has been added to the attached files.

  • In case anyone else finds this and has an issue with compilation failing due to invalid options (using hardware floating point with the 52810):

    The options for "micro_ecc_lib_nrf52.lib" included in the project file has a path using the nrf52hf_keil directory in the micro-ecc directory.  Since the NRF52810 does not have hardware floating point capability it will fail to compile (linker error about invalid options).

    I spent a lot of time thinking I'd built the wrong version of the micro-ecc library, but it turns out to be an incorrect setting in the project file.  TO use the non-hardware floating point version, right click on the "micro_ecc_lib_nrf52.lib" file in the Project listing (it'll be inside the nRF_micro-ecc folder).  Select the "Options for File" contextual menu item.  In the "Path" variable, change the "nrf52hf_keil" to "nrf52nf_keil".

    This should get rid of the linker error assuming micro-ecc was compiled correctly.

    -F

Related