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.
|Device series||Prog. speed [KB/s]||Total time* to program|
a 512 KB image [s]
|Ambiq APOLLO (e.g. APOLLO512)||104 KB/s||5.013 s|
|Analog Device ADSP-CM4xx (e.g. ADSP-CM403F)||153 KB/s||4.131 s|
|Analog Device ADuCM (e.g. ADuCM320)||147 KB/s||3.731 s|
|Atmel AT91SAM4 (e.g. AT91SAM4S32AMB)||301 KB/s||2.031 s|
|Atmel SAMD20 (e.g. ATSAMD20J18)||67 KB/s||8.667 s|
|Atmel SAM V70/V71 (e.g. ATSAMV7EA)||172 KB/s||3.109 s|
|SiLabs EFM32 Giant Gecko (e.g. EFM32GG990F1024)||255 KB/s||2.183 s|
|Infineon XMC4500 (e.g. XMC4500-1024)||53 KB/s||9.756 s|
|Marvell 88MC200||175 KB/s||4.388 s|
|NXP Kinetis K60 (e.g. MK60FN1M0xxx12)||68 KB/s||7.599 s|
|NXP Kinetis L25 (e.g. KL25Z128VLK4)||36 KB/s||15.766 s|
|NXP Kinetis M34 (e.g. KM34Z128CLL5)||24 KB/s||21.288 s|
|NXP LPC18xx (e.g. LPC1857)||265 KB/s||2.108 s|
|Renesas Synergy S7 (e.g. R7FS7G2)||531 KB/s||1.065 s|
|Renesas Synergy S3 (e.g. R7FS3A7)||63 KB/s||8.220 s|
|ST STM32F1/F3 (e.g. STM32F103ZG)||33 KB/s||15.712 s|
|ST STM32F2/F4 (e.g. STM32F407IE)||281 KB/s||1.901 s|
|ST STM32L4 (e.g. STM32L476ZG)||71 KB/s||7.912 s|
|ST STM32F7 (e.g. STM32F779NI)||273 KB/s||1.939 s|
|ST STM32L0 (e.g. STM32L073VZ)||17 KB/s||29.952 s|
|TI CC1350 (e.g. CC1350F128)||186 KB/s||2.792 s|
|TI CC2640 (e.g. CC2640R2F)||187 KB/s||2.791 s|
|TI CC2650 (e.g. CC2650F128)||186 KB/s||2.797 s|
|TI MSP432 (e.g. MSP432P401R)||557 KB/s||1.040 s|
|Toshiba TMPM330 (e.g. TMPM330FDFG)||296 KB/s||1.961 s|
* Includes every operation from start to finish, including the time for program, verify, compare, as well as prepare, target setup and target restore.
|Device series||QSPI flash||Program||Program & Verify|
|Renesas RA6M3 (e.g. R7FA6M3AH)||Macronix MX25L25645G||954 KB/s||797 KB/s|
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.
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.
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: firstname.lastname@example.org). 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.
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
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 (email@example.com).
|#||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|
|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
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.
SEGGER J-Link vs. I-jet Speed Comparison
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.
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 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> loadbin <PathToBinFile>, <programmingaddress>
- J-Link Commander executes the flash download and prints out the time statistics on success.
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
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.
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.
- 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)