NFC and FOTA does not work

Hi

SDK: nRF Connect v2.6.1
uP: nRF52832

In my project I try to compbine NFC and FOTA (DFU over BLE). First I did setup a NFC project from the example "writable_ndef_msg". This is running. Then I did setup a demo project based on that example: https://academy.nordicsemi.com/courses/nrf-connect-sdk-intermediate/lessons/lesson-8-bootloaders-and-dfu-fota/

But after combining those two example project, FOTA does not run. In the "Device Manager" App on my mobile phone I received a "GATT CONN TIMEOUT" error, after starting a firmware upgrade. To speed up the start time, CONFIG_BOOT_VALIDATE_SLOT0=n is set to no in child_image/mcuboot.conf

I think I missed to set a configuration in the prj.conf file but I have no idea what could be wrong.

Further could that be a problem that NFC is allowed to write to the flash?

CONFIG_MPU_ALLOW_FLASH_WRITE=y
CONFIG_FLASH=y
CONFIG_FLASH_PAGE_LAYOUT=y
CONFIG_NVS=y

Attached you find my project.

Thanks and best regards
Markus

  • Hi Abhijith

    I changed the stack size of those two setting, but stack overflow still does happens as soon as trying to read some infos from the nRF52832 over BLE. Wich values would you suggest for those two stack sizes?

    #
    # Copyright (c) 2019 Nordic Semiconductor ASA
    #
    # SPDX-License-Identifier: LicenseRef-Nordic-5-Clause
    #
    CONFIG_NCS_SAMPLES_DEFAULTS=y
    
    CONFIG_NFC_T4T_NRFXLIB=y
    
    CONFIG_NFC_NDEF=y
    CONFIG_NFC_NDEF_MSG=y
    CONFIG_NFC_NDEF_RECORD=y
    CONFIG_NFC_NDEF_URI_REC=y
    CONFIG_NFC_NDEF_URI_MSG=y
    
    CONFIG_MPU_ALLOW_FLASH_WRITE=y
    CONFIG_FLASH=y
    CONFIG_FLASH_PAGE_LAYOUT=y
    CONFIG_NVS=y
    CONFIG_DK_LIBRARY=y
    
    
    # Enable Bluetooth for FOTA (DFU)
    CONFIG_BT=y
    CONFIG_BT_PERIPHERAL=y
    CONFIG_BT_DEVICE_NAME="NFC+DFU"
    
    # Enable MCUboot and FOTA
    CONFIG_BOOTLOADER_MCUBOOT=y
    CONFIG_NCS_SAMPLE_MCUMGR_BT_OTA_DFU=y
    
    #use LFRC instead of LFXO --> decrease start up time
    CONFIG_CLOCK_CONTROL_NRF_K32SRC_RC=y
    
    
    #stack size
    CONFIG_MAIN_STACK_SIZE=4096
    CONFIG_SYSTEM_WORKQUEUE_STACK_SIZE=8192

    thanks and best regards
    Markus

  • Hello,

    I tried initializing BLE first, then NFC, and it's working on my side. I have also changed a few config values, but I guess the issue is with the initialization. Please take a closer look and optimize the config values accordingly

    Case_339301.zip

    Kind Regards,

    Abhijith 

  • Hi Abhijith

    thanks a lot for your enhanced demo code.

    Finaly i found the issue.
    In the main loop the k_sleep was missing. In my demo I did not add a sleep into the mainloop. 

    	while (true) {
            k_sleep(K_MSEC(10));
    	}
    

    After adding k_sleep FOTA is working as expected. I guess bluetooth process did not get any run time while in main loop no sleep instruction is added.

    Demo is running with default stack size.

    Thanks a lot for your help

    best regards
    Markus

Related