UM08022 Flasher: Difference between revisions

From SEGGER Knowledge Base
Jump to navigation Jump to search
No edit summary
 
(83 intermediate revisions by 6 users not shown)
Line 1: Line 1:
<!---
Flasher is an [[In-system_programming | in-system programming]] tool for microcontrollers with on-chip or external flash memory.
General TBD:
Flasher is designed for programming flash targets with the [[UM08003_JFlash | J-Flash]] software or stand-alone.
  - LG: Right now - EVERYTHING
===========================================
  --------------------[more specific, but on multiple locations]
    - check if all emphasis (bold, tt, blue, etc ) have made it into the new version
    - Add Information -> Additional information
    - use of the term free-of-charge utility/tool etc
    - check compliant to DocStandards_Rules.txt
    - Remove everything regarding to Kickstarter versions? eventually create a chapter Legacy -> Kickstarter version were available for hw version 5-x (200x-200x)...[..]
    - a lot of sections [marked cores or up-to-date] explain behavior of ARM7, ARM9 and sometimes Cortex-M3 cores in context of functionality of the J-Link software.
      We should improve these sections by clarifying if this applies to all ARM Cortex cores or where the behavior is different or does not apply at all.
    - if week keep the IDE specific stuff in the manual, add Ozone, ES and J-Link Commander were no mentioned.
    - IDE specifics move into wiki confirmed by Alex
      Make a section in each respective chapter which explains that IDE specific steps to use the respective feature are explained in the wiki (define / include of IDEs documented in the wiki)
    - check all sections regarding licensing
    - Check compliance of J-Link emDocs with typographic conventions described in AboutThisDocument.emDoc. What should be altered? e.g. references
    - use uref at all (not blue)?
    - search and decide where to use \ref (ref with page number)
    - why is \ref (no single "option" \uref is more basic as \ref.....)
    - in text, use either \ref or \iref instead of \uref
    - in old manual, \H3 started on a new page (not per default, but set manually for api tables etc...)
    - move used old images and source files (visio etc) via svn (currently copied)
  --------------------[grammar / vocabulary discussion]
    - Product names
      -- Use of SEGGEPROBE in this document?
    - use license over licence
    - commandline or command-line?
    - toolchain or tool chain?
    - crossreference/cross-reference/cross reference?
    - overcurrent?
    - double words?
    - frontend?
    - Unit: Kbytes, KBytes, V, mV.... 9V or 9 V? Create rule in Vocabulary
    - baudrate or baud rate?
    - stackpointer or stack pointer
    - check where we should replace abbreviations with the long form (e.h. "milliseconds" instead of "ms")
    - config or configuration
    - filepointer or file pointer?
  --------------------[J-Link dep. specific]
    - J-Link command strings or J-Link Command strings or J-Link Command Strings
    - J-Link settings file or...
    - J-Link control panel or ......
    - J-Link script files or...
--->
Flasher is a programming tool for microcontrollers with on-chip or external flash memory.
Flasher is designed for programming flash targets with the J-Flash software or stand-alone.
In addition to that Flasher can also be used as a regular J-Link. For more information about J-Link in general,
please refer to the [[UM08001_J-Link_/_J-Trace_User_Guide|J-Link / J-Trace User Guide]] which can be downloaded at [http://www.segger.com SEGGER Homepage].


<div class="toclimit-2">
__TOC__
__TOC__
</div>


== Flasher overview ==
== Related articles ==
Flasher connects to a PC using the USB/Ethernet/RS232 interface (what host interfaces are available depends on the Flasher model),
* [[Flasher - Software and documentation pack]]
running Windows, Linux & MacOS. In stand-alone mode,
* [[Flasher - Overview]]
Flasher can be driven by the start/stop button, or via the RS232 interface (handshake control or ASCII interface).
* [[Flasher - Working with Flasher]]
Flasher always has a 20-pin connector, which target interfaces are supported depends on the Flasher model:
* [[Flasher - Firmware]]
* Flasher ARM: JTAG and SWD are supported.
* [[Flasher - TCP services]]
* Flasher RX: JTAG is supported. Flasher comes with additional 14-pin RX adapter
* [[Flasher - Remote control]]
* Flasher PPC: JTAG is supported. Flasher comes with additional 14-pin PPC adapter.
* [[Flasher - Automation]]
* Flasher PRO: JTAG and SWD are supported.
* [[Flasher - Performance]]
* Flasher Compact: JTAG and SWD are supported.
* [[Flasher - Hardware]]
* [[Flasher - Support and FAQs]]
* [[Flasher - Background information]]
* [[Flasher - Glossary]]


=== Features of Flasher ARM/PPC/RX/PRO ===
[[Category:Flasher]]
* Three boot modes: PC-based mode, stand-alone mode, file access mode
* Stand-alone JTAG/SWD programmer (Once set up, Flasher can be controlled without the use of PC program)
* No power supply required, powered through USB
* Supports internal and external flash devices
* 128 MB memory for storage of target program
* Can be used as J-Link (emulator) with a download speed of up to 720 Kbytes/second
* Data files can updated via USB/Ethernet (using the J-Flash software), via FTP, via RS232 or via the file access mode of Flasher
 
{| class="seggertable"
|-
! Flasher model  !! Supported cores                                                      !! Supported target interfaces  !! Flash programming speed (depending on target hardware)
|-
| Flasher ARM    || ARM7/ARM9/Cortex-M                                                    || JTAG, SWD                    || between 170 and 300 Kbytes/second
|-
| Flasher RX    || Renesas RX610, RX621, RX62N, RX62T                                    || JTAG                        || between 30-300 Kbytes/second
|-
| Flasher PPC    || Power PC e200z0                                                      || JTAG                        || up to 138 Kbytes/second
|-
| Flasher PRO    || ARM7/ARM9/Cortex-M Renesas RX610, RX621, RX62N, RX62T Power PC e200z0  || JTAG, SWD                    || between 30-300 Kbytes/ second
|-
|}
 
==== Features of Flasher Compact ====
 
* Three boot modes: PC-based mode, stand-alone mode, file access mode
* Stand-alone JTAG/SWD programmer (Once set up, Flasher can be controlled without the use of PC program)
* No power supply required, powered through USB
* Supports internal and external flash devices
* 128 MB memory for storage of target program
* Can be used as J-Link (emulator) with a download speed of up to 720 Kbytes/second
* Data files can updated via USB/Ethernet (using the J-Flash software) or via the file access mode of Flasher
 
{| class="seggertable"
|-
! Flasher model  !! Supported cores                                                      !! Supported target interfaces  !! Flash programming speed (depending on target hardware)
|-
| Flasher ARM    || ARM7/ARM9/Cortex-M                                                    || JTAG, SWD                    || between 170 and 300 Kbytes/second
|-
| Flasher RX    || Renesas RX610, RX621, RX62N, RX62T                                    || JTAG                        || between 30-300 Kbytes/second
|-
| Flasher PPC    || Power PC e200z0                                                      || JTAG                        || up to 138 Kbytes/second
|-
| Flasher Compact || ARM7/ARM9/Cortex-M Renesas RX610, RX621, RX62N, RX62T Power PC e200z0  || JTAG, SWD                    || between 30-300 Kbytes/ second
|-
|}
 
==== Features of Flasher Portable/Flasher Portable PLUS ====
 
* Stand-alone in-circuit-programmer (Once set up, Flasher can be controlled without the use of a PC program)
* Powered by an internal rechargeable battery (standard batteries for Flasher Portable), no Laptop or external power supply required.
* Multiple firmware images can be stored on Flasher
* 128 MB memory for storage of target program
* Easy selection of image to be programmed, via button
* Supported CPUs: ARM Cortex, Legacy ARM7/9, Renesas RX, Freescale PowerPC
* Supports internal and external flash
* Free software updates<ref name="legitimateOwned" />, 1 year of support
* Data files can be updated via the file access mode functionality or via J-Flash
* Programming speed between 30-300 Kbytes/second (actual speed depends on target hardware)
{{Note|1=Ethernet and RS232 as host interface are not available for Flasher Portable}}
<references>
<ref name="legitimateOwned">The ST STM32WB1x devices are special compared to the other STM32WB devices e.g. the sector size is 2KB instead of 4KB.
As a legitimate owner of a SEGGER Flasher, you can always download the latest software free of charge.
Though not planned and not likely, we reserve the right to change this policy.
Note that older models may not be supported by newer versions of the software.
Typically, we support older models with new software at least 3 years after end of life.
</ref>
</references>
 
{| class="seggertable"
|-
! Supported cores                    !! Supported target interfaces  !! Flash programming speed (depending on target hardware)
|-
| ARM7/ARM9/Cortex-M                  || JTAG, SWD                    || between 30-300 Kbytes/second
|-
| Renesas RX610, RX621, RX62N, RX62T  || JTAG                        || between 170 and 300 Kbytes/second
|-
| Power PC e200z0                    || JTAG                        || up to 138 Kbytes/second
|-
|}
 
==== Working environment ====
 
'''General'''<br>
The Flasher can operate from a PC with an appropriate software like J-Flash or in stand-alone mode.
 
'''Host System'''<br>
IBM PC/AT or compatible CPU: 486 (or better) with at least 128MB of RAM,
running Windows, Linux & MacOS. It needs to have a USB, Ethernet or RS232 interface available for communication with Flasher.
 
'''Power supply'''<br>
Flasher Portable: 3x standard AAA batteries or 5V DC, min. 100 mA via USB connector.
 
Flasher Portable PLUS: internal rechargeable 680mAh Li-Ion battery, min. 100 mA via USB connector.
 
Other Flashers: 5V DC, min. 100 mA via USB connector.
 
'''Installing Flasher PC-software'''<br>
The software is part of the Flasher Software and Documentation Pack, which you can download here: [https://www.segger.com/downloads/flasher#FlasherSoftwareAndDocumentationPack Download]. <br>
More information about the package you can find in the similar [[J-Link Software and Documentation Pack]].<br>
The package includes U-Flash and J-Flash, the main tools for flashing targets:
* J-Flash : J-Flash User Guide ([https://wiki.segger.com/UM08003_JFlash UM08003_JFlash.pdf]).
* U-Flash : U-Flash User Guide ([https://www.segger.com/downloads/flasher/UM08037.pdf UM08037_UniversalFlashLoader.pdf]).
 
=== Specifications ===
 
 
==== Specifications for Flasher ARM ====
 
{| class="seggertable"
|-
!colspan="100%"| General
|-
| Supported OS                                            || Windows, Linux & MacOS
|-
| Operating Temperature                                  || +5 °C ... +60 °C
|-
| Storage Temperature                                    || -20 °C ... +60 °C
|-
| Relative Humidity (non-condensing)                      || <90% rH
|-
!colspan="100%"| Mechanical
|-
| Size (without cables)                                  || 121mm x 66mm x 30mm
|-
| Weight (without cables)                                || 119g
|-
!colspan="100%"| Available interfaces
|-
| USB Host interface                                      || USB 2.0, full speed
|-
| Ethernet Host interface                                || 10/100 MBit
|-
| RS232 Host interface                                    || RS232 9-pin
|-
| Target interface                                        || JTAG 20-pin (14-pin adapter available)
|-
!colspan="100%"| JTAG Interface, Electrical
|-
| Power Supply                                            || USB powered, 100mA for Flasher ARM. 500 mA if target is powered by Flasher ARM
|-
| Target interface voltage (VIF)                          || 1.2 ... 5V
|-
| Target supply voltage                                  || Supply voltage is 5V, max.
|-
| Target supply current                                  || max. 400mA
|-
| Reset Type                                              || Open drain. Can be pulled low or tristated
|-
| Reset low level output voltage (VOL)                    || VOL <= 10% of VIF
|-
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)
|-
| LOW level input voltage (VIL)                          || VIL <= 40% of VIF
|-
| HIGH level input voltage (VIH)                          || VIH >= 60% of VIF
|-
!colspan="100%"| For 1.8V <= VIF <= 3.6V
|-
| LOW level output voltage (VOL) with a load of 10 kOhm  || VOL <= 10% of VIF
|-
| HIGH level output voltage (VOH) with a load of 10 kOhm  || VOH >= 90% of VIF
|-
!colspan="100%"| For 3.6 <= VIF <= 5V
|-
| LOW level output voltage (VOL) with a load of 10 kOhm  || VOL <= 20% of VIF
|-
| HIGH level output voltage (VOH) with a load of 10 kOhm  || VOH >= 80% of VIF
|-
!colspan="100%"| JTAG Interface, Timing
|-
| Max. JTAG speed                                        || up to 12MHz
|-
| Data input rise time (Trdi)                            || Trdi <= 20ns
|-
| Data input fall time (Tfdi)                            || Tfdi <= 20ns
|-
| Data output rise time (Trdo)                            || Trdo <= 10ns
|-
| Data output fall time (Tfdo)                            || Tfdo <= 10ns
|-
| Clock rise time (Trc)                                  || Trc <= 10ns
|-
| Clock fall time (Tfc)                                  || Tfc <= 10ns
|-
|}
 
===== Flasher ARM download speed =====
 
The following table lists the Flasher ARM performance values for writing to memory (RAM) via the JTAG interface:
 
{| class="seggertable"
|-
! Hardware    !! ARM7 memory download
|-
| Flasher ARM  || 720 Kbytes/s (12MHz JTAG)
|-
|}
 
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}
 
==== Specifications for Flasher RX ====
 
{| class="seggertable"
|-
!colspan="100%"| General
|-
| Supported OS                                            || Windows, Linux & MacOS
|-
| Operating Temperature                                  || +5 °C ... +60 °C
|-
| Storage Temperature                                    || -20 °C ... +60 °C
|-
| Relative Humidity (non-condensing)                      || <90% rH
|-
!colspan="100%"| Mechanical
|-
| Size (without cables)                                  || 121mm x 66mm x 30mm
|-
| Weight (without cables)                                || 119g
|-
!colspan="100%"| Available interfaces
|-
| USB Host interface                                      || USB 2.0, full speed
|-
| Ethernet Host interface                                || 10/100 MBit
|-
| RS232 Host interface                                    || RS232 9-pin
|-
| Target interface                                        || JTAG 20-pin (shipped with 14-pin adapter for Renesas RX)
|-
!colspan="100%"| JTAG Interface, Electrical
|-
| Power Supply                                            || USB powered, 100mA for Flasher RX. 500 mA if target is powered by Flasher RX
|-
| Target interface voltage (VIF)                          || 1.2 ... 5V
|-
| Target supply voltage                                  || Supply voltage is 5V, max. (on the J-Link RX 14-pin adapter, the target supply voltage can be switched between 3.3V and 5V)
|-
| Target supply current                                  || max. 400mA
|-
| Reset Type                                              || Open drain. Can be pulled low or tristated
|-
| Reset low level output voltage (VOL)                    || VOL <= 10% of VIF
|-
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)
|-
| LOW level input voltage (VIL)                          || VIL <= 40% of VIF
|-
| HIGH level input voltage (VIH)                          || VIH >= 60% of VIF
|-
!colspan="100%"| For 1.8V <= VIF <= 3.6V
|-
| LOW level output voltage (VOL) with a load of 10 kOhm  || VOL <= 10% of VIF
|-
| HIGH level output voltage (VOH) with a load of 10 kOhm  || VOH >= 90% of VIF
|-
!colspan="100%"| For 3.6 <= VIF <= 5V
|-
| LOW level output voltage (VOL) with a load of 10 kOhm  || VOL <= 20% of VIF
|-
| HIGH level output voltage (VOH) with a load of 10 kOhm  || VOH >= 80% of VIF
|-
!colspan="100%"| JTAG Interface, Timing
|-
| Max. JTAG speed                                        || up to 12MHz
|-
| Data input rise time (Trdi)                            || Trdi <= 20ns
|-
| Data input fall time (Tfdi)                            || Tfdi <= 20ns
|-
| Data output rise time (Trdo)                            || Trdo <= 10ns
|-
| Data output fall time (Tfdo)                            || Tfdo <= 10ns
|-
| Clock rise time (Trc)                                  || Trc <= 10ns
|-
| Clock fall time (Tfc)                                  || Tfc <= 10ns
|-
|}
 
===== Flasher RX download speed =====
 
The following table lists the Flasher RX performance values for writing to memory (RAM) via the JTAG interface:
 
{| class="seggertable"
|-
! Hardware    !! Flasher RX600 series memory download
|-
| Flasher RX  || 720 Kbytes/s (12MHz JTAG)
|-
|}
 
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}
 
==== Specifications for Flasher PPC ====
 
{| class="seggertable"
|-
!colspan="100%"| General
|-
| Supported OS                                            || Windows, Linux & MacOS
|-
| Operating Temperature                                  || +5 °C ... +60 °C
|-
| Storage Temperature                                    || -20 °C ... +60 °C
|-
| Relative Humidity (non-condensing)                      || <90% rH
|-
!colspan="100%"| Mechanical
|-
| Size (without cables)                                  || 121mm x 66mm x 30mm
|-
| Weight (without cables)                                || 119g
|-
!colspan="100%"| Available interfaces
|-
| USB Host interface                                      || USB 2.0, full speed
|-
| Ethernet Host interface                                || 10/100 MBit
|-
| RS232 Host interface                                    || RS232 9-pin
|-
| Target interface                                        || JTAG 20-pin (shipped with 14-pin adapter for Renesas PPC)
|-
!colspan="100%"| JTAG Interface, Electrical
|-
| Power Supply                                            || USB powered, 100mA for Flasher PPC. 500 mA if target is powered by Flasher PPC
|-
| Target interface voltage (VIF)                          || 1.2 ... 5V
|-
| Target supply voltage                                  || Supply voltage is 5V, max.
|-
| Target supply current                                  || max. 400mA
|-
| Reset Type                                              || Open drain. Can be pulled low or tristated
|-
| Reset low level output voltage (VOL)                    || VOL <= 10% of VIF
|-
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)
|-
| LOW level input voltage (VIL)                          || VIL <= 40% of VIF
|-
| HIGH level input voltage (VIH)                          || VIH >= 60% of VIF
|-
!colspan="100%"| For 1.8V <= VIF <= 3.6V
|-
| LOW level output voltage (VOL) with a load of 10 kOhm  || VOL <= 10% of VIF
|-
| HIGH level output voltage (VOH) with a load of 10 kOhm  || VOH >= 90% of VIF
|-
!colspan="100%"| For 3.6 <= VIF <= 5V
|-
| LOW level output voltage (VOL) with a load of 10 kOhm  || VOL <= 20% of VIF
|-
| HIGH level output voltage (VOH) with a load of 10 kOhm  || VOH >= 80% of VIF
|-
!colspan="100%"| JTAG Interface, Timing
|-
| Max. JTAG speed                                        || up to 12MHz
|-
| Data input rise time (Trdi)                            || Trdi <= 20ns
|-
| Data input fall time (Tfdi)                            || Tfdi <= 20ns
|-
| Data output rise time (Trdo)                            || Trdo <= 10ns
|-
| Data output fall time (Tfdo)                            || Tfdo <= 10ns
|-
| Clock rise time (Trc)                                  || Trc <= 10ns
|-
| Clock fall time (Tfc)                                  || Tfc <= 10ns
|-
|}
 
===== Flasher RX download speed =====
 
The following table lists the Flasher PPC performance values for writing to memory (RAM) via the JTAG interface:
 
{| class="seggertable"
|-
! Hardware !! Memory download
|-
| Flasher PPC || 530 Kbytes/s (8 MHz JTAG)
|-
|}
 
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}
 
