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

dfu problem

Hello,

I'm realizing dfu.

  1. 1st case - for test NRF_LOG_PRINTF("main start\r\n"); // ******* main loop start ******* // while (1) { enterBootloader();

     }
    

Dfu works well.

  1. 2nd case - question I call enterBootloader(); in some function. I can see jumping to the enterBootloader(). But, I can't see my device in nrfToolBox.

  2. question : Application doesn't restart automatically after dfu done successfully.

  • I use sd130/sdk12.1.0. and experimental_ble_app_buttonless_dfu.

image description

thanks.

Parents
  • I tried repetition and delay. The result is same.

    void enterBootloader(void)
    {
    #if 0			// old
    	s_dfu_settings.enter_buttonless_dfu = true;
    	(void)nrf_dfu_settings_write(flash_callback);
    	sd_nvic_SystemReset();
    
    #else
    	uint8_t i;
    	uint8_t result = 0;
    
    	__disable_irq();
    	nrf_delay_ms(100);
    
    	s_dfu_settings.enter_buttonless_dfu = true;
    
    	for(i=0; i<10; i++)
    	{
    		if(nrf_dfu_settings_write(flash_callback) == NRF_SUCCESS)
    		{
    			result = 1;
    			break;
    		}
    		else
    			nrf_delay_ms(200);
    	}
    
    	if(result)
    	{
    		nrf_delay_ms(100);
    		sd_nvic_SystemReset();
    	}
    	else
    	{
    
    	}
    #endif
    }
    
Reply
  • I tried repetition and delay. The result is same.

    void enterBootloader(void)
    {
    #if 0			// old
    	s_dfu_settings.enter_buttonless_dfu = true;
    	(void)nrf_dfu_settings_write(flash_callback);
    	sd_nvic_SystemReset();
    
    #else
    	uint8_t i;
    	uint8_t result = 0;
    
    	__disable_irq();
    	nrf_delay_ms(100);
    
    	s_dfu_settings.enter_buttonless_dfu = true;
    
    	for(i=0; i<10; i++)
    	{
    		if(nrf_dfu_settings_write(flash_callback) == NRF_SUCCESS)
    		{
    			result = 1;
    			break;
    		}
    		else
    			nrf_delay_ms(200);
    	}
    
    	if(result)
    	{
    		nrf_delay_ms(100);
    		sd_nvic_SystemReset();
    	}
    	else
    	{
    
    	}
    #endif
    }
    
Children
No Data
Related