Programming the device in the end system requires certain pins to be accessible. Then using software tools and hardware the device can be programmed.
Acquiring devices already programmed then installing them into the system. These devices can come from Silicon Labs, its distributors, or a third-party service.
In-House Device Programming
The do-it-yourself option where devices are programmed once received in-house. This either uses Silicon Labs hardware and tools or third party programmers.
In-system programming involves programming the device after it has been installed in the end system. For this method access to the debug pins is made available so that the device can be programmed. The pins vary depending on the debug interface and device.
Pins needed and associated documentation:
C2 — C2CK, C2D, and GND:
Joint Test Action Group (JTAG) — TCK, TMS, TDI, TDO and GND:
Serial Wire Debug (SWD) — SWDIO and SWCLK:
- AN0062: Programming Internal Flash Over the Serial Wire Debug Interface
- AN1011: Standalone Programmer via the SWD Interface
Once the correct pins are routed, there are a number of tools offered to program the device.
Flash Programmer: A tool that allows the user to flash the device with a binary or hex file. Available within Simplicity Studio that supports EFM8/32, C8051, EFR32, and EZR32.
Simplicity Commander: A tool that contains a scriptable command line, allows the user to flash their application, and create production ready binaries, for more information see UG162: Simplicity Commander Reference.
Download Simplicity Commander for your Platform below:
Jlink Python Programming GUI Tool: A Python 2.7 based GUI tool that uses the Segger JLinkARM.dll to program EFM8 and EFM32 devices via Segger JLink over the C2 or SWD interface.
Flash Programming Utilities: A GUI-based or command line C8051 programmer that allows the user to download code to a device and perform other memory operations without needing to use the IDE. Found here. For more information see AN117
Production Programmer: A standalone tool similar to the flash programmer and Simplicity Commander but targeted more for rapid production programming of many devices. For more information see the MCU Software pages.
Having devices pre-programmed is the easiest option for production programming. No design considerations need to be made and the device can be quickly installed into the final system. However, it is the least adaptable option and therefore is not well suited for rapidly-changing programs. For this option a binary or hex file must be provided.
Silicon Labs offers pre-programmed devices, contact your local sales representative for more information.
Many Silicon Labs distributors and other entities offer pre-programmed devices. For a list, see the table in the community.
This option involves programming the uninitialized and uninstalled device, in-house. In order to program the device custom-made or third-party hardware is used.
For custom hardware, the information in the following application notes can be used to design and build a custom programmer.
- AN0062 Programming Internal Flash Over the Serial Wire Debug Interface
- AN1011 Standalone Programmer via the SWD Interface
Many third-party programmers support Silicon Labs’ products. They vary in speed, price, and the number of devices programmed at once. For a list of commonly used programmers visit the community.