==== Specifications for Flasher PRO ====
 
{| class="seggertable"
|-
!colspan="100%"| General
|-
| Supported OS                                            || Windows, Linux & MacOS
|-
| Operating Temperature                                  || +5 °C ... +60 °C
|-
| Storage Temperature                                    || -20 °C ... +60 °C
|-
| Relative Humidity (non-condensing)                      || <90% rH
|-
!colspan="100%"| Mechanical
|-
| Size (without cables)                                  || 121mm x 66mm x 30mm
|-
| Weight (without cables)                                || 119g
|-
!colspan="100%"| Available interfaces
|-
| USB Host interface                                      || USB 2.0, full speed
|-
| Ethernet Host interface                                || 10/100 MBit
|-
| RS232 Host interface                                    || RS232 9-pin
|-
| Target interface                                        || JTAG 20-pin (14-pin adapter available)
|-
!colspan="100%"| JTAG Interface, Electrical
|-
| Power Supply                                            || USB powered, 100mA for Flasher PRO. 500 mA if target is powered by Flasher PRO
|-
| Target interface voltage (VIF)                          || 1.2 ... 5V
|-
| Target supply voltage                                  || Supply voltage is 5V, max.
|-
| Target supply current                                  || max. 400mA
|-
| Reset Type                                              || Open drain. Can be pulled low or tristated
|-
| Reset low level output voltage (VOL)                    || VOL <= 10% of VIF
|-
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)
|-
| LOW level input voltage (VIL)                          || VIL <= 40% of VIF
|-
| HIGH level input voltage (VIH)                          || VIH >= 60% of VIF
|-
!colspan="100%"| For 1.8V <= VIF <= 3.6V
|-
| LOW level output voltage (VOL) with a load of 10 kOhm  || VOL <= 10% of VIF
|-
| HIGH level output voltage (VOH) with a load of 10 kOhm  || VOH >= 90% of VIF
|-
!colspan="100%"| For 3.6 <= VIF <= 5V
|-
| LOW level output voltage (VOL) with a load of 10 kOhm  || VOL <= 20% of VIF
|-
| HIGH level output voltage (VOH) with a load of 10 kOhm  || VOH >= 80% of VIF
|-
!colspan="100%"| JTAG Interface, Timing
|-
| Max. JTAG speed                                        || up to 12MHz
|-
| Data input rise time (Trdi)                            || Trdi <= 20ns
|-
| Data input fall time (Tfdi)                            || Tfdi <= 20ns
|-
| Data output rise time (Trdo)                            || Trdo <= 10ns
|-
| Data output fall time (Tfdo)                            || Tfdo <= 10ns
|-
| Clock rise time (Trc)                                  || Trc <= 10ns
|-
| Clock fall time (Tfc)                                  || Tfc <= 10ns
|-
|}
 
 
===== Supported CPU cores =====
 
The Flasher PRO supports the following CPU cores:
 
'''ARM Cortex'''<br>
* Cortex-A5
* Cortex-A8
* Cortex-A9
* Cortex-R4
* Cortex-R5
* Cortex-M0
* Cortex-M0+
* Cortex-M1
* Cortex-M3
* Cortex-M4
 
'''ARM (legacy cores)'''<br>
* ARM720T
* ARM7TDMI
* ARM7TDMI-S
* ARM920T
* ARM922T
* ARM926EJ-S
* ARM946E-S
* ARM966E-S
* ARM1136JF-S
* ARM1136J-S
* ARM1156T2-S
* ARM1156T2F-S
* ARM1176JZ-S
* ARM1176JZF
* ARM1176JZF-S
 
'''Renesas RX'''<br>
* RX111
* RX210
* RX220
* RX21A
* RX610
* RX621
* RX62G
* RX62N
* RX62T
* RX630
* RX631
* RX63N
* RX63T
 
'''Freescale Power PC'''<br>
* e200z0
 
===== Supported Target interfaces =====
 
The Flasher PRO supports the following target interfaces:
 
* JTAG
* SWD
* FINE
* SPD
 
===== Flasher PRO download speed =====
 
The following table lists the Flasher PRO performance values for writing to memory (RAM) via the JTAG interface:
 
{| class="seggertable"
|-
! Hardware    !! ARM7 memory download
|-
| Flasher PRO  || 720 Kbytes/s (12MHz JTAG)
|-
|}
 
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}
 
==== Specifications for Flasher Compact ====
 
{| class="seggertable"
|-
!colspan="100%"| General
|-
| Supported OS                                            || Microsoft Windows (x86/x64)<br>Linux (x86/x64/Arm)<br>macOS (x86/Apple M1)
|-
| Operating Temperature                                  || +5 °C ... +60 °C
|-
| Storage Temperature                                    || -20 °C ... +65 °C
|-
| Relative Humidity (non-condensing)                      || <90% rH
|-
| Size (without cables)                                  || 70mm x 45mm x 18mm
|-
| Weight (without cables)                                || 40g
|-
| USB Host interface                                      || USB 2.0 (Hi-Speed); Micro USB
|-
| Target interface                                        || JTAG 20-pin (14-pin adapter available)
|-
| Power Supply                                            || USB powered, 130mA (idle)
|-
| Target interface voltage (VIF)                          || 1.2 ... 5V
|-
| Target supply voltage                                  || Supply voltage is 5V, max.
|-
| Target supply current                                  || max. 400mA
|-
| Reset Type                                              || Open drain. Can be pulled low or tristated
|-
| Reset low level output voltage (VOL)                    || VOL <= 10% of VIF
|-
| Supported target interfaces                            || SPI, QSPI, 8051 C2, cJTAG, FINE, ICSP, IIC, ISP, JTAG, PDI, SPD, SWD, SWIM, UART, UPDI
|-
| Serial transfer rate between Flasher Compact and target || Up to 50 MHz (Depending on target interface)
|-
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)
|-
| LOW level input voltage (VIL)                          || VIL <= 40% of VIF
|-
| HIGH level input voltage (VIH)                          || VIH >= 60% of VIF
|-
!colspan="100%"| For 1.8V <= VIF <= 3.6V
|-
| LOW level output voltage (VOL) with a load of 10 kOhm  || VOL <= 10% of VIF
|-
| HIGH level output voltage (VOH) with a load of 10 kOhm  || VOH >= 90% of VIF
|-
!colspan="100%"| For 3.6 <= VIF <= 5V
|-
| LOW level output voltage (VOL) with a load of 10 kOhm  || VOL <= 20% of VIF
|-
| HIGH level output voltage (VOH) with a load of 10 kOhm  || VOH >= 80% of VIF
|-
!colspan="100%"| JTAG Interface, Timing
|-
| Data input rise time (Trdi)                            || Trdi <= 20ns
|-
| Data input fall time (Tfdi)                            || Tfdi <= 20ns
|-
| Data output rise time (Trdo)                            || Trdo <= 10ns
|-
| Data output fall time (Tfdo)                            || Tfdo <= 10ns
|-
| Clock rise time (Trc)                                  || Trc <= 10ns
|-
| Clock fall time (Tfc)                                  || Tfc <= 10ns
|-
|}
 
===== Supported CPU cores =====
 
The Flasher Compact supports the following CPU cores:
'''ARM Cortex'''<br>
* Cortex-A5
* Cortex-A8
* Cortex-A9
* Cortex-R4
* Cortex-R5
* Cortex-M0
* Cortex-M0+
* Cortex-M1
* Cortex-M3
* Cortex-M4
 
'''ARM (legacy cores)'''<br>
* ARM720T
* ARM7TDMI
* ARM7TDMI-S
* ARM920T
* ARM922T
* ARM926EJ-S
* ARM946E-S
* ARM966E-S
* ARM1136JF-S
* ARM1136J-S
* ARM1156T2-S
* ARM1156T2F-S
* ARM1176JZ-S
* ARM1176JZF
* ARM1176JZF-S
 
'''Renesas RX'''<br>
* RX111
* RX210
* RX220
* RX21A
* RX610
* RX621
* RX62G
* RX62N
* RX62T
* RX630
* RX631
* RX63N
* RX63T
 
'''Freescale Power PC'''<br>
* e200z0
 
===== Flasher Compact download speed =====
 
The following table lists the Flasher Compact performance values for writing to memory (RAM) via the JTAG interface:
 
{| class="seggertable"
|-
! Hardware        !! ARM7 memory download
|-
| Flasher Compact || 720 Kbytes/s (12MHz JTAG)
|-
|}
 
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}
 
==== Specifications for Flasher Portable PLUS ====
 
{| class="seggertable"
|-
!colspan="100%"| General
|-
| Supported OS                                            || Windows, Linux & MacOS
|-
| Operating Temperature                                  || +5 °C ... +60 °C (normal operation)<br>+5 °C ... +45 °C (battery charging)
|-
| Storage Temperature                                    || -20 °C ... +45 °C
|-
| Relative Humidity (non-condensing)                      || <90% rH
|-
| Power Supply                                            || a) USB powered, 100mA for Flasher Portable PLUS. 500 mA if target is powered by Flasher Portable PLUS<br>b) Rechargeable 680mAh Li-Ion battery (Sony US14500VR)
|-
| Charging via USB                                        || 70 minutes (at 1A charging current)
|-
!colspan="100%"| Mechanical
|-
| Size (without cables)                                  || 126mm x 70mm x 28mm
|-
| Weight (without cables)                                || 140g
|-
!colspan="100%"| Available interfaces
|-
| USB Host interface                                      || USB 2.0
|-
| Target interface                                        || Standard 20-pin 0.1" connector (Adapters available).
|-
!colspan="100%"| Target Interface, Electrical
|-
| Target interface voltage (VIF)                          || 1.2 ... 5V
|-
| Target supply voltage                                  || Supply voltage is 4.5V, max. (depends on the current battery voltage).
|-
| Target supply current                                  || max. 400mA
|-
| Reset Type                                              || Open drain. Can be pulled low or tristated
|-
| Reset low level output voltage (VOL)                    || VOL <= 10% of VIF
|-
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)
|-
| LOW level input voltage (VIL)                          || VIL <= 40% of VIF
|-
| HIGH level input voltage (VIH)                          || VIH >= 60% of VIF
|-
!colspan="100%"| For 1.8V <= VIF <= 3.6V
|-
| LOW level output voltage (VOL) with a load of 10 kOhm  || VOL <= 10% of VIF
|-
| HIGH level output voltage (VOH) with a load of 10 kOhm  || VOH >= 90% of VIF
|-
!colspan="100%"| For 3.6 <= VIF <= 5V
|-
| LOW level output voltage (VOL) with a load of 10 kOhm  || VOL <= 20% of VIF
|-
| HIGH level output voltage (VOH) with a load of 10 kOhm  || VOH >= 80% of VIF
|-
!colspan="100%"| JTAG Interface, Timing
|-
| Max. JTAG speed                                        || up to 12MHz
|-
| Data input rise time (Trdi)                            || Trdi <= 20ns
|-
| Data input fall time (Tfdi)                            || Tfdi <= 20ns
|-
| Data output rise time (Trdo)                            || Trdo <= 10ns
|-
| Data output fall time (Tfdo)                            || Tfdo <= 10ns
|-
| Clock rise time (Trc)                                  || Trc <= 10ns
|-
| Clock fall time (Tfc)                                  || Tfc <= 10ns
|-
|}
 
===== Supported CPU cores =====
 
The Flasher Portable PLUS supports the following CPU cores:
 
'''ARM Cortex'''<br>
* Cortex-A5
* Cortex-A8
* Cortex-A9
* Cortex-R4
* Cortex-R5
* Cortex-M0
* Cortex-M0+
* Cortex-M1
* Cortex-M3
* Cortex-M4
 
'''ARM (legacy cores)'''<br>
* ARM720T
* ARM7TDMI
* ARM7TDMI-S
* ARM920T
* ARM922T
* ARM926EJ-S
* ARM946E-S
* ARM966E-S
* ARM1136JF-S
* ARM1136J-S
* ARM1156T2-S
* ARM1156T2F-S
* ARM1176JZ-S
* ARM1176JZF
* ARM1176JZF-S
 
'''Renesas RX'''<br>
* RX111
* RX210
* RX220
* RX21A
* RX610
* RX621
* RX62G
* RX62N
* RX62T
* RX630
* RX631
* RX63N
* RX63T
 
'''Freescale Power PC'''<br>
* e200z0
 
===== Supported Target interfaces =====
 
The Flasher Portable PLUS supports the following target interfaces:
* JTAG
* SWD
* FINE
* SPD
 
===== Flasher Portable PLUS download speed =====
 
The following table lists the Flasher Portable PLUS performance values for writing to memory (RAM) via the JTAG interface:
 
{| class="seggertable"
|-
! Hardware    !! ARM7 memory download
|-
| Flasher PRO  || 720 Kbytes/s (12MHz JTAG)
|-
|}
 
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}
 
==== Specifications for Flasher Portable ====
 
{| class="seggertable"
|-
!colspan="100%"| General
|-
| Supported OS                                            || Windows, Linux & MacOS
|-
| Operating Temperature                                  || +5 °C ... +60 °C
|-
| Storage Temperature                                    || -20 °C ... +65 °C
|-
| Relative Humidity (non-condensing)                      || <90% rH
|-
| Power Supply                                            || a) USB powered, 100mA for Flasher Portable. 500 mA if target is powered by Flasher Portable<br>b) Batteries powered (3xAAA)
|-
!colspan="100%"| Mechanical
|-
| Size (without cables)                                  || 130mm x 65mm x 25mm
|-
| Weight (without cables)                                || 120g
|-
!colspan="100%"| Available interfaces
|-
| USB Host interface                                      || USB 2.0
|-
| Target interface                                        || Standard 20-pin 0.1" connector (Adapters available).
|-
!colspan="100%"| Target Interface, Electrical
|-
| Target interface voltage (VIF)                          || 1.2 ... 5V
|-
| Target supply voltage                                  || Supply voltage is 4.5V, max. (depends on the current battery voltage).
|-
| Target supply current                                  || max. 400mA
|-
| Reset Type                                              || Open drain. Can be pulled low or tristated
|-
| Reset low level output voltage (VOL)                    || VOL <= 10% of VIF
|-
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)
|-
| LOW level input voltage (VIL)                          || VIL <= 40% of VIF
|-
| HIGH level input voltage (VIH)                          || VIH >= 60% of VIF
|-
!colspan="100%"| For 1.8V <= VIF <= 3.6V
|-
| LOW level output voltage (VOL) with a load of 10 kOhm  || VOL <= 10% of VIF
|-
| HIGH level output voltage (VOH) with a load of 10 kOhm  || VOH >= 90% of VIF
|-
!colspan="100%"| For 3.6V <= VIF <= 5V
|-
| LOW level output voltage (VOL) with a load of 10 kOhm  || VOL <= 20% of VIF
|-
| HIGH level output voltage (VOH) with a load of 10 kOhm  || VOH >= 80% of VIF
|-
!colspan="100%"| JTAG Interface, Timing
|-
| Max. JTAG speed                                        || up to 12MHz
|-
| Data input rise time (Trdi)                            || Trdi <= 20ns
|-
| Data input fall time (Tfdi)                            || Tfdi <= 20ns
|-
| Data output rise time (Trdo)                            || Trdo <= 10ns
|-
| Data output fall time (Tfdo)                            || Tfdo <= 10ns
|-
| Clock rise time (Trc)                                  || Trc <= 10ns
|-
| Clock fall time (Tfc)                                  || Tfc <= 10ns
|-
|}
 
===== Supported CPU cores =====
 
The Flasher Portable supports the following CPU cores:
 
'''ARM Cortex'''<br>
* Cortex-A5
* Cortex-A8
* Cortex-A9
* Cortex-R4
* Cortex-R5
* Cortex-M0
* Cortex-M0+
* Cortex-M1
* Cortex-M3
* Cortex-M4
 
'''ARM (legacy cores)'''<br>
* ARM720T
* ARM7TDMI
* ARM7TDMI-S
* ARM920T
* ARM922T
* ARM926EJ-S
* ARM946E-S
* ARM966E-S
* ARM1136JF-S
* ARM1136J-S
* ARM1156T2-S
* ARM1156T2F-S
* ARM1176JZ-S
* ARM1176JZF
* ARM1176JZF-S
 
'''Renesas RX'''<br>
* RX111
* RX210
* RX220
* RX21A
* RX610
* RX621
* RX62G
* RX62N
* RX62T
* RX630
* RX631
* RX63N
* RX63T
 
'''Freescale Power PC'''<br>
* e200z0
 
===== Supported Target interfaces =====
 
The Flasher Portable supports the following target interfaces:
 
* JTAG
* SWD
* FINE
* SPD
 
===== Flasher Portable download speed =====
 
The following table lists the Flasher Portable performance values for writing to memory (RAM) via the JTAG interface:
 
{| class="seggertable"
|-
! Hardware    !! ARM7 memory download
|-
| Flasher PRO  || 720 Kbytes/s (12MHz JTAG)
|-
|}
 
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}
== Working with Flasher ==
 
This chapter describes functionality and how to use Flasher.
 
=== Flasher Portable PLUS ===
 
The Flasher Portable PLUS is a portable version of SEGGERs Flasher family,
which has been designed to fill the need of an extremely portable, production grade,
Flash programmer used for in-field firmware updates. No need to be tethered to an outlet,
it is powered by an integrated Li-Ion cell (680mAh).
The Flasher Portable PLUS programs flash targets in stand-alone mode or via J-Flash PC software.<br>
 
