Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[TI] CC2674 migration support #28975

Merged
merged 24 commits into from
Sep 12, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .github/.wordlist.txt
Original file line number Diff line number Diff line change
Expand Up @@ -1429,6 +1429,7 @@ UnitLocalization
unpair
unprovisioned
Unsecure
Unselect
untrusted
updateAvailable
updateNotAvailable
Expand Down
2 changes: 1 addition & 1 deletion docs/guides/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down
2 changes: 1 addition & 1 deletion docs/guides/darwin.md
Original file line number Diff line number Diff line change
Expand Up @@ -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)

Expand Down
3 changes: 2 additions & 1 deletion docs/guides/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ and features.

*
esp32/README
ti/ti_platform_overview
```

## Build Guides
Expand Down Expand Up @@ -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

Expand Down
109 changes: 109 additions & 0 deletions docs/guides/ti/matter_cc2674_migration.md
Original file line number Diff line number Diff line change
@@ -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 <path to SDK>/.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`.
Original file line number Diff line number Diff line change
@@ -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
Expand All @@ -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

Expand Down Expand Up @@ -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)

<hr>

Expand All @@ -110,6 +117,15 @@ SimpleLink SDK.

<hr>

## 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)

<hr>

### TI Support

For technical support, please consider creating a post on TI's [E2E forum][e2e].
Expand Down
2 changes: 1 addition & 1 deletion src/platform/cc13xx_26xx/cc13x4_26x4/ble_user_config.c
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@
#ifndef CC23X0
#if !defined(DeviceFamily_CC26X1)
#include <driverlib/pka.h>
#if !defined(DeviceFamily_CC13X4)
#if !defined(DeviceFamily_CC13X4) && !defined(DeviceFamily_CC26X4)
#include <driverlib/rf_bt5_coex.h>
#endif
#else
Expand Down
26 changes: 17 additions & 9 deletions third_party/ti_simplelink_sdk/ti_simplelink_board.gni
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
declare_args() {
# TI SimpleLink board used
ti_simplelink_board = ""
ti_simplelink_device = ""
}

if (ti_simplelink_board == "") {
Expand All @@ -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") {
Expand All @@ -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"
Expand Down
85 changes: 64 additions & 21 deletions third_party/ti_simplelink_sdk/ti_simplelink_sdk.gni
Original file line number Diff line number Diff line change
Expand Up @@ -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" ]
Expand All @@ -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) ]
Expand Down Expand Up @@ -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" ]
}

Expand Down Expand Up @@ -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",
Expand Down
Loading