From SEGGER Wiki
Jump to: navigation, search

This gives answers to the most Frequently Asked Questions.

FAQ: Frequently Asked Questions

What is the "standalone mode" and what is special about it

To program data into a device, the programming solution must have the following information:

  • the size and address of the memory to be programmed (the "memory layout") in the device
  • how to program the memory (the "algorithm")
  • how to access the device to apply the algorithm (the "access protocol")
  • the actual data to be programmed (the "target image").

Many programming solutions use the programming device as a kind of adapter to execute the physical part of the access protocol, while the higher parts of the access protocol, the information about the target image data, the algorithm and the memory layout are part of the control program executed on the PC.

We call this the "PC-controlled mode" or "host-based mode". The J-Link, for example, also works in this mode when it is used to program a target; with e.g. J-Flash as the control instance .

In standalone mode, on the other hand, the Flasher is prepared so that everything mentioned above is part of a configuration that it can access and thus carry out programming without an additional control instance. This configuration is generated by providing the necessary information to a configuration program such as U-Flash, which then only needs to be downloaded once to one or more Flashers.

The flasher executes the configured programming when triggered. You can find out how to trigger a flasher, for example, in "How can I start operation on my flasher?". The Flasher receives the trigger — if the "PROG" key or the handshake pins are not used for this purpose — as a command on the command line interface (CLI). For example, a terminal emulation program is used as a command instance.

A Flasher has 128 MB memory (Flasher Pro XL: 2 GB). This can be used to store several projects in parallel on one Flasher. You can switch between the projects using a simple #select command. This command can, for example, be sent automatically by the command instance when changing a fixture.

As it is not necessary to control the Flasher during operation, the test setup for ICT/FCT does not need to include the control program package — like J-Flash, nor does the control program need to be called up during the test. It is only necessary to command the flasher. This may simplify the test program.


  • A flasher configured in standalone mode will reproducibly process the configured project.
  • The configuration for standalone mode can be stored in configuration management and restored at any time if required.
  • The configuration only needs to be created for the initial setup. After that, only if input values change, e.g. the target image.
  • The flasher can hold several configurations in parallel. Switching between these configurations is done with a simple command.
  • Configuration program does not need to be part of test controller.

How can I start operation on my Flasher?

The following options are available for controlling the Flasher:

  1. Starting a programming by button "PROG"
  2. Dedicated pins in SUB-D9: START (start programming), BUSY (busy indication), READY/ERROR (result if not(BUSY) ); see: Flasher User Guide (UM08022): Ch. 4.2 "Handshake control".
  3. Command line via TELNET or serial interface; see: Flasher User Guide (UM08022): Ch. 4.3 "ASCII command interface".
  4. By DLL: The J-Link SDK should be purchased for this purpose.
  5. FlasherControl.exe: An unofficial application, without any warranty and support. When running this tool it sends an #Auto command via USB.

I can not find my device in J-FLash / U-Flash, but the website states it is supported

For historical reasons, most processors with ARM, some PowerPC, RX and some more exotic core architectures are only supported by J-Flash (JFlash.exe).

Projects with other devices listed as "supported" must be created in U-Flash (UniversalFlasher.exe).

How to readback data with U-Flash

Please look here: Flasher/How to read data from a device using U-Flash

What is the differences between Flasher ATE, Flasher Hub and Flasher Hub-12

Please look here: Flasher/Differences between Flasher ATE, Flasher Hub and Flasher Hub-12

When programming my device, areas are programmed with some value although no data are available for them

Picture 1: Source data file with memory regions of interest
Picture 2: Padded areas with size 0x800
Picture 3: Padded areas with size 0x20

This behavior is normally only noticed by the user on MCUs with some kind of flash integrity check such as ECC when attempting to program a block of data within or adjacent to an already programmed sector.

It is caused by the fact that the areas defined in the data files are always padded with the "empty value" to such an extent that a flash sector is completely filled. This is then programmed into the MCU in this way.

In the example the data file contains data for 0x801FFF10..0x801FFF2F, 0x0x801FFF80..0x801FFF83 and 0x801FFFC0..0x801FFFC3 (Picture 1). The sector size is for this example set to 0x800 i.e. 2KByte.

Due to padding all areas marked red are also written (Picture 2).

To prevent this, a suitable smaller sector size has to to be chosen, e.g. 0x20. The result with those changed settings are shown in the picture (Picture 3).

For MCUs with flash integrity check, the check value (ECC) is formed and written following the writing of a "page". Normally, this cannot be changed in subsequent reprogramming attempts. If the page is to be changed, the entire sector must be erased, as any attempt at reprogramming will result in an invalid integrity check value or an exception thrown by the MCU's flash controller.

The flasher currently does not distinguish between an "erase" sector size and a "write" page size. For devices supported by U-Flash, the sector can be adjusted in the device definition files. How to do this, is described in reduce write sector size. Please note that this is usually accompanied by a reduction in programming speed.

Can I create U-Flash projects with pre-modified configurations?

It is possible to create U-Flash template projects that can be used to create new U-Flash projects that uses the pre-modified configurations of the template.

Creating a template

  1. Create a new project for the desired target device
  2. Configure the project
  3. Store the project as a template (File -> Save project as template...)

The templates are stored in a specific directory. Only U-Flash projects located in that directory are handled by U-Flash as templates.

Using a template

  1. Open U-Flash and click on "Select device"
  2. In the device selection click on the "Templates" tab and select the desired template project

What is the difference between U-Flash projects and U-Flash template projects?

U-Flash template projects are projects for a specific target device that are pre-configured. These template projects are saved at a special location which makes these templates available in the "Templates" tab of the U-Flash device selection. Templates are not intended to be fully configured but provide pre-configured settings for other "normal" U-Flash projects. The user can then create a normal U-Flash project using a template and apply the final modifications to it.

What is the difference between U-Flash projects selecting a target device from SEGGER packages and U-Flash projects deriving from templates?

U-Flash projects that select a device from the SEGGER packages tab in the device selection derive their configuration from the default configurations in the Device Definition File (DDF) provided by SEGGER. A U-Flash project selecting a template in the device selection, on the other hand, derives its configuration from the selected template, which can be pre-configured for special purposes.