Furthermore the Flasher Portable PLUS allows the user to select between eight data images to be programmed.
The images can be easily selected by using the SEL button on the front of the housing.
For more information about support for multiple images, please refer to [[#Multiple File Support | Multiple File Support]].<br>
For setup and configuration purposes, the Flasher Portable PLUS connects to a PC via USB interface,
running Windows, Linux & MacOS and has a built-in standard 20-pin J-Link target connector.<br>
 
{{Note|1=Ethernet and RS232 as host interface are not available for the Flasher Portable PLUS.}}
 
==== Housing & Buttons ====
 
The Flasher Portable PLUS comes with a display, which is for example used to represent the status of an ongoing flash progress.
Furthermore, there are three buttons which allow the user to control Flasher Portable PLUS.
For a detailed description of the functions, take a look at the table below:
 
<!-- LG xxxxxx edit image with labels for buttons? (Is this actually necessary? Buttons are basically self-explanatory...) -->
[[File:Flasher_Portable_PLUS.png | 500px]]
 
{| class="seggertable"
|-
! Button        !! Description
|-
| Program      || Start programming process with the currently selected image.
|-
| Select image  || Select the image to be programmed next time the Program button is pressed.
|-
| Power on/off  || Used to power-on / power-off the Flasher Portable PLUS. Please note that to power up the Flasher Portable PLUS, the button should be hold for at least 1 second to make sure software can boot and take control of power circuit, so the Flasher Portable PLUS keeps powered, after releasing the button.
|-
|}
 
==== Configuration ====
 
The Flasher Portable PLUS has some configuration options the other Flashers do not have.
{| class="seggertable"
|-
! Option                      !! Description                                                                                        !! Value range                !! Default value
|-
| AutoPowerOffOnIdle          || Specifies the time interval after which the Flasher Portable will turn off without any user action || 1 to 3600                  || 60
|-
| ShowDatCRCAfterProgramming  || Activates displaying the data file CRC after the programming in the pop up message                || 0 = inactive, 1 = active  || 0
|-
|}
 
If the <tt>Flasher.ini</tt> does not contain a <tt>[Config]</tt> section with the configuration option, the default value is used.
 
'''Example:'''<br>
This sample will show the data file CRC after the programming and the auto power of is set to five minutes (=300 seconds).
 
<source lang="c">
[CONFIG]
AutoPowerOffOnIdle = "300"
ShowDatCRCAfterProgramming = "1"
</source>
 
=== Flasher Portable ===
 
The Flasher Portable is a portable version of SEGGERs Flasher family, which has been designed to fill the need of an extremely portable,
production grade, Flash programmer used for in-field firmware updates. No need to be tethered to an outlet,
it is powered by three standard AAA batteries. The Flasher Portable programs flash targets in stand-alone mode or via J-Flash PC software.<br>
 
Furthermore the Flasher Portable allows the user to select between four data images to be programmed.
The images can be easily selected by using the arrow buttons on the front of the housing.
For more information about support for multiple images, please refer to [[#Multiple File Support | Multiple File Support]].<br>
For setup and configuration purposes, the Flasher Portable connects to a PC via USB interface,
running Windows, Linux & MacOS and has a built-in standard 20-pin J-Link target connector.<br>
 
{{Note|1=Ethernet and RS232 as host interface are not available for the Flasher Portable.}}
 
==== Housing & Buttons ====
 
The Flasher Portable comes with several leds which are for example used to represent the status of an ongoing flash progress.
Furthermore, there are three buttons which allow the user to control Flasher Portable.
For a detailed description of the functions, take a look at the two tables below:
 
<!-- LG xxxxxx edit image with labels for buttons?-->
[[File:Flasher_Portable_Top_2.png | 500px]]
 
{| class="seggertable"
|-
! LED        !! Description
|-
| ACTIVE    || GREEN. Blinks while the Flasher Portable is busy / performs operations on the target.
|-
| PASS/FAIL  || GREEN/RED. Indicates, if the last flashing cycle was successful.
                <ul>
                  <li> GREEN: Flashing cycle completed successfully.</li>
                  <li> RED: Flashing cycle completed with error.</li>
                </ul>
|-
| 1/2/3/4    || GREEN: Indicates which image is currently selected for programming. For more information about multiple image support, please refer to [[#Multiple File Support | Multiple File Support]].
|-
| POWER      || GREEN: Indicates if Flasher is currently powered. Blinks while Flasher Portable tries to enumerate via USB.
|-
| LO BAT    || 1) The LED is off, meaning battery voltage is > 3.3V<br>2) The red LED is constant on if battery voltage is low (<= 3.3V). In this mode, Flasher still allows programming.<br>3) The red LED starts blinking in case of the battery voltage is below 3.0V. Flasher refuse programming attempts.
|-
|}
 
{| class="seggertable"
|-
! Button        !! Description
|-
| Program      || Start programming process with the currently selected image.
|-
| Select image  || Select the image to be programmed next time the <tt>Program</tt> button is pressed.
|-
| Power on/off  || Used to power-on / power-off the Flasher Portable. Please note that to power up the Flasher Portable, the button should be hold for at least 1 second to make sure software can boot and take control of power circuit, so the Flasher Portable keeps powered, after releasing the button
|-
|}
 
=== File system ===
 
The Flasher supports 8.3 filenames only (8 characters filename, 3 characters file extension).
Using longer filenames may result in incorrect operation. Integrated functions,
like the FTP server or the terminal server, will refuse writing files with long filenames.
 
=== Setting up the IP interface ===
 
Setting up the IP interface
Some of the Flasher models come with an additional Ethernet interface to communicate with the host system.
These Flashers also come with a built-in webserver which allows some basic setup of the emulator,
e.g. configuring a default gateway which allows using it even in large intranets. For more information,
please refer to [[#TCP Services | TCP Services]].
 
==== Connecting the first time ====
 
When connecting Flasher the first time, it attempts to acquire an IP address via DHCP.
The recommended way for finding out which IP address has been assigned to Flasher is, to use the J-Link Configurator.
The J-Link Configurator is a small GUI-based utility which shows a list of all emulator that are connected to the host PC via USB and Ethernet.
For more information about the J-Link Configurator, please refer to UM08001_JLink.pdf (J-Link / J-Trace user guide), chapter ''Setup'', section ''J-Link Configurator''.
The setup of the IP interface of Flasher is the same as for other emulators of the J-Link family. For more information about how to setup the IP interface of Flasher,
please refer to ''UM08001, J-Link / J-Trace User Guide'', chapter ''Setup'', section ''Setting up the IP interface''.
For more information about how to use Flasher via Ethernet or prepare Flasher via Ethernet for stand-alone mode, please refer to [[#Operating modes | Operating modes]].
 
=== Operating modes ===
 
All Flashers except the Flasher ATE are able to boot in 3 different modes:
 
* PC-based mode
* Stand-alone mode
* File access mode
 
{{Note|1=The Flasher ATE only supports the stand-alone mode.}}
 
'''Definition PC-based mode'''<br>
Flasher is connected to a PC via USB/Ethernet and controlled by a PC application (J-Flash).
If there is an RS232 connection to a PC, does not have any influence on if PC-based mode is entered or not.
In this mode, Flasher can be used as a J-Link and controlled by the software in the J-Link software and documentation package (J-Link Commander, J-Flash, ...)
 
'''Definition Stand-alone mode'''<br>
This mode is entered when there is no active USB/Ethernet connection to a host PC, e.g. if Flasher is only powered via a USB power supply.
 
'''Definition file access mode'''<br>
Entered only if Flasher Start/Stop button (on Flasher Portable the "PROG" button) is kept pressed for at least 2 seconds while connecting the Flasher via USB.
In this mode, Flasher enumerates as a mass storage device (like an USB Stick) at the host PC.
In this mode, configuration + data files can be manually placed on the Flasher and the Flasher logfile can be read out.
If you are using a self-powered Flasher such as the Flasher Portable Plus, the Flasher must be turned off before connecting it.
 
==== PC-based mode ====
If you want to use Flasher for the first time you need to install the J-Link software and documentation package.
After installation, connect Flasher to the host PC via USB or Ethernet.
For more information about how to install the J-Link software and documentation package please refer to [[J-Link Software and Documentation Pack]].
 
===== Connecting the target system =====
 
'''Power-on sequence'''<br>
In general, Flasher should be powered on before connecting it with the target device.
That means you should first connect Flasher with the host system via USB / Ethernet and then connect Flasher with the target device via JTAG or SWD.
Power-on the device after you connected Flasher to it. Flasher will boot in "PC-based mode".
 
'''Verifying target device connection with J-Link.exe'''<br>
If the USB driver is working properly and your Flasher is connected with the host system, you may connect Flasher to your target hardware.
Then start the J-Link command line tool <tt>JLink.exe</tt>,
which should now display the normal Flasher related information and in addition to that it should report that it found a JTAG target and the targets core ID.
The screenshot below shows the output of <tt>JLink.exe</tt>.
 
[[File:flasher_jlinkmode.gif]]
 
===== LED status indicators =====
 
In PC-based mode, there are also certain LED status codes defined:
 
{| class="seggertable"
|-
! # !! Status of LED !! Meaning
|-
| 0 || GREEN<br>high frequency blinking<br>(On/Off time: 50ms => 10Hz)  || Flasher is waiting for USB enumeration or ethernet link. As soon as  USB has been enumerated or ethernet link has been established, the green LED stops flashing and is switched to constant green.
|-
| 0 || GREEN<br>constant                    || Flasher enumeration process is complete and it is ready to be controlled by a PC application.
|-
|}
 
==== Stand-alone mode ====
 
In order to use Flasher in "stand-alone mode", it has to be configured first, as described in [[#Setting up Flasher for stand-alone mode | Setting up Flasher for stand-alone mode]].
To boot Flasher in the "stand-alone mode", only the power supply to Flasher has to be enabled (Flasher should not be connected to a PC).
In the "stand-alone mode" Flasher can be used as a stand-alone flash programmer.<br>
 
{{Note|1=Flasher can only program the target device it was configured for. In order to program another target device, you have to repeat the steps described in [[#Setting up Flasher for stand-alone mode | Setting up Flasher for stand-alone mode]].}}
 
===== LED status indicators =====
Progress and result of an operation is indicated by Flasher's LEDs. The behavior is different for J-Link and stand-alone mode.
For a definition of the different modes, please refer to [[#Operating modes | Operating modes]].
The following table describes the behavior of the LEDs in stand-alone mode.
 
{| class="seggertable"
|-
! # !! Status of LED          !! Meaning
|-
| 0 || GREEN<br>constant      || Flasher waits for a start trigger to perform an operation in stand-alone mode.
|-
| 1 || GREEN<br>slow blinking || Flashing operation in progress:<ul><li>Erasing (slow blinking on/off time: 80 ms => 6.25 Hz)</li><li>Programming (slow blinking on/off time: 300ms => ~1.67 Hz)</li><li>Verifying (slow blinking, on/off time: 100ms => 5 Hz)</li></ul>
|-
| 2 || GREEN: constant<br>RED: off or constant  || GREEN constant, RED off: Operation successful.<br>GREEN constant, RED constant: Operation failed<br>Goes back to state #0 automatically, but in case of operation failed, RED remains on until state #1 is entered the next time.
|-
|}
Older Flasher models have a different behavior.
The following serial number ranges behave different from the table above Flashers with the following serial number ranges behave different and comply to the table below:
 
* 1621xxxxx (Flasher ARM V2)
* 1630xxxxx (Flasher ARM V3)
* 4210xxxxx (Flasher PPC V1)
* 4110xxxxx (Flasher RX V1)
 
{| class="seggertable"
|-
! #  !! Status of LED                !! Meaning
|-
| 0  || GREEN<br>high frequency blinking<br>(On/Off time: 50ms => 10Hz)  || Flasher is waiting for USB enumeration or ethernet link. As soon as USB has been enumerated or ethernet link has been established, the green LED stops flashing and is switched to constant green. In stand-alone-mode, Flasher remains in the high frequency blinking state until state #1 is reached.<br> Flasher goes to state #1 as soon as a #START command has been received via the ASCII interface or the Start button has been pushed.
|-
| 1  || GREEN<br>constant                                                || Connect to target and perform init sequence.
|-
| 2  || GREEN<br>slow blinking                || Flashing operation in progress:<ul><li>Erasing (slow blinking on/off time: 80 ms => 6.25 Hz)</li><li>Programming (slow blinking on/off time: 300ms => ~1.67 Hz)</li><li>Verifying (slow blinking, on/off time: 100ms => 5 Hz)</li></ul>
|-
| 3  || GREEN: constant<br>RED: off or constant        || GREEN constant, RED off: Operation successful.<br>GREEN constant, RED constant: Operation failed<br>Goes back to state #0 automatically, but in case of operation failed, RED remains on until state #1 is entered the next time.
|-
|}
 
==== File access mode ====
 
When pressing the Start/Stop button (for Flasher Portable PLUS PRG button) of the Flasher while connecting it to the PC, Flasher will boot in the "file access mode".
If you are using a self-powered Flasher such as the Flasher Portable Plus, the Flasher must be turned off before connecting it.
This mode can be used to downdate a Flasher firmware version if a firmware update did not work properly and it can be used to configure Flasher for the "stand-alone mode", without using J-Flash.
If Flasher has been configured for "stand-alone mode" as described in the section above, there will be four files on the drive, <tt>FLASHER.CFG, FLASHER.DAT, FLASHER.LOG, SERIAL.TXT</tt>.
 
[[File:flasher_mode_msd.gif]]
 
<tt>FLASHER.CFG</tt> contains the configuration settings for programming the target device and <tt>FLASHER.DAT</tt> contains the data to be programmed.
<tt>FLASHER.LOG</tt> contains all logging information about the commands, performed in stand-alone mode.
The <tt>SERIAL.TXT</tt> contains the serial number, which will be programmed next. J-Flash supports to configure Flasher for automated serial number programming.<br>
 
Currently, J-Flash does not support to configure Flasher for automated serial number programming.<br>
 
If you want to configure multiple Flasher for the same target you do not have to use J-Flash all the time.
It is also possible to copy the <tt>FLASHER.CFG</tt> and the <tt>FLASHER.DAT</tt> files from a configured Flasher to another one. To copy these files boot Flasher in "file access mode".
 
=== Setting up Flasher for stand-alone mode ===
 
In order to set up Flasher for the stand-alone mode it needs to be configured once using the J-Flash software.
For more information about J-Flash, please refer to the ''J-Flash User Guide''.<br>
 
After starting J-Flash, open the appropriate J-Flash project for the target Flasher shall be configured for, by selecting '''File''' -> '''Open Project'''.
If J-Flash does not come with an appropriate sample project for the desired hardware, a new project needs to be created by selecting File -> '''File''' -> '''New Project'''.<br>
 
After the appropriate project has been opened / created, the data file which shall be programmed needs to be loaded, by selecting '''File''' -> '''Open'''.
After this J-Flash should look like in the screenshot below.
 
[[File:jflash_projectfile_datafile.gif]]
 
Before downloading the configuration (project) and program data (data file) to Flasher, the connection type (USB/IP) needs to be selected in the project.
These settings are also saved on a per-project basis, so this also only needs to be setup once per J-Flash project.
The connection dialog is opened by clicking '''Options''' -> '''Project settings''' -> '''General'''.
 
[[File:jflash_connection_dialog.gif]]
 
The connection dialog allows the user to select how to connect to Flasher. When connecting to a Flasher via TCP/IP it is not mandatory to enter an IP address.
If the field is left blank and '''File''' -> '''Download''' to programmer is selected, an emulator selection dialog pops up which shows all Flasher which have been found on the network.
The user then can simply select the Flash he wants to download the configuration to.
 
[[File:EmuSelectionDialog.gif]]
 
In order to download the configuration and program data to the Flasher, simply select '''File''' -> '''Download config & data file to Flasher'''.
 
[[File:jflash_download_to_emul.gif]]
 
The J-Flash log window indicates that the download to the emulator was successful.
 
[[File:jflash_download_to_emu_succ.gif]]
 
From now on, Flasher can be used in stand-alone mode (without host PC interaction) for stand-alone programming.
 
==== Preparing for stand-alone operation manually ====
 
As an alternative, J-Flash can also be used to save config and data file to a hard drive.<br>
 
This files can later be copied to a Flasher without using J-Flash, which is useful to prepare additional Flasher for stand-alone programming,
if for example a company plans to widen its production, new Flasher units can be bought and used in production by simply copying the files to the new units.
 
'''Creating config and data files'''<br>
J-Flash config (*.CFG) and data (*.DAT) files can be created by using the "Save Flasher config file..." and "Save Flasher data file..." options in the "File" menu.<br>
 
For some devices, additional files (*.PEX) are needed.
J-Flash will create a subdirectory (in the same directory as the config file) with the same name as the config file and place the files needed in this directory.
 
'''About *.PEX files'''<br>
When using the "Save Flasher config file..." menu point or when using the "multiple configurations stored on Flasher" feature (See [[#Multiple File Support | Multiple File Support]].) feature,
the following needs to be taken care of:<br>
 
For some devices, special connect, reset etc. sequences are necessary which are stored in so-called *.PEX files on the Flasher.<br>
 
When using the "Download config & data file to Flasher", J-Flash takes care of correct use and download of these files to Flasher.<br>
 
When creating the config files manually and later download them to the Flasher manually, it is user's responsibility to put them at the right place.<br>
The *.PEX files need to be placed in a subdirectory with the same name as the corresponding *.cfg file.
J-Flash creates a directory with the correct name automatically when a config file is created.<br>
 
Example:<br>
 
MyConf0 is a project for a device that requires a *.PEX file for connect.<br>
MyConf1 is a project for a device that requires no *.PEX file at all.
 
[[File:PEX_File_Flasher.png]]
 
=== Universal Flash Loader mode ===
 
As an alternative to the stand-alone mode, configured via J-Flash, there is the Universal Flash Loader mode.
While the normal stand-alone mode relies on using the debug interface of the device, the Universal Flash Loader
mode uses device or vendor specific programming interfaces and protocols and therefore it is independent of the
CPU core.<br>
 
The Universal Flash Loader is available for the following Flasher models:
* Flasher PRO
* Flasher Compact
* Flasher Portable PLUS
 
For some of the supported devices, SEGGER offers specific adapters.
 
==== Preparing manually ====
 
The Universal Flash Loader uses an configuration file (*.UNI), a device specific flash programming algorithm (*.PEX) and a data file (*.DAT).
 
===== Configuration =====
 
The configuration file basically is split into three parts.
The first part, the section [DEVICE], controls the generic behavior of the Universal Flash Loader.
It specifies which protocol driver and data file to use. It allows enabling and configuring target power
and it defines which actions to perform.
The second part consists of one or more [BANKx] sections, which contain information about the memories.
The third part, the section [CONFIG], includes configuration settings for the protocol driver.<br>
 
An .UNI file might look as follows:<br>
 
<source lang="c">
[OPTIONS]
TargetPower = "0"
ChipErase  = "0"
 
[TASKS]
CheckBlank  = "1"
Erase      = "1"
Program    = "1"
Verify      = "1"
Secure      = "1"
 
[DEVICE]
Algo        = "RL78.PEX"
Data        = "ALL_6k.dat"
 
[BANK0]
; Code Flash
Base = "0x00000000"
Size = "0x00004000"
Sect = "0x00000400"
 
[BANK1]
; Data Flash
Base = "0x000F1000"
Size = "0x00000800"
Sect = "0x00000400"
 
[CONFIG]
BaudRate = "1000000"
ClearConfigOnConnect = "0x00"
Security = "0xFF"
ShieldStart = "0x0000"
ShieldEnd = "0x000F"
</source>
 
'''[OPTIONS]'''<br>
'''TargetPower'''<br>
If set to a value >0, power is applied to the target.
The value defines the delay (in ms) after enabling the target power supply and before starting to communicate with the target.
 
'''ChipErase'''<br>
If set to 1, the chip erase function is called for erasing the chip.<br>
{{Note|1=Do not enable this setting if the flash programming algorithm does not support chip erase.}}
 
'''[TASKS]'''<br>
'''CheckBlank'''<br>
Defines if a blank check should be performed before erasing a sector.
 
'''Erase'''<br>
Defines if the sector should be erased before programming.
 
'''Program'''<br>
Defines if the sector should be programmed.
 
'''Verify'''<br>
Defines if the sector should be verified after programming.
 
'''Secure'''<br>
Defines if the device should be secured or protected against read-out after verifying.
 
'''[DEVICE]'''<br>
'''Algo'''<br>
File name of the flash programming algorithm. This file is provided by SEGGER and will typically support a series of devices.
 
'''Data'''<br>
File name of the data file to program. The Flasher only supports the Flasher .dat file format.
Flasher .dat files can be generated by J-Flash or Universal Flash Loader and offer high performance together with high flexibility.
 
'''[BANKx]'''<br>
x blocks with configuration data for the flash banks. All three parameters (Base, Size and Sect) are mandatory.
 
'''Base'''<br>
Base address of the flash bank.
 
'''Size'''<br>
Total size of the flash bank.
 
'''Sect'''<br>
Sector size of the flash bank.
 
'''[CONFIG]'''<br>
This section includes specific configuration data for the flash programming algorithm.<br>
There are no general parameters.
 
{{Note|1=The data file must be organized in ascending address order. Gaps can be included. But descending addresses will result in programming errors. You can sort the data files by loading them into the J-Flash tool and saving it as a new file. }}
 
==== Preparing using the PC utility ====
In order to set up Flasher for the Universal Flash Loader mode, a PC utility called SEGGER Universal Flash Loader Configurator is available for download.
 
[[File:Universal Flash Loader.png]]
 
The Universal Flash Loader Configurator comes with a large list of devices and flash programming algorithms. If you are going to
use a device from one of the supported families which currently is not available in the utility, feel free to contact the support.
 
=== Multiple File Support ===
 
It is also possible to have multiple data files and config files on Flasher, to make Flasher more easy to use in production environment.
To choose the correct configuration file and data file pair, a <tt>FLASHER.INI</tt> file is used.
This init file contains a <tt>[FILES]</tt> section which describes which configuration file and which data file should be used for programming.
A sample content of a FLASHER.INI file is shown below:<br>
 
<source>
[FILES]
DataFile = "Flasher1.dat"
ConfigFile = "Flasher1.cfg"
</source>
 
Using this method all configuration files and data files which are used in the production only have to be downloaded once.
From there on a configuration file / data file pair can be switched by simply replacing the <tt>FLASHER.INI</tt> by a new one,
which contains the new descriptions for the configuration file and data file. The <tt>FLASHER.INI</tt> can be replaced in two ways:
<ol>
<li>Boot Flasher in file access mode in order to replace the <tt>FLASHER.INI</tt></li>
<li>
  If Flasher is already integrated into the production line, runs in stand-alone mode and can not be booted in other mode:
  Use the file I/O commands provided by the ASCII interface of Flasher, to replace the <tt>FLASHER.INI</tt>.
  For more information about the file I/O commands, please refer to [[#File I/O commands | File I/O commands]].
</li>
</ol>
{{Note|1=Flasher supports 8.3 filenames only (8 characters filename, 3 characters file extension). Using longer filenames may result in incorrect operation.}}
 
==== Flasher Portable specifics ====
 
Flasher Portable allows to choose between four configuration and data file pairs during runtime by using the select/arrow button on the front of Flasher Portable.<br>
 
Which config / data file pair is used for which image selection position is determined by the contents of the FLASHER.INI.
For this, the FLASHER.INI contents in the <tt>[FILES]</tt> section have been extended.
The sample below shows how to enable the user to select between four different images on the Flasher portable via the select / arrow  button:
 
<source>
[FILES]
DataFile = "First.dat"
ConfigFile = "First.cfg"
DataFile1 = "Second.dat"
ConfigFile1 = "Second.cfg"
DataFile2 = "Third.dat"
ConfigFile2 = "Third.cfg"
DataFile3 = "Fourth.dat"
ConfigFile3 = "Fourth.cfg"
</source>
 
Using this method, all configuration files and data files which are used in the production only have to be stored on Flasher Portable via file access mode.
From there on, switching between the files can be done by simply using the selection button of Flasher Portable.
 
===== Example =====
 
1 Target, 2 Datafiles (e.g. boot loader und application) --> same configuration file (*.CFG) but different data files (*.DAT) should be used.<br>
 
* Open pre-configured J-Flash project
* File -> Save Flasher config file ... (DEFAULT.CFG)
* Open data file 1 (boot loader)
* File -> Save Flasher data file ... (BOOT.DAT)
* Open data file 2 (application)
* File -> Save Flasher data file ... (APP.DAT)
* Create the a FLASHER.INI file (content see below)
* Connect the Flasher in file access mode to the PC
* Copy DEFAULT.CFG, BOOT.DAT, APP.DAT and FLASHER.INI on the Flasher
 
FLASHER.INI content:<br>
 
<source>
[FILES]
DataFile    = "BOOT.DAT"
ConfigFile  = "DEFAULT.CFG"
DataFile1  = "APP.DAT"
ConfigFile1 = "DEFAULT.CFG"
</source>
 
==== Flasher Portable PLUS specifics ====
 
Flasher Portable PLUS allows to choose between 16 configuration and data file pairs during runtime by using the select button on the front of Flasher Portable PLUS.<br>
 
Which config / data file pair is used for which image selection position is determined by the contents of the FLASHER.INI.
For this, the FLASHER.INI may contain several <tt>[BATCH]</tt> sections.
The sample below shows how to enable the user to select between five different images on the Flasher Portable PLUS via the select / arrow  button:
 
<source>
[BATCH]
DataFile = "First.dat"
ConfigFile = "First.cfg"
[BATCH1]
DataFile = "Second.dat"
ConfigFile = "Second.cfg"
[BATCH2]
DataFile = "Third.dat"
ConfigFile = "Third.cfg"
[BATCH7]
DataFile = "Proj_8.dat"
ConfigFile = "Proj_8.cfg"
[BATCH15]
DataFile = "Proj_16.dat"
ConfigFile = "Proj_16.cfg"
</source>
 
Using this method, all configuration files and data files which are used in the production only have to be stored on Flasher Portable PLUS via file access mode.
From there on, switching between the files can be done by simply using the selection button of Flasher Portable PLUS.
 
Please also consider the chapter [[#Batch Programming in stand-alone mode | Batch Programming in stand-alone mode]].
 
{{Note|1=There the Flasher Portable PLUS checks if the files exist on its flash storage. If the a file is missing the entry will be skip and the selection jumps directly to the next entry in the list.}}
{{Note|1=You may have gaps in the list. The missing entries will be skipped when selecting the next configuration.}}
{{Note|1=The <tt>[Files]</tt> section is supported by the Flasher Portable PLUS, too. But the number of configuration is limited to four.}}
 
===== Example =====
 
1 Target, 2 Datafiles (e.g. boot loader und application) --> same configuration file (*.CFG) but different data files (*.DAT) should be used.<br>
 
* Open pre-configured J-Flash project
* File -> Save Flasher config file ... (DEFAULT.CFG)
* Open data file 1 (boot loader)
* File -> Save Flasher data file ... (BOOT.DAT)
* Open data file 2 (application)
* File -> Save Flasher data file ... (APP.DAT)
* Create the a FLASHER.INI file (content see below)
* Connect the Flasher in file access mode to the PC
* Copy DEFAULT.CFG, BOOT.DAT, APP.DAT and FLASHER.INI on the Flasher
 
FLASHER.INI content:<br>
 
<source>
[BATCH]
DataFile    = "BOOT.DAT"
ConfigFile  = "DEFAULT.CFG"
DisplayName = "Bootloader"
[BATCH1]
DataFile  = "APP.DAT"
ConfigFile = "DEFAULT.CFG"
DisplayName = "Application"
[BATCH2]
DataFile    = "BOOT.DAT"
ConfigFile  = "DEFAULT.CFG"
DataFile1  = "APP.DAT"
ConfigFile1 = "DEFAULT.CFG"
DisplayName = "BL and App"
</source>
 
=== Custom labels ===
 
Flasher supports to assign custom labels to configurations. This allows to specify easy to remember names for configurations that are stored on the Flasher.
 
==== Hardware and software requirements ====
This feature is supported by the following models:
* Flasher Portable PLUS
 
This feature is supported since V6.30e of the software package and firmware
 
==== Assigning labels ====
The configuration and data file pairs are specified in the <tt>FLASHER.INI</tt> file:
<source>
[FILES]
DataFile    = "IMAGE0.dat"
ConfigFile  = "IMAGE0.cfg"
DataFile1  = "IMAGE1.dat"
ConfigFile1 = "IMAGE1.cfg"
</source>
 
By default, Flasher will show the names of the configuration and data file:
[[File:FW1_smartwatch_nolabel.png]]
[[File:FW2_smart_meter_nolabel.png]]
 
By adding <tt>DisplayName</tt>, <tt>DisplayName1</tt>, ... keys to the <tt>FLASHER.INI</tt>, a custom label can be shown instead:
<source>
[FILES]
DisplayName  = "FW smartwatch"
DataFile    = "IMAGE0.dat"
ConfigFile  = "IMAGE0.cfg"
DisplayName1 = "FW smart meter"
DataFile1    = "IMAGE1.dat"
ConfigFile1  = "IMAGE1.cfg"
</source>
 
The images will now be shown as follows:
[[File:FW1_smartwatch_label.png]]
[[File:FW2_smart_meter_label.png]]
 
==== Considerations ====
* The maximum length of a custom label is 32 characters. If this length is exceeded, the label is ignored and Flasher switches back to default mode for the affected configuration.
 
=== Programming multiple targets ===
 
It is possible to program multiple targets which are located in a JTAG chain.
The targets will be programmed each with a configuration and a data file.
The configuration for the desired target must be selected before it can be programmed,
this can be done with the <tt>#SELECT</tt> command.
For more information how to use the <tt>#SELECT</tt> command please refer to Chapter "3.3.5 ''Commands to Flasher''".
 
'''Example'''<br>
Three devices should be programmed.<br>
 
JTAG Chain: ''TDI'' -->  ''Device2'' --> ''Device1'' --> ''Device0'' --> ''TDO''<br>
 
Three configurations would be stored on the flasher:<br>
 
Config 0: Configured to program Device0 (DEVICE0.CFG, DEVICE0.DAT)<br>
Config 1: Configured to program Device1 (DEVICE1.CFG, DEVICE1.DAT)<br>
Config 2: Configured to program Device2 (DEVICE2.CFG, DEVICE2.DAT)<br>
 
Selection and programming of the target will be done via the ASCII interface:<br>
 
<source>
#SELECT DEVICE0
#AUTO
#SELECT DEVICE1
#AUTO
#SELECT DEVICE2
#AUTO
</source>
 
==== Programming multiple targets with J-Flash ====
 
Programming multiple targets can also be done via J-Flash using the command line interface.
For this each target must be handled with its own project file.
 
'''Example'''<br>
 
<source>
JFlash.exe -openproj"Device0.jflash" -open"Device0.hex" -auto -exit
JFlash.exe -openproj"Device1.jflash" -open"Device1.hex" -auto -exit
JFlash.exe -openproj"Device2.jflash" -open"Device2.hex" -auto -exit
</source>
 
=== Batch Programming in stand-alone mode ===
 
Batch programming allows to execute different stand-alone mode jobs in batch to be executed in immediate succession, without any user interaction in between.
This can be used for example to program multiple targets in a JTAG-Chain or multiple data files to a target.<br>
A batch may contains an unlimited number of configurations which consist of a data file (*.DAT) and config file (*.CFG).
For further information regarding config and data files, please refer to [[#Preparing for stand-alone operation manually | Preparing for stand-alone operation manually]].<br>
In order to specify the batch jobs, a FLASHER.INI file is used.
This init file contains a [BATCH] section which describes which configuration pairs (*.DAT and *.CFG file) should be used for each batch job.
A sample content of a FLASHER.INI file is shown below:<br>
 
<source>
[BATCH]
DataFile = "Flasher0.dat"
ConfigFile = "Flasher0.cfg"
DataFile1 = "Flasher1.dat"
ConfigFile1 = "Flasher1.cfg"
</source>
 
[[File:Batch_Jobs.bmp]]
 
The Flasher Portable PLUS screen will show that the number of jobs contained in the batch and the configuration file name of the first job.
 
 
[[File:Batch_Programming.bmp]]
The progress will be shown during the flashing action. The Flasher lists the current job of the batch, the current sector address and the percentage of the
currently executed action.
 
 
[[File:Batch_Result.bmp]]
The result of the programming will be shown on the screen after finishing all jobs.
 
 
Creating / Replacing of the FLASHER.INI file can done in two ways:<br>
<ol>
<li>Boot Flasher in file access mode in order to replace the FLASHER.INI</li>
<li>
  If Flasher is already integrated into the production line, runs in stand-alone mode and can not be booted in other mode:
  Use the file I/O commands provided by the ASCII interface of Flasher, to replace the FLASHER.INI .
  For more information about the file I/O commands, please refer to [[#File I/O commands | File I/O commands]].
  In case of an error occurred during execution, the Flasher terminates the entire batch processing.
</li>
</ol>
{{Note|1=Please note that the batch programming feature can not be used with the multiple file support feature. Therefore, neither the #SELECT ASCII command nor the [FILES] tag in the FLASHER.INI file can be used.}}
{{Note|1=Flasher supports 8.3 filenames only (8 characters filename, 3 characters file extension). Using longer filenames may result in incorrect operation.}}
 
==== Flasher Portable specifics ====
 
Flasher Portable allows to choose between four different batches during runtime by using the select/arrow button on the front of Flasher Portable.
Which batch configuration is used for which image selection position is specified in the FLASHER.INI.
For this, the FLASHER.INI contents in the [BATCH] section have been extended.
The sample below shows how to enable the user to select between four different batches on the Flasher Portable via the select / arrow button:<br>
 
<source>
[BATCH]
DataFile = "Flasher0.dat"
ConfigFile = "Flasher0.cfg"
DataFile1 = "Flasher1.dat"
ConfigFile1 = "Flasher1.cfg"
DataFile2 = "Flasher2.dat"
ConfigFile2 = "Flasher2.cfg"
[BATCH1]
DataFile = "TEST.dat"
ConfigFile = "Test.cfg"
[BATCH2]
DataFile = "VALIDATE.dat"
ConfigFile = "Flasher0.cfg"
</source>
 
Using this method allows to have different batches for different setups used in the production to be stored once on the Flasher Portable via file access mode.
From there on, switching between the batches can be done by simply using the selection button of Flasher Portable.
 
 
 
==== Examples ====
 
'''Example 1:''' Programming two Data files to the same target<br>
 
* Open your J-Flash project.
* Use File -> Save Flasher config file...  to save the .CFG file (in this example: STM32F4.CFG).
* Select the first binary and use File -> Save Flasher Data file... to save the first .DAT file (in this example: DATA0.DAT).
* Select the second binary and use File -> Save Flasher Data file... to save the second data file .DAT file (in this example: DATA1.DAT).
* Copy the Files to the Flasher e.g. by using file access mode.
* Create a FLASHER.INI file in the root directory of the Flasher.
* Exemplary content of FLASHER.INI:<br>
<source>
[BATCH]
DataFile = "DATA0.dat"
ConfigFile = "emPower.cfg"
DataFile1 = "DATA1.dat"
ConfigFile1 = "emPower.cfg"
</source>
 
 
'''Example 2:''' Programming one Data file to the first target in a JTAG-Chain and then programming two data files to another device in the JTAG chain.<br>
Example scenario: 2 Devices in a JTAG chain, a STM32F1 and a STM32F4. <br>
 
* Follow the same as described before and additionally:
* Create one project file per target (and create a .CFG file of each one).
* Make sure each project file is configured correctly, especially the JTAG-Chain position (See UM8003 "J-Flash" for more detailed info).
* Exemplary content of FLASHER.INI:<br>
<source>
[BATCH]
DataFile = "F1DATA.dat"
ConfigFile = "STM32F1.cfg"
DataFile1 = "F4DATA0.dat"
ConfigFile1 = "STM32F4.cfg"
DataFile2 = "F4DATA1.dat"
ConfigFile2 = "STM32F4.cfg"
</source>
 
'''Example 3:''' Using multiple Batch sections with Flasher Portable.<br>
Example scenario: 2 Devices in a JTAG chain, a STM32F1 and a STM32F4.<br>
Selection 1 will program the STM32F1 target.<br>
Selection 2 will program the STM32F4 target using "F4DATA0.dat".<br>
Selection 3 will program the STM32F4 target using "F4DATA1.dat".<br>
Selection 4 will execute 1, 2 and 3 in sequence.<br>
* Exemplary content of FLASHER.INI:<br>
<source>
[BATCH]
DataFile = "F1DATA.dat"
ConfigFile = "STM32F1.cfg"
[BATCH1]
DataFile = "F4DATA0.dat"
ConfigFile = "STM32F4.cfg"
[BATCH2]
DataFile = "F4DATA1.dat"
ConfigFile = "STM32F4.cfg"
[BATCH3]
DataFile = "F1DATA.dat"
ConfigFile = "STM32F1.cfg"
DataFile1 = "F4DATA0.dat"
ConfigFile1 = "STM32F4.cfg"
DataFile2 = "F4DATA1.dat"
ConfigFile2 = "STM32F4.cfg"
</source>
 
=== Serial number programming ===
 
Flasher supports programming of serial numbers. In order to use the serial number programming feature,
the J-Flash project to be used as well as some files on the Flasher (depending on the configuration) need to be configured first.<br>
 
In general, Flasher supports two ways of programming a serial number into the target:<br>
<ol>
<li>Programming continuous serial numbers. Serial number is 1-4 bytes in size. Start serial number, increment, serial number size and address is configured in the J-Flash project.</li>
<li>
  Programming custom serial numbers from a serial number list file.
  Start line into serial number list file to get next serial number bytes, line increment, serial number size and address is configured in J-Flash project.
  Serial number list file needs to be specified and created by user.
</li>
</ol>
In the following some generic information how to setup Flasher & the J-Flash project for serial number programming are given.<br>
{{Note|1=Full serial number programming support has been introduced with V4.51d of the J-Flash software and the Flasher firmware that comes with it.}}
{{Note|1=Currently, programming of serial numbers is only supported for stand-alone mode. Future versions of J-Flash may also support serial number programming in PC-based mode.}}
 
==== Serial number settings ====
 
In order to enable the programming of serial numbers in stand-alone mode, the J-Flash project has to be configured to enable programming a serial number at a specific address.
This is done by enabling the '''Program serial number''' option as shown in the screenshot and table below:<br>
 
[[File:SN_Sample_JFlashSettings.gif]]
 
{| class="seggertable"
|-
! Setting    !! Meaning
|-
| <tt>Address</tt>    || The address the serial number should be programmed at.
|-
| <tt>Len</tt>      || The length of the serial number (in bytes) which should be programmed.<br>If no serial number list file is given, J-Flash allows to use a 1-4 byte serial number. In case of 8 is selected as length, the serial number and its complementary is programmed at the given address.<br>In case a serial number list file is given, Flasher will take the serial number bytes from the list file. If a serial number in the list file does not define all bytes of <tt>Len</tt>, the remaining bytes are filled with 0s. No complements etc. are added to the serial number.
|-
| <tt>Next SN</tt>    || In case no serial number list file is given, <tt>Next SN</tt> is next serial number which should be programmed.<br>The serial number is always stored in little endian format in the flash memory.<br>In case a serial number list file is given, <tt>Next SN</tt> describes the line of the serial number list file where to read the next serial number bytes from. Flasher starts counting with line 0, so in order to start serial number programming with the first line of the <tt>SNList.txt</tt>, <tt>Next SN</tt> needs to be set to 0.
|-
| <tt>Increment</tt>  || Specifies how much <tt>Next SN</tt> is incremented.
|-
|}
 
==== Serial number file ====
 
When selecting '''File -> Download serial number file to Flasher''', J-Flash will create a Serial number file named as <tt><JFlashProjectName>_Serial.txt</tt>.
This file is downloaded as <tt>SERIAL.TXT</tt> on Flasher. The file is generated based on the serial number settings in the J-Flash project and will contain the value defined by the <tt>Next SN</tt> option.
The serial number file can also be manually edited by the user, since the serial number is written ASCII encoded in the <tt>SERIAL.TXT</tt> file.
 
==== Serial number list file ====
 
In order to program custom serial numbers which can not be covered by the standard serial number scheme provided by J-Flash
(e.g. when programming non-continuous serial numbers or having gaps between the serial numbers), a so called serial number list file needs to be created by the user.
When selecting '''File-> Download serial number file to Flasher''', J-Flash will look for a serial number list file named as <tt><JFlashProjectName>_SNList.txt</tt> in the directory where the J-Flash project is located.
This file is downloaded as <tt>SNList.txt</tt> on Flasher. The serial number list file needs to be created manually by the user and has the following syntax:<br>
* One serial number per line
* Each byte of the serial number is described by two hexadecimal digits.
 
'''Example'''<br>
A 8-byte serial number should be programmed at address 0x08000000.<br>
 
It should be programmed as follows in the memory:<br>
 
<tt>0x08000000: 0x01 0x02 0x03 0x04 0x55 0x66 0x77 0x88</tt><br>
 
The serial number list file should look as follows:<br>
 
<tt>0102030455667788</tt>
 
[[File:SN_SNList.gif]]
 
The number of bytes to read per line is configured via the <tt>Len</tt> option in J-Flash. For more information, please refer to [[#Serial number settings | Serial number settings]].<br>
 
Which line Flasher will read at the next programming cycle, is configured via the <tt>Next SN</tt> option in J-Flash.
For more information, please refer to [[#Serial number settings | Serial number settings]].
In this case <tt>Next SN</tt> needs to be set to 0, since programming should be started with the serial number bytes defined in the first line of the file.<br>
 
{{Note|1=If the number of bytes specified in a line of the serial number list file is less than the serial number length defined in the project, the remaining bytes filled with 0s by Flasher.}}
{{Note|1=If the number of bytes specified in a line of the serial number list file is greater than the serial number length defined in the J-Flash project, the remaining bytes will be ignored by Flasher.}}
 
==== Programming process ====
 
Flasher will increment the serial number in SERIAL.TXT by the value defined in <tt>Increment</tt>, after each successful programming cycle.<br>
 
For each programming cycle, the FLASHER.LOG on the Flasher is updated and contains the value from SERIAL.TXT that has been used for the programming cycle.<br>
 
{{Note|1=The serial number in SERIAL.TXT will also be incremented in case if serial number programming is disabled, to make sure that for the Flasher logfile there is a reference which programming cycle passed and which not.
As long as serial number programming has not been enabled in the J-Flash project, Flasher does not merge any serial number data into the image data to be programmed.}}
 
==== Downloading serial number files to Flasher ====
 
Downloading the serial number files needs to be done explicitly by selecting '''File-> Download serial number file to Flasher'''.
Please note that the '''File -> Download config & data file to Flasher''' option does only download the configuration and data file to Flasher since usually the current serial number used for programming shall not be reset/overwritten when just updating the image Flasher shall program.
 
==== Sample setup ====
 
In the following a small sample is given how to setup Flasher for serial number programming. In the following sample, 4-byte serial numbers starting at 1234567 (0x12D687) shall be programmed at address 0x08001000.
 
'''Defining serial number address, length and start value'''<br>
In the J-Flash project the following needs to be defined:<br>
* <tt>Address</tt> is 0x08001000
* <tt>Next SN</tt> is 1234567
* <tt>Increment</tt> is 1
* <tt>Len</tt> is 4 (bytes)
 
[[File:SN_Sample_JFlashSettings.gif]]
 
'''Downloading configuration, data and serial number to Flasher.'''<br>
After setting up the rest of the configuration (Target interface etc.) and selecting an appropriate data file, the configuration,
data and serial number file is downloaded into Flasher via the '''File -> Download config & data file to Flasher''' and '''File-> Download serial number file to Flasher''' option.<br>
 
[[File:SN_Sample_DownloadToFlasher.gif]]
 
After downloading the serial number to Flasher, J-Flash also created the <tt><JFlashProjectName>_Serial.txt</tt>.
 
[[File:SN_Sample_SerialFileCreated.gif]]
 
Now Flasher is prepared to program the 8-byte serial number.
 
=== Patch file support ===
 
In stand-alone mode Flasher supports patch files which allows to patch the content of the data to be programmed. Patches for undefined memory locations will be ignored, so there need to be placeholders in the data file.
Before starting programming process in stand-alone mode, Flasher will look for a file named <tt>Patches.txt</tt> being present on the Flasher.
This file includes the patches. If this file is present, the number in <tt>Serial.txt</tt> describes the line number of the Patches.txt that will be used for the current cycle (line counting starts at 0).<br>
 
Each line in the <tt>Patches.txt</tt> can hold up to 4 patches, where each patch can be up to 32 bytes in length.
 
'''Syntax'''<br>
<!-- LG xxxxxxxxx '==' is shown as '=', so instead use '= ='-->
Each line begins with <tt><NumPatches></tt> followed by each patch <tt><Addr>,<NumBytes>:<nowiki><Data></nowiki></tt> in sequence and separated by commas. So the syntax for <tt><NumPatches></tt> = = 4 would be as follows:<br>
 
<tt><NumPatches>,<Addr>,<NumBytes>:<nowiki><Data></nowiki>,<Addr>,<NumBytes>:<nowiki><Data></nowiki>,<Addr>,</tt><br>
<tt><NumBytes>:<nowiki><Data></nowiki>,<Addr>,<NumBytes>:<nowiki><Data></nowiki>\r\n</tt><br>
 
Find below a table which describes each parameter.<br>
{| class="seggertable"
|-
! Parameter        !! Description
|-
| <tt><NumPatches></tt>  || Describes the number of patches in this patch line. Max. value is 4.
|-
| <tt><Addr></tt>        || Describes the address to be patched. Value is expected in hex.
|-
| <tt><NumBytes></tt>    || Number of bytes for the current patch. Max. value is 20h (32 in decimal). Value is expected in hex.
|-
| <tt><nowiki><Data></nowiki></tt>        || Describes the data to be patched. <nowiki><Data></nowiki> is always expected as 2 hexadecimal characters per byte.
|-
|}
 
{{Note|1=All values are expected in hexadecimal format (hex).<br>
<nowiki><Data></nowiki> section is always preceded by ":", not ",".}}
 
'''Example'''<br>
Below is an example patch.<br>
 
<source>
1,18,4:01020304\r\n
</source>
 
Patching the following data:
 
[[File:data_before.png]]
 
with the example patch will result in the following data:
 
[[File:data_afterwards.png]]
 
Please note that as mentioned earlier patching undefined memory locations will be ignored.<br>
Applying the example patch to the following data:
 
[[File:undefined_mem_before.png]]
 
Causes no data to be patched, as can be seen in the following image:
 
[[File:undefined_mem_no_token.png]]
 
Therefore it is necessary to first write placeholder data to the memory locations which are supposed to be patched.<br>
An example for such a placeholder can be seen here:
 
[[File:undefined_mem_token.png]]
 
Please note that the actual data inside the placeholder does not matter to the Flasher,
because it is overwritten during patching.<br>
Applying the example patch will now work as expected:
 
[[File:undefined_mem_after.png]]
 
'''Single patch via RS232'''<br>
Alternatively, you can start a programming cycle with patch data that is only valid for this one cycle (no need for a Patches.txt file):<br>
 
Send the <tt>#AUTO PATCH <NumPatches>,<Addr>,<NumBytes>:<nowiki><Data></nowiki></tt><br>
 
command via Flasher ASCII interface. The parameters have the same function as described in the table above.
 
==== Newline encoding ====
 
In general, for all patch files, init files etc. Flasher supports both newline encodings:<br>
 
* Windows: \r\n
* Unix/Mac: \n
 
All parser functionality etc. are written to be independent from the host operating system.
 
=== Limiting the number of programming cycles ===
 
Flasher provides a mechanism to limit the number of programming cycles that can be performed in stand-alone mode with the configuration that is stored on the Flasher.
To make use of this feature, a file called <tt>Cntdown.txt</tt> needs to be placed on the Flasher.
This file simply contains a decimal number (32-bit unsigned integer) that describes how many programming cycles can be performed with the current setup.
 
[[File:CntdownTxtContent.jpg]]
 
This feature especially makes sense when used in combination with authorized flashing. For more information about authorized flashing, please refer to [[#Authorized flashing | Authorized flashing]].<br>
 
{{Note|1=The number in the <tt>Cntdown.txt</tt> is only updated on a successful programming cycle. Programming cycles that failed, do not affect the <tt>Cntdown.txt</tt>.}}
 
==== Changed fail/error LED indicator behavior ====
 
In case a <tt>Cntdown.txt</tt> is found at boot time, the fail/error LED of Flasher behaves different from normal. If the number of programming cycles left is 10 or below, the following will happen:<br>
 
* The red error/fail LED will lit for 1 second
* After this, it will blink/toggle x times @ 5 Hz, indicating the number of programming cycles left. (blinking 5 times for 5 cycles left, ...)
 
==== Required Flasher hardware version for Cntdown.txt support ====
 
Older Flasher models do not support the limiting of programming cycles. The Flashers with the following serial number ranges do not support limiting of programming cycles:<br>
 
* 1621xxxxx (Flasher ARM V2)
* 1630xxxxx (Flasher ARM V3)
* 4210xxxxx (Flasher PPC V1)
* 4110xxxxx (Flasher RX V1)
 
All other models / hardware versions support limiting of programming cycles.
 
=== Authorized flashing ===
 
Current hardware versions of Flasher support creation of a so called <tt>secure area</tt> which allows to pre-configure the Flasher with a given setup and then give it to external production facilities etc.
without the possibility to read out the Flasher contents via file access mode, FILE I/O functionality (J-Link Commander) or RS232 commands.
This section describes how to setup a <tt>secure area</tt> on a Flasher and how to move the configuration/data file(s) into it.
 
==== Creating / Adding the secure area ====
 
By default, Flashers are shipped with a public area only (full Flasher flash size accessible via file access mode etc.). The <tt>secure area</tt> has to be activated / created once, to make use of it.
This will reserve half of the Flasher storage size (on current models this will be ~64 MB) for the <tt>secure area</tt>. The <tt>secure area</tt> can be removed at any time, providing the full flasher storage to the public area again.
The <tt>secure area</tt> can be created / removed via J-Link Commander, which is part of the software package that comes with Flasher.<br>
 
[[File:CreateSecArea.jpg]]
 
The following secure area related commands are available in J-Link Commander:<br>
 
* securearea create
* securearea remove
 
{{Note|1=When creating or removing the <tt>secure area</tt>, all configuration and data files being stored on the Flasher, are lost.
Please make sure that they are not needed anymore, before adding / removing the security area.}}
 
==== Moving files to the secure area ====
 
Before moving configuration + data to the <tt>secure area</tt>, proper functionality of the setup should be tested in stand-alone mode.
Once the setup is working as expected, do the following, to move the configuration + data into the <tt>secure area</tt>:<br>
 
* Start Flasher in file access mode (For more info, please refer to: [[#file access mode | file access mode]])
 
[[File:FilesBeforeSecure.png]]
 
* Create a folder "<tt>_SECURE</tt>"
* Move all files that shall be moved to the <tt>secure area</tt>, into this folder
 
[[File:FilesAfterSecure.png]]
 
* Reboot Flasher (Do not enter file access mode again, yet! Otherwise, contents will not be moved). Now, depending on the configuration and data file size, it may take a bit, before the Flasher Power LED lit.<br>Once it lit, all contents have been moved to the <tt>secure area</tt> and the _SECURE folder in the public area has been deleted.
* Now Flasher can be used in stand-alone mode, as normal, but the files cannot be read back by the user / operator.
 
==== Considerations to be taken when using the secure area ====
 
When using the <tt>secure area</tt>, some things need to be considered:<br>
 
* All features like multiple file support, patch file support etc. can also be used when operating from the <tt>secure area</tt>.
* The <tt>secure area</tt> cannot be read back by any utility. Solely the <tt>FLASHER.LOG</tt> is always placed and updated in the public area, even when Flasher operates from the <tt>secure area</tt>.
* If there is any file/folder in the public area, except the <tt>FLASHER.LOG</tt> and there is also any configuration / data present in the <tt>secure area</tt>, stand-alone flashing will fail because it is not unambiguous which configuration / data shall be used.<br>In such cases, Flashers with Ethernet / RS232 interface will output an appropriate error message on programming. All Flasher models will output an appropriate error message in the <tt>FLASHER.LOG</tt>.
* Moving files from the public into the secure area can be done multiple times, as explained in [[#Moving files to the secure area | Moving files to the secure area]].<br>Each time files are moved from the public area to the <tt>secure area</tt>, all contents of the <tt>secure area</tt> are erased first, to make sure that no previous configuration is present there.
 
==== Required Flasher hardware version ====
 
Older Flasher models do not support authorized flashing. The Flashers with the following serial number ranges do not support authorized flashing:<br>
 
* 1621xxxxx (Flasher ARM V2)
* 1630xxxxx (Flasher ARM V3)
* 4210xxxxx (Flasher PPC V1)
* 4110xxxxx (Flasher RX V1)
 
All other models / hardware versions support authorized flashing.
 
=== Target interfaces ===
 
The table below shows the supported target interfaces of the different Flasher models.<br>
 
{| class="seggertable"
|-
! Hardware    !! Supported interfaces
|-
| Flasher PRO  || JTAG, SWD
|-
| Flasher Compact || JTAG, SWD
|-
| Flasher ARM  || JTAG, SWD
|-
| Flasher RX  || JTAG
|-
| Flasher PPC  || JTAG
|-
|}
 
For more information about the target interfaces itself, please refer to:<br>
 
* ''UM08001, chapter "Working with J-Link and J-Trace", section "JTAG interface"''
* ''UM08001, chapter "Working with J-Link and J-Trace", section "SWD interface"''
 
=== Supported architectures ===
 
Flasher supports programming of the internal flash of a large number of different microcontrollers.
The number of supported devices is steadily growing. You can always find the latest list of supported devices on our website:<br>
 
''http://www.segger.com/supported-devices.html''
 
Sometimes, especially early in MCU development, only a few samples/boards are available and may not be made available to third parties (e.g. SEGGER) to add support for a new device.
Also the existence of the device may have confidential status, so it might not be mentioned as being supported in public releases yet.
Therefore it might be desirable to be able to add support for new devices on your own, without depending on SEGGER and a new release of the J-Link Software an Documentation Pack being available.
 
The J-Link DLL allows customers to add support for new devices on their own. It is also possible to edit / extend existing device support by for example adding new flash banks (e.g. to add support for internal EEPROM programming or SPIFI programming).
The following article in our Wiki ''[[Open_Flashloader]]'' explains how new devices can be added to the DLL and how existing ones can be edited / extended.
 
If a device is not supported, you can always contact us. We will be happy to provide you with an offer.
 
==== External flashes ====
 
In general our Flashers support programming of external flashes listed below:<br>(Can differ between Flasher models and hardware versions)
 
* parallel NOR flash
* SPI / QSPI flash<br>(see: ''[[SPI_support_by_Flasher_models]]'')
* NAND flash
* I<sup>2</sup>C EEPROM/Flash
* FRAM
 
If the parallel NOR flash device which is used is not CFI-compliant you have to select the flash device in J-Flash explicitly,
for a list of all parallel NOR flash devices which can be explicitly selected in J-Flash, please refer to ''UM08003, J-Flash User Guide'', chapter ''Supported Flash Devices''.
 
Since the connection of the flash to the CPU can be different for each of the other flash types mentioned above, a suitable ''Open Flashloader'' can be used in such a case.
The J-Flash software comes with sample projects for ''Open Flashloader''.
For a complete list of all ''Open Flashloader'' projects for use with J-Flash software, see also: <br>''http://www.segger.com/supported-devices.html''
{{Note|1=Complete Information about ''Open Flashloaders'' can be found in our Wiki:<br>''[[Open_Flashloader]]''}}
 
==== Cores ====
 
===== Flasher ARM =====
 
Flasher ARM supports and has been tested with the following cores, but should work with any ARM7/9, Cortex-M0/M1/M3/M4 core.
If you experience problems with a particular core, do not hesitate to contact Segger.<br>
 
* ARM7TDMI (Rev 1)
* ARM7TDMI (Rev 3)
* ARM7TDMI-S (Rev 4)
* ARM920T
* ARM922T
* ARM926EJ-S
* ARM946E-S
* ARM966E-S
* Cortex-M0
* Cortex-M1
* Cortex-M3
* Cortex-M4
 
===== Flasher RX =====
 
Flasher RX supports and has been tested with the following cores. If you experience problems with a particular core, do not hesitate to contact Segger.<br>
 
* RX610
* RX621
* RX62N
* RX62T
 
===== Flasher PPC =====
 
Flasher PPC supports and has been tested with the following cores. If you experience problems with a particular core, do not hesitate to contact Segger.
 
* e200z0
 
===== Flasher PRO/Compact/Portable PLUS =====
All of the above cores using J-Flash. Many more and constantly growing by means of Universal Flash Loader ''https://www.segger.com/supported-devices/flasher/''.
 
=== Programming multiple targets in parallel ===
 
To program multiple targets in parallel there are the following possibilities:
* Using a Flasher gang, or
* Using multiple Flashers, each connecting to one CPU.
 
Devices for gang programming are:
* Flasher ATE; suitable for programming up to 10 targets in parallel. Refer [https://www.segger.com/downloads/flasher/UM08035 Flasher ATE user manual (UM08035_FlasherATE.pdf)].
* Flasher Hub in conjunction with up to 24 Flasher (Compact).        Refer [https://www.segger.com/downloads/flasher/UM08039 Flasher Hub user manual (UM08039_FlasherHUB.pdf)].
When using multiple flashers, this can be done with the J-Flash production programming software.
For further information, please refer to Chapter "''Command Line Interface''" Sub-chapter "''Programming multiple targets in parallel''" of the J-Flash User Guide ([https://wiki.segger.com/UM08003_JFlash UM08003_JFlash.pdf]) which is part of the Flasher Software and Documentation package. ''https://www.segger.com/downloads/flasher/#FlasherSoftwareAndDocumentationPack''
 
=== Logfiles and Quality Management ===
 
All Flasher models keep a log file named <tt>Flasher.log</tt> which logs each programming attempt. This file contains the serial number of the device, the result of the programming attempt, and the programming duration for quality tracking purposes. An example of a <tt>Flasher.log</tt> file might look like the following:
<source lang="c">
SN: 1 - Failed
SN: 1 - Failed
SN: 2 - O.K. (931 ms)
SN: 3 - O.K. (931 ms)
SN: 4 - O.K. (933 ms)
SN: 5 - O.K. (932 ms)
</source>
If applicable, the logfile contains more detailed error messages. For example:
<source lang="c">
ERROR: Programming failed @ address 0x00000000 (1)
ERROR: Cannot connect to CPU. Target interface speed too high?
</source>
The Flasher Portable PLUS creates an additional log file named <tt>UNIERROR.LOG</tt> for Universal Flash Loader projects. This file contains error messages that would otherwise have been displayed by the other flashers on the terminal. For example:
<source lang="c">
Verify error config word area @
config word
config word read back
Verify error flash area @
data from file
data read back
</source>
{{Note|1=These log files can be accessed by booting the flasher into file access mode or directly via FTP if the flasher has an appropriate network interface.}}
 
== TCP Services ==
This chapter describes the integrated TCP services.
 
=== FTP Server ===
The FTP server provides easy access to the files on the internal file system. The server supports a maximum of 2 simultaneous connections and works with all common FTP clients.<br>
[[File:FTPServer.png]]
 
==== Access data ====
Anonymous access to the FTP server is limited to read-only access to the file system.<br>
For write access, special login credentials have to be used:<br>
<tt>Login:    admin</tt><br>
<tt>Password: 1234</tt><br>
 
{{Note|1=The access data for read/write access can not be modified and it is intended to be used only as a convenience feature to avoid unintended modification of the Flasher's file system.
It is not meant as a security feature.}}
 
=== Web server ===
 
All Flashers which come with an Ethernet interface also come with a built-in web server, which provides a web interface for information and network configuration.
For the network, the IP address settings can be changed and a nick name can be assigned to the device.<br>
 
Additionally, the web interface provides information about the status of the integrated operating system, the IP stack and the target hardware.
 
== Remote control ==
This chapter describes how to control Flasher via the 9-pin serial interface connector or via the integrated Telnet interface.
 
=== Overview ===
There are 3 ways to control Flasher operation:<br>
 
* Manual: Programming operation starts when pressing the button. The LEDs serve as visible indicators.
* Via Handshake lines: 3 lines on the serial interface are used:<br>1 line is an input and can be used to start operation,<br>2 lines are outputs and serve as busy and status signals.
* Terminal communication via RS232.
* Terminal communication via Telnet.
 
{{Note|1=All ways to control Flasher operation are working only if Flasher is in standalone mode. In PC-based mode or file access mode they have no effect.}}
 
=== Handshake control ===
 
Some Flasher models can be remote controlled by automated testers without the need of a connection to a PC.
Therefore Flasher is equipped with additional hardware control functions, which are connected to the SUBD9 male connector, normally used as RS232 interface to PC.<br>
 
The handshake control is available for the following Flashers:
* Flasher ARM
* Flasher PRO
* Flasher Compact (via Flasher Hub only)
 
The following diagrams show the internal remote control circuitry of Flasher:<br>
 
[[File:FlasherRemotecontrol.png]]
{| class="seggertable"
|-
! Pin No.  !! Function  !! Description
|-
| 1        || START    || A positive pulse of any voltage between 5 and 30V with duration of min. 30 ms starts "Auto" function (Clear / Program / Verify) on falling edge of pulse. The behavior of the "Auto" function depends on the project settings, chosen in J-Flash at the '''Production''' tab.
|-
| 4        || BUSY      || As soon as the "Auto" function is started, BUSY becomes active, which means that transistor is switched OFF.
|-
| 5        || GND      || Common Signal ground.
|-
| 7        || OK        || This output reflects result of last action. It is valid after BUSY turned back to passive state. The output transistor is switched ON to reflect OK state.
|-
|}
 
=== ASCII command interface ===
 
==== Introduction ====
 
Once set up using J-Flash, the Flasher can be driven by any application or just a simple terminal using ASCII commands.<br>
 
Every known command is acknowledged by the Flasher and then executed. After command execution, Flasher sends an ASCII reply message.<br>
 
{{Note|1=There are situations where the execution of a known command is rejected with #NACK:ERRxxx if Flasher is currently busy and the received command is not allowed to be sent while Flasher is busy}}
 
==== General command and reply message format ====
 
* Any ASCII command has to start with the start delimiter ''#''.
* Any ASCII command has to end with simple carriage return ('\r', ASCII code 13).
* Commands can be sent upper or lower case
 
==== General usage ====
 
Reply messages must be considered in each case. In general, a new command must not be sent before a reply for the last one has been received.
 
When a flash programming function (<tt>#AUTO, #CANCEL, #ERASE, #PROGRAM, #VERIFY</tt>) has finished, the debug logic of the MCU is disabled (power down) and the target interface of the module is switched off (tristated).
 
==== Settings for ASCII interface via RS232 ====
 
Flasher is driven via a RS232 serial port with the following interface settings:<br>
 
* 9600 baud
* 8 data bits
* no parity
* 1 stop bit
 
The baud rate can be changed by using the <tt>#BAUDRATE</tt> command.
 
==== Settings for ASCII interface via Telnet ====
 
A client application can connect to Flasher via Telnet on port 23. Find below a screenshot of Flasher which is remote controlled via Telnet:<br>
 
[[File:telnet_connection.gif]]
 
==== Commands and replies ====
 
The table below gives an overview about the commands which are supported by the current version of Flasher firmware. Click on the names for a detailed description:<br>
 
{| class="seggertable"
|-
!colspan="100%"| Commands to the Flasher
|-
| <tt>#BAUDRATE <Baudrate></tt>
|-
| <tt>#AUTO</tt>
|-
| <tt>#AUTO PATCH</tt>
|-
| <tt>#AUTO NOINFO</tt>
|-
| <tt>#CANCEL</tt>
|-
| <tt>#ERASE</tt>
|-
| <tt>#PROGRAM</tt>
|-
| <tt>#RESULT</tt>
|-
| <tt>#SELECT <Filename></tt>
|-
| <tt>#START</tt>
|-
| <tt>#STATUS</tt>
|-
| <tt>#VERIFY</tt>
|-
| <tt>#QUIT</tt>
|-
| <tt>#VERBOSE <Level></tt>
|-
!colspan="100%"| File I/O commands
|-
| <tt>#FCLOSE</tt>
|-
| <tt>#FCRC</tt>
|-
| <tt>#FDELETE <Filename></tt>
|-
| <tt>#FOPEN <Filename></tt>
|-
| <tt>#FREAD <Offset>,<NumBytes></tt>
|-
| <tt>#FSIZE</tt>
|-
| <tt>#FWRITE <Offset>,<NumBytes>:<nowiki><Data></nowiki></tt>
|-
| <tt>#FLIST</tt>
|-
| <tt>#MKDIR <Dirname></tt>
|-
!colspan="100%"| SecureArea commands
|-
|  <tt>#HASSECUREAREA</tt>
|-
|  <tt>#SECUREAREA <action></tt>
|-
!colspan="100%"| Replies from the Flasher
|-
| <tt>#ACK</tt>
|-
| <tt>#NACK</tt>
|-
| <tt>#OK</tt>
|-
| <tt>#OK:<NumBytes>:<nowiki><Data></nowiki></tt>
|-
| <tt>#OK:<Size></tt>
|-
| <tt>#STATUS:</tt>
|-
| <tt>#DONE</tt>
|-
| <tt>#ERRxxx</tt>
|-
|}
 
===== Commands to the Flasher =====
 
'''#AUTO'''<br>
The <tt>#AUTO</tt> command behaves exactly as the start button or external remote control input.<br>
 
Usually, the following command sequence will be performed when receiving the <tt>#AUTO</tt> command:<br>
 
* The Flasher erases the target CPU (if not blank)
* The Flasher programs the target CPU
* The Flasher verifies the target CPU
 
Depending on the settings chosen in the '''Production''' tab in J-Flash, this sequence can differ from the one shown above.<br>
 
Finally, Flasher responds with<br>
 
* <tt>#OK</tt> if no error occurred
* <tt>#ERRxxx</tt> if any error occurred during operation. <tt>xxx</tt> represents the error code, normally replied to Flasher PC program. The <tt>#ERRxxx</tt> message may be followed by an additional error text.
 
During execution of the <tt>#AUTO</tt> command, Flasher automatically sends "status" messages via RS232 to reflect the state of execution.
Typically during execution of <tt>#AUTO</tt> command, Flasher will reply the following sequence of messages:<br>
 
<tt>#ACK</tt><br>
<tt>#STATUS:INITIALIZING</tt><br>
<tt>#STATUS:CONNECTING</tt><br>
<tt>#STATUS:UNLOCKING</tt><br>
<tt>#STATUS:ERASING</tt><br>
<tt>#STATUS:PROGRAMMING</tt><br>
<tt>#STATUS:VERIFYING</tt><br>
<tt>#OK (Total 13.993s, Erase 0.483s, Prog 9.183s, Verify 2.514s)</tt><br>
 
'''#AUTO PATCH'''<br>
The <tt>#AUTO</tt> PATCH command allows patching of the content of the data to be programmed.<br>
 
Flasher responds with<br>
 
* <tt>#OK</tt> if no error occurred
* <tt>#ERRxxx</tt> if any error occurred during operation. <tt>xxx</tt> represents the error code, normally replied to Flasher PC program. The <tt>#ERRxxx</tt> message may be followed by an additional error text.
 
For further information about the usage of the <tt>#AUTO PATCH</tt> command please refer to [[#Patch file support | Patch file support]].
 
'''#AUTO NOINFO'''<br>
This command may be used instead of <tt>#AUTO</tt>, if no status messages from Flasher should be sent during execution. The NOINFO extension is also available for all other commands.<br>
 
The command ends with <tt>#OK</tt> or <tt>#ERRxxx</tt>
 
'''#BAUDRATE <Baudrate>'''<br>
This command can be sent in order to change the baud rate of the Flasher's RS232 interface used for communication. <tt><Baudrate></tt> is expected in decimal format.<br>
 
If this command succeeds, Flasher responds with:<br>
 
<tt>#ACK</tt><br>
<tt>#OK</tt><br>
 
Otherwise it will respond with one of the following error messages:<br>
 
<tt>#ERR255: Invalid parameters</tt><br>
<tt>or</tt><br>
<tt>#ERR255: Baudrate is not supported</tt><br>
 
{{Note|1=After sending the <tt>#BAUDRATE</tt> command you will first have to wait until the Flasher responds with the <tt>#OK</tt> message.
It is recommended wait 5ms before sending the next command with the new baudrate in order to give the Flasher the time to change the baudrate.}}
 
'''#CANCEL'''<br>
This command can be sent to abort a running program. It may take a while until the current program is actually canceled.<br>
 
Flasher will respond with:<br>
 
<tt>#ERR007:CANCELED.</tt><br>
 
'''#ERASE'''<br>
This command can be sent to erase all selected target flash sectors.<br>
 
Flasher will reply the following sequence of messages:<br>
 
<tt>#ACK</tt><br>
<tt>#STATUS:INITIALIZING</tt><br>
<tt>#STATUS:CONNECTING</tt><br>
<tt>#STATUS:UNLOCKING</tt><br>
<tt>#STATUS:ERASING</tt><br>
<tt>#OK (Total 0.893s, Erase 0.483s)</tt><br>
 
'''#PROGRAM'''<br>
This command can be used instead of <tt>#AUTO</tt> to program a target without erasing the target before programming and without performing a final verification.
 
'''#RESULT'''<br>
This command can be sent any time, even during other command execution. Flasher responds with the last result of the previously executed command.
 
'''#SELECT <Filename>'''<br>
The <tt>#SELECT</tt> command is used to select a specific config and data file pair which should be used by Flasher to program the target.
<tt><Filename></tt> specifies the name of file pair without extensions (.CFG and .DAT) on the Flasher which should be selected. If you are
using the universal flash programming mode, <tt><Filename></tt> specifies the full name of the .UNI file '''including''' the extension.
Flasher saves the selected config and data file in the FLASHER.INI file. So this selection is remembered even between power-cycling Flasher.<br>
 
This may be verfy helpful in cases where several config and data files are stored on Flasher.
The user can easily switch between these config and data files without connecting Flasher to a host.<br>
 
If this command succeeds, Flasher responds with:<br>
 
<tt>#ACK</tt><br>
<tt>#OK</tt><br>
 
Find below a sample sequence which shows how to use the <tt>#SELECT</tt> command:<br>
 
<tt>#SELECT ATSAM7_1                  // ATSAM7_1.CFG and ATSAM7_1.DAT is selected</tt><br>
<tt>#ACK</tt><br>
<tt>#OK</tt><br>
<tt>#AUTO                            // Start auto programming</tt><br>
<tt>#ACK</tt><br>
<tt>#STATUS:INITIALIZING</tt><br>
<tt>#STATUS:CONNECTING</tt><br>
<tt>#STATUS:UNLOCKING</tt><br>
<tt>#STATUS:ERASING</tt><br>
<tt>#STATUS:PROGRAMMING</tt><br>
<tt>#STATUS:VERIFYING</tt><br>
<tt>#OK (Total 8.416s, Erase 0.005s, Prog 6.845s, Verify 0.959s)</tt><br>
<tt>#SELECT ATSAM7_2                  // ATSAM7_2.CFG and ATSAM7_2.DAT is selected</tt><br>
<tt>#ACK</tt><br>
<tt>#OK</tt><br>
<tt>#AUTO                            // Start auto programming</tt><br>
<tt>#ACK</tt><br>
<tt>#STATUS:INITIALIZING</tt><br>
<tt>#STATUS:CONNECTING</tt><br>
<tt>#STATUS:UNLOCKING</tt><br>
<tt>#STATUS:ERASING</tt><br>
<tt>#STATUS:PROGRAMMING</tt><br>
<tt>#STATUS:VERIFYING</tt><br>
<tt>#OK (Total 8.632s, Erase 0.005s, Prog 7.051s, Verify 0.969s)</tt><br>
 
'''#START'''<br>
This command can be sent to start the application using the method configured in the J-Flash project.
 
Flasher will reply with the following sequence of messages:<br>
 
<tt>#ACK</tt><br>
<tt>#STATUS:INITIALIZING</tt><br>
<tt>#STATUS:CONNECTING</tt><br>
<tt>#OK (Total 1.148s)</tt><br>
 
'''#STATUS'''<br>
This command can be sent any time, even during other command execution. Flasher responds with its current state. All defined state messages are described under [[#Replies from Flasher | Replies from Flasher]].
 
'''#VERIFY'''<br>
This command can used to verify the target flash content against the data stored in Flasher.
 
'''#QUIT'''<br>
This command can be used to terminate the active telnet connection from the server side (Flasher).
The command provides an easy way to terminate the session from an automated script.
It is not necessary to parse stdout and switch to local command mode to disconnect.
Not implemented in the Flasher ATE or Flasher Hub.
 
'''#VERBOSE <Level>'''<br>
This command can be used to change the verbosity level. <br>
* Verbosity level 0: Default. <br>
* Verbosity level 1: Provides some additional messages during the programming process.
 
===== File I/O commands =====
 
The ASCII interface of the Flasher also supports file I/O operations.
 
The following file I/O commands are supported:<br>
 
'''#FCLOSE'''<br>
The <tt>#FCLOSE</tt> command closes the file on Flasher which was opened via <tt>#FOPEN</tt>.
After this command has been issued further file I/O operations except <tt>#FDELETE</tt> are not allowed until the <tt>#FOPEN</tt> command is send again.<br>
 
A typical sequence when using the <tt>#FCLOSE</tt> command does look like as follows:<br>
 
<tt>#FCLOSE</tt><br>
<tt>#ACK</tt><br>
<tt>#OK</tt><br>
 
{{Note|1=When using the <tt>#FCLOSE</tt> command a file has to be open (previously opened by <tt>#FOPEN</tt>). Otherwise Flasher will respond with the following if no file has been opened:<br>
<tt>#ACK</tt><br>
<tt>#ERR255:No file opened</tt>
}}
 
'''#FCRC'''<br>
The <tt>#FCRC</tt> command calculates a 32-bit CRC of the given file. This CRC can be used to verify file integrity. This command should not be used while a file has been opened via <tt>#FOPEN</tt>.
The CRC will be also reported by J-Flash when downloading or saving files via J-Flash.<br>
 
A typical sequence when using the <tt>#FCRC</tt> command does look like as follows:<br>
 
<tt>#FCRC flasher.dat</tt><br>
<tt>#ACK</tt><br>
<tt>#OK:0x75BC855A</tt><br>
 
'''#FDELETE <Filename>'''<br>
The <tt>#FDELETE</tt> command is used to delete a file on Flasher where <tt><Filename></tt> specifies the name of the file.<br>
 
A typical sequence when using the <tt>#FDELETE</tt> command does look like as follows:<br>
 
<tt>#FDELETE flasher.dat</tt><br>
<tt>#ACK</tt><br>
<tt>#OK</tt><br>
 
{{Note|1=If deletion of the file fails for example if the file does not exist, Flasher will respond with the following sequence:<br>
<tt>#ACK</tt><br>
<tt>#ERR255:Failed to delete file</tt>
}}
 
'''#FOPEN <Filename>'''<br>
The <tt>#FOPEN</tt> command is used to open a file on Flasher for further file I/O operations. <tt><Filename></tt> specifies the file on the Flasher which should be opened.
If <tt><Filename></tt> can not be found on Flasher a new one will be created.<br>
 
A typical sequence using the <tt>#FOPEN</tt> command does look like as follows:<br>
 
<tt>#FOPEN flasher.dat</tt><br>
<tt>#ACK</tt><br>
<tt>#OK</tt><br>
 
{{Note|1=Currently only one file can be open at the same time. If <tt>#FOPEN</tt> is send and another file is already open, Flasher will respond with:<br>
<tt>#ACK</tt><br>
<tt>#ERR255:A file has already been opened</tt>
}}
 
'''#FREAD <Offset>,<NumBytes>'''<br>
The <tt>#FREAD</tt> command is used to read data from a file on Flasher. <tt><Offset></tt> specifies the offset in the file, at which data reading is started.
<tt><NumBytes></tt> specifies the number of bytes which should be read.<br>
 
A typical sequence when using the <tt>#FREAD</tt> command does look like as follows:<br>
 
<tt>#FREAD 0,4</tt><br>
<tt>#ACK</tt><br>
<tt>#OK:04:466c6173</tt><br>
 
If the <tt>#FREAD</tt> command succeeds, Flasher will finally respond with a <tt>#OK:<NumBytes>:<nowiki><Data></nowiki></tt> reply message.
For more information about the Flasher reply messages, please refer to [[#Replies from Flasher | Replies from Flasher]].<br>
 
{{Note|1=In order to use the <tt>#FREAD</tt> command. A file has to be opened before, via the <tt>#FOPEN</tt> command. Otherwise Flasher will respond with the following sequence:<br>
<tt>#ACK</tt><br>
<tt>#ERR255:No file opened</tt>}}
 
'''#FSIZE'''<br>
The <tt>#FSIZE</tt> command is used to get the size of the currently opened file on Flasher.<br>
 
A typical sequence when using the <tt>#FSIZE</tt> command does look like as follows:<br>
 
<tt>#FSIZE</tt><br>
<tt>#ACK</tt><br>
<tt>#OK:10      // file on flasher which is currently open, has a size of 16 bytes</tt><br>
 
If the <tt>#FSIZE</tt> command succeeds, Flasher will respond with a <tt>#OK:<Size></tt> reply message.
For more information about the Flasher reply messages, please refer to [[#Replies from Flasher | Replies from Flasher]].<br>
 
{{Note|1=In order to use the <tt>#FREAD</tt> command. A file has to be opened before, via the <tt>#FOPEN</tt> command. Otherwise Flasher will respond with the following sequence:<br>
<tt>#ACK</tt><br>
<tt>#ERR255:No file opened</tt>}}
 
'''#FWRITE <Offset>,<NumBytes>:<nowiki><Data></nowiki>'''<br>
The <tt>#FWRITE</tt> command is used to write to a file on Flasher. <tt><Offset></tt> specifies the offset in the file, at which data writing is started.
<tt><NumBytes></tt> specifies the number of bytes which are send with this command and which are written into the file on Flasher. <tt><NumBytes></tt> is limited to 512 bytes at once.
This means, if you want to write e.g. 1024 bytes, you have to send the <tt>#FWRITE</tt> command twice, using an appropriate offset when sending it the second time.<br>
 
<tt><Offset></tt> and <tt><NumBytes></tt> are expected in hexadecimal format.<br>
 
<tt>#FWRITE 0,200:<nowiki><Data></nowiki></tt><br>
<tt>#FWRITE 200,200:<nowiki><Data></nowiki></tt><br>
 
The data is expected in hexadecimal format (two hexadecimal characters per byte). The following example illustrates the use of <tt>#FWRITE</tt>:
 
<tt>Data to be send: Hello !</tt><br>
<tt>ASCII values: 0x48, 0x65, 0x6C, 0x6C, 0x6F, 0x20, 0x21</tt><br>
 
<tt>#FWRITE 0,7:48656C6C6F2021</tt><br>
 
{{Note|1=In order to use the <tt>#FWRITE</tt> command a file has to be opened via the <tt>#FOPEN</tt> command, first. Otherwise Flasher will respond with the following sequence:<br>
<tt>#ACK</tt><br>
<tt>#ERR255:No file opened</tt><br>}}
 
'''#FLIST'''<br>
The <tt>#LIST</tt> command is used to list all files stored on the Flasher.<br>
 
A typical sequence using the <tt>#FLIST</tt> command does look like as follows:<br>
 
<tt>#FLIST</tt><br>
<tt>#ACK</tt><br>
<tt>FLASHER.INI                                    Size: 60</tt><br>
<tt>SERIAL.TXT                                      Size: 3</tt><br>
<tt>FLASHER.LOG                                    Size: 207</tt><br>
<tt>FOLDER                                        (DIR)</tt><br>
<tt>FOLDER\\TEST1.CFG                              Size: 2048</tt><br>
<tt>FOLDER\\TEST1.DAT                              Size: 12288</tt><br>
<tt>#OK</tt><br>
 
'''#MKDIR <Dirname>'''<br>
The <tt>#MKDIR</tt> command is used to create a directory on Flasher. <tt><Dirname></tt> specifies the name of the new directory. <tt><Dirname></tt> may also specify a path to create a subdirectory.<br>
 
A typical sequence using the <tt>#MKDIR</tt> command does look like as follows:<br>
 
<tt>#MKDIR folder</tt><br>
<tt>#ACK</tt><br>
<tt>#OK</tt><br>
 
{{Note|1=If the directory can not be created because of a bad <tt><Dirname></tt> argument, Flasher will respond with:<br>
<tt>#ACK</tt><br>
<tt>#ERR255:Failed to create directory</tt><br>}}
 
===== Secure Area Commands =====
 
'''#HASSECUREAREA'''<br>
The <tt>#HASSECUREAREA</tt> command checks if the Flasher is configured with a secure area.
 
<tt>#RESULT:YES</tt> indicates the secure area is present, <tt>#RESULT:NO</tt> indicates no secure area is present.
 
'''#SECUREAREA'''<br>
The <tt>#SECUREAREA <action></tt> command allows to create or remove the secure area on the Flasher.
 
* the action <tt>CREATE</tt> creates the secure area.
* the action <tt>REMOVE</tt> will remove the secure area.
 
A typical sequence using the <tt>#SECUREAREA</tt> command does look like as follows:<br>
 
<tt>#SECUREAREA CREATE</tt><br>
<tt>#ACK</tt><br>
<tt>#DONE</tt><br>
 
{{Note|1=When creating or removing the <tt>secure area</tt>, all configuration and data files being stored on the Flasher, are lost.
Please make sure that they are not needed anymore, before adding / removing the security area.}}
 
 
 
===== Replies from Flasher =====
 
The reply messages from Flasher follow the same data format as commands. Any reply message starts with ASCII start delimiter #, ends with simple carriage return (ASCII code 13) and is sent in uppercase.
In contrast to commands, replies can be followed by a descriptive message, which gives more detailed information about the reply. This description is sent in mixed case.
The <tt>#OK</tt> reply, for example, is such a reply. It is followed by a string containing information about the performance time needed for the operations:<br>
 
<tt>#OK (Total 13.993s, Erase 0.483s, Prog 9.183s, Verify 2.514s)</tt><br>
 
The following reply messages from Flasher are defined:<br>
 
'''#ACK'''<br>
Flasher replies with <tt>#ACK</tt> message on reception of any defined command before the command itself is executed.
 
'''#NACK'''<br>
Flasher replies with <tt>#NACK</tt>, if an undefined command was received.
 
'''#OK'''<br>
Flasher replies with <tt>#OK</tt>, if a command other than <tt>#STATUS</tt> or <tt>#RESULT</tt> was executed and ended with no error.
 
'''#OK:<NumBytes>:<nowiki><Data></nowiki>'''<br>
Flasher replies with <tt>#OK:<Len>:<nowiki><Data></nowiki></tt> if a <tt>#FREAD</tt> command was executed. <tt><NumBytes></tt> is the number of bytes which could be read.
This value may differ from the number of requested bytes, for example if more bytes than available, were requested. <tt><NumBytes></tt> and <tt><nowiki><Data></nowiki></tt> are send in hexadecimal format (for <nowiki><Data></nowiki>: two hexadecimal characters per byte).
 
'''#OK:<Size>'''<br>
Flasher replies if <tt>#OK:<Size></tt> if a <tt>#FSIZE</tt> command has been executed. <tt><Size></tt> is the size (in bytes) of the currently opened file. <tt><Size></tt> is send in hexadecimal format.
 
'''#STATUS:'''<br>
The Flasher replies with its current state.<br>
 
The following status messages are currently defined:<br>
 
{| class="seggertable"
|-
! Message                  !! Description
|-
| <tt>#STATUS:READY</tt>        || Flasher is ready to receive a new command.
|-
| <tt>#STATUS:CONNECTING</tt>    || Flasher initializes connection to target CPU.
|-
| <tt>#STATUS:INITIALIZING</tt>  || Flasher performs self check and internal init.
|-
| <tt>#STATUS:UNLOCKING</tt>    || Unlocking flash sectors.
|-
| <tt>#STATUS:ERASING</tt>      || Flasher is erasing the flash of the target device.
|-
| <tt>#STATUS:PROGRAMMING</tt>  || Flasher is programming the flash of the target device.
|-
| <tt>#STATUS:VERIFYING</tt>    || Flasher verifies the programmed flash contents.
|-
|}
 
'''#ERRxxx'''<br>
If any command other than <tt>#STATUS</tt> or <tt>#RESULT</tt> was terminated with an error, Flasher cancels the command and replies with an error message instead of <tt>#OK</tt> message.<br>
 
Some error codes may be followed by colon and an additional error text.<br>
 
For example:<br>
 
<tt>#ERR007:CANCELED.</tt><br>
 
The error code numbers are described in the following table:<br>
 
{| class="seggertable"
|-
! Message      !! Description
|-
| <tt>#ERR007</tt>  || Flasher received <tt>#CANCEL</tt> command and has canceled the current operation.
|-
| <tt>#ERR008</tt>  || Flasher is already busy with execution of previous command.
|-
| <tt>#ERR009</tt>  || Failed to allocate memory.
|-
| <tt>#ERR010</tt>  || Failed to open file.
|-
| <tt>#ERR011</tt>  || Failed to read file.
|-
| <tt>#ERR012</tt>  || Failed to write file.
|-
| <tt>#ERR013</tt>  || Failed to delete file.
|-
| <tt>#ERR255</tt>  || Undefined error occurred. This reply is followed by an error string.
|-
|}
 
== Performance ==
 
The following chapter lists programming performance of common flash devices andmicrocontrollers.
 
=== Performance of MCUs with internal flash memory ===
 
==== Flasher ARM ====
 
The following table lists program and erase performance values of Flasher ARM for different controllers.<br>
 
{| class="seggertable"
|-
! Microcontroller    !! Size [kByte]  !! Erase time [sec]  !! Program time [sec]  !! Verify time [sec]  !! Total time [sec]
|-
| Analog Devices      || 62            || 2.943            || 2.286              || 0.563              || 5.792
|-
| Atmel AT91SAM7S64  || 64            || ---              || 3.488              || 0.438              || 3.926
|-
| Atmel AT91SAM7S256  || 256          || ---              || 7.709              || 1.053              || 8.762
|-
| NXP LPC1768        || 512          || 3.740            || 8.559              || 5.092              || 17.391
|-
| NXP LPC2106        || 120          || 0.448            || 1.204              || 0.634              || 2.286
|-
| NXP LPC2129        || 248          || 0.449            || 2.916              || 1.347              || 4.712
|-
| NXP LPC2138        || 500          || 0.448            || 5.488              || 2.649              || 8.585
|-
| NXP LPC2148        || 500          || 0.448            || 5.632              || 2.721              || 8.801
|-
| NXP LPC2294        || 2048          || 0.808            || 15.976              || 9.669              || 26.453
|-
| NXP LPC2478        || 504          || 0.448            || 5.419              || 2.559              || 8.426
|-
| ST STM32F103ZE      || 512          || 0.028            || 18.763              || 3.939              || 22.730
|-
| ST STR711          || 272          || 0.429            || 5.476              || 4.742              || 10.647
|-
| ST STR912          || 544          || 1.167            || 12.907              || 5.236              || 19.310
|-
| TI TMS470R1B1M      || 1024          || 2.289            || 8.147              || 5.362              || 15.798
|-
|}
 
==== Flasher PRO ====
See Flasher ARM.
 
==== Flasher Compact ====
See Flasher ARM.
 
==== Flasher RX ====
 
The following table lists program and erase performance values of Flasher RX.<br>
 
{| class="seggertable"
|-
! Microcontroller  !! Size [kByte]  !! Erase time [sec]  !! Program time [sec]  !! Verify time [sec]  !! Total time [sec]
|-
| R5F56108        || 2.048        || 9.523            || 11.915              || 3.890              || 25.585
|-
|}
 
==== Flasher PPC ====
 
The following table lists program and erase performance values of Flasher PPC.<br>
 
{| class="seggertable"
|-
! Microcontroller  !! Size [kByte]  !! Erase time [sec]  !! Program time [sec]  !! Verify time [sec]  !! Total time [sec]
|-
| ST SPC560B50    || 576          || 4.747            || 4.159              || 1.929              || 10.917
|-
|}
 
== Hardware ==
 
This chapter gives an overview about Flasher specific hardware details,
such as the pinouts and available adapters.
 
=== Flasher ARM 20-pin JTAG/SWD Connector ===
 
Flasher has a JTAG connector compatible with ARM's Multi-ICE. The JTAG connector is a 20 way Insulation Displacement Connector (IDC) keyed box header (2.54mm male) that mates with IDC sockets mounted on a ribbon cable.
 
==== Pinout JTAG ====
 
[[File:jtag_port_20pin.jpg]] <!-- LG xxxxxx image has been cropped to fit page -->
 
The following table lists the Flasher JTAG pinout.<br>
 
{| class="seggertable"
|-
! PIN  !! SIGNAL            !! TYPE    !! Description
|-
| 1    || VTref            || Input  || This is the target reference voltage. It is used to check if the target has power, to create the logic-level reference for the input comparators and to control the output logic levels to the target. It is normally fed from Vdd of the target board and must not have a series resistor.
|-
| 2    || Vsupply          || NC      || This pin is not connected to Flasher ARM. It is reserved for compatibility with other equipment. Connect to Vdd or leave open in target system.
|-
| 3    || nTRST            || Output  || JTAG Reset. Output from Flasher ARM to the Reset signal of the target JTAG port. Typically connected to nTRST of the target CPU. This pin is normally pulled HIGH on the target to avoid unintentional resets when there is no connection.
|-
| 5    || TDI              || Output  || JTAG data input of target CPU. It is recommended that this pin is pulled to a defined state on the target board. Typically connected to TDI of target CPU.
|-
| 7    || TMS              || Output  || JTAG mode set input of target CPU. This pin should be pulled up on the target. Typically connected to TMS of target CPU.
|-
| 9    || TCK              || Output  || JTAG clock signal to target CPU. It is recommended that this pin is pulled to a defined state of the target board. Typically connected to TCK of target CPU.
|-
| 11  || RTCK              || Input  || Return test clock signal from the target. Some targets must synchronize the JTAG inputs to internal clocks. To assist in meeting this requirement, you can use a returned, and retimed, TCK to dynamically control the TCK rate. Flasher ARM supports adaptive clocking, which waits for TCK changes to be echoed correctly before making further changes. Connect to RTCK if available, otherwise to GND.
|-
| 13  || TDO              || Input  || JTAG data output from target CPU. Typically connected to TDO of target CPU.
|-
| 15  || RESET            || I/O    || Target CPU reset signal. Typically connected to the RESET pin of the target CPU, which is typically called "nRST", "nRESET" or "RESET".
|-
| 17  || DBGRQ            || NC      || This pin is not connected in Flasher ARM. It is reserved for compatibility with other equipment to be used as a debug request signal to the target system. Typically connected to DBGRQ if available, otherwise left open.
|-
| 19  || 5V-Target supply  || Output  || This pin is used to supply power to some eval boards. Typically left open on target hardware.
|-
|}
 
Pins 4, 6, 8, 10, 12, 14, 16, 18, 20 are GND pins connected to GND in Flasher ARM. They should also be connected to GND in the target system.
 
==== Pinout SWD ====
 
The 20-pin connector of Flasher is also compatible to ARM's Serial Wire Debug (SWD) interface.<br>
 
[[File:SWD_Port.jpg]] <!-- LG xxxxxx image has been cropped to fit page -->
 
The following table lists the J-Link / J-Trace SWD pinout.<br>
 
{| class="seggertable"
|-
! PIN !! SIGNAL            !! TYPE    !! Description
|-
|  1  || VTref            || Input  || This is the target reference voltage. It is used to check if the target has power, to create the logic-level reference for the input comparators and to control the output logic levels to the target. It is normally fed from Vdd of the target board and must not have a series resistor.
|-
|  2  || Vsupply          || NC      || This pin is not connected in J-Link. It is reserved for compatibility with other equipment. Connect to Vdd or leave open in target system.
|-
|  3  || Not Used          || NC      || This pin is not used by J-Link. If the device may also be accessed via JTAG, this pin may  be connected to nTRST, otherwise leave open.
|-
|  5  || Not used          || NC      || This pin is not used by J-Link. If the device may also be accessed via JTAG, this pin may  be connected to TDI, otherwise leave open.
|-
|  7  || SWDIO            || I/O    || Single bi-directional data pin.
|-
|  9  || SWCLK            || Output  || Clock signal to target CPU.<br>It is recommended that this pin is pulled to a defined state of the target board. Typically connected to TCK of target CPU.
|-
| 11  || Not used          || NC      || This pin is not used by J-Link. This pin is not used by J-Link when operating in SWD mode. If the device may also be accessed via JTAG, this pin may be connected to RTCK, otherwise leave open.
|-
| 13  || SWO              || Output  || Serial Wire Output trace port. (Optional, not required for SWD communication.)
|-
| 15  || RESET            || I/O    || Target CPU reset signal. Typically connected to the RESET pin of the target CPU, which is typically called "nRST", "nRESET" or "RESET".
|-
| 17  || Not used          || NC      || This pin is not connected in J-Link.
|-
| 19  || 5V-Target supply  || Output  || This pin is used to supply power to some eval boards. Not all J-Links supply power on this pin, only the KS (Kickstart) versions. Typically left open on target hardware.
|-
|}
 
Pins 4, 6, 8, 10, 12, 14, 16, 18, 20 are GND pins connected to GND in J-Link. They should also be connected to GND in the target system.
 
==== Target power supply ====
 
Pin 19 of the connector can be used to supply power to the target hardware. Supply voltage is 5V, max. current is 400mA.
The output current is monitored and protected against overload and short-circuit.<br>
 
Power can be controlled via the J-Link commander. The following commands are available to control power:<br>
 
{| class="seggertable"
|-
! Command        !! Explanation
|-
| <tt>power on</tt>        || Switch target power on
|-
| <tt>power off</tt>      || Switch target power off
|-
| <tt>power on perm</tt>  || Set target power supply default to "on"
|-
| <tt>power off perm</tt>  || Set target power supply default to "off"
|-
|}
 
=== Flasher RX 14-pin connector ===
 
Flasher RX itself has a 20-pin JTAG connector mounted but comes with a 14-pin adapter for Renesas RX devices. This adapter also enables Flasher RX to optionally power the connected target hardware.
On the adapter there is a jumper which allows selection between 3.3V and 5V supply target voltage supply. The target is supplied via the VTref connection when the supply option is jumpered.
 
[[File:jtag_port_14pin.wmf]]
 
The following table lists the Flasher RX 14-pin JTAG pinout.<br>
 
{| class="seggertable"
|-
! Pin  !! Signal  !! Type    !! Description
|-
| 1    || TCK    || Output  || JTAG clock signal to target CPU. It is recommended that this pin is pulled to a defined state on the target board. Typically connected to TCK on target CPU.
|-
| 3    || TRSTn  || Output  || JTAG Reset. Output from Flasher ARM to the Reset signal of the target JTAG port. Typically connected to nTRST of the target CPU. This pin is normally pulled HIGH on the target to avoid unintentional resets when there is no connection.
|-
| 4    || EMLE    || Output  || Pin for the on-chip emulator enable signal. When the on-chip emulator is used, this pin should be driven high. When not used, it should be driven low. Pulled HIGH to VTref via 1k pull-up resistor on 14-pin adapter.
|-
| 5    || TDO    || Input  || JTAG data output from target CPU. Typically connected to TDO on target CPU.
|-
| 6    || ---    || NC      || This pin is not connected to Flasher RX.
|-
| 7    || ---    || NC      || This pin is not connected to Flasher RX.
|-
| 8    || VTref  || Input  || This is the target reference voltage. It is used to check if the target has power, to create the logic-level reference for the input comparators and to control the output logic levels to the target. It is normally fed from Vdd of the target board and must not have a series resistor.
|-
| 9    || TMS    || Output  || JTAG mode set input of target CPU. This pin should be pulled up on the target. Typically connected to TMS on target CPU.
|-
| 10  || ---    || NC      || This pin is not connected to Flasher RX.
|-
| 11  || TDI    || Output  || JTAG data input of target CPU. It is recommended that this pin is pulled to a defined state on the target board. Typically connected to TDI on target CPU.
|-
| 13  || nRES    || I/O    || Target CPU reset signal. Typically connected to the RESET pin of the target CPU, which is typically called "nRST", "nRESET" or "RESET".
|-
|}
 
* All pins marked NC are not connected to Flasher RX. Any signal can be applied here; Flasher RX will simply ignore such a signal.
* Pins 2, 12, 14 are GND pins connected to GND in Flasher RX. They should also be connected to GND in the target system.
 
==== Target power supply ====
 
Pin 8 of the 14-pin connector can be used to supply power to the target hardware. Supply voltage is 3.3V / 5V, max. current is 400mA. The output current is monitored and protected against overload and short-circuit.
Power can be controlled via the J-Link commander. The following commands are available to control power:<br>
 
{| class="seggertable"
|-
! Command        !! Explanation
|-
| <tt>power on</tt>        || Switch target power on
|-
| <tt>power off</tt>      || Switch target power off
|-
| <tt>power on perm</tt>  || Set target power supply default to "on"
|-
| <tt>power off perm</tt>  || Set target power supply default to "off"
|-
|}
 
=== Flasher PPC 14-pin connector ===
 
Flasher PPC itself has a 20-pin JTAG connector mounted but comes with a 14-pin adapter for PowerPC devices.<br>
 
[[File:JTAG_PPC_14pin_adapter.wmf]]
 
The following table lists the Flasher PPC 14-pin JTAG pinout.<br>
 
{| class="seggertable"
|-
! Pin  !! Signal  !! Type    !! Description
|-
| 1    || TDI    || Output  || JTAG data input of target CPU. It is recommended that this pin is pulled to a defined state on the target board. Typically connected to TDI on target CPU.
|-
| 3    || TDO    || Input  || JTAG data output from target CPU. Typically connected to TDO on target CPU.
|-
| 5    || TCK    || Output  || JTAG clock signal to target CPU. It is recommended that this pin is pulled to a defined state on the target board. Typically connected to TCK on target CPU.
|-
| 7    || ---    || NC      || This pin is not connected to Flasher PPC.
|-
| 8    || ---    || NC      || This pin is not connected to Flasher PPC.
|-
| 9    || nRES    || I/O    || Target CPU reset signal. Typically connected to the RESET pin of the target CPU, which is typically called "nRST", "nRESET" or "RESET".
|-
| 10  || TMS    || Output  || JTAG mode set input of target CPU. This pin should be pulled up on the target. Typically connected to TMS on target CPU.
|-
| 11  || VDDE7  || Input  || This is the target reference voltage. It is used to check if the target has power, to create the logic-level reference for the input comparators and to control the output logic levels to the target. It is normally fed from Vdd of the target board and must not have a series resistor.
|-
| 13  || nRDY    || Input  || Nexus ready output. Indicates to the development tools that the data is ready to be read from or written to the Nexus read/write access registers.
|-
| 14  || JCOMP  || Output  || JTAG TAP Controller Enable / JTAG Compliancy (JCOMP). JCOMP is used to enable the TAP controller for communication to the JTAG state machine for boundary scan and for debug access. This pin is set to HIGH by Flasher PPC (in order to enable the JTAG TAP controller on the target device).
|-
|}
 
* All pins marked NC are not connected to Flasher PPC. Any signal can be applied here; Flasher PPC will simply ignore such a signal.
* Pins 2, 12, 6, 12 are GND pins connected to GND in Flasher PPC. They should also be connected to GND in the target system.
 
=== Target board design ===
 
We strongly advise following the recommendations given by the chip manufacturer. These recommendations are normally in line with the recommendations.
Please refer to the the appropriate tables depending on the core:<br>
 
* [[#Pinout JTAG | Pinout JTAG]]
* [[#Pinout SWD | Pinout SWD]]
* [[#Flasher RX 14-pin connector | Flasher RX 14-pin connector]]
* [[#Flasher PPC 14-pin connector | Flasher PPC 14-pin connector]]
 
In case of doubt you should follow the recommendations given by the semiconductor manufacturer.
 
==== Pull-up/pull-down resistors ====
 
Unless otherwise specified by developer's manual, pull-ups/pull-downs are recommended to be between 2.2 kOhms and 47 kOhms.
 
==== RESET, nTRST ====
 
The debug logic is reset independently from the CPU core with nTRST. For the core to operate correctly it is essential that both signals are asserted after power-up.<br>
 
The advantage of having separate connection to the two reset signals is that it allows the developer performing software debug to setup breakpoints, which are retained by the debug logic even when the core is reset.
(For example, at the reset vector address, to allow the code to be single-stepped as soon as it comes out of reset). This can be particularly useful when first trying to bring up a board with a new ASIC.
 
=== Adapters ===
 
==== JTAG Isolator ====
 
The JTAG Isolator can be connected between Flasher  and JTAG adapter, to provide electrical isolation. This is essential when the development tools are not connected to the same ground as the application.
For more information about the JTAG Isolator, please refer to ''J-Link JTAG Isolator User Manual'' (UM08010) which can be downloaded from our website.<br>
 
[[File:JTAG_Isolator_Port.wmf]]
 
===== Pinout =====
 
The following table shows the target-side pinout of the J-Link JTAG Isolator.<br>
 
{| class="seggertable"
|-
! Pin  !! Signal  !! Type    !! Description
|-
| 1    || VCC    || Output  || The target side of the isolator draws power over this pin.
|-
| 2    || VCC    || Output  || The target side of the isolator draws power over this pin.
|-
| 3    || nTRST  || Output  || JTAG Reset. Output from Flasher to the Reset signal of the target JTAG port. Typically connected to nTRST of the target CPU. This pin is normally pulled HIGH on the target to avoid unintentional resets when there is no connection.
|-
| 5    || TDI    || Output  || JTAG data input of target CPU. It is recommended that this pin is pulled to a defined state on the target board. Typically connected to TDI of target CPU.
|-
| 7    || TMS    || Output  || JTAG mode set input of target CPU. This pin should be pulled up on the target. Typically connected to TMS of target CPU.
|-
| 9    || TCK    || Output  || JTAG clock signal to target CPU. It is recommended that this pin is pulled to a defined state of the target board. Typically connected to TCK of target CPU.
|-
| 11  || RTCK    || Input  || Return test clock signal from the target. Some targets must synchronize the JTAG inputs to internal clocks. To assist in meeting this requirement, you can use a returned, and retimed, TCK to dynamically control the TCK rate.
|-
| 13  || TDO    || Input  || JTAG data output from target CPU. Typically connected to TDO of target CPU.
|-
| 15  || RESET  || I/O    || Target CPU reset signal. Typically connected to the RESET pin of the target CPU, which is typically called "nRST", "nRESET" or "RESET".
|-
| 17  || N/C    || N/C    || This pin is not connected on the target side of the isolator.
|-
| 19  || N/C    || N/C    || This pin is not connected on the target side of the isolator.
|-
|}
 
Pins 4, 6, 8, 10, 12, 14, 16, 18, 20 are connected to GND.
 
===== Safety =====
This isolator provides '''basic isolation''' only. '''Do not use with hazardous voltages without further protection measures to avoid risk of electrical shock and fire.'''
 
SEGGER isolators provide a basic isolation to withstand high voltages as mentioned in the resp. technical data section. To preserve integrity of human beings when dealing with potential hazardous voltages it is mandatory to have a second protection measure in place in case the first insulation barrier fails. This is called double or reinforced isolation. How this double isolation can be achieved depends on the use case or application setup. Also check your the local safety related directives valid for your country to make sure all requirements are met.
 
==== J-Link Needle Adapter ====
 
To connect to the J-Link OB via programming interface the ''J-Link Needle Adapter'' is recommended.<br>
 
[[File:J-Link_Needle_Adapter_500x.jpg]]
 
Why to choose the J-Link Needle Adapter:<br>
<ol>
<li>No additional connector required on your PCB</li>
<li>Very small footprint</li>
<li>High reliability spring pins for secure connections</li>
<li>Designed with 3 locating pins, so the adapter can not be connected the wrong way</li>
<li>No external power supply required! The J-Link Needle Adapter comes with the option to power the target hardware via J-Link.</li>
</ol>
These features make the J-Link Needle Adapter the perfect solution for production purposes.<br>
 
The pinout of the J-Link Needle Adapter is based on the pinout of the needle adapter by Tag-Connect.
Please note, that both pinouts are not identical since the J-Link Needle Adapter comes with a 5V-supply pin.<br>
 
As you can see on the image below, the three locating pins ensure, that the adapter cannot be connected to the PCB the wrong way.<br>
 
Moreover, the two "legs" on each side of the connector guarantee a stable and secure contact between pins and the PCB.<br>
 
[[File:J-Link_Needle_Adapter_Connector_pins_360x.jpg]]
[[File:J-Link_Needle_Adapter_Pinout.jpg]]
 
The J-Link Needle Adapter can be connected to J-Link via the ''20-pin 0.1'' JTAG to a 10-pin needle connector''.
 
=== How to determine the hardware version ===
 
To determine the hardware version of your Flasher, the first step should be to look at the label at the bottom side of the unit.
Flasher has the hardware version printed on the back label.<br>
 
If this is not the case with your Flasher, you can use <tt>JLink.exe</tt> to determine your hardware version (if Flasher is in PC-based mode).
As part of the initial message, the hardware version is displayed. For more information about how to ensure that Flasher is in PC-based mode, please refer to [[#PC-based mode | PC-based mode]].<br>
 
[[File:FlasherARM_version.gif]]
== Support and FAQs ==
 
This chapter contains troubleshooting tips together with solutions for common problems which might occur when using Flasher.
There are several steps you can take before contacting support.
Performing these steps can solve many problems and often eliminates the need for assistance.
This chapter also contains a collection of frequently asked questions (FAQs) with answers.
 
=== Contacting support ===
 
Before contacting support, make sure you tried to solve your problem by trying your Flasher with another PC and if possible with another target system to see if it works there.
If the device functions correctly, the USB setup on the original machine or your target hardware is the source of the problem, not Flasher.<br>
 
If you need to contact support, send the following information to<br>
''support@segger.com''<br>
 
* A detailed description of the problem
* Flasher serial number
* Information about your target hardware (processor, board, etc.).
* <tt>FLASHER.CFG</tt>, <tt>FLASHER.DAT</tt>, <tt>FLASHER.LOG</tt>, <tt>SERIAL.TXT</tt> file from Flasher. To get these files, Flasher has to be in file access mode. For more information about how to boot Flasher in file access mode, please refer to [[#file access mode | file access mode]].
 
Flasher is sold directly by SEGGER.
 
=== Frequently Asked Questions ===
 
'''Maximum JTAG speed'''
{|
|-
| '''Q:''' || What is the maximum JTAG speed supported by Flasher?
|-
| '''A:''' || Flasher's maximum supported JTAG speed is 12MHz.
|}
 
'''Maximum download speed'''
{|
|-
| '''Q:''' || What is the maximum download speed?<br>
|-
| '''A:''' || The maximum download speed is currently about 720 Kbytes/second when downloading into RAM. The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.
|}
== Background information ==
 
This chapter provides background information about flash programming in general. It
also provides information about how to replace the firmware of Flasher manually.
 
=== Flash programming ===
 
Flasher comes with a DLL, which allows - amongst other functionalities - reading and writing RAM, CPU registers, starting and stopping the CPU, and setting breakpoints.
 
==== How does flash programming via Flasher 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 endianess of the target system and organization of the flash memory (for example 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 is supplied by  downloading it to RAM.
 
==== Data download to RAM ====
 
The data (or part of it) is downloaded to another part of the RAM of the target system.
The Instruction pointer (PC) 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.
 
==== Available options for flash programming ====
 
In general, there are two possibilities in order to use Flasher for flash programming:<br>
 
* Using Flasher stand-alone to program the target flash memory (stand-alone mode)
* Using Flasher in combination with J-Flash to program the target flash memory (Flasher in "PC-based mode")
 
===== Using Flasher in stand-alone mode =====
 
In order to use the Flasher in stand-alone mode, it has to be configured first.
For more information about how to setup Flasher for using in "stand-alone mode", please refer to [[#Setting up Flasher for stand-alone mode | Setting up Flasher for stand-alone mode]].
 
===== J-Flash - Complete flash programming solution =====
 
J-Flash is a stand-alone Windows application, which can read / write data files and program the flash in almost any ARM system.
For more information about J-Flash please refer to the ''J-Flash User Guide'', which can be downloaded from our website ''http://www.segger.com''.
 
==== How does the universal flash programming work? ====
 
In universal flash programming mode, the flasher typically communicates with a boot loader running on the device using a vendor specific protocol, rather than using the debug interface.<br>
 
Universal flash programming is available only for stand-alone mode.
== Glossary ==
 
This chapter describes important terms used throughout this manual.
 
'''Big-endian'''<br>
Memory organization where the least significant byte of a word is at a higher address than the most significant byte. See Little-endian.
 
'''Cache cleaning'''<br>
The process of writing dirty data in a cache to main memory.
 
'''Coprocessor'''<br>
An additional processor that is used for certain operations, for example, for floating-point math calculations, signal processing, or memory management.
 
'''Dirty data'''<br>
When referring to a processor data cache, data that has been written to the cache but has not been written to main memory is referred to as dirty data.
Only write-back caches can have dirty data because a write-through cache writes data to the cache and to main memory simultaneously. See also cache cleaning.
 
'''Halfword'''<br>
A 16-bit unit of information.
 
'''Host'''<br>
A computer which provides data and other services to another computer. Especially, a computer providing debugging services to a target being debugged.
 
'''ICache'''<br>
Instruction cache.
 
'''ID'''<br>
Identifier.
 
'''IEEE 1149.1'''<br>
The IEEE Standard which defines TAP. Commonly (but incorrectly) referred to as JTAG.
 
'''Image'''<br>
An executable file that has been loaded onto a processor for execution.
 
'''Instruction Register'''<br>
When referring to a TAP controller, a register that controls the operation of the TAP.
 
'''IR'''<br>
See Instruction Register.
 
'''Joint Test Action Group (JTAG)'''<br>
The name of the standards group which created the IEEE 1149.1 specification.
 
'''Little-endian'''<br>
Memory organization where the least significant byte of a word is at a lower address than the most significant byte. See also Big-endian.
 
'''Memory coherency'''<br>
A memory is coherent if the value read by a data read or instruction fetch is the value that was most recently written to that location.
Obtaining memory coherency is  difficult when there are multiple possible physical locations that are involved, such as a system that has main memory, a write buffer, and a cache.
 
'''Memory management unit (MMU)'''<br>
Hardware that controls caches and access permissions to blocks of memory, and translates virtual to physical addresses.
 
'''Memory Protection Unit (MPU)'''<br>
Hardware that controls access permissions to blocks of memory. Unlike an MMU, a MPU does not translate virtual addresses to physical addresses.
 
'''RESET'''<br>
Abbreviation of System Reset. The electronic signal which causes the target system other than the TAP controller to be reset.
This signal is also known as "nSRST" "nSYSRST", "nRST", or "nRESET" in some other manuals. See also nTRST.
 
'''nTRST'''<br>
Abbreviation of TAP Reset. The electronic signal that causes the target system TAP controller to be reset. This signal is known as nICERST in some other manuals. See also nSRST.
 
'''Open collector'''<br>
A signal that may be actively driven LOW by one or more drivers, and is otherwise passively pulled HIGH. Also known as a "wired AND" signal.
 
'''Processor Core'''<br>
The part of a microprocessor that reads instructions from memory and executes them, including the instruction fetch unit, arithmetic and logic unit, and the register bank.
It excludes optional coprocessors, caches, and the memory management unit.
 
'''Remapping'''<br>
Changing the address of physical memory or devices after the application has started executing. This is typically done to make RAM replace ROM once the initialization has been done.
 
'''RTOS'''<br>
Real Time Operating System.
 
'''TAP Controller'''<br>
Logic on a device which allows access to some or all of that device for test purposes. The circuit functionality is defined in IEEE1149.1.
 
'''Target'''<br>
The actual processor (real silicon or simulated) on which the application program is running.
 
'''TCK'''<br>
The electronic clock signal which times data on the TAP data lines TMS, TDI, and TDO.
 
'''TDI'''<br>
The electronic signal input to a TAP controller from the data source (upstream). Usually, this is seen connecting the J-Link Interface Unit to the first TAP controller.
 
'''TDO'''<br>
The electronic signal output from a TAP controller to the data sink (downstream). Usually, this is seen connecting the last TAP controller to the J-Link Interface Unit.
 
'''Test Access Port (TAP)'''<br>
The port used to access a device's TAP Controller. Comprises TCK, TMS, TDI, TDO, and nTRST (optional).
 
'''Transistor-transistor logic (TTL)'''<br>
A type of logic design in which two bipolar transistors drive the logic output to one or zero. LSI and VLSI logic often used TTL with HIGH logic level approaching +5V and LOW approaching 0V.
 
'''Word'''<br>
A 32-bit unit of information. Contents are taken as being an unsigned integer unless otherwise stated.
== Literature and references ==
This chapter lists documents, which we think may be useful to gain a deeper understanding of technical details.

Latest revision as of 11:21, 1 September 2025