NOTICE: The Processors Wiki will End-of-Life on January 15, 2021. It is recommended to download any files or other content you may need that are hosted on processors.wiki.ti.com. The site is now set to read only.

CC3100 & CC3200 Embedded Programming Tool

From Texas Instruments Wiki
Jump to: navigation, search
Cc31xx cc32xx return home.png
Cc31xx cc32xx return tools.png

Introduction[edit]

Scope[edit]

This page describes the Embedded Programming feature in general and the Image Programming tool in particular.
More detailed information on Embedded Programming feature can be found in the Application Notes that is part of the package.

Overview[edit]

Each product that has an embedded CC31xx/CC32xx device on board must also have a serial flash device connected. The serial flash must be formatted and, at minimum, be programmed with the Service Pack that contains necessary software updates and additional features. In the case of CC32xx, a binary image running on the internal MCU processor must also be programmed.

There are several existing options for serial flash programming:

  • Uniflash – A PC based utility offering all operations, formatting, file-by-file programming and Image creation and programming. Content is programmed via UART.
  • Over The Air programming – Content is delivered through a network connection. However, this requires the serial flash to be formatted in advance during production.
  • Host Programming – A CC31xx SDK example showcasing the ability to program the service pack from host MCU and optionally format the serial flash. However, this only applies to CC31xx.

The new Embedded Programming is an additional option that leverages the programming feature of Uniflash, but eliminates the need of a PC. Image Programming tool and source code can be leveraged by customers and used as a reference to implement their own PC tool, program an external programmer on production line, or embed it into their product. The primary use of this tool is for some production line setups that may not have a connected PC, but an embedded device (e.g. MCU, FPGA, DSP, etc) for programming instead.

Note that this tool is not a replacement for Uniflash. Some key feature differences includes:

  • Uniflash has more functionalities that just image programming
  • The embedded programming implements just a subset of options exposed in boot loader. Uniflash uses all.
  • An image needs to be prepared before applying Embedded Programming, and this image can only be created with Uniflash.
  • The source code of this Embedded Programming is provided for custom implementation.

Package usage[edit]

Embedded Programming package includes not only the Image Programming tool itself but also a detailed application notes as described in the #Embedded Programming Installation Directory section.

The new Image Programming tool can be used as a standalone tool but as such it does not have any benefit over Uniflash. Image Programming tool is just a subset of what Uniflash supports.

Nevertheless, Image Programming tool and source code can be leveraged by customers and used as a reference to either implement their own PC tool, program an external programmer on production line or embed it into their product.

So why is this package required?[edit]

The main reason for having this package is for production line since there are production line schemes that do not include a PC but have some kind of programmable device (e.g. MCU, FPGA, DSP, etc) for programming.

Additional reason is when the product is already deployed. It can serve as a recovery path in case the device is not responsive for some reason.

The discrepancy from Uniflash is clear but can it replace Uniflash completely?[edit]

  • No, Uniflash has more functionalities that just image programming. The embedded programming implements just a subset of options Uniflash has
  • You need to prepare an image before applying Embedded Programming. This image can be created using Uniflash only
  • Uniflash is the tool for development phase. For production, Embedded Programming is recommended (unless a PC is available on Production Line)

Prerequisites[edit]

Software[edit]

Hardware[edit]

Only PG1.33 production devices are supported:

  • CC3100 IC Samples - P/N starts with CC3100R1 prefix
  • CC3100 IC Module - P/N starts with CC3100MODR1 prefix
  • CC3200 IC Samples - P/N starts with CC3200R1 prefix
  • CC3200 IC Module - P/N starts with CC3200MODR1 prefix

Embedded Programming Installation Directory[edit]

The directory structure of the package is:

<installation directory>
executables
↳ ImageProgramming.exe
↳ README.txt
Logic
↳ ImageProgramming.logicdata
sources
↳ bootldr.py
↳ ImageProgramming.py
↳ setup.py
↳ LICENSE.txt
↳ manifest.html
↳ README.txt
↳ tech.apn.simplelink.embedded_programming.sdk.pdf
  • sources directory includes *.py scripts for reference
  • executable directory includes ImageProgramming.exe utility and a README
  • logic directory includes a logic capture generated by Saleae SW. It illustrates full session of Image Programming over UART for CC3200. Can be used as reference
  • Other artifacts include an application notes document, README file, license file and a manifest file

Hardware Setup[edit]

UART interface must be connected between CC31xx/CC32xx device and the main processor. Only two pins are required, UART TX and UART RX. Flow control is not required.
The common configuration that applies to all chipsets is:

  • baud rate of 921600bps
  • 8 bits
  • no parity
  • 1 stop bit

In addition, nHib/nReset pin is required and must be able to be temporarily pulled to GND during a reset in order to make the device go into Boot Loader mode.
For CC3200, additional SOP2 pin must be pulled up during the device reset to make the device go into Boot Loader mode.

The following figure illustrates all flavors:

embeddedProgrammingSetup.jpg


Programming Usage[edit]

Help manual[edit]

