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
Contents
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]
- Embedded Programming Package (Microsoft Windows)
- Python
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
- ↳ executables
- 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:
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 }}