Language: English | Deutsch | 中国的       Change Country
SEGGER Microcontroller

J-Link Flash Download » 8.08.05

Get an online QUOTE.
J-Link Flash Download - 8.08.05

Flash Download

J-Link comes with a set of flash loaders which permits the download of your application directly into the flash memory of your target system from your development environment. The J-Link flash loaders are highly optimized for fast flash programming and the feature itself is optimized to make it as simple as possible to use it. Moreover the flash download feature of J-Link can be used free of charge.

Usage of J-Link flashloaders

The J-Link flash download feature makes the flash of the target device behave as RAM in the debugger. You simply have to select the device, you want to program, in the debugger and when the debugger writes to the target memory, the J-Link DLL automatically detects if the memory range which is written is flash memory or not. If the affected memory area is in flash memory, the J-Link flashloader will become active and performs the programming of the flash memory automatically in a very short time.

Debuggers with support for J-Link flash download

Currently the flash download feature of J-Link is supported directly by the following debuggers/workbenches:

  • IAR Embedded Workbench for ARM (IAR EWARM)
  • Keil RealView MDK
  • Yagarto GNU ARM Toolchain (free) + J-Link GDB Server
  • GNU Debugger (GDB) + J-Link GDB Server
  • RDI + any RDI compliant debugger

But in general, the flash download feature can be used with every workbench which supports J-Link, since even if it is not possible to select your target device in the debugger, you can always select it in the J-Link control panel, which is opened when a debug session starts.

Note: Currently the flash download feature of J-Link allow download into the internal flash of a wide range of popular microcontrollers only,
but flash programming support for external CFI-compliant flash memories is planned for the near future.

How does flash programming via J-Link work?

This requires extra code. This extra code typically downloads a program into the RAM of the target system, which is able to erase and program the flash. This program is called RAM code and "knows" how to program the flash; it contains an implementation of the flash programming algorithm for the particular flash. Different flash chips have different programming algorithms; the programming algorithm also depends on other things such as endianness of the target system and organization of the flash memory (e.g. 1*8 bits, 1*16 bits, 2*16 bits or 32 bits) The RAM code requires data to be programmed into the flash memory. The data (or part of it) is downloaded to a different part of the RAM of the target system. The Instruction pointer (R15) of the CPU is then set to the start address of the RAM code, the CPU is started, executing the RAM code. The RAM code, which contains the programming algorithm for the flash chip, copies the data into the flash chip. The CPU is stopped after this. This process may have to be repeated until the entire data is programmed into the flash.

Download into flash memory for production purposes

  • Flasher ARM - Stand-alone flash programming solution. Flasher ARM is a programming tool for ARM/Cortex devices with internal or external flash memory. Flasher ARM is designed for programming flash targets with the J-Flash software or stand-alone. Flasher ARM can also operate as a normal J-Link.
  • J-Flash - Complete flash programming solution. J-Flash is a Windows application, which can program internal and external flash on ARM/Cortex devices. J-Flash can be used as a GUI-based application or in batch mode.
  • J-Link Flash SDK - An enhanced version of the J-Link SDK, which comes with an DLL with API functions for flash programming (erase, program verify). Ideally for customers which are planning to built their own application for production process.