J-Link Flash Download
J-Link comes with a set of highly speed-optimized built-in flashloaders which allow fast download of applications, directly into the flash memory of your target system. To access a list of supported devices, please go to supported CPUs and devices.
If a device is not yet listed there, silicon vendors and end customers can add support for said device by themselves using the Open Flashloader feature. And the best of all: This feature is free of charge.
J-Link is Fastest in Flash Programming
The flash download performance with J-Link has been tested with various devices. These tests were performed with J-Link Commander by placing an image of the full flash size of the device into the flash memory of the device.
Note: All results are taken from the J-Link Commander output. Precondition: flash was empty or erased, as the flash erase times depend very much on the selected device. As well 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 |
---|---|---|
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 |
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 |
Renesas R7FA6M3AH | 398 KB/s | 388 KB/s |
Renesas R7FS3A67 | 64 KB/s | 64 KB/s |
Renesas R7FS5D97E | 396 KB/s | 395 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 |
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 |
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 programming of memory-mapped QSPI NOR flash via the standard methods described before.
While in the beginning, SPI NOR flash was usually a custom connection and not standardized, with advanced MCUs and making the QSPI flash memory-mapped visible in the MCU address space,
it 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:
- Make 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 even the need to add some sort of custom flash algo in the IDE, as J-Link does all the work
Note: On many Cortex-M based devices, hardware breakpoints are not usable in QSPI flash, making J-Link + flash breakpoints the only real option to debug in QSPI flash on these devices.
Parallel CFI NOR flash support
The flash download feature of J-Link supports programming of external CFI-compliant, parallel NOR flash devices, allowing these devices to be programmed either directly from the debugger or through J-Link commander. For more information regarding how to setup the debugger / J-Link Commander for download into parallel (CFI) NOR flash memory, please refer to UM08001, chapter "Flash Download". For production environments, we recommend using J-Flash or Flasher ARM standalone.
Non-Memory Mapped Flashes: Serial NOR-, NAND-, DataFlash and EEPROM
Since these flash devices are not connected to the address and data bus directly and the connection to the CPU / MCU / MPU differs from device to device, a customized flash algorithm is necessary in order to program these flash devices. The flash algorithm is implemented using Open Flash loader. This can either be done by the customer or by SEGGER (request quote: sales@segger.com). With custom algorithms it is possible to program these types of flash devices via J-Flash and Flasher ARM. To program SPI flash memories directly via the SPI bus, there is J-Flash SPI.
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 tries to update this database as often as possible. Still there are occasions, where support for a device is needed, that is not available yet. In such cases the Open Flashloader feature allows 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 Wiki: https://wiki.segger.com/Open_Flashloader
Flash Programming Speed
Speed test
The speed tests have been made with different debug probes and software under the same test conditions. SEGGER J-Link, IAR I-jet and ST-Link V2 and Keil's ULINKpro were tested. J-Link is the only probe which has been tested in different environments such as with IAR Embedded Workbench for ARM, KEIL uVision and SEGGER's J-Link commander. The tests with J-Link were performed with J-Link software version 4.59a and using J-Link flash loader.
All tests have been performed by placing a 512 KB program into the flash memory of a blank STM32F417IG microcontroller connected via SWD interface. The SWD speed has been selected at the maximum possible for each debug probe.
Tests via JTAG interface gave similar results. Project files are available upon request so to reproduce these tests results (support@segger.com).
J-Link vs. I-jet
The I-jet, which is limited only for use with the IAR Embedded Workbench for ARM, pales in comparison to the J-Link's flash programming speed. As can be seen, it is six times slower than the SEGGER J-Link. With the option to further software enhance the J-Link with the production flash programming utility (J-Flash) and the ability to take full advantage of your development environment with the Unlimited Flash Breakpoint module (freeing your development from the hardware breakpoint restriction), makes the J-Link the clear winner.
J-Link vs. ULINKpro
The ULINKpro is limited to use with KEIL uVision. It comes at a much higher price than the industry standard J-Link, and lacks in performance and additional debugging features that are commonplace with the SEGGER product line. Unlike J-Link, it is not capable of setting an unlimited number of flash breakpoints. Since it requires a license of KEIL uVision it is not suitable for flash programming in a production environment.
J-Link vs. ST-LINK
The ST-LINK, which is limited only for use with STM8 and STM32 microcontroller families, is cheaply available. This device performs lowest among those tested. The consequences of this include a great increase in development time and debugging frustrations. The inability to move to another ARM/Cortex core may make this device more costly, as projects may become active which ultimately require the purchase of a debug probe that can support a newly chosen microcontroller.
Conclusion
This speed comparison shows the J-Link to be the fastest debug probe available. If you are considering the use of a device other than those found in this test, we urge you to ask the supplier for their flash programming numbers before making the move. We are confident SEGGER will outperform all others. With offerings to suite every debug/production need; SEGGER has you covered.
Download into flash memory for development purposes
The following methods of programming via J-Link Commander or J-Flash Lite are not recommended or supported for production purposes. For production programming, production grade programming tools should be used. These 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 recommend J-Flash or Flasher for 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 downloading 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 on 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
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
Complete production grade flash programming solution. J-Flash is an 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. 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)