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

FDS and bootloader

Hello,

I want to use FDS with bootloader but i get this error and i'am not sure how to manage it cleanly:

Linking target: _build/nrf52840_xxaa_s140.out

_build/nrf52840_xxaa_s140/nrf_dfu_flash.c.o (symbol from plugin): In function `m_nrf_log_nrf_dfu_flash_logs_data_const':
(.text+0x0): multiple definition of `m_fs'
_build/nrf52840_xxaa_s140/fds.c.o (symbol from plugin):(.text+0x0): first defined here
collect2.exe: error: ld returned 1 exit status
../../../../10_Tools/nRF5_SDK_14.2.0_17b948a/components/toolchain/gcc/Makefile.common:292: recipe for target '_build/nrf52840_xxaa_s140.out' failed
mingw32-make: *** [_build/nrf52840_xxaa_s140.out] Error 1

Parents
  • This is still an issue in the SDK v15.3.0. When one want to change the DFU name from the application using `nrf_dfu_settings_adv_name_copy` and `nrf_dfu_settings_adv_name_write`, the files nrf_dfu_settings_svci.c, nrf_dfu_settings.c and nrf_dfu_flash.c are required to be compiled.

    Error: L6200E: Symbol m_fs multiply defined (by nrf_dfu_flash.o and fds.o) occurs because:

    nRF5_SDK_15\components\libraries\fds\fds.c

    NRF_FSTORAGE_DEF(nrf_fstorage_t m_fs) =
    {
        // The flash area boundaries are set in fds_init().
        .evt_handler = fs_event_handler,
    };

    nRF5_SDK_15\components\libraries\bootloader\dfu\nrf_dfu_flash.c

    NRF_FSTORAGE_DEF(nrf_fstorage_t m_fs) =
    {
        .evt_handler = dfu_fstorage_evt_handler,
        .start_addr  = MBR_SIZE,
        .end_addr    = BOOTLOADER_SETTINGS_ADDRESS + BOOTLOADER_SETTINGS_PAGE_SIZE
    };

    Could this please be renamed (as Kristin suggested) in the next SDK revision? I would not like to edit the SDK code locally, for multiple reasons.

Reply
  • This is still an issue in the SDK v15.3.0. When one want to change the DFU name from the application using `nrf_dfu_settings_adv_name_copy` and `nrf_dfu_settings_adv_name_write`, the files nrf_dfu_settings_svci.c, nrf_dfu_settings.c and nrf_dfu_flash.c are required to be compiled.

    Error: L6200E: Symbol m_fs multiply defined (by nrf_dfu_flash.o and fds.o) occurs because:

    nRF5_SDK_15\components\libraries\fds\fds.c

    NRF_FSTORAGE_DEF(nrf_fstorage_t m_fs) =
    {
        // The flash area boundaries are set in fds_init().
        .evt_handler = fs_event_handler,
    };

    nRF5_SDK_15\components\libraries\bootloader\dfu\nrf_dfu_flash.c

    NRF_FSTORAGE_DEF(nrf_fstorage_t m_fs) =
    {
        .evt_handler = dfu_fstorage_evt_handler,
        .start_addr  = MBR_SIZE,
        .end_addr    = BOOTLOADER_SETTINGS_ADDRESS + BOOTLOADER_SETTINGS_PAGE_SIZE
    };

    Could this please be renamed (as Kristin suggested) in the next SDK revision? I would not like to edit the SDK code locally, for multiple reasons.

Children
No Data
Related