I am trying to extend an older 1.7.0 SDK to add functional BT support, which currently only has serial port communications. i don't really understand the terms for the functional parts, and understand the sdk is replaced with new..

the provider has provided source for their firmware which provides serial port communications to control operation only in old sdk 1.7.0 format

I need to use some other approach..

I would like to use pairing to connect my app to the local device

and then the local device would be ble central

and remotes would be ble peripheral 

today the 'same' firmware is loaded on both identical devices

but my testing will have a different local device using the 52840 and the remote is 52833

so my firmware update should be able to distinguish how to operate, I 'think' this is different boards and different binary builds. 

my app would pair with the local device (should only ever connect to ONE local device, during initial setup, the device is nearby)

there 'is' a possibility that there COULD be multiple instances of the same local device within bt range, so want to preclude ever seeing talking to others

in the future these devices would be BT6 with channel sounding support. but still architected this way to minimize dependencies.

data traffic from app to local device is low, done with BT notification (using ble).. 

I suppose I could store persistent data on both app device and local device with some key/identifier to be able to use only ble (one of the future devices says single mode bt, aka ble only)

but I still don't understand how to configure the 1.7.0 sdk to add the function that I can use.   the java config app assumes you know what the words/terminology means

and understand the concurrence (this function and not that) restrictions..

the provider has another instance using the 1.7.0 sdk  with BT ble peripheral only (but does not have serial port comms at all) 

extending their firmware is an exercise for the user (me!).. so trying to get my head around the config 

I can build each w the segger IDE, so that part is ready.

I have flashed the build with the IDE as well and command line tools.. so have that

have ble code that does most of what I want in both ios and android.. so have ble experience.  now to get runtime in the right config.. 

