Flasher - Overview
General
The Flasher is an in-system programming tool for microcontrollers with on-chip or external flash memory. It stores one or more firmware images internally and can program a target device either in standalone operation without a PC or while connected to a PC for direct control and configuration.Once it has been set up, the Flasher programs the target device automatically, e.g. either by pressing a button or through an external control signal. The Flasher can be used to program the flash memory of a wide range of target devices during both development and production. It supports numerous target devices and also allows adding support for previously unsupported devices.
There are multiple Flasher models with different features on offer. For more information and a complete overview of the Flasher models, visit Flasher Model Overview.
Software overview
To make the most of the Flasher hardware, several software tools are available. The following sections focus on the main tools needed for production programming, with many more tools available for specific use cases.
For more information and a detailed list of available software for the Flasher visit the Flasher Software and Documentation Pack Overview.
U-Flash
U-Flash is a software utility for preparing Flasher units for standalone programming. It can be used through an intuitive user interface or a command line interface. With U-Flash, you can easily create and save projects to configure the Flasher for standalone operation.
After a project is created, the configuration and data files required for programming can be sent directly to the connected Flasher unit. Programming cycles can also be triggered directly from within U-Flash.
For detailed information visit UM08037 UFlash.
Use case
Typically, U-Flash is used to prepare firmware images and transfer them to the Flasher, defining how and what the Flasher will program on the target device in standalone mode.
Using U-Flash, the user selects the target device, configures programming options, and loads one or more firmware images into the Flasher. These settings are stored in the Flasher, allowing it to operate independently of the PC during programming. Once configured, the Flasher can program target devices automatically, for example in production or service environments.
U-Flash is therefore primarily used during setup and preparation, while the Flasher performs the actual programming in manufacturing, maintenance, or field-service scenarios.
Supported devices
U-Flash is specifically designed to work with the Flasher and therefore supports a different set of target devices than J-Flash. It only supports J-Flash devices via SWD and does not support JTAG.
But there are also devices that are only supported by U-Flash, like devices that can only be programmed via UART or SPI for example. This is often the case for devices which feature a dedicated bootloader that handles the device's programming.
J-Flash
J-Flash is a standalone flash programming software for PCs. It is used to program internal and external flash memory on a wide range of microcontrollers with high speed and reliability over the targets debug interface. Using J-Flash, the user selects the target device, configures programming options, and loads the firmware to be programmed. The software then programs and verifies the flash memory, ensuring that the correct data is written to the device.
J-Flash both allows you to create standalone projects for the Flasher and use a connected J-Link or Flasher to interface with the target hardware. It can be used interactively through a user interface or automated via a command line interface.
For detailed information visit UM08003 JFlash.
Use case
J-Flash is used to control a connected Flasher directly from a PC during development or production. With J-Flash you can read and write to a targets flash memory.
Using J-Flash, the user selects the target device, configures flash programming parameters, and loads the firmware image to be programmed. J-Flash then programs and verifies the target’s flash memory, ensuring that the data is written correctly. This makes it suitable for tasks such as initial device programming, firmware updates, and validation during development.
In addition to interactive use, J-Flash supports scripted and automated operation. This allows it to be integrated into production or test environments, where devices can be programmed and verified under PC control.
The software enables flexible and controlled programming workflows in manufacturing, service, and lab environments where standalone programming is not required.
Supported devices
J-Flash supports most common devices, that can be programmed using the targets debug interface (e.g. SWD, JTAG, Fine, ...). Any other arbitrary interfaces (e.g. UART, SPI, ...) are not supported via J-Flash and can instead be targeted using U-Flash.
For a detailed list of the supported devices visit supported devices.
Flasher BitStreamer
Flasher BitStreamer is SEGGER’s software tool for easy and reliable in-system programming of FPGAs and CPLDs using any Flasher production programmer.
It converts industry-standard SVF and STAPL files into ready-to-run packages that can be deployed directly to a Flasher or exported as an archive for the Flasher Deployer, within seconds and without complex setup or scripting.
Flasher BitStreamer creates standalone projects that allow Flashers to program microcontrollers, memories, and programmable-logic devices from various vendors via the standard 4-pin JTAG interface, using the same reliable hardware platform. These projects always run standalone on the Flasher, even when triggered from the command line.
For additional information on the BitStreamer visit the BitStreamer product page.
Use case
A typical use case for the BitStreamer is programming configuration data or firmware into devices that use serial bitstream interfaces. BitStreamer runs on a PC and transfers bitstreams to a target device via a Flasher or a compatible programming interface.
The user loads a bitstream file into BitStreamer and configures the required interface and signal parameters. BitStreamer then sends the bitstream to the target device and monitors the programming process to ensure reliable data transfer. This is commonly used for devices such as FPGAs, CPLDs, or other components that require serial configuration data rather than traditional flash programming.
BitStreamer can be used interactively or integrated into automated workflows, making it suitable for development, production, and service environments where precise and repeatable bitstream programming under PC control is required.
Supported devices
Field Programmable Gate Arrays (FPGAs) and Complex Programmable Logic Devices (CPLDs) are the natural candidates for programming using SVF and STAPL files. Because the programming file specifies exactly how to program a device, there’s no need to develop a custom programming solution: BitStreamer works straight out of the box with these files.
Although FPGAs and CPLDs are the most common targets for programming, any device that can be programmed using an SVF or STAPL file is supported by Flasher BitStreamer and Flasher programmers. As such, any device from any vendor is supported by the combination of Flasher and Flasher BitStreamer when using SVF and STAPL. BitStreamer has been successfully tested with devices from Xilinx/AMD, Altera/Intel, Actel/Microsemi/Microchip, Lattice Semiconductor, and GOWIN Semiconductor without issue.
Flasher Apps (Flasher SDK)
Flasher Apps allow you to write custom code to run on the Flashers virtual CPU using a subset of the C programming language, with a compiler included in the Flasher SDK. The Flasher firmware provides a variety of API functions that can be called by the app to interact with the Flasher, modify data, or communicate with the target device via a supported interface. Common target interfaces, such as UART, SPI, I2C, SWD, and JTAG, are already supported. If a custom interface is required, it can be implemented by the user as part of the app.
The Flasher SDK is not limited to specific architectures or cores and allows the creation of a wide range of applications beyond programming support.
For more information visit the Flasher SDK product page.
Use case
Flasher Apps are used in a wide range of applications. They can be employed to program the internal flash memory of a microcontroller or system-on-chip, program external rewritable non-volatile memory devices, or configure FPGAs and CPLDs. Flasher Apps are also used to run device and board tests during production and to develop diagnostic applications.