J-Link 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 Open Flashloader feature, free of charge.
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 | Progam and Verify |
---|---|---|
Ambiq Micro AMAP42KK-KBR | 334 KB/s | 331 KB/s |
APEXMIC APM32F103ZET6 | 52 KB/s | 50 KB/s |
Cypress CYT2B98CAC_M0 | 988 KB/s | 938 KB/s |
GigaDevice GD32E1 | 154 KB/s | 143 KB/s |
IndieSemi LH7A400-10 | 76 KB/s | 74 KB/s |
Maxim MAX32570 | 90 KB/s | 89 KB/s |
Maxim MAX78000 | 92 KB/s | 91 KB/s |
NordicSemi NRF52810 | 89 KB/s | 89 KB/s |
NXP LPC11U68 | 148 KB/s | 140 KB/s |
NXP LPC1857 | 431 KB/s | 431 KB/s |
NXP MKL25Z128VLK4 | 37 KB/s | 37 KB/s |
NXP MKL28Z512VLL7 | 33 KB/s | 33 KB/s |
NXP MKW36A512xxx4 | 81 KB/s | 81 KB/s |
NXP S32K144 | 223 KB/s | 219 KB/s |
Renesas R7FA6M3AH | 398 KB/s | 388 KB/s |
Renesas R7FS3A67 | 64 KB/s | 64 KB/s |
Renesas R7FS5D97E | 396 KB/s | 395 KB/s |
Silicon Labs EFR32MG12P | 132 KB/s | 132 KB/s |
ST BLUENRG_355x | 127 KB/s | 123 KB/s |
ST STM32F103RB | 33 KB/s | 33 KB/s |
ST STM32F373RC | 33 KB/s | 33 KB/s |
ST STM32F429ZI | 270 KB/s | 270 KB/s |
ST STM32F746ZG | 220 KB/s | 217 KB/s |
ST STM32H735IGK | 364 KB/s | 358 KB/s |
ST STM32L432KC | 90 KB/s | 90 KB/s |
ST STM32U5 | 262 KB/s | 223 KB/s |
ST STM32WL55JC | 72 KB/s | 67 KB/s |
Programming speeds on QSPI NOR flash
Device series | QSPI Flash | Program | Progam 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 |
Raspberry PI RP2040 QSPI | Winbond W25Q16DV | 363 KB/s | 297 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 Open Flashloader, or SEGGER can help. Please contact sales@segger.com to request a quote.
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 Support for New Devices: Open Flashloader
In general, the J-Link DLL comes with a built-in device database that defines which devices are supported. SEGGER updates this database as often as possible. However, there may still be occasions where the available support for a device may not be available yet. In such cases the Open Flashloader feature enables users to add support to the J-Link. The device will be supported in similar fashion as all the devices supported already. This includes flash download as well as the unlimited flash breakpoint feature. In addition to creating support for the device, an existing CMSIS compatible flash algorithm can be used to create support for the J-Link as well.
For detailed instructions, please refer to our Open Flashloader on our wiki.
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 Flashloader.
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
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.
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
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. Flasher can also operate as a normal J-Link.
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)