Parents
  • Hi,

    I would recommend that you look in to using NRF Connect SDK that is based on Zephyr as the building blocks for a project that you want to future proof as you are looking at Channel sounding and Bluetooth 6, and use NCS 2.7.0.  


    If I understood correctly, 

    You are working with a product that needs to get some new features, the current product and its SW is provided and that is what you want to modify ?

    You should be able to get the programs to work with both the 840 and the 833.



    But I am a bit unsure what SDK you are talking about if it is the nRF5 SDK or the NCS


    BLE samples can be found here: https://docs.nordicsemi.com/bundle/ncs-2.7.99-cs2/page/nrf/samples/bl.html 


    Regards,
    Jonathan

  • i am extending the qorvo uwb build which uses the 1.7.0 sdk. its supports the 833 and 840 already.

    i will do similar with the nrf sdk for cs, but hardware not available yet 

  • turns out this was a path problem..  inside segger there was no path to mergehex, adding the full path solve that..

    removing the SDK_BSP folder from the project and using full links to the sdk instead of relative (../../....) builds using the direct package sdk.  altho link fails, I think because link is still using the relative path(haven't fond that one in config yet) , and maybe the sdk_config.h not being correct 

  • so I have the projects building as distributed. I want to add BLE to one.

    I have checked and changed the sdk_config.h in the target project

    the embedded sdk file tree has the files (c and h) , but the project in Segger doesn't show them, 

    I can copy from one project to another, and the C files are processed, but the h files are not found. 

    another different sdk/IDE config I expect

    update:

    errors here are cauced by the include files not in the preprocessor include list... 

    still can't see .h in segger but it doesn't impact build if u have the right paths setup

  • well it turns out that the compiler include path list has to have all those directories included explicitly. 

    still digging thru the errors to find the missing pieces

  • ok, almost there

    I am adding stuff from another project that uses softdevice for ble. 

    build works, but link fails

    ```text

    Linking 'DWM3001CDK-DW3_QM33_SDK_UCI-FreeRTOS.elf'
    "/Applications/SEGGER/SEGGER Embedded Studio 8.14a/gcc/arm-none-eabi/bin/ld" -X --omagic -eReset_Handler -EL --gc-sections "-T/Users/sam/Downloads/DWM3001CDK DK Software, Sources, Tools and Developer Guide 3/DWM3001CDK DK/DWM3001CDK_SDK/Sources/DWM3001CDK-DW3_QM33_SDK-FreeRTOS_0_1_1/DWM3001CDK-DW3_QM33_SDK-FreeRTOS/Projects/DW3_QM33_SDK/FreeRTOS/DWM3001CDK/ses/Output/DWM3001CDK-DW3_QM33_SDK_UCI-FreeRTOS Common/Obj/$(FolderName)/DWM3001CDK-DW3_QM33_SDK_UCI-FreeRTOS.ld" -Map "/Users/sam/Downloads/DWM3001CDK DK Software, Sources, Tools and Developer Guide 3/DWM3001CDK DK/DWM3001CDK_SDK/Sources/DWM3001CDK-DW3_QM33_SDK-FreeRTOS_0_1_1/DWM3001CDK-DW3_QM33_SDK-FreeRTOS/Projects/DW3_QM33_SDK/FreeRTOS/DWM3001CDK/ses/Output/Common/Exe/DWM3001CDK-DW3_QM33_SDK_UCI-FreeRTOS.map" -u_vectors -o "/Users/sam/Downloads/DWM3001CDK DK Software, Sources, Tools and Developer Guide 3/DWM3001CDK DK/DWM3001CDK_SDK/Sources/DWM3001CDK-DW3_QM33_SDK-FreeRTOS_0_1_1/DWM3001CDK-DW3_QM33_SDK-FreeRTOS/Projects/DW3_QM33_SDK/FreeRTOS/DWM3001CDK/ses/Output/Common/Exe/DWM3001CDK-DW3_QM33_SDK_UCI-FreeRTOS.elf" --emit-relocs --start-group "@/Users/sam/Downloads/DWM3001CDK DK Software, Sources, Tools and Developer Guide 3/DWM3001CDK DK/DWM3001CDK_SDK/Sources/DWM3001CDK-DW3_QM33_SDK-FreeRTOS_0_1_1/DWM3001CDK-DW3_QM33_SDK-FreeRTOS/Projects/DW3_QM33_SDK/FreeRTOS/DWM3001CDK/ses/Output/DWM3001CDK-DW3_QM33_SDK_UCI-FreeRTOS Common/Obj/$(FolderName)/DWM3001CDK-DW3_QM33_SDK_UCI-FreeRTOS_files.ind" --end-group --whole-archive ../../../../../Libs/niq/libniq-m4-hfp-1.1.0.0.a ../../../../../Libs/dwt_uwb_driver/lib/libdwt_uwb_driver-m4-hfp-6.0.14.a ../../../../../Libs/uwbstack/uwbstack_lib/lib/cmsis_v1/uci/uci_backend/libuci_backend_coordinator_arm-m4-hfp_R11.9.2.a ../../../../../Libs/uwbstack/uwbstack_lib/lib/cmsis_v1/uci/uci_backend/libuci_backend_arm-m4-hfp_R11.9.2.a ../../../../../Libs/uwbstack/uwbstack_lib/lib/cmsis_v1/uci/uci_core/libuci_core_arm-m4-hfp_R11.9.2.a ../../../../../Libs/uwbstack/uwbstack_lib/lib/cmsis_v1/embedded_mac/libembedded_mac_arm-m4-hfp_R11.9.2.a --no-whole-archive
    Output/DWM3001CDK-DW3_QM33_SDK_UCI-FreeRTOS Common/Obj/common/nrf_sdh.o: in function `nrf_sdh_evts_poll':
    (.text.SWI2_EGU2_IRQHandler+0x8): undefined reference to `nrf_section_iter_init'
    (.text.SWI2_EGU2_IRQHandler+0x18): undefined reference to `nrf_section_iter_next'
    Output/DWM3001CDK-DW3_QM33_SDK_UCI-FreeRTOS Common/Obj/common/nrf_sdh.o:(.rodata.sdh_stack_observers+0x0): undefined reference to `__start_sdh_stack_observers'
    Output/DWM3001CDK-DW3_QM33_SDK_UCI-FreeRTOS Common/Obj/common/nrf_sdh.o:(.rodata.sdh_stack_observers+0x4): undefined reference to `__stop_sdh_stack_observers'
    Build failed, exit status 0x1
    ```
    looking for nrf_section_iter_init, __start_sdh_stack_observers, __stop_sdh_stack_observers
    all referenced from nrf_sdh.c
    softdevice
    I don't see the LINK source for those, and I think they should be added in the mergehex step that adds the softdevice binary to the firmware binary
  • For the sdh_stack errors, you can refer to this thread to see how to fix those errors.

    The errors with nrf_section_iter_init and nrf_section_iter_next are usually due to issues with section variables in the nRF5 SDK. Here’s a simpler breakdown of what might be happening and how to fix it:

    The file nrf_section_iter.c might not be added to your project. This file includes the code for these functions and is typically found in the SDK under components/libraries/experimental_section_vars/. Adding it to your build may resolve the problem.

    Make sure that NRF_SECTION_ITER_ENABLED is set to 1 in your sdk_config.h file. This turns on the section iterator module, which includes the needed functions

Reply
  • For the sdh_stack errors, you can refer to this thread to see how to fix those errors.

    The errors with nrf_section_iter_init and nrf_section_iter_next are usually due to issues with section variables in the nRF5 SDK. Here’s a simpler breakdown of what might be happening and how to fix it:

    The file nrf_section_iter.c might not be added to your project. This file includes the code for these functions and is typically found in the SDK under components/libraries/experimental_section_vars/. Adding it to your build may resolve the problem.

    Make sure that NRF_SECTION_ITER_ENABLED is set to 1 in your sdk_config.h file. This turns on the section iterator module, which includes the needed functions

Children
No Data
Related