Flash Download
J-Link comes with highly-optimized, built-in flash loaders that allow speedy application download into a target system’s flash memory. To access a list of supported devices, please go to supported CPUs and devices.
Desired device not listed here? Silicon vendors and end customers can add support for devices by themselves, using the J-Link Device Support Kit.
J-Link - The Fastest in Flash Programming: A Speed Comparison
As the industry leading debug probe, J-Link has consistently outperformed many other debug probes. Its flash download performance in particular has been compared with the flash download performances of other devices. When these tests were carried out, they were done with the J-Link Commander. During a test, an image of a device’s full flash size was placed into the flash memory of the device.
All results were taken from the J-Link Commander output. Tests started with the flash either empty or erased, as flash erase times depend very much on the selected device. Sector sizes may grow for large devices. Please refer to the chip manual of the appropriate device to get information about erase times.
Programming Speeds on Internal Flash
Device Series | Program | Program and Verify |
---|---|---|
Cypress CYT2B98CAC_M0 | 988 KB / s | 938 KB / s |
NXP LPC1857 | 431 KB / s | 431 KB / s |
Renesas R7FA6M3AH | 398 KB / s | 388 KB / s |
Renesas R7FS5D97E | 396 KB / s | 395 KB / s |
ST STM32H735IGK | 364 KB / s | 358 KB / s |
Programming Speeds on QSPI NOR Flash
Device Series | QSPI Flash | Program | Program and Verify |
---|---|---|---|
NXP MIMXRT595 | Macronix MX25UW51345G | 1086 KB / s | 1086 KB / s |
NXP MIMXRT685S | Macronix MX25UM51345G | 988 KB / s | 988 KB / s |
NXP MIMXRT1052 | ISSI IS25WP064A | 865 KB / s | 486 KB / s |
NXP MIMXRT1064 internal QSPI | Winbond W25Q32JV | 390 KB / s | 386 KB / s |
NXP MK80FN256V15 | Macronix MX25U3235F | 362 KB / s | 323 KB / s |
Renesas R7FA6M3AH | Macronix MX25L25645G | 954 KB / s | 797 KB / s |
Renesas R7FS5D97E | Winbond W25Q64FV | 439 KB / s | 442 KB / s |
ST STM32H757XI QSPI | MT25QL512ABB8ESF | 1080 KB / s | 959 KB / s |
ST STM32L4R9AI QSPI | Macronix MX25LM51245G | 964 KB / s | 763 KB / s |
ST STM32L562QE QSPI | Macronix MX25LM51245G | 1043 KB / s | 894 KB / s |
QSPI NOR Flash Support
J-Link supports the programming of memory-mapped QSPI NOR flash via the standard methods described above.
In the beginning, SPI NOR flash was usually a custom connection and not standardized, with advanced MCUs and QSPI flash memory-mapped made visible in the MCU address space. However, it eventually became a full replacement and even successor of parallel NOR flash. With J-Link, all features known from internal flash are also available in memory-mapped QSPI flash:
- Makes flash behave like RAM in the debugger (e.g. writing in the memory window can be used to change constants in flash)
- Flash breakpoints (unlimited number of breakpoints when debugging in flash)
- Any IDE (e.g. GDB based ones) can easily download to flash without the need to add any custom flash algo in the IDE; J-Link does all the work
Note: Hardware breakpoints are not usable in QSPI flash on many Cortex-M based devices. This makes J-Link + flash breakpoints the only real option to debug in QSPI flash on these devices.
Parallel CFI NOR Flash Support
J-Link’s flash download feature supports the programming of external CFI-compliant, parallel NOR flash devices. This allows these devices to be programmed either directly from the debugger or through J-Link Commander.
Need more information on how to set up the debugger / J-Link commander into parallel (CFI) NOR flash memory? Then please refer to the J-Link downloads page and check out the “Flash Download” chapter. For production environments, we recommend using J-Flash or Flasher ARM standalone.
Non-Memory Mapped Flashes: Serial NOR-, NAND-, DataFlash and EEPROM
Non-memory mapped flash devices like Serial NOR-, NAND-, DataFlash and EEPROM are not connected to the address and data bus directly. Their connections to the CPU / MCU / MPU also differ from device to device.
A customized flash algorithm is needed to program these devices. Customers can do this themselves using J-Link Device Support Kit, or SEGGER can help. Please contact sales@segger.com to request a quotation.
With custom algorithms, these types of flash devices can be programmed via J-Flash and Flasher ARM. To program SPI flash memories directly via the SPI bus, J-Flash SPI is available.
Adding devices to J-Link
The J-Link software, which can be downloaded from www.segger.com, comes with support for most popular (and some not-so-popular) CPUs and devices.
New devices are added continuously by SEGGER. Support for all devices contained in the SEGGER J-Link software package is available free of charge to existing and new customers.
SEGGER engineers have written, validated, and optimized the flash loaders, making sure they work reliably and deliver the best possible performance. SEGGER has hardware in-house for all supported devices and can re-test and give support to users.
New devices can be added by SEGGER or a third party.
SEGGER support for new devices
SEGGER's Embedded Experts can add support for new or custom devices by drawing on their extensive experience. In many cases, this is done by SEGGER free of charge. However, in urgent cases, or for devices which are not designed for the mass market, or devices that are highly complex, or for other reasons, there may be a charge.
Silicon Vendors adding devices
Customers can ask their Silicon Vendor to add new devices.
Silicon Vendors have the expertise to do this and have often signed up to SEGGER’s J-Link Prime service to accomplish this quickly and efficiently.
Silicon Vendors looking for more information can visit SEGGER’s Silicon Vendors Resource Center webpage.
Customers adding devices (using Device Support Kit)
Tech-savvy customers can also use the Device Support Kit (DSK) to add new devices themselves.
Flash Programming Speed
The following speed tests were carried out with different debug probes and software under the same test conditions. Devices tested were the SEGGER J-Link, IAR I-jet and ST-Link V2 and Keil’s ULINKpro.
J-Link is the only debug probe that was tested in different environments, such as IAR Embedded Workbench for ARM, KEIL uVision and SEGGER’s J-Link Commander. Tests performed with the J-Link used J-Link software version 4.59a and the J-Link flash loader.
All tests were performed by placing a 512 KB program into the flash memory of a blank STM32F417IG microcontroller connected via SWD interface. The SWD speed was selected at the maximum possible for each debug probe.
Tests via the JTAG interface produced similar results. Project files are available upon request (support@segger.com).
J-Link Speed Test Comparison: Results
# | Probe | Configuration | Time [s] | Speed [KB/s] |
---|---|---|---|---|
1 | J-Link | J-Link Commander (v4.59a) | 2.1 | 244 |
2 | J-Link | IAR EWARM (v6.40.2) | 3.1 | 165 |
3 | J-Link | KEIL uVision (v4.60) | 3.1 | 165 |
4 | J-Link | emIDE (v120814) | 3.2 | 160 |
5 | ULINKpro | KEIL uVision (v4.60) | 8.6 | 60 |
6 | I-jet | IAR EWARM (v6.40.2) | 18.8 | 27 |
7 | ST-LINK | IAR EWARM (v6.40.2) | 35.1 | 15 |
J-Link vs. I-jet
J-Link and I-jet were tested. Since I-jet can only be used with the IAR Embedded Workbench for ARM, it is already quite limited compared to J-Link’s flash programming speed. As can be seen on the above table, it is in fact six times slower than SEGGER’s J-Link.
The J-Link also has the option of further software enhancements with the production flash programming utility (J-Flash). The ability to take full advantage of the development environment using the Unlimited Flash Breakpoint module also means you free your development from the hardware breakpoint restriction. In this test, J-Link is the clear winner.
J-Link vs. ULINKpro
ULINKpro can only be used with the KEIL uVision and is more expensive than the industry standard J-Link. And since it is restricted to KEIL uVision, it is unsuitable for flash programming in a production environment.
ULINKpro also lacks the additional debugging features and performance that comes standard with SEGGER’s product line. Unlike the J-Link, it cannot set an unlimited number of flash breakpoints.
J-Link vs. ST-LINK
While quite affordable, ST-Link is only available for use with STM8 and STM32 microcontrollers. Amongst all the devices tested, it has the lowest performance. This means longer development times and more debugging frustration. Since it cannot be moved to another ARM/Cortex core, this device may end up costing more as projects may become active, ultimately requiring the purchase of a debug probe that can support a newly chosen microcontroller.
SEGGER J-Link vs. I-jet Speed Comparison
In conclusion, speed comparison shows that SEGGER’s J-Link is the fastest debug probe available. If considering a device that hasn’t been mentioned in these tests, make sure to ask your supplier for their flash programming numbers. We’re pretty sure SEGGER will outperform all the others. With options that suit every debugging and production need, SEGGER has you covered!
Just take a look below:
Download into Flash Memory for Development Purposes
We do not recommend or support the following programming methods via J-Link Commander or J-Flash Lite for production purposes. Regarding production programming, only production grade programming tools should be used.
Production grade programming tools typically feature a more sophisticated, multi-step verification process. Many applications also require customization / patching of variable data such as serial number(s), MAC addresses and similar.
We instead recommend J-Flash or Flasher for your production grade programming needs.
J-Link Commander
J-Link Commander is a free command line utility for simple analysis of the target system with J-Link.
J-Link Commander also allows downloads into flash memory of target systems.
How to perform download into flash via J-Link Commander:
- Connect J-Link to the PC.
- Connect target system to J-Link
- Start J-Link Commander.
- Type the following commands:
J-Link> device <devicename> // For a list of known devices, please refer to here
J-Link> r
J-Link> h
J-Link> loadbin <PathToBinFile>, <programmingaddress> - J-Link Commander executes the flash download and prints out the time statistics upon success.
J-Flash LITE
J-Flash Lite is a free, simple graphical user interface which allows downloading into flash memory of target systems. J-Flash Lite is part of the J-Link Software and Documentation package, available for download here.
How to perform downloading into flash via J-Flash Lite:
- Make sure that the latest J-Link software & documentation pack is installed.
- Connect J-Link to the PC
- Connect target system to J-Link
- Start J-Flash Lite
- Select device, debug interface and communication speed
- Choose a file and click Program Device or click Erase Chip
- J-Flash Lite performs the requested operation
Download into Flash Memory for Production Purposes
Flasher - The Stand-Alone Flash Programming Solution
Flasher is a programming tool for all common devices with internal or external flash memory. For a list of all supported devices click here. Flasher ARM is designed for programming flash targets with the J-Flash software or stand-alone.
J-Flash - The Production Grade Flash Programming Solution
J-Flash is an application that can program internal and external flash on ARM/Cortex devices. J-Flash can be used as a GUI-based application or in batch mode. It is available for Windows, Linux and macOS.
On supported CPUs, all kinds of flashes can be programmed:
- Internal flash
- External parallel NOR flash
- Serial NOR flash 1
- NAND flash 1
- Data-Flash 1
- EEPROM 1
1 Requires production programming software (J-Flash) and a so called custom RAMCode (since these flashes are not memory-mapped accessible)