Please note as of Wednesday, August 15th, 2018 this wiki has been set to read only. If you are a TI Employee and require Edit ability please contact x0211426 from the company directory.

RemoTI Software Versioning

From Texas Instruments Wiki
Jump to: navigation, search

Introduction

This page describes the extended software version system used by RemoTI. CC26xx does not use the same format as CC253x. RemoTI-1.4.0 and lower supports CC253x and RemoTI-2.0.0 and above supports CC26xx. The software version is helpful in projects where a running image can be updated. Systems that can be upgraded are typically Network Processors, or applications that support Over-the-Air-Update.

The version number is linked in to a known address in flash. The fixed location allows a program to read out the version number without running the code. In those situations it is very important that the new image supports the hardware configuration. This software version system indicates not only what hardware configuration is supported, but also what API level is supported. As most radio stacks there are several layers that can be interfaced. In RemoTI there are basically three layers; MAC, Network and Profile. The most common interface level is the Profile layer. This layer's API is called RemoTI (RTI). The profile layer has several flavors. Most importantly is the distinction between node types; Controller/Originator and Target/Recipient. For the most basic profile both node types are usually supported, but for more advanced profiles they are usually separated.

CC253x

The extended software version number for RemoTI-1.4.0 and below is an 8 byte number.

CC26xx

The software version number for RemoTI-2.0.0 and above is a 10 byte number. For CC26xx additional information is added:

  • Compiler used
  • ROM used or not used
  • Polling via MAC supported

Location

The software version is located at a fixed location in flash. This location is set by a segment defined in the linker file.

  1. CC253x: SW_VERSION in .xcl
  2. CC26xx: .rtiSwVersion in .icf
Software Version Location
Device .bin .bin (for SBL) .hex .hex (with SBL)
CC253x (non-USB) 0x0094 0x0894* 0x0094 0x0894
CC2531 (USB) 0x0094 0x1898** 0x0094 0x1898
CC2620/CC2650 0x1CFB4 N/A*** 0x1CFB4 N/A***

* SBL is not located in generated .bin, so the first 0x800 bytes are not present.
** SBL is not located in generated .bin, so the first 0x1800 bytes are not present.
*** CC26xx utilizes bootloader in ROM

Detailed Formatting

CC253x

RemoTI Software Versioning

Byte #

0 - 4

Stack Version

Bytes

0

1

2

3-4

Major

Minor

Patch

Build

M

mm

pp

bb (often SVN revision)

5

Platform

Bits

7

6:3

2:0

Field Applies

Application

Target/Controller - Originator/Recipient

Yes/No

0: Not RNP

0: Target/Recipient, 1: Controller/Originator

Yes/No

1: RNP: RTI

0: Target/Recipient, 1: Controller/Originator, 2: Both

Yes/No

2: RNP: NWK

N/A

Yes/No

3: MNP: MAC

N/A

Yes/No

4: RNP: RTI + MNP (dual stack)

0: Target/Recipient, 1: Controller/Originator, 2: Both

Yes/No

5: RNP: NWK + MNP (dual stack, without profile layer)

N/A

6

Profiles

Bits

7

6:3

2

1

0

Field Applies

Reserved

ZRC 2.0

MSO

ZRC 1.1

Yes/No

0: Not Supported, 1: Supported

0: Not Supported, 1: Supported

0: Not Supported, 1: Supported

7

Serial Interface

Bits

7

6:4

3:2

1:0

Field Applies

Serial Interface

Port

Alternative

Yes/No

0: UART

0-3

Allows up to 4 alternatives

Yes/No

1: SPI

0-3

Allows up to 4 alternatives

Yes/No

2: I2C

0-3 (MRDY/SRDY in case of I2C in HW on CC253x)

Allows up to 4 alternatives

Yes/No

3: USB

0-3

Allows up to 4 alternatives

Yes/No

4: UART w/Wakeup

0-3

Allows up to 4 alternatives

CC26xx

HexBinImageLabeler Tool

To help translating the bitfields in the 8 bytes version there are a few options available. One is a standalone windows GUI application (HexBinImageLabeler). This tool allows checking an existing image, and modify/set the version of an image that is not already labeled. An image is considered labeled when it has a valid version number.

RemoTI-Version-HexBinImageLabeler.png

Download HexBinImageLabeler

You may download the GUI tool here. This tool is based on Qt-5.3.2, and you can download the Qt SDK here.

You may also use our sample C code implementation to work with this software version. See function getAndPrintExtendedSoftwareVersion() in simple_app.c. It uses the following structure:

CC253x

typedef struct
{
	uint8 major;
	uint8 minor;
	uint8 patch;
	uint16 svnRev;
	struct
	{
		uint8 node:3;
		uint8 interface:4;
		uint8 applies:1;
	} stack;
	struct
	{
		uint8 zrc11:1;
		uint8 mso:1;
		uint8 zrc20:1;
		uint8 reserved:4;
		uint8 applies:1;
	} profiles;
	struct
	{
		uint8 alternative:2;
		uint8 port:2;
		uint8 interface:3;
		uint8 applies:1;
	} serial;
} swVerExtended_t;

CC26xx

typedef struct
{
    uint8_t major;        //!< Software version Major byte
    uint8_t minor;        //!< Software version Minor byte
    uint8_t patch;        //!< Software version patch byte
    uint8_t buildLSB;     //!< Software version Build LSB byte
    uint8_t buildMSB;     //!< Software version Build MSB byte
    uint8_t stackInfo;    /*! Stack information:
                            bits 0-2 : indicate the compiler used to build the stack project
                                   0: reserved
                                   1: IAR
                                   2: CCS
                                   3: reserved
                            bit 3    : reserved
                            bits 4-6 : indicate compiler used to build the library
                                   0: IAR
                                   1: not IAR
                            bits 7 : indicate if the stack is using MAC in ROM or not
                                   0: MAC in ROM not used
                                   1: MAC in ROM used */
    uint8_t rcnInfo1;        /*! RCN layer information:
                            bit  0 : Mode of the RCN layer
                                   0: Controller only mode
                                   1: super mode (target + controller)
                            bit  1: Poll request feeature available through MAC
                                   0: feature not available
                                   1: feature available
                                   other bits reserved */
    uint8_t rcnInfo2;       //!< rcnInfo part 2, reserved.
    uint8_t profileInfo1;  /*! Profile information:
                                   bit 0 : ZRC 1 profile (0: not available, 1: available)
                                   bit 1 : ZRC 2 profile (0: not available, 1: available)
                                   other bit reserved */
    uint8_t profileInfo2; /*! Profile information:
                                   bit 0 : RTI recipient (0: not available, 1: available)
                                   bit 1 : RTI Originator (0: not available, 1: available)
                                   if both bit 0 and 1 are unset, this mean that RCN API is available.
                                   RCN API is not available if at least one of the bit 0 or 1 is set.
                                   other bit reserved */
} rtiSwVersion_t;