Skip to content

Commit

Permalink
[TI] CC2674 migration support (project-chip#28975)
Browse files Browse the repository at this point in the history
* 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 <[email protected]>
Co-authored-by: Boris Zbarsky <[email protected]>
  • Loading branch information
3 people authored Sep 12, 2023
1 parent 6315ea5 commit a94fec9
Show file tree
Hide file tree
Showing 9 changed files with 216 additions and 38 deletions.
1 change: 1 addition & 0 deletions .github/.wordlist.txt
Original file line number Diff line number Diff line change
Expand Up @@ -1430,6 +1430,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 "[email protected]"
* @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

0 comments on commit a94fec9

Please sign in to comment.