CC26x0 to CC13xx or CC26xx

Introduction

This section describes the main differences an application developer must be aware of between CC26x0 and CC13xx or CC26xx devices along with a porting guide to demonstrate the migration effort.

Features and Benefits

Increased Processing Power and Scalability

The CC13xx or CC26xx is a wireless MCU with a dedicated Arm Cortex-M4F application processor that is pin-to-pin compatible to the CC26x0 in the 7x7mm QFN package. More memory is available with an increase of non-volatile memory to 608 to 960 kB. This breaks down into 352 kB Flash memory + 256 kB ROM in the CC13x2x1 or CC26x2x1 or 704 kB Flash memory + 256 kB ROM in the CC13x2x7 or CC26x2x7. RAM has also increased to 80 kB. The availability of this increased memory provides support for Over-the-Air Downloads (OAD), larger applications, and more simultaneous connections. An additional UART is also included.

Lower Power Operation and Zigbee Green Power Devices

A 50% reduction in standby current and 70% reduction in current consumption through the Sensor Controller allows for long-term operation from a single AA or coin-cell battery for sleepy end devices. If an end application project requires battery-less products, the CC13xx or CC26xx will provide the ability to support both Green Power Source and Sink Devices.

Zigbee 3.0 enabled

If your project wasn’t already on the Zigbee 3.0 profile, the CC13xx or CC26xx Z-Stack solution provides support of Zigbee 3.0. This includes features such as child aging, enhanced security, Base Device Behavior, and Green Power support. More information can be found in the What’s New in Zigbee 3.0 White Paper <https://www.ti.com/lit/swra615>.

Enhanced security

With additional hardware security accelerators for AES-128/256, SHA-256, and ECC, CC13xx or CC26xx saves five times the processing time and current consumption for implementing security algorithms. This is critical to enable strong network security.

CC13xx and CC26xx LaunchPad Support

All example applications are compatible with the CC13xx or CC26xx LaunchPad development kit. These features allow for a unified development experience and empowers developers to rapidly release to market.

Porting Instructions from Z-Stack 1.2.2a to 3.1.0

The intention of these instructions is to help developers convert their legacy Zigbee projects to the SimpleLink CC13xx/CC26xx SDK. This includes collecting all of the essential materials from the older Z-Stack project and recognizing the mesh network settings to which the new project must adhere. It will then require importing a SimpleLink SDK sample application, renaming all appropriate resources, changing mesh network configurations, and customizing the application files.

Note

This module is intended to provide a process overview and does not go into specific detail about each conversion aspect that should be considered per application.

  1. Copy the project files. All significant application resources should be contained inside of the C:\ti\simplelink\zstack_home_1_02_02a_44539\Projects\zstack\HomeAutomation\<Zigbee Project>\CC26xx folder of the IAR project. For basic designs this will consist of [application].c. All files should be copied to a location on the system that can be accessed for later review.

../_images/copy_application_files_cc26x0.png
  1. Examine all configuration settings. Zigbee projects contain several options that determine how the mesh network operates. To duplicate this behavior inside the new project one must take note of the most important settings so that they may be reformatted inside the SimpleLink Zigbee SDK. The description of the most crucial variables are captured in Network Configurations and located in the following IAR workspace locations:

    • NWK\nwk_globals.h of project ZStackCore

    • NWK\ZGlobals.h of project ZStackCore

    • Config\app.cfg of project [Application]

    • Application\znwk_config.h of project [Application]

    • Application\zstart_config.h of project [Application]

    • Project OptionsC/C++ CompilerPreprocessorDefined symbols

../_images/network_configuration_IAR_locations_cc26x0.png

Some variables have been added to Z-Stack 3.0, hence these files should not be copied directly from a Z-Stack HA 1.2.2a project.

Note

