From bbbf7cec7770b373618f7b24a60addc38aca7813 Mon Sep 17 00:00:00 2001 From: Seth Rickard Date: Wed, 30 Mar 2022 14:53:24 -0500 Subject: [PATCH] Add CC13X2_26X2 to github C/I (#16638) * add TI SimpleLink github repo * add cc13x2x7_26x2x7 github workflow * add docker image for sysconfig * fix unit test data and unified build documentation * address PR fixes Set the reabes_path for necessary flags based on the root bulid directory. * back out docker image change * fix lock names for bloat check * changes from restyled --- .github/workflows/docker_img.yaml | 1 + .../workflows/examples-cc13x2x7_26x2x7.yaml | 114 ++++++++++++++++++ .gitmodules | 4 + docs/guides/BUILDING.md | 11 +- examples/lock-app/cc13x2x7_26x2x7/README.md | 104 ++++------------ examples/pump-app/cc13x2x7_26x2x7/README.md | 59 +++------ .../cc13x2x7_26x2x7/README.md | 59 +++------ gn_build.sh | 8 +- .../docker/images/chip-build-ti/Dockerfile | 19 +++ .../docker/images/chip-build-ti/build.sh | 1 + .../docker/images/chip-build-ti/run.sh | 1 + .../docker/images/chip-build-ti/version | 1 + scripts/build/build/targets.py | 11 ++ scripts/build/builders/cc13x2x7_26x2x7.py | 84 +++++++++++++ scripts/build/test.py | 1 + .../testdata/all_targets_except_host.txt | 4 + .../build/testdata/build_all_except_host.txt | 24 ++++ .../glob_star_targets_except_host.txt | 4 + src/platform/cc13x2_26x2/InetPlatformConfig.h | 7 -- .../cc13x2_26x2/KeyValueStoreManagerImpl.h | 2 +- .../ti_simplelink_sdk/repo_cc13xx_cc26xx | 1 + .../ti_simplelink_sdk/ti_simplelink_board.gni | 3 + .../ti_simplelink_executable.gni | 4 +- .../ti_simplelink_sdk/ti_simplelink_sdk.gni | 18 ++- 24 files changed, 357 insertions(+), 188 deletions(-) create mode 100644 .github/workflows/examples-cc13x2x7_26x2x7.yaml create mode 100644 integrations/docker/images/chip-build-ti/Dockerfile create mode 120000 integrations/docker/images/chip-build-ti/build.sh create mode 120000 integrations/docker/images/chip-build-ti/run.sh create mode 120000 integrations/docker/images/chip-build-ti/version create mode 100644 scripts/build/builders/cc13x2x7_26x2x7.py create mode 160000 third_party/ti_simplelink_sdk/repo_cc13xx_cc26xx diff --git a/.github/workflows/docker_img.yaml b/.github/workflows/docker_img.yaml index 21ea8cd8ee5028..0057b7e007e3cb 100644 --- a/.github/workflows/docker_img.yaml +++ b/.github/workflows/docker_img.yaml @@ -47,6 +47,7 @@ jobs: - "-mbed-os" - "-nrf-platform" - "-telink" + - "-ti" - "-tizen" # NOTE: vscode image consumes ~52 GB disk space but GitHub-hosted runners provide ~10 GB free disk space(https://docs.github.com/en/actions/using-github-hosted-runners/about-github-hosted-runners#supported-runners-and-hardware-resources) #- "-vscode" diff --git a/.github/workflows/examples-cc13x2x7_26x2x7.yaml b/.github/workflows/examples-cc13x2x7_26x2x7.yaml new file mode 100644 index 00000000000000..433ee30334c3a6 --- /dev/null +++ b/.github/workflows/examples-cc13x2x7_26x2x7.yaml @@ -0,0 +1,114 @@ +# Copyright (c) 2021 Project CHIP Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +name: Build example - TI CC26X2X7 + +on: + push: + pull_request: + +concurrency: + group: ${{ github.ref }}-${{ github.workflow }}-${{ (github.event_name == 'pull_request' && github.event.number) || (github.event_name == 'workflow_dispatch' && github.run_number) || github.sha }} + cancel-in-progress: true + +jobs: + cc26x2x7: + name: cc26x2x7 + timeout-minutes: 60 + + env: + BUILD_TYPE: gn_cc26x2x7 + TI_SYSCONFIG_ROOT: /opt/ti/sysconfig_1.11.0 + + runs-on: ubuntu-latest + if: github.actor != 'restyled-io[bot]' + + container: + image: connectedhomeip/chip-build:latest + volumes: + - "/tmp/bloat_reports:/tmp/bloat_reports" + steps: + - uses: Wandalen/wretry.action@v1.0.11 + name: Checkout + with: + action: actions/checkout@v3 + with: | + submodules: true + token: ${{ github.token }} + attempt_limit: 3 + attempt_delay: 2000 + - name: Set up environment for size reports + if: ${{ !env.ACT }} + env: + GH_CONTEXT: ${{ toJson(github) }} + run: scripts/tools/memory/gh_sizes_environment.py "${GH_CONTEXT}" + - name: Install SysConfig + timeout-minutes: 30 + run: | + wget https://software-dl.ti.com/ccs/esd/sysconfig/sysconfig-1.11.0_2225-setup.run + chmod +x sysconfig-1.11.0_2225-setup.run + ./sysconfig-1.11.0_2225-setup.run --mode unattended + - name: Bootstrap + timeout-minutes: 25 + run: scripts/build/gn_bootstrap.sh + - name: Uploading bootstrap logs + uses: actions/upload-artifact@v2 + if: ${{ always() }} && ${{ !env.ACT }} + with: + name: bootstrap-logs + path: | + .environment/gn_out/.ninja_log + .environment/pigweed-venv/*.log + - name: Build examples + timeout-minutes: 30 + run: | + scripts/run_in_build_env.sh "\ + ./scripts/build/build_examples.py --target-glob cc13x2x7_26x2x7* build \ + --copy-artifacts-to out/artifacts \ + " + - name: Get lock FTD size stats + timeout-minutes: 5 + run: | + .environment/pigweed-venv/bin/python3 scripts/tools/memory/gh_sizes.py \ + cc13x2_26x2 LP_CC2652R7 lock-ftd \ + out/artifacts/cc13x2x7_26x2x7-lock-ftd/chip-LP_CC2652R7-lock-example.out \ + /tmp/bloat_reports/ + - name: Get lock MTD size stats + timeout-minutes: 5 + run: | + .environment/pigweed-venv/bin/python3 scripts/tools/memory/gh_sizes.py \ + cc13x2_26x2 LP_CC2652R7 lock-mtd \ + out/artifacts/cc13x2x7_26x2x7-lock-mtd/chip-LP_CC2652R7-lock-example.out \ + /tmp/bloat_reports/ + - name: Get Pump App size stats + timeout-minutes: 5 + run: | + .environment/pigweed-venv/bin/python3 scripts/tools/memory/gh_sizes.py \ + cc13x2_26x2 LP_CC2652R7 pump-app \ + out/artifacts/cc13x2x7_26x2x7-pump/chip-LP_CC2652R7-pump-example.out \ + /tmp/bloat_reports/ + - name: Get Pump Controller App size stats + timeout-minutes: 5 + run: | + .environment/pigweed-venv/bin/python3 scripts/tools/memory/gh_sizes.py \ + cc13x2_26x2 LP_CC2652R7 pump-controller-app \ + out/artifacts/cc13x2x7_26x2x7-pump-controller/chip-LP_CC2652R7-pump-controller-example.out \ + /tmp/bloat_reports/ + - name: Uploading Size Reports + uses: actions/upload-artifact@v2 + if: ${{ !env.ACT }} + with: + name: Size,cc13x2x7_26x2x7-Examples,${{ env.GH_EVENT_PR }},${{ env.GH_EVENT_HASH }},${{ env.GH_EVENT_PARENT }},${{ github.event_name }} + path: | + /tmp/bloat_reports/ diff --git a/.gitmodules b/.gitmodules index 0b8744972ee72c..d1bcff2f72d86e 100644 --- a/.gitmodules +++ b/.gitmodules @@ -196,3 +196,7 @@ [submodule "third_party/telink_sdk/repo"] path = third_party/telink_sdk/repo url = https://github.com/rikorsev/telink_b91_ble_sdk +[submodule "ti_simplelink_sdk"] + path = third_party/ti_simplelink_sdk/repo_cc13xx_cc26xx + url = https://github.com/TexasInstruments/cc13xx_cc26xx_sdk.git + branch = main diff --git a/docs/guides/BUILDING.md b/docs/guides/BUILDING.md index 5c5bff57633b61..5c700760de476e 100644 --- a/docs/guides/BUILDING.md +++ b/docs/guides/BUILDING.md @@ -281,13 +281,14 @@ gn desc out/unified '//src/controller(//build/toolchain/host:linux_x64_clang)' ``` Note: Some platforms that can be built as part of the unified build require -downloading additional SDKs. To add these to the build, the location of the SDK -installation must be provided as a build argument. For example, to add the -Simplelink cc13x2_26x2 examples to the unified build, install the -[SDK](https://ti.com/chip_sdk) and add the following build arguments: +downloading additional tools. To add these to the build, the location must be +provided as a build argument. For example, to add the Simplelink cc13x2_26x2 +examples to the unified build, install +[SysConfig](https://www.ti.com/tool/SYSCONFIG) and add the following build +arguments: ``` -gn gen out/unified --args="target_os=\"all\" enable_ti_simplelink_builds=true ti_simplelink_sdk_root=\"/path/to/sdk\" ti_sysconfig_root=\"/path/to/sysconfig\"" +gn gen out/unified --args="target_os=\"all\" enable_ti_simplelink_builds=true ti_sysconfig_root=\"/path/to/sysconfig\"" ``` ## Getting help diff --git a/examples/lock-app/cc13x2x7_26x2x7/README.md b/examples/lock-app/cc13x2x7_26x2x7/README.md index d2c14aa666cc18..6c457b0fabe281 100644 --- a/examples/lock-app/cc13x2x7_26x2x7/README.md +++ b/examples/lock-app/cc13x2x7_26x2x7/README.md @@ -1,7 +1,7 @@ # Matter CC1352 CC2652 Lock Example Application An example application showing the use of [Matter][matter] on the Texas -Instruments CC13X2_26X2 family of Wireless MCUs. +Instruments CC13XX_26XX family of Wireless MCUs. --- @@ -28,14 +28,11 @@ Instruments CC13X2_26X2 family of Wireless MCUs. ![CC1352R1_LAUNCHXL](doc/images/cc1352r1_launchxl.jpg) -The CC13X2_26X2 lock example application provides a working demonstration of a +The CC13XX_26XX lock example application provides a working demonstration of a connected door lock device. This uses the open-source Matter implementation and -the Texas Instruments SimpleLink™ CC13x2 and CC26x2 software development kit. +the Texas Instruments SimpleLink™ CC13XX and CC26XX software development kit. -This example is enabled to build for CC2652R7 devices. This upcoming devices are -currently not yet in full production. For more information on device -availability or early access to an engineering build of our Matter-enabled SDK, -please reach out [here][ti_cc13x2_26x2_r7_matter_request]. +This example is enabled to build for CC2652R7 devices. The lock example is intended to serve both as a means to explore the workings of Matter, as well as a template for creating real products based on the Texas @@ -65,69 +62,17 @@ Some initial setup is necessary for preparing the build environment. This section will need to be done when migrating to new versions of the SDK. This guide assumes that the environment is linux based, and recommends Ubuntu 20.04. -- An engineering SDK from TI is required. Please request access for it - [here][ti_cc13x2_26x2_r7_matter_request]. - - - Follow the default installation instructions when executing the - installer. - - - The version of OpenThread used in this repository is newer than the one - packaged with the TI SDK. Check the following section for a list of - changes needed. - - Download and install [SysConfig][sysconfig] ([recommended - version][sysconfig_recommended]) - - - This may have already been installed with your SimpleLink SDK install. - -- If you have installed different versions, the build defaults will need to be - changed to reflect this in - `${chip_root}/examples/build_overrides/ti_simplelink_sdk.gni`. - -- Install Python 3.8 for the GN build system: + version][sysconfig_recommended]). This can be done simply with the following + commands. ``` - # Linux - $ sudo apt-get install python3.8 python3.8-distutils python3.8-dev python3.8-venv - # Distutils listed due to a package manager error on Ubuntu 18.04 - + $ cd ~ + $ wget https://software-dl.ti.com/ccs/esd/sysconfig/sysconfig-1.11.0_2225-setup.run + $ chmod +x sysconfig-1.11.0_2225-setup.run + $ ./sysconfig-1.11.0_2225-setup.run ``` - - You will have to ensure that the default version of Python 3 is Python - 3.8. - - - Check python3 version: - - ``` - $ python3 --version - Python 3.8.0 - ``` - - - If it is not Python 3.8: - - ``` - $ sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.8 1 - ``` - - - This may affect your environment in other ways if there was a - specific dependency on the prior python3 version (e.g. apt). - After completing the build process for this example, you can - revert the python3 version, for instance: - - ``` - $ sudo update-alternatives --config python3 - There are 2 choices for the alternative python3 (providing /usr/bin/python3). - - Selection Path Priority Status - ------------------------------------------------------------- - 0 /usr/bin/python3.8 1 auto mode - 1 /usr/bin/python3.6 1 manual mode - * 2 /usr/bin/python3.8 1 manual mode - - Press to keep the current choice[*], or type selection number: 1 - update-alternatives: using /usr/bin/python3.6 to provide /usr/bin/python3 (python3) in manual mode - ``` - - Run the bootstrap script to setup the build environment. ``` @@ -152,16 +97,13 @@ Ninja to build the executable. - Run the build to produce a default executable. By default on Linux both the TI SimpleLink SDK and Sysconfig are located in a `ti` folder in the user's home directory, and you must provide the absolute path to them. For example - `/home/username/ti/simplelink_cc13xx_cc26xx_sdk_5_30_03_01_eng` and - `/home/username/ti/sysconfig_1.10.0`. On Windows the default directory is + `/home/username/ti/sysconfig_1.11.0`. On Windows the default directory is `C:\ti`. Take note of this install path, as it will be used in the next step. ``` $ cd ~/connectedhomeip/examples/lock-app/cc13x2x7_26x2x7 - $ export TI_SIMPLELINK_SDK_ROOT=$HOME/ti/simplelink_cc13xx_cc26xx_sdk_5_30_03_01_eng - $ export TI_SYSCONFIG_ROOT=$HOME/ti/sysconfig_1.10.0 - $ gn gen out/debug --args="ti_simplelink_sdk_root=\"${TI_SIMPLELINK_SDK_ROOT}\" ti_sysconfig_root=\"${TI_SYSCONFIG_ROOT}\"" + $ gn gen out/debug --args="ti_sysconfig_root=\"$HOME/ti/sysconfig_1.11.0\"" $ ninja -C out/debug ``` @@ -250,11 +192,13 @@ an existing Thread network. The following sections assume that a Thread network is already active, and has at least one [OpenThread Border Router][ot_border_router_setup]. +For insight into what other components are needed to run this example, please +refer to our [Matter Getting Started Guide][matter-e2e-faq]. + ### Provisioning -The first step to bring the Matter device onto the network is to provision it. -Our example accomplishes this with Bluetooth Low Energy (BLE) and the -[CHIPTool](../../../src/android/CHIPTool/README.md) mobile app. +Interacting with the application begins by enabling BLE advertisements and then +pairing the device into a Thread network. #### Bluetooth LE Advertising @@ -265,10 +209,11 @@ fully provisioned, BLE advertising will stop. #### Bluetooth LE Rendezvous -To commission and control this application within a Matter-enabled Thread -network, consult the [CHIPTool README](../../../src/android/CHIPTool/README.md) -for information on the Android smartphone application. Reference the Device -Configuration information printed in the Logging Output of this application. +Pairing this application with `ble-thread` can be done with any of the enabled +[CHIP Controller](../../../src/controller/README.md) applications. Use the +information printed on the console to aide in pairing the device. The controller +application can also be used to control the example app with the cluster +commands. ## TI Support @@ -287,11 +232,12 @@ Additionally, we welcome any feedback. https://software-dl.ti.com/ccs/esd/documents/users_guide/ccs_debug-main.html?configuration#manual-method [cc1352r1_launchxl]: https://www.ti.com/tool/LAUNCHXL-CC1352R1 [e2e]: https://e2e.ti.com/support/wireless-connectivity/zigbee-and-thread +[matter-e2e-faq]: + https://e2e.ti.com/support/wireless-connectivity/zigbee-thread-group/zigbee-and-thread/f/zigbee-thread-forum/1082428/faq-cc2652r7-matter----getting-started-guide [sysconfig]: https://www.ti.com/tool/SYSCONFIG [sysconfig_recommended]: - https://software-dl.ti.com/ccs/esd/sysconfig/sysconfig-1.10.0_2163-setup.run + https://software-dl.ti.com/ccs/esd/sysconfig/sysconfig-1.11.0_2225-setup.run [ti_thread_dnd]: https://www.ti.com/wireless-connectivity/thread/design-development.html -[ti_cc13x2_26x2_r7_matter_request]: https://ti.com/chip_sdk [ot_border_router_setup]: https://openthread.io/guides/border-router/build [uniflash]: https://www.ti.com/tool/download/UNIFLASH diff --git a/examples/pump-app/cc13x2x7_26x2x7/README.md b/examples/pump-app/cc13x2x7_26x2x7/README.md index 62a688e3aa53b5..8120bd2b031ef1 100644 --- a/examples/pump-app/cc13x2x7_26x2x7/README.md +++ b/examples/pump-app/cc13x2x7_26x2x7/README.md @@ -1,7 +1,7 @@ # Matter CC1352 CC2652 Pump Example Application An example application showing the use of [Matter][matter] on the Texas -Instruments CC13X2_26X2 family of Wireless MCUs. +Instruments CC13XX_26XX family of Wireless MCUs. --- @@ -28,14 +28,11 @@ Instruments CC13X2_26X2 family of Wireless MCUs. ![CC1352R1_LAUNCHXL](doc/images/cc1352r1_launchxl.jpg) -The CC13X2_26X2 pump example application provides a working demonstration of a +The CC13XX_26XX pump example application provides a working demonstration of a connected pump device. This uses the open-source Matter implementation and the -Texas Instruments SimpleLink™ CC13x2 and CC26x2 software development kit. +Texas Instruments SimpleLink™ CC13XX and CC26XX software development kit. -This example is enabled to build for CC2652R7 devices. This upcoming devices are -currently not yet in full production. For more information on device -availability or early access to an engineering build of our Matter-enabled SDK, -please reach out [here][ti_cc13x2_26x2_r7_matter_request]. +This example is enabled to build for CC2652R7 devices. The pump example is intended to serve both as a means to explore the workings of Matter, as well as a template for creating real products based on the Texas @@ -63,39 +60,20 @@ information to allow for a new network setup. ### Preparation Some initial setup is necessary for preparing the build environment. This -section will need to be done when migrating to new versions of the SDK. - -- An engineering SDK from TI is required. Please request access for it - [here][ti_cc13x2_26x2_r7_matter_request]. - - - Follow the default installation instructions when executing the - installer. - - - The version of OpenThread used in this repository is newer than the one - packaged with the TI SDK. Check the following section for a list of - changes needed. +section will need to be done when migrating to new versions of the SDK. This +guide assumes that the environment is linux based, and recommends Ubuntu 20.04. - Download and install [SysConfig][sysconfig] ([recommended - version][sysconfig_recommended]) - - - This may have already been installed with your SimpleLink SDK install. - -- If you have installed different versions, the build defaults will need to be - changed to reflect this in - `${chip_root}/examples/build_overrides/ti_simplelink_sdk.gni`. - -- Install Python 3.8 for the GN build system: + version][sysconfig_recommended]). This can be done simply with the following + commands. ``` - # Linux - $ sudo apt-get install python3.8 python3.8-distutils python3.8-dev python3.8-venv - # Distutils listed due to a package manager error on Ubuntu 18.04 - + $ cd ~ + $ wget https://software-dl.ti.com/ccs/esd/sysconfig/sysconfig-1.11.0_2225-setup.run + $ chmod +x sysconfig-1.11.0_2225-setup.run + $ ./sysconfig-1.11.0_2225-setup.run ``` - - You will have to ensure that the default version of Python 3 is Python - 3.8. - - Run the bootstrap script to setup the build environment. ``` @@ -120,15 +98,13 @@ Ninja to build the executable. - Run the build to produce a default executable. By default on Linux both the TI SimpleLink SDK and Sysconfig are located in a `ti` folder in the user's home directory, and you must provide the absolute path to them. For example - `/home/username/ti/simplelink_cc13xx_cc26xx_sdk_5_30_03_01_eng` and - `/home/username/ti/sysconfig_1.10.0`. On Windows the default directory is - `C:\ti`. + `/home/username/ti/sysconfig_1.11.0`. On Windows the default directory is + `C:\ti`. Take note of this install path, as it will be used in the next + step. ``` $ cd ~/connectedhomeip/examples/pump-app/cc13x2x7_26x2x7 - $ export TI_SIMPLELINK_SDK_ROOT=$HOME/ti/simplelink_cc13xx_cc26xx_sdk_5_30_03_01_eng - $ export TI_SYSCONFIG_ROOT=$HOME/ti/sysconfig_1.10.0 - $ gn gen out/debug --args="ti_simplelink_sdk_root=\"${TI_SIMPLELINK_SDK_ROOT}\" ti_sysconfig_root=\"${TI_SYSCONFIG_ROOT}\"" + $ gn gen out/debug --args="ti_sysconfig_root=\"$HOME/ti/sysconfig_1.11.0\"" $ ninja -C out/debug ``` @@ -222,10 +198,9 @@ Additionally, we welcome any feedback. [e2e]: https://e2e.ti.com/support/wireless-connectivity/zigbee-and-thread [sysconfig]: https://www.ti.com/tool/SYSCONFIG [sysconfig_recommended]: - https://software-dl.ti.com/ccs/esd/sysconfig/sysconfig-1.10.0_2163-setup.run + https://software-dl.ti.com/ccs/esd/sysconfig/sysconfig-1.11.0_2225-setup.run [ti_thread_dnd]: https://www.ti.com/wireless-connectivity/thread/design-development.html -[ti_cc13x2_26x2_r7_matter_request]: https://ti.com/chip_sdk [ot_border_router_setup]: https://openthread.io/guides/border-router/beaglebone-black [qr_code_generator]: https://dhrishi.github.io/connectedhomeip/qrcode.html diff --git a/examples/pump-controller-app/cc13x2x7_26x2x7/README.md b/examples/pump-controller-app/cc13x2x7_26x2x7/README.md index 7c9e21ce726d91..d397ce3f01884f 100644 --- a/examples/pump-controller-app/cc13x2x7_26x2x7/README.md +++ b/examples/pump-controller-app/cc13x2x7_26x2x7/README.md @@ -1,7 +1,7 @@ # Matter CC1352 CC2652 Pump Controller Example Application An example application showing the use of [Matter][matter] on the Texas -Instruments CC13X2_26X2 family of Wireless MCUs. +Instruments CC13XX_26XX family of Wireless MCUs. --- @@ -28,15 +28,12 @@ Instruments CC13X2_26X2 family of Wireless MCUs. ![CC1352R1_LAUNCHXL](doc/images/cc1352r1_launchxl.jpg) -The CC13X2_26X2 pump controller example application provides a working +The CC13XX_26XX pump controller example application provides a working demonstration of a connected pump controller device. This uses the open-source -Matter implementation and the Texas Instruments SimpleLink™ CC13x2 and CC26x2 +Matter implementation and the Texas Instruments SimpleLink™ CC13XX and CC26XX software development kit. -This example is enabled to build for CC2652R7 devices. This upcoming devices are -currently not yet in full production. For more information on device -availability or early access to an engineering build of our Matter-enabled SDK, -please reach out [here][ti_cc13x2_26x2_r7_matter_request]. +This example is enabled to build for CC2652R7 devices. The pump example is intended to serve both as a means to explore the workings of Matter, as well as a template for creating real products based on the Texas @@ -64,39 +61,20 @@ information to allow for a new network setup. ### Preparation Some initial setup is necessary for preparing the build environment. This -section will need to be done when migrating to new versions of the SDK. - -- An engineering SDK from TI is required. Please request access for it - [here][ti_cc13x2_26x2_r7_matter_request]. - - - Follow the default installation instructions when executing the - installer. - - - The version of OpenThread used in this repository is newer than the one - packaged with the TI SDK. Check the following section for a list of - changes needed. +section will need to be done when migrating to new versions of the SDK. This +guide assumes that the environment is linux based, and recommends Ubuntu 20.04. - Download and install [SysConfig][sysconfig] ([recommended - version][sysconfig_recommended]) - - - This may have already been installed with your SimpleLink SDK install. - -- If you have installed different versions, the build defaults will need to be - changed to reflect this in - `${chip_root}/examples/build_overrides/ti_simplelink_sdk.gni`. - -- Install Python 3.8 for the GN build system: + version][sysconfig_recommended]). This can be done simply with the following + commands. ``` - # Linux - $ sudo apt-get install python3.8 python3.8-distutils python3.8-dev python3.8-venv - # Distutils listed due to a package manager error on Ubuntu 18.04 - + $ cd ~ + $ wget https://software-dl.ti.com/ccs/esd/sysconfig/sysconfig-1.11.0_2225-setup.run + $ chmod +x sysconfig-1.11.0_2225-setup.run + $ ./sysconfig-1.11.0_2225-setup.run ``` - - You will have to ensure that the default version of Python 3 is Python - 3.8. - - Run the bootstrap script to setup the build environment. ``` @@ -121,15 +99,13 @@ Ninja to build the executable. - Run the build to produce a default executable. By default on Linux both the TI SimpleLink SDK and Sysconfig are located in a `ti` folder in the user's home directory, and you must provide the absolute path to them. For example - `/home/username/ti/simplelink_cc13xx_cc26xx_sdk_5_30_03_01_eng` and - `/home/username/ti/sysconfig_1.10.0`. On Windows the default directory is - `C:\ti`. + `/home/username/ti/sysconfig_1.11.0`. On Windows the default directory is + `C:\ti`. Take note of this install path, as it will be used in the next + step. ``` $ cd ~/connectedhomeip/examples/pump-controller-app/cc13x2x7_26x2x7 - $ export TI_SIMPLELINK_SDK_ROOT=$HOME/ti/simplelink_cc13xx_cc26xx_sdk_5_30_03_01_eng - $ export TI_SYSCONFIG_ROOT=$HOME/ti/sysconfig_1.10.0 - $ gn gen out/debug --args="ti_simplelink_sdk_root=\"${TI_SIMPLELINK_SDK_ROOT}\" ti_sysconfig_root=\"${TI_SYSCONFIG_ROOT}\"" + $ gn gen out/debug --args="ti_sysconfig_root=\"$HOME/ti/sysconfig_1.11.0\"" $ ninja -C out/debug ``` @@ -223,10 +199,9 @@ Additionally, we welcome any feedback. [e2e]: https://e2e.ti.com/support/wireless-connectivity/zigbee-and-thread [sysconfig]: https://www.ti.com/tool/SYSCONFIG [sysconfig_recommended]: - https://software-dl.ti.com/ccs/esd/sysconfig/sysconfig-1.10.0_2163-setup.run + https://software-dl.ti.com/ccs/esd/sysconfig/sysconfig-1.11.0_2225-setup.run [ti_thread_dnd]: https://www.ti.com/wireless-connectivity/thread/design-development.html -[ti_cc13x2_26x2_r7_matter_request]: https://ti.com/chip_sdk [ot_border_router_setup]: https://openthread.io/guides/border-router/beaglebone-black [qr_code_generator]: https://dhrishi.github.io/connectedhomeip/qrcode.html diff --git a/gn_build.sh b/gn_build.sh index a2ea89a9384bcb..12213224adbf6f 100755 --- a/gn_build.sh +++ b/gn_build.sh @@ -178,17 +178,17 @@ fi echo -# TI SimpleLink SDK setup +# TI SimpleLink Build setup ti_simplelink_sdk_args="" -if [[ -d "${TI_SIMPLELINK_SDK_ROOT}/source" && -f "${TI_SYSCONFIG_ROOT}/sysconfig_cli.sh" ]]; then - ti_simplelink_sdk_args+="ti_simplelink_sdk_root=\"$TI_SIMPLELINK_SDK_ROOT\" ti_sysconfig_root=\"$TI_SYSCONFIG_ROOT\"" +if [[ -f "${TI_SYSCONFIG_ROOT}/sysconfig_cli.sh" ]]; then + ti_simplelink_sdk_args+="ti_sysconfig_root=\"$TI_SYSCONFIG_ROOT\"" extra_args+=" $ti_simplelink_sdk_args enable_ti_simplelink_builds=true" echo 'To build the cc13x2x7_26x2x7 lock sample as a standalone project': echo "(cd $CHIP_ROOT/examples/lock-app/cc13x2x7_26x2x7; gn gen out/debug --args='$ti_simplelink_sdk_args'; ninja -C out/debug)" else - echo "Hint: Set \$TI_SIMPLELINK_SDK_ROOT and \$TI_SYSCONFIG_ROOT to enable building for cc13x2_26x2" + echo "Hint: Set \$TI_SYSCONFIG_ROOT to enable building for cc13x2_26x2" fi echo diff --git a/integrations/docker/images/chip-build-ti/Dockerfile b/integrations/docker/images/chip-build-ti/Dockerfile new file mode 100644 index 00000000000000..593b434c5a6df9 --- /dev/null +++ b/integrations/docker/images/chip-build-ti/Dockerfile @@ -0,0 +1,19 @@ +ARG VERSION=latest +FROM connectedhomeip/chip-build:${VERSION} + +RUN set -x \ + && apt-get update \ + && DEBIAN_FRONTEND=noninteractive apt-get install -fy --no-install-recommends \ + wget=1.20.3-1ubuntu2 \ + && apt-get clean \ + && rm -rf /var/lib/apt/lists/ \ + && : # last line + +# Install Sysconfig +RUN set -x \ + && wget https://software-dl.ti.com/ccs/esd/sysconfig/sysconfig-1.11.0_2225-setup.run \ + && chmod +x sysconfig-1.11.0_2225-setup.run \ + && ./sysconfig-1.11.0_2225-setup.run --mode unattended \ + && : # last line + +ENV TI_SYSCONFIG_ROOT=/opt/ti/sysconfig_1.11.0 diff --git a/integrations/docker/images/chip-build-ti/build.sh b/integrations/docker/images/chip-build-ti/build.sh new file mode 120000 index 00000000000000..fcb4d4ee75d531 --- /dev/null +++ b/integrations/docker/images/chip-build-ti/build.sh @@ -0,0 +1 @@ +../../build.sh \ No newline at end of file diff --git a/integrations/docker/images/chip-build-ti/run.sh b/integrations/docker/images/chip-build-ti/run.sh new file mode 120000 index 00000000000000..ccbd3501b330d9 --- /dev/null +++ b/integrations/docker/images/chip-build-ti/run.sh @@ -0,0 +1 @@ +../../run.sh \ No newline at end of file diff --git a/integrations/docker/images/chip-build-ti/version b/integrations/docker/images/chip-build-ti/version new file mode 120000 index 00000000000000..a4280acd348e7f --- /dev/null +++ b/integrations/docker/images/chip-build-ti/version @@ -0,0 +1 @@ +../chip-build/version \ No newline at end of file diff --git a/scripts/build/build/targets.py b/scripts/build/build/targets.py index d1e8f96dcb4a94..13a46ef4d07ec4 100644 --- a/scripts/build/build/targets.py +++ b/scripts/build/build/targets.py @@ -19,6 +19,7 @@ from builders.ameba import AmebaApp, AmebaBoard, AmebaBuilder from builders.android import AndroidBoard, AndroidApp, AndroidBuilder +from builders.cc13x2x7_26x2x7 import cc13x2x7_26x2x7App, cc13x2x7_26x2x7Builder from builders.cyw30739 import Cyw30739Builder, Cyw30739App, Cyw30739Board from builders.efr32 import Efr32Builder, Efr32App, Efr32Board from builders.esp32 import Esp32Builder, Esp32Board, Esp32App @@ -457,6 +458,15 @@ def K32WTargets(): yield target.Extend('lock-low-power-release', app=K32WApp.LOCK, low_power=True, release=True).GlobBlacklist("Only on demand build") +def cc13x2x7_26x2x7Targets(): + target = Target('cc13x2x7_26x2x7', cc13x2x7_26x2x7Builder) + + yield target.Extend('lock-ftd', app=cc13x2x7_26x2x7App.LOCK, openthread_ftd=True) + yield target.Extend('lock-mtd', app=cc13x2x7_26x2x7App.LOCK, openthread_ftd=False) + yield target.Extend('pump', app=cc13x2x7_26x2x7App.PUMP) + yield target.Extend('pump-controller', app=cc13x2x7_26x2x7App.PUMP_CONTROLLER) + + def Cyw30739Targets(): yield Target('cyw30739-cyw930739m2evb_01-light', Cyw30739Builder, board=Cyw30739Board.CYW930739M2EVB_01, app=Cyw30739App.LIGHT) yield Target('cyw30739-cyw930739m2evb_01-lock', Cyw30739Builder, board=Cyw30739Board.CYW930739M2EVB_01, app=Cyw30739App.LOCK) @@ -485,6 +495,7 @@ def QorvoTargets(): InfineonTargets(), AmebaTargets(), K32WTargets(), + cc13x2x7_26x2x7Targets(), Cyw30739Targets(), QorvoTargets(), ] diff --git a/scripts/build/builders/cc13x2x7_26x2x7.py b/scripts/build/builders/cc13x2x7_26x2x7.py new file mode 100644 index 00000000000000..8058b75173eb24 --- /dev/null +++ b/scripts/build/builders/cc13x2x7_26x2x7.py @@ -0,0 +1,84 @@ +# Copyright (c) 2021 Project CHIP Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import os +from enum import Enum, auto + +from .gn import GnBuilder + + +class cc13x2x7_26x2x7App(Enum): + LOCK = auto() + PUMP = auto() + PUMP_CONTROLLER = auto() + + def ExampleName(self): + if self == cc13x2x7_26x2x7App.LOCK: + return 'lock-app' + elif self == cc13x2x7_26x2x7App.PUMP: + return 'pump-app' + elif self == cc13x2x7_26x2x7App.PUMP_CONTROLLER: + return 'pump-controller-app' + else: + raise Exception('Unknown app type: %r' % self) + + def AppNamePrefix(self): + if self == cc13x2x7_26x2x7App.LOCK: + return 'chip-LP_CC2652R7-lock-example' + elif self == cc13x2x7_26x2x7App.PUMP: + return 'chip-LP_CC2652R7-pump-example' + elif self == cc13x2x7_26x2x7App.PUMP_CONTROLLER: + return 'chip-LP_CC2652R7-pump-controller-example' + else: + raise Exception('Unknown app type: %r' % self) + + def BuildRoot(self, root): + return os.path.join(root, 'examples', self.ExampleName(), 'cc13x2x7_26x2x7') + + +class cc13x2x7_26x2x7Builder(GnBuilder): + + def __init__(self, + root, + runner, + app: cc13x2x7_26x2x7App = cc13x2x7_26x2x7App.LOCK, + openthread_ftd: bool = None): + super(cc13x2x7_26x2x7Builder, self).__init__( + root=app.BuildRoot(root), + runner=runner) + self.code_root = root + self.app = app + self.openthread_ftd = openthread_ftd + + def GnBuildArgs(self): + args = [ + 'ti_sysconfig_root="%s"' % os.environ['TI_SYSCONFIG_ROOT'], + ] + + if self.openthread_ftd == None: + pass + elif self.openthread_ftd: + args.append('chip_openthread_ftd=true') + else: + args.append('chip_openthread_ftd=false') + + return args + + def build_outputs(self): + items = {} + for extension in [".out", ".bin", ".out.map", "-bim.hex"]: + name = '%s%s' % (self.app.AppNamePrefix(), extension) + items[name] = os.path.join(self.output_dir, name) + + return items diff --git a/scripts/build/test.py b/scripts/build/test.py index 0e5e01706dc1a6..d25e74ec037b65 100644 --- a/scripts/build/test.py +++ b/scripts/build/test.py @@ -51,6 +51,7 @@ def build_actual_output(root: str, out: str, args: List[str]) -> List[str]: 'TELINK_ZEPHYR_SDK_DIR': 'TELINK_ZEPHYR_SDK_DIR', 'SYSROOT_AARCH64': 'SYSROOT_AARCH64', 'NXP_K32W061_SDK_ROOT': 'TEST_NXP_K32W061_SDK_ROOT', + 'TI_SYSCONFIG_ROOT': 'TEST_TI_SYSCONFIG_ROOT', }) retval = subprocess.run([ diff --git a/scripts/build/testdata/all_targets_except_host.txt b/scripts/build/testdata/all_targets_except_host.txt index fb15d34c857dcb..185ccc69a86fec 100644 --- a/scripts/build/testdata/all_targets_except_host.txt +++ b/scripts/build/testdata/all_targets_except_host.txt @@ -14,6 +14,10 @@ android-arm64-chip-tv-casting-app android-arm64-chip-tvserver android-x64-chip-tool android-x86-chip-tool +cc13x2x7_26x2x7-lock-ftd +cc13x2x7_26x2x7-lock-mtd +cc13x2x7_26x2x7-pump +cc13x2x7_26x2x7-pump-controller cyw30739-cyw930739m2evb_01-light cyw30739-cyw930739m2evb_01-lock cyw30739-cyw930739m2evb_01-ota-requestor (NOGLOB: Running out of XIP flash space) diff --git a/scripts/build/testdata/build_all_except_host.txt b/scripts/build/testdata/build_all_except_host.txt index f93c1edebfa831..d9baa35cf9543f 100644 --- a/scripts/build/testdata/build_all_except_host.txt +++ b/scripts/build/testdata/build_all_except_host.txt @@ -166,6 +166,18 @@ gn gen --check --fail-on-unused-args {out}/android-x86-chip-tool '--args=target_ # Accepting NDK licenses @ tools bash -c 'yes | TEST_ANDROID_HOME/tools/bin/sdkmanager --licenses >/dev/null' +# Generating cc13x2x7_26x2x7-lock-ftd +gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lock-app/cc13x2x7_26x2x7 '--args=ti_sysconfig_root="TEST_TI_SYSCONFIG_ROOT" chip_openthread_ftd=true' {out}/cc13x2x7_26x2x7-lock-ftd + +# Generating cc13x2x7_26x2x7-lock-mtd +gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lock-app/cc13x2x7_26x2x7 '--args=ti_sysconfig_root="TEST_TI_SYSCONFIG_ROOT" chip_openthread_ftd=false' {out}/cc13x2x7_26x2x7-lock-mtd + +# Generating cc13x2x7_26x2x7-pump +gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/pump-app/cc13x2x7_26x2x7 '--args=ti_sysconfig_root="TEST_TI_SYSCONFIG_ROOT"' {out}/cc13x2x7_26x2x7-pump + +# Generating cc13x2x7_26x2x7-pump-controller +gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/pump-controller-app/cc13x2x7_26x2x7 '--args=ti_sysconfig_root="TEST_TI_SYSCONFIG_ROOT"' {out}/cc13x2x7_26x2x7-pump-controller + # Generating cyw30739-cyw930739m2evb_01-light gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lighting-app/cyw30739 {out}/cyw30739-cyw930739m2evb_01-light @@ -1113,6 +1125,18 @@ cp {out}/android-x86-chip-tool/lib/src/platform/android/AndroidPlatform.jar {roo # Building APP android-x86-chip-tool {root}/src/android/CHIPTool/gradlew -p {root}/src/android/CHIPTool -PmatterBuildSrcDir={out}/android-x86-chip-tool -PmatterSdkSourceBuild=false -PbuildDir={out}/android-x86-chip-tool assembleDebug +# Building cc13x2x7_26x2x7-lock-ftd +ninja -C {out}/cc13x2x7_26x2x7-lock-ftd + +# Building cc13x2x7_26x2x7-lock-mtd +ninja -C {out}/cc13x2x7_26x2x7-lock-mtd + +# Building cc13x2x7_26x2x7-pump +ninja -C {out}/cc13x2x7_26x2x7-pump + +# Building cc13x2x7_26x2x7-pump-controller +ninja -C {out}/cc13x2x7_26x2x7-pump-controller + # Building cyw30739-cyw930739m2evb_01-light ninja -C {out}/cyw30739-cyw930739m2evb_01-light diff --git a/scripts/build/testdata/glob_star_targets_except_host.txt b/scripts/build/testdata/glob_star_targets_except_host.txt index d64479847523e0..815344ef4ea39d 100644 --- a/scripts/build/testdata/glob_star_targets_except_host.txt +++ b/scripts/build/testdata/glob_star_targets_except_host.txt @@ -14,6 +14,10 @@ android-arm64-chip-tv-casting-app android-arm64-chip-tvserver android-x64-chip-tool android-x86-chip-tool +cc13x2x7_26x2x7-lock-ftd +cc13x2x7_26x2x7-lock-mtd +cc13x2x7_26x2x7-pump +cc13x2x7_26x2x7-pump-controller cyw30739-cyw930739m2evb_01-light cyw30739-cyw930739m2evb_01-lock cyw30739-cyw930739m2evb_01-ota-requestor-no-progress-logging diff --git a/src/platform/cc13x2_26x2/InetPlatformConfig.h b/src/platform/cc13x2_26x2/InetPlatformConfig.h index 363bdeb23bdb1b..21344caa15bc66 100644 --- a/src/platform/cc13x2_26x2/InetPlatformConfig.h +++ b/src/platform/cc13x2_26x2/InetPlatformConfig.h @@ -16,13 +16,6 @@ * limitations under the License. */ -/** - * @file - * Platform-specific configuration overrides for the Openchip Inet - * Layer on nRF52 platforms using the Nordic nRF5 SDK. - * - */ - #pragma once // ==================== Platform Adaptations ==================== diff --git a/src/platform/cc13x2_26x2/KeyValueStoreManagerImpl.h b/src/platform/cc13x2_26x2/KeyValueStoreManagerImpl.h index 1b12844115fcf5..bd70c08df860b6 100644 --- a/src/platform/cc13x2_26x2/KeyValueStoreManagerImpl.h +++ b/src/platform/cc13x2_26x2/KeyValueStoreManagerImpl.h @@ -63,7 +63,7 @@ inline KeyValueStoreManager & KeyValueStoreMgr(void) * Returns the platform-specific implementation of the KeyValueStoreManager singleton object. * * Chip applications can use this to gain access to features of the KeyValueStoreManager - * that are specific to the ESP32 platform. + * that are specific to the platform. */ inline KeyValueStoreManagerImpl & KeyValueStoreMgrImpl(void) { diff --git a/third_party/ti_simplelink_sdk/repo_cc13xx_cc26xx b/third_party/ti_simplelink_sdk/repo_cc13xx_cc26xx new file mode 160000 index 00000000000000..f9db17b6d9c07f --- /dev/null +++ b/third_party/ti_simplelink_sdk/repo_cc13xx_cc26xx @@ -0,0 +1 @@ +Subproject commit f9db17b6d9c07f9c2d613d297a0fcfaacbea2f06 diff --git a/third_party/ti_simplelink_sdk/ti_simplelink_board.gni b/third_party/ti_simplelink_sdk/ti_simplelink_board.gni index 49f3e40cad5d0c..782b382b18c590 100644 --- a/third_party/ti_simplelink_sdk/ti_simplelink_board.gni +++ b/third_party/ti_simplelink_sdk/ti_simplelink_board.gni @@ -35,6 +35,7 @@ assert(ti_simplelink_board != "", "ti_simplelink_board must be specified") if (ti_simplelink_board == "CC1352R1_LAUNCHXL") { ti_simplelink_device_family = "cc13x2_26x2" ti_simplelink_soc_family = "cc13x2" + ti_simplelink_isa = "m4f" # set -DDeviceFamily_CC13X2? ti_simplelink_soc = "cc1352r1f3" @@ -42,6 +43,7 @@ if (ti_simplelink_board == "CC1352R1_LAUNCHXL") { } else if (ti_simplelink_board == "CC2652R1_LAUNCHXL") { ti_simplelink_device_family = "cc13x2_26x2" ti_simplelink_soc_family = "cc26x2" + ti_simplelink_isa = "m4f" # set -DDeviceFamily_CC26X2? ti_simplelink_soc = "cc2652r1f3" @@ -49,6 +51,7 @@ if (ti_simplelink_board == "CC1352R1_LAUNCHXL") { } else if (ti_simplelink_board == "LP_CC2652R7") { ti_simplelink_device_family = "cc13x2x7_26x2x7" ti_simplelink_soc_family = "cc26x2" + ti_simplelink_isa = "m4f" # set -DDeviceFamily_CC26X2? ti_simplelink_soc = "cc2652r1f7" diff --git a/third_party/ti_simplelink_sdk/ti_simplelink_executable.gni b/third_party/ti_simplelink_sdk/ti_simplelink_executable.gni index f8a00d79bdf245..e3b55cdabdefb1 100644 --- a/third_party/ti_simplelink_sdk/ti_simplelink_executable.gni +++ b/third_party/ti_simplelink_sdk/ti_simplelink_executable.gni @@ -52,7 +52,7 @@ template("ti_simplelink_executable") { inputs = [ ldscript ] ldflags = [ - "-L${ti_simplelink_sdk_root}/source", + "-L" + rebase_path(ti_simplelink_sdk_root + "/source", root_build_dir), rebase_path( "${target_gen_dir}/sysconfig/ti_utils_build_linker.cmd.genlibs", root_build_dir), @@ -86,7 +86,7 @@ template("ti_simplelink_executable") { } args = [ - ti_simplelink_sdk_root, + rebase_path(ti_simplelink_sdk_root, root_build_dir), rebase_path(root_out_dir, root_build_dir), output_base_name, rebase_path(pem_file, root_build_dir), diff --git a/third_party/ti_simplelink_sdk/ti_simplelink_sdk.gni b/third_party/ti_simplelink_sdk/ti_simplelink_sdk.gni index 9e5f73e5b9ecfa..0d63fb6905b688 100644 --- a/third_party/ti_simplelink_sdk/ti_simplelink_sdk.gni +++ b/third_party/ti_simplelink_sdk/ti_simplelink_sdk.gni @@ -28,7 +28,8 @@ import("ti_simplelink_board.gni") declare_args() { # Location of the TI SimpleLink SDK. - ti_simplelink_sdk_root = "" + ti_simplelink_sdk_root = + "${chip_root}/third_party/ti_simplelink_sdk/repo_cc13xx_cc26xx" ti_sysconfig_root = "" } @@ -81,7 +82,8 @@ template("ti_sysconfig") { args = [ ti_sysconfig_root, "-s", - ti_simplelink_sdk_root + "/.metadata/product.json", + rebase_path(ti_simplelink_sdk_root + "/.metadata/product.json", + root_build_dir), "-o", rebase_path(output_dir, root_build_dir), "--compiler", @@ -145,8 +147,8 @@ template("ti_simplelink_sdk") { "ti_simplelink_device_family must be specified") libs += [ - "${ti_simplelink_sdk_root}/source/ti/drivers/lib/gcc/m4f/drivers_${ti_simplelink_soc_family}.a", - "${ti_simplelink_sdk_root}/source/ti/drivers/rf/lib/rf_multiMode_${ti_simplelink_soc_family}.am4fg", + "${ti_simplelink_sdk_root}/source/ti/drivers/lib/gcc/${ti_simplelink_isa}/drivers_${ti_simplelink_soc_family}.a", + "${ti_simplelink_sdk_root}/source/ti/drivers/rf/lib/gcc/${ti_simplelink_isa}/rf_multiMode_${ti_simplelink_soc_family}.a", ] } @@ -390,8 +392,12 @@ template("ti_simplelink_sdk") { cflags = [ "-Wno-conversion", "-Wno-comment", - "@${ti_simplelink_sdk_root}/source/ti/ble5stack/config/build_components.opt", - "@${ti_simplelink_sdk_root}/source/ti/ble5stack/config/factory_config.opt", + "@" + rebase_path(ti_simplelink_sdk_root + + "/source/ti/ble5stack/config/build_components.opt", + root_build_dir), + "@" + rebase_path(ti_simplelink_sdk_root + + "/source/ti/ble5stack/config/factory_config.opt", + root_build_dir), ] }