From d41f492731e2e1c172dcb5e8cd2593902dff14f5 Mon Sep 17 00:00:00 2001 From: abiradarti <104591549+abiradarti@users.noreply.github.com> Date: Tue, 12 Sep 2023 18:36:04 -0500 Subject: [PATCH] [TI] CC2674 migration support (#28975) * cc2674 migration support * spelling fixes * Restyled by gn * renamed migration file and added to toc * more restyling * more restyling pt2 * more restyling pt3 * more restyling pt4 * more restyling pt5 * more restyling pt6 * Restyled by prettier-markdown * Restyled by prettier-markdown * added toc * Restyled by prettier-markdown * Restyled by prettier-markdown * fixed path to ti overview img * more path changes for ti md files * Restyled by prettier-markdown * Restyled by prettier-markdown * Fix restyled issue. * build and publish fix --------- Co-authored-by: Restyled.io Co-authored-by: Boris Zbarsky --- .github/.wordlist.txt | 1 + docs/guides/README.md | 2 +- docs/guides/darwin.md | 2 +- docs/guides/index.md | 3 +- docs/guides/ti/matter_cc2674_migration.md | 109 ++++++++++++++++++ docs/guides/{ => ti}/ti_platform_overview.md | 24 +++- .../cc13xx_26xx/cc13x4_26x4/ble_user_config.c | 2 +- .../ti_simplelink_sdk/ti_simplelink_board.gni | 26 +++-- .../ti_simplelink_sdk/ti_simplelink_sdk.gni | 85 ++++++++++---- 9 files changed, 216 insertions(+), 38 deletions(-) create mode 100644 docs/guides/ti/matter_cc2674_migration.md rename docs/guides/{ => ti}/ti_platform_overview.md (88%) diff --git a/.github/.wordlist.txt b/.github/.wordlist.txt index f5dc5a1ac9c7cb..1e24bdb65838d1 100644 --- a/.github/.wordlist.txt +++ b/.github/.wordlist.txt @@ -1430,6 +1430,7 @@ UnitLocalization unpair unprovisioned Unsecure +Unselect untrusted updateAvailable updateNotAvailable diff --git a/docs/guides/README.md b/docs/guides/README.md index da96c5a8eb7b20..a643a0e846d7cb 100644 --- a/docs/guides/README.md +++ b/docs/guides/README.md @@ -23,7 +23,7 @@ - [Silicon Labs - Building](./silabs_efr32_building.md) - [Silicon Labs - Software Update](./silabs_efr32_software_update.md) - [STMicroelectronics (STM32)](./stm32_getting_started_guide.md) -- [TI - Platform Overview](./ti_platform_overview.md) +- [TI - Platform Overview](./ti/ti_platform_overview.md) - [Open IoT SDK - Platform Overview](./openiotsdk_platform_overview.md) - [Open IoT SDK - Examples](./openiotsdk_examples.md) - [Open IoT SDK - Unit Tests](./openiotsdk_unit_tests.md) diff --git a/docs/guides/darwin.md b/docs/guides/darwin.md index 197023c3c99580..74ed819c9f875f 100644 --- a/docs/guides/darwin.md +++ b/docs/guides/darwin.md @@ -267,7 +267,7 @@ Example: - [SiliconLabs](./silabs_efr32_building.md) - [Simulated Linux](./simulated_device_linux.md) - [Telink](/examples/lighting-app/telink/README.md) -- [TI Platform](./ti_platform_overview.md) +- [TI Platform](./ti/ti_platform_overview.md) - [TI All Clusters](/examples/all-clusters-app/cc13x4_26x4/README.md) - [Tizen](/examples/lighting-app/tizen/README.md) diff --git a/docs/guides/index.md b/docs/guides/index.md index 275ead9feaabd3..a818ee2b777912 100644 --- a/docs/guides/index.md +++ b/docs/guides/index.md @@ -10,6 +10,7 @@ and features. * esp32/README +ti/ti_platform_overview ``` ## Build Guides @@ -39,7 +40,7 @@ esp32/README - [Silicon Labs - Documentation](https://github.com/SiliconLabs/matter#readme) - [Silicon Labs - Building](./silabs_efr32_building.md) - [Silicon Labs - Software Update](./silabs_efr32_software_update.md) -- [TI - Platform Overview](./ti_platform_overview.md) +- [TI - Platform Overview](./ti/ti_platform_overview.md) ## Tool Guides diff --git a/docs/guides/ti/matter_cc2674_migration.md b/docs/guides/ti/matter_cc2674_migration.md new file mode 100644 index 00000000000000..0590037ea03157 --- /dev/null +++ b/docs/guides/ti/matter_cc2674_migration.md @@ -0,0 +1,109 @@ +# Running Matter Examples on the TI SimpleLink CC2674P10 and CC2674R10 + +The existing Matter project examples are based on LP_EM_CC1354P10_6. If using +the CC2674P10, the following migration steps are required. Developers are +strongly encouraged to start with a `cc13x4_26x4` example and migrate the +project accordingly. Example projects can be found in the following location: +`matter/examples/[application]/cc13x4_26x4` + +## Dependencies + +The following must be installed on your system before proceeding: + +- [SysConfig](https://www.ti.com/tool/SYSCONFIG) v1.16.2 or later +- [SIMPLELINK-LOWPOWER-F2-SDK](https://www.ti.com/tool/SIMPLELINK-LOWPOWER-SDK) + v7.10.01.24 + +## Matter source code changes + +The following are changes to the Matter source code files which should be +applied to convert a `matter/examples/[application]/cc13x4_26x4` project to the +CC2674P10 device + +- `examples/[application]/cc13x4_26x4/args.gni`, modify/add the following + defines for the CC2674 + - `ti_simplelink_board = CC2674` + - `ti_simplelink_device = CC2674P10RGZ` +- `third_party/ti_simplelink_sdk/repo_cc13xx_cc26xx`, replace this folder + contents with the 7.10.01.24 version from + [TI's downloads page](https://www.ti.com/tool/download/SIMPLELINK-LOWPOWER-F2-SDK/7.10.01.24) + which is required to add support SDK for the CC2674P10 device. + +## Configuring `chip.syscfg` in the SysConfig GUI + +1. To open `matter/examples/[application]/cc13x4_26x4/chip.syscfg` in the GUI, + add the following line to the top of the file: + +``` + // @cliArgs --product /.metadata/product.json --board /ti/boards/LP_EM_CC1354P10_6 --rtos freertos +``` + +2. Open the `syscfg` file using the standalone Sysconfig GUI + (`sysconfig_gui.sh`) from the SysConfig installation folder. +3. Click on _Show Device View_ and then click _Switch_. +4. Select _Board_ as _None_ and _Device_ as _`CC2674P10RGZ`_, Unselect + _`Lock PinMux`_, and click _Confirm_. +5. To fix errors, make the following module changes: + - _RF Design_ and _RF Stacks -> BLE -> Radio_: click on _accepting the + current value_, which should be _`LP_CC2674P10_RGZ`_ in the drop down menu + for _Based On RF Design_ + - _TI DEVICES -> Device Configuration_: Clear + _`XOSC Cap Array Modification`_ + - _TI DRIVERS -> RF_: Set _Global Event Mask_ as _None_ and _No. of Antenna + Switch Control Pins_ as _0_ + - _TI DRIVERS -> UART2 -> `PinMux`_: Set _UART Peripheral_ to _UART0_, _TX + Pin_ to _`DIO_13/19`_, and _RX Pin_ to _`DIO_12/18`_ + - _TI DRIVERS APPS -> Button_: Set _`PinMux`_ of _CONFIG_BTN_LEFT_ to + _`DIO_15`_ and _CONFIG_BTN_RIGHT_ to _`DIO_14`_ + - _TI DRIVERS APPS -> LED_: Set _`PinMux`_ of _CONFIG_LED_RED_ to _`DIO_6`_ + and _CONFIG_LED_RIGHT_ to _`DIO_7`_ +6. Save the SysConfig file (click on _Save As_) and ensure the file name matches + the reference from `BUILD.gn` (default project name is `chip.syscfg`). +7. Open the new SysConfig file with a text editor and remove the generated + arguments. + ``` + /** + * These arguments were used when this file was generated. They will be automatically applied on subsequent loads + * via the GUI or CLI. Run CLI with '--help' for additional information on how to override these arguments. + * @cliArgs --device "CC2674P10RGZ" --package "RGZ" --part "Default" --rtos "freertos" --product "simplelink_cc13xx_cc26xx_sdk@7.10.01.24" + * @versions {"tool":"1.18.0+3130"} + */ + ``` +8. Move the `*.syscfg` file into the + `matter/examples/[application]/cc13x4_26x4/` folder. Make sure that the + `args.gni` parameters are aligned for the `CC2674P10RGZ` as detailed above, + and build the example using the `README.md` instructions. + +## Modifications required for the CC2674R10 + +After applying all items in the "Configuring `chip.syscfg` in the SysConfig GUI" +section, additional steps must also be applied to generate Matter project for +the CC2674R10. + +- `examples/[application]/cc13x4_26x4/args.gni` should have + `ti_simplelink_board` as `CC2674` and `ti_simplelink_device = CC2674R10RGZ`. +- `examples/[application]/cc13x4_26x4/chip.syscfg` opened with a Text Editor + should change `ble.radioConfig.codeExportConfig.$name` to + `ti_devices_radioconfig_code_export_param2` and `ble.rfDesign` to + `LP_EM_CC1354P10_1` + +Furthermore, the subsequent changes apply specifically for the CC2674R10 and +should be addressed from a SysConfig Editor. + +1. Pins will need to be reconfigured as such: + + | SysConfig pin name | R10 `PinMux` | + | ------------------ | ------------ | + | UART_RX | `DIO_2` | + | UART_TX | `DIO_3` | + | CONFIG_BTN_LEFT | `DIO_13` | + | CONFIG_BTN_RIGHT | `DIO_14` | + | CONFIG_LED_RED | `DIO_6` | + | CONFIG_LED_GREEN | `DIO_7` | + +2. _Custom -> IEEE 802.15.4-2006, `250 kbps`, `OQPSK`, `DSSS = 1:8` -> Code + Export Configuration_, acknowledge and dismiss the PA radio setup error +3. _Custom -> IEEE 802.15.4-2006, `250 kbps`, `OQPSK`, `DSSS = 1:8` -> RF + Command Symbols_, change `CMD_RADIO_SETUP` from `RF_cmdRadioSetup` to + `RF_cmdIeeeRadioSetup` and add the following functions from the drop-down: + `CMD_TX_TEST`,`CMD_IEEE_ED_SCAN`, `CMD_IEEE_CSMA`, and `CMD_IEEE_RX_ACK`. diff --git a/docs/guides/ti_platform_overview.md b/docs/guides/ti/ti_platform_overview.md similarity index 88% rename from docs/guides/ti_platform_overview.md rename to docs/guides/ti/ti_platform_overview.md index cc0a05280cbc22..47e140cfa06ba0 100644 --- a/docs/guides/ti_platform_overview.md +++ b/docs/guides/ti/ti_platform_overview.md @@ -1,3 +1,10 @@ +```{toctree} +:glob: +:maxdepth: 1 + +* +``` + # Texas Instruments platform overview The TI platform is a [Matter][matter_gh] platform based on the Texas Instruments @@ -6,7 +13,7 @@ Incorporated SimpleLink SDK. The following diagram is a simplified representation of a Matter application which built on the TI Platform. -![matter_ti_overview_simplified](images/matter_ti_overview_simplified.png) +![matter_ti_overview_simplified](./../images/matter_ti_overview_simplified.png) ## Texas Instruments SimpleLink SDK @@ -96,9 +103,9 @@ handled by the platform implementation files. Sample Matter applications are provided for the TI platform. These can be used as reference for your own application. -- [lock-app](../../examples/lock-app/cc13x2x7_26x2x7/README.md) -- [pump-app](../../examples/pump-app/cc13x2x7_26x2x7/README.md) -- [pump-controller-app](../../examples/pump-controller-app/cc13x2x7_26x2x7/README.md) +- [lock-app](../../../examples/lock-app/cc13x2x7_26x2x7/README.md) +- [pump-app](../../../examples/pump-app/cc13x2x7_26x2x7/README.md) +- [pump-controller-app](../../../examples/pump-controller-app/cc13x2x7_26x2x7/README.md)
@@ -110,6 +117,15 @@ SimpleLink SDK.
+## CC2674 Migration + +For instructions on how to migrate the CC1354P10-6 examples to either the +CC2674P10 or the CC2674R10, please refer to the guide linked below. + +- [TI CC2674 Migration Guide](./matter_cc2674_migration.md) + +
+ ### TI Support For technical support, please consider creating a post on TI's [E2E forum][e2e]. diff --git a/src/platform/cc13xx_26xx/cc13x4_26x4/ble_user_config.c b/src/platform/cc13xx_26xx/cc13x4_26x4/ble_user_config.c index 7f51e3226e565a..d5579bff75cb66 100644 --- a/src/platform/cc13xx_26xx/cc13x4_26x4/ble_user_config.c +++ b/src/platform/cc13xx_26xx/cc13x4_26x4/ble_user_config.c @@ -68,7 +68,7 @@ #ifndef CC23X0 #if !defined(DeviceFamily_CC26X1) #include -#if !defined(DeviceFamily_CC13X4) +#if !defined(DeviceFamily_CC13X4) && !defined(DeviceFamily_CC26X4) #include #endif #else diff --git a/third_party/ti_simplelink_sdk/ti_simplelink_board.gni b/third_party/ti_simplelink_sdk/ti_simplelink_board.gni index a89d2aebc28898..c14d0e1c942142 100644 --- a/third_party/ti_simplelink_sdk/ti_simplelink_board.gni +++ b/third_party/ti_simplelink_sdk/ti_simplelink_board.gni @@ -15,6 +15,7 @@ declare_args() { # TI SimpleLink board used ti_simplelink_board = "" + ti_simplelink_device = "" } if (ti_simplelink_board == "") { @@ -25,14 +26,16 @@ assert(ti_simplelink_board != "", "ti_simplelink_board must be specified") # Differentiate between boards # -# | Development Kit | Device Family | SoC | | -# | ----------------- | --------------- | ---------- | ------------------- | -# | CC1352R1_LAUNCHXL | cc13x2_26x2 | cc1352r1f3 | Thread MTD + no BLE | -# | CC2652R1_LAUNCHXL | cc13x2_26x2 | cc2652r1f3 | Thread MTD + no BLE | -# | LP_CC2652R7 | cc13x2x7_26x2x7 | cc2652r1f7 | Thread FTD + BLE | -# | CC134P10_6_LAUNCHXL| cc13x4_26x4 | cc1354p10 | Thread FTD + BLE | -# | CC3220SF_LAUNCHXL | cc32xx | cc3220SF | Wi-Fi | -# | CC3235SF_LAUNCHXL | cc32xx | cc3235SF | Wi-Fi | +# | Development Kit | Device Family | SoC | | +# | ----------------- | --------------- | ---------- | ------------------- | +# | CC1352R1_LAUNCHXL | cc13x2_26x2 | cc1352r1f3 | Thread MTD + no BLE | +# | CC2652R1_LAUNCHXL | cc13x2_26x2 | cc2652r1f3 | Thread MTD + no BLE | +# | LP_CC2652R7 | cc13x2x7_26x2x7 | cc2652r1f7 | Thread FTD + BLE | +# | CC134P10_6_LAUNCHXL | cc13x4_26x4 | cc1354p10 | Thread FTD + BLE | +# | CC2674 | cc13x4_24x4 | CC2674P10RGZ | Thread FTD + BLE | +# | CC2674 | cc13x4_24x4 | CC2674R10RGZ | Thread FTD + BLE | +# | CC3220SF_LAUNCHXL | cc32xx | cc3220SF | Wi-Fi | +# | CC3235SF_LAUNCHXL | cc32xx | cc3235SF | Wi-Fi | # XXX: Can we do an array with a case statement? if (ti_simplelink_board == "CC1352R1_LAUNCHXL") { @@ -51,12 +54,17 @@ if (ti_simplelink_board == "CC1352R1_LAUNCHXL") { # set -DDeviceFamily_CC26X2? ti_simplelink_soc = "cc2652r1f3" ti_simplelink_bim_name = "cc2652r1lp" -} else if (ti_simplelink_board == "LP_EM_CC1354P10_6") { +} else if (ti_simplelink_board == "LP_EM_CC1354P10_6" || + ti_simplelink_board == "LP_EM_CC1354P10_1") { ti_simplelink_device_family = "cc13x4_26x4" ti_simplelink_soc_family = "cc13x4" ti_simplelink_isa = "m33f" ti_simplelink_soc = "cc1354p10" ti_simplelink_bim_name = "cc1354p10" +} else if (ti_simplelink_board == "CC2674") { + ti_simplelink_device_family = "cc13x4_26x4" #driverlib paths + ti_simplelink_soc_family = "cc13x4" #ble path + ti_simplelink_isa = "m33f" } else if (ti_simplelink_board == "LP_CC2652R7") { ti_simplelink_device_family = "cc13x2x7_26x2x7" ti_simplelink_soc_family = "cc26x2" diff --git a/third_party/ti_simplelink_sdk/ti_simplelink_sdk.gni b/third_party/ti_simplelink_sdk/ti_simplelink_sdk.gni index 590d4884b867f5..ee16f5179e5859 100644 --- a/third_party/ti_simplelink_sdk/ti_simplelink_sdk.gni +++ b/third_party/ti_simplelink_sdk/ti_simplelink_sdk.gni @@ -90,7 +90,11 @@ template("ti_sysconfig") { "-fno-exceptions", "-fno-unwind-tables", ] - defines += [ "DeviceFamily_CC13X4" ] + if (ti_simplelink_device == "") { + defines += [ "DeviceFamily_CC13X4" ] + } else { + defines += [ "DeviceFamily_CC26X4" ] + } } else if (ti_simplelink_device_family == "cc32xx") { ldflags += [ "-nostartfiles" ] defines += [ "CC32XXWARE" ] @@ -108,20 +112,37 @@ template("ti_sysconfig") { sources = invoker.sources outputs = gen_outputs - args = [ - ti_sysconfig_root, - "-s", - rebase_path(ti_simplelink_sdk_root + "/.metadata/product.json", - root_build_dir), - "-o", - rebase_path(output_dir, root_build_dir), - "--compiler", - "gcc", - "--board", - "/ti/boards/" + ti_simplelink_board, - "--rtos", - "freertos", - ] + if (ti_simplelink_device == "") { + args = [ + ti_sysconfig_root, + "-s", + rebase_path(ti_simplelink_sdk_root + "/.metadata/product.json", + root_build_dir), + "-o", + rebase_path(output_dir, root_build_dir), + "--compiler", + "gcc", + "--board", + "/ti/boards/" + ti_simplelink_board, + "--rtos", + "freertos", + ] + } else { + args = [ + ti_sysconfig_root, + "-s", + rebase_path(ti_simplelink_sdk_root + "/.metadata/product.json", + root_build_dir), + "-o", + rebase_path(output_dir, root_build_dir), + "--compiler", + "gcc", + "--device", + ti_simplelink_device, + "--rtos", + "freertos", + ] + } foreach(source, sources) { args += [ rebase_path(source, root_build_dir) ] @@ -205,7 +226,17 @@ template("ti_simplelink_sdk") { defines += [ "DeviceFamily_CC13X2X7_CC26X2X7" ] libs += [ "${ti_simplelink_sdk_root}/source/ti/devices/cc13x2x7_cc26x2x7/driverlib/bin/gcc/driverlib.lib" ] } else if (ti_simplelink_device_family == "cc13x4_26x4") { - defines += [ "DeviceFamily_CC13X4" ] + if (ti_simplelink_device == "") { + defines += [ "DeviceFamily_CC13X4" ] + } else { + defines += [ "DeviceFamily_CC26X4" ] + } + if (ti_simplelink_board == "LP_EM_CC1354P10_1" || + (ti_simplelink_board == "CC2674" && + ti_simplelink_device == "CC2674R10RGZ")) { + defines += [ "EM_CC1354P10_1_LP" ] + } + defines += [ "FLASH_ONLY_BUILD" ] libs += [ "${ti_simplelink_sdk_root}/source/ti/devices/cc13x4_cc26x4/driverlib/bin/gcc/driverlib.lib" ] } @@ -439,11 +470,23 @@ template("ti_simplelink_sdk") { "${ti_simplelink_sdk_root}/source/ti/ble5stack/common/cc26xx/freertos/", ] } else if (ti_simplelink_device_family == "cc13x4_26x4") { - libs += [ - "${ti_simplelink_sdk_root}/source/ti/dmm/lib/gcc/m4f/libdmmlib_freertos.a", - "${ti_simplelink_sdk_root}/source/ti/ble5stack_flash/libraries/cc1354p10_6/OneLib.a", - "${ti_simplelink_sdk_root}/source/ti/ble5stack_flash/libraries/cc1354p10_6/StackWrapper.a", - ] + libs += [ "${ti_simplelink_sdk_root}/source/ti/dmm/lib/gcc/m4f/libdmmlib_freertos.a" ] + if (ti_simplelink_board == "LP_EM_CC1354P10_1" || + (ti_simplelink_board == "CC2674" && + ti_simplelink_device == "CC2674R10RGZ")) { + libs += [ + "${ti_simplelink_sdk_root}/source/ti/ble5stack_flash/libraries/cc1354p10_1/OneLib.a", + "${ti_simplelink_sdk_root}/source/ti/ble5stack_flash/libraries/cc1354p10_1/StackWrapper.a", + ] + } else if (ti_simplelink_board == "LP_EM_CC1354P10_6" || + (ti_simplelink_board == "CC2674" && + ti_simplelink_device == "CC2674P10RGZ")) { + libs += [ + "${ti_simplelink_sdk_root}/source/ti/ble5stack_flash/libraries/cc1354p10_6/OneLib.a", + "${ti_simplelink_sdk_root}/source/ti/ble5stack_flash/libraries/cc1354p10_6/StackWrapper.a", + ] + } + defines += [ "ONE_BLE_LIB_SIZE_OPTIMIZATION", "NVOCMP_NVPAGES=3",