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

combining fds example and lifght swich client

Hello,

I am trying to insert fds functionality to light switch client. I added all files and libraries to project. But when i try to compile project i face with errors :

1> build/light_switch_client_nrf52832_xxAA_s132_6.1.0_Debug/obj/nrf_log_frontend.o: In function `backend_name_get':
1> D:/Nordic_original/nRF5_SDK_15.2.0_9412b96/examples/peripheral/flash_fds/pca10040/s132/ses/nrf_log_frontend.c:1462: undefined reference to `__stop_log_backends'
1> D:/Nordic_original/nRF5_SDK_15.2.0_9412b96/examples/peripheral/flash_fds/pca10040/s132/ses/nrf_log_frontend.c:1462: undefined reference to `__start_log_backends'
1> build/light_switch_client_nrf52832_xxAA_s132_6.1.0_Debug/obj/nrf_log_frontend.o: In function `log_cmd_backends_list':
1> D:/Nordic_original/nRF5_SDK_15.2.0_9412b96/examples/peripheral/flash_fds/pca10040/s132/ses/nrf_log_frontend.c:1411: undefined reference to `__stop_log_backends'
1> D:/Nordic_original/nRF5_SDK_15.2.0_9412b96/examples/peripheral/flash_fds/pca10040/s132/ses/nrf_log_frontend.c:1411: undefined reference to `__start_log_backends'
1> build/light_switch_client_nrf52832_xxAA_s132_6.1.0_Debug/obj/nrf_log_frontend.o: In function `backend_find':
1> D:/Nordic_original/nRF5_SDK_15.2.0_9412b96/examples/peripheral/flash_fds/pca10040/s132/ses/nrf_log_frontend.c:1097: undefined reference to `__stop_log_backends'
1> D:/Nordic_original/nRF5_SDK_15.2.0_9412b96/examples/peripheral/flash_fds/pca10040/s132/ses/nrf_log_frontend.c:1097: undefined reference to `__start_log_backends'
1> build/light_switch_client_nrf52832_xxAA_s132_6.1.0_Debug/obj/nrf_log_frontend.o: In function `nrf_log_module_filter_set':
1> D:/Nordic_original/nRF5_SDK_15.2.0_9412b96/examples/peripheral/flash_fds/pca10040/s132/ses/nrf_log_frontend.c:276: undefined reference to `__start_log_filter_data'
1> build/light_switch_client_nrf52832_xxAA_s132_6.1.0_Debug/obj/nrf_log_frontend.o: In function `nrf_log_module_filter_get':
1> D:/Nordic_original/nRF5_SDK_15.2.0_9412b96/examples/peripheral/flash_fds/pca10040/s132/ses/nrf_log_frontend.c:290: undefined reference to `__start_log_filter_data'
1> build/light_switch_client_nrf52832_xxAA_s132_6.1.0_Debug/obj/nrf_log_frontend.o: In function `nrf_log_frontend_dequeue':
1> D:/Nordic_original/nRF5_SDK_15.2.0_9412b96/examples/peripheral/flash_fds/pca10040/s132/ses/nrf_log_frontend.c:886: undefined reference to `__start_log_filter_data'
1> build/light_switch_client_nrf52832_xxAA_s132_6.1.0_Debug/obj/nrf_log_frontend.o: In function `nrf_log_config_store':
1> D:/Nordic_original/nRF5_SDK_15.2.0_9412b96/examples/peripheral/flash_fds/pca10040/s132/ses/nrf_log_frontend.c:1009: undefined reference to `__start_log_filter_data'
1> D:/Nordic_original/nRF5_SDK_15.2.0_9412b96/examples/peripheral/flash_fds/pca10040/s132/ses/nrf_log_frontend.c:1009: undefined reference to `__stop_log_filter_data'
1> build/light_switch_client_nrf52832_xxAA_s132_6.1.0_Debug/obj/nrf_log_frontend.o: In function `nrf_log_config_load':
1> D:/Nordic_original/nRF5_SDK_15.2.0_9412b96/examples/peripheral/flash_fds/pca10040/s132/ses/nrf_log_frontend.c:1047: undefined reference to `__start_log_filter_data'
1> D:/Nordic_original/nRF5_SDK_15.2.0_9412b96/examples/peripheral/flash_fds/pca10040/s132/ses/nrf_log_frontend.c:1047: undefined reference to `__stop_log_filter_data'
Build failed

And i couldn't find these variables in both projects

Parents Reply Children
  • Hi.

    Which IDE are you using, Segger Embedded Studio? Keil?

    Best regards,

    Andreas

  • Hi.

    And did you include the source file (.c file) like this?

    And add the header file (.h file) like this?

    Best regards,

    Andreas

  • Yes, as i said before. 

    And i can't figure out where variable __stop_log_backends is.

  • Hi.

    Have you defined them in the flash_placement.xml file for your project?

    If not, can you try that?

    Here is the flash_placement.xml file for examples\sdk_coexist\ble_app_proximity_coexist project, which also has the logger module included.

    <!DOCTYPE Linker_Placement_File>
    <Root name="Flash Section Placement">
      <MemorySegment name="FLASH" start="$(FLASH_PH_START)" size="$(FLASH_PH_SIZE)">
        <ProgramSection load="no" name=".reserved_flash" start="$(FLASH_PH_START)" size="$(FLASH_START)-$(FLASH_PH_START)" />
        <ProgramSection alignment="0x100" load="Yes" name=".vectors" start="$(FLASH_START)" />
        <ProgramSection alignment="4" load="Yes" name=".init" />
        <ProgramSection alignment="4" load="Yes" name=".init_rodata" />
        <ProgramSection alignment="4" load="Yes" name=".text" />
        <ProgramSection alignment="4" keep="Yes" load="Yes" name=".sdh_soc_observers" inputsections="*(SORT(.sdh_soc_observers*))" address_symbol="__start_sdh_soc_observers" end_symbol="__stop_sdh_soc_observers" />
        <ProgramSection alignment="4" keep="Yes" load="Yes" name=".sdh_ble_observers" inputsections="*(SORT(.sdh_ble_observers*))" address_symbol="__start_sdh_ble_observers" end_symbol="__stop_sdh_ble_observers" />
        <ProgramSection alignment="4" keep="Yes" load="Yes" name=".pwr_mgmt_data" inputsections="*(SORT(.pwr_mgmt_data*))" address_symbol="__start_pwr_mgmt_data" end_symbol="__stop_pwr_mgmt_data" />
        <ProgramSection alignment="4" keep="Yes" load="Yes" name=".sdh_stack_observers" inputsections="*(SORT(.sdh_stack_observers*))" address_symbol="__start_sdh_stack_observers" end_symbol="__stop_sdh_stack_observers" />
        <ProgramSection alignment="4" keep="Yes" load="Yes" name=".sdh_req_observers" inputsections="*(SORT(.sdh_req_observers*))" address_symbol="__start_sdh_req_observers" end_symbol="__stop_sdh_req_observers" />
        <ProgramSection alignment="4" keep="Yes" load="Yes" name=".sdh_state_observers" inputsections="*(SORT(.sdh_state_observers*))" address_symbol="__start_sdh_state_observers" end_symbol="__stop_sdh_state_observers" />
        <ProgramSection alignment="4" keep="Yes" load="Yes" name=".nrf_queue" inputsections="*(.nrf_queue*)" address_symbol="__start_nrf_queue" end_symbol="__stop_nrf_queue" />
        <ProgramSection alignment="4" keep="Yes" load="Yes" name=".nrf_balloc" inputsections="*(.nrf_balloc*)" address_symbol="__start_nrf_balloc" end_symbol="__stop_nrf_balloc" />
        <ProgramSection alignment="4" keep="Yes" load="Yes" name=".cli_command" inputsections="*(.cli_command*)" address_symbol="__start_cli_command" end_symbol="__stop_cli_command" />
        <ProgramSection alignment="4" keep="Yes" load="Yes" name=".crypto_data" inputsections="*(SORT(.crypto_data*))" address_symbol="__start_crypto_data" end_symbol="__stop_crypto_data" />
        <ProgramSection alignment="4" keep="Yes" load="Yes" name=".log_const_data" inputsections="*(SORT(.log_const_data*))" address_symbol="__start_log_const_data" end_symbol="__stop_log_const_data" />
        <ProgramSection alignment="4" keep="Yes" load="Yes" name=".log_backends" inputsections="*(SORT(.log_backends*))" address_symbol="__start_log_backends" end_symbol="__stop_log_backends" />
        <ProgramSection alignment="4" keep="Yes" load="No" name=".nrf_sections" address_symbol="__start_nrf_sections" />
        <ProgramSection alignment="4" keep="Yes" load="Yes" name=".cli_sorted_cmd_ptrs"  inputsections="*(.cli_sorted_cmd_ptrs*)" runin=".cli_sorted_cmd_ptrs_run"/>
        <ProgramSection alignment="4" keep="Yes" load="Yes" name=".fs_data"  inputsections="*(.fs_data*)" runin=".fs_data_run"/>
        <ProgramSection alignment="4" keep="Yes" load="Yes" name=".log_dynamic_data"  inputsections="*(SORT(.log_dynamic_data*))" runin=".log_dynamic_data_run"/>
        <ProgramSection alignment="4" keep="Yes" load="Yes" name=".log_filter_data"  inputsections="*(SORT(.log_filter_data*))" runin=".log_filter_data_run"/>
        <ProgramSection alignment="4" keep="Yes" load="Yes" name=".nrf_mesh_flash"  inputsections="*(SORT(.nrf_mesh_flash.*))" address_symbol="__start_nrf_mesh_flash" end_symbol="__stop_nrf_mesh_flash"/>
        <ProgramSection alignment="4" load="Yes" name=".dtors" />
        <ProgramSection alignment="4" load="Yes" name=".ctors" />
        <ProgramSection alignment="4" load="Yes" name=".rodata" />
        <ProgramSection alignment="4" load="Yes" name=".ARM.exidx" address_symbol="__exidx_start" end_symbol="__exidx_end" />
        <ProgramSection alignment="4" load="Yes" runin=".fast_run" name=".fast" />
        <ProgramSection alignment="4" load="Yes" runin=".data_run" name=".data" />
        <ProgramSection alignment="4" load="Yes" runin=".tdata_run" name=".tdata" />
      </MemorySegment>
      <MemorySegment name="RAM" start="$(RAM_PH_START)" size="$(RAM_PH_SIZE)">
        <ProgramSection load="no" name=".reserved_ram" start="$(RAM_PH_START)" size="$(RAM_START)-$(RAM_PH_START)" />
        <ProgramSection alignment="0x100" load="No" name=".vectors_ram" start="$(RAM_START)" address_symbol="__app_ram_start__"/>
        <ProgramSection alignment="4" keep="Yes" load="No" name=".nrf_sections_run" address_symbol="__start_nrf_sections_run" />
        <ProgramSection alignment="4" keep="Yes" load="No" name=".cli_sorted_cmd_ptrs_run" address_symbol="__start_cli_sorted_cmd_ptrs" end_symbol="__stop_cli_sorted_cmd_ptrs" />
        <ProgramSection alignment="4" keep="Yes" load="No" name=".fs_data_run" address_symbol="__start_fs_data" end_symbol="__stop_fs_data" />
        <ProgramSection alignment="4" keep="Yes" load="No" name=".log_dynamic_data_run" address_symbol="__start_log_dynamic_data" end_symbol="__stop_log_dynamic_data" />
        <ProgramSection alignment="4" keep="Yes" load="No" name=".log_filter_data_run" address_symbol="__start_log_filter_data" end_symbol="__stop_log_filter_data" />
        <ProgramSection alignment="4" keep="Yes" load="No" name=".nrf_sections_run_end" address_symbol="__end_nrf_sections_run" />
        <ProgramSection alignment="4" keep="Yes" load="No" name=".nrf_mesh_ram"  inputsections="*(SORT(.nrf_mesh_ram.*))" address_symbol="__start_nrf_mesh_ram" end_symbol="__stop_nrf_mesh_ram"/>
        <ProgramSection alignment="4" load="No" name=".fast_run" />
        <ProgramSection alignment="4" load="No" name=".data_run" />
        <ProgramSection alignment="4" load="No" name=".tdata_run" />
        <ProgramSection alignment="4" load="No" name=".bss" />
        <ProgramSection alignment="4" load="No" name=".tbss" />
        <ProgramSection alignment="4" load="No" name=".non_init" />
        <ProgramSection alignment="4" size="__HEAPSIZE__" load="No" name=".heap" />
        <ProgramSection alignment="8" size="__STACKSIZE__" load="No" place_from_segment_end="Yes" name=".stack"  address_symbol="__StackLimit" end_symbol="__StackTop"/>
        <ProgramSection alignment="8" size="__STACKSIZE_PROCESS__" load="No" name=".stack_process" />
      </MemorySegment>
    </Root>
    

    Try to take the ProgramSection's for __stop_log_backends, __start_log_backends, and __start_log_filter_data, from the file above and add them to the flash_placement.xml file for your project.

    Best regards,

    Andreas

Related