Z-Stack HA 1.2.2a is based off of the Zigbee PRO 2012 (r20) specification whereas Z-Stack 3.x.x follows Zigbee PRO 2015 (r21) and later. There are several significant changes between these specifications that greatly affect the behavior of the Zigbee mesh network, including child aging, enhanced security, BDB specification, and Green Power as described in the What’s New in Zigbee 3.0 White Paper <https://www.ti.com/lit/swra615>. Caution should be taken to recognize these differences and the new/altered mesh network settings thereof.

  1. Import a SimpleLink CC13xx/CC26xx SDK project into Code Composer Studio (CCS) or IAR. CCS will be used for demonstrative purposes, use either of the following options inside the IDE:

    • View → Resource Explorer → Software → SimpleLink CC13xx/CC26xx SDK → Connectivity → Examples → Development Tools → CC13xx or CC26xx LaunchPad

    • File → Import → C/C++ Project → CCS Project, search directory C:\ti\simplelink_cc13xx_cc26xx_sdk_x_xx_xx_xx\examples\rtos\CC13xx or CC26xx_LAUNCHXL\zstack

../_images/import_project_CCS.png

Import either the genericapp example or a sample application that reflects the desired application, such as switch for a light switch device. The Zigbee end device (ZED) node type project must be selected as this is the only one which was supported by the CC26x0. Make sure to build the project (ProjectBuild Project) before continuing and verify that all file paths resolve correctly as this will confirm the starting point for further code modifications.

  1. Alter project names so that all application-specific files and dependencies now match the intended end application. Inside the Project Explorer, right-click on the Project and choose Rename (or F2) to perform this task. The same should be done for all Application files. Furthermore, it is good practice to replace the format of all functions, defines, etc. that use the old naming convention. Go to EditFind/Replace (or Ctrl+F), create the search parameters, and perform a Replace All for each application file.

../_images/find_and_replace_all.png

A new Project Configuration name should be chosen (Project PropertiesCCS GeneralManage Configurations) and an entire project search (SearchFile Search with Scope of Enclosing projects) will help verify that there are no old identities remaining. At this point, it is advised that the project be cleaned (ProjectClean Project) and re-built to confirm that nothing has broken while changing names. The original configuration build folder can now be deleted after the new one is generated.

Note

Case sensitivity should be taken into account for each Find/Replace Search and it is recommended to try multiple instances to make sure everything has been correctly revised. The only name change required outside of the application files is in Application\StartUp\main.c where zcl[Project]_task should be renamed and the header include should be changed to Application/zcl_[Project].h

  1. Apply changes to the mesh network configuration files. The Network Configurations section will further help complete this task. The most common variable locations inside the CCS workspace are as such:

    • Application\Stack\nwk\nwk_globals.h

    • Application\Stack\sys\zglobals.h

    • Application\Stack\Config\f8wconfig.opts

    • Application\Stack\bdb\bdb_interface.h

    • Project PropertiesCCS BuildARM CompilerPredefined Symbols

../_images/network_configuration_CCS_locations.png

The preprocessor symbols in the SimpleLink CC13xx/CC26xx SDK are different to those from the TI-RTOS projects, however the most important ones to notice are documented in Application Preprocessor Configuration. The project Stack and Heap can also be altered in TI_RTOS_Configuration\app.cfg alongside other TI-RTOS settings.

  1. Make changes to the project files(zcl_[application].c, zcl_[application].h, and zcl_[application]_data.c) to support the application. This will include:

    • Separating attributes and cluster initialization from [application].c to zcl_[application]_data.c

    • Modifying initialization including endpoint, attribute, and cluster registration

    • Changing Z-Stack and AF message handling

    • Adding UI callback functions

    • Updating cluster callback functions

Each of these points are detailed further in the Z-Stack 1.2.2a (CC26x0) to Z-Stack 3.1.0 porting guide. It is also recommended that difference comparison software be used to further understand the variation between the old and new Z-Stack project files.

  1. Build the project and address each issue that spawned due to the migration. Once no errors remain, the project itself will need to be further debugged to ensure that the application operates as expected.

Note

Additional steps or changes will be required to further port the project to a Z-Stack version newer than 3.1.0. Please see the respective Porting Guides for further details.