To get help on command syntax, run the following command from DOS command shell:

 >> ImageProgramming.exe -h
Image Programming v1.0.0
-----------------------------
This utility programs a binary image to a serial flash connected to CC31xx/CC32xx device
Only production devices are supported (i.e. no pre-production devices)
The binary image needs to be prepared in advance using Uniflash utility

Make sure SOP2 is asserted

usage: ImageProgramming.exe [-h] -p COMM_PORT -i BIN_FILE_NAME [-e] [-v]

Image Programming v1.0.0

optional arguments:
  -h, --help        show this help message and exit
  -p COMM_PORT      The uart com port to be used for communicating with the
                    SimpleLink(TM) Device
  -i BIN_FILE_NAME  Input binary image
  -e                if set, flash is not erased before programming. User need
                    to make sure the flash is erased. If not set, flash is
                    erased prior to programming (takes time).
  -v                Verbose mode for extra debugging info

Available options[edit]

Argument -p COMM_PORT
Description Indicates the COM port to be used when connecting to the SimpleLink(TM) device
Options Decimal number indicating the COM port
Default N/A
Required? Yes


Argument -i BIN_FILE_NAME
Description Input binary image as generated by Uniflash
Options URL to the file location
Default N/A
Required? Yes


Argument -e
Description if set (true), flash is not erased before programming. User need to make sure the flash is erased.

If not set, flash is erased prior to programming (takes time).

Options true/false
Default false
Required? No


Argument -v
Description if set (true), activate verbose mode for extra debugging information
Options true/false
Default false
Required? No


Programming example[edit]

Following is an example of Image Programming of CC3200 LaunchPad.
The messages starting with "Step..." prefix are printed to help users align with the steps described on the Appliaction Notes.

 >> ImageProgramming.exe -p 8 -i Programming.bin
Image Programming v1.0.0
-----------------------------
This utility programs a binary image to a serial flash connected to CC31xx/CC32xx device
Only production devices are supported (i.e. no pre-production devices)
The binary image needs to be prepared in advance using Uniflash utility

Make sure SOP2 is asserted

Step #1 --> connect to target device
--- please restart the device ---
connection succeeded
get storage list
receive storage list

Step #2 --> Reading version info
Reading version info completed

Step #3 (CC3200 only) --> Switch UART to NWP bootloader
Switch to NWP bootloader completed

Step #4 --> Erasing 255 blocks starting from block #0
The process of erasing blocks takes several seconds
Erasing completed

Step #5 --> Program image[8:1042119]
Image programming completed

Step #5 --> Program image[0:7]
Image programming completed

Step #6 --> deassert SOP2, reset the target device and wait for the image extraction process to finish




Limitations/Known issues[edit]

  • Embedded Programming is supported for production devices only
  • The binary image needs to be prepared in advance using Uniflash utility
  • It is possible to skip erasing the serial flash but the user must make sure it is erased. Image programming on non-erased serial flash may result in unexpected behavior




Links[edit]

{{#invoke: Navbox | navbox }} {{#invoke: Navbox | navbox }}

E2e.jpg {{
  1. switchcategory:MultiCore=
  • For technical support on MultiCore devices, please post your questions in the C6000 MultiCore Forum
  • For questions related to the BIOS MultiCore SDK (MCSDK), please use the BIOS Forum

Please post only comments related to the article CC3100 & CC3200 Embedded Programming Tool here.

Keystone=
  • For technical support on MultiCore devices, please post your questions in the C6000 MultiCore Forum
  • For questions related to the BIOS MultiCore SDK (MCSDK), please use the BIOS Forum

Please post only comments related to the article CC3100 & CC3200 Embedded Programming Tool here.

C2000=For technical support on the C2000 please post your questions on The C2000 Forum. Please post only comments about the article CC3100 & CC3200 Embedded Programming Tool here. DaVinci=For technical support on DaVincoplease post your questions on The DaVinci Forum. Please post only comments about the article CC3100 & CC3200 Embedded Programming Tool here. MSP430=For technical support on MSP430 please post your questions on The MSP430 Forum. Please post only comments about the article CC3100 & CC3200 Embedded Programming Tool here. OMAP35x=For technical support on OMAP please post your questions on The OMAP Forum. Please post only comments about the article CC3100 & CC3200 Embedded Programming Tool here. OMAPL1=For technical support on OMAP please post your questions on The OMAP Forum. Please post only comments about the article CC3100 & CC3200 Embedded Programming Tool here. MAVRK=For technical support on MAVRK please post your questions on The MAVRK Toolbox Forum. Please post only comments about the article CC3100 & CC3200 Embedded Programming Tool here. For technical support please post your questions at http://e2e.ti.com. Please post only comments about the article CC3100 & CC3200 Embedded Programming Tool here.

}}

Hyperlink blue.png Links

Amplifiers & Linear
Audio
Broadband RF/IF & Digital Radio
Clocks & Timers
Data Converters

DLP & MEMS
High-Reliability
Interface
Logic
Power Management

Processors

Switches & Multiplexers
Temperature Sensors & Control ICs
Wireless Connectivity