https://wiki.segger.com/api.php?action=feedcontributions&user=JanB&feedformat=atomSEGGER Wiki - User contributions [en]2024-03-29T11:14:54ZUser contributionsMediaWiki 1.31.16https://wiki.segger.com/index.php?title=UM08022_Flasher&diff=17596UM08022 Flasher2024-02-02T07:52:47Z<p>JanB: /* Target interface pin states in idle */</p>
<hr />
<div><!---<br />
General TBD:<br />
- LG: Right now - EVERYTHING<br />
===========================================<br />
--------------------[more specific, but on multiple locations]<br />
- check if all emphasis (bold, tt, blue, etc ) have made it into the new version<br />
- Add Information -> Additional information<br />
- use of the term free-of-charge utility/tool etc<br />
- check compliant to DocStandards_Rules.txt<br />
- Remove everything regarding to Kickstarter versions? eventually create a chapter Legacy -> Kickstarter version were available for hw version 5-x (200x-200x)...[..]<br />
- 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.<br />
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.<br />
- if week keep the IDE specific stuff in the manual, add Ozone, ES and J-Link Commander were no mentioned.<br />
- IDE specifics move into wiki confirmed by Alex<br />
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)<br />
- check all sections regarding licensing<br />
- Check compliance of J-Link emDocs with typographic conventions described in AboutThisDocument.emDoc. What should be altered? e.g. references<br />
- use uref at all (not blue)?<br />
- search and decide where to use \ref (ref with page number)<br />
- why is \ref (no single "option" \uref is more basic as \ref.....)<br />
- in text, use either \ref or \iref instead of \uref<br />
- in old manual, \H3 started on a new page (not per default, but set manually for api tables etc...)<br />
- move used old images and source files (visio etc) via svn (currently copied)<br />
--------------------[grammar / vocabulary discussion]<br />
- Product names<br />
-- Use of SEGGEPROBE in this document?<br />
- use license over licence<br />
- commandline or command-line?<br />
- toolchain or tool chain?<br />
- crossreference/cross-reference/cross reference?<br />
- overcurrent?<br />
- double words?<br />
- frontend?<br />
- Unit: Kbytes, KBytes, V, mV.... 9V or 9 V? Create rule in Vocabulary<br />
- baudrate or baud rate?<br />
- stackpointer or stack pointer<br />
- check where we should replace abbreviations with the long form (e.h. "milliseconds" instead of "ms")<br />
- config or configuration<br />
- filepointer or file pointer?<br />
--------------------[J-Link dep. specific]<br />
- J-Link command strings or J-Link Command strings or J-Link Command Strings<br />
- J-Link settings file or...<br />
- J-Link control panel or ......<br />
- J-Link script files or...<br />
---><br />
Flasher is a programming tool for microcontrollers with on-chip or external flash memory.<br />
Flasher is designed for programming flash targets with the J-Flash software or stand-alone.<br />
In addition to that Flasher can also be used as a regular J-Link. For more information about J-Link in general,<br />
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].<br />
<br />
<div class="toclimit-2"><br />
__TOC__<br />
</div><br />
<br />
== Flasher Software and Documentation Pack ==<br />
The Flasher Software and Documentation Pack, available for download on the [https://www.segger.com/downloads/flasher#FlasherSoftwareAndDocumentationPack SEGGER homepage], includes applications to be used with Flasher and in some cases with J-Link and J-Trace.<br><br />
It also comes with USB-drivers for J-Link, J-Trace and Flasher.<br />
<br />
=== Software overview ===<br />
{| class="wikitable"<br />
|-<br />
! Software !! Description<br />
|-<br />
| [[J-Link Configurator|Flasher Configurator]] || GUI-based configuration tool for Flasher. Allows configuration of USB identification as well as TCP/IP identification of Flashers.<br />
|-<br />
| [[FlasherControl|Flasher Control]] || Command-line tool to connect to the Flasher's command-line interface via USB.<br />
|-<br />
| [[J-Flash]] || Flash programming application.<br />
|-<br />
| [[J-Flash SPI]] || (Q)SPI flash programming application.<br />
|-<br />
| [[J-Link Commander]] || Command-line tool with basic functionality for target analysis.<br />
|-<br />
| [[J-Link Registration]] || SEGGER J-Link Registration utility to register your SEGGER product such as a J-Link, J-Trace or Flasher.<br />
|-<br />
| [[JTAGLoad]] || Command line tool that opens an svf file and sends the data in it via J-Link / J-Trace or Flasher to the target.<br />
|-<br />
| [https://www.segger.com/downloads/flasher/UM08037.pdf U-Flash] || Tool for creating standalone Flasher projects.<br />
|}<br />
<br />
== Flasher overview ==<br />
Flasher connects to a PC using the USB/Ethernet/RS232 interface (what host interfaces are available depends on the Flasher model),<br />
running Windows, Linux & MacOS. In stand-alone mode,<br />
Flasher can be driven by the start/stop button, or via the RS232 interface (handshake control or ASCII interface).<br />
Flasher always has a 20-pin connector, which target interfaces are supported depends on the Flasher model:<br />
* Flasher ARM: JTAG and SWD are supported.<br />
* Flasher RX: JTAG is supported. Flasher comes with additional 14-pin RX adapter<br />
* Flasher PPC: JTAG is supported. Flasher comes with additional 14-pin PPC adapter.<br />
* Flasher PRO: JTAG and SWD are supported.<br />
* Flasher Compact: JTAG and SWD are supported.<br />
<br />
=== Features of Flasher ARM/PPC/RX/PRO ===<br />
* Three boot modes: PC-based mode, stand-alone mode, file access mode<br />
* Stand-alone JTAG/SWD programmer (Once set up, Flasher can be controlled without the use of PC program)<br />
* No power supply required, powered through USB<br />
* Supports internal and external flash devices<br />
* 128 MB memory for storage of target program<br />
* Can be used as J-Link (emulator) with a download speed of up to 720 Kbytes/second<br />
* Data files can updated via USB/Ethernet (using the J-Flash software), via FTP, via RS232 or via the file access mode of Flasher<br />
<br />
{| class="seggertable"<br />
|-<br />
! Flasher model !! Supported cores !! Supported target interfaces !! Flash programming speed (depending on target hardware)<br />
|-<br />
| Flasher ARM || ARM7/ARM9/Cortex-M || JTAG, SWD || between 170 and 300 Kbytes/second<br />
|-<br />
| Flasher RX || Renesas RX610, RX621, RX62N, RX62T || JTAG || between 30-300 Kbytes/second<br />
|-<br />
| Flasher PPC || Power PC e200z0 || JTAG || up to 138 Kbytes/second<br />
|-<br />
| Flasher PRO || ARM7/ARM9/Cortex-M Renesas RX610, RX621, RX62N, RX62T Power PC e200z0 || JTAG, SWD || between 30-300 Kbytes/ second<br />
|-<br />
|}<br />
<br />
==== Features of Flasher Compact ====<br />
<br />
* Three boot modes: PC-based mode, stand-alone mode, file access mode<br />
* Stand-alone JTAG/SWD programmer (Once set up, Flasher can be controlled without the use of PC program)<br />
* No power supply required, powered through USB<br />
* Supports internal and external flash devices<br />
* 128 MB memory for storage of target program<br />
* Can be used as J-Link (emulator) with a download speed of up to 720 Kbytes/second<br />
* Data files can updated via USB/Ethernet (using the J-Flash software) or via the file access mode of Flasher<br />
<br />
{| class="seggertable"<br />
|-<br />
! Flasher model !! Supported cores !! Supported target interfaces !! Flash programming speed (depending on target hardware)<br />
|-<br />
| Flasher ARM || ARM7/ARM9/Cortex-M || JTAG, SWD || between 170 and 300 Kbytes/second<br />
|-<br />
| Flasher RX || Renesas RX610, RX621, RX62N, RX62T || JTAG || between 30-300 Kbytes/second<br />
|-<br />
| Flasher PPC || Power PC e200z0 || JTAG || up to 138 Kbytes/second<br />
|-<br />
| Flasher Compact || ARM7/ARM9/Cortex-M Renesas RX610, RX621, RX62N, RX62T Power PC e200z0 || JTAG, SWD || between 30-300 Kbytes/ second<br />
|-<br />
|}<br />
<br />
==== Features of Flasher Portable/Flasher Portable PLUS ====<br />
<br />
* Stand-alone in-circuit-programmer (Once set up, Flasher can be controlled without the use of a PC program)<br />
* Powered by an internal rechargeable battery (standard batteries for Flasher Portable), no Laptop or external power supply required.<br />
* Multiple firmware images can be stored on Flasher<br />
* 128 MB memory for storage of target program<br />
* Flasher Portable PLUS supports a simple selection of up to 99 firmware images via buttons (since V7.90)<br />
* Supported CPUs: ARM Cortex, Legacy ARM7/9, Renesas RX, Freescale PowerPC<br />
* Supports internal and external flash<br />
* Free software updates<ref name="legitimateOwned" />, 1 year of support<br />
* Data files can be updated via the file access mode functionality or via J-Flash<br />
* Programming speed between 30-300 Kbytes/second (actual speed depends on target hardware)<br />
{{Note|1=Ethernet and RS232 as host interface are not available for Flasher Portable}}<br />
<references><br />
<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.<br />
As a legitimate owner of a SEGGER Flasher, you can always download the latest software free of charge.<br />
Though not planned and not likely, we reserve the right to change this policy.<br />
Note that older models may not be supported by newer versions of the software.<br />
Typically, we support older models with new software at least 3 years after end of life.<br />
</ref><br />
</references><br />
<br />
{| class="seggertable"<br />
|-<br />
! Supported cores !! Supported target interfaces !! Flash programming speed (depending on target hardware)<br />
|-<br />
| ARM7/ARM9/Cortex-M || JTAG, SWD || between 30-300 Kbytes/second<br />
|-<br />
| Renesas RX610, RX621, RX62N, RX62T || JTAG || between 170 and 300 Kbytes/second<br />
|-<br />
| Power PC e200z0 || JTAG || up to 138 Kbytes/second<br />
|-<br />
|}<br />
<br />
==== Working environment ====<br />
<br />
'''General'''<br><br />
The Flasher can operate from a PC with an appropriate software like J-Flash or in stand-alone mode.<br />
<br />
'''Host System'''<br><br />
IBM PC/AT or compatible CPU: 486 (or better) with at least 128MB of RAM,<br />
running Windows, Linux & MacOS. It needs to have a USB, Ethernet or RS232 interface available for communication with Flasher.<br />
<br />
'''Power supply'''<br><br />
Flasher Portable: 3x standard AAA batteries or 5V DC, min. 100 mA via USB connector.<br />
<br />
Flasher Portable PLUS: internal rechargeable 680mAh Li-Ion battery, min. 100 mA via USB connector.<br />
<br />
Other Flashers: 5V DC, min. 100 mA via USB connector.<br />
<br />
'''Installing Flasher PC-software'''<br><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><br />
More information about the package you can find in the similar [[J-Link Software and Documentation Pack]].<br><br />
The package includes U-Flash and J-Flash, the main tools for flashing targets:<br />
* J-Flash : J-Flash User Guide ([https://wiki.segger.com/UM08003_JFlash UM08003_JFlash.pdf]).<br />
* U-Flash : U-Flash User Guide ([https://www.segger.com/downloads/flasher/UM08037.pdf UM08037_UniversalFlashLoader.pdf]).<br />
<br />
=== Specifications ===<br />
<br />
<br />
==== Specifications for Flasher ARM ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Windows, Linux & MacOS<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C<br />
|-<br />
| Storage Temperature || -20 °C ... +60 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
!colspan="100%"| Mechanical<br />
|-<br />
| Size (without cables) || 121mm x 66mm x 30mm<br />
|-<br />
| Weight (without cables) || 119g<br />
|-<br />
!colspan="100%"| Available interfaces<br />
|-<br />
| USB Host interface || USB 2.0, full speed<br />
|-<br />
| Ethernet Host interface || 10/100 MBit<br />
|-<br />
| RS232 Host interface || RS232 9-pin<br />
|-<br />
| Target interface || JTAG 20-pin (14-pin adapter available)<br />
|-<br />
!colspan="100%"| JTAG Interface, Electrical<br />
|-<br />
| Power Supply || USB powered, 100mA for Flasher ARM. 500 mA if target is powered by Flasher ARM<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| Target supply voltage || Supply voltage is 5V, max.<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6 <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Max. JTAG speed || up to 12MHz<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
===== Flasher ARM download speed =====<br />
<br />
The following table lists the Flasher ARM performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! ARM7 memory download<br />
|-<br />
| Flasher ARM || 720 Kbytes/s (12MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
<br />
==== Specifications for Flasher RX ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Windows, Linux & MacOS<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C<br />
|-<br />
| Storage Temperature || -20 °C ... +60 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
!colspan="100%"| Mechanical<br />
|-<br />
| Size (without cables) || 121mm x 66mm x 30mm<br />
|-<br />
| Weight (without cables) || 119g<br />
|-<br />
!colspan="100%"| Available interfaces<br />
|-<br />
| USB Host interface || USB 2.0, full speed<br />
|-<br />
| Ethernet Host interface || 10/100 MBit<br />
|-<br />
| RS232 Host interface || RS232 9-pin<br />
|-<br />
| Target interface || JTAG 20-pin (shipped with 14-pin adapter for Renesas RX)<br />
|-<br />
!colspan="100%"| JTAG Interface, Electrical<br />
|-<br />
| Power Supply || USB powered, 100mA for Flasher RX. 500 mA if target is powered by Flasher RX<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| 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)<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6 <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Max. JTAG speed || up to 12MHz<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
===== Flasher RX download speed =====<br />
<br />
The following table lists the Flasher RX performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! Flasher RX600 series memory download<br />
|-<br />
| Flasher RX || 720 Kbytes/s (12MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
<br />
==== Specifications for Flasher PPC ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Windows, Linux & MacOS<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C<br />
|-<br />
| Storage Temperature || -20 °C ... +60 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
!colspan="100%"| Mechanical<br />
|-<br />
| Size (without cables) || 121mm x 66mm x 30mm<br />
|-<br />
| Weight (without cables) || 119g<br />
|-<br />
!colspan="100%"| Available interfaces<br />
|-<br />
| USB Host interface || USB 2.0, full speed<br />
|-<br />
| Ethernet Host interface || 10/100 MBit<br />
|-<br />
| RS232 Host interface || RS232 9-pin<br />
|-<br />
| Target interface || JTAG 20-pin (shipped with 14-pin adapter for Renesas PPC)<br />
|-<br />
!colspan="100%"| JTAG Interface, Electrical<br />
|-<br />
| Power Supply || USB powered, 100mA for Flasher PPC. 500 mA if target is powered by Flasher PPC<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| Target supply voltage || Supply voltage is 5V, max.<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6 <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Max. JTAG speed || up to 12MHz<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
===== Flasher RX download speed =====<br />
<br />
The following table lists the Flasher PPC performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! Memory download<br />
|-<br />
| Flasher PPC || 530 Kbytes/s (8 MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
<br />
==== Specifications for Flasher PRO ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Windows, Linux & MacOS<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C<br />
|-<br />
| Storage Temperature || -20 °C ... +60 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
!colspan="100%"| Mechanical<br />
|-<br />
| Size (without cables) || 121mm x 66mm x 30mm<br />
|-<br />
| Weight (without cables) || 119g<br />
|-<br />
!colspan="100%"| Available interfaces<br />
|-<br />
| USB Host interface || USB 2.0, full speed<br />
|-<br />
| Ethernet Host interface || 10/100 MBit<br />
|-<br />
| RS232 Host interface || RS232 9-pin<br />
|-<br />
| Target interface || JTAG 20-pin (14-pin adapter available)<br />
|-<br />
!colspan="100%"| JTAG Interface, Electrical<br />
|-<br />
| Power Supply || USB powered, 100mA for Flasher PRO. 500 mA if target is powered by Flasher PRO<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| Target supply voltage || Supply voltage is 5V, max.<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6 <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Max. JTAG speed || up to 12MHz<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
<br />
===== Supported CPU cores =====<br />
<br />
The Flasher PRO supports the following CPU cores:<br />
<br />
'''ARM Cortex'''<br><br />
* Cortex-A5<br />
* Cortex-A8<br />
* Cortex-A9<br />
* Cortex-R4<br />
* Cortex-R5<br />
* Cortex-M0<br />
* Cortex-M0+<br />
* Cortex-M1<br />
* Cortex-M3<br />
* Cortex-M4<br />
<br />
'''ARM (legacy cores)'''<br><br />
* ARM720T<br />
* ARM7TDMI<br />
* ARM7TDMI-S<br />
* ARM920T<br />
* ARM922T<br />
* ARM926EJ-S<br />
* ARM946E-S<br />
* ARM966E-S<br />
* ARM1136JF-S<br />
* ARM1136J-S<br />
* ARM1156T2-S<br />
* ARM1156T2F-S<br />
* ARM1176JZ-S<br />
* ARM1176JZF<br />
* ARM1176JZF-S<br />
<br />
'''Renesas RX'''<br><br />
* RX111<br />
* RX210<br />
* RX220<br />
* RX21A<br />
* RX610<br />
* RX621<br />
* RX62G<br />
* RX62N<br />
* RX62T<br />
* RX630<br />
* RX631<br />
* RX63N<br />
* RX63T<br />
<br />
'''Freescale Power PC'''<br><br />
* e200z0<br />
<br />
===== Supported Target interfaces =====<br />
<br />
The Flasher PRO supports the following target interfaces:<br />
<br />
* JTAG<br />
* SWD<br />
* FINE<br />
* SPD<br />
<br />
===== Flasher PRO download speed =====<br />
<br />
The following table lists the Flasher PRO performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! ARM7 memory download<br />
|-<br />
| Flasher PRO || 720 Kbytes/s (12MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
<br />
==== Specifications for Flasher Compact ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Microsoft Windows (x86/x64)<br>Linux (x86/x64/Arm)<br>macOS (x86/Apple M1)<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C<br />
|-<br />
| Storage Temperature || -20 °C ... +65 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
| Size (without cables) || 70mm x 45mm x 18mm<br />
|-<br />
| Weight (without cables) || 40g<br />
|-<br />
| USB Host interface || USB 2.0 (Hi-Speed); Micro USB<br />
|-<br />
| Target interface || JTAG 20-pin (14-pin adapter available)<br />
|-<br />
| Power Supply || USB powered, 130mA (idle)<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| Target supply voltage || Supply voltage is 5V, max.<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
| Supported target interfaces || SPI, QSPI, 8051 C2, cJTAG, FINE, ICSP, IIC, ISP, JTAG, PDI, SPD, SWD, SWIM, UART, UPDI<br />
|-<br />
| Serial transfer rate between Flasher Compact and target || Up to 50 MHz (Depending on target interface)<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6 <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
===== Supported CPU cores =====<br />
<br />
The Flasher Compact supports the following CPU cores:<br />
'''ARM Cortex'''<br><br />
* Cortex-A5<br />
* Cortex-A8<br />
* Cortex-A9<br />
* Cortex-R4<br />
* Cortex-R5<br />
* Cortex-M0<br />
* Cortex-M0+<br />
* Cortex-M1<br />
* Cortex-M3<br />
* Cortex-M4<br />
<br />
'''ARM (legacy cores)'''<br><br />
* ARM720T<br />
* ARM7TDMI<br />
* ARM7TDMI-S<br />
* ARM920T<br />
* ARM922T<br />
* ARM926EJ-S<br />
* ARM946E-S<br />
* ARM966E-S<br />
* ARM1136JF-S<br />
* ARM1136J-S<br />
* ARM1156T2-S<br />
* ARM1156T2F-S<br />
* ARM1176JZ-S<br />
* ARM1176JZF<br />
* ARM1176JZF-S<br />
<br />
'''Renesas RX'''<br><br />
* RX111<br />
* RX210<br />
* RX220<br />
* RX21A<br />
* RX610<br />
* RX621<br />
* RX62G<br />
* RX62N<br />
* RX62T<br />
* RX630<br />
* RX631<br />
* RX63N<br />
* RX63T<br />
<br />
'''Freescale Power PC'''<br><br />
* e200z0<br />
<br />
===== Flasher Compact download speed =====<br />
<br />
The following table lists the Flasher Compact performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! ARM7 memory download<br />
|-<br />
| Flasher Compact || 720 Kbytes/s (12MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
<br />
==== Specifications for Flasher Portable PLUS ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Windows, Linux & MacOS<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C (normal operation)<br>+5 °C ... +45 °C (battery charging)<br />
|-<br />
| Storage Temperature || -20 °C ... +45 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
| 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)<br />
|-<br />
| Charging via USB || 70 minutes (at 1A charging current)<br />
|-<br />
!colspan="100%"| Mechanical<br />
|-<br />
| Size (without cables) || 126mm x 70mm x 28mm<br />
|-<br />
| Weight (without cables) || 140g<br />
|-<br />
!colspan="100%"| Available interfaces<br />
|-<br />
| USB Host interface || USB 2.0<br />
|-<br />
| Target interface || Standard 20-pin 0.1" connector (Adapters available).<br />
|-<br />
!colspan="100%"| Target Interface, Electrical<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| Target supply voltage || Supply voltage is 4.5V, max. (depends on the current battery voltage).<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6 <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Max. JTAG speed || up to 12MHz<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
===== Supported CPU cores =====<br />
<br />
The Flasher Portable PLUS supports the following CPU cores:<br />
<br />
'''ARM Cortex'''<br><br />
* Cortex-A5<br />
* Cortex-A8<br />
* Cortex-A9<br />
* Cortex-R4<br />
* Cortex-R5<br />
* Cortex-M0<br />
* Cortex-M0+<br />
* Cortex-M1<br />
* Cortex-M3<br />
* Cortex-M4<br />
<br />
'''ARM (legacy cores)'''<br><br />
* ARM720T<br />
* ARM7TDMI<br />
* ARM7TDMI-S<br />
* ARM920T<br />
* ARM922T<br />
* ARM926EJ-S<br />
* ARM946E-S<br />
* ARM966E-S<br />
* ARM1136JF-S<br />
* ARM1136J-S<br />
* ARM1156T2-S<br />
* ARM1156T2F-S<br />
* ARM1176JZ-S<br />
* ARM1176JZF<br />
* ARM1176JZF-S<br />
<br />
'''Renesas RX'''<br><br />
* RX111<br />
* RX210<br />
* RX220<br />
* RX21A<br />
* RX610<br />
* RX621<br />
* RX62G<br />
* RX62N<br />
* RX62T<br />
* RX630<br />
* RX631<br />
* RX63N<br />
* RX63T<br />
<br />
'''Freescale Power PC'''<br><br />
* e200z0<br />
<br />
===== Supported Target interfaces =====<br />
<br />
The Flasher Portable PLUS supports the following target interfaces:<br />
* JTAG<br />
* SWD<br />
* FINE<br />
* SPD<br />
<br />
===== Flasher Portable PLUS download speed =====<br />
<br />
The following table lists the Flasher Portable PLUS performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! ARM7 memory download<br />
|-<br />
| Flasher PRO || 720 Kbytes/s (12MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
<br />
==== Specifications for Flasher Portable ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Windows, Linux & MacOS<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C<br />
|-<br />
| Storage Temperature || -20 °C ... +65 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
| Power Supply || a) USB powered, 100mA for Flasher Portable. 500 mA if target is powered by Flasher Portable<br>b) Batteries powered (3xAAA)<br />
|-<br />
!colspan="100%"| Mechanical<br />
|-<br />
| Size (without cables) || 130mm x 65mm x 25mm<br />
|-<br />
| Weight (without cables) || 120g<br />
|-<br />
!colspan="100%"| Available interfaces<br />
|-<br />
| USB Host interface || USB 2.0<br />
|-<br />
| Target interface || Standard 20-pin 0.1" connector (Adapters available).<br />
|-<br />
!colspan="100%"| Target Interface, Electrical<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| Target supply voltage || Supply voltage is 4.5V, max. (depends on the current battery voltage).<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6V <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Max. JTAG speed || up to 12MHz<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
===== Supported CPU cores =====<br />
<br />
The Flasher Portable supports the following CPU cores:<br />
<br />
'''ARM Cortex'''<br><br />
* Cortex-A5<br />
* Cortex-A8<br />
* Cortex-A9<br />
* Cortex-R4<br />
* Cortex-R5<br />
* Cortex-M0<br />
* Cortex-M0+<br />
* Cortex-M1<br />
* Cortex-M3<br />
* Cortex-M4<br />
<br />
'''ARM (legacy cores)'''<br><br />
* ARM720T<br />
* ARM7TDMI<br />
* ARM7TDMI-S<br />
* ARM920T<br />
* ARM922T<br />
* ARM926EJ-S<br />
* ARM946E-S<br />
* ARM966E-S<br />
* ARM1136JF-S<br />
* ARM1136J-S<br />
* ARM1156T2-S<br />
* ARM1156T2F-S<br />
* ARM1176JZ-S<br />
* ARM1176JZF<br />
* ARM1176JZF-S<br />
<br />
'''Renesas RX'''<br><br />
* RX111<br />
* RX210<br />
* RX220<br />
* RX21A<br />
* RX610<br />
* RX621<br />
* RX62G<br />
* RX62N<br />
* RX62T<br />
* RX630<br />
* RX631<br />
* RX63N<br />
* RX63T<br />
<br />
'''Freescale Power PC'''<br><br />
* e200z0<br />
<br />
===== Supported Target interfaces =====<br />
<br />
The Flasher Portable supports the following target interfaces:<br />
<br />
* JTAG<br />
* SWD<br />
* FINE<br />
* SPD<br />
<br />
===== Flasher Portable download speed =====<br />
<br />
The following table lists the Flasher Portable performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! ARM7 memory download<br />
|-<br />
| Flasher PRO || 720 Kbytes/s (12MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
== Working with Flasher ==<br />
<br />
This chapter describes functionality and how to use Flasher.<br />
<br />
=== Flasher Portable PLUS ===<br />
<br />
The Flasher Portable PLUS is a portable version of SEGGERs Flasher family,<br />
which has been designed to fill the need of an extremely portable, production grade,<br />
Flash programmer used for in-field firmware updates. No need to be tethered to an outlet,<br />
it is powered by an integrated Li-Ion cell (680mAh).<br />
The Flasher Portable PLUS programs flash targets in stand-alone mode or via J-Flash PC software.<br><br />
<br />
Furthermore the Flasher Portable PLUS allows the user to select between 99 data images to be programmed (since V7.90).<br />
The images can be easily selected by using the SEL button on the front of the housing.<br />
For more information about support for multiple images, please refer to [[#Multiple File Support | Multiple File Support]].<br><br />
For setup and configuration purposes, the Flasher Portable PLUS connects to a PC via USB interface,<br />
running Windows, Linux & MacOS and has a built-in standard 20-pin J-Link target connector.<br><br />
<br />
{{Note|1=Ethernet and RS232 as host interface are not available for the Flasher Portable PLUS.}}<br />
<br />
==== Housing & Buttons ====<br />
<br />
The Flasher Portable PLUS comes with a display, which is for example used to represent the status of an ongoing flash progress.<br />
Furthermore, there are three buttons which allow the user to control Flasher Portable PLUS.<br />
For a detailed description of the functions, take a look at the table below:<br />
<br />
<!-- LG xxxxxx edit image with labels for buttons? (Is this actually necessary? Buttons are basically self-explanatory...) --><br />
[[File:Flasher_Portable_PLUS.png | 500px]]<br />
<br />
{| class="seggertable"<br />
|-<br />
! Button !! Description<br />
|-<br />
| Program || Start programming process with the currently selected image.<br />
|-<br />
| Select image || Select the image to be programmed next time the Program button is pressed.<br />
|-<br />
| 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.<br />
|-<br />
|}<br />
<br />
==== Configuration ====<br />
<br />
The Flasher Portable PLUS has some configuration options the other Flashers do not have.<br />
{| class="seggertable"<br />
|-<br />
! Option !! Description !! Value range !! Default value<br />
|-<br />
| AutoPowerOffOnIdle || Specifies the time interval after which the Flasher Portable will turn off without any user action || 1 to 3600 || 60<br />
|-<br />
| ShowDatCRCAfterProgramming || Activates displaying the data file CRC after the programming in the pop up message || 0 = inactive, 1 = active || 0<br />
|-<br />
|}<br />
<br />
If the <tt>Flasher.ini</tt> does not contain a <tt>[Config]</tt> section with the configuration option, the default value is used.<br />
<br />
'''Example:'''<br><br />
This sample will show the data file CRC after the programming and the auto power of is set to five minutes (=300 seconds).<br />
<br />
<source lang="c"><br />
[CONFIG]<br />
AutoPowerOffOnIdle = "300"<br />
ShowDatCRCAfterProgramming = "1"<br />
</source><br />
<br />
=== Flasher Portable ===<br />
<br />
The Flasher Portable is a portable version of SEGGERs Flasher family, which has been designed to fill the need of an extremely portable,<br />
production grade, Flash programmer used for in-field firmware updates. No need to be tethered to an outlet,<br />
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><br />
<br />
Furthermore the Flasher Portable allows the user to select between four data images to be programmed.<br />
The images can be easily selected by using the arrow buttons on the front of the housing.<br />
For more information about support for multiple images, please refer to [[#Multiple File Support | Multiple File Support]].<br><br />
For setup and configuration purposes, the Flasher Portable connects to a PC via USB interface,<br />
running Windows, Linux & MacOS and has a built-in standard 20-pin J-Link target connector.<br><br />
<br />
{{Note|1=Ethernet and RS232 as host interface are not available for the Flasher Portable.}}<br />
<br />
==== Housing & Buttons ====<br />
<br />
The Flasher Portable comes with several leds which are for example used to represent the status of an ongoing flash progress.<br />
Furthermore, there are three buttons which allow the user to control Flasher Portable.<br />
For a detailed description of the functions, take a look at the two tables below:<br />
<br />
<!-- LG xxxxxx edit image with labels for buttons?--><br />
[[File:Flasher_Portable_Top_2.png | 500px]]<br />
<br />
{| class="seggertable"<br />
|-<br />
! LED !! Description<br />
|-<br />
| ACTIVE || GREEN. Blinks while the Flasher Portable is busy / performs operations on the target.<br />
|-<br />
| PASS/FAIL || GREEN/RED. Indicates, if the last flashing cycle was successful.<br />
<ul><br />
<li> GREEN: Flashing cycle completed successfully.</li><br />
<li> RED: Flashing cycle completed with error.</li><br />
</ul><br />
|-<br />
| 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]].<br />
|-<br />
| POWER || GREEN: Indicates if Flasher is currently powered. Blinks while Flasher Portable tries to enumerate via USB.<br />
|-<br />
| 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.<br />
|-<br />
|}<br />
<br />
{| class="seggertable"<br />
|-<br />
! Button !! Description<br />
|-<br />
| Program || Start programming process with the currently selected image.<br />
|-<br />
| Select image || Select the image to be programmed next time the <tt>Program</tt> button is pressed.<br />
|-<br />
| 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<br />
|-<br />
|}<br />
<br />
=== File system ===<br />
<br />
The Flasher with hardware version 4 and lower supports 8.3 filenames only (8 characters filename, 3 characters file extension).<br />
Using longer filenames may result in incorrect operation. Integrated functions,<br />
like the FTP server or the terminal server, will refuse writing files with long filenames.<br />
<br />
=== Setting up the IP interface ===<br />
<br />
Setting up the IP interface<br />
Some of the Flasher models come with an additional Ethernet interface to communicate with the host system.<br />
These Flashers also come with a built-in webserver which allows some basic setup of the emulator,<br />
e.g. configuring a default gateway which allows using it even in large intranets. For more information,<br />
please refer to [[#TCP Services | TCP Services]].<br />
<br />
==== Connecting the first time ====<br />
<br />
When connecting Flasher the first time, it attempts to acquire an IP address via DHCP.<br />
The recommended way for finding out which IP address has been assigned to Flasher is, to use the J-Link Configurator.<br />
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.<br />
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''.<br />
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,<br />
please refer to ''UM08001, J-Link / J-Trace User Guide'', chapter ''Setup'', section ''Setting up the IP interface''.<br />
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]].<br />
<br />
=== Operating modes ===<br />
<br />
All Flashers except the Flasher ATE are able to boot in 3 different modes:<br />
<br />
* PC-based mode<br />
* Stand-alone mode<br />
* File access mode<br />
<br />
{{Note|1=The Flasher ATE only supports the stand-alone mode.}}<br />
<br />
'''Definition PC-based mode'''<br><br />
Flasher is connected to a PC via USB/Ethernet and controlled by a PC application (J-Flash).<br />
If there is an RS232 connection to a PC, does not have any influence on if PC-based mode is entered or not.<br />
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, ...)<br />
<br />
'''Definition Stand-alone mode'''<br><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.<br />
<br />
'''Definition file access mode'''<br><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.<br />
In this mode, Flasher enumerates as a mass storage device (like an USB Stick) at the host PC.<br />
In this mode, configuration + data files can be manually placed on the Flasher and the Flasher logfile can be read out.<br />
If you are using a self-powered Flasher such as the Flasher Portable Plus, the Flasher must be turned off before connecting it.<br />
<br />
==== PC-based mode ====<br />
If you want to use Flasher for the first time you need to install the J-Link software and documentation package.<br />
After installation, connect Flasher to the host PC via USB or Ethernet.<br />
For more information about how to install the J-Link software and documentation package please refer to [[J-Link Software and Documentation Pack]].<br />
<br />
===== Connecting the target system =====<br />
<br />
'''Power-on sequence'''<br><br />
In general, Flasher should be powered on before connecting it with the target device.<br />
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.<br />
Power-on the device after you connected Flasher to it. Flasher will boot in "PC-based mode".<br />
<br />
'''Verifying target device connection with J-Link.exe'''<br><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.<br />
Then start the J-Link command line tool <tt>JLink.exe</tt>,<br />
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.<br />
The screenshot below shows the output of <tt>JLink.exe</tt>.<br />
<br />
[[File:flasher_jlinkmode.gif]]<br />
<br />
===== LED status indicators =====<br />
<br />
In PC-based mode, there are also certain LED status codes defined:<br />
<br />
{| class="seggertable"<br />
|-<br />
! # !! Status of LED !! Meaning<br />
|-<br />
| 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.<br />
|-<br />
| 0 || GREEN<br>constant || Flasher enumeration process is complete and it is ready to be controlled by a PC application.<br />
|-<br />
|}<br />
<br />
==== Stand-alone mode ====<br />
<br />
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]].<br />
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).<br />
In the "stand-alone mode" Flasher can be used as a stand-alone flash programmer.<br><br />
<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]].}}<br />
<br />
===== LED status indicators =====<br />
Progress and result of an operation is indicated by Flasher's LEDs. The behavior is different for J-Link and stand-alone mode.<br />
For a definition of the different modes, please refer to [[#Operating modes | Operating modes]].<br />
The following table describes the behavior of the LEDs in stand-alone mode.<br />
<br />
{| class="seggertable"<br />
|-<br />
! # !! Status of LED !! Meaning<br />
|-<br />
| 0 || GREEN<br>constant || Flasher waits for a start trigger to perform an operation in stand-alone mode.<br />
|-<br />
| 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><br />
|-<br />
| 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.<br />
|-<br />
|}<br />
Older Flasher models have a different behavior.<br />
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:<br />
<br />
* 1621xxxxx (Flasher ARM V2)<br />
* 1630xxxxx (Flasher ARM V3)<br />
* 4210xxxxx (Flasher PPC V1)<br />
* 4110xxxxx (Flasher RX V1)<br />
<br />
{| class="seggertable"<br />
|-<br />
! # !! Status of LED !! Meaning<br />
|-<br />
| 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.<br />
|-<br />
| 1 || GREEN<br>constant || Connect to target and perform init sequence.<br />
|-<br />
| 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><br />
|-<br />
| 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.<br />
|-<br />
|}<br />
<br />
==== File access mode ====<br />
<br />
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".<br />
If you are using a self-powered Flasher such as the Flasher Portable Plus, the Flasher must be turned off before connecting it.<br />
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.<br />
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>.<br />
<br />
[[File:flasher_mode_msd.gif]]<br />
<br />
<tt>FLASHER.CFG</tt> contains the configuration settings for programming the target device and <tt>FLASHER.DAT</tt> contains the data to be programmed.<br />
<tt>FLASHER.LOG</tt> contains all logging information about the commands, performed in stand-alone mode.<br />
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><br />
<br />
Currently, J-Flash does not support to configure Flasher for automated serial number programming.<br><br />
<br />
If you want to configure multiple Flasher for the same target you do not have to use J-Flash all the time.<br />
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".<br />
<br />
=== Setting up Flasher for stand-alone mode ===<br />
{{Note| All Options how to set up the Flasher for stand-alone mode you can find here: [[Flasher/Download project to Flasher|Download project to the Flasher]]}}<br />
<br />
In order to set up Flasher for the stand-alone mode it needs to be configured once using the J-Flash software.<br />
For more information about J-Flash, please refer to the ''J-Flash User Guide''.<br><br />
<br />
After starting J-Flash, open the appropriate J-Flash project for the target Flasher shall be configured for, by selecting '''File''' -> '''Open Project'''.<br />
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><br />
<br />
After the appropriate project has been opened / created, the data file which shall be programmed needs to be loaded, by selecting '''File''' -> '''Open'''.<br />
After this J-Flash should look like in the screenshot below.<br />
<br />
[[File:jflash_projectfile_datafile.gif]]<br />
<br />
Before downloading the configuration (project) and program data (data file) to Flasher, the connection type (USB/IP) needs to be selected in the project.<br />
These settings are also saved on a per-project basis, so this also only needs to be setup once per J-Flash project.<br />
The connection dialog is opened by clicking '''Options''' -> '''Project settings''' -> '''General'''.<br />
<br />
[[File:jflash_connection_dialog.gif]]<br />
<br />
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.<br />
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.<br />
The user then can simply select the Flash he wants to download the configuration to.<br />
<br />
[[File:EmuSelectionDialog.gif]]<br />
<br />
In order to download the configuration and program data to the Flasher, simply select '''File''' -> '''Download config & data file to Flasher'''.<br />
<br />
[[File:jflash_download_to_emul.gif]]<br />
<br />
The J-Flash log window indicates that the download to the emulator was successful.<br />
<br />
[[File:jflash_download_to_emu_succ.gif]]<br />
<br />
From now on, Flasher can be used in stand-alone mode (without host PC interaction) for stand-alone programming.<br />
<br />
==== Preparing for stand-alone operation manually ====<br />
<br />
As an alternative, J-Flash can also be used to save config and data file to a hard drive.<br><br />
<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,<br />
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.<br />
<br />
'''Creating config and data files'''<br><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><br />
<br />
For some devices, additional files (*.PEX) are needed.<br />
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.<br />
<br />
'''About *.PEX files'''<br><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,<br />
the following needs to be taken care of:<br><br />
<br />
For some devices, special connect, reset etc. sequences are necessary which are stored in so-called *.PEX files on the Flasher.<br><br />
<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><br />
<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><br />
The *.PEX files need to be placed in a subdirectory with the same name as the corresponding *.cfg file.<br />
J-Flash creates a directory with the correct name automatically when a config file is created.<br><br />
<br />
Example:<br><br />
<br />
MyConf0 is a project for a device that requires a *.PEX file for connect.<br><br />
MyConf1 is a project for a device that requires no *.PEX file at all.<br />
<br />
[[File:PEX_File_Flasher.png]]<br />
<br />
=== Universal Flash Loader mode ===<br />
<br />
As an alternative to the stand-alone mode, configured via J-Flash, there is the Universal Flash Loader mode.<br />
While the normal stand-alone mode relies on using the debug interface of the device, the Universal Flash Loader<br />
mode uses device or vendor specific programming interfaces and protocols and therefore it is independent of the<br />
CPU core.<br><br />
<br />
The Universal Flash Loader is available for the following Flasher models:<br />
* Flasher PRO<br />
* Flasher Compact<br />
* Flasher Portable PLUS<br />
<br />
For some of the supported devices, SEGGER offers specific adapters.<br />
<br />
==== Preparing manually ====<br />
<br />
The Universal Flash Loader uses an configuration file (*.UNI), a device specific flash programming algorithm (*.PEX) and a data file (*.DAT).<br />
<br />
===== Configuration =====<br />
<br />
The configuration file basically is split into three parts.<br />
The first part, the section [DEVICE], controls the generic behavior of the Universal Flash Loader.<br />
It specifies which protocol driver and data file to use. It allows enabling and configuring target power<br />
and it defines which actions to perform.<br />
The second part consists of one or more [BANKx] sections, which contain information about the memories.<br />
The third part, the section [CONFIG], includes configuration settings for the protocol driver.<br><br />
<br />
An .UNI file might look as follows:<br><br />
<br />
<source lang="c"><br />
[OPTIONS]<br />
TargetPower = "0"<br />
ChipErase = "0"<br />
<br />
[TASKS]<br />
CheckBlank = "1"<br />
Erase = "1"<br />
Program = "1"<br />
Verify = "1"<br />
Secure = "1"<br />
<br />
[DEVICE]<br />
Algo = "RL78.PEX"<br />
Data = "ALL_6k.dat"<br />
<br />
[BANK0]<br />
; Code Flash<br />
Base = "0x00000000"<br />
Size = "0x00004000"<br />
Sect = "0x00000400"<br />
<br />
[BANK1]<br />
; Data Flash<br />
Base = "0x000F1000"<br />
Size = "0x00000800"<br />
Sect = "0x00000400"<br />
<br />
[CONFIG]<br />
BaudRate = "1000000"<br />
ClearConfigOnConnect = "0x00"<br />
Security = "0xFF"<br />
ShieldStart = "0x0000"<br />
ShieldEnd = "0x000F"<br />
</source><br />
<br />
'''[OPTIONS]'''<br><br />
'''TargetPower'''<br><br />
If set to a value >0, power is applied to the target.<br />
The value defines the delay (in ms) after enabling the target power supply and before starting to communicate with the target.<br />
<br />
'''ChipErase'''<br><br />
If set to 1, the chip erase function is called for erasing the chip.<br><br />
{{Note|1=Do not enable this setting if the flash programming algorithm does not support chip erase.}}<br />
<br />
'''[TASKS]'''<br><br />
'''CheckBlank'''<br><br />
Defines if a blank check should be performed before erasing a sector.<br />
<br />
'''Erase'''<br><br />
Defines if the sector should be erased before programming.<br />
<br />
'''Program'''<br><br />
Defines if the sector should be programmed.<br />
<br />
'''Verify'''<br><br />
Defines if the sector should be verified after programming.<br />
<br />
'''Secure'''<br><br />
Defines if the device should be secured or protected against read-out after verifying.<br />
<br />
'''[DEVICE]'''<br><br />
'''Algo'''<br><br />
File name of the flash programming algorithm. This file is provided by SEGGER and will typically support a series of devices.<br />
<br />
'''Data'''<br><br />
File name of the data file to program. The Flasher only supports the Flasher .dat file format.<br />
Flasher .dat files can be generated by J-Flash or Universal Flash Loader and offer high performance together with high flexibility.<br />
<br />
'''[BANKx]'''<br><br />
x blocks with configuration data for the flash banks. All three parameters (Base, Size and Sect) are mandatory.<br />
<br />
'''Base'''<br><br />
Base address of the flash bank.<br />
<br />
'''Size'''<br><br />
Total size of the flash bank.<br />
<br />
'''Sect'''<br><br />
Sector size of the flash bank.<br />
<br />
'''[CONFIG]'''<br><br />
This section includes specific configuration data for the flash programming algorithm.<br><br />
There are no general parameters.<br />
<br />
{{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. }}<br />
<br />
==== Preparing using the PC utility ====<br />
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.<br />
<br />
[[File:Universal Flash Loader.png]]<br />
<br />
The Universal Flash Loader Configurator comes with a large list of devices and flash programming algorithms. If you are going to<br />
use a device from one of the supported families which currently is not available in the utility, feel free to contact the support.<br />
<br />
=== Multiple File Support ===<br />
<br />
It is also possible to have multiple data files and config files on Flasher, to make Flasher more easy to use in production environment.<br />
To choose the correct configuration file and data file pair, a <tt>FLASHER.INI</tt> file is used.<br />
This init file contains a <tt>[FILES]</tt> section which describes which configuration file and which data file should be used for programming.<br />
A sample content of a FLASHER.INI file is shown below:<br><br />
<br />
<source><br />
[FILES]<br />
DataFile = "Flasher1.dat"<br />
ConfigFile = "Flasher1.cfg"<br />
</source><br />
<br />
Using this method all configuration files and data files which are used in the production only have to be downloaded once.<br />
From there on a configuration file / data file pair can be switched by simply replacing the <tt>FLASHER.INI</tt> by a new one,<br />
which contains the new descriptions for the configuration file and data file. The <tt>FLASHER.INI</tt> can be replaced in two ways:<br />
<ol><br />
<li>Boot Flasher in file access mode in order to replace the <tt>FLASHER.INI</tt></li><br />
<li><br />
If Flasher is already integrated into the production line, runs in stand-alone mode and can not be booted in other mode:<br />
Use the file I/O commands provided by the ASCII interface of Flasher, to replace the <tt>FLASHER.INI</tt>.<br />
For more information about the file I/O commands, please refer to [[#File I/O commands | File I/O commands]].<br />
</li><br />
</ol><br />
{{Note|1=Flasher with hardware version 4 and lower only supports 8.3 filenames only (8 characters filename, 3 characters file extension). Using longer filenames may result in incorrect operation.}}<br />
<br />
==== Flasher Portable specifics ====<br />
<br />
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><br />
<br />
Which config / data file pair is used for which image selection position is determined by the contents of the FLASHER.INI.<br />
For this, the FLASHER.INI contents in the <tt>[FILES]</tt> section have been extended.<br />
The sample below shows how to enable the user to select between four different images on the Flasher portable via the select / arrow button:<br />
<br />
<source><br />
[FILES]<br />
DataFile = "First.dat"<br />
ConfigFile = "First.cfg"<br />
DataFile1 = "Second.dat"<br />
ConfigFile1 = "Second.cfg"<br />
DataFile2 = "Third.dat"<br />
ConfigFile2 = "Third.cfg"<br />
DataFile3 = "Fourth.dat"<br />
ConfigFile3 = "Fourth.cfg"<br />
</source><br />
<br />
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.<br />
From there on, switching between the files can be done by simply using the selection button of Flasher Portable.<br />
<br />
===== Example =====<br />
<br />
1 Target, 2 Datafiles (e.g. boot loader und application) --> same configuration file (*.CFG) but different data files (*.DAT) should be used.<br><br />
<br />
* Open pre-configured J-Flash project<br />
* File -> Save Flasher config file ... (DEFAULT.CFG)<br />
* Open data file 1 (boot loader)<br />
* File -> Save Flasher data file ... (BOOT.DAT)<br />
* Open data file 2 (application)<br />
* File -> Save Flasher data file ... (APP.DAT)<br />
* Create the a FLASHER.INI file (content see below)<br />
* Connect the Flasher in file access mode to the PC<br />
* Copy DEFAULT.CFG, BOOT.DAT, APP.DAT and FLASHER.INI on the Flasher<br />
<br />
FLASHER.INI content:<br><br />
<br />
<source><br />
[FILES]<br />
DataFile = "BOOT.DAT"<br />
ConfigFile = "DEFAULT.CFG"<br />
DataFile1 = "APP.DAT"<br />
ConfigFile1 = "DEFAULT.CFG"<br />
</source><br />
<br />
==== Flasher Portable PLUS specifics ====<br />
<br />
Flasher Portable PLUS allows to choose between 99 configuration and data file pairs during runtime by using the select button on the front of Flasher Portable PLUS.<br><br />
<br />
Which config / data file pair is used for which image selection position is determined by the contents of the FLASHER.INI.<br />
For this, the FLASHER.INI may contain several <tt>[BATCH]</tt> sections.<br />
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:<br />
<br />
<source><br />
[BATCH]<br />
DataFile = "First.dat"<br />
ConfigFile = "First.cfg"<br />
[BATCH1]<br />
DataFile = "Second.dat"<br />
ConfigFile = "Second.cfg"<br />
[BATCH2]<br />
DataFile = "Third.dat"<br />
ConfigFile = "Third.cfg"<br />
[BATCH7]<br />
DataFile = "Proj_8.dat"<br />
ConfigFile = "Proj_8.cfg"<br />
[BATCH15]<br />
DataFile = "Proj_16.dat"<br />
ConfigFile = "Proj_16.cfg"<br />
</source><br />
<br />
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.<br />
From there on, switching between the files can be done by simply using the selection button of Flasher Portable PLUS.<br />
<br />
Please also consider the chapter [[#Batch Programming in stand-alone mode | Batch Programming in stand-alone mode]].<br />
<br />
{{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.}}<br />
{{Note|1=You may have gaps in the list. The missing entries will be skipped when selecting the next configuration.}}<br />
{{Note|1=The <tt>[Files]</tt> section is supported by the Flasher Portable PLUS, too. But the number of configuration is limited to four.}}<br />
<br />
===== Example =====<br />
<br />
1 Target, 2 Datafiles (e.g. boot loader und application) --> same configuration file (*.CFG) but different data files (*.DAT) should be used.<br><br />
<br />
* Open pre-configured J-Flash project<br />
* File -> Save Flasher config file ... (DEFAULT.CFG)<br />
* Open data file 1 (boot loader)<br />
* File -> Save Flasher data file ... (BOOT.DAT)<br />
* Open data file 2 (application)<br />
* File -> Save Flasher data file ... (APP.DAT)<br />
* Create the a FLASHER.INI file (content see below)<br />
* Connect the Flasher in file access mode to the PC<br />
* Copy DEFAULT.CFG, BOOT.DAT, APP.DAT and FLASHER.INI on the Flasher<br />
<br />
FLASHER.INI content:<br><br />
<br />
<source><br />
[BATCH]<br />
DataFile = "BOOT.DAT"<br />
ConfigFile = "DEFAULT.CFG"<br />
DisplayName = "Bootloader"<br />
[BATCH1]<br />
DataFile = "APP.DAT"<br />
ConfigFile = "DEFAULT.CFG"<br />
DisplayName = "Application"<br />
[BATCH2]<br />
DataFile = "BOOT.DAT"<br />
ConfigFile = "DEFAULT.CFG"<br />
DataFile1 = "APP.DAT"<br />
ConfigFile1 = "DEFAULT.CFG"<br />
DisplayName = "BL and App"<br />
</source><br />
<br />
=== Custom labels ===<br />
<br />
Flasher supports to assign custom labels to configurations ("Project Display Text" in U-Flash). This allows to specify easy to remember names for configurations that are stored on the Flasher.<br />
<br />
==== Hardware and software requirements ====<br />
This feature is supported by the following models:<br />
* Flasher Portable PLUS<br />
<br />
This feature is supported since V6.30e of the software package and firmware<br />
<br />
==== Assigning labels ====<br />
The configuration and data file pairs are specified in the <tt>FLASHER.INI</tt> file:<br />
<source><br />
[FILES]<br />
DataFile = "IMAGE0.dat"<br />
ConfigFile = "IMAGE0.cfg"<br />
DataFile1 = "IMAGE1.dat"<br />
ConfigFile1 = "IMAGE1.cfg"<br />
</source><br />
<br />
By default, Flasher will show the names of the configuration and data file:<br />
[[File:FW1_smartwatch_nolabel.png]]<br />
[[File:FW2_smart_meter_nolabel.png]]<br />
<br />
By adding <tt>DisplayName</tt>, <tt>DisplayName1</tt>, ... keys to the <tt>FLASHER.INI</tt>, a custom label can be shown instead:<br />
<source><br />
[FILES]<br />
DisplayName = "FW smartwatch"<br />
DataFile = "IMAGE0.dat"<br />
ConfigFile = "IMAGE0.cfg"<br />
DisplayName1 = "FW smart meter"<br />
DataFile1 = "IMAGE1.dat"<br />
ConfigFile1 = "IMAGE1.cfg"<br />
</source><br />
<br />
The images will now be shown as follows:<br />
[[File:FW1_smartwatch_label.png]]<br />
[[File:FW2_smart_meter_label.png]]<br />
<br />
==== Considerations ====<br />
* 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.<br />
<br />
=== Programming multiple targets ===<br />
<br />
It is possible to program multiple targets which are located in a JTAG chain.<br />
The targets will be programmed each with a configuration and a data file.<br><br />
The configuration for the desired target must be selected before it can be programmed,<br />
this can be done with the <tt>#SELECT</tt> command.<br />
For more information how to use the <tt>#SELECT</tt> command please refer to the [[#ASCII_command_interface|ASCII command interface]].<br />
<br />
'''Example'''<br><br />
Three devices should be programmed.<br><br />
<br />
JTAG Chain: ''TDI'' --> ''Device2'' --> ''Device1'' --> ''Device0'' --> ''TDO''<br><br />
<br />
Three configurations would be stored on the flasher:<br><br />
<br />
Config 0: Configured to program Device0 (DEVICE0.CFG, DEVICE0.DAT)<br><br />
Config 1: Configured to program Device1 (DEVICE1.CFG, DEVICE1.DAT)<br><br />
Config 2: Configured to program Device2 (DEVICE2.CFG, DEVICE2.DAT)<br><br />
<br />
Selection and programming of the target will be done via the ASCII interface:<br><br />
<br />
<source><br />
#SELECT DEVICE0<br />
#AUTO<br />
#SELECT DEVICE1<br />
#AUTO<br />
#SELECT DEVICE2<br />
#AUTO<br />
</source><br />
<br />
==== Programming multiple targets with J-Flash ====<br />
<br />
Programming multiple targets can also be done via J-Flash using the command line interface.<br />
For this each target must be handled with its own project file.<br />
<br />
'''Example'''<br><br />
<br />
<source><br />
JFlash.exe -openproj"Device0.jflash" -open"Device0.hex" -auto -exit<br />
JFlash.exe -openproj"Device1.jflash" -open"Device1.hex" -auto -exit<br />
JFlash.exe -openproj"Device2.jflash" -open"Device2.hex" -auto -exit<br />
</source><br />
<br />
=== Batch Programming in stand-alone mode ===<br />
<br />
Batch programming allows to execute different stand-alone mode jobs in batch to be executed in immediate succession, without any user interaction in between.<br />
This can be used for example to program multiple targets in a JTAG-Chain or multiple data files to a target.<br><br />
A batch may contains an unlimited number of configurations which consist of a data file (*.DAT) and config file (*.CFG).<br />
For further information regarding config and data files, please refer to [[#Preparing for stand-alone operation manually | Preparing for stand-alone operation manually]].<br><br />
In order to specify the batch jobs, a FLASHER.INI file is used.<br />
This init file contains a [BATCH] section which describes which configuration pairs (*.DAT and *.CFG file) should be used for each batch job.<br />
A sample content of a FLASHER.INI file is shown below:<br><br />
<br />
<source><br />
[BATCH]<br />
DataFile = "Flasher0.dat"<br />
ConfigFile = "Flasher0.cfg"<br />
DataFile1 = "Flasher1.dat"<br />
ConfigFile1 = "Flasher1.cfg"<br />
</source><br />
<br />
[[File:Batch_Jobs.bmp]]<br />
<br />
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.<br />
<br />
<br />
[[File:Batch_Programming.bmp]]<br />
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<br />
currently executed action.<br />
<br />
<br />
[[File:Batch_Result.bmp]]<br />
The result of the programming will be shown on the screen after finishing all jobs.<br />
<br />
<br />
Creating / Replacing of the FLASHER.INI file can done in two ways:<br><br />
<ol><br />
<li>Boot Flasher in file access mode in order to replace the FLASHER.INI</li><br />
<li><br />
If Flasher is already integrated into the production line, runs in stand-alone mode and can not be booted in other mode:<br />
Use the file I/O commands provided by the ASCII interface of Flasher, to replace the FLASHER.INI .<br />
For more information about the file I/O commands, please refer to [[#File I/O commands | File I/O commands]].<br />
In case of an error occurred during execution, the Flasher terminates the entire batch processing.<br />
</li><br />
</ol><br />
{{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.}}<br />
{{Note|1=The Flasher with hardware version 4 and lower supports 8.3 filenames only (8 characters filename, 3 characters file extension). Using longer filenames may result in incorrect operation.}}<br />
<br />
==== Flasher Portable specifics ====<br />
<br />
Flasher Portable allows to choose between four different batches during runtime by using the select/arrow button on the front of Flasher Portable.<br />
Which batch configuration is used for which image selection position is specified in the FLASHER.INI.<br />
For this, the FLASHER.INI contents in the [BATCH] section have been extended.<br />
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><br />
<br />
<source><br />
[BATCH]<br />
DataFile = "Flasher0.dat"<br />
ConfigFile = "Flasher0.cfg"<br />
DataFile1 = "Flasher1.dat"<br />
ConfigFile1 = "Flasher1.cfg"<br />
DataFile2 = "Flasher2.dat"<br />
ConfigFile2 = "Flasher2.cfg"<br />
[BATCH1]<br />
DataFile = "TEST.dat"<br />
ConfigFile = "Test.cfg"<br />
[BATCH2]<br />
DataFile = "VALIDATE.dat"<br />
ConfigFile = "Flasher0.cfg"<br />
</source><br />
<br />
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.<br />
From there on, switching between the batches can be done by simply using the selection button of Flasher Portable.<br />
<br />
<br />
<br />
==== Examples ====<br />
<br />
'''Example 1:''' Programming two Data files to the same target<br><br />
<br />
* Open your J-Flash project.<br />
* Use File -> Save Flasher config file... to save the .CFG file (in this example: STM32F4.CFG).<br />
* Select the first binary and use File -> Save Flasher Data file... to save the first .DAT file (in this example: DATA0.DAT).<br />
* Select the second binary and use File -> Save Flasher Data file... to save the second data file .DAT file (in this example: DATA1.DAT).<br />
* Copy the Files to the Flasher e.g. by using file access mode.<br />
* Create a FLASHER.INI file in the root directory of the Flasher.<br />
* Exemplary content of FLASHER.INI:<br><br />
<source><br />
[BATCH]<br />
DataFile = "DATA0.dat"<br />
ConfigFile = "emPower.cfg"<br />
DataFile1 = "DATA1.dat"<br />
ConfigFile1 = "emPower.cfg"<br />
</source><br />
<br />
<br />
'''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><br />
Example scenario: 2 Devices in a JTAG chain, a STM32F1 and a STM32F4. <br><br />
<br />
* Follow the same as described before and additionally:<br />
* Create one project file per target (and create a .CFG file of each one).<br />
* Make sure each project file is configured correctly, especially the JTAG-Chain position (See UM8003 "J-Flash" for more detailed info).<br />
* Exemplary content of FLASHER.INI:<br><br />
<source><br />
[BATCH]<br />
DataFile = "F1DATA.dat"<br />
ConfigFile = "STM32F1.cfg"<br />
DataFile1 = "F4DATA0.dat"<br />
ConfigFile1 = "STM32F4.cfg"<br />
DataFile2 = "F4DATA1.dat"<br />
ConfigFile2 = "STM32F4.cfg"<br />
</source><br />
<br />
'''Example 3:''' Using multiple Batch sections with Flasher Portable.<br><br />
Example scenario: 2 Devices in a JTAG chain, a STM32F1 and a STM32F4.<br><br />
Selection 1 will program the STM32F1 target.<br><br />
Selection 2 will program the STM32F4 target using "F4DATA0.dat".<br><br />
Selection 3 will program the STM32F4 target using "F4DATA1.dat".<br><br />
Selection 4 will execute 1, 2 and 3 in sequence.<br><br />
* Exemplary content of FLASHER.INI:<br><br />
<source><br />
[BATCH]<br />
DataFile = "F1DATA.dat"<br />
ConfigFile = "STM32F1.cfg"<br />
[BATCH1]<br />
DataFile = "F4DATA0.dat"<br />
ConfigFile = "STM32F4.cfg"<br />
[BATCH2]<br />
DataFile = "F4DATA1.dat"<br />
ConfigFile = "STM32F4.cfg"<br />
[BATCH3]<br />
DataFile = "F1DATA.dat"<br />
ConfigFile = "STM32F1.cfg"<br />
DataFile1 = "F4DATA0.dat"<br />
ConfigFile1 = "STM32F4.cfg"<br />
DataFile2 = "F4DATA1.dat"<br />
ConfigFile2 = "STM32F4.cfg"<br />
</source><br />
<br />
=== Serial number programming ===<br />
<br />
Flasher supports programming of serial numbers. In order to use the serial number programming feature,<br />
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><br />
<br />
In general, Flasher supports two ways of programming a serial number into the target:<br />
<br />
#<br />
#* Programming continuous serial numbers.<br />
#* The serial number is 1-4 bytes in size.<br />
#* The start serial number, increment, serial number size, and address are configured in the J-Flash project.<br />
#<br />
#* Programming custom serial numbers from a serial number list file.<br />
#* The start line within the serial number list file to get the next serial number bytes, line increment, serial number size, and address is configured in the J-Flash project.<br />
#* The serial number list file needs to be specified and created by the user.<br />
<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.}}<br />
<br />
==== Serial number settings ====<br />
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.<br />
This is done by enabling the '''Program serial number''' option as shown in the screenshot and table below:<br />
<br />
[[File:UM08039_SN_Sample_JFlashSettings.png]]<br />
<br />
{| class="seggertable"<br />
|-<br />
!| Setting || Meaning<br />
|-<br />
| <tt>Address</tt> || The address the serial number should be programmed at.<br />
|-<br />
| <tt>Length</tt> ||<br />
The length of the serial number (in bytes) that 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 8 is selected as length, the serial number and its complement are programmed at the given address.<br />
* In case a serial number list file is given, the 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 '''Length''', the remaining bytes are filled with 0s. No complements etc. are added to the serial number.<br />
|-<br />
| <tt>Next SN</tt> ||<br />
* In case no serial number list file is given, '''Next SN''' is the next serial number which should be programmed. The serial number is always stored in flash memory in little-endian format.<br />
* In case a serial number list file is given, '''Next SN''' describes the line of the serial number list file where to read the next serial number bytes from. The Flasher starts counting at line 0, so in order to start serial number programming with the first line of the <tt>SNList.txt</tt>, '''Next SN''' needs to be set to 0.<br />
|-<br />
| <tt>Increment</tt> || Specifies by how much '''Next SN''' is incremented.<br />
|}<br />
<br />
=== Serial number file ===<br />
When selecting '''File -> Download serial number file to Flasher''', J-Flash will create a serial number file named as <tt><JFlashProjectName>_Serial.txt</tt>.<br />
This file is downloaded as <tt>Serial.txt</tt> on the Flasher.<br />
The file is generated based on the serial number settings in the J-Flash project and will contain the value defined by the '''Next SN''' option.<br />
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.<br />
<br />
==== Serial number list file ====<br />
<br />
In order to program custom serial numbers which can not be covered by the standard serial number scheme provided by J-Flash<br />
(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.<br />
<br />
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.<br />
This file is downloaded as <tt>SNList.txt</tt> on the 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<br />
* Each byte of the serial number is described by two hexadecimal digits.<br />
<br />
'''Example'''<br><br />
A 8-byte serial number should be programmed at address 0x08000000.<br><br />
<br />
It should be programmed as follows in the memory:<br><br />
<br />
<tt>0x08000000: 0x01 0x02 0x03 0x04 0x55 0x66 0x77 0x88</tt><br><br />
<br />
The serial number list file should look as follows:<br><br />
<br />
<tt>0102030455667788</tt><br />
<br />
[[File:SN_SNList.gif]]<br />
<br />
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><br />
<br />
Which line Flasher will read at the next programming cycle, is configured via the <tt>Next SN</tt> option in J-Flash.<br />
For more information, please refer to [[#Serial number settings | Serial number settings]].<br />
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><br />
<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.}}<br />
{{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.}}<br />
<br />
==== Programming process ====<br />
<br />
Flasher will increment the serial number in SERIAL.TXT by the value defined in <tt>Increment</tt>, after each successful programming cycle.<br><br />
<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><br />
<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.<br />
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.}}<br />
<br />
==== Downloading serial number files to Flasher ====<br />
<br />
Downloading the serial number files needs to be done explicitly by selecting '''File-> Download serial number file to Flasher'''.<br />
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.<br />
<br />
==== Sample setup ====<br />
<br />
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.<br />
<br />
'''Defining serial number address, length and start value'''<br><br />
In the J-Flash project the following needs to be defined:<br><br />
* <tt>Address</tt> is 0x08001000<br />
* <tt>Next SN</tt> is 1234567<br />
* <tt>Increment</tt> is 1<br />
* <tt>Len</tt> is 4 (bytes)<br />
<br />
[[File:SN_Sample_JFlashSettings.gif]]<br />
<br />
'''Downloading configuration, data and serial number to Flasher.'''<br><br />
After setting up the rest of the configuration (Target interface etc.) and selecting an appropriate data file, the configuration,<br />
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><br />
<br />
[[File:SN_Sample_DownloadToFlasher.gif]]<br />
<br />
After downloading the serial number to Flasher, J-Flash also created the <tt><JFlashProjectName>_Serial.txt</tt>.<br />
<br />
[[File:SN_Sample_SerialFileCreated.gif]]<br />
<br />
Now Flasher is prepared to program the 8-byte serial number.<br />
<br />
=== Patch file support ===<br />
<br />
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.<br />
Before starting programming process in stand-alone mode, Flasher will look for a file named <tt>Patches.txt</tt> being present on the Flasher.<br />
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><br />
<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.<br />
<br />
'''Syntax'''<br><br />
<!-- LG xxxxxxxxx '==' is shown as '=', so instead use '= ='--><br />
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><br />
<br />
<tt><NumPatches>,<Addr>,<NumBytes>:<nowiki><Data></nowiki>,<Addr>,<NumBytes>:<nowiki><Data></nowiki>,<Addr>,<NumBytes>:<nowiki><Data></nowiki>,<Addr>,<NumBytes>:<nowiki><Data></nowiki>\r\n</tt><br><br />
<br />
Find below a table which describes each parameter.<br><br />
{| class="seggertable"<br />
|-<br />
! Parameter !! Description<br />
|-<br />
| <tt><NumPatches></tt> || Describes the number of patches in this patch line. Max. value is 4.<br />
|-<br />
| <tt><Addr></tt> || Describes the address to be patched. Value is expected in hex.<br />
|-<br />
| <tt><NumBytes></tt> || Number of bytes for the current patch. Max. value is 20h (32 in decimal). Value is expected in hex.<br />
|-<br />
| <tt><nowiki><Data></nowiki></tt> || Describes the data to be patched. <nowiki><Data></nowiki> is always expected as 2 hexadecimal characters per byte.<br />
|-<br />
|}<br />
<br />
{{Note|1=All values are expected in hexadecimal format (hex).<br><br />
<nowiki><Data></nowiki> section is always preceded by ":", not ",".}}<br />
<br />
'''Example'''<br><br />
Below is an example patch.<br><br />
<br />
<source><br />
1,18,4:01020304\r\n<br />
</source><br />
<br />
Patching the following data:<br />
<br />
[[File:data_before.png]]<br />
<br />
with the example patch will result in the following data:<br />
<br />
[[File:data_afterwards.png]]<br />
<br />
Please note that as mentioned earlier patching undefined memory locations will be ignored.<br><br />
Applying the example patch to the following data:<br />
<br />
[[File:undefined_mem_before.png]]<br />
<br />
Causes no data to be patched, as can be seen in the following image:<br />
<br />
[[File:undefined_mem_no_token.png]]<br />
<br />
Therefore it is necessary to first write placeholder data to the memory locations which are supposed to be patched.<br><br />
An example for such a placeholder can be seen here:<br />
<br />
[[File:undefined_mem_token.png]]<br />
<br />
Please note that the actual data inside the placeholder does not matter to the Flasher,<br />
because it is overwritten during patching.<br><br />
Applying the example patch will now work as expected:<br />
<br />
[[File:undefined_mem_after.png]]<br />
<br />
'''Single patch via RS232'''<br><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><br />
<br />
Send the <tt>#AUTO PATCH <NumPatches>,<Addr>,<NumBytes>:<nowiki><Data></nowiki></tt><br><br />
<br />
command via Flasher ASCII interface. The parameters have the same function as described in the table above.<br />
<br />
==== Newline encoding ====<br />
<br />
In general, for all patch files, init files etc. Flasher supports both newline encodings:<br><br />
<br />
* Windows: \r\n<br />
* Unix/Mac: \n<br />
<br />
All parser functionality etc. are written to be independent from the host operating system.<br />
<br />
=== Limiting the number of programming cycles ===<br />
<br />
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.<br />
To make use of this feature, a file called <tt>Cntdown.txt</tt> needs to be placed on the Flasher.<br />
This file simply contains a decimal number (32-bit unsigned integer) that describes how many programming cycles can be performed with the current setup.<br />
<br />
[[File:CntdownTxtContent.jpg]]<br />
<br />
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><br />
<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>.}}<br />
<br />
==== Changed fail/error LED indicator behavior ====<br />
<br />
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><br />
<br />
* The red error/fail LED will lit for 1 second<br />
* After this, it will blink/toggle x times @ 5 Hz, indicating the number of programming cycles left. (blinking 5 times for 5 cycles left, ...)<br />
<br />
==== Required Flasher hardware version for Cntdown.txt support ====<br />
<br />
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><br />
<br />
* 1621xxxxx (Flasher ARM V2)<br />
* 1630xxxxx (Flasher ARM V3)<br />
* 4210xxxxx (Flasher PPC V1)<br />
* 4110xxxxx (Flasher RX V1)<br />
<br />
All other models / hardware versions support limiting of programming cycles.<br />
<br />
=== Authorized flashing ===<br />
<br />
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.<br />
without the possibility to read out the Flasher contents via file access mode, FILE I/O functionality (J-Link Commander) or RS232 commands.<br />
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.<br />
<br />
==== Creating / Adding the secure area ====<br />
<br />
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.<br />
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.<br />
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><br />
<br />
[[File:CreateSecArea.jpg]]<br />
<br />
The following secure area related commands are available in J-Link Commander:<br><br />
<br />
* securearea create<br />
* securearea remove<br />
<br />
{{Note|1=When creating or removing the <tt>secure area</tt>, all configuration and data files being stored on the Flasher, are lost.<br />
Please make sure that they are not needed anymore, before adding / removing the security area.}}<br />
<br />
==== Moving files to the secure area ====<br />
<br />
Before moving configuration + data to the <tt>secure area</tt>, proper functionality of the setup should be tested in stand-alone mode.<br />
Once the setup is working as expected, do the following, to move the configuration + data into the <tt>secure area</tt>:<br><br />
<br />
* Start Flasher in file access mode (For more info, please refer to: [[#file access mode | file access mode]])<br />
<br />
[[File:FilesBeforeSecure.png]]<br />
<br />
* Create a folder "<tt>_SECURE</tt>"<br />
* Move all files that shall be moved to the <tt>secure area</tt>, into this folder<br />
<br />
[[File:FilesAfterSecure.png]]<br />
<br />
* 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.<br />
* Now Flasher can be used in stand-alone mode, as normal, but the files cannot be read back by the user / operator.<br />
<br />
==== Considerations to be taken when using the secure area ====<br />
<br />
When using the <tt>secure area</tt>, some things need to be considered:<br><br />
<br />
* All features like multiple file support, patch file support etc. can also be used when operating from the <tt>secure area</tt>.<br />
* 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>.<br />
* 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>.<br />
* 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.<br />
<br />
==== Required Flasher hardware version ====<br />
<br />
Older Flasher models do not support authorized flashing. The Flashers with the following serial number ranges do not support authorized flashing:<br><br />
<br />
* 1621xxxxx (Flasher ARM V2)<br />
* 1630xxxxx (Flasher ARM V3)<br />
* 4210xxxxx (Flasher PPC V1)<br />
* 4110xxxxx (Flasher RX V1)<br />
<br />
All other models / hardware versions support authorized flashing.<br />
<br />
=== Target interfaces ===<br />
<br />
The table below shows the supported target interfaces of the different Flasher models.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! Supported interfaces<br />
|-<br />
| Flasher PRO || JTAG, SWD<br />
|-<br />
| Flasher Compact || JTAG, SWD<br />
|-<br />
| Flasher ARM || JTAG, SWD<br />
|-<br />
| Flasher RX || JTAG<br />
|-<br />
| Flasher PPC || JTAG<br />
|-<br />
|}<br />
<br />
For more information about the target interfaces itself, please refer to:<br><br />
<br />
* ''UM08001, chapter "Working with J-Link and J-Trace", section "JTAG interface"''<br />
* ''UM08001, chapter "Working with J-Link and J-Trace", section "SWD interface"''<br />
<br />
=== Supported architectures ===<br />
<br />
Flasher supports programming of the internal flash of a large number of different microcontrollers.<br />
The number of supported devices is steadily growing. You can always find the latest list of supported devices on our website:<br><br />
<br />
''http://www.segger.com/supported-devices.html''<br />
<br />
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.<br />
Also the existence of the device may have confidential status, so it might not be mentioned as being supported in public releases yet.<br />
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.<br />
<br />
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).<br />
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.<br />
<br />
If a device is not supported, you can always contact us. We will be happy to provide you with an offer.<br />
<br />
==== External flashes ====<br />
<br />
In general our Flashers support programming of external flashes listed below:<br>(Can differ between Flasher models and hardware versions)<br />
<br />
* parallel NOR flash<br />
* SPI / QSPI flash<br>(see: ''[[SPI_support_by_Flasher_models]]'')<br />
* NAND flash<br />
* I<sup>2</sup>C EEPROM/Flash<br />
* FRAM<br />
<br />
If the parallel NOR flash device which is used is not CFI-compliant you have to select the flash device in J-Flash explicitly,<br />
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''.<br />
<br />
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.<br />
The J-Flash software comes with sample projects for ''Open Flashloader''.<br />
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''<br />
{{Note|1=Complete Information about ''Open Flashloaders'' can be found in our Wiki:<br>''[[Open_Flashloader]]''}}<br />
<br />
==== Cores ====<br />
<br />
===== Flasher ARM =====<br />
<br />
Flasher ARM supports and has been tested with the following cores, but should work with any ARM7/9, Cortex-M0/M1/M3/M4 core.<br />
If you experience problems with a particular core, do not hesitate to contact Segger.<br><br />
<br />
* ARM7TDMI (Rev 1)<br />
* ARM7TDMI (Rev 3)<br />
* ARM7TDMI-S (Rev 4)<br />
* ARM920T<br />
* ARM922T<br />
* ARM926EJ-S<br />
* ARM946E-S<br />
* ARM966E-S<br />
* Cortex-M0<br />
* Cortex-M1<br />
* Cortex-M3<br />
* Cortex-M4<br />
<br />
===== Flasher RX =====<br />
<br />
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><br />
<br />
* RX610<br />
* RX621<br />
* RX62N<br />
* RX62T<br />
<br />
===== Flasher PPC =====<br />
<br />
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.<br />
<br />
* e200z0<br />
<br />
===== Flasher PRO/Compact/Portable PLUS =====<br />
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/''.<br />
<br />
=== Programming multiple targets in parallel ===<br />
<br />
To program multiple targets in parallel there are the following possibilities:<br />
* Using a Flasher gang, or<br />
* Using multiple Flashers, each connecting to one CPU.<br />
<br />
Devices for gang programming are:<br />
* Flasher Hub-12 in conjunction with up to 12 Flasher (Compact). Please refer to [[UM08043_Flasher_Hub-12|Flasher Hub-12 user manual (UM08043_Flasher_Hub-12)]].<br />
* Flasher ATE; suitable for programming up to 10 targets in parallel. Please refer to [https://www.segger.com/downloads/flasher/UM08035 Flasher ATE user manual (UM08035_FlasherATE.pdf)].<br />
When using multiple flashers, this can be done with the J-Flash production programming software.<br />
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''<br />
<br />
=== Logfiles and Quality Management ===<br />
<br />
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:<br />
<source lang="c"><br />
SN: 1 - Failed<br />
SN: 1 - Failed<br />
SN: 2 - O.K. (931 ms)<br />
SN: 3 - O.K. (931 ms)<br />
SN: 4 - O.K. (933 ms)<br />
SN: 5 - O.K. (932 ms)<br />
</source><br />
If applicable, the logfile contains more detailed error messages. For example:<br />
<source lang="c"><br />
ERROR: Programming failed @ address 0x00000000 (1)<br />
ERROR: Cannot connect to CPU. Target interface speed too high?<br />
</source><br />
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:<br />
<source lang="c"><br />
Verify error config word area @<br />
config word<br />
config word read back<br />
Verify error flash area @<br />
data from file<br />
data read back<br />
</source><br />
{{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.}}<br />
<br />
== TCP Services ==<br />
This chapter describes the integrated TCP services.<br />
<br />
=== FTP Server ===<br />
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><br />
[[File:FTPServer.png]]<br />
<br />
==== Access data ====<br />
Anonymous access to the FTP server is limited to read-only access to the file system.<br><br />
For write access, special login credentials have to be used:<br><br />
<tt>Login: admin</tt><br><br />
<tt>Password: 1234</tt><br><br />
<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.<br />
It is not meant as a security feature.}}<br />
<br />
=== Web server ===<br />
<br />
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.<br />
For the network, the IP address settings can be changed and a nick name can be assigned to the device.<br><br />
<br />
Additionally, the web interface provides information about the status of the integrated operating system, the IP stack and the target hardware.<br />
<br />
== Remote control ==<br />
This chapter describes how to control the Flasher in standalone mode.<br />
<br />
=== Overview ===<br />
There are 3 ways to control Flasher operation:<br><br />
{| class="seggertable"<br />
! Type of control !! Description<br />
|-<br />
| Button || Programming operation starts when pressing the PROG-button. The LEDs serve as visible indicators.<br />
|-<br />
| Handshake || 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.<br />
|-<br />
| Terminal || Terminal communication via TELNET, RS232 or VCOM with the [[#ASCII command interface]]<br />
|}<br />
<br />
<br />
{{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.}}<br />
<br />
=== Handshake control ===<br />
<br />
Some Flasher models are equipped with additional hardware control functions that are connected to the SUBD9 male connector, normally used as an RS232 interface to the PC.<br />
These Flasher models can therefore be controlled remotely by automated testers without the need for a connection to a PC.<br />
<br />
The handshake control is available for the following Flashers:<br />
* Flasher ARM<br />
* Flasher PRO<br />
* Flasher Compact (via Flasher Hub and Flasher Hub-12 only)<br />
<br />
The following diagrams show the internal remote control circuitry of Flasher:<br><br />
<br />
[[File:FlasherRemotecontrol.png]]<br />
{| class="seggertable"<br />
|-<br />
! Pin No. !! Function !! Description<br />
|-<br />
| 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.<br />
|-<br />
| 4 || BUSY || As soon as the "Auto" function is started, BUSY becomes active, which means that transistor is switched OFF.<br />
|-<br />
| 5 || GND || Common Signal ground.<br />
|-<br />
| 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.<br />
|-<br />
|}<br />
[[File:FlasherRemoteSignal.png]]<br />
<br />
=== ASCII command interface ===<br />
<br />
==== Introduction ====<br />
<br />
Once set up using J-Flash, the Flasher can be driven by any application or just a simple terminal using ASCII commands.<br><br />
<br />
Every known command is acknowledged by the Flasher and then executed. After command execution, Flasher sends an ASCII reply message.<br><br />
<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}}<br />
<br />
==== General command and reply message format ====<br />
<br />
* Any ASCII command has to start with the start delimiter ''#''.<br />
* Any ASCII command has to end with simple carriage return ('\r', ASCII code 13).<br />
* Commands can be sent upper or lower case<br />
<br />
==== General usage ====<br />
<br />
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.<br />
<br />
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).<br />
<br />
==== Settings for ASCII interface via RS232 ====<br />
<br />
Flasher is driven via a RS232 serial port with the following interface settings:<br><br />
<br />
* 9600 baud<br />
* 8 data bits<br />
* no parity<br />
* 1 stop bit<br />
<br />
The baud rate can be changed by using the <tt>#BAUDRATE</tt> command.<br />
<br />
==== Settings for ASCII interface via Telnet ====<br />
<br />
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><br />
<br />
[[File:telnet_connection.gif]]<br />
<br />
==== Settings for ASCII interface via VCOM ====<br />
<br />
The same settings can be used for VCOM as for [[#Settings for ASCII interface via RS232|RS232]].<br />
<br />
{{Note|The performance also depends on the terminal application used on the PC.}}<br />
<br />
==== Commands and replies ====<br />
<br />
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><br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| Commands to the Flasher<br />
|-<br />
| <tt>#BAUDRATE <Baudrate></tt><br />
|-<br />
| <tt>#AUTO</tt><br />
|-<br />
| <tt>#AUTO PATCH</tt><br />
|-<br />
| <tt>#AUTO NOINFO</tt><br />
|-<br />
| <tt>#CANCEL</tt><br />
|-<br />
| <tt>#ERASE</tt><br />
|-<br />
| <tt>#PROGRAM</tt><br />
|-<br />
| <tt>#RESULT</tt><br />
|-<br />
| <tt>#SELECT <Filename></tt><br />
|-<br />
| <tt>#START</tt><br />
|-<br />
| <tt>#STATUS</tt><br />
|-<br />
| <tt>#VERIFY</tt><br />
|-<br />
| <tt>#READ</tt><br />
|-<br />
| <tt>#QUIT</tt><br />
|-<br />
| <tt>#VERBOSE <Level></tt><br />
|-<br />
!colspan="100%"| File I/O commands<br />
|-<br />
| <tt>#FCLOSE</tt><br />
|-<br />
| <tt>#FCRC</tt><br />
|-<br />
| <tt>#FDELETE <Filename></tt><br />
|-<br />
| <tt>#FFORMAT</tt><br />
|-<br />
| <tt>#FOPEN <Filename></tt><br />
|-<br />
| <tt>#FREAD <Offset>,<NumBytes></tt><br />
|-<br />
| <tt>#FSIZE</tt><br />
|-<br />
| <tt>#FWRITE <Offset>,<NumBytes>:<nowiki><Data></nowiki></tt><br />
|-<br />
| <tt>#FLIST</tt><br />
|-<br />
| <tt>#MKDIR <Dirname></tt><br />
|-<br />
!colspan="100%"| SecureArea commands<br />
|-<br />
| <tt>#HASSECUREAREA</tt><br />
|-<br />
| <tt>#SECUREAREA <action></tt><br />
|-<br />
!colspan="100%"| Replies from the Flasher<br />
|-<br />
| <tt>#ACK</tt><br />
|-<br />
| <tt>#NACK</tt><br />
|-<br />
| <tt>#OK</tt><br />
|-<br />
| <tt>#OK:<NumBytes>:<nowiki><Data></nowiki></tt><br />
|-<br />
| <tt>#OK:<Size></tt><br />
|-<br />
| <tt>#STATUS:</tt><br />
|-<br />
| <tt>#DONE</tt><br />
|-<br />
| <tt>#ERRxxx</tt><br />
|-<br />
|}<br />
<br />
===== Commands to the Flasher =====<br />
<br />
'''#AUTO'''<br><br />
The <tt>#AUTO</tt> command behaves exactly as the start button or external remote control input.<br><br />
<br />
Usually, the following command sequence will be performed when receiving the <tt>#AUTO</tt> command:<br><br />
<br />
* The Flasher erases the target CPU (if not blank)<br />
* The Flasher programs the target CPU<br />
* The Flasher verifies the target CPU<br />
<br />
Depending on the settings chosen in the '''Production''' tab in J-Flash, this sequence can differ from the one shown above.<br><br />
<br />
Finally, Flasher responds with<br><br />
<br />
* <tt>#OK</tt> if no error occurred<br />
* <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.<br />
<br />
During execution of the <tt>#AUTO</tt> command, Flasher automatically sends "status" messages via RS232 to reflect the state of execution.<br />
Typically during execution of <tt>#AUTO</tt> command, Flasher will reply the following sequence of messages:<br><br />
<br />
<tt>#ACK</tt><br><br />
<tt>#STATUS:INITIALIZING</tt><br><br />
<tt>#STATUS:CONNECTING</tt><br><br />
<tt>#STATUS:UNLOCKING</tt><br><br />
<tt>#STATUS:ERASING</tt><br><br />
<tt>#STATUS:PROGRAMMING</tt><br><br />
<tt>#STATUS:VERIFYING</tt><br><br />
<tt>#OK (Total 13.993s, Erase 0.483s, Prog 9.183s, Verify 2.514s)</tt><br><br />
<br />
'''#AUTO PATCH'''<br><br />
The <tt>#AUTO</tt> PATCH command allows patching of the content of the data to be programmed.<br><br />
<br />
Flasher responds with<br><br />
<br />
* <tt>#OK</tt> if no error occurred<br />
* <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.<br />
<br />
For further information about the usage of the <tt>#AUTO PATCH</tt> command please refer to [[#Patch file support | Patch file support]].<br />
<br />
'''#AUTO NOINFO'''<br><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><br />
<br />
The command ends with <tt>#OK</tt> or <tt>#ERRxxx</tt><br />
<br />
'''#BAUDRATE <Baudrate>'''<br><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><br />
<br />
If this command succeeds, Flasher responds with:<br><br />
<br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<br />
Otherwise it will respond with one of the following error messages:<br><br />
<br />
<tt>#ERR255: Invalid parameters</tt><br><br />
<tt>or</tt><br><br />
<tt>#ERR255: Baudrate is not supported</tt><br><br />
<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.<br />
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.}}<br />
<br />
'''#CANCEL'''<br><br />
This command can be sent to abort a running program. It may take a while until the current program is actually canceled.<br><br />
<br />
Flasher will respond with:<br><br />
<br />
<tt>#ERR007:CANCELED.</tt><br><br />
<br />
'''#ERASE'''<br><br />
This command can be sent to erase all selected target flash sectors.<br><br />
<br />
Flasher will reply the following sequence of messages:<br><br />
<br />
<tt>#ACK</tt><br><br />
<tt>#STATUS:INITIALIZING</tt><br><br />
<tt>#STATUS:CONNECTING</tt><br><br />
<tt>#STATUS:UNLOCKING</tt><br><br />
<tt>#STATUS:ERASING</tt><br><br />
<tt>#OK (Total 0.893s, Erase 0.483s)</tt><br><br />
<br />
'''#PROGRAM'''<br><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.<br />
<br />
'''#RESULT'''<br><br />
This command can be sent any time, even during other command execution. Flasher responds with the last result of the previously executed command.<br />
<br />
'''#SELECT <Filename>'''<br><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.<br />
<tt><Filename></tt> specifies the name of file pair without extensions (.CFG and .DAT) on the Flasher which should be selected. If you are<br />
using the universal flash programming mode, <tt><Filename></tt> specifies the full name of the .UNI file '''including''' the extension.<br />
Flasher saves the selected config and data file in the FLASHER.INI file. So this selection is remembered even between power-cycling Flasher.<br><br />
<br />
This may be verfy helpful in cases where several config and data files are stored on Flasher.<br />
The user can easily switch between these config and data files without connecting Flasher to a host.<br><br />
<br />
If this command succeeds, Flasher responds with:<br><br />
<br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<br />
Find below a sample sequence which shows how to use the <tt>#SELECT</tt> command:<br><br />
<br />
<tt>#SELECT ATSAM7_1 // ATSAM7_1.CFG and ATSAM7_1.DAT is selected</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<tt>#AUTO // Start auto programming</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#STATUS:INITIALIZING</tt><br><br />
<tt>#STATUS:CONNECTING</tt><br><br />
<tt>#STATUS:UNLOCKING</tt><br><br />
<tt>#STATUS:ERASING</tt><br><br />
<tt>#STATUS:PROGRAMMING</tt><br><br />
<tt>#STATUS:VERIFYING</tt><br><br />
<tt>#OK (Total 8.416s, Erase 0.005s, Prog 6.845s, Verify 0.959s)</tt><br><br />
<tt>#SELECT ATSAM7_2 // ATSAM7_2.CFG and ATSAM7_2.DAT is selected</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<tt>#AUTO // Start auto programming</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#STATUS:INITIALIZING</tt><br><br />
<tt>#STATUS:CONNECTING</tt><br><br />
<tt>#STATUS:UNLOCKING</tt><br><br />
<tt>#STATUS:ERASING</tt><br><br />
<tt>#STATUS:PROGRAMMING</tt><br><br />
<tt>#STATUS:VERIFYING</tt><br><br />
<tt>#OK (Total 8.632s, Erase 0.005s, Prog 7.051s, Verify 0.969s)</tt><br><br />
<br />
'''#START'''<br><br />
This command can be sent to start the application using the method configured in the J-Flash project.<br><br />
For U-Flash projects, however, the target application is not necessarily started. <br><br />
There is often a "start application" checkbox in the U-Flash settings which have to be set for this.<br />
<br />
Flasher will reply with the following sequence of messages:<br><br />
<br />
<tt>#ACK</tt><br><br />
<tt>#STATUS:INITIALIZING</tt><br><br />
<tt>#STATUS:CONNECTING</tt><br><br />
<tt>#OK (Total 1.148s)</tt><br><br />
<br />
'''#STATUS'''<br><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]].<br />
<br />
'''#VERIFY'''<br><br />
This command can used to verify the target flash content against the data stored in Flasher.<br />
<br />
'''#READ'''<br><br />
Only available for devices supported by U-Flash.<br><br />
This command can used to read out flash data.<br><br />
More information: [https://wiki.segger.com/Flasher/How_to_read_data_from_a_device_using_U-Flash How to read data using U-Flash]<br />
<br />
'''#QUIT'''<br><br />
This command can be used to terminate the active telnet connection from the server side (Flasher).<br />
The command provides an easy way to terminate the session from an automated script.<br />
It is not necessary to parse stdout and switch to local command mode to disconnect.<br />
Not implemented in the Flasher ATE or Flasher Hub.<br />
<br />
'''#VERBOSE <Level>'''<br><br />
This command can be used to change the verbosity level. <br><br />
* Verbosity level 0: Default. <br><br />
* Verbosity level 1: Provides some additional messages during the programming process.<br />
<br />
===== File I/O commands =====<br />
<br />
The ASCII interface of the Flasher also supports file I/O operations.<br />
<br />
The following file I/O commands are supported:<br><br />
<br />
'''#FCLOSE'''<br><br />
The <tt>#FCLOSE</tt> command closes the file on Flasher which was opened via <tt>#FOPEN</tt>.<br />
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><br />
<br />
A typical sequence when using the <tt>#FCLOSE</tt> command does look like as follows:<br><br />
<br />
<tt>#FCLOSE</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<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><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:No file opened</tt><br />
}}<br />
<br />
'''#FCRC'''<br><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>.<br />
The CRC will be also reported by J-Flash when downloading or saving files via J-Flash.<br><br />
<br />
A typical sequence when using the <tt>#FCRC</tt> command does look like as follows:<br><br />
<br />
<tt>#FCRC flasher.dat</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK:0x75BC855A</tt><br><br />
<br />
'''#FDELETE <Filename>'''<br><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><br />
<br />
A typical sequence when using the <tt>#FDELETE</tt> command does look like as follows:<br><br />
<br />
<tt>#FDELETE flasher.dat</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<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><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:Failed to delete file</tt><br />
}}<br />
<br />
'''#FFORMAT'''<br><br />
The <tt>#FFORMAT</tt> command is used to delete all files located in the public area of the Flasher's internal memory.<br />
<br />
{{Note|1=Please note that this command deletes all projects located in the public area. Deleted projects cannot be restored again.<br><br />
This command does not delete the Flasher firmware, neither does it delete files in the secure area.<br />
}}<br />
<br />
A typical sequence using the <tt>#FFORMAT</tt> command does look like as follows:<br><br />
<br />
<tt>#FFORMAT</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#DONE</tt><br><br />
<br />
'''#FOPEN <Filename>'''<br><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.<br />
If <tt><Filename></tt> can not be found on Flasher a new one will be created.<br><br />
<br />
A typical sequence using the <tt>#FOPEN</tt> command does look like as follows:<br><br />
<br />
<tt>#FOPEN flasher.dat</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<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><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:A file has already been opened</tt><br />
}}<br />
<br />
'''#FREAD <Offset>,<NumBytes>'''<br><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.<br />
<tt><NumBytes></tt> specifies the number of bytes which should be read.<br><br />
<br />
A typical sequence when using the <tt>#FREAD</tt> command does look like as follows:<br><br />
<br />
<tt>#FREAD 0,4</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK:04:466c6173</tt><br><br />
<br />
If the <tt>#FREAD</tt> command succeeds, Flasher will finally respond with a <tt>#OK:<NumBytes>:<nowiki><Data></nowiki></tt> reply message.<br />
For more information about the Flasher reply messages, please refer to [[#Replies from Flasher | Replies from Flasher]].<br><br />
<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><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:No file opened</tt>}}<br />
<br />
'''#FSIZE'''<br><br />
The <tt>#FSIZE</tt> command is used to get the size of the currently opened file on Flasher.<br><br />
<br />
A typical sequence when using the <tt>#FSIZE</tt> command does look like as follows:<br><br />
<br />
<tt>#FSIZE</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK:10 // file on flasher which is currently open, has a size of 16 bytes</tt><br><br />
<br />
If the <tt>#FSIZE</tt> command succeeds, Flasher will respond with a <tt>#OK:<Size></tt> reply message.<br />
For more information about the Flasher reply messages, please refer to [[#Replies from Flasher | Replies from Flasher]].<br><br />
<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><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:No file opened</tt>}}<br />
<br />
'''#FWRITE <Offset>,<NumBytes>:<nowiki><Data></nowiki>'''<br><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.<br />
<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.<br />
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><br />
<br />
<tt><Offset></tt> and <tt><NumBytes></tt> are expected in hexadecimal format.<br><br />
<br />
<tt>#FWRITE 0,200:<nowiki><Data></nowiki></tt><br><br />
<tt>#FWRITE 200,200:<nowiki><Data></nowiki></tt><br><br />
<br />
The data is expected in hexadecimal format (two hexadecimal characters per byte). The following example illustrates the use of <tt>#FWRITE</tt>:<br />
<br />
<tt>Data to be send: Hello !</tt><br><br />
<tt>ASCII values: 0x48, 0x65, 0x6C, 0x6C, 0x6F, 0x20, 0x21</tt><br><br />
<br />
<tt>#FWRITE 0,7:48656C6C6F2021</tt><br><br />
<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><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:No file opened</tt><br>}}<br />
<br />
'''#FLIST'''<br><br />
The <tt>#LIST</tt> command is used to list all files stored on the Flasher.<br><br />
<br />
A typical sequence using the <tt>#FLIST</tt> command does look like as follows:<br><br />
<br />
<tt>#FLIST</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>FLASHER.INI Size: 60</tt><br><br />
<tt>SERIAL.TXT Size: 3</tt><br><br />
<tt>FLASHER.LOG Size: 207</tt><br><br />
<tt>FOLDER (DIR)</tt><br><br />
<tt>FOLDER\\TEST1.CFG Size: 2048</tt><br><br />
<tt>FOLDER\\TEST1.DAT Size: 12288</tt><br><br />
<tt>#OK</tt><br><br />
<br />
'''#MKDIR <Dirname>'''<br><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><br />
<br />
A typical sequence using the <tt>#MKDIR</tt> command does look like as follows:<br><br />
<br />
<tt>#MKDIR folder</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<br />
{{Note|1=If the directory can not be created because of a bad <tt><Dirname></tt> argument, Flasher will respond with:<br><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:Failed to create directory</tt><br>}}<br />
<br />
===== Secure Area Commands =====<br />
<br />
'''#HASSECUREAREA'''<br><br />
The <tt>#HASSECUREAREA</tt> command checks if the Flasher is configured with a secure area.<br />
<br />
<tt>#RESULT:YES</tt> indicates the secure area is present, <tt>#RESULT:NO</tt> indicates no secure area is present.<br />
<br />
'''#SECUREAREA'''<br><br />
The <tt>#SECUREAREA <action></tt> command allows to create or remove the secure area on the Flasher.<br />
<br />
* the action <tt>CREATE</tt> creates the secure area.<br />
* the action <tt>REMOVE</tt> will remove the secure area.<br />
<br />
A typical sequence using the <tt>#SECUREAREA</tt> command does look like as follows:<br><br />
<br />
<tt>#SECUREAREA CREATE</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#DONE</tt><br><br />
<br />
{{Note|1=When creating or removing the <tt>secure area</tt>, all configuration and data files being stored on the Flasher, are lost.<br />
Please make sure that they are not needed anymore, before adding / removing the security area.}}<br />
<br />
<br />
<br />
===== Replies from Flasher =====<br />
<br />
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.<br />
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.<br />
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><br />
<br />
<tt>#OK (Total 13.993s, Erase 0.483s, Prog 9.183s, Verify 2.514s)</tt><br><br />
<br />
The following reply messages from Flasher are defined:<br><br />
<br />
'''#ACK'''<br><br />
Flasher replies with <tt>#ACK</tt> message on reception of any defined command before the command itself is executed.<br />
<br />
'''#NACK'''<br><br />
Flasher replies with <tt>#NACK</tt>, if an undefined command was received.<br />
<br />
'''#OK'''<br><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.<br />
<br />
'''#OK:<NumBytes>:<nowiki><Data></nowiki>'''<br><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.<br />
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).<br />
<br />
'''#OK:<Size>'''<br><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.<br />
<br />
'''#STATUS:'''<br><br />
The Flasher replies with its current state.<br><br />
<br />
The following status messages are currently defined:<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Message !! Description<br />
|-<br />
| <tt>#STATUS:READY</tt> || Flasher is ready to receive a new command.<br />
|-<br />
| <tt>#STATUS:CONNECTING</tt> || Flasher initializes connection to target CPU.<br />
|-<br />
| <tt>#STATUS:INITIALIZING</tt> || Flasher performs self check and internal init.<br />
|-<br />
| <tt>#STATUS:UNLOCKING</tt> || Unlocking flash sectors.<br />
|-<br />
| <tt>#STATUS:ERASING</tt> || Flasher is erasing the flash of the target device.<br />
|-<br />
| <tt>#STATUS:PROGRAMMING</tt> || Flasher is programming the flash of the target device.<br />
|-<br />
| <tt>#STATUS:VERIFYING</tt> || Flasher verifies the programmed flash contents.<br />
|-<br />
|}<br />
<br />
'''#ERRxxx'''<br><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><br />
<br />
Some error codes may be followed by colon and an additional error text.<br><br />
<br />
For example:<br><br />
<br />
<tt>#ERR007:CANCELED.</tt><br><br />
<br />
The error code numbers are described in the following table:<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Message !! Description<br />
|-<br />
| <tt>#ERR007</tt> || Flasher received <tt>#CANCEL</tt> command and has canceled the current operation.<br />
|-<br />
| <tt>#ERR008</tt> || Flasher is already busy with execution of previous command.<br />
|-<br />
| <tt>#ERR009</tt> || Failed to allocate memory.<br />
|-<br />
| <tt>#ERR010</tt> || Failed to open file.<br />
|-<br />
| <tt>#ERR011</tt> || Failed to read file.<br />
|-<br />
| <tt>#ERR012</tt> || Failed to write file.<br />
|-<br />
| <tt>#ERR013</tt> || Failed to delete file.<br />
|-<br />
| <tt>#ERR255</tt> || Undefined error occurred. This reply is followed by an error string.<br />
|-<br />
|}<br />
<br />
== Performance ==<br />
<br />
The following chapter lists programming performance of common flash devices andmicrocontrollers.<br />
<br />
=== Performance of MCUs with internal flash memory ===<br />
<br />
==== Flasher ARM ====<br />
<br />
The following table lists program and erase performance values of Flasher ARM for different controllers.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Microcontroller !! Size [kByte] !! Erase time [sec] !! Program time [sec] !! Verify time [sec] !! Total time [sec]<br />
|-<br />
| Analog Devices || 62 || 2.943 || 2.286 || 0.563 || 5.792<br />
|-<br />
| Atmel AT91SAM7S64 || 64 || --- || 3.488 || 0.438 || 3.926<br />
|-<br />
| Atmel AT91SAM7S256 || 256 || --- || 7.709 || 1.053 || 8.762<br />
|-<br />
| NXP LPC1768 || 512 || 3.740 || 8.559 || 5.092 || 17.391<br />
|-<br />
| NXP LPC2106 || 120 || 0.448 || 1.204 || 0.634 || 2.286<br />
|-<br />
| NXP LPC2129 || 248 || 0.449 || 2.916 || 1.347 || 4.712<br />
|-<br />
| NXP LPC2138 || 500 || 0.448 || 5.488 || 2.649 || 8.585<br />
|-<br />
| NXP LPC2148 || 500 || 0.448 || 5.632 || 2.721 || 8.801<br />
|-<br />
| NXP LPC2294 || 2048 || 0.808 || 15.976 || 9.669 || 26.453<br />
|-<br />
| NXP LPC2478 || 504 || 0.448 || 5.419 || 2.559 || 8.426<br />
|-<br />
| ST STM32F103ZE || 512 || 0.028 || 18.763 || 3.939 || 22.730<br />
|-<br />
| ST STR711 || 272 || 0.429 || 5.476 || 4.742 || 10.647<br />
|-<br />
| ST STR912 || 544 || 1.167 || 12.907 || 5.236 || 19.310<br />
|-<br />
| TI TMS470R1B1M || 1024 || 2.289 || 8.147 || 5.362 || 15.798<br />
|-<br />
|}<br />
<br />
==== Flasher PRO ====<br />
See Flasher ARM.<br />
<br />
==== Flasher Compact ====<br />
See Flasher ARM.<br />
<br />
==== Flasher RX ====<br />
<br />
The following table lists program and erase performance values of Flasher RX.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Microcontroller !! Size [kByte] !! Erase time [sec] !! Program time [sec] !! Verify time [sec] !! Total time [sec]<br />
|-<br />
| R5F56108 || 2.048 || 9.523 || 11.915 || 3.890 || 25.585<br />
|-<br />
|}<br />
<br />
==== Flasher PPC ====<br />
<br />
The following table lists program and erase performance values of Flasher PPC.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Microcontroller !! Size [kByte] !! Erase time [sec] !! Program time [sec] !! Verify time [sec] !! Total time [sec]<br />
|-<br />
| ST SPC560B50 || 576 || 4.747 || 4.159 || 1.929 || 10.917<br />
|-<br />
|}<br />
<br />
== Hardware ==<br />
<br />
This chapter gives an overview about Flasher specific hardware details,<br />
such as the pinouts and available adapters.<br />
<br />
=== Flasher ARM 20-pin JTAG/SWD Connector ===<br />
<br />
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.<br />
<br />
==== Pinout JTAG ====<br />
<br />
[[File:jtag_port_20pin.jpg]] <!-- LG xxxxxx image has been cropped to fit page --><br />
<br />
The following table lists the Flasher JTAG pinout.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! PIN !! SIGNAL !! TYPE !! Description<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 13 || TDO || Input || JTAG data output from target CPU. Typically connected to TDO of target CPU.<br />
|-<br />
| 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".<br />
|-<br />
| 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.<br />
|-<br />
| 19 || 5V-Target supply || Output || This pin can be used to supply power to the target board. Please note the specifications. [[#Target power supply]]<br />
|-<br />
|}<br />
<br />
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.<br />
<br />
==== Pinout SWD ====<br />
<br />
The 20-pin connector of Flasher is also compatible to ARM's Serial Wire Debug (SWD) interface.<br><br />
<br />
[[File:SWD_Port.jpg]] <!-- LG xxxxxx image has been cropped to fit page --><br />
<br />
The following table lists the J-Link / J-Trace SWD pinout.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! PIN !! SIGNAL !! TYPE !! Description<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 7 || SWDIO || I/O || Single bi-directional data pin.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 13 || SWO || Output || Serial Wire Output trace port. (Optional, not required for SWD communication.)<br />
|-<br />
| 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".<br />
|-<br />
| 17 || Not used || NC || This pin is not connected in J-Link.<br />
|-<br />
| 19 || 5V-Target supply || Output || This pin can be used to supply power to the target board. Please note the specifications. [[#Target power supply]]<br />
|-<br />
|}<br />
<br />
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.<br />
<br />
==== Target power supply ====<br />
<br />
Pin 19 of the connector can be used to supply power to the target hardware. Supply voltage is 5V, max. current is 400mA.<br />
The output current is monitored and protected against overload and short-circuit.<br><br />
<br />
Power can be controlled via the J-Link commander. The following commands are available to control power:<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Command !! Explanation<br />
|-<br />
| <tt>power on</tt> || Switch target power on<br />
|-<br />
| <tt>power off</tt> || Switch target power off<br />
|-<br />
| <tt>power on perm</tt> || Set target power supply default to "on"<br />
|-<br />
| <tt>power off perm</tt> || Set target power supply default to "off"<br />
|-<br />
|}<br />
<br />
=== Flasher RX 14-pin connector ===<br />
<br />
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.<br />
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.<br />
<br />
[[File:jtag_port_14pin.wmf]]<br />
<br />
The following table lists the Flasher RX 14-pin JTAG pinout.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Pin !! Signal !! Type !! Description<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 5 || TDO || Input || JTAG data output from target CPU. Typically connected to TDO on target CPU.<br />
|-<br />
| 6 || --- || NC || This pin is not connected to Flasher RX.<br />
|-<br />
| 7 || --- || NC || This pin is not connected to Flasher RX.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 10 || --- || NC || This pin is not connected to Flasher RX.<br />
|-<br />
| 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.<br />
|-<br />
| 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".<br />
|-<br />
|}<br />
<br />
* All pins marked NC are not connected to Flasher RX. Any signal can be applied here; Flasher RX will simply ignore such a signal.<br />
* Pins 2, 12, 14 are GND pins connected to GND in Flasher RX. They should also be connected to GND in the target system.<br />
<br />
==== Target power supply ====<br />
<br />
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.<br />
Power can be controlled via the J-Link commander. The following commands are available to control power:<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Command !! Explanation<br />
|-<br />
| <tt>power on</tt> || Switch target power on<br />
|-<br />
| <tt>power off</tt> || Switch target power off<br />
|-<br />
| <tt>power on perm</tt> || Set target power supply default to "on"<br />
|-<br />
| <tt>power off perm</tt> || Set target power supply default to "off"<br />
|-<br />
|}<br />
<br />
=== Flasher PPC 14-pin connector ===<br />
<br />
Flasher PPC itself has a 20-pin JTAG connector mounted but comes with a 14-pin adapter for PowerPC devices.<br><br />
<br />
[[File:JTAG_PPC_14pin_adapter.wmf]]<br />
<br />
The following table lists the Flasher PPC 14-pin JTAG pinout.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Pin !! Signal !! Type !! Description<br />
|-<br />
| 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.<br />
|-<br />
| 3 || TDO || Input || JTAG data output from target CPU. Typically connected to TDO on target CPU.<br />
|-<br />
| 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.<br />
|-<br />
| 7 || --- || NC || This pin is not connected to Flasher PPC.<br />
|-<br />
| 8 || --- || NC || This pin is not connected to Flasher PPC.<br />
|-<br />
| 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".<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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).<br />
|-<br />
|}<br />
<br />
* All pins marked NC are not connected to Flasher PPC. Any signal can be applied here; Flasher PPC will simply ignore such a signal.<br />
* 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.<br />
<br />
=== Target board design ===<br />
<br />
We strongly advise following the recommendations given by the chip manufacturer. These recommendations are normally in line with the recommendations.<br />
Please refer to the the appropriate tables depending on the core:<br><br />
<br />
* [[#Pinout JTAG | Pinout JTAG]]<br />
* [[#Pinout SWD | Pinout SWD]]<br />
* [[#Flasher RX 14-pin connector | Flasher RX 14-pin connector]]<br />
* [[#Flasher PPC 14-pin connector | Flasher PPC 14-pin connector]]<br />
<br />
In case of doubt you should follow the recommendations given by the semiconductor manufacturer.<br />
<br />
==== Pull-up/pull-down resistors ====<br />
<br />
Unless otherwise specified by developer's manual, pull-ups/pull-downs are recommended to be between 2.2 kOhms and 47 kOhms.<br />
<br />
==== RESET, nTRST ====<br />
<br />
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><br />
<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.<br />
(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.<br />
<br />
=== Adapters ===<br />
<br />
==== JTAG Isolator ====<br />
<br />
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.<br />
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><br />
<br />
[[File:JTAG_Isolator_Port.wmf]]<br />
<br />
===== Pinout =====<br />
<br />
The following table shows the target-side pinout of the J-Link JTAG Isolator.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Pin !! Signal !! Type !! Description<br />
|-<br />
| 1 || VCC || Output || The target side of the isolator draws power over this pin.<br />
|-<br />
| 2 || VCC || Output || The target side of the isolator draws power over this pin.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 13 || TDO || Input || JTAG data output from target CPU. Typically connected to TDO of target CPU.<br />
|-<br />
| 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".<br />
|-<br />
| 17 || N/C || N/C || This pin is not connected on the target side of the isolator.<br />
|-<br />
| 19 || N/C || N/C || This pin is not connected on the target side of the isolator.<br />
|-<br />
|}<br />
<br />
Pins 4, 6, 8, 10, 12, 14, 16, 18, 20 are connected to GND.<br />
<br />
===== Safety =====<br />
This isolator provides '''basic isolation''' only. '''Do not use with hazardous voltages without further protection measures to avoid risk of electrical shock and fire.'''<br />
<br />
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.<br />
<br />
==== J-Link Needle Adapter ====<br />
<br />
To connect to the J-Link OB via programming interface the ''J-Link Needle Adapter'' is recommended.<br><br />
<br />
[[File:J-Link_Needle_Adapter_500x.jpg]]<br />
<br />
Why to choose the J-Link Needle Adapter:<br><br />
<ol><br />
<li>No additional connector required on your PCB</li><br />
<li>Very small footprint</li><br />
<li>High reliability spring pins for secure connections</li><br />
<li>Designed with 3 locating pins, so the adapter can not be connected the wrong way</li><br />
<li>No external power supply required! The J-Link Needle Adapter comes with the option to power the target hardware via J-Link.</li><br />
</ol><br />
These features make the J-Link Needle Adapter the perfect solution for production purposes.<br><br />
<br />
The pinout of the J-Link Needle Adapter is based on the pinout of the needle adapter by Tag-Connect.<br />
Please note, that both pinouts are not identical since the J-Link Needle Adapter comes with a 5V-supply pin.<br><br />
<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><br />
<br />
Moreover, the two "legs" on each side of the connector guarantee a stable and secure contact between pins and the PCB.<br><br />
<br />
[[File:J-Link_Needle_Adapter_Connector_pins_360x.jpg]]<br />
[[File:J-Link_Needle_Adapter_Pinout.jpg]]<br />
<br />
The J-Link Needle Adapter can be connected to J-Link via the ''20-pin 0.1'' JTAG to a 10-pin needle connector''.<br />
<br />
=== Target interface pin states in idle ===<br />
After completing a target operation (e.g. production programming via #AUTO), Flasher configures all target interface pins to input with the following exceptions:<br />
* [[#Flasher ARM 20-pin JTAG/SWD Connector|Reset pin (Pin 15)]] By default, the reset pin remains unchanged. If the "Start application" option is enabled, the reset pin is set to high output.<br />
* [[#Flasher ARM 20-pin JTAG/SWD Connector|5V-Supply (Pin 19)]] The state of this pin in idle depends on the configuration of the [[#Target power supply | Target power supply]].<br />
<br />
{{Note|1=If the target interface pins are configured as inputs, the target can drive the status of the pins with minimal interference from the Flasher. It is possible for minimal electrical currents to flow between Flasher and the target. <br>In case a complete electrical disconnection between Flasher and target is required, we recommend to make use of the [https://www.segger.com/products/production/flasher/accessories/adapters/relay-adapter/ SEGGER Relay Adapter].}}<br />
<br />
=== How to determine the hardware version ===<br />
<br />
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.<br />
Flasher has the hardware version printed on the back label.<br><br />
<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).<br />
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><br />
<br />
[[File:FlasherARM_version.gif]]<br />
<br />
== Support and FAQs ==<br />
<br />
This chapter contains troubleshooting tips together with solutions for common problems which might occur when using Flasher.<br />
There are several steps you can take before contacting support.<br />
Performing these steps can solve many problems and often eliminates the need for assistance.<br />
This chapter also contains a collection of frequently asked questions (FAQs) with answers.<br />
<br />
=== Contacting support ===<br />
<br />
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.<br />
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><br />
<br />
If you need to contact support, send the following information to<br><br />
''support@segger.com''<br><br />
<br />
* A detailed description of the problem<br />
* Flasher serial number<br />
* Information about your target hardware (processor, board, etc.).<br />
* <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]].<br />
<br />
Flasher is sold directly by SEGGER.<br />
<br />
=== Frequently Asked Questions ===<br />
<br />
'''Maximum JTAG speed'''<br />
{|<br />
|-<br />
| '''Q:''' || What is the maximum JTAG speed supported by Flasher?<br />
|-<br />
| '''A:''' || Flasher's maximum supported JTAG speed is 12MHz.<br />
|}<br />
<br />
'''Maximum download speed'''<br />
{|<br />
|-<br />
| '''Q:''' || What is the maximum download speed?<br><br />
|-<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.<br />
|}<br />
== Background information ==<br />
<br />
This chapter provides background information about flash programming in general. It<br />
also provides information about how to replace the firmware of Flasher manually.<br />
<br />
=== Flash programming ===<br />
<br />
Flasher comes with a DLL, which allows - amongst other functionalities - reading and writing RAM, CPU registers, starting and stopping the CPU, and setting breakpoints.<br />
<br />
==== How does flash programming via Flasher work? ====<br />
<br />
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.<br />
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.<br />
Different flash chips have different programming algorithms;the programming algorithm also depends on other things,<br />
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).<br />
The RAM code requires data to be programmed into the flash memory. The data is supplied by downloading it to RAM.<br />
<br />
==== Data download to RAM ====<br />
<br />
The data (or part of it) is downloaded to another part of the RAM of the target system.<br />
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.<br />
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.<br />
This process may have to be repeated until the entire data is programmed into the flash.<br />
<br />
==== Available options for flash programming ====<br />
<br />
In general, there are two possibilities in order to use Flasher for flash programming:<br><br />
<br />
* Using Flasher stand-alone to program the target flash memory (stand-alone mode)<br />
* Using Flasher in combination with J-Flash to program the target flash memory (Flasher in "PC-based mode")<br />
<br />
===== Using Flasher in stand-alone mode =====<br />
<br />
In order to use the Flasher in stand-alone mode, it has to be configured first.<br />
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]].<br />
<br />
===== J-Flash - Complete flash programming solution =====<br />
<br />
J-Flash is a stand-alone Windows application, which can read / write data files and program the flash in almost any ARM system.<br />
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''.<br />
<br />
==== How does the universal flash programming work? ====<br />
<br />
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><br />
<br />
Universal flash programming is available only for stand-alone mode.<br />
== Glossary ==<br />
<br />
This chapter describes important terms used throughout this manual.<br />
<br />
'''Big-endian'''<br><br />
Memory organization where the least significant byte of a word is at a higher address than the most significant byte. See Little-endian.<br />
<br />
'''Cache cleaning'''<br><br />
The process of writing dirty data in a cache to main memory.<br />
<br />
'''Coprocessor'''<br><br />
An additional processor that is used for certain operations, for example, for floating-point math calculations, signal processing, or memory management.<br />
<br />
'''Dirty data'''<br><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.<br />
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.<br />
<br />
'''Halfword'''<br><br />
A 16-bit unit of information.<br />
<br />
'''Host'''<br><br />
A computer which provides data and other services to another computer. Especially, a computer providing debugging services to a target being debugged.<br />
<br />
'''ICache'''<br><br />
Instruction cache.<br />
<br />
'''ID'''<br><br />
Identifier.<br />
<br />
'''IEEE 1149.1'''<br><br />
The IEEE Standard which defines TAP. Commonly (but incorrectly) referred to as JTAG.<br />
<br />
'''Image'''<br><br />
An executable file that has been loaded onto a processor for execution.<br />
<br />
'''Instruction Register'''<br><br />
When referring to a TAP controller, a register that controls the operation of the TAP.<br />
<br />
'''IR'''<br><br />
See Instruction Register.<br />
<br />
'''Joint Test Action Group (JTAG)'''<br><br />
The name of the standards group which created the IEEE 1149.1 specification.<br />
<br />
'''Little-endian'''<br><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.<br />
<br />
'''Memory coherency'''<br><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.<br />
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.<br />
<br />
'''Memory management unit (MMU)'''<br><br />
Hardware that controls caches and access permissions to blocks of memory, and translates virtual to physical addresses.<br />
<br />
'''Memory Protection Unit (MPU)'''<br><br />
Hardware that controls access permissions to blocks of memory. Unlike an MMU, a MPU does not translate virtual addresses to physical addresses.<br />
<br />
'''RESET'''<br><br />
Abbreviation of System Reset. The electronic signal which causes the target system other than the TAP controller to be reset.<br />
This signal is also known as "nSRST" "nSYSRST", "nRST", or "nRESET" in some other manuals. See also nTRST.<br />
<br />
'''nTRST'''<br><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.<br />
<br />
'''Open collector'''<br><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.<br />
<br />
'''Processor Core'''<br><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.<br />
It excludes optional coprocessors, caches, and the memory management unit.<br />
<br />
'''Remapping'''<br><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.<br />
<br />
'''RTOS'''<br><br />
Real Time Operating System.<br />
<br />
'''TAP Controller'''<br><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.<br />
<br />
'''Target'''<br><br />
The actual processor (real silicon or simulated) on which the application program is running.<br />
<br />
'''TCK'''<br><br />
The electronic clock signal which times data on the TAP data lines TMS, TDI, and TDO.<br />
<br />
'''TDI'''<br><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.<br />
<br />
'''TDO'''<br><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.<br />
<br />
'''Test Access Port (TAP)'''<br><br />
The port used to access a device's TAP Controller. Comprises TCK, TMS, TDI, TDO, and nTRST (optional).<br />
<br />
'''Transistor-transistor logic (TTL)'''<br><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.<br />
<br />
'''Word'''<br><br />
A 32-bit unit of information. Contents are taken as being an unsigned integer unless otherwise stated.<br />
== Literature and references ==<br />
This chapter lists documents, which we think may be useful to gain a deeper understanding of technical details.</div>JanBhttps://wiki.segger.com/index.php?title=UM08022_Flasher&diff=17595UM08022 Flasher2024-02-02T07:49:58Z<p>JanB: /* Target interface pin states in idle */</p>
<hr />
<div><!---<br />
General TBD:<br />
- LG: Right now - EVERYTHING<br />
===========================================<br />
--------------------[more specific, but on multiple locations]<br />
- check if all emphasis (bold, tt, blue, etc ) have made it into the new version<br />
- Add Information -> Additional information<br />
- use of the term free-of-charge utility/tool etc<br />
- check compliant to DocStandards_Rules.txt<br />
- Remove everything regarding to Kickstarter versions? eventually create a chapter Legacy -> Kickstarter version were available for hw version 5-x (200x-200x)...[..]<br />
- 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.<br />
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.<br />
- if week keep the IDE specific stuff in the manual, add Ozone, ES and J-Link Commander were no mentioned.<br />
- IDE specifics move into wiki confirmed by Alex<br />
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)<br />
- check all sections regarding licensing<br />
- Check compliance of J-Link emDocs with typographic conventions described in AboutThisDocument.emDoc. What should be altered? e.g. references<br />
- use uref at all (not blue)?<br />
- search and decide where to use \ref (ref with page number)<br />
- why is \ref (no single "option" \uref is more basic as \ref.....)<br />
- in text, use either \ref or \iref instead of \uref<br />
- in old manual, \H3 started on a new page (not per default, but set manually for api tables etc...)<br />
- move used old images and source files (visio etc) via svn (currently copied)<br />
--------------------[grammar / vocabulary discussion]<br />
- Product names<br />
-- Use of SEGGEPROBE in this document?<br />
- use license over licence<br />
- commandline or command-line?<br />
- toolchain or tool chain?<br />
- crossreference/cross-reference/cross reference?<br />
- overcurrent?<br />
- double words?<br />
- frontend?<br />
- Unit: Kbytes, KBytes, V, mV.... 9V or 9 V? Create rule in Vocabulary<br />
- baudrate or baud rate?<br />
- stackpointer or stack pointer<br />
- check where we should replace abbreviations with the long form (e.h. "milliseconds" instead of "ms")<br />
- config or configuration<br />
- filepointer or file pointer?<br />
--------------------[J-Link dep. specific]<br />
- J-Link command strings or J-Link Command strings or J-Link Command Strings<br />
- J-Link settings file or...<br />
- J-Link control panel or ......<br />
- J-Link script files or...<br />
---><br />
Flasher is a programming tool for microcontrollers with on-chip or external flash memory.<br />
Flasher is designed for programming flash targets with the J-Flash software or stand-alone.<br />
In addition to that Flasher can also be used as a regular J-Link. For more information about J-Link in general,<br />
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].<br />
<br />
<div class="toclimit-2"><br />
__TOC__<br />
</div><br />
<br />
== Flasher Software and Documentation Pack ==<br />
The Flasher Software and Documentation Pack, available for download on the [https://www.segger.com/downloads/flasher#FlasherSoftwareAndDocumentationPack SEGGER homepage], includes applications to be used with Flasher and in some cases with J-Link and J-Trace.<br><br />
It also comes with USB-drivers for J-Link, J-Trace and Flasher.<br />
<br />
=== Software overview ===<br />
{| class="wikitable"<br />
|-<br />
! Software !! Description<br />
|-<br />
| [[J-Link Configurator|Flasher Configurator]] || GUI-based configuration tool for Flasher. Allows configuration of USB identification as well as TCP/IP identification of Flashers.<br />
|-<br />
| [[FlasherControl|Flasher Control]] || Command-line tool to connect to the Flasher's command-line interface via USB.<br />
|-<br />
| [[J-Flash]] || Flash programming application.<br />
|-<br />
| [[J-Flash SPI]] || (Q)SPI flash programming application.<br />
|-<br />
| [[J-Link Commander]] || Command-line tool with basic functionality for target analysis.<br />
|-<br />
| [[J-Link Registration]] || SEGGER J-Link Registration utility to register your SEGGER product such as a J-Link, J-Trace or Flasher.<br />
|-<br />
| [[JTAGLoad]] || Command line tool that opens an svf file and sends the data in it via J-Link / J-Trace or Flasher to the target.<br />
|-<br />
| [https://www.segger.com/downloads/flasher/UM08037.pdf U-Flash] || Tool for creating standalone Flasher projects.<br />
|}<br />
<br />
== Flasher overview ==<br />
Flasher connects to a PC using the USB/Ethernet/RS232 interface (what host interfaces are available depends on the Flasher model),<br />
running Windows, Linux & MacOS. In stand-alone mode,<br />
Flasher can be driven by the start/stop button, or via the RS232 interface (handshake control or ASCII interface).<br />
Flasher always has a 20-pin connector, which target interfaces are supported depends on the Flasher model:<br />
* Flasher ARM: JTAG and SWD are supported.<br />
* Flasher RX: JTAG is supported. Flasher comes with additional 14-pin RX adapter<br />
* Flasher PPC: JTAG is supported. Flasher comes with additional 14-pin PPC adapter.<br />
* Flasher PRO: JTAG and SWD are supported.<br />
* Flasher Compact: JTAG and SWD are supported.<br />
<br />
=== Features of Flasher ARM/PPC/RX/PRO ===<br />
* Three boot modes: PC-based mode, stand-alone mode, file access mode<br />
* Stand-alone JTAG/SWD programmer (Once set up, Flasher can be controlled without the use of PC program)<br />
* No power supply required, powered through USB<br />
* Supports internal and external flash devices<br />
* 128 MB memory for storage of target program<br />
* Can be used as J-Link (emulator) with a download speed of up to 720 Kbytes/second<br />
* Data files can updated via USB/Ethernet (using the J-Flash software), via FTP, via RS232 or via the file access mode of Flasher<br />
<br />
{| class="seggertable"<br />
|-<br />
! Flasher model !! Supported cores !! Supported target interfaces !! Flash programming speed (depending on target hardware)<br />
|-<br />
| Flasher ARM || ARM7/ARM9/Cortex-M || JTAG, SWD || between 170 and 300 Kbytes/second<br />
|-<br />
| Flasher RX || Renesas RX610, RX621, RX62N, RX62T || JTAG || between 30-300 Kbytes/second<br />
|-<br />
| Flasher PPC || Power PC e200z0 || JTAG || up to 138 Kbytes/second<br />
|-<br />
| Flasher PRO || ARM7/ARM9/Cortex-M Renesas RX610, RX621, RX62N, RX62T Power PC e200z0 || JTAG, SWD || between 30-300 Kbytes/ second<br />
|-<br />
|}<br />
<br />
==== Features of Flasher Compact ====<br />
<br />
* Three boot modes: PC-based mode, stand-alone mode, file access mode<br />
* Stand-alone JTAG/SWD programmer (Once set up, Flasher can be controlled without the use of PC program)<br />
* No power supply required, powered through USB<br />
* Supports internal and external flash devices<br />
* 128 MB memory for storage of target program<br />
* Can be used as J-Link (emulator) with a download speed of up to 720 Kbytes/second<br />
* Data files can updated via USB/Ethernet (using the J-Flash software) or via the file access mode of Flasher<br />
<br />
{| class="seggertable"<br />
|-<br />
! Flasher model !! Supported cores !! Supported target interfaces !! Flash programming speed (depending on target hardware)<br />
|-<br />
| Flasher ARM || ARM7/ARM9/Cortex-M || JTAG, SWD || between 170 and 300 Kbytes/second<br />
|-<br />
| Flasher RX || Renesas RX610, RX621, RX62N, RX62T || JTAG || between 30-300 Kbytes/second<br />
|-<br />
| Flasher PPC || Power PC e200z0 || JTAG || up to 138 Kbytes/second<br />
|-<br />
| Flasher Compact || ARM7/ARM9/Cortex-M Renesas RX610, RX621, RX62N, RX62T Power PC e200z0 || JTAG, SWD || between 30-300 Kbytes/ second<br />
|-<br />
|}<br />
<br />
==== Features of Flasher Portable/Flasher Portable PLUS ====<br />
<br />
* Stand-alone in-circuit-programmer (Once set up, Flasher can be controlled without the use of a PC program)<br />
* Powered by an internal rechargeable battery (standard batteries for Flasher Portable), no Laptop or external power supply required.<br />
* Multiple firmware images can be stored on Flasher<br />
* 128 MB memory for storage of target program<br />
* Flasher Portable PLUS supports a simple selection of up to 99 firmware images via buttons (since V7.90)<br />
* Supported CPUs: ARM Cortex, Legacy ARM7/9, Renesas RX, Freescale PowerPC<br />
* Supports internal and external flash<br />
* Free software updates<ref name="legitimateOwned" />, 1 year of support<br />
* Data files can be updated via the file access mode functionality or via J-Flash<br />
* Programming speed between 30-300 Kbytes/second (actual speed depends on target hardware)<br />
{{Note|1=Ethernet and RS232 as host interface are not available for Flasher Portable}}<br />
<references><br />
<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.<br />
As a legitimate owner of a SEGGER Flasher, you can always download the latest software free of charge.<br />
Though not planned and not likely, we reserve the right to change this policy.<br />
Note that older models may not be supported by newer versions of the software.<br />
Typically, we support older models with new software at least 3 years after end of life.<br />
</ref><br />
</references><br />
<br />
{| class="seggertable"<br />
|-<br />
! Supported cores !! Supported target interfaces !! Flash programming speed (depending on target hardware)<br />
|-<br />
| ARM7/ARM9/Cortex-M || JTAG, SWD || between 30-300 Kbytes/second<br />
|-<br />
| Renesas RX610, RX621, RX62N, RX62T || JTAG || between 170 and 300 Kbytes/second<br />
|-<br />
| Power PC e200z0 || JTAG || up to 138 Kbytes/second<br />
|-<br />
|}<br />
<br />
==== Working environment ====<br />
<br />
'''General'''<br><br />
The Flasher can operate from a PC with an appropriate software like J-Flash or in stand-alone mode.<br />
<br />
'''Host System'''<br><br />
IBM PC/AT or compatible CPU: 486 (or better) with at least 128MB of RAM,<br />
running Windows, Linux & MacOS. It needs to have a USB, Ethernet or RS232 interface available for communication with Flasher.<br />
<br />
'''Power supply'''<br><br />
Flasher Portable: 3x standard AAA batteries or 5V DC, min. 100 mA via USB connector.<br />
<br />
Flasher Portable PLUS: internal rechargeable 680mAh Li-Ion battery, min. 100 mA via USB connector.<br />
<br />
Other Flashers: 5V DC, min. 100 mA via USB connector.<br />
<br />
'''Installing Flasher PC-software'''<br><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><br />
More information about the package you can find in the similar [[J-Link Software and Documentation Pack]].<br><br />
The package includes U-Flash and J-Flash, the main tools for flashing targets:<br />
* J-Flash : J-Flash User Guide ([https://wiki.segger.com/UM08003_JFlash UM08003_JFlash.pdf]).<br />
* U-Flash : U-Flash User Guide ([https://www.segger.com/downloads/flasher/UM08037.pdf UM08037_UniversalFlashLoader.pdf]).<br />
<br />
=== Specifications ===<br />
<br />
<br />
==== Specifications for Flasher ARM ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Windows, Linux & MacOS<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C<br />
|-<br />
| Storage Temperature || -20 °C ... +60 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
!colspan="100%"| Mechanical<br />
|-<br />
| Size (without cables) || 121mm x 66mm x 30mm<br />
|-<br />
| Weight (without cables) || 119g<br />
|-<br />
!colspan="100%"| Available interfaces<br />
|-<br />
| USB Host interface || USB 2.0, full speed<br />
|-<br />
| Ethernet Host interface || 10/100 MBit<br />
|-<br />
| RS232 Host interface || RS232 9-pin<br />
|-<br />
| Target interface || JTAG 20-pin (14-pin adapter available)<br />
|-<br />
!colspan="100%"| JTAG Interface, Electrical<br />
|-<br />
| Power Supply || USB powered, 100mA for Flasher ARM. 500 mA if target is powered by Flasher ARM<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| Target supply voltage || Supply voltage is 5V, max.<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6 <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Max. JTAG speed || up to 12MHz<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
===== Flasher ARM download speed =====<br />
<br />
The following table lists the Flasher ARM performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! ARM7 memory download<br />
|-<br />
| Flasher ARM || 720 Kbytes/s (12MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
<br />
==== Specifications for Flasher RX ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Windows, Linux & MacOS<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C<br />
|-<br />
| Storage Temperature || -20 °C ... +60 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
!colspan="100%"| Mechanical<br />
|-<br />
| Size (without cables) || 121mm x 66mm x 30mm<br />
|-<br />
| Weight (without cables) || 119g<br />
|-<br />
!colspan="100%"| Available interfaces<br />
|-<br />
| USB Host interface || USB 2.0, full speed<br />
|-<br />
| Ethernet Host interface || 10/100 MBit<br />
|-<br />
| RS232 Host interface || RS232 9-pin<br />
|-<br />
| Target interface || JTAG 20-pin (shipped with 14-pin adapter for Renesas RX)<br />
|-<br />
!colspan="100%"| JTAG Interface, Electrical<br />
|-<br />
| Power Supply || USB powered, 100mA for Flasher RX. 500 mA if target is powered by Flasher RX<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| 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)<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6 <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Max. JTAG speed || up to 12MHz<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
===== Flasher RX download speed =====<br />
<br />
The following table lists the Flasher RX performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! Flasher RX600 series memory download<br />
|-<br />
| Flasher RX || 720 Kbytes/s (12MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
<br />
==== Specifications for Flasher PPC ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Windows, Linux & MacOS<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C<br />
|-<br />
| Storage Temperature || -20 °C ... +60 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
!colspan="100%"| Mechanical<br />
|-<br />
| Size (without cables) || 121mm x 66mm x 30mm<br />
|-<br />
| Weight (without cables) || 119g<br />
|-<br />
!colspan="100%"| Available interfaces<br />
|-<br />
| USB Host interface || USB 2.0, full speed<br />
|-<br />
| Ethernet Host interface || 10/100 MBit<br />
|-<br />
| RS232 Host interface || RS232 9-pin<br />
|-<br />
| Target interface || JTAG 20-pin (shipped with 14-pin adapter for Renesas PPC)<br />
|-<br />
!colspan="100%"| JTAG Interface, Electrical<br />
|-<br />
| Power Supply || USB powered, 100mA for Flasher PPC. 500 mA if target is powered by Flasher PPC<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| Target supply voltage || Supply voltage is 5V, max.<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6 <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Max. JTAG speed || up to 12MHz<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
===== Flasher RX download speed =====<br />
<br />
The following table lists the Flasher PPC performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! Memory download<br />
|-<br />
| Flasher PPC || 530 Kbytes/s (8 MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
<br />
==== Specifications for Flasher PRO ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Windows, Linux & MacOS<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C<br />
|-<br />
| Storage Temperature || -20 °C ... +60 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
!colspan="100%"| Mechanical<br />
|-<br />
| Size (without cables) || 121mm x 66mm x 30mm<br />
|-<br />
| Weight (without cables) || 119g<br />
|-<br />
!colspan="100%"| Available interfaces<br />
|-<br />
| USB Host interface || USB 2.0, full speed<br />
|-<br />
| Ethernet Host interface || 10/100 MBit<br />
|-<br />
| RS232 Host interface || RS232 9-pin<br />
|-<br />
| Target interface || JTAG 20-pin (14-pin adapter available)<br />
|-<br />
!colspan="100%"| JTAG Interface, Electrical<br />
|-<br />
| Power Supply || USB powered, 100mA for Flasher PRO. 500 mA if target is powered by Flasher PRO<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| Target supply voltage || Supply voltage is 5V, max.<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6 <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Max. JTAG speed || up to 12MHz<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
<br />
===== Supported CPU cores =====<br />
<br />
The Flasher PRO supports the following CPU cores:<br />
<br />
'''ARM Cortex'''<br><br />
* Cortex-A5<br />
* Cortex-A8<br />
* Cortex-A9<br />
* Cortex-R4<br />
* Cortex-R5<br />
* Cortex-M0<br />
* Cortex-M0+<br />
* Cortex-M1<br />
* Cortex-M3<br />
* Cortex-M4<br />
<br />
'''ARM (legacy cores)'''<br><br />
* ARM720T<br />
* ARM7TDMI<br />
* ARM7TDMI-S<br />
* ARM920T<br />
* ARM922T<br />
* ARM926EJ-S<br />
* ARM946E-S<br />
* ARM966E-S<br />
* ARM1136JF-S<br />
* ARM1136J-S<br />
* ARM1156T2-S<br />
* ARM1156T2F-S<br />
* ARM1176JZ-S<br />
* ARM1176JZF<br />
* ARM1176JZF-S<br />
<br />
'''Renesas RX'''<br><br />
* RX111<br />
* RX210<br />
* RX220<br />
* RX21A<br />
* RX610<br />
* RX621<br />
* RX62G<br />
* RX62N<br />
* RX62T<br />
* RX630<br />
* RX631<br />
* RX63N<br />
* RX63T<br />
<br />
'''Freescale Power PC'''<br><br />
* e200z0<br />
<br />
===== Supported Target interfaces =====<br />
<br />
The Flasher PRO supports the following target interfaces:<br />
<br />
* JTAG<br />
* SWD<br />
* FINE<br />
* SPD<br />
<br />
===== Flasher PRO download speed =====<br />
<br />
The following table lists the Flasher PRO performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! ARM7 memory download<br />
|-<br />
| Flasher PRO || 720 Kbytes/s (12MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
<br />
==== Specifications for Flasher Compact ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Microsoft Windows (x86/x64)<br>Linux (x86/x64/Arm)<br>macOS (x86/Apple M1)<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C<br />
|-<br />
| Storage Temperature || -20 °C ... +65 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
| Size (without cables) || 70mm x 45mm x 18mm<br />
|-<br />
| Weight (without cables) || 40g<br />
|-<br />
| USB Host interface || USB 2.0 (Hi-Speed); Micro USB<br />
|-<br />
| Target interface || JTAG 20-pin (14-pin adapter available)<br />
|-<br />
| Power Supply || USB powered, 130mA (idle)<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| Target supply voltage || Supply voltage is 5V, max.<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
| Supported target interfaces || SPI, QSPI, 8051 C2, cJTAG, FINE, ICSP, IIC, ISP, JTAG, PDI, SPD, SWD, SWIM, UART, UPDI<br />
|-<br />
| Serial transfer rate between Flasher Compact and target || Up to 50 MHz (Depending on target interface)<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6 <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
===== Supported CPU cores =====<br />
<br />
The Flasher Compact supports the following CPU cores:<br />
'''ARM Cortex'''<br><br />
* Cortex-A5<br />
* Cortex-A8<br />
* Cortex-A9<br />
* Cortex-R4<br />
* Cortex-R5<br />
* Cortex-M0<br />
* Cortex-M0+<br />
* Cortex-M1<br />
* Cortex-M3<br />
* Cortex-M4<br />
<br />
'''ARM (legacy cores)'''<br><br />
* ARM720T<br />
* ARM7TDMI<br />
* ARM7TDMI-S<br />
* ARM920T<br />
* ARM922T<br />
* ARM926EJ-S<br />
* ARM946E-S<br />
* ARM966E-S<br />
* ARM1136JF-S<br />
* ARM1136J-S<br />
* ARM1156T2-S<br />
* ARM1156T2F-S<br />
* ARM1176JZ-S<br />
* ARM1176JZF<br />
* ARM1176JZF-S<br />
<br />
'''Renesas RX'''<br><br />
* RX111<br />
* RX210<br />
* RX220<br />
* RX21A<br />
* RX610<br />
* RX621<br />
* RX62G<br />
* RX62N<br />
* RX62T<br />
* RX630<br />
* RX631<br />
* RX63N<br />
* RX63T<br />
<br />
'''Freescale Power PC'''<br><br />
* e200z0<br />
<br />
===== Flasher Compact download speed =====<br />
<br />
The following table lists the Flasher Compact performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! ARM7 memory download<br />
|-<br />
| Flasher Compact || 720 Kbytes/s (12MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
<br />
==== Specifications for Flasher Portable PLUS ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Windows, Linux & MacOS<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C (normal operation)<br>+5 °C ... +45 °C (battery charging)<br />
|-<br />
| Storage Temperature || -20 °C ... +45 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
| 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)<br />
|-<br />
| Charging via USB || 70 minutes (at 1A charging current)<br />
|-<br />
!colspan="100%"| Mechanical<br />
|-<br />
| Size (without cables) || 126mm x 70mm x 28mm<br />
|-<br />
| Weight (without cables) || 140g<br />
|-<br />
!colspan="100%"| Available interfaces<br />
|-<br />
| USB Host interface || USB 2.0<br />
|-<br />
| Target interface || Standard 20-pin 0.1" connector (Adapters available).<br />
|-<br />
!colspan="100%"| Target Interface, Electrical<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| Target supply voltage || Supply voltage is 4.5V, max. (depends on the current battery voltage).<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6 <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Max. JTAG speed || up to 12MHz<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
===== Supported CPU cores =====<br />
<br />
The Flasher Portable PLUS supports the following CPU cores:<br />
<br />
'''ARM Cortex'''<br><br />
* Cortex-A5<br />
* Cortex-A8<br />
* Cortex-A9<br />
* Cortex-R4<br />
* Cortex-R5<br />
* Cortex-M0<br />
* Cortex-M0+<br />
* Cortex-M1<br />
* Cortex-M3<br />
* Cortex-M4<br />
<br />
'''ARM (legacy cores)'''<br><br />
* ARM720T<br />
* ARM7TDMI<br />
* ARM7TDMI-S<br />
* ARM920T<br />
* ARM922T<br />
* ARM926EJ-S<br />
* ARM946E-S<br />
* ARM966E-S<br />
* ARM1136JF-S<br />
* ARM1136J-S<br />
* ARM1156T2-S<br />
* ARM1156T2F-S<br />
* ARM1176JZ-S<br />
* ARM1176JZF<br />
* ARM1176JZF-S<br />
<br />
'''Renesas RX'''<br><br />
* RX111<br />
* RX210<br />
* RX220<br />
* RX21A<br />
* RX610<br />
* RX621<br />
* RX62G<br />
* RX62N<br />
* RX62T<br />
* RX630<br />
* RX631<br />
* RX63N<br />
* RX63T<br />
<br />
'''Freescale Power PC'''<br><br />
* e200z0<br />
<br />
===== Supported Target interfaces =====<br />
<br />
The Flasher Portable PLUS supports the following target interfaces:<br />
* JTAG<br />
* SWD<br />
* FINE<br />
* SPD<br />
<br />
===== Flasher Portable PLUS download speed =====<br />
<br />
The following table lists the Flasher Portable PLUS performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! ARM7 memory download<br />
|-<br />
| Flasher PRO || 720 Kbytes/s (12MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
<br />
==== Specifications for Flasher Portable ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Windows, Linux & MacOS<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C<br />
|-<br />
| Storage Temperature || -20 °C ... +65 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
| Power Supply || a) USB powered, 100mA for Flasher Portable. 500 mA if target is powered by Flasher Portable<br>b) Batteries powered (3xAAA)<br />
|-<br />
!colspan="100%"| Mechanical<br />
|-<br />
| Size (without cables) || 130mm x 65mm x 25mm<br />
|-<br />
| Weight (without cables) || 120g<br />
|-<br />
!colspan="100%"| Available interfaces<br />
|-<br />
| USB Host interface || USB 2.0<br />
|-<br />
| Target interface || Standard 20-pin 0.1" connector (Adapters available).<br />
|-<br />
!colspan="100%"| Target Interface, Electrical<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| Target supply voltage || Supply voltage is 4.5V, max. (depends on the current battery voltage).<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6V <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Max. JTAG speed || up to 12MHz<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
===== Supported CPU cores =====<br />
<br />
The Flasher Portable supports the following CPU cores:<br />
<br />
'''ARM Cortex'''<br><br />
* Cortex-A5<br />
* Cortex-A8<br />
* Cortex-A9<br />
* Cortex-R4<br />
* Cortex-R5<br />
* Cortex-M0<br />
* Cortex-M0+<br />
* Cortex-M1<br />
* Cortex-M3<br />
* Cortex-M4<br />
<br />
'''ARM (legacy cores)'''<br><br />
* ARM720T<br />
* ARM7TDMI<br />
* ARM7TDMI-S<br />
* ARM920T<br />
* ARM922T<br />
* ARM926EJ-S<br />
* ARM946E-S<br />
* ARM966E-S<br />
* ARM1136JF-S<br />
* ARM1136J-S<br />
* ARM1156T2-S<br />
* ARM1156T2F-S<br />
* ARM1176JZ-S<br />
* ARM1176JZF<br />
* ARM1176JZF-S<br />
<br />
'''Renesas RX'''<br><br />
* RX111<br />
* RX210<br />
* RX220<br />
* RX21A<br />
* RX610<br />
* RX621<br />
* RX62G<br />
* RX62N<br />
* RX62T<br />
* RX630<br />
* RX631<br />
* RX63N<br />
* RX63T<br />
<br />
'''Freescale Power PC'''<br><br />
* e200z0<br />
<br />
===== Supported Target interfaces =====<br />
<br />
The Flasher Portable supports the following target interfaces:<br />
<br />
* JTAG<br />
* SWD<br />
* FINE<br />
* SPD<br />
<br />
===== Flasher Portable download speed =====<br />
<br />
The following table lists the Flasher Portable performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! ARM7 memory download<br />
|-<br />
| Flasher PRO || 720 Kbytes/s (12MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
== Working with Flasher ==<br />
<br />
This chapter describes functionality and how to use Flasher.<br />
<br />
=== Flasher Portable PLUS ===<br />
<br />
The Flasher Portable PLUS is a portable version of SEGGERs Flasher family,<br />
which has been designed to fill the need of an extremely portable, production grade,<br />
Flash programmer used for in-field firmware updates. No need to be tethered to an outlet,<br />
it is powered by an integrated Li-Ion cell (680mAh).<br />
The Flasher Portable PLUS programs flash targets in stand-alone mode or via J-Flash PC software.<br><br />
<br />
Furthermore the Flasher Portable PLUS allows the user to select between 99 data images to be programmed (since V7.90).<br />
The images can be easily selected by using the SEL button on the front of the housing.<br />
For more information about support for multiple images, please refer to [[#Multiple File Support | Multiple File Support]].<br><br />
For setup and configuration purposes, the Flasher Portable PLUS connects to a PC via USB interface,<br />
running Windows, Linux & MacOS and has a built-in standard 20-pin J-Link target connector.<br><br />
<br />
{{Note|1=Ethernet and RS232 as host interface are not available for the Flasher Portable PLUS.}}<br />
<br />
==== Housing & Buttons ====<br />
<br />
The Flasher Portable PLUS comes with a display, which is for example used to represent the status of an ongoing flash progress.<br />
Furthermore, there are three buttons which allow the user to control Flasher Portable PLUS.<br />
For a detailed description of the functions, take a look at the table below:<br />
<br />
<!-- LG xxxxxx edit image with labels for buttons? (Is this actually necessary? Buttons are basically self-explanatory...) --><br />
[[File:Flasher_Portable_PLUS.png | 500px]]<br />
<br />
{| class="seggertable"<br />
|-<br />
! Button !! Description<br />
|-<br />
| Program || Start programming process with the currently selected image.<br />
|-<br />
| Select image || Select the image to be programmed next time the Program button is pressed.<br />
|-<br />
| 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.<br />
|-<br />
|}<br />
<br />
==== Configuration ====<br />
<br />
The Flasher Portable PLUS has some configuration options the other Flashers do not have.<br />
{| class="seggertable"<br />
|-<br />
! Option !! Description !! Value range !! Default value<br />
|-<br />
| AutoPowerOffOnIdle || Specifies the time interval after which the Flasher Portable will turn off without any user action || 1 to 3600 || 60<br />
|-<br />
| ShowDatCRCAfterProgramming || Activates displaying the data file CRC after the programming in the pop up message || 0 = inactive, 1 = active || 0<br />
|-<br />
|}<br />
<br />
If the <tt>Flasher.ini</tt> does not contain a <tt>[Config]</tt> section with the configuration option, the default value is used.<br />
<br />
'''Example:'''<br><br />
This sample will show the data file CRC after the programming and the auto power of is set to five minutes (=300 seconds).<br />
<br />
<source lang="c"><br />
[CONFIG]<br />
AutoPowerOffOnIdle = "300"<br />
ShowDatCRCAfterProgramming = "1"<br />
</source><br />
<br />
=== Flasher Portable ===<br />
<br />
The Flasher Portable is a portable version of SEGGERs Flasher family, which has been designed to fill the need of an extremely portable,<br />
production grade, Flash programmer used for in-field firmware updates. No need to be tethered to an outlet,<br />
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><br />
<br />
Furthermore the Flasher Portable allows the user to select between four data images to be programmed.<br />
The images can be easily selected by using the arrow buttons on the front of the housing.<br />
For more information about support for multiple images, please refer to [[#Multiple File Support | Multiple File Support]].<br><br />
For setup and configuration purposes, the Flasher Portable connects to a PC via USB interface,<br />
running Windows, Linux & MacOS and has a built-in standard 20-pin J-Link target connector.<br><br />
<br />
{{Note|1=Ethernet and RS232 as host interface are not available for the Flasher Portable.}}<br />
<br />
==== Housing & Buttons ====<br />
<br />
The Flasher Portable comes with several leds which are for example used to represent the status of an ongoing flash progress.<br />
Furthermore, there are three buttons which allow the user to control Flasher Portable.<br />
For a detailed description of the functions, take a look at the two tables below:<br />
<br />
<!-- LG xxxxxx edit image with labels for buttons?--><br />
[[File:Flasher_Portable_Top_2.png | 500px]]<br />
<br />
{| class="seggertable"<br />
|-<br />
! LED !! Description<br />
|-<br />
| ACTIVE || GREEN. Blinks while the Flasher Portable is busy / performs operations on the target.<br />
|-<br />
| PASS/FAIL || GREEN/RED. Indicates, if the last flashing cycle was successful.<br />
<ul><br />
<li> GREEN: Flashing cycle completed successfully.</li><br />
<li> RED: Flashing cycle completed with error.</li><br />
</ul><br />
|-<br />
| 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]].<br />
|-<br />
| POWER || GREEN: Indicates if Flasher is currently powered. Blinks while Flasher Portable tries to enumerate via USB.<br />
|-<br />
| 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.<br />
|-<br />
|}<br />
<br />
{| class="seggertable"<br />
|-<br />
! Button !! Description<br />
|-<br />
| Program || Start programming process with the currently selected image.<br />
|-<br />
| Select image || Select the image to be programmed next time the <tt>Program</tt> button is pressed.<br />
|-<br />
| 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<br />
|-<br />
|}<br />
<br />
=== File system ===<br />
<br />
The Flasher with hardware version 4 and lower supports 8.3 filenames only (8 characters filename, 3 characters file extension).<br />
Using longer filenames may result in incorrect operation. Integrated functions,<br />
like the FTP server or the terminal server, will refuse writing files with long filenames.<br />
<br />
=== Setting up the IP interface ===<br />
<br />
Setting up the IP interface<br />
Some of the Flasher models come with an additional Ethernet interface to communicate with the host system.<br />
These Flashers also come with a built-in webserver which allows some basic setup of the emulator,<br />
e.g. configuring a default gateway which allows using it even in large intranets. For more information,<br />
please refer to [[#TCP Services | TCP Services]].<br />
<br />
==== Connecting the first time ====<br />
<br />
When connecting Flasher the first time, it attempts to acquire an IP address via DHCP.<br />
The recommended way for finding out which IP address has been assigned to Flasher is, to use the J-Link Configurator.<br />
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.<br />
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''.<br />
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,<br />
please refer to ''UM08001, J-Link / J-Trace User Guide'', chapter ''Setup'', section ''Setting up the IP interface''.<br />
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]].<br />
<br />
=== Operating modes ===<br />
<br />
All Flashers except the Flasher ATE are able to boot in 3 different modes:<br />
<br />
* PC-based mode<br />
* Stand-alone mode<br />
* File access mode<br />
<br />
{{Note|1=The Flasher ATE only supports the stand-alone mode.}}<br />
<br />
'''Definition PC-based mode'''<br><br />
Flasher is connected to a PC via USB/Ethernet and controlled by a PC application (J-Flash).<br />
If there is an RS232 connection to a PC, does not have any influence on if PC-based mode is entered or not.<br />
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, ...)<br />
<br />
'''Definition Stand-alone mode'''<br><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.<br />
<br />
'''Definition file access mode'''<br><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.<br />
In this mode, Flasher enumerates as a mass storage device (like an USB Stick) at the host PC.<br />
In this mode, configuration + data files can be manually placed on the Flasher and the Flasher logfile can be read out.<br />
If you are using a self-powered Flasher such as the Flasher Portable Plus, the Flasher must be turned off before connecting it.<br />
<br />
==== PC-based mode ====<br />
If you want to use Flasher for the first time you need to install the J-Link software and documentation package.<br />
After installation, connect Flasher to the host PC via USB or Ethernet.<br />
For more information about how to install the J-Link software and documentation package please refer to [[J-Link Software and Documentation Pack]].<br />
<br />
===== Connecting the target system =====<br />
<br />
'''Power-on sequence'''<br><br />
In general, Flasher should be powered on before connecting it with the target device.<br />
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.<br />
Power-on the device after you connected Flasher to it. Flasher will boot in "PC-based mode".<br />
<br />
'''Verifying target device connection with J-Link.exe'''<br><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.<br />
Then start the J-Link command line tool <tt>JLink.exe</tt>,<br />
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.<br />
The screenshot below shows the output of <tt>JLink.exe</tt>.<br />
<br />
[[File:flasher_jlinkmode.gif]]<br />
<br />
===== LED status indicators =====<br />
<br />
In PC-based mode, there are also certain LED status codes defined:<br />
<br />
{| class="seggertable"<br />
|-<br />
! # !! Status of LED !! Meaning<br />
|-<br />
| 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.<br />
|-<br />
| 0 || GREEN<br>constant || Flasher enumeration process is complete and it is ready to be controlled by a PC application.<br />
|-<br />
|}<br />
<br />
==== Stand-alone mode ====<br />
<br />
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]].<br />
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).<br />
In the "stand-alone mode" Flasher can be used as a stand-alone flash programmer.<br><br />
<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]].}}<br />
<br />
===== LED status indicators =====<br />
Progress and result of an operation is indicated by Flasher's LEDs. The behavior is different for J-Link and stand-alone mode.<br />
For a definition of the different modes, please refer to [[#Operating modes | Operating modes]].<br />
The following table describes the behavior of the LEDs in stand-alone mode.<br />
<br />
{| class="seggertable"<br />
|-<br />
! # !! Status of LED !! Meaning<br />
|-<br />
| 0 || GREEN<br>constant || Flasher waits for a start trigger to perform an operation in stand-alone mode.<br />
|-<br />
| 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><br />
|-<br />
| 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.<br />
|-<br />
|}<br />
Older Flasher models have a different behavior.<br />
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:<br />
<br />
* 1621xxxxx (Flasher ARM V2)<br />
* 1630xxxxx (Flasher ARM V3)<br />
* 4210xxxxx (Flasher PPC V1)<br />
* 4110xxxxx (Flasher RX V1)<br />
<br />
{| class="seggertable"<br />
|-<br />
! # !! Status of LED !! Meaning<br />
|-<br />
| 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.<br />
|-<br />
| 1 || GREEN<br>constant || Connect to target and perform init sequence.<br />
|-<br />
| 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><br />
|-<br />
| 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.<br />
|-<br />
|}<br />
<br />
==== File access mode ====<br />
<br />
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".<br />
If you are using a self-powered Flasher such as the Flasher Portable Plus, the Flasher must be turned off before connecting it.<br />
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.<br />
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>.<br />
<br />
[[File:flasher_mode_msd.gif]]<br />
<br />
<tt>FLASHER.CFG</tt> contains the configuration settings for programming the target device and <tt>FLASHER.DAT</tt> contains the data to be programmed.<br />
<tt>FLASHER.LOG</tt> contains all logging information about the commands, performed in stand-alone mode.<br />
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><br />
<br />
Currently, J-Flash does not support to configure Flasher for automated serial number programming.<br><br />
<br />
If you want to configure multiple Flasher for the same target you do not have to use J-Flash all the time.<br />
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".<br />
<br />
=== Setting up Flasher for stand-alone mode ===<br />
{{Note| All Options how to set up the Flasher for stand-alone mode you can find here: [[Flasher/Download project to Flasher|Download project to the Flasher]]}}<br />
<br />
In order to set up Flasher for the stand-alone mode it needs to be configured once using the J-Flash software.<br />
For more information about J-Flash, please refer to the ''J-Flash User Guide''.<br><br />
<br />
After starting J-Flash, open the appropriate J-Flash project for the target Flasher shall be configured for, by selecting '''File''' -> '''Open Project'''.<br />
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><br />
<br />
After the appropriate project has been opened / created, the data file which shall be programmed needs to be loaded, by selecting '''File''' -> '''Open'''.<br />
After this J-Flash should look like in the screenshot below.<br />
<br />
[[File:jflash_projectfile_datafile.gif]]<br />
<br />
Before downloading the configuration (project) and program data (data file) to Flasher, the connection type (USB/IP) needs to be selected in the project.<br />
These settings are also saved on a per-project basis, so this also only needs to be setup once per J-Flash project.<br />
The connection dialog is opened by clicking '''Options''' -> '''Project settings''' -> '''General'''.<br />
<br />
[[File:jflash_connection_dialog.gif]]<br />
<br />
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.<br />
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.<br />
The user then can simply select the Flash he wants to download the configuration to.<br />
<br />
[[File:EmuSelectionDialog.gif]]<br />
<br />
In order to download the configuration and program data to the Flasher, simply select '''File''' -> '''Download config & data file to Flasher'''.<br />
<br />
[[File:jflash_download_to_emul.gif]]<br />
<br />
The J-Flash log window indicates that the download to the emulator was successful.<br />
<br />
[[File:jflash_download_to_emu_succ.gif]]<br />
<br />
From now on, Flasher can be used in stand-alone mode (without host PC interaction) for stand-alone programming.<br />
<br />
==== Preparing for stand-alone operation manually ====<br />
<br />
As an alternative, J-Flash can also be used to save config and data file to a hard drive.<br><br />
<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,<br />
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.<br />
<br />
'''Creating config and data files'''<br><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><br />
<br />
For some devices, additional files (*.PEX) are needed.<br />
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.<br />
<br />
'''About *.PEX files'''<br><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,<br />
the following needs to be taken care of:<br><br />
<br />
For some devices, special connect, reset etc. sequences are necessary which are stored in so-called *.PEX files on the Flasher.<br><br />
<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><br />
<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><br />
The *.PEX files need to be placed in a subdirectory with the same name as the corresponding *.cfg file.<br />
J-Flash creates a directory with the correct name automatically when a config file is created.<br><br />
<br />
Example:<br><br />
<br />
MyConf0 is a project for a device that requires a *.PEX file for connect.<br><br />
MyConf1 is a project for a device that requires no *.PEX file at all.<br />
<br />
[[File:PEX_File_Flasher.png]]<br />
<br />
=== Universal Flash Loader mode ===<br />
<br />
As an alternative to the stand-alone mode, configured via J-Flash, there is the Universal Flash Loader mode.<br />
While the normal stand-alone mode relies on using the debug interface of the device, the Universal Flash Loader<br />
mode uses device or vendor specific programming interfaces and protocols and therefore it is independent of the<br />
CPU core.<br><br />
<br />
The Universal Flash Loader is available for the following Flasher models:<br />
* Flasher PRO<br />
* Flasher Compact<br />
* Flasher Portable PLUS<br />
<br />
For some of the supported devices, SEGGER offers specific adapters.<br />
<br />
==== Preparing manually ====<br />
<br />
The Universal Flash Loader uses an configuration file (*.UNI), a device specific flash programming algorithm (*.PEX) and a data file (*.DAT).<br />
<br />
===== Configuration =====<br />
<br />
The configuration file basically is split into three parts.<br />
The first part, the section [DEVICE], controls the generic behavior of the Universal Flash Loader.<br />
It specifies which protocol driver and data file to use. It allows enabling and configuring target power<br />
and it defines which actions to perform.<br />
The second part consists of one or more [BANKx] sections, which contain information about the memories.<br />
The third part, the section [CONFIG], includes configuration settings for the protocol driver.<br><br />
<br />
An .UNI file might look as follows:<br><br />
<br />
<source lang="c"><br />
[OPTIONS]<br />
TargetPower = "0"<br />
ChipErase = "0"<br />
<br />
[TASKS]<br />
CheckBlank = "1"<br />
Erase = "1"<br />
Program = "1"<br />
Verify = "1"<br />
Secure = "1"<br />
<br />
[DEVICE]<br />
Algo = "RL78.PEX"<br />
Data = "ALL_6k.dat"<br />
<br />
[BANK0]<br />
; Code Flash<br />
Base = "0x00000000"<br />
Size = "0x00004000"<br />
Sect = "0x00000400"<br />
<br />
[BANK1]<br />
; Data Flash<br />
Base = "0x000F1000"<br />
Size = "0x00000800"<br />
Sect = "0x00000400"<br />
<br />
[CONFIG]<br />
BaudRate = "1000000"<br />
ClearConfigOnConnect = "0x00"<br />
Security = "0xFF"<br />
ShieldStart = "0x0000"<br />
ShieldEnd = "0x000F"<br />
</source><br />
<br />
'''[OPTIONS]'''<br><br />
'''TargetPower'''<br><br />
If set to a value >0, power is applied to the target.<br />
The value defines the delay (in ms) after enabling the target power supply and before starting to communicate with the target.<br />
<br />
'''ChipErase'''<br><br />
If set to 1, the chip erase function is called for erasing the chip.<br><br />
{{Note|1=Do not enable this setting if the flash programming algorithm does not support chip erase.}}<br />
<br />
'''[TASKS]'''<br><br />
'''CheckBlank'''<br><br />
Defines if a blank check should be performed before erasing a sector.<br />
<br />
'''Erase'''<br><br />
Defines if the sector should be erased before programming.<br />
<br />
'''Program'''<br><br />
Defines if the sector should be programmed.<br />
<br />
'''Verify'''<br><br />
Defines if the sector should be verified after programming.<br />
<br />
'''Secure'''<br><br />
Defines if the device should be secured or protected against read-out after verifying.<br />
<br />
'''[DEVICE]'''<br><br />
'''Algo'''<br><br />
File name of the flash programming algorithm. This file is provided by SEGGER and will typically support a series of devices.<br />
<br />
'''Data'''<br><br />
File name of the data file to program. The Flasher only supports the Flasher .dat file format.<br />
Flasher .dat files can be generated by J-Flash or Universal Flash Loader and offer high performance together with high flexibility.<br />
<br />
'''[BANKx]'''<br><br />
x blocks with configuration data for the flash banks. All three parameters (Base, Size and Sect) are mandatory.<br />
<br />
'''Base'''<br><br />
Base address of the flash bank.<br />
<br />
'''Size'''<br><br />
Total size of the flash bank.<br />
<br />
'''Sect'''<br><br />
Sector size of the flash bank.<br />
<br />
'''[CONFIG]'''<br><br />
This section includes specific configuration data for the flash programming algorithm.<br><br />
There are no general parameters.<br />
<br />
{{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. }}<br />
<br />
==== Preparing using the PC utility ====<br />
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.<br />
<br />
[[File:Universal Flash Loader.png]]<br />
<br />
The Universal Flash Loader Configurator comes with a large list of devices and flash programming algorithms. If you are going to<br />
use a device from one of the supported families which currently is not available in the utility, feel free to contact the support.<br />
<br />
=== Multiple File Support ===<br />
<br />
It is also possible to have multiple data files and config files on Flasher, to make Flasher more easy to use in production environment.<br />
To choose the correct configuration file and data file pair, a <tt>FLASHER.INI</tt> file is used.<br />
This init file contains a <tt>[FILES]</tt> section which describes which configuration file and which data file should be used for programming.<br />
A sample content of a FLASHER.INI file is shown below:<br><br />
<br />
<source><br />
[FILES]<br />
DataFile = "Flasher1.dat"<br />
ConfigFile = "Flasher1.cfg"<br />
</source><br />
<br />
Using this method all configuration files and data files which are used in the production only have to be downloaded once.<br />
From there on a configuration file / data file pair can be switched by simply replacing the <tt>FLASHER.INI</tt> by a new one,<br />
which contains the new descriptions for the configuration file and data file. The <tt>FLASHER.INI</tt> can be replaced in two ways:<br />
<ol><br />
<li>Boot Flasher in file access mode in order to replace the <tt>FLASHER.INI</tt></li><br />
<li><br />
If Flasher is already integrated into the production line, runs in stand-alone mode and can not be booted in other mode:<br />
Use the file I/O commands provided by the ASCII interface of Flasher, to replace the <tt>FLASHER.INI</tt>.<br />
For more information about the file I/O commands, please refer to [[#File I/O commands | File I/O commands]].<br />
</li><br />
</ol><br />
{{Note|1=Flasher with hardware version 4 and lower only supports 8.3 filenames only (8 characters filename, 3 characters file extension). Using longer filenames may result in incorrect operation.}}<br />
<br />
==== Flasher Portable specifics ====<br />
<br />
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><br />
<br />
Which config / data file pair is used for which image selection position is determined by the contents of the FLASHER.INI.<br />
For this, the FLASHER.INI contents in the <tt>[FILES]</tt> section have been extended.<br />
The sample below shows how to enable the user to select between four different images on the Flasher portable via the select / arrow button:<br />
<br />
<source><br />
[FILES]<br />
DataFile = "First.dat"<br />
ConfigFile = "First.cfg"<br />
DataFile1 = "Second.dat"<br />
ConfigFile1 = "Second.cfg"<br />
DataFile2 = "Third.dat"<br />
ConfigFile2 = "Third.cfg"<br />
DataFile3 = "Fourth.dat"<br />
ConfigFile3 = "Fourth.cfg"<br />
</source><br />
<br />
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.<br />
From there on, switching between the files can be done by simply using the selection button of Flasher Portable.<br />
<br />
===== Example =====<br />
<br />
1 Target, 2 Datafiles (e.g. boot loader und application) --> same configuration file (*.CFG) but different data files (*.DAT) should be used.<br><br />
<br />
* Open pre-configured J-Flash project<br />
* File -> Save Flasher config file ... (DEFAULT.CFG)<br />
* Open data file 1 (boot loader)<br />
* File -> Save Flasher data file ... (BOOT.DAT)<br />
* Open data file 2 (application)<br />
* File -> Save Flasher data file ... (APP.DAT)<br />
* Create the a FLASHER.INI file (content see below)<br />
* Connect the Flasher in file access mode to the PC<br />
* Copy DEFAULT.CFG, BOOT.DAT, APP.DAT and FLASHER.INI on the Flasher<br />
<br />
FLASHER.INI content:<br><br />
<br />
<source><br />
[FILES]<br />
DataFile = "BOOT.DAT"<br />
ConfigFile = "DEFAULT.CFG"<br />
DataFile1 = "APP.DAT"<br />
ConfigFile1 = "DEFAULT.CFG"<br />
</source><br />
<br />
==== Flasher Portable PLUS specifics ====<br />
<br />
Flasher Portable PLUS allows to choose between 99 configuration and data file pairs during runtime by using the select button on the front of Flasher Portable PLUS.<br><br />
<br />
Which config / data file pair is used for which image selection position is determined by the contents of the FLASHER.INI.<br />
For this, the FLASHER.INI may contain several <tt>[BATCH]</tt> sections.<br />
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:<br />
<br />
<source><br />
[BATCH]<br />
DataFile = "First.dat"<br />
ConfigFile = "First.cfg"<br />
[BATCH1]<br />
DataFile = "Second.dat"<br />
ConfigFile = "Second.cfg"<br />
[BATCH2]<br />
DataFile = "Third.dat"<br />
ConfigFile = "Third.cfg"<br />
[BATCH7]<br />
DataFile = "Proj_8.dat"<br />
ConfigFile = "Proj_8.cfg"<br />
[BATCH15]<br />
DataFile = "Proj_16.dat"<br />
ConfigFile = "Proj_16.cfg"<br />
</source><br />
<br />
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.<br />
From there on, switching between the files can be done by simply using the selection button of Flasher Portable PLUS.<br />
<br />
Please also consider the chapter [[#Batch Programming in stand-alone mode | Batch Programming in stand-alone mode]].<br />
<br />
{{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.}}<br />
{{Note|1=You may have gaps in the list. The missing entries will be skipped when selecting the next configuration.}}<br />
{{Note|1=The <tt>[Files]</tt> section is supported by the Flasher Portable PLUS, too. But the number of configuration is limited to four.}}<br />
<br />
===== Example =====<br />
<br />
1 Target, 2 Datafiles (e.g. boot loader und application) --> same configuration file (*.CFG) but different data files (*.DAT) should be used.<br><br />
<br />
* Open pre-configured J-Flash project<br />
* File -> Save Flasher config file ... (DEFAULT.CFG)<br />
* Open data file 1 (boot loader)<br />
* File -> Save Flasher data file ... (BOOT.DAT)<br />
* Open data file 2 (application)<br />
* File -> Save Flasher data file ... (APP.DAT)<br />
* Create the a FLASHER.INI file (content see below)<br />
* Connect the Flasher in file access mode to the PC<br />
* Copy DEFAULT.CFG, BOOT.DAT, APP.DAT and FLASHER.INI on the Flasher<br />
<br />
FLASHER.INI content:<br><br />
<br />
<source><br />
[BATCH]<br />
DataFile = "BOOT.DAT"<br />
ConfigFile = "DEFAULT.CFG"<br />
DisplayName = "Bootloader"<br />
[BATCH1]<br />
DataFile = "APP.DAT"<br />
ConfigFile = "DEFAULT.CFG"<br />
DisplayName = "Application"<br />
[BATCH2]<br />
DataFile = "BOOT.DAT"<br />
ConfigFile = "DEFAULT.CFG"<br />
DataFile1 = "APP.DAT"<br />
ConfigFile1 = "DEFAULT.CFG"<br />
DisplayName = "BL and App"<br />
</source><br />
<br />
=== Custom labels ===<br />
<br />
Flasher supports to assign custom labels to configurations ("Project Display Text" in U-Flash). This allows to specify easy to remember names for configurations that are stored on the Flasher.<br />
<br />
==== Hardware and software requirements ====<br />
This feature is supported by the following models:<br />
* Flasher Portable PLUS<br />
<br />
This feature is supported since V6.30e of the software package and firmware<br />
<br />
==== Assigning labels ====<br />
The configuration and data file pairs are specified in the <tt>FLASHER.INI</tt> file:<br />
<source><br />
[FILES]<br />
DataFile = "IMAGE0.dat"<br />
ConfigFile = "IMAGE0.cfg"<br />
DataFile1 = "IMAGE1.dat"<br />
ConfigFile1 = "IMAGE1.cfg"<br />
</source><br />
<br />
By default, Flasher will show the names of the configuration and data file:<br />
[[File:FW1_smartwatch_nolabel.png]]<br />
[[File:FW2_smart_meter_nolabel.png]]<br />
<br />
By adding <tt>DisplayName</tt>, <tt>DisplayName1</tt>, ... keys to the <tt>FLASHER.INI</tt>, a custom label can be shown instead:<br />
<source><br />
[FILES]<br />
DisplayName = "FW smartwatch"<br />
DataFile = "IMAGE0.dat"<br />
ConfigFile = "IMAGE0.cfg"<br />
DisplayName1 = "FW smart meter"<br />
DataFile1 = "IMAGE1.dat"<br />
ConfigFile1 = "IMAGE1.cfg"<br />
</source><br />
<br />
The images will now be shown as follows:<br />
[[File:FW1_smartwatch_label.png]]<br />
[[File:FW2_smart_meter_label.png]]<br />
<br />
==== Considerations ====<br />
* 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.<br />
<br />
=== Programming multiple targets ===<br />
<br />
It is possible to program multiple targets which are located in a JTAG chain.<br />
The targets will be programmed each with a configuration and a data file.<br><br />
The configuration for the desired target must be selected before it can be programmed,<br />
this can be done with the <tt>#SELECT</tt> command.<br />
For more information how to use the <tt>#SELECT</tt> command please refer to the [[#ASCII_command_interface|ASCII command interface]].<br />
<br />
'''Example'''<br><br />
Three devices should be programmed.<br><br />
<br />
JTAG Chain: ''TDI'' --> ''Device2'' --> ''Device1'' --> ''Device0'' --> ''TDO''<br><br />
<br />
Three configurations would be stored on the flasher:<br><br />
<br />
Config 0: Configured to program Device0 (DEVICE0.CFG, DEVICE0.DAT)<br><br />
Config 1: Configured to program Device1 (DEVICE1.CFG, DEVICE1.DAT)<br><br />
Config 2: Configured to program Device2 (DEVICE2.CFG, DEVICE2.DAT)<br><br />
<br />
Selection and programming of the target will be done via the ASCII interface:<br><br />
<br />
<source><br />
#SELECT DEVICE0<br />
#AUTO<br />
#SELECT DEVICE1<br />
#AUTO<br />
#SELECT DEVICE2<br />
#AUTO<br />
</source><br />
<br />
==== Programming multiple targets with J-Flash ====<br />
<br />
Programming multiple targets can also be done via J-Flash using the command line interface.<br />
For this each target must be handled with its own project file.<br />
<br />
'''Example'''<br><br />
<br />
<source><br />
JFlash.exe -openproj"Device0.jflash" -open"Device0.hex" -auto -exit<br />
JFlash.exe -openproj"Device1.jflash" -open"Device1.hex" -auto -exit<br />
JFlash.exe -openproj"Device2.jflash" -open"Device2.hex" -auto -exit<br />
</source><br />
<br />
=== Batch Programming in stand-alone mode ===<br />
<br />
Batch programming allows to execute different stand-alone mode jobs in batch to be executed in immediate succession, without any user interaction in between.<br />
This can be used for example to program multiple targets in a JTAG-Chain or multiple data files to a target.<br><br />
A batch may contains an unlimited number of configurations which consist of a data file (*.DAT) and config file (*.CFG).<br />
For further information regarding config and data files, please refer to [[#Preparing for stand-alone operation manually | Preparing for stand-alone operation manually]].<br><br />
In order to specify the batch jobs, a FLASHER.INI file is used.<br />
This init file contains a [BATCH] section which describes which configuration pairs (*.DAT and *.CFG file) should be used for each batch job.<br />
A sample content of a FLASHER.INI file is shown below:<br><br />
<br />
<source><br />
[BATCH]<br />
DataFile = "Flasher0.dat"<br />
ConfigFile = "Flasher0.cfg"<br />
DataFile1 = "Flasher1.dat"<br />
ConfigFile1 = "Flasher1.cfg"<br />
</source><br />
<br />
[[File:Batch_Jobs.bmp]]<br />
<br />
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.<br />
<br />
<br />
[[File:Batch_Programming.bmp]]<br />
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<br />
currently executed action.<br />
<br />
<br />
[[File:Batch_Result.bmp]]<br />
The result of the programming will be shown on the screen after finishing all jobs.<br />
<br />
<br />
Creating / Replacing of the FLASHER.INI file can done in two ways:<br><br />
<ol><br />
<li>Boot Flasher in file access mode in order to replace the FLASHER.INI</li><br />
<li><br />
If Flasher is already integrated into the production line, runs in stand-alone mode and can not be booted in other mode:<br />
Use the file I/O commands provided by the ASCII interface of Flasher, to replace the FLASHER.INI .<br />
For more information about the file I/O commands, please refer to [[#File I/O commands | File I/O commands]].<br />
In case of an error occurred during execution, the Flasher terminates the entire batch processing.<br />
</li><br />
</ol><br />
{{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.}}<br />
{{Note|1=The Flasher with hardware version 4 and lower supports 8.3 filenames only (8 characters filename, 3 characters file extension). Using longer filenames may result in incorrect operation.}}<br />
<br />
==== Flasher Portable specifics ====<br />
<br />
Flasher Portable allows to choose between four different batches during runtime by using the select/arrow button on the front of Flasher Portable.<br />
Which batch configuration is used for which image selection position is specified in the FLASHER.INI.<br />
For this, the FLASHER.INI contents in the [BATCH] section have been extended.<br />
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><br />
<br />
<source><br />
[BATCH]<br />
DataFile = "Flasher0.dat"<br />
ConfigFile = "Flasher0.cfg"<br />
DataFile1 = "Flasher1.dat"<br />
ConfigFile1 = "Flasher1.cfg"<br />
DataFile2 = "Flasher2.dat"<br />
ConfigFile2 = "Flasher2.cfg"<br />
[BATCH1]<br />
DataFile = "TEST.dat"<br />
ConfigFile = "Test.cfg"<br />
[BATCH2]<br />
DataFile = "VALIDATE.dat"<br />
ConfigFile = "Flasher0.cfg"<br />
</source><br />
<br />
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.<br />
From there on, switching between the batches can be done by simply using the selection button of Flasher Portable.<br />
<br />
<br />
<br />
==== Examples ====<br />
<br />
'''Example 1:''' Programming two Data files to the same target<br><br />
<br />
* Open your J-Flash project.<br />
* Use File -> Save Flasher config file... to save the .CFG file (in this example: STM32F4.CFG).<br />
* Select the first binary and use File -> Save Flasher Data file... to save the first .DAT file (in this example: DATA0.DAT).<br />
* Select the second binary and use File -> Save Flasher Data file... to save the second data file .DAT file (in this example: DATA1.DAT).<br />
* Copy the Files to the Flasher e.g. by using file access mode.<br />
* Create a FLASHER.INI file in the root directory of the Flasher.<br />
* Exemplary content of FLASHER.INI:<br><br />
<source><br />
[BATCH]<br />
DataFile = "DATA0.dat"<br />
ConfigFile = "emPower.cfg"<br />
DataFile1 = "DATA1.dat"<br />
ConfigFile1 = "emPower.cfg"<br />
</source><br />
<br />
<br />
'''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><br />
Example scenario: 2 Devices in a JTAG chain, a STM32F1 and a STM32F4. <br><br />
<br />
* Follow the same as described before and additionally:<br />
* Create one project file per target (and create a .CFG file of each one).<br />
* Make sure each project file is configured correctly, especially the JTAG-Chain position (See UM8003 "J-Flash" for more detailed info).<br />
* Exemplary content of FLASHER.INI:<br><br />
<source><br />
[BATCH]<br />
DataFile = "F1DATA.dat"<br />
ConfigFile = "STM32F1.cfg"<br />
DataFile1 = "F4DATA0.dat"<br />
ConfigFile1 = "STM32F4.cfg"<br />
DataFile2 = "F4DATA1.dat"<br />
ConfigFile2 = "STM32F4.cfg"<br />
</source><br />
<br />
'''Example 3:''' Using multiple Batch sections with Flasher Portable.<br><br />
Example scenario: 2 Devices in a JTAG chain, a STM32F1 and a STM32F4.<br><br />
Selection 1 will program the STM32F1 target.<br><br />
Selection 2 will program the STM32F4 target using "F4DATA0.dat".<br><br />
Selection 3 will program the STM32F4 target using "F4DATA1.dat".<br><br />
Selection 4 will execute 1, 2 and 3 in sequence.<br><br />
* Exemplary content of FLASHER.INI:<br><br />
<source><br />
[BATCH]<br />
DataFile = "F1DATA.dat"<br />
ConfigFile = "STM32F1.cfg"<br />
[BATCH1]<br />
DataFile = "F4DATA0.dat"<br />
ConfigFile = "STM32F4.cfg"<br />
[BATCH2]<br />
DataFile = "F4DATA1.dat"<br />
ConfigFile = "STM32F4.cfg"<br />
[BATCH3]<br />
DataFile = "F1DATA.dat"<br />
ConfigFile = "STM32F1.cfg"<br />
DataFile1 = "F4DATA0.dat"<br />
ConfigFile1 = "STM32F4.cfg"<br />
DataFile2 = "F4DATA1.dat"<br />
ConfigFile2 = "STM32F4.cfg"<br />
</source><br />
<br />
=== Serial number programming ===<br />
<br />
Flasher supports programming of serial numbers. In order to use the serial number programming feature,<br />
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><br />
<br />
In general, Flasher supports two ways of programming a serial number into the target:<br />
<br />
#<br />
#* Programming continuous serial numbers.<br />
#* The serial number is 1-4 bytes in size.<br />
#* The start serial number, increment, serial number size, and address are configured in the J-Flash project.<br />
#<br />
#* Programming custom serial numbers from a serial number list file.<br />
#* The start line within the serial number list file to get the next serial number bytes, line increment, serial number size, and address is configured in the J-Flash project.<br />
#* The serial number list file needs to be specified and created by the user.<br />
<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.}}<br />
<br />
==== Serial number settings ====<br />
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.<br />
This is done by enabling the '''Program serial number''' option as shown in the screenshot and table below:<br />
<br />
[[File:UM08039_SN_Sample_JFlashSettings.png]]<br />
<br />
{| class="seggertable"<br />
|-<br />
!| Setting || Meaning<br />
|-<br />
| <tt>Address</tt> || The address the serial number should be programmed at.<br />
|-<br />
| <tt>Length</tt> ||<br />
The length of the serial number (in bytes) that 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 8 is selected as length, the serial number and its complement are programmed at the given address.<br />
* In case a serial number list file is given, the 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 '''Length''', the remaining bytes are filled with 0s. No complements etc. are added to the serial number.<br />
|-<br />
| <tt>Next SN</tt> ||<br />
* In case no serial number list file is given, '''Next SN''' is the next serial number which should be programmed. The serial number is always stored in flash memory in little-endian format.<br />
* In case a serial number list file is given, '''Next SN''' describes the line of the serial number list file where to read the next serial number bytes from. The Flasher starts counting at line 0, so in order to start serial number programming with the first line of the <tt>SNList.txt</tt>, '''Next SN''' needs to be set to 0.<br />
|-<br />
| <tt>Increment</tt> || Specifies by how much '''Next SN''' is incremented.<br />
|}<br />
<br />
=== Serial number file ===<br />
When selecting '''File -> Download serial number file to Flasher''', J-Flash will create a serial number file named as <tt><JFlashProjectName>_Serial.txt</tt>.<br />
This file is downloaded as <tt>Serial.txt</tt> on the Flasher.<br />
The file is generated based on the serial number settings in the J-Flash project and will contain the value defined by the '''Next SN''' option.<br />
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.<br />
<br />
==== Serial number list file ====<br />
<br />
In order to program custom serial numbers which can not be covered by the standard serial number scheme provided by J-Flash<br />
(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.<br />
<br />
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.<br />
This file is downloaded as <tt>SNList.txt</tt> on the 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<br />
* Each byte of the serial number is described by two hexadecimal digits.<br />
<br />
'''Example'''<br><br />
A 8-byte serial number should be programmed at address 0x08000000.<br><br />
<br />
It should be programmed as follows in the memory:<br><br />
<br />
<tt>0x08000000: 0x01 0x02 0x03 0x04 0x55 0x66 0x77 0x88</tt><br><br />
<br />
The serial number list file should look as follows:<br><br />
<br />
<tt>0102030455667788</tt><br />
<br />
[[File:SN_SNList.gif]]<br />
<br />
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><br />
<br />
Which line Flasher will read at the next programming cycle, is configured via the <tt>Next SN</tt> option in J-Flash.<br />
For more information, please refer to [[#Serial number settings | Serial number settings]].<br />
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><br />
<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.}}<br />
{{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.}}<br />
<br />
==== Programming process ====<br />
<br />
Flasher will increment the serial number in SERIAL.TXT by the value defined in <tt>Increment</tt>, after each successful programming cycle.<br><br />
<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><br />
<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.<br />
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.}}<br />
<br />
==== Downloading serial number files to Flasher ====<br />
<br />
Downloading the serial number files needs to be done explicitly by selecting '''File-> Download serial number file to Flasher'''.<br />
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.<br />
<br />
==== Sample setup ====<br />
<br />
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.<br />
<br />
'''Defining serial number address, length and start value'''<br><br />
In the J-Flash project the following needs to be defined:<br><br />
* <tt>Address</tt> is 0x08001000<br />
* <tt>Next SN</tt> is 1234567<br />
* <tt>Increment</tt> is 1<br />
* <tt>Len</tt> is 4 (bytes)<br />
<br />
[[File:SN_Sample_JFlashSettings.gif]]<br />
<br />
'''Downloading configuration, data and serial number to Flasher.'''<br><br />
After setting up the rest of the configuration (Target interface etc.) and selecting an appropriate data file, the configuration,<br />
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><br />
<br />
[[File:SN_Sample_DownloadToFlasher.gif]]<br />
<br />
After downloading the serial number to Flasher, J-Flash also created the <tt><JFlashProjectName>_Serial.txt</tt>.<br />
<br />
[[File:SN_Sample_SerialFileCreated.gif]]<br />
<br />
Now Flasher is prepared to program the 8-byte serial number.<br />
<br />
=== Patch file support ===<br />
<br />
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.<br />
Before starting programming process in stand-alone mode, Flasher will look for a file named <tt>Patches.txt</tt> being present on the Flasher.<br />
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><br />
<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.<br />
<br />
'''Syntax'''<br><br />
<!-- LG xxxxxxxxx '==' is shown as '=', so instead use '= ='--><br />
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><br />
<br />
<tt><NumPatches>,<Addr>,<NumBytes>:<nowiki><Data></nowiki>,<Addr>,<NumBytes>:<nowiki><Data></nowiki>,<Addr>,<NumBytes>:<nowiki><Data></nowiki>,<Addr>,<NumBytes>:<nowiki><Data></nowiki>\r\n</tt><br><br />
<br />
Find below a table which describes each parameter.<br><br />
{| class="seggertable"<br />
|-<br />
! Parameter !! Description<br />
|-<br />
| <tt><NumPatches></tt> || Describes the number of patches in this patch line. Max. value is 4.<br />
|-<br />
| <tt><Addr></tt> || Describes the address to be patched. Value is expected in hex.<br />
|-<br />
| <tt><NumBytes></tt> || Number of bytes for the current patch. Max. value is 20h (32 in decimal). Value is expected in hex.<br />
|-<br />
| <tt><nowiki><Data></nowiki></tt> || Describes the data to be patched. <nowiki><Data></nowiki> is always expected as 2 hexadecimal characters per byte.<br />
|-<br />
|}<br />
<br />
{{Note|1=All values are expected in hexadecimal format (hex).<br><br />
<nowiki><Data></nowiki> section is always preceded by ":", not ",".}}<br />
<br />
'''Example'''<br><br />
Below is an example patch.<br><br />
<br />
<source><br />
1,18,4:01020304\r\n<br />
</source><br />
<br />
Patching the following data:<br />
<br />
[[File:data_before.png]]<br />
<br />
with the example patch will result in the following data:<br />
<br />
[[File:data_afterwards.png]]<br />
<br />
Please note that as mentioned earlier patching undefined memory locations will be ignored.<br><br />
Applying the example patch to the following data:<br />
<br />
[[File:undefined_mem_before.png]]<br />
<br />
Causes no data to be patched, as can be seen in the following image:<br />
<br />
[[File:undefined_mem_no_token.png]]<br />
<br />
Therefore it is necessary to first write placeholder data to the memory locations which are supposed to be patched.<br><br />
An example for such a placeholder can be seen here:<br />
<br />
[[File:undefined_mem_token.png]]<br />
<br />
Please note that the actual data inside the placeholder does not matter to the Flasher,<br />
because it is overwritten during patching.<br><br />
Applying the example patch will now work as expected:<br />
<br />
[[File:undefined_mem_after.png]]<br />
<br />
'''Single patch via RS232'''<br><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><br />
<br />
Send the <tt>#AUTO PATCH <NumPatches>,<Addr>,<NumBytes>:<nowiki><Data></nowiki></tt><br><br />
<br />
command via Flasher ASCII interface. The parameters have the same function as described in the table above.<br />
<br />
==== Newline encoding ====<br />
<br />
In general, for all patch files, init files etc. Flasher supports both newline encodings:<br><br />
<br />
* Windows: \r\n<br />
* Unix/Mac: \n<br />
<br />
All parser functionality etc. are written to be independent from the host operating system.<br />
<br />
=== Limiting the number of programming cycles ===<br />
<br />
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.<br />
To make use of this feature, a file called <tt>Cntdown.txt</tt> needs to be placed on the Flasher.<br />
This file simply contains a decimal number (32-bit unsigned integer) that describes how many programming cycles can be performed with the current setup.<br />
<br />
[[File:CntdownTxtContent.jpg]]<br />
<br />
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><br />
<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>.}}<br />
<br />
==== Changed fail/error LED indicator behavior ====<br />
<br />
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><br />
<br />
* The red error/fail LED will lit for 1 second<br />
* After this, it will blink/toggle x times @ 5 Hz, indicating the number of programming cycles left. (blinking 5 times for 5 cycles left, ...)<br />
<br />
==== Required Flasher hardware version for Cntdown.txt support ====<br />
<br />
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><br />
<br />
* 1621xxxxx (Flasher ARM V2)<br />
* 1630xxxxx (Flasher ARM V3)<br />
* 4210xxxxx (Flasher PPC V1)<br />
* 4110xxxxx (Flasher RX V1)<br />
<br />
All other models / hardware versions support limiting of programming cycles.<br />
<br />
=== Authorized flashing ===<br />
<br />
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.<br />
without the possibility to read out the Flasher contents via file access mode, FILE I/O functionality (J-Link Commander) or RS232 commands.<br />
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.<br />
<br />
==== Creating / Adding the secure area ====<br />
<br />
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.<br />
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.<br />
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><br />
<br />
[[File:CreateSecArea.jpg]]<br />
<br />
The following secure area related commands are available in J-Link Commander:<br><br />
<br />
* securearea create<br />
* securearea remove<br />
<br />
{{Note|1=When creating or removing the <tt>secure area</tt>, all configuration and data files being stored on the Flasher, are lost.<br />
Please make sure that they are not needed anymore, before adding / removing the security area.}}<br />
<br />
==== Moving files to the secure area ====<br />
<br />
Before moving configuration + data to the <tt>secure area</tt>, proper functionality of the setup should be tested in stand-alone mode.<br />
Once the setup is working as expected, do the following, to move the configuration + data into the <tt>secure area</tt>:<br><br />
<br />
* Start Flasher in file access mode (For more info, please refer to: [[#file access mode | file access mode]])<br />
<br />
[[File:FilesBeforeSecure.png]]<br />
<br />
* Create a folder "<tt>_SECURE</tt>"<br />
* Move all files that shall be moved to the <tt>secure area</tt>, into this folder<br />
<br />
[[File:FilesAfterSecure.png]]<br />
<br />
* 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.<br />
* Now Flasher can be used in stand-alone mode, as normal, but the files cannot be read back by the user / operator.<br />
<br />
==== Considerations to be taken when using the secure area ====<br />
<br />
When using the <tt>secure area</tt>, some things need to be considered:<br><br />
<br />
* All features like multiple file support, patch file support etc. can also be used when operating from the <tt>secure area</tt>.<br />
* 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>.<br />
* 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>.<br />
* 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.<br />
<br />
==== Required Flasher hardware version ====<br />
<br />
Older Flasher models do not support authorized flashing. The Flashers with the following serial number ranges do not support authorized flashing:<br><br />
<br />
* 1621xxxxx (Flasher ARM V2)<br />
* 1630xxxxx (Flasher ARM V3)<br />
* 4210xxxxx (Flasher PPC V1)<br />
* 4110xxxxx (Flasher RX V1)<br />
<br />
All other models / hardware versions support authorized flashing.<br />
<br />
=== Target interfaces ===<br />
<br />
The table below shows the supported target interfaces of the different Flasher models.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! Supported interfaces<br />
|-<br />
| Flasher PRO || JTAG, SWD<br />
|-<br />
| Flasher Compact || JTAG, SWD<br />
|-<br />
| Flasher ARM || JTAG, SWD<br />
|-<br />
| Flasher RX || JTAG<br />
|-<br />
| Flasher PPC || JTAG<br />
|-<br />
|}<br />
<br />
For more information about the target interfaces itself, please refer to:<br><br />
<br />
* ''UM08001, chapter "Working with J-Link and J-Trace", section "JTAG interface"''<br />
* ''UM08001, chapter "Working with J-Link and J-Trace", section "SWD interface"''<br />
<br />
=== Supported architectures ===<br />
<br />
Flasher supports programming of the internal flash of a large number of different microcontrollers.<br />
The number of supported devices is steadily growing. You can always find the latest list of supported devices on our website:<br><br />
<br />
''http://www.segger.com/supported-devices.html''<br />
<br />
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.<br />
Also the existence of the device may have confidential status, so it might not be mentioned as being supported in public releases yet.<br />
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.<br />
<br />
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).<br />
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.<br />
<br />
If a device is not supported, you can always contact us. We will be happy to provide you with an offer.<br />
<br />
==== External flashes ====<br />
<br />
In general our Flashers support programming of external flashes listed below:<br>(Can differ between Flasher models and hardware versions)<br />
<br />
* parallel NOR flash<br />
* SPI / QSPI flash<br>(see: ''[[SPI_support_by_Flasher_models]]'')<br />
* NAND flash<br />
* I<sup>2</sup>C EEPROM/Flash<br />
* FRAM<br />
<br />
If the parallel NOR flash device which is used is not CFI-compliant you have to select the flash device in J-Flash explicitly,<br />
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''.<br />
<br />
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.<br />
The J-Flash software comes with sample projects for ''Open Flashloader''.<br />
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''<br />
{{Note|1=Complete Information about ''Open Flashloaders'' can be found in our Wiki:<br>''[[Open_Flashloader]]''}}<br />
<br />
==== Cores ====<br />
<br />
===== Flasher ARM =====<br />
<br />
Flasher ARM supports and has been tested with the following cores, but should work with any ARM7/9, Cortex-M0/M1/M3/M4 core.<br />
If you experience problems with a particular core, do not hesitate to contact Segger.<br><br />
<br />
* ARM7TDMI (Rev 1)<br />
* ARM7TDMI (Rev 3)<br />
* ARM7TDMI-S (Rev 4)<br />
* ARM920T<br />
* ARM922T<br />
* ARM926EJ-S<br />
* ARM946E-S<br />
* ARM966E-S<br />
* Cortex-M0<br />
* Cortex-M1<br />
* Cortex-M3<br />
* Cortex-M4<br />
<br />
===== Flasher RX =====<br />
<br />
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><br />
<br />
* RX610<br />
* RX621<br />
* RX62N<br />
* RX62T<br />
<br />
===== Flasher PPC =====<br />
<br />
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.<br />
<br />
* e200z0<br />
<br />
===== Flasher PRO/Compact/Portable PLUS =====<br />
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/''.<br />
<br />
=== Programming multiple targets in parallel ===<br />
<br />
To program multiple targets in parallel there are the following possibilities:<br />
* Using a Flasher gang, or<br />
* Using multiple Flashers, each connecting to one CPU.<br />
<br />
Devices for gang programming are:<br />
* Flasher Hub-12 in conjunction with up to 12 Flasher (Compact). Please refer to [[UM08043_Flasher_Hub-12|Flasher Hub-12 user manual (UM08043_Flasher_Hub-12)]].<br />
* Flasher ATE; suitable for programming up to 10 targets in parallel. Please refer to [https://www.segger.com/downloads/flasher/UM08035 Flasher ATE user manual (UM08035_FlasherATE.pdf)].<br />
When using multiple flashers, this can be done with the J-Flash production programming software.<br />
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''<br />
<br />
=== Logfiles and Quality Management ===<br />
<br />
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:<br />
<source lang="c"><br />
SN: 1 - Failed<br />
SN: 1 - Failed<br />
SN: 2 - O.K. (931 ms)<br />
SN: 3 - O.K. (931 ms)<br />
SN: 4 - O.K. (933 ms)<br />
SN: 5 - O.K. (932 ms)<br />
</source><br />
If applicable, the logfile contains more detailed error messages. For example:<br />
<source lang="c"><br />
ERROR: Programming failed @ address 0x00000000 (1)<br />
ERROR: Cannot connect to CPU. Target interface speed too high?<br />
</source><br />
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:<br />
<source lang="c"><br />
Verify error config word area @<br />
config word<br />
config word read back<br />
Verify error flash area @<br />
data from file<br />
data read back<br />
</source><br />
{{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.}}<br />
<br />
== TCP Services ==<br />
This chapter describes the integrated TCP services.<br />
<br />
=== FTP Server ===<br />
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><br />
[[File:FTPServer.png]]<br />
<br />
==== Access data ====<br />
Anonymous access to the FTP server is limited to read-only access to the file system.<br><br />
For write access, special login credentials have to be used:<br><br />
<tt>Login: admin</tt><br><br />
<tt>Password: 1234</tt><br><br />
<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.<br />
It is not meant as a security feature.}}<br />
<br />
=== Web server ===<br />
<br />
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.<br />
For the network, the IP address settings can be changed and a nick name can be assigned to the device.<br><br />
<br />
Additionally, the web interface provides information about the status of the integrated operating system, the IP stack and the target hardware.<br />
<br />
== Remote control ==<br />
This chapter describes how to control the Flasher in standalone mode.<br />
<br />
=== Overview ===<br />
There are 3 ways to control Flasher operation:<br><br />
{| class="seggertable"<br />
! Type of control !! Description<br />
|-<br />
| Button || Programming operation starts when pressing the PROG-button. The LEDs serve as visible indicators.<br />
|-<br />
| Handshake || 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.<br />
|-<br />
| Terminal || Terminal communication via TELNET, RS232 or VCOM with the [[#ASCII command interface]]<br />
|}<br />
<br />
<br />
{{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.}}<br />
<br />
=== Handshake control ===<br />
<br />
Some Flasher models are equipped with additional hardware control functions that are connected to the SUBD9 male connector, normally used as an RS232 interface to the PC.<br />
These Flasher models can therefore be controlled remotely by automated testers without the need for a connection to a PC.<br />
<br />
The handshake control is available for the following Flashers:<br />
* Flasher ARM<br />
* Flasher PRO<br />
* Flasher Compact (via Flasher Hub and Flasher Hub-12 only)<br />
<br />
The following diagrams show the internal remote control circuitry of Flasher:<br><br />
<br />
[[File:FlasherRemotecontrol.png]]<br />
{| class="seggertable"<br />
|-<br />
! Pin No. !! Function !! Description<br />
|-<br />
| 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.<br />
|-<br />
| 4 || BUSY || As soon as the "Auto" function is started, BUSY becomes active, which means that transistor is switched OFF.<br />
|-<br />
| 5 || GND || Common Signal ground.<br />
|-<br />
| 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.<br />
|-<br />
|}<br />
[[File:FlasherRemoteSignal.png]]<br />
<br />
=== ASCII command interface ===<br />
<br />
==== Introduction ====<br />
<br />
Once set up using J-Flash, the Flasher can be driven by any application or just a simple terminal using ASCII commands.<br><br />
<br />
Every known command is acknowledged by the Flasher and then executed. After command execution, Flasher sends an ASCII reply message.<br><br />
<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}}<br />
<br />
==== General command and reply message format ====<br />
<br />
* Any ASCII command has to start with the start delimiter ''#''.<br />
* Any ASCII command has to end with simple carriage return ('\r', ASCII code 13).<br />
* Commands can be sent upper or lower case<br />
<br />
==== General usage ====<br />
<br />
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.<br />
<br />
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).<br />
<br />
==== Settings for ASCII interface via RS232 ====<br />
<br />
Flasher is driven via a RS232 serial port with the following interface settings:<br><br />
<br />
* 9600 baud<br />
* 8 data bits<br />
* no parity<br />
* 1 stop bit<br />
<br />
The baud rate can be changed by using the <tt>#BAUDRATE</tt> command.<br />
<br />
==== Settings for ASCII interface via Telnet ====<br />
<br />
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><br />
<br />
[[File:telnet_connection.gif]]<br />
<br />
==== Settings for ASCII interface via VCOM ====<br />
<br />
The same settings can be used for VCOM as for [[#Settings for ASCII interface via RS232|RS232]].<br />
<br />
{{Note|The performance also depends on the terminal application used on the PC.}}<br />
<br />
==== Commands and replies ====<br />
<br />
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><br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| Commands to the Flasher<br />
|-<br />
| <tt>#BAUDRATE <Baudrate></tt><br />
|-<br />
| <tt>#AUTO</tt><br />
|-<br />
| <tt>#AUTO PATCH</tt><br />
|-<br />
| <tt>#AUTO NOINFO</tt><br />
|-<br />
| <tt>#CANCEL</tt><br />
|-<br />
| <tt>#ERASE</tt><br />
|-<br />
| <tt>#PROGRAM</tt><br />
|-<br />
| <tt>#RESULT</tt><br />
|-<br />
| <tt>#SELECT <Filename></tt><br />
|-<br />
| <tt>#START</tt><br />
|-<br />
| <tt>#STATUS</tt><br />
|-<br />
| <tt>#VERIFY</tt><br />
|-<br />
| <tt>#READ</tt><br />
|-<br />
| <tt>#QUIT</tt><br />
|-<br />
| <tt>#VERBOSE <Level></tt><br />
|-<br />
!colspan="100%"| File I/O commands<br />
|-<br />
| <tt>#FCLOSE</tt><br />
|-<br />
| <tt>#FCRC</tt><br />
|-<br />
| <tt>#FDELETE <Filename></tt><br />
|-<br />
| <tt>#FFORMAT</tt><br />
|-<br />
| <tt>#FOPEN <Filename></tt><br />
|-<br />
| <tt>#FREAD <Offset>,<NumBytes></tt><br />
|-<br />
| <tt>#FSIZE</tt><br />
|-<br />
| <tt>#FWRITE <Offset>,<NumBytes>:<nowiki><Data></nowiki></tt><br />
|-<br />
| <tt>#FLIST</tt><br />
|-<br />
| <tt>#MKDIR <Dirname></tt><br />
|-<br />
!colspan="100%"| SecureArea commands<br />
|-<br />
| <tt>#HASSECUREAREA</tt><br />
|-<br />
| <tt>#SECUREAREA <action></tt><br />
|-<br />
!colspan="100%"| Replies from the Flasher<br />
|-<br />
| <tt>#ACK</tt><br />
|-<br />
| <tt>#NACK</tt><br />
|-<br />
| <tt>#OK</tt><br />
|-<br />
| <tt>#OK:<NumBytes>:<nowiki><Data></nowiki></tt><br />
|-<br />
| <tt>#OK:<Size></tt><br />
|-<br />
| <tt>#STATUS:</tt><br />
|-<br />
| <tt>#DONE</tt><br />
|-<br />
| <tt>#ERRxxx</tt><br />
|-<br />
|}<br />
<br />
===== Commands to the Flasher =====<br />
<br />
'''#AUTO'''<br><br />
The <tt>#AUTO</tt> command behaves exactly as the start button or external remote control input.<br><br />
<br />
Usually, the following command sequence will be performed when receiving the <tt>#AUTO</tt> command:<br><br />
<br />
* The Flasher erases the target CPU (if not blank)<br />
* The Flasher programs the target CPU<br />
* The Flasher verifies the target CPU<br />
<br />
Depending on the settings chosen in the '''Production''' tab in J-Flash, this sequence can differ from the one shown above.<br><br />
<br />
Finally, Flasher responds with<br><br />
<br />
* <tt>#OK</tt> if no error occurred<br />
* <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.<br />
<br />
During execution of the <tt>#AUTO</tt> command, Flasher automatically sends "status" messages via RS232 to reflect the state of execution.<br />
Typically during execution of <tt>#AUTO</tt> command, Flasher will reply the following sequence of messages:<br><br />
<br />
<tt>#ACK</tt><br><br />
<tt>#STATUS:INITIALIZING</tt><br><br />
<tt>#STATUS:CONNECTING</tt><br><br />
<tt>#STATUS:UNLOCKING</tt><br><br />
<tt>#STATUS:ERASING</tt><br><br />
<tt>#STATUS:PROGRAMMING</tt><br><br />
<tt>#STATUS:VERIFYING</tt><br><br />
<tt>#OK (Total 13.993s, Erase 0.483s, Prog 9.183s, Verify 2.514s)</tt><br><br />
<br />
'''#AUTO PATCH'''<br><br />
The <tt>#AUTO</tt> PATCH command allows patching of the content of the data to be programmed.<br><br />
<br />
Flasher responds with<br><br />
<br />
* <tt>#OK</tt> if no error occurred<br />
* <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.<br />
<br />
For further information about the usage of the <tt>#AUTO PATCH</tt> command please refer to [[#Patch file support | Patch file support]].<br />
<br />
'''#AUTO NOINFO'''<br><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><br />
<br />
The command ends with <tt>#OK</tt> or <tt>#ERRxxx</tt><br />
<br />
'''#BAUDRATE <Baudrate>'''<br><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><br />
<br />
If this command succeeds, Flasher responds with:<br><br />
<br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<br />
Otherwise it will respond with one of the following error messages:<br><br />
<br />
<tt>#ERR255: Invalid parameters</tt><br><br />
<tt>or</tt><br><br />
<tt>#ERR255: Baudrate is not supported</tt><br><br />
<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.<br />
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.}}<br />
<br />
'''#CANCEL'''<br><br />
This command can be sent to abort a running program. It may take a while until the current program is actually canceled.<br><br />
<br />
Flasher will respond with:<br><br />
<br />
<tt>#ERR007:CANCELED.</tt><br><br />
<br />
'''#ERASE'''<br><br />
This command can be sent to erase all selected target flash sectors.<br><br />
<br />
Flasher will reply the following sequence of messages:<br><br />
<br />
<tt>#ACK</tt><br><br />
<tt>#STATUS:INITIALIZING</tt><br><br />
<tt>#STATUS:CONNECTING</tt><br><br />
<tt>#STATUS:UNLOCKING</tt><br><br />
<tt>#STATUS:ERASING</tt><br><br />
<tt>#OK (Total 0.893s, Erase 0.483s)</tt><br><br />
<br />
'''#PROGRAM'''<br><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.<br />
<br />
'''#RESULT'''<br><br />
This command can be sent any time, even during other command execution. Flasher responds with the last result of the previously executed command.<br />
<br />
'''#SELECT <Filename>'''<br><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.<br />
<tt><Filename></tt> specifies the name of file pair without extensions (.CFG and .DAT) on the Flasher which should be selected. If you are<br />
using the universal flash programming mode, <tt><Filename></tt> specifies the full name of the .UNI file '''including''' the extension.<br />
Flasher saves the selected config and data file in the FLASHER.INI file. So this selection is remembered even between power-cycling Flasher.<br><br />
<br />
This may be verfy helpful in cases where several config and data files are stored on Flasher.<br />
The user can easily switch between these config and data files without connecting Flasher to a host.<br><br />
<br />
If this command succeeds, Flasher responds with:<br><br />
<br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<br />
Find below a sample sequence which shows how to use the <tt>#SELECT</tt> command:<br><br />
<br />
<tt>#SELECT ATSAM7_1 // ATSAM7_1.CFG and ATSAM7_1.DAT is selected</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<tt>#AUTO // Start auto programming</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#STATUS:INITIALIZING</tt><br><br />
<tt>#STATUS:CONNECTING</tt><br><br />
<tt>#STATUS:UNLOCKING</tt><br><br />
<tt>#STATUS:ERASING</tt><br><br />
<tt>#STATUS:PROGRAMMING</tt><br><br />
<tt>#STATUS:VERIFYING</tt><br><br />
<tt>#OK (Total 8.416s, Erase 0.005s, Prog 6.845s, Verify 0.959s)</tt><br><br />
<tt>#SELECT ATSAM7_2 // ATSAM7_2.CFG and ATSAM7_2.DAT is selected</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<tt>#AUTO // Start auto programming</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#STATUS:INITIALIZING</tt><br><br />
<tt>#STATUS:CONNECTING</tt><br><br />
<tt>#STATUS:UNLOCKING</tt><br><br />
<tt>#STATUS:ERASING</tt><br><br />
<tt>#STATUS:PROGRAMMING</tt><br><br />
<tt>#STATUS:VERIFYING</tt><br><br />
<tt>#OK (Total 8.632s, Erase 0.005s, Prog 7.051s, Verify 0.969s)</tt><br><br />
<br />
'''#START'''<br><br />
This command can be sent to start the application using the method configured in the J-Flash project.<br><br />
For U-Flash projects, however, the target application is not necessarily started. <br><br />
There is often a "start application" checkbox in the U-Flash settings which have to be set for this.<br />
<br />
Flasher will reply with the following sequence of messages:<br><br />
<br />
<tt>#ACK</tt><br><br />
<tt>#STATUS:INITIALIZING</tt><br><br />
<tt>#STATUS:CONNECTING</tt><br><br />
<tt>#OK (Total 1.148s)</tt><br><br />
<br />
'''#STATUS'''<br><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]].<br />
<br />
'''#VERIFY'''<br><br />
This command can used to verify the target flash content against the data stored in Flasher.<br />
<br />
'''#READ'''<br><br />
Only available for devices supported by U-Flash.<br><br />
This command can used to read out flash data.<br><br />
More information: [https://wiki.segger.com/Flasher/How_to_read_data_from_a_device_using_U-Flash How to read data using U-Flash]<br />
<br />
'''#QUIT'''<br><br />
This command can be used to terminate the active telnet connection from the server side (Flasher).<br />
The command provides an easy way to terminate the session from an automated script.<br />
It is not necessary to parse stdout and switch to local command mode to disconnect.<br />
Not implemented in the Flasher ATE or Flasher Hub.<br />
<br />
'''#VERBOSE <Level>'''<br><br />
This command can be used to change the verbosity level. <br><br />
* Verbosity level 0: Default. <br><br />
* Verbosity level 1: Provides some additional messages during the programming process.<br />
<br />
===== File I/O commands =====<br />
<br />
The ASCII interface of the Flasher also supports file I/O operations.<br />
<br />
The following file I/O commands are supported:<br><br />
<br />
'''#FCLOSE'''<br><br />
The <tt>#FCLOSE</tt> command closes the file on Flasher which was opened via <tt>#FOPEN</tt>.<br />
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><br />
<br />
A typical sequence when using the <tt>#FCLOSE</tt> command does look like as follows:<br><br />
<br />
<tt>#FCLOSE</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<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><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:No file opened</tt><br />
}}<br />
<br />
'''#FCRC'''<br><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>.<br />
The CRC will be also reported by J-Flash when downloading or saving files via J-Flash.<br><br />
<br />
A typical sequence when using the <tt>#FCRC</tt> command does look like as follows:<br><br />
<br />
<tt>#FCRC flasher.dat</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK:0x75BC855A</tt><br><br />
<br />
'''#FDELETE <Filename>'''<br><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><br />
<br />
A typical sequence when using the <tt>#FDELETE</tt> command does look like as follows:<br><br />
<br />
<tt>#FDELETE flasher.dat</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<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><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:Failed to delete file</tt><br />
}}<br />
<br />
'''#FFORMAT'''<br><br />
The <tt>#FFORMAT</tt> command is used to delete all files located in the public area of the Flasher's internal memory.<br />
<br />
{{Note|1=Please note that this command deletes all projects located in the public area. Deleted projects cannot be restored again.<br><br />
This command does not delete the Flasher firmware, neither does it delete files in the secure area.<br />
}}<br />
<br />
A typical sequence using the <tt>#FFORMAT</tt> command does look like as follows:<br><br />
<br />
<tt>#FFORMAT</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#DONE</tt><br><br />
<br />
'''#FOPEN <Filename>'''<br><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.<br />
If <tt><Filename></tt> can not be found on Flasher a new one will be created.<br><br />
<br />
A typical sequence using the <tt>#FOPEN</tt> command does look like as follows:<br><br />
<br />
<tt>#FOPEN flasher.dat</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<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><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:A file has already been opened</tt><br />
}}<br />
<br />
'''#FREAD <Offset>,<NumBytes>'''<br><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.<br />
<tt><NumBytes></tt> specifies the number of bytes which should be read.<br><br />
<br />
A typical sequence when using the <tt>#FREAD</tt> command does look like as follows:<br><br />
<br />
<tt>#FREAD 0,4</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK:04:466c6173</tt><br><br />
<br />
If the <tt>#FREAD</tt> command succeeds, Flasher will finally respond with a <tt>#OK:<NumBytes>:<nowiki><Data></nowiki></tt> reply message.<br />
For more information about the Flasher reply messages, please refer to [[#Replies from Flasher | Replies from Flasher]].<br><br />
<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><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:No file opened</tt>}}<br />
<br />
'''#FSIZE'''<br><br />
The <tt>#FSIZE</tt> command is used to get the size of the currently opened file on Flasher.<br><br />
<br />
A typical sequence when using the <tt>#FSIZE</tt> command does look like as follows:<br><br />
<br />
<tt>#FSIZE</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK:10 // file on flasher which is currently open, has a size of 16 bytes</tt><br><br />
<br />
If the <tt>#FSIZE</tt> command succeeds, Flasher will respond with a <tt>#OK:<Size></tt> reply message.<br />
For more information about the Flasher reply messages, please refer to [[#Replies from Flasher | Replies from Flasher]].<br><br />
<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><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:No file opened</tt>}}<br />
<br />
'''#FWRITE <Offset>,<NumBytes>:<nowiki><Data></nowiki>'''<br><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.<br />
<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.<br />
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><br />
<br />
<tt><Offset></tt> and <tt><NumBytes></tt> are expected in hexadecimal format.<br><br />
<br />
<tt>#FWRITE 0,200:<nowiki><Data></nowiki></tt><br><br />
<tt>#FWRITE 200,200:<nowiki><Data></nowiki></tt><br><br />
<br />
The data is expected in hexadecimal format (two hexadecimal characters per byte). The following example illustrates the use of <tt>#FWRITE</tt>:<br />
<br />
<tt>Data to be send: Hello !</tt><br><br />
<tt>ASCII values: 0x48, 0x65, 0x6C, 0x6C, 0x6F, 0x20, 0x21</tt><br><br />
<br />
<tt>#FWRITE 0,7:48656C6C6F2021</tt><br><br />
<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><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:No file opened</tt><br>}}<br />
<br />
'''#FLIST'''<br><br />
The <tt>#LIST</tt> command is used to list all files stored on the Flasher.<br><br />
<br />
A typical sequence using the <tt>#FLIST</tt> command does look like as follows:<br><br />
<br />
<tt>#FLIST</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>FLASHER.INI Size: 60</tt><br><br />
<tt>SERIAL.TXT Size: 3</tt><br><br />
<tt>FLASHER.LOG Size: 207</tt><br><br />
<tt>FOLDER (DIR)</tt><br><br />
<tt>FOLDER\\TEST1.CFG Size: 2048</tt><br><br />
<tt>FOLDER\\TEST1.DAT Size: 12288</tt><br><br />
<tt>#OK</tt><br><br />
<br />
'''#MKDIR <Dirname>'''<br><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><br />
<br />
A typical sequence using the <tt>#MKDIR</tt> command does look like as follows:<br><br />
<br />
<tt>#MKDIR folder</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<br />
{{Note|1=If the directory can not be created because of a bad <tt><Dirname></tt> argument, Flasher will respond with:<br><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:Failed to create directory</tt><br>}}<br />
<br />
===== Secure Area Commands =====<br />
<br />
'''#HASSECUREAREA'''<br><br />
The <tt>#HASSECUREAREA</tt> command checks if the Flasher is configured with a secure area.<br />
<br />
<tt>#RESULT:YES</tt> indicates the secure area is present, <tt>#RESULT:NO</tt> indicates no secure area is present.<br />
<br />
'''#SECUREAREA'''<br><br />
The <tt>#SECUREAREA <action></tt> command allows to create or remove the secure area on the Flasher.<br />
<br />
* the action <tt>CREATE</tt> creates the secure area.<br />
* the action <tt>REMOVE</tt> will remove the secure area.<br />
<br />
A typical sequence using the <tt>#SECUREAREA</tt> command does look like as follows:<br><br />
<br />
<tt>#SECUREAREA CREATE</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#DONE</tt><br><br />
<br />
{{Note|1=When creating or removing the <tt>secure area</tt>, all configuration and data files being stored on the Flasher, are lost.<br />
Please make sure that they are not needed anymore, before adding / removing the security area.}}<br />
<br />
<br />
<br />
===== Replies from Flasher =====<br />
<br />
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.<br />
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.<br />
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><br />
<br />
<tt>#OK (Total 13.993s, Erase 0.483s, Prog 9.183s, Verify 2.514s)</tt><br><br />
<br />
The following reply messages from Flasher are defined:<br><br />
<br />
'''#ACK'''<br><br />
Flasher replies with <tt>#ACK</tt> message on reception of any defined command before the command itself is executed.<br />
<br />
'''#NACK'''<br><br />
Flasher replies with <tt>#NACK</tt>, if an undefined command was received.<br />
<br />
'''#OK'''<br><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.<br />
<br />
'''#OK:<NumBytes>:<nowiki><Data></nowiki>'''<br><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.<br />
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).<br />
<br />
'''#OK:<Size>'''<br><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.<br />
<br />
'''#STATUS:'''<br><br />
The Flasher replies with its current state.<br><br />
<br />
The following status messages are currently defined:<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Message !! Description<br />
|-<br />
| <tt>#STATUS:READY</tt> || Flasher is ready to receive a new command.<br />
|-<br />
| <tt>#STATUS:CONNECTING</tt> || Flasher initializes connection to target CPU.<br />
|-<br />
| <tt>#STATUS:INITIALIZING</tt> || Flasher performs self check and internal init.<br />
|-<br />
| <tt>#STATUS:UNLOCKING</tt> || Unlocking flash sectors.<br />
|-<br />
| <tt>#STATUS:ERASING</tt> || Flasher is erasing the flash of the target device.<br />
|-<br />
| <tt>#STATUS:PROGRAMMING</tt> || Flasher is programming the flash of the target device.<br />
|-<br />
| <tt>#STATUS:VERIFYING</tt> || Flasher verifies the programmed flash contents.<br />
|-<br />
|}<br />
<br />
'''#ERRxxx'''<br><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><br />
<br />
Some error codes may be followed by colon and an additional error text.<br><br />
<br />
For example:<br><br />
<br />
<tt>#ERR007:CANCELED.</tt><br><br />
<br />
The error code numbers are described in the following table:<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Message !! Description<br />
|-<br />
| <tt>#ERR007</tt> || Flasher received <tt>#CANCEL</tt> command and has canceled the current operation.<br />
|-<br />
| <tt>#ERR008</tt> || Flasher is already busy with execution of previous command.<br />
|-<br />
| <tt>#ERR009</tt> || Failed to allocate memory.<br />
|-<br />
| <tt>#ERR010</tt> || Failed to open file.<br />
|-<br />
| <tt>#ERR011</tt> || Failed to read file.<br />
|-<br />
| <tt>#ERR012</tt> || Failed to write file.<br />
|-<br />
| <tt>#ERR013</tt> || Failed to delete file.<br />
|-<br />
| <tt>#ERR255</tt> || Undefined error occurred. This reply is followed by an error string.<br />
|-<br />
|}<br />
<br />
== Performance ==<br />
<br />
The following chapter lists programming performance of common flash devices andmicrocontrollers.<br />
<br />
=== Performance of MCUs with internal flash memory ===<br />
<br />
==== Flasher ARM ====<br />
<br />
The following table lists program and erase performance values of Flasher ARM for different controllers.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Microcontroller !! Size [kByte] !! Erase time [sec] !! Program time [sec] !! Verify time [sec] !! Total time [sec]<br />
|-<br />
| Analog Devices || 62 || 2.943 || 2.286 || 0.563 || 5.792<br />
|-<br />
| Atmel AT91SAM7S64 || 64 || --- || 3.488 || 0.438 || 3.926<br />
|-<br />
| Atmel AT91SAM7S256 || 256 || --- || 7.709 || 1.053 || 8.762<br />
|-<br />
| NXP LPC1768 || 512 || 3.740 || 8.559 || 5.092 || 17.391<br />
|-<br />
| NXP LPC2106 || 120 || 0.448 || 1.204 || 0.634 || 2.286<br />
|-<br />
| NXP LPC2129 || 248 || 0.449 || 2.916 || 1.347 || 4.712<br />
|-<br />
| NXP LPC2138 || 500 || 0.448 || 5.488 || 2.649 || 8.585<br />
|-<br />
| NXP LPC2148 || 500 || 0.448 || 5.632 || 2.721 || 8.801<br />
|-<br />
| NXP LPC2294 || 2048 || 0.808 || 15.976 || 9.669 || 26.453<br />
|-<br />
| NXP LPC2478 || 504 || 0.448 || 5.419 || 2.559 || 8.426<br />
|-<br />
| ST STM32F103ZE || 512 || 0.028 || 18.763 || 3.939 || 22.730<br />
|-<br />
| ST STR711 || 272 || 0.429 || 5.476 || 4.742 || 10.647<br />
|-<br />
| ST STR912 || 544 || 1.167 || 12.907 || 5.236 || 19.310<br />
|-<br />
| TI TMS470R1B1M || 1024 || 2.289 || 8.147 || 5.362 || 15.798<br />
|-<br />
|}<br />
<br />
==== Flasher PRO ====<br />
See Flasher ARM.<br />
<br />
==== Flasher Compact ====<br />
See Flasher ARM.<br />
<br />
==== Flasher RX ====<br />
<br />
The following table lists program and erase performance values of Flasher RX.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Microcontroller !! Size [kByte] !! Erase time [sec] !! Program time [sec] !! Verify time [sec] !! Total time [sec]<br />
|-<br />
| R5F56108 || 2.048 || 9.523 || 11.915 || 3.890 || 25.585<br />
|-<br />
|}<br />
<br />
==== Flasher PPC ====<br />
<br />
The following table lists program and erase performance values of Flasher PPC.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Microcontroller !! Size [kByte] !! Erase time [sec] !! Program time [sec] !! Verify time [sec] !! Total time [sec]<br />
|-<br />
| ST SPC560B50 || 576 || 4.747 || 4.159 || 1.929 || 10.917<br />
|-<br />
|}<br />
<br />
== Hardware ==<br />
<br />
This chapter gives an overview about Flasher specific hardware details,<br />
such as the pinouts and available adapters.<br />
<br />
=== Flasher ARM 20-pin JTAG/SWD Connector ===<br />
<br />
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.<br />
<br />
==== Pinout JTAG ====<br />
<br />
[[File:jtag_port_20pin.jpg]] <!-- LG xxxxxx image has been cropped to fit page --><br />
<br />
The following table lists the Flasher JTAG pinout.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! PIN !! SIGNAL !! TYPE !! Description<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 13 || TDO || Input || JTAG data output from target CPU. Typically connected to TDO of target CPU.<br />
|-<br />
| 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".<br />
|-<br />
| 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.<br />
|-<br />
| 19 || 5V-Target supply || Output || This pin can be used to supply power to the target board. Please note the specifications. [[#Target power supply]]<br />
|-<br />
|}<br />
<br />
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.<br />
<br />
==== Pinout SWD ====<br />
<br />
The 20-pin connector of Flasher is also compatible to ARM's Serial Wire Debug (SWD) interface.<br><br />
<br />
[[File:SWD_Port.jpg]] <!-- LG xxxxxx image has been cropped to fit page --><br />
<br />
The following table lists the J-Link / J-Trace SWD pinout.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! PIN !! SIGNAL !! TYPE !! Description<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 7 || SWDIO || I/O || Single bi-directional data pin.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 13 || SWO || Output || Serial Wire Output trace port. (Optional, not required for SWD communication.)<br />
|-<br />
| 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".<br />
|-<br />
| 17 || Not used || NC || This pin is not connected in J-Link.<br />
|-<br />
| 19 || 5V-Target supply || Output || This pin can be used to supply power to the target board. Please note the specifications. [[#Target power supply]]<br />
|-<br />
|}<br />
<br />
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.<br />
<br />
==== Target power supply ====<br />
<br />
Pin 19 of the connector can be used to supply power to the target hardware. Supply voltage is 5V, max. current is 400mA.<br />
The output current is monitored and protected against overload and short-circuit.<br><br />
<br />
Power can be controlled via the J-Link commander. The following commands are available to control power:<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Command !! Explanation<br />
|-<br />
| <tt>power on</tt> || Switch target power on<br />
|-<br />
| <tt>power off</tt> || Switch target power off<br />
|-<br />
| <tt>power on perm</tt> || Set target power supply default to "on"<br />
|-<br />
| <tt>power off perm</tt> || Set target power supply default to "off"<br />
|-<br />
|}<br />
<br />
=== Flasher RX 14-pin connector ===<br />
<br />
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.<br />
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.<br />
<br />
[[File:jtag_port_14pin.wmf]]<br />
<br />
The following table lists the Flasher RX 14-pin JTAG pinout.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Pin !! Signal !! Type !! Description<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 5 || TDO || Input || JTAG data output from target CPU. Typically connected to TDO on target CPU.<br />
|-<br />
| 6 || --- || NC || This pin is not connected to Flasher RX.<br />
|-<br />
| 7 || --- || NC || This pin is not connected to Flasher RX.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 10 || --- || NC || This pin is not connected to Flasher RX.<br />
|-<br />
| 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.<br />
|-<br />
| 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".<br />
|-<br />
|}<br />
<br />
* All pins marked NC are not connected to Flasher RX. Any signal can be applied here; Flasher RX will simply ignore such a signal.<br />
* Pins 2, 12, 14 are GND pins connected to GND in Flasher RX. They should also be connected to GND in the target system.<br />
<br />
==== Target power supply ====<br />
<br />
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.<br />
Power can be controlled via the J-Link commander. The following commands are available to control power:<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Command !! Explanation<br />
|-<br />
| <tt>power on</tt> || Switch target power on<br />
|-<br />
| <tt>power off</tt> || Switch target power off<br />
|-<br />
| <tt>power on perm</tt> || Set target power supply default to "on"<br />
|-<br />
| <tt>power off perm</tt> || Set target power supply default to "off"<br />
|-<br />
|}<br />
<br />
=== Flasher PPC 14-pin connector ===<br />
<br />
Flasher PPC itself has a 20-pin JTAG connector mounted but comes with a 14-pin adapter for PowerPC devices.<br><br />
<br />
[[File:JTAG_PPC_14pin_adapter.wmf]]<br />
<br />
The following table lists the Flasher PPC 14-pin JTAG pinout.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Pin !! Signal !! Type !! Description<br />
|-<br />
| 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.<br />
|-<br />
| 3 || TDO || Input || JTAG data output from target CPU. Typically connected to TDO on target CPU.<br />
|-<br />
| 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.<br />
|-<br />
| 7 || --- || NC || This pin is not connected to Flasher PPC.<br />
|-<br />
| 8 || --- || NC || This pin is not connected to Flasher PPC.<br />
|-<br />
| 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".<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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).<br />
|-<br />
|}<br />
<br />
* All pins marked NC are not connected to Flasher PPC. Any signal can be applied here; Flasher PPC will simply ignore such a signal.<br />
* 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.<br />
<br />
=== Target board design ===<br />
<br />
We strongly advise following the recommendations given by the chip manufacturer. These recommendations are normally in line with the recommendations.<br />
Please refer to the the appropriate tables depending on the core:<br><br />
<br />
* [[#Pinout JTAG | Pinout JTAG]]<br />
* [[#Pinout SWD | Pinout SWD]]<br />
* [[#Flasher RX 14-pin connector | Flasher RX 14-pin connector]]<br />
* [[#Flasher PPC 14-pin connector | Flasher PPC 14-pin connector]]<br />
<br />
In case of doubt you should follow the recommendations given by the semiconductor manufacturer.<br />
<br />
==== Pull-up/pull-down resistors ====<br />
<br />
Unless otherwise specified by developer's manual, pull-ups/pull-downs are recommended to be between 2.2 kOhms and 47 kOhms.<br />
<br />
==== RESET, nTRST ====<br />
<br />
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><br />
<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.<br />
(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.<br />
<br />
=== Adapters ===<br />
<br />
==== JTAG Isolator ====<br />
<br />
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.<br />
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><br />
<br />
[[File:JTAG_Isolator_Port.wmf]]<br />
<br />
===== Pinout =====<br />
<br />
The following table shows the target-side pinout of the J-Link JTAG Isolator.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Pin !! Signal !! Type !! Description<br />
|-<br />
| 1 || VCC || Output || The target side of the isolator draws power over this pin.<br />
|-<br />
| 2 || VCC || Output || The target side of the isolator draws power over this pin.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 13 || TDO || Input || JTAG data output from target CPU. Typically connected to TDO of target CPU.<br />
|-<br />
| 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".<br />
|-<br />
| 17 || N/C || N/C || This pin is not connected on the target side of the isolator.<br />
|-<br />
| 19 || N/C || N/C || This pin is not connected on the target side of the isolator.<br />
|-<br />
|}<br />
<br />
Pins 4, 6, 8, 10, 12, 14, 16, 18, 20 are connected to GND.<br />
<br />
===== Safety =====<br />
This isolator provides '''basic isolation''' only. '''Do not use with hazardous voltages without further protection measures to avoid risk of electrical shock and fire.'''<br />
<br />
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.<br />
<br />
==== J-Link Needle Adapter ====<br />
<br />
To connect to the J-Link OB via programming interface the ''J-Link Needle Adapter'' is recommended.<br><br />
<br />
[[File:J-Link_Needle_Adapter_500x.jpg]]<br />
<br />
Why to choose the J-Link Needle Adapter:<br><br />
<ol><br />
<li>No additional connector required on your PCB</li><br />
<li>Very small footprint</li><br />
<li>High reliability spring pins for secure connections</li><br />
<li>Designed with 3 locating pins, so the adapter can not be connected the wrong way</li><br />
<li>No external power supply required! The J-Link Needle Adapter comes with the option to power the target hardware via J-Link.</li><br />
</ol><br />
These features make the J-Link Needle Adapter the perfect solution for production purposes.<br><br />
<br />
The pinout of the J-Link Needle Adapter is based on the pinout of the needle adapter by Tag-Connect.<br />
Please note, that both pinouts are not identical since the J-Link Needle Adapter comes with a 5V-supply pin.<br><br />
<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><br />
<br />
Moreover, the two "legs" on each side of the connector guarantee a stable and secure contact between pins and the PCB.<br><br />
<br />
[[File:J-Link_Needle_Adapter_Connector_pins_360x.jpg]]<br />
[[File:J-Link_Needle_Adapter_Pinout.jpg]]<br />
<br />
The J-Link Needle Adapter can be connected to J-Link via the ''20-pin 0.1'' JTAG to a 10-pin needle connector''.<br />
<br />
=== Target interface pin states in idle ===<br />
After completing a target operation (e.g. production programming via #AUTO), Flasher configures all target interface pins to input with the following exceptions:<br />
* [[#Flasher ARM 20-pin JTAG/SWD Connector|Reset pin (Pin 15)]] By default, the reset pin remains unchanged. If the "Start application" option is enabled, the reset pin is set to high output.<br />
* [[#Flasher ARM 20-pin JTAG/SWD Connector|5V-Supply (Pin 19)]] The state of this pin in idle depends on the configuration of the [[#Target power supply | Target power supply]].<br />
<br />
{{Note|1=If the target interface pins are configured as inputs, the target can drive the status of the pins with minimal interference from the Flasher. However it is still possible for minimal electrical currents to flow between Flasher and the target. <br>In case a complete electrical disconnection between Flasher and target is required, we recommend to make use of the [https://www.segger.com/products/production/flasher/accessories/adapters/relay-adapter/ SEGGER Relay Adapter].}}<br />
<br />
=== How to determine the hardware version ===<br />
<br />
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.<br />
Flasher has the hardware version printed on the back label.<br><br />
<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).<br />
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><br />
<br />
[[File:FlasherARM_version.gif]]<br />
<br />
== Support and FAQs ==<br />
<br />
This chapter contains troubleshooting tips together with solutions for common problems which might occur when using Flasher.<br />
There are several steps you can take before contacting support.<br />
Performing these steps can solve many problems and often eliminates the need for assistance.<br />
This chapter also contains a collection of frequently asked questions (FAQs) with answers.<br />
<br />
=== Contacting support ===<br />
<br />
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.<br />
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><br />
<br />
If you need to contact support, send the following information to<br><br />
''support@segger.com''<br><br />
<br />
* A detailed description of the problem<br />
* Flasher serial number<br />
* Information about your target hardware (processor, board, etc.).<br />
* <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]].<br />
<br />
Flasher is sold directly by SEGGER.<br />
<br />
=== Frequently Asked Questions ===<br />
<br />
'''Maximum JTAG speed'''<br />
{|<br />
|-<br />
| '''Q:''' || What is the maximum JTAG speed supported by Flasher?<br />
|-<br />
| '''A:''' || Flasher's maximum supported JTAG speed is 12MHz.<br />
|}<br />
<br />
'''Maximum download speed'''<br />
{|<br />
|-<br />
| '''Q:''' || What is the maximum download speed?<br><br />
|-<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.<br />
|}<br />
== Background information ==<br />
<br />
This chapter provides background information about flash programming in general. It<br />
also provides information about how to replace the firmware of Flasher manually.<br />
<br />
=== Flash programming ===<br />
<br />
Flasher comes with a DLL, which allows - amongst other functionalities - reading and writing RAM, CPU registers, starting and stopping the CPU, and setting breakpoints.<br />
<br />
==== How does flash programming via Flasher work? ====<br />
<br />
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.<br />
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.<br />
Different flash chips have different programming algorithms;the programming algorithm also depends on other things,<br />
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).<br />
The RAM code requires data to be programmed into the flash memory. The data is supplied by downloading it to RAM.<br />
<br />
==== Data download to RAM ====<br />
<br />
The data (or part of it) is downloaded to another part of the RAM of the target system.<br />
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.<br />
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.<br />
This process may have to be repeated until the entire data is programmed into the flash.<br />
<br />
==== Available options for flash programming ====<br />
<br />
In general, there are two possibilities in order to use Flasher for flash programming:<br><br />
<br />
* Using Flasher stand-alone to program the target flash memory (stand-alone mode)<br />
* Using Flasher in combination with J-Flash to program the target flash memory (Flasher in "PC-based mode")<br />
<br />
===== Using Flasher in stand-alone mode =====<br />
<br />
In order to use the Flasher in stand-alone mode, it has to be configured first.<br />
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]].<br />
<br />
===== J-Flash - Complete flash programming solution =====<br />
<br />
J-Flash is a stand-alone Windows application, which can read / write data files and program the flash in almost any ARM system.<br />
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''.<br />
<br />
==== How does the universal flash programming work? ====<br />
<br />
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><br />
<br />
Universal flash programming is available only for stand-alone mode.<br />
== Glossary ==<br />
<br />
This chapter describes important terms used throughout this manual.<br />
<br />
'''Big-endian'''<br><br />
Memory organization where the least significant byte of a word is at a higher address than the most significant byte. See Little-endian.<br />
<br />
'''Cache cleaning'''<br><br />
The process of writing dirty data in a cache to main memory.<br />
<br />
'''Coprocessor'''<br><br />
An additional processor that is used for certain operations, for example, for floating-point math calculations, signal processing, or memory management.<br />
<br />
'''Dirty data'''<br><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.<br />
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.<br />
<br />
'''Halfword'''<br><br />
A 16-bit unit of information.<br />
<br />
'''Host'''<br><br />
A computer which provides data and other services to another computer. Especially, a computer providing debugging services to a target being debugged.<br />
<br />
'''ICache'''<br><br />
Instruction cache.<br />
<br />
'''ID'''<br><br />
Identifier.<br />
<br />
'''IEEE 1149.1'''<br><br />
The IEEE Standard which defines TAP. Commonly (but incorrectly) referred to as JTAG.<br />
<br />
'''Image'''<br><br />
An executable file that has been loaded onto a processor for execution.<br />
<br />
'''Instruction Register'''<br><br />
When referring to a TAP controller, a register that controls the operation of the TAP.<br />
<br />
'''IR'''<br><br />
See Instruction Register.<br />
<br />
'''Joint Test Action Group (JTAG)'''<br><br />
The name of the standards group which created the IEEE 1149.1 specification.<br />
<br />
'''Little-endian'''<br><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.<br />
<br />
'''Memory coherency'''<br><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.<br />
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.<br />
<br />
'''Memory management unit (MMU)'''<br><br />
Hardware that controls caches and access permissions to blocks of memory, and translates virtual to physical addresses.<br />
<br />
'''Memory Protection Unit (MPU)'''<br><br />
Hardware that controls access permissions to blocks of memory. Unlike an MMU, a MPU does not translate virtual addresses to physical addresses.<br />
<br />
'''RESET'''<br><br />
Abbreviation of System Reset. The electronic signal which causes the target system other than the TAP controller to be reset.<br />
This signal is also known as "nSRST" "nSYSRST", "nRST", or "nRESET" in some other manuals. See also nTRST.<br />
<br />
'''nTRST'''<br><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.<br />
<br />
'''Open collector'''<br><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.<br />
<br />
'''Processor Core'''<br><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.<br />
It excludes optional coprocessors, caches, and the memory management unit.<br />
<br />
'''Remapping'''<br><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.<br />
<br />
'''RTOS'''<br><br />
Real Time Operating System.<br />
<br />
'''TAP Controller'''<br><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.<br />
<br />
'''Target'''<br><br />
The actual processor (real silicon or simulated) on which the application program is running.<br />
<br />
'''TCK'''<br><br />
The electronic clock signal which times data on the TAP data lines TMS, TDI, and TDO.<br />
<br />
'''TDI'''<br><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.<br />
<br />
'''TDO'''<br><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.<br />
<br />
'''Test Access Port (TAP)'''<br><br />
The port used to access a device's TAP Controller. Comprises TCK, TMS, TDI, TDO, and nTRST (optional).<br />
<br />
'''Transistor-transistor logic (TTL)'''<br><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.<br />
<br />
'''Word'''<br><br />
A 32-bit unit of information. Contents are taken as being an unsigned integer unless otherwise stated.<br />
== Literature and references ==<br />
This chapter lists documents, which we think may be useful to gain a deeper understanding of technical details.</div>JanBhttps://wiki.segger.com/index.php?title=UM08022_Flasher&diff=17594UM08022 Flasher2024-02-02T07:37:38Z<p>JanB: /* Target interface pin states in idle */</p>
<hr />
<div><!---<br />
General TBD:<br />
- LG: Right now - EVERYTHING<br />
===========================================<br />
--------------------[more specific, but on multiple locations]<br />
- check if all emphasis (bold, tt, blue, etc ) have made it into the new version<br />
- Add Information -> Additional information<br />
- use of the term free-of-charge utility/tool etc<br />
- check compliant to DocStandards_Rules.txt<br />
- Remove everything regarding to Kickstarter versions? eventually create a chapter Legacy -> Kickstarter version were available for hw version 5-x (200x-200x)...[..]<br />
- 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.<br />
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.<br />
- if week keep the IDE specific stuff in the manual, add Ozone, ES and J-Link Commander were no mentioned.<br />
- IDE specifics move into wiki confirmed by Alex<br />
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)<br />
- check all sections regarding licensing<br />
- Check compliance of J-Link emDocs with typographic conventions described in AboutThisDocument.emDoc. What should be altered? e.g. references<br />
- use uref at all (not blue)?<br />
- search and decide where to use \ref (ref with page number)<br />
- why is \ref (no single "option" \uref is more basic as \ref.....)<br />
- in text, use either \ref or \iref instead of \uref<br />
- in old manual, \H3 started on a new page (not per default, but set manually for api tables etc...)<br />
- move used old images and source files (visio etc) via svn (currently copied)<br />
--------------------[grammar / vocabulary discussion]<br />
- Product names<br />
-- Use of SEGGEPROBE in this document?<br />
- use license over licence<br />
- commandline or command-line?<br />
- toolchain or tool chain?<br />
- crossreference/cross-reference/cross reference?<br />
- overcurrent?<br />
- double words?<br />
- frontend?<br />
- Unit: Kbytes, KBytes, V, mV.... 9V or 9 V? Create rule in Vocabulary<br />
- baudrate or baud rate?<br />
- stackpointer or stack pointer<br />
- check where we should replace abbreviations with the long form (e.h. "milliseconds" instead of "ms")<br />
- config or configuration<br />
- filepointer or file pointer?<br />
--------------------[J-Link dep. specific]<br />
- J-Link command strings or J-Link Command strings or J-Link Command Strings<br />
- J-Link settings file or...<br />
- J-Link control panel or ......<br />
- J-Link script files or...<br />
---><br />
Flasher is a programming tool for microcontrollers with on-chip or external flash memory.<br />
Flasher is designed for programming flash targets with the J-Flash software or stand-alone.<br />
In addition to that Flasher can also be used as a regular J-Link. For more information about J-Link in general,<br />
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].<br />
<br />
<div class="toclimit-2"><br />
__TOC__<br />
</div><br />
<br />
== Flasher Software and Documentation Pack ==<br />
The Flasher Software and Documentation Pack, available for download on the [https://www.segger.com/downloads/flasher#FlasherSoftwareAndDocumentationPack SEGGER homepage], includes applications to be used with Flasher and in some cases with J-Link and J-Trace.<br><br />
It also comes with USB-drivers for J-Link, J-Trace and Flasher.<br />
<br />
=== Software overview ===<br />
{| class="wikitable"<br />
|-<br />
! Software !! Description<br />
|-<br />
| [[J-Link Configurator|Flasher Configurator]] || GUI-based configuration tool for Flasher. Allows configuration of USB identification as well as TCP/IP identification of Flashers.<br />
|-<br />
| [[FlasherControl|Flasher Control]] || Command-line tool to connect to the Flasher's command-line interface via USB.<br />
|-<br />
| [[J-Flash]] || Flash programming application.<br />
|-<br />
| [[J-Flash SPI]] || (Q)SPI flash programming application.<br />
|-<br />
| [[J-Link Commander]] || Command-line tool with basic functionality for target analysis.<br />
|-<br />
| [[J-Link Registration]] || SEGGER J-Link Registration utility to register your SEGGER product such as a J-Link, J-Trace or Flasher.<br />
|-<br />
| [[JTAGLoad]] || Command line tool that opens an svf file and sends the data in it via J-Link / J-Trace or Flasher to the target.<br />
|-<br />
| [https://www.segger.com/downloads/flasher/UM08037.pdf U-Flash] || Tool for creating standalone Flasher projects.<br />
|}<br />
<br />
== Flasher overview ==<br />
Flasher connects to a PC using the USB/Ethernet/RS232 interface (what host interfaces are available depends on the Flasher model),<br />
running Windows, Linux & MacOS. In stand-alone mode,<br />
Flasher can be driven by the start/stop button, or via the RS232 interface (handshake control or ASCII interface).<br />
Flasher always has a 20-pin connector, which target interfaces are supported depends on the Flasher model:<br />
* Flasher ARM: JTAG and SWD are supported.<br />
* Flasher RX: JTAG is supported. Flasher comes with additional 14-pin RX adapter<br />
* Flasher PPC: JTAG is supported. Flasher comes with additional 14-pin PPC adapter.<br />
* Flasher PRO: JTAG and SWD are supported.<br />
* Flasher Compact: JTAG and SWD are supported.<br />
<br />
=== Features of Flasher ARM/PPC/RX/PRO ===<br />
* Three boot modes: PC-based mode, stand-alone mode, file access mode<br />
* Stand-alone JTAG/SWD programmer (Once set up, Flasher can be controlled without the use of PC program)<br />
* No power supply required, powered through USB<br />
* Supports internal and external flash devices<br />
* 128 MB memory for storage of target program<br />
* Can be used as J-Link (emulator) with a download speed of up to 720 Kbytes/second<br />
* Data files can updated via USB/Ethernet (using the J-Flash software), via FTP, via RS232 or via the file access mode of Flasher<br />
<br />
{| class="seggertable"<br />
|-<br />
! Flasher model !! Supported cores !! Supported target interfaces !! Flash programming speed (depending on target hardware)<br />
|-<br />
| Flasher ARM || ARM7/ARM9/Cortex-M || JTAG, SWD || between 170 and 300 Kbytes/second<br />
|-<br />
| Flasher RX || Renesas RX610, RX621, RX62N, RX62T || JTAG || between 30-300 Kbytes/second<br />
|-<br />
| Flasher PPC || Power PC e200z0 || JTAG || up to 138 Kbytes/second<br />
|-<br />
| Flasher PRO || ARM7/ARM9/Cortex-M Renesas RX610, RX621, RX62N, RX62T Power PC e200z0 || JTAG, SWD || between 30-300 Kbytes/ second<br />
|-<br />
|}<br />
<br />
==== Features of Flasher Compact ====<br />
<br />
* Three boot modes: PC-based mode, stand-alone mode, file access mode<br />
* Stand-alone JTAG/SWD programmer (Once set up, Flasher can be controlled without the use of PC program)<br />
* No power supply required, powered through USB<br />
* Supports internal and external flash devices<br />
* 128 MB memory for storage of target program<br />
* Can be used as J-Link (emulator) with a download speed of up to 720 Kbytes/second<br />
* Data files can updated via USB/Ethernet (using the J-Flash software) or via the file access mode of Flasher<br />
<br />
{| class="seggertable"<br />
|-<br />
! Flasher model !! Supported cores !! Supported target interfaces !! Flash programming speed (depending on target hardware)<br />
|-<br />
| Flasher ARM || ARM7/ARM9/Cortex-M || JTAG, SWD || between 170 and 300 Kbytes/second<br />
|-<br />
| Flasher RX || Renesas RX610, RX621, RX62N, RX62T || JTAG || between 30-300 Kbytes/second<br />
|-<br />
| Flasher PPC || Power PC e200z0 || JTAG || up to 138 Kbytes/second<br />
|-<br />
| Flasher Compact || ARM7/ARM9/Cortex-M Renesas RX610, RX621, RX62N, RX62T Power PC e200z0 || JTAG, SWD || between 30-300 Kbytes/ second<br />
|-<br />
|}<br />
<br />
==== Features of Flasher Portable/Flasher Portable PLUS ====<br />
<br />
* Stand-alone in-circuit-programmer (Once set up, Flasher can be controlled without the use of a PC program)<br />
* Powered by an internal rechargeable battery (standard batteries for Flasher Portable), no Laptop or external power supply required.<br />
* Multiple firmware images can be stored on Flasher<br />
* 128 MB memory for storage of target program<br />
* Flasher Portable PLUS supports a simple selection of up to 99 firmware images via buttons (since V7.90)<br />
* Supported CPUs: ARM Cortex, Legacy ARM7/9, Renesas RX, Freescale PowerPC<br />
* Supports internal and external flash<br />
* Free software updates<ref name="legitimateOwned" />, 1 year of support<br />
* Data files can be updated via the file access mode functionality or via J-Flash<br />
* Programming speed between 30-300 Kbytes/second (actual speed depends on target hardware)<br />
{{Note|1=Ethernet and RS232 as host interface are not available for Flasher Portable}}<br />
<references><br />
<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.<br />
As a legitimate owner of a SEGGER Flasher, you can always download the latest software free of charge.<br />
Though not planned and not likely, we reserve the right to change this policy.<br />
Note that older models may not be supported by newer versions of the software.<br />
Typically, we support older models with new software at least 3 years after end of life.<br />
</ref><br />
</references><br />
<br />
{| class="seggertable"<br />
|-<br />
! Supported cores !! Supported target interfaces !! Flash programming speed (depending on target hardware)<br />
|-<br />
| ARM7/ARM9/Cortex-M || JTAG, SWD || between 30-300 Kbytes/second<br />
|-<br />
| Renesas RX610, RX621, RX62N, RX62T || JTAG || between 170 and 300 Kbytes/second<br />
|-<br />
| Power PC e200z0 || JTAG || up to 138 Kbytes/second<br />
|-<br />
|}<br />
<br />
==== Working environment ====<br />
<br />
'''General'''<br><br />
The Flasher can operate from a PC with an appropriate software like J-Flash or in stand-alone mode.<br />
<br />
'''Host System'''<br><br />
IBM PC/AT or compatible CPU: 486 (or better) with at least 128MB of RAM,<br />
running Windows, Linux & MacOS. It needs to have a USB, Ethernet or RS232 interface available for communication with Flasher.<br />
<br />
'''Power supply'''<br><br />
Flasher Portable: 3x standard AAA batteries or 5V DC, min. 100 mA via USB connector.<br />
<br />
Flasher Portable PLUS: internal rechargeable 680mAh Li-Ion battery, min. 100 mA via USB connector.<br />
<br />
Other Flashers: 5V DC, min. 100 mA via USB connector.<br />
<br />
'''Installing Flasher PC-software'''<br><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><br />
More information about the package you can find in the similar [[J-Link Software and Documentation Pack]].<br><br />
The package includes U-Flash and J-Flash, the main tools for flashing targets:<br />
* J-Flash : J-Flash User Guide ([https://wiki.segger.com/UM08003_JFlash UM08003_JFlash.pdf]).<br />
* U-Flash : U-Flash User Guide ([https://www.segger.com/downloads/flasher/UM08037.pdf UM08037_UniversalFlashLoader.pdf]).<br />
<br />
=== Specifications ===<br />
<br />
<br />
==== Specifications for Flasher ARM ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Windows, Linux & MacOS<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C<br />
|-<br />
| Storage Temperature || -20 °C ... +60 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
!colspan="100%"| Mechanical<br />
|-<br />
| Size (without cables) || 121mm x 66mm x 30mm<br />
|-<br />
| Weight (without cables) || 119g<br />
|-<br />
!colspan="100%"| Available interfaces<br />
|-<br />
| USB Host interface || USB 2.0, full speed<br />
|-<br />
| Ethernet Host interface || 10/100 MBit<br />
|-<br />
| RS232 Host interface || RS232 9-pin<br />
|-<br />
| Target interface || JTAG 20-pin (14-pin adapter available)<br />
|-<br />
!colspan="100%"| JTAG Interface, Electrical<br />
|-<br />
| Power Supply || USB powered, 100mA for Flasher ARM. 500 mA if target is powered by Flasher ARM<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| Target supply voltage || Supply voltage is 5V, max.<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6 <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Max. JTAG speed || up to 12MHz<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
===== Flasher ARM download speed =====<br />
<br />
The following table lists the Flasher ARM performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! ARM7 memory download<br />
|-<br />
| Flasher ARM || 720 Kbytes/s (12MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
<br />
==== Specifications for Flasher RX ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Windows, Linux & MacOS<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C<br />
|-<br />
| Storage Temperature || -20 °C ... +60 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
!colspan="100%"| Mechanical<br />
|-<br />
| Size (without cables) || 121mm x 66mm x 30mm<br />
|-<br />
| Weight (without cables) || 119g<br />
|-<br />
!colspan="100%"| Available interfaces<br />
|-<br />
| USB Host interface || USB 2.0, full speed<br />
|-<br />
| Ethernet Host interface || 10/100 MBit<br />
|-<br />
| RS232 Host interface || RS232 9-pin<br />
|-<br />
| Target interface || JTAG 20-pin (shipped with 14-pin adapter for Renesas RX)<br />
|-<br />
!colspan="100%"| JTAG Interface, Electrical<br />
|-<br />
| Power Supply || USB powered, 100mA for Flasher RX. 500 mA if target is powered by Flasher RX<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| 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)<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6 <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Max. JTAG speed || up to 12MHz<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
===== Flasher RX download speed =====<br />
<br />
The following table lists the Flasher RX performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! Flasher RX600 series memory download<br />
|-<br />
| Flasher RX || 720 Kbytes/s (12MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
<br />
==== Specifications for Flasher PPC ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Windows, Linux & MacOS<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C<br />
|-<br />
| Storage Temperature || -20 °C ... +60 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
!colspan="100%"| Mechanical<br />
|-<br />
| Size (without cables) || 121mm x 66mm x 30mm<br />
|-<br />
| Weight (without cables) || 119g<br />
|-<br />
!colspan="100%"| Available interfaces<br />
|-<br />
| USB Host interface || USB 2.0, full speed<br />
|-<br />
| Ethernet Host interface || 10/100 MBit<br />
|-<br />
| RS232 Host interface || RS232 9-pin<br />
|-<br />
| Target interface || JTAG 20-pin (shipped with 14-pin adapter for Renesas PPC)<br />
|-<br />
!colspan="100%"| JTAG Interface, Electrical<br />
|-<br />
| Power Supply || USB powered, 100mA for Flasher PPC. 500 mA if target is powered by Flasher PPC<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| Target supply voltage || Supply voltage is 5V, max.<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6 <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Max. JTAG speed || up to 12MHz<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
===== Flasher RX download speed =====<br />
<br />
The following table lists the Flasher PPC performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! Memory download<br />
|-<br />
| Flasher PPC || 530 Kbytes/s (8 MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
<br />
==== Specifications for Flasher PRO ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Windows, Linux & MacOS<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C<br />
|-<br />
| Storage Temperature || -20 °C ... +60 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
!colspan="100%"| Mechanical<br />
|-<br />
| Size (without cables) || 121mm x 66mm x 30mm<br />
|-<br />
| Weight (without cables) || 119g<br />
|-<br />
!colspan="100%"| Available interfaces<br />
|-<br />
| USB Host interface || USB 2.0, full speed<br />
|-<br />
| Ethernet Host interface || 10/100 MBit<br />
|-<br />
| RS232 Host interface || RS232 9-pin<br />
|-<br />
| Target interface || JTAG 20-pin (14-pin adapter available)<br />
|-<br />
!colspan="100%"| JTAG Interface, Electrical<br />
|-<br />
| Power Supply || USB powered, 100mA for Flasher PRO. 500 mA if target is powered by Flasher PRO<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| Target supply voltage || Supply voltage is 5V, max.<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6 <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Max. JTAG speed || up to 12MHz<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
<br />
===== Supported CPU cores =====<br />
<br />
The Flasher PRO supports the following CPU cores:<br />
<br />
'''ARM Cortex'''<br><br />
* Cortex-A5<br />
* Cortex-A8<br />
* Cortex-A9<br />
* Cortex-R4<br />
* Cortex-R5<br />
* Cortex-M0<br />
* Cortex-M0+<br />
* Cortex-M1<br />
* Cortex-M3<br />
* Cortex-M4<br />
<br />
'''ARM (legacy cores)'''<br><br />
* ARM720T<br />
* ARM7TDMI<br />
* ARM7TDMI-S<br />
* ARM920T<br />
* ARM922T<br />
* ARM926EJ-S<br />
* ARM946E-S<br />
* ARM966E-S<br />
* ARM1136JF-S<br />
* ARM1136J-S<br />
* ARM1156T2-S<br />
* ARM1156T2F-S<br />
* ARM1176JZ-S<br />
* ARM1176JZF<br />
* ARM1176JZF-S<br />
<br />
'''Renesas RX'''<br><br />
* RX111<br />
* RX210<br />
* RX220<br />
* RX21A<br />
* RX610<br />
* RX621<br />
* RX62G<br />
* RX62N<br />
* RX62T<br />
* RX630<br />
* RX631<br />
* RX63N<br />
* RX63T<br />
<br />
'''Freescale Power PC'''<br><br />
* e200z0<br />
<br />
===== Supported Target interfaces =====<br />
<br />
The Flasher PRO supports the following target interfaces:<br />
<br />
* JTAG<br />
* SWD<br />
* FINE<br />
* SPD<br />
<br />
===== Flasher PRO download speed =====<br />
<br />
The following table lists the Flasher PRO performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! ARM7 memory download<br />
|-<br />
| Flasher PRO || 720 Kbytes/s (12MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
<br />
==== Specifications for Flasher Compact ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Microsoft Windows (x86/x64)<br>Linux (x86/x64/Arm)<br>macOS (x86/Apple M1)<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C<br />
|-<br />
| Storage Temperature || -20 °C ... +65 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
| Size (without cables) || 70mm x 45mm x 18mm<br />
|-<br />
| Weight (without cables) || 40g<br />
|-<br />
| USB Host interface || USB 2.0 (Hi-Speed); Micro USB<br />
|-<br />
| Target interface || JTAG 20-pin (14-pin adapter available)<br />
|-<br />
| Power Supply || USB powered, 130mA (idle)<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| Target supply voltage || Supply voltage is 5V, max.<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
| Supported target interfaces || SPI, QSPI, 8051 C2, cJTAG, FINE, ICSP, IIC, ISP, JTAG, PDI, SPD, SWD, SWIM, UART, UPDI<br />
|-<br />
| Serial transfer rate between Flasher Compact and target || Up to 50 MHz (Depending on target interface)<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6 <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
===== Supported CPU cores =====<br />
<br />
The Flasher Compact supports the following CPU cores:<br />
'''ARM Cortex'''<br><br />
* Cortex-A5<br />
* Cortex-A8<br />
* Cortex-A9<br />
* Cortex-R4<br />
* Cortex-R5<br />
* Cortex-M0<br />
* Cortex-M0+<br />
* Cortex-M1<br />
* Cortex-M3<br />
* Cortex-M4<br />
<br />
'''ARM (legacy cores)'''<br><br />
* ARM720T<br />
* ARM7TDMI<br />
* ARM7TDMI-S<br />
* ARM920T<br />
* ARM922T<br />
* ARM926EJ-S<br />
* ARM946E-S<br />
* ARM966E-S<br />
* ARM1136JF-S<br />
* ARM1136J-S<br />
* ARM1156T2-S<br />
* ARM1156T2F-S<br />
* ARM1176JZ-S<br />
* ARM1176JZF<br />
* ARM1176JZF-S<br />
<br />
'''Renesas RX'''<br><br />
* RX111<br />
* RX210<br />
* RX220<br />
* RX21A<br />
* RX610<br />
* RX621<br />
* RX62G<br />
* RX62N<br />
* RX62T<br />
* RX630<br />
* RX631<br />
* RX63N<br />
* RX63T<br />
<br />
'''Freescale Power PC'''<br><br />
* e200z0<br />
<br />
===== Flasher Compact download speed =====<br />
<br />
The following table lists the Flasher Compact performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! ARM7 memory download<br />
|-<br />
| Flasher Compact || 720 Kbytes/s (12MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
<br />
==== Specifications for Flasher Portable PLUS ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Windows, Linux & MacOS<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C (normal operation)<br>+5 °C ... +45 °C (battery charging)<br />
|-<br />
| Storage Temperature || -20 °C ... +45 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
| 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)<br />
|-<br />
| Charging via USB || 70 minutes (at 1A charging current)<br />
|-<br />
!colspan="100%"| Mechanical<br />
|-<br />
| Size (without cables) || 126mm x 70mm x 28mm<br />
|-<br />
| Weight (without cables) || 140g<br />
|-<br />
!colspan="100%"| Available interfaces<br />
|-<br />
| USB Host interface || USB 2.0<br />
|-<br />
| Target interface || Standard 20-pin 0.1" connector (Adapters available).<br />
|-<br />
!colspan="100%"| Target Interface, Electrical<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| Target supply voltage || Supply voltage is 4.5V, max. (depends on the current battery voltage).<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6 <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Max. JTAG speed || up to 12MHz<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
===== Supported CPU cores =====<br />
<br />
The Flasher Portable PLUS supports the following CPU cores:<br />
<br />
'''ARM Cortex'''<br><br />
* Cortex-A5<br />
* Cortex-A8<br />
* Cortex-A9<br />
* Cortex-R4<br />
* Cortex-R5<br />
* Cortex-M0<br />
* Cortex-M0+<br />
* Cortex-M1<br />
* Cortex-M3<br />
* Cortex-M4<br />
<br />
'''ARM (legacy cores)'''<br><br />
* ARM720T<br />
* ARM7TDMI<br />
* ARM7TDMI-S<br />
* ARM920T<br />
* ARM922T<br />
* ARM926EJ-S<br />
* ARM946E-S<br />
* ARM966E-S<br />
* ARM1136JF-S<br />
* ARM1136J-S<br />
* ARM1156T2-S<br />
* ARM1156T2F-S<br />
* ARM1176JZ-S<br />
* ARM1176JZF<br />
* ARM1176JZF-S<br />
<br />
'''Renesas RX'''<br><br />
* RX111<br />
* RX210<br />
* RX220<br />
* RX21A<br />
* RX610<br />
* RX621<br />
* RX62G<br />
* RX62N<br />
* RX62T<br />
* RX630<br />
* RX631<br />
* RX63N<br />
* RX63T<br />
<br />
'''Freescale Power PC'''<br><br />
* e200z0<br />
<br />
===== Supported Target interfaces =====<br />
<br />
The Flasher Portable PLUS supports the following target interfaces:<br />
* JTAG<br />
* SWD<br />
* FINE<br />
* SPD<br />
<br />
===== Flasher Portable PLUS download speed =====<br />
<br />
The following table lists the Flasher Portable PLUS performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! ARM7 memory download<br />
|-<br />
| Flasher PRO || 720 Kbytes/s (12MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
<br />
==== Specifications for Flasher Portable ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Windows, Linux & MacOS<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C<br />
|-<br />
| Storage Temperature || -20 °C ... +65 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
| Power Supply || a) USB powered, 100mA for Flasher Portable. 500 mA if target is powered by Flasher Portable<br>b) Batteries powered (3xAAA)<br />
|-<br />
!colspan="100%"| Mechanical<br />
|-<br />
| Size (without cables) || 130mm x 65mm x 25mm<br />
|-<br />
| Weight (without cables) || 120g<br />
|-<br />
!colspan="100%"| Available interfaces<br />
|-<br />
| USB Host interface || USB 2.0<br />
|-<br />
| Target interface || Standard 20-pin 0.1" connector (Adapters available).<br />
|-<br />
!colspan="100%"| Target Interface, Electrical<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| Target supply voltage || Supply voltage is 4.5V, max. (depends on the current battery voltage).<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6V <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Max. JTAG speed || up to 12MHz<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
===== Supported CPU cores =====<br />
<br />
The Flasher Portable supports the following CPU cores:<br />
<br />
'''ARM Cortex'''<br><br />
* Cortex-A5<br />
* Cortex-A8<br />
* Cortex-A9<br />
* Cortex-R4<br />
* Cortex-R5<br />
* Cortex-M0<br />
* Cortex-M0+<br />
* Cortex-M1<br />
* Cortex-M3<br />
* Cortex-M4<br />
<br />
'''ARM (legacy cores)'''<br><br />
* ARM720T<br />
* ARM7TDMI<br />
* ARM7TDMI-S<br />
* ARM920T<br />
* ARM922T<br />
* ARM926EJ-S<br />
* ARM946E-S<br />
* ARM966E-S<br />
* ARM1136JF-S<br />
* ARM1136J-S<br />
* ARM1156T2-S<br />
* ARM1156T2F-S<br />
* ARM1176JZ-S<br />
* ARM1176JZF<br />
* ARM1176JZF-S<br />
<br />
'''Renesas RX'''<br><br />
* RX111<br />
* RX210<br />
* RX220<br />
* RX21A<br />
* RX610<br />
* RX621<br />
* RX62G<br />
* RX62N<br />
* RX62T<br />
* RX630<br />
* RX631<br />
* RX63N<br />
* RX63T<br />
<br />
'''Freescale Power PC'''<br><br />
* e200z0<br />
<br />
===== Supported Target interfaces =====<br />
<br />
The Flasher Portable supports the following target interfaces:<br />
<br />
* JTAG<br />
* SWD<br />
* FINE<br />
* SPD<br />
<br />
===== Flasher Portable download speed =====<br />
<br />
The following table lists the Flasher Portable performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! ARM7 memory download<br />
|-<br />
| Flasher PRO || 720 Kbytes/s (12MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
== Working with Flasher ==<br />
<br />
This chapter describes functionality and how to use Flasher.<br />
<br />
=== Flasher Portable PLUS ===<br />
<br />
The Flasher Portable PLUS is a portable version of SEGGERs Flasher family,<br />
which has been designed to fill the need of an extremely portable, production grade,<br />
Flash programmer used for in-field firmware updates. No need to be tethered to an outlet,<br />
it is powered by an integrated Li-Ion cell (680mAh).<br />
The Flasher Portable PLUS programs flash targets in stand-alone mode or via J-Flash PC software.<br><br />
<br />
Furthermore the Flasher Portable PLUS allows the user to select between 99 data images to be programmed (since V7.90).<br />
The images can be easily selected by using the SEL button on the front of the housing.<br />
For more information about support for multiple images, please refer to [[#Multiple File Support | Multiple File Support]].<br><br />
For setup and configuration purposes, the Flasher Portable PLUS connects to a PC via USB interface,<br />
running Windows, Linux & MacOS and has a built-in standard 20-pin J-Link target connector.<br><br />
<br />
{{Note|1=Ethernet and RS232 as host interface are not available for the Flasher Portable PLUS.}}<br />
<br />
==== Housing & Buttons ====<br />
<br />
The Flasher Portable PLUS comes with a display, which is for example used to represent the status of an ongoing flash progress.<br />
Furthermore, there are three buttons which allow the user to control Flasher Portable PLUS.<br />
For a detailed description of the functions, take a look at the table below:<br />
<br />
<!-- LG xxxxxx edit image with labels for buttons? (Is this actually necessary? Buttons are basically self-explanatory...) --><br />
[[File:Flasher_Portable_PLUS.png | 500px]]<br />
<br />
{| class="seggertable"<br />
|-<br />
! Button !! Description<br />
|-<br />
| Program || Start programming process with the currently selected image.<br />
|-<br />
| Select image || Select the image to be programmed next time the Program button is pressed.<br />
|-<br />
| 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.<br />
|-<br />
|}<br />
<br />
==== Configuration ====<br />
<br />
The Flasher Portable PLUS has some configuration options the other Flashers do not have.<br />
{| class="seggertable"<br />
|-<br />
! Option !! Description !! Value range !! Default value<br />
|-<br />
| AutoPowerOffOnIdle || Specifies the time interval after which the Flasher Portable will turn off without any user action || 1 to 3600 || 60<br />
|-<br />
| ShowDatCRCAfterProgramming || Activates displaying the data file CRC after the programming in the pop up message || 0 = inactive, 1 = active || 0<br />
|-<br />
|}<br />
<br />
If the <tt>Flasher.ini</tt> does not contain a <tt>[Config]</tt> section with the configuration option, the default value is used.<br />
<br />
'''Example:'''<br><br />
This sample will show the data file CRC after the programming and the auto power of is set to five minutes (=300 seconds).<br />
<br />
<source lang="c"><br />
[CONFIG]<br />
AutoPowerOffOnIdle = "300"<br />
ShowDatCRCAfterProgramming = "1"<br />
</source><br />
<br />
=== Flasher Portable ===<br />
<br />
The Flasher Portable is a portable version of SEGGERs Flasher family, which has been designed to fill the need of an extremely portable,<br />
production grade, Flash programmer used for in-field firmware updates. No need to be tethered to an outlet,<br />
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><br />
<br />
Furthermore the Flasher Portable allows the user to select between four data images to be programmed.<br />
The images can be easily selected by using the arrow buttons on the front of the housing.<br />
For more information about support for multiple images, please refer to [[#Multiple File Support | Multiple File Support]].<br><br />
For setup and configuration purposes, the Flasher Portable connects to a PC via USB interface,<br />
running Windows, Linux & MacOS and has a built-in standard 20-pin J-Link target connector.<br><br />
<br />
{{Note|1=Ethernet and RS232 as host interface are not available for the Flasher Portable.}}<br />
<br />
==== Housing & Buttons ====<br />
<br />
The Flasher Portable comes with several leds which are for example used to represent the status of an ongoing flash progress.<br />
Furthermore, there are three buttons which allow the user to control Flasher Portable.<br />
For a detailed description of the functions, take a look at the two tables below:<br />
<br />
<!-- LG xxxxxx edit image with labels for buttons?--><br />
[[File:Flasher_Portable_Top_2.png | 500px]]<br />
<br />
{| class="seggertable"<br />
|-<br />
! LED !! Description<br />
|-<br />
| ACTIVE || GREEN. Blinks while the Flasher Portable is busy / performs operations on the target.<br />
|-<br />
| PASS/FAIL || GREEN/RED. Indicates, if the last flashing cycle was successful.<br />
<ul><br />
<li> GREEN: Flashing cycle completed successfully.</li><br />
<li> RED: Flashing cycle completed with error.</li><br />
</ul><br />
|-<br />
| 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]].<br />
|-<br />
| POWER || GREEN: Indicates if Flasher is currently powered. Blinks while Flasher Portable tries to enumerate via USB.<br />
|-<br />
| 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.<br />
|-<br />
|}<br />
<br />
{| class="seggertable"<br />
|-<br />
! Button !! Description<br />
|-<br />
| Program || Start programming process with the currently selected image.<br />
|-<br />
| Select image || Select the image to be programmed next time the <tt>Program</tt> button is pressed.<br />
|-<br />
| 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<br />
|-<br />
|}<br />
<br />
=== File system ===<br />
<br />
The Flasher with hardware version 4 and lower supports 8.3 filenames only (8 characters filename, 3 characters file extension).<br />
Using longer filenames may result in incorrect operation. Integrated functions,<br />
like the FTP server or the terminal server, will refuse writing files with long filenames.<br />
<br />
=== Setting up the IP interface ===<br />
<br />
Setting up the IP interface<br />
Some of the Flasher models come with an additional Ethernet interface to communicate with the host system.<br />
These Flashers also come with a built-in webserver which allows some basic setup of the emulator,<br />
e.g. configuring a default gateway which allows using it even in large intranets. For more information,<br />
please refer to [[#TCP Services | TCP Services]].<br />
<br />
==== Connecting the first time ====<br />
<br />
When connecting Flasher the first time, it attempts to acquire an IP address via DHCP.<br />
The recommended way for finding out which IP address has been assigned to Flasher is, to use the J-Link Configurator.<br />
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.<br />
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''.<br />
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,<br />
please refer to ''UM08001, J-Link / J-Trace User Guide'', chapter ''Setup'', section ''Setting up the IP interface''.<br />
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]].<br />
<br />
=== Operating modes ===<br />
<br />
All Flashers except the Flasher ATE are able to boot in 3 different modes:<br />
<br />
* PC-based mode<br />
* Stand-alone mode<br />
* File access mode<br />
<br />
{{Note|1=The Flasher ATE only supports the stand-alone mode.}}<br />
<br />
'''Definition PC-based mode'''<br><br />
Flasher is connected to a PC via USB/Ethernet and controlled by a PC application (J-Flash).<br />
If there is an RS232 connection to a PC, does not have any influence on if PC-based mode is entered or not.<br />
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, ...)<br />
<br />
'''Definition Stand-alone mode'''<br><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.<br />
<br />
'''Definition file access mode'''<br><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.<br />
In this mode, Flasher enumerates as a mass storage device (like an USB Stick) at the host PC.<br />
In this mode, configuration + data files can be manually placed on the Flasher and the Flasher logfile can be read out.<br />
If you are using a self-powered Flasher such as the Flasher Portable Plus, the Flasher must be turned off before connecting it.<br />
<br />
==== PC-based mode ====<br />
If you want to use Flasher for the first time you need to install the J-Link software and documentation package.<br />
After installation, connect Flasher to the host PC via USB or Ethernet.<br />
For more information about how to install the J-Link software and documentation package please refer to [[J-Link Software and Documentation Pack]].<br />
<br />
===== Connecting the target system =====<br />
<br />
'''Power-on sequence'''<br><br />
In general, Flasher should be powered on before connecting it with the target device.<br />
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.<br />
Power-on the device after you connected Flasher to it. Flasher will boot in "PC-based mode".<br />
<br />
'''Verifying target device connection with J-Link.exe'''<br><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.<br />
Then start the J-Link command line tool <tt>JLink.exe</tt>,<br />
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.<br />
The screenshot below shows the output of <tt>JLink.exe</tt>.<br />
<br />
[[File:flasher_jlinkmode.gif]]<br />
<br />
===== LED status indicators =====<br />
<br />
In PC-based mode, there are also certain LED status codes defined:<br />
<br />
{| class="seggertable"<br />
|-<br />
! # !! Status of LED !! Meaning<br />
|-<br />
| 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.<br />
|-<br />
| 0 || GREEN<br>constant || Flasher enumeration process is complete and it is ready to be controlled by a PC application.<br />
|-<br />
|}<br />
<br />
==== Stand-alone mode ====<br />
<br />
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]].<br />
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).<br />
In the "stand-alone mode" Flasher can be used as a stand-alone flash programmer.<br><br />
<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]].}}<br />
<br />
===== LED status indicators =====<br />
Progress and result of an operation is indicated by Flasher's LEDs. The behavior is different for J-Link and stand-alone mode.<br />
For a definition of the different modes, please refer to [[#Operating modes | Operating modes]].<br />
The following table describes the behavior of the LEDs in stand-alone mode.<br />
<br />
{| class="seggertable"<br />
|-<br />
! # !! Status of LED !! Meaning<br />
|-<br />
| 0 || GREEN<br>constant || Flasher waits for a start trigger to perform an operation in stand-alone mode.<br />
|-<br />
| 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><br />
|-<br />
| 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.<br />
|-<br />
|}<br />
Older Flasher models have a different behavior.<br />
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:<br />
<br />
* 1621xxxxx (Flasher ARM V2)<br />
* 1630xxxxx (Flasher ARM V3)<br />
* 4210xxxxx (Flasher PPC V1)<br />
* 4110xxxxx (Flasher RX V1)<br />
<br />
{| class="seggertable"<br />
|-<br />
! # !! Status of LED !! Meaning<br />
|-<br />
| 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.<br />
|-<br />
| 1 || GREEN<br>constant || Connect to target and perform init sequence.<br />
|-<br />
| 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><br />
|-<br />
| 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.<br />
|-<br />
|}<br />
<br />
==== File access mode ====<br />
<br />
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".<br />
If you are using a self-powered Flasher such as the Flasher Portable Plus, the Flasher must be turned off before connecting it.<br />
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.<br />
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>.<br />
<br />
[[File:flasher_mode_msd.gif]]<br />
<br />
<tt>FLASHER.CFG</tt> contains the configuration settings for programming the target device and <tt>FLASHER.DAT</tt> contains the data to be programmed.<br />
<tt>FLASHER.LOG</tt> contains all logging information about the commands, performed in stand-alone mode.<br />
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><br />
<br />
Currently, J-Flash does not support to configure Flasher for automated serial number programming.<br><br />
<br />
If you want to configure multiple Flasher for the same target you do not have to use J-Flash all the time.<br />
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".<br />
<br />
=== Setting up Flasher for stand-alone mode ===<br />
{{Note| All Options how to set up the Flasher for stand-alone mode you can find here: [[Flasher/Download project to Flasher|Download project to the Flasher]]}}<br />
<br />
In order to set up Flasher for the stand-alone mode it needs to be configured once using the J-Flash software.<br />
For more information about J-Flash, please refer to the ''J-Flash User Guide''.<br><br />
<br />
After starting J-Flash, open the appropriate J-Flash project for the target Flasher shall be configured for, by selecting '''File''' -> '''Open Project'''.<br />
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><br />
<br />
After the appropriate project has been opened / created, the data file which shall be programmed needs to be loaded, by selecting '''File''' -> '''Open'''.<br />
After this J-Flash should look like in the screenshot below.<br />
<br />
[[File:jflash_projectfile_datafile.gif]]<br />
<br />
Before downloading the configuration (project) and program data (data file) to Flasher, the connection type (USB/IP) needs to be selected in the project.<br />
These settings are also saved on a per-project basis, so this also only needs to be setup once per J-Flash project.<br />
The connection dialog is opened by clicking '''Options''' -> '''Project settings''' -> '''General'''.<br />
<br />
[[File:jflash_connection_dialog.gif]]<br />
<br />
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.<br />
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.<br />
The user then can simply select the Flash he wants to download the configuration to.<br />
<br />
[[File:EmuSelectionDialog.gif]]<br />
<br />
In order to download the configuration and program data to the Flasher, simply select '''File''' -> '''Download config & data file to Flasher'''.<br />
<br />
[[File:jflash_download_to_emul.gif]]<br />
<br />
The J-Flash log window indicates that the download to the emulator was successful.<br />
<br />
[[File:jflash_download_to_emu_succ.gif]]<br />
<br />
From now on, Flasher can be used in stand-alone mode (without host PC interaction) for stand-alone programming.<br />
<br />
==== Preparing for stand-alone operation manually ====<br />
<br />
As an alternative, J-Flash can also be used to save config and data file to a hard drive.<br><br />
<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,<br />
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.<br />
<br />
'''Creating config and data files'''<br><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><br />
<br />
For some devices, additional files (*.PEX) are needed.<br />
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.<br />
<br />
'''About *.PEX files'''<br><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,<br />
the following needs to be taken care of:<br><br />
<br />
For some devices, special connect, reset etc. sequences are necessary which are stored in so-called *.PEX files on the Flasher.<br><br />
<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><br />
<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><br />
The *.PEX files need to be placed in a subdirectory with the same name as the corresponding *.cfg file.<br />
J-Flash creates a directory with the correct name automatically when a config file is created.<br><br />
<br />
Example:<br><br />
<br />
MyConf0 is a project for a device that requires a *.PEX file for connect.<br><br />
MyConf1 is a project for a device that requires no *.PEX file at all.<br />
<br />
[[File:PEX_File_Flasher.png]]<br />
<br />
=== Universal Flash Loader mode ===<br />
<br />
As an alternative to the stand-alone mode, configured via J-Flash, there is the Universal Flash Loader mode.<br />
While the normal stand-alone mode relies on using the debug interface of the device, the Universal Flash Loader<br />
mode uses device or vendor specific programming interfaces and protocols and therefore it is independent of the<br />
CPU core.<br><br />
<br />
The Universal Flash Loader is available for the following Flasher models:<br />
* Flasher PRO<br />
* Flasher Compact<br />
* Flasher Portable PLUS<br />
<br />
For some of the supported devices, SEGGER offers specific adapters.<br />
<br />
==== Preparing manually ====<br />
<br />
The Universal Flash Loader uses an configuration file (*.UNI), a device specific flash programming algorithm (*.PEX) and a data file (*.DAT).<br />
<br />
===== Configuration =====<br />
<br />
The configuration file basically is split into three parts.<br />
The first part, the section [DEVICE], controls the generic behavior of the Universal Flash Loader.<br />
It specifies which protocol driver and data file to use. It allows enabling and configuring target power<br />
and it defines which actions to perform.<br />
The second part consists of one or more [BANKx] sections, which contain information about the memories.<br />
The third part, the section [CONFIG], includes configuration settings for the protocol driver.<br><br />
<br />
An .UNI file might look as follows:<br><br />
<br />
<source lang="c"><br />
[OPTIONS]<br />
TargetPower = "0"<br />
ChipErase = "0"<br />
<br />
[TASKS]<br />
CheckBlank = "1"<br />
Erase = "1"<br />
Program = "1"<br />
Verify = "1"<br />
Secure = "1"<br />
<br />
[DEVICE]<br />
Algo = "RL78.PEX"<br />
Data = "ALL_6k.dat"<br />
<br />
[BANK0]<br />
; Code Flash<br />
Base = "0x00000000"<br />
Size = "0x00004000"<br />
Sect = "0x00000400"<br />
<br />
[BANK1]<br />
; Data Flash<br />
Base = "0x000F1000"<br />
Size = "0x00000800"<br />
Sect = "0x00000400"<br />
<br />
[CONFIG]<br />
BaudRate = "1000000"<br />
ClearConfigOnConnect = "0x00"<br />
Security = "0xFF"<br />
ShieldStart = "0x0000"<br />
ShieldEnd = "0x000F"<br />
</source><br />
<br />
'''[OPTIONS]'''<br><br />
'''TargetPower'''<br><br />
If set to a value >0, power is applied to the target.<br />
The value defines the delay (in ms) after enabling the target power supply and before starting to communicate with the target.<br />
<br />
'''ChipErase'''<br><br />
If set to 1, the chip erase function is called for erasing the chip.<br><br />
{{Note|1=Do not enable this setting if the flash programming algorithm does not support chip erase.}}<br />
<br />
'''[TASKS]'''<br><br />
'''CheckBlank'''<br><br />
Defines if a blank check should be performed before erasing a sector.<br />
<br />
'''Erase'''<br><br />
Defines if the sector should be erased before programming.<br />
<br />
'''Program'''<br><br />
Defines if the sector should be programmed.<br />
<br />
'''Verify'''<br><br />
Defines if the sector should be verified after programming.<br />
<br />
'''Secure'''<br><br />
Defines if the device should be secured or protected against read-out after verifying.<br />
<br />
'''[DEVICE]'''<br><br />
'''Algo'''<br><br />
File name of the flash programming algorithm. This file is provided by SEGGER and will typically support a series of devices.<br />
<br />
'''Data'''<br><br />
File name of the data file to program. The Flasher only supports the Flasher .dat file format.<br />
Flasher .dat files can be generated by J-Flash or Universal Flash Loader and offer high performance together with high flexibility.<br />
<br />
'''[BANKx]'''<br><br />
x blocks with configuration data for the flash banks. All three parameters (Base, Size and Sect) are mandatory.<br />
<br />
'''Base'''<br><br />
Base address of the flash bank.<br />
<br />
'''Size'''<br><br />
Total size of the flash bank.<br />
<br />
'''Sect'''<br><br />
Sector size of the flash bank.<br />
<br />
'''[CONFIG]'''<br><br />
This section includes specific configuration data for the flash programming algorithm.<br><br />
There are no general parameters.<br />
<br />
{{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. }}<br />
<br />
==== Preparing using the PC utility ====<br />
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.<br />
<br />
[[File:Universal Flash Loader.png]]<br />
<br />
The Universal Flash Loader Configurator comes with a large list of devices and flash programming algorithms. If you are going to<br />
use a device from one of the supported families which currently is not available in the utility, feel free to contact the support.<br />
<br />
=== Multiple File Support ===<br />
<br />
It is also possible to have multiple data files and config files on Flasher, to make Flasher more easy to use in production environment.<br />
To choose the correct configuration file and data file pair, a <tt>FLASHER.INI</tt> file is used.<br />
This init file contains a <tt>[FILES]</tt> section which describes which configuration file and which data file should be used for programming.<br />
A sample content of a FLASHER.INI file is shown below:<br><br />
<br />
<source><br />
[FILES]<br />
DataFile = "Flasher1.dat"<br />
ConfigFile = "Flasher1.cfg"<br />
</source><br />
<br />
Using this method all configuration files and data files which are used in the production only have to be downloaded once.<br />
From there on a configuration file / data file pair can be switched by simply replacing the <tt>FLASHER.INI</tt> by a new one,<br />
which contains the new descriptions for the configuration file and data file. The <tt>FLASHER.INI</tt> can be replaced in two ways:<br />
<ol><br />
<li>Boot Flasher in file access mode in order to replace the <tt>FLASHER.INI</tt></li><br />
<li><br />
If Flasher is already integrated into the production line, runs in stand-alone mode and can not be booted in other mode:<br />
Use the file I/O commands provided by the ASCII interface of Flasher, to replace the <tt>FLASHER.INI</tt>.<br />
For more information about the file I/O commands, please refer to [[#File I/O commands | File I/O commands]].<br />
</li><br />
</ol><br />
{{Note|1=Flasher with hardware version 4 and lower only supports 8.3 filenames only (8 characters filename, 3 characters file extension). Using longer filenames may result in incorrect operation.}}<br />
<br />
==== Flasher Portable specifics ====<br />
<br />
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><br />
<br />
Which config / data file pair is used for which image selection position is determined by the contents of the FLASHER.INI.<br />
For this, the FLASHER.INI contents in the <tt>[FILES]</tt> section have been extended.<br />
The sample below shows how to enable the user to select between four different images on the Flasher portable via the select / arrow button:<br />
<br />
<source><br />
[FILES]<br />
DataFile = "First.dat"<br />
ConfigFile = "First.cfg"<br />
DataFile1 = "Second.dat"<br />
ConfigFile1 = "Second.cfg"<br />
DataFile2 = "Third.dat"<br />
ConfigFile2 = "Third.cfg"<br />
DataFile3 = "Fourth.dat"<br />
ConfigFile3 = "Fourth.cfg"<br />
</source><br />
<br />
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.<br />
From there on, switching between the files can be done by simply using the selection button of Flasher Portable.<br />
<br />
===== Example =====<br />
<br />
1 Target, 2 Datafiles (e.g. boot loader und application) --> same configuration file (*.CFG) but different data files (*.DAT) should be used.<br><br />
<br />
* Open pre-configured J-Flash project<br />
* File -> Save Flasher config file ... (DEFAULT.CFG)<br />
* Open data file 1 (boot loader)<br />
* File -> Save Flasher data file ... (BOOT.DAT)<br />
* Open data file 2 (application)<br />
* File -> Save Flasher data file ... (APP.DAT)<br />
* Create the a FLASHER.INI file (content see below)<br />
* Connect the Flasher in file access mode to the PC<br />
* Copy DEFAULT.CFG, BOOT.DAT, APP.DAT and FLASHER.INI on the Flasher<br />
<br />
FLASHER.INI content:<br><br />
<br />
<source><br />
[FILES]<br />
DataFile = "BOOT.DAT"<br />
ConfigFile = "DEFAULT.CFG"<br />
DataFile1 = "APP.DAT"<br />
ConfigFile1 = "DEFAULT.CFG"<br />
</source><br />
<br />
==== Flasher Portable PLUS specifics ====<br />
<br />
Flasher Portable PLUS allows to choose between 99 configuration and data file pairs during runtime by using the select button on the front of Flasher Portable PLUS.<br><br />
<br />
Which config / data file pair is used for which image selection position is determined by the contents of the FLASHER.INI.<br />
For this, the FLASHER.INI may contain several <tt>[BATCH]</tt> sections.<br />
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:<br />
<br />
<source><br />
[BATCH]<br />
DataFile = "First.dat"<br />
ConfigFile = "First.cfg"<br />
[BATCH1]<br />
DataFile = "Second.dat"<br />
ConfigFile = "Second.cfg"<br />
[BATCH2]<br />
DataFile = "Third.dat"<br />
ConfigFile = "Third.cfg"<br />
[BATCH7]<br />
DataFile = "Proj_8.dat"<br />
ConfigFile = "Proj_8.cfg"<br />
[BATCH15]<br />
DataFile = "Proj_16.dat"<br />
ConfigFile = "Proj_16.cfg"<br />
</source><br />
<br />
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.<br />
From there on, switching between the files can be done by simply using the selection button of Flasher Portable PLUS.<br />
<br />
Please also consider the chapter [[#Batch Programming in stand-alone mode | Batch Programming in stand-alone mode]].<br />
<br />
{{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.}}<br />
{{Note|1=You may have gaps in the list. The missing entries will be skipped when selecting the next configuration.}}<br />
{{Note|1=The <tt>[Files]</tt> section is supported by the Flasher Portable PLUS, too. But the number of configuration is limited to four.}}<br />
<br />
===== Example =====<br />
<br />
1 Target, 2 Datafiles (e.g. boot loader und application) --> same configuration file (*.CFG) but different data files (*.DAT) should be used.<br><br />
<br />
* Open pre-configured J-Flash project<br />
* File -> Save Flasher config file ... (DEFAULT.CFG)<br />
* Open data file 1 (boot loader)<br />
* File -> Save Flasher data file ... (BOOT.DAT)<br />
* Open data file 2 (application)<br />
* File -> Save Flasher data file ... (APP.DAT)<br />
* Create the a FLASHER.INI file (content see below)<br />
* Connect the Flasher in file access mode to the PC<br />
* Copy DEFAULT.CFG, BOOT.DAT, APP.DAT and FLASHER.INI on the Flasher<br />
<br />
FLASHER.INI content:<br><br />
<br />
<source><br />
[BATCH]<br />
DataFile = "BOOT.DAT"<br />
ConfigFile = "DEFAULT.CFG"<br />
DisplayName = "Bootloader"<br />
[BATCH1]<br />
DataFile = "APP.DAT"<br />
ConfigFile = "DEFAULT.CFG"<br />
DisplayName = "Application"<br />
[BATCH2]<br />
DataFile = "BOOT.DAT"<br />
ConfigFile = "DEFAULT.CFG"<br />
DataFile1 = "APP.DAT"<br />
ConfigFile1 = "DEFAULT.CFG"<br />
DisplayName = "BL and App"<br />
</source><br />
<br />
=== Custom labels ===<br />
<br />
Flasher supports to assign custom labels to configurations ("Project Display Text" in U-Flash). This allows to specify easy to remember names for configurations that are stored on the Flasher.<br />
<br />
==== Hardware and software requirements ====<br />
This feature is supported by the following models:<br />
* Flasher Portable PLUS<br />
<br />
This feature is supported since V6.30e of the software package and firmware<br />
<br />
==== Assigning labels ====<br />
The configuration and data file pairs are specified in the <tt>FLASHER.INI</tt> file:<br />
<source><br />
[FILES]<br />
DataFile = "IMAGE0.dat"<br />
ConfigFile = "IMAGE0.cfg"<br />
DataFile1 = "IMAGE1.dat"<br />
ConfigFile1 = "IMAGE1.cfg"<br />
</source><br />
<br />
By default, Flasher will show the names of the configuration and data file:<br />
[[File:FW1_smartwatch_nolabel.png]]<br />
[[File:FW2_smart_meter_nolabel.png]]<br />
<br />
By adding <tt>DisplayName</tt>, <tt>DisplayName1</tt>, ... keys to the <tt>FLASHER.INI</tt>, a custom label can be shown instead:<br />
<source><br />
[FILES]<br />
DisplayName = "FW smartwatch"<br />
DataFile = "IMAGE0.dat"<br />
ConfigFile = "IMAGE0.cfg"<br />
DisplayName1 = "FW smart meter"<br />
DataFile1 = "IMAGE1.dat"<br />
ConfigFile1 = "IMAGE1.cfg"<br />
</source><br />
<br />
The images will now be shown as follows:<br />
[[File:FW1_smartwatch_label.png]]<br />
[[File:FW2_smart_meter_label.png]]<br />
<br />
==== Considerations ====<br />
* 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.<br />
<br />
=== Programming multiple targets ===<br />
<br />
It is possible to program multiple targets which are located in a JTAG chain.<br />
The targets will be programmed each with a configuration and a data file.<br><br />
The configuration for the desired target must be selected before it can be programmed,<br />
this can be done with the <tt>#SELECT</tt> command.<br />
For more information how to use the <tt>#SELECT</tt> command please refer to the [[#ASCII_command_interface|ASCII command interface]].<br />
<br />
'''Example'''<br><br />
Three devices should be programmed.<br><br />
<br />
JTAG Chain: ''TDI'' --> ''Device2'' --> ''Device1'' --> ''Device0'' --> ''TDO''<br><br />
<br />
Three configurations would be stored on the flasher:<br><br />
<br />
Config 0: Configured to program Device0 (DEVICE0.CFG, DEVICE0.DAT)<br><br />
Config 1: Configured to program Device1 (DEVICE1.CFG, DEVICE1.DAT)<br><br />
Config 2: Configured to program Device2 (DEVICE2.CFG, DEVICE2.DAT)<br><br />
<br />
Selection and programming of the target will be done via the ASCII interface:<br><br />
<br />
<source><br />
#SELECT DEVICE0<br />
#AUTO<br />
#SELECT DEVICE1<br />
#AUTO<br />
#SELECT DEVICE2<br />
#AUTO<br />
</source><br />
<br />
==== Programming multiple targets with J-Flash ====<br />
<br />
Programming multiple targets can also be done via J-Flash using the command line interface.<br />
For this each target must be handled with its own project file.<br />
<br />
'''Example'''<br><br />
<br />
<source><br />
JFlash.exe -openproj"Device0.jflash" -open"Device0.hex" -auto -exit<br />
JFlash.exe -openproj"Device1.jflash" -open"Device1.hex" -auto -exit<br />
JFlash.exe -openproj"Device2.jflash" -open"Device2.hex" -auto -exit<br />
</source><br />
<br />
=== Batch Programming in stand-alone mode ===<br />
<br />
Batch programming allows to execute different stand-alone mode jobs in batch to be executed in immediate succession, without any user interaction in between.<br />
This can be used for example to program multiple targets in a JTAG-Chain or multiple data files to a target.<br><br />
A batch may contains an unlimited number of configurations which consist of a data file (*.DAT) and config file (*.CFG).<br />
For further information regarding config and data files, please refer to [[#Preparing for stand-alone operation manually | Preparing for stand-alone operation manually]].<br><br />
In order to specify the batch jobs, a FLASHER.INI file is used.<br />
This init file contains a [BATCH] section which describes which configuration pairs (*.DAT and *.CFG file) should be used for each batch job.<br />
A sample content of a FLASHER.INI file is shown below:<br><br />
<br />
<source><br />
[BATCH]<br />
DataFile = "Flasher0.dat"<br />
ConfigFile = "Flasher0.cfg"<br />
DataFile1 = "Flasher1.dat"<br />
ConfigFile1 = "Flasher1.cfg"<br />
</source><br />
<br />
[[File:Batch_Jobs.bmp]]<br />
<br />
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.<br />
<br />
<br />
[[File:Batch_Programming.bmp]]<br />
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<br />
currently executed action.<br />
<br />
<br />
[[File:Batch_Result.bmp]]<br />
The result of the programming will be shown on the screen after finishing all jobs.<br />
<br />
<br />
Creating / Replacing of the FLASHER.INI file can done in two ways:<br><br />
<ol><br />
<li>Boot Flasher in file access mode in order to replace the FLASHER.INI</li><br />
<li><br />
If Flasher is already integrated into the production line, runs in stand-alone mode and can not be booted in other mode:<br />
Use the file I/O commands provided by the ASCII interface of Flasher, to replace the FLASHER.INI .<br />
For more information about the file I/O commands, please refer to [[#File I/O commands | File I/O commands]].<br />
In case of an error occurred during execution, the Flasher terminates the entire batch processing.<br />
</li><br />
</ol><br />
{{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.}}<br />
{{Note|1=The Flasher with hardware version 4 and lower supports 8.3 filenames only (8 characters filename, 3 characters file extension). Using longer filenames may result in incorrect operation.}}<br />
<br />
==== Flasher Portable specifics ====<br />
<br />
Flasher Portable allows to choose between four different batches during runtime by using the select/arrow button on the front of Flasher Portable.<br />
Which batch configuration is used for which image selection position is specified in the FLASHER.INI.<br />
For this, the FLASHER.INI contents in the [BATCH] section have been extended.<br />
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><br />
<br />
<source><br />
[BATCH]<br />
DataFile = "Flasher0.dat"<br />
ConfigFile = "Flasher0.cfg"<br />
DataFile1 = "Flasher1.dat"<br />
ConfigFile1 = "Flasher1.cfg"<br />
DataFile2 = "Flasher2.dat"<br />
ConfigFile2 = "Flasher2.cfg"<br />
[BATCH1]<br />
DataFile = "TEST.dat"<br />
ConfigFile = "Test.cfg"<br />
[BATCH2]<br />
DataFile = "VALIDATE.dat"<br />
ConfigFile = "Flasher0.cfg"<br />
</source><br />
<br />
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.<br />
From there on, switching between the batches can be done by simply using the selection button of Flasher Portable.<br />
<br />
<br />
<br />
==== Examples ====<br />
<br />
'''Example 1:''' Programming two Data files to the same target<br><br />
<br />
* Open your J-Flash project.<br />
* Use File -> Save Flasher config file... to save the .CFG file (in this example: STM32F4.CFG).<br />
* Select the first binary and use File -> Save Flasher Data file... to save the first .DAT file (in this example: DATA0.DAT).<br />
* Select the second binary and use File -> Save Flasher Data file... to save the second data file .DAT file (in this example: DATA1.DAT).<br />
* Copy the Files to the Flasher e.g. by using file access mode.<br />
* Create a FLASHER.INI file in the root directory of the Flasher.<br />
* Exemplary content of FLASHER.INI:<br><br />
<source><br />
[BATCH]<br />
DataFile = "DATA0.dat"<br />
ConfigFile = "emPower.cfg"<br />
DataFile1 = "DATA1.dat"<br />
ConfigFile1 = "emPower.cfg"<br />
</source><br />
<br />
<br />
'''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><br />
Example scenario: 2 Devices in a JTAG chain, a STM32F1 and a STM32F4. <br><br />
<br />
* Follow the same as described before and additionally:<br />
* Create one project file per target (and create a .CFG file of each one).<br />
* Make sure each project file is configured correctly, especially the JTAG-Chain position (See UM8003 "J-Flash" for more detailed info).<br />
* Exemplary content of FLASHER.INI:<br><br />
<source><br />
[BATCH]<br />
DataFile = "F1DATA.dat"<br />
ConfigFile = "STM32F1.cfg"<br />
DataFile1 = "F4DATA0.dat"<br />
ConfigFile1 = "STM32F4.cfg"<br />
DataFile2 = "F4DATA1.dat"<br />
ConfigFile2 = "STM32F4.cfg"<br />
</source><br />
<br />
'''Example 3:''' Using multiple Batch sections with Flasher Portable.<br><br />
Example scenario: 2 Devices in a JTAG chain, a STM32F1 and a STM32F4.<br><br />
Selection 1 will program the STM32F1 target.<br><br />
Selection 2 will program the STM32F4 target using "F4DATA0.dat".<br><br />
Selection 3 will program the STM32F4 target using "F4DATA1.dat".<br><br />
Selection 4 will execute 1, 2 and 3 in sequence.<br><br />
* Exemplary content of FLASHER.INI:<br><br />
<source><br />
[BATCH]<br />
DataFile = "F1DATA.dat"<br />
ConfigFile = "STM32F1.cfg"<br />
[BATCH1]<br />
DataFile = "F4DATA0.dat"<br />
ConfigFile = "STM32F4.cfg"<br />
[BATCH2]<br />
DataFile = "F4DATA1.dat"<br />
ConfigFile = "STM32F4.cfg"<br />
[BATCH3]<br />
DataFile = "F1DATA.dat"<br />
ConfigFile = "STM32F1.cfg"<br />
DataFile1 = "F4DATA0.dat"<br />
ConfigFile1 = "STM32F4.cfg"<br />
DataFile2 = "F4DATA1.dat"<br />
ConfigFile2 = "STM32F4.cfg"<br />
</source><br />
<br />
=== Serial number programming ===<br />
<br />
Flasher supports programming of serial numbers. In order to use the serial number programming feature,<br />
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><br />
<br />
In general, Flasher supports two ways of programming a serial number into the target:<br />
<br />
#<br />
#* Programming continuous serial numbers.<br />
#* The serial number is 1-4 bytes in size.<br />
#* The start serial number, increment, serial number size, and address are configured in the J-Flash project.<br />
#<br />
#* Programming custom serial numbers from a serial number list file.<br />
#* The start line within the serial number list file to get the next serial number bytes, line increment, serial number size, and address is configured in the J-Flash project.<br />
#* The serial number list file needs to be specified and created by the user.<br />
<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.}}<br />
<br />
==== Serial number settings ====<br />
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.<br />
This is done by enabling the '''Program serial number''' option as shown in the screenshot and table below:<br />
<br />
[[File:UM08039_SN_Sample_JFlashSettings.png]]<br />
<br />
{| class="seggertable"<br />
|-<br />
!| Setting || Meaning<br />
|-<br />
| <tt>Address</tt> || The address the serial number should be programmed at.<br />
|-<br />
| <tt>Length</tt> ||<br />
The length of the serial number (in bytes) that 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 8 is selected as length, the serial number and its complement are programmed at the given address.<br />
* In case a serial number list file is given, the 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 '''Length''', the remaining bytes are filled with 0s. No complements etc. are added to the serial number.<br />
|-<br />
| <tt>Next SN</tt> ||<br />
* In case no serial number list file is given, '''Next SN''' is the next serial number which should be programmed. The serial number is always stored in flash memory in little-endian format.<br />
* In case a serial number list file is given, '''Next SN''' describes the line of the serial number list file where to read the next serial number bytes from. The Flasher starts counting at line 0, so in order to start serial number programming with the first line of the <tt>SNList.txt</tt>, '''Next SN''' needs to be set to 0.<br />
|-<br />
| <tt>Increment</tt> || Specifies by how much '''Next SN''' is incremented.<br />
|}<br />
<br />
=== Serial number file ===<br />
When selecting '''File -> Download serial number file to Flasher''', J-Flash will create a serial number file named as <tt><JFlashProjectName>_Serial.txt</tt>.<br />
This file is downloaded as <tt>Serial.txt</tt> on the Flasher.<br />
The file is generated based on the serial number settings in the J-Flash project and will contain the value defined by the '''Next SN''' option.<br />
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.<br />
<br />
==== Serial number list file ====<br />
<br />
In order to program custom serial numbers which can not be covered by the standard serial number scheme provided by J-Flash<br />
(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.<br />
<br />
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.<br />
This file is downloaded as <tt>SNList.txt</tt> on the 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<br />
* Each byte of the serial number is described by two hexadecimal digits.<br />
<br />
'''Example'''<br><br />
A 8-byte serial number should be programmed at address 0x08000000.<br><br />
<br />
It should be programmed as follows in the memory:<br><br />
<br />
<tt>0x08000000: 0x01 0x02 0x03 0x04 0x55 0x66 0x77 0x88</tt><br><br />
<br />
The serial number list file should look as follows:<br><br />
<br />
<tt>0102030455667788</tt><br />
<br />
[[File:SN_SNList.gif]]<br />
<br />
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><br />
<br />
Which line Flasher will read at the next programming cycle, is configured via the <tt>Next SN</tt> option in J-Flash.<br />
For more information, please refer to [[#Serial number settings | Serial number settings]].<br />
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><br />
<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.}}<br />
{{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.}}<br />
<br />
==== Programming process ====<br />
<br />
Flasher will increment the serial number in SERIAL.TXT by the value defined in <tt>Increment</tt>, after each successful programming cycle.<br><br />
<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><br />
<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.<br />
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.}}<br />
<br />
==== Downloading serial number files to Flasher ====<br />
<br />
Downloading the serial number files needs to be done explicitly by selecting '''File-> Download serial number file to Flasher'''.<br />
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.<br />
<br />
==== Sample setup ====<br />
<br />
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.<br />
<br />
'''Defining serial number address, length and start value'''<br><br />
In the J-Flash project the following needs to be defined:<br><br />
* <tt>Address</tt> is 0x08001000<br />
* <tt>Next SN</tt> is 1234567<br />
* <tt>Increment</tt> is 1<br />
* <tt>Len</tt> is 4 (bytes)<br />
<br />
[[File:SN_Sample_JFlashSettings.gif]]<br />
<br />
'''Downloading configuration, data and serial number to Flasher.'''<br><br />
After setting up the rest of the configuration (Target interface etc.) and selecting an appropriate data file, the configuration,<br />
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><br />
<br />
[[File:SN_Sample_DownloadToFlasher.gif]]<br />
<br />
After downloading the serial number to Flasher, J-Flash also created the <tt><JFlashProjectName>_Serial.txt</tt>.<br />
<br />
[[File:SN_Sample_SerialFileCreated.gif]]<br />
<br />
Now Flasher is prepared to program the 8-byte serial number.<br />
<br />
=== Patch file support ===<br />
<br />
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.<br />
Before starting programming process in stand-alone mode, Flasher will look for a file named <tt>Patches.txt</tt> being present on the Flasher.<br />
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><br />
<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.<br />
<br />
'''Syntax'''<br><br />
<!-- LG xxxxxxxxx '==' is shown as '=', so instead use '= ='--><br />
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><br />
<br />
<tt><NumPatches>,<Addr>,<NumBytes>:<nowiki><Data></nowiki>,<Addr>,<NumBytes>:<nowiki><Data></nowiki>,<Addr>,<NumBytes>:<nowiki><Data></nowiki>,<Addr>,<NumBytes>:<nowiki><Data></nowiki>\r\n</tt><br><br />
<br />
Find below a table which describes each parameter.<br><br />
{| class="seggertable"<br />
|-<br />
! Parameter !! Description<br />
|-<br />
| <tt><NumPatches></tt> || Describes the number of patches in this patch line. Max. value is 4.<br />
|-<br />
| <tt><Addr></tt> || Describes the address to be patched. Value is expected in hex.<br />
|-<br />
| <tt><NumBytes></tt> || Number of bytes for the current patch. Max. value is 20h (32 in decimal). Value is expected in hex.<br />
|-<br />
| <tt><nowiki><Data></nowiki></tt> || Describes the data to be patched. <nowiki><Data></nowiki> is always expected as 2 hexadecimal characters per byte.<br />
|-<br />
|}<br />
<br />
{{Note|1=All values are expected in hexadecimal format (hex).<br><br />
<nowiki><Data></nowiki> section is always preceded by ":", not ",".}}<br />
<br />
'''Example'''<br><br />
Below is an example patch.<br><br />
<br />
<source><br />
1,18,4:01020304\r\n<br />
</source><br />
<br />
Patching the following data:<br />
<br />
[[File:data_before.png]]<br />
<br />
with the example patch will result in the following data:<br />
<br />
[[File:data_afterwards.png]]<br />
<br />
Please note that as mentioned earlier patching undefined memory locations will be ignored.<br><br />
Applying the example patch to the following data:<br />
<br />
[[File:undefined_mem_before.png]]<br />
<br />
Causes no data to be patched, as can be seen in the following image:<br />
<br />
[[File:undefined_mem_no_token.png]]<br />
<br />
Therefore it is necessary to first write placeholder data to the memory locations which are supposed to be patched.<br><br />
An example for such a placeholder can be seen here:<br />
<br />
[[File:undefined_mem_token.png]]<br />
<br />
Please note that the actual data inside the placeholder does not matter to the Flasher,<br />
because it is overwritten during patching.<br><br />
Applying the example patch will now work as expected:<br />
<br />
[[File:undefined_mem_after.png]]<br />
<br />
'''Single patch via RS232'''<br><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><br />
<br />
Send the <tt>#AUTO PATCH <NumPatches>,<Addr>,<NumBytes>:<nowiki><Data></nowiki></tt><br><br />
<br />
command via Flasher ASCII interface. The parameters have the same function as described in the table above.<br />
<br />
==== Newline encoding ====<br />
<br />
In general, for all patch files, init files etc. Flasher supports both newline encodings:<br><br />
<br />
* Windows: \r\n<br />
* Unix/Mac: \n<br />
<br />
All parser functionality etc. are written to be independent from the host operating system.<br />
<br />
=== Limiting the number of programming cycles ===<br />
<br />
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.<br />
To make use of this feature, a file called <tt>Cntdown.txt</tt> needs to be placed on the Flasher.<br />
This file simply contains a decimal number (32-bit unsigned integer) that describes how many programming cycles can be performed with the current setup.<br />
<br />
[[File:CntdownTxtContent.jpg]]<br />
<br />
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><br />
<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>.}}<br />
<br />
==== Changed fail/error LED indicator behavior ====<br />
<br />
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><br />
<br />
* The red error/fail LED will lit for 1 second<br />
* After this, it will blink/toggle x times @ 5 Hz, indicating the number of programming cycles left. (blinking 5 times for 5 cycles left, ...)<br />
<br />
==== Required Flasher hardware version for Cntdown.txt support ====<br />
<br />
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><br />
<br />
* 1621xxxxx (Flasher ARM V2)<br />
* 1630xxxxx (Flasher ARM V3)<br />
* 4210xxxxx (Flasher PPC V1)<br />
* 4110xxxxx (Flasher RX V1)<br />
<br />
All other models / hardware versions support limiting of programming cycles.<br />
<br />
=== Authorized flashing ===<br />
<br />
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.<br />
without the possibility to read out the Flasher contents via file access mode, FILE I/O functionality (J-Link Commander) or RS232 commands.<br />
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.<br />
<br />
==== Creating / Adding the secure area ====<br />
<br />
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.<br />
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.<br />
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><br />
<br />
[[File:CreateSecArea.jpg]]<br />
<br />
The following secure area related commands are available in J-Link Commander:<br><br />
<br />
* securearea create<br />
* securearea remove<br />
<br />
{{Note|1=When creating or removing the <tt>secure area</tt>, all configuration and data files being stored on the Flasher, are lost.<br />
Please make sure that they are not needed anymore, before adding / removing the security area.}}<br />
<br />
==== Moving files to the secure area ====<br />
<br />
Before moving configuration + data to the <tt>secure area</tt>, proper functionality of the setup should be tested in stand-alone mode.<br />
Once the setup is working as expected, do the following, to move the configuration + data into the <tt>secure area</tt>:<br><br />
<br />
* Start Flasher in file access mode (For more info, please refer to: [[#file access mode | file access mode]])<br />
<br />
[[File:FilesBeforeSecure.png]]<br />
<br />
* Create a folder "<tt>_SECURE</tt>"<br />
* Move all files that shall be moved to the <tt>secure area</tt>, into this folder<br />
<br />
[[File:FilesAfterSecure.png]]<br />
<br />
* 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.<br />
* Now Flasher can be used in stand-alone mode, as normal, but the files cannot be read back by the user / operator.<br />
<br />
==== Considerations to be taken when using the secure area ====<br />
<br />
When using the <tt>secure area</tt>, some things need to be considered:<br><br />
<br />
* All features like multiple file support, patch file support etc. can also be used when operating from the <tt>secure area</tt>.<br />
* 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>.<br />
* 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>.<br />
* 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.<br />
<br />
==== Required Flasher hardware version ====<br />
<br />
Older Flasher models do not support authorized flashing. The Flashers with the following serial number ranges do not support authorized flashing:<br><br />
<br />
* 1621xxxxx (Flasher ARM V2)<br />
* 1630xxxxx (Flasher ARM V3)<br />
* 4210xxxxx (Flasher PPC V1)<br />
* 4110xxxxx (Flasher RX V1)<br />
<br />
All other models / hardware versions support authorized flashing.<br />
<br />
=== Target interfaces ===<br />
<br />
The table below shows the supported target interfaces of the different Flasher models.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! Supported interfaces<br />
|-<br />
| Flasher PRO || JTAG, SWD<br />
|-<br />
| Flasher Compact || JTAG, SWD<br />
|-<br />
| Flasher ARM || JTAG, SWD<br />
|-<br />
| Flasher RX || JTAG<br />
|-<br />
| Flasher PPC || JTAG<br />
|-<br />
|}<br />
<br />
For more information about the target interfaces itself, please refer to:<br><br />
<br />
* ''UM08001, chapter "Working with J-Link and J-Trace", section "JTAG interface"''<br />
* ''UM08001, chapter "Working with J-Link and J-Trace", section "SWD interface"''<br />
<br />
=== Supported architectures ===<br />
<br />
Flasher supports programming of the internal flash of a large number of different microcontrollers.<br />
The number of supported devices is steadily growing. You can always find the latest list of supported devices on our website:<br><br />
<br />
''http://www.segger.com/supported-devices.html''<br />
<br />
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.<br />
Also the existence of the device may have confidential status, so it might not be mentioned as being supported in public releases yet.<br />
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.<br />
<br />
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).<br />
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.<br />
<br />
If a device is not supported, you can always contact us. We will be happy to provide you with an offer.<br />
<br />
==== External flashes ====<br />
<br />
In general our Flashers support programming of external flashes listed below:<br>(Can differ between Flasher models and hardware versions)<br />
<br />
* parallel NOR flash<br />
* SPI / QSPI flash<br>(see: ''[[SPI_support_by_Flasher_models]]'')<br />
* NAND flash<br />
* I<sup>2</sup>C EEPROM/Flash<br />
* FRAM<br />
<br />
If the parallel NOR flash device which is used is not CFI-compliant you have to select the flash device in J-Flash explicitly,<br />
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''.<br />
<br />
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.<br />
The J-Flash software comes with sample projects for ''Open Flashloader''.<br />
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''<br />
{{Note|1=Complete Information about ''Open Flashloaders'' can be found in our Wiki:<br>''[[Open_Flashloader]]''}}<br />
<br />
==== Cores ====<br />
<br />
===== Flasher ARM =====<br />
<br />
Flasher ARM supports and has been tested with the following cores, but should work with any ARM7/9, Cortex-M0/M1/M3/M4 core.<br />
If you experience problems with a particular core, do not hesitate to contact Segger.<br><br />
<br />
* ARM7TDMI (Rev 1)<br />
* ARM7TDMI (Rev 3)<br />
* ARM7TDMI-S (Rev 4)<br />
* ARM920T<br />
* ARM922T<br />
* ARM926EJ-S<br />
* ARM946E-S<br />
* ARM966E-S<br />
* Cortex-M0<br />
* Cortex-M1<br />
* Cortex-M3<br />
* Cortex-M4<br />
<br />
===== Flasher RX =====<br />
<br />
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><br />
<br />
* RX610<br />
* RX621<br />
* RX62N<br />
* RX62T<br />
<br />
===== Flasher PPC =====<br />
<br />
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.<br />
<br />
* e200z0<br />
<br />
===== Flasher PRO/Compact/Portable PLUS =====<br />
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/''.<br />
<br />
=== Programming multiple targets in parallel ===<br />
<br />
To program multiple targets in parallel there are the following possibilities:<br />
* Using a Flasher gang, or<br />
* Using multiple Flashers, each connecting to one CPU.<br />
<br />
Devices for gang programming are:<br />
* Flasher Hub-12 in conjunction with up to 12 Flasher (Compact). Please refer to [[UM08043_Flasher_Hub-12|Flasher Hub-12 user manual (UM08043_Flasher_Hub-12)]].<br />
* Flasher ATE; suitable for programming up to 10 targets in parallel. Please refer to [https://www.segger.com/downloads/flasher/UM08035 Flasher ATE user manual (UM08035_FlasherATE.pdf)].<br />
When using multiple flashers, this can be done with the J-Flash production programming software.<br />
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''<br />
<br />
=== Logfiles and Quality Management ===<br />
<br />
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:<br />
<source lang="c"><br />
SN: 1 - Failed<br />
SN: 1 - Failed<br />
SN: 2 - O.K. (931 ms)<br />
SN: 3 - O.K. (931 ms)<br />
SN: 4 - O.K. (933 ms)<br />
SN: 5 - O.K. (932 ms)<br />
</source><br />
If applicable, the logfile contains more detailed error messages. For example:<br />
<source lang="c"><br />
ERROR: Programming failed @ address 0x00000000 (1)<br />
ERROR: Cannot connect to CPU. Target interface speed too high?<br />
</source><br />
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:<br />
<source lang="c"><br />
Verify error config word area @<br />
config word<br />
config word read back<br />
Verify error flash area @<br />
data from file<br />
data read back<br />
</source><br />
{{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.}}<br />
<br />
== TCP Services ==<br />
This chapter describes the integrated TCP services.<br />
<br />
=== FTP Server ===<br />
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><br />
[[File:FTPServer.png]]<br />
<br />
==== Access data ====<br />
Anonymous access to the FTP server is limited to read-only access to the file system.<br><br />
For write access, special login credentials have to be used:<br><br />
<tt>Login: admin</tt><br><br />
<tt>Password: 1234</tt><br><br />
<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.<br />
It is not meant as a security feature.}}<br />
<br />
=== Web server ===<br />
<br />
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.<br />
For the network, the IP address settings can be changed and a nick name can be assigned to the device.<br><br />
<br />
Additionally, the web interface provides information about the status of the integrated operating system, the IP stack and the target hardware.<br />
<br />
== Remote control ==<br />
This chapter describes how to control the Flasher in standalone mode.<br />
<br />
=== Overview ===<br />
There are 3 ways to control Flasher operation:<br><br />
{| class="seggertable"<br />
! Type of control !! Description<br />
|-<br />
| Button || Programming operation starts when pressing the PROG-button. The LEDs serve as visible indicators.<br />
|-<br />
| Handshake || 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.<br />
|-<br />
| Terminal || Terminal communication via TELNET, RS232 or VCOM with the [[#ASCII command interface]]<br />
|}<br />
<br />
<br />
{{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.}}<br />
<br />
=== Handshake control ===<br />
<br />
Some Flasher models are equipped with additional hardware control functions that are connected to the SUBD9 male connector, normally used as an RS232 interface to the PC.<br />
These Flasher models can therefore be controlled remotely by automated testers without the need for a connection to a PC.<br />
<br />
The handshake control is available for the following Flashers:<br />
* Flasher ARM<br />
* Flasher PRO<br />
* Flasher Compact (via Flasher Hub and Flasher Hub-12 only)<br />
<br />
The following diagrams show the internal remote control circuitry of Flasher:<br><br />
<br />
[[File:FlasherRemotecontrol.png]]<br />
{| class="seggertable"<br />
|-<br />
! Pin No. !! Function !! Description<br />
|-<br />
| 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.<br />
|-<br />
| 4 || BUSY || As soon as the "Auto" function is started, BUSY becomes active, which means that transistor is switched OFF.<br />
|-<br />
| 5 || GND || Common Signal ground.<br />
|-<br />
| 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.<br />
|-<br />
|}<br />
[[File:FlasherRemoteSignal.png]]<br />
<br />
=== ASCII command interface ===<br />
<br />
==== Introduction ====<br />
<br />
Once set up using J-Flash, the Flasher can be driven by any application or just a simple terminal using ASCII commands.<br><br />
<br />
Every known command is acknowledged by the Flasher and then executed. After command execution, Flasher sends an ASCII reply message.<br><br />
<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}}<br />
<br />
==== General command and reply message format ====<br />
<br />
* Any ASCII command has to start with the start delimiter ''#''.<br />
* Any ASCII command has to end with simple carriage return ('\r', ASCII code 13).<br />
* Commands can be sent upper or lower case<br />
<br />
==== General usage ====<br />
<br />
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.<br />
<br />
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).<br />
<br />
==== Settings for ASCII interface via RS232 ====<br />
<br />
Flasher is driven via a RS232 serial port with the following interface settings:<br><br />
<br />
* 9600 baud<br />
* 8 data bits<br />
* no parity<br />
* 1 stop bit<br />
<br />
The baud rate can be changed by using the <tt>#BAUDRATE</tt> command.<br />
<br />
==== Settings for ASCII interface via Telnet ====<br />
<br />
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><br />
<br />
[[File:telnet_connection.gif]]<br />
<br />
==== Settings for ASCII interface via VCOM ====<br />
<br />
The same settings can be used for VCOM as for [[#Settings for ASCII interface via RS232|RS232]].<br />
<br />
{{Note|The performance also depends on the terminal application used on the PC.}}<br />
<br />
==== Commands and replies ====<br />
<br />
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><br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| Commands to the Flasher<br />
|-<br />
| <tt>#BAUDRATE <Baudrate></tt><br />
|-<br />
| <tt>#AUTO</tt><br />
|-<br />
| <tt>#AUTO PATCH</tt><br />
|-<br />
| <tt>#AUTO NOINFO</tt><br />
|-<br />
| <tt>#CANCEL</tt><br />
|-<br />
| <tt>#ERASE</tt><br />
|-<br />
| <tt>#PROGRAM</tt><br />
|-<br />
| <tt>#RESULT</tt><br />
|-<br />
| <tt>#SELECT <Filename></tt><br />
|-<br />
| <tt>#START</tt><br />
|-<br />
| <tt>#STATUS</tt><br />
|-<br />
| <tt>#VERIFY</tt><br />
|-<br />
| <tt>#READ</tt><br />
|-<br />
| <tt>#QUIT</tt><br />
|-<br />
| <tt>#VERBOSE <Level></tt><br />
|-<br />
!colspan="100%"| File I/O commands<br />
|-<br />
| <tt>#FCLOSE</tt><br />
|-<br />
| <tt>#FCRC</tt><br />
|-<br />
| <tt>#FDELETE <Filename></tt><br />
|-<br />
| <tt>#FFORMAT</tt><br />
|-<br />
| <tt>#FOPEN <Filename></tt><br />
|-<br />
| <tt>#FREAD <Offset>,<NumBytes></tt><br />
|-<br />
| <tt>#FSIZE</tt><br />
|-<br />
| <tt>#FWRITE <Offset>,<NumBytes>:<nowiki><Data></nowiki></tt><br />
|-<br />
| <tt>#FLIST</tt><br />
|-<br />
| <tt>#MKDIR <Dirname></tt><br />
|-<br />
!colspan="100%"| SecureArea commands<br />
|-<br />
| <tt>#HASSECUREAREA</tt><br />
|-<br />
| <tt>#SECUREAREA <action></tt><br />
|-<br />
!colspan="100%"| Replies from the Flasher<br />
|-<br />
| <tt>#ACK</tt><br />
|-<br />
| <tt>#NACK</tt><br />
|-<br />
| <tt>#OK</tt><br />
|-<br />
| <tt>#OK:<NumBytes>:<nowiki><Data></nowiki></tt><br />
|-<br />
| <tt>#OK:<Size></tt><br />
|-<br />
| <tt>#STATUS:</tt><br />
|-<br />
| <tt>#DONE</tt><br />
|-<br />
| <tt>#ERRxxx</tt><br />
|-<br />
|}<br />
<br />
===== Commands to the Flasher =====<br />
<br />
'''#AUTO'''<br><br />
The <tt>#AUTO</tt> command behaves exactly as the start button or external remote control input.<br><br />
<br />
Usually, the following command sequence will be performed when receiving the <tt>#AUTO</tt> command:<br><br />
<br />
* The Flasher erases the target CPU (if not blank)<br />
* The Flasher programs the target CPU<br />
* The Flasher verifies the target CPU<br />
<br />
Depending on the settings chosen in the '''Production''' tab in J-Flash, this sequence can differ from the one shown above.<br><br />
<br />
Finally, Flasher responds with<br><br />
<br />
* <tt>#OK</tt> if no error occurred<br />
* <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.<br />
<br />
During execution of the <tt>#AUTO</tt> command, Flasher automatically sends "status" messages via RS232 to reflect the state of execution.<br />
Typically during execution of <tt>#AUTO</tt> command, Flasher will reply the following sequence of messages:<br><br />
<br />
<tt>#ACK</tt><br><br />
<tt>#STATUS:INITIALIZING</tt><br><br />
<tt>#STATUS:CONNECTING</tt><br><br />
<tt>#STATUS:UNLOCKING</tt><br><br />
<tt>#STATUS:ERASING</tt><br><br />
<tt>#STATUS:PROGRAMMING</tt><br><br />
<tt>#STATUS:VERIFYING</tt><br><br />
<tt>#OK (Total 13.993s, Erase 0.483s, Prog 9.183s, Verify 2.514s)</tt><br><br />
<br />
'''#AUTO PATCH'''<br><br />
The <tt>#AUTO</tt> PATCH command allows patching of the content of the data to be programmed.<br><br />
<br />
Flasher responds with<br><br />
<br />
* <tt>#OK</tt> if no error occurred<br />
* <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.<br />
<br />
For further information about the usage of the <tt>#AUTO PATCH</tt> command please refer to [[#Patch file support | Patch file support]].<br />
<br />
'''#AUTO NOINFO'''<br><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><br />
<br />
The command ends with <tt>#OK</tt> or <tt>#ERRxxx</tt><br />
<br />
'''#BAUDRATE <Baudrate>'''<br><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><br />
<br />
If this command succeeds, Flasher responds with:<br><br />
<br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<br />
Otherwise it will respond with one of the following error messages:<br><br />
<br />
<tt>#ERR255: Invalid parameters</tt><br><br />
<tt>or</tt><br><br />
<tt>#ERR255: Baudrate is not supported</tt><br><br />
<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.<br />
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.}}<br />
<br />
'''#CANCEL'''<br><br />
This command can be sent to abort a running program. It may take a while until the current program is actually canceled.<br><br />
<br />
Flasher will respond with:<br><br />
<br />
<tt>#ERR007:CANCELED.</tt><br><br />
<br />
'''#ERASE'''<br><br />
This command can be sent to erase all selected target flash sectors.<br><br />
<br />
Flasher will reply the following sequence of messages:<br><br />
<br />
<tt>#ACK</tt><br><br />
<tt>#STATUS:INITIALIZING</tt><br><br />
<tt>#STATUS:CONNECTING</tt><br><br />
<tt>#STATUS:UNLOCKING</tt><br><br />
<tt>#STATUS:ERASING</tt><br><br />
<tt>#OK (Total 0.893s, Erase 0.483s)</tt><br><br />
<br />
'''#PROGRAM'''<br><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.<br />
<br />
'''#RESULT'''<br><br />
This command can be sent any time, even during other command execution. Flasher responds with the last result of the previously executed command.<br />
<br />
'''#SELECT <Filename>'''<br><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.<br />
<tt><Filename></tt> specifies the name of file pair without extensions (.CFG and .DAT) on the Flasher which should be selected. If you are<br />
using the universal flash programming mode, <tt><Filename></tt> specifies the full name of the .UNI file '''including''' the extension.<br />
Flasher saves the selected config and data file in the FLASHER.INI file. So this selection is remembered even between power-cycling Flasher.<br><br />
<br />
This may be verfy helpful in cases where several config and data files are stored on Flasher.<br />
The user can easily switch between these config and data files without connecting Flasher to a host.<br><br />
<br />
If this command succeeds, Flasher responds with:<br><br />
<br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<br />
Find below a sample sequence which shows how to use the <tt>#SELECT</tt> command:<br><br />
<br />
<tt>#SELECT ATSAM7_1 // ATSAM7_1.CFG and ATSAM7_1.DAT is selected</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<tt>#AUTO // Start auto programming</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#STATUS:INITIALIZING</tt><br><br />
<tt>#STATUS:CONNECTING</tt><br><br />
<tt>#STATUS:UNLOCKING</tt><br><br />
<tt>#STATUS:ERASING</tt><br><br />
<tt>#STATUS:PROGRAMMING</tt><br><br />
<tt>#STATUS:VERIFYING</tt><br><br />
<tt>#OK (Total 8.416s, Erase 0.005s, Prog 6.845s, Verify 0.959s)</tt><br><br />
<tt>#SELECT ATSAM7_2 // ATSAM7_2.CFG and ATSAM7_2.DAT is selected</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<tt>#AUTO // Start auto programming</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#STATUS:INITIALIZING</tt><br><br />
<tt>#STATUS:CONNECTING</tt><br><br />
<tt>#STATUS:UNLOCKING</tt><br><br />
<tt>#STATUS:ERASING</tt><br><br />
<tt>#STATUS:PROGRAMMING</tt><br><br />
<tt>#STATUS:VERIFYING</tt><br><br />
<tt>#OK (Total 8.632s, Erase 0.005s, Prog 7.051s, Verify 0.969s)</tt><br><br />
<br />
'''#START'''<br><br />
This command can be sent to start the application using the method configured in the J-Flash project.<br><br />
For U-Flash projects, however, the target application is not necessarily started. <br><br />
There is often a "start application" checkbox in the U-Flash settings which have to be set for this.<br />
<br />
Flasher will reply with the following sequence of messages:<br><br />
<br />
<tt>#ACK</tt><br><br />
<tt>#STATUS:INITIALIZING</tt><br><br />
<tt>#STATUS:CONNECTING</tt><br><br />
<tt>#OK (Total 1.148s)</tt><br><br />
<br />
'''#STATUS'''<br><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]].<br />
<br />
'''#VERIFY'''<br><br />
This command can used to verify the target flash content against the data stored in Flasher.<br />
<br />
'''#READ'''<br><br />
Only available for devices supported by U-Flash.<br><br />
This command can used to read out flash data.<br><br />
More information: [https://wiki.segger.com/Flasher/How_to_read_data_from_a_device_using_U-Flash How to read data using U-Flash]<br />
<br />
'''#QUIT'''<br><br />
This command can be used to terminate the active telnet connection from the server side (Flasher).<br />
The command provides an easy way to terminate the session from an automated script.<br />
It is not necessary to parse stdout and switch to local command mode to disconnect.<br />
Not implemented in the Flasher ATE or Flasher Hub.<br />
<br />
'''#VERBOSE <Level>'''<br><br />
This command can be used to change the verbosity level. <br><br />
* Verbosity level 0: Default. <br><br />
* Verbosity level 1: Provides some additional messages during the programming process.<br />
<br />
===== File I/O commands =====<br />
<br />
The ASCII interface of the Flasher also supports file I/O operations.<br />
<br />
The following file I/O commands are supported:<br><br />
<br />
'''#FCLOSE'''<br><br />
The <tt>#FCLOSE</tt> command closes the file on Flasher which was opened via <tt>#FOPEN</tt>.<br />
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><br />
<br />
A typical sequence when using the <tt>#FCLOSE</tt> command does look like as follows:<br><br />
<br />
<tt>#FCLOSE</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<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><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:No file opened</tt><br />
}}<br />
<br />
'''#FCRC'''<br><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>.<br />
The CRC will be also reported by J-Flash when downloading or saving files via J-Flash.<br><br />
<br />
A typical sequence when using the <tt>#FCRC</tt> command does look like as follows:<br><br />
<br />
<tt>#FCRC flasher.dat</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK:0x75BC855A</tt><br><br />
<br />
'''#FDELETE <Filename>'''<br><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><br />
<br />
A typical sequence when using the <tt>#FDELETE</tt> command does look like as follows:<br><br />
<br />
<tt>#FDELETE flasher.dat</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<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><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:Failed to delete file</tt><br />
}}<br />
<br />
'''#FFORMAT'''<br><br />
The <tt>#FFORMAT</tt> command is used to delete all files located in the public area of the Flasher's internal memory.<br />
<br />
{{Note|1=Please note that this command deletes all projects located in the public area. Deleted projects cannot be restored again.<br><br />
This command does not delete the Flasher firmware, neither does it delete files in the secure area.<br />
}}<br />
<br />
A typical sequence using the <tt>#FFORMAT</tt> command does look like as follows:<br><br />
<br />
<tt>#FFORMAT</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#DONE</tt><br><br />
<br />
'''#FOPEN <Filename>'''<br><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.<br />
If <tt><Filename></tt> can not be found on Flasher a new one will be created.<br><br />
<br />
A typical sequence using the <tt>#FOPEN</tt> command does look like as follows:<br><br />
<br />
<tt>#FOPEN flasher.dat</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<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><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:A file has already been opened</tt><br />
}}<br />
<br />
'''#FREAD <Offset>,<NumBytes>'''<br><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.<br />
<tt><NumBytes></tt> specifies the number of bytes which should be read.<br><br />
<br />
A typical sequence when using the <tt>#FREAD</tt> command does look like as follows:<br><br />
<br />
<tt>#FREAD 0,4</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK:04:466c6173</tt><br><br />
<br />
If the <tt>#FREAD</tt> command succeeds, Flasher will finally respond with a <tt>#OK:<NumBytes>:<nowiki><Data></nowiki></tt> reply message.<br />
For more information about the Flasher reply messages, please refer to [[#Replies from Flasher | Replies from Flasher]].<br><br />
<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><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:No file opened</tt>}}<br />
<br />
'''#FSIZE'''<br><br />
The <tt>#FSIZE</tt> command is used to get the size of the currently opened file on Flasher.<br><br />
<br />
A typical sequence when using the <tt>#FSIZE</tt> command does look like as follows:<br><br />
<br />
<tt>#FSIZE</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK:10 // file on flasher which is currently open, has a size of 16 bytes</tt><br><br />
<br />
If the <tt>#FSIZE</tt> command succeeds, Flasher will respond with a <tt>#OK:<Size></tt> reply message.<br />
For more information about the Flasher reply messages, please refer to [[#Replies from Flasher | Replies from Flasher]].<br><br />
<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><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:No file opened</tt>}}<br />
<br />
'''#FWRITE <Offset>,<NumBytes>:<nowiki><Data></nowiki>'''<br><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.<br />
<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.<br />
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><br />
<br />
<tt><Offset></tt> and <tt><NumBytes></tt> are expected in hexadecimal format.<br><br />
<br />
<tt>#FWRITE 0,200:<nowiki><Data></nowiki></tt><br><br />
<tt>#FWRITE 200,200:<nowiki><Data></nowiki></tt><br><br />
<br />
The data is expected in hexadecimal format (two hexadecimal characters per byte). The following example illustrates the use of <tt>#FWRITE</tt>:<br />
<br />
<tt>Data to be send: Hello !</tt><br><br />
<tt>ASCII values: 0x48, 0x65, 0x6C, 0x6C, 0x6F, 0x20, 0x21</tt><br><br />
<br />
<tt>#FWRITE 0,7:48656C6C6F2021</tt><br><br />
<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><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:No file opened</tt><br>}}<br />
<br />
'''#FLIST'''<br><br />
The <tt>#LIST</tt> command is used to list all files stored on the Flasher.<br><br />
<br />
A typical sequence using the <tt>#FLIST</tt> command does look like as follows:<br><br />
<br />
<tt>#FLIST</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>FLASHER.INI Size: 60</tt><br><br />
<tt>SERIAL.TXT Size: 3</tt><br><br />
<tt>FLASHER.LOG Size: 207</tt><br><br />
<tt>FOLDER (DIR)</tt><br><br />
<tt>FOLDER\\TEST1.CFG Size: 2048</tt><br><br />
<tt>FOLDER\\TEST1.DAT Size: 12288</tt><br><br />
<tt>#OK</tt><br><br />
<br />
'''#MKDIR <Dirname>'''<br><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><br />
<br />
A typical sequence using the <tt>#MKDIR</tt> command does look like as follows:<br><br />
<br />
<tt>#MKDIR folder</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<br />
{{Note|1=If the directory can not be created because of a bad <tt><Dirname></tt> argument, Flasher will respond with:<br><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:Failed to create directory</tt><br>}}<br />
<br />
===== Secure Area Commands =====<br />
<br />
'''#HASSECUREAREA'''<br><br />
The <tt>#HASSECUREAREA</tt> command checks if the Flasher is configured with a secure area.<br />
<br />
<tt>#RESULT:YES</tt> indicates the secure area is present, <tt>#RESULT:NO</tt> indicates no secure area is present.<br />
<br />
'''#SECUREAREA'''<br><br />
The <tt>#SECUREAREA <action></tt> command allows to create or remove the secure area on the Flasher.<br />
<br />
* the action <tt>CREATE</tt> creates the secure area.<br />
* the action <tt>REMOVE</tt> will remove the secure area.<br />
<br />
A typical sequence using the <tt>#SECUREAREA</tt> command does look like as follows:<br><br />
<br />
<tt>#SECUREAREA CREATE</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#DONE</tt><br><br />
<br />
{{Note|1=When creating or removing the <tt>secure area</tt>, all configuration and data files being stored on the Flasher, are lost.<br />
Please make sure that they are not needed anymore, before adding / removing the security area.}}<br />
<br />
<br />
<br />
===== Replies from Flasher =====<br />
<br />
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.<br />
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.<br />
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><br />
<br />
<tt>#OK (Total 13.993s, Erase 0.483s, Prog 9.183s, Verify 2.514s)</tt><br><br />
<br />
The following reply messages from Flasher are defined:<br><br />
<br />
'''#ACK'''<br><br />
Flasher replies with <tt>#ACK</tt> message on reception of any defined command before the command itself is executed.<br />
<br />
'''#NACK'''<br><br />
Flasher replies with <tt>#NACK</tt>, if an undefined command was received.<br />
<br />
'''#OK'''<br><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.<br />
<br />
'''#OK:<NumBytes>:<nowiki><Data></nowiki>'''<br><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.<br />
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).<br />
<br />
'''#OK:<Size>'''<br><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.<br />
<br />
'''#STATUS:'''<br><br />
The Flasher replies with its current state.<br><br />
<br />
The following status messages are currently defined:<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Message !! Description<br />
|-<br />
| <tt>#STATUS:READY</tt> || Flasher is ready to receive a new command.<br />
|-<br />
| <tt>#STATUS:CONNECTING</tt> || Flasher initializes connection to target CPU.<br />
|-<br />
| <tt>#STATUS:INITIALIZING</tt> || Flasher performs self check and internal init.<br />
|-<br />
| <tt>#STATUS:UNLOCKING</tt> || Unlocking flash sectors.<br />
|-<br />
| <tt>#STATUS:ERASING</tt> || Flasher is erasing the flash of the target device.<br />
|-<br />
| <tt>#STATUS:PROGRAMMING</tt> || Flasher is programming the flash of the target device.<br />
|-<br />
| <tt>#STATUS:VERIFYING</tt> || Flasher verifies the programmed flash contents.<br />
|-<br />
|}<br />
<br />
'''#ERRxxx'''<br><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><br />
<br />
Some error codes may be followed by colon and an additional error text.<br><br />
<br />
For example:<br><br />
<br />
<tt>#ERR007:CANCELED.</tt><br><br />
<br />
The error code numbers are described in the following table:<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Message !! Description<br />
|-<br />
| <tt>#ERR007</tt> || Flasher received <tt>#CANCEL</tt> command and has canceled the current operation.<br />
|-<br />
| <tt>#ERR008</tt> || Flasher is already busy with execution of previous command.<br />
|-<br />
| <tt>#ERR009</tt> || Failed to allocate memory.<br />
|-<br />
| <tt>#ERR010</tt> || Failed to open file.<br />
|-<br />
| <tt>#ERR011</tt> || Failed to read file.<br />
|-<br />
| <tt>#ERR012</tt> || Failed to write file.<br />
|-<br />
| <tt>#ERR013</tt> || Failed to delete file.<br />
|-<br />
| <tt>#ERR255</tt> || Undefined error occurred. This reply is followed by an error string.<br />
|-<br />
|}<br />
<br />
== Performance ==<br />
<br />
The following chapter lists programming performance of common flash devices andmicrocontrollers.<br />
<br />
=== Performance of MCUs with internal flash memory ===<br />
<br />
==== Flasher ARM ====<br />
<br />
The following table lists program and erase performance values of Flasher ARM for different controllers.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Microcontroller !! Size [kByte] !! Erase time [sec] !! Program time [sec] !! Verify time [sec] !! Total time [sec]<br />
|-<br />
| Analog Devices || 62 || 2.943 || 2.286 || 0.563 || 5.792<br />
|-<br />
| Atmel AT91SAM7S64 || 64 || --- || 3.488 || 0.438 || 3.926<br />
|-<br />
| Atmel AT91SAM7S256 || 256 || --- || 7.709 || 1.053 || 8.762<br />
|-<br />
| NXP LPC1768 || 512 || 3.740 || 8.559 || 5.092 || 17.391<br />
|-<br />
| NXP LPC2106 || 120 || 0.448 || 1.204 || 0.634 || 2.286<br />
|-<br />
| NXP LPC2129 || 248 || 0.449 || 2.916 || 1.347 || 4.712<br />
|-<br />
| NXP LPC2138 || 500 || 0.448 || 5.488 || 2.649 || 8.585<br />
|-<br />
| NXP LPC2148 || 500 || 0.448 || 5.632 || 2.721 || 8.801<br />
|-<br />
| NXP LPC2294 || 2048 || 0.808 || 15.976 || 9.669 || 26.453<br />
|-<br />
| NXP LPC2478 || 504 || 0.448 || 5.419 || 2.559 || 8.426<br />
|-<br />
| ST STM32F103ZE || 512 || 0.028 || 18.763 || 3.939 || 22.730<br />
|-<br />
| ST STR711 || 272 || 0.429 || 5.476 || 4.742 || 10.647<br />
|-<br />
| ST STR912 || 544 || 1.167 || 12.907 || 5.236 || 19.310<br />
|-<br />
| TI TMS470R1B1M || 1024 || 2.289 || 8.147 || 5.362 || 15.798<br />
|-<br />
|}<br />
<br />
==== Flasher PRO ====<br />
See Flasher ARM.<br />
<br />
==== Flasher Compact ====<br />
See Flasher ARM.<br />
<br />
==== Flasher RX ====<br />
<br />
The following table lists program and erase performance values of Flasher RX.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Microcontroller !! Size [kByte] !! Erase time [sec] !! Program time [sec] !! Verify time [sec] !! Total time [sec]<br />
|-<br />
| R5F56108 || 2.048 || 9.523 || 11.915 || 3.890 || 25.585<br />
|-<br />
|}<br />
<br />
==== Flasher PPC ====<br />
<br />
The following table lists program and erase performance values of Flasher PPC.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Microcontroller !! Size [kByte] !! Erase time [sec] !! Program time [sec] !! Verify time [sec] !! Total time [sec]<br />
|-<br />
| ST SPC560B50 || 576 || 4.747 || 4.159 || 1.929 || 10.917<br />
|-<br />
|}<br />
<br />
== Hardware ==<br />
<br />
This chapter gives an overview about Flasher specific hardware details,<br />
such as the pinouts and available adapters.<br />
<br />
=== Flasher ARM 20-pin JTAG/SWD Connector ===<br />
<br />
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.<br />
<br />
==== Pinout JTAG ====<br />
<br />
[[File:jtag_port_20pin.jpg]] <!-- LG xxxxxx image has been cropped to fit page --><br />
<br />
The following table lists the Flasher JTAG pinout.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! PIN !! SIGNAL !! TYPE !! Description<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 13 || TDO || Input || JTAG data output from target CPU. Typically connected to TDO of target CPU.<br />
|-<br />
| 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".<br />
|-<br />
| 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.<br />
|-<br />
| 19 || 5V-Target supply || Output || This pin can be used to supply power to the target board. Please note the specifications. [[#Target power supply]]<br />
|-<br />
|}<br />
<br />
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.<br />
<br />
==== Pinout SWD ====<br />
<br />
The 20-pin connector of Flasher is also compatible to ARM's Serial Wire Debug (SWD) interface.<br><br />
<br />
[[File:SWD_Port.jpg]] <!-- LG xxxxxx image has been cropped to fit page --><br />
<br />
The following table lists the J-Link / J-Trace SWD pinout.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! PIN !! SIGNAL !! TYPE !! Description<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 7 || SWDIO || I/O || Single bi-directional data pin.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 13 || SWO || Output || Serial Wire Output trace port. (Optional, not required for SWD communication.)<br />
|-<br />
| 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".<br />
|-<br />
| 17 || Not used || NC || This pin is not connected in J-Link.<br />
|-<br />
| 19 || 5V-Target supply || Output || This pin can be used to supply power to the target board. Please note the specifications. [[#Target power supply]]<br />
|-<br />
|}<br />
<br />
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.<br />
<br />
==== Target power supply ====<br />
<br />
Pin 19 of the connector can be used to supply power to the target hardware. Supply voltage is 5V, max. current is 400mA.<br />
The output current is monitored and protected against overload and short-circuit.<br><br />
<br />
Power can be controlled via the J-Link commander. The following commands are available to control power:<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Command !! Explanation<br />
|-<br />
| <tt>power on</tt> || Switch target power on<br />
|-<br />
| <tt>power off</tt> || Switch target power off<br />
|-<br />
| <tt>power on perm</tt> || Set target power supply default to "on"<br />
|-<br />
| <tt>power off perm</tt> || Set target power supply default to "off"<br />
|-<br />
|}<br />
<br />
=== Flasher RX 14-pin connector ===<br />
<br />
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.<br />
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.<br />
<br />
[[File:jtag_port_14pin.wmf]]<br />
<br />
The following table lists the Flasher RX 14-pin JTAG pinout.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Pin !! Signal !! Type !! Description<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 5 || TDO || Input || JTAG data output from target CPU. Typically connected to TDO on target CPU.<br />
|-<br />
| 6 || --- || NC || This pin is not connected to Flasher RX.<br />
|-<br />
| 7 || --- || NC || This pin is not connected to Flasher RX.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 10 || --- || NC || This pin is not connected to Flasher RX.<br />
|-<br />
| 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.<br />
|-<br />
| 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".<br />
|-<br />
|}<br />
<br />
* All pins marked NC are not connected to Flasher RX. Any signal can be applied here; Flasher RX will simply ignore such a signal.<br />
* Pins 2, 12, 14 are GND pins connected to GND in Flasher RX. They should also be connected to GND in the target system.<br />
<br />
==== Target power supply ====<br />
<br />
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.<br />
Power can be controlled via the J-Link commander. The following commands are available to control power:<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Command !! Explanation<br />
|-<br />
| <tt>power on</tt> || Switch target power on<br />
|-<br />
| <tt>power off</tt> || Switch target power off<br />
|-<br />
| <tt>power on perm</tt> || Set target power supply default to "on"<br />
|-<br />
| <tt>power off perm</tt> || Set target power supply default to "off"<br />
|-<br />
|}<br />
<br />
=== Flasher PPC 14-pin connector ===<br />
<br />
Flasher PPC itself has a 20-pin JTAG connector mounted but comes with a 14-pin adapter for PowerPC devices.<br><br />
<br />
[[File:JTAG_PPC_14pin_adapter.wmf]]<br />
<br />
The following table lists the Flasher PPC 14-pin JTAG pinout.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Pin !! Signal !! Type !! Description<br />
|-<br />
| 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.<br />
|-<br />
| 3 || TDO || Input || JTAG data output from target CPU. Typically connected to TDO on target CPU.<br />
|-<br />
| 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.<br />
|-<br />
| 7 || --- || NC || This pin is not connected to Flasher PPC.<br />
|-<br />
| 8 || --- || NC || This pin is not connected to Flasher PPC.<br />
|-<br />
| 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".<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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).<br />
|-<br />
|}<br />
<br />
* All pins marked NC are not connected to Flasher PPC. Any signal can be applied here; Flasher PPC will simply ignore such a signal.<br />
* 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.<br />
<br />
=== Target board design ===<br />
<br />
We strongly advise following the recommendations given by the chip manufacturer. These recommendations are normally in line with the recommendations.<br />
Please refer to the the appropriate tables depending on the core:<br><br />
<br />
* [[#Pinout JTAG | Pinout JTAG]]<br />
* [[#Pinout SWD | Pinout SWD]]<br />
* [[#Flasher RX 14-pin connector | Flasher RX 14-pin connector]]<br />
* [[#Flasher PPC 14-pin connector | Flasher PPC 14-pin connector]]<br />
<br />
In case of doubt you should follow the recommendations given by the semiconductor manufacturer.<br />
<br />
==== Pull-up/pull-down resistors ====<br />
<br />
Unless otherwise specified by developer's manual, pull-ups/pull-downs are recommended to be between 2.2 kOhms and 47 kOhms.<br />
<br />
==== RESET, nTRST ====<br />
<br />
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><br />
<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.<br />
(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.<br />
<br />
=== Adapters ===<br />
<br />
==== JTAG Isolator ====<br />
<br />
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.<br />
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><br />
<br />
[[File:JTAG_Isolator_Port.wmf]]<br />
<br />
===== Pinout =====<br />
<br />
The following table shows the target-side pinout of the J-Link JTAG Isolator.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Pin !! Signal !! Type !! Description<br />
|-<br />
| 1 || VCC || Output || The target side of the isolator draws power over this pin.<br />
|-<br />
| 2 || VCC || Output || The target side of the isolator draws power over this pin.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 13 || TDO || Input || JTAG data output from target CPU. Typically connected to TDO of target CPU.<br />
|-<br />
| 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".<br />
|-<br />
| 17 || N/C || N/C || This pin is not connected on the target side of the isolator.<br />
|-<br />
| 19 || N/C || N/C || This pin is not connected on the target side of the isolator.<br />
|-<br />
|}<br />
<br />
Pins 4, 6, 8, 10, 12, 14, 16, 18, 20 are connected to GND.<br />
<br />
===== Safety =====<br />
This isolator provides '''basic isolation''' only. '''Do not use with hazardous voltages without further protection measures to avoid risk of electrical shock and fire.'''<br />
<br />
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.<br />
<br />
==== J-Link Needle Adapter ====<br />
<br />
To connect to the J-Link OB via programming interface the ''J-Link Needle Adapter'' is recommended.<br><br />
<br />
[[File:J-Link_Needle_Adapter_500x.jpg]]<br />
<br />
Why to choose the J-Link Needle Adapter:<br><br />
<ol><br />
<li>No additional connector required on your PCB</li><br />
<li>Very small footprint</li><br />
<li>High reliability spring pins for secure connections</li><br />
<li>Designed with 3 locating pins, so the adapter can not be connected the wrong way</li><br />
<li>No external power supply required! The J-Link Needle Adapter comes with the option to power the target hardware via J-Link.</li><br />
</ol><br />
These features make the J-Link Needle Adapter the perfect solution for production purposes.<br><br />
<br />
The pinout of the J-Link Needle Adapter is based on the pinout of the needle adapter by Tag-Connect.<br />
Please note, that both pinouts are not identical since the J-Link Needle Adapter comes with a 5V-supply pin.<br><br />
<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><br />
<br />
Moreover, the two "legs" on each side of the connector guarantee a stable and secure contact between pins and the PCB.<br><br />
<br />
[[File:J-Link_Needle_Adapter_Connector_pins_360x.jpg]]<br />
[[File:J-Link_Needle_Adapter_Pinout.jpg]]<br />
<br />
The J-Link Needle Adapter can be connected to J-Link via the ''20-pin 0.1'' JTAG to a 10-pin needle connector''.<br />
<br />
=== Target interface pin states in idle ===<br />
After completing a target operation (e.g. production programming via #AUTO), Flasher tri-states all target interface pins with the following exceptions:<br />
* [[#Flasher ARM 20-pin JTAG/SWD Connector|Reset pin (Pin 15)]] By default, the reset pin remains unchanged. If the "Start application" option is enabled, the reset pin is set to high output.<br />
* [[#Flasher ARM 20-pin JTAG/SWD Connector|5V-Supply (Pin 19)]] The state of this pin in idle depends on the configuration of the [[#Target power supply | Target power supply]].<br />
<br />
{{Note|1=Due to limitations of the Flasher hardware, the interface pins cannot be put into an high-impedance state (tri-state). Instead, the pins are configured as input. This allows the target to drive the pin state with minimal interference from the Flasher. It is still possible for minimal electrical currents to flow between Flasher and the target. <br>In case a complete electrical disconnection between Flasher and target is required, we recommend to make use of the [https://www.segger.com/products/production/flasher/accessories/adapters/relay-adapter/ SEGGER Relay Adapter].}}<br />
<br />
=== How to determine the hardware version ===<br />
<br />
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.<br />
Flasher has the hardware version printed on the back label.<br><br />
<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).<br />
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><br />
<br />
[[File:FlasherARM_version.gif]]<br />
<br />
== Support and FAQs ==<br />
<br />
This chapter contains troubleshooting tips together with solutions for common problems which might occur when using Flasher.<br />
There are several steps you can take before contacting support.<br />
Performing these steps can solve many problems and often eliminates the need for assistance.<br />
This chapter also contains a collection of frequently asked questions (FAQs) with answers.<br />
<br />
=== Contacting support ===<br />
<br />
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.<br />
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><br />
<br />
If you need to contact support, send the following information to<br><br />
''support@segger.com''<br><br />
<br />
* A detailed description of the problem<br />
* Flasher serial number<br />
* Information about your target hardware (processor, board, etc.).<br />
* <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]].<br />
<br />
Flasher is sold directly by SEGGER.<br />
<br />
=== Frequently Asked Questions ===<br />
<br />
'''Maximum JTAG speed'''<br />
{|<br />
|-<br />
| '''Q:''' || What is the maximum JTAG speed supported by Flasher?<br />
|-<br />
| '''A:''' || Flasher's maximum supported JTAG speed is 12MHz.<br />
|}<br />
<br />
'''Maximum download speed'''<br />
{|<br />
|-<br />
| '''Q:''' || What is the maximum download speed?<br><br />
|-<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.<br />
|}<br />
== Background information ==<br />
<br />
This chapter provides background information about flash programming in general. It<br />
also provides information about how to replace the firmware of Flasher manually.<br />
<br />
=== Flash programming ===<br />
<br />
Flasher comes with a DLL, which allows - amongst other functionalities - reading and writing RAM, CPU registers, starting and stopping the CPU, and setting breakpoints.<br />
<br />
==== How does flash programming via Flasher work? ====<br />
<br />
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.<br />
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.<br />
Different flash chips have different programming algorithms;the programming algorithm also depends on other things,<br />
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).<br />
The RAM code requires data to be programmed into the flash memory. The data is supplied by downloading it to RAM.<br />
<br />
==== Data download to RAM ====<br />
<br />
The data (or part of it) is downloaded to another part of the RAM of the target system.<br />
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.<br />
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.<br />
This process may have to be repeated until the entire data is programmed into the flash.<br />
<br />
==== Available options for flash programming ====<br />
<br />
In general, there are two possibilities in order to use Flasher for flash programming:<br><br />
<br />
* Using Flasher stand-alone to program the target flash memory (stand-alone mode)<br />
* Using Flasher in combination with J-Flash to program the target flash memory (Flasher in "PC-based mode")<br />
<br />
===== Using Flasher in stand-alone mode =====<br />
<br />
In order to use the Flasher in stand-alone mode, it has to be configured first.<br />
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]].<br />
<br />
===== J-Flash - Complete flash programming solution =====<br />
<br />
J-Flash is a stand-alone Windows application, which can read / write data files and program the flash in almost any ARM system.<br />
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''.<br />
<br />
==== How does the universal flash programming work? ====<br />
<br />
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><br />
<br />
Universal flash programming is available only for stand-alone mode.<br />
== Glossary ==<br />
<br />
This chapter describes important terms used throughout this manual.<br />
<br />
'''Big-endian'''<br><br />
Memory organization where the least significant byte of a word is at a higher address than the most significant byte. See Little-endian.<br />
<br />
'''Cache cleaning'''<br><br />
The process of writing dirty data in a cache to main memory.<br />
<br />
'''Coprocessor'''<br><br />
An additional processor that is used for certain operations, for example, for floating-point math calculations, signal processing, or memory management.<br />
<br />
'''Dirty data'''<br><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.<br />
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.<br />
<br />
'''Halfword'''<br><br />
A 16-bit unit of information.<br />
<br />
'''Host'''<br><br />
A computer which provides data and other services to another computer. Especially, a computer providing debugging services to a target being debugged.<br />
<br />
'''ICache'''<br><br />
Instruction cache.<br />
<br />
'''ID'''<br><br />
Identifier.<br />
<br />
'''IEEE 1149.1'''<br><br />
The IEEE Standard which defines TAP. Commonly (but incorrectly) referred to as JTAG.<br />
<br />
'''Image'''<br><br />
An executable file that has been loaded onto a processor for execution.<br />
<br />
'''Instruction Register'''<br><br />
When referring to a TAP controller, a register that controls the operation of the TAP.<br />
<br />
'''IR'''<br><br />
See Instruction Register.<br />
<br />
'''Joint Test Action Group (JTAG)'''<br><br />
The name of the standards group which created the IEEE 1149.1 specification.<br />
<br />
'''Little-endian'''<br><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.<br />
<br />
'''Memory coherency'''<br><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.<br />
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.<br />
<br />
'''Memory management unit (MMU)'''<br><br />
Hardware that controls caches and access permissions to blocks of memory, and translates virtual to physical addresses.<br />
<br />
'''Memory Protection Unit (MPU)'''<br><br />
Hardware that controls access permissions to blocks of memory. Unlike an MMU, a MPU does not translate virtual addresses to physical addresses.<br />
<br />
'''RESET'''<br><br />
Abbreviation of System Reset. The electronic signal which causes the target system other than the TAP controller to be reset.<br />
This signal is also known as "nSRST" "nSYSRST", "nRST", or "nRESET" in some other manuals. See also nTRST.<br />
<br />
'''nTRST'''<br><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.<br />
<br />
'''Open collector'''<br><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.<br />
<br />
'''Processor Core'''<br><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.<br />
It excludes optional coprocessors, caches, and the memory management unit.<br />
<br />
'''Remapping'''<br><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.<br />
<br />
'''RTOS'''<br><br />
Real Time Operating System.<br />
<br />
'''TAP Controller'''<br><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.<br />
<br />
'''Target'''<br><br />
The actual processor (real silicon or simulated) on which the application program is running.<br />
<br />
'''TCK'''<br><br />
The electronic clock signal which times data on the TAP data lines TMS, TDI, and TDO.<br />
<br />
'''TDI'''<br><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.<br />
<br />
'''TDO'''<br><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.<br />
<br />
'''Test Access Port (TAP)'''<br><br />
The port used to access a device's TAP Controller. Comprises TCK, TMS, TDI, TDO, and nTRST (optional).<br />
<br />
'''Transistor-transistor logic (TTL)'''<br><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.<br />
<br />
'''Word'''<br><br />
A 32-bit unit of information. Contents are taken as being an unsigned integer unless otherwise stated.<br />
== Literature and references ==<br />
This chapter lists documents, which we think may be useful to gain a deeper understanding of technical details.</div>JanBhttps://wiki.segger.com/index.php?title=UM08022_Flasher&diff=17593UM08022 Flasher2024-02-01T15:31:40Z<p>JanB: /* Target interface pin states in idle */</p>
<hr />
<div><!---<br />
General TBD:<br />
- LG: Right now - EVERYTHING<br />
===========================================<br />
--------------------[more specific, but on multiple locations]<br />
- check if all emphasis (bold, tt, blue, etc ) have made it into the new version<br />
- Add Information -> Additional information<br />
- use of the term free-of-charge utility/tool etc<br />
- check compliant to DocStandards_Rules.txt<br />
- Remove everything regarding to Kickstarter versions? eventually create a chapter Legacy -> Kickstarter version were available for hw version 5-x (200x-200x)...[..]<br />
- 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.<br />
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.<br />
- if week keep the IDE specific stuff in the manual, add Ozone, ES and J-Link Commander were no mentioned.<br />
- IDE specifics move into wiki confirmed by Alex<br />
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)<br />
- check all sections regarding licensing<br />
- Check compliance of J-Link emDocs with typographic conventions described in AboutThisDocument.emDoc. What should be altered? e.g. references<br />
- use uref at all (not blue)?<br />
- search and decide where to use \ref (ref with page number)<br />
- why is \ref (no single "option" \uref is more basic as \ref.....)<br />
- in text, use either \ref or \iref instead of \uref<br />
- in old manual, \H3 started on a new page (not per default, but set manually for api tables etc...)<br />
- move used old images and source files (visio etc) via svn (currently copied)<br />
--------------------[grammar / vocabulary discussion]<br />
- Product names<br />
-- Use of SEGGEPROBE in this document?<br />
- use license over licence<br />
- commandline or command-line?<br />
- toolchain or tool chain?<br />
- crossreference/cross-reference/cross reference?<br />
- overcurrent?<br />
- double words?<br />
- frontend?<br />
- Unit: Kbytes, KBytes, V, mV.... 9V or 9 V? Create rule in Vocabulary<br />
- baudrate or baud rate?<br />
- stackpointer or stack pointer<br />
- check where we should replace abbreviations with the long form (e.h. "milliseconds" instead of "ms")<br />
- config or configuration<br />
- filepointer or file pointer?<br />
--------------------[J-Link dep. specific]<br />
- J-Link command strings or J-Link Command strings or J-Link Command Strings<br />
- J-Link settings file or...<br />
- J-Link control panel or ......<br />
- J-Link script files or...<br />
---><br />
Flasher is a programming tool for microcontrollers with on-chip or external flash memory.<br />
Flasher is designed for programming flash targets with the J-Flash software or stand-alone.<br />
In addition to that Flasher can also be used as a regular J-Link. For more information about J-Link in general,<br />
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].<br />
<br />
<div class="toclimit-2"><br />
__TOC__<br />
</div><br />
<br />
== Flasher Software and Documentation Pack ==<br />
The Flasher Software and Documentation Pack, available for download on the [https://www.segger.com/downloads/flasher#FlasherSoftwareAndDocumentationPack SEGGER homepage], includes applications to be used with Flasher and in some cases with J-Link and J-Trace.<br><br />
It also comes with USB-drivers for J-Link, J-Trace and Flasher.<br />
<br />
=== Software overview ===<br />
{| class="wikitable"<br />
|-<br />
! Software !! Description<br />
|-<br />
| [[J-Link Configurator|Flasher Configurator]] || GUI-based configuration tool for Flasher. Allows configuration of USB identification as well as TCP/IP identification of Flashers.<br />
|-<br />
| [[FlasherControl|Flasher Control]] || Command-line tool to connect to the Flasher's command-line interface via USB.<br />
|-<br />
| [[J-Flash]] || Flash programming application.<br />
|-<br />
| [[J-Flash SPI]] || (Q)SPI flash programming application.<br />
|-<br />
| [[J-Link Commander]] || Command-line tool with basic functionality for target analysis.<br />
|-<br />
| [[J-Link Registration]] || SEGGER J-Link Registration utility to register your SEGGER product such as a J-Link, J-Trace or Flasher.<br />
|-<br />
| [[JTAGLoad]] || Command line tool that opens an svf file and sends the data in it via J-Link / J-Trace or Flasher to the target.<br />
|-<br />
| [https://www.segger.com/downloads/flasher/UM08037.pdf U-Flash] || Tool for creating standalone Flasher projects.<br />
|}<br />
<br />
== Flasher overview ==<br />
Flasher connects to a PC using the USB/Ethernet/RS232 interface (what host interfaces are available depends on the Flasher model),<br />
running Windows, Linux & MacOS. In stand-alone mode,<br />
Flasher can be driven by the start/stop button, or via the RS232 interface (handshake control or ASCII interface).<br />
Flasher always has a 20-pin connector, which target interfaces are supported depends on the Flasher model:<br />
* Flasher ARM: JTAG and SWD are supported.<br />
* Flasher RX: JTAG is supported. Flasher comes with additional 14-pin RX adapter<br />
* Flasher PPC: JTAG is supported. Flasher comes with additional 14-pin PPC adapter.<br />
* Flasher PRO: JTAG and SWD are supported.<br />
* Flasher Compact: JTAG and SWD are supported.<br />
<br />
=== Features of Flasher ARM/PPC/RX/PRO ===<br />
* Three boot modes: PC-based mode, stand-alone mode, file access mode<br />
* Stand-alone JTAG/SWD programmer (Once set up, Flasher can be controlled without the use of PC program)<br />
* No power supply required, powered through USB<br />
* Supports internal and external flash devices<br />
* 128 MB memory for storage of target program<br />
* Can be used as J-Link (emulator) with a download speed of up to 720 Kbytes/second<br />
* Data files can updated via USB/Ethernet (using the J-Flash software), via FTP, via RS232 or via the file access mode of Flasher<br />
<br />
{| class="seggertable"<br />
|-<br />
! Flasher model !! Supported cores !! Supported target interfaces !! Flash programming speed (depending on target hardware)<br />
|-<br />
| Flasher ARM || ARM7/ARM9/Cortex-M || JTAG, SWD || between 170 and 300 Kbytes/second<br />
|-<br />
| Flasher RX || Renesas RX610, RX621, RX62N, RX62T || JTAG || between 30-300 Kbytes/second<br />
|-<br />
| Flasher PPC || Power PC e200z0 || JTAG || up to 138 Kbytes/second<br />
|-<br />
| Flasher PRO || ARM7/ARM9/Cortex-M Renesas RX610, RX621, RX62N, RX62T Power PC e200z0 || JTAG, SWD || between 30-300 Kbytes/ second<br />
|-<br />
|}<br />
<br />
==== Features of Flasher Compact ====<br />
<br />
* Three boot modes: PC-based mode, stand-alone mode, file access mode<br />
* Stand-alone JTAG/SWD programmer (Once set up, Flasher can be controlled without the use of PC program)<br />
* No power supply required, powered through USB<br />
* Supports internal and external flash devices<br />
* 128 MB memory for storage of target program<br />
* Can be used as J-Link (emulator) with a download speed of up to 720 Kbytes/second<br />
* Data files can updated via USB/Ethernet (using the J-Flash software) or via the file access mode of Flasher<br />
<br />
{| class="seggertable"<br />
|-<br />
! Flasher model !! Supported cores !! Supported target interfaces !! Flash programming speed (depending on target hardware)<br />
|-<br />
| Flasher ARM || ARM7/ARM9/Cortex-M || JTAG, SWD || between 170 and 300 Kbytes/second<br />
|-<br />
| Flasher RX || Renesas RX610, RX621, RX62N, RX62T || JTAG || between 30-300 Kbytes/second<br />
|-<br />
| Flasher PPC || Power PC e200z0 || JTAG || up to 138 Kbytes/second<br />
|-<br />
| Flasher Compact || ARM7/ARM9/Cortex-M Renesas RX610, RX621, RX62N, RX62T Power PC e200z0 || JTAG, SWD || between 30-300 Kbytes/ second<br />
|-<br />
|}<br />
<br />
==== Features of Flasher Portable/Flasher Portable PLUS ====<br />
<br />
* Stand-alone in-circuit-programmer (Once set up, Flasher can be controlled without the use of a PC program)<br />
* Powered by an internal rechargeable battery (standard batteries for Flasher Portable), no Laptop or external power supply required.<br />
* Multiple firmware images can be stored on Flasher<br />
* 128 MB memory for storage of target program<br />
* Flasher Portable PLUS supports a simple selection of up to 99 firmware images via buttons (since V7.90)<br />
* Supported CPUs: ARM Cortex, Legacy ARM7/9, Renesas RX, Freescale PowerPC<br />
* Supports internal and external flash<br />
* Free software updates<ref name="legitimateOwned" />, 1 year of support<br />
* Data files can be updated via the file access mode functionality or via J-Flash<br />
* Programming speed between 30-300 Kbytes/second (actual speed depends on target hardware)<br />
{{Note|1=Ethernet and RS232 as host interface are not available for Flasher Portable}}<br />
<references><br />
<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.<br />
As a legitimate owner of a SEGGER Flasher, you can always download the latest software free of charge.<br />
Though not planned and not likely, we reserve the right to change this policy.<br />
Note that older models may not be supported by newer versions of the software.<br />
Typically, we support older models with new software at least 3 years after end of life.<br />
</ref><br />
</references><br />
<br />
{| class="seggertable"<br />
|-<br />
! Supported cores !! Supported target interfaces !! Flash programming speed (depending on target hardware)<br />
|-<br />
| ARM7/ARM9/Cortex-M || JTAG, SWD || between 30-300 Kbytes/second<br />
|-<br />
| Renesas RX610, RX621, RX62N, RX62T || JTAG || between 170 and 300 Kbytes/second<br />
|-<br />
| Power PC e200z0 || JTAG || up to 138 Kbytes/second<br />
|-<br />
|}<br />
<br />
==== Working environment ====<br />
<br />
'''General'''<br><br />
The Flasher can operate from a PC with an appropriate software like J-Flash or in stand-alone mode.<br />
<br />
'''Host System'''<br><br />
IBM PC/AT or compatible CPU: 486 (or better) with at least 128MB of RAM,<br />
running Windows, Linux & MacOS. It needs to have a USB, Ethernet or RS232 interface available for communication with Flasher.<br />
<br />
'''Power supply'''<br><br />
Flasher Portable: 3x standard AAA batteries or 5V DC, min. 100 mA via USB connector.<br />
<br />
Flasher Portable PLUS: internal rechargeable 680mAh Li-Ion battery, min. 100 mA via USB connector.<br />
<br />
Other Flashers: 5V DC, min. 100 mA via USB connector.<br />
<br />
'''Installing Flasher PC-software'''<br><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><br />
More information about the package you can find in the similar [[J-Link Software and Documentation Pack]].<br><br />
The package includes U-Flash and J-Flash, the main tools for flashing targets:<br />
* J-Flash : J-Flash User Guide ([https://wiki.segger.com/UM08003_JFlash UM08003_JFlash.pdf]).<br />
* U-Flash : U-Flash User Guide ([https://www.segger.com/downloads/flasher/UM08037.pdf UM08037_UniversalFlashLoader.pdf]).<br />
<br />
=== Specifications ===<br />
<br />
<br />
==== Specifications for Flasher ARM ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Windows, Linux & MacOS<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C<br />
|-<br />
| Storage Temperature || -20 °C ... +60 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
!colspan="100%"| Mechanical<br />
|-<br />
| Size (without cables) || 121mm x 66mm x 30mm<br />
|-<br />
| Weight (without cables) || 119g<br />
|-<br />
!colspan="100%"| Available interfaces<br />
|-<br />
| USB Host interface || USB 2.0, full speed<br />
|-<br />
| Ethernet Host interface || 10/100 MBit<br />
|-<br />
| RS232 Host interface || RS232 9-pin<br />
|-<br />
| Target interface || JTAG 20-pin (14-pin adapter available)<br />
|-<br />
!colspan="100%"| JTAG Interface, Electrical<br />
|-<br />
| Power Supply || USB powered, 100mA for Flasher ARM. 500 mA if target is powered by Flasher ARM<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| Target supply voltage || Supply voltage is 5V, max.<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6 <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Max. JTAG speed || up to 12MHz<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
===== Flasher ARM download speed =====<br />
<br />
The following table lists the Flasher ARM performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! ARM7 memory download<br />
|-<br />
| Flasher ARM || 720 Kbytes/s (12MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
<br />
==== Specifications for Flasher RX ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Windows, Linux & MacOS<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C<br />
|-<br />
| Storage Temperature || -20 °C ... +60 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
!colspan="100%"| Mechanical<br />
|-<br />
| Size (without cables) || 121mm x 66mm x 30mm<br />
|-<br />
| Weight (without cables) || 119g<br />
|-<br />
!colspan="100%"| Available interfaces<br />
|-<br />
| USB Host interface || USB 2.0, full speed<br />
|-<br />
| Ethernet Host interface || 10/100 MBit<br />
|-<br />
| RS232 Host interface || RS232 9-pin<br />
|-<br />
| Target interface || JTAG 20-pin (shipped with 14-pin adapter for Renesas RX)<br />
|-<br />
!colspan="100%"| JTAG Interface, Electrical<br />
|-<br />
| Power Supply || USB powered, 100mA for Flasher RX. 500 mA if target is powered by Flasher RX<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| 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)<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6 <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Max. JTAG speed || up to 12MHz<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
===== Flasher RX download speed =====<br />
<br />
The following table lists the Flasher RX performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! Flasher RX600 series memory download<br />
|-<br />
| Flasher RX || 720 Kbytes/s (12MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
<br />
==== Specifications for Flasher PPC ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Windows, Linux & MacOS<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C<br />
|-<br />
| Storage Temperature || -20 °C ... +60 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
!colspan="100%"| Mechanical<br />
|-<br />
| Size (without cables) || 121mm x 66mm x 30mm<br />
|-<br />
| Weight (without cables) || 119g<br />
|-<br />
!colspan="100%"| Available interfaces<br />
|-<br />
| USB Host interface || USB 2.0, full speed<br />
|-<br />
| Ethernet Host interface || 10/100 MBit<br />
|-<br />
| RS232 Host interface || RS232 9-pin<br />
|-<br />
| Target interface || JTAG 20-pin (shipped with 14-pin adapter for Renesas PPC)<br />
|-<br />
!colspan="100%"| JTAG Interface, Electrical<br />
|-<br />
| Power Supply || USB powered, 100mA for Flasher PPC. 500 mA if target is powered by Flasher PPC<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| Target supply voltage || Supply voltage is 5V, max.<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6 <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Max. JTAG speed || up to 12MHz<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
===== Flasher RX download speed =====<br />
<br />
The following table lists the Flasher PPC performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! Memory download<br />
|-<br />
| Flasher PPC || 530 Kbytes/s (8 MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
<br />
==== Specifications for Flasher PRO ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Windows, Linux & MacOS<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C<br />
|-<br />
| Storage Temperature || -20 °C ... +60 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
!colspan="100%"| Mechanical<br />
|-<br />
| Size (without cables) || 121mm x 66mm x 30mm<br />
|-<br />
| Weight (without cables) || 119g<br />
|-<br />
!colspan="100%"| Available interfaces<br />
|-<br />
| USB Host interface || USB 2.0, full speed<br />
|-<br />
| Ethernet Host interface || 10/100 MBit<br />
|-<br />
| RS232 Host interface || RS232 9-pin<br />
|-<br />
| Target interface || JTAG 20-pin (14-pin adapter available)<br />
|-<br />
!colspan="100%"| JTAG Interface, Electrical<br />
|-<br />
| Power Supply || USB powered, 100mA for Flasher PRO. 500 mA if target is powered by Flasher PRO<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| Target supply voltage || Supply voltage is 5V, max.<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6 <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Max. JTAG speed || up to 12MHz<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
<br />
===== Supported CPU cores =====<br />
<br />
The Flasher PRO supports the following CPU cores:<br />
<br />
'''ARM Cortex'''<br><br />
* Cortex-A5<br />
* Cortex-A8<br />
* Cortex-A9<br />
* Cortex-R4<br />
* Cortex-R5<br />
* Cortex-M0<br />
* Cortex-M0+<br />
* Cortex-M1<br />
* Cortex-M3<br />
* Cortex-M4<br />
<br />
'''ARM (legacy cores)'''<br><br />
* ARM720T<br />
* ARM7TDMI<br />
* ARM7TDMI-S<br />
* ARM920T<br />
* ARM922T<br />
* ARM926EJ-S<br />
* ARM946E-S<br />
* ARM966E-S<br />
* ARM1136JF-S<br />
* ARM1136J-S<br />
* ARM1156T2-S<br />
* ARM1156T2F-S<br />
* ARM1176JZ-S<br />
* ARM1176JZF<br />
* ARM1176JZF-S<br />
<br />
'''Renesas RX'''<br><br />
* RX111<br />
* RX210<br />
* RX220<br />
* RX21A<br />
* RX610<br />
* RX621<br />
* RX62G<br />
* RX62N<br />
* RX62T<br />
* RX630<br />
* RX631<br />
* RX63N<br />
* RX63T<br />
<br />
'''Freescale Power PC'''<br><br />
* e200z0<br />
<br />
===== Supported Target interfaces =====<br />
<br />
The Flasher PRO supports the following target interfaces:<br />
<br />
* JTAG<br />
* SWD<br />
* FINE<br />
* SPD<br />
<br />
===== Flasher PRO download speed =====<br />
<br />
The following table lists the Flasher PRO performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! ARM7 memory download<br />
|-<br />
| Flasher PRO || 720 Kbytes/s (12MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
<br />
==== Specifications for Flasher Compact ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Microsoft Windows (x86/x64)<br>Linux (x86/x64/Arm)<br>macOS (x86/Apple M1)<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C<br />
|-<br />
| Storage Temperature || -20 °C ... +65 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
| Size (without cables) || 70mm x 45mm x 18mm<br />
|-<br />
| Weight (without cables) || 40g<br />
|-<br />
| USB Host interface || USB 2.0 (Hi-Speed); Micro USB<br />
|-<br />
| Target interface || JTAG 20-pin (14-pin adapter available)<br />
|-<br />
| Power Supply || USB powered, 130mA (idle)<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| Target supply voltage || Supply voltage is 5V, max.<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
| Supported target interfaces || SPI, QSPI, 8051 C2, cJTAG, FINE, ICSP, IIC, ISP, JTAG, PDI, SPD, SWD, SWIM, UART, UPDI<br />
|-<br />
| Serial transfer rate between Flasher Compact and target || Up to 50 MHz (Depending on target interface)<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6 <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
===== Supported CPU cores =====<br />
<br />
The Flasher Compact supports the following CPU cores:<br />
'''ARM Cortex'''<br><br />
* Cortex-A5<br />
* Cortex-A8<br />
* Cortex-A9<br />
* Cortex-R4<br />
* Cortex-R5<br />
* Cortex-M0<br />
* Cortex-M0+<br />
* Cortex-M1<br />
* Cortex-M3<br />
* Cortex-M4<br />
<br />
'''ARM (legacy cores)'''<br><br />
* ARM720T<br />
* ARM7TDMI<br />
* ARM7TDMI-S<br />
* ARM920T<br />
* ARM922T<br />
* ARM926EJ-S<br />
* ARM946E-S<br />
* ARM966E-S<br />
* ARM1136JF-S<br />
* ARM1136J-S<br />
* ARM1156T2-S<br />
* ARM1156T2F-S<br />
* ARM1176JZ-S<br />
* ARM1176JZF<br />
* ARM1176JZF-S<br />
<br />
'''Renesas RX'''<br><br />
* RX111<br />
* RX210<br />
* RX220<br />
* RX21A<br />
* RX610<br />
* RX621<br />
* RX62G<br />
* RX62N<br />
* RX62T<br />
* RX630<br />
* RX631<br />
* RX63N<br />
* RX63T<br />
<br />
'''Freescale Power PC'''<br><br />
* e200z0<br />
<br />
===== Flasher Compact download speed =====<br />
<br />
The following table lists the Flasher Compact performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! ARM7 memory download<br />
|-<br />
| Flasher Compact || 720 Kbytes/s (12MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
<br />
==== Specifications for Flasher Portable PLUS ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Windows, Linux & MacOS<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C (normal operation)<br>+5 °C ... +45 °C (battery charging)<br />
|-<br />
| Storage Temperature || -20 °C ... +45 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
| 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)<br />
|-<br />
| Charging via USB || 70 minutes (at 1A charging current)<br />
|-<br />
!colspan="100%"| Mechanical<br />
|-<br />
| Size (without cables) || 126mm x 70mm x 28mm<br />
|-<br />
| Weight (without cables) || 140g<br />
|-<br />
!colspan="100%"| Available interfaces<br />
|-<br />
| USB Host interface || USB 2.0<br />
|-<br />
| Target interface || Standard 20-pin 0.1" connector (Adapters available).<br />
|-<br />
!colspan="100%"| Target Interface, Electrical<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| Target supply voltage || Supply voltage is 4.5V, max. (depends on the current battery voltage).<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6 <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Max. JTAG speed || up to 12MHz<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
===== Supported CPU cores =====<br />
<br />
The Flasher Portable PLUS supports the following CPU cores:<br />
<br />
'''ARM Cortex'''<br><br />
* Cortex-A5<br />
* Cortex-A8<br />
* Cortex-A9<br />
* Cortex-R4<br />
* Cortex-R5<br />
* Cortex-M0<br />
* Cortex-M0+<br />
* Cortex-M1<br />
* Cortex-M3<br />
* Cortex-M4<br />
<br />
'''ARM (legacy cores)'''<br><br />
* ARM720T<br />
* ARM7TDMI<br />
* ARM7TDMI-S<br />
* ARM920T<br />
* ARM922T<br />
* ARM926EJ-S<br />
* ARM946E-S<br />
* ARM966E-S<br />
* ARM1136JF-S<br />
* ARM1136J-S<br />
* ARM1156T2-S<br />
* ARM1156T2F-S<br />
* ARM1176JZ-S<br />
* ARM1176JZF<br />
* ARM1176JZF-S<br />
<br />
'''Renesas RX'''<br><br />
* RX111<br />
* RX210<br />
* RX220<br />
* RX21A<br />
* RX610<br />
* RX621<br />
* RX62G<br />
* RX62N<br />
* RX62T<br />
* RX630<br />
* RX631<br />
* RX63N<br />
* RX63T<br />
<br />
'''Freescale Power PC'''<br><br />
* e200z0<br />
<br />
===== Supported Target interfaces =====<br />
<br />
The Flasher Portable PLUS supports the following target interfaces:<br />
* JTAG<br />
* SWD<br />
* FINE<br />
* SPD<br />
<br />
===== Flasher Portable PLUS download speed =====<br />
<br />
The following table lists the Flasher Portable PLUS performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! ARM7 memory download<br />
|-<br />
| Flasher PRO || 720 Kbytes/s (12MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
<br />
==== Specifications for Flasher Portable ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Windows, Linux & MacOS<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C<br />
|-<br />
| Storage Temperature || -20 °C ... +65 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
| Power Supply || a) USB powered, 100mA for Flasher Portable. 500 mA if target is powered by Flasher Portable<br>b) Batteries powered (3xAAA)<br />
|-<br />
!colspan="100%"| Mechanical<br />
|-<br />
| Size (without cables) || 130mm x 65mm x 25mm<br />
|-<br />
| Weight (without cables) || 120g<br />
|-<br />
!colspan="100%"| Available interfaces<br />
|-<br />
| USB Host interface || USB 2.0<br />
|-<br />
| Target interface || Standard 20-pin 0.1" connector (Adapters available).<br />
|-<br />
!colspan="100%"| Target Interface, Electrical<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| Target supply voltage || Supply voltage is 4.5V, max. (depends on the current battery voltage).<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6V <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Max. JTAG speed || up to 12MHz<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
===== Supported CPU cores =====<br />
<br />
The Flasher Portable supports the following CPU cores:<br />
<br />
'''ARM Cortex'''<br><br />
* Cortex-A5<br />
* Cortex-A8<br />
* Cortex-A9<br />
* Cortex-R4<br />
* Cortex-R5<br />
* Cortex-M0<br />
* Cortex-M0+<br />
* Cortex-M1<br />
* Cortex-M3<br />
* Cortex-M4<br />
<br />
'''ARM (legacy cores)'''<br><br />
* ARM720T<br />
* ARM7TDMI<br />
* ARM7TDMI-S<br />
* ARM920T<br />
* ARM922T<br />
* ARM926EJ-S<br />
* ARM946E-S<br />
* ARM966E-S<br />
* ARM1136JF-S<br />
* ARM1136J-S<br />
* ARM1156T2-S<br />
* ARM1156T2F-S<br />
* ARM1176JZ-S<br />
* ARM1176JZF<br />
* ARM1176JZF-S<br />
<br />
'''Renesas RX'''<br><br />
* RX111<br />
* RX210<br />
* RX220<br />
* RX21A<br />
* RX610<br />
* RX621<br />
* RX62G<br />
* RX62N<br />
* RX62T<br />
* RX630<br />
* RX631<br />
* RX63N<br />
* RX63T<br />
<br />
'''Freescale Power PC'''<br><br />
* e200z0<br />
<br />
===== Supported Target interfaces =====<br />
<br />
The Flasher Portable supports the following target interfaces:<br />
<br />
* JTAG<br />
* SWD<br />
* FINE<br />
* SPD<br />
<br />
===== Flasher Portable download speed =====<br />
<br />
The following table lists the Flasher Portable performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! ARM7 memory download<br />
|-<br />
| Flasher PRO || 720 Kbytes/s (12MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
== Working with Flasher ==<br />
<br />
This chapter describes functionality and how to use Flasher.<br />
<br />
=== Flasher Portable PLUS ===<br />
<br />
The Flasher Portable PLUS is a portable version of SEGGERs Flasher family,<br />
which has been designed to fill the need of an extremely portable, production grade,<br />
Flash programmer used for in-field firmware updates. No need to be tethered to an outlet,<br />
it is powered by an integrated Li-Ion cell (680mAh).<br />
The Flasher Portable PLUS programs flash targets in stand-alone mode or via J-Flash PC software.<br><br />
<br />
Furthermore the Flasher Portable PLUS allows the user to select between 99 data images to be programmed (since V7.90).<br />
The images can be easily selected by using the SEL button on the front of the housing.<br />
For more information about support for multiple images, please refer to [[#Multiple File Support | Multiple File Support]].<br><br />
For setup and configuration purposes, the Flasher Portable PLUS connects to a PC via USB interface,<br />
running Windows, Linux & MacOS and has a built-in standard 20-pin J-Link target connector.<br><br />
<br />
{{Note|1=Ethernet and RS232 as host interface are not available for the Flasher Portable PLUS.}}<br />
<br />
==== Housing & Buttons ====<br />
<br />
The Flasher Portable PLUS comes with a display, which is for example used to represent the status of an ongoing flash progress.<br />
Furthermore, there are three buttons which allow the user to control Flasher Portable PLUS.<br />
For a detailed description of the functions, take a look at the table below:<br />
<br />
<!-- LG xxxxxx edit image with labels for buttons? (Is this actually necessary? Buttons are basically self-explanatory...) --><br />
[[File:Flasher_Portable_PLUS.png | 500px]]<br />
<br />
{| class="seggertable"<br />
|-<br />
! Button !! Description<br />
|-<br />
| Program || Start programming process with the currently selected image.<br />
|-<br />
| Select image || Select the image to be programmed next time the Program button is pressed.<br />
|-<br />
| 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.<br />
|-<br />
|}<br />
<br />
==== Configuration ====<br />
<br />
The Flasher Portable PLUS has some configuration options the other Flashers do not have.<br />
{| class="seggertable"<br />
|-<br />
! Option !! Description !! Value range !! Default value<br />
|-<br />
| AutoPowerOffOnIdle || Specifies the time interval after which the Flasher Portable will turn off without any user action || 1 to 3600 || 60<br />
|-<br />
| ShowDatCRCAfterProgramming || Activates displaying the data file CRC after the programming in the pop up message || 0 = inactive, 1 = active || 0<br />
|-<br />
|}<br />
<br />
If the <tt>Flasher.ini</tt> does not contain a <tt>[Config]</tt> section with the configuration option, the default value is used.<br />
<br />
'''Example:'''<br><br />
This sample will show the data file CRC after the programming and the auto power of is set to five minutes (=300 seconds).<br />
<br />
<source lang="c"><br />
[CONFIG]<br />
AutoPowerOffOnIdle = "300"<br />
ShowDatCRCAfterProgramming = "1"<br />
</source><br />
<br />
=== Flasher Portable ===<br />
<br />
The Flasher Portable is a portable version of SEGGERs Flasher family, which has been designed to fill the need of an extremely portable,<br />
production grade, Flash programmer used for in-field firmware updates. No need to be tethered to an outlet,<br />
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><br />
<br />
Furthermore the Flasher Portable allows the user to select between four data images to be programmed.<br />
The images can be easily selected by using the arrow buttons on the front of the housing.<br />
For more information about support for multiple images, please refer to [[#Multiple File Support | Multiple File Support]].<br><br />
For setup and configuration purposes, the Flasher Portable connects to a PC via USB interface,<br />
running Windows, Linux & MacOS and has a built-in standard 20-pin J-Link target connector.<br><br />
<br />
{{Note|1=Ethernet and RS232 as host interface are not available for the Flasher Portable.}}<br />
<br />
==== Housing & Buttons ====<br />
<br />
The Flasher Portable comes with several leds which are for example used to represent the status of an ongoing flash progress.<br />
Furthermore, there are three buttons which allow the user to control Flasher Portable.<br />
For a detailed description of the functions, take a look at the two tables below:<br />
<br />
<!-- LG xxxxxx edit image with labels for buttons?--><br />
[[File:Flasher_Portable_Top_2.png | 500px]]<br />
<br />
{| class="seggertable"<br />
|-<br />
! LED !! Description<br />
|-<br />
| ACTIVE || GREEN. Blinks while the Flasher Portable is busy / performs operations on the target.<br />
|-<br />
| PASS/FAIL || GREEN/RED. Indicates, if the last flashing cycle was successful.<br />
<ul><br />
<li> GREEN: Flashing cycle completed successfully.</li><br />
<li> RED: Flashing cycle completed with error.</li><br />
</ul><br />
|-<br />
| 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]].<br />
|-<br />
| POWER || GREEN: Indicates if Flasher is currently powered. Blinks while Flasher Portable tries to enumerate via USB.<br />
|-<br />
| 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.<br />
|-<br />
|}<br />
<br />
{| class="seggertable"<br />
|-<br />
! Button !! Description<br />
|-<br />
| Program || Start programming process with the currently selected image.<br />
|-<br />
| Select image || Select the image to be programmed next time the <tt>Program</tt> button is pressed.<br />
|-<br />
| 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<br />
|-<br />
|}<br />
<br />
=== File system ===<br />
<br />
The Flasher with hardware version 4 and lower supports 8.3 filenames only (8 characters filename, 3 characters file extension).<br />
Using longer filenames may result in incorrect operation. Integrated functions,<br />
like the FTP server or the terminal server, will refuse writing files with long filenames.<br />
<br />
=== Setting up the IP interface ===<br />
<br />
Setting up the IP interface<br />
Some of the Flasher models come with an additional Ethernet interface to communicate with the host system.<br />
These Flashers also come with a built-in webserver which allows some basic setup of the emulator,<br />
e.g. configuring a default gateway which allows using it even in large intranets. For more information,<br />
please refer to [[#TCP Services | TCP Services]].<br />
<br />
==== Connecting the first time ====<br />
<br />
When connecting Flasher the first time, it attempts to acquire an IP address via DHCP.<br />
The recommended way for finding out which IP address has been assigned to Flasher is, to use the J-Link Configurator.<br />
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.<br />
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''.<br />
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,<br />
please refer to ''UM08001, J-Link / J-Trace User Guide'', chapter ''Setup'', section ''Setting up the IP interface''.<br />
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]].<br />
<br />
=== Operating modes ===<br />
<br />
All Flashers except the Flasher ATE are able to boot in 3 different modes:<br />
<br />
* PC-based mode<br />
* Stand-alone mode<br />
* File access mode<br />
<br />
{{Note|1=The Flasher ATE only supports the stand-alone mode.}}<br />
<br />
'''Definition PC-based mode'''<br><br />
Flasher is connected to a PC via USB/Ethernet and controlled by a PC application (J-Flash).<br />
If there is an RS232 connection to a PC, does not have any influence on if PC-based mode is entered or not.<br />
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, ...)<br />
<br />
'''Definition Stand-alone mode'''<br><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.<br />
<br />
'''Definition file access mode'''<br><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.<br />
In this mode, Flasher enumerates as a mass storage device (like an USB Stick) at the host PC.<br />
In this mode, configuration + data files can be manually placed on the Flasher and the Flasher logfile can be read out.<br />
If you are using a self-powered Flasher such as the Flasher Portable Plus, the Flasher must be turned off before connecting it.<br />
<br />
==== PC-based mode ====<br />
If you want to use Flasher for the first time you need to install the J-Link software and documentation package.<br />
After installation, connect Flasher to the host PC via USB or Ethernet.<br />
For more information about how to install the J-Link software and documentation package please refer to [[J-Link Software and Documentation Pack]].<br />
<br />
===== Connecting the target system =====<br />
<br />
'''Power-on sequence'''<br><br />
In general, Flasher should be powered on before connecting it with the target device.<br />
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.<br />
Power-on the device after you connected Flasher to it. Flasher will boot in "PC-based mode".<br />
<br />
'''Verifying target device connection with J-Link.exe'''<br><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.<br />
Then start the J-Link command line tool <tt>JLink.exe</tt>,<br />
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.<br />
The screenshot below shows the output of <tt>JLink.exe</tt>.<br />
<br />
[[File:flasher_jlinkmode.gif]]<br />
<br />
===== LED status indicators =====<br />
<br />
In PC-based mode, there are also certain LED status codes defined:<br />
<br />
{| class="seggertable"<br />
|-<br />
! # !! Status of LED !! Meaning<br />
|-<br />
| 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.<br />
|-<br />
| 0 || GREEN<br>constant || Flasher enumeration process is complete and it is ready to be controlled by a PC application.<br />
|-<br />
|}<br />
<br />
==== Stand-alone mode ====<br />
<br />
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]].<br />
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).<br />
In the "stand-alone mode" Flasher can be used as a stand-alone flash programmer.<br><br />
<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]].}}<br />
<br />
===== LED status indicators =====<br />
Progress and result of an operation is indicated by Flasher's LEDs. The behavior is different for J-Link and stand-alone mode.<br />
For a definition of the different modes, please refer to [[#Operating modes | Operating modes]].<br />
The following table describes the behavior of the LEDs in stand-alone mode.<br />
<br />
{| class="seggertable"<br />
|-<br />
! # !! Status of LED !! Meaning<br />
|-<br />
| 0 || GREEN<br>constant || Flasher waits for a start trigger to perform an operation in stand-alone mode.<br />
|-<br />
| 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><br />
|-<br />
| 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.<br />
|-<br />
|}<br />
Older Flasher models have a different behavior.<br />
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:<br />
<br />
* 1621xxxxx (Flasher ARM V2)<br />
* 1630xxxxx (Flasher ARM V3)<br />
* 4210xxxxx (Flasher PPC V1)<br />
* 4110xxxxx (Flasher RX V1)<br />
<br />
{| class="seggertable"<br />
|-<br />
! # !! Status of LED !! Meaning<br />
|-<br />
| 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.<br />
|-<br />
| 1 || GREEN<br>constant || Connect to target and perform init sequence.<br />
|-<br />
| 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><br />
|-<br />
| 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.<br />
|-<br />
|}<br />
<br />
==== File access mode ====<br />
<br />
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".<br />
If you are using a self-powered Flasher such as the Flasher Portable Plus, the Flasher must be turned off before connecting it.<br />
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.<br />
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>.<br />
<br />
[[File:flasher_mode_msd.gif]]<br />
<br />
<tt>FLASHER.CFG</tt> contains the configuration settings for programming the target device and <tt>FLASHER.DAT</tt> contains the data to be programmed.<br />
<tt>FLASHER.LOG</tt> contains all logging information about the commands, performed in stand-alone mode.<br />
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><br />
<br />
Currently, J-Flash does not support to configure Flasher for automated serial number programming.<br><br />
<br />
If you want to configure multiple Flasher for the same target you do not have to use J-Flash all the time.<br />
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".<br />
<br />
=== Setting up Flasher for stand-alone mode ===<br />
{{Note| All Options how to set up the Flasher for stand-alone mode you can find here: [[Flasher/Download project to Flasher|Download project to the Flasher]]}}<br />
<br />
In order to set up Flasher for the stand-alone mode it needs to be configured once using the J-Flash software.<br />
For more information about J-Flash, please refer to the ''J-Flash User Guide''.<br><br />
<br />
After starting J-Flash, open the appropriate J-Flash project for the target Flasher shall be configured for, by selecting '''File''' -> '''Open Project'''.<br />
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><br />
<br />
After the appropriate project has been opened / created, the data file which shall be programmed needs to be loaded, by selecting '''File''' -> '''Open'''.<br />
After this J-Flash should look like in the screenshot below.<br />
<br />
[[File:jflash_projectfile_datafile.gif]]<br />
<br />
Before downloading the configuration (project) and program data (data file) to Flasher, the connection type (USB/IP) needs to be selected in the project.<br />
These settings are also saved on a per-project basis, so this also only needs to be setup once per J-Flash project.<br />
The connection dialog is opened by clicking '''Options''' -> '''Project settings''' -> '''General'''.<br />
<br />
[[File:jflash_connection_dialog.gif]]<br />
<br />
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.<br />
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.<br />
The user then can simply select the Flash he wants to download the configuration to.<br />
<br />
[[File:EmuSelectionDialog.gif]]<br />
<br />
In order to download the configuration and program data to the Flasher, simply select '''File''' -> '''Download config & data file to Flasher'''.<br />
<br />
[[File:jflash_download_to_emul.gif]]<br />
<br />
The J-Flash log window indicates that the download to the emulator was successful.<br />
<br />
[[File:jflash_download_to_emu_succ.gif]]<br />
<br />
From now on, Flasher can be used in stand-alone mode (without host PC interaction) for stand-alone programming.<br />
<br />
==== Preparing for stand-alone operation manually ====<br />
<br />
As an alternative, J-Flash can also be used to save config and data file to a hard drive.<br><br />
<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,<br />
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.<br />
<br />
'''Creating config and data files'''<br><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><br />
<br />
For some devices, additional files (*.PEX) are needed.<br />
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.<br />
<br />
'''About *.PEX files'''<br><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,<br />
the following needs to be taken care of:<br><br />
<br />
For some devices, special connect, reset etc. sequences are necessary which are stored in so-called *.PEX files on the Flasher.<br><br />
<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><br />
<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><br />
The *.PEX files need to be placed in a subdirectory with the same name as the corresponding *.cfg file.<br />
J-Flash creates a directory with the correct name automatically when a config file is created.<br><br />
<br />
Example:<br><br />
<br />
MyConf0 is a project for a device that requires a *.PEX file for connect.<br><br />
MyConf1 is a project for a device that requires no *.PEX file at all.<br />
<br />
[[File:PEX_File_Flasher.png]]<br />
<br />
=== Universal Flash Loader mode ===<br />
<br />
As an alternative to the stand-alone mode, configured via J-Flash, there is the Universal Flash Loader mode.<br />
While the normal stand-alone mode relies on using the debug interface of the device, the Universal Flash Loader<br />
mode uses device or vendor specific programming interfaces and protocols and therefore it is independent of the<br />
CPU core.<br><br />
<br />
The Universal Flash Loader is available for the following Flasher models:<br />
* Flasher PRO<br />
* Flasher Compact<br />
* Flasher Portable PLUS<br />
<br />
For some of the supported devices, SEGGER offers specific adapters.<br />
<br />
==== Preparing manually ====<br />
<br />
The Universal Flash Loader uses an configuration file (*.UNI), a device specific flash programming algorithm (*.PEX) and a data file (*.DAT).<br />
<br />
===== Configuration =====<br />
<br />
The configuration file basically is split into three parts.<br />
The first part, the section [DEVICE], controls the generic behavior of the Universal Flash Loader.<br />
It specifies which protocol driver and data file to use. It allows enabling and configuring target power<br />
and it defines which actions to perform.<br />
The second part consists of one or more [BANKx] sections, which contain information about the memories.<br />
The third part, the section [CONFIG], includes configuration settings for the protocol driver.<br><br />
<br />
An .UNI file might look as follows:<br><br />
<br />
<source lang="c"><br />
[OPTIONS]<br />
TargetPower = "0"<br />
ChipErase = "0"<br />
<br />
[TASKS]<br />
CheckBlank = "1"<br />
Erase = "1"<br />
Program = "1"<br />
Verify = "1"<br />
Secure = "1"<br />
<br />
[DEVICE]<br />
Algo = "RL78.PEX"<br />
Data = "ALL_6k.dat"<br />
<br />
[BANK0]<br />
; Code Flash<br />
Base = "0x00000000"<br />
Size = "0x00004000"<br />
Sect = "0x00000400"<br />
<br />
[BANK1]<br />
; Data Flash<br />
Base = "0x000F1000"<br />
Size = "0x00000800"<br />
Sect = "0x00000400"<br />
<br />
[CONFIG]<br />
BaudRate = "1000000"<br />
ClearConfigOnConnect = "0x00"<br />
Security = "0xFF"<br />
ShieldStart = "0x0000"<br />
ShieldEnd = "0x000F"<br />
</source><br />
<br />
'''[OPTIONS]'''<br><br />
'''TargetPower'''<br><br />
If set to a value >0, power is applied to the target.<br />
The value defines the delay (in ms) after enabling the target power supply and before starting to communicate with the target.<br />
<br />
'''ChipErase'''<br><br />
If set to 1, the chip erase function is called for erasing the chip.<br><br />
{{Note|1=Do not enable this setting if the flash programming algorithm does not support chip erase.}}<br />
<br />
'''[TASKS]'''<br><br />
'''CheckBlank'''<br><br />
Defines if a blank check should be performed before erasing a sector.<br />
<br />
'''Erase'''<br><br />
Defines if the sector should be erased before programming.<br />
<br />
'''Program'''<br><br />
Defines if the sector should be programmed.<br />
<br />
'''Verify'''<br><br />
Defines if the sector should be verified after programming.<br />
<br />
'''Secure'''<br><br />
Defines if the device should be secured or protected against read-out after verifying.<br />
<br />
'''[DEVICE]'''<br><br />
'''Algo'''<br><br />
File name of the flash programming algorithm. This file is provided by SEGGER and will typically support a series of devices.<br />
<br />
'''Data'''<br><br />
File name of the data file to program. The Flasher only supports the Flasher .dat file format.<br />
Flasher .dat files can be generated by J-Flash or Universal Flash Loader and offer high performance together with high flexibility.<br />
<br />
'''[BANKx]'''<br><br />
x blocks with configuration data for the flash banks. All three parameters (Base, Size and Sect) are mandatory.<br />
<br />
'''Base'''<br><br />
Base address of the flash bank.<br />
<br />
'''Size'''<br><br />
Total size of the flash bank.<br />
<br />
'''Sect'''<br><br />
Sector size of the flash bank.<br />
<br />
'''[CONFIG]'''<br><br />
This section includes specific configuration data for the flash programming algorithm.<br><br />
There are no general parameters.<br />
<br />
{{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. }}<br />
<br />
==== Preparing using the PC utility ====<br />
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.<br />
<br />
[[File:Universal Flash Loader.png]]<br />
<br />
The Universal Flash Loader Configurator comes with a large list of devices and flash programming algorithms. If you are going to<br />
use a device from one of the supported families which currently is not available in the utility, feel free to contact the support.<br />
<br />
=== Multiple File Support ===<br />
<br />
It is also possible to have multiple data files and config files on Flasher, to make Flasher more easy to use in production environment.<br />
To choose the correct configuration file and data file pair, a <tt>FLASHER.INI</tt> file is used.<br />
This init file contains a <tt>[FILES]</tt> section which describes which configuration file and which data file should be used for programming.<br />
A sample content of a FLASHER.INI file is shown below:<br><br />
<br />
<source><br />
[FILES]<br />
DataFile = "Flasher1.dat"<br />
ConfigFile = "Flasher1.cfg"<br />
</source><br />
<br />
Using this method all configuration files and data files which are used in the production only have to be downloaded once.<br />
From there on a configuration file / data file pair can be switched by simply replacing the <tt>FLASHER.INI</tt> by a new one,<br />
which contains the new descriptions for the configuration file and data file. The <tt>FLASHER.INI</tt> can be replaced in two ways:<br />
<ol><br />
<li>Boot Flasher in file access mode in order to replace the <tt>FLASHER.INI</tt></li><br />
<li><br />
If Flasher is already integrated into the production line, runs in stand-alone mode and can not be booted in other mode:<br />
Use the file I/O commands provided by the ASCII interface of Flasher, to replace the <tt>FLASHER.INI</tt>.<br />
For more information about the file I/O commands, please refer to [[#File I/O commands | File I/O commands]].<br />
</li><br />
</ol><br />
{{Note|1=Flasher with hardware version 4 and lower only supports 8.3 filenames only (8 characters filename, 3 characters file extension). Using longer filenames may result in incorrect operation.}}<br />
<br />
==== Flasher Portable specifics ====<br />
<br />
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><br />
<br />
Which config / data file pair is used for which image selection position is determined by the contents of the FLASHER.INI.<br />
For this, the FLASHER.INI contents in the <tt>[FILES]</tt> section have been extended.<br />
The sample below shows how to enable the user to select between four different images on the Flasher portable via the select / arrow button:<br />
<br />
<source><br />
[FILES]<br />
DataFile = "First.dat"<br />
ConfigFile = "First.cfg"<br />
DataFile1 = "Second.dat"<br />
ConfigFile1 = "Second.cfg"<br />
DataFile2 = "Third.dat"<br />
ConfigFile2 = "Third.cfg"<br />
DataFile3 = "Fourth.dat"<br />
ConfigFile3 = "Fourth.cfg"<br />
</source><br />
<br />
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.<br />
From there on, switching between the files can be done by simply using the selection button of Flasher Portable.<br />
<br />
===== Example =====<br />
<br />
1 Target, 2 Datafiles (e.g. boot loader und application) --> same configuration file (*.CFG) but different data files (*.DAT) should be used.<br><br />
<br />
* Open pre-configured J-Flash project<br />
* File -> Save Flasher config file ... (DEFAULT.CFG)<br />
* Open data file 1 (boot loader)<br />
* File -> Save Flasher data file ... (BOOT.DAT)<br />
* Open data file 2 (application)<br />
* File -> Save Flasher data file ... (APP.DAT)<br />
* Create the a FLASHER.INI file (content see below)<br />
* Connect the Flasher in file access mode to the PC<br />
* Copy DEFAULT.CFG, BOOT.DAT, APP.DAT and FLASHER.INI on the Flasher<br />
<br />
FLASHER.INI content:<br><br />
<br />
<source><br />
[FILES]<br />
DataFile = "BOOT.DAT"<br />
ConfigFile = "DEFAULT.CFG"<br />
DataFile1 = "APP.DAT"<br />
ConfigFile1 = "DEFAULT.CFG"<br />
</source><br />
<br />
==== Flasher Portable PLUS specifics ====<br />
<br />
Flasher Portable PLUS allows to choose between 99 configuration and data file pairs during runtime by using the select button on the front of Flasher Portable PLUS.<br><br />
<br />
Which config / data file pair is used for which image selection position is determined by the contents of the FLASHER.INI.<br />
For this, the FLASHER.INI may contain several <tt>[BATCH]</tt> sections.<br />
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:<br />
<br />
<source><br />
[BATCH]<br />
DataFile = "First.dat"<br />
ConfigFile = "First.cfg"<br />
[BATCH1]<br />
DataFile = "Second.dat"<br />
ConfigFile = "Second.cfg"<br />
[BATCH2]<br />
DataFile = "Third.dat"<br />
ConfigFile = "Third.cfg"<br />
[BATCH7]<br />
DataFile = "Proj_8.dat"<br />
ConfigFile = "Proj_8.cfg"<br />
[BATCH15]<br />
DataFile = "Proj_16.dat"<br />
ConfigFile = "Proj_16.cfg"<br />
</source><br />
<br />
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.<br />
From there on, switching between the files can be done by simply using the selection button of Flasher Portable PLUS.<br />
<br />
Please also consider the chapter [[#Batch Programming in stand-alone mode | Batch Programming in stand-alone mode]].<br />
<br />
{{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.}}<br />
{{Note|1=You may have gaps in the list. The missing entries will be skipped when selecting the next configuration.}}<br />
{{Note|1=The <tt>[Files]</tt> section is supported by the Flasher Portable PLUS, too. But the number of configuration is limited to four.}}<br />
<br />
===== Example =====<br />
<br />
1 Target, 2 Datafiles (e.g. boot loader und application) --> same configuration file (*.CFG) but different data files (*.DAT) should be used.<br><br />
<br />
* Open pre-configured J-Flash project<br />
* File -> Save Flasher config file ... (DEFAULT.CFG)<br />
* Open data file 1 (boot loader)<br />
* File -> Save Flasher data file ... (BOOT.DAT)<br />
* Open data file 2 (application)<br />
* File -> Save Flasher data file ... (APP.DAT)<br />
* Create the a FLASHER.INI file (content see below)<br />
* Connect the Flasher in file access mode to the PC<br />
* Copy DEFAULT.CFG, BOOT.DAT, APP.DAT and FLASHER.INI on the Flasher<br />
<br />
FLASHER.INI content:<br><br />
<br />
<source><br />
[BATCH]<br />
DataFile = "BOOT.DAT"<br />
ConfigFile = "DEFAULT.CFG"<br />
DisplayName = "Bootloader"<br />
[BATCH1]<br />
DataFile = "APP.DAT"<br />
ConfigFile = "DEFAULT.CFG"<br />
DisplayName = "Application"<br />
[BATCH2]<br />
DataFile = "BOOT.DAT"<br />
ConfigFile = "DEFAULT.CFG"<br />
DataFile1 = "APP.DAT"<br />
ConfigFile1 = "DEFAULT.CFG"<br />
DisplayName = "BL and App"<br />
</source><br />
<br />
=== Custom labels ===<br />
<br />
Flasher supports to assign custom labels to configurations ("Project Display Text" in U-Flash). This allows to specify easy to remember names for configurations that are stored on the Flasher.<br />
<br />
==== Hardware and software requirements ====<br />
This feature is supported by the following models:<br />
* Flasher Portable PLUS<br />
<br />
This feature is supported since V6.30e of the software package and firmware<br />
<br />
==== Assigning labels ====<br />
The configuration and data file pairs are specified in the <tt>FLASHER.INI</tt> file:<br />
<source><br />
[FILES]<br />
DataFile = "IMAGE0.dat"<br />
ConfigFile = "IMAGE0.cfg"<br />
DataFile1 = "IMAGE1.dat"<br />
ConfigFile1 = "IMAGE1.cfg"<br />
</source><br />
<br />
By default, Flasher will show the names of the configuration and data file:<br />
[[File:FW1_smartwatch_nolabel.png]]<br />
[[File:FW2_smart_meter_nolabel.png]]<br />
<br />
By adding <tt>DisplayName</tt>, <tt>DisplayName1</tt>, ... keys to the <tt>FLASHER.INI</tt>, a custom label can be shown instead:<br />
<source><br />
[FILES]<br />
DisplayName = "FW smartwatch"<br />
DataFile = "IMAGE0.dat"<br />
ConfigFile = "IMAGE0.cfg"<br />
DisplayName1 = "FW smart meter"<br />
DataFile1 = "IMAGE1.dat"<br />
ConfigFile1 = "IMAGE1.cfg"<br />
</source><br />
<br />
The images will now be shown as follows:<br />
[[File:FW1_smartwatch_label.png]]<br />
[[File:FW2_smart_meter_label.png]]<br />
<br />
==== Considerations ====<br />
* 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.<br />
<br />
=== Programming multiple targets ===<br />
<br />
It is possible to program multiple targets which are located in a JTAG chain.<br />
The targets will be programmed each with a configuration and a data file.<br><br />
The configuration for the desired target must be selected before it can be programmed,<br />
this can be done with the <tt>#SELECT</tt> command.<br />
For more information how to use the <tt>#SELECT</tt> command please refer to the [[#ASCII_command_interface|ASCII command interface]].<br />
<br />
'''Example'''<br><br />
Three devices should be programmed.<br><br />
<br />
JTAG Chain: ''TDI'' --> ''Device2'' --> ''Device1'' --> ''Device0'' --> ''TDO''<br><br />
<br />
Three configurations would be stored on the flasher:<br><br />
<br />
Config 0: Configured to program Device0 (DEVICE0.CFG, DEVICE0.DAT)<br><br />
Config 1: Configured to program Device1 (DEVICE1.CFG, DEVICE1.DAT)<br><br />
Config 2: Configured to program Device2 (DEVICE2.CFG, DEVICE2.DAT)<br><br />
<br />
Selection and programming of the target will be done via the ASCII interface:<br><br />
<br />
<source><br />
#SELECT DEVICE0<br />
#AUTO<br />
#SELECT DEVICE1<br />
#AUTO<br />
#SELECT DEVICE2<br />
#AUTO<br />
</source><br />
<br />
==== Programming multiple targets with J-Flash ====<br />
<br />
Programming multiple targets can also be done via J-Flash using the command line interface.<br />
For this each target must be handled with its own project file.<br />
<br />
'''Example'''<br><br />
<br />
<source><br />
JFlash.exe -openproj"Device0.jflash" -open"Device0.hex" -auto -exit<br />
JFlash.exe -openproj"Device1.jflash" -open"Device1.hex" -auto -exit<br />
JFlash.exe -openproj"Device2.jflash" -open"Device2.hex" -auto -exit<br />
</source><br />
<br />
=== Batch Programming in stand-alone mode ===<br />
<br />
Batch programming allows to execute different stand-alone mode jobs in batch to be executed in immediate succession, without any user interaction in between.<br />
This can be used for example to program multiple targets in a JTAG-Chain or multiple data files to a target.<br><br />
A batch may contains an unlimited number of configurations which consist of a data file (*.DAT) and config file (*.CFG).<br />
For further information regarding config and data files, please refer to [[#Preparing for stand-alone operation manually | Preparing for stand-alone operation manually]].<br><br />
In order to specify the batch jobs, a FLASHER.INI file is used.<br />
This init file contains a [BATCH] section which describes which configuration pairs (*.DAT and *.CFG file) should be used for each batch job.<br />
A sample content of a FLASHER.INI file is shown below:<br><br />
<br />
<source><br />
[BATCH]<br />
DataFile = "Flasher0.dat"<br />
ConfigFile = "Flasher0.cfg"<br />
DataFile1 = "Flasher1.dat"<br />
ConfigFile1 = "Flasher1.cfg"<br />
</source><br />
<br />
[[File:Batch_Jobs.bmp]]<br />
<br />
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.<br />
<br />
<br />
[[File:Batch_Programming.bmp]]<br />
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<br />
currently executed action.<br />
<br />
<br />
[[File:Batch_Result.bmp]]<br />
The result of the programming will be shown on the screen after finishing all jobs.<br />
<br />
<br />
Creating / Replacing of the FLASHER.INI file can done in two ways:<br><br />
<ol><br />
<li>Boot Flasher in file access mode in order to replace the FLASHER.INI</li><br />
<li><br />
If Flasher is already integrated into the production line, runs in stand-alone mode and can not be booted in other mode:<br />
Use the file I/O commands provided by the ASCII interface of Flasher, to replace the FLASHER.INI .<br />
For more information about the file I/O commands, please refer to [[#File I/O commands | File I/O commands]].<br />
In case of an error occurred during execution, the Flasher terminates the entire batch processing.<br />
</li><br />
</ol><br />
{{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.}}<br />
{{Note|1=The Flasher with hardware version 4 and lower supports 8.3 filenames only (8 characters filename, 3 characters file extension). Using longer filenames may result in incorrect operation.}}<br />
<br />
==== Flasher Portable specifics ====<br />
<br />
Flasher Portable allows to choose between four different batches during runtime by using the select/arrow button on the front of Flasher Portable.<br />
Which batch configuration is used for which image selection position is specified in the FLASHER.INI.<br />
For this, the FLASHER.INI contents in the [BATCH] section have been extended.<br />
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><br />
<br />
<source><br />
[BATCH]<br />
DataFile = "Flasher0.dat"<br />
ConfigFile = "Flasher0.cfg"<br />
DataFile1 = "Flasher1.dat"<br />
ConfigFile1 = "Flasher1.cfg"<br />
DataFile2 = "Flasher2.dat"<br />
ConfigFile2 = "Flasher2.cfg"<br />
[BATCH1]<br />
DataFile = "TEST.dat"<br />
ConfigFile = "Test.cfg"<br />
[BATCH2]<br />
DataFile = "VALIDATE.dat"<br />
ConfigFile = "Flasher0.cfg"<br />
</source><br />
<br />
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.<br />
From there on, switching between the batches can be done by simply using the selection button of Flasher Portable.<br />
<br />
<br />
<br />
==== Examples ====<br />
<br />
'''Example 1:''' Programming two Data files to the same target<br><br />
<br />
* Open your J-Flash project.<br />
* Use File -> Save Flasher config file... to save the .CFG file (in this example: STM32F4.CFG).<br />
* Select the first binary and use File -> Save Flasher Data file... to save the first .DAT file (in this example: DATA0.DAT).<br />
* Select the second binary and use File -> Save Flasher Data file... to save the second data file .DAT file (in this example: DATA1.DAT).<br />
* Copy the Files to the Flasher e.g. by using file access mode.<br />
* Create a FLASHER.INI file in the root directory of the Flasher.<br />
* Exemplary content of FLASHER.INI:<br><br />
<source><br />
[BATCH]<br />
DataFile = "DATA0.dat"<br />
ConfigFile = "emPower.cfg"<br />
DataFile1 = "DATA1.dat"<br />
ConfigFile1 = "emPower.cfg"<br />
</source><br />
<br />
<br />
'''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><br />
Example scenario: 2 Devices in a JTAG chain, a STM32F1 and a STM32F4. <br><br />
<br />
* Follow the same as described before and additionally:<br />
* Create one project file per target (and create a .CFG file of each one).<br />
* Make sure each project file is configured correctly, especially the JTAG-Chain position (See UM8003 "J-Flash" for more detailed info).<br />
* Exemplary content of FLASHER.INI:<br><br />
<source><br />
[BATCH]<br />
DataFile = "F1DATA.dat"<br />
ConfigFile = "STM32F1.cfg"<br />
DataFile1 = "F4DATA0.dat"<br />
ConfigFile1 = "STM32F4.cfg"<br />
DataFile2 = "F4DATA1.dat"<br />
ConfigFile2 = "STM32F4.cfg"<br />
</source><br />
<br />
'''Example 3:''' Using multiple Batch sections with Flasher Portable.<br><br />
Example scenario: 2 Devices in a JTAG chain, a STM32F1 and a STM32F4.<br><br />
Selection 1 will program the STM32F1 target.<br><br />
Selection 2 will program the STM32F4 target using "F4DATA0.dat".<br><br />
Selection 3 will program the STM32F4 target using "F4DATA1.dat".<br><br />
Selection 4 will execute 1, 2 and 3 in sequence.<br><br />
* Exemplary content of FLASHER.INI:<br><br />
<source><br />
[BATCH]<br />
DataFile = "F1DATA.dat"<br />
ConfigFile = "STM32F1.cfg"<br />
[BATCH1]<br />
DataFile = "F4DATA0.dat"<br />
ConfigFile = "STM32F4.cfg"<br />
[BATCH2]<br />
DataFile = "F4DATA1.dat"<br />
ConfigFile = "STM32F4.cfg"<br />
[BATCH3]<br />
DataFile = "F1DATA.dat"<br />
ConfigFile = "STM32F1.cfg"<br />
DataFile1 = "F4DATA0.dat"<br />
ConfigFile1 = "STM32F4.cfg"<br />
DataFile2 = "F4DATA1.dat"<br />
ConfigFile2 = "STM32F4.cfg"<br />
</source><br />
<br />
=== Serial number programming ===<br />
<br />
Flasher supports programming of serial numbers. In order to use the serial number programming feature,<br />
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><br />
<br />
In general, Flasher supports two ways of programming a serial number into the target:<br />
<br />
#<br />
#* Programming continuous serial numbers.<br />
#* The serial number is 1-4 bytes in size.<br />
#* The start serial number, increment, serial number size, and address are configured in the J-Flash project.<br />
#<br />
#* Programming custom serial numbers from a serial number list file.<br />
#* The start line within the serial number list file to get the next serial number bytes, line increment, serial number size, and address is configured in the J-Flash project.<br />
#* The serial number list file needs to be specified and created by the user.<br />
<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.}}<br />
<br />
==== Serial number settings ====<br />
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.<br />
This is done by enabling the '''Program serial number''' option as shown in the screenshot and table below:<br />
<br />
[[File:UM08039_SN_Sample_JFlashSettings.png]]<br />
<br />
{| class="seggertable"<br />
|-<br />
!| Setting || Meaning<br />
|-<br />
| <tt>Address</tt> || The address the serial number should be programmed at.<br />
|-<br />
| <tt>Length</tt> ||<br />
The length of the serial number (in bytes) that 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 8 is selected as length, the serial number and its complement are programmed at the given address.<br />
* In case a serial number list file is given, the 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 '''Length''', the remaining bytes are filled with 0s. No complements etc. are added to the serial number.<br />
|-<br />
| <tt>Next SN</tt> ||<br />
* In case no serial number list file is given, '''Next SN''' is the next serial number which should be programmed. The serial number is always stored in flash memory in little-endian format.<br />
* In case a serial number list file is given, '''Next SN''' describes the line of the serial number list file where to read the next serial number bytes from. The Flasher starts counting at line 0, so in order to start serial number programming with the first line of the <tt>SNList.txt</tt>, '''Next SN''' needs to be set to 0.<br />
|-<br />
| <tt>Increment</tt> || Specifies by how much '''Next SN''' is incremented.<br />
|}<br />
<br />
=== Serial number file ===<br />
When selecting '''File -> Download serial number file to Flasher''', J-Flash will create a serial number file named as <tt><JFlashProjectName>_Serial.txt</tt>.<br />
This file is downloaded as <tt>Serial.txt</tt> on the Flasher.<br />
The file is generated based on the serial number settings in the J-Flash project and will contain the value defined by the '''Next SN''' option.<br />
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.<br />
<br />
==== Serial number list file ====<br />
<br />
In order to program custom serial numbers which can not be covered by the standard serial number scheme provided by J-Flash<br />
(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.<br />
<br />
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.<br />
This file is downloaded as <tt>SNList.txt</tt> on the 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<br />
* Each byte of the serial number is described by two hexadecimal digits.<br />
<br />
'''Example'''<br><br />
A 8-byte serial number should be programmed at address 0x08000000.<br><br />
<br />
It should be programmed as follows in the memory:<br><br />
<br />
<tt>0x08000000: 0x01 0x02 0x03 0x04 0x55 0x66 0x77 0x88</tt><br><br />
<br />
The serial number list file should look as follows:<br><br />
<br />
<tt>0102030455667788</tt><br />
<br />
[[File:SN_SNList.gif]]<br />
<br />
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><br />
<br />
Which line Flasher will read at the next programming cycle, is configured via the <tt>Next SN</tt> option in J-Flash.<br />
For more information, please refer to [[#Serial number settings | Serial number settings]].<br />
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><br />
<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.}}<br />
{{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.}}<br />
<br />
==== Programming process ====<br />
<br />
Flasher will increment the serial number in SERIAL.TXT by the value defined in <tt>Increment</tt>, after each successful programming cycle.<br><br />
<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><br />
<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.<br />
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.}}<br />
<br />
==== Downloading serial number files to Flasher ====<br />
<br />
Downloading the serial number files needs to be done explicitly by selecting '''File-> Download serial number file to Flasher'''.<br />
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.<br />
<br />
==== Sample setup ====<br />
<br />
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.<br />
<br />
'''Defining serial number address, length and start value'''<br><br />
In the J-Flash project the following needs to be defined:<br><br />
* <tt>Address</tt> is 0x08001000<br />
* <tt>Next SN</tt> is 1234567<br />
* <tt>Increment</tt> is 1<br />
* <tt>Len</tt> is 4 (bytes)<br />
<br />
[[File:SN_Sample_JFlashSettings.gif]]<br />
<br />
'''Downloading configuration, data and serial number to Flasher.'''<br><br />
After setting up the rest of the configuration (Target interface etc.) and selecting an appropriate data file, the configuration,<br />
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><br />
<br />
[[File:SN_Sample_DownloadToFlasher.gif]]<br />
<br />
After downloading the serial number to Flasher, J-Flash also created the <tt><JFlashProjectName>_Serial.txt</tt>.<br />
<br />
[[File:SN_Sample_SerialFileCreated.gif]]<br />
<br />
Now Flasher is prepared to program the 8-byte serial number.<br />
<br />
=== Patch file support ===<br />
<br />
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.<br />
Before starting programming process in stand-alone mode, Flasher will look for a file named <tt>Patches.txt</tt> being present on the Flasher.<br />
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><br />
<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.<br />
<br />
'''Syntax'''<br><br />
<!-- LG xxxxxxxxx '==' is shown as '=', so instead use '= ='--><br />
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><br />
<br />
<tt><NumPatches>,<Addr>,<NumBytes>:<nowiki><Data></nowiki>,<Addr>,<NumBytes>:<nowiki><Data></nowiki>,<Addr>,<NumBytes>:<nowiki><Data></nowiki>,<Addr>,<NumBytes>:<nowiki><Data></nowiki>\r\n</tt><br><br />
<br />
Find below a table which describes each parameter.<br><br />
{| class="seggertable"<br />
|-<br />
! Parameter !! Description<br />
|-<br />
| <tt><NumPatches></tt> || Describes the number of patches in this patch line. Max. value is 4.<br />
|-<br />
| <tt><Addr></tt> || Describes the address to be patched. Value is expected in hex.<br />
|-<br />
| <tt><NumBytes></tt> || Number of bytes for the current patch. Max. value is 20h (32 in decimal). Value is expected in hex.<br />
|-<br />
| <tt><nowiki><Data></nowiki></tt> || Describes the data to be patched. <nowiki><Data></nowiki> is always expected as 2 hexadecimal characters per byte.<br />
|-<br />
|}<br />
<br />
{{Note|1=All values are expected in hexadecimal format (hex).<br><br />
<nowiki><Data></nowiki> section is always preceded by ":", not ",".}}<br />
<br />
'''Example'''<br><br />
Below is an example patch.<br><br />
<br />
<source><br />
1,18,4:01020304\r\n<br />
</source><br />
<br />
Patching the following data:<br />
<br />
[[File:data_before.png]]<br />
<br />
with the example patch will result in the following data:<br />
<br />
[[File:data_afterwards.png]]<br />
<br />
Please note that as mentioned earlier patching undefined memory locations will be ignored.<br><br />
Applying the example patch to the following data:<br />
<br />
[[File:undefined_mem_before.png]]<br />
<br />
Causes no data to be patched, as can be seen in the following image:<br />
<br />
[[File:undefined_mem_no_token.png]]<br />
<br />
Therefore it is necessary to first write placeholder data to the memory locations which are supposed to be patched.<br><br />
An example for such a placeholder can be seen here:<br />
<br />
[[File:undefined_mem_token.png]]<br />
<br />
Please note that the actual data inside the placeholder does not matter to the Flasher,<br />
because it is overwritten during patching.<br><br />
Applying the example patch will now work as expected:<br />
<br />
[[File:undefined_mem_after.png]]<br />
<br />
'''Single patch via RS232'''<br><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><br />
<br />
Send the <tt>#AUTO PATCH <NumPatches>,<Addr>,<NumBytes>:<nowiki><Data></nowiki></tt><br><br />
<br />
command via Flasher ASCII interface. The parameters have the same function as described in the table above.<br />
<br />
==== Newline encoding ====<br />
<br />
In general, for all patch files, init files etc. Flasher supports both newline encodings:<br><br />
<br />
* Windows: \r\n<br />
* Unix/Mac: \n<br />
<br />
All parser functionality etc. are written to be independent from the host operating system.<br />
<br />
=== Limiting the number of programming cycles ===<br />
<br />
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.<br />
To make use of this feature, a file called <tt>Cntdown.txt</tt> needs to be placed on the Flasher.<br />
This file simply contains a decimal number (32-bit unsigned integer) that describes how many programming cycles can be performed with the current setup.<br />
<br />
[[File:CntdownTxtContent.jpg]]<br />
<br />
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><br />
<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>.}}<br />
<br />
==== Changed fail/error LED indicator behavior ====<br />
<br />
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><br />
<br />
* The red error/fail LED will lit for 1 second<br />
* After this, it will blink/toggle x times @ 5 Hz, indicating the number of programming cycles left. (blinking 5 times for 5 cycles left, ...)<br />
<br />
==== Required Flasher hardware version for Cntdown.txt support ====<br />
<br />
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><br />
<br />
* 1621xxxxx (Flasher ARM V2)<br />
* 1630xxxxx (Flasher ARM V3)<br />
* 4210xxxxx (Flasher PPC V1)<br />
* 4110xxxxx (Flasher RX V1)<br />
<br />
All other models / hardware versions support limiting of programming cycles.<br />
<br />
=== Authorized flashing ===<br />
<br />
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.<br />
without the possibility to read out the Flasher contents via file access mode, FILE I/O functionality (J-Link Commander) or RS232 commands.<br />
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.<br />
<br />
==== Creating / Adding the secure area ====<br />
<br />
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.<br />
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.<br />
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><br />
<br />
[[File:CreateSecArea.jpg]]<br />
<br />
The following secure area related commands are available in J-Link Commander:<br><br />
<br />
* securearea create<br />
* securearea remove<br />
<br />
{{Note|1=When creating or removing the <tt>secure area</tt>, all configuration and data files being stored on the Flasher, are lost.<br />
Please make sure that they are not needed anymore, before adding / removing the security area.}}<br />
<br />
==== Moving files to the secure area ====<br />
<br />
Before moving configuration + data to the <tt>secure area</tt>, proper functionality of the setup should be tested in stand-alone mode.<br />
Once the setup is working as expected, do the following, to move the configuration + data into the <tt>secure area</tt>:<br><br />
<br />
* Start Flasher in file access mode (For more info, please refer to: [[#file access mode | file access mode]])<br />
<br />
[[File:FilesBeforeSecure.png]]<br />
<br />
* Create a folder "<tt>_SECURE</tt>"<br />
* Move all files that shall be moved to the <tt>secure area</tt>, into this folder<br />
<br />
[[File:FilesAfterSecure.png]]<br />
<br />
* 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.<br />
* Now Flasher can be used in stand-alone mode, as normal, but the files cannot be read back by the user / operator.<br />
<br />
==== Considerations to be taken when using the secure area ====<br />
<br />
When using the <tt>secure area</tt>, some things need to be considered:<br><br />
<br />
* All features like multiple file support, patch file support etc. can also be used when operating from the <tt>secure area</tt>.<br />
* 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>.<br />
* 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>.<br />
* 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.<br />
<br />
==== Required Flasher hardware version ====<br />
<br />
Older Flasher models do not support authorized flashing. The Flashers with the following serial number ranges do not support authorized flashing:<br><br />
<br />
* 1621xxxxx (Flasher ARM V2)<br />
* 1630xxxxx (Flasher ARM V3)<br />
* 4210xxxxx (Flasher PPC V1)<br />
* 4110xxxxx (Flasher RX V1)<br />
<br />
All other models / hardware versions support authorized flashing.<br />
<br />
=== Target interfaces ===<br />
<br />
The table below shows the supported target interfaces of the different Flasher models.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! Supported interfaces<br />
|-<br />
| Flasher PRO || JTAG, SWD<br />
|-<br />
| Flasher Compact || JTAG, SWD<br />
|-<br />
| Flasher ARM || JTAG, SWD<br />
|-<br />
| Flasher RX || JTAG<br />
|-<br />
| Flasher PPC || JTAG<br />
|-<br />
|}<br />
<br />
For more information about the target interfaces itself, please refer to:<br><br />
<br />
* ''UM08001, chapter "Working with J-Link and J-Trace", section "JTAG interface"''<br />
* ''UM08001, chapter "Working with J-Link and J-Trace", section "SWD interface"''<br />
<br />
=== Supported architectures ===<br />
<br />
Flasher supports programming of the internal flash of a large number of different microcontrollers.<br />
The number of supported devices is steadily growing. You can always find the latest list of supported devices on our website:<br><br />
<br />
''http://www.segger.com/supported-devices.html''<br />
<br />
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.<br />
Also the existence of the device may have confidential status, so it might not be mentioned as being supported in public releases yet.<br />
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.<br />
<br />
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).<br />
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.<br />
<br />
If a device is not supported, you can always contact us. We will be happy to provide you with an offer.<br />
<br />
==== External flashes ====<br />
<br />
In general our Flashers support programming of external flashes listed below:<br>(Can differ between Flasher models and hardware versions)<br />
<br />
* parallel NOR flash<br />
* SPI / QSPI flash<br>(see: ''[[SPI_support_by_Flasher_models]]'')<br />
* NAND flash<br />
* I<sup>2</sup>C EEPROM/Flash<br />
* FRAM<br />
<br />
If the parallel NOR flash device which is used is not CFI-compliant you have to select the flash device in J-Flash explicitly,<br />
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''.<br />
<br />
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.<br />
The J-Flash software comes with sample projects for ''Open Flashloader''.<br />
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''<br />
{{Note|1=Complete Information about ''Open Flashloaders'' can be found in our Wiki:<br>''[[Open_Flashloader]]''}}<br />
<br />
==== Cores ====<br />
<br />
===== Flasher ARM =====<br />
<br />
Flasher ARM supports and has been tested with the following cores, but should work with any ARM7/9, Cortex-M0/M1/M3/M4 core.<br />
If you experience problems with a particular core, do not hesitate to contact Segger.<br><br />
<br />
* ARM7TDMI (Rev 1)<br />
* ARM7TDMI (Rev 3)<br />
* ARM7TDMI-S (Rev 4)<br />
* ARM920T<br />
* ARM922T<br />
* ARM926EJ-S<br />
* ARM946E-S<br />
* ARM966E-S<br />
* Cortex-M0<br />
* Cortex-M1<br />
* Cortex-M3<br />
* Cortex-M4<br />
<br />
===== Flasher RX =====<br />
<br />
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><br />
<br />
* RX610<br />
* RX621<br />
* RX62N<br />
* RX62T<br />
<br />
===== Flasher PPC =====<br />
<br />
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.<br />
<br />
* e200z0<br />
<br />
===== Flasher PRO/Compact/Portable PLUS =====<br />
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/''.<br />
<br />
=== Programming multiple targets in parallel ===<br />
<br />
To program multiple targets in parallel there are the following possibilities:<br />
* Using a Flasher gang, or<br />
* Using multiple Flashers, each connecting to one CPU.<br />
<br />
Devices for gang programming are:<br />
* Flasher Hub-12 in conjunction with up to 12 Flasher (Compact). Please refer to [[UM08043_Flasher_Hub-12|Flasher Hub-12 user manual (UM08043_Flasher_Hub-12)]].<br />
* Flasher ATE; suitable for programming up to 10 targets in parallel. Please refer to [https://www.segger.com/downloads/flasher/UM08035 Flasher ATE user manual (UM08035_FlasherATE.pdf)].<br />
When using multiple flashers, this can be done with the J-Flash production programming software.<br />
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''<br />
<br />
=== Logfiles and Quality Management ===<br />
<br />
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:<br />
<source lang="c"><br />
SN: 1 - Failed<br />
SN: 1 - Failed<br />
SN: 2 - O.K. (931 ms)<br />
SN: 3 - O.K. (931 ms)<br />
SN: 4 - O.K. (933 ms)<br />
SN: 5 - O.K. (932 ms)<br />
</source><br />
If applicable, the logfile contains more detailed error messages. For example:<br />
<source lang="c"><br />
ERROR: Programming failed @ address 0x00000000 (1)<br />
ERROR: Cannot connect to CPU. Target interface speed too high?<br />
</source><br />
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:<br />
<source lang="c"><br />
Verify error config word area @<br />
config word<br />
config word read back<br />
Verify error flash area @<br />
data from file<br />
data read back<br />
</source><br />
{{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.}}<br />
<br />
== TCP Services ==<br />
This chapter describes the integrated TCP services.<br />
<br />
=== FTP Server ===<br />
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><br />
[[File:FTPServer.png]]<br />
<br />
==== Access data ====<br />
Anonymous access to the FTP server is limited to read-only access to the file system.<br><br />
For write access, special login credentials have to be used:<br><br />
<tt>Login: admin</tt><br><br />
<tt>Password: 1234</tt><br><br />
<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.<br />
It is not meant as a security feature.}}<br />
<br />
=== Web server ===<br />
<br />
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.<br />
For the network, the IP address settings can be changed and a nick name can be assigned to the device.<br><br />
<br />
Additionally, the web interface provides information about the status of the integrated operating system, the IP stack and the target hardware.<br />
<br />
== Remote control ==<br />
This chapter describes how to control the Flasher in standalone mode.<br />
<br />
=== Overview ===<br />
There are 3 ways to control Flasher operation:<br><br />
{| class="seggertable"<br />
! Type of control !! Description<br />
|-<br />
| Button || Programming operation starts when pressing the PROG-button. The LEDs serve as visible indicators.<br />
|-<br />
| Handshake || 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.<br />
|-<br />
| Terminal || Terminal communication via TELNET, RS232 or VCOM with the [[#ASCII command interface]]<br />
|}<br />
<br />
<br />
{{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.}}<br />
<br />
=== Handshake control ===<br />
<br />
Some Flasher models are equipped with additional hardware control functions that are connected to the SUBD9 male connector, normally used as an RS232 interface to the PC.<br />
These Flasher models can therefore be controlled remotely by automated testers without the need for a connection to a PC.<br />
<br />
The handshake control is available for the following Flashers:<br />
* Flasher ARM<br />
* Flasher PRO<br />
* Flasher Compact (via Flasher Hub and Flasher Hub-12 only)<br />
<br />
The following diagrams show the internal remote control circuitry of Flasher:<br><br />
<br />
[[File:FlasherRemotecontrol.png]]<br />
{| class="seggertable"<br />
|-<br />
! Pin No. !! Function !! Description<br />
|-<br />
| 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.<br />
|-<br />
| 4 || BUSY || As soon as the "Auto" function is started, BUSY becomes active, which means that transistor is switched OFF.<br />
|-<br />
| 5 || GND || Common Signal ground.<br />
|-<br />
| 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.<br />
|-<br />
|}<br />
[[File:FlasherRemoteSignal.png]]<br />
<br />
=== ASCII command interface ===<br />
<br />
==== Introduction ====<br />
<br />
Once set up using J-Flash, the Flasher can be driven by any application or just a simple terminal using ASCII commands.<br><br />
<br />
Every known command is acknowledged by the Flasher and then executed. After command execution, Flasher sends an ASCII reply message.<br><br />
<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}}<br />
<br />
==== General command and reply message format ====<br />
<br />
* Any ASCII command has to start with the start delimiter ''#''.<br />
* Any ASCII command has to end with simple carriage return ('\r', ASCII code 13).<br />
* Commands can be sent upper or lower case<br />
<br />
==== General usage ====<br />
<br />
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.<br />
<br />
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).<br />
<br />
==== Settings for ASCII interface via RS232 ====<br />
<br />
Flasher is driven via a RS232 serial port with the following interface settings:<br><br />
<br />
* 9600 baud<br />
* 8 data bits<br />
* no parity<br />
* 1 stop bit<br />
<br />
The baud rate can be changed by using the <tt>#BAUDRATE</tt> command.<br />
<br />
==== Settings for ASCII interface via Telnet ====<br />
<br />
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><br />
<br />
[[File:telnet_connection.gif]]<br />
<br />
==== Settings for ASCII interface via VCOM ====<br />
<br />
The same settings can be used for VCOM as for [[#Settings for ASCII interface via RS232|RS232]].<br />
<br />
{{Note|The performance also depends on the terminal application used on the PC.}}<br />
<br />
==== Commands and replies ====<br />
<br />
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><br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| Commands to the Flasher<br />
|-<br />
| <tt>#BAUDRATE <Baudrate></tt><br />
|-<br />
| <tt>#AUTO</tt><br />
|-<br />
| <tt>#AUTO PATCH</tt><br />
|-<br />
| <tt>#AUTO NOINFO</tt><br />
|-<br />
| <tt>#CANCEL</tt><br />
|-<br />
| <tt>#ERASE</tt><br />
|-<br />
| <tt>#PROGRAM</tt><br />
|-<br />
| <tt>#RESULT</tt><br />
|-<br />
| <tt>#SELECT <Filename></tt><br />
|-<br />
| <tt>#START</tt><br />
|-<br />
| <tt>#STATUS</tt><br />
|-<br />
| <tt>#VERIFY</tt><br />
|-<br />
| <tt>#READ</tt><br />
|-<br />
| <tt>#QUIT</tt><br />
|-<br />
| <tt>#VERBOSE <Level></tt><br />
|-<br />
!colspan="100%"| File I/O commands<br />
|-<br />
| <tt>#FCLOSE</tt><br />
|-<br />
| <tt>#FCRC</tt><br />
|-<br />
| <tt>#FDELETE <Filename></tt><br />
|-<br />
| <tt>#FFORMAT</tt><br />
|-<br />
| <tt>#FOPEN <Filename></tt><br />
|-<br />
| <tt>#FREAD <Offset>,<NumBytes></tt><br />
|-<br />
| <tt>#FSIZE</tt><br />
|-<br />
| <tt>#FWRITE <Offset>,<NumBytes>:<nowiki><Data></nowiki></tt><br />
|-<br />
| <tt>#FLIST</tt><br />
|-<br />
| <tt>#MKDIR <Dirname></tt><br />
|-<br />
!colspan="100%"| SecureArea commands<br />
|-<br />
| <tt>#HASSECUREAREA</tt><br />
|-<br />
| <tt>#SECUREAREA <action></tt><br />
|-<br />
!colspan="100%"| Replies from the Flasher<br />
|-<br />
| <tt>#ACK</tt><br />
|-<br />
| <tt>#NACK</tt><br />
|-<br />
| <tt>#OK</tt><br />
|-<br />
| <tt>#OK:<NumBytes>:<nowiki><Data></nowiki></tt><br />
|-<br />
| <tt>#OK:<Size></tt><br />
|-<br />
| <tt>#STATUS:</tt><br />
|-<br />
| <tt>#DONE</tt><br />
|-<br />
| <tt>#ERRxxx</tt><br />
|-<br />
|}<br />
<br />
===== Commands to the Flasher =====<br />
<br />
'''#AUTO'''<br><br />
The <tt>#AUTO</tt> command behaves exactly as the start button or external remote control input.<br><br />
<br />
Usually, the following command sequence will be performed when receiving the <tt>#AUTO</tt> command:<br><br />
<br />
* The Flasher erases the target CPU (if not blank)<br />
* The Flasher programs the target CPU<br />
* The Flasher verifies the target CPU<br />
<br />
Depending on the settings chosen in the '''Production''' tab in J-Flash, this sequence can differ from the one shown above.<br><br />
<br />
Finally, Flasher responds with<br><br />
<br />
* <tt>#OK</tt> if no error occurred<br />
* <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.<br />
<br />
During execution of the <tt>#AUTO</tt> command, Flasher automatically sends "status" messages via RS232 to reflect the state of execution.<br />
Typically during execution of <tt>#AUTO</tt> command, Flasher will reply the following sequence of messages:<br><br />
<br />
<tt>#ACK</tt><br><br />
<tt>#STATUS:INITIALIZING</tt><br><br />
<tt>#STATUS:CONNECTING</tt><br><br />
<tt>#STATUS:UNLOCKING</tt><br><br />
<tt>#STATUS:ERASING</tt><br><br />
<tt>#STATUS:PROGRAMMING</tt><br><br />
<tt>#STATUS:VERIFYING</tt><br><br />
<tt>#OK (Total 13.993s, Erase 0.483s, Prog 9.183s, Verify 2.514s)</tt><br><br />
<br />
'''#AUTO PATCH'''<br><br />
The <tt>#AUTO</tt> PATCH command allows patching of the content of the data to be programmed.<br><br />
<br />
Flasher responds with<br><br />
<br />
* <tt>#OK</tt> if no error occurred<br />
* <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.<br />
<br />
For further information about the usage of the <tt>#AUTO PATCH</tt> command please refer to [[#Patch file support | Patch file support]].<br />
<br />
'''#AUTO NOINFO'''<br><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><br />
<br />
The command ends with <tt>#OK</tt> or <tt>#ERRxxx</tt><br />
<br />
'''#BAUDRATE <Baudrate>'''<br><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><br />
<br />
If this command succeeds, Flasher responds with:<br><br />
<br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<br />
Otherwise it will respond with one of the following error messages:<br><br />
<br />
<tt>#ERR255: Invalid parameters</tt><br><br />
<tt>or</tt><br><br />
<tt>#ERR255: Baudrate is not supported</tt><br><br />
<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.<br />
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.}}<br />
<br />
'''#CANCEL'''<br><br />
This command can be sent to abort a running program. It may take a while until the current program is actually canceled.<br><br />
<br />
Flasher will respond with:<br><br />
<br />
<tt>#ERR007:CANCELED.</tt><br><br />
<br />
'''#ERASE'''<br><br />
This command can be sent to erase all selected target flash sectors.<br><br />
<br />
Flasher will reply the following sequence of messages:<br><br />
<br />
<tt>#ACK</tt><br><br />
<tt>#STATUS:INITIALIZING</tt><br><br />
<tt>#STATUS:CONNECTING</tt><br><br />
<tt>#STATUS:UNLOCKING</tt><br><br />
<tt>#STATUS:ERASING</tt><br><br />
<tt>#OK (Total 0.893s, Erase 0.483s)</tt><br><br />
<br />
'''#PROGRAM'''<br><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.<br />
<br />
'''#RESULT'''<br><br />
This command can be sent any time, even during other command execution. Flasher responds with the last result of the previously executed command.<br />
<br />
'''#SELECT <Filename>'''<br><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.<br />
<tt><Filename></tt> specifies the name of file pair without extensions (.CFG and .DAT) on the Flasher which should be selected. If you are<br />
using the universal flash programming mode, <tt><Filename></tt> specifies the full name of the .UNI file '''including''' the extension.<br />
Flasher saves the selected config and data file in the FLASHER.INI file. So this selection is remembered even between power-cycling Flasher.<br><br />
<br />
This may be verfy helpful in cases where several config and data files are stored on Flasher.<br />
The user can easily switch between these config and data files without connecting Flasher to a host.<br><br />
<br />
If this command succeeds, Flasher responds with:<br><br />
<br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<br />
Find below a sample sequence which shows how to use the <tt>#SELECT</tt> command:<br><br />
<br />
<tt>#SELECT ATSAM7_1 // ATSAM7_1.CFG and ATSAM7_1.DAT is selected</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<tt>#AUTO // Start auto programming</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#STATUS:INITIALIZING</tt><br><br />
<tt>#STATUS:CONNECTING</tt><br><br />
<tt>#STATUS:UNLOCKING</tt><br><br />
<tt>#STATUS:ERASING</tt><br><br />
<tt>#STATUS:PROGRAMMING</tt><br><br />
<tt>#STATUS:VERIFYING</tt><br><br />
<tt>#OK (Total 8.416s, Erase 0.005s, Prog 6.845s, Verify 0.959s)</tt><br><br />
<tt>#SELECT ATSAM7_2 // ATSAM7_2.CFG and ATSAM7_2.DAT is selected</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<tt>#AUTO // Start auto programming</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#STATUS:INITIALIZING</tt><br><br />
<tt>#STATUS:CONNECTING</tt><br><br />
<tt>#STATUS:UNLOCKING</tt><br><br />
<tt>#STATUS:ERASING</tt><br><br />
<tt>#STATUS:PROGRAMMING</tt><br><br />
<tt>#STATUS:VERIFYING</tt><br><br />
<tt>#OK (Total 8.632s, Erase 0.005s, Prog 7.051s, Verify 0.969s)</tt><br><br />
<br />
'''#START'''<br><br />
This command can be sent to start the application using the method configured in the J-Flash project.<br><br />
For U-Flash projects, however, the target application is not necessarily started. <br><br />
There is often a "start application" checkbox in the U-Flash settings which have to be set for this.<br />
<br />
Flasher will reply with the following sequence of messages:<br><br />
<br />
<tt>#ACK</tt><br><br />
<tt>#STATUS:INITIALIZING</tt><br><br />
<tt>#STATUS:CONNECTING</tt><br><br />
<tt>#OK (Total 1.148s)</tt><br><br />
<br />
'''#STATUS'''<br><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]].<br />
<br />
'''#VERIFY'''<br><br />
This command can used to verify the target flash content against the data stored in Flasher.<br />
<br />
'''#READ'''<br><br />
Only available for devices supported by U-Flash.<br><br />
This command can used to read out flash data.<br><br />
More information: [https://wiki.segger.com/Flasher/How_to_read_data_from_a_device_using_U-Flash How to read data using U-Flash]<br />
<br />
'''#QUIT'''<br><br />
This command can be used to terminate the active telnet connection from the server side (Flasher).<br />
The command provides an easy way to terminate the session from an automated script.<br />
It is not necessary to parse stdout and switch to local command mode to disconnect.<br />
Not implemented in the Flasher ATE or Flasher Hub.<br />
<br />
'''#VERBOSE <Level>'''<br><br />
This command can be used to change the verbosity level. <br><br />
* Verbosity level 0: Default. <br><br />
* Verbosity level 1: Provides some additional messages during the programming process.<br />
<br />
===== File I/O commands =====<br />
<br />
The ASCII interface of the Flasher also supports file I/O operations.<br />
<br />
The following file I/O commands are supported:<br><br />
<br />
'''#FCLOSE'''<br><br />
The <tt>#FCLOSE</tt> command closes the file on Flasher which was opened via <tt>#FOPEN</tt>.<br />
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><br />
<br />
A typical sequence when using the <tt>#FCLOSE</tt> command does look like as follows:<br><br />
<br />
<tt>#FCLOSE</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<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><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:No file opened</tt><br />
}}<br />
<br />
'''#FCRC'''<br><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>.<br />
The CRC will be also reported by J-Flash when downloading or saving files via J-Flash.<br><br />
<br />
A typical sequence when using the <tt>#FCRC</tt> command does look like as follows:<br><br />
<br />
<tt>#FCRC flasher.dat</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK:0x75BC855A</tt><br><br />
<br />
'''#FDELETE <Filename>'''<br><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><br />
<br />
A typical sequence when using the <tt>#FDELETE</tt> command does look like as follows:<br><br />
<br />
<tt>#FDELETE flasher.dat</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<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><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:Failed to delete file</tt><br />
}}<br />
<br />
'''#FFORMAT'''<br><br />
The <tt>#FFORMAT</tt> command is used to delete all files located in the public area of the Flasher's internal memory.<br />
<br />
{{Note|1=Please note that this command deletes all projects located in the public area. Deleted projects cannot be restored again.<br><br />
This command does not delete the Flasher firmware, neither does it delete files in the secure area.<br />
}}<br />
<br />
A typical sequence using the <tt>#FFORMAT</tt> command does look like as follows:<br><br />
<br />
<tt>#FFORMAT</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#DONE</tt><br><br />
<br />
'''#FOPEN <Filename>'''<br><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.<br />
If <tt><Filename></tt> can not be found on Flasher a new one will be created.<br><br />
<br />
A typical sequence using the <tt>#FOPEN</tt> command does look like as follows:<br><br />
<br />
<tt>#FOPEN flasher.dat</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<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><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:A file has already been opened</tt><br />
}}<br />
<br />
'''#FREAD <Offset>,<NumBytes>'''<br><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.<br />
<tt><NumBytes></tt> specifies the number of bytes which should be read.<br><br />
<br />
A typical sequence when using the <tt>#FREAD</tt> command does look like as follows:<br><br />
<br />
<tt>#FREAD 0,4</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK:04:466c6173</tt><br><br />
<br />
If the <tt>#FREAD</tt> command succeeds, Flasher will finally respond with a <tt>#OK:<NumBytes>:<nowiki><Data></nowiki></tt> reply message.<br />
For more information about the Flasher reply messages, please refer to [[#Replies from Flasher | Replies from Flasher]].<br><br />
<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><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:No file opened</tt>}}<br />
<br />
'''#FSIZE'''<br><br />
The <tt>#FSIZE</tt> command is used to get the size of the currently opened file on Flasher.<br><br />
<br />
A typical sequence when using the <tt>#FSIZE</tt> command does look like as follows:<br><br />
<br />
<tt>#FSIZE</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK:10 // file on flasher which is currently open, has a size of 16 bytes</tt><br><br />
<br />
If the <tt>#FSIZE</tt> command succeeds, Flasher will respond with a <tt>#OK:<Size></tt> reply message.<br />
For more information about the Flasher reply messages, please refer to [[#Replies from Flasher | Replies from Flasher]].<br><br />
<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><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:No file opened</tt>}}<br />
<br />
'''#FWRITE <Offset>,<NumBytes>:<nowiki><Data></nowiki>'''<br><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.<br />
<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.<br />
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><br />
<br />
<tt><Offset></tt> and <tt><NumBytes></tt> are expected in hexadecimal format.<br><br />
<br />
<tt>#FWRITE 0,200:<nowiki><Data></nowiki></tt><br><br />
<tt>#FWRITE 200,200:<nowiki><Data></nowiki></tt><br><br />
<br />
The data is expected in hexadecimal format (two hexadecimal characters per byte). The following example illustrates the use of <tt>#FWRITE</tt>:<br />
<br />
<tt>Data to be send: Hello !</tt><br><br />
<tt>ASCII values: 0x48, 0x65, 0x6C, 0x6C, 0x6F, 0x20, 0x21</tt><br><br />
<br />
<tt>#FWRITE 0,7:48656C6C6F2021</tt><br><br />
<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><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:No file opened</tt><br>}}<br />
<br />
'''#FLIST'''<br><br />
The <tt>#LIST</tt> command is used to list all files stored on the Flasher.<br><br />
<br />
A typical sequence using the <tt>#FLIST</tt> command does look like as follows:<br><br />
<br />
<tt>#FLIST</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>FLASHER.INI Size: 60</tt><br><br />
<tt>SERIAL.TXT Size: 3</tt><br><br />
<tt>FLASHER.LOG Size: 207</tt><br><br />
<tt>FOLDER (DIR)</tt><br><br />
<tt>FOLDER\\TEST1.CFG Size: 2048</tt><br><br />
<tt>FOLDER\\TEST1.DAT Size: 12288</tt><br><br />
<tt>#OK</tt><br><br />
<br />
'''#MKDIR <Dirname>'''<br><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><br />
<br />
A typical sequence using the <tt>#MKDIR</tt> command does look like as follows:<br><br />
<br />
<tt>#MKDIR folder</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<br />
{{Note|1=If the directory can not be created because of a bad <tt><Dirname></tt> argument, Flasher will respond with:<br><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:Failed to create directory</tt><br>}}<br />
<br />
===== Secure Area Commands =====<br />
<br />
'''#HASSECUREAREA'''<br><br />
The <tt>#HASSECUREAREA</tt> command checks if the Flasher is configured with a secure area.<br />
<br />
<tt>#RESULT:YES</tt> indicates the secure area is present, <tt>#RESULT:NO</tt> indicates no secure area is present.<br />
<br />
'''#SECUREAREA'''<br><br />
The <tt>#SECUREAREA <action></tt> command allows to create or remove the secure area on the Flasher.<br />
<br />
* the action <tt>CREATE</tt> creates the secure area.<br />
* the action <tt>REMOVE</tt> will remove the secure area.<br />
<br />
A typical sequence using the <tt>#SECUREAREA</tt> command does look like as follows:<br><br />
<br />
<tt>#SECUREAREA CREATE</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#DONE</tt><br><br />
<br />
{{Note|1=When creating or removing the <tt>secure area</tt>, all configuration and data files being stored on the Flasher, are lost.<br />
Please make sure that they are not needed anymore, before adding / removing the security area.}}<br />
<br />
<br />
<br />
===== Replies from Flasher =====<br />
<br />
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.<br />
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.<br />
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><br />
<br />
<tt>#OK (Total 13.993s, Erase 0.483s, Prog 9.183s, Verify 2.514s)</tt><br><br />
<br />
The following reply messages from Flasher are defined:<br><br />
<br />
'''#ACK'''<br><br />
Flasher replies with <tt>#ACK</tt> message on reception of any defined command before the command itself is executed.<br />
<br />
'''#NACK'''<br><br />
Flasher replies with <tt>#NACK</tt>, if an undefined command was received.<br />
<br />
'''#OK'''<br><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.<br />
<br />
'''#OK:<NumBytes>:<nowiki><Data></nowiki>'''<br><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.<br />
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).<br />
<br />
'''#OK:<Size>'''<br><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.<br />
<br />
'''#STATUS:'''<br><br />
The Flasher replies with its current state.<br><br />
<br />
The following status messages are currently defined:<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Message !! Description<br />
|-<br />
| <tt>#STATUS:READY</tt> || Flasher is ready to receive a new command.<br />
|-<br />
| <tt>#STATUS:CONNECTING</tt> || Flasher initializes connection to target CPU.<br />
|-<br />
| <tt>#STATUS:INITIALIZING</tt> || Flasher performs self check and internal init.<br />
|-<br />
| <tt>#STATUS:UNLOCKING</tt> || Unlocking flash sectors.<br />
|-<br />
| <tt>#STATUS:ERASING</tt> || Flasher is erasing the flash of the target device.<br />
|-<br />
| <tt>#STATUS:PROGRAMMING</tt> || Flasher is programming the flash of the target device.<br />
|-<br />
| <tt>#STATUS:VERIFYING</tt> || Flasher verifies the programmed flash contents.<br />
|-<br />
|}<br />
<br />
'''#ERRxxx'''<br><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><br />
<br />
Some error codes may be followed by colon and an additional error text.<br><br />
<br />
For example:<br><br />
<br />
<tt>#ERR007:CANCELED.</tt><br><br />
<br />
The error code numbers are described in the following table:<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Message !! Description<br />
|-<br />
| <tt>#ERR007</tt> || Flasher received <tt>#CANCEL</tt> command and has canceled the current operation.<br />
|-<br />
| <tt>#ERR008</tt> || Flasher is already busy with execution of previous command.<br />
|-<br />
| <tt>#ERR009</tt> || Failed to allocate memory.<br />
|-<br />
| <tt>#ERR010</tt> || Failed to open file.<br />
|-<br />
| <tt>#ERR011</tt> || Failed to read file.<br />
|-<br />
| <tt>#ERR012</tt> || Failed to write file.<br />
|-<br />
| <tt>#ERR013</tt> || Failed to delete file.<br />
|-<br />
| <tt>#ERR255</tt> || Undefined error occurred. This reply is followed by an error string.<br />
|-<br />
|}<br />
<br />
== Performance ==<br />
<br />
The following chapter lists programming performance of common flash devices andmicrocontrollers.<br />
<br />
=== Performance of MCUs with internal flash memory ===<br />
<br />
==== Flasher ARM ====<br />
<br />
The following table lists program and erase performance values of Flasher ARM for different controllers.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Microcontroller !! Size [kByte] !! Erase time [sec] !! Program time [sec] !! Verify time [sec] !! Total time [sec]<br />
|-<br />
| Analog Devices || 62 || 2.943 || 2.286 || 0.563 || 5.792<br />
|-<br />
| Atmel AT91SAM7S64 || 64 || --- || 3.488 || 0.438 || 3.926<br />
|-<br />
| Atmel AT91SAM7S256 || 256 || --- || 7.709 || 1.053 || 8.762<br />
|-<br />
| NXP LPC1768 || 512 || 3.740 || 8.559 || 5.092 || 17.391<br />
|-<br />
| NXP LPC2106 || 120 || 0.448 || 1.204 || 0.634 || 2.286<br />
|-<br />
| NXP LPC2129 || 248 || 0.449 || 2.916 || 1.347 || 4.712<br />
|-<br />
| NXP LPC2138 || 500 || 0.448 || 5.488 || 2.649 || 8.585<br />
|-<br />
| NXP LPC2148 || 500 || 0.448 || 5.632 || 2.721 || 8.801<br />
|-<br />
| NXP LPC2294 || 2048 || 0.808 || 15.976 || 9.669 || 26.453<br />
|-<br />
| NXP LPC2478 || 504 || 0.448 || 5.419 || 2.559 || 8.426<br />
|-<br />
| ST STM32F103ZE || 512 || 0.028 || 18.763 || 3.939 || 22.730<br />
|-<br />
| ST STR711 || 272 || 0.429 || 5.476 || 4.742 || 10.647<br />
|-<br />
| ST STR912 || 544 || 1.167 || 12.907 || 5.236 || 19.310<br />
|-<br />
| TI TMS470R1B1M || 1024 || 2.289 || 8.147 || 5.362 || 15.798<br />
|-<br />
|}<br />
<br />
==== Flasher PRO ====<br />
See Flasher ARM.<br />
<br />
==== Flasher Compact ====<br />
See Flasher ARM.<br />
<br />
==== Flasher RX ====<br />
<br />
The following table lists program and erase performance values of Flasher RX.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Microcontroller !! Size [kByte] !! Erase time [sec] !! Program time [sec] !! Verify time [sec] !! Total time [sec]<br />
|-<br />
| R5F56108 || 2.048 || 9.523 || 11.915 || 3.890 || 25.585<br />
|-<br />
|}<br />
<br />
==== Flasher PPC ====<br />
<br />
The following table lists program and erase performance values of Flasher PPC.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Microcontroller !! Size [kByte] !! Erase time [sec] !! Program time [sec] !! Verify time [sec] !! Total time [sec]<br />
|-<br />
| ST SPC560B50 || 576 || 4.747 || 4.159 || 1.929 || 10.917<br />
|-<br />
|}<br />
<br />
== Hardware ==<br />
<br />
This chapter gives an overview about Flasher specific hardware details,<br />
such as the pinouts and available adapters.<br />
<br />
=== Flasher ARM 20-pin JTAG/SWD Connector ===<br />
<br />
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.<br />
<br />
==== Pinout JTAG ====<br />
<br />
[[File:jtag_port_20pin.jpg]] <!-- LG xxxxxx image has been cropped to fit page --><br />
<br />
The following table lists the Flasher JTAG pinout.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! PIN !! SIGNAL !! TYPE !! Description<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 13 || TDO || Input || JTAG data output from target CPU. Typically connected to TDO of target CPU.<br />
|-<br />
| 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".<br />
|-<br />
| 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.<br />
|-<br />
| 19 || 5V-Target supply || Output || This pin can be used to supply power to the target board. Please note the specifications. [[#Target power supply]]<br />
|-<br />
|}<br />
<br />
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.<br />
<br />
==== Pinout SWD ====<br />
<br />
The 20-pin connector of Flasher is also compatible to ARM's Serial Wire Debug (SWD) interface.<br><br />
<br />
[[File:SWD_Port.jpg]] <!-- LG xxxxxx image has been cropped to fit page --><br />
<br />
The following table lists the J-Link / J-Trace SWD pinout.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! PIN !! SIGNAL !! TYPE !! Description<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 7 || SWDIO || I/O || Single bi-directional data pin.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 13 || SWO || Output || Serial Wire Output trace port. (Optional, not required for SWD communication.)<br />
|-<br />
| 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".<br />
|-<br />
| 17 || Not used || NC || This pin is not connected in J-Link.<br />
|-<br />
| 19 || 5V-Target supply || Output || This pin can be used to supply power to the target board. Please note the specifications. [[#Target power supply]]<br />
|-<br />
|}<br />
<br />
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.<br />
<br />
==== Target power supply ====<br />
<br />
Pin 19 of the connector can be used to supply power to the target hardware. Supply voltage is 5V, max. current is 400mA.<br />
The output current is monitored and protected against overload and short-circuit.<br><br />
<br />
Power can be controlled via the J-Link commander. The following commands are available to control power:<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Command !! Explanation<br />
|-<br />
| <tt>power on</tt> || Switch target power on<br />
|-<br />
| <tt>power off</tt> || Switch target power off<br />
|-<br />
| <tt>power on perm</tt> || Set target power supply default to "on"<br />
|-<br />
| <tt>power off perm</tt> || Set target power supply default to "off"<br />
|-<br />
|}<br />
<br />
=== Flasher RX 14-pin connector ===<br />
<br />
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.<br />
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.<br />
<br />
[[File:jtag_port_14pin.wmf]]<br />
<br />
The following table lists the Flasher RX 14-pin JTAG pinout.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Pin !! Signal !! Type !! Description<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 5 || TDO || Input || JTAG data output from target CPU. Typically connected to TDO on target CPU.<br />
|-<br />
| 6 || --- || NC || This pin is not connected to Flasher RX.<br />
|-<br />
| 7 || --- || NC || This pin is not connected to Flasher RX.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 10 || --- || NC || This pin is not connected to Flasher RX.<br />
|-<br />
| 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.<br />
|-<br />
| 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".<br />
|-<br />
|}<br />
<br />
* All pins marked NC are not connected to Flasher RX. Any signal can be applied here; Flasher RX will simply ignore such a signal.<br />
* Pins 2, 12, 14 are GND pins connected to GND in Flasher RX. They should also be connected to GND in the target system.<br />
<br />
==== Target power supply ====<br />
<br />
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.<br />
Power can be controlled via the J-Link commander. The following commands are available to control power:<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Command !! Explanation<br />
|-<br />
| <tt>power on</tt> || Switch target power on<br />
|-<br />
| <tt>power off</tt> || Switch target power off<br />
|-<br />
| <tt>power on perm</tt> || Set target power supply default to "on"<br />
|-<br />
| <tt>power off perm</tt> || Set target power supply default to "off"<br />
|-<br />
|}<br />
<br />
=== Flasher PPC 14-pin connector ===<br />
<br />
Flasher PPC itself has a 20-pin JTAG connector mounted but comes with a 14-pin adapter for PowerPC devices.<br><br />
<br />
[[File:JTAG_PPC_14pin_adapter.wmf]]<br />
<br />
The following table lists the Flasher PPC 14-pin JTAG pinout.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Pin !! Signal !! Type !! Description<br />
|-<br />
| 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.<br />
|-<br />
| 3 || TDO || Input || JTAG data output from target CPU. Typically connected to TDO on target CPU.<br />
|-<br />
| 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.<br />
|-<br />
| 7 || --- || NC || This pin is not connected to Flasher PPC.<br />
|-<br />
| 8 || --- || NC || This pin is not connected to Flasher PPC.<br />
|-<br />
| 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".<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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).<br />
|-<br />
|}<br />
<br />
* All pins marked NC are not connected to Flasher PPC. Any signal can be applied here; Flasher PPC will simply ignore such a signal.<br />
* 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.<br />
<br />
=== Target board design ===<br />
<br />
We strongly advise following the recommendations given by the chip manufacturer. These recommendations are normally in line with the recommendations.<br />
Please refer to the the appropriate tables depending on the core:<br><br />
<br />
* [[#Pinout JTAG | Pinout JTAG]]<br />
* [[#Pinout SWD | Pinout SWD]]<br />
* [[#Flasher RX 14-pin connector | Flasher RX 14-pin connector]]<br />
* [[#Flasher PPC 14-pin connector | Flasher PPC 14-pin connector]]<br />
<br />
In case of doubt you should follow the recommendations given by the semiconductor manufacturer.<br />
<br />
==== Pull-up/pull-down resistors ====<br />
<br />
Unless otherwise specified by developer's manual, pull-ups/pull-downs are recommended to be between 2.2 kOhms and 47 kOhms.<br />
<br />
==== RESET, nTRST ====<br />
<br />
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><br />
<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.<br />
(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.<br />
<br />
=== Adapters ===<br />
<br />
==== JTAG Isolator ====<br />
<br />
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.<br />
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><br />
<br />
[[File:JTAG_Isolator_Port.wmf]]<br />
<br />
===== Pinout =====<br />
<br />
The following table shows the target-side pinout of the J-Link JTAG Isolator.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Pin !! Signal !! Type !! Description<br />
|-<br />
| 1 || VCC || Output || The target side of the isolator draws power over this pin.<br />
|-<br />
| 2 || VCC || Output || The target side of the isolator draws power over this pin.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 13 || TDO || Input || JTAG data output from target CPU. Typically connected to TDO of target CPU.<br />
|-<br />
| 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".<br />
|-<br />
| 17 || N/C || N/C || This pin is not connected on the target side of the isolator.<br />
|-<br />
| 19 || N/C || N/C || This pin is not connected on the target side of the isolator.<br />
|-<br />
|}<br />
<br />
Pins 4, 6, 8, 10, 12, 14, 16, 18, 20 are connected to GND.<br />
<br />
===== Safety =====<br />
This isolator provides '''basic isolation''' only. '''Do not use with hazardous voltages without further protection measures to avoid risk of electrical shock and fire.'''<br />
<br />
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.<br />
<br />
==== J-Link Needle Adapter ====<br />
<br />
To connect to the J-Link OB via programming interface the ''J-Link Needle Adapter'' is recommended.<br><br />
<br />
[[File:J-Link_Needle_Adapter_500x.jpg]]<br />
<br />
Why to choose the J-Link Needle Adapter:<br><br />
<ol><br />
<li>No additional connector required on your PCB</li><br />
<li>Very small footprint</li><br />
<li>High reliability spring pins for secure connections</li><br />
<li>Designed with 3 locating pins, so the adapter can not be connected the wrong way</li><br />
<li>No external power supply required! The J-Link Needle Adapter comes with the option to power the target hardware via J-Link.</li><br />
</ol><br />
These features make the J-Link Needle Adapter the perfect solution for production purposes.<br><br />
<br />
The pinout of the J-Link Needle Adapter is based on the pinout of the needle adapter by Tag-Connect.<br />
Please note, that both pinouts are not identical since the J-Link Needle Adapter comes with a 5V-supply pin.<br><br />
<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><br />
<br />
Moreover, the two "legs" on each side of the connector guarantee a stable and secure contact between pins and the PCB.<br><br />
<br />
[[File:J-Link_Needle_Adapter_Connector_pins_360x.jpg]]<br />
[[File:J-Link_Needle_Adapter_Pinout.jpg]]<br />
<br />
The J-Link Needle Adapter can be connected to J-Link via the ''20-pin 0.1'' JTAG to a 10-pin needle connector''.<br />
<br />
=== Target interface pin states in idle ===<br />
After completing a target operation (e.g. production programming via #AUTO), Flasher V5 tri-states all target interface pins with the following exceptions:<br />
* [[#Flasher ARM 20-pin JTAG/SWD Connector|Reset pin (Pin 15)]] By default, the reset pin remains unchanged. If the "Start application" option is enabled, the reset pin is set to high output.<br />
* [[#Flasher ARM 20-pin JTAG/SWD Connector|5V-Supply (Pin 19)]] The state of this pin in idle depends on the configuration of the [[#Target power supply | Target power supply]].<br />
<br />
{{Note|1=Due to limitations of the Flasher hardware, the interface pins cannot be put into an high-impedance state (tri-state). Instead, the pins are configured as input. This allows the target to drive the pin state with minimal interference from the Flasher. It is still possible for minimal electrical currents to flow between Flasher and the target. <br>In case a complete electrical disconnection between Flasher and target is required, we recommend to make use of the [https://www.segger.com/products/production/flasher/accessories/adapters/relay-adapter/ SEGGER Relay Adapter].}}<br />
<br />
=== How to determine the hardware version ===<br />
<br />
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.<br />
Flasher has the hardware version printed on the back label.<br><br />
<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).<br />
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><br />
<br />
[[File:FlasherARM_version.gif]]<br />
<br />
== Support and FAQs ==<br />
<br />
This chapter contains troubleshooting tips together with solutions for common problems which might occur when using Flasher.<br />
There are several steps you can take before contacting support.<br />
Performing these steps can solve many problems and often eliminates the need for assistance.<br />
This chapter also contains a collection of frequently asked questions (FAQs) with answers.<br />
<br />
=== Contacting support ===<br />
<br />
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.<br />
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><br />
<br />
If you need to contact support, send the following information to<br><br />
''support@segger.com''<br><br />
<br />
* A detailed description of the problem<br />
* Flasher serial number<br />
* Information about your target hardware (processor, board, etc.).<br />
* <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]].<br />
<br />
Flasher is sold directly by SEGGER.<br />
<br />
=== Frequently Asked Questions ===<br />
<br />
'''Maximum JTAG speed'''<br />
{|<br />
|-<br />
| '''Q:''' || What is the maximum JTAG speed supported by Flasher?<br />
|-<br />
| '''A:''' || Flasher's maximum supported JTAG speed is 12MHz.<br />
|}<br />
<br />
'''Maximum download speed'''<br />
{|<br />
|-<br />
| '''Q:''' || What is the maximum download speed?<br><br />
|-<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.<br />
|}<br />
== Background information ==<br />
<br />
This chapter provides background information about flash programming in general. It<br />
also provides information about how to replace the firmware of Flasher manually.<br />
<br />
=== Flash programming ===<br />
<br />
Flasher comes with a DLL, which allows - amongst other functionalities - reading and writing RAM, CPU registers, starting and stopping the CPU, and setting breakpoints.<br />
<br />
==== How does flash programming via Flasher work? ====<br />
<br />
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.<br />
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.<br />
Different flash chips have different programming algorithms;the programming algorithm also depends on other things,<br />
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).<br />
The RAM code requires data to be programmed into the flash memory. The data is supplied by downloading it to RAM.<br />
<br />
==== Data download to RAM ====<br />
<br />
The data (or part of it) is downloaded to another part of the RAM of the target system.<br />
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.<br />
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.<br />
This process may have to be repeated until the entire data is programmed into the flash.<br />
<br />
==== Available options for flash programming ====<br />
<br />
In general, there are two possibilities in order to use Flasher for flash programming:<br><br />
<br />
* Using Flasher stand-alone to program the target flash memory (stand-alone mode)<br />
* Using Flasher in combination with J-Flash to program the target flash memory (Flasher in "PC-based mode")<br />
<br />
===== Using Flasher in stand-alone mode =====<br />
<br />
In order to use the Flasher in stand-alone mode, it has to be configured first.<br />
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]].<br />
<br />
===== J-Flash - Complete flash programming solution =====<br />
<br />
J-Flash is a stand-alone Windows application, which can read / write data files and program the flash in almost any ARM system.<br />
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''.<br />
<br />
==== How does the universal flash programming work? ====<br />
<br />
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><br />
<br />
Universal flash programming is available only for stand-alone mode.<br />
== Glossary ==<br />
<br />
This chapter describes important terms used throughout this manual.<br />
<br />
'''Big-endian'''<br><br />
Memory organization where the least significant byte of a word is at a higher address than the most significant byte. See Little-endian.<br />
<br />
'''Cache cleaning'''<br><br />
The process of writing dirty data in a cache to main memory.<br />
<br />
'''Coprocessor'''<br><br />
An additional processor that is used for certain operations, for example, for floating-point math calculations, signal processing, or memory management.<br />
<br />
'''Dirty data'''<br><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.<br />
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.<br />
<br />
'''Halfword'''<br><br />
A 16-bit unit of information.<br />
<br />
'''Host'''<br><br />
A computer which provides data and other services to another computer. Especially, a computer providing debugging services to a target being debugged.<br />
<br />
'''ICache'''<br><br />
Instruction cache.<br />
<br />
'''ID'''<br><br />
Identifier.<br />
<br />
'''IEEE 1149.1'''<br><br />
The IEEE Standard which defines TAP. Commonly (but incorrectly) referred to as JTAG.<br />
<br />
'''Image'''<br><br />
An executable file that has been loaded onto a processor for execution.<br />
<br />
'''Instruction Register'''<br><br />
When referring to a TAP controller, a register that controls the operation of the TAP.<br />
<br />
'''IR'''<br><br />
See Instruction Register.<br />
<br />
'''Joint Test Action Group (JTAG)'''<br><br />
The name of the standards group which created the IEEE 1149.1 specification.<br />
<br />
'''Little-endian'''<br><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.<br />
<br />
'''Memory coherency'''<br><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.<br />
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.<br />
<br />
'''Memory management unit (MMU)'''<br><br />
Hardware that controls caches and access permissions to blocks of memory, and translates virtual to physical addresses.<br />
<br />
'''Memory Protection Unit (MPU)'''<br><br />
Hardware that controls access permissions to blocks of memory. Unlike an MMU, a MPU does not translate virtual addresses to physical addresses.<br />
<br />
'''RESET'''<br><br />
Abbreviation of System Reset. The electronic signal which causes the target system other than the TAP controller to be reset.<br />
This signal is also known as "nSRST" "nSYSRST", "nRST", or "nRESET" in some other manuals. See also nTRST.<br />
<br />
'''nTRST'''<br><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.<br />
<br />
'''Open collector'''<br><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.<br />
<br />
'''Processor Core'''<br><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.<br />
It excludes optional coprocessors, caches, and the memory management unit.<br />
<br />
'''Remapping'''<br><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.<br />
<br />
'''RTOS'''<br><br />
Real Time Operating System.<br />
<br />
'''TAP Controller'''<br><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.<br />
<br />
'''Target'''<br><br />
The actual processor (real silicon or simulated) on which the application program is running.<br />
<br />
'''TCK'''<br><br />
The electronic clock signal which times data on the TAP data lines TMS, TDI, and TDO.<br />
<br />
'''TDI'''<br><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.<br />
<br />
'''TDO'''<br><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.<br />
<br />
'''Test Access Port (TAP)'''<br><br />
The port used to access a device's TAP Controller. Comprises TCK, TMS, TDI, TDO, and nTRST (optional).<br />
<br />
'''Transistor-transistor logic (TTL)'''<br><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.<br />
<br />
'''Word'''<br><br />
A 32-bit unit of information. Contents are taken as being an unsigned integer unless otherwise stated.<br />
== Literature and references ==<br />
This chapter lists documents, which we think may be useful to gain a deeper understanding of technical details.</div>JanBhttps://wiki.segger.com/index.php?title=UM08022_Flasher&diff=17588UM08022 Flasher2024-02-01T09:21:31Z<p>JanB: /* Flasher Pin states when idling */</p>
<hr />
<div><!---<br />
General TBD:<br />
- LG: Right now - EVERYTHING<br />
===========================================<br />
--------------------[more specific, but on multiple locations]<br />
- check if all emphasis (bold, tt, blue, etc ) have made it into the new version<br />
- Add Information -> Additional information<br />
- use of the term free-of-charge utility/tool etc<br />
- check compliant to DocStandards_Rules.txt<br />
- Remove everything regarding to Kickstarter versions? eventually create a chapter Legacy -> Kickstarter version were available for hw version 5-x (200x-200x)...[..]<br />
- 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.<br />
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.<br />
- if week keep the IDE specific stuff in the manual, add Ozone, ES and J-Link Commander were no mentioned.<br />
- IDE specifics move into wiki confirmed by Alex<br />
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)<br />
- check all sections regarding licensing<br />
- Check compliance of J-Link emDocs with typographic conventions described in AboutThisDocument.emDoc. What should be altered? e.g. references<br />
- use uref at all (not blue)?<br />
- search and decide where to use \ref (ref with page number)<br />
- why is \ref (no single "option" \uref is more basic as \ref.....)<br />
- in text, use either \ref or \iref instead of \uref<br />
- in old manual, \H3 started on a new page (not per default, but set manually for api tables etc...)<br />
- move used old images and source files (visio etc) via svn (currently copied)<br />
--------------------[grammar / vocabulary discussion]<br />
- Product names<br />
-- Use of SEGGEPROBE in this document?<br />
- use license over licence<br />
- commandline or command-line?<br />
- toolchain or tool chain?<br />
- crossreference/cross-reference/cross reference?<br />
- overcurrent?<br />
- double words?<br />
- frontend?<br />
- Unit: Kbytes, KBytes, V, mV.... 9V or 9 V? Create rule in Vocabulary<br />
- baudrate or baud rate?<br />
- stackpointer or stack pointer<br />
- check where we should replace abbreviations with the long form (e.h. "milliseconds" instead of "ms")<br />
- config or configuration<br />
- filepointer or file pointer?<br />
--------------------[J-Link dep. specific]<br />
- J-Link command strings or J-Link Command strings or J-Link Command Strings<br />
- J-Link settings file or...<br />
- J-Link control panel or ......<br />
- J-Link script files or...<br />
---><br />
Flasher is a programming tool for microcontrollers with on-chip or external flash memory.<br />
Flasher is designed for programming flash targets with the J-Flash software or stand-alone.<br />
In addition to that Flasher can also be used as a regular J-Link. For more information about J-Link in general,<br />
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].<br />
<br />
<div class="toclimit-2"><br />
__TOC__<br />
</div><br />
<br />
== Flasher Software and Documentation Pack ==<br />
The Flasher Software and Documentation Pack, available for download on the [https://www.segger.com/downloads/flasher#FlasherSoftwareAndDocumentationPack SEGGER homepage], includes applications to be used with Flasher and in some cases with J-Link and J-Trace.<br><br />
It also comes with USB-drivers for J-Link, J-Trace and Flasher.<br />
<br />
=== Software overview ===<br />
{| class="wikitable"<br />
|-<br />
! Software !! Description<br />
|-<br />
| [[J-Link Configurator|Flasher Configurator]] || GUI-based configuration tool for Flasher. Allows configuration of USB identification as well as TCP/IP identification of Flashers.<br />
|-<br />
| [[FlasherControl|Flasher Control]] || Command-line tool to connect to the Flasher's command-line interface via USB.<br />
|-<br />
| [[J-Flash]] || Flash programming application.<br />
|-<br />
| [[J-Flash SPI]] || (Q)SPI flash programming application.<br />
|-<br />
| [[J-Link Commander]] || Command-line tool with basic functionality for target analysis.<br />
|-<br />
| [[J-Link Registration]] || SEGGER J-Link Registration utility to register your SEGGER product such as a J-Link, J-Trace or Flasher.<br />
|-<br />
| [[JTAGLoad]] || Command line tool that opens an svf file and sends the data in it via J-Link / J-Trace or Flasher to the target.<br />
|-<br />
| [https://www.segger.com/downloads/flasher/UM08037.pdf U-Flash] || Tool for creating standalone Flasher projects.<br />
|}<br />
<br />
== Flasher overview ==<br />
Flasher connects to a PC using the USB/Ethernet/RS232 interface (what host interfaces are available depends on the Flasher model),<br />
running Windows, Linux & MacOS. In stand-alone mode,<br />
Flasher can be driven by the start/stop button, or via the RS232 interface (handshake control or ASCII interface).<br />
Flasher always has a 20-pin connector, which target interfaces are supported depends on the Flasher model:<br />
* Flasher ARM: JTAG and SWD are supported.<br />
* Flasher RX: JTAG is supported. Flasher comes with additional 14-pin RX adapter<br />
* Flasher PPC: JTAG is supported. Flasher comes with additional 14-pin PPC adapter.<br />
* Flasher PRO: JTAG and SWD are supported.<br />
* Flasher Compact: JTAG and SWD are supported.<br />
<br />
=== Features of Flasher ARM/PPC/RX/PRO ===<br />
* Three boot modes: PC-based mode, stand-alone mode, file access mode<br />
* Stand-alone JTAG/SWD programmer (Once set up, Flasher can be controlled without the use of PC program)<br />
* No power supply required, powered through USB<br />
* Supports internal and external flash devices<br />
* 128 MB memory for storage of target program<br />
* Can be used as J-Link (emulator) with a download speed of up to 720 Kbytes/second<br />
* Data files can updated via USB/Ethernet (using the J-Flash software), via FTP, via RS232 or via the file access mode of Flasher<br />
<br />
{| class="seggertable"<br />
|-<br />
! Flasher model !! Supported cores !! Supported target interfaces !! Flash programming speed (depending on target hardware)<br />
|-<br />
| Flasher ARM || ARM7/ARM9/Cortex-M || JTAG, SWD || between 170 and 300 Kbytes/second<br />
|-<br />
| Flasher RX || Renesas RX610, RX621, RX62N, RX62T || JTAG || between 30-300 Kbytes/second<br />
|-<br />
| Flasher PPC || Power PC e200z0 || JTAG || up to 138 Kbytes/second<br />
|-<br />
| Flasher PRO || ARM7/ARM9/Cortex-M Renesas RX610, RX621, RX62N, RX62T Power PC e200z0 || JTAG, SWD || between 30-300 Kbytes/ second<br />
|-<br />
|}<br />
<br />
==== Features of Flasher Compact ====<br />
<br />
* Three boot modes: PC-based mode, stand-alone mode, file access mode<br />
* Stand-alone JTAG/SWD programmer (Once set up, Flasher can be controlled without the use of PC program)<br />
* No power supply required, powered through USB<br />
* Supports internal and external flash devices<br />
* 128 MB memory for storage of target program<br />
* Can be used as J-Link (emulator) with a download speed of up to 720 Kbytes/second<br />
* Data files can updated via USB/Ethernet (using the J-Flash software) or via the file access mode of Flasher<br />
<br />
{| class="seggertable"<br />
|-<br />
! Flasher model !! Supported cores !! Supported target interfaces !! Flash programming speed (depending on target hardware)<br />
|-<br />
| Flasher ARM || ARM7/ARM9/Cortex-M || JTAG, SWD || between 170 and 300 Kbytes/second<br />
|-<br />
| Flasher RX || Renesas RX610, RX621, RX62N, RX62T || JTAG || between 30-300 Kbytes/second<br />
|-<br />
| Flasher PPC || Power PC e200z0 || JTAG || up to 138 Kbytes/second<br />
|-<br />
| Flasher Compact || ARM7/ARM9/Cortex-M Renesas RX610, RX621, RX62N, RX62T Power PC e200z0 || JTAG, SWD || between 30-300 Kbytes/ second<br />
|-<br />
|}<br />
<br />
==== Features of Flasher Portable/Flasher Portable PLUS ====<br />
<br />
* Stand-alone in-circuit-programmer (Once set up, Flasher can be controlled without the use of a PC program)<br />
* Powered by an internal rechargeable battery (standard batteries for Flasher Portable), no Laptop or external power supply required.<br />
* Multiple firmware images can be stored on Flasher<br />
* 128 MB memory for storage of target program<br />
* Flasher Portable PLUS supports a simple selection of up to 99 firmware images via buttons (since V7.90)<br />
* Supported CPUs: ARM Cortex, Legacy ARM7/9, Renesas RX, Freescale PowerPC<br />
* Supports internal and external flash<br />
* Free software updates<ref name="legitimateOwned" />, 1 year of support<br />
* Data files can be updated via the file access mode functionality or via J-Flash<br />
* Programming speed between 30-300 Kbytes/second (actual speed depends on target hardware)<br />
{{Note|1=Ethernet and RS232 as host interface are not available for Flasher Portable}}<br />
<references><br />
<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.<br />
As a legitimate owner of a SEGGER Flasher, you can always download the latest software free of charge.<br />
Though not planned and not likely, we reserve the right to change this policy.<br />
Note that older models may not be supported by newer versions of the software.<br />
Typically, we support older models with new software at least 3 years after end of life.<br />
</ref><br />
</references><br />
<br />
{| class="seggertable"<br />
|-<br />
! Supported cores !! Supported target interfaces !! Flash programming speed (depending on target hardware)<br />
|-<br />
| ARM7/ARM9/Cortex-M || JTAG, SWD || between 30-300 Kbytes/second<br />
|-<br />
| Renesas RX610, RX621, RX62N, RX62T || JTAG || between 170 and 300 Kbytes/second<br />
|-<br />
| Power PC e200z0 || JTAG || up to 138 Kbytes/second<br />
|-<br />
|}<br />
<br />
==== Working environment ====<br />
<br />
'''General'''<br><br />
The Flasher can operate from a PC with an appropriate software like J-Flash or in stand-alone mode.<br />
<br />
'''Host System'''<br><br />
IBM PC/AT or compatible CPU: 486 (or better) with at least 128MB of RAM,<br />
running Windows, Linux & MacOS. It needs to have a USB, Ethernet or RS232 interface available for communication with Flasher.<br />
<br />
'''Power supply'''<br><br />
Flasher Portable: 3x standard AAA batteries or 5V DC, min. 100 mA via USB connector.<br />
<br />
Flasher Portable PLUS: internal rechargeable 680mAh Li-Ion battery, min. 100 mA via USB connector.<br />
<br />
Other Flashers: 5V DC, min. 100 mA via USB connector.<br />
<br />
'''Installing Flasher PC-software'''<br><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><br />
More information about the package you can find in the similar [[J-Link Software and Documentation Pack]].<br><br />
The package includes U-Flash and J-Flash, the main tools for flashing targets:<br />
* J-Flash : J-Flash User Guide ([https://wiki.segger.com/UM08003_JFlash UM08003_JFlash.pdf]).<br />
* U-Flash : U-Flash User Guide ([https://www.segger.com/downloads/flasher/UM08037.pdf UM08037_UniversalFlashLoader.pdf]).<br />
<br />
=== Specifications ===<br />
<br />
<br />
==== Specifications for Flasher ARM ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Windows, Linux & MacOS<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C<br />
|-<br />
| Storage Temperature || -20 °C ... +60 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
!colspan="100%"| Mechanical<br />
|-<br />
| Size (without cables) || 121mm x 66mm x 30mm<br />
|-<br />
| Weight (without cables) || 119g<br />
|-<br />
!colspan="100%"| Available interfaces<br />
|-<br />
| USB Host interface || USB 2.0, full speed<br />
|-<br />
| Ethernet Host interface || 10/100 MBit<br />
|-<br />
| RS232 Host interface || RS232 9-pin<br />
|-<br />
| Target interface || JTAG 20-pin (14-pin adapter available)<br />
|-<br />
!colspan="100%"| JTAG Interface, Electrical<br />
|-<br />
| Power Supply || USB powered, 100mA for Flasher ARM. 500 mA if target is powered by Flasher ARM<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| Target supply voltage || Supply voltage is 5V, max.<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6 <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Max. JTAG speed || up to 12MHz<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
===== Flasher ARM download speed =====<br />
<br />
The following table lists the Flasher ARM performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! ARM7 memory download<br />
|-<br />
| Flasher ARM || 720 Kbytes/s (12MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
<br />
==== Specifications for Flasher RX ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Windows, Linux & MacOS<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C<br />
|-<br />
| Storage Temperature || -20 °C ... +60 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
!colspan="100%"| Mechanical<br />
|-<br />
| Size (without cables) || 121mm x 66mm x 30mm<br />
|-<br />
| Weight (without cables) || 119g<br />
|-<br />
!colspan="100%"| Available interfaces<br />
|-<br />
| USB Host interface || USB 2.0, full speed<br />
|-<br />
| Ethernet Host interface || 10/100 MBit<br />
|-<br />
| RS232 Host interface || RS232 9-pin<br />
|-<br />
| Target interface || JTAG 20-pin (shipped with 14-pin adapter for Renesas RX)<br />
|-<br />
!colspan="100%"| JTAG Interface, Electrical<br />
|-<br />
| Power Supply || USB powered, 100mA for Flasher RX. 500 mA if target is powered by Flasher RX<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| 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)<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6 <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Max. JTAG speed || up to 12MHz<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
===== Flasher RX download speed =====<br />
<br />
The following table lists the Flasher RX performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! Flasher RX600 series memory download<br />
|-<br />
| Flasher RX || 720 Kbytes/s (12MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
<br />
==== Specifications for Flasher PPC ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Windows, Linux & MacOS<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C<br />
|-<br />
| Storage Temperature || -20 °C ... +60 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
!colspan="100%"| Mechanical<br />
|-<br />
| Size (without cables) || 121mm x 66mm x 30mm<br />
|-<br />
| Weight (without cables) || 119g<br />
|-<br />
!colspan="100%"| Available interfaces<br />
|-<br />
| USB Host interface || USB 2.0, full speed<br />
|-<br />
| Ethernet Host interface || 10/100 MBit<br />
|-<br />
| RS232 Host interface || RS232 9-pin<br />
|-<br />
| Target interface || JTAG 20-pin (shipped with 14-pin adapter for Renesas PPC)<br />
|-<br />
!colspan="100%"| JTAG Interface, Electrical<br />
|-<br />
| Power Supply || USB powered, 100mA for Flasher PPC. 500 mA if target is powered by Flasher PPC<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| Target supply voltage || Supply voltage is 5V, max.<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6 <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Max. JTAG speed || up to 12MHz<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
===== Flasher RX download speed =====<br />
<br />
The following table lists the Flasher PPC performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! Memory download<br />
|-<br />
| Flasher PPC || 530 Kbytes/s (8 MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
<br />
==== Specifications for Flasher PRO ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Windows, Linux & MacOS<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C<br />
|-<br />
| Storage Temperature || -20 °C ... +60 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
!colspan="100%"| Mechanical<br />
|-<br />
| Size (without cables) || 121mm x 66mm x 30mm<br />
|-<br />
| Weight (without cables) || 119g<br />
|-<br />
!colspan="100%"| Available interfaces<br />
|-<br />
| USB Host interface || USB 2.0, full speed<br />
|-<br />
| Ethernet Host interface || 10/100 MBit<br />
|-<br />
| RS232 Host interface || RS232 9-pin<br />
|-<br />
| Target interface || JTAG 20-pin (14-pin adapter available)<br />
|-<br />
!colspan="100%"| JTAG Interface, Electrical<br />
|-<br />
| Power Supply || USB powered, 100mA for Flasher PRO. 500 mA if target is powered by Flasher PRO<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| Target supply voltage || Supply voltage is 5V, max.<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6 <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Max. JTAG speed || up to 12MHz<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
<br />
===== Supported CPU cores =====<br />
<br />
The Flasher PRO supports the following CPU cores:<br />
<br />
'''ARM Cortex'''<br><br />
* Cortex-A5<br />
* Cortex-A8<br />
* Cortex-A9<br />
* Cortex-R4<br />
* Cortex-R5<br />
* Cortex-M0<br />
* Cortex-M0+<br />
* Cortex-M1<br />
* Cortex-M3<br />
* Cortex-M4<br />
<br />
'''ARM (legacy cores)'''<br><br />
* ARM720T<br />
* ARM7TDMI<br />
* ARM7TDMI-S<br />
* ARM920T<br />
* ARM922T<br />
* ARM926EJ-S<br />
* ARM946E-S<br />
* ARM966E-S<br />
* ARM1136JF-S<br />
* ARM1136J-S<br />
* ARM1156T2-S<br />
* ARM1156T2F-S<br />
* ARM1176JZ-S<br />
* ARM1176JZF<br />
* ARM1176JZF-S<br />
<br />
'''Renesas RX'''<br><br />
* RX111<br />
* RX210<br />
* RX220<br />
* RX21A<br />
* RX610<br />
* RX621<br />
* RX62G<br />
* RX62N<br />
* RX62T<br />
* RX630<br />
* RX631<br />
* RX63N<br />
* RX63T<br />
<br />
'''Freescale Power PC'''<br><br />
* e200z0<br />
<br />
===== Supported Target interfaces =====<br />
<br />
The Flasher PRO supports the following target interfaces:<br />
<br />
* JTAG<br />
* SWD<br />
* FINE<br />
* SPD<br />
<br />
===== Flasher PRO download speed =====<br />
<br />
The following table lists the Flasher PRO performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! ARM7 memory download<br />
|-<br />
| Flasher PRO || 720 Kbytes/s (12MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
<br />
==== Specifications for Flasher Compact ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Microsoft Windows (x86/x64)<br>Linux (x86/x64/Arm)<br>macOS (x86/Apple M1)<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C<br />
|-<br />
| Storage Temperature || -20 °C ... +65 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
| Size (without cables) || 70mm x 45mm x 18mm<br />
|-<br />
| Weight (without cables) || 40g<br />
|-<br />
| USB Host interface || USB 2.0 (Hi-Speed); Micro USB<br />
|-<br />
| Target interface || JTAG 20-pin (14-pin adapter available)<br />
|-<br />
| Power Supply || USB powered, 130mA (idle)<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| Target supply voltage || Supply voltage is 5V, max.<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
| Supported target interfaces || SPI, QSPI, 8051 C2, cJTAG, FINE, ICSP, IIC, ISP, JTAG, PDI, SPD, SWD, SWIM, UART, UPDI<br />
|-<br />
| Serial transfer rate between Flasher Compact and target || Up to 50 MHz (Depending on target interface)<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6 <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
===== Supported CPU cores =====<br />
<br />
The Flasher Compact supports the following CPU cores:<br />
'''ARM Cortex'''<br><br />
* Cortex-A5<br />
* Cortex-A8<br />
* Cortex-A9<br />
* Cortex-R4<br />
* Cortex-R5<br />
* Cortex-M0<br />
* Cortex-M0+<br />
* Cortex-M1<br />
* Cortex-M3<br />
* Cortex-M4<br />
<br />
'''ARM (legacy cores)'''<br><br />
* ARM720T<br />
* ARM7TDMI<br />
* ARM7TDMI-S<br />
* ARM920T<br />
* ARM922T<br />
* ARM926EJ-S<br />
* ARM946E-S<br />
* ARM966E-S<br />
* ARM1136JF-S<br />
* ARM1136J-S<br />
* ARM1156T2-S<br />
* ARM1156T2F-S<br />
* ARM1176JZ-S<br />
* ARM1176JZF<br />
* ARM1176JZF-S<br />
<br />
'''Renesas RX'''<br><br />
* RX111<br />
* RX210<br />
* RX220<br />
* RX21A<br />
* RX610<br />
* RX621<br />
* RX62G<br />
* RX62N<br />
* RX62T<br />
* RX630<br />
* RX631<br />
* RX63N<br />
* RX63T<br />
<br />
'''Freescale Power PC'''<br><br />
* e200z0<br />
<br />
===== Flasher Compact download speed =====<br />
<br />
The following table lists the Flasher Compact performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! ARM7 memory download<br />
|-<br />
| Flasher Compact || 720 Kbytes/s (12MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
<br />
==== Specifications for Flasher Portable PLUS ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Windows, Linux & MacOS<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C (normal operation)<br>+5 °C ... +45 °C (battery charging)<br />
|-<br />
| Storage Temperature || -20 °C ... +45 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
| 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)<br />
|-<br />
| Charging via USB || 70 minutes (at 1A charging current)<br />
|-<br />
!colspan="100%"| Mechanical<br />
|-<br />
| Size (without cables) || 126mm x 70mm x 28mm<br />
|-<br />
| Weight (without cables) || 140g<br />
|-<br />
!colspan="100%"| Available interfaces<br />
|-<br />
| USB Host interface || USB 2.0<br />
|-<br />
| Target interface || Standard 20-pin 0.1" connector (Adapters available).<br />
|-<br />
!colspan="100%"| Target Interface, Electrical<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| Target supply voltage || Supply voltage is 4.5V, max. (depends on the current battery voltage).<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6 <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Max. JTAG speed || up to 12MHz<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
===== Supported CPU cores =====<br />
<br />
The Flasher Portable PLUS supports the following CPU cores:<br />
<br />
'''ARM Cortex'''<br><br />
* Cortex-A5<br />
* Cortex-A8<br />
* Cortex-A9<br />
* Cortex-R4<br />
* Cortex-R5<br />
* Cortex-M0<br />
* Cortex-M0+<br />
* Cortex-M1<br />
* Cortex-M3<br />
* Cortex-M4<br />
<br />
'''ARM (legacy cores)'''<br><br />
* ARM720T<br />
* ARM7TDMI<br />
* ARM7TDMI-S<br />
* ARM920T<br />
* ARM922T<br />
* ARM926EJ-S<br />
* ARM946E-S<br />
* ARM966E-S<br />
* ARM1136JF-S<br />
* ARM1136J-S<br />
* ARM1156T2-S<br />
* ARM1156T2F-S<br />
* ARM1176JZ-S<br />
* ARM1176JZF<br />
* ARM1176JZF-S<br />
<br />
'''Renesas RX'''<br><br />
* RX111<br />
* RX210<br />
* RX220<br />
* RX21A<br />
* RX610<br />
* RX621<br />
* RX62G<br />
* RX62N<br />
* RX62T<br />
* RX630<br />
* RX631<br />
* RX63N<br />
* RX63T<br />
<br />
'''Freescale Power PC'''<br><br />
* e200z0<br />
<br />
===== Supported Target interfaces =====<br />
<br />
The Flasher Portable PLUS supports the following target interfaces:<br />
* JTAG<br />
* SWD<br />
* FINE<br />
* SPD<br />
<br />
===== Flasher Portable PLUS download speed =====<br />
<br />
The following table lists the Flasher Portable PLUS performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! ARM7 memory download<br />
|-<br />
| Flasher PRO || 720 Kbytes/s (12MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
<br />
==== Specifications for Flasher Portable ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Windows, Linux & MacOS<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C<br />
|-<br />
| Storage Temperature || -20 °C ... +65 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
| Power Supply || a) USB powered, 100mA for Flasher Portable. 500 mA if target is powered by Flasher Portable<br>b) Batteries powered (3xAAA)<br />
|-<br />
!colspan="100%"| Mechanical<br />
|-<br />
| Size (without cables) || 130mm x 65mm x 25mm<br />
|-<br />
| Weight (without cables) || 120g<br />
|-<br />
!colspan="100%"| Available interfaces<br />
|-<br />
| USB Host interface || USB 2.0<br />
|-<br />
| Target interface || Standard 20-pin 0.1" connector (Adapters available).<br />
|-<br />
!colspan="100%"| Target Interface, Electrical<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| Target supply voltage || Supply voltage is 4.5V, max. (depends on the current battery voltage).<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6V <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Max. JTAG speed || up to 12MHz<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
===== Supported CPU cores =====<br />
<br />
The Flasher Portable supports the following CPU cores:<br />
<br />
'''ARM Cortex'''<br><br />
* Cortex-A5<br />
* Cortex-A8<br />
* Cortex-A9<br />
* Cortex-R4<br />
* Cortex-R5<br />
* Cortex-M0<br />
* Cortex-M0+<br />
* Cortex-M1<br />
* Cortex-M3<br />
* Cortex-M4<br />
<br />
'''ARM (legacy cores)'''<br><br />
* ARM720T<br />
* ARM7TDMI<br />
* ARM7TDMI-S<br />
* ARM920T<br />
* ARM922T<br />
* ARM926EJ-S<br />
* ARM946E-S<br />
* ARM966E-S<br />
* ARM1136JF-S<br />
* ARM1136J-S<br />
* ARM1156T2-S<br />
* ARM1156T2F-S<br />
* ARM1176JZ-S<br />
* ARM1176JZF<br />
* ARM1176JZF-S<br />
<br />
'''Renesas RX'''<br><br />
* RX111<br />
* RX210<br />
* RX220<br />
* RX21A<br />
* RX610<br />
* RX621<br />
* RX62G<br />
* RX62N<br />
* RX62T<br />
* RX630<br />
* RX631<br />
* RX63N<br />
* RX63T<br />
<br />
'''Freescale Power PC'''<br><br />
* e200z0<br />
<br />
===== Supported Target interfaces =====<br />
<br />
The Flasher Portable supports the following target interfaces:<br />
<br />
* JTAG<br />
* SWD<br />
* FINE<br />
* SPD<br />
<br />
===== Flasher Portable download speed =====<br />
<br />
The following table lists the Flasher Portable performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! ARM7 memory download<br />
|-<br />
| Flasher PRO || 720 Kbytes/s (12MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
== Working with Flasher ==<br />
<br />
This chapter describes functionality and how to use Flasher.<br />
<br />
=== Flasher Portable PLUS ===<br />
<br />
The Flasher Portable PLUS is a portable version of SEGGERs Flasher family,<br />
which has been designed to fill the need of an extremely portable, production grade,<br />
Flash programmer used for in-field firmware updates. No need to be tethered to an outlet,<br />
it is powered by an integrated Li-Ion cell (680mAh).<br />
The Flasher Portable PLUS programs flash targets in stand-alone mode or via J-Flash PC software.<br><br />
<br />
Furthermore the Flasher Portable PLUS allows the user to select between 99 data images to be programmed (since V7.90).<br />
The images can be easily selected by using the SEL button on the front of the housing.<br />
For more information about support for multiple images, please refer to [[#Multiple File Support | Multiple File Support]].<br><br />
For setup and configuration purposes, the Flasher Portable PLUS connects to a PC via USB interface,<br />
running Windows, Linux & MacOS and has a built-in standard 20-pin J-Link target connector.<br><br />
<br />
{{Note|1=Ethernet and RS232 as host interface are not available for the Flasher Portable PLUS.}}<br />
<br />
==== Housing & Buttons ====<br />
<br />
The Flasher Portable PLUS comes with a display, which is for example used to represent the status of an ongoing flash progress.<br />
Furthermore, there are three buttons which allow the user to control Flasher Portable PLUS.<br />
For a detailed description of the functions, take a look at the table below:<br />
<br />
<!-- LG xxxxxx edit image with labels for buttons? (Is this actually necessary? Buttons are basically self-explanatory...) --><br />
[[File:Flasher_Portable_PLUS.png | 500px]]<br />
<br />
{| class="seggertable"<br />
|-<br />
! Button !! Description<br />
|-<br />
| Program || Start programming process with the currently selected image.<br />
|-<br />
| Select image || Select the image to be programmed next time the Program button is pressed.<br />
|-<br />
| 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.<br />
|-<br />
|}<br />
<br />
==== Configuration ====<br />
<br />
The Flasher Portable PLUS has some configuration options the other Flashers do not have.<br />
{| class="seggertable"<br />
|-<br />
! Option !! Description !! Value range !! Default value<br />
|-<br />
| AutoPowerOffOnIdle || Specifies the time interval after which the Flasher Portable will turn off without any user action || 1 to 3600 || 60<br />
|-<br />
| ShowDatCRCAfterProgramming || Activates displaying the data file CRC after the programming in the pop up message || 0 = inactive, 1 = active || 0<br />
|-<br />
|}<br />
<br />
If the <tt>Flasher.ini</tt> does not contain a <tt>[Config]</tt> section with the configuration option, the default value is used.<br />
<br />
'''Example:'''<br><br />
This sample will show the data file CRC after the programming and the auto power of is set to five minutes (=300 seconds).<br />
<br />
<source lang="c"><br />
[CONFIG]<br />
AutoPowerOffOnIdle = "300"<br />
ShowDatCRCAfterProgramming = "1"<br />
</source><br />
<br />
=== Flasher Portable ===<br />
<br />
The Flasher Portable is a portable version of SEGGERs Flasher family, which has been designed to fill the need of an extremely portable,<br />
production grade, Flash programmer used for in-field firmware updates. No need to be tethered to an outlet,<br />
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><br />
<br />
Furthermore the Flasher Portable allows the user to select between four data images to be programmed.<br />
The images can be easily selected by using the arrow buttons on the front of the housing.<br />
For more information about support for multiple images, please refer to [[#Multiple File Support | Multiple File Support]].<br><br />
For setup and configuration purposes, the Flasher Portable connects to a PC via USB interface,<br />
running Windows, Linux & MacOS and has a built-in standard 20-pin J-Link target connector.<br><br />
<br />
{{Note|1=Ethernet and RS232 as host interface are not available for the Flasher Portable.}}<br />
<br />
==== Housing & Buttons ====<br />
<br />
The Flasher Portable comes with several leds which are for example used to represent the status of an ongoing flash progress.<br />
Furthermore, there are three buttons which allow the user to control Flasher Portable.<br />
For a detailed description of the functions, take a look at the two tables below:<br />
<br />
<!-- LG xxxxxx edit image with labels for buttons?--><br />
[[File:Flasher_Portable_Top_2.png | 500px]]<br />
<br />
{| class="seggertable"<br />
|-<br />
! LED !! Description<br />
|-<br />
| ACTIVE || GREEN. Blinks while the Flasher Portable is busy / performs operations on the target.<br />
|-<br />
| PASS/FAIL || GREEN/RED. Indicates, if the last flashing cycle was successful.<br />
<ul><br />
<li> GREEN: Flashing cycle completed successfully.</li><br />
<li> RED: Flashing cycle completed with error.</li><br />
</ul><br />
|-<br />
| 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]].<br />
|-<br />
| POWER || GREEN: Indicates if Flasher is currently powered. Blinks while Flasher Portable tries to enumerate via USB.<br />
|-<br />
| 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.<br />
|-<br />
|}<br />
<br />
{| class="seggertable"<br />
|-<br />
! Button !! Description<br />
|-<br />
| Program || Start programming process with the currently selected image.<br />
|-<br />
| Select image || Select the image to be programmed next time the <tt>Program</tt> button is pressed.<br />
|-<br />
| 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<br />
|-<br />
|}<br />
<br />
=== File system ===<br />
<br />
The Flasher with hardware version 4 and lower supports 8.3 filenames only (8 characters filename, 3 characters file extension).<br />
Using longer filenames may result in incorrect operation. Integrated functions,<br />
like the FTP server or the terminal server, will refuse writing files with long filenames.<br />
<br />
=== Setting up the IP interface ===<br />
<br />
Setting up the IP interface<br />
Some of the Flasher models come with an additional Ethernet interface to communicate with the host system.<br />
These Flashers also come with a built-in webserver which allows some basic setup of the emulator,<br />
e.g. configuring a default gateway which allows using it even in large intranets. For more information,<br />
please refer to [[#TCP Services | TCP Services]].<br />
<br />
==== Connecting the first time ====<br />
<br />
When connecting Flasher the first time, it attempts to acquire an IP address via DHCP.<br />
The recommended way for finding out which IP address has been assigned to Flasher is, to use the J-Link Configurator.<br />
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.<br />
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''.<br />
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,<br />
please refer to ''UM08001, J-Link / J-Trace User Guide'', chapter ''Setup'', section ''Setting up the IP interface''.<br />
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]].<br />
<br />
=== Operating modes ===<br />
<br />
All Flashers except the Flasher ATE are able to boot in 3 different modes:<br />
<br />
* PC-based mode<br />
* Stand-alone mode<br />
* File access mode<br />
<br />
{{Note|1=The Flasher ATE only supports the stand-alone mode.}}<br />
<br />
'''Definition PC-based mode'''<br><br />
Flasher is connected to a PC via USB/Ethernet and controlled by a PC application (J-Flash).<br />
If there is an RS232 connection to a PC, does not have any influence on if PC-based mode is entered or not.<br />
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, ...)<br />
<br />
'''Definition Stand-alone mode'''<br><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.<br />
<br />
'''Definition file access mode'''<br><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.<br />
In this mode, Flasher enumerates as a mass storage device (like an USB Stick) at the host PC.<br />
In this mode, configuration + data files can be manually placed on the Flasher and the Flasher logfile can be read out.<br />
If you are using a self-powered Flasher such as the Flasher Portable Plus, the Flasher must be turned off before connecting it.<br />
<br />
==== PC-based mode ====<br />
If you want to use Flasher for the first time you need to install the J-Link software and documentation package.<br />
After installation, connect Flasher to the host PC via USB or Ethernet.<br />
For more information about how to install the J-Link software and documentation package please refer to [[J-Link Software and Documentation Pack]].<br />
<br />
===== Connecting the target system =====<br />
<br />
'''Power-on sequence'''<br><br />
In general, Flasher should be powered on before connecting it with the target device.<br />
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.<br />
Power-on the device after you connected Flasher to it. Flasher will boot in "PC-based mode".<br />
<br />
'''Verifying target device connection with J-Link.exe'''<br><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.<br />
Then start the J-Link command line tool <tt>JLink.exe</tt>,<br />
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.<br />
The screenshot below shows the output of <tt>JLink.exe</tt>.<br />
<br />
[[File:flasher_jlinkmode.gif]]<br />
<br />
===== LED status indicators =====<br />
<br />
In PC-based mode, there are also certain LED status codes defined:<br />
<br />
{| class="seggertable"<br />
|-<br />
! # !! Status of LED !! Meaning<br />
|-<br />
| 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.<br />
|-<br />
| 0 || GREEN<br>constant || Flasher enumeration process is complete and it is ready to be controlled by a PC application.<br />
|-<br />
|}<br />
<br />
==== Stand-alone mode ====<br />
<br />
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]].<br />
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).<br />
In the "stand-alone mode" Flasher can be used as a stand-alone flash programmer.<br><br />
<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]].}}<br />
<br />
===== LED status indicators =====<br />
Progress and result of an operation is indicated by Flasher's LEDs. The behavior is different for J-Link and stand-alone mode.<br />
For a definition of the different modes, please refer to [[#Operating modes | Operating modes]].<br />
The following table describes the behavior of the LEDs in stand-alone mode.<br />
<br />
{| class="seggertable"<br />
|-<br />
! # !! Status of LED !! Meaning<br />
|-<br />
| 0 || GREEN<br>constant || Flasher waits for a start trigger to perform an operation in stand-alone mode.<br />
|-<br />
| 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><br />
|-<br />
| 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.<br />
|-<br />
|}<br />
Older Flasher models have a different behavior.<br />
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:<br />
<br />
* 1621xxxxx (Flasher ARM V2)<br />
* 1630xxxxx (Flasher ARM V3)<br />
* 4210xxxxx (Flasher PPC V1)<br />
* 4110xxxxx (Flasher RX V1)<br />
<br />
{| class="seggertable"<br />
|-<br />
! # !! Status of LED !! Meaning<br />
|-<br />
| 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.<br />
|-<br />
| 1 || GREEN<br>constant || Connect to target and perform init sequence.<br />
|-<br />
| 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><br />
|-<br />
| 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.<br />
|-<br />
|}<br />
<br />
==== File access mode ====<br />
<br />
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".<br />
If you are using a self-powered Flasher such as the Flasher Portable Plus, the Flasher must be turned off before connecting it.<br />
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.<br />
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>.<br />
<br />
[[File:flasher_mode_msd.gif]]<br />
<br />
<tt>FLASHER.CFG</tt> contains the configuration settings for programming the target device and <tt>FLASHER.DAT</tt> contains the data to be programmed.<br />
<tt>FLASHER.LOG</tt> contains all logging information about the commands, performed in stand-alone mode.<br />
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><br />
<br />
Currently, J-Flash does not support to configure Flasher for automated serial number programming.<br><br />
<br />
If you want to configure multiple Flasher for the same target you do not have to use J-Flash all the time.<br />
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".<br />
<br />
=== Setting up Flasher for stand-alone mode ===<br />
{{Note| All Options how to set up the Flasher for stand-alone mode you can find here: [[Flasher/Download project to Flasher|Download project to the Flasher]]}}<br />
<br />
In order to set up Flasher for the stand-alone mode it needs to be configured once using the J-Flash software.<br />
For more information about J-Flash, please refer to the ''J-Flash User Guide''.<br><br />
<br />
After starting J-Flash, open the appropriate J-Flash project for the target Flasher shall be configured for, by selecting '''File''' -> '''Open Project'''.<br />
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><br />
<br />
After the appropriate project has been opened / created, the data file which shall be programmed needs to be loaded, by selecting '''File''' -> '''Open'''.<br />
After this J-Flash should look like in the screenshot below.<br />
<br />
[[File:jflash_projectfile_datafile.gif]]<br />
<br />
Before downloading the configuration (project) and program data (data file) to Flasher, the connection type (USB/IP) needs to be selected in the project.<br />
These settings are also saved on a per-project basis, so this also only needs to be setup once per J-Flash project.<br />
The connection dialog is opened by clicking '''Options''' -> '''Project settings''' -> '''General'''.<br />
<br />
[[File:jflash_connection_dialog.gif]]<br />
<br />
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.<br />
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.<br />
The user then can simply select the Flash he wants to download the configuration to.<br />
<br />
[[File:EmuSelectionDialog.gif]]<br />
<br />
In order to download the configuration and program data to the Flasher, simply select '''File''' -> '''Download config & data file to Flasher'''.<br />
<br />
[[File:jflash_download_to_emul.gif]]<br />
<br />
The J-Flash log window indicates that the download to the emulator was successful.<br />
<br />
[[File:jflash_download_to_emu_succ.gif]]<br />
<br />
From now on, Flasher can be used in stand-alone mode (without host PC interaction) for stand-alone programming.<br />
<br />
==== Preparing for stand-alone operation manually ====<br />
<br />
As an alternative, J-Flash can also be used to save config and data file to a hard drive.<br><br />
<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,<br />
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.<br />
<br />
'''Creating config and data files'''<br><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><br />
<br />
For some devices, additional files (*.PEX) are needed.<br />
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.<br />
<br />
'''About *.PEX files'''<br><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,<br />
the following needs to be taken care of:<br><br />
<br />
For some devices, special connect, reset etc. sequences are necessary which are stored in so-called *.PEX files on the Flasher.<br><br />
<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><br />
<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><br />
The *.PEX files need to be placed in a subdirectory with the same name as the corresponding *.cfg file.<br />
J-Flash creates a directory with the correct name automatically when a config file is created.<br><br />
<br />
Example:<br><br />
<br />
MyConf0 is a project for a device that requires a *.PEX file for connect.<br><br />
MyConf1 is a project for a device that requires no *.PEX file at all.<br />
<br />
[[File:PEX_File_Flasher.png]]<br />
<br />
=== Universal Flash Loader mode ===<br />
<br />
As an alternative to the stand-alone mode, configured via J-Flash, there is the Universal Flash Loader mode.<br />
While the normal stand-alone mode relies on using the debug interface of the device, the Universal Flash Loader<br />
mode uses device or vendor specific programming interfaces and protocols and therefore it is independent of the<br />
CPU core.<br><br />
<br />
The Universal Flash Loader is available for the following Flasher models:<br />
* Flasher PRO<br />
* Flasher Compact<br />
* Flasher Portable PLUS<br />
<br />
For some of the supported devices, SEGGER offers specific adapters.<br />
<br />
==== Preparing manually ====<br />
<br />
The Universal Flash Loader uses an configuration file (*.UNI), a device specific flash programming algorithm (*.PEX) and a data file (*.DAT).<br />
<br />
===== Configuration =====<br />
<br />
The configuration file basically is split into three parts.<br />
The first part, the section [DEVICE], controls the generic behavior of the Universal Flash Loader.<br />
It specifies which protocol driver and data file to use. It allows enabling and configuring target power<br />
and it defines which actions to perform.<br />
The second part consists of one or more [BANKx] sections, which contain information about the memories.<br />
The third part, the section [CONFIG], includes configuration settings for the protocol driver.<br><br />
<br />
An .UNI file might look as follows:<br><br />
<br />
<source lang="c"><br />
[OPTIONS]<br />
TargetPower = "0"<br />
ChipErase = "0"<br />
<br />
[TASKS]<br />
CheckBlank = "1"<br />
Erase = "1"<br />
Program = "1"<br />
Verify = "1"<br />
Secure = "1"<br />
<br />
[DEVICE]<br />
Algo = "RL78.PEX"<br />
Data = "ALL_6k.dat"<br />
<br />
[BANK0]<br />
; Code Flash<br />
Base = "0x00000000"<br />
Size = "0x00004000"<br />
Sect = "0x00000400"<br />
<br />
[BANK1]<br />
; Data Flash<br />
Base = "0x000F1000"<br />
Size = "0x00000800"<br />
Sect = "0x00000400"<br />
<br />
[CONFIG]<br />
BaudRate = "1000000"<br />
ClearConfigOnConnect = "0x00"<br />
Security = "0xFF"<br />
ShieldStart = "0x0000"<br />
ShieldEnd = "0x000F"<br />
</source><br />
<br />
'''[OPTIONS]'''<br><br />
'''TargetPower'''<br><br />
If set to a value >0, power is applied to the target.<br />
The value defines the delay (in ms) after enabling the target power supply and before starting to communicate with the target.<br />
<br />
'''ChipErase'''<br><br />
If set to 1, the chip erase function is called for erasing the chip.<br><br />
{{Note|1=Do not enable this setting if the flash programming algorithm does not support chip erase.}}<br />
<br />
'''[TASKS]'''<br><br />
'''CheckBlank'''<br><br />
Defines if a blank check should be performed before erasing a sector.<br />
<br />
'''Erase'''<br><br />
Defines if the sector should be erased before programming.<br />
<br />
'''Program'''<br><br />
Defines if the sector should be programmed.<br />
<br />
'''Verify'''<br><br />
Defines if the sector should be verified after programming.<br />
<br />
'''Secure'''<br><br />
Defines if the device should be secured or protected against read-out after verifying.<br />
<br />
'''[DEVICE]'''<br><br />
'''Algo'''<br><br />
File name of the flash programming algorithm. This file is provided by SEGGER and will typically support a series of devices.<br />
<br />
'''Data'''<br><br />
File name of the data file to program. The Flasher only supports the Flasher .dat file format.<br />
Flasher .dat files can be generated by J-Flash or Universal Flash Loader and offer high performance together with high flexibility.<br />
<br />
'''[BANKx]'''<br><br />
x blocks with configuration data for the flash banks. All three parameters (Base, Size and Sect) are mandatory.<br />
<br />
'''Base'''<br><br />
Base address of the flash bank.<br />
<br />
'''Size'''<br><br />
Total size of the flash bank.<br />
<br />
'''Sect'''<br><br />
Sector size of the flash bank.<br />
<br />
'''[CONFIG]'''<br><br />
This section includes specific configuration data for the flash programming algorithm.<br><br />
There are no general parameters.<br />
<br />
{{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. }}<br />
<br />
==== Preparing using the PC utility ====<br />
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.<br />
<br />
[[File:Universal Flash Loader.png]]<br />
<br />
The Universal Flash Loader Configurator comes with a large list of devices and flash programming algorithms. If you are going to<br />
use a device from one of the supported families which currently is not available in the utility, feel free to contact the support.<br />
<br />
=== Multiple File Support ===<br />
<br />
It is also possible to have multiple data files and config files on Flasher, to make Flasher more easy to use in production environment.<br />
To choose the correct configuration file and data file pair, a <tt>FLASHER.INI</tt> file is used.<br />
This init file contains a <tt>[FILES]</tt> section which describes which configuration file and which data file should be used for programming.<br />
A sample content of a FLASHER.INI file is shown below:<br><br />
<br />
<source><br />
[FILES]<br />
DataFile = "Flasher1.dat"<br />
ConfigFile = "Flasher1.cfg"<br />
</source><br />
<br />
Using this method all configuration files and data files which are used in the production only have to be downloaded once.<br />
From there on a configuration file / data file pair can be switched by simply replacing the <tt>FLASHER.INI</tt> by a new one,<br />
which contains the new descriptions for the configuration file and data file. The <tt>FLASHER.INI</tt> can be replaced in two ways:<br />
<ol><br />
<li>Boot Flasher in file access mode in order to replace the <tt>FLASHER.INI</tt></li><br />
<li><br />
If Flasher is already integrated into the production line, runs in stand-alone mode and can not be booted in other mode:<br />
Use the file I/O commands provided by the ASCII interface of Flasher, to replace the <tt>FLASHER.INI</tt>.<br />
For more information about the file I/O commands, please refer to [[#File I/O commands | File I/O commands]].<br />
</li><br />
</ol><br />
{{Note|1=Flasher with hardware version 4 and lower only supports 8.3 filenames only (8 characters filename, 3 characters file extension). Using longer filenames may result in incorrect operation.}}<br />
<br />
==== Flasher Portable specifics ====<br />
<br />
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><br />
<br />
Which config / data file pair is used for which image selection position is determined by the contents of the FLASHER.INI.<br />
For this, the FLASHER.INI contents in the <tt>[FILES]</tt> section have been extended.<br />
The sample below shows how to enable the user to select between four different images on the Flasher portable via the select / arrow button:<br />
<br />
<source><br />
[FILES]<br />
DataFile = "First.dat"<br />
ConfigFile = "First.cfg"<br />
DataFile1 = "Second.dat"<br />
ConfigFile1 = "Second.cfg"<br />
DataFile2 = "Third.dat"<br />
ConfigFile2 = "Third.cfg"<br />
DataFile3 = "Fourth.dat"<br />
ConfigFile3 = "Fourth.cfg"<br />
</source><br />
<br />
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.<br />
From there on, switching between the files can be done by simply using the selection button of Flasher Portable.<br />
<br />
===== Example =====<br />
<br />
1 Target, 2 Datafiles (e.g. boot loader und application) --> same configuration file (*.CFG) but different data files (*.DAT) should be used.<br><br />
<br />
* Open pre-configured J-Flash project<br />
* File -> Save Flasher config file ... (DEFAULT.CFG)<br />
* Open data file 1 (boot loader)<br />
* File -> Save Flasher data file ... (BOOT.DAT)<br />
* Open data file 2 (application)<br />
* File -> Save Flasher data file ... (APP.DAT)<br />
* Create the a FLASHER.INI file (content see below)<br />
* Connect the Flasher in file access mode to the PC<br />
* Copy DEFAULT.CFG, BOOT.DAT, APP.DAT and FLASHER.INI on the Flasher<br />
<br />
FLASHER.INI content:<br><br />
<br />
<source><br />
[FILES]<br />
DataFile = "BOOT.DAT"<br />
ConfigFile = "DEFAULT.CFG"<br />
DataFile1 = "APP.DAT"<br />
ConfigFile1 = "DEFAULT.CFG"<br />
</source><br />
<br />
==== Flasher Portable PLUS specifics ====<br />
<br />
Flasher Portable PLUS allows to choose between 99 configuration and data file pairs during runtime by using the select button on the front of Flasher Portable PLUS.<br><br />
<br />
Which config / data file pair is used for which image selection position is determined by the contents of the FLASHER.INI.<br />
For this, the FLASHER.INI may contain several <tt>[BATCH]</tt> sections.<br />
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:<br />
<br />
<source><br />
[BATCH]<br />
DataFile = "First.dat"<br />
ConfigFile = "First.cfg"<br />
[BATCH1]<br />
DataFile = "Second.dat"<br />
ConfigFile = "Second.cfg"<br />
[BATCH2]<br />
DataFile = "Third.dat"<br />
ConfigFile = "Third.cfg"<br />
[BATCH7]<br />
DataFile = "Proj_8.dat"<br />
ConfigFile = "Proj_8.cfg"<br />
[BATCH15]<br />
DataFile = "Proj_16.dat"<br />
ConfigFile = "Proj_16.cfg"<br />
</source><br />
<br />
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.<br />
From there on, switching between the files can be done by simply using the selection button of Flasher Portable PLUS.<br />
<br />
Please also consider the chapter [[#Batch Programming in stand-alone mode | Batch Programming in stand-alone mode]].<br />
<br />
{{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.}}<br />
{{Note|1=You may have gaps in the list. The missing entries will be skipped when selecting the next configuration.}}<br />
{{Note|1=The <tt>[Files]</tt> section is supported by the Flasher Portable PLUS, too. But the number of configuration is limited to four.}}<br />
<br />
===== Example =====<br />
<br />
1 Target, 2 Datafiles (e.g. boot loader und application) --> same configuration file (*.CFG) but different data files (*.DAT) should be used.<br><br />
<br />
* Open pre-configured J-Flash project<br />
* File -> Save Flasher config file ... (DEFAULT.CFG)<br />
* Open data file 1 (boot loader)<br />
* File -> Save Flasher data file ... (BOOT.DAT)<br />
* Open data file 2 (application)<br />
* File -> Save Flasher data file ... (APP.DAT)<br />
* Create the a FLASHER.INI file (content see below)<br />
* Connect the Flasher in file access mode to the PC<br />
* Copy DEFAULT.CFG, BOOT.DAT, APP.DAT and FLASHER.INI on the Flasher<br />
<br />
FLASHER.INI content:<br><br />
<br />
<source><br />
[BATCH]<br />
DataFile = "BOOT.DAT"<br />
ConfigFile = "DEFAULT.CFG"<br />
DisplayName = "Bootloader"<br />
[BATCH1]<br />
DataFile = "APP.DAT"<br />
ConfigFile = "DEFAULT.CFG"<br />
DisplayName = "Application"<br />
[BATCH2]<br />
DataFile = "BOOT.DAT"<br />
ConfigFile = "DEFAULT.CFG"<br />
DataFile1 = "APP.DAT"<br />
ConfigFile1 = "DEFAULT.CFG"<br />
DisplayName = "BL and App"<br />
</source><br />
<br />
=== Custom labels ===<br />
<br />
Flasher supports to assign custom labels to configurations ("Project Display Text" in U-Flash). This allows to specify easy to remember names for configurations that are stored on the Flasher.<br />
<br />
==== Hardware and software requirements ====<br />
This feature is supported by the following models:<br />
* Flasher Portable PLUS<br />
<br />
This feature is supported since V6.30e of the software package and firmware<br />
<br />
==== Assigning labels ====<br />
The configuration and data file pairs are specified in the <tt>FLASHER.INI</tt> file:<br />
<source><br />
[FILES]<br />
DataFile = "IMAGE0.dat"<br />
ConfigFile = "IMAGE0.cfg"<br />
DataFile1 = "IMAGE1.dat"<br />
ConfigFile1 = "IMAGE1.cfg"<br />
</source><br />
<br />
By default, Flasher will show the names of the configuration and data file:<br />
[[File:FW1_smartwatch_nolabel.png]]<br />
[[File:FW2_smart_meter_nolabel.png]]<br />
<br />
By adding <tt>DisplayName</tt>, <tt>DisplayName1</tt>, ... keys to the <tt>FLASHER.INI</tt>, a custom label can be shown instead:<br />
<source><br />
[FILES]<br />
DisplayName = "FW smartwatch"<br />
DataFile = "IMAGE0.dat"<br />
ConfigFile = "IMAGE0.cfg"<br />
DisplayName1 = "FW smart meter"<br />
DataFile1 = "IMAGE1.dat"<br />
ConfigFile1 = "IMAGE1.cfg"<br />
</source><br />
<br />
The images will now be shown as follows:<br />
[[File:FW1_smartwatch_label.png]]<br />
[[File:FW2_smart_meter_label.png]]<br />
<br />
==== Considerations ====<br />
* 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.<br />
<br />
=== Programming multiple targets ===<br />
<br />
It is possible to program multiple targets which are located in a JTAG chain.<br />
The targets will be programmed each with a configuration and a data file.<br><br />
The configuration for the desired target must be selected before it can be programmed,<br />
this can be done with the <tt>#SELECT</tt> command.<br />
For more information how to use the <tt>#SELECT</tt> command please refer to the [[#ASCII_command_interface|ASCII command interface]].<br />
<br />
'''Example'''<br><br />
Three devices should be programmed.<br><br />
<br />
JTAG Chain: ''TDI'' --> ''Device2'' --> ''Device1'' --> ''Device0'' --> ''TDO''<br><br />
<br />
Three configurations would be stored on the flasher:<br><br />
<br />
Config 0: Configured to program Device0 (DEVICE0.CFG, DEVICE0.DAT)<br><br />
Config 1: Configured to program Device1 (DEVICE1.CFG, DEVICE1.DAT)<br><br />
Config 2: Configured to program Device2 (DEVICE2.CFG, DEVICE2.DAT)<br><br />
<br />
Selection and programming of the target will be done via the ASCII interface:<br><br />
<br />
<source><br />
#SELECT DEVICE0<br />
#AUTO<br />
#SELECT DEVICE1<br />
#AUTO<br />
#SELECT DEVICE2<br />
#AUTO<br />
</source><br />
<br />
==== Programming multiple targets with J-Flash ====<br />
<br />
Programming multiple targets can also be done via J-Flash using the command line interface.<br />
For this each target must be handled with its own project file.<br />
<br />
'''Example'''<br><br />
<br />
<source><br />
JFlash.exe -openproj"Device0.jflash" -open"Device0.hex" -auto -exit<br />
JFlash.exe -openproj"Device1.jflash" -open"Device1.hex" -auto -exit<br />
JFlash.exe -openproj"Device2.jflash" -open"Device2.hex" -auto -exit<br />
</source><br />
<br />
=== Batch Programming in stand-alone mode ===<br />
<br />
Batch programming allows to execute different stand-alone mode jobs in batch to be executed in immediate succession, without any user interaction in between.<br />
This can be used for example to program multiple targets in a JTAG-Chain or multiple data files to a target.<br><br />
A batch may contains an unlimited number of configurations which consist of a data file (*.DAT) and config file (*.CFG).<br />
For further information regarding config and data files, please refer to [[#Preparing for stand-alone operation manually | Preparing for stand-alone operation manually]].<br><br />
In order to specify the batch jobs, a FLASHER.INI file is used.<br />
This init file contains a [BATCH] section which describes which configuration pairs (*.DAT and *.CFG file) should be used for each batch job.<br />
A sample content of a FLASHER.INI file is shown below:<br><br />
<br />
<source><br />
[BATCH]<br />
DataFile = "Flasher0.dat"<br />
ConfigFile = "Flasher0.cfg"<br />
DataFile1 = "Flasher1.dat"<br />
ConfigFile1 = "Flasher1.cfg"<br />
</source><br />
<br />
[[File:Batch_Jobs.bmp]]<br />
<br />
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.<br />
<br />
<br />
[[File:Batch_Programming.bmp]]<br />
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<br />
currently executed action.<br />
<br />
<br />
[[File:Batch_Result.bmp]]<br />
The result of the programming will be shown on the screen after finishing all jobs.<br />
<br />
<br />
Creating / Replacing of the FLASHER.INI file can done in two ways:<br><br />
<ol><br />
<li>Boot Flasher in file access mode in order to replace the FLASHER.INI</li><br />
<li><br />
If Flasher is already integrated into the production line, runs in stand-alone mode and can not be booted in other mode:<br />
Use the file I/O commands provided by the ASCII interface of Flasher, to replace the FLASHER.INI .<br />
For more information about the file I/O commands, please refer to [[#File I/O commands | File I/O commands]].<br />
In case of an error occurred during execution, the Flasher terminates the entire batch processing.<br />
</li><br />
</ol><br />
{{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.}}<br />
{{Note|1=The Flasher with hardware version 4 and lower supports 8.3 filenames only (8 characters filename, 3 characters file extension). Using longer filenames may result in incorrect operation.}}<br />
<br />
==== Flasher Portable specifics ====<br />
<br />
Flasher Portable allows to choose between four different batches during runtime by using the select/arrow button on the front of Flasher Portable.<br />
Which batch configuration is used for which image selection position is specified in the FLASHER.INI.<br />
For this, the FLASHER.INI contents in the [BATCH] section have been extended.<br />
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><br />
<br />
<source><br />
[BATCH]<br />
DataFile = "Flasher0.dat"<br />
ConfigFile = "Flasher0.cfg"<br />
DataFile1 = "Flasher1.dat"<br />
ConfigFile1 = "Flasher1.cfg"<br />
DataFile2 = "Flasher2.dat"<br />
ConfigFile2 = "Flasher2.cfg"<br />
[BATCH1]<br />
DataFile = "TEST.dat"<br />
ConfigFile = "Test.cfg"<br />
[BATCH2]<br />
DataFile = "VALIDATE.dat"<br />
ConfigFile = "Flasher0.cfg"<br />
</source><br />
<br />
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.<br />
From there on, switching between the batches can be done by simply using the selection button of Flasher Portable.<br />
<br />
<br />
<br />
==== Examples ====<br />
<br />
'''Example 1:''' Programming two Data files to the same target<br><br />
<br />
* Open your J-Flash project.<br />
* Use File -> Save Flasher config file... to save the .CFG file (in this example: STM32F4.CFG).<br />
* Select the first binary and use File -> Save Flasher Data file... to save the first .DAT file (in this example: DATA0.DAT).<br />
* Select the second binary and use File -> Save Flasher Data file... to save the second data file .DAT file (in this example: DATA1.DAT).<br />
* Copy the Files to the Flasher e.g. by using file access mode.<br />
* Create a FLASHER.INI file in the root directory of the Flasher.<br />
* Exemplary content of FLASHER.INI:<br><br />
<source><br />
[BATCH]<br />
DataFile = "DATA0.dat"<br />
ConfigFile = "emPower.cfg"<br />
DataFile1 = "DATA1.dat"<br />
ConfigFile1 = "emPower.cfg"<br />
</source><br />
<br />
<br />
'''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><br />
Example scenario: 2 Devices in a JTAG chain, a STM32F1 and a STM32F4. <br><br />
<br />
* Follow the same as described before and additionally:<br />
* Create one project file per target (and create a .CFG file of each one).<br />
* Make sure each project file is configured correctly, especially the JTAG-Chain position (See UM8003 "J-Flash" for more detailed info).<br />
* Exemplary content of FLASHER.INI:<br><br />
<source><br />
[BATCH]<br />
DataFile = "F1DATA.dat"<br />
ConfigFile = "STM32F1.cfg"<br />
DataFile1 = "F4DATA0.dat"<br />
ConfigFile1 = "STM32F4.cfg"<br />
DataFile2 = "F4DATA1.dat"<br />
ConfigFile2 = "STM32F4.cfg"<br />
</source><br />
<br />
'''Example 3:''' Using multiple Batch sections with Flasher Portable.<br><br />
Example scenario: 2 Devices in a JTAG chain, a STM32F1 and a STM32F4.<br><br />
Selection 1 will program the STM32F1 target.<br><br />
Selection 2 will program the STM32F4 target using "F4DATA0.dat".<br><br />
Selection 3 will program the STM32F4 target using "F4DATA1.dat".<br><br />
Selection 4 will execute 1, 2 and 3 in sequence.<br><br />
* Exemplary content of FLASHER.INI:<br><br />
<source><br />
[BATCH]<br />
DataFile = "F1DATA.dat"<br />
ConfigFile = "STM32F1.cfg"<br />
[BATCH1]<br />
DataFile = "F4DATA0.dat"<br />
ConfigFile = "STM32F4.cfg"<br />
[BATCH2]<br />
DataFile = "F4DATA1.dat"<br />
ConfigFile = "STM32F4.cfg"<br />
[BATCH3]<br />
DataFile = "F1DATA.dat"<br />
ConfigFile = "STM32F1.cfg"<br />
DataFile1 = "F4DATA0.dat"<br />
ConfigFile1 = "STM32F4.cfg"<br />
DataFile2 = "F4DATA1.dat"<br />
ConfigFile2 = "STM32F4.cfg"<br />
</source><br />
<br />
=== Serial number programming ===<br />
<br />
Flasher supports programming of serial numbers. In order to use the serial number programming feature,<br />
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><br />
<br />
In general, Flasher supports two ways of programming a serial number into the target:<br />
<br />
#<br />
#* Programming continuous serial numbers.<br />
#* The serial number is 1-4 bytes in size.<br />
#* The start serial number, increment, serial number size, and address are configured in the J-Flash project.<br />
#<br />
#* Programming custom serial numbers from a serial number list file.<br />
#* The start line within the serial number list file to get the next serial number bytes, line increment, serial number size, and address is configured in the J-Flash project.<br />
#* The serial number list file needs to be specified and created by the user.<br />
<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.}}<br />
<br />
==== Serial number settings ====<br />
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.<br />
This is done by enabling the '''Program serial number''' option as shown in the screenshot and table below:<br />
<br />
[[File:UM08039_SN_Sample_JFlashSettings.png]]<br />
<br />
{| class="seggertable"<br />
|-<br />
!| Setting || Meaning<br />
|-<br />
| <tt>Address</tt> || The address the serial number should be programmed at.<br />
|-<br />
| <tt>Length</tt> ||<br />
The length of the serial number (in bytes) that 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 8 is selected as length, the serial number and its complement are programmed at the given address.<br />
* In case a serial number list file is given, the 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 '''Length''', the remaining bytes are filled with 0s. No complements etc. are added to the serial number.<br />
|-<br />
| <tt>Next SN</tt> ||<br />
* In case no serial number list file is given, '''Next SN''' is the next serial number which should be programmed. The serial number is always stored in flash memory in little-endian format.<br />
* In case a serial number list file is given, '''Next SN''' describes the line of the serial number list file where to read the next serial number bytes from. The Flasher starts counting at line 0, so in order to start serial number programming with the first line of the <tt>SNList.txt</tt>, '''Next SN''' needs to be set to 0.<br />
|-<br />
| <tt>Increment</tt> || Specifies by how much '''Next SN''' is incremented.<br />
|}<br />
<br />
=== Serial number file ===<br />
When selecting '''File -> Download serial number file to Flasher''', J-Flash will create a serial number file named as <tt><JFlashProjectName>_Serial.txt</tt>.<br />
This file is downloaded as <tt>Serial.txt</tt> on the Flasher.<br />
The file is generated based on the serial number settings in the J-Flash project and will contain the value defined by the '''Next SN''' option.<br />
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.<br />
<br />
==== Serial number list file ====<br />
<br />
In order to program custom serial numbers which can not be covered by the standard serial number scheme provided by J-Flash<br />
(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.<br />
<br />
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.<br />
This file is downloaded as <tt>SNList.txt</tt> on the 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<br />
* Each byte of the serial number is described by two hexadecimal digits.<br />
<br />
'''Example'''<br><br />
A 8-byte serial number should be programmed at address 0x08000000.<br><br />
<br />
It should be programmed as follows in the memory:<br><br />
<br />
<tt>0x08000000: 0x01 0x02 0x03 0x04 0x55 0x66 0x77 0x88</tt><br><br />
<br />
The serial number list file should look as follows:<br><br />
<br />
<tt>0102030455667788</tt><br />
<br />
[[File:SN_SNList.gif]]<br />
<br />
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><br />
<br />
Which line Flasher will read at the next programming cycle, is configured via the <tt>Next SN</tt> option in J-Flash.<br />
For more information, please refer to [[#Serial number settings | Serial number settings]].<br />
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><br />
<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.}}<br />
{{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.}}<br />
<br />
==== Programming process ====<br />
<br />
Flasher will increment the serial number in SERIAL.TXT by the value defined in <tt>Increment</tt>, after each successful programming cycle.<br><br />
<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><br />
<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.<br />
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.}}<br />
<br />
==== Downloading serial number files to Flasher ====<br />
<br />
Downloading the serial number files needs to be done explicitly by selecting '''File-> Download serial number file to Flasher'''.<br />
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.<br />
<br />
==== Sample setup ====<br />
<br />
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.<br />
<br />
'''Defining serial number address, length and start value'''<br><br />
In the J-Flash project the following needs to be defined:<br><br />
* <tt>Address</tt> is 0x08001000<br />
* <tt>Next SN</tt> is 1234567<br />
* <tt>Increment</tt> is 1<br />
* <tt>Len</tt> is 4 (bytes)<br />
<br />
[[File:SN_Sample_JFlashSettings.gif]]<br />
<br />
'''Downloading configuration, data and serial number to Flasher.'''<br><br />
After setting up the rest of the configuration (Target interface etc.) and selecting an appropriate data file, the configuration,<br />
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><br />
<br />
[[File:SN_Sample_DownloadToFlasher.gif]]<br />
<br />
After downloading the serial number to Flasher, J-Flash also created the <tt><JFlashProjectName>_Serial.txt</tt>.<br />
<br />
[[File:SN_Sample_SerialFileCreated.gif]]<br />
<br />
Now Flasher is prepared to program the 8-byte serial number.<br />
<br />
=== Patch file support ===<br />
<br />
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.<br />
Before starting programming process in stand-alone mode, Flasher will look for a file named <tt>Patches.txt</tt> being present on the Flasher.<br />
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><br />
<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.<br />
<br />
'''Syntax'''<br><br />
<!-- LG xxxxxxxxx '==' is shown as '=', so instead use '= ='--><br />
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><br />
<br />
<tt><NumPatches>,<Addr>,<NumBytes>:<nowiki><Data></nowiki>,<Addr>,<NumBytes>:<nowiki><Data></nowiki>,<Addr>,<NumBytes>:<nowiki><Data></nowiki>,<Addr>,<NumBytes>:<nowiki><Data></nowiki>\r\n</tt><br><br />
<br />
Find below a table which describes each parameter.<br><br />
{| class="seggertable"<br />
|-<br />
! Parameter !! Description<br />
|-<br />
| <tt><NumPatches></tt> || Describes the number of patches in this patch line. Max. value is 4.<br />
|-<br />
| <tt><Addr></tt> || Describes the address to be patched. Value is expected in hex.<br />
|-<br />
| <tt><NumBytes></tt> || Number of bytes for the current patch. Max. value is 20h (32 in decimal). Value is expected in hex.<br />
|-<br />
| <tt><nowiki><Data></nowiki></tt> || Describes the data to be patched. <nowiki><Data></nowiki> is always expected as 2 hexadecimal characters per byte.<br />
|-<br />
|}<br />
<br />
{{Note|1=All values are expected in hexadecimal format (hex).<br><br />
<nowiki><Data></nowiki> section is always preceded by ":", not ",".}}<br />
<br />
'''Example'''<br><br />
Below is an example patch.<br><br />
<br />
<source><br />
1,18,4:01020304\r\n<br />
</source><br />
<br />
Patching the following data:<br />
<br />
[[File:data_before.png]]<br />
<br />
with the example patch will result in the following data:<br />
<br />
[[File:data_afterwards.png]]<br />
<br />
Please note that as mentioned earlier patching undefined memory locations will be ignored.<br><br />
Applying the example patch to the following data:<br />
<br />
[[File:undefined_mem_before.png]]<br />
<br />
Causes no data to be patched, as can be seen in the following image:<br />
<br />
[[File:undefined_mem_no_token.png]]<br />
<br />
Therefore it is necessary to first write placeholder data to the memory locations which are supposed to be patched.<br><br />
An example for such a placeholder can be seen here:<br />
<br />
[[File:undefined_mem_token.png]]<br />
<br />
Please note that the actual data inside the placeholder does not matter to the Flasher,<br />
because it is overwritten during patching.<br><br />
Applying the example patch will now work as expected:<br />
<br />
[[File:undefined_mem_after.png]]<br />
<br />
'''Single patch via RS232'''<br><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><br />
<br />
Send the <tt>#AUTO PATCH <NumPatches>,<Addr>,<NumBytes>:<nowiki><Data></nowiki></tt><br><br />
<br />
command via Flasher ASCII interface. The parameters have the same function as described in the table above.<br />
<br />
==== Newline encoding ====<br />
<br />
In general, for all patch files, init files etc. Flasher supports both newline encodings:<br><br />
<br />
* Windows: \r\n<br />
* Unix/Mac: \n<br />
<br />
All parser functionality etc. are written to be independent from the host operating system.<br />
<br />
=== Limiting the number of programming cycles ===<br />
<br />
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.<br />
To make use of this feature, a file called <tt>Cntdown.txt</tt> needs to be placed on the Flasher.<br />
This file simply contains a decimal number (32-bit unsigned integer) that describes how many programming cycles can be performed with the current setup.<br />
<br />
[[File:CntdownTxtContent.jpg]]<br />
<br />
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><br />
<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>.}}<br />
<br />
==== Changed fail/error LED indicator behavior ====<br />
<br />
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><br />
<br />
* The red error/fail LED will lit for 1 second<br />
* After this, it will blink/toggle x times @ 5 Hz, indicating the number of programming cycles left. (blinking 5 times for 5 cycles left, ...)<br />
<br />
==== Required Flasher hardware version for Cntdown.txt support ====<br />
<br />
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><br />
<br />
* 1621xxxxx (Flasher ARM V2)<br />
* 1630xxxxx (Flasher ARM V3)<br />
* 4210xxxxx (Flasher PPC V1)<br />
* 4110xxxxx (Flasher RX V1)<br />
<br />
All other models / hardware versions support limiting of programming cycles.<br />
<br />
=== Authorized flashing ===<br />
<br />
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.<br />
without the possibility to read out the Flasher contents via file access mode, FILE I/O functionality (J-Link Commander) or RS232 commands.<br />
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.<br />
<br />
==== Creating / Adding the secure area ====<br />
<br />
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.<br />
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.<br />
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><br />
<br />
[[File:CreateSecArea.jpg]]<br />
<br />
The following secure area related commands are available in J-Link Commander:<br><br />
<br />
* securearea create<br />
* securearea remove<br />
<br />
{{Note|1=When creating or removing the <tt>secure area</tt>, all configuration and data files being stored on the Flasher, are lost.<br />
Please make sure that they are not needed anymore, before adding / removing the security area.}}<br />
<br />
==== Moving files to the secure area ====<br />
<br />
Before moving configuration + data to the <tt>secure area</tt>, proper functionality of the setup should be tested in stand-alone mode.<br />
Once the setup is working as expected, do the following, to move the configuration + data into the <tt>secure area</tt>:<br><br />
<br />
* Start Flasher in file access mode (For more info, please refer to: [[#file access mode | file access mode]])<br />
<br />
[[File:FilesBeforeSecure.png]]<br />
<br />
* Create a folder "<tt>_SECURE</tt>"<br />
* Move all files that shall be moved to the <tt>secure area</tt>, into this folder<br />
<br />
[[File:FilesAfterSecure.png]]<br />
<br />
* 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.<br />
* Now Flasher can be used in stand-alone mode, as normal, but the files cannot be read back by the user / operator.<br />
<br />
==== Considerations to be taken when using the secure area ====<br />
<br />
When using the <tt>secure area</tt>, some things need to be considered:<br><br />
<br />
* All features like multiple file support, patch file support etc. can also be used when operating from the <tt>secure area</tt>.<br />
* 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>.<br />
* 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>.<br />
* 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.<br />
<br />
==== Required Flasher hardware version ====<br />
<br />
Older Flasher models do not support authorized flashing. The Flashers with the following serial number ranges do not support authorized flashing:<br><br />
<br />
* 1621xxxxx (Flasher ARM V2)<br />
* 1630xxxxx (Flasher ARM V3)<br />
* 4210xxxxx (Flasher PPC V1)<br />
* 4110xxxxx (Flasher RX V1)<br />
<br />
All other models / hardware versions support authorized flashing.<br />
<br />
=== Target interfaces ===<br />
<br />
The table below shows the supported target interfaces of the different Flasher models.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! Supported interfaces<br />
|-<br />
| Flasher PRO || JTAG, SWD<br />
|-<br />
| Flasher Compact || JTAG, SWD<br />
|-<br />
| Flasher ARM || JTAG, SWD<br />
|-<br />
| Flasher RX || JTAG<br />
|-<br />
| Flasher PPC || JTAG<br />
|-<br />
|}<br />
<br />
For more information about the target interfaces itself, please refer to:<br><br />
<br />
* ''UM08001, chapter "Working with J-Link and J-Trace", section "JTAG interface"''<br />
* ''UM08001, chapter "Working with J-Link and J-Trace", section "SWD interface"''<br />
<br />
=== Supported architectures ===<br />
<br />
Flasher supports programming of the internal flash of a large number of different microcontrollers.<br />
The number of supported devices is steadily growing. You can always find the latest list of supported devices on our website:<br><br />
<br />
''http://www.segger.com/supported-devices.html''<br />
<br />
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.<br />
Also the existence of the device may have confidential status, so it might not be mentioned as being supported in public releases yet.<br />
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.<br />
<br />
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).<br />
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.<br />
<br />
If a device is not supported, you can always contact us. We will be happy to provide you with an offer.<br />
<br />
==== External flashes ====<br />
<br />
In general our Flashers support programming of external flashes listed below:<br>(Can differ between Flasher models and hardware versions)<br />
<br />
* parallel NOR flash<br />
* SPI / QSPI flash<br>(see: ''[[SPI_support_by_Flasher_models]]'')<br />
* NAND flash<br />
* I<sup>2</sup>C EEPROM/Flash<br />
* FRAM<br />
<br />
If the parallel NOR flash device which is used is not CFI-compliant you have to select the flash device in J-Flash explicitly,<br />
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''.<br />
<br />
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.<br />
The J-Flash software comes with sample projects for ''Open Flashloader''.<br />
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''<br />
{{Note|1=Complete Information about ''Open Flashloaders'' can be found in our Wiki:<br>''[[Open_Flashloader]]''}}<br />
<br />
==== Cores ====<br />
<br />
===== Flasher ARM =====<br />
<br />
Flasher ARM supports and has been tested with the following cores, but should work with any ARM7/9, Cortex-M0/M1/M3/M4 core.<br />
If you experience problems with a particular core, do not hesitate to contact Segger.<br><br />
<br />
* ARM7TDMI (Rev 1)<br />
* ARM7TDMI (Rev 3)<br />
* ARM7TDMI-S (Rev 4)<br />
* ARM920T<br />
* ARM922T<br />
* ARM926EJ-S<br />
* ARM946E-S<br />
* ARM966E-S<br />
* Cortex-M0<br />
* Cortex-M1<br />
* Cortex-M3<br />
* Cortex-M4<br />
<br />
===== Flasher RX =====<br />
<br />
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><br />
<br />
* RX610<br />
* RX621<br />
* RX62N<br />
* RX62T<br />
<br />
===== Flasher PPC =====<br />
<br />
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.<br />
<br />
* e200z0<br />
<br />
===== Flasher PRO/Compact/Portable PLUS =====<br />
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/''.<br />
<br />
=== Programming multiple targets in parallel ===<br />
<br />
To program multiple targets in parallel there are the following possibilities:<br />
* Using a Flasher gang, or<br />
* Using multiple Flashers, each connecting to one CPU.<br />
<br />
Devices for gang programming are:<br />
* Flasher Hub-12 in conjunction with up to 12 Flasher (Compact). Please refer to [[UM08043_Flasher_Hub-12|Flasher Hub-12 user manual (UM08043_Flasher_Hub-12)]].<br />
* Flasher ATE; suitable for programming up to 10 targets in parallel. Please refer to [https://www.segger.com/downloads/flasher/UM08035 Flasher ATE user manual (UM08035_FlasherATE.pdf)].<br />
When using multiple flashers, this can be done with the J-Flash production programming software.<br />
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''<br />
<br />
=== Logfiles and Quality Management ===<br />
<br />
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:<br />
<source lang="c"><br />
SN: 1 - Failed<br />
SN: 1 - Failed<br />
SN: 2 - O.K. (931 ms)<br />
SN: 3 - O.K. (931 ms)<br />
SN: 4 - O.K. (933 ms)<br />
SN: 5 - O.K. (932 ms)<br />
</source><br />
If applicable, the logfile contains more detailed error messages. For example:<br />
<source lang="c"><br />
ERROR: Programming failed @ address 0x00000000 (1)<br />
ERROR: Cannot connect to CPU. Target interface speed too high?<br />
</source><br />
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:<br />
<source lang="c"><br />
Verify error config word area @<br />
config word<br />
config word read back<br />
Verify error flash area @<br />
data from file<br />
data read back<br />
</source><br />
{{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.}}<br />
<br />
== TCP Services ==<br />
This chapter describes the integrated TCP services.<br />
<br />
=== FTP Server ===<br />
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><br />
[[File:FTPServer.png]]<br />
<br />
==== Access data ====<br />
Anonymous access to the FTP server is limited to read-only access to the file system.<br><br />
For write access, special login credentials have to be used:<br><br />
<tt>Login: admin</tt><br><br />
<tt>Password: 1234</tt><br><br />
<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.<br />
It is not meant as a security feature.}}<br />
<br />
=== Web server ===<br />
<br />
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.<br />
For the network, the IP address settings can be changed and a nick name can be assigned to the device.<br><br />
<br />
Additionally, the web interface provides information about the status of the integrated operating system, the IP stack and the target hardware.<br />
<br />
== Remote control ==<br />
This chapter describes how to control the Flasher in standalone mode.<br />
<br />
=== Overview ===<br />
There are 3 ways to control Flasher operation:<br><br />
{| class="seggertable"<br />
! Type of control !! Description<br />
|-<br />
| Button || Programming operation starts when pressing the PROG-button. The LEDs serve as visible indicators.<br />
|-<br />
| Handshake || 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.<br />
|-<br />
| Terminal || Terminal communication via TELNET, RS232 or VCOM with the [[#ASCII command interface]]<br />
|}<br />
<br />
<br />
{{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.}}<br />
<br />
=== Handshake control ===<br />
<br />
Some Flasher models are equipped with additional hardware control functions that are connected to the SUBD9 male connector, normally used as an RS232 interface to the PC.<br />
These Flasher models can therefore be controlled remotely by automated testers without the need for a connection to a PC.<br />
<br />
The handshake control is available for the following Flashers:<br />
* Flasher ARM<br />
* Flasher PRO<br />
* Flasher Compact (via Flasher Hub and Flasher Hub-12 only)<br />
<br />
The following diagrams show the internal remote control circuitry of Flasher:<br><br />
<br />
[[File:FlasherRemotecontrol.png]]<br />
{| class="seggertable"<br />
|-<br />
! Pin No. !! Function !! Description<br />
|-<br />
| 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.<br />
|-<br />
| 4 || BUSY || As soon as the "Auto" function is started, BUSY becomes active, which means that transistor is switched OFF.<br />
|-<br />
| 5 || GND || Common Signal ground.<br />
|-<br />
| 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.<br />
|-<br />
|}<br />
[[File:FlasherRemoteSignal.png]]<br />
<br />
=== ASCII command interface ===<br />
<br />
==== Introduction ====<br />
<br />
Once set up using J-Flash, the Flasher can be driven by any application or just a simple terminal using ASCII commands.<br><br />
<br />
Every known command is acknowledged by the Flasher and then executed. After command execution, Flasher sends an ASCII reply message.<br><br />
<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}}<br />
<br />
==== General command and reply message format ====<br />
<br />
* Any ASCII command has to start with the start delimiter ''#''.<br />
* Any ASCII command has to end with simple carriage return ('\r', ASCII code 13).<br />
* Commands can be sent upper or lower case<br />
<br />
==== General usage ====<br />
<br />
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.<br />
<br />
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).<br />
<br />
==== Settings for ASCII interface via RS232 ====<br />
<br />
Flasher is driven via a RS232 serial port with the following interface settings:<br><br />
<br />
* 9600 baud<br />
* 8 data bits<br />
* no parity<br />
* 1 stop bit<br />
<br />
The baud rate can be changed by using the <tt>#BAUDRATE</tt> command.<br />
<br />
==== Settings for ASCII interface via Telnet ====<br />
<br />
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><br />
<br />
[[File:telnet_connection.gif]]<br />
<br />
==== Settings for ASCII interface via VCOM ====<br />
<br />
The same settings can be used for VCOM as for [[#Settings for ASCII interface via RS232|RS232]].<br />
<br />
{{Note|The performance also depends on the terminal application used on the PC.}}<br />
<br />
==== Commands and replies ====<br />
<br />
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><br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| Commands to the Flasher<br />
|-<br />
| <tt>#BAUDRATE <Baudrate></tt><br />
|-<br />
| <tt>#AUTO</tt><br />
|-<br />
| <tt>#AUTO PATCH</tt><br />
|-<br />
| <tt>#AUTO NOINFO</tt><br />
|-<br />
| <tt>#CANCEL</tt><br />
|-<br />
| <tt>#ERASE</tt><br />
|-<br />
| <tt>#PROGRAM</tt><br />
|-<br />
| <tt>#RESULT</tt><br />
|-<br />
| <tt>#SELECT <Filename></tt><br />
|-<br />
| <tt>#START</tt><br />
|-<br />
| <tt>#STATUS</tt><br />
|-<br />
| <tt>#VERIFY</tt><br />
|-<br />
| <tt>#READ</tt><br />
|-<br />
| <tt>#QUIT</tt><br />
|-<br />
| <tt>#VERBOSE <Level></tt><br />
|-<br />
!colspan="100%"| File I/O commands<br />
|-<br />
| <tt>#FCLOSE</tt><br />
|-<br />
| <tt>#FCRC</tt><br />
|-<br />
| <tt>#FDELETE <Filename></tt><br />
|-<br />
| <tt>#FFORMAT</tt><br />
|-<br />
| <tt>#FOPEN <Filename></tt><br />
|-<br />
| <tt>#FREAD <Offset>,<NumBytes></tt><br />
|-<br />
| <tt>#FSIZE</tt><br />
|-<br />
| <tt>#FWRITE <Offset>,<NumBytes>:<nowiki><Data></nowiki></tt><br />
|-<br />
| <tt>#FLIST</tt><br />
|-<br />
| <tt>#MKDIR <Dirname></tt><br />
|-<br />
!colspan="100%"| SecureArea commands<br />
|-<br />
| <tt>#HASSECUREAREA</tt><br />
|-<br />
| <tt>#SECUREAREA <action></tt><br />
|-<br />
!colspan="100%"| Replies from the Flasher<br />
|-<br />
| <tt>#ACK</tt><br />
|-<br />
| <tt>#NACK</tt><br />
|-<br />
| <tt>#OK</tt><br />
|-<br />
| <tt>#OK:<NumBytes>:<nowiki><Data></nowiki></tt><br />
|-<br />
| <tt>#OK:<Size></tt><br />
|-<br />
| <tt>#STATUS:</tt><br />
|-<br />
| <tt>#DONE</tt><br />
|-<br />
| <tt>#ERRxxx</tt><br />
|-<br />
|}<br />
<br />
===== Commands to the Flasher =====<br />
<br />
'''#AUTO'''<br><br />
The <tt>#AUTO</tt> command behaves exactly as the start button or external remote control input.<br><br />
<br />
Usually, the following command sequence will be performed when receiving the <tt>#AUTO</tt> command:<br><br />
<br />
* The Flasher erases the target CPU (if not blank)<br />
* The Flasher programs the target CPU<br />
* The Flasher verifies the target CPU<br />
<br />
Depending on the settings chosen in the '''Production''' tab in J-Flash, this sequence can differ from the one shown above.<br><br />
<br />
Finally, Flasher responds with<br><br />
<br />
* <tt>#OK</tt> if no error occurred<br />
* <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.<br />
<br />
During execution of the <tt>#AUTO</tt> command, Flasher automatically sends "status" messages via RS232 to reflect the state of execution.<br />
Typically during execution of <tt>#AUTO</tt> command, Flasher will reply the following sequence of messages:<br><br />
<br />
<tt>#ACK</tt><br><br />
<tt>#STATUS:INITIALIZING</tt><br><br />
<tt>#STATUS:CONNECTING</tt><br><br />
<tt>#STATUS:UNLOCKING</tt><br><br />
<tt>#STATUS:ERASING</tt><br><br />
<tt>#STATUS:PROGRAMMING</tt><br><br />
<tt>#STATUS:VERIFYING</tt><br><br />
<tt>#OK (Total 13.993s, Erase 0.483s, Prog 9.183s, Verify 2.514s)</tt><br><br />
<br />
'''#AUTO PATCH'''<br><br />
The <tt>#AUTO</tt> PATCH command allows patching of the content of the data to be programmed.<br><br />
<br />
Flasher responds with<br><br />
<br />
* <tt>#OK</tt> if no error occurred<br />
* <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.<br />
<br />
For further information about the usage of the <tt>#AUTO PATCH</tt> command please refer to [[#Patch file support | Patch file support]].<br />
<br />
'''#AUTO NOINFO'''<br><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><br />
<br />
The command ends with <tt>#OK</tt> or <tt>#ERRxxx</tt><br />
<br />
'''#BAUDRATE <Baudrate>'''<br><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><br />
<br />
If this command succeeds, Flasher responds with:<br><br />
<br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<br />
Otherwise it will respond with one of the following error messages:<br><br />
<br />
<tt>#ERR255: Invalid parameters</tt><br><br />
<tt>or</tt><br><br />
<tt>#ERR255: Baudrate is not supported</tt><br><br />
<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.<br />
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.}}<br />
<br />
'''#CANCEL'''<br><br />
This command can be sent to abort a running program. It may take a while until the current program is actually canceled.<br><br />
<br />
Flasher will respond with:<br><br />
<br />
<tt>#ERR007:CANCELED.</tt><br><br />
<br />
'''#ERASE'''<br><br />
This command can be sent to erase all selected target flash sectors.<br><br />
<br />
Flasher will reply the following sequence of messages:<br><br />
<br />
<tt>#ACK</tt><br><br />
<tt>#STATUS:INITIALIZING</tt><br><br />
<tt>#STATUS:CONNECTING</tt><br><br />
<tt>#STATUS:UNLOCKING</tt><br><br />
<tt>#STATUS:ERASING</tt><br><br />
<tt>#OK (Total 0.893s, Erase 0.483s)</tt><br><br />
<br />
'''#PROGRAM'''<br><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.<br />
<br />
'''#RESULT'''<br><br />
This command can be sent any time, even during other command execution. Flasher responds with the last result of the previously executed command.<br />
<br />
'''#SELECT <Filename>'''<br><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.<br />
<tt><Filename></tt> specifies the name of file pair without extensions (.CFG and .DAT) on the Flasher which should be selected. If you are<br />
using the universal flash programming mode, <tt><Filename></tt> specifies the full name of the .UNI file '''including''' the extension.<br />
Flasher saves the selected config and data file in the FLASHER.INI file. So this selection is remembered even between power-cycling Flasher.<br><br />
<br />
This may be verfy helpful in cases where several config and data files are stored on Flasher.<br />
The user can easily switch between these config and data files without connecting Flasher to a host.<br><br />
<br />
If this command succeeds, Flasher responds with:<br><br />
<br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<br />
Find below a sample sequence which shows how to use the <tt>#SELECT</tt> command:<br><br />
<br />
<tt>#SELECT ATSAM7_1 // ATSAM7_1.CFG and ATSAM7_1.DAT is selected</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<tt>#AUTO // Start auto programming</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#STATUS:INITIALIZING</tt><br><br />
<tt>#STATUS:CONNECTING</tt><br><br />
<tt>#STATUS:UNLOCKING</tt><br><br />
<tt>#STATUS:ERASING</tt><br><br />
<tt>#STATUS:PROGRAMMING</tt><br><br />
<tt>#STATUS:VERIFYING</tt><br><br />
<tt>#OK (Total 8.416s, Erase 0.005s, Prog 6.845s, Verify 0.959s)</tt><br><br />
<tt>#SELECT ATSAM7_2 // ATSAM7_2.CFG and ATSAM7_2.DAT is selected</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<tt>#AUTO // Start auto programming</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#STATUS:INITIALIZING</tt><br><br />
<tt>#STATUS:CONNECTING</tt><br><br />
<tt>#STATUS:UNLOCKING</tt><br><br />
<tt>#STATUS:ERASING</tt><br><br />
<tt>#STATUS:PROGRAMMING</tt><br><br />
<tt>#STATUS:VERIFYING</tt><br><br />
<tt>#OK (Total 8.632s, Erase 0.005s, Prog 7.051s, Verify 0.969s)</tt><br><br />
<br />
'''#START'''<br><br />
This command can be sent to start the application using the method configured in the J-Flash project.<br><br />
For U-Flash projects, however, the target application is not necessarily started. <br><br />
There is often a "start application" checkbox in the U-Flash settings which have to be set for this.<br />
<br />
Flasher will reply with the following sequence of messages:<br><br />
<br />
<tt>#ACK</tt><br><br />
<tt>#STATUS:INITIALIZING</tt><br><br />
<tt>#STATUS:CONNECTING</tt><br><br />
<tt>#OK (Total 1.148s)</tt><br><br />
<br />
'''#STATUS'''<br><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]].<br />
<br />
'''#VERIFY'''<br><br />
This command can used to verify the target flash content against the data stored in Flasher.<br />
<br />
'''#READ'''<br><br />
Only available for devices supported by U-Flash.<br><br />
This command can used to read out flash data.<br><br />
More information: [https://wiki.segger.com/Flasher/How_to_read_data_from_a_device_using_U-Flash How to read data using U-Flash]<br />
<br />
'''#QUIT'''<br><br />
This command can be used to terminate the active telnet connection from the server side (Flasher).<br />
The command provides an easy way to terminate the session from an automated script.<br />
It is not necessary to parse stdout and switch to local command mode to disconnect.<br />
Not implemented in the Flasher ATE or Flasher Hub.<br />
<br />
'''#VERBOSE <Level>'''<br><br />
This command can be used to change the verbosity level. <br><br />
* Verbosity level 0: Default. <br><br />
* Verbosity level 1: Provides some additional messages during the programming process.<br />
<br />
===== File I/O commands =====<br />
<br />
The ASCII interface of the Flasher also supports file I/O operations.<br />
<br />
The following file I/O commands are supported:<br><br />
<br />
'''#FCLOSE'''<br><br />
The <tt>#FCLOSE</tt> command closes the file on Flasher which was opened via <tt>#FOPEN</tt>.<br />
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><br />
<br />
A typical sequence when using the <tt>#FCLOSE</tt> command does look like as follows:<br><br />
<br />
<tt>#FCLOSE</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<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><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:No file opened</tt><br />
}}<br />
<br />
'''#FCRC'''<br><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>.<br />
The CRC will be also reported by J-Flash when downloading or saving files via J-Flash.<br><br />
<br />
A typical sequence when using the <tt>#FCRC</tt> command does look like as follows:<br><br />
<br />
<tt>#FCRC flasher.dat</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK:0x75BC855A</tt><br><br />
<br />
'''#FDELETE <Filename>'''<br><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><br />
<br />
A typical sequence when using the <tt>#FDELETE</tt> command does look like as follows:<br><br />
<br />
<tt>#FDELETE flasher.dat</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<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><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:Failed to delete file</tt><br />
}}<br />
<br />
'''#FFORMAT'''<br><br />
The <tt>#FFORMAT</tt> command is used to delete all files located in the public area of the Flasher's internal memory.<br />
<br />
{{Note|1=Please note that this command deletes all projects located in the public area. Deleted projects cannot be restored again.<br><br />
This command does not delete the Flasher firmware, neither does it delete files in the secure area.<br />
}}<br />
<br />
A typical sequence using the <tt>#FFORMAT</tt> command does look like as follows:<br><br />
<br />
<tt>#FFORMAT</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#DONE</tt><br><br />
<br />
'''#FOPEN <Filename>'''<br><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.<br />
If <tt><Filename></tt> can not be found on Flasher a new one will be created.<br><br />
<br />
A typical sequence using the <tt>#FOPEN</tt> command does look like as follows:<br><br />
<br />
<tt>#FOPEN flasher.dat</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<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><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:A file has already been opened</tt><br />
}}<br />
<br />
'''#FREAD <Offset>,<NumBytes>'''<br><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.<br />
<tt><NumBytes></tt> specifies the number of bytes which should be read.<br><br />
<br />
A typical sequence when using the <tt>#FREAD</tt> command does look like as follows:<br><br />
<br />
<tt>#FREAD 0,4</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK:04:466c6173</tt><br><br />
<br />
If the <tt>#FREAD</tt> command succeeds, Flasher will finally respond with a <tt>#OK:<NumBytes>:<nowiki><Data></nowiki></tt> reply message.<br />
For more information about the Flasher reply messages, please refer to [[#Replies from Flasher | Replies from Flasher]].<br><br />
<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><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:No file opened</tt>}}<br />
<br />
'''#FSIZE'''<br><br />
The <tt>#FSIZE</tt> command is used to get the size of the currently opened file on Flasher.<br><br />
<br />
A typical sequence when using the <tt>#FSIZE</tt> command does look like as follows:<br><br />
<br />
<tt>#FSIZE</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK:10 // file on flasher which is currently open, has a size of 16 bytes</tt><br><br />
<br />
If the <tt>#FSIZE</tt> command succeeds, Flasher will respond with a <tt>#OK:<Size></tt> reply message.<br />
For more information about the Flasher reply messages, please refer to [[#Replies from Flasher | Replies from Flasher]].<br><br />
<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><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:No file opened</tt>}}<br />
<br />
'''#FWRITE <Offset>,<NumBytes>:<nowiki><Data></nowiki>'''<br><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.<br />
<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.<br />
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><br />
<br />
<tt><Offset></tt> and <tt><NumBytes></tt> are expected in hexadecimal format.<br><br />
<br />
<tt>#FWRITE 0,200:<nowiki><Data></nowiki></tt><br><br />
<tt>#FWRITE 200,200:<nowiki><Data></nowiki></tt><br><br />
<br />
The data is expected in hexadecimal format (two hexadecimal characters per byte). The following example illustrates the use of <tt>#FWRITE</tt>:<br />
<br />
<tt>Data to be send: Hello !</tt><br><br />
<tt>ASCII values: 0x48, 0x65, 0x6C, 0x6C, 0x6F, 0x20, 0x21</tt><br><br />
<br />
<tt>#FWRITE 0,7:48656C6C6F2021</tt><br><br />
<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><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:No file opened</tt><br>}}<br />
<br />
'''#FLIST'''<br><br />
The <tt>#LIST</tt> command is used to list all files stored on the Flasher.<br><br />
<br />
A typical sequence using the <tt>#FLIST</tt> command does look like as follows:<br><br />
<br />
<tt>#FLIST</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>FLASHER.INI Size: 60</tt><br><br />
<tt>SERIAL.TXT Size: 3</tt><br><br />
<tt>FLASHER.LOG Size: 207</tt><br><br />
<tt>FOLDER (DIR)</tt><br><br />
<tt>FOLDER\\TEST1.CFG Size: 2048</tt><br><br />
<tt>FOLDER\\TEST1.DAT Size: 12288</tt><br><br />
<tt>#OK</tt><br><br />
<br />
'''#MKDIR <Dirname>'''<br><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><br />
<br />
A typical sequence using the <tt>#MKDIR</tt> command does look like as follows:<br><br />
<br />
<tt>#MKDIR folder</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<br />
{{Note|1=If the directory can not be created because of a bad <tt><Dirname></tt> argument, Flasher will respond with:<br><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:Failed to create directory</tt><br>}}<br />
<br />
===== Secure Area Commands =====<br />
<br />
'''#HASSECUREAREA'''<br><br />
The <tt>#HASSECUREAREA</tt> command checks if the Flasher is configured with a secure area.<br />
<br />
<tt>#RESULT:YES</tt> indicates the secure area is present, <tt>#RESULT:NO</tt> indicates no secure area is present.<br />
<br />
'''#SECUREAREA'''<br><br />
The <tt>#SECUREAREA <action></tt> command allows to create or remove the secure area on the Flasher.<br />
<br />
* the action <tt>CREATE</tt> creates the secure area.<br />
* the action <tt>REMOVE</tt> will remove the secure area.<br />
<br />
A typical sequence using the <tt>#SECUREAREA</tt> command does look like as follows:<br><br />
<br />
<tt>#SECUREAREA CREATE</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#DONE</tt><br><br />
<br />
{{Note|1=When creating or removing the <tt>secure area</tt>, all configuration and data files being stored on the Flasher, are lost.<br />
Please make sure that they are not needed anymore, before adding / removing the security area.}}<br />
<br />
<br />
<br />
===== Replies from Flasher =====<br />
<br />
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.<br />
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.<br />
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><br />
<br />
<tt>#OK (Total 13.993s, Erase 0.483s, Prog 9.183s, Verify 2.514s)</tt><br><br />
<br />
The following reply messages from Flasher are defined:<br><br />
<br />
'''#ACK'''<br><br />
Flasher replies with <tt>#ACK</tt> message on reception of any defined command before the command itself is executed.<br />
<br />
'''#NACK'''<br><br />
Flasher replies with <tt>#NACK</tt>, if an undefined command was received.<br />
<br />
'''#OK'''<br><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.<br />
<br />
'''#OK:<NumBytes>:<nowiki><Data></nowiki>'''<br><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.<br />
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).<br />
<br />
'''#OK:<Size>'''<br><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.<br />
<br />
'''#STATUS:'''<br><br />
The Flasher replies with its current state.<br><br />
<br />
The following status messages are currently defined:<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Message !! Description<br />
|-<br />
| <tt>#STATUS:READY</tt> || Flasher is ready to receive a new command.<br />
|-<br />
| <tt>#STATUS:CONNECTING</tt> || Flasher initializes connection to target CPU.<br />
|-<br />
| <tt>#STATUS:INITIALIZING</tt> || Flasher performs self check and internal init.<br />
|-<br />
| <tt>#STATUS:UNLOCKING</tt> || Unlocking flash sectors.<br />
|-<br />
| <tt>#STATUS:ERASING</tt> || Flasher is erasing the flash of the target device.<br />
|-<br />
| <tt>#STATUS:PROGRAMMING</tt> || Flasher is programming the flash of the target device.<br />
|-<br />
| <tt>#STATUS:VERIFYING</tt> || Flasher verifies the programmed flash contents.<br />
|-<br />
|}<br />
<br />
'''#ERRxxx'''<br><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><br />
<br />
Some error codes may be followed by colon and an additional error text.<br><br />
<br />
For example:<br><br />
<br />
<tt>#ERR007:CANCELED.</tt><br><br />
<br />
The error code numbers are described in the following table:<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Message !! Description<br />
|-<br />
| <tt>#ERR007</tt> || Flasher received <tt>#CANCEL</tt> command and has canceled the current operation.<br />
|-<br />
| <tt>#ERR008</tt> || Flasher is already busy with execution of previous command.<br />
|-<br />
| <tt>#ERR009</tt> || Failed to allocate memory.<br />
|-<br />
| <tt>#ERR010</tt> || Failed to open file.<br />
|-<br />
| <tt>#ERR011</tt> || Failed to read file.<br />
|-<br />
| <tt>#ERR012</tt> || Failed to write file.<br />
|-<br />
| <tt>#ERR013</tt> || Failed to delete file.<br />
|-<br />
| <tt>#ERR255</tt> || Undefined error occurred. This reply is followed by an error string.<br />
|-<br />
|}<br />
<br />
== Performance ==<br />
<br />
The following chapter lists programming performance of common flash devices andmicrocontrollers.<br />
<br />
=== Performance of MCUs with internal flash memory ===<br />
<br />
==== Flasher ARM ====<br />
<br />
The following table lists program and erase performance values of Flasher ARM for different controllers.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Microcontroller !! Size [kByte] !! Erase time [sec] !! Program time [sec] !! Verify time [sec] !! Total time [sec]<br />
|-<br />
| Analog Devices || 62 || 2.943 || 2.286 || 0.563 || 5.792<br />
|-<br />
| Atmel AT91SAM7S64 || 64 || --- || 3.488 || 0.438 || 3.926<br />
|-<br />
| Atmel AT91SAM7S256 || 256 || --- || 7.709 || 1.053 || 8.762<br />
|-<br />
| NXP LPC1768 || 512 || 3.740 || 8.559 || 5.092 || 17.391<br />
|-<br />
| NXP LPC2106 || 120 || 0.448 || 1.204 || 0.634 || 2.286<br />
|-<br />
| NXP LPC2129 || 248 || 0.449 || 2.916 || 1.347 || 4.712<br />
|-<br />
| NXP LPC2138 || 500 || 0.448 || 5.488 || 2.649 || 8.585<br />
|-<br />
| NXP LPC2148 || 500 || 0.448 || 5.632 || 2.721 || 8.801<br />
|-<br />
| NXP LPC2294 || 2048 || 0.808 || 15.976 || 9.669 || 26.453<br />
|-<br />
| NXP LPC2478 || 504 || 0.448 || 5.419 || 2.559 || 8.426<br />
|-<br />
| ST STM32F103ZE || 512 || 0.028 || 18.763 || 3.939 || 22.730<br />
|-<br />
| ST STR711 || 272 || 0.429 || 5.476 || 4.742 || 10.647<br />
|-<br />
| ST STR912 || 544 || 1.167 || 12.907 || 5.236 || 19.310<br />
|-<br />
| TI TMS470R1B1M || 1024 || 2.289 || 8.147 || 5.362 || 15.798<br />
|-<br />
|}<br />
<br />
==== Flasher PRO ====<br />
See Flasher ARM.<br />
<br />
==== Flasher Compact ====<br />
See Flasher ARM.<br />
<br />
==== Flasher RX ====<br />
<br />
The following table lists program and erase performance values of Flasher RX.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Microcontroller !! Size [kByte] !! Erase time [sec] !! Program time [sec] !! Verify time [sec] !! Total time [sec]<br />
|-<br />
| R5F56108 || 2.048 || 9.523 || 11.915 || 3.890 || 25.585<br />
|-<br />
|}<br />
<br />
==== Flasher PPC ====<br />
<br />
The following table lists program and erase performance values of Flasher PPC.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Microcontroller !! Size [kByte] !! Erase time [sec] !! Program time [sec] !! Verify time [sec] !! Total time [sec]<br />
|-<br />
| ST SPC560B50 || 576 || 4.747 || 4.159 || 1.929 || 10.917<br />
|-<br />
|}<br />
<br />
== Hardware ==<br />
<br />
This chapter gives an overview about Flasher specific hardware details,<br />
such as the pinouts and available adapters.<br />
<br />
=== Flasher ARM 20-pin JTAG/SWD Connector ===<br />
<br />
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.<br />
<br />
==== Pinout JTAG ====<br />
<br />
[[File:jtag_port_20pin.jpg]] <!-- LG xxxxxx image has been cropped to fit page --><br />
<br />
The following table lists the Flasher JTAG pinout.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! PIN !! SIGNAL !! TYPE !! Description<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 13 || TDO || Input || JTAG data output from target CPU. Typically connected to TDO of target CPU.<br />
|-<br />
| 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".<br />
|-<br />
| 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.<br />
|-<br />
| 19 || 5V-Target supply || Output || This pin can be used to supply power to the target board. Please note the specifications. [[#Target power supply]]<br />
|-<br />
|}<br />
<br />
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.<br />
<br />
==== Pinout SWD ====<br />
<br />
The 20-pin connector of Flasher is also compatible to ARM's Serial Wire Debug (SWD) interface.<br><br />
<br />
[[File:SWD_Port.jpg]] <!-- LG xxxxxx image has been cropped to fit page --><br />
<br />
The following table lists the J-Link / J-Trace SWD pinout.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! PIN !! SIGNAL !! TYPE !! Description<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 7 || SWDIO || I/O || Single bi-directional data pin.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 13 || SWO || Output || Serial Wire Output trace port. (Optional, not required for SWD communication.)<br />
|-<br />
| 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".<br />
|-<br />
| 17 || Not used || NC || This pin is not connected in J-Link.<br />
|-<br />
| 19 || 5V-Target supply || Output || This pin can be used to supply power to the target board. Please note the specifications. [[#Target power supply]]<br />
|-<br />
|}<br />
<br />
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.<br />
<br />
==== Target power supply ====<br />
<br />
Pin 19 of the connector can be used to supply power to the target hardware. Supply voltage is 5V, max. current is 400mA.<br />
The output current is monitored and protected against overload and short-circuit.<br><br />
<br />
Power can be controlled via the J-Link commander. The following commands are available to control power:<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Command !! Explanation<br />
|-<br />
| <tt>power on</tt> || Switch target power on<br />
|-<br />
| <tt>power off</tt> || Switch target power off<br />
|-<br />
| <tt>power on perm</tt> || Set target power supply default to "on"<br />
|-<br />
| <tt>power off perm</tt> || Set target power supply default to "off"<br />
|-<br />
|}<br />
<br />
=== Flasher RX 14-pin connector ===<br />
<br />
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.<br />
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.<br />
<br />
[[File:jtag_port_14pin.wmf]]<br />
<br />
The following table lists the Flasher RX 14-pin JTAG pinout.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Pin !! Signal !! Type !! Description<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 5 || TDO || Input || JTAG data output from target CPU. Typically connected to TDO on target CPU.<br />
|-<br />
| 6 || --- || NC || This pin is not connected to Flasher RX.<br />
|-<br />
| 7 || --- || NC || This pin is not connected to Flasher RX.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 10 || --- || NC || This pin is not connected to Flasher RX.<br />
|-<br />
| 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.<br />
|-<br />
| 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".<br />
|-<br />
|}<br />
<br />
* All pins marked NC are not connected to Flasher RX. Any signal can be applied here; Flasher RX will simply ignore such a signal.<br />
* Pins 2, 12, 14 are GND pins connected to GND in Flasher RX. They should also be connected to GND in the target system.<br />
<br />
==== Target power supply ====<br />
<br />
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.<br />
Power can be controlled via the J-Link commander. The following commands are available to control power:<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Command !! Explanation<br />
|-<br />
| <tt>power on</tt> || Switch target power on<br />
|-<br />
| <tt>power off</tt> || Switch target power off<br />
|-<br />
| <tt>power on perm</tt> || Set target power supply default to "on"<br />
|-<br />
| <tt>power off perm</tt> || Set target power supply default to "off"<br />
|-<br />
|}<br />
<br />
=== Flasher PPC 14-pin connector ===<br />
<br />
Flasher PPC itself has a 20-pin JTAG connector mounted but comes with a 14-pin adapter for PowerPC devices.<br><br />
<br />
[[File:JTAG_PPC_14pin_adapter.wmf]]<br />
<br />
The following table lists the Flasher PPC 14-pin JTAG pinout.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Pin !! Signal !! Type !! Description<br />
|-<br />
| 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.<br />
|-<br />
| 3 || TDO || Input || JTAG data output from target CPU. Typically connected to TDO on target CPU.<br />
|-<br />
| 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.<br />
|-<br />
| 7 || --- || NC || This pin is not connected to Flasher PPC.<br />
|-<br />
| 8 || --- || NC || This pin is not connected to Flasher PPC.<br />
|-<br />
| 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".<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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).<br />
|-<br />
|}<br />
<br />
* All pins marked NC are not connected to Flasher PPC. Any signal can be applied here; Flasher PPC will simply ignore such a signal.<br />
* 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.<br />
<br />
=== Target board design ===<br />
<br />
We strongly advise following the recommendations given by the chip manufacturer. These recommendations are normally in line with the recommendations.<br />
Please refer to the the appropriate tables depending on the core:<br><br />
<br />
* [[#Pinout JTAG | Pinout JTAG]]<br />
* [[#Pinout SWD | Pinout SWD]]<br />
* [[#Flasher RX 14-pin connector | Flasher RX 14-pin connector]]<br />
* [[#Flasher PPC 14-pin connector | Flasher PPC 14-pin connector]]<br />
<br />
In case of doubt you should follow the recommendations given by the semiconductor manufacturer.<br />
<br />
==== Pull-up/pull-down resistors ====<br />
<br />
Unless otherwise specified by developer's manual, pull-ups/pull-downs are recommended to be between 2.2 kOhms and 47 kOhms.<br />
<br />
==== RESET, nTRST ====<br />
<br />
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><br />
<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.<br />
(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.<br />
<br />
=== Adapters ===<br />
<br />
==== JTAG Isolator ====<br />
<br />
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.<br />
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><br />
<br />
[[File:JTAG_Isolator_Port.wmf]]<br />
<br />
===== Pinout =====<br />
<br />
The following table shows the target-side pinout of the J-Link JTAG Isolator.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Pin !! Signal !! Type !! Description<br />
|-<br />
| 1 || VCC || Output || The target side of the isolator draws power over this pin.<br />
|-<br />
| 2 || VCC || Output || The target side of the isolator draws power over this pin.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 13 || TDO || Input || JTAG data output from target CPU. Typically connected to TDO of target CPU.<br />
|-<br />
| 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".<br />
|-<br />
| 17 || N/C || N/C || This pin is not connected on the target side of the isolator.<br />
|-<br />
| 19 || N/C || N/C || This pin is not connected on the target side of the isolator.<br />
|-<br />
|}<br />
<br />
Pins 4, 6, 8, 10, 12, 14, 16, 18, 20 are connected to GND.<br />
<br />
===== Safety =====<br />
This isolator provides '''basic isolation''' only. '''Do not use with hazardous voltages without further protection measures to avoid risk of electrical shock and fire.'''<br />
<br />
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.<br />
<br />
==== J-Link Needle Adapter ====<br />
<br />
To connect to the J-Link OB via programming interface the ''J-Link Needle Adapter'' is recommended.<br><br />
<br />
[[File:J-Link_Needle_Adapter_500x.jpg]]<br />
<br />
Why to choose the J-Link Needle Adapter:<br><br />
<ol><br />
<li>No additional connector required on your PCB</li><br />
<li>Very small footprint</li><br />
<li>High reliability spring pins for secure connections</li><br />
<li>Designed with 3 locating pins, so the adapter can not be connected the wrong way</li><br />
<li>No external power supply required! The J-Link Needle Adapter comes with the option to power the target hardware via J-Link.</li><br />
</ol><br />
These features make the J-Link Needle Adapter the perfect solution for production purposes.<br><br />
<br />
The pinout of the J-Link Needle Adapter is based on the pinout of the needle adapter by Tag-Connect.<br />
Please note, that both pinouts are not identical since the J-Link Needle Adapter comes with a 5V-supply pin.<br><br />
<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><br />
<br />
Moreover, the two "legs" on each side of the connector guarantee a stable and secure contact between pins and the PCB.<br><br />
<br />
[[File:J-Link_Needle_Adapter_Connector_pins_360x.jpg]]<br />
[[File:J-Link_Needle_Adapter_Pinout.jpg]]<br />
<br />
The J-Link Needle Adapter can be connected to J-Link via the ''20-pin 0.1'' JTAG to a 10-pin needle connector''.<br />
<br />
=== Target interface pin states in idle ===<br />
After completing a target operation (e.g. production programming via #AUTO), Flasher V5 tri-states all target interface pins with the following exceptions:<br />
* [[#Flasher ARM 20-pin JTAG/SWD Connector|Reset pin (Pin 15)]] By default, the reset pin remains unchanged. If the "Start application" option is enabled, the reset pin is set to high output.<br />
* [[#Flasher ARM 20-pin JTAG/SWD Connector|5V-Supply (Pin 19)]] The state of this pin in idle depends on the configuration of the [[#Target power supply | Target power supply]].<br />
<br />
Due to limitations of the Flasher hardware, the interface pins cannot be put into an high-impedance state.<br />
Instead, the pins are configured as input.<br />
This allows the target to drive the pin state with minimal interference from the Flasher.<br />
It is still possible for minimal electrical currents to flow between Flasher and the target.<br />
In case a complete electrical disconnection between Flasher and target is required,<br />
we recommend to make use of the [https://www.segger.com/products/production/flasher/accessories/adapters/relay-adapter/ SEGGER Relay Adapter].<br />
<br />
=== How to determine the hardware version ===<br />
<br />
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.<br />
Flasher has the hardware version printed on the back label.<br><br />
<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).<br />
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><br />
<br />
[[File:FlasherARM_version.gif]]<br />
<br />
== Support and FAQs ==<br />
<br />
This chapter contains troubleshooting tips together with solutions for common problems which might occur when using Flasher.<br />
There are several steps you can take before contacting support.<br />
Performing these steps can solve many problems and often eliminates the need for assistance.<br />
This chapter also contains a collection of frequently asked questions (FAQs) with answers.<br />
<br />
=== Contacting support ===<br />
<br />
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.<br />
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><br />
<br />
If you need to contact support, send the following information to<br><br />
''support@segger.com''<br><br />
<br />
* A detailed description of the problem<br />
* Flasher serial number<br />
* Information about your target hardware (processor, board, etc.).<br />
* <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]].<br />
<br />
Flasher is sold directly by SEGGER.<br />
<br />
=== Frequently Asked Questions ===<br />
<br />
'''Maximum JTAG speed'''<br />
{|<br />
|-<br />
| '''Q:''' || What is the maximum JTAG speed supported by Flasher?<br />
|-<br />
| '''A:''' || Flasher's maximum supported JTAG speed is 12MHz.<br />
|}<br />
<br />
'''Maximum download speed'''<br />
{|<br />
|-<br />
| '''Q:''' || What is the maximum download speed?<br><br />
|-<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.<br />
|}<br />
== Background information ==<br />
<br />
This chapter provides background information about flash programming in general. It<br />
also provides information about how to replace the firmware of Flasher manually.<br />
<br />
=== Flash programming ===<br />
<br />
Flasher comes with a DLL, which allows - amongst other functionalities - reading and writing RAM, CPU registers, starting and stopping the CPU, and setting breakpoints.<br />
<br />
==== How does flash programming via Flasher work? ====<br />
<br />
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.<br />
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.<br />
Different flash chips have different programming algorithms;the programming algorithm also depends on other things,<br />
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).<br />
The RAM code requires data to be programmed into the flash memory. The data is supplied by downloading it to RAM.<br />
<br />
==== Data download to RAM ====<br />
<br />
The data (or part of it) is downloaded to another part of the RAM of the target system.<br />
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.<br />
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.<br />
This process may have to be repeated until the entire data is programmed into the flash.<br />
<br />
==== Available options for flash programming ====<br />
<br />
In general, there are two possibilities in order to use Flasher for flash programming:<br><br />
<br />
* Using Flasher stand-alone to program the target flash memory (stand-alone mode)<br />
* Using Flasher in combination with J-Flash to program the target flash memory (Flasher in "PC-based mode")<br />
<br />
===== Using Flasher in stand-alone mode =====<br />
<br />
In order to use the Flasher in stand-alone mode, it has to be configured first.<br />
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]].<br />
<br />
===== J-Flash - Complete flash programming solution =====<br />
<br />
J-Flash is a stand-alone Windows application, which can read / write data files and program the flash in almost any ARM system.<br />
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''.<br />
<br />
==== How does the universal flash programming work? ====<br />
<br />
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><br />
<br />
Universal flash programming is available only for stand-alone mode.<br />
== Glossary ==<br />
<br />
This chapter describes important terms used throughout this manual.<br />
<br />
'''Big-endian'''<br><br />
Memory organization where the least significant byte of a word is at a higher address than the most significant byte. See Little-endian.<br />
<br />
'''Cache cleaning'''<br><br />
The process of writing dirty data in a cache to main memory.<br />
<br />
'''Coprocessor'''<br><br />
An additional processor that is used for certain operations, for example, for floating-point math calculations, signal processing, or memory management.<br />
<br />
'''Dirty data'''<br><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.<br />
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.<br />
<br />
'''Halfword'''<br><br />
A 16-bit unit of information.<br />
<br />
'''Host'''<br><br />
A computer which provides data and other services to another computer. Especially, a computer providing debugging services to a target being debugged.<br />
<br />
'''ICache'''<br><br />
Instruction cache.<br />
<br />
'''ID'''<br><br />
Identifier.<br />
<br />
'''IEEE 1149.1'''<br><br />
The IEEE Standard which defines TAP. Commonly (but incorrectly) referred to as JTAG.<br />
<br />
'''Image'''<br><br />
An executable file that has been loaded onto a processor for execution.<br />
<br />
'''Instruction Register'''<br><br />
When referring to a TAP controller, a register that controls the operation of the TAP.<br />
<br />
'''IR'''<br><br />
See Instruction Register.<br />
<br />
'''Joint Test Action Group (JTAG)'''<br><br />
The name of the standards group which created the IEEE 1149.1 specification.<br />
<br />
'''Little-endian'''<br><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.<br />
<br />
'''Memory coherency'''<br><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.<br />
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.<br />
<br />
'''Memory management unit (MMU)'''<br><br />
Hardware that controls caches and access permissions to blocks of memory, and translates virtual to physical addresses.<br />
<br />
'''Memory Protection Unit (MPU)'''<br><br />
Hardware that controls access permissions to blocks of memory. Unlike an MMU, a MPU does not translate virtual addresses to physical addresses.<br />
<br />
'''RESET'''<br><br />
Abbreviation of System Reset. The electronic signal which causes the target system other than the TAP controller to be reset.<br />
This signal is also known as "nSRST" "nSYSRST", "nRST", or "nRESET" in some other manuals. See also nTRST.<br />
<br />
'''nTRST'''<br><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.<br />
<br />
'''Open collector'''<br><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.<br />
<br />
'''Processor Core'''<br><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.<br />
It excludes optional coprocessors, caches, and the memory management unit.<br />
<br />
'''Remapping'''<br><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.<br />
<br />
'''RTOS'''<br><br />
Real Time Operating System.<br />
<br />
'''TAP Controller'''<br><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.<br />
<br />
'''Target'''<br><br />
The actual processor (real silicon or simulated) on which the application program is running.<br />
<br />
'''TCK'''<br><br />
The electronic clock signal which times data on the TAP data lines TMS, TDI, and TDO.<br />
<br />
'''TDI'''<br><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.<br />
<br />
'''TDO'''<br><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.<br />
<br />
'''Test Access Port (TAP)'''<br><br />
The port used to access a device's TAP Controller. Comprises TCK, TMS, TDI, TDO, and nTRST (optional).<br />
<br />
'''Transistor-transistor logic (TTL)'''<br><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.<br />
<br />
'''Word'''<br><br />
A 32-bit unit of information. Contents are taken as being an unsigned integer unless otherwise stated.<br />
== Literature and references ==<br />
This chapter lists documents, which we think may be useful to gain a deeper understanding of technical details.</div>JanBhttps://wiki.segger.com/index.php?title=UM08022_Flasher&diff=17587UM08022 Flasher2024-02-01T08:12:20Z<p>JanB: /* Flasher Pin states when idling */</p>
<hr />
<div><!---<br />
General TBD:<br />
- LG: Right now - EVERYTHING<br />
===========================================<br />
--------------------[more specific, but on multiple locations]<br />
- check if all emphasis (bold, tt, blue, etc ) have made it into the new version<br />
- Add Information -> Additional information<br />
- use of the term free-of-charge utility/tool etc<br />
- check compliant to DocStandards_Rules.txt<br />
- Remove everything regarding to Kickstarter versions? eventually create a chapter Legacy -> Kickstarter version were available for hw version 5-x (200x-200x)...[..]<br />
- 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.<br />
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.<br />
- if week keep the IDE specific stuff in the manual, add Ozone, ES and J-Link Commander were no mentioned.<br />
- IDE specifics move into wiki confirmed by Alex<br />
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)<br />
- check all sections regarding licensing<br />
- Check compliance of J-Link emDocs with typographic conventions described in AboutThisDocument.emDoc. What should be altered? e.g. references<br />
- use uref at all (not blue)?<br />
- search and decide where to use \ref (ref with page number)<br />
- why is \ref (no single "option" \uref is more basic as \ref.....)<br />
- in text, use either \ref or \iref instead of \uref<br />
- in old manual, \H3 started on a new page (not per default, but set manually for api tables etc...)<br />
- move used old images and source files (visio etc) via svn (currently copied)<br />
--------------------[grammar / vocabulary discussion]<br />
- Product names<br />
-- Use of SEGGEPROBE in this document?<br />
- use license over licence<br />
- commandline or command-line?<br />
- toolchain or tool chain?<br />
- crossreference/cross-reference/cross reference?<br />
- overcurrent?<br />
- double words?<br />
- frontend?<br />
- Unit: Kbytes, KBytes, V, mV.... 9V or 9 V? Create rule in Vocabulary<br />
- baudrate or baud rate?<br />
- stackpointer or stack pointer<br />
- check where we should replace abbreviations with the long form (e.h. "milliseconds" instead of "ms")<br />
- config or configuration<br />
- filepointer or file pointer?<br />
--------------------[J-Link dep. specific]<br />
- J-Link command strings or J-Link Command strings or J-Link Command Strings<br />
- J-Link settings file or...<br />
- J-Link control panel or ......<br />
- J-Link script files or...<br />
---><br />
Flasher is a programming tool for microcontrollers with on-chip or external flash memory.<br />
Flasher is designed for programming flash targets with the J-Flash software or stand-alone.<br />
In addition to that Flasher can also be used as a regular J-Link. For more information about J-Link in general,<br />
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].<br />
<br />
<div class="toclimit-2"><br />
__TOC__<br />
</div><br />
<br />
== Flasher Software and Documentation Pack ==<br />
The Flasher Software and Documentation Pack, available for download on the [https://www.segger.com/downloads/flasher#FlasherSoftwareAndDocumentationPack SEGGER homepage], includes applications to be used with Flasher and in some cases with J-Link and J-Trace.<br><br />
It also comes with USB-drivers for J-Link, J-Trace and Flasher.<br />
<br />
=== Software overview ===<br />
{| class="wikitable"<br />
|-<br />
! Software !! Description<br />
|-<br />
| [[J-Link Configurator|Flasher Configurator]] || GUI-based configuration tool for Flasher. Allows configuration of USB identification as well as TCP/IP identification of Flashers.<br />
|-<br />
| [[FlasherControl|Flasher Control]] || Command-line tool to connect to the Flasher's command-line interface via USB.<br />
|-<br />
| [[J-Flash]] || Flash programming application.<br />
|-<br />
| [[J-Flash SPI]] || (Q)SPI flash programming application.<br />
|-<br />
| [[J-Link Commander]] || Command-line tool with basic functionality for target analysis.<br />
|-<br />
| [[J-Link Registration]] || SEGGER J-Link Registration utility to register your SEGGER product such as a J-Link, J-Trace or Flasher.<br />
|-<br />
| [[JTAGLoad]] || Command line tool that opens an svf file and sends the data in it via J-Link / J-Trace or Flasher to the target.<br />
|-<br />
| [https://www.segger.com/downloads/flasher/UM08037.pdf U-Flash] || Tool for creating standalone Flasher projects.<br />
|}<br />
<br />
== Flasher overview ==<br />
Flasher connects to a PC using the USB/Ethernet/RS232 interface (what host interfaces are available depends on the Flasher model),<br />
running Windows, Linux & MacOS. In stand-alone mode,<br />
Flasher can be driven by the start/stop button, or via the RS232 interface (handshake control or ASCII interface).<br />
Flasher always has a 20-pin connector, which target interfaces are supported depends on the Flasher model:<br />
* Flasher ARM: JTAG and SWD are supported.<br />
* Flasher RX: JTAG is supported. Flasher comes with additional 14-pin RX adapter<br />
* Flasher PPC: JTAG is supported. Flasher comes with additional 14-pin PPC adapter.<br />
* Flasher PRO: JTAG and SWD are supported.<br />
* Flasher Compact: JTAG and SWD are supported.<br />
<br />
=== Features of Flasher ARM/PPC/RX/PRO ===<br />
* Three boot modes: PC-based mode, stand-alone mode, file access mode<br />
* Stand-alone JTAG/SWD programmer (Once set up, Flasher can be controlled without the use of PC program)<br />
* No power supply required, powered through USB<br />
* Supports internal and external flash devices<br />
* 128 MB memory for storage of target program<br />
* Can be used as J-Link (emulator) with a download speed of up to 720 Kbytes/second<br />
* Data files can updated via USB/Ethernet (using the J-Flash software), via FTP, via RS232 or via the file access mode of Flasher<br />
<br />
{| class="seggertable"<br />
|-<br />
! Flasher model !! Supported cores !! Supported target interfaces !! Flash programming speed (depending on target hardware)<br />
|-<br />
| Flasher ARM || ARM7/ARM9/Cortex-M || JTAG, SWD || between 170 and 300 Kbytes/second<br />
|-<br />
| Flasher RX || Renesas RX610, RX621, RX62N, RX62T || JTAG || between 30-300 Kbytes/second<br />
|-<br />
| Flasher PPC || Power PC e200z0 || JTAG || up to 138 Kbytes/second<br />
|-<br />
| Flasher PRO || ARM7/ARM9/Cortex-M Renesas RX610, RX621, RX62N, RX62T Power PC e200z0 || JTAG, SWD || between 30-300 Kbytes/ second<br />
|-<br />
|}<br />
<br />
==== Features of Flasher Compact ====<br />
<br />
* Three boot modes: PC-based mode, stand-alone mode, file access mode<br />
* Stand-alone JTAG/SWD programmer (Once set up, Flasher can be controlled without the use of PC program)<br />
* No power supply required, powered through USB<br />
* Supports internal and external flash devices<br />
* 128 MB memory for storage of target program<br />
* Can be used as J-Link (emulator) with a download speed of up to 720 Kbytes/second<br />
* Data files can updated via USB/Ethernet (using the J-Flash software) or via the file access mode of Flasher<br />
<br />
{| class="seggertable"<br />
|-<br />
! Flasher model !! Supported cores !! Supported target interfaces !! Flash programming speed (depending on target hardware)<br />
|-<br />
| Flasher ARM || ARM7/ARM9/Cortex-M || JTAG, SWD || between 170 and 300 Kbytes/second<br />
|-<br />
| Flasher RX || Renesas RX610, RX621, RX62N, RX62T || JTAG || between 30-300 Kbytes/second<br />
|-<br />
| Flasher PPC || Power PC e200z0 || JTAG || up to 138 Kbytes/second<br />
|-<br />
| Flasher Compact || ARM7/ARM9/Cortex-M Renesas RX610, RX621, RX62N, RX62T Power PC e200z0 || JTAG, SWD || between 30-300 Kbytes/ second<br />
|-<br />
|}<br />
<br />
==== Features of Flasher Portable/Flasher Portable PLUS ====<br />
<br />
* Stand-alone in-circuit-programmer (Once set up, Flasher can be controlled without the use of a PC program)<br />
* Powered by an internal rechargeable battery (standard batteries for Flasher Portable), no Laptop or external power supply required.<br />
* Multiple firmware images can be stored on Flasher<br />
* 128 MB memory for storage of target program<br />
* Flasher Portable PLUS supports a simple selection of up to 99 firmware images via buttons (since V7.90)<br />
* Supported CPUs: ARM Cortex, Legacy ARM7/9, Renesas RX, Freescale PowerPC<br />
* Supports internal and external flash<br />
* Free software updates<ref name="legitimateOwned" />, 1 year of support<br />
* Data files can be updated via the file access mode functionality or via J-Flash<br />
* Programming speed between 30-300 Kbytes/second (actual speed depends on target hardware)<br />
{{Note|1=Ethernet and RS232 as host interface are not available for Flasher Portable}}<br />
<references><br />
<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.<br />
As a legitimate owner of a SEGGER Flasher, you can always download the latest software free of charge.<br />
Though not planned and not likely, we reserve the right to change this policy.<br />
Note that older models may not be supported by newer versions of the software.<br />
Typically, we support older models with new software at least 3 years after end of life.<br />
</ref><br />
</references><br />
<br />
{| class="seggertable"<br />
|-<br />
! Supported cores !! Supported target interfaces !! Flash programming speed (depending on target hardware)<br />
|-<br />
| ARM7/ARM9/Cortex-M || JTAG, SWD || between 30-300 Kbytes/second<br />
|-<br />
| Renesas RX610, RX621, RX62N, RX62T || JTAG || between 170 and 300 Kbytes/second<br />
|-<br />
| Power PC e200z0 || JTAG || up to 138 Kbytes/second<br />
|-<br />
|}<br />
<br />
==== Working environment ====<br />
<br />
'''General'''<br><br />
The Flasher can operate from a PC with an appropriate software like J-Flash or in stand-alone mode.<br />
<br />
'''Host System'''<br><br />
IBM PC/AT or compatible CPU: 486 (or better) with at least 128MB of RAM,<br />
running Windows, Linux & MacOS. It needs to have a USB, Ethernet or RS232 interface available for communication with Flasher.<br />
<br />
'''Power supply'''<br><br />
Flasher Portable: 3x standard AAA batteries or 5V DC, min. 100 mA via USB connector.<br />
<br />
Flasher Portable PLUS: internal rechargeable 680mAh Li-Ion battery, min. 100 mA via USB connector.<br />
<br />
Other Flashers: 5V DC, min. 100 mA via USB connector.<br />
<br />
'''Installing Flasher PC-software'''<br><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><br />
More information about the package you can find in the similar [[J-Link Software and Documentation Pack]].<br><br />
The package includes U-Flash and J-Flash, the main tools for flashing targets:<br />
* J-Flash : J-Flash User Guide ([https://wiki.segger.com/UM08003_JFlash UM08003_JFlash.pdf]).<br />
* U-Flash : U-Flash User Guide ([https://www.segger.com/downloads/flasher/UM08037.pdf UM08037_UniversalFlashLoader.pdf]).<br />
<br />
=== Specifications ===<br />
<br />
<br />
==== Specifications for Flasher ARM ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Windows, Linux & MacOS<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C<br />
|-<br />
| Storage Temperature || -20 °C ... +60 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
!colspan="100%"| Mechanical<br />
|-<br />
| Size (without cables) || 121mm x 66mm x 30mm<br />
|-<br />
| Weight (without cables) || 119g<br />
|-<br />
!colspan="100%"| Available interfaces<br />
|-<br />
| USB Host interface || USB 2.0, full speed<br />
|-<br />
| Ethernet Host interface || 10/100 MBit<br />
|-<br />
| RS232 Host interface || RS232 9-pin<br />
|-<br />
| Target interface || JTAG 20-pin (14-pin adapter available)<br />
|-<br />
!colspan="100%"| JTAG Interface, Electrical<br />
|-<br />
| Power Supply || USB powered, 100mA for Flasher ARM. 500 mA if target is powered by Flasher ARM<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| Target supply voltage || Supply voltage is 5V, max.<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6 <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Max. JTAG speed || up to 12MHz<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
===== Flasher ARM download speed =====<br />
<br />
The following table lists the Flasher ARM performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! ARM7 memory download<br />
|-<br />
| Flasher ARM || 720 Kbytes/s (12MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
<br />
==== Specifications for Flasher RX ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Windows, Linux & MacOS<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C<br />
|-<br />
| Storage Temperature || -20 °C ... +60 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
!colspan="100%"| Mechanical<br />
|-<br />
| Size (without cables) || 121mm x 66mm x 30mm<br />
|-<br />
| Weight (without cables) || 119g<br />
|-<br />
!colspan="100%"| Available interfaces<br />
|-<br />
| USB Host interface || USB 2.0, full speed<br />
|-<br />
| Ethernet Host interface || 10/100 MBit<br />
|-<br />
| RS232 Host interface || RS232 9-pin<br />
|-<br />
| Target interface || JTAG 20-pin (shipped with 14-pin adapter for Renesas RX)<br />
|-<br />
!colspan="100%"| JTAG Interface, Electrical<br />
|-<br />
| Power Supply || USB powered, 100mA for Flasher RX. 500 mA if target is powered by Flasher RX<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| 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)<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6 <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Max. JTAG speed || up to 12MHz<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
===== Flasher RX download speed =====<br />
<br />
The following table lists the Flasher RX performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! Flasher RX600 series memory download<br />
|-<br />
| Flasher RX || 720 Kbytes/s (12MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
<br />
==== Specifications for Flasher PPC ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Windows, Linux & MacOS<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C<br />
|-<br />
| Storage Temperature || -20 °C ... +60 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
!colspan="100%"| Mechanical<br />
|-<br />
| Size (without cables) || 121mm x 66mm x 30mm<br />
|-<br />
| Weight (without cables) || 119g<br />
|-<br />
!colspan="100%"| Available interfaces<br />
|-<br />
| USB Host interface || USB 2.0, full speed<br />
|-<br />
| Ethernet Host interface || 10/100 MBit<br />
|-<br />
| RS232 Host interface || RS232 9-pin<br />
|-<br />
| Target interface || JTAG 20-pin (shipped with 14-pin adapter for Renesas PPC)<br />
|-<br />
!colspan="100%"| JTAG Interface, Electrical<br />
|-<br />
| Power Supply || USB powered, 100mA for Flasher PPC. 500 mA if target is powered by Flasher PPC<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| Target supply voltage || Supply voltage is 5V, max.<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6 <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Max. JTAG speed || up to 12MHz<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
===== Flasher RX download speed =====<br />
<br />
The following table lists the Flasher PPC performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! Memory download<br />
|-<br />
| Flasher PPC || 530 Kbytes/s (8 MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
<br />
==== Specifications for Flasher PRO ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Windows, Linux & MacOS<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C<br />
|-<br />
| Storage Temperature || -20 °C ... +60 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
!colspan="100%"| Mechanical<br />
|-<br />
| Size (without cables) || 121mm x 66mm x 30mm<br />
|-<br />
| Weight (without cables) || 119g<br />
|-<br />
!colspan="100%"| Available interfaces<br />
|-<br />
| USB Host interface || USB 2.0, full speed<br />
|-<br />
| Ethernet Host interface || 10/100 MBit<br />
|-<br />
| RS232 Host interface || RS232 9-pin<br />
|-<br />
| Target interface || JTAG 20-pin (14-pin adapter available)<br />
|-<br />
!colspan="100%"| JTAG Interface, Electrical<br />
|-<br />
| Power Supply || USB powered, 100mA for Flasher PRO. 500 mA if target is powered by Flasher PRO<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| Target supply voltage || Supply voltage is 5V, max.<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6 <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Max. JTAG speed || up to 12MHz<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
<br />
===== Supported CPU cores =====<br />
<br />
The Flasher PRO supports the following CPU cores:<br />
<br />
'''ARM Cortex'''<br><br />
* Cortex-A5<br />
* Cortex-A8<br />
* Cortex-A9<br />
* Cortex-R4<br />
* Cortex-R5<br />
* Cortex-M0<br />
* Cortex-M0+<br />
* Cortex-M1<br />
* Cortex-M3<br />
* Cortex-M4<br />
<br />
'''ARM (legacy cores)'''<br><br />
* ARM720T<br />
* ARM7TDMI<br />
* ARM7TDMI-S<br />
* ARM920T<br />
* ARM922T<br />
* ARM926EJ-S<br />
* ARM946E-S<br />
* ARM966E-S<br />
* ARM1136JF-S<br />
* ARM1136J-S<br />
* ARM1156T2-S<br />
* ARM1156T2F-S<br />
* ARM1176JZ-S<br />
* ARM1176JZF<br />
* ARM1176JZF-S<br />
<br />
'''Renesas RX'''<br><br />
* RX111<br />
* RX210<br />
* RX220<br />
* RX21A<br />
* RX610<br />
* RX621<br />
* RX62G<br />
* RX62N<br />
* RX62T<br />
* RX630<br />
* RX631<br />
* RX63N<br />
* RX63T<br />
<br />
'''Freescale Power PC'''<br><br />
* e200z0<br />
<br />
===== Supported Target interfaces =====<br />
<br />
The Flasher PRO supports the following target interfaces:<br />
<br />
* JTAG<br />
* SWD<br />
* FINE<br />
* SPD<br />
<br />
===== Flasher PRO download speed =====<br />
<br />
The following table lists the Flasher PRO performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! ARM7 memory download<br />
|-<br />
| Flasher PRO || 720 Kbytes/s (12MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
<br />
==== Specifications for Flasher Compact ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Microsoft Windows (x86/x64)<br>Linux (x86/x64/Arm)<br>macOS (x86/Apple M1)<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C<br />
|-<br />
| Storage Temperature || -20 °C ... +65 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
| Size (without cables) || 70mm x 45mm x 18mm<br />
|-<br />
| Weight (without cables) || 40g<br />
|-<br />
| USB Host interface || USB 2.0 (Hi-Speed); Micro USB<br />
|-<br />
| Target interface || JTAG 20-pin (14-pin adapter available)<br />
|-<br />
| Power Supply || USB powered, 130mA (idle)<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| Target supply voltage || Supply voltage is 5V, max.<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
| Supported target interfaces || SPI, QSPI, 8051 C2, cJTAG, FINE, ICSP, IIC, ISP, JTAG, PDI, SPD, SWD, SWIM, UART, UPDI<br />
|-<br />
| Serial transfer rate between Flasher Compact and target || Up to 50 MHz (Depending on target interface)<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6 <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
===== Supported CPU cores =====<br />
<br />
The Flasher Compact supports the following CPU cores:<br />
'''ARM Cortex'''<br><br />
* Cortex-A5<br />
* Cortex-A8<br />
* Cortex-A9<br />
* Cortex-R4<br />
* Cortex-R5<br />
* Cortex-M0<br />
* Cortex-M0+<br />
* Cortex-M1<br />
* Cortex-M3<br />
* Cortex-M4<br />
<br />
'''ARM (legacy cores)'''<br><br />
* ARM720T<br />
* ARM7TDMI<br />
* ARM7TDMI-S<br />
* ARM920T<br />
* ARM922T<br />
* ARM926EJ-S<br />
* ARM946E-S<br />
* ARM966E-S<br />
* ARM1136JF-S<br />
* ARM1136J-S<br />
* ARM1156T2-S<br />
* ARM1156T2F-S<br />
* ARM1176JZ-S<br />
* ARM1176JZF<br />
* ARM1176JZF-S<br />
<br />
'''Renesas RX'''<br><br />
* RX111<br />
* RX210<br />
* RX220<br />
* RX21A<br />
* RX610<br />
* RX621<br />
* RX62G<br />
* RX62N<br />
* RX62T<br />
* RX630<br />
* RX631<br />
* RX63N<br />
* RX63T<br />
<br />
'''Freescale Power PC'''<br><br />
* e200z0<br />
<br />
===== Flasher Compact download speed =====<br />
<br />
The following table lists the Flasher Compact performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! ARM7 memory download<br />
|-<br />
| Flasher Compact || 720 Kbytes/s (12MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
<br />
==== Specifications for Flasher Portable PLUS ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Windows, Linux & MacOS<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C (normal operation)<br>+5 °C ... +45 °C (battery charging)<br />
|-<br />
| Storage Temperature || -20 °C ... +45 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
| 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)<br />
|-<br />
| Charging via USB || 70 minutes (at 1A charging current)<br />
|-<br />
!colspan="100%"| Mechanical<br />
|-<br />
| Size (without cables) || 126mm x 70mm x 28mm<br />
|-<br />
| Weight (without cables) || 140g<br />
|-<br />
!colspan="100%"| Available interfaces<br />
|-<br />
| USB Host interface || USB 2.0<br />
|-<br />
| Target interface || Standard 20-pin 0.1" connector (Adapters available).<br />
|-<br />
!colspan="100%"| Target Interface, Electrical<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| Target supply voltage || Supply voltage is 4.5V, max. (depends on the current battery voltage).<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6 <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Max. JTAG speed || up to 12MHz<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
===== Supported CPU cores =====<br />
<br />
The Flasher Portable PLUS supports the following CPU cores:<br />
<br />
'''ARM Cortex'''<br><br />
* Cortex-A5<br />
* Cortex-A8<br />
* Cortex-A9<br />
* Cortex-R4<br />
* Cortex-R5<br />
* Cortex-M0<br />
* Cortex-M0+<br />
* Cortex-M1<br />
* Cortex-M3<br />
* Cortex-M4<br />
<br />
'''ARM (legacy cores)'''<br><br />
* ARM720T<br />
* ARM7TDMI<br />
* ARM7TDMI-S<br />
* ARM920T<br />
* ARM922T<br />
* ARM926EJ-S<br />
* ARM946E-S<br />
* ARM966E-S<br />
* ARM1136JF-S<br />
* ARM1136J-S<br />
* ARM1156T2-S<br />
* ARM1156T2F-S<br />
* ARM1176JZ-S<br />
* ARM1176JZF<br />
* ARM1176JZF-S<br />
<br />
'''Renesas RX'''<br><br />
* RX111<br />
* RX210<br />
* RX220<br />
* RX21A<br />
* RX610<br />
* RX621<br />
* RX62G<br />
* RX62N<br />
* RX62T<br />
* RX630<br />
* RX631<br />
* RX63N<br />
* RX63T<br />
<br />
'''Freescale Power PC'''<br><br />
* e200z0<br />
<br />
===== Supported Target interfaces =====<br />
<br />
The Flasher Portable PLUS supports the following target interfaces:<br />
* JTAG<br />
* SWD<br />
* FINE<br />
* SPD<br />
<br />
===== Flasher Portable PLUS download speed =====<br />
<br />
The following table lists the Flasher Portable PLUS performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! ARM7 memory download<br />
|-<br />
| Flasher PRO || 720 Kbytes/s (12MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
<br />
==== Specifications for Flasher Portable ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Windows, Linux & MacOS<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C<br />
|-<br />
| Storage Temperature || -20 °C ... +65 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
| Power Supply || a) USB powered, 100mA for Flasher Portable. 500 mA if target is powered by Flasher Portable<br>b) Batteries powered (3xAAA)<br />
|-<br />
!colspan="100%"| Mechanical<br />
|-<br />
| Size (without cables) || 130mm x 65mm x 25mm<br />
|-<br />
| Weight (without cables) || 120g<br />
|-<br />
!colspan="100%"| Available interfaces<br />
|-<br />
| USB Host interface || USB 2.0<br />
|-<br />
| Target interface || Standard 20-pin 0.1" connector (Adapters available).<br />
|-<br />
!colspan="100%"| Target Interface, Electrical<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| Target supply voltage || Supply voltage is 4.5V, max. (depends on the current battery voltage).<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6V <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Max. JTAG speed || up to 12MHz<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
===== Supported CPU cores =====<br />
<br />
The Flasher Portable supports the following CPU cores:<br />
<br />
'''ARM Cortex'''<br><br />
* Cortex-A5<br />
* Cortex-A8<br />
* Cortex-A9<br />
* Cortex-R4<br />
* Cortex-R5<br />
* Cortex-M0<br />
* Cortex-M0+<br />
* Cortex-M1<br />
* Cortex-M3<br />
* Cortex-M4<br />
<br />
'''ARM (legacy cores)'''<br><br />
* ARM720T<br />
* ARM7TDMI<br />
* ARM7TDMI-S<br />
* ARM920T<br />
* ARM922T<br />
* ARM926EJ-S<br />
* ARM946E-S<br />
* ARM966E-S<br />
* ARM1136JF-S<br />
* ARM1136J-S<br />
* ARM1156T2-S<br />
* ARM1156T2F-S<br />
* ARM1176JZ-S<br />
* ARM1176JZF<br />
* ARM1176JZF-S<br />
<br />
'''Renesas RX'''<br><br />
* RX111<br />
* RX210<br />
* RX220<br />
* RX21A<br />
* RX610<br />
* RX621<br />
* RX62G<br />
* RX62N<br />
* RX62T<br />
* RX630<br />
* RX631<br />
* RX63N<br />
* RX63T<br />
<br />
'''Freescale Power PC'''<br><br />
* e200z0<br />
<br />
===== Supported Target interfaces =====<br />
<br />
The Flasher Portable supports the following target interfaces:<br />
<br />
* JTAG<br />
* SWD<br />
* FINE<br />
* SPD<br />
<br />
===== Flasher Portable download speed =====<br />
<br />
The following table lists the Flasher Portable performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! ARM7 memory download<br />
|-<br />
| Flasher PRO || 720 Kbytes/s (12MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
== Working with Flasher ==<br />
<br />
This chapter describes functionality and how to use Flasher.<br />
<br />
=== Flasher Portable PLUS ===<br />
<br />
The Flasher Portable PLUS is a portable version of SEGGERs Flasher family,<br />
which has been designed to fill the need of an extremely portable, production grade,<br />
Flash programmer used for in-field firmware updates. No need to be tethered to an outlet,<br />
it is powered by an integrated Li-Ion cell (680mAh).<br />
The Flasher Portable PLUS programs flash targets in stand-alone mode or via J-Flash PC software.<br><br />
<br />
Furthermore the Flasher Portable PLUS allows the user to select between 99 data images to be programmed (since V7.90).<br />
The images can be easily selected by using the SEL button on the front of the housing.<br />
For more information about support for multiple images, please refer to [[#Multiple File Support | Multiple File Support]].<br><br />
For setup and configuration purposes, the Flasher Portable PLUS connects to a PC via USB interface,<br />
running Windows, Linux & MacOS and has a built-in standard 20-pin J-Link target connector.<br><br />
<br />
{{Note|1=Ethernet and RS232 as host interface are not available for the Flasher Portable PLUS.}}<br />
<br />
==== Housing & Buttons ====<br />
<br />
The Flasher Portable PLUS comes with a display, which is for example used to represent the status of an ongoing flash progress.<br />
Furthermore, there are three buttons which allow the user to control Flasher Portable PLUS.<br />
For a detailed description of the functions, take a look at the table below:<br />
<br />
<!-- LG xxxxxx edit image with labels for buttons? (Is this actually necessary? Buttons are basically self-explanatory...) --><br />
[[File:Flasher_Portable_PLUS.png | 500px]]<br />
<br />
{| class="seggertable"<br />
|-<br />
! Button !! Description<br />
|-<br />
| Program || Start programming process with the currently selected image.<br />
|-<br />
| Select image || Select the image to be programmed next time the Program button is pressed.<br />
|-<br />
| 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.<br />
|-<br />
|}<br />
<br />
==== Configuration ====<br />
<br />
The Flasher Portable PLUS has some configuration options the other Flashers do not have.<br />
{| class="seggertable"<br />
|-<br />
! Option !! Description !! Value range !! Default value<br />
|-<br />
| AutoPowerOffOnIdle || Specifies the time interval after which the Flasher Portable will turn off without any user action || 1 to 3600 || 60<br />
|-<br />
| ShowDatCRCAfterProgramming || Activates displaying the data file CRC after the programming in the pop up message || 0 = inactive, 1 = active || 0<br />
|-<br />
|}<br />
<br />
If the <tt>Flasher.ini</tt> does not contain a <tt>[Config]</tt> section with the configuration option, the default value is used.<br />
<br />
'''Example:'''<br><br />
This sample will show the data file CRC after the programming and the auto power of is set to five minutes (=300 seconds).<br />
<br />
<source lang="c"><br />
[CONFIG]<br />
AutoPowerOffOnIdle = "300"<br />
ShowDatCRCAfterProgramming = "1"<br />
</source><br />
<br />
=== Flasher Portable ===<br />
<br />
The Flasher Portable is a portable version of SEGGERs Flasher family, which has been designed to fill the need of an extremely portable,<br />
production grade, Flash programmer used for in-field firmware updates. No need to be tethered to an outlet,<br />
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><br />
<br />
Furthermore the Flasher Portable allows the user to select between four data images to be programmed.<br />
The images can be easily selected by using the arrow buttons on the front of the housing.<br />
For more information about support for multiple images, please refer to [[#Multiple File Support | Multiple File Support]].<br><br />
For setup and configuration purposes, the Flasher Portable connects to a PC via USB interface,<br />
running Windows, Linux & MacOS and has a built-in standard 20-pin J-Link target connector.<br><br />
<br />
{{Note|1=Ethernet and RS232 as host interface are not available for the Flasher Portable.}}<br />
<br />
==== Housing & Buttons ====<br />
<br />
The Flasher Portable comes with several leds which are for example used to represent the status of an ongoing flash progress.<br />
Furthermore, there are three buttons which allow the user to control Flasher Portable.<br />
For a detailed description of the functions, take a look at the two tables below:<br />
<br />
<!-- LG xxxxxx edit image with labels for buttons?--><br />
[[File:Flasher_Portable_Top_2.png | 500px]]<br />
<br />
{| class="seggertable"<br />
|-<br />
! LED !! Description<br />
|-<br />
| ACTIVE || GREEN. Blinks while the Flasher Portable is busy / performs operations on the target.<br />
|-<br />
| PASS/FAIL || GREEN/RED. Indicates, if the last flashing cycle was successful.<br />
<ul><br />
<li> GREEN: Flashing cycle completed successfully.</li><br />
<li> RED: Flashing cycle completed with error.</li><br />
</ul><br />
|-<br />
| 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]].<br />
|-<br />
| POWER || GREEN: Indicates if Flasher is currently powered. Blinks while Flasher Portable tries to enumerate via USB.<br />
|-<br />
| 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.<br />
|-<br />
|}<br />
<br />
{| class="seggertable"<br />
|-<br />
! Button !! Description<br />
|-<br />
| Program || Start programming process with the currently selected image.<br />
|-<br />
| Select image || Select the image to be programmed next time the <tt>Program</tt> button is pressed.<br />
|-<br />
| 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<br />
|-<br />
|}<br />
<br />
=== File system ===<br />
<br />
The Flasher with hardware version 4 and lower supports 8.3 filenames only (8 characters filename, 3 characters file extension).<br />
Using longer filenames may result in incorrect operation. Integrated functions,<br />
like the FTP server or the terminal server, will refuse writing files with long filenames.<br />
<br />
=== Setting up the IP interface ===<br />
<br />
Setting up the IP interface<br />
Some of the Flasher models come with an additional Ethernet interface to communicate with the host system.<br />
These Flashers also come with a built-in webserver which allows some basic setup of the emulator,<br />
e.g. configuring a default gateway which allows using it even in large intranets. For more information,<br />
please refer to [[#TCP Services | TCP Services]].<br />
<br />
==== Connecting the first time ====<br />
<br />
When connecting Flasher the first time, it attempts to acquire an IP address via DHCP.<br />
The recommended way for finding out which IP address has been assigned to Flasher is, to use the J-Link Configurator.<br />
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.<br />
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''.<br />
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,<br />
please refer to ''UM08001, J-Link / J-Trace User Guide'', chapter ''Setup'', section ''Setting up the IP interface''.<br />
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]].<br />
<br />
=== Operating modes ===<br />
<br />
All Flashers except the Flasher ATE are able to boot in 3 different modes:<br />
<br />
* PC-based mode<br />
* Stand-alone mode<br />
* File access mode<br />
<br />
{{Note|1=The Flasher ATE only supports the stand-alone mode.}}<br />
<br />
'''Definition PC-based mode'''<br><br />
Flasher is connected to a PC via USB/Ethernet and controlled by a PC application (J-Flash).<br />
If there is an RS232 connection to a PC, does not have any influence on if PC-based mode is entered or not.<br />
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, ...)<br />
<br />
'''Definition Stand-alone mode'''<br><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.<br />
<br />
'''Definition file access mode'''<br><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.<br />
In this mode, Flasher enumerates as a mass storage device (like an USB Stick) at the host PC.<br />
In this mode, configuration + data files can be manually placed on the Flasher and the Flasher logfile can be read out.<br />
If you are using a self-powered Flasher such as the Flasher Portable Plus, the Flasher must be turned off before connecting it.<br />
<br />
==== PC-based mode ====<br />
If you want to use Flasher for the first time you need to install the J-Link software and documentation package.<br />
After installation, connect Flasher to the host PC via USB or Ethernet.<br />
For more information about how to install the J-Link software and documentation package please refer to [[J-Link Software and Documentation Pack]].<br />
<br />
===== Connecting the target system =====<br />
<br />
'''Power-on sequence'''<br><br />
In general, Flasher should be powered on before connecting it with the target device.<br />
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.<br />
Power-on the device after you connected Flasher to it. Flasher will boot in "PC-based mode".<br />
<br />
'''Verifying target device connection with J-Link.exe'''<br><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.<br />
Then start the J-Link command line tool <tt>JLink.exe</tt>,<br />
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.<br />
The screenshot below shows the output of <tt>JLink.exe</tt>.<br />
<br />
[[File:flasher_jlinkmode.gif]]<br />
<br />
===== LED status indicators =====<br />
<br />
In PC-based mode, there are also certain LED status codes defined:<br />
<br />
{| class="seggertable"<br />
|-<br />
! # !! Status of LED !! Meaning<br />
|-<br />
| 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.<br />
|-<br />
| 0 || GREEN<br>constant || Flasher enumeration process is complete and it is ready to be controlled by a PC application.<br />
|-<br />
|}<br />
<br />
==== Stand-alone mode ====<br />
<br />
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]].<br />
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).<br />
In the "stand-alone mode" Flasher can be used as a stand-alone flash programmer.<br><br />
<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]].}}<br />
<br />
===== LED status indicators =====<br />
Progress and result of an operation is indicated by Flasher's LEDs. The behavior is different for J-Link and stand-alone mode.<br />
For a definition of the different modes, please refer to [[#Operating modes | Operating modes]].<br />
The following table describes the behavior of the LEDs in stand-alone mode.<br />
<br />
{| class="seggertable"<br />
|-<br />
! # !! Status of LED !! Meaning<br />
|-<br />
| 0 || GREEN<br>constant || Flasher waits for a start trigger to perform an operation in stand-alone mode.<br />
|-<br />
| 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><br />
|-<br />
| 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.<br />
|-<br />
|}<br />
Older Flasher models have a different behavior.<br />
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:<br />
<br />
* 1621xxxxx (Flasher ARM V2)<br />
* 1630xxxxx (Flasher ARM V3)<br />
* 4210xxxxx (Flasher PPC V1)<br />
* 4110xxxxx (Flasher RX V1)<br />
<br />
{| class="seggertable"<br />
|-<br />
! # !! Status of LED !! Meaning<br />
|-<br />
| 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.<br />
|-<br />
| 1 || GREEN<br>constant || Connect to target and perform init sequence.<br />
|-<br />
| 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><br />
|-<br />
| 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.<br />
|-<br />
|}<br />
<br />
==== File access mode ====<br />
<br />
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".<br />
If you are using a self-powered Flasher such as the Flasher Portable Plus, the Flasher must be turned off before connecting it.<br />
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.<br />
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>.<br />
<br />
[[File:flasher_mode_msd.gif]]<br />
<br />
<tt>FLASHER.CFG</tt> contains the configuration settings for programming the target device and <tt>FLASHER.DAT</tt> contains the data to be programmed.<br />
<tt>FLASHER.LOG</tt> contains all logging information about the commands, performed in stand-alone mode.<br />
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><br />
<br />
Currently, J-Flash does not support to configure Flasher for automated serial number programming.<br><br />
<br />
If you want to configure multiple Flasher for the same target you do not have to use J-Flash all the time.<br />
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".<br />
<br />
=== Setting up Flasher for stand-alone mode ===<br />
{{Note| All Options how to set up the Flasher for stand-alone mode you can find here: [[Flasher/Download project to Flasher|Download project to the Flasher]]}}<br />
<br />
In order to set up Flasher for the stand-alone mode it needs to be configured once using the J-Flash software.<br />
For more information about J-Flash, please refer to the ''J-Flash User Guide''.<br><br />
<br />
After starting J-Flash, open the appropriate J-Flash project for the target Flasher shall be configured for, by selecting '''File''' -> '''Open Project'''.<br />
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><br />
<br />
After the appropriate project has been opened / created, the data file which shall be programmed needs to be loaded, by selecting '''File''' -> '''Open'''.<br />
After this J-Flash should look like in the screenshot below.<br />
<br />
[[File:jflash_projectfile_datafile.gif]]<br />
<br />
Before downloading the configuration (project) and program data (data file) to Flasher, the connection type (USB/IP) needs to be selected in the project.<br />
These settings are also saved on a per-project basis, so this also only needs to be setup once per J-Flash project.<br />
The connection dialog is opened by clicking '''Options''' -> '''Project settings''' -> '''General'''.<br />
<br />
[[File:jflash_connection_dialog.gif]]<br />
<br />
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.<br />
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.<br />
The user then can simply select the Flash he wants to download the configuration to.<br />
<br />
[[File:EmuSelectionDialog.gif]]<br />
<br />
In order to download the configuration and program data to the Flasher, simply select '''File''' -> '''Download config & data file to Flasher'''.<br />
<br />
[[File:jflash_download_to_emul.gif]]<br />
<br />
The J-Flash log window indicates that the download to the emulator was successful.<br />
<br />
[[File:jflash_download_to_emu_succ.gif]]<br />
<br />
From now on, Flasher can be used in stand-alone mode (without host PC interaction) for stand-alone programming.<br />
<br />
==== Preparing for stand-alone operation manually ====<br />
<br />
As an alternative, J-Flash can also be used to save config and data file to a hard drive.<br><br />
<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,<br />
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.<br />
<br />
'''Creating config and data files'''<br><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><br />
<br />
For some devices, additional files (*.PEX) are needed.<br />
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.<br />
<br />
'''About *.PEX files'''<br><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,<br />
the following needs to be taken care of:<br><br />
<br />
For some devices, special connect, reset etc. sequences are necessary which are stored in so-called *.PEX files on the Flasher.<br><br />
<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><br />
<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><br />
The *.PEX files need to be placed in a subdirectory with the same name as the corresponding *.cfg file.<br />
J-Flash creates a directory with the correct name automatically when a config file is created.<br><br />
<br />
Example:<br><br />
<br />
MyConf0 is a project for a device that requires a *.PEX file for connect.<br><br />
MyConf1 is a project for a device that requires no *.PEX file at all.<br />
<br />
[[File:PEX_File_Flasher.png]]<br />
<br />
=== Universal Flash Loader mode ===<br />
<br />
As an alternative to the stand-alone mode, configured via J-Flash, there is the Universal Flash Loader mode.<br />
While the normal stand-alone mode relies on using the debug interface of the device, the Universal Flash Loader<br />
mode uses device or vendor specific programming interfaces and protocols and therefore it is independent of the<br />
CPU core.<br><br />
<br />
The Universal Flash Loader is available for the following Flasher models:<br />
* Flasher PRO<br />
* Flasher Compact<br />
* Flasher Portable PLUS<br />
<br />
For some of the supported devices, SEGGER offers specific adapters.<br />
<br />
==== Preparing manually ====<br />
<br />
The Universal Flash Loader uses an configuration file (*.UNI), a device specific flash programming algorithm (*.PEX) and a data file (*.DAT).<br />
<br />
===== Configuration =====<br />
<br />
The configuration file basically is split into three parts.<br />
The first part, the section [DEVICE], controls the generic behavior of the Universal Flash Loader.<br />
It specifies which protocol driver and data file to use. It allows enabling and configuring target power<br />
and it defines which actions to perform.<br />
The second part consists of one or more [BANKx] sections, which contain information about the memories.<br />
The third part, the section [CONFIG], includes configuration settings for the protocol driver.<br><br />
<br />
An .UNI file might look as follows:<br><br />
<br />
<source lang="c"><br />
[OPTIONS]<br />
TargetPower = "0"<br />
ChipErase = "0"<br />
<br />
[TASKS]<br />
CheckBlank = "1"<br />
Erase = "1"<br />
Program = "1"<br />
Verify = "1"<br />
Secure = "1"<br />
<br />
[DEVICE]<br />
Algo = "RL78.PEX"<br />
Data = "ALL_6k.dat"<br />
<br />
[BANK0]<br />
; Code Flash<br />
Base = "0x00000000"<br />
Size = "0x00004000"<br />
Sect = "0x00000400"<br />
<br />
[BANK1]<br />
; Data Flash<br />
Base = "0x000F1000"<br />
Size = "0x00000800"<br />
Sect = "0x00000400"<br />
<br />
[CONFIG]<br />
BaudRate = "1000000"<br />
ClearConfigOnConnect = "0x00"<br />
Security = "0xFF"<br />
ShieldStart = "0x0000"<br />
ShieldEnd = "0x000F"<br />
</source><br />
<br />
'''[OPTIONS]'''<br><br />
'''TargetPower'''<br><br />
If set to a value >0, power is applied to the target.<br />
The value defines the delay (in ms) after enabling the target power supply and before starting to communicate with the target.<br />
<br />
'''ChipErase'''<br><br />
If set to 1, the chip erase function is called for erasing the chip.<br><br />
{{Note|1=Do not enable this setting if the flash programming algorithm does not support chip erase.}}<br />
<br />
'''[TASKS]'''<br><br />
'''CheckBlank'''<br><br />
Defines if a blank check should be performed before erasing a sector.<br />
<br />
'''Erase'''<br><br />
Defines if the sector should be erased before programming.<br />
<br />
'''Program'''<br><br />
Defines if the sector should be programmed.<br />
<br />
'''Verify'''<br><br />
Defines if the sector should be verified after programming.<br />
<br />
'''Secure'''<br><br />
Defines if the device should be secured or protected against read-out after verifying.<br />
<br />
'''[DEVICE]'''<br><br />
'''Algo'''<br><br />
File name of the flash programming algorithm. This file is provided by SEGGER and will typically support a series of devices.<br />
<br />
'''Data'''<br><br />
File name of the data file to program. The Flasher only supports the Flasher .dat file format.<br />
Flasher .dat files can be generated by J-Flash or Universal Flash Loader and offer high performance together with high flexibility.<br />
<br />
'''[BANKx]'''<br><br />
x blocks with configuration data for the flash banks. All three parameters (Base, Size and Sect) are mandatory.<br />
<br />
'''Base'''<br><br />
Base address of the flash bank.<br />
<br />
'''Size'''<br><br />
Total size of the flash bank.<br />
<br />
'''Sect'''<br><br />
Sector size of the flash bank.<br />
<br />
'''[CONFIG]'''<br><br />
This section includes specific configuration data for the flash programming algorithm.<br><br />
There are no general parameters.<br />
<br />
{{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. }}<br />
<br />
==== Preparing using the PC utility ====<br />
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.<br />
<br />
[[File:Universal Flash Loader.png]]<br />
<br />
The Universal Flash Loader Configurator comes with a large list of devices and flash programming algorithms. If you are going to<br />
use a device from one of the supported families which currently is not available in the utility, feel free to contact the support.<br />
<br />
=== Multiple File Support ===<br />
<br />
It is also possible to have multiple data files and config files on Flasher, to make Flasher more easy to use in production environment.<br />
To choose the correct configuration file and data file pair, a <tt>FLASHER.INI</tt> file is used.<br />
This init file contains a <tt>[FILES]</tt> section which describes which configuration file and which data file should be used for programming.<br />
A sample content of a FLASHER.INI file is shown below:<br><br />
<br />
<source><br />
[FILES]<br />
DataFile = "Flasher1.dat"<br />
ConfigFile = "Flasher1.cfg"<br />
</source><br />
<br />
Using this method all configuration files and data files which are used in the production only have to be downloaded once.<br />
From there on a configuration file / data file pair can be switched by simply replacing the <tt>FLASHER.INI</tt> by a new one,<br />
which contains the new descriptions for the configuration file and data file. The <tt>FLASHER.INI</tt> can be replaced in two ways:<br />
<ol><br />
<li>Boot Flasher in file access mode in order to replace the <tt>FLASHER.INI</tt></li><br />
<li><br />
If Flasher is already integrated into the production line, runs in stand-alone mode and can not be booted in other mode:<br />
Use the file I/O commands provided by the ASCII interface of Flasher, to replace the <tt>FLASHER.INI</tt>.<br />
For more information about the file I/O commands, please refer to [[#File I/O commands | File I/O commands]].<br />
</li><br />
</ol><br />
{{Note|1=Flasher with hardware version 4 and lower only supports 8.3 filenames only (8 characters filename, 3 characters file extension). Using longer filenames may result in incorrect operation.}}<br />
<br />
==== Flasher Portable specifics ====<br />
<br />
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><br />
<br />
Which config / data file pair is used for which image selection position is determined by the contents of the FLASHER.INI.<br />
For this, the FLASHER.INI contents in the <tt>[FILES]</tt> section have been extended.<br />
The sample below shows how to enable the user to select between four different images on the Flasher portable via the select / arrow button:<br />
<br />
<source><br />
[FILES]<br />
DataFile = "First.dat"<br />
ConfigFile = "First.cfg"<br />
DataFile1 = "Second.dat"<br />
ConfigFile1 = "Second.cfg"<br />
DataFile2 = "Third.dat"<br />
ConfigFile2 = "Third.cfg"<br />
DataFile3 = "Fourth.dat"<br />
ConfigFile3 = "Fourth.cfg"<br />
</source><br />
<br />
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.<br />
From there on, switching between the files can be done by simply using the selection button of Flasher Portable.<br />
<br />
===== Example =====<br />
<br />
1 Target, 2 Datafiles (e.g. boot loader und application) --> same configuration file (*.CFG) but different data files (*.DAT) should be used.<br><br />
<br />
* Open pre-configured J-Flash project<br />
* File -> Save Flasher config file ... (DEFAULT.CFG)<br />
* Open data file 1 (boot loader)<br />
* File -> Save Flasher data file ... (BOOT.DAT)<br />
* Open data file 2 (application)<br />
* File -> Save Flasher data file ... (APP.DAT)<br />
* Create the a FLASHER.INI file (content see below)<br />
* Connect the Flasher in file access mode to the PC<br />
* Copy DEFAULT.CFG, BOOT.DAT, APP.DAT and FLASHER.INI on the Flasher<br />
<br />
FLASHER.INI content:<br><br />
<br />
<source><br />
[FILES]<br />
DataFile = "BOOT.DAT"<br />
ConfigFile = "DEFAULT.CFG"<br />
DataFile1 = "APP.DAT"<br />
ConfigFile1 = "DEFAULT.CFG"<br />
</source><br />
<br />
==== Flasher Portable PLUS specifics ====<br />
<br />
Flasher Portable PLUS allows to choose between 99 configuration and data file pairs during runtime by using the select button on the front of Flasher Portable PLUS.<br><br />
<br />
Which config / data file pair is used for which image selection position is determined by the contents of the FLASHER.INI.<br />
For this, the FLASHER.INI may contain several <tt>[BATCH]</tt> sections.<br />
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:<br />
<br />
<source><br />
[BATCH]<br />
DataFile = "First.dat"<br />
ConfigFile = "First.cfg"<br />
[BATCH1]<br />
DataFile = "Second.dat"<br />
ConfigFile = "Second.cfg"<br />
[BATCH2]<br />
DataFile = "Third.dat"<br />
ConfigFile = "Third.cfg"<br />
[BATCH7]<br />
DataFile = "Proj_8.dat"<br />
ConfigFile = "Proj_8.cfg"<br />
[BATCH15]<br />
DataFile = "Proj_16.dat"<br />
ConfigFile = "Proj_16.cfg"<br />
</source><br />
<br />
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.<br />
From there on, switching between the files can be done by simply using the selection button of Flasher Portable PLUS.<br />
<br />
Please also consider the chapter [[#Batch Programming in stand-alone mode | Batch Programming in stand-alone mode]].<br />
<br />
{{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.}}<br />
{{Note|1=You may have gaps in the list. The missing entries will be skipped when selecting the next configuration.}}<br />
{{Note|1=The <tt>[Files]</tt> section is supported by the Flasher Portable PLUS, too. But the number of configuration is limited to four.}}<br />
<br />
===== Example =====<br />
<br />
1 Target, 2 Datafiles (e.g. boot loader und application) --> same configuration file (*.CFG) but different data files (*.DAT) should be used.<br><br />
<br />
* Open pre-configured J-Flash project<br />
* File -> Save Flasher config file ... (DEFAULT.CFG)<br />
* Open data file 1 (boot loader)<br />
* File -> Save Flasher data file ... (BOOT.DAT)<br />
* Open data file 2 (application)<br />
* File -> Save Flasher data file ... (APP.DAT)<br />
* Create the a FLASHER.INI file (content see below)<br />
* Connect the Flasher in file access mode to the PC<br />
* Copy DEFAULT.CFG, BOOT.DAT, APP.DAT and FLASHER.INI on the Flasher<br />
<br />
FLASHER.INI content:<br><br />
<br />
<source><br />
[BATCH]<br />
DataFile = "BOOT.DAT"<br />
ConfigFile = "DEFAULT.CFG"<br />
DisplayName = "Bootloader"<br />
[BATCH1]<br />
DataFile = "APP.DAT"<br />
ConfigFile = "DEFAULT.CFG"<br />
DisplayName = "Application"<br />
[BATCH2]<br />
DataFile = "BOOT.DAT"<br />
ConfigFile = "DEFAULT.CFG"<br />
DataFile1 = "APP.DAT"<br />
ConfigFile1 = "DEFAULT.CFG"<br />
DisplayName = "BL and App"<br />
</source><br />
<br />
=== Custom labels ===<br />
<br />
Flasher supports to assign custom labels to configurations ("Project Display Text" in U-Flash). This allows to specify easy to remember names for configurations that are stored on the Flasher.<br />
<br />
==== Hardware and software requirements ====<br />
This feature is supported by the following models:<br />
* Flasher Portable PLUS<br />
<br />
This feature is supported since V6.30e of the software package and firmware<br />
<br />
==== Assigning labels ====<br />
The configuration and data file pairs are specified in the <tt>FLASHER.INI</tt> file:<br />
<source><br />
[FILES]<br />
DataFile = "IMAGE0.dat"<br />
ConfigFile = "IMAGE0.cfg"<br />
DataFile1 = "IMAGE1.dat"<br />
ConfigFile1 = "IMAGE1.cfg"<br />
</source><br />
<br />
By default, Flasher will show the names of the configuration and data file:<br />
[[File:FW1_smartwatch_nolabel.png]]<br />
[[File:FW2_smart_meter_nolabel.png]]<br />
<br />
By adding <tt>DisplayName</tt>, <tt>DisplayName1</tt>, ... keys to the <tt>FLASHER.INI</tt>, a custom label can be shown instead:<br />
<source><br />
[FILES]<br />
DisplayName = "FW smartwatch"<br />
DataFile = "IMAGE0.dat"<br />
ConfigFile = "IMAGE0.cfg"<br />
DisplayName1 = "FW smart meter"<br />
DataFile1 = "IMAGE1.dat"<br />
ConfigFile1 = "IMAGE1.cfg"<br />
</source><br />
<br />
The images will now be shown as follows:<br />
[[File:FW1_smartwatch_label.png]]<br />
[[File:FW2_smart_meter_label.png]]<br />
<br />
==== Considerations ====<br />
* 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.<br />
<br />
=== Programming multiple targets ===<br />
<br />
It is possible to program multiple targets which are located in a JTAG chain.<br />
The targets will be programmed each with a configuration and a data file.<br><br />
The configuration for the desired target must be selected before it can be programmed,<br />
this can be done with the <tt>#SELECT</tt> command.<br />
For more information how to use the <tt>#SELECT</tt> command please refer to the [[#ASCII_command_interface|ASCII command interface]].<br />
<br />
'''Example'''<br><br />
Three devices should be programmed.<br><br />
<br />
JTAG Chain: ''TDI'' --> ''Device2'' --> ''Device1'' --> ''Device0'' --> ''TDO''<br><br />
<br />
Three configurations would be stored on the flasher:<br><br />
<br />
Config 0: Configured to program Device0 (DEVICE0.CFG, DEVICE0.DAT)<br><br />
Config 1: Configured to program Device1 (DEVICE1.CFG, DEVICE1.DAT)<br><br />
Config 2: Configured to program Device2 (DEVICE2.CFG, DEVICE2.DAT)<br><br />
<br />
Selection and programming of the target will be done via the ASCII interface:<br><br />
<br />
<source><br />
#SELECT DEVICE0<br />
#AUTO<br />
#SELECT DEVICE1<br />
#AUTO<br />
#SELECT DEVICE2<br />
#AUTO<br />
</source><br />
<br />
==== Programming multiple targets with J-Flash ====<br />
<br />
Programming multiple targets can also be done via J-Flash using the command line interface.<br />
For this each target must be handled with its own project file.<br />
<br />
'''Example'''<br><br />
<br />
<source><br />
JFlash.exe -openproj"Device0.jflash" -open"Device0.hex" -auto -exit<br />
JFlash.exe -openproj"Device1.jflash" -open"Device1.hex" -auto -exit<br />
JFlash.exe -openproj"Device2.jflash" -open"Device2.hex" -auto -exit<br />
</source><br />
<br />
=== Batch Programming in stand-alone mode ===<br />
<br />
Batch programming allows to execute different stand-alone mode jobs in batch to be executed in immediate succession, without any user interaction in between.<br />
This can be used for example to program multiple targets in a JTAG-Chain or multiple data files to a target.<br><br />
A batch may contains an unlimited number of configurations which consist of a data file (*.DAT) and config file (*.CFG).<br />
For further information regarding config and data files, please refer to [[#Preparing for stand-alone operation manually | Preparing for stand-alone operation manually]].<br><br />
In order to specify the batch jobs, a FLASHER.INI file is used.<br />
This init file contains a [BATCH] section which describes which configuration pairs (*.DAT and *.CFG file) should be used for each batch job.<br />
A sample content of a FLASHER.INI file is shown below:<br><br />
<br />
<source><br />
[BATCH]<br />
DataFile = "Flasher0.dat"<br />
ConfigFile = "Flasher0.cfg"<br />
DataFile1 = "Flasher1.dat"<br />
ConfigFile1 = "Flasher1.cfg"<br />
</source><br />
<br />
[[File:Batch_Jobs.bmp]]<br />
<br />
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.<br />
<br />
<br />
[[File:Batch_Programming.bmp]]<br />
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<br />
currently executed action.<br />
<br />
<br />
[[File:Batch_Result.bmp]]<br />
The result of the programming will be shown on the screen after finishing all jobs.<br />
<br />
<br />
Creating / Replacing of the FLASHER.INI file can done in two ways:<br><br />
<ol><br />
<li>Boot Flasher in file access mode in order to replace the FLASHER.INI</li><br />
<li><br />
If Flasher is already integrated into the production line, runs in stand-alone mode and can not be booted in other mode:<br />
Use the file I/O commands provided by the ASCII interface of Flasher, to replace the FLASHER.INI .<br />
For more information about the file I/O commands, please refer to [[#File I/O commands | File I/O commands]].<br />
In case of an error occurred during execution, the Flasher terminates the entire batch processing.<br />
</li><br />
</ol><br />
{{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.}}<br />
{{Note|1=The Flasher with hardware version 4 and lower supports 8.3 filenames only (8 characters filename, 3 characters file extension). Using longer filenames may result in incorrect operation.}}<br />
<br />
==== Flasher Portable specifics ====<br />
<br />
Flasher Portable allows to choose between four different batches during runtime by using the select/arrow button on the front of Flasher Portable.<br />
Which batch configuration is used for which image selection position is specified in the FLASHER.INI.<br />
For this, the FLASHER.INI contents in the [BATCH] section have been extended.<br />
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><br />
<br />
<source><br />
[BATCH]<br />
DataFile = "Flasher0.dat"<br />
ConfigFile = "Flasher0.cfg"<br />
DataFile1 = "Flasher1.dat"<br />
ConfigFile1 = "Flasher1.cfg"<br />
DataFile2 = "Flasher2.dat"<br />
ConfigFile2 = "Flasher2.cfg"<br />
[BATCH1]<br />
DataFile = "TEST.dat"<br />
ConfigFile = "Test.cfg"<br />
[BATCH2]<br />
DataFile = "VALIDATE.dat"<br />
ConfigFile = "Flasher0.cfg"<br />
</source><br />
<br />
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.<br />
From there on, switching between the batches can be done by simply using the selection button of Flasher Portable.<br />
<br />
<br />
<br />
==== Examples ====<br />
<br />
'''Example 1:''' Programming two Data files to the same target<br><br />
<br />
* Open your J-Flash project.<br />
* Use File -> Save Flasher config file... to save the .CFG file (in this example: STM32F4.CFG).<br />
* Select the first binary and use File -> Save Flasher Data file... to save the first .DAT file (in this example: DATA0.DAT).<br />
* Select the second binary and use File -> Save Flasher Data file... to save the second data file .DAT file (in this example: DATA1.DAT).<br />
* Copy the Files to the Flasher e.g. by using file access mode.<br />
* Create a FLASHER.INI file in the root directory of the Flasher.<br />
* Exemplary content of FLASHER.INI:<br><br />
<source><br />
[BATCH]<br />
DataFile = "DATA0.dat"<br />
ConfigFile = "emPower.cfg"<br />
DataFile1 = "DATA1.dat"<br />
ConfigFile1 = "emPower.cfg"<br />
</source><br />
<br />
<br />
'''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><br />
Example scenario: 2 Devices in a JTAG chain, a STM32F1 and a STM32F4. <br><br />
<br />
* Follow the same as described before and additionally:<br />
* Create one project file per target (and create a .CFG file of each one).<br />
* Make sure each project file is configured correctly, especially the JTAG-Chain position (See UM8003 "J-Flash" for more detailed info).<br />
* Exemplary content of FLASHER.INI:<br><br />
<source><br />
[BATCH]<br />
DataFile = "F1DATA.dat"<br />
ConfigFile = "STM32F1.cfg"<br />
DataFile1 = "F4DATA0.dat"<br />
ConfigFile1 = "STM32F4.cfg"<br />
DataFile2 = "F4DATA1.dat"<br />
ConfigFile2 = "STM32F4.cfg"<br />
</source><br />
<br />
'''Example 3:''' Using multiple Batch sections with Flasher Portable.<br><br />
Example scenario: 2 Devices in a JTAG chain, a STM32F1 and a STM32F4.<br><br />
Selection 1 will program the STM32F1 target.<br><br />
Selection 2 will program the STM32F4 target using "F4DATA0.dat".<br><br />
Selection 3 will program the STM32F4 target using "F4DATA1.dat".<br><br />
Selection 4 will execute 1, 2 and 3 in sequence.<br><br />
* Exemplary content of FLASHER.INI:<br><br />
<source><br />
[BATCH]<br />
DataFile = "F1DATA.dat"<br />
ConfigFile = "STM32F1.cfg"<br />
[BATCH1]<br />
DataFile = "F4DATA0.dat"<br />
ConfigFile = "STM32F4.cfg"<br />
[BATCH2]<br />
DataFile = "F4DATA1.dat"<br />
ConfigFile = "STM32F4.cfg"<br />
[BATCH3]<br />
DataFile = "F1DATA.dat"<br />
ConfigFile = "STM32F1.cfg"<br />
DataFile1 = "F4DATA0.dat"<br />
ConfigFile1 = "STM32F4.cfg"<br />
DataFile2 = "F4DATA1.dat"<br />
ConfigFile2 = "STM32F4.cfg"<br />
</source><br />
<br />
=== Serial number programming ===<br />
<br />
Flasher supports programming of serial numbers. In order to use the serial number programming feature,<br />
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><br />
<br />
In general, Flasher supports two ways of programming a serial number into the target:<br />
<br />
#<br />
#* Programming continuous serial numbers.<br />
#* The serial number is 1-4 bytes in size.<br />
#* The start serial number, increment, serial number size, and address are configured in the J-Flash project.<br />
#<br />
#* Programming custom serial numbers from a serial number list file.<br />
#* The start line within the serial number list file to get the next serial number bytes, line increment, serial number size, and address is configured in the J-Flash project.<br />
#* The serial number list file needs to be specified and created by the user.<br />
<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.}}<br />
<br />
==== Serial number settings ====<br />
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.<br />
This is done by enabling the '''Program serial number''' option as shown in the screenshot and table below:<br />
<br />
[[File:UM08039_SN_Sample_JFlashSettings.png]]<br />
<br />
{| class="seggertable"<br />
|-<br />
!| Setting || Meaning<br />
|-<br />
| <tt>Address</tt> || The address the serial number should be programmed at.<br />
|-<br />
| <tt>Length</tt> ||<br />
The length of the serial number (in bytes) that 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 8 is selected as length, the serial number and its complement are programmed at the given address.<br />
* In case a serial number list file is given, the 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 '''Length''', the remaining bytes are filled with 0s. No complements etc. are added to the serial number.<br />
|-<br />
| <tt>Next SN</tt> ||<br />
* In case no serial number list file is given, '''Next SN''' is the next serial number which should be programmed. The serial number is always stored in flash memory in little-endian format.<br />
* In case a serial number list file is given, '''Next SN''' describes the line of the serial number list file where to read the next serial number bytes from. The Flasher starts counting at line 0, so in order to start serial number programming with the first line of the <tt>SNList.txt</tt>, '''Next SN''' needs to be set to 0.<br />
|-<br />
| <tt>Increment</tt> || Specifies by how much '''Next SN''' is incremented.<br />
|}<br />
<br />
=== Serial number file ===<br />
When selecting '''File -> Download serial number file to Flasher''', J-Flash will create a serial number file named as <tt><JFlashProjectName>_Serial.txt</tt>.<br />
This file is downloaded as <tt>Serial.txt</tt> on the Flasher.<br />
The file is generated based on the serial number settings in the J-Flash project and will contain the value defined by the '''Next SN''' option.<br />
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.<br />
<br />
==== Serial number list file ====<br />
<br />
In order to program custom serial numbers which can not be covered by the standard serial number scheme provided by J-Flash<br />
(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.<br />
<br />
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.<br />
This file is downloaded as <tt>SNList.txt</tt> on the 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<br />
* Each byte of the serial number is described by two hexadecimal digits.<br />
<br />
'''Example'''<br><br />
A 8-byte serial number should be programmed at address 0x08000000.<br><br />
<br />
It should be programmed as follows in the memory:<br><br />
<br />
<tt>0x08000000: 0x01 0x02 0x03 0x04 0x55 0x66 0x77 0x88</tt><br><br />
<br />
The serial number list file should look as follows:<br><br />
<br />
<tt>0102030455667788</tt><br />
<br />
[[File:SN_SNList.gif]]<br />
<br />
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><br />
<br />
Which line Flasher will read at the next programming cycle, is configured via the <tt>Next SN</tt> option in J-Flash.<br />
For more information, please refer to [[#Serial number settings | Serial number settings]].<br />
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><br />
<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.}}<br />
{{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.}}<br />
<br />
==== Programming process ====<br />
<br />
Flasher will increment the serial number in SERIAL.TXT by the value defined in <tt>Increment</tt>, after each successful programming cycle.<br><br />
<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><br />
<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.<br />
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.}}<br />
<br />
==== Downloading serial number files to Flasher ====<br />
<br />
Downloading the serial number files needs to be done explicitly by selecting '''File-> Download serial number file to Flasher'''.<br />
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.<br />
<br />
==== Sample setup ====<br />
<br />
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.<br />
<br />
'''Defining serial number address, length and start value'''<br><br />
In the J-Flash project the following needs to be defined:<br><br />
* <tt>Address</tt> is 0x08001000<br />
* <tt>Next SN</tt> is 1234567<br />
* <tt>Increment</tt> is 1<br />
* <tt>Len</tt> is 4 (bytes)<br />
<br />
[[File:SN_Sample_JFlashSettings.gif]]<br />
<br />
'''Downloading configuration, data and serial number to Flasher.'''<br><br />
After setting up the rest of the configuration (Target interface etc.) and selecting an appropriate data file, the configuration,<br />
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><br />
<br />
[[File:SN_Sample_DownloadToFlasher.gif]]<br />
<br />
After downloading the serial number to Flasher, J-Flash also created the <tt><JFlashProjectName>_Serial.txt</tt>.<br />
<br />
[[File:SN_Sample_SerialFileCreated.gif]]<br />
<br />
Now Flasher is prepared to program the 8-byte serial number.<br />
<br />
=== Patch file support ===<br />
<br />
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.<br />
Before starting programming process in stand-alone mode, Flasher will look for a file named <tt>Patches.txt</tt> being present on the Flasher.<br />
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><br />
<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.<br />
<br />
'''Syntax'''<br><br />
<!-- LG xxxxxxxxx '==' is shown as '=', so instead use '= ='--><br />
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><br />
<br />
<tt><NumPatches>,<Addr>,<NumBytes>:<nowiki><Data></nowiki>,<Addr>,<NumBytes>:<nowiki><Data></nowiki>,<Addr>,<NumBytes>:<nowiki><Data></nowiki>,<Addr>,<NumBytes>:<nowiki><Data></nowiki>\r\n</tt><br><br />
<br />
Find below a table which describes each parameter.<br><br />
{| class="seggertable"<br />
|-<br />
! Parameter !! Description<br />
|-<br />
| <tt><NumPatches></tt> || Describes the number of patches in this patch line. Max. value is 4.<br />
|-<br />
| <tt><Addr></tt> || Describes the address to be patched. Value is expected in hex.<br />
|-<br />
| <tt><NumBytes></tt> || Number of bytes for the current patch. Max. value is 20h (32 in decimal). Value is expected in hex.<br />
|-<br />
| <tt><nowiki><Data></nowiki></tt> || Describes the data to be patched. <nowiki><Data></nowiki> is always expected as 2 hexadecimal characters per byte.<br />
|-<br />
|}<br />
<br />
{{Note|1=All values are expected in hexadecimal format (hex).<br><br />
<nowiki><Data></nowiki> section is always preceded by ":", not ",".}}<br />
<br />
'''Example'''<br><br />
Below is an example patch.<br><br />
<br />
<source><br />
1,18,4:01020304\r\n<br />
</source><br />
<br />
Patching the following data:<br />
<br />
[[File:data_before.png]]<br />
<br />
with the example patch will result in the following data:<br />
<br />
[[File:data_afterwards.png]]<br />
<br />
Please note that as mentioned earlier patching undefined memory locations will be ignored.<br><br />
Applying the example patch to the following data:<br />
<br />
[[File:undefined_mem_before.png]]<br />
<br />
Causes no data to be patched, as can be seen in the following image:<br />
<br />
[[File:undefined_mem_no_token.png]]<br />
<br />
Therefore it is necessary to first write placeholder data to the memory locations which are supposed to be patched.<br><br />
An example for such a placeholder can be seen here:<br />
<br />
[[File:undefined_mem_token.png]]<br />
<br />
Please note that the actual data inside the placeholder does not matter to the Flasher,<br />
because it is overwritten during patching.<br><br />
Applying the example patch will now work as expected:<br />
<br />
[[File:undefined_mem_after.png]]<br />
<br />
'''Single patch via RS232'''<br><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><br />
<br />
Send the <tt>#AUTO PATCH <NumPatches>,<Addr>,<NumBytes>:<nowiki><Data></nowiki></tt><br><br />
<br />
command via Flasher ASCII interface. The parameters have the same function as described in the table above.<br />
<br />
==== Newline encoding ====<br />
<br />
In general, for all patch files, init files etc. Flasher supports both newline encodings:<br><br />
<br />
* Windows: \r\n<br />
* Unix/Mac: \n<br />
<br />
All parser functionality etc. are written to be independent from the host operating system.<br />
<br />
=== Limiting the number of programming cycles ===<br />
<br />
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.<br />
To make use of this feature, a file called <tt>Cntdown.txt</tt> needs to be placed on the Flasher.<br />
This file simply contains a decimal number (32-bit unsigned integer) that describes how many programming cycles can be performed with the current setup.<br />
<br />
[[File:CntdownTxtContent.jpg]]<br />
<br />
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><br />
<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>.}}<br />
<br />
==== Changed fail/error LED indicator behavior ====<br />
<br />
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><br />
<br />
* The red error/fail LED will lit for 1 second<br />
* After this, it will blink/toggle x times @ 5 Hz, indicating the number of programming cycles left. (blinking 5 times for 5 cycles left, ...)<br />
<br />
==== Required Flasher hardware version for Cntdown.txt support ====<br />
<br />
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><br />
<br />
* 1621xxxxx (Flasher ARM V2)<br />
* 1630xxxxx (Flasher ARM V3)<br />
* 4210xxxxx (Flasher PPC V1)<br />
* 4110xxxxx (Flasher RX V1)<br />
<br />
All other models / hardware versions support limiting of programming cycles.<br />
<br />
=== Authorized flashing ===<br />
<br />
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.<br />
without the possibility to read out the Flasher contents via file access mode, FILE I/O functionality (J-Link Commander) or RS232 commands.<br />
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.<br />
<br />
==== Creating / Adding the secure area ====<br />
<br />
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.<br />
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.<br />
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><br />
<br />
[[File:CreateSecArea.jpg]]<br />
<br />
The following secure area related commands are available in J-Link Commander:<br><br />
<br />
* securearea create<br />
* securearea remove<br />
<br />
{{Note|1=When creating or removing the <tt>secure area</tt>, all configuration and data files being stored on the Flasher, are lost.<br />
Please make sure that they are not needed anymore, before adding / removing the security area.}}<br />
<br />
==== Moving files to the secure area ====<br />
<br />
Before moving configuration + data to the <tt>secure area</tt>, proper functionality of the setup should be tested in stand-alone mode.<br />
Once the setup is working as expected, do the following, to move the configuration + data into the <tt>secure area</tt>:<br><br />
<br />
* Start Flasher in file access mode (For more info, please refer to: [[#file access mode | file access mode]])<br />
<br />
[[File:FilesBeforeSecure.png]]<br />
<br />
* Create a folder "<tt>_SECURE</tt>"<br />
* Move all files that shall be moved to the <tt>secure area</tt>, into this folder<br />
<br />
[[File:FilesAfterSecure.png]]<br />
<br />
* 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.<br />
* Now Flasher can be used in stand-alone mode, as normal, but the files cannot be read back by the user / operator.<br />
<br />
==== Considerations to be taken when using the secure area ====<br />
<br />
When using the <tt>secure area</tt>, some things need to be considered:<br><br />
<br />
* All features like multiple file support, patch file support etc. can also be used when operating from the <tt>secure area</tt>.<br />
* 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>.<br />
* 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>.<br />
* 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.<br />
<br />
==== Required Flasher hardware version ====<br />
<br />
Older Flasher models do not support authorized flashing. The Flashers with the following serial number ranges do not support authorized flashing:<br><br />
<br />
* 1621xxxxx (Flasher ARM V2)<br />
* 1630xxxxx (Flasher ARM V3)<br />
* 4210xxxxx (Flasher PPC V1)<br />
* 4110xxxxx (Flasher RX V1)<br />
<br />
All other models / hardware versions support authorized flashing.<br />
<br />
=== Target interfaces ===<br />
<br />
The table below shows the supported target interfaces of the different Flasher models.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! Supported interfaces<br />
|-<br />
| Flasher PRO || JTAG, SWD<br />
|-<br />
| Flasher Compact || JTAG, SWD<br />
|-<br />
| Flasher ARM || JTAG, SWD<br />
|-<br />
| Flasher RX || JTAG<br />
|-<br />
| Flasher PPC || JTAG<br />
|-<br />
|}<br />
<br />
For more information about the target interfaces itself, please refer to:<br><br />
<br />
* ''UM08001, chapter "Working with J-Link and J-Trace", section "JTAG interface"''<br />
* ''UM08001, chapter "Working with J-Link and J-Trace", section "SWD interface"''<br />
<br />
=== Supported architectures ===<br />
<br />
Flasher supports programming of the internal flash of a large number of different microcontrollers.<br />
The number of supported devices is steadily growing. You can always find the latest list of supported devices on our website:<br><br />
<br />
''http://www.segger.com/supported-devices.html''<br />
<br />
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.<br />
Also the existence of the device may have confidential status, so it might not be mentioned as being supported in public releases yet.<br />
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.<br />
<br />
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).<br />
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.<br />
<br />
If a device is not supported, you can always contact us. We will be happy to provide you with an offer.<br />
<br />
==== External flashes ====<br />
<br />
In general our Flashers support programming of external flashes listed below:<br>(Can differ between Flasher models and hardware versions)<br />
<br />
* parallel NOR flash<br />
* SPI / QSPI flash<br>(see: ''[[SPI_support_by_Flasher_models]]'')<br />
* NAND flash<br />
* I<sup>2</sup>C EEPROM/Flash<br />
* FRAM<br />
<br />
If the parallel NOR flash device which is used is not CFI-compliant you have to select the flash device in J-Flash explicitly,<br />
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''.<br />
<br />
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.<br />
The J-Flash software comes with sample projects for ''Open Flashloader''.<br />
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''<br />
{{Note|1=Complete Information about ''Open Flashloaders'' can be found in our Wiki:<br>''[[Open_Flashloader]]''}}<br />
<br />
==== Cores ====<br />
<br />
===== Flasher ARM =====<br />
<br />
Flasher ARM supports and has been tested with the following cores, but should work with any ARM7/9, Cortex-M0/M1/M3/M4 core.<br />
If you experience problems with a particular core, do not hesitate to contact Segger.<br><br />
<br />
* ARM7TDMI (Rev 1)<br />
* ARM7TDMI (Rev 3)<br />
* ARM7TDMI-S (Rev 4)<br />
* ARM920T<br />
* ARM922T<br />
* ARM926EJ-S<br />
* ARM946E-S<br />
* ARM966E-S<br />
* Cortex-M0<br />
* Cortex-M1<br />
* Cortex-M3<br />
* Cortex-M4<br />
<br />
===== Flasher RX =====<br />
<br />
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><br />
<br />
* RX610<br />
* RX621<br />
* RX62N<br />
* RX62T<br />
<br />
===== Flasher PPC =====<br />
<br />
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.<br />
<br />
* e200z0<br />
<br />
===== Flasher PRO/Compact/Portable PLUS =====<br />
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/''.<br />
<br />
=== Programming multiple targets in parallel ===<br />
<br />
To program multiple targets in parallel there are the following possibilities:<br />
* Using a Flasher gang, or<br />
* Using multiple Flashers, each connecting to one CPU.<br />
<br />
Devices for gang programming are:<br />
* Flasher Hub-12 in conjunction with up to 12 Flasher (Compact). Please refer to [[UM08043_Flasher_Hub-12|Flasher Hub-12 user manual (UM08043_Flasher_Hub-12)]].<br />
* Flasher ATE; suitable for programming up to 10 targets in parallel. Please refer to [https://www.segger.com/downloads/flasher/UM08035 Flasher ATE user manual (UM08035_FlasherATE.pdf)].<br />
When using multiple flashers, this can be done with the J-Flash production programming software.<br />
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''<br />
<br />
=== Logfiles and Quality Management ===<br />
<br />
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:<br />
<source lang="c"><br />
SN: 1 - Failed<br />
SN: 1 - Failed<br />
SN: 2 - O.K. (931 ms)<br />
SN: 3 - O.K. (931 ms)<br />
SN: 4 - O.K. (933 ms)<br />
SN: 5 - O.K. (932 ms)<br />
</source><br />
If applicable, the logfile contains more detailed error messages. For example:<br />
<source lang="c"><br />
ERROR: Programming failed @ address 0x00000000 (1)<br />
ERROR: Cannot connect to CPU. Target interface speed too high?<br />
</source><br />
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:<br />
<source lang="c"><br />
Verify error config word area @<br />
config word<br />
config word read back<br />
Verify error flash area @<br />
data from file<br />
data read back<br />
</source><br />
{{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.}}<br />
<br />
== TCP Services ==<br />
This chapter describes the integrated TCP services.<br />
<br />
=== FTP Server ===<br />
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><br />
[[File:FTPServer.png]]<br />
<br />
==== Access data ====<br />
Anonymous access to the FTP server is limited to read-only access to the file system.<br><br />
For write access, special login credentials have to be used:<br><br />
<tt>Login: admin</tt><br><br />
<tt>Password: 1234</tt><br><br />
<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.<br />
It is not meant as a security feature.}}<br />
<br />
=== Web server ===<br />
<br />
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.<br />
For the network, the IP address settings can be changed and a nick name can be assigned to the device.<br><br />
<br />
Additionally, the web interface provides information about the status of the integrated operating system, the IP stack and the target hardware.<br />
<br />
== Remote control ==<br />
This chapter describes how to control the Flasher in standalone mode.<br />
<br />
=== Overview ===<br />
There are 3 ways to control Flasher operation:<br><br />
{| class="seggertable"<br />
! Type of control !! Description<br />
|-<br />
| Button || Programming operation starts when pressing the PROG-button. The LEDs serve as visible indicators.<br />
|-<br />
| Handshake || 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.<br />
|-<br />
| Terminal || Terminal communication via TELNET, RS232 or VCOM with the [[#ASCII command interface]]<br />
|}<br />
<br />
<br />
{{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.}}<br />
<br />
=== Handshake control ===<br />
<br />
Some Flasher models are equipped with additional hardware control functions that are connected to the SUBD9 male connector, normally used as an RS232 interface to the PC.<br />
These Flasher models can therefore be controlled remotely by automated testers without the need for a connection to a PC.<br />
<br />
The handshake control is available for the following Flashers:<br />
* Flasher ARM<br />
* Flasher PRO<br />
* Flasher Compact (via Flasher Hub and Flasher Hub-12 only)<br />
<br />
The following diagrams show the internal remote control circuitry of Flasher:<br><br />
<br />
[[File:FlasherRemotecontrol.png]]<br />
{| class="seggertable"<br />
|-<br />
! Pin No. !! Function !! Description<br />
|-<br />
| 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.<br />
|-<br />
| 4 || BUSY || As soon as the "Auto" function is started, BUSY becomes active, which means that transistor is switched OFF.<br />
|-<br />
| 5 || GND || Common Signal ground.<br />
|-<br />
| 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.<br />
|-<br />
|}<br />
[[File:FlasherRemoteSignal.png]]<br />
<br />
=== ASCII command interface ===<br />
<br />
==== Introduction ====<br />
<br />
Once set up using J-Flash, the Flasher can be driven by any application or just a simple terminal using ASCII commands.<br><br />
<br />
Every known command is acknowledged by the Flasher and then executed. After command execution, Flasher sends an ASCII reply message.<br><br />
<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}}<br />
<br />
==== General command and reply message format ====<br />
<br />
* Any ASCII command has to start with the start delimiter ''#''.<br />
* Any ASCII command has to end with simple carriage return ('\r', ASCII code 13).<br />
* Commands can be sent upper or lower case<br />
<br />
==== General usage ====<br />
<br />
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.<br />
<br />
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).<br />
<br />
==== Settings for ASCII interface via RS232 ====<br />
<br />
Flasher is driven via a RS232 serial port with the following interface settings:<br><br />
<br />
* 9600 baud<br />
* 8 data bits<br />
* no parity<br />
* 1 stop bit<br />
<br />
The baud rate can be changed by using the <tt>#BAUDRATE</tt> command.<br />
<br />
==== Settings for ASCII interface via Telnet ====<br />
<br />
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><br />
<br />
[[File:telnet_connection.gif]]<br />
<br />
==== Settings for ASCII interface via VCOM ====<br />
<br />
The same settings can be used for VCOM as for [[#Settings for ASCII interface via RS232|RS232]].<br />
<br />
{{Note|The performance also depends on the terminal application used on the PC.}}<br />
<br />
==== Commands and replies ====<br />
<br />
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><br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| Commands to the Flasher<br />
|-<br />
| <tt>#BAUDRATE <Baudrate></tt><br />
|-<br />
| <tt>#AUTO</tt><br />
|-<br />
| <tt>#AUTO PATCH</tt><br />
|-<br />
| <tt>#AUTO NOINFO</tt><br />
|-<br />
| <tt>#CANCEL</tt><br />
|-<br />
| <tt>#ERASE</tt><br />
|-<br />
| <tt>#PROGRAM</tt><br />
|-<br />
| <tt>#RESULT</tt><br />
|-<br />
| <tt>#SELECT <Filename></tt><br />
|-<br />
| <tt>#START</tt><br />
|-<br />
| <tt>#STATUS</tt><br />
|-<br />
| <tt>#VERIFY</tt><br />
|-<br />
| <tt>#READ</tt><br />
|-<br />
| <tt>#QUIT</tt><br />
|-<br />
| <tt>#VERBOSE <Level></tt><br />
|-<br />
!colspan="100%"| File I/O commands<br />
|-<br />
| <tt>#FCLOSE</tt><br />
|-<br />
| <tt>#FCRC</tt><br />
|-<br />
| <tt>#FDELETE <Filename></tt><br />
|-<br />
| <tt>#FFORMAT</tt><br />
|-<br />
| <tt>#FOPEN <Filename></tt><br />
|-<br />
| <tt>#FREAD <Offset>,<NumBytes></tt><br />
|-<br />
| <tt>#FSIZE</tt><br />
|-<br />
| <tt>#FWRITE <Offset>,<NumBytes>:<nowiki><Data></nowiki></tt><br />
|-<br />
| <tt>#FLIST</tt><br />
|-<br />
| <tt>#MKDIR <Dirname></tt><br />
|-<br />
!colspan="100%"| SecureArea commands<br />
|-<br />
| <tt>#HASSECUREAREA</tt><br />
|-<br />
| <tt>#SECUREAREA <action></tt><br />
|-<br />
!colspan="100%"| Replies from the Flasher<br />
|-<br />
| <tt>#ACK</tt><br />
|-<br />
| <tt>#NACK</tt><br />
|-<br />
| <tt>#OK</tt><br />
|-<br />
| <tt>#OK:<NumBytes>:<nowiki><Data></nowiki></tt><br />
|-<br />
| <tt>#OK:<Size></tt><br />
|-<br />
| <tt>#STATUS:</tt><br />
|-<br />
| <tt>#DONE</tt><br />
|-<br />
| <tt>#ERRxxx</tt><br />
|-<br />
|}<br />
<br />
===== Commands to the Flasher =====<br />
<br />
'''#AUTO'''<br><br />
The <tt>#AUTO</tt> command behaves exactly as the start button or external remote control input.<br><br />
<br />
Usually, the following command sequence will be performed when receiving the <tt>#AUTO</tt> command:<br><br />
<br />
* The Flasher erases the target CPU (if not blank)<br />
* The Flasher programs the target CPU<br />
* The Flasher verifies the target CPU<br />
<br />
Depending on the settings chosen in the '''Production''' tab in J-Flash, this sequence can differ from the one shown above.<br><br />
<br />
Finally, Flasher responds with<br><br />
<br />
* <tt>#OK</tt> if no error occurred<br />
* <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.<br />
<br />
During execution of the <tt>#AUTO</tt> command, Flasher automatically sends "status" messages via RS232 to reflect the state of execution.<br />
Typically during execution of <tt>#AUTO</tt> command, Flasher will reply the following sequence of messages:<br><br />
<br />
<tt>#ACK</tt><br><br />
<tt>#STATUS:INITIALIZING</tt><br><br />
<tt>#STATUS:CONNECTING</tt><br><br />
<tt>#STATUS:UNLOCKING</tt><br><br />
<tt>#STATUS:ERASING</tt><br><br />
<tt>#STATUS:PROGRAMMING</tt><br><br />
<tt>#STATUS:VERIFYING</tt><br><br />
<tt>#OK (Total 13.993s, Erase 0.483s, Prog 9.183s, Verify 2.514s)</tt><br><br />
<br />
'''#AUTO PATCH'''<br><br />
The <tt>#AUTO</tt> PATCH command allows patching of the content of the data to be programmed.<br><br />
<br />
Flasher responds with<br><br />
<br />
* <tt>#OK</tt> if no error occurred<br />
* <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.<br />
<br />
For further information about the usage of the <tt>#AUTO PATCH</tt> command please refer to [[#Patch file support | Patch file support]].<br />
<br />
'''#AUTO NOINFO'''<br><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><br />
<br />
The command ends with <tt>#OK</tt> or <tt>#ERRxxx</tt><br />
<br />
'''#BAUDRATE <Baudrate>'''<br><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><br />
<br />
If this command succeeds, Flasher responds with:<br><br />
<br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<br />
Otherwise it will respond with one of the following error messages:<br><br />
<br />
<tt>#ERR255: Invalid parameters</tt><br><br />
<tt>or</tt><br><br />
<tt>#ERR255: Baudrate is not supported</tt><br><br />
<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.<br />
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.}}<br />
<br />
'''#CANCEL'''<br><br />
This command can be sent to abort a running program. It may take a while until the current program is actually canceled.<br><br />
<br />
Flasher will respond with:<br><br />
<br />
<tt>#ERR007:CANCELED.</tt><br><br />
<br />
'''#ERASE'''<br><br />
This command can be sent to erase all selected target flash sectors.<br><br />
<br />
Flasher will reply the following sequence of messages:<br><br />
<br />
<tt>#ACK</tt><br><br />
<tt>#STATUS:INITIALIZING</tt><br><br />
<tt>#STATUS:CONNECTING</tt><br><br />
<tt>#STATUS:UNLOCKING</tt><br><br />
<tt>#STATUS:ERASING</tt><br><br />
<tt>#OK (Total 0.893s, Erase 0.483s)</tt><br><br />
<br />
'''#PROGRAM'''<br><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.<br />
<br />
'''#RESULT'''<br><br />
This command can be sent any time, even during other command execution. Flasher responds with the last result of the previously executed command.<br />
<br />
'''#SELECT <Filename>'''<br><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.<br />
<tt><Filename></tt> specifies the name of file pair without extensions (.CFG and .DAT) on the Flasher which should be selected. If you are<br />
using the universal flash programming mode, <tt><Filename></tt> specifies the full name of the .UNI file '''including''' the extension.<br />
Flasher saves the selected config and data file in the FLASHER.INI file. So this selection is remembered even between power-cycling Flasher.<br><br />
<br />
This may be verfy helpful in cases where several config and data files are stored on Flasher.<br />
The user can easily switch between these config and data files without connecting Flasher to a host.<br><br />
<br />
If this command succeeds, Flasher responds with:<br><br />
<br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<br />
Find below a sample sequence which shows how to use the <tt>#SELECT</tt> command:<br><br />
<br />
<tt>#SELECT ATSAM7_1 // ATSAM7_1.CFG and ATSAM7_1.DAT is selected</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<tt>#AUTO // Start auto programming</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#STATUS:INITIALIZING</tt><br><br />
<tt>#STATUS:CONNECTING</tt><br><br />
<tt>#STATUS:UNLOCKING</tt><br><br />
<tt>#STATUS:ERASING</tt><br><br />
<tt>#STATUS:PROGRAMMING</tt><br><br />
<tt>#STATUS:VERIFYING</tt><br><br />
<tt>#OK (Total 8.416s, Erase 0.005s, Prog 6.845s, Verify 0.959s)</tt><br><br />
<tt>#SELECT ATSAM7_2 // ATSAM7_2.CFG and ATSAM7_2.DAT is selected</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<tt>#AUTO // Start auto programming</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#STATUS:INITIALIZING</tt><br><br />
<tt>#STATUS:CONNECTING</tt><br><br />
<tt>#STATUS:UNLOCKING</tt><br><br />
<tt>#STATUS:ERASING</tt><br><br />
<tt>#STATUS:PROGRAMMING</tt><br><br />
<tt>#STATUS:VERIFYING</tt><br><br />
<tt>#OK (Total 8.632s, Erase 0.005s, Prog 7.051s, Verify 0.969s)</tt><br><br />
<br />
'''#START'''<br><br />
This command can be sent to start the application using the method configured in the J-Flash project.<br><br />
For U-Flash projects, however, the target application is not necessarily started. <br><br />
There is often a "start application" checkbox in the U-Flash settings which have to be set for this.<br />
<br />
Flasher will reply with the following sequence of messages:<br><br />
<br />
<tt>#ACK</tt><br><br />
<tt>#STATUS:INITIALIZING</tt><br><br />
<tt>#STATUS:CONNECTING</tt><br><br />
<tt>#OK (Total 1.148s)</tt><br><br />
<br />
'''#STATUS'''<br><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]].<br />
<br />
'''#VERIFY'''<br><br />
This command can used to verify the target flash content against the data stored in Flasher.<br />
<br />
'''#READ'''<br><br />
Only available for devices supported by U-Flash.<br><br />
This command can used to read out flash data.<br><br />
More information: [https://wiki.segger.com/Flasher/How_to_read_data_from_a_device_using_U-Flash How to read data using U-Flash]<br />
<br />
'''#QUIT'''<br><br />
This command can be used to terminate the active telnet connection from the server side (Flasher).<br />
The command provides an easy way to terminate the session from an automated script.<br />
It is not necessary to parse stdout and switch to local command mode to disconnect.<br />
Not implemented in the Flasher ATE or Flasher Hub.<br />
<br />
'''#VERBOSE <Level>'''<br><br />
This command can be used to change the verbosity level. <br><br />
* Verbosity level 0: Default. <br><br />
* Verbosity level 1: Provides some additional messages during the programming process.<br />
<br />
===== File I/O commands =====<br />
<br />
The ASCII interface of the Flasher also supports file I/O operations.<br />
<br />
The following file I/O commands are supported:<br><br />
<br />
'''#FCLOSE'''<br><br />
The <tt>#FCLOSE</tt> command closes the file on Flasher which was opened via <tt>#FOPEN</tt>.<br />
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><br />
<br />
A typical sequence when using the <tt>#FCLOSE</tt> command does look like as follows:<br><br />
<br />
<tt>#FCLOSE</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<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><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:No file opened</tt><br />
}}<br />
<br />
'''#FCRC'''<br><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>.<br />
The CRC will be also reported by J-Flash when downloading or saving files via J-Flash.<br><br />
<br />
A typical sequence when using the <tt>#FCRC</tt> command does look like as follows:<br><br />
<br />
<tt>#FCRC flasher.dat</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK:0x75BC855A</tt><br><br />
<br />
'''#FDELETE <Filename>'''<br><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><br />
<br />
A typical sequence when using the <tt>#FDELETE</tt> command does look like as follows:<br><br />
<br />
<tt>#FDELETE flasher.dat</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<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><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:Failed to delete file</tt><br />
}}<br />
<br />
'''#FFORMAT'''<br><br />
The <tt>#FFORMAT</tt> command is used to delete all files located in the public area of the Flasher's internal memory.<br />
<br />
{{Note|1=Please note that this command deletes all projects located in the public area. Deleted projects cannot be restored again.<br><br />
This command does not delete the Flasher firmware, neither does it delete files in the secure area.<br />
}}<br />
<br />
A typical sequence using the <tt>#FFORMAT</tt> command does look like as follows:<br><br />
<br />
<tt>#FFORMAT</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#DONE</tt><br><br />
<br />
'''#FOPEN <Filename>'''<br><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.<br />
If <tt><Filename></tt> can not be found on Flasher a new one will be created.<br><br />
<br />
A typical sequence using the <tt>#FOPEN</tt> command does look like as follows:<br><br />
<br />
<tt>#FOPEN flasher.dat</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<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><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:A file has already been opened</tt><br />
}}<br />
<br />
'''#FREAD <Offset>,<NumBytes>'''<br><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.<br />
<tt><NumBytes></tt> specifies the number of bytes which should be read.<br><br />
<br />
A typical sequence when using the <tt>#FREAD</tt> command does look like as follows:<br><br />
<br />
<tt>#FREAD 0,4</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK:04:466c6173</tt><br><br />
<br />
If the <tt>#FREAD</tt> command succeeds, Flasher will finally respond with a <tt>#OK:<NumBytes>:<nowiki><Data></nowiki></tt> reply message.<br />
For more information about the Flasher reply messages, please refer to [[#Replies from Flasher | Replies from Flasher]].<br><br />
<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><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:No file opened</tt>}}<br />
<br />
'''#FSIZE'''<br><br />
The <tt>#FSIZE</tt> command is used to get the size of the currently opened file on Flasher.<br><br />
<br />
A typical sequence when using the <tt>#FSIZE</tt> command does look like as follows:<br><br />
<br />
<tt>#FSIZE</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK:10 // file on flasher which is currently open, has a size of 16 bytes</tt><br><br />
<br />
If the <tt>#FSIZE</tt> command succeeds, Flasher will respond with a <tt>#OK:<Size></tt> reply message.<br />
For more information about the Flasher reply messages, please refer to [[#Replies from Flasher | Replies from Flasher]].<br><br />
<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><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:No file opened</tt>}}<br />
<br />
'''#FWRITE <Offset>,<NumBytes>:<nowiki><Data></nowiki>'''<br><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.<br />
<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.<br />
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><br />
<br />
<tt><Offset></tt> and <tt><NumBytes></tt> are expected in hexadecimal format.<br><br />
<br />
<tt>#FWRITE 0,200:<nowiki><Data></nowiki></tt><br><br />
<tt>#FWRITE 200,200:<nowiki><Data></nowiki></tt><br><br />
<br />
The data is expected in hexadecimal format (two hexadecimal characters per byte). The following example illustrates the use of <tt>#FWRITE</tt>:<br />
<br />
<tt>Data to be send: Hello !</tt><br><br />
<tt>ASCII values: 0x48, 0x65, 0x6C, 0x6C, 0x6F, 0x20, 0x21</tt><br><br />
<br />
<tt>#FWRITE 0,7:48656C6C6F2021</tt><br><br />
<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><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:No file opened</tt><br>}}<br />
<br />
'''#FLIST'''<br><br />
The <tt>#LIST</tt> command is used to list all files stored on the Flasher.<br><br />
<br />
A typical sequence using the <tt>#FLIST</tt> command does look like as follows:<br><br />
<br />
<tt>#FLIST</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>FLASHER.INI Size: 60</tt><br><br />
<tt>SERIAL.TXT Size: 3</tt><br><br />
<tt>FLASHER.LOG Size: 207</tt><br><br />
<tt>FOLDER (DIR)</tt><br><br />
<tt>FOLDER\\TEST1.CFG Size: 2048</tt><br><br />
<tt>FOLDER\\TEST1.DAT Size: 12288</tt><br><br />
<tt>#OK</tt><br><br />
<br />
'''#MKDIR <Dirname>'''<br><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><br />
<br />
A typical sequence using the <tt>#MKDIR</tt> command does look like as follows:<br><br />
<br />
<tt>#MKDIR folder</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<br />
{{Note|1=If the directory can not be created because of a bad <tt><Dirname></tt> argument, Flasher will respond with:<br><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:Failed to create directory</tt><br>}}<br />
<br />
===== Secure Area Commands =====<br />
<br />
'''#HASSECUREAREA'''<br><br />
The <tt>#HASSECUREAREA</tt> command checks if the Flasher is configured with a secure area.<br />
<br />
<tt>#RESULT:YES</tt> indicates the secure area is present, <tt>#RESULT:NO</tt> indicates no secure area is present.<br />
<br />
'''#SECUREAREA'''<br><br />
The <tt>#SECUREAREA <action></tt> command allows to create or remove the secure area on the Flasher.<br />
<br />
* the action <tt>CREATE</tt> creates the secure area.<br />
* the action <tt>REMOVE</tt> will remove the secure area.<br />
<br />
A typical sequence using the <tt>#SECUREAREA</tt> command does look like as follows:<br><br />
<br />
<tt>#SECUREAREA CREATE</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#DONE</tt><br><br />
<br />
{{Note|1=When creating or removing the <tt>secure area</tt>, all configuration and data files being stored on the Flasher, are lost.<br />
Please make sure that they are not needed anymore, before adding / removing the security area.}}<br />
<br />
<br />
<br />
===== Replies from Flasher =====<br />
<br />
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.<br />
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.<br />
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><br />
<br />
<tt>#OK (Total 13.993s, Erase 0.483s, Prog 9.183s, Verify 2.514s)</tt><br><br />
<br />
The following reply messages from Flasher are defined:<br><br />
<br />
'''#ACK'''<br><br />
Flasher replies with <tt>#ACK</tt> message on reception of any defined command before the command itself is executed.<br />
<br />
'''#NACK'''<br><br />
Flasher replies with <tt>#NACK</tt>, if an undefined command was received.<br />
<br />
'''#OK'''<br><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.<br />
<br />
'''#OK:<NumBytes>:<nowiki><Data></nowiki>'''<br><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.<br />
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).<br />
<br />
'''#OK:<Size>'''<br><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.<br />
<br />
'''#STATUS:'''<br><br />
The Flasher replies with its current state.<br><br />
<br />
The following status messages are currently defined:<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Message !! Description<br />
|-<br />
| <tt>#STATUS:READY</tt> || Flasher is ready to receive a new command.<br />
|-<br />
| <tt>#STATUS:CONNECTING</tt> || Flasher initializes connection to target CPU.<br />
|-<br />
| <tt>#STATUS:INITIALIZING</tt> || Flasher performs self check and internal init.<br />
|-<br />
| <tt>#STATUS:UNLOCKING</tt> || Unlocking flash sectors.<br />
|-<br />
| <tt>#STATUS:ERASING</tt> || Flasher is erasing the flash of the target device.<br />
|-<br />
| <tt>#STATUS:PROGRAMMING</tt> || Flasher is programming the flash of the target device.<br />
|-<br />
| <tt>#STATUS:VERIFYING</tt> || Flasher verifies the programmed flash contents.<br />
|-<br />
|}<br />
<br />
'''#ERRxxx'''<br><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><br />
<br />
Some error codes may be followed by colon and an additional error text.<br><br />
<br />
For example:<br><br />
<br />
<tt>#ERR007:CANCELED.</tt><br><br />
<br />
The error code numbers are described in the following table:<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Message !! Description<br />
|-<br />
| <tt>#ERR007</tt> || Flasher received <tt>#CANCEL</tt> command and has canceled the current operation.<br />
|-<br />
| <tt>#ERR008</tt> || Flasher is already busy with execution of previous command.<br />
|-<br />
| <tt>#ERR009</tt> || Failed to allocate memory.<br />
|-<br />
| <tt>#ERR010</tt> || Failed to open file.<br />
|-<br />
| <tt>#ERR011</tt> || Failed to read file.<br />
|-<br />
| <tt>#ERR012</tt> || Failed to write file.<br />
|-<br />
| <tt>#ERR013</tt> || Failed to delete file.<br />
|-<br />
| <tt>#ERR255</tt> || Undefined error occurred. This reply is followed by an error string.<br />
|-<br />
|}<br />
<br />
== Performance ==<br />
<br />
The following chapter lists programming performance of common flash devices andmicrocontrollers.<br />
<br />
=== Performance of MCUs with internal flash memory ===<br />
<br />
==== Flasher ARM ====<br />
<br />
The following table lists program and erase performance values of Flasher ARM for different controllers.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Microcontroller !! Size [kByte] !! Erase time [sec] !! Program time [sec] !! Verify time [sec] !! Total time [sec]<br />
|-<br />
| Analog Devices || 62 || 2.943 || 2.286 || 0.563 || 5.792<br />
|-<br />
| Atmel AT91SAM7S64 || 64 || --- || 3.488 || 0.438 || 3.926<br />
|-<br />
| Atmel AT91SAM7S256 || 256 || --- || 7.709 || 1.053 || 8.762<br />
|-<br />
| NXP LPC1768 || 512 || 3.740 || 8.559 || 5.092 || 17.391<br />
|-<br />
| NXP LPC2106 || 120 || 0.448 || 1.204 || 0.634 || 2.286<br />
|-<br />
| NXP LPC2129 || 248 || 0.449 || 2.916 || 1.347 || 4.712<br />
|-<br />
| NXP LPC2138 || 500 || 0.448 || 5.488 || 2.649 || 8.585<br />
|-<br />
| NXP LPC2148 || 500 || 0.448 || 5.632 || 2.721 || 8.801<br />
|-<br />
| NXP LPC2294 || 2048 || 0.808 || 15.976 || 9.669 || 26.453<br />
|-<br />
| NXP LPC2478 || 504 || 0.448 || 5.419 || 2.559 || 8.426<br />
|-<br />
| ST STM32F103ZE || 512 || 0.028 || 18.763 || 3.939 || 22.730<br />
|-<br />
| ST STR711 || 272 || 0.429 || 5.476 || 4.742 || 10.647<br />
|-<br />
| ST STR912 || 544 || 1.167 || 12.907 || 5.236 || 19.310<br />
|-<br />
| TI TMS470R1B1M || 1024 || 2.289 || 8.147 || 5.362 || 15.798<br />
|-<br />
|}<br />
<br />
==== Flasher PRO ====<br />
See Flasher ARM.<br />
<br />
==== Flasher Compact ====<br />
See Flasher ARM.<br />
<br />
==== Flasher RX ====<br />
<br />
The following table lists program and erase performance values of Flasher RX.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Microcontroller !! Size [kByte] !! Erase time [sec] !! Program time [sec] !! Verify time [sec] !! Total time [sec]<br />
|-<br />
| R5F56108 || 2.048 || 9.523 || 11.915 || 3.890 || 25.585<br />
|-<br />
|}<br />
<br />
==== Flasher PPC ====<br />
<br />
The following table lists program and erase performance values of Flasher PPC.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Microcontroller !! Size [kByte] !! Erase time [sec] !! Program time [sec] !! Verify time [sec] !! Total time [sec]<br />
|-<br />
| ST SPC560B50 || 576 || 4.747 || 4.159 || 1.929 || 10.917<br />
|-<br />
|}<br />
<br />
== Hardware ==<br />
<br />
This chapter gives an overview about Flasher specific hardware details,<br />
such as the pinouts and available adapters.<br />
<br />
=== Flasher ARM 20-pin JTAG/SWD Connector ===<br />
<br />
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.<br />
<br />
==== Pinout JTAG ====<br />
<br />
[[File:jtag_port_20pin.jpg]] <!-- LG xxxxxx image has been cropped to fit page --><br />
<br />
The following table lists the Flasher JTAG pinout.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! PIN !! SIGNAL !! TYPE !! Description<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 13 || TDO || Input || JTAG data output from target CPU. Typically connected to TDO of target CPU.<br />
|-<br />
| 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".<br />
|-<br />
| 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.<br />
|-<br />
| 19 || 5V-Target supply || Output || This pin can be used to supply power to the target board. Please note the specifications. [[#Target power supply]]<br />
|-<br />
|}<br />
<br />
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.<br />
<br />
==== Pinout SWD ====<br />
<br />
The 20-pin connector of Flasher is also compatible to ARM's Serial Wire Debug (SWD) interface.<br><br />
<br />
[[File:SWD_Port.jpg]] <!-- LG xxxxxx image has been cropped to fit page --><br />
<br />
The following table lists the J-Link / J-Trace SWD pinout.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! PIN !! SIGNAL !! TYPE !! Description<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 7 || SWDIO || I/O || Single bi-directional data pin.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 13 || SWO || Output || Serial Wire Output trace port. (Optional, not required for SWD communication.)<br />
|-<br />
| 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".<br />
|-<br />
| 17 || Not used || NC || This pin is not connected in J-Link.<br />
|-<br />
| 19 || 5V-Target supply || Output || This pin can be used to supply power to the target board. Please note the specifications. [[#Target power supply]]<br />
|-<br />
|}<br />
<br />
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.<br />
<br />
==== Target power supply ====<br />
<br />
Pin 19 of the connector can be used to supply power to the target hardware. Supply voltage is 5V, max. current is 400mA.<br />
The output current is monitored and protected against overload and short-circuit.<br><br />
<br />
Power can be controlled via the J-Link commander. The following commands are available to control power:<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Command !! Explanation<br />
|-<br />
| <tt>power on</tt> || Switch target power on<br />
|-<br />
| <tt>power off</tt> || Switch target power off<br />
|-<br />
| <tt>power on perm</tt> || Set target power supply default to "on"<br />
|-<br />
| <tt>power off perm</tt> || Set target power supply default to "off"<br />
|-<br />
|}<br />
<br />
=== Flasher RX 14-pin connector ===<br />
<br />
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.<br />
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.<br />
<br />
[[File:jtag_port_14pin.wmf]]<br />
<br />
The following table lists the Flasher RX 14-pin JTAG pinout.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Pin !! Signal !! Type !! Description<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 5 || TDO || Input || JTAG data output from target CPU. Typically connected to TDO on target CPU.<br />
|-<br />
| 6 || --- || NC || This pin is not connected to Flasher RX.<br />
|-<br />
| 7 || --- || NC || This pin is not connected to Flasher RX.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 10 || --- || NC || This pin is not connected to Flasher RX.<br />
|-<br />
| 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.<br />
|-<br />
| 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".<br />
|-<br />
|}<br />
<br />
* All pins marked NC are not connected to Flasher RX. Any signal can be applied here; Flasher RX will simply ignore such a signal.<br />
* Pins 2, 12, 14 are GND pins connected to GND in Flasher RX. They should also be connected to GND in the target system.<br />
<br />
==== Target power supply ====<br />
<br />
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.<br />
Power can be controlled via the J-Link commander. The following commands are available to control power:<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Command !! Explanation<br />
|-<br />
| <tt>power on</tt> || Switch target power on<br />
|-<br />
| <tt>power off</tt> || Switch target power off<br />
|-<br />
| <tt>power on perm</tt> || Set target power supply default to "on"<br />
|-<br />
| <tt>power off perm</tt> || Set target power supply default to "off"<br />
|-<br />
|}<br />
<br />
=== Flasher PPC 14-pin connector ===<br />
<br />
Flasher PPC itself has a 20-pin JTAG connector mounted but comes with a 14-pin adapter for PowerPC devices.<br><br />
<br />
[[File:JTAG_PPC_14pin_adapter.wmf]]<br />
<br />
The following table lists the Flasher PPC 14-pin JTAG pinout.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Pin !! Signal !! Type !! Description<br />
|-<br />
| 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.<br />
|-<br />
| 3 || TDO || Input || JTAG data output from target CPU. Typically connected to TDO on target CPU.<br />
|-<br />
| 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.<br />
|-<br />
| 7 || --- || NC || This pin is not connected to Flasher PPC.<br />
|-<br />
| 8 || --- || NC || This pin is not connected to Flasher PPC.<br />
|-<br />
| 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".<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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).<br />
|-<br />
|}<br />
<br />
* All pins marked NC are not connected to Flasher PPC. Any signal can be applied here; Flasher PPC will simply ignore such a signal.<br />
* 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.<br />
<br />
=== Target board design ===<br />
<br />
We strongly advise following the recommendations given by the chip manufacturer. These recommendations are normally in line with the recommendations.<br />
Please refer to the the appropriate tables depending on the core:<br><br />
<br />
* [[#Pinout JTAG | Pinout JTAG]]<br />
* [[#Pinout SWD | Pinout SWD]]<br />
* [[#Flasher RX 14-pin connector | Flasher RX 14-pin connector]]<br />
* [[#Flasher PPC 14-pin connector | Flasher PPC 14-pin connector]]<br />
<br />
In case of doubt you should follow the recommendations given by the semiconductor manufacturer.<br />
<br />
==== Pull-up/pull-down resistors ====<br />
<br />
Unless otherwise specified by developer's manual, pull-ups/pull-downs are recommended to be between 2.2 kOhms and 47 kOhms.<br />
<br />
==== RESET, nTRST ====<br />
<br />
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><br />
<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.<br />
(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.<br />
<br />
=== Adapters ===<br />
<br />
==== JTAG Isolator ====<br />
<br />
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.<br />
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><br />
<br />
[[File:JTAG_Isolator_Port.wmf]]<br />
<br />
===== Pinout =====<br />
<br />
The following table shows the target-side pinout of the J-Link JTAG Isolator.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Pin !! Signal !! Type !! Description<br />
|-<br />
| 1 || VCC || Output || The target side of the isolator draws power over this pin.<br />
|-<br />
| 2 || VCC || Output || The target side of the isolator draws power over this pin.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 13 || TDO || Input || JTAG data output from target CPU. Typically connected to TDO of target CPU.<br />
|-<br />
| 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".<br />
|-<br />
| 17 || N/C || N/C || This pin is not connected on the target side of the isolator.<br />
|-<br />
| 19 || N/C || N/C || This pin is not connected on the target side of the isolator.<br />
|-<br />
|}<br />
<br />
Pins 4, 6, 8, 10, 12, 14, 16, 18, 20 are connected to GND.<br />
<br />
===== Safety =====<br />
This isolator provides '''basic isolation''' only. '''Do not use with hazardous voltages without further protection measures to avoid risk of electrical shock and fire.'''<br />
<br />
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.<br />
<br />
==== J-Link Needle Adapter ====<br />
<br />
To connect to the J-Link OB via programming interface the ''J-Link Needle Adapter'' is recommended.<br><br />
<br />
[[File:J-Link_Needle_Adapter_500x.jpg]]<br />
<br />
Why to choose the J-Link Needle Adapter:<br><br />
<ol><br />
<li>No additional connector required on your PCB</li><br />
<li>Very small footprint</li><br />
<li>High reliability spring pins for secure connections</li><br />
<li>Designed with 3 locating pins, so the adapter can not be connected the wrong way</li><br />
<li>No external power supply required! The J-Link Needle Adapter comes with the option to power the target hardware via J-Link.</li><br />
</ol><br />
These features make the J-Link Needle Adapter the perfect solution for production purposes.<br><br />
<br />
The pinout of the J-Link Needle Adapter is based on the pinout of the needle adapter by Tag-Connect.<br />
Please note, that both pinouts are not identical since the J-Link Needle Adapter comes with a 5V-supply pin.<br><br />
<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><br />
<br />
Moreover, the two "legs" on each side of the connector guarantee a stable and secure contact between pins and the PCB.<br><br />
<br />
[[File:J-Link_Needle_Adapter_Connector_pins_360x.jpg]]<br />
[[File:J-Link_Needle_Adapter_Pinout.jpg]]<br />
<br />
The J-Link Needle Adapter can be connected to J-Link via the ''20-pin 0.1'' JTAG to a 10-pin needle connector''.<br />
<br />
=== Flasher Pin states when idling ===<br />
The following sections describe the expected pin states of the Flasher target connection when idle.<br />
<br />
First of all, an electrical tri-state of the pins is currently not possible due to the hardware of the Flasher. The pin is therefore set to input to simulate a tri-state.<br />
Consequently, minimal currents cannot be avoided. For In-Circuit Tests (ICT) or other applications where these low currents may be relevant, we recommend the use of the [https://www.segger.com/products/production/flasher/accessories/adapters/relay-adapter/ SEGGER Relay Adapter], which can completely separate the connection.<br />
<br />
* With Hardware version 5 the Flasher switches all pins of the target interface to input following an operation (e.g. #AUTO) except: <br />
** VTref (Pin 1) and TDO (Pin 13) are always inputs. <br />
** The state of RESET (Pin 15) remains unchanged. <br>Most implementations of devices support the setting: <code>Start Application</code>. If this option is activated, RESET remains weakHigh (via PullUp) instead of LOW for IDLE.<br />
** The status of VSupply (Pin19) can vary depending on the setting ([[#Target power supply]]).<br />
* In earlier hardware versions, the status of the pins in idle state cannot be guaranteed.<br />
<br />
=== How to determine the hardware version ===<br />
<br />
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.<br />
Flasher has the hardware version printed on the back label.<br><br />
<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).<br />
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><br />
<br />
[[File:FlasherARM_version.gif]]<br />
<br />
== Support and FAQs ==<br />
<br />
This chapter contains troubleshooting tips together with solutions for common problems which might occur when using Flasher.<br />
There are several steps you can take before contacting support.<br />
Performing these steps can solve many problems and often eliminates the need for assistance.<br />
This chapter also contains a collection of frequently asked questions (FAQs) with answers.<br />
<br />
=== Contacting support ===<br />
<br />
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.<br />
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><br />
<br />
If you need to contact support, send the following information to<br><br />
''support@segger.com''<br><br />
<br />
* A detailed description of the problem<br />
* Flasher serial number<br />
* Information about your target hardware (processor, board, etc.).<br />
* <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]].<br />
<br />
Flasher is sold directly by SEGGER.<br />
<br />
=== Frequently Asked Questions ===<br />
<br />
'''Maximum JTAG speed'''<br />
{|<br />
|-<br />
| '''Q:''' || What is the maximum JTAG speed supported by Flasher?<br />
|-<br />
| '''A:''' || Flasher's maximum supported JTAG speed is 12MHz.<br />
|}<br />
<br />
'''Maximum download speed'''<br />
{|<br />
|-<br />
| '''Q:''' || What is the maximum download speed?<br><br />
|-<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.<br />
|}<br />
== Background information ==<br />
<br />
This chapter provides background information about flash programming in general. It<br />
also provides information about how to replace the firmware of Flasher manually.<br />
<br />
=== Flash programming ===<br />
<br />
Flasher comes with a DLL, which allows - amongst other functionalities - reading and writing RAM, CPU registers, starting and stopping the CPU, and setting breakpoints.<br />
<br />
==== How does flash programming via Flasher work? ====<br />
<br />
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.<br />
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.<br />
Different flash chips have different programming algorithms;the programming algorithm also depends on other things,<br />
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).<br />
The RAM code requires data to be programmed into the flash memory. The data is supplied by downloading it to RAM.<br />
<br />
==== Data download to RAM ====<br />
<br />
The data (or part of it) is downloaded to another part of the RAM of the target system.<br />
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.<br />
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.<br />
This process may have to be repeated until the entire data is programmed into the flash.<br />
<br />
==== Available options for flash programming ====<br />
<br />
In general, there are two possibilities in order to use Flasher for flash programming:<br><br />
<br />
* Using Flasher stand-alone to program the target flash memory (stand-alone mode)<br />
* Using Flasher in combination with J-Flash to program the target flash memory (Flasher in "PC-based mode")<br />
<br />
===== Using Flasher in stand-alone mode =====<br />
<br />
In order to use the Flasher in stand-alone mode, it has to be configured first.<br />
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]].<br />
<br />
===== J-Flash - Complete flash programming solution =====<br />
<br />
J-Flash is a stand-alone Windows application, which can read / write data files and program the flash in almost any ARM system.<br />
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''.<br />
<br />
==== How does the universal flash programming work? ====<br />
<br />
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><br />
<br />
Universal flash programming is available only for stand-alone mode.<br />
== Glossary ==<br />
<br />
This chapter describes important terms used throughout this manual.<br />
<br />
'''Big-endian'''<br><br />
Memory organization where the least significant byte of a word is at a higher address than the most significant byte. See Little-endian.<br />
<br />
'''Cache cleaning'''<br><br />
The process of writing dirty data in a cache to main memory.<br />
<br />
'''Coprocessor'''<br><br />
An additional processor that is used for certain operations, for example, for floating-point math calculations, signal processing, or memory management.<br />
<br />
'''Dirty data'''<br><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.<br />
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.<br />
<br />
'''Halfword'''<br><br />
A 16-bit unit of information.<br />
<br />
'''Host'''<br><br />
A computer which provides data and other services to another computer. Especially, a computer providing debugging services to a target being debugged.<br />
<br />
'''ICache'''<br><br />
Instruction cache.<br />
<br />
'''ID'''<br><br />
Identifier.<br />
<br />
'''IEEE 1149.1'''<br><br />
The IEEE Standard which defines TAP. Commonly (but incorrectly) referred to as JTAG.<br />
<br />
'''Image'''<br><br />
An executable file that has been loaded onto a processor for execution.<br />
<br />
'''Instruction Register'''<br><br />
When referring to a TAP controller, a register that controls the operation of the TAP.<br />
<br />
'''IR'''<br><br />
See Instruction Register.<br />
<br />
'''Joint Test Action Group (JTAG)'''<br><br />
The name of the standards group which created the IEEE 1149.1 specification.<br />
<br />
'''Little-endian'''<br><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.<br />
<br />
'''Memory coherency'''<br><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.<br />
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.<br />
<br />
'''Memory management unit (MMU)'''<br><br />
Hardware that controls caches and access permissions to blocks of memory, and translates virtual to physical addresses.<br />
<br />
'''Memory Protection Unit (MPU)'''<br><br />
Hardware that controls access permissions to blocks of memory. Unlike an MMU, a MPU does not translate virtual addresses to physical addresses.<br />
<br />
'''RESET'''<br><br />
Abbreviation of System Reset. The electronic signal which causes the target system other than the TAP controller to be reset.<br />
This signal is also known as "nSRST" "nSYSRST", "nRST", or "nRESET" in some other manuals. See also nTRST.<br />
<br />
'''nTRST'''<br><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.<br />
<br />
'''Open collector'''<br><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.<br />
<br />
'''Processor Core'''<br><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.<br />
It excludes optional coprocessors, caches, and the memory management unit.<br />
<br />
'''Remapping'''<br><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.<br />
<br />
'''RTOS'''<br><br />
Real Time Operating System.<br />
<br />
'''TAP Controller'''<br><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.<br />
<br />
'''Target'''<br><br />
The actual processor (real silicon or simulated) on which the application program is running.<br />
<br />
'''TCK'''<br><br />
The electronic clock signal which times data on the TAP data lines TMS, TDI, and TDO.<br />
<br />
'''TDI'''<br><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.<br />
<br />
'''TDO'''<br><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.<br />
<br />
'''Test Access Port (TAP)'''<br><br />
The port used to access a device's TAP Controller. Comprises TCK, TMS, TDI, TDO, and nTRST (optional).<br />
<br />
'''Transistor-transistor logic (TTL)'''<br><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.<br />
<br />
'''Word'''<br><br />
A 32-bit unit of information. Contents are taken as being an unsigned integer unless otherwise stated.<br />
== Literature and references ==<br />
This chapter lists documents, which we think may be useful to gain a deeper understanding of technical details.</div>JanBhttps://wiki.segger.com/index.php?title=UM08022_Flasher&diff=17586UM08022 Flasher2024-02-01T07:34:11Z<p>JanB: /* Flasher ARM 20-pin JTAG/SWD Connector */</p>
<hr />
<div><!---<br />
General TBD:<br />
- LG: Right now - EVERYTHING<br />
===========================================<br />
--------------------[more specific, but on multiple locations]<br />
- check if all emphasis (bold, tt, blue, etc ) have made it into the new version<br />
- Add Information -> Additional information<br />
- use of the term free-of-charge utility/tool etc<br />
- check compliant to DocStandards_Rules.txt<br />
- Remove everything regarding to Kickstarter versions? eventually create a chapter Legacy -> Kickstarter version were available for hw version 5-x (200x-200x)...[..]<br />
- 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.<br />
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.<br />
- if week keep the IDE specific stuff in the manual, add Ozone, ES and J-Link Commander were no mentioned.<br />
- IDE specifics move into wiki confirmed by Alex<br />
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)<br />
- check all sections regarding licensing<br />
- Check compliance of J-Link emDocs with typographic conventions described in AboutThisDocument.emDoc. What should be altered? e.g. references<br />
- use uref at all (not blue)?<br />
- search and decide where to use \ref (ref with page number)<br />
- why is \ref (no single "option" \uref is more basic as \ref.....)<br />
- in text, use either \ref or \iref instead of \uref<br />
- in old manual, \H3 started on a new page (not per default, but set manually for api tables etc...)<br />
- move used old images and source files (visio etc) via svn (currently copied)<br />
--------------------[grammar / vocabulary discussion]<br />
- Product names<br />
-- Use of SEGGEPROBE in this document?<br />
- use license over licence<br />
- commandline or command-line?<br />
- toolchain or tool chain?<br />
- crossreference/cross-reference/cross reference?<br />
- overcurrent?<br />
- double words?<br />
- frontend?<br />
- Unit: Kbytes, KBytes, V, mV.... 9V or 9 V? Create rule in Vocabulary<br />
- baudrate or baud rate?<br />
- stackpointer or stack pointer<br />
- check where we should replace abbreviations with the long form (e.h. "milliseconds" instead of "ms")<br />
- config or configuration<br />
- filepointer or file pointer?<br />
--------------------[J-Link dep. specific]<br />
- J-Link command strings or J-Link Command strings or J-Link Command Strings<br />
- J-Link settings file or...<br />
- J-Link control panel or ......<br />
- J-Link script files or...<br />
---><br />
Flasher is a programming tool for microcontrollers with on-chip or external flash memory.<br />
Flasher is designed for programming flash targets with the J-Flash software or stand-alone.<br />
In addition to that Flasher can also be used as a regular J-Link. For more information about J-Link in general,<br />
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].<br />
<br />
<div class="toclimit-2"><br />
__TOC__<br />
</div><br />
<br />
== Flasher Software and Documentation Pack ==<br />
The Flasher Software and Documentation Pack, available for download on the [https://www.segger.com/downloads/flasher#FlasherSoftwareAndDocumentationPack SEGGER homepage], includes applications to be used with Flasher and in some cases with J-Link and J-Trace.<br><br />
It also comes with USB-drivers for J-Link, J-Trace and Flasher.<br />
<br />
=== Software overview ===<br />
{| class="wikitable"<br />
|-<br />
! Software !! Description<br />
|-<br />
| [[J-Link Configurator|Flasher Configurator]] || GUI-based configuration tool for Flasher. Allows configuration of USB identification as well as TCP/IP identification of Flashers.<br />
|-<br />
| [[FlasherControl|Flasher Control]] || Command-line tool to connect to the Flasher's command-line interface via USB.<br />
|-<br />
| [[J-Flash]] || Flash programming application.<br />
|-<br />
| [[J-Flash SPI]] || (Q)SPI flash programming application.<br />
|-<br />
| [[J-Link Commander]] || Command-line tool with basic functionality for target analysis.<br />
|-<br />
| [[J-Link Registration]] || SEGGER J-Link Registration utility to register your SEGGER product such as a J-Link, J-Trace or Flasher.<br />
|-<br />
| [[JTAGLoad]] || Command line tool that opens an svf file and sends the data in it via J-Link / J-Trace or Flasher to the target.<br />
|-<br />
| [https://www.segger.com/downloads/flasher/UM08037.pdf U-Flash] || Tool for creating standalone Flasher projects.<br />
|}<br />
<br />
== Flasher overview ==<br />
Flasher connects to a PC using the USB/Ethernet/RS232 interface (what host interfaces are available depends on the Flasher model),<br />
running Windows, Linux & MacOS. In stand-alone mode,<br />
Flasher can be driven by the start/stop button, or via the RS232 interface (handshake control or ASCII interface).<br />
Flasher always has a 20-pin connector, which target interfaces are supported depends on the Flasher model:<br />
* Flasher ARM: JTAG and SWD are supported.<br />
* Flasher RX: JTAG is supported. Flasher comes with additional 14-pin RX adapter<br />
* Flasher PPC: JTAG is supported. Flasher comes with additional 14-pin PPC adapter.<br />
* Flasher PRO: JTAG and SWD are supported.<br />
* Flasher Compact: JTAG and SWD are supported.<br />
<br />
=== Features of Flasher ARM/PPC/RX/PRO ===<br />
* Three boot modes: PC-based mode, stand-alone mode, file access mode<br />
* Stand-alone JTAG/SWD programmer (Once set up, Flasher can be controlled without the use of PC program)<br />
* No power supply required, powered through USB<br />
* Supports internal and external flash devices<br />
* 128 MB memory for storage of target program<br />
* Can be used as J-Link (emulator) with a download speed of up to 720 Kbytes/second<br />
* Data files can updated via USB/Ethernet (using the J-Flash software), via FTP, via RS232 or via the file access mode of Flasher<br />
<br />
{| class="seggertable"<br />
|-<br />
! Flasher model !! Supported cores !! Supported target interfaces !! Flash programming speed (depending on target hardware)<br />
|-<br />
| Flasher ARM || ARM7/ARM9/Cortex-M || JTAG, SWD || between 170 and 300 Kbytes/second<br />
|-<br />
| Flasher RX || Renesas RX610, RX621, RX62N, RX62T || JTAG || between 30-300 Kbytes/second<br />
|-<br />
| Flasher PPC || Power PC e200z0 || JTAG || up to 138 Kbytes/second<br />
|-<br />
| Flasher PRO || ARM7/ARM9/Cortex-M Renesas RX610, RX621, RX62N, RX62T Power PC e200z0 || JTAG, SWD || between 30-300 Kbytes/ second<br />
|-<br />
|}<br />
<br />
==== Features of Flasher Compact ====<br />
<br />
* Three boot modes: PC-based mode, stand-alone mode, file access mode<br />
* Stand-alone JTAG/SWD programmer (Once set up, Flasher can be controlled without the use of PC program)<br />
* No power supply required, powered through USB<br />
* Supports internal and external flash devices<br />
* 128 MB memory for storage of target program<br />
* Can be used as J-Link (emulator) with a download speed of up to 720 Kbytes/second<br />
* Data files can updated via USB/Ethernet (using the J-Flash software) or via the file access mode of Flasher<br />
<br />
{| class="seggertable"<br />
|-<br />
! Flasher model !! Supported cores !! Supported target interfaces !! Flash programming speed (depending on target hardware)<br />
|-<br />
| Flasher ARM || ARM7/ARM9/Cortex-M || JTAG, SWD || between 170 and 300 Kbytes/second<br />
|-<br />
| Flasher RX || Renesas RX610, RX621, RX62N, RX62T || JTAG || between 30-300 Kbytes/second<br />
|-<br />
| Flasher PPC || Power PC e200z0 || JTAG || up to 138 Kbytes/second<br />
|-<br />
| Flasher Compact || ARM7/ARM9/Cortex-M Renesas RX610, RX621, RX62N, RX62T Power PC e200z0 || JTAG, SWD || between 30-300 Kbytes/ second<br />
|-<br />
|}<br />
<br />
==== Features of Flasher Portable/Flasher Portable PLUS ====<br />
<br />
* Stand-alone in-circuit-programmer (Once set up, Flasher can be controlled without the use of a PC program)<br />
* Powered by an internal rechargeable battery (standard batteries for Flasher Portable), no Laptop or external power supply required.<br />
* Multiple firmware images can be stored on Flasher<br />
* 128 MB memory for storage of target program<br />
* Flasher Portable PLUS supports a simple selection of up to 99 firmware images via buttons (since V7.90)<br />
* Supported CPUs: ARM Cortex, Legacy ARM7/9, Renesas RX, Freescale PowerPC<br />
* Supports internal and external flash<br />
* Free software updates<ref name="legitimateOwned" />, 1 year of support<br />
* Data files can be updated via the file access mode functionality or via J-Flash<br />
* Programming speed between 30-300 Kbytes/second (actual speed depends on target hardware)<br />
{{Note|1=Ethernet and RS232 as host interface are not available for Flasher Portable}}<br />
<references><br />
<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.<br />
As a legitimate owner of a SEGGER Flasher, you can always download the latest software free of charge.<br />
Though not planned and not likely, we reserve the right to change this policy.<br />
Note that older models may not be supported by newer versions of the software.<br />
Typically, we support older models with new software at least 3 years after end of life.<br />
</ref><br />
</references><br />
<br />
{| class="seggertable"<br />
|-<br />
! Supported cores !! Supported target interfaces !! Flash programming speed (depending on target hardware)<br />
|-<br />
| ARM7/ARM9/Cortex-M || JTAG, SWD || between 30-300 Kbytes/second<br />
|-<br />
| Renesas RX610, RX621, RX62N, RX62T || JTAG || between 170 and 300 Kbytes/second<br />
|-<br />
| Power PC e200z0 || JTAG || up to 138 Kbytes/second<br />
|-<br />
|}<br />
<br />
==== Working environment ====<br />
<br />
'''General'''<br><br />
The Flasher can operate from a PC with an appropriate software like J-Flash or in stand-alone mode.<br />
<br />
'''Host System'''<br><br />
IBM PC/AT or compatible CPU: 486 (or better) with at least 128MB of RAM,<br />
running Windows, Linux & MacOS. It needs to have a USB, Ethernet or RS232 interface available for communication with Flasher.<br />
<br />
'''Power supply'''<br><br />
Flasher Portable: 3x standard AAA batteries or 5V DC, min. 100 mA via USB connector.<br />
<br />
Flasher Portable PLUS: internal rechargeable 680mAh Li-Ion battery, min. 100 mA via USB connector.<br />
<br />
Other Flashers: 5V DC, min. 100 mA via USB connector.<br />
<br />
'''Installing Flasher PC-software'''<br><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><br />
More information about the package you can find in the similar [[J-Link Software and Documentation Pack]].<br><br />
The package includes U-Flash and J-Flash, the main tools for flashing targets:<br />
* J-Flash : J-Flash User Guide ([https://wiki.segger.com/UM08003_JFlash UM08003_JFlash.pdf]).<br />
* U-Flash : U-Flash User Guide ([https://www.segger.com/downloads/flasher/UM08037.pdf UM08037_UniversalFlashLoader.pdf]).<br />
<br />
=== Specifications ===<br />
<br />
<br />
==== Specifications for Flasher ARM ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Windows, Linux & MacOS<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C<br />
|-<br />
| Storage Temperature || -20 °C ... +60 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
!colspan="100%"| Mechanical<br />
|-<br />
| Size (without cables) || 121mm x 66mm x 30mm<br />
|-<br />
| Weight (without cables) || 119g<br />
|-<br />
!colspan="100%"| Available interfaces<br />
|-<br />
| USB Host interface || USB 2.0, full speed<br />
|-<br />
| Ethernet Host interface || 10/100 MBit<br />
|-<br />
| RS232 Host interface || RS232 9-pin<br />
|-<br />
| Target interface || JTAG 20-pin (14-pin adapter available)<br />
|-<br />
!colspan="100%"| JTAG Interface, Electrical<br />
|-<br />
| Power Supply || USB powered, 100mA for Flasher ARM. 500 mA if target is powered by Flasher ARM<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| Target supply voltage || Supply voltage is 5V, max.<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6 <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Max. JTAG speed || up to 12MHz<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
===== Flasher ARM download speed =====<br />
<br />
The following table lists the Flasher ARM performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! ARM7 memory download<br />
|-<br />
| Flasher ARM || 720 Kbytes/s (12MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
<br />
==== Specifications for Flasher RX ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Windows, Linux & MacOS<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C<br />
|-<br />
| Storage Temperature || -20 °C ... +60 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
!colspan="100%"| Mechanical<br />
|-<br />
| Size (without cables) || 121mm x 66mm x 30mm<br />
|-<br />
| Weight (without cables) || 119g<br />
|-<br />
!colspan="100%"| Available interfaces<br />
|-<br />
| USB Host interface || USB 2.0, full speed<br />
|-<br />
| Ethernet Host interface || 10/100 MBit<br />
|-<br />
| RS232 Host interface || RS232 9-pin<br />
|-<br />
| Target interface || JTAG 20-pin (shipped with 14-pin adapter for Renesas RX)<br />
|-<br />
!colspan="100%"| JTAG Interface, Electrical<br />
|-<br />
| Power Supply || USB powered, 100mA for Flasher RX. 500 mA if target is powered by Flasher RX<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| 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)<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6 <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Max. JTAG speed || up to 12MHz<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
===== Flasher RX download speed =====<br />
<br />
The following table lists the Flasher RX performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! Flasher RX600 series memory download<br />
|-<br />
| Flasher RX || 720 Kbytes/s (12MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
<br />
==== Specifications for Flasher PPC ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Windows, Linux & MacOS<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C<br />
|-<br />
| Storage Temperature || -20 °C ... +60 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
!colspan="100%"| Mechanical<br />
|-<br />
| Size (without cables) || 121mm x 66mm x 30mm<br />
|-<br />
| Weight (without cables) || 119g<br />
|-<br />
!colspan="100%"| Available interfaces<br />
|-<br />
| USB Host interface || USB 2.0, full speed<br />
|-<br />
| Ethernet Host interface || 10/100 MBit<br />
|-<br />
| RS232 Host interface || RS232 9-pin<br />
|-<br />
| Target interface || JTAG 20-pin (shipped with 14-pin adapter for Renesas PPC)<br />
|-<br />
!colspan="100%"| JTAG Interface, Electrical<br />
|-<br />
| Power Supply || USB powered, 100mA for Flasher PPC. 500 mA if target is powered by Flasher PPC<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| Target supply voltage || Supply voltage is 5V, max.<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6 <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Max. JTAG speed || up to 12MHz<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
===== Flasher RX download speed =====<br />
<br />
The following table lists the Flasher PPC performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! Memory download<br />
|-<br />
| Flasher PPC || 530 Kbytes/s (8 MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
<br />
==== Specifications for Flasher PRO ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Windows, Linux & MacOS<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C<br />
|-<br />
| Storage Temperature || -20 °C ... +60 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
!colspan="100%"| Mechanical<br />
|-<br />
| Size (without cables) || 121mm x 66mm x 30mm<br />
|-<br />
| Weight (without cables) || 119g<br />
|-<br />
!colspan="100%"| Available interfaces<br />
|-<br />
| USB Host interface || USB 2.0, full speed<br />
|-<br />
| Ethernet Host interface || 10/100 MBit<br />
|-<br />
| RS232 Host interface || RS232 9-pin<br />
|-<br />
| Target interface || JTAG 20-pin (14-pin adapter available)<br />
|-<br />
!colspan="100%"| JTAG Interface, Electrical<br />
|-<br />
| Power Supply || USB powered, 100mA for Flasher PRO. 500 mA if target is powered by Flasher PRO<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| Target supply voltage || Supply voltage is 5V, max.<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6 <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Max. JTAG speed || up to 12MHz<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
<br />
===== Supported CPU cores =====<br />
<br />
The Flasher PRO supports the following CPU cores:<br />
<br />
'''ARM Cortex'''<br><br />
* Cortex-A5<br />
* Cortex-A8<br />
* Cortex-A9<br />
* Cortex-R4<br />
* Cortex-R5<br />
* Cortex-M0<br />
* Cortex-M0+<br />
* Cortex-M1<br />
* Cortex-M3<br />
* Cortex-M4<br />
<br />
'''ARM (legacy cores)'''<br><br />
* ARM720T<br />
* ARM7TDMI<br />
* ARM7TDMI-S<br />
* ARM920T<br />
* ARM922T<br />
* ARM926EJ-S<br />
* ARM946E-S<br />
* ARM966E-S<br />
* ARM1136JF-S<br />
* ARM1136J-S<br />
* ARM1156T2-S<br />
* ARM1156T2F-S<br />
* ARM1176JZ-S<br />
* ARM1176JZF<br />
* ARM1176JZF-S<br />
<br />
'''Renesas RX'''<br><br />
* RX111<br />
* RX210<br />
* RX220<br />
* RX21A<br />
* RX610<br />
* RX621<br />
* RX62G<br />
* RX62N<br />
* RX62T<br />
* RX630<br />
* RX631<br />
* RX63N<br />
* RX63T<br />
<br />
'''Freescale Power PC'''<br><br />
* e200z0<br />
<br />
===== Supported Target interfaces =====<br />
<br />
The Flasher PRO supports the following target interfaces:<br />
<br />
* JTAG<br />
* SWD<br />
* FINE<br />
* SPD<br />
<br />
===== Flasher PRO download speed =====<br />
<br />
The following table lists the Flasher PRO performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! ARM7 memory download<br />
|-<br />
| Flasher PRO || 720 Kbytes/s (12MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
<br />
==== Specifications for Flasher Compact ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Microsoft Windows (x86/x64)<br>Linux (x86/x64/Arm)<br>macOS (x86/Apple M1)<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C<br />
|-<br />
| Storage Temperature || -20 °C ... +65 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
| Size (without cables) || 70mm x 45mm x 18mm<br />
|-<br />
| Weight (without cables) || 40g<br />
|-<br />
| USB Host interface || USB 2.0 (Hi-Speed); Micro USB<br />
|-<br />
| Target interface || JTAG 20-pin (14-pin adapter available)<br />
|-<br />
| Power Supply || USB powered, 130mA (idle)<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| Target supply voltage || Supply voltage is 5V, max.<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
| Supported target interfaces || SPI, QSPI, 8051 C2, cJTAG, FINE, ICSP, IIC, ISP, JTAG, PDI, SPD, SWD, SWIM, UART, UPDI<br />
|-<br />
| Serial transfer rate between Flasher Compact and target || Up to 50 MHz (Depending on target interface)<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6 <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
===== Supported CPU cores =====<br />
<br />
The Flasher Compact supports the following CPU cores:<br />
'''ARM Cortex'''<br><br />
* Cortex-A5<br />
* Cortex-A8<br />
* Cortex-A9<br />
* Cortex-R4<br />
* Cortex-R5<br />
* Cortex-M0<br />
* Cortex-M0+<br />
* Cortex-M1<br />
* Cortex-M3<br />
* Cortex-M4<br />
<br />
'''ARM (legacy cores)'''<br><br />
* ARM720T<br />
* ARM7TDMI<br />
* ARM7TDMI-S<br />
* ARM920T<br />
* ARM922T<br />
* ARM926EJ-S<br />
* ARM946E-S<br />
* ARM966E-S<br />
* ARM1136JF-S<br />
* ARM1136J-S<br />
* ARM1156T2-S<br />
* ARM1156T2F-S<br />
* ARM1176JZ-S<br />
* ARM1176JZF<br />
* ARM1176JZF-S<br />
<br />
'''Renesas RX'''<br><br />
* RX111<br />
* RX210<br />
* RX220<br />
* RX21A<br />
* RX610<br />
* RX621<br />
* RX62G<br />
* RX62N<br />
* RX62T<br />
* RX630<br />
* RX631<br />
* RX63N<br />
* RX63T<br />
<br />
'''Freescale Power PC'''<br><br />
* e200z0<br />
<br />
===== Flasher Compact download speed =====<br />
<br />
The following table lists the Flasher Compact performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! ARM7 memory download<br />
|-<br />
| Flasher Compact || 720 Kbytes/s (12MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
<br />
==== Specifications for Flasher Portable PLUS ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Windows, Linux & MacOS<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C (normal operation)<br>+5 °C ... +45 °C (battery charging)<br />
|-<br />
| Storage Temperature || -20 °C ... +45 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
| 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)<br />
|-<br />
| Charging via USB || 70 minutes (at 1A charging current)<br />
|-<br />
!colspan="100%"| Mechanical<br />
|-<br />
| Size (without cables) || 126mm x 70mm x 28mm<br />
|-<br />
| Weight (without cables) || 140g<br />
|-<br />
!colspan="100%"| Available interfaces<br />
|-<br />
| USB Host interface || USB 2.0<br />
|-<br />
| Target interface || Standard 20-pin 0.1" connector (Adapters available).<br />
|-<br />
!colspan="100%"| Target Interface, Electrical<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| Target supply voltage || Supply voltage is 4.5V, max. (depends on the current battery voltage).<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6 <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Max. JTAG speed || up to 12MHz<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
===== Supported CPU cores =====<br />
<br />
The Flasher Portable PLUS supports the following CPU cores:<br />
<br />
'''ARM Cortex'''<br><br />
* Cortex-A5<br />
* Cortex-A8<br />
* Cortex-A9<br />
* Cortex-R4<br />
* Cortex-R5<br />
* Cortex-M0<br />
* Cortex-M0+<br />
* Cortex-M1<br />
* Cortex-M3<br />
* Cortex-M4<br />
<br />
'''ARM (legacy cores)'''<br><br />
* ARM720T<br />
* ARM7TDMI<br />
* ARM7TDMI-S<br />
* ARM920T<br />
* ARM922T<br />
* ARM926EJ-S<br />
* ARM946E-S<br />
* ARM966E-S<br />
* ARM1136JF-S<br />
* ARM1136J-S<br />
* ARM1156T2-S<br />
* ARM1156T2F-S<br />
* ARM1176JZ-S<br />
* ARM1176JZF<br />
* ARM1176JZF-S<br />
<br />
'''Renesas RX'''<br><br />
* RX111<br />
* RX210<br />
* RX220<br />
* RX21A<br />
* RX610<br />
* RX621<br />
* RX62G<br />
* RX62N<br />
* RX62T<br />
* RX630<br />
* RX631<br />
* RX63N<br />
* RX63T<br />
<br />
'''Freescale Power PC'''<br><br />
* e200z0<br />
<br />
===== Supported Target interfaces =====<br />
<br />
The Flasher Portable PLUS supports the following target interfaces:<br />
* JTAG<br />
* SWD<br />
* FINE<br />
* SPD<br />
<br />
===== Flasher Portable PLUS download speed =====<br />
<br />
The following table lists the Flasher Portable PLUS performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! ARM7 memory download<br />
|-<br />
| Flasher PRO || 720 Kbytes/s (12MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
<br />
==== Specifications for Flasher Portable ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Windows, Linux & MacOS<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C<br />
|-<br />
| Storage Temperature || -20 °C ... +65 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
| Power Supply || a) USB powered, 100mA for Flasher Portable. 500 mA if target is powered by Flasher Portable<br>b) Batteries powered (3xAAA)<br />
|-<br />
!colspan="100%"| Mechanical<br />
|-<br />
| Size (without cables) || 130mm x 65mm x 25mm<br />
|-<br />
| Weight (without cables) || 120g<br />
|-<br />
!colspan="100%"| Available interfaces<br />
|-<br />
| USB Host interface || USB 2.0<br />
|-<br />
| Target interface || Standard 20-pin 0.1" connector (Adapters available).<br />
|-<br />
!colspan="100%"| Target Interface, Electrical<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| Target supply voltage || Supply voltage is 4.5V, max. (depends on the current battery voltage).<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6V <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Max. JTAG speed || up to 12MHz<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
===== Supported CPU cores =====<br />
<br />
The Flasher Portable supports the following CPU cores:<br />
<br />
'''ARM Cortex'''<br><br />
* Cortex-A5<br />
* Cortex-A8<br />
* Cortex-A9<br />
* Cortex-R4<br />
* Cortex-R5<br />
* Cortex-M0<br />
* Cortex-M0+<br />
* Cortex-M1<br />
* Cortex-M3<br />
* Cortex-M4<br />
<br />
'''ARM (legacy cores)'''<br><br />
* ARM720T<br />
* ARM7TDMI<br />
* ARM7TDMI-S<br />
* ARM920T<br />
* ARM922T<br />
* ARM926EJ-S<br />
* ARM946E-S<br />
* ARM966E-S<br />
* ARM1136JF-S<br />
* ARM1136J-S<br />
* ARM1156T2-S<br />
* ARM1156T2F-S<br />
* ARM1176JZ-S<br />
* ARM1176JZF<br />
* ARM1176JZF-S<br />
<br />
'''Renesas RX'''<br><br />
* RX111<br />
* RX210<br />
* RX220<br />
* RX21A<br />
* RX610<br />
* RX621<br />
* RX62G<br />
* RX62N<br />
* RX62T<br />
* RX630<br />
* RX631<br />
* RX63N<br />
* RX63T<br />
<br />
'''Freescale Power PC'''<br><br />
* e200z0<br />
<br />
===== Supported Target interfaces =====<br />
<br />
The Flasher Portable supports the following target interfaces:<br />
<br />
* JTAG<br />
* SWD<br />
* FINE<br />
* SPD<br />
<br />
===== Flasher Portable download speed =====<br />
<br />
The following table lists the Flasher Portable performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! ARM7 memory download<br />
|-<br />
| Flasher PRO || 720 Kbytes/s (12MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
== Working with Flasher ==<br />
<br />
This chapter describes functionality and how to use Flasher.<br />
<br />
=== Flasher Portable PLUS ===<br />
<br />
The Flasher Portable PLUS is a portable version of SEGGERs Flasher family,<br />
which has been designed to fill the need of an extremely portable, production grade,<br />
Flash programmer used for in-field firmware updates. No need to be tethered to an outlet,<br />
it is powered by an integrated Li-Ion cell (680mAh).<br />
The Flasher Portable PLUS programs flash targets in stand-alone mode or via J-Flash PC software.<br><br />
<br />
Furthermore the Flasher Portable PLUS allows the user to select between 99 data images to be programmed (since V7.90).<br />
The images can be easily selected by using the SEL button on the front of the housing.<br />
For more information about support for multiple images, please refer to [[#Multiple File Support | Multiple File Support]].<br><br />
For setup and configuration purposes, the Flasher Portable PLUS connects to a PC via USB interface,<br />
running Windows, Linux & MacOS and has a built-in standard 20-pin J-Link target connector.<br><br />
<br />
{{Note|1=Ethernet and RS232 as host interface are not available for the Flasher Portable PLUS.}}<br />
<br />
==== Housing & Buttons ====<br />
<br />
The Flasher Portable PLUS comes with a display, which is for example used to represent the status of an ongoing flash progress.<br />
Furthermore, there are three buttons which allow the user to control Flasher Portable PLUS.<br />
For a detailed description of the functions, take a look at the table below:<br />
<br />
<!-- LG xxxxxx edit image with labels for buttons? (Is this actually necessary? Buttons are basically self-explanatory...) --><br />
[[File:Flasher_Portable_PLUS.png | 500px]]<br />
<br />
{| class="seggertable"<br />
|-<br />
! Button !! Description<br />
|-<br />
| Program || Start programming process with the currently selected image.<br />
|-<br />
| Select image || Select the image to be programmed next time the Program button is pressed.<br />
|-<br />
| 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.<br />
|-<br />
|}<br />
<br />
==== Configuration ====<br />
<br />
The Flasher Portable PLUS has some configuration options the other Flashers do not have.<br />
{| class="seggertable"<br />
|-<br />
! Option !! Description !! Value range !! Default value<br />
|-<br />
| AutoPowerOffOnIdle || Specifies the time interval after which the Flasher Portable will turn off without any user action || 1 to 3600 || 60<br />
|-<br />
| ShowDatCRCAfterProgramming || Activates displaying the data file CRC after the programming in the pop up message || 0 = inactive, 1 = active || 0<br />
|-<br />
|}<br />
<br />
If the <tt>Flasher.ini</tt> does not contain a <tt>[Config]</tt> section with the configuration option, the default value is used.<br />
<br />
'''Example:'''<br><br />
This sample will show the data file CRC after the programming and the auto power of is set to five minutes (=300 seconds).<br />
<br />
<source lang="c"><br />
[CONFIG]<br />
AutoPowerOffOnIdle = "300"<br />
ShowDatCRCAfterProgramming = "1"<br />
</source><br />
<br />
=== Flasher Portable ===<br />
<br />
The Flasher Portable is a portable version of SEGGERs Flasher family, which has been designed to fill the need of an extremely portable,<br />
production grade, Flash programmer used for in-field firmware updates. No need to be tethered to an outlet,<br />
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><br />
<br />
Furthermore the Flasher Portable allows the user to select between four data images to be programmed.<br />
The images can be easily selected by using the arrow buttons on the front of the housing.<br />
For more information about support for multiple images, please refer to [[#Multiple File Support | Multiple File Support]].<br><br />
For setup and configuration purposes, the Flasher Portable connects to a PC via USB interface,<br />
running Windows, Linux & MacOS and has a built-in standard 20-pin J-Link target connector.<br><br />
<br />
{{Note|1=Ethernet and RS232 as host interface are not available for the Flasher Portable.}}<br />
<br />
==== Housing & Buttons ====<br />
<br />
The Flasher Portable comes with several leds which are for example used to represent the status of an ongoing flash progress.<br />
Furthermore, there are three buttons which allow the user to control Flasher Portable.<br />
For a detailed description of the functions, take a look at the two tables below:<br />
<br />
<!-- LG xxxxxx edit image with labels for buttons?--><br />
[[File:Flasher_Portable_Top_2.png | 500px]]<br />
<br />
{| class="seggertable"<br />
|-<br />
! LED !! Description<br />
|-<br />
| ACTIVE || GREEN. Blinks while the Flasher Portable is busy / performs operations on the target.<br />
|-<br />
| PASS/FAIL || GREEN/RED. Indicates, if the last flashing cycle was successful.<br />
<ul><br />
<li> GREEN: Flashing cycle completed successfully.</li><br />
<li> RED: Flashing cycle completed with error.</li><br />
</ul><br />
|-<br />
| 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]].<br />
|-<br />
| POWER || GREEN: Indicates if Flasher is currently powered. Blinks while Flasher Portable tries to enumerate via USB.<br />
|-<br />
| 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.<br />
|-<br />
|}<br />
<br />
{| class="seggertable"<br />
|-<br />
! Button !! Description<br />
|-<br />
| Program || Start programming process with the currently selected image.<br />
|-<br />
| Select image || Select the image to be programmed next time the <tt>Program</tt> button is pressed.<br />
|-<br />
| 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<br />
|-<br />
|}<br />
<br />
=== File system ===<br />
<br />
The Flasher with hardware version 4 and lower supports 8.3 filenames only (8 characters filename, 3 characters file extension).<br />
Using longer filenames may result in incorrect operation. Integrated functions,<br />
like the FTP server or the terminal server, will refuse writing files with long filenames.<br />
<br />
=== Setting up the IP interface ===<br />
<br />
Setting up the IP interface<br />
Some of the Flasher models come with an additional Ethernet interface to communicate with the host system.<br />
These Flashers also come with a built-in webserver which allows some basic setup of the emulator,<br />
e.g. configuring a default gateway which allows using it even in large intranets. For more information,<br />
please refer to [[#TCP Services | TCP Services]].<br />
<br />
==== Connecting the first time ====<br />
<br />
When connecting Flasher the first time, it attempts to acquire an IP address via DHCP.<br />
The recommended way for finding out which IP address has been assigned to Flasher is, to use the J-Link Configurator.<br />
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.<br />
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''.<br />
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,<br />
please refer to ''UM08001, J-Link / J-Trace User Guide'', chapter ''Setup'', section ''Setting up the IP interface''.<br />
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]].<br />
<br />
=== Operating modes ===<br />
<br />
All Flashers except the Flasher ATE are able to boot in 3 different modes:<br />
<br />
* PC-based mode<br />
* Stand-alone mode<br />
* File access mode<br />
<br />
{{Note|1=The Flasher ATE only supports the stand-alone mode.}}<br />
<br />
'''Definition PC-based mode'''<br><br />
Flasher is connected to a PC via USB/Ethernet and controlled by a PC application (J-Flash).<br />
If there is an RS232 connection to a PC, does not have any influence on if PC-based mode is entered or not.<br />
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, ...)<br />
<br />
'''Definition Stand-alone mode'''<br><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.<br />
<br />
'''Definition file access mode'''<br><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.<br />
In this mode, Flasher enumerates as a mass storage device (like an USB Stick) at the host PC.<br />
In this mode, configuration + data files can be manually placed on the Flasher and the Flasher logfile can be read out.<br />
If you are using a self-powered Flasher such as the Flasher Portable Plus, the Flasher must be turned off before connecting it.<br />
<br />
==== PC-based mode ====<br />
If you want to use Flasher for the first time you need to install the J-Link software and documentation package.<br />
After installation, connect Flasher to the host PC via USB or Ethernet.<br />
For more information about how to install the J-Link software and documentation package please refer to [[J-Link Software and Documentation Pack]].<br />
<br />
===== Connecting the target system =====<br />
<br />
'''Power-on sequence'''<br><br />
In general, Flasher should be powered on before connecting it with the target device.<br />
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.<br />
Power-on the device after you connected Flasher to it. Flasher will boot in "PC-based mode".<br />
<br />
'''Verifying target device connection with J-Link.exe'''<br><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.<br />
Then start the J-Link command line tool <tt>JLink.exe</tt>,<br />
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.<br />
The screenshot below shows the output of <tt>JLink.exe</tt>.<br />
<br />
[[File:flasher_jlinkmode.gif]]<br />
<br />
===== LED status indicators =====<br />
<br />
In PC-based mode, there are also certain LED status codes defined:<br />
<br />
{| class="seggertable"<br />
|-<br />
! # !! Status of LED !! Meaning<br />
|-<br />
| 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.<br />
|-<br />
| 0 || GREEN<br>constant || Flasher enumeration process is complete and it is ready to be controlled by a PC application.<br />
|-<br />
|}<br />
<br />
==== Stand-alone mode ====<br />
<br />
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]].<br />
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).<br />
In the "stand-alone mode" Flasher can be used as a stand-alone flash programmer.<br><br />
<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]].}}<br />
<br />
===== LED status indicators =====<br />
Progress and result of an operation is indicated by Flasher's LEDs. The behavior is different for J-Link and stand-alone mode.<br />
For a definition of the different modes, please refer to [[#Operating modes | Operating modes]].<br />
The following table describes the behavior of the LEDs in stand-alone mode.<br />
<br />
{| class="seggertable"<br />
|-<br />
! # !! Status of LED !! Meaning<br />
|-<br />
| 0 || GREEN<br>constant || Flasher waits for a start trigger to perform an operation in stand-alone mode.<br />
|-<br />
| 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><br />
|-<br />
| 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.<br />
|-<br />
|}<br />
Older Flasher models have a different behavior.<br />
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:<br />
<br />
* 1621xxxxx (Flasher ARM V2)<br />
* 1630xxxxx (Flasher ARM V3)<br />
* 4210xxxxx (Flasher PPC V1)<br />
* 4110xxxxx (Flasher RX V1)<br />
<br />
{| class="seggertable"<br />
|-<br />
! # !! Status of LED !! Meaning<br />
|-<br />
| 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.<br />
|-<br />
| 1 || GREEN<br>constant || Connect to target and perform init sequence.<br />
|-<br />
| 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><br />
|-<br />
| 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.<br />
|-<br />
|}<br />
<br />
==== File access mode ====<br />
<br />
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".<br />
If you are using a self-powered Flasher such as the Flasher Portable Plus, the Flasher must be turned off before connecting it.<br />
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.<br />
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>.<br />
<br />
[[File:flasher_mode_msd.gif]]<br />
<br />
<tt>FLASHER.CFG</tt> contains the configuration settings for programming the target device and <tt>FLASHER.DAT</tt> contains the data to be programmed.<br />
<tt>FLASHER.LOG</tt> contains all logging information about the commands, performed in stand-alone mode.<br />
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><br />
<br />
Currently, J-Flash does not support to configure Flasher for automated serial number programming.<br><br />
<br />
If you want to configure multiple Flasher for the same target you do not have to use J-Flash all the time.<br />
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".<br />
<br />
=== Setting up Flasher for stand-alone mode ===<br />
{{Note| All Options how to set up the Flasher for stand-alone mode you can find here: [[Flasher/Download project to Flasher|Download project to the Flasher]]}}<br />
<br />
In order to set up Flasher for the stand-alone mode it needs to be configured once using the J-Flash software.<br />
For more information about J-Flash, please refer to the ''J-Flash User Guide''.<br><br />
<br />
After starting J-Flash, open the appropriate J-Flash project for the target Flasher shall be configured for, by selecting '''File''' -> '''Open Project'''.<br />
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><br />
<br />
After the appropriate project has been opened / created, the data file which shall be programmed needs to be loaded, by selecting '''File''' -> '''Open'''.<br />
After this J-Flash should look like in the screenshot below.<br />
<br />
[[File:jflash_projectfile_datafile.gif]]<br />
<br />
Before downloading the configuration (project) and program data (data file) to Flasher, the connection type (USB/IP) needs to be selected in the project.<br />
These settings are also saved on a per-project basis, so this also only needs to be setup once per J-Flash project.<br />
The connection dialog is opened by clicking '''Options''' -> '''Project settings''' -> '''General'''.<br />
<br />
[[File:jflash_connection_dialog.gif]]<br />
<br />
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.<br />
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.<br />
The user then can simply select the Flash he wants to download the configuration to.<br />
<br />
[[File:EmuSelectionDialog.gif]]<br />
<br />
In order to download the configuration and program data to the Flasher, simply select '''File''' -> '''Download config & data file to Flasher'''.<br />
<br />
[[File:jflash_download_to_emul.gif]]<br />
<br />
The J-Flash log window indicates that the download to the emulator was successful.<br />
<br />
[[File:jflash_download_to_emu_succ.gif]]<br />
<br />
From now on, Flasher can be used in stand-alone mode (without host PC interaction) for stand-alone programming.<br />
<br />
==== Preparing for stand-alone operation manually ====<br />
<br />
As an alternative, J-Flash can also be used to save config and data file to a hard drive.<br><br />
<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,<br />
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.<br />
<br />
'''Creating config and data files'''<br><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><br />
<br />
For some devices, additional files (*.PEX) are needed.<br />
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.<br />
<br />
'''About *.PEX files'''<br><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,<br />
the following needs to be taken care of:<br><br />
<br />
For some devices, special connect, reset etc. sequences are necessary which are stored in so-called *.PEX files on the Flasher.<br><br />
<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><br />
<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><br />
The *.PEX files need to be placed in a subdirectory with the same name as the corresponding *.cfg file.<br />
J-Flash creates a directory with the correct name automatically when a config file is created.<br><br />
<br />
Example:<br><br />
<br />
MyConf0 is a project for a device that requires a *.PEX file for connect.<br><br />
MyConf1 is a project for a device that requires no *.PEX file at all.<br />
<br />
[[File:PEX_File_Flasher.png]]<br />
<br />
=== Universal Flash Loader mode ===<br />
<br />
As an alternative to the stand-alone mode, configured via J-Flash, there is the Universal Flash Loader mode.<br />
While the normal stand-alone mode relies on using the debug interface of the device, the Universal Flash Loader<br />
mode uses device or vendor specific programming interfaces and protocols and therefore it is independent of the<br />
CPU core.<br><br />
<br />
The Universal Flash Loader is available for the following Flasher models:<br />
* Flasher PRO<br />
* Flasher Compact<br />
* Flasher Portable PLUS<br />
<br />
For some of the supported devices, SEGGER offers specific adapters.<br />
<br />
==== Preparing manually ====<br />
<br />
The Universal Flash Loader uses an configuration file (*.UNI), a device specific flash programming algorithm (*.PEX) and a data file (*.DAT).<br />
<br />
===== Configuration =====<br />
<br />
The configuration file basically is split into three parts.<br />
The first part, the section [DEVICE], controls the generic behavior of the Universal Flash Loader.<br />
It specifies which protocol driver and data file to use. It allows enabling and configuring target power<br />
and it defines which actions to perform.<br />
The second part consists of one or more [BANKx] sections, which contain information about the memories.<br />
The third part, the section [CONFIG], includes configuration settings for the protocol driver.<br><br />
<br />
An .UNI file might look as follows:<br><br />
<br />
<source lang="c"><br />
[OPTIONS]<br />
TargetPower = "0"<br />
ChipErase = "0"<br />
<br />
[TASKS]<br />
CheckBlank = "1"<br />
Erase = "1"<br />
Program = "1"<br />
Verify = "1"<br />
Secure = "1"<br />
<br />
[DEVICE]<br />
Algo = "RL78.PEX"<br />
Data = "ALL_6k.dat"<br />
<br />
[BANK0]<br />
; Code Flash<br />
Base = "0x00000000"<br />
Size = "0x00004000"<br />
Sect = "0x00000400"<br />
<br />
[BANK1]<br />
; Data Flash<br />
Base = "0x000F1000"<br />
Size = "0x00000800"<br />
Sect = "0x00000400"<br />
<br />
[CONFIG]<br />
BaudRate = "1000000"<br />
ClearConfigOnConnect = "0x00"<br />
Security = "0xFF"<br />
ShieldStart = "0x0000"<br />
ShieldEnd = "0x000F"<br />
</source><br />
<br />
'''[OPTIONS]'''<br><br />
'''TargetPower'''<br><br />
If set to a value >0, power is applied to the target.<br />
The value defines the delay (in ms) after enabling the target power supply and before starting to communicate with the target.<br />
<br />
'''ChipErase'''<br><br />
If set to 1, the chip erase function is called for erasing the chip.<br><br />
{{Note|1=Do not enable this setting if the flash programming algorithm does not support chip erase.}}<br />
<br />
'''[TASKS]'''<br><br />
'''CheckBlank'''<br><br />
Defines if a blank check should be performed before erasing a sector.<br />
<br />
'''Erase'''<br><br />
Defines if the sector should be erased before programming.<br />
<br />
'''Program'''<br><br />
Defines if the sector should be programmed.<br />
<br />
'''Verify'''<br><br />
Defines if the sector should be verified after programming.<br />
<br />
'''Secure'''<br><br />
Defines if the device should be secured or protected against read-out after verifying.<br />
<br />
'''[DEVICE]'''<br><br />
'''Algo'''<br><br />
File name of the flash programming algorithm. This file is provided by SEGGER and will typically support a series of devices.<br />
<br />
'''Data'''<br><br />
File name of the data file to program. The Flasher only supports the Flasher .dat file format.<br />
Flasher .dat files can be generated by J-Flash or Universal Flash Loader and offer high performance together with high flexibility.<br />
<br />
'''[BANKx]'''<br><br />
x blocks with configuration data for the flash banks. All three parameters (Base, Size and Sect) are mandatory.<br />
<br />
'''Base'''<br><br />
Base address of the flash bank.<br />
<br />
'''Size'''<br><br />
Total size of the flash bank.<br />
<br />
'''Sect'''<br><br />
Sector size of the flash bank.<br />
<br />
'''[CONFIG]'''<br><br />
This section includes specific configuration data for the flash programming algorithm.<br><br />
There are no general parameters.<br />
<br />
{{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. }}<br />
<br />
==== Preparing using the PC utility ====<br />
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.<br />
<br />
[[File:Universal Flash Loader.png]]<br />
<br />
The Universal Flash Loader Configurator comes with a large list of devices and flash programming algorithms. If you are going to<br />
use a device from one of the supported families which currently is not available in the utility, feel free to contact the support.<br />
<br />
=== Multiple File Support ===<br />
<br />
It is also possible to have multiple data files and config files on Flasher, to make Flasher more easy to use in production environment.<br />
To choose the correct configuration file and data file pair, a <tt>FLASHER.INI</tt> file is used.<br />
This init file contains a <tt>[FILES]</tt> section which describes which configuration file and which data file should be used for programming.<br />
A sample content of a FLASHER.INI file is shown below:<br><br />
<br />
<source><br />
[FILES]<br />
DataFile = "Flasher1.dat"<br />
ConfigFile = "Flasher1.cfg"<br />
</source><br />
<br />
Using this method all configuration files and data files which are used in the production only have to be downloaded once.<br />
From there on a configuration file / data file pair can be switched by simply replacing the <tt>FLASHER.INI</tt> by a new one,<br />
which contains the new descriptions for the configuration file and data file. The <tt>FLASHER.INI</tt> can be replaced in two ways:<br />
<ol><br />
<li>Boot Flasher in file access mode in order to replace the <tt>FLASHER.INI</tt></li><br />
<li><br />
If Flasher is already integrated into the production line, runs in stand-alone mode and can not be booted in other mode:<br />
Use the file I/O commands provided by the ASCII interface of Flasher, to replace the <tt>FLASHER.INI</tt>.<br />
For more information about the file I/O commands, please refer to [[#File I/O commands | File I/O commands]].<br />
</li><br />
</ol><br />
{{Note|1=Flasher with hardware version 4 and lower only supports 8.3 filenames only (8 characters filename, 3 characters file extension). Using longer filenames may result in incorrect operation.}}<br />
<br />
==== Flasher Portable specifics ====<br />
<br />
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><br />
<br />
Which config / data file pair is used for which image selection position is determined by the contents of the FLASHER.INI.<br />
For this, the FLASHER.INI contents in the <tt>[FILES]</tt> section have been extended.<br />
The sample below shows how to enable the user to select between four different images on the Flasher portable via the select / arrow button:<br />
<br />
<source><br />
[FILES]<br />
DataFile = "First.dat"<br />
ConfigFile = "First.cfg"<br />
DataFile1 = "Second.dat"<br />
ConfigFile1 = "Second.cfg"<br />
DataFile2 = "Third.dat"<br />
ConfigFile2 = "Third.cfg"<br />
DataFile3 = "Fourth.dat"<br />
ConfigFile3 = "Fourth.cfg"<br />
</source><br />
<br />
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.<br />
From there on, switching between the files can be done by simply using the selection button of Flasher Portable.<br />
<br />
===== Example =====<br />
<br />
1 Target, 2 Datafiles (e.g. boot loader und application) --> same configuration file (*.CFG) but different data files (*.DAT) should be used.<br><br />
<br />
* Open pre-configured J-Flash project<br />
* File -> Save Flasher config file ... (DEFAULT.CFG)<br />
* Open data file 1 (boot loader)<br />
* File -> Save Flasher data file ... (BOOT.DAT)<br />
* Open data file 2 (application)<br />
* File -> Save Flasher data file ... (APP.DAT)<br />
* Create the a FLASHER.INI file (content see below)<br />
* Connect the Flasher in file access mode to the PC<br />
* Copy DEFAULT.CFG, BOOT.DAT, APP.DAT and FLASHER.INI on the Flasher<br />
<br />
FLASHER.INI content:<br><br />
<br />
<source><br />
[FILES]<br />
DataFile = "BOOT.DAT"<br />
ConfigFile = "DEFAULT.CFG"<br />
DataFile1 = "APP.DAT"<br />
ConfigFile1 = "DEFAULT.CFG"<br />
</source><br />
<br />
==== Flasher Portable PLUS specifics ====<br />
<br />
Flasher Portable PLUS allows to choose between 99 configuration and data file pairs during runtime by using the select button on the front of Flasher Portable PLUS.<br><br />
<br />
Which config / data file pair is used for which image selection position is determined by the contents of the FLASHER.INI.<br />
For this, the FLASHER.INI may contain several <tt>[BATCH]</tt> sections.<br />
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:<br />
<br />
<source><br />
[BATCH]<br />
DataFile = "First.dat"<br />
ConfigFile = "First.cfg"<br />
[BATCH1]<br />
DataFile = "Second.dat"<br />
ConfigFile = "Second.cfg"<br />
[BATCH2]<br />
DataFile = "Third.dat"<br />
ConfigFile = "Third.cfg"<br />
[BATCH7]<br />
DataFile = "Proj_8.dat"<br />
ConfigFile = "Proj_8.cfg"<br />
[BATCH15]<br />
DataFile = "Proj_16.dat"<br />
ConfigFile = "Proj_16.cfg"<br />
</source><br />
<br />
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.<br />
From there on, switching between the files can be done by simply using the selection button of Flasher Portable PLUS.<br />
<br />
Please also consider the chapter [[#Batch Programming in stand-alone mode | Batch Programming in stand-alone mode]].<br />
<br />
{{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.}}<br />
{{Note|1=You may have gaps in the list. The missing entries will be skipped when selecting the next configuration.}}<br />
{{Note|1=The <tt>[Files]</tt> section is supported by the Flasher Portable PLUS, too. But the number of configuration is limited to four.}}<br />
<br />
===== Example =====<br />
<br />
1 Target, 2 Datafiles (e.g. boot loader und application) --> same configuration file (*.CFG) but different data files (*.DAT) should be used.<br><br />
<br />
* Open pre-configured J-Flash project<br />
* File -> Save Flasher config file ... (DEFAULT.CFG)<br />
* Open data file 1 (boot loader)<br />
* File -> Save Flasher data file ... (BOOT.DAT)<br />
* Open data file 2 (application)<br />
* File -> Save Flasher data file ... (APP.DAT)<br />
* Create the a FLASHER.INI file (content see below)<br />
* Connect the Flasher in file access mode to the PC<br />
* Copy DEFAULT.CFG, BOOT.DAT, APP.DAT and FLASHER.INI on the Flasher<br />
<br />
FLASHER.INI content:<br><br />
<br />
<source><br />
[BATCH]<br />
DataFile = "BOOT.DAT"<br />
ConfigFile = "DEFAULT.CFG"<br />
DisplayName = "Bootloader"<br />
[BATCH1]<br />
DataFile = "APP.DAT"<br />
ConfigFile = "DEFAULT.CFG"<br />
DisplayName = "Application"<br />
[BATCH2]<br />
DataFile = "BOOT.DAT"<br />
ConfigFile = "DEFAULT.CFG"<br />
DataFile1 = "APP.DAT"<br />
ConfigFile1 = "DEFAULT.CFG"<br />
DisplayName = "BL and App"<br />
</source><br />
<br />
=== Custom labels ===<br />
<br />
Flasher supports to assign custom labels to configurations ("Project Display Text" in U-Flash). This allows to specify easy to remember names for configurations that are stored on the Flasher.<br />
<br />
==== Hardware and software requirements ====<br />
This feature is supported by the following models:<br />
* Flasher Portable PLUS<br />
<br />
This feature is supported since V6.30e of the software package and firmware<br />
<br />
==== Assigning labels ====<br />
The configuration and data file pairs are specified in the <tt>FLASHER.INI</tt> file:<br />
<source><br />
[FILES]<br />
DataFile = "IMAGE0.dat"<br />
ConfigFile = "IMAGE0.cfg"<br />
DataFile1 = "IMAGE1.dat"<br />
ConfigFile1 = "IMAGE1.cfg"<br />
</source><br />
<br />
By default, Flasher will show the names of the configuration and data file:<br />
[[File:FW1_smartwatch_nolabel.png]]<br />
[[File:FW2_smart_meter_nolabel.png]]<br />
<br />
By adding <tt>DisplayName</tt>, <tt>DisplayName1</tt>, ... keys to the <tt>FLASHER.INI</tt>, a custom label can be shown instead:<br />
<source><br />
[FILES]<br />
DisplayName = "FW smartwatch"<br />
DataFile = "IMAGE0.dat"<br />
ConfigFile = "IMAGE0.cfg"<br />
DisplayName1 = "FW smart meter"<br />
DataFile1 = "IMAGE1.dat"<br />
ConfigFile1 = "IMAGE1.cfg"<br />
</source><br />
<br />
The images will now be shown as follows:<br />
[[File:FW1_smartwatch_label.png]]<br />
[[File:FW2_smart_meter_label.png]]<br />
<br />
==== Considerations ====<br />
* 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.<br />
<br />
=== Programming multiple targets ===<br />
<br />
It is possible to program multiple targets which are located in a JTAG chain.<br />
The targets will be programmed each with a configuration and a data file.<br><br />
The configuration for the desired target must be selected before it can be programmed,<br />
this can be done with the <tt>#SELECT</tt> command.<br />
For more information how to use the <tt>#SELECT</tt> command please refer to the [[#ASCII_command_interface|ASCII command interface]].<br />
<br />
'''Example'''<br><br />
Three devices should be programmed.<br><br />
<br />
JTAG Chain: ''TDI'' --> ''Device2'' --> ''Device1'' --> ''Device0'' --> ''TDO''<br><br />
<br />
Three configurations would be stored on the flasher:<br><br />
<br />
Config 0: Configured to program Device0 (DEVICE0.CFG, DEVICE0.DAT)<br><br />
Config 1: Configured to program Device1 (DEVICE1.CFG, DEVICE1.DAT)<br><br />
Config 2: Configured to program Device2 (DEVICE2.CFG, DEVICE2.DAT)<br><br />
<br />
Selection and programming of the target will be done via the ASCII interface:<br><br />
<br />
<source><br />
#SELECT DEVICE0<br />
#AUTO<br />
#SELECT DEVICE1<br />
#AUTO<br />
#SELECT DEVICE2<br />
#AUTO<br />
</source><br />
<br />
==== Programming multiple targets with J-Flash ====<br />
<br />
Programming multiple targets can also be done via J-Flash using the command line interface.<br />
For this each target must be handled with its own project file.<br />
<br />
'''Example'''<br><br />
<br />
<source><br />
JFlash.exe -openproj"Device0.jflash" -open"Device0.hex" -auto -exit<br />
JFlash.exe -openproj"Device1.jflash" -open"Device1.hex" -auto -exit<br />
JFlash.exe -openproj"Device2.jflash" -open"Device2.hex" -auto -exit<br />
</source><br />
<br />
=== Batch Programming in stand-alone mode ===<br />
<br />
Batch programming allows to execute different stand-alone mode jobs in batch to be executed in immediate succession, without any user interaction in between.<br />
This can be used for example to program multiple targets in a JTAG-Chain or multiple data files to a target.<br><br />
A batch may contains an unlimited number of configurations which consist of a data file (*.DAT) and config file (*.CFG).<br />
For further information regarding config and data files, please refer to [[#Preparing for stand-alone operation manually | Preparing for stand-alone operation manually]].<br><br />
In order to specify the batch jobs, a FLASHER.INI file is used.<br />
This init file contains a [BATCH] section which describes which configuration pairs (*.DAT and *.CFG file) should be used for each batch job.<br />
A sample content of a FLASHER.INI file is shown below:<br><br />
<br />
<source><br />
[BATCH]<br />
DataFile = "Flasher0.dat"<br />
ConfigFile = "Flasher0.cfg"<br />
DataFile1 = "Flasher1.dat"<br />
ConfigFile1 = "Flasher1.cfg"<br />
</source><br />
<br />
[[File:Batch_Jobs.bmp]]<br />
<br />
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.<br />
<br />
<br />
[[File:Batch_Programming.bmp]]<br />
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<br />
currently executed action.<br />
<br />
<br />
[[File:Batch_Result.bmp]]<br />
The result of the programming will be shown on the screen after finishing all jobs.<br />
<br />
<br />
Creating / Replacing of the FLASHER.INI file can done in two ways:<br><br />
<ol><br />
<li>Boot Flasher in file access mode in order to replace the FLASHER.INI</li><br />
<li><br />
If Flasher is already integrated into the production line, runs in stand-alone mode and can not be booted in other mode:<br />
Use the file I/O commands provided by the ASCII interface of Flasher, to replace the FLASHER.INI .<br />
For more information about the file I/O commands, please refer to [[#File I/O commands | File I/O commands]].<br />
In case of an error occurred during execution, the Flasher terminates the entire batch processing.<br />
</li><br />
</ol><br />
{{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.}}<br />
{{Note|1=The Flasher with hardware version 4 and lower supports 8.3 filenames only (8 characters filename, 3 characters file extension). Using longer filenames may result in incorrect operation.}}<br />
<br />
==== Flasher Portable specifics ====<br />
<br />
Flasher Portable allows to choose between four different batches during runtime by using the select/arrow button on the front of Flasher Portable.<br />
Which batch configuration is used for which image selection position is specified in the FLASHER.INI.<br />
For this, the FLASHER.INI contents in the [BATCH] section have been extended.<br />
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><br />
<br />
<source><br />
[BATCH]<br />
DataFile = "Flasher0.dat"<br />
ConfigFile = "Flasher0.cfg"<br />
DataFile1 = "Flasher1.dat"<br />
ConfigFile1 = "Flasher1.cfg"<br />
DataFile2 = "Flasher2.dat"<br />
ConfigFile2 = "Flasher2.cfg"<br />
[BATCH1]<br />
DataFile = "TEST.dat"<br />
ConfigFile = "Test.cfg"<br />
[BATCH2]<br />
DataFile = "VALIDATE.dat"<br />
ConfigFile = "Flasher0.cfg"<br />
</source><br />
<br />
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.<br />
From there on, switching between the batches can be done by simply using the selection button of Flasher Portable.<br />
<br />
<br />
<br />
==== Examples ====<br />
<br />
'''Example 1:''' Programming two Data files to the same target<br><br />
<br />
* Open your J-Flash project.<br />
* Use File -> Save Flasher config file... to save the .CFG file (in this example: STM32F4.CFG).<br />
* Select the first binary and use File -> Save Flasher Data file... to save the first .DAT file (in this example: DATA0.DAT).<br />
* Select the second binary and use File -> Save Flasher Data file... to save the second data file .DAT file (in this example: DATA1.DAT).<br />
* Copy the Files to the Flasher e.g. by using file access mode.<br />
* Create a FLASHER.INI file in the root directory of the Flasher.<br />
* Exemplary content of FLASHER.INI:<br><br />
<source><br />
[BATCH]<br />
DataFile = "DATA0.dat"<br />
ConfigFile = "emPower.cfg"<br />
DataFile1 = "DATA1.dat"<br />
ConfigFile1 = "emPower.cfg"<br />
</source><br />
<br />
<br />
'''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><br />
Example scenario: 2 Devices in a JTAG chain, a STM32F1 and a STM32F4. <br><br />
<br />
* Follow the same as described before and additionally:<br />
* Create one project file per target (and create a .CFG file of each one).<br />
* Make sure each project file is configured correctly, especially the JTAG-Chain position (See UM8003 "J-Flash" for more detailed info).<br />
* Exemplary content of FLASHER.INI:<br><br />
<source><br />
[BATCH]<br />
DataFile = "F1DATA.dat"<br />
ConfigFile = "STM32F1.cfg"<br />
DataFile1 = "F4DATA0.dat"<br />
ConfigFile1 = "STM32F4.cfg"<br />
DataFile2 = "F4DATA1.dat"<br />
ConfigFile2 = "STM32F4.cfg"<br />
</source><br />
<br />
'''Example 3:''' Using multiple Batch sections with Flasher Portable.<br><br />
Example scenario: 2 Devices in a JTAG chain, a STM32F1 and a STM32F4.<br><br />
Selection 1 will program the STM32F1 target.<br><br />
Selection 2 will program the STM32F4 target using "F4DATA0.dat".<br><br />
Selection 3 will program the STM32F4 target using "F4DATA1.dat".<br><br />
Selection 4 will execute 1, 2 and 3 in sequence.<br><br />
* Exemplary content of FLASHER.INI:<br><br />
<source><br />
[BATCH]<br />
DataFile = "F1DATA.dat"<br />
ConfigFile = "STM32F1.cfg"<br />
[BATCH1]<br />
DataFile = "F4DATA0.dat"<br />
ConfigFile = "STM32F4.cfg"<br />
[BATCH2]<br />
DataFile = "F4DATA1.dat"<br />
ConfigFile = "STM32F4.cfg"<br />
[BATCH3]<br />
DataFile = "F1DATA.dat"<br />
ConfigFile = "STM32F1.cfg"<br />
DataFile1 = "F4DATA0.dat"<br />
ConfigFile1 = "STM32F4.cfg"<br />
DataFile2 = "F4DATA1.dat"<br />
ConfigFile2 = "STM32F4.cfg"<br />
</source><br />
<br />
=== Serial number programming ===<br />
<br />
Flasher supports programming of serial numbers. In order to use the serial number programming feature,<br />
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><br />
<br />
In general, Flasher supports two ways of programming a serial number into the target:<br />
<br />
#<br />
#* Programming continuous serial numbers.<br />
#* The serial number is 1-4 bytes in size.<br />
#* The start serial number, increment, serial number size, and address are configured in the J-Flash project.<br />
#<br />
#* Programming custom serial numbers from a serial number list file.<br />
#* The start line within the serial number list file to get the next serial number bytes, line increment, serial number size, and address is configured in the J-Flash project.<br />
#* The serial number list file needs to be specified and created by the user.<br />
<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.}}<br />
<br />
==== Serial number settings ====<br />
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.<br />
This is done by enabling the '''Program serial number''' option as shown in the screenshot and table below:<br />
<br />
[[File:UM08039_SN_Sample_JFlashSettings.png]]<br />
<br />
{| class="seggertable"<br />
|-<br />
!| Setting || Meaning<br />
|-<br />
| <tt>Address</tt> || The address the serial number should be programmed at.<br />
|-<br />
| <tt>Length</tt> ||<br />
The length of the serial number (in bytes) that 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 8 is selected as length, the serial number and its complement are programmed at the given address.<br />
* In case a serial number list file is given, the 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 '''Length''', the remaining bytes are filled with 0s. No complements etc. are added to the serial number.<br />
|-<br />
| <tt>Next SN</tt> ||<br />
* In case no serial number list file is given, '''Next SN''' is the next serial number which should be programmed. The serial number is always stored in flash memory in little-endian format.<br />
* In case a serial number list file is given, '''Next SN''' describes the line of the serial number list file where to read the next serial number bytes from. The Flasher starts counting at line 0, so in order to start serial number programming with the first line of the <tt>SNList.txt</tt>, '''Next SN''' needs to be set to 0.<br />
|-<br />
| <tt>Increment</tt> || Specifies by how much '''Next SN''' is incremented.<br />
|}<br />
<br />
=== Serial number file ===<br />
When selecting '''File -> Download serial number file to Flasher''', J-Flash will create a serial number file named as <tt><JFlashProjectName>_Serial.txt</tt>.<br />
This file is downloaded as <tt>Serial.txt</tt> on the Flasher.<br />
The file is generated based on the serial number settings in the J-Flash project and will contain the value defined by the '''Next SN''' option.<br />
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.<br />
<br />
==== Serial number list file ====<br />
<br />
In order to program custom serial numbers which can not be covered by the standard serial number scheme provided by J-Flash<br />
(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.<br />
<br />
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.<br />
This file is downloaded as <tt>SNList.txt</tt> on the 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<br />
* Each byte of the serial number is described by two hexadecimal digits.<br />
<br />
'''Example'''<br><br />
A 8-byte serial number should be programmed at address 0x08000000.<br><br />
<br />
It should be programmed as follows in the memory:<br><br />
<br />
<tt>0x08000000: 0x01 0x02 0x03 0x04 0x55 0x66 0x77 0x88</tt><br><br />
<br />
The serial number list file should look as follows:<br><br />
<br />
<tt>0102030455667788</tt><br />
<br />
[[File:SN_SNList.gif]]<br />
<br />
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><br />
<br />
Which line Flasher will read at the next programming cycle, is configured via the <tt>Next SN</tt> option in J-Flash.<br />
For more information, please refer to [[#Serial number settings | Serial number settings]].<br />
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><br />
<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.}}<br />
{{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.}}<br />
<br />
==== Programming process ====<br />
<br />
Flasher will increment the serial number in SERIAL.TXT by the value defined in <tt>Increment</tt>, after each successful programming cycle.<br><br />
<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><br />
<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.<br />
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.}}<br />
<br />
==== Downloading serial number files to Flasher ====<br />
<br />
Downloading the serial number files needs to be done explicitly by selecting '''File-> Download serial number file to Flasher'''.<br />
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.<br />
<br />
==== Sample setup ====<br />
<br />
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.<br />
<br />
'''Defining serial number address, length and start value'''<br><br />
In the J-Flash project the following needs to be defined:<br><br />
* <tt>Address</tt> is 0x08001000<br />
* <tt>Next SN</tt> is 1234567<br />
* <tt>Increment</tt> is 1<br />
* <tt>Len</tt> is 4 (bytes)<br />
<br />
[[File:SN_Sample_JFlashSettings.gif]]<br />
<br />
'''Downloading configuration, data and serial number to Flasher.'''<br><br />
After setting up the rest of the configuration (Target interface etc.) and selecting an appropriate data file, the configuration,<br />
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><br />
<br />
[[File:SN_Sample_DownloadToFlasher.gif]]<br />
<br />
After downloading the serial number to Flasher, J-Flash also created the <tt><JFlashProjectName>_Serial.txt</tt>.<br />
<br />
[[File:SN_Sample_SerialFileCreated.gif]]<br />
<br />
Now Flasher is prepared to program the 8-byte serial number.<br />
<br />
=== Patch file support ===<br />
<br />
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.<br />
Before starting programming process in stand-alone mode, Flasher will look for a file named <tt>Patches.txt</tt> being present on the Flasher.<br />
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><br />
<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.<br />
<br />
'''Syntax'''<br><br />
<!-- LG xxxxxxxxx '==' is shown as '=', so instead use '= ='--><br />
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><br />
<br />
<tt><NumPatches>,<Addr>,<NumBytes>:<nowiki><Data></nowiki>,<Addr>,<NumBytes>:<nowiki><Data></nowiki>,<Addr>,<NumBytes>:<nowiki><Data></nowiki>,<Addr>,<NumBytes>:<nowiki><Data></nowiki>\r\n</tt><br><br />
<br />
Find below a table which describes each parameter.<br><br />
{| class="seggertable"<br />
|-<br />
! Parameter !! Description<br />
|-<br />
| <tt><NumPatches></tt> || Describes the number of patches in this patch line. Max. value is 4.<br />
|-<br />
| <tt><Addr></tt> || Describes the address to be patched. Value is expected in hex.<br />
|-<br />
| <tt><NumBytes></tt> || Number of bytes for the current patch. Max. value is 20h (32 in decimal). Value is expected in hex.<br />
|-<br />
| <tt><nowiki><Data></nowiki></tt> || Describes the data to be patched. <nowiki><Data></nowiki> is always expected as 2 hexadecimal characters per byte.<br />
|-<br />
|}<br />
<br />
{{Note|1=All values are expected in hexadecimal format (hex).<br><br />
<nowiki><Data></nowiki> section is always preceded by ":", not ",".}}<br />
<br />
'''Example'''<br><br />
Below is an example patch.<br><br />
<br />
<source><br />
1,18,4:01020304\r\n<br />
</source><br />
<br />
Patching the following data:<br />
<br />
[[File:data_before.png]]<br />
<br />
with the example patch will result in the following data:<br />
<br />
[[File:data_afterwards.png]]<br />
<br />
Please note that as mentioned earlier patching undefined memory locations will be ignored.<br><br />
Applying the example patch to the following data:<br />
<br />
[[File:undefined_mem_before.png]]<br />
<br />
Causes no data to be patched, as can be seen in the following image:<br />
<br />
[[File:undefined_mem_no_token.png]]<br />
<br />
Therefore it is necessary to first write placeholder data to the memory locations which are supposed to be patched.<br><br />
An example for such a placeholder can be seen here:<br />
<br />
[[File:undefined_mem_token.png]]<br />
<br />
Please note that the actual data inside the placeholder does not matter to the Flasher,<br />
because it is overwritten during patching.<br><br />
Applying the example patch will now work as expected:<br />
<br />
[[File:undefined_mem_after.png]]<br />
<br />
'''Single patch via RS232'''<br><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><br />
<br />
Send the <tt>#AUTO PATCH <NumPatches>,<Addr>,<NumBytes>:<nowiki><Data></nowiki></tt><br><br />
<br />
command via Flasher ASCII interface. The parameters have the same function as described in the table above.<br />
<br />
==== Newline encoding ====<br />
<br />
In general, for all patch files, init files etc. Flasher supports both newline encodings:<br><br />
<br />
* Windows: \r\n<br />
* Unix/Mac: \n<br />
<br />
All parser functionality etc. are written to be independent from the host operating system.<br />
<br />
=== Limiting the number of programming cycles ===<br />
<br />
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.<br />
To make use of this feature, a file called <tt>Cntdown.txt</tt> needs to be placed on the Flasher.<br />
This file simply contains a decimal number (32-bit unsigned integer) that describes how many programming cycles can be performed with the current setup.<br />
<br />
[[File:CntdownTxtContent.jpg]]<br />
<br />
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><br />
<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>.}}<br />
<br />
==== Changed fail/error LED indicator behavior ====<br />
<br />
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><br />
<br />
* The red error/fail LED will lit for 1 second<br />
* After this, it will blink/toggle x times @ 5 Hz, indicating the number of programming cycles left. (blinking 5 times for 5 cycles left, ...)<br />
<br />
==== Required Flasher hardware version for Cntdown.txt support ====<br />
<br />
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><br />
<br />
* 1621xxxxx (Flasher ARM V2)<br />
* 1630xxxxx (Flasher ARM V3)<br />
* 4210xxxxx (Flasher PPC V1)<br />
* 4110xxxxx (Flasher RX V1)<br />
<br />
All other models / hardware versions support limiting of programming cycles.<br />
<br />
=== Authorized flashing ===<br />
<br />
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.<br />
without the possibility to read out the Flasher contents via file access mode, FILE I/O functionality (J-Link Commander) or RS232 commands.<br />
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.<br />
<br />
==== Creating / Adding the secure area ====<br />
<br />
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.<br />
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.<br />
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><br />
<br />
[[File:CreateSecArea.jpg]]<br />
<br />
The following secure area related commands are available in J-Link Commander:<br><br />
<br />
* securearea create<br />
* securearea remove<br />
<br />
{{Note|1=When creating or removing the <tt>secure area</tt>, all configuration and data files being stored on the Flasher, are lost.<br />
Please make sure that they are not needed anymore, before adding / removing the security area.}}<br />
<br />
==== Moving files to the secure area ====<br />
<br />
Before moving configuration + data to the <tt>secure area</tt>, proper functionality of the setup should be tested in stand-alone mode.<br />
Once the setup is working as expected, do the following, to move the configuration + data into the <tt>secure area</tt>:<br><br />
<br />
* Start Flasher in file access mode (For more info, please refer to: [[#file access mode | file access mode]])<br />
<br />
[[File:FilesBeforeSecure.png]]<br />
<br />
* Create a folder "<tt>_SECURE</tt>"<br />
* Move all files that shall be moved to the <tt>secure area</tt>, into this folder<br />
<br />
[[File:FilesAfterSecure.png]]<br />
<br />
* 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.<br />
* Now Flasher can be used in stand-alone mode, as normal, but the files cannot be read back by the user / operator.<br />
<br />
==== Considerations to be taken when using the secure area ====<br />
<br />
When using the <tt>secure area</tt>, some things need to be considered:<br><br />
<br />
* All features like multiple file support, patch file support etc. can also be used when operating from the <tt>secure area</tt>.<br />
* 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>.<br />
* 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>.<br />
* 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.<br />
<br />
==== Required Flasher hardware version ====<br />
<br />
Older Flasher models do not support authorized flashing. The Flashers with the following serial number ranges do not support authorized flashing:<br><br />
<br />
* 1621xxxxx (Flasher ARM V2)<br />
* 1630xxxxx (Flasher ARM V3)<br />
* 4210xxxxx (Flasher PPC V1)<br />
* 4110xxxxx (Flasher RX V1)<br />
<br />
All other models / hardware versions support authorized flashing.<br />
<br />
=== Target interfaces ===<br />
<br />
The table below shows the supported target interfaces of the different Flasher models.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! Supported interfaces<br />
|-<br />
| Flasher PRO || JTAG, SWD<br />
|-<br />
| Flasher Compact || JTAG, SWD<br />
|-<br />
| Flasher ARM || JTAG, SWD<br />
|-<br />
| Flasher RX || JTAG<br />
|-<br />
| Flasher PPC || JTAG<br />
|-<br />
|}<br />
<br />
For more information about the target interfaces itself, please refer to:<br><br />
<br />
* ''UM08001, chapter "Working with J-Link and J-Trace", section "JTAG interface"''<br />
* ''UM08001, chapter "Working with J-Link and J-Trace", section "SWD interface"''<br />
<br />
=== Supported architectures ===<br />
<br />
Flasher supports programming of the internal flash of a large number of different microcontrollers.<br />
The number of supported devices is steadily growing. You can always find the latest list of supported devices on our website:<br><br />
<br />
''http://www.segger.com/supported-devices.html''<br />
<br />
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.<br />
Also the existence of the device may have confidential status, so it might not be mentioned as being supported in public releases yet.<br />
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.<br />
<br />
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).<br />
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.<br />
<br />
If a device is not supported, you can always contact us. We will be happy to provide you with an offer.<br />
<br />
==== External flashes ====<br />
<br />
In general our Flashers support programming of external flashes listed below:<br>(Can differ between Flasher models and hardware versions)<br />
<br />
* parallel NOR flash<br />
* SPI / QSPI flash<br>(see: ''[[SPI_support_by_Flasher_models]]'')<br />
* NAND flash<br />
* I<sup>2</sup>C EEPROM/Flash<br />
* FRAM<br />
<br />
If the parallel NOR flash device which is used is not CFI-compliant you have to select the flash device in J-Flash explicitly,<br />
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''.<br />
<br />
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.<br />
The J-Flash software comes with sample projects for ''Open Flashloader''.<br />
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''<br />
{{Note|1=Complete Information about ''Open Flashloaders'' can be found in our Wiki:<br>''[[Open_Flashloader]]''}}<br />
<br />
==== Cores ====<br />
<br />
===== Flasher ARM =====<br />
<br />
Flasher ARM supports and has been tested with the following cores, but should work with any ARM7/9, Cortex-M0/M1/M3/M4 core.<br />
If you experience problems with a particular core, do not hesitate to contact Segger.<br><br />
<br />
* ARM7TDMI (Rev 1)<br />
* ARM7TDMI (Rev 3)<br />
* ARM7TDMI-S (Rev 4)<br />
* ARM920T<br />
* ARM922T<br />
* ARM926EJ-S<br />
* ARM946E-S<br />
* ARM966E-S<br />
* Cortex-M0<br />
* Cortex-M1<br />
* Cortex-M3<br />
* Cortex-M4<br />
<br />
===== Flasher RX =====<br />
<br />
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><br />
<br />
* RX610<br />
* RX621<br />
* RX62N<br />
* RX62T<br />
<br />
===== Flasher PPC =====<br />
<br />
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.<br />
<br />
* e200z0<br />
<br />
===== Flasher PRO/Compact/Portable PLUS =====<br />
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/''.<br />
<br />
=== Programming multiple targets in parallel ===<br />
<br />
To program multiple targets in parallel there are the following possibilities:<br />
* Using a Flasher gang, or<br />
* Using multiple Flashers, each connecting to one CPU.<br />
<br />
Devices for gang programming are:<br />
* Flasher Hub-12 in conjunction with up to 12 Flasher (Compact). Please refer to [[UM08043_Flasher_Hub-12|Flasher Hub-12 user manual (UM08043_Flasher_Hub-12)]].<br />
* Flasher ATE; suitable for programming up to 10 targets in parallel. Please refer to [https://www.segger.com/downloads/flasher/UM08035 Flasher ATE user manual (UM08035_FlasherATE.pdf)].<br />
When using multiple flashers, this can be done with the J-Flash production programming software.<br />
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''<br />
<br />
=== Logfiles and Quality Management ===<br />
<br />
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:<br />
<source lang="c"><br />
SN: 1 - Failed<br />
SN: 1 - Failed<br />
SN: 2 - O.K. (931 ms)<br />
SN: 3 - O.K. (931 ms)<br />
SN: 4 - O.K. (933 ms)<br />
SN: 5 - O.K. (932 ms)<br />
</source><br />
If applicable, the logfile contains more detailed error messages. For example:<br />
<source lang="c"><br />
ERROR: Programming failed @ address 0x00000000 (1)<br />
ERROR: Cannot connect to CPU. Target interface speed too high?<br />
</source><br />
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:<br />
<source lang="c"><br />
Verify error config word area @<br />
config word<br />
config word read back<br />
Verify error flash area @<br />
data from file<br />
data read back<br />
</source><br />
{{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.}}<br />
<br />
== TCP Services ==<br />
This chapter describes the integrated TCP services.<br />
<br />
=== FTP Server ===<br />
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><br />
[[File:FTPServer.png]]<br />
<br />
==== Access data ====<br />
Anonymous access to the FTP server is limited to read-only access to the file system.<br><br />
For write access, special login credentials have to be used:<br><br />
<tt>Login: admin</tt><br><br />
<tt>Password: 1234</tt><br><br />
<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.<br />
It is not meant as a security feature.}}<br />
<br />
=== Web server ===<br />
<br />
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.<br />
For the network, the IP address settings can be changed and a nick name can be assigned to the device.<br><br />
<br />
Additionally, the web interface provides information about the status of the integrated operating system, the IP stack and the target hardware.<br />
<br />
== Remote control ==<br />
This chapter describes how to control the Flasher in standalone mode.<br />
<br />
=== Overview ===<br />
There are 3 ways to control Flasher operation:<br><br />
{| class="seggertable"<br />
! Type of control !! Description<br />
|-<br />
| Button || Programming operation starts when pressing the PROG-button. The LEDs serve as visible indicators.<br />
|-<br />
| Handshake || 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.<br />
|-<br />
| Terminal || Terminal communication via TELNET, RS232 or VCOM with the [[#ASCII command interface]]<br />
|}<br />
<br />
<br />
{{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.}}<br />
<br />
=== Handshake control ===<br />
<br />
Some Flasher models are equipped with additional hardware control functions that are connected to the SUBD9 male connector, normally used as an RS232 interface to the PC.<br />
These Flasher models can therefore be controlled remotely by automated testers without the need for a connection to a PC.<br />
<br />
The handshake control is available for the following Flashers:<br />
* Flasher ARM<br />
* Flasher PRO<br />
* Flasher Compact (via Flasher Hub and Flasher Hub-12 only)<br />
<br />
The following diagrams show the internal remote control circuitry of Flasher:<br><br />
<br />
[[File:FlasherRemotecontrol.png]]<br />
{| class="seggertable"<br />
|-<br />
! Pin No. !! Function !! Description<br />
|-<br />
| 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.<br />
|-<br />
| 4 || BUSY || As soon as the "Auto" function is started, BUSY becomes active, which means that transistor is switched OFF.<br />
|-<br />
| 5 || GND || Common Signal ground.<br />
|-<br />
| 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.<br />
|-<br />
|}<br />
[[File:FlasherRemoteSignal.png]]<br />
<br />
=== ASCII command interface ===<br />
<br />
==== Introduction ====<br />
<br />
Once set up using J-Flash, the Flasher can be driven by any application or just a simple terminal using ASCII commands.<br><br />
<br />
Every known command is acknowledged by the Flasher and then executed. After command execution, Flasher sends an ASCII reply message.<br><br />
<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}}<br />
<br />
==== General command and reply message format ====<br />
<br />
* Any ASCII command has to start with the start delimiter ''#''.<br />
* Any ASCII command has to end with simple carriage return ('\r', ASCII code 13).<br />
* Commands can be sent upper or lower case<br />
<br />
==== General usage ====<br />
<br />
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.<br />
<br />
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).<br />
<br />
==== Settings for ASCII interface via RS232 ====<br />
<br />
Flasher is driven via a RS232 serial port with the following interface settings:<br><br />
<br />
* 9600 baud<br />
* 8 data bits<br />
* no parity<br />
* 1 stop bit<br />
<br />
The baud rate can be changed by using the <tt>#BAUDRATE</tt> command.<br />
<br />
==== Settings for ASCII interface via Telnet ====<br />
<br />
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><br />
<br />
[[File:telnet_connection.gif]]<br />
<br />
==== Settings for ASCII interface via VCOM ====<br />
<br />
The same settings can be used for VCOM as for [[#Settings for ASCII interface via RS232|RS232]].<br />
<br />
{{Note|The performance also depends on the terminal application used on the PC.}}<br />
<br />
==== Commands and replies ====<br />
<br />
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><br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| Commands to the Flasher<br />
|-<br />
| <tt>#BAUDRATE <Baudrate></tt><br />
|-<br />
| <tt>#AUTO</tt><br />
|-<br />
| <tt>#AUTO PATCH</tt><br />
|-<br />
| <tt>#AUTO NOINFO</tt><br />
|-<br />
| <tt>#CANCEL</tt><br />
|-<br />
| <tt>#ERASE</tt><br />
|-<br />
| <tt>#PROGRAM</tt><br />
|-<br />
| <tt>#RESULT</tt><br />
|-<br />
| <tt>#SELECT <Filename></tt><br />
|-<br />
| <tt>#START</tt><br />
|-<br />
| <tt>#STATUS</tt><br />
|-<br />
| <tt>#VERIFY</tt><br />
|-<br />
| <tt>#READ</tt><br />
|-<br />
| <tt>#QUIT</tt><br />
|-<br />
| <tt>#VERBOSE <Level></tt><br />
|-<br />
!colspan="100%"| File I/O commands<br />
|-<br />
| <tt>#FCLOSE</tt><br />
|-<br />
| <tt>#FCRC</tt><br />
|-<br />
| <tt>#FDELETE <Filename></tt><br />
|-<br />
| <tt>#FFORMAT</tt><br />
|-<br />
| <tt>#FOPEN <Filename></tt><br />
|-<br />
| <tt>#FREAD <Offset>,<NumBytes></tt><br />
|-<br />
| <tt>#FSIZE</tt><br />
|-<br />
| <tt>#FWRITE <Offset>,<NumBytes>:<nowiki><Data></nowiki></tt><br />
|-<br />
| <tt>#FLIST</tt><br />
|-<br />
| <tt>#MKDIR <Dirname></tt><br />
|-<br />
!colspan="100%"| SecureArea commands<br />
|-<br />
| <tt>#HASSECUREAREA</tt><br />
|-<br />
| <tt>#SECUREAREA <action></tt><br />
|-<br />
!colspan="100%"| Replies from the Flasher<br />
|-<br />
| <tt>#ACK</tt><br />
|-<br />
| <tt>#NACK</tt><br />
|-<br />
| <tt>#OK</tt><br />
|-<br />
| <tt>#OK:<NumBytes>:<nowiki><Data></nowiki></tt><br />
|-<br />
| <tt>#OK:<Size></tt><br />
|-<br />
| <tt>#STATUS:</tt><br />
|-<br />
| <tt>#DONE</tt><br />
|-<br />
| <tt>#ERRxxx</tt><br />
|-<br />
|}<br />
<br />
===== Commands to the Flasher =====<br />
<br />
'''#AUTO'''<br><br />
The <tt>#AUTO</tt> command behaves exactly as the start button or external remote control input.<br><br />
<br />
Usually, the following command sequence will be performed when receiving the <tt>#AUTO</tt> command:<br><br />
<br />
* The Flasher erases the target CPU (if not blank)<br />
* The Flasher programs the target CPU<br />
* The Flasher verifies the target CPU<br />
<br />
Depending on the settings chosen in the '''Production''' tab in J-Flash, this sequence can differ from the one shown above.<br><br />
<br />
Finally, Flasher responds with<br><br />
<br />
* <tt>#OK</tt> if no error occurred<br />
* <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.<br />
<br />
During execution of the <tt>#AUTO</tt> command, Flasher automatically sends "status" messages via RS232 to reflect the state of execution.<br />
Typically during execution of <tt>#AUTO</tt> command, Flasher will reply the following sequence of messages:<br><br />
<br />
<tt>#ACK</tt><br><br />
<tt>#STATUS:INITIALIZING</tt><br><br />
<tt>#STATUS:CONNECTING</tt><br><br />
<tt>#STATUS:UNLOCKING</tt><br><br />
<tt>#STATUS:ERASING</tt><br><br />
<tt>#STATUS:PROGRAMMING</tt><br><br />
<tt>#STATUS:VERIFYING</tt><br><br />
<tt>#OK (Total 13.993s, Erase 0.483s, Prog 9.183s, Verify 2.514s)</tt><br><br />
<br />
'''#AUTO PATCH'''<br><br />
The <tt>#AUTO</tt> PATCH command allows patching of the content of the data to be programmed.<br><br />
<br />
Flasher responds with<br><br />
<br />
* <tt>#OK</tt> if no error occurred<br />
* <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.<br />
<br />
For further information about the usage of the <tt>#AUTO PATCH</tt> command please refer to [[#Patch file support | Patch file support]].<br />
<br />
'''#AUTO NOINFO'''<br><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><br />
<br />
The command ends with <tt>#OK</tt> or <tt>#ERRxxx</tt><br />
<br />
'''#BAUDRATE <Baudrate>'''<br><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><br />
<br />
If this command succeeds, Flasher responds with:<br><br />
<br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<br />
Otherwise it will respond with one of the following error messages:<br><br />
<br />
<tt>#ERR255: Invalid parameters</tt><br><br />
<tt>or</tt><br><br />
<tt>#ERR255: Baudrate is not supported</tt><br><br />
<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.<br />
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.}}<br />
<br />
'''#CANCEL'''<br><br />
This command can be sent to abort a running program. It may take a while until the current program is actually canceled.<br><br />
<br />
Flasher will respond with:<br><br />
<br />
<tt>#ERR007:CANCELED.</tt><br><br />
<br />
'''#ERASE'''<br><br />
This command can be sent to erase all selected target flash sectors.<br><br />
<br />
Flasher will reply the following sequence of messages:<br><br />
<br />
<tt>#ACK</tt><br><br />
<tt>#STATUS:INITIALIZING</tt><br><br />
<tt>#STATUS:CONNECTING</tt><br><br />
<tt>#STATUS:UNLOCKING</tt><br><br />
<tt>#STATUS:ERASING</tt><br><br />
<tt>#OK (Total 0.893s, Erase 0.483s)</tt><br><br />
<br />
'''#PROGRAM'''<br><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.<br />
<br />
'''#RESULT'''<br><br />
This command can be sent any time, even during other command execution. Flasher responds with the last result of the previously executed command.<br />
<br />
'''#SELECT <Filename>'''<br><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.<br />
<tt><Filename></tt> specifies the name of file pair without extensions (.CFG and .DAT) on the Flasher which should be selected. If you are<br />
using the universal flash programming mode, <tt><Filename></tt> specifies the full name of the .UNI file '''including''' the extension.<br />
Flasher saves the selected config and data file in the FLASHER.INI file. So this selection is remembered even between power-cycling Flasher.<br><br />
<br />
This may be verfy helpful in cases where several config and data files are stored on Flasher.<br />
The user can easily switch between these config and data files without connecting Flasher to a host.<br><br />
<br />
If this command succeeds, Flasher responds with:<br><br />
<br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<br />
Find below a sample sequence which shows how to use the <tt>#SELECT</tt> command:<br><br />
<br />
<tt>#SELECT ATSAM7_1 // ATSAM7_1.CFG and ATSAM7_1.DAT is selected</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<tt>#AUTO // Start auto programming</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#STATUS:INITIALIZING</tt><br><br />
<tt>#STATUS:CONNECTING</tt><br><br />
<tt>#STATUS:UNLOCKING</tt><br><br />
<tt>#STATUS:ERASING</tt><br><br />
<tt>#STATUS:PROGRAMMING</tt><br><br />
<tt>#STATUS:VERIFYING</tt><br><br />
<tt>#OK (Total 8.416s, Erase 0.005s, Prog 6.845s, Verify 0.959s)</tt><br><br />
<tt>#SELECT ATSAM7_2 // ATSAM7_2.CFG and ATSAM7_2.DAT is selected</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<tt>#AUTO // Start auto programming</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#STATUS:INITIALIZING</tt><br><br />
<tt>#STATUS:CONNECTING</tt><br><br />
<tt>#STATUS:UNLOCKING</tt><br><br />
<tt>#STATUS:ERASING</tt><br><br />
<tt>#STATUS:PROGRAMMING</tt><br><br />
<tt>#STATUS:VERIFYING</tt><br><br />
<tt>#OK (Total 8.632s, Erase 0.005s, Prog 7.051s, Verify 0.969s)</tt><br><br />
<br />
'''#START'''<br><br />
This command can be sent to start the application using the method configured in the J-Flash project.<br><br />
For U-Flash projects, however, the target application is not necessarily started. <br><br />
There is often a "start application" checkbox in the U-Flash settings which have to be set for this.<br />
<br />
Flasher will reply with the following sequence of messages:<br><br />
<br />
<tt>#ACK</tt><br><br />
<tt>#STATUS:INITIALIZING</tt><br><br />
<tt>#STATUS:CONNECTING</tt><br><br />
<tt>#OK (Total 1.148s)</tt><br><br />
<br />
'''#STATUS'''<br><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]].<br />
<br />
'''#VERIFY'''<br><br />
This command can used to verify the target flash content against the data stored in Flasher.<br />
<br />
'''#READ'''<br><br />
Only available for devices supported by U-Flash.<br><br />
This command can used to read out flash data.<br><br />
More information: [https://wiki.segger.com/Flasher/How_to_read_data_from_a_device_using_U-Flash How to read data using U-Flash]<br />
<br />
'''#QUIT'''<br><br />
This command can be used to terminate the active telnet connection from the server side (Flasher).<br />
The command provides an easy way to terminate the session from an automated script.<br />
It is not necessary to parse stdout and switch to local command mode to disconnect.<br />
Not implemented in the Flasher ATE or Flasher Hub.<br />
<br />
'''#VERBOSE <Level>'''<br><br />
This command can be used to change the verbosity level. <br><br />
* Verbosity level 0: Default. <br><br />
* Verbosity level 1: Provides some additional messages during the programming process.<br />
<br />
===== File I/O commands =====<br />
<br />
The ASCII interface of the Flasher also supports file I/O operations.<br />
<br />
The following file I/O commands are supported:<br><br />
<br />
'''#FCLOSE'''<br><br />
The <tt>#FCLOSE</tt> command closes the file on Flasher which was opened via <tt>#FOPEN</tt>.<br />
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><br />
<br />
A typical sequence when using the <tt>#FCLOSE</tt> command does look like as follows:<br><br />
<br />
<tt>#FCLOSE</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<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><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:No file opened</tt><br />
}}<br />
<br />
'''#FCRC'''<br><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>.<br />
The CRC will be also reported by J-Flash when downloading or saving files via J-Flash.<br><br />
<br />
A typical sequence when using the <tt>#FCRC</tt> command does look like as follows:<br><br />
<br />
<tt>#FCRC flasher.dat</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK:0x75BC855A</tt><br><br />
<br />
'''#FDELETE <Filename>'''<br><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><br />
<br />
A typical sequence when using the <tt>#FDELETE</tt> command does look like as follows:<br><br />
<br />
<tt>#FDELETE flasher.dat</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<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><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:Failed to delete file</tt><br />
}}<br />
<br />
'''#FFORMAT'''<br><br />
The <tt>#FFORMAT</tt> command is used to delete all files located in the public area of the Flasher's internal memory.<br />
<br />
{{Note|1=Please note that this command deletes all projects located in the public area. Deleted projects cannot be restored again.<br><br />
This command does not delete the Flasher firmware, neither does it delete files in the secure area.<br />
}}<br />
<br />
A typical sequence using the <tt>#FFORMAT</tt> command does look like as follows:<br><br />
<br />
<tt>#FFORMAT</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#DONE</tt><br><br />
<br />
'''#FOPEN <Filename>'''<br><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.<br />
If <tt><Filename></tt> can not be found on Flasher a new one will be created.<br><br />
<br />
A typical sequence using the <tt>#FOPEN</tt> command does look like as follows:<br><br />
<br />
<tt>#FOPEN flasher.dat</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<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><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:A file has already been opened</tt><br />
}}<br />
<br />
'''#FREAD <Offset>,<NumBytes>'''<br><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.<br />
<tt><NumBytes></tt> specifies the number of bytes which should be read.<br><br />
<br />
A typical sequence when using the <tt>#FREAD</tt> command does look like as follows:<br><br />
<br />
<tt>#FREAD 0,4</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK:04:466c6173</tt><br><br />
<br />
If the <tt>#FREAD</tt> command succeeds, Flasher will finally respond with a <tt>#OK:<NumBytes>:<nowiki><Data></nowiki></tt> reply message.<br />
For more information about the Flasher reply messages, please refer to [[#Replies from Flasher | Replies from Flasher]].<br><br />
<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><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:No file opened</tt>}}<br />
<br />
'''#FSIZE'''<br><br />
The <tt>#FSIZE</tt> command is used to get the size of the currently opened file on Flasher.<br><br />
<br />
A typical sequence when using the <tt>#FSIZE</tt> command does look like as follows:<br><br />
<br />
<tt>#FSIZE</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK:10 // file on flasher which is currently open, has a size of 16 bytes</tt><br><br />
<br />
If the <tt>#FSIZE</tt> command succeeds, Flasher will respond with a <tt>#OK:<Size></tt> reply message.<br />
For more information about the Flasher reply messages, please refer to [[#Replies from Flasher | Replies from Flasher]].<br><br />
<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><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:No file opened</tt>}}<br />
<br />
'''#FWRITE <Offset>,<NumBytes>:<nowiki><Data></nowiki>'''<br><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.<br />
<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.<br />
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><br />
<br />
<tt><Offset></tt> and <tt><NumBytes></tt> are expected in hexadecimal format.<br><br />
<br />
<tt>#FWRITE 0,200:<nowiki><Data></nowiki></tt><br><br />
<tt>#FWRITE 200,200:<nowiki><Data></nowiki></tt><br><br />
<br />
The data is expected in hexadecimal format (two hexadecimal characters per byte). The following example illustrates the use of <tt>#FWRITE</tt>:<br />
<br />
<tt>Data to be send: Hello !</tt><br><br />
<tt>ASCII values: 0x48, 0x65, 0x6C, 0x6C, 0x6F, 0x20, 0x21</tt><br><br />
<br />
<tt>#FWRITE 0,7:48656C6C6F2021</tt><br><br />
<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><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:No file opened</tt><br>}}<br />
<br />
'''#FLIST'''<br><br />
The <tt>#LIST</tt> command is used to list all files stored on the Flasher.<br><br />
<br />
A typical sequence using the <tt>#FLIST</tt> command does look like as follows:<br><br />
<br />
<tt>#FLIST</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>FLASHER.INI Size: 60</tt><br><br />
<tt>SERIAL.TXT Size: 3</tt><br><br />
<tt>FLASHER.LOG Size: 207</tt><br><br />
<tt>FOLDER (DIR)</tt><br><br />
<tt>FOLDER\\TEST1.CFG Size: 2048</tt><br><br />
<tt>FOLDER\\TEST1.DAT Size: 12288</tt><br><br />
<tt>#OK</tt><br><br />
<br />
'''#MKDIR <Dirname>'''<br><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><br />
<br />
A typical sequence using the <tt>#MKDIR</tt> command does look like as follows:<br><br />
<br />
<tt>#MKDIR folder</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<br />
{{Note|1=If the directory can not be created because of a bad <tt><Dirname></tt> argument, Flasher will respond with:<br><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:Failed to create directory</tt><br>}}<br />
<br />
===== Secure Area Commands =====<br />
<br />
'''#HASSECUREAREA'''<br><br />
The <tt>#HASSECUREAREA</tt> command checks if the Flasher is configured with a secure area.<br />
<br />
<tt>#RESULT:YES</tt> indicates the secure area is present, <tt>#RESULT:NO</tt> indicates no secure area is present.<br />
<br />
'''#SECUREAREA'''<br><br />
The <tt>#SECUREAREA <action></tt> command allows to create or remove the secure area on the Flasher.<br />
<br />
* the action <tt>CREATE</tt> creates the secure area.<br />
* the action <tt>REMOVE</tt> will remove the secure area.<br />
<br />
A typical sequence using the <tt>#SECUREAREA</tt> command does look like as follows:<br><br />
<br />
<tt>#SECUREAREA CREATE</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#DONE</tt><br><br />
<br />
{{Note|1=When creating or removing the <tt>secure area</tt>, all configuration and data files being stored on the Flasher, are lost.<br />
Please make sure that they are not needed anymore, before adding / removing the security area.}}<br />
<br />
<br />
<br />
===== Replies from Flasher =====<br />
<br />
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.<br />
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.<br />
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><br />
<br />
<tt>#OK (Total 13.993s, Erase 0.483s, Prog 9.183s, Verify 2.514s)</tt><br><br />
<br />
The following reply messages from Flasher are defined:<br><br />
<br />
'''#ACK'''<br><br />
Flasher replies with <tt>#ACK</tt> message on reception of any defined command before the command itself is executed.<br />
<br />
'''#NACK'''<br><br />
Flasher replies with <tt>#NACK</tt>, if an undefined command was received.<br />
<br />
'''#OK'''<br><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.<br />
<br />
'''#OK:<NumBytes>:<nowiki><Data></nowiki>'''<br><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.<br />
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).<br />
<br />
'''#OK:<Size>'''<br><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.<br />
<br />
'''#STATUS:'''<br><br />
The Flasher replies with its current state.<br><br />
<br />
The following status messages are currently defined:<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Message !! Description<br />
|-<br />
| <tt>#STATUS:READY</tt> || Flasher is ready to receive a new command.<br />
|-<br />
| <tt>#STATUS:CONNECTING</tt> || Flasher initializes connection to target CPU.<br />
|-<br />
| <tt>#STATUS:INITIALIZING</tt> || Flasher performs self check and internal init.<br />
|-<br />
| <tt>#STATUS:UNLOCKING</tt> || Unlocking flash sectors.<br />
|-<br />
| <tt>#STATUS:ERASING</tt> || Flasher is erasing the flash of the target device.<br />
|-<br />
| <tt>#STATUS:PROGRAMMING</tt> || Flasher is programming the flash of the target device.<br />
|-<br />
| <tt>#STATUS:VERIFYING</tt> || Flasher verifies the programmed flash contents.<br />
|-<br />
|}<br />
<br />
'''#ERRxxx'''<br><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><br />
<br />
Some error codes may be followed by colon and an additional error text.<br><br />
<br />
For example:<br><br />
<br />
<tt>#ERR007:CANCELED.</tt><br><br />
<br />
The error code numbers are described in the following table:<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Message !! Description<br />
|-<br />
| <tt>#ERR007</tt> || Flasher received <tt>#CANCEL</tt> command and has canceled the current operation.<br />
|-<br />
| <tt>#ERR008</tt> || Flasher is already busy with execution of previous command.<br />
|-<br />
| <tt>#ERR009</tt> || Failed to allocate memory.<br />
|-<br />
| <tt>#ERR010</tt> || Failed to open file.<br />
|-<br />
| <tt>#ERR011</tt> || Failed to read file.<br />
|-<br />
| <tt>#ERR012</tt> || Failed to write file.<br />
|-<br />
| <tt>#ERR013</tt> || Failed to delete file.<br />
|-<br />
| <tt>#ERR255</tt> || Undefined error occurred. This reply is followed by an error string.<br />
|-<br />
|}<br />
<br />
== Performance ==<br />
<br />
The following chapter lists programming performance of common flash devices andmicrocontrollers.<br />
<br />
=== Performance of MCUs with internal flash memory ===<br />
<br />
==== Flasher ARM ====<br />
<br />
The following table lists program and erase performance values of Flasher ARM for different controllers.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Microcontroller !! Size [kByte] !! Erase time [sec] !! Program time [sec] !! Verify time [sec] !! Total time [sec]<br />
|-<br />
| Analog Devices || 62 || 2.943 || 2.286 || 0.563 || 5.792<br />
|-<br />
| Atmel AT91SAM7S64 || 64 || --- || 3.488 || 0.438 || 3.926<br />
|-<br />
| Atmel AT91SAM7S256 || 256 || --- || 7.709 || 1.053 || 8.762<br />
|-<br />
| NXP LPC1768 || 512 || 3.740 || 8.559 || 5.092 || 17.391<br />
|-<br />
| NXP LPC2106 || 120 || 0.448 || 1.204 || 0.634 || 2.286<br />
|-<br />
| NXP LPC2129 || 248 || 0.449 || 2.916 || 1.347 || 4.712<br />
|-<br />
| NXP LPC2138 || 500 || 0.448 || 5.488 || 2.649 || 8.585<br />
|-<br />
| NXP LPC2148 || 500 || 0.448 || 5.632 || 2.721 || 8.801<br />
|-<br />
| NXP LPC2294 || 2048 || 0.808 || 15.976 || 9.669 || 26.453<br />
|-<br />
| NXP LPC2478 || 504 || 0.448 || 5.419 || 2.559 || 8.426<br />
|-<br />
| ST STM32F103ZE || 512 || 0.028 || 18.763 || 3.939 || 22.730<br />
|-<br />
| ST STR711 || 272 || 0.429 || 5.476 || 4.742 || 10.647<br />
|-<br />
| ST STR912 || 544 || 1.167 || 12.907 || 5.236 || 19.310<br />
|-<br />
| TI TMS470R1B1M || 1024 || 2.289 || 8.147 || 5.362 || 15.798<br />
|-<br />
|}<br />
<br />
==== Flasher PRO ====<br />
See Flasher ARM.<br />
<br />
==== Flasher Compact ====<br />
See Flasher ARM.<br />
<br />
==== Flasher RX ====<br />
<br />
The following table lists program and erase performance values of Flasher RX.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Microcontroller !! Size [kByte] !! Erase time [sec] !! Program time [sec] !! Verify time [sec] !! Total time [sec]<br />
|-<br />
| R5F56108 || 2.048 || 9.523 || 11.915 || 3.890 || 25.585<br />
|-<br />
|}<br />
<br />
==== Flasher PPC ====<br />
<br />
The following table lists program and erase performance values of Flasher PPC.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Microcontroller !! Size [kByte] !! Erase time [sec] !! Program time [sec] !! Verify time [sec] !! Total time [sec]<br />
|-<br />
| ST SPC560B50 || 576 || 4.747 || 4.159 || 1.929 || 10.917<br />
|-<br />
|}<br />
<br />
== Hardware ==<br />
<br />
This chapter gives an overview about Flasher specific hardware details,<br />
such as the pinouts and available adapters.<br />
<br />
=== Flasher ARM 20-pin JTAG/SWD Connector ===<br />
<br />
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.<br />
<br />
==== Pinout JTAG ====<br />
<br />
[[File:jtag_port_20pin.jpg]] <!-- LG xxxxxx image has been cropped to fit page --><br />
<br />
The following table lists the Flasher JTAG pinout.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! PIN !! SIGNAL !! TYPE !! Description<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 13 || TDO || Input || JTAG data output from target CPU. Typically connected to TDO of target CPU.<br />
|-<br />
| 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".<br />
|-<br />
| 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.<br />
|-<br />
| 19 || 5V-Target supply || Output || This pin can be used to supply power to the target board. Please note the specifications. [[#Target power supply]]<br />
|-<br />
|}<br />
<br />
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.<br />
<br />
==== Pinout SWD ====<br />
<br />
The 20-pin connector of Flasher is also compatible to ARM's Serial Wire Debug (SWD) interface.<br><br />
<br />
[[File:SWD_Port.jpg]] <!-- LG xxxxxx image has been cropped to fit page --><br />
<br />
The following table lists the J-Link / J-Trace SWD pinout.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! PIN !! SIGNAL !! TYPE !! Description<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 7 || SWDIO || I/O || Single bi-directional data pin.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 13 || SWO || Output || Serial Wire Output trace port. (Optional, not required for SWD communication.)<br />
|-<br />
| 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".<br />
|-<br />
| 17 || Not used || NC || This pin is not connected in J-Link.<br />
|-<br />
| 19 || 5V-Target supply || Output || This pin can be used to supply power to the target board. Please note the specifications. [[#Target power supply]]<br />
|-<br />
|}<br />
<br />
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.<br />
<br />
==== Target power supply ====<br />
<br />
Pin 19 of the connector can be used to supply power to the target hardware. Supply voltage is 5V, max. current is 400mA.<br />
The output current is monitored and protected against overload and short-circuit.<br><br />
<br />
Power can be controlled via the J-Link commander. The following commands are available to control power:<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Command !! Explanation<br />
|-<br />
| <tt>power on</tt> || Switch target power on<br />
|-<br />
| <tt>power off</tt> || Switch target power off<br />
|-<br />
| <tt>power on perm</tt> || Set target power supply default to "on"<br />
|-<br />
| <tt>power off perm</tt> || Set target power supply default to "off"<br />
|-<br />
|}<br />
<br />
=== Flasher RX 14-pin connector ===<br />
<br />
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.<br />
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.<br />
<br />
[[File:jtag_port_14pin.wmf]]<br />
<br />
The following table lists the Flasher RX 14-pin JTAG pinout.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Pin !! Signal !! Type !! Description<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 5 || TDO || Input || JTAG data output from target CPU. Typically connected to TDO on target CPU.<br />
|-<br />
| 6 || --- || NC || This pin is not connected to Flasher RX.<br />
|-<br />
| 7 || --- || NC || This pin is not connected to Flasher RX.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 10 || --- || NC || This pin is not connected to Flasher RX.<br />
|-<br />
| 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.<br />
|-<br />
| 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".<br />
|-<br />
|}<br />
<br />
* All pins marked NC are not connected to Flasher RX. Any signal can be applied here; Flasher RX will simply ignore such a signal.<br />
* Pins 2, 12, 14 are GND pins connected to GND in Flasher RX. They should also be connected to GND in the target system.<br />
<br />
==== Target power supply ====<br />
<br />
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.<br />
Power can be controlled via the J-Link commander. The following commands are available to control power:<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Command !! Explanation<br />
|-<br />
| <tt>power on</tt> || Switch target power on<br />
|-<br />
| <tt>power off</tt> || Switch target power off<br />
|-<br />
| <tt>power on perm</tt> || Set target power supply default to "on"<br />
|-<br />
| <tt>power off perm</tt> || Set target power supply default to "off"<br />
|-<br />
|}<br />
<br />
=== Flasher PPC 14-pin connector ===<br />
<br />
Flasher PPC itself has a 20-pin JTAG connector mounted but comes with a 14-pin adapter for PowerPC devices.<br><br />
<br />
[[File:JTAG_PPC_14pin_adapter.wmf]]<br />
<br />
The following table lists the Flasher PPC 14-pin JTAG pinout.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Pin !! Signal !! Type !! Description<br />
|-<br />
| 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.<br />
|-<br />
| 3 || TDO || Input || JTAG data output from target CPU. Typically connected to TDO on target CPU.<br />
|-<br />
| 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.<br />
|-<br />
| 7 || --- || NC || This pin is not connected to Flasher PPC.<br />
|-<br />
| 8 || --- || NC || This pin is not connected to Flasher PPC.<br />
|-<br />
| 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".<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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).<br />
|-<br />
|}<br />
<br />
* All pins marked NC are not connected to Flasher PPC. Any signal can be applied here; Flasher PPC will simply ignore such a signal.<br />
* 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.<br />
<br />
=== Target board design ===<br />
<br />
We strongly advise following the recommendations given by the chip manufacturer. These recommendations are normally in line with the recommendations.<br />
Please refer to the the appropriate tables depending on the core:<br><br />
<br />
* [[#Pinout JTAG | Pinout JTAG]]<br />
* [[#Pinout SWD | Pinout SWD]]<br />
* [[#Flasher RX 14-pin connector | Flasher RX 14-pin connector]]<br />
* [[#Flasher PPC 14-pin connector | Flasher PPC 14-pin connector]]<br />
<br />
In case of doubt you should follow the recommendations given by the semiconductor manufacturer.<br />
<br />
==== Pull-up/pull-down resistors ====<br />
<br />
Unless otherwise specified by developer's manual, pull-ups/pull-downs are recommended to be between 2.2 kOhms and 47 kOhms.<br />
<br />
==== RESET, nTRST ====<br />
<br />
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><br />
<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.<br />
(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.<br />
<br />
=== Adapters ===<br />
<br />
==== JTAG Isolator ====<br />
<br />
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.<br />
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><br />
<br />
[[File:JTAG_Isolator_Port.wmf]]<br />
<br />
===== Pinout =====<br />
<br />
The following table shows the target-side pinout of the J-Link JTAG Isolator.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Pin !! Signal !! Type !! Description<br />
|-<br />
| 1 || VCC || Output || The target side of the isolator draws power over this pin.<br />
|-<br />
| 2 || VCC || Output || The target side of the isolator draws power over this pin.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 13 || TDO || Input || JTAG data output from target CPU. Typically connected to TDO of target CPU.<br />
|-<br />
| 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".<br />
|-<br />
| 17 || N/C || N/C || This pin is not connected on the target side of the isolator.<br />
|-<br />
| 19 || N/C || N/C || This pin is not connected on the target side of the isolator.<br />
|-<br />
|}<br />
<br />
Pins 4, 6, 8, 10, 12, 14, 16, 18, 20 are connected to GND.<br />
<br />
===== Safety =====<br />
This isolator provides '''basic isolation''' only. '''Do not use with hazardous voltages without further protection measures to avoid risk of electrical shock and fire.'''<br />
<br />
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.<br />
<br />
==== J-Link Needle Adapter ====<br />
<br />
To connect to the J-Link OB via programming interface the ''J-Link Needle Adapter'' is recommended.<br><br />
<br />
[[File:J-Link_Needle_Adapter_500x.jpg]]<br />
<br />
Why to choose the J-Link Needle Adapter:<br><br />
<ol><br />
<li>No additional connector required on your PCB</li><br />
<li>Very small footprint</li><br />
<li>High reliability spring pins for secure connections</li><br />
<li>Designed with 3 locating pins, so the adapter can not be connected the wrong way</li><br />
<li>No external power supply required! The J-Link Needle Adapter comes with the option to power the target hardware via J-Link.</li><br />
</ol><br />
These features make the J-Link Needle Adapter the perfect solution for production purposes.<br><br />
<br />
The pinout of the J-Link Needle Adapter is based on the pinout of the needle adapter by Tag-Connect.<br />
Please note, that both pinouts are not identical since the J-Link Needle Adapter comes with a 5V-supply pin.<br><br />
<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><br />
<br />
Moreover, the two "legs" on each side of the connector guarantee a stable and secure contact between pins and the PCB.<br><br />
<br />
[[File:J-Link_Needle_Adapter_Connector_pins_360x.jpg]]<br />
[[File:J-Link_Needle_Adapter_Pinout.jpg]]<br />
<br />
The J-Link Needle Adapter can be connected to J-Link via the ''20-pin 0.1'' JTAG to a 10-pin needle connector''.<br />
<br />
=== Flasher Pin states when idling ===<br />
WIP<br />
<br />
=== How to determine the hardware version ===<br />
<br />
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.<br />
Flasher has the hardware version printed on the back label.<br><br />
<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).<br />
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><br />
<br />
[[File:FlasherARM_version.gif]]<br />
<br />
== Support and FAQs ==<br />
<br />
This chapter contains troubleshooting tips together with solutions for common problems which might occur when using Flasher.<br />
There are several steps you can take before contacting support.<br />
Performing these steps can solve many problems and often eliminates the need for assistance.<br />
This chapter also contains a collection of frequently asked questions (FAQs) with answers.<br />
<br />
=== Contacting support ===<br />
<br />
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.<br />
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><br />
<br />
If you need to contact support, send the following information to<br><br />
''support@segger.com''<br><br />
<br />
* A detailed description of the problem<br />
* Flasher serial number<br />
* Information about your target hardware (processor, board, etc.).<br />
* <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]].<br />
<br />
Flasher is sold directly by SEGGER.<br />
<br />
=== Frequently Asked Questions ===<br />
<br />
'''Maximum JTAG speed'''<br />
{|<br />
|-<br />
| '''Q:''' || What is the maximum JTAG speed supported by Flasher?<br />
|-<br />
| '''A:''' || Flasher's maximum supported JTAG speed is 12MHz.<br />
|}<br />
<br />
'''Maximum download speed'''<br />
{|<br />
|-<br />
| '''Q:''' || What is the maximum download speed?<br><br />
|-<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.<br />
|}<br />
== Background information ==<br />
<br />
This chapter provides background information about flash programming in general. It<br />
also provides information about how to replace the firmware of Flasher manually.<br />
<br />
=== Flash programming ===<br />
<br />
Flasher comes with a DLL, which allows - amongst other functionalities - reading and writing RAM, CPU registers, starting and stopping the CPU, and setting breakpoints.<br />
<br />
==== How does flash programming via Flasher work? ====<br />
<br />
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.<br />
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.<br />
Different flash chips have different programming algorithms;the programming algorithm also depends on other things,<br />
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).<br />
The RAM code requires data to be programmed into the flash memory. The data is supplied by downloading it to RAM.<br />
<br />
==== Data download to RAM ====<br />
<br />
The data (or part of it) is downloaded to another part of the RAM of the target system.<br />
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.<br />
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.<br />
This process may have to be repeated until the entire data is programmed into the flash.<br />
<br />
==== Available options for flash programming ====<br />
<br />
In general, there are two possibilities in order to use Flasher for flash programming:<br><br />
<br />
* Using Flasher stand-alone to program the target flash memory (stand-alone mode)<br />
* Using Flasher in combination with J-Flash to program the target flash memory (Flasher in "PC-based mode")<br />
<br />
===== Using Flasher in stand-alone mode =====<br />
<br />
In order to use the Flasher in stand-alone mode, it has to be configured first.<br />
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]].<br />
<br />
===== J-Flash - Complete flash programming solution =====<br />
<br />
J-Flash is a stand-alone Windows application, which can read / write data files and program the flash in almost any ARM system.<br />
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''.<br />
<br />
==== How does the universal flash programming work? ====<br />
<br />
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><br />
<br />
Universal flash programming is available only for stand-alone mode.<br />
== Glossary ==<br />
<br />
This chapter describes important terms used throughout this manual.<br />
<br />
'''Big-endian'''<br><br />
Memory organization where the least significant byte of a word is at a higher address than the most significant byte. See Little-endian.<br />
<br />
'''Cache cleaning'''<br><br />
The process of writing dirty data in a cache to main memory.<br />
<br />
'''Coprocessor'''<br><br />
An additional processor that is used for certain operations, for example, for floating-point math calculations, signal processing, or memory management.<br />
<br />
'''Dirty data'''<br><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.<br />
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.<br />
<br />
'''Halfword'''<br><br />
A 16-bit unit of information.<br />
<br />
'''Host'''<br><br />
A computer which provides data and other services to another computer. Especially, a computer providing debugging services to a target being debugged.<br />
<br />
'''ICache'''<br><br />
Instruction cache.<br />
<br />
'''ID'''<br><br />
Identifier.<br />
<br />
'''IEEE 1149.1'''<br><br />
The IEEE Standard which defines TAP. Commonly (but incorrectly) referred to as JTAG.<br />
<br />
'''Image'''<br><br />
An executable file that has been loaded onto a processor for execution.<br />
<br />
'''Instruction Register'''<br><br />
When referring to a TAP controller, a register that controls the operation of the TAP.<br />
<br />
'''IR'''<br><br />
See Instruction Register.<br />
<br />
'''Joint Test Action Group (JTAG)'''<br><br />
The name of the standards group which created the IEEE 1149.1 specification.<br />
<br />
'''Little-endian'''<br><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.<br />
<br />
'''Memory coherency'''<br><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.<br />
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.<br />
<br />
'''Memory management unit (MMU)'''<br><br />
Hardware that controls caches and access permissions to blocks of memory, and translates virtual to physical addresses.<br />
<br />
'''Memory Protection Unit (MPU)'''<br><br />
Hardware that controls access permissions to blocks of memory. Unlike an MMU, a MPU does not translate virtual addresses to physical addresses.<br />
<br />
'''RESET'''<br><br />
Abbreviation of System Reset. The electronic signal which causes the target system other than the TAP controller to be reset.<br />
This signal is also known as "nSRST" "nSYSRST", "nRST", or "nRESET" in some other manuals. See also nTRST.<br />
<br />
'''nTRST'''<br><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.<br />
<br />
'''Open collector'''<br><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.<br />
<br />
'''Processor Core'''<br><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.<br />
It excludes optional coprocessors, caches, and the memory management unit.<br />
<br />
'''Remapping'''<br><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.<br />
<br />
'''RTOS'''<br><br />
Real Time Operating System.<br />
<br />
'''TAP Controller'''<br><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.<br />
<br />
'''Target'''<br><br />
The actual processor (real silicon or simulated) on which the application program is running.<br />
<br />
'''TCK'''<br><br />
The electronic clock signal which times data on the TAP data lines TMS, TDI, and TDO.<br />
<br />
'''TDI'''<br><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.<br />
<br />
'''TDO'''<br><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.<br />
<br />
'''Test Access Port (TAP)'''<br><br />
The port used to access a device's TAP Controller. Comprises TCK, TMS, TDI, TDO, and nTRST (optional).<br />
<br />
'''Transistor-transistor logic (TTL)'''<br><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.<br />
<br />
'''Word'''<br><br />
A 32-bit unit of information. Contents are taken as being an unsigned integer unless otherwise stated.<br />
== Literature and references ==<br />
This chapter lists documents, which we think may be useful to gain a deeper understanding of technical details.</div>JanBhttps://wiki.segger.com/index.php?title=UM08022_Flasher&diff=17585UM08022 Flasher2024-02-01T07:32:25Z<p>JanB: /* Flasher ARM 20-pin JTAG/SWD Connector */</p>
<hr />
<div><!---<br />
General TBD:<br />
- LG: Right now - EVERYTHING<br />
===========================================<br />
--------------------[more specific, but on multiple locations]<br />
- check if all emphasis (bold, tt, blue, etc ) have made it into the new version<br />
- Add Information -> Additional information<br />
- use of the term free-of-charge utility/tool etc<br />
- check compliant to DocStandards_Rules.txt<br />
- Remove everything regarding to Kickstarter versions? eventually create a chapter Legacy -> Kickstarter version were available for hw version 5-x (200x-200x)...[..]<br />
- 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.<br />
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.<br />
- if week keep the IDE specific stuff in the manual, add Ozone, ES and J-Link Commander were no mentioned.<br />
- IDE specifics move into wiki confirmed by Alex<br />
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)<br />
- check all sections regarding licensing<br />
- Check compliance of J-Link emDocs with typographic conventions described in AboutThisDocument.emDoc. What should be altered? e.g. references<br />
- use uref at all (not blue)?<br />
- search and decide where to use \ref (ref with page number)<br />
- why is \ref (no single "option" \uref is more basic as \ref.....)<br />
- in text, use either \ref or \iref instead of \uref<br />
- in old manual, \H3 started on a new page (not per default, but set manually for api tables etc...)<br />
- move used old images and source files (visio etc) via svn (currently copied)<br />
--------------------[grammar / vocabulary discussion]<br />
- Product names<br />
-- Use of SEGGEPROBE in this document?<br />
- use license over licence<br />
- commandline or command-line?<br />
- toolchain or tool chain?<br />
- crossreference/cross-reference/cross reference?<br />
- overcurrent?<br />
- double words?<br />
- frontend?<br />
- Unit: Kbytes, KBytes, V, mV.... 9V or 9 V? Create rule in Vocabulary<br />
- baudrate or baud rate?<br />
- stackpointer or stack pointer<br />
- check where we should replace abbreviations with the long form (e.h. "milliseconds" instead of "ms")<br />
- config or configuration<br />
- filepointer or file pointer?<br />
--------------------[J-Link dep. specific]<br />
- J-Link command strings or J-Link Command strings or J-Link Command Strings<br />
- J-Link settings file or...<br />
- J-Link control panel or ......<br />
- J-Link script files or...<br />
---><br />
Flasher is a programming tool for microcontrollers with on-chip or external flash memory.<br />
Flasher is designed for programming flash targets with the J-Flash software or stand-alone.<br />
In addition to that Flasher can also be used as a regular J-Link. For more information about J-Link in general,<br />
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].<br />
<br />
<div class="toclimit-2"><br />
__TOC__<br />
</div><br />
<br />
== Flasher Software and Documentation Pack ==<br />
The Flasher Software and Documentation Pack, available for download on the [https://www.segger.com/downloads/flasher#FlasherSoftwareAndDocumentationPack SEGGER homepage], includes applications to be used with Flasher and in some cases with J-Link and J-Trace.<br><br />
It also comes with USB-drivers for J-Link, J-Trace and Flasher.<br />
<br />
=== Software overview ===<br />
{| class="wikitable"<br />
|-<br />
! Software !! Description<br />
|-<br />
| [[J-Link Configurator|Flasher Configurator]] || GUI-based configuration tool for Flasher. Allows configuration of USB identification as well as TCP/IP identification of Flashers.<br />
|-<br />
| [[FlasherControl|Flasher Control]] || Command-line tool to connect to the Flasher's command-line interface via USB.<br />
|-<br />
| [[J-Flash]] || Flash programming application.<br />
|-<br />
| [[J-Flash SPI]] || (Q)SPI flash programming application.<br />
|-<br />
| [[J-Link Commander]] || Command-line tool with basic functionality for target analysis.<br />
|-<br />
| [[J-Link Registration]] || SEGGER J-Link Registration utility to register your SEGGER product such as a J-Link, J-Trace or Flasher.<br />
|-<br />
| [[JTAGLoad]] || Command line tool that opens an svf file and sends the data in it via J-Link / J-Trace or Flasher to the target.<br />
|-<br />
| [https://www.segger.com/downloads/flasher/UM08037.pdf U-Flash] || Tool for creating standalone Flasher projects.<br />
|}<br />
<br />
== Flasher overview ==<br />
Flasher connects to a PC using the USB/Ethernet/RS232 interface (what host interfaces are available depends on the Flasher model),<br />
running Windows, Linux & MacOS. In stand-alone mode,<br />
Flasher can be driven by the start/stop button, or via the RS232 interface (handshake control or ASCII interface).<br />
Flasher always has a 20-pin connector, which target interfaces are supported depends on the Flasher model:<br />
* Flasher ARM: JTAG and SWD are supported.<br />
* Flasher RX: JTAG is supported. Flasher comes with additional 14-pin RX adapter<br />
* Flasher PPC: JTAG is supported. Flasher comes with additional 14-pin PPC adapter.<br />
* Flasher PRO: JTAG and SWD are supported.<br />
* Flasher Compact: JTAG and SWD are supported.<br />
<br />
=== Features of Flasher ARM/PPC/RX/PRO ===<br />
* Three boot modes: PC-based mode, stand-alone mode, file access mode<br />
* Stand-alone JTAG/SWD programmer (Once set up, Flasher can be controlled without the use of PC program)<br />
* No power supply required, powered through USB<br />
* Supports internal and external flash devices<br />
* 128 MB memory for storage of target program<br />
* Can be used as J-Link (emulator) with a download speed of up to 720 Kbytes/second<br />
* Data files can updated via USB/Ethernet (using the J-Flash software), via FTP, via RS232 or via the file access mode of Flasher<br />
<br />
{| class="seggertable"<br />
|-<br />
! Flasher model !! Supported cores !! Supported target interfaces !! Flash programming speed (depending on target hardware)<br />
|-<br />
| Flasher ARM || ARM7/ARM9/Cortex-M || JTAG, SWD || between 170 and 300 Kbytes/second<br />
|-<br />
| Flasher RX || Renesas RX610, RX621, RX62N, RX62T || JTAG || between 30-300 Kbytes/second<br />
|-<br />
| Flasher PPC || Power PC e200z0 || JTAG || up to 138 Kbytes/second<br />
|-<br />
| Flasher PRO || ARM7/ARM9/Cortex-M Renesas RX610, RX621, RX62N, RX62T Power PC e200z0 || JTAG, SWD || between 30-300 Kbytes/ second<br />
|-<br />
|}<br />
<br />
==== Features of Flasher Compact ====<br />
<br />
* Three boot modes: PC-based mode, stand-alone mode, file access mode<br />
* Stand-alone JTAG/SWD programmer (Once set up, Flasher can be controlled without the use of PC program)<br />
* No power supply required, powered through USB<br />
* Supports internal and external flash devices<br />
* 128 MB memory for storage of target program<br />
* Can be used as J-Link (emulator) with a download speed of up to 720 Kbytes/second<br />
* Data files can updated via USB/Ethernet (using the J-Flash software) or via the file access mode of Flasher<br />
<br />
{| class="seggertable"<br />
|-<br />
! Flasher model !! Supported cores !! Supported target interfaces !! Flash programming speed (depending on target hardware)<br />
|-<br />
| Flasher ARM || ARM7/ARM9/Cortex-M || JTAG, SWD || between 170 and 300 Kbytes/second<br />
|-<br />
| Flasher RX || Renesas RX610, RX621, RX62N, RX62T || JTAG || between 30-300 Kbytes/second<br />
|-<br />
| Flasher PPC || Power PC e200z0 || JTAG || up to 138 Kbytes/second<br />
|-<br />
| Flasher Compact || ARM7/ARM9/Cortex-M Renesas RX610, RX621, RX62N, RX62T Power PC e200z0 || JTAG, SWD || between 30-300 Kbytes/ second<br />
|-<br />
|}<br />
<br />
==== Features of Flasher Portable/Flasher Portable PLUS ====<br />
<br />
* Stand-alone in-circuit-programmer (Once set up, Flasher can be controlled without the use of a PC program)<br />
* Powered by an internal rechargeable battery (standard batteries for Flasher Portable), no Laptop or external power supply required.<br />
* Multiple firmware images can be stored on Flasher<br />
* 128 MB memory for storage of target program<br />
* Flasher Portable PLUS supports a simple selection of up to 99 firmware images via buttons (since V7.90)<br />
* Supported CPUs: ARM Cortex, Legacy ARM7/9, Renesas RX, Freescale PowerPC<br />
* Supports internal and external flash<br />
* Free software updates<ref name="legitimateOwned" />, 1 year of support<br />
* Data files can be updated via the file access mode functionality or via J-Flash<br />
* Programming speed between 30-300 Kbytes/second (actual speed depends on target hardware)<br />
{{Note|1=Ethernet and RS232 as host interface are not available for Flasher Portable}}<br />
<references><br />
<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.<br />
As a legitimate owner of a SEGGER Flasher, you can always download the latest software free of charge.<br />
Though not planned and not likely, we reserve the right to change this policy.<br />
Note that older models may not be supported by newer versions of the software.<br />
Typically, we support older models with new software at least 3 years after end of life.<br />
</ref><br />
</references><br />
<br />
{| class="seggertable"<br />
|-<br />
! Supported cores !! Supported target interfaces !! Flash programming speed (depending on target hardware)<br />
|-<br />
| ARM7/ARM9/Cortex-M || JTAG, SWD || between 30-300 Kbytes/second<br />
|-<br />
| Renesas RX610, RX621, RX62N, RX62T || JTAG || between 170 and 300 Kbytes/second<br />
|-<br />
| Power PC e200z0 || JTAG || up to 138 Kbytes/second<br />
|-<br />
|}<br />
<br />
==== Working environment ====<br />
<br />
'''General'''<br><br />
The Flasher can operate from a PC with an appropriate software like J-Flash or in stand-alone mode.<br />
<br />
'''Host System'''<br><br />
IBM PC/AT or compatible CPU: 486 (or better) with at least 128MB of RAM,<br />
running Windows, Linux & MacOS. It needs to have a USB, Ethernet or RS232 interface available for communication with Flasher.<br />
<br />
'''Power supply'''<br><br />
Flasher Portable: 3x standard AAA batteries or 5V DC, min. 100 mA via USB connector.<br />
<br />
Flasher Portable PLUS: internal rechargeable 680mAh Li-Ion battery, min. 100 mA via USB connector.<br />
<br />
Other Flashers: 5V DC, min. 100 mA via USB connector.<br />
<br />
'''Installing Flasher PC-software'''<br><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><br />
More information about the package you can find in the similar [[J-Link Software and Documentation Pack]].<br><br />
The package includes U-Flash and J-Flash, the main tools for flashing targets:<br />
* J-Flash : J-Flash User Guide ([https://wiki.segger.com/UM08003_JFlash UM08003_JFlash.pdf]).<br />
* U-Flash : U-Flash User Guide ([https://www.segger.com/downloads/flasher/UM08037.pdf UM08037_UniversalFlashLoader.pdf]).<br />
<br />
=== Specifications ===<br />
<br />
<br />
==== Specifications for Flasher ARM ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Windows, Linux & MacOS<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C<br />
|-<br />
| Storage Temperature || -20 °C ... +60 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
!colspan="100%"| Mechanical<br />
|-<br />
| Size (without cables) || 121mm x 66mm x 30mm<br />
|-<br />
| Weight (without cables) || 119g<br />
|-<br />
!colspan="100%"| Available interfaces<br />
|-<br />
| USB Host interface || USB 2.0, full speed<br />
|-<br />
| Ethernet Host interface || 10/100 MBit<br />
|-<br />
| RS232 Host interface || RS232 9-pin<br />
|-<br />
| Target interface || JTAG 20-pin (14-pin adapter available)<br />
|-<br />
!colspan="100%"| JTAG Interface, Electrical<br />
|-<br />
| Power Supply || USB powered, 100mA for Flasher ARM. 500 mA if target is powered by Flasher ARM<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| Target supply voltage || Supply voltage is 5V, max.<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6 <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Max. JTAG speed || up to 12MHz<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
===== Flasher ARM download speed =====<br />
<br />
The following table lists the Flasher ARM performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! ARM7 memory download<br />
|-<br />
| Flasher ARM || 720 Kbytes/s (12MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
<br />
==== Specifications for Flasher RX ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Windows, Linux & MacOS<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C<br />
|-<br />
| Storage Temperature || -20 °C ... +60 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
!colspan="100%"| Mechanical<br />
|-<br />
| Size (without cables) || 121mm x 66mm x 30mm<br />
|-<br />
| Weight (without cables) || 119g<br />
|-<br />
!colspan="100%"| Available interfaces<br />
|-<br />
| USB Host interface || USB 2.0, full speed<br />
|-<br />
| Ethernet Host interface || 10/100 MBit<br />
|-<br />
| RS232 Host interface || RS232 9-pin<br />
|-<br />
| Target interface || JTAG 20-pin (shipped with 14-pin adapter for Renesas RX)<br />
|-<br />
!colspan="100%"| JTAG Interface, Electrical<br />
|-<br />
| Power Supply || USB powered, 100mA for Flasher RX. 500 mA if target is powered by Flasher RX<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| 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)<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6 <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Max. JTAG speed || up to 12MHz<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
===== Flasher RX download speed =====<br />
<br />
The following table lists the Flasher RX performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! Flasher RX600 series memory download<br />
|-<br />
| Flasher RX || 720 Kbytes/s (12MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
<br />
==== Specifications for Flasher PPC ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Windows, Linux & MacOS<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C<br />
|-<br />
| Storage Temperature || -20 °C ... +60 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
!colspan="100%"| Mechanical<br />
|-<br />
| Size (without cables) || 121mm x 66mm x 30mm<br />
|-<br />
| Weight (without cables) || 119g<br />
|-<br />
!colspan="100%"| Available interfaces<br />
|-<br />
| USB Host interface || USB 2.0, full speed<br />
|-<br />
| Ethernet Host interface || 10/100 MBit<br />
|-<br />
| RS232 Host interface || RS232 9-pin<br />
|-<br />
| Target interface || JTAG 20-pin (shipped with 14-pin adapter for Renesas PPC)<br />
|-<br />
!colspan="100%"| JTAG Interface, Electrical<br />
|-<br />
| Power Supply || USB powered, 100mA for Flasher PPC. 500 mA if target is powered by Flasher PPC<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| Target supply voltage || Supply voltage is 5V, max.<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6 <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Max. JTAG speed || up to 12MHz<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
===== Flasher RX download speed =====<br />
<br />
The following table lists the Flasher PPC performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! Memory download<br />
|-<br />
| Flasher PPC || 530 Kbytes/s (8 MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
<br />
==== Specifications for Flasher PRO ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Windows, Linux & MacOS<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C<br />
|-<br />
| Storage Temperature || -20 °C ... +60 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
!colspan="100%"| Mechanical<br />
|-<br />
| Size (without cables) || 121mm x 66mm x 30mm<br />
|-<br />
| Weight (without cables) || 119g<br />
|-<br />
!colspan="100%"| Available interfaces<br />
|-<br />
| USB Host interface || USB 2.0, full speed<br />
|-<br />
| Ethernet Host interface || 10/100 MBit<br />
|-<br />
| RS232 Host interface || RS232 9-pin<br />
|-<br />
| Target interface || JTAG 20-pin (14-pin adapter available)<br />
|-<br />
!colspan="100%"| JTAG Interface, Electrical<br />
|-<br />
| Power Supply || USB powered, 100mA for Flasher PRO. 500 mA if target is powered by Flasher PRO<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| Target supply voltage || Supply voltage is 5V, max.<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6 <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Max. JTAG speed || up to 12MHz<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
<br />
===== Supported CPU cores =====<br />
<br />
The Flasher PRO supports the following CPU cores:<br />
<br />
'''ARM Cortex'''<br><br />
* Cortex-A5<br />
* Cortex-A8<br />
* Cortex-A9<br />
* Cortex-R4<br />
* Cortex-R5<br />
* Cortex-M0<br />
* Cortex-M0+<br />
* Cortex-M1<br />
* Cortex-M3<br />
* Cortex-M4<br />
<br />
'''ARM (legacy cores)'''<br><br />
* ARM720T<br />
* ARM7TDMI<br />
* ARM7TDMI-S<br />
* ARM920T<br />
* ARM922T<br />
* ARM926EJ-S<br />
* ARM946E-S<br />
* ARM966E-S<br />
* ARM1136JF-S<br />
* ARM1136J-S<br />
* ARM1156T2-S<br />
* ARM1156T2F-S<br />
* ARM1176JZ-S<br />
* ARM1176JZF<br />
* ARM1176JZF-S<br />
<br />
'''Renesas RX'''<br><br />
* RX111<br />
* RX210<br />
* RX220<br />
* RX21A<br />
* RX610<br />
* RX621<br />
* RX62G<br />
* RX62N<br />
* RX62T<br />
* RX630<br />
* RX631<br />
* RX63N<br />
* RX63T<br />
<br />
'''Freescale Power PC'''<br><br />
* e200z0<br />
<br />
===== Supported Target interfaces =====<br />
<br />
The Flasher PRO supports the following target interfaces:<br />
<br />
* JTAG<br />
* SWD<br />
* FINE<br />
* SPD<br />
<br />
===== Flasher PRO download speed =====<br />
<br />
The following table lists the Flasher PRO performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! ARM7 memory download<br />
|-<br />
| Flasher PRO || 720 Kbytes/s (12MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
<br />
==== Specifications for Flasher Compact ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Microsoft Windows (x86/x64)<br>Linux (x86/x64/Arm)<br>macOS (x86/Apple M1)<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C<br />
|-<br />
| Storage Temperature || -20 °C ... +65 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
| Size (without cables) || 70mm x 45mm x 18mm<br />
|-<br />
| Weight (without cables) || 40g<br />
|-<br />
| USB Host interface || USB 2.0 (Hi-Speed); Micro USB<br />
|-<br />
| Target interface || JTAG 20-pin (14-pin adapter available)<br />
|-<br />
| Power Supply || USB powered, 130mA (idle)<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| Target supply voltage || Supply voltage is 5V, max.<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
| Supported target interfaces || SPI, QSPI, 8051 C2, cJTAG, FINE, ICSP, IIC, ISP, JTAG, PDI, SPD, SWD, SWIM, UART, UPDI<br />
|-<br />
| Serial transfer rate between Flasher Compact and target || Up to 50 MHz (Depending on target interface)<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6 <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
===== Supported CPU cores =====<br />
<br />
The Flasher Compact supports the following CPU cores:<br />
'''ARM Cortex'''<br><br />
* Cortex-A5<br />
* Cortex-A8<br />
* Cortex-A9<br />
* Cortex-R4<br />
* Cortex-R5<br />
* Cortex-M0<br />
* Cortex-M0+<br />
* Cortex-M1<br />
* Cortex-M3<br />
* Cortex-M4<br />
<br />
'''ARM (legacy cores)'''<br><br />
* ARM720T<br />
* ARM7TDMI<br />
* ARM7TDMI-S<br />
* ARM920T<br />
* ARM922T<br />
* ARM926EJ-S<br />
* ARM946E-S<br />
* ARM966E-S<br />
* ARM1136JF-S<br />
* ARM1136J-S<br />
* ARM1156T2-S<br />
* ARM1156T2F-S<br />
* ARM1176JZ-S<br />
* ARM1176JZF<br />
* ARM1176JZF-S<br />
<br />
'''Renesas RX'''<br><br />
* RX111<br />
* RX210<br />
* RX220<br />
* RX21A<br />
* RX610<br />
* RX621<br />
* RX62G<br />
* RX62N<br />
* RX62T<br />
* RX630<br />
* RX631<br />
* RX63N<br />
* RX63T<br />
<br />
'''Freescale Power PC'''<br><br />
* e200z0<br />
<br />
===== Flasher Compact download speed =====<br />
<br />
The following table lists the Flasher Compact performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! ARM7 memory download<br />
|-<br />
| Flasher Compact || 720 Kbytes/s (12MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
<br />
==== Specifications for Flasher Portable PLUS ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Windows, Linux & MacOS<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C (normal operation)<br>+5 °C ... +45 °C (battery charging)<br />
|-<br />
| Storage Temperature || -20 °C ... +45 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
| 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)<br />
|-<br />
| Charging via USB || 70 minutes (at 1A charging current)<br />
|-<br />
!colspan="100%"| Mechanical<br />
|-<br />
| Size (without cables) || 126mm x 70mm x 28mm<br />
|-<br />
| Weight (without cables) || 140g<br />
|-<br />
!colspan="100%"| Available interfaces<br />
|-<br />
| USB Host interface || USB 2.0<br />
|-<br />
| Target interface || Standard 20-pin 0.1" connector (Adapters available).<br />
|-<br />
!colspan="100%"| Target Interface, Electrical<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| Target supply voltage || Supply voltage is 4.5V, max. (depends on the current battery voltage).<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6 <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Max. JTAG speed || up to 12MHz<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
===== Supported CPU cores =====<br />
<br />
The Flasher Portable PLUS supports the following CPU cores:<br />
<br />
'''ARM Cortex'''<br><br />
* Cortex-A5<br />
* Cortex-A8<br />
* Cortex-A9<br />
* Cortex-R4<br />
* Cortex-R5<br />
* Cortex-M0<br />
* Cortex-M0+<br />
* Cortex-M1<br />
* Cortex-M3<br />
* Cortex-M4<br />
<br />
'''ARM (legacy cores)'''<br><br />
* ARM720T<br />
* ARM7TDMI<br />
* ARM7TDMI-S<br />
* ARM920T<br />
* ARM922T<br />
* ARM926EJ-S<br />
* ARM946E-S<br />
* ARM966E-S<br />
* ARM1136JF-S<br />
* ARM1136J-S<br />
* ARM1156T2-S<br />
* ARM1156T2F-S<br />
* ARM1176JZ-S<br />
* ARM1176JZF<br />
* ARM1176JZF-S<br />
<br />
'''Renesas RX'''<br><br />
* RX111<br />
* RX210<br />
* RX220<br />
* RX21A<br />
* RX610<br />
* RX621<br />
* RX62G<br />
* RX62N<br />
* RX62T<br />
* RX630<br />
* RX631<br />
* RX63N<br />
* RX63T<br />
<br />
'''Freescale Power PC'''<br><br />
* e200z0<br />
<br />
===== Supported Target interfaces =====<br />
<br />
The Flasher Portable PLUS supports the following target interfaces:<br />
* JTAG<br />
* SWD<br />
* FINE<br />
* SPD<br />
<br />
===== Flasher Portable PLUS download speed =====<br />
<br />
The following table lists the Flasher Portable PLUS performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! ARM7 memory download<br />
|-<br />
| Flasher PRO || 720 Kbytes/s (12MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
<br />
==== Specifications for Flasher Portable ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Windows, Linux & MacOS<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C<br />
|-<br />
| Storage Temperature || -20 °C ... +65 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
| Power Supply || a) USB powered, 100mA for Flasher Portable. 500 mA if target is powered by Flasher Portable<br>b) Batteries powered (3xAAA)<br />
|-<br />
!colspan="100%"| Mechanical<br />
|-<br />
| Size (without cables) || 130mm x 65mm x 25mm<br />
|-<br />
| Weight (without cables) || 120g<br />
|-<br />
!colspan="100%"| Available interfaces<br />
|-<br />
| USB Host interface || USB 2.0<br />
|-<br />
| Target interface || Standard 20-pin 0.1" connector (Adapters available).<br />
|-<br />
!colspan="100%"| Target Interface, Electrical<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| Target supply voltage || Supply voltage is 4.5V, max. (depends on the current battery voltage).<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6V <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Max. JTAG speed || up to 12MHz<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
===== Supported CPU cores =====<br />
<br />
The Flasher Portable supports the following CPU cores:<br />
<br />
'''ARM Cortex'''<br><br />
* Cortex-A5<br />
* Cortex-A8<br />
* Cortex-A9<br />
* Cortex-R4<br />
* Cortex-R5<br />
* Cortex-M0<br />
* Cortex-M0+<br />
* Cortex-M1<br />
* Cortex-M3<br />
* Cortex-M4<br />
<br />
'''ARM (legacy cores)'''<br><br />
* ARM720T<br />
* ARM7TDMI<br />
* ARM7TDMI-S<br />
* ARM920T<br />
* ARM922T<br />
* ARM926EJ-S<br />
* ARM946E-S<br />
* ARM966E-S<br />
* ARM1136JF-S<br />
* ARM1136J-S<br />
* ARM1156T2-S<br />
* ARM1156T2F-S<br />
* ARM1176JZ-S<br />
* ARM1176JZF<br />
* ARM1176JZF-S<br />
<br />
'''Renesas RX'''<br><br />
* RX111<br />
* RX210<br />
* RX220<br />
* RX21A<br />
* RX610<br />
* RX621<br />
* RX62G<br />
* RX62N<br />
* RX62T<br />
* RX630<br />
* RX631<br />
* RX63N<br />
* RX63T<br />
<br />
'''Freescale Power PC'''<br><br />
* e200z0<br />
<br />
===== Supported Target interfaces =====<br />
<br />
The Flasher Portable supports the following target interfaces:<br />
<br />
* JTAG<br />
* SWD<br />
* FINE<br />
* SPD<br />
<br />
===== Flasher Portable download speed =====<br />
<br />
The following table lists the Flasher Portable performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! ARM7 memory download<br />
|-<br />
| Flasher PRO || 720 Kbytes/s (12MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
== Working with Flasher ==<br />
<br />
This chapter describes functionality and how to use Flasher.<br />
<br />
=== Flasher Portable PLUS ===<br />
<br />
The Flasher Portable PLUS is a portable version of SEGGERs Flasher family,<br />
which has been designed to fill the need of an extremely portable, production grade,<br />
Flash programmer used for in-field firmware updates. No need to be tethered to an outlet,<br />
it is powered by an integrated Li-Ion cell (680mAh).<br />
The Flasher Portable PLUS programs flash targets in stand-alone mode or via J-Flash PC software.<br><br />
<br />
Furthermore the Flasher Portable PLUS allows the user to select between 99 data images to be programmed (since V7.90).<br />
The images can be easily selected by using the SEL button on the front of the housing.<br />
For more information about support for multiple images, please refer to [[#Multiple File Support | Multiple File Support]].<br><br />
For setup and configuration purposes, the Flasher Portable PLUS connects to a PC via USB interface,<br />
running Windows, Linux & MacOS and has a built-in standard 20-pin J-Link target connector.<br><br />
<br />
{{Note|1=Ethernet and RS232 as host interface are not available for the Flasher Portable PLUS.}}<br />
<br />
==== Housing & Buttons ====<br />
<br />
The Flasher Portable PLUS comes with a display, which is for example used to represent the status of an ongoing flash progress.<br />
Furthermore, there are three buttons which allow the user to control Flasher Portable PLUS.<br />
For a detailed description of the functions, take a look at the table below:<br />
<br />
<!-- LG xxxxxx edit image with labels for buttons? (Is this actually necessary? Buttons are basically self-explanatory...) --><br />
[[File:Flasher_Portable_PLUS.png | 500px]]<br />
<br />
{| class="seggertable"<br />
|-<br />
! Button !! Description<br />
|-<br />
| Program || Start programming process with the currently selected image.<br />
|-<br />
| Select image || Select the image to be programmed next time the Program button is pressed.<br />
|-<br />
| 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.<br />
|-<br />
|}<br />
<br />
==== Configuration ====<br />
<br />
The Flasher Portable PLUS has some configuration options the other Flashers do not have.<br />
{| class="seggertable"<br />
|-<br />
! Option !! Description !! Value range !! Default value<br />
|-<br />
| AutoPowerOffOnIdle || Specifies the time interval after which the Flasher Portable will turn off without any user action || 1 to 3600 || 60<br />
|-<br />
| ShowDatCRCAfterProgramming || Activates displaying the data file CRC after the programming in the pop up message || 0 = inactive, 1 = active || 0<br />
|-<br />
|}<br />
<br />
If the <tt>Flasher.ini</tt> does not contain a <tt>[Config]</tt> section with the configuration option, the default value is used.<br />
<br />
'''Example:'''<br><br />
This sample will show the data file CRC after the programming and the auto power of is set to five minutes (=300 seconds).<br />
<br />
<source lang="c"><br />
[CONFIG]<br />
AutoPowerOffOnIdle = "300"<br />
ShowDatCRCAfterProgramming = "1"<br />
</source><br />
<br />
=== Flasher Portable ===<br />
<br />
The Flasher Portable is a portable version of SEGGERs Flasher family, which has been designed to fill the need of an extremely portable,<br />
production grade, Flash programmer used for in-field firmware updates. No need to be tethered to an outlet,<br />
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><br />
<br />
Furthermore the Flasher Portable allows the user to select between four data images to be programmed.<br />
The images can be easily selected by using the arrow buttons on the front of the housing.<br />
For more information about support for multiple images, please refer to [[#Multiple File Support | Multiple File Support]].<br><br />
For setup and configuration purposes, the Flasher Portable connects to a PC via USB interface,<br />
running Windows, Linux & MacOS and has a built-in standard 20-pin J-Link target connector.<br><br />
<br />
{{Note|1=Ethernet and RS232 as host interface are not available for the Flasher Portable.}}<br />
<br />
==== Housing & Buttons ====<br />
<br />
The Flasher Portable comes with several leds which are for example used to represent the status of an ongoing flash progress.<br />
Furthermore, there are three buttons which allow the user to control Flasher Portable.<br />
For a detailed description of the functions, take a look at the two tables below:<br />
<br />
<!-- LG xxxxxx edit image with labels for buttons?--><br />
[[File:Flasher_Portable_Top_2.png | 500px]]<br />
<br />
{| class="seggertable"<br />
|-<br />
! LED !! Description<br />
|-<br />
| ACTIVE || GREEN. Blinks while the Flasher Portable is busy / performs operations on the target.<br />
|-<br />
| PASS/FAIL || GREEN/RED. Indicates, if the last flashing cycle was successful.<br />
<ul><br />
<li> GREEN: Flashing cycle completed successfully.</li><br />
<li> RED: Flashing cycle completed with error.</li><br />
</ul><br />
|-<br />
| 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]].<br />
|-<br />
| POWER || GREEN: Indicates if Flasher is currently powered. Blinks while Flasher Portable tries to enumerate via USB.<br />
|-<br />
| 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.<br />
|-<br />
|}<br />
<br />
{| class="seggertable"<br />
|-<br />
! Button !! Description<br />
|-<br />
| Program || Start programming process with the currently selected image.<br />
|-<br />
| Select image || Select the image to be programmed next time the <tt>Program</tt> button is pressed.<br />
|-<br />
| 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<br />
|-<br />
|}<br />
<br />
=== File system ===<br />
<br />
The Flasher with hardware version 4 and lower supports 8.3 filenames only (8 characters filename, 3 characters file extension).<br />
Using longer filenames may result in incorrect operation. Integrated functions,<br />
like the FTP server or the terminal server, will refuse writing files with long filenames.<br />
<br />
=== Setting up the IP interface ===<br />
<br />
Setting up the IP interface<br />
Some of the Flasher models come with an additional Ethernet interface to communicate with the host system.<br />
These Flashers also come with a built-in webserver which allows some basic setup of the emulator,<br />
e.g. configuring a default gateway which allows using it even in large intranets. For more information,<br />
please refer to [[#TCP Services | TCP Services]].<br />
<br />
==== Connecting the first time ====<br />
<br />
When connecting Flasher the first time, it attempts to acquire an IP address via DHCP.<br />
The recommended way for finding out which IP address has been assigned to Flasher is, to use the J-Link Configurator.<br />
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.<br />
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''.<br />
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,<br />
please refer to ''UM08001, J-Link / J-Trace User Guide'', chapter ''Setup'', section ''Setting up the IP interface''.<br />
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]].<br />
<br />
=== Operating modes ===<br />
<br />
All Flashers except the Flasher ATE are able to boot in 3 different modes:<br />
<br />
* PC-based mode<br />
* Stand-alone mode<br />
* File access mode<br />
<br />
{{Note|1=The Flasher ATE only supports the stand-alone mode.}}<br />
<br />
'''Definition PC-based mode'''<br><br />
Flasher is connected to a PC via USB/Ethernet and controlled by a PC application (J-Flash).<br />
If there is an RS232 connection to a PC, does not have any influence on if PC-based mode is entered or not.<br />
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, ...)<br />
<br />
'''Definition Stand-alone mode'''<br><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.<br />
<br />
'''Definition file access mode'''<br><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.<br />
In this mode, Flasher enumerates as a mass storage device (like an USB Stick) at the host PC.<br />
In this mode, configuration + data files can be manually placed on the Flasher and the Flasher logfile can be read out.<br />
If you are using a self-powered Flasher such as the Flasher Portable Plus, the Flasher must be turned off before connecting it.<br />
<br />
==== PC-based mode ====<br />
If you want to use Flasher for the first time you need to install the J-Link software and documentation package.<br />
After installation, connect Flasher to the host PC via USB or Ethernet.<br />
For more information about how to install the J-Link software and documentation package please refer to [[J-Link Software and Documentation Pack]].<br />
<br />
===== Connecting the target system =====<br />
<br />
'''Power-on sequence'''<br><br />
In general, Flasher should be powered on before connecting it with the target device.<br />
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.<br />
Power-on the device after you connected Flasher to it. Flasher will boot in "PC-based mode".<br />
<br />
'''Verifying target device connection with J-Link.exe'''<br><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.<br />
Then start the J-Link command line tool <tt>JLink.exe</tt>,<br />
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.<br />
The screenshot below shows the output of <tt>JLink.exe</tt>.<br />
<br />
[[File:flasher_jlinkmode.gif]]<br />
<br />
===== LED status indicators =====<br />
<br />
In PC-based mode, there are also certain LED status codes defined:<br />
<br />
{| class="seggertable"<br />
|-<br />
! # !! Status of LED !! Meaning<br />
|-<br />
| 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.<br />
|-<br />
| 0 || GREEN<br>constant || Flasher enumeration process is complete and it is ready to be controlled by a PC application.<br />
|-<br />
|}<br />
<br />
==== Stand-alone mode ====<br />
<br />
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]].<br />
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).<br />
In the "stand-alone mode" Flasher can be used as a stand-alone flash programmer.<br><br />
<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]].}}<br />
<br />
===== LED status indicators =====<br />
Progress and result of an operation is indicated by Flasher's LEDs. The behavior is different for J-Link and stand-alone mode.<br />
For a definition of the different modes, please refer to [[#Operating modes | Operating modes]].<br />
The following table describes the behavior of the LEDs in stand-alone mode.<br />
<br />
{| class="seggertable"<br />
|-<br />
! # !! Status of LED !! Meaning<br />
|-<br />
| 0 || GREEN<br>constant || Flasher waits for a start trigger to perform an operation in stand-alone mode.<br />
|-<br />
| 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><br />
|-<br />
| 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.<br />
|-<br />
|}<br />
Older Flasher models have a different behavior.<br />
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:<br />
<br />
* 1621xxxxx (Flasher ARM V2)<br />
* 1630xxxxx (Flasher ARM V3)<br />
* 4210xxxxx (Flasher PPC V1)<br />
* 4110xxxxx (Flasher RX V1)<br />
<br />
{| class="seggertable"<br />
|-<br />
! # !! Status of LED !! Meaning<br />
|-<br />
| 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.<br />
|-<br />
| 1 || GREEN<br>constant || Connect to target and perform init sequence.<br />
|-<br />
| 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><br />
|-<br />
| 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.<br />
|-<br />
|}<br />
<br />
==== File access mode ====<br />
<br />
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".<br />
If you are using a self-powered Flasher such as the Flasher Portable Plus, the Flasher must be turned off before connecting it.<br />
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.<br />
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>.<br />
<br />
[[File:flasher_mode_msd.gif]]<br />
<br />
<tt>FLASHER.CFG</tt> contains the configuration settings for programming the target device and <tt>FLASHER.DAT</tt> contains the data to be programmed.<br />
<tt>FLASHER.LOG</tt> contains all logging information about the commands, performed in stand-alone mode.<br />
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><br />
<br />
Currently, J-Flash does not support to configure Flasher for automated serial number programming.<br><br />
<br />
If you want to configure multiple Flasher for the same target you do not have to use J-Flash all the time.<br />
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".<br />
<br />
=== Setting up Flasher for stand-alone mode ===<br />
{{Note| All Options how to set up the Flasher for stand-alone mode you can find here: [[Flasher/Download project to Flasher|Download project to the Flasher]]}}<br />
<br />
In order to set up Flasher for the stand-alone mode it needs to be configured once using the J-Flash software.<br />
For more information about J-Flash, please refer to the ''J-Flash User Guide''.<br><br />
<br />
After starting J-Flash, open the appropriate J-Flash project for the target Flasher shall be configured for, by selecting '''File''' -> '''Open Project'''.<br />
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><br />
<br />
After the appropriate project has been opened / created, the data file which shall be programmed needs to be loaded, by selecting '''File''' -> '''Open'''.<br />
After this J-Flash should look like in the screenshot below.<br />
<br />
[[File:jflash_projectfile_datafile.gif]]<br />
<br />
Before downloading the configuration (project) and program data (data file) to Flasher, the connection type (USB/IP) needs to be selected in the project.<br />
These settings are also saved on a per-project basis, so this also only needs to be setup once per J-Flash project.<br />
The connection dialog is opened by clicking '''Options''' -> '''Project settings''' -> '''General'''.<br />
<br />
[[File:jflash_connection_dialog.gif]]<br />
<br />
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.<br />
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.<br />
The user then can simply select the Flash he wants to download the configuration to.<br />
<br />
[[File:EmuSelectionDialog.gif]]<br />
<br />
In order to download the configuration and program data to the Flasher, simply select '''File''' -> '''Download config & data file to Flasher'''.<br />
<br />
[[File:jflash_download_to_emul.gif]]<br />
<br />
The J-Flash log window indicates that the download to the emulator was successful.<br />
<br />
[[File:jflash_download_to_emu_succ.gif]]<br />
<br />
From now on, Flasher can be used in stand-alone mode (without host PC interaction) for stand-alone programming.<br />
<br />
==== Preparing for stand-alone operation manually ====<br />
<br />
As an alternative, J-Flash can also be used to save config and data file to a hard drive.<br><br />
<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,<br />
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.<br />
<br />
'''Creating config and data files'''<br><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><br />
<br />
For some devices, additional files (*.PEX) are needed.<br />
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.<br />
<br />
'''About *.PEX files'''<br><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,<br />
the following needs to be taken care of:<br><br />
<br />
For some devices, special connect, reset etc. sequences are necessary which are stored in so-called *.PEX files on the Flasher.<br><br />
<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><br />
<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><br />
The *.PEX files need to be placed in a subdirectory with the same name as the corresponding *.cfg file.<br />
J-Flash creates a directory with the correct name automatically when a config file is created.<br><br />
<br />
Example:<br><br />
<br />
MyConf0 is a project for a device that requires a *.PEX file for connect.<br><br />
MyConf1 is a project for a device that requires no *.PEX file at all.<br />
<br />
[[File:PEX_File_Flasher.png]]<br />
<br />
=== Universal Flash Loader mode ===<br />
<br />
As an alternative to the stand-alone mode, configured via J-Flash, there is the Universal Flash Loader mode.<br />
While the normal stand-alone mode relies on using the debug interface of the device, the Universal Flash Loader<br />
mode uses device or vendor specific programming interfaces and protocols and therefore it is independent of the<br />
CPU core.<br><br />
<br />
The Universal Flash Loader is available for the following Flasher models:<br />
* Flasher PRO<br />
* Flasher Compact<br />
* Flasher Portable PLUS<br />
<br />
For some of the supported devices, SEGGER offers specific adapters.<br />
<br />
==== Preparing manually ====<br />
<br />
The Universal Flash Loader uses an configuration file (*.UNI), a device specific flash programming algorithm (*.PEX) and a data file (*.DAT).<br />
<br />
===== Configuration =====<br />
<br />
The configuration file basically is split into three parts.<br />
The first part, the section [DEVICE], controls the generic behavior of the Universal Flash Loader.<br />
It specifies which protocol driver and data file to use. It allows enabling and configuring target power<br />
and it defines which actions to perform.<br />
The second part consists of one or more [BANKx] sections, which contain information about the memories.<br />
The third part, the section [CONFIG], includes configuration settings for the protocol driver.<br><br />
<br />
An .UNI file might look as follows:<br><br />
<br />
<source lang="c"><br />
[OPTIONS]<br />
TargetPower = "0"<br />
ChipErase = "0"<br />
<br />
[TASKS]<br />
CheckBlank = "1"<br />
Erase = "1"<br />
Program = "1"<br />
Verify = "1"<br />
Secure = "1"<br />
<br />
[DEVICE]<br />
Algo = "RL78.PEX"<br />
Data = "ALL_6k.dat"<br />
<br />
[BANK0]<br />
; Code Flash<br />
Base = "0x00000000"<br />
Size = "0x00004000"<br />
Sect = "0x00000400"<br />
<br />
[BANK1]<br />
; Data Flash<br />
Base = "0x000F1000"<br />
Size = "0x00000800"<br />
Sect = "0x00000400"<br />
<br />
[CONFIG]<br />
BaudRate = "1000000"<br />
ClearConfigOnConnect = "0x00"<br />
Security = "0xFF"<br />
ShieldStart = "0x0000"<br />
ShieldEnd = "0x000F"<br />
</source><br />
<br />
'''[OPTIONS]'''<br><br />
'''TargetPower'''<br><br />
If set to a value >0, power is applied to the target.<br />
The value defines the delay (in ms) after enabling the target power supply and before starting to communicate with the target.<br />
<br />
'''ChipErase'''<br><br />
If set to 1, the chip erase function is called for erasing the chip.<br><br />
{{Note|1=Do not enable this setting if the flash programming algorithm does not support chip erase.}}<br />
<br />
'''[TASKS]'''<br><br />
'''CheckBlank'''<br><br />
Defines if a blank check should be performed before erasing a sector.<br />
<br />
'''Erase'''<br><br />
Defines if the sector should be erased before programming.<br />
<br />
'''Program'''<br><br />
Defines if the sector should be programmed.<br />
<br />
'''Verify'''<br><br />
Defines if the sector should be verified after programming.<br />
<br />
'''Secure'''<br><br />
Defines if the device should be secured or protected against read-out after verifying.<br />
<br />
'''[DEVICE]'''<br><br />
'''Algo'''<br><br />
File name of the flash programming algorithm. This file is provided by SEGGER and will typically support a series of devices.<br />
<br />
'''Data'''<br><br />
File name of the data file to program. The Flasher only supports the Flasher .dat file format.<br />
Flasher .dat files can be generated by J-Flash or Universal Flash Loader and offer high performance together with high flexibility.<br />
<br />
'''[BANKx]'''<br><br />
x blocks with configuration data for the flash banks. All three parameters (Base, Size and Sect) are mandatory.<br />
<br />
'''Base'''<br><br />
Base address of the flash bank.<br />
<br />
'''Size'''<br><br />
Total size of the flash bank.<br />
<br />
'''Sect'''<br><br />
Sector size of the flash bank.<br />
<br />
'''[CONFIG]'''<br><br />
This section includes specific configuration data for the flash programming algorithm.<br><br />
There are no general parameters.<br />
<br />
{{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. }}<br />
<br />
==== Preparing using the PC utility ====<br />
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.<br />
<br />
[[File:Universal Flash Loader.png]]<br />
<br />
The Universal Flash Loader Configurator comes with a large list of devices and flash programming algorithms. If you are going to<br />
use a device from one of the supported families which currently is not available in the utility, feel free to contact the support.<br />
<br />
=== Multiple File Support ===<br />
<br />
It is also possible to have multiple data files and config files on Flasher, to make Flasher more easy to use in production environment.<br />
To choose the correct configuration file and data file pair, a <tt>FLASHER.INI</tt> file is used.<br />
This init file contains a <tt>[FILES]</tt> section which describes which configuration file and which data file should be used for programming.<br />
A sample content of a FLASHER.INI file is shown below:<br><br />
<br />
<source><br />
[FILES]<br />
DataFile = "Flasher1.dat"<br />
ConfigFile = "Flasher1.cfg"<br />
</source><br />
<br />
Using this method all configuration files and data files which are used in the production only have to be downloaded once.<br />
From there on a configuration file / data file pair can be switched by simply replacing the <tt>FLASHER.INI</tt> by a new one,<br />
which contains the new descriptions for the configuration file and data file. The <tt>FLASHER.INI</tt> can be replaced in two ways:<br />
<ol><br />
<li>Boot Flasher in file access mode in order to replace the <tt>FLASHER.INI</tt></li><br />
<li><br />
If Flasher is already integrated into the production line, runs in stand-alone mode and can not be booted in other mode:<br />
Use the file I/O commands provided by the ASCII interface of Flasher, to replace the <tt>FLASHER.INI</tt>.<br />
For more information about the file I/O commands, please refer to [[#File I/O commands | File I/O commands]].<br />
</li><br />
</ol><br />
{{Note|1=Flasher with hardware version 4 and lower only supports 8.3 filenames only (8 characters filename, 3 characters file extension). Using longer filenames may result in incorrect operation.}}<br />
<br />
==== Flasher Portable specifics ====<br />
<br />
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><br />
<br />
Which config / data file pair is used for which image selection position is determined by the contents of the FLASHER.INI.<br />
For this, the FLASHER.INI contents in the <tt>[FILES]</tt> section have been extended.<br />
The sample below shows how to enable the user to select between four different images on the Flasher portable via the select / arrow button:<br />
<br />
<source><br />
[FILES]<br />
DataFile = "First.dat"<br />
ConfigFile = "First.cfg"<br />
DataFile1 = "Second.dat"<br />
ConfigFile1 = "Second.cfg"<br />
DataFile2 = "Third.dat"<br />
ConfigFile2 = "Third.cfg"<br />
DataFile3 = "Fourth.dat"<br />
ConfigFile3 = "Fourth.cfg"<br />
</source><br />
<br />
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.<br />
From there on, switching between the files can be done by simply using the selection button of Flasher Portable.<br />
<br />
===== Example =====<br />
<br />
1 Target, 2 Datafiles (e.g. boot loader und application) --> same configuration file (*.CFG) but different data files (*.DAT) should be used.<br><br />
<br />
* Open pre-configured J-Flash project<br />
* File -> Save Flasher config file ... (DEFAULT.CFG)<br />
* Open data file 1 (boot loader)<br />
* File -> Save Flasher data file ... (BOOT.DAT)<br />
* Open data file 2 (application)<br />
* File -> Save Flasher data file ... (APP.DAT)<br />
* Create the a FLASHER.INI file (content see below)<br />
* Connect the Flasher in file access mode to the PC<br />
* Copy DEFAULT.CFG, BOOT.DAT, APP.DAT and FLASHER.INI on the Flasher<br />
<br />
FLASHER.INI content:<br><br />
<br />
<source><br />
[FILES]<br />
DataFile = "BOOT.DAT"<br />
ConfigFile = "DEFAULT.CFG"<br />
DataFile1 = "APP.DAT"<br />
ConfigFile1 = "DEFAULT.CFG"<br />
</source><br />
<br />
==== Flasher Portable PLUS specifics ====<br />
<br />
Flasher Portable PLUS allows to choose between 99 configuration and data file pairs during runtime by using the select button on the front of Flasher Portable PLUS.<br><br />
<br />
Which config / data file pair is used for which image selection position is determined by the contents of the FLASHER.INI.<br />
For this, the FLASHER.INI may contain several <tt>[BATCH]</tt> sections.<br />
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:<br />
<br />
<source><br />
[BATCH]<br />
DataFile = "First.dat"<br />
ConfigFile = "First.cfg"<br />
[BATCH1]<br />
DataFile = "Second.dat"<br />
ConfigFile = "Second.cfg"<br />
[BATCH2]<br />
DataFile = "Third.dat"<br />
ConfigFile = "Third.cfg"<br />
[BATCH7]<br />
DataFile = "Proj_8.dat"<br />
ConfigFile = "Proj_8.cfg"<br />
[BATCH15]<br />
DataFile = "Proj_16.dat"<br />
ConfigFile = "Proj_16.cfg"<br />
</source><br />
<br />
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.<br />
From there on, switching between the files can be done by simply using the selection button of Flasher Portable PLUS.<br />
<br />
Please also consider the chapter [[#Batch Programming in stand-alone mode | Batch Programming in stand-alone mode]].<br />
<br />
{{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.}}<br />
{{Note|1=You may have gaps in the list. The missing entries will be skipped when selecting the next configuration.}}<br />
{{Note|1=The <tt>[Files]</tt> section is supported by the Flasher Portable PLUS, too. But the number of configuration is limited to four.}}<br />
<br />
===== Example =====<br />
<br />
1 Target, 2 Datafiles (e.g. boot loader und application) --> same configuration file (*.CFG) but different data files (*.DAT) should be used.<br><br />
<br />
* Open pre-configured J-Flash project<br />
* File -> Save Flasher config file ... (DEFAULT.CFG)<br />
* Open data file 1 (boot loader)<br />
* File -> Save Flasher data file ... (BOOT.DAT)<br />
* Open data file 2 (application)<br />
* File -> Save Flasher data file ... (APP.DAT)<br />
* Create the a FLASHER.INI file (content see below)<br />
* Connect the Flasher in file access mode to the PC<br />
* Copy DEFAULT.CFG, BOOT.DAT, APP.DAT and FLASHER.INI on the Flasher<br />
<br />
FLASHER.INI content:<br><br />
<br />
<source><br />
[BATCH]<br />
DataFile = "BOOT.DAT"<br />
ConfigFile = "DEFAULT.CFG"<br />
DisplayName = "Bootloader"<br />
[BATCH1]<br />
DataFile = "APP.DAT"<br />
ConfigFile = "DEFAULT.CFG"<br />
DisplayName = "Application"<br />
[BATCH2]<br />
DataFile = "BOOT.DAT"<br />
ConfigFile = "DEFAULT.CFG"<br />
DataFile1 = "APP.DAT"<br />
ConfigFile1 = "DEFAULT.CFG"<br />
DisplayName = "BL and App"<br />
</source><br />
<br />
=== Custom labels ===<br />
<br />
Flasher supports to assign custom labels to configurations ("Project Display Text" in U-Flash). This allows to specify easy to remember names for configurations that are stored on the Flasher.<br />
<br />
==== Hardware and software requirements ====<br />
This feature is supported by the following models:<br />
* Flasher Portable PLUS<br />
<br />
This feature is supported since V6.30e of the software package and firmware<br />
<br />
==== Assigning labels ====<br />
The configuration and data file pairs are specified in the <tt>FLASHER.INI</tt> file:<br />
<source><br />
[FILES]<br />
DataFile = "IMAGE0.dat"<br />
ConfigFile = "IMAGE0.cfg"<br />
DataFile1 = "IMAGE1.dat"<br />
ConfigFile1 = "IMAGE1.cfg"<br />
</source><br />
<br />
By default, Flasher will show the names of the configuration and data file:<br />
[[File:FW1_smartwatch_nolabel.png]]<br />
[[File:FW2_smart_meter_nolabel.png]]<br />
<br />
By adding <tt>DisplayName</tt>, <tt>DisplayName1</tt>, ... keys to the <tt>FLASHER.INI</tt>, a custom label can be shown instead:<br />
<source><br />
[FILES]<br />
DisplayName = "FW smartwatch"<br />
DataFile = "IMAGE0.dat"<br />
ConfigFile = "IMAGE0.cfg"<br />
DisplayName1 = "FW smart meter"<br />
DataFile1 = "IMAGE1.dat"<br />
ConfigFile1 = "IMAGE1.cfg"<br />
</source><br />
<br />
The images will now be shown as follows:<br />
[[File:FW1_smartwatch_label.png]]<br />
[[File:FW2_smart_meter_label.png]]<br />
<br />
==== Considerations ====<br />
* 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.<br />
<br />
=== Programming multiple targets ===<br />
<br />
It is possible to program multiple targets which are located in a JTAG chain.<br />
The targets will be programmed each with a configuration and a data file.<br><br />
The configuration for the desired target must be selected before it can be programmed,<br />
this can be done with the <tt>#SELECT</tt> command.<br />
For more information how to use the <tt>#SELECT</tt> command please refer to the [[#ASCII_command_interface|ASCII command interface]].<br />
<br />
'''Example'''<br><br />
Three devices should be programmed.<br><br />
<br />
JTAG Chain: ''TDI'' --> ''Device2'' --> ''Device1'' --> ''Device0'' --> ''TDO''<br><br />
<br />
Three configurations would be stored on the flasher:<br><br />
<br />
Config 0: Configured to program Device0 (DEVICE0.CFG, DEVICE0.DAT)<br><br />
Config 1: Configured to program Device1 (DEVICE1.CFG, DEVICE1.DAT)<br><br />
Config 2: Configured to program Device2 (DEVICE2.CFG, DEVICE2.DAT)<br><br />
<br />
Selection and programming of the target will be done via the ASCII interface:<br><br />
<br />
<source><br />
#SELECT DEVICE0<br />
#AUTO<br />
#SELECT DEVICE1<br />
#AUTO<br />
#SELECT DEVICE2<br />
#AUTO<br />
</source><br />
<br />
==== Programming multiple targets with J-Flash ====<br />
<br />
Programming multiple targets can also be done via J-Flash using the command line interface.<br />
For this each target must be handled with its own project file.<br />
<br />
'''Example'''<br><br />
<br />
<source><br />
JFlash.exe -openproj"Device0.jflash" -open"Device0.hex" -auto -exit<br />
JFlash.exe -openproj"Device1.jflash" -open"Device1.hex" -auto -exit<br />
JFlash.exe -openproj"Device2.jflash" -open"Device2.hex" -auto -exit<br />
</source><br />
<br />
=== Batch Programming in stand-alone mode ===<br />
<br />
Batch programming allows to execute different stand-alone mode jobs in batch to be executed in immediate succession, without any user interaction in between.<br />
This can be used for example to program multiple targets in a JTAG-Chain or multiple data files to a target.<br><br />
A batch may contains an unlimited number of configurations which consist of a data file (*.DAT) and config file (*.CFG).<br />
For further information regarding config and data files, please refer to [[#Preparing for stand-alone operation manually | Preparing for stand-alone operation manually]].<br><br />
In order to specify the batch jobs, a FLASHER.INI file is used.<br />
This init file contains a [BATCH] section which describes which configuration pairs (*.DAT and *.CFG file) should be used for each batch job.<br />
A sample content of a FLASHER.INI file is shown below:<br><br />
<br />
<source><br />
[BATCH]<br />
DataFile = "Flasher0.dat"<br />
ConfigFile = "Flasher0.cfg"<br />
DataFile1 = "Flasher1.dat"<br />
ConfigFile1 = "Flasher1.cfg"<br />
</source><br />
<br />
[[File:Batch_Jobs.bmp]]<br />
<br />
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.<br />
<br />
<br />
[[File:Batch_Programming.bmp]]<br />
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<br />
currently executed action.<br />
<br />
<br />
[[File:Batch_Result.bmp]]<br />
The result of the programming will be shown on the screen after finishing all jobs.<br />
<br />
<br />
Creating / Replacing of the FLASHER.INI file can done in two ways:<br><br />
<ol><br />
<li>Boot Flasher in file access mode in order to replace the FLASHER.INI</li><br />
<li><br />
If Flasher is already integrated into the production line, runs in stand-alone mode and can not be booted in other mode:<br />
Use the file I/O commands provided by the ASCII interface of Flasher, to replace the FLASHER.INI .<br />
For more information about the file I/O commands, please refer to [[#File I/O commands | File I/O commands]].<br />
In case of an error occurred during execution, the Flasher terminates the entire batch processing.<br />
</li><br />
</ol><br />
{{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.}}<br />
{{Note|1=The Flasher with hardware version 4 and lower supports 8.3 filenames only (8 characters filename, 3 characters file extension). Using longer filenames may result in incorrect operation.}}<br />
<br />
==== Flasher Portable specifics ====<br />
<br />
Flasher Portable allows to choose between four different batches during runtime by using the select/arrow button on the front of Flasher Portable.<br />
Which batch configuration is used for which image selection position is specified in the FLASHER.INI.<br />
For this, the FLASHER.INI contents in the [BATCH] section have been extended.<br />
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><br />
<br />
<source><br />
[BATCH]<br />
DataFile = "Flasher0.dat"<br />
ConfigFile = "Flasher0.cfg"<br />
DataFile1 = "Flasher1.dat"<br />
ConfigFile1 = "Flasher1.cfg"<br />
DataFile2 = "Flasher2.dat"<br />
ConfigFile2 = "Flasher2.cfg"<br />
[BATCH1]<br />
DataFile = "TEST.dat"<br />
ConfigFile = "Test.cfg"<br />
[BATCH2]<br />
DataFile = "VALIDATE.dat"<br />
ConfigFile = "Flasher0.cfg"<br />
</source><br />
<br />
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.<br />
From there on, switching between the batches can be done by simply using the selection button of Flasher Portable.<br />
<br />
<br />
<br />
==== Examples ====<br />
<br />
'''Example 1:''' Programming two Data files to the same target<br><br />
<br />
* Open your J-Flash project.<br />
* Use File -> Save Flasher config file... to save the .CFG file (in this example: STM32F4.CFG).<br />
* Select the first binary and use File -> Save Flasher Data file... to save the first .DAT file (in this example: DATA0.DAT).<br />
* Select the second binary and use File -> Save Flasher Data file... to save the second data file .DAT file (in this example: DATA1.DAT).<br />
* Copy the Files to the Flasher e.g. by using file access mode.<br />
* Create a FLASHER.INI file in the root directory of the Flasher.<br />
* Exemplary content of FLASHER.INI:<br><br />
<source><br />
[BATCH]<br />
DataFile = "DATA0.dat"<br />
ConfigFile = "emPower.cfg"<br />
DataFile1 = "DATA1.dat"<br />
ConfigFile1 = "emPower.cfg"<br />
</source><br />
<br />
<br />
'''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><br />
Example scenario: 2 Devices in a JTAG chain, a STM32F1 and a STM32F4. <br><br />
<br />
* Follow the same as described before and additionally:<br />
* Create one project file per target (and create a .CFG file of each one).<br />
* Make sure each project file is configured correctly, especially the JTAG-Chain position (See UM8003 "J-Flash" for more detailed info).<br />
* Exemplary content of FLASHER.INI:<br><br />
<source><br />
[BATCH]<br />
DataFile = "F1DATA.dat"<br />
ConfigFile = "STM32F1.cfg"<br />
DataFile1 = "F4DATA0.dat"<br />
ConfigFile1 = "STM32F4.cfg"<br />
DataFile2 = "F4DATA1.dat"<br />
ConfigFile2 = "STM32F4.cfg"<br />
</source><br />
<br />
'''Example 3:''' Using multiple Batch sections with Flasher Portable.<br><br />
Example scenario: 2 Devices in a JTAG chain, a STM32F1 and a STM32F4.<br><br />
Selection 1 will program the STM32F1 target.<br><br />
Selection 2 will program the STM32F4 target using "F4DATA0.dat".<br><br />
Selection 3 will program the STM32F4 target using "F4DATA1.dat".<br><br />
Selection 4 will execute 1, 2 and 3 in sequence.<br><br />
* Exemplary content of FLASHER.INI:<br><br />
<source><br />
[BATCH]<br />
DataFile = "F1DATA.dat"<br />
ConfigFile = "STM32F1.cfg"<br />
[BATCH1]<br />
DataFile = "F4DATA0.dat"<br />
ConfigFile = "STM32F4.cfg"<br />
[BATCH2]<br />
DataFile = "F4DATA1.dat"<br />
ConfigFile = "STM32F4.cfg"<br />
[BATCH3]<br />
DataFile = "F1DATA.dat"<br />
ConfigFile = "STM32F1.cfg"<br />
DataFile1 = "F4DATA0.dat"<br />
ConfigFile1 = "STM32F4.cfg"<br />
DataFile2 = "F4DATA1.dat"<br />
ConfigFile2 = "STM32F4.cfg"<br />
</source><br />
<br />
=== Serial number programming ===<br />
<br />
Flasher supports programming of serial numbers. In order to use the serial number programming feature,<br />
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><br />
<br />
In general, Flasher supports two ways of programming a serial number into the target:<br />
<br />
#<br />
#* Programming continuous serial numbers.<br />
#* The serial number is 1-4 bytes in size.<br />
#* The start serial number, increment, serial number size, and address are configured in the J-Flash project.<br />
#<br />
#* Programming custom serial numbers from a serial number list file.<br />
#* The start line within the serial number list file to get the next serial number bytes, line increment, serial number size, and address is configured in the J-Flash project.<br />
#* The serial number list file needs to be specified and created by the user.<br />
<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.}}<br />
<br />
==== Serial number settings ====<br />
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.<br />
This is done by enabling the '''Program serial number''' option as shown in the screenshot and table below:<br />
<br />
[[File:UM08039_SN_Sample_JFlashSettings.png]]<br />
<br />
{| class="seggertable"<br />
|-<br />
!| Setting || Meaning<br />
|-<br />
| <tt>Address</tt> || The address the serial number should be programmed at.<br />
|-<br />
| <tt>Length</tt> ||<br />
The length of the serial number (in bytes) that 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 8 is selected as length, the serial number and its complement are programmed at the given address.<br />
* In case a serial number list file is given, the 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 '''Length''', the remaining bytes are filled with 0s. No complements etc. are added to the serial number.<br />
|-<br />
| <tt>Next SN</tt> ||<br />
* In case no serial number list file is given, '''Next SN''' is the next serial number which should be programmed. The serial number is always stored in flash memory in little-endian format.<br />
* In case a serial number list file is given, '''Next SN''' describes the line of the serial number list file where to read the next serial number bytes from. The Flasher starts counting at line 0, so in order to start serial number programming with the first line of the <tt>SNList.txt</tt>, '''Next SN''' needs to be set to 0.<br />
|-<br />
| <tt>Increment</tt> || Specifies by how much '''Next SN''' is incremented.<br />
|}<br />
<br />
=== Serial number file ===<br />
When selecting '''File -> Download serial number file to Flasher''', J-Flash will create a serial number file named as <tt><JFlashProjectName>_Serial.txt</tt>.<br />
This file is downloaded as <tt>Serial.txt</tt> on the Flasher.<br />
The file is generated based on the serial number settings in the J-Flash project and will contain the value defined by the '''Next SN''' option.<br />
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.<br />
<br />
==== Serial number list file ====<br />
<br />
In order to program custom serial numbers which can not be covered by the standard serial number scheme provided by J-Flash<br />
(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.<br />
<br />
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.<br />
This file is downloaded as <tt>SNList.txt</tt> on the 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<br />
* Each byte of the serial number is described by two hexadecimal digits.<br />
<br />
'''Example'''<br><br />
A 8-byte serial number should be programmed at address 0x08000000.<br><br />
<br />
It should be programmed as follows in the memory:<br><br />
<br />
<tt>0x08000000: 0x01 0x02 0x03 0x04 0x55 0x66 0x77 0x88</tt><br><br />
<br />
The serial number list file should look as follows:<br><br />
<br />
<tt>0102030455667788</tt><br />
<br />
[[File:SN_SNList.gif]]<br />
<br />
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><br />
<br />
Which line Flasher will read at the next programming cycle, is configured via the <tt>Next SN</tt> option in J-Flash.<br />
For more information, please refer to [[#Serial number settings | Serial number settings]].<br />
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><br />
<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.}}<br />
{{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.}}<br />
<br />
==== Programming process ====<br />
<br />
Flasher will increment the serial number in SERIAL.TXT by the value defined in <tt>Increment</tt>, after each successful programming cycle.<br><br />
<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><br />
<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.<br />
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.}}<br />
<br />
==== Downloading serial number files to Flasher ====<br />
<br />
Downloading the serial number files needs to be done explicitly by selecting '''File-> Download serial number file to Flasher'''.<br />
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.<br />
<br />
==== Sample setup ====<br />
<br />
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.<br />
<br />
'''Defining serial number address, length and start value'''<br><br />
In the J-Flash project the following needs to be defined:<br><br />
* <tt>Address</tt> is 0x08001000<br />
* <tt>Next SN</tt> is 1234567<br />
* <tt>Increment</tt> is 1<br />
* <tt>Len</tt> is 4 (bytes)<br />
<br />
[[File:SN_Sample_JFlashSettings.gif]]<br />
<br />
'''Downloading configuration, data and serial number to Flasher.'''<br><br />
After setting up the rest of the configuration (Target interface etc.) and selecting an appropriate data file, the configuration,<br />
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><br />
<br />
[[File:SN_Sample_DownloadToFlasher.gif]]<br />
<br />
After downloading the serial number to Flasher, J-Flash also created the <tt><JFlashProjectName>_Serial.txt</tt>.<br />
<br />
[[File:SN_Sample_SerialFileCreated.gif]]<br />
<br />
Now Flasher is prepared to program the 8-byte serial number.<br />
<br />
=== Patch file support ===<br />
<br />
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.<br />
Before starting programming process in stand-alone mode, Flasher will look for a file named <tt>Patches.txt</tt> being present on the Flasher.<br />
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><br />
<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.<br />
<br />
'''Syntax'''<br><br />
<!-- LG xxxxxxxxx '==' is shown as '=', so instead use '= ='--><br />
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><br />
<br />
<tt><NumPatches>,<Addr>,<NumBytes>:<nowiki><Data></nowiki>,<Addr>,<NumBytes>:<nowiki><Data></nowiki>,<Addr>,<NumBytes>:<nowiki><Data></nowiki>,<Addr>,<NumBytes>:<nowiki><Data></nowiki>\r\n</tt><br><br />
<br />
Find below a table which describes each parameter.<br><br />
{| class="seggertable"<br />
|-<br />
! Parameter !! Description<br />
|-<br />
| <tt><NumPatches></tt> || Describes the number of patches in this patch line. Max. value is 4.<br />
|-<br />
| <tt><Addr></tt> || Describes the address to be patched. Value is expected in hex.<br />
|-<br />
| <tt><NumBytes></tt> || Number of bytes for the current patch. Max. value is 20h (32 in decimal). Value is expected in hex.<br />
|-<br />
| <tt><nowiki><Data></nowiki></tt> || Describes the data to be patched. <nowiki><Data></nowiki> is always expected as 2 hexadecimal characters per byte.<br />
|-<br />
|}<br />
<br />
{{Note|1=All values are expected in hexadecimal format (hex).<br><br />
<nowiki><Data></nowiki> section is always preceded by ":", not ",".}}<br />
<br />
'''Example'''<br><br />
Below is an example patch.<br><br />
<br />
<source><br />
1,18,4:01020304\r\n<br />
</source><br />
<br />
Patching the following data:<br />
<br />
[[File:data_before.png]]<br />
<br />
with the example patch will result in the following data:<br />
<br />
[[File:data_afterwards.png]]<br />
<br />
Please note that as mentioned earlier patching undefined memory locations will be ignored.<br><br />
Applying the example patch to the following data:<br />
<br />
[[File:undefined_mem_before.png]]<br />
<br />
Causes no data to be patched, as can be seen in the following image:<br />
<br />
[[File:undefined_mem_no_token.png]]<br />
<br />
Therefore it is necessary to first write placeholder data to the memory locations which are supposed to be patched.<br><br />
An example for such a placeholder can be seen here:<br />
<br />
[[File:undefined_mem_token.png]]<br />
<br />
Please note that the actual data inside the placeholder does not matter to the Flasher,<br />
because it is overwritten during patching.<br><br />
Applying the example patch will now work as expected:<br />
<br />
[[File:undefined_mem_after.png]]<br />
<br />
'''Single patch via RS232'''<br><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><br />
<br />
Send the <tt>#AUTO PATCH <NumPatches>,<Addr>,<NumBytes>:<nowiki><Data></nowiki></tt><br><br />
<br />
command via Flasher ASCII interface. The parameters have the same function as described in the table above.<br />
<br />
==== Newline encoding ====<br />
<br />
In general, for all patch files, init files etc. Flasher supports both newline encodings:<br><br />
<br />
* Windows: \r\n<br />
* Unix/Mac: \n<br />
<br />
All parser functionality etc. are written to be independent from the host operating system.<br />
<br />
=== Limiting the number of programming cycles ===<br />
<br />
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.<br />
To make use of this feature, a file called <tt>Cntdown.txt</tt> needs to be placed on the Flasher.<br />
This file simply contains a decimal number (32-bit unsigned integer) that describes how many programming cycles can be performed with the current setup.<br />
<br />
[[File:CntdownTxtContent.jpg]]<br />
<br />
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><br />
<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>.}}<br />
<br />
==== Changed fail/error LED indicator behavior ====<br />
<br />
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><br />
<br />
* The red error/fail LED will lit for 1 second<br />
* After this, it will blink/toggle x times @ 5 Hz, indicating the number of programming cycles left. (blinking 5 times for 5 cycles left, ...)<br />
<br />
==== Required Flasher hardware version for Cntdown.txt support ====<br />
<br />
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><br />
<br />
* 1621xxxxx (Flasher ARM V2)<br />
* 1630xxxxx (Flasher ARM V3)<br />
* 4210xxxxx (Flasher PPC V1)<br />
* 4110xxxxx (Flasher RX V1)<br />
<br />
All other models / hardware versions support limiting of programming cycles.<br />
<br />
=== Authorized flashing ===<br />
<br />
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.<br />
without the possibility to read out the Flasher contents via file access mode, FILE I/O functionality (J-Link Commander) or RS232 commands.<br />
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.<br />
<br />
==== Creating / Adding the secure area ====<br />
<br />
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.<br />
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.<br />
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><br />
<br />
[[File:CreateSecArea.jpg]]<br />
<br />
The following secure area related commands are available in J-Link Commander:<br><br />
<br />
* securearea create<br />
* securearea remove<br />
<br />
{{Note|1=When creating or removing the <tt>secure area</tt>, all configuration and data files being stored on the Flasher, are lost.<br />
Please make sure that they are not needed anymore, before adding / removing the security area.}}<br />
<br />
==== Moving files to the secure area ====<br />
<br />
Before moving configuration + data to the <tt>secure area</tt>, proper functionality of the setup should be tested in stand-alone mode.<br />
Once the setup is working as expected, do the following, to move the configuration + data into the <tt>secure area</tt>:<br><br />
<br />
* Start Flasher in file access mode (For more info, please refer to: [[#file access mode | file access mode]])<br />
<br />
[[File:FilesBeforeSecure.png]]<br />
<br />
* Create a folder "<tt>_SECURE</tt>"<br />
* Move all files that shall be moved to the <tt>secure area</tt>, into this folder<br />
<br />
[[File:FilesAfterSecure.png]]<br />
<br />
* 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.<br />
* Now Flasher can be used in stand-alone mode, as normal, but the files cannot be read back by the user / operator.<br />
<br />
==== Considerations to be taken when using the secure area ====<br />
<br />
When using the <tt>secure area</tt>, some things need to be considered:<br><br />
<br />
* All features like multiple file support, patch file support etc. can also be used when operating from the <tt>secure area</tt>.<br />
* 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>.<br />
* 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>.<br />
* 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.<br />
<br />
==== Required Flasher hardware version ====<br />
<br />
Older Flasher models do not support authorized flashing. The Flashers with the following serial number ranges do not support authorized flashing:<br><br />
<br />
* 1621xxxxx (Flasher ARM V2)<br />
* 1630xxxxx (Flasher ARM V3)<br />
* 4210xxxxx (Flasher PPC V1)<br />
* 4110xxxxx (Flasher RX V1)<br />
<br />
All other models / hardware versions support authorized flashing.<br />
<br />
=== Target interfaces ===<br />
<br />
The table below shows the supported target interfaces of the different Flasher models.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! Supported interfaces<br />
|-<br />
| Flasher PRO || JTAG, SWD<br />
|-<br />
| Flasher Compact || JTAG, SWD<br />
|-<br />
| Flasher ARM || JTAG, SWD<br />
|-<br />
| Flasher RX || JTAG<br />
|-<br />
| Flasher PPC || JTAG<br />
|-<br />
|}<br />
<br />
For more information about the target interfaces itself, please refer to:<br><br />
<br />
* ''UM08001, chapter "Working with J-Link and J-Trace", section "JTAG interface"''<br />
* ''UM08001, chapter "Working with J-Link and J-Trace", section "SWD interface"''<br />
<br />
=== Supported architectures ===<br />
<br />
Flasher supports programming of the internal flash of a large number of different microcontrollers.<br />
The number of supported devices is steadily growing. You can always find the latest list of supported devices on our website:<br><br />
<br />
''http://www.segger.com/supported-devices.html''<br />
<br />
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.<br />
Also the existence of the device may have confidential status, so it might not be mentioned as being supported in public releases yet.<br />
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.<br />
<br />
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).<br />
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.<br />
<br />
If a device is not supported, you can always contact us. We will be happy to provide you with an offer.<br />
<br />
==== External flashes ====<br />
<br />
In general our Flashers support programming of external flashes listed below:<br>(Can differ between Flasher models and hardware versions)<br />
<br />
* parallel NOR flash<br />
* SPI / QSPI flash<br>(see: ''[[SPI_support_by_Flasher_models]]'')<br />
* NAND flash<br />
* I<sup>2</sup>C EEPROM/Flash<br />
* FRAM<br />
<br />
If the parallel NOR flash device which is used is not CFI-compliant you have to select the flash device in J-Flash explicitly,<br />
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''.<br />
<br />
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.<br />
The J-Flash software comes with sample projects for ''Open Flashloader''.<br />
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''<br />
{{Note|1=Complete Information about ''Open Flashloaders'' can be found in our Wiki:<br>''[[Open_Flashloader]]''}}<br />
<br />
==== Cores ====<br />
<br />
===== Flasher ARM =====<br />
<br />
Flasher ARM supports and has been tested with the following cores, but should work with any ARM7/9, Cortex-M0/M1/M3/M4 core.<br />
If you experience problems with a particular core, do not hesitate to contact Segger.<br><br />
<br />
* ARM7TDMI (Rev 1)<br />
* ARM7TDMI (Rev 3)<br />
* ARM7TDMI-S (Rev 4)<br />
* ARM920T<br />
* ARM922T<br />
* ARM926EJ-S<br />
* ARM946E-S<br />
* ARM966E-S<br />
* Cortex-M0<br />
* Cortex-M1<br />
* Cortex-M3<br />
* Cortex-M4<br />
<br />
===== Flasher RX =====<br />
<br />
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><br />
<br />
* RX610<br />
* RX621<br />
* RX62N<br />
* RX62T<br />
<br />
===== Flasher PPC =====<br />
<br />
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.<br />
<br />
* e200z0<br />
<br />
===== Flasher PRO/Compact/Portable PLUS =====<br />
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/''.<br />
<br />
=== Programming multiple targets in parallel ===<br />
<br />
To program multiple targets in parallel there are the following possibilities:<br />
* Using a Flasher gang, or<br />
* Using multiple Flashers, each connecting to one CPU.<br />
<br />
Devices for gang programming are:<br />
* Flasher Hub-12 in conjunction with up to 12 Flasher (Compact). Please refer to [[UM08043_Flasher_Hub-12|Flasher Hub-12 user manual (UM08043_Flasher_Hub-12)]].<br />
* Flasher ATE; suitable for programming up to 10 targets in parallel. Please refer to [https://www.segger.com/downloads/flasher/UM08035 Flasher ATE user manual (UM08035_FlasherATE.pdf)].<br />
When using multiple flashers, this can be done with the J-Flash production programming software.<br />
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''<br />
<br />
=== Logfiles and Quality Management ===<br />
<br />
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:<br />
<source lang="c"><br />
SN: 1 - Failed<br />
SN: 1 - Failed<br />
SN: 2 - O.K. (931 ms)<br />
SN: 3 - O.K. (931 ms)<br />
SN: 4 - O.K. (933 ms)<br />
SN: 5 - O.K. (932 ms)<br />
</source><br />
If applicable, the logfile contains more detailed error messages. For example:<br />
<source lang="c"><br />
ERROR: Programming failed @ address 0x00000000 (1)<br />
ERROR: Cannot connect to CPU. Target interface speed too high?<br />
</source><br />
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:<br />
<source lang="c"><br />
Verify error config word area @<br />
config word<br />
config word read back<br />
Verify error flash area @<br />
data from file<br />
data read back<br />
</source><br />
{{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.}}<br />
<br />
== TCP Services ==<br />
This chapter describes the integrated TCP services.<br />
<br />
=== FTP Server ===<br />
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><br />
[[File:FTPServer.png]]<br />
<br />
==== Access data ====<br />
Anonymous access to the FTP server is limited to read-only access to the file system.<br><br />
For write access, special login credentials have to be used:<br><br />
<tt>Login: admin</tt><br><br />
<tt>Password: 1234</tt><br><br />
<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.<br />
It is not meant as a security feature.}}<br />
<br />
=== Web server ===<br />
<br />
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.<br />
For the network, the IP address settings can be changed and a nick name can be assigned to the device.<br><br />
<br />
Additionally, the web interface provides information about the status of the integrated operating system, the IP stack and the target hardware.<br />
<br />
== Remote control ==<br />
This chapter describes how to control the Flasher in standalone mode.<br />
<br />
=== Overview ===<br />
There are 3 ways to control Flasher operation:<br><br />
{| class="seggertable"<br />
! Type of control !! Description<br />
|-<br />
| Button || Programming operation starts when pressing the PROG-button. The LEDs serve as visible indicators.<br />
|-<br />
| Handshake || 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.<br />
|-<br />
| Terminal || Terminal communication via TELNET, RS232 or VCOM with the [[#ASCII command interface]]<br />
|}<br />
<br />
<br />
{{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.}}<br />
<br />
=== Handshake control ===<br />
<br />
Some Flasher models are equipped with additional hardware control functions that are connected to the SUBD9 male connector, normally used as an RS232 interface to the PC.<br />
These Flasher models can therefore be controlled remotely by automated testers without the need for a connection to a PC.<br />
<br />
The handshake control is available for the following Flashers:<br />
* Flasher ARM<br />
* Flasher PRO<br />
* Flasher Compact (via Flasher Hub and Flasher Hub-12 only)<br />
<br />
The following diagrams show the internal remote control circuitry of Flasher:<br><br />
<br />
[[File:FlasherRemotecontrol.png]]<br />
{| class="seggertable"<br />
|-<br />
! Pin No. !! Function !! Description<br />
|-<br />
| 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.<br />
|-<br />
| 4 || BUSY || As soon as the "Auto" function is started, BUSY becomes active, which means that transistor is switched OFF.<br />
|-<br />
| 5 || GND || Common Signal ground.<br />
|-<br />
| 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.<br />
|-<br />
|}<br />
[[File:FlasherRemoteSignal.png]]<br />
<br />
=== ASCII command interface ===<br />
<br />
==== Introduction ====<br />
<br />
Once set up using J-Flash, the Flasher can be driven by any application or just a simple terminal using ASCII commands.<br><br />
<br />
Every known command is acknowledged by the Flasher and then executed. After command execution, Flasher sends an ASCII reply message.<br><br />
<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}}<br />
<br />
==== General command and reply message format ====<br />
<br />
* Any ASCII command has to start with the start delimiter ''#''.<br />
* Any ASCII command has to end with simple carriage return ('\r', ASCII code 13).<br />
* Commands can be sent upper or lower case<br />
<br />
==== General usage ====<br />
<br />
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.<br />
<br />
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).<br />
<br />
==== Settings for ASCII interface via RS232 ====<br />
<br />
Flasher is driven via a RS232 serial port with the following interface settings:<br><br />
<br />
* 9600 baud<br />
* 8 data bits<br />
* no parity<br />
* 1 stop bit<br />
<br />
The baud rate can be changed by using the <tt>#BAUDRATE</tt> command.<br />
<br />
==== Settings for ASCII interface via Telnet ====<br />
<br />
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><br />
<br />
[[File:telnet_connection.gif]]<br />
<br />
==== Settings for ASCII interface via VCOM ====<br />
<br />
The same settings can be used for VCOM as for [[#Settings for ASCII interface via RS232|RS232]].<br />
<br />
{{Note|The performance also depends on the terminal application used on the PC.}}<br />
<br />
==== Commands and replies ====<br />
<br />
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><br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| Commands to the Flasher<br />
|-<br />
| <tt>#BAUDRATE <Baudrate></tt><br />
|-<br />
| <tt>#AUTO</tt><br />
|-<br />
| <tt>#AUTO PATCH</tt><br />
|-<br />
| <tt>#AUTO NOINFO</tt><br />
|-<br />
| <tt>#CANCEL</tt><br />
|-<br />
| <tt>#ERASE</tt><br />
|-<br />
| <tt>#PROGRAM</tt><br />
|-<br />
| <tt>#RESULT</tt><br />
|-<br />
| <tt>#SELECT <Filename></tt><br />
|-<br />
| <tt>#START</tt><br />
|-<br />
| <tt>#STATUS</tt><br />
|-<br />
| <tt>#VERIFY</tt><br />
|-<br />
| <tt>#READ</tt><br />
|-<br />
| <tt>#QUIT</tt><br />
|-<br />
| <tt>#VERBOSE <Level></tt><br />
|-<br />
!colspan="100%"| File I/O commands<br />
|-<br />
| <tt>#FCLOSE</tt><br />
|-<br />
| <tt>#FCRC</tt><br />
|-<br />
| <tt>#FDELETE <Filename></tt><br />
|-<br />
| <tt>#FFORMAT</tt><br />
|-<br />
| <tt>#FOPEN <Filename></tt><br />
|-<br />
| <tt>#FREAD <Offset>,<NumBytes></tt><br />
|-<br />
| <tt>#FSIZE</tt><br />
|-<br />
| <tt>#FWRITE <Offset>,<NumBytes>:<nowiki><Data></nowiki></tt><br />
|-<br />
| <tt>#FLIST</tt><br />
|-<br />
| <tt>#MKDIR <Dirname></tt><br />
|-<br />
!colspan="100%"| SecureArea commands<br />
|-<br />
| <tt>#HASSECUREAREA</tt><br />
|-<br />
| <tt>#SECUREAREA <action></tt><br />
|-<br />
!colspan="100%"| Replies from the Flasher<br />
|-<br />
| <tt>#ACK</tt><br />
|-<br />
| <tt>#NACK</tt><br />
|-<br />
| <tt>#OK</tt><br />
|-<br />
| <tt>#OK:<NumBytes>:<nowiki><Data></nowiki></tt><br />
|-<br />
| <tt>#OK:<Size></tt><br />
|-<br />
| <tt>#STATUS:</tt><br />
|-<br />
| <tt>#DONE</tt><br />
|-<br />
| <tt>#ERRxxx</tt><br />
|-<br />
|}<br />
<br />
===== Commands to the Flasher =====<br />
<br />
'''#AUTO'''<br><br />
The <tt>#AUTO</tt> command behaves exactly as the start button or external remote control input.<br><br />
<br />
Usually, the following command sequence will be performed when receiving the <tt>#AUTO</tt> command:<br><br />
<br />
* The Flasher erases the target CPU (if not blank)<br />
* The Flasher programs the target CPU<br />
* The Flasher verifies the target CPU<br />
<br />
Depending on the settings chosen in the '''Production''' tab in J-Flash, this sequence can differ from the one shown above.<br><br />
<br />
Finally, Flasher responds with<br><br />
<br />
* <tt>#OK</tt> if no error occurred<br />
* <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.<br />
<br />
During execution of the <tt>#AUTO</tt> command, Flasher automatically sends "status" messages via RS232 to reflect the state of execution.<br />
Typically during execution of <tt>#AUTO</tt> command, Flasher will reply the following sequence of messages:<br><br />
<br />
<tt>#ACK</tt><br><br />
<tt>#STATUS:INITIALIZING</tt><br><br />
<tt>#STATUS:CONNECTING</tt><br><br />
<tt>#STATUS:UNLOCKING</tt><br><br />
<tt>#STATUS:ERASING</tt><br><br />
<tt>#STATUS:PROGRAMMING</tt><br><br />
<tt>#STATUS:VERIFYING</tt><br><br />
<tt>#OK (Total 13.993s, Erase 0.483s, Prog 9.183s, Verify 2.514s)</tt><br><br />
<br />
'''#AUTO PATCH'''<br><br />
The <tt>#AUTO</tt> PATCH command allows patching of the content of the data to be programmed.<br><br />
<br />
Flasher responds with<br><br />
<br />
* <tt>#OK</tt> if no error occurred<br />
* <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.<br />
<br />
For further information about the usage of the <tt>#AUTO PATCH</tt> command please refer to [[#Patch file support | Patch file support]].<br />
<br />
'''#AUTO NOINFO'''<br><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><br />
<br />
The command ends with <tt>#OK</tt> or <tt>#ERRxxx</tt><br />
<br />
'''#BAUDRATE <Baudrate>'''<br><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><br />
<br />
If this command succeeds, Flasher responds with:<br><br />
<br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<br />
Otherwise it will respond with one of the following error messages:<br><br />
<br />
<tt>#ERR255: Invalid parameters</tt><br><br />
<tt>or</tt><br><br />
<tt>#ERR255: Baudrate is not supported</tt><br><br />
<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.<br />
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.}}<br />
<br />
'''#CANCEL'''<br><br />
This command can be sent to abort a running program. It may take a while until the current program is actually canceled.<br><br />
<br />
Flasher will respond with:<br><br />
<br />
<tt>#ERR007:CANCELED.</tt><br><br />
<br />
'''#ERASE'''<br><br />
This command can be sent to erase all selected target flash sectors.<br><br />
<br />
Flasher will reply the following sequence of messages:<br><br />
<br />
<tt>#ACK</tt><br><br />
<tt>#STATUS:INITIALIZING</tt><br><br />
<tt>#STATUS:CONNECTING</tt><br><br />
<tt>#STATUS:UNLOCKING</tt><br><br />
<tt>#STATUS:ERASING</tt><br><br />
<tt>#OK (Total 0.893s, Erase 0.483s)</tt><br><br />
<br />
'''#PROGRAM'''<br><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.<br />
<br />
'''#RESULT'''<br><br />
This command can be sent any time, even during other command execution. Flasher responds with the last result of the previously executed command.<br />
<br />
'''#SELECT <Filename>'''<br><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.<br />
<tt><Filename></tt> specifies the name of file pair without extensions (.CFG and .DAT) on the Flasher which should be selected. If you are<br />
using the universal flash programming mode, <tt><Filename></tt> specifies the full name of the .UNI file '''including''' the extension.<br />
Flasher saves the selected config and data file in the FLASHER.INI file. So this selection is remembered even between power-cycling Flasher.<br><br />
<br />
This may be verfy helpful in cases where several config and data files are stored on Flasher.<br />
The user can easily switch between these config and data files without connecting Flasher to a host.<br><br />
<br />
If this command succeeds, Flasher responds with:<br><br />
<br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<br />
Find below a sample sequence which shows how to use the <tt>#SELECT</tt> command:<br><br />
<br />
<tt>#SELECT ATSAM7_1 // ATSAM7_1.CFG and ATSAM7_1.DAT is selected</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<tt>#AUTO // Start auto programming</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#STATUS:INITIALIZING</tt><br><br />
<tt>#STATUS:CONNECTING</tt><br><br />
<tt>#STATUS:UNLOCKING</tt><br><br />
<tt>#STATUS:ERASING</tt><br><br />
<tt>#STATUS:PROGRAMMING</tt><br><br />
<tt>#STATUS:VERIFYING</tt><br><br />
<tt>#OK (Total 8.416s, Erase 0.005s, Prog 6.845s, Verify 0.959s)</tt><br><br />
<tt>#SELECT ATSAM7_2 // ATSAM7_2.CFG and ATSAM7_2.DAT is selected</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<tt>#AUTO // Start auto programming</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#STATUS:INITIALIZING</tt><br><br />
<tt>#STATUS:CONNECTING</tt><br><br />
<tt>#STATUS:UNLOCKING</tt><br><br />
<tt>#STATUS:ERASING</tt><br><br />
<tt>#STATUS:PROGRAMMING</tt><br><br />
<tt>#STATUS:VERIFYING</tt><br><br />
<tt>#OK (Total 8.632s, Erase 0.005s, Prog 7.051s, Verify 0.969s)</tt><br><br />
<br />
'''#START'''<br><br />
This command can be sent to start the application using the method configured in the J-Flash project.<br><br />
For U-Flash projects, however, the target application is not necessarily started. <br><br />
There is often a "start application" checkbox in the U-Flash settings which have to be set for this.<br />
<br />
Flasher will reply with the following sequence of messages:<br><br />
<br />
<tt>#ACK</tt><br><br />
<tt>#STATUS:INITIALIZING</tt><br><br />
<tt>#STATUS:CONNECTING</tt><br><br />
<tt>#OK (Total 1.148s)</tt><br><br />
<br />
'''#STATUS'''<br><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]].<br />
<br />
'''#VERIFY'''<br><br />
This command can used to verify the target flash content against the data stored in Flasher.<br />
<br />
'''#READ'''<br><br />
Only available for devices supported by U-Flash.<br><br />
This command can used to read out flash data.<br><br />
More information: [https://wiki.segger.com/Flasher/How_to_read_data_from_a_device_using_U-Flash How to read data using U-Flash]<br />
<br />
'''#QUIT'''<br><br />
This command can be used to terminate the active telnet connection from the server side (Flasher).<br />
The command provides an easy way to terminate the session from an automated script.<br />
It is not necessary to parse stdout and switch to local command mode to disconnect.<br />
Not implemented in the Flasher ATE or Flasher Hub.<br />
<br />
'''#VERBOSE <Level>'''<br><br />
This command can be used to change the verbosity level. <br><br />
* Verbosity level 0: Default. <br><br />
* Verbosity level 1: Provides some additional messages during the programming process.<br />
<br />
===== File I/O commands =====<br />
<br />
The ASCII interface of the Flasher also supports file I/O operations.<br />
<br />
The following file I/O commands are supported:<br><br />
<br />
'''#FCLOSE'''<br><br />
The <tt>#FCLOSE</tt> command closes the file on Flasher which was opened via <tt>#FOPEN</tt>.<br />
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><br />
<br />
A typical sequence when using the <tt>#FCLOSE</tt> command does look like as follows:<br><br />
<br />
<tt>#FCLOSE</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<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><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:No file opened</tt><br />
}}<br />
<br />
'''#FCRC'''<br><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>.<br />
The CRC will be also reported by J-Flash when downloading or saving files via J-Flash.<br><br />
<br />
A typical sequence when using the <tt>#FCRC</tt> command does look like as follows:<br><br />
<br />
<tt>#FCRC flasher.dat</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK:0x75BC855A</tt><br><br />
<br />
'''#FDELETE <Filename>'''<br><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><br />
<br />
A typical sequence when using the <tt>#FDELETE</tt> command does look like as follows:<br><br />
<br />
<tt>#FDELETE flasher.dat</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<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><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:Failed to delete file</tt><br />
}}<br />
<br />
'''#FFORMAT'''<br><br />
The <tt>#FFORMAT</tt> command is used to delete all files located in the public area of the Flasher's internal memory.<br />
<br />
{{Note|1=Please note that this command deletes all projects located in the public area. Deleted projects cannot be restored again.<br><br />
This command does not delete the Flasher firmware, neither does it delete files in the secure area.<br />
}}<br />
<br />
A typical sequence using the <tt>#FFORMAT</tt> command does look like as follows:<br><br />
<br />
<tt>#FFORMAT</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#DONE</tt><br><br />
<br />
'''#FOPEN <Filename>'''<br><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.<br />
If <tt><Filename></tt> can not be found on Flasher a new one will be created.<br><br />
<br />
A typical sequence using the <tt>#FOPEN</tt> command does look like as follows:<br><br />
<br />
<tt>#FOPEN flasher.dat</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<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><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:A file has already been opened</tt><br />
}}<br />
<br />
'''#FREAD <Offset>,<NumBytes>'''<br><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.<br />
<tt><NumBytes></tt> specifies the number of bytes which should be read.<br><br />
<br />
A typical sequence when using the <tt>#FREAD</tt> command does look like as follows:<br><br />
<br />
<tt>#FREAD 0,4</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK:04:466c6173</tt><br><br />
<br />
If the <tt>#FREAD</tt> command succeeds, Flasher will finally respond with a <tt>#OK:<NumBytes>:<nowiki><Data></nowiki></tt> reply message.<br />
For more information about the Flasher reply messages, please refer to [[#Replies from Flasher | Replies from Flasher]].<br><br />
<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><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:No file opened</tt>}}<br />
<br />
'''#FSIZE'''<br><br />
The <tt>#FSIZE</tt> command is used to get the size of the currently opened file on Flasher.<br><br />
<br />
A typical sequence when using the <tt>#FSIZE</tt> command does look like as follows:<br><br />
<br />
<tt>#FSIZE</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK:10 // file on flasher which is currently open, has a size of 16 bytes</tt><br><br />
<br />
If the <tt>#FSIZE</tt> command succeeds, Flasher will respond with a <tt>#OK:<Size></tt> reply message.<br />
For more information about the Flasher reply messages, please refer to [[#Replies from Flasher | Replies from Flasher]].<br><br />
<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><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:No file opened</tt>}}<br />
<br />
'''#FWRITE <Offset>,<NumBytes>:<nowiki><Data></nowiki>'''<br><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.<br />
<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.<br />
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><br />
<br />
<tt><Offset></tt> and <tt><NumBytes></tt> are expected in hexadecimal format.<br><br />
<br />
<tt>#FWRITE 0,200:<nowiki><Data></nowiki></tt><br><br />
<tt>#FWRITE 200,200:<nowiki><Data></nowiki></tt><br><br />
<br />
The data is expected in hexadecimal format (two hexadecimal characters per byte). The following example illustrates the use of <tt>#FWRITE</tt>:<br />
<br />
<tt>Data to be send: Hello !</tt><br><br />
<tt>ASCII values: 0x48, 0x65, 0x6C, 0x6C, 0x6F, 0x20, 0x21</tt><br><br />
<br />
<tt>#FWRITE 0,7:48656C6C6F2021</tt><br><br />
<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><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:No file opened</tt><br>}}<br />
<br />
'''#FLIST'''<br><br />
The <tt>#LIST</tt> command is used to list all files stored on the Flasher.<br><br />
<br />
A typical sequence using the <tt>#FLIST</tt> command does look like as follows:<br><br />
<br />
<tt>#FLIST</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>FLASHER.INI Size: 60</tt><br><br />
<tt>SERIAL.TXT Size: 3</tt><br><br />
<tt>FLASHER.LOG Size: 207</tt><br><br />
<tt>FOLDER (DIR)</tt><br><br />
<tt>FOLDER\\TEST1.CFG Size: 2048</tt><br><br />
<tt>FOLDER\\TEST1.DAT Size: 12288</tt><br><br />
<tt>#OK</tt><br><br />
<br />
'''#MKDIR <Dirname>'''<br><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><br />
<br />
A typical sequence using the <tt>#MKDIR</tt> command does look like as follows:<br><br />
<br />
<tt>#MKDIR folder</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<br />
{{Note|1=If the directory can not be created because of a bad <tt><Dirname></tt> argument, Flasher will respond with:<br><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:Failed to create directory</tt><br>}}<br />
<br />
===== Secure Area Commands =====<br />
<br />
'''#HASSECUREAREA'''<br><br />
The <tt>#HASSECUREAREA</tt> command checks if the Flasher is configured with a secure area.<br />
<br />
<tt>#RESULT:YES</tt> indicates the secure area is present, <tt>#RESULT:NO</tt> indicates no secure area is present.<br />
<br />
'''#SECUREAREA'''<br><br />
The <tt>#SECUREAREA <action></tt> command allows to create or remove the secure area on the Flasher.<br />
<br />
* the action <tt>CREATE</tt> creates the secure area.<br />
* the action <tt>REMOVE</tt> will remove the secure area.<br />
<br />
A typical sequence using the <tt>#SECUREAREA</tt> command does look like as follows:<br><br />
<br />
<tt>#SECUREAREA CREATE</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#DONE</tt><br><br />
<br />
{{Note|1=When creating or removing the <tt>secure area</tt>, all configuration and data files being stored on the Flasher, are lost.<br />
Please make sure that they are not needed anymore, before adding / removing the security area.}}<br />
<br />
<br />
<br />
===== Replies from Flasher =====<br />
<br />
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.<br />
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.<br />
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><br />
<br />
<tt>#OK (Total 13.993s, Erase 0.483s, Prog 9.183s, Verify 2.514s)</tt><br><br />
<br />
The following reply messages from Flasher are defined:<br><br />
<br />
'''#ACK'''<br><br />
Flasher replies with <tt>#ACK</tt> message on reception of any defined command before the command itself is executed.<br />
<br />
'''#NACK'''<br><br />
Flasher replies with <tt>#NACK</tt>, if an undefined command was received.<br />
<br />
'''#OK'''<br><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.<br />
<br />
'''#OK:<NumBytes>:<nowiki><Data></nowiki>'''<br><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.<br />
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).<br />
<br />
'''#OK:<Size>'''<br><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.<br />
<br />
'''#STATUS:'''<br><br />
The Flasher replies with its current state.<br><br />
<br />
The following status messages are currently defined:<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Message !! Description<br />
|-<br />
| <tt>#STATUS:READY</tt> || Flasher is ready to receive a new command.<br />
|-<br />
| <tt>#STATUS:CONNECTING</tt> || Flasher initializes connection to target CPU.<br />
|-<br />
| <tt>#STATUS:INITIALIZING</tt> || Flasher performs self check and internal init.<br />
|-<br />
| <tt>#STATUS:UNLOCKING</tt> || Unlocking flash sectors.<br />
|-<br />
| <tt>#STATUS:ERASING</tt> || Flasher is erasing the flash of the target device.<br />
|-<br />
| <tt>#STATUS:PROGRAMMING</tt> || Flasher is programming the flash of the target device.<br />
|-<br />
| <tt>#STATUS:VERIFYING</tt> || Flasher verifies the programmed flash contents.<br />
|-<br />
|}<br />
<br />
'''#ERRxxx'''<br><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><br />
<br />
Some error codes may be followed by colon and an additional error text.<br><br />
<br />
For example:<br><br />
<br />
<tt>#ERR007:CANCELED.</tt><br><br />
<br />
The error code numbers are described in the following table:<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Message !! Description<br />
|-<br />
| <tt>#ERR007</tt> || Flasher received <tt>#CANCEL</tt> command and has canceled the current operation.<br />
|-<br />
| <tt>#ERR008</tt> || Flasher is already busy with execution of previous command.<br />
|-<br />
| <tt>#ERR009</tt> || Failed to allocate memory.<br />
|-<br />
| <tt>#ERR010</tt> || Failed to open file.<br />
|-<br />
| <tt>#ERR011</tt> || Failed to read file.<br />
|-<br />
| <tt>#ERR012</tt> || Failed to write file.<br />
|-<br />
| <tt>#ERR013</tt> || Failed to delete file.<br />
|-<br />
| <tt>#ERR255</tt> || Undefined error occurred. This reply is followed by an error string.<br />
|-<br />
|}<br />
<br />
== Performance ==<br />
<br />
The following chapter lists programming performance of common flash devices andmicrocontrollers.<br />
<br />
=== Performance of MCUs with internal flash memory ===<br />
<br />
==== Flasher ARM ====<br />
<br />
The following table lists program and erase performance values of Flasher ARM for different controllers.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Microcontroller !! Size [kByte] !! Erase time [sec] !! Program time [sec] !! Verify time [sec] !! Total time [sec]<br />
|-<br />
| Analog Devices || 62 || 2.943 || 2.286 || 0.563 || 5.792<br />
|-<br />
| Atmel AT91SAM7S64 || 64 || --- || 3.488 || 0.438 || 3.926<br />
|-<br />
| Atmel AT91SAM7S256 || 256 || --- || 7.709 || 1.053 || 8.762<br />
|-<br />
| NXP LPC1768 || 512 || 3.740 || 8.559 || 5.092 || 17.391<br />
|-<br />
| NXP LPC2106 || 120 || 0.448 || 1.204 || 0.634 || 2.286<br />
|-<br />
| NXP LPC2129 || 248 || 0.449 || 2.916 || 1.347 || 4.712<br />
|-<br />
| NXP LPC2138 || 500 || 0.448 || 5.488 || 2.649 || 8.585<br />
|-<br />
| NXP LPC2148 || 500 || 0.448 || 5.632 || 2.721 || 8.801<br />
|-<br />
| NXP LPC2294 || 2048 || 0.808 || 15.976 || 9.669 || 26.453<br />
|-<br />
| NXP LPC2478 || 504 || 0.448 || 5.419 || 2.559 || 8.426<br />
|-<br />
| ST STM32F103ZE || 512 || 0.028 || 18.763 || 3.939 || 22.730<br />
|-<br />
| ST STR711 || 272 || 0.429 || 5.476 || 4.742 || 10.647<br />
|-<br />
| ST STR912 || 544 || 1.167 || 12.907 || 5.236 || 19.310<br />
|-<br />
| TI TMS470R1B1M || 1024 || 2.289 || 8.147 || 5.362 || 15.798<br />
|-<br />
|}<br />
<br />
==== Flasher PRO ====<br />
See Flasher ARM.<br />
<br />
==== Flasher Compact ====<br />
See Flasher ARM.<br />
<br />
==== Flasher RX ====<br />
<br />
The following table lists program and erase performance values of Flasher RX.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Microcontroller !! Size [kByte] !! Erase time [sec] !! Program time [sec] !! Verify time [sec] !! Total time [sec]<br />
|-<br />
| R5F56108 || 2.048 || 9.523 || 11.915 || 3.890 || 25.585<br />
|-<br />
|}<br />
<br />
==== Flasher PPC ====<br />
<br />
The following table lists program and erase performance values of Flasher PPC.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Microcontroller !! Size [kByte] !! Erase time [sec] !! Program time [sec] !! Verify time [sec] !! Total time [sec]<br />
|-<br />
| ST SPC560B50 || 576 || 4.747 || 4.159 || 1.929 || 10.917<br />
|-<br />
|}<br />
<br />
== Hardware ==<br />
<br />
This chapter gives an overview about Flasher specific hardware details,<br />
such as the pinouts and available adapters.<br />
<br />
=== Flasher ARM 20-pin JTAG/SWD Connector ===<br />
<br />
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.<br />
<br />
==== Pinout JTAG ====<br />
<br />
[[File:jtag_port_20pin.jpg]] <!-- LG xxxxxx image has been cropped to fit page --><br />
<br />
The following table lists the Flasher JTAG pinout.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! PIN !! SIGNAL !! TYPE !! Description<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 13 || TDO || Input || JTAG data output from target CPU. Typically connected to TDO of target CPU.<br />
|-<br />
| 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".<br />
|-<br />
| 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.<br />
|-<br />
| 19 || 5V-Target supply || Output || This pin can be used to supply power to the target board. Please note the specifications.<br />
|-<br />
|}<br />
<br />
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.<br />
<br />
==== Pinout SWD ====<br />
<br />
The 20-pin connector of Flasher is also compatible to ARM's Serial Wire Debug (SWD) interface.<br><br />
<br />
[[File:SWD_Port.jpg]] <!-- LG xxxxxx image has been cropped to fit page --><br />
<br />
The following table lists the J-Link / J-Trace SWD pinout.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! PIN !! SIGNAL !! TYPE !! Description<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 7 || SWDIO || I/O || Single bi-directional data pin.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 13 || SWO || Output || Serial Wire Output trace port. (Optional, not required for SWD communication.)<br />
|-<br />
| 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".<br />
|-<br />
| 17 || Not used || NC || This pin is not connected in J-Link.<br />
|-<br />
| 19 || 5V-Target supply || Output || This pin can be used to supply power to the target board. Please note the specifications.<br />
|-<br />
|}<br />
<br />
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.<br />
<br />
==== Target power supply ====<br />
<br />
Pin 19 of the connector can be used to supply power to the target hardware. Supply voltage is 5V, max. current is 400mA.<br />
The output current is monitored and protected against overload and short-circuit.<br><br />
<br />
Power can be controlled via the J-Link commander. The following commands are available to control power:<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Command !! Explanation<br />
|-<br />
| <tt>power on</tt> || Switch target power on<br />
|-<br />
| <tt>power off</tt> || Switch target power off<br />
|-<br />
| <tt>power on perm</tt> || Set target power supply default to "on"<br />
|-<br />
| <tt>power off perm</tt> || Set target power supply default to "off"<br />
|-<br />
|}<br />
<br />
=== Flasher RX 14-pin connector ===<br />
<br />
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.<br />
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.<br />
<br />
[[File:jtag_port_14pin.wmf]]<br />
<br />
The following table lists the Flasher RX 14-pin JTAG pinout.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Pin !! Signal !! Type !! Description<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 5 || TDO || Input || JTAG data output from target CPU. Typically connected to TDO on target CPU.<br />
|-<br />
| 6 || --- || NC || This pin is not connected to Flasher RX.<br />
|-<br />
| 7 || --- || NC || This pin is not connected to Flasher RX.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 10 || --- || NC || This pin is not connected to Flasher RX.<br />
|-<br />
| 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.<br />
|-<br />
| 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".<br />
|-<br />
|}<br />
<br />
* All pins marked NC are not connected to Flasher RX. Any signal can be applied here; Flasher RX will simply ignore such a signal.<br />
* Pins 2, 12, 14 are GND pins connected to GND in Flasher RX. They should also be connected to GND in the target system.<br />
<br />
==== Target power supply ====<br />
<br />
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.<br />
Power can be controlled via the J-Link commander. The following commands are available to control power:<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Command !! Explanation<br />
|-<br />
| <tt>power on</tt> || Switch target power on<br />
|-<br />
| <tt>power off</tt> || Switch target power off<br />
|-<br />
| <tt>power on perm</tt> || Set target power supply default to "on"<br />
|-<br />
| <tt>power off perm</tt> || Set target power supply default to "off"<br />
|-<br />
|}<br />
<br />
=== Flasher PPC 14-pin connector ===<br />
<br />
Flasher PPC itself has a 20-pin JTAG connector mounted but comes with a 14-pin adapter for PowerPC devices.<br><br />
<br />
[[File:JTAG_PPC_14pin_adapter.wmf]]<br />
<br />
The following table lists the Flasher PPC 14-pin JTAG pinout.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Pin !! Signal !! Type !! Description<br />
|-<br />
| 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.<br />
|-<br />
| 3 || TDO || Input || JTAG data output from target CPU. Typically connected to TDO on target CPU.<br />
|-<br />
| 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.<br />
|-<br />
| 7 || --- || NC || This pin is not connected to Flasher PPC.<br />
|-<br />
| 8 || --- || NC || This pin is not connected to Flasher PPC.<br />
|-<br />
| 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".<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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).<br />
|-<br />
|}<br />
<br />
* All pins marked NC are not connected to Flasher PPC. Any signal can be applied here; Flasher PPC will simply ignore such a signal.<br />
* 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.<br />
<br />
=== Target board design ===<br />
<br />
We strongly advise following the recommendations given by the chip manufacturer. These recommendations are normally in line with the recommendations.<br />
Please refer to the the appropriate tables depending on the core:<br><br />
<br />
* [[#Pinout JTAG | Pinout JTAG]]<br />
* [[#Pinout SWD | Pinout SWD]]<br />
* [[#Flasher RX 14-pin connector | Flasher RX 14-pin connector]]<br />
* [[#Flasher PPC 14-pin connector | Flasher PPC 14-pin connector]]<br />
<br />
In case of doubt you should follow the recommendations given by the semiconductor manufacturer.<br />
<br />
==== Pull-up/pull-down resistors ====<br />
<br />
Unless otherwise specified by developer's manual, pull-ups/pull-downs are recommended to be between 2.2 kOhms and 47 kOhms.<br />
<br />
==== RESET, nTRST ====<br />
<br />
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><br />
<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.<br />
(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.<br />
<br />
=== Adapters ===<br />
<br />
==== JTAG Isolator ====<br />
<br />
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.<br />
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><br />
<br />
[[File:JTAG_Isolator_Port.wmf]]<br />
<br />
===== Pinout =====<br />
<br />
The following table shows the target-side pinout of the J-Link JTAG Isolator.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Pin !! Signal !! Type !! Description<br />
|-<br />
| 1 || VCC || Output || The target side of the isolator draws power over this pin.<br />
|-<br />
| 2 || VCC || Output || The target side of the isolator draws power over this pin.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 13 || TDO || Input || JTAG data output from target CPU. Typically connected to TDO of target CPU.<br />
|-<br />
| 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".<br />
|-<br />
| 17 || N/C || N/C || This pin is not connected on the target side of the isolator.<br />
|-<br />
| 19 || N/C || N/C || This pin is not connected on the target side of the isolator.<br />
|-<br />
|}<br />
<br />
Pins 4, 6, 8, 10, 12, 14, 16, 18, 20 are connected to GND.<br />
<br />
===== Safety =====<br />
This isolator provides '''basic isolation''' only. '''Do not use with hazardous voltages without further protection measures to avoid risk of electrical shock and fire.'''<br />
<br />
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.<br />
<br />
==== J-Link Needle Adapter ====<br />
<br />
To connect to the J-Link OB via programming interface the ''J-Link Needle Adapter'' is recommended.<br><br />
<br />
[[File:J-Link_Needle_Adapter_500x.jpg]]<br />
<br />
Why to choose the J-Link Needle Adapter:<br><br />
<ol><br />
<li>No additional connector required on your PCB</li><br />
<li>Very small footprint</li><br />
<li>High reliability spring pins for secure connections</li><br />
<li>Designed with 3 locating pins, so the adapter can not be connected the wrong way</li><br />
<li>No external power supply required! The J-Link Needle Adapter comes with the option to power the target hardware via J-Link.</li><br />
</ol><br />
These features make the J-Link Needle Adapter the perfect solution for production purposes.<br><br />
<br />
The pinout of the J-Link Needle Adapter is based on the pinout of the needle adapter by Tag-Connect.<br />
Please note, that both pinouts are not identical since the J-Link Needle Adapter comes with a 5V-supply pin.<br><br />
<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><br />
<br />
Moreover, the two "legs" on each side of the connector guarantee a stable and secure contact between pins and the PCB.<br><br />
<br />
[[File:J-Link_Needle_Adapter_Connector_pins_360x.jpg]]<br />
[[File:J-Link_Needle_Adapter_Pinout.jpg]]<br />
<br />
The J-Link Needle Adapter can be connected to J-Link via the ''20-pin 0.1'' JTAG to a 10-pin needle connector''.<br />
<br />
=== Flasher Pin states when idling ===<br />
WIP<br />
<br />
=== How to determine the hardware version ===<br />
<br />
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.<br />
Flasher has the hardware version printed on the back label.<br><br />
<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).<br />
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><br />
<br />
[[File:FlasherARM_version.gif]]<br />
<br />
== Support and FAQs ==<br />
<br />
This chapter contains troubleshooting tips together with solutions for common problems which might occur when using Flasher.<br />
There are several steps you can take before contacting support.<br />
Performing these steps can solve many problems and often eliminates the need for assistance.<br />
This chapter also contains a collection of frequently asked questions (FAQs) with answers.<br />
<br />
=== Contacting support ===<br />
<br />
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.<br />
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><br />
<br />
If you need to contact support, send the following information to<br><br />
''support@segger.com''<br><br />
<br />
* A detailed description of the problem<br />
* Flasher serial number<br />
* Information about your target hardware (processor, board, etc.).<br />
* <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]].<br />
<br />
Flasher is sold directly by SEGGER.<br />
<br />
=== Frequently Asked Questions ===<br />
<br />
'''Maximum JTAG speed'''<br />
{|<br />
|-<br />
| '''Q:''' || What is the maximum JTAG speed supported by Flasher?<br />
|-<br />
| '''A:''' || Flasher's maximum supported JTAG speed is 12MHz.<br />
|}<br />
<br />
'''Maximum download speed'''<br />
{|<br />
|-<br />
| '''Q:''' || What is the maximum download speed?<br><br />
|-<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.<br />
|}<br />
== Background information ==<br />
<br />
This chapter provides background information about flash programming in general. It<br />
also provides information about how to replace the firmware of Flasher manually.<br />
<br />
=== Flash programming ===<br />
<br />
Flasher comes with a DLL, which allows - amongst other functionalities - reading and writing RAM, CPU registers, starting and stopping the CPU, and setting breakpoints.<br />
<br />
==== How does flash programming via Flasher work? ====<br />
<br />
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.<br />
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.<br />
Different flash chips have different programming algorithms;the programming algorithm also depends on other things,<br />
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).<br />
The RAM code requires data to be programmed into the flash memory. The data is supplied by downloading it to RAM.<br />
<br />
==== Data download to RAM ====<br />
<br />
The data (or part of it) is downloaded to another part of the RAM of the target system.<br />
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.<br />
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.<br />
This process may have to be repeated until the entire data is programmed into the flash.<br />
<br />
==== Available options for flash programming ====<br />
<br />
In general, there are two possibilities in order to use Flasher for flash programming:<br><br />
<br />
* Using Flasher stand-alone to program the target flash memory (stand-alone mode)<br />
* Using Flasher in combination with J-Flash to program the target flash memory (Flasher in "PC-based mode")<br />
<br />
===== Using Flasher in stand-alone mode =====<br />
<br />
In order to use the Flasher in stand-alone mode, it has to be configured first.<br />
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]].<br />
<br />
===== J-Flash - Complete flash programming solution =====<br />
<br />
J-Flash is a stand-alone Windows application, which can read / write data files and program the flash in almost any ARM system.<br />
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''.<br />
<br />
==== How does the universal flash programming work? ====<br />
<br />
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><br />
<br />
Universal flash programming is available only for stand-alone mode.<br />
== Glossary ==<br />
<br />
This chapter describes important terms used throughout this manual.<br />
<br />
'''Big-endian'''<br><br />
Memory organization where the least significant byte of a word is at a higher address than the most significant byte. See Little-endian.<br />
<br />
'''Cache cleaning'''<br><br />
The process of writing dirty data in a cache to main memory.<br />
<br />
'''Coprocessor'''<br><br />
An additional processor that is used for certain operations, for example, for floating-point math calculations, signal processing, or memory management.<br />
<br />
'''Dirty data'''<br><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.<br />
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.<br />
<br />
'''Halfword'''<br><br />
A 16-bit unit of information.<br />
<br />
'''Host'''<br><br />
A computer which provides data and other services to another computer. Especially, a computer providing debugging services to a target being debugged.<br />
<br />
'''ICache'''<br><br />
Instruction cache.<br />
<br />
'''ID'''<br><br />
Identifier.<br />
<br />
'''IEEE 1149.1'''<br><br />
The IEEE Standard which defines TAP. Commonly (but incorrectly) referred to as JTAG.<br />
<br />
'''Image'''<br><br />
An executable file that has been loaded onto a processor for execution.<br />
<br />
'''Instruction Register'''<br><br />
When referring to a TAP controller, a register that controls the operation of the TAP.<br />
<br />
'''IR'''<br><br />
See Instruction Register.<br />
<br />
'''Joint Test Action Group (JTAG)'''<br><br />
The name of the standards group which created the IEEE 1149.1 specification.<br />
<br />
'''Little-endian'''<br><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.<br />
<br />
'''Memory coherency'''<br><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.<br />
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.<br />
<br />
'''Memory management unit (MMU)'''<br><br />
Hardware that controls caches and access permissions to blocks of memory, and translates virtual to physical addresses.<br />
<br />
'''Memory Protection Unit (MPU)'''<br><br />
Hardware that controls access permissions to blocks of memory. Unlike an MMU, a MPU does not translate virtual addresses to physical addresses.<br />
<br />
'''RESET'''<br><br />
Abbreviation of System Reset. The electronic signal which causes the target system other than the TAP controller to be reset.<br />
This signal is also known as "nSRST" "nSYSRST", "nRST", or "nRESET" in some other manuals. See also nTRST.<br />
<br />
'''nTRST'''<br><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.<br />
<br />
'''Open collector'''<br><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.<br />
<br />
'''Processor Core'''<br><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.<br />
It excludes optional coprocessors, caches, and the memory management unit.<br />
<br />
'''Remapping'''<br><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.<br />
<br />
'''RTOS'''<br><br />
Real Time Operating System.<br />
<br />
'''TAP Controller'''<br><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.<br />
<br />
'''Target'''<br><br />
The actual processor (real silicon or simulated) on which the application program is running.<br />
<br />
'''TCK'''<br><br />
The electronic clock signal which times data on the TAP data lines TMS, TDI, and TDO.<br />
<br />
'''TDI'''<br><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.<br />
<br />
'''TDO'''<br><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.<br />
<br />
'''Test Access Port (TAP)'''<br><br />
The port used to access a device's TAP Controller. Comprises TCK, TMS, TDI, TDO, and nTRST (optional).<br />
<br />
'''Transistor-transistor logic (TTL)'''<br><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.<br />
<br />
'''Word'''<br><br />
A 32-bit unit of information. Contents are taken as being an unsigned integer unless otherwise stated.<br />
== Literature and references ==<br />
This chapter lists documents, which we think may be useful to gain a deeper understanding of technical details.</div>JanBhttps://wiki.segger.com/index.php?title=UM08022_Flasher&diff=17584UM08022 Flasher2024-02-01T07:32:05Z<p>JanB: /* Pinout SWD */</p>
<hr />
<div><!---<br />
General TBD:<br />
- LG: Right now - EVERYTHING<br />
===========================================<br />
--------------------[more specific, but on multiple locations]<br />
- check if all emphasis (bold, tt, blue, etc ) have made it into the new version<br />
- Add Information -> Additional information<br />
- use of the term free-of-charge utility/tool etc<br />
- check compliant to DocStandards_Rules.txt<br />
- Remove everything regarding to Kickstarter versions? eventually create a chapter Legacy -> Kickstarter version were available for hw version 5-x (200x-200x)...[..]<br />
- 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.<br />
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.<br />
- if week keep the IDE specific stuff in the manual, add Ozone, ES and J-Link Commander were no mentioned.<br />
- IDE specifics move into wiki confirmed by Alex<br />
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)<br />
- check all sections regarding licensing<br />
- Check compliance of J-Link emDocs with typographic conventions described in AboutThisDocument.emDoc. What should be altered? e.g. references<br />
- use uref at all (not blue)?<br />
- search and decide where to use \ref (ref with page number)<br />
- why is \ref (no single "option" \uref is more basic as \ref.....)<br />
- in text, use either \ref or \iref instead of \uref<br />
- in old manual, \H3 started on a new page (not per default, but set manually for api tables etc...)<br />
- move used old images and source files (visio etc) via svn (currently copied)<br />
--------------------[grammar / vocabulary discussion]<br />
- Product names<br />
-- Use of SEGGEPROBE in this document?<br />
- use license over licence<br />
- commandline or command-line?<br />
- toolchain or tool chain?<br />
- crossreference/cross-reference/cross reference?<br />
- overcurrent?<br />
- double words?<br />
- frontend?<br />
- Unit: Kbytes, KBytes, V, mV.... 9V or 9 V? Create rule in Vocabulary<br />
- baudrate or baud rate?<br />
- stackpointer or stack pointer<br />
- check where we should replace abbreviations with the long form (e.h. "milliseconds" instead of "ms")<br />
- config or configuration<br />
- filepointer or file pointer?<br />
--------------------[J-Link dep. specific]<br />
- J-Link command strings or J-Link Command strings or J-Link Command Strings<br />
- J-Link settings file or...<br />
- J-Link control panel or ......<br />
- J-Link script files or...<br />
---><br />
Flasher is a programming tool for microcontrollers with on-chip or external flash memory.<br />
Flasher is designed for programming flash targets with the J-Flash software or stand-alone.<br />
In addition to that Flasher can also be used as a regular J-Link. For more information about J-Link in general,<br />
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].<br />
<br />
<div class="toclimit-2"><br />
__TOC__<br />
</div><br />
<br />
== Flasher Software and Documentation Pack ==<br />
The Flasher Software and Documentation Pack, available for download on the [https://www.segger.com/downloads/flasher#FlasherSoftwareAndDocumentationPack SEGGER homepage], includes applications to be used with Flasher and in some cases with J-Link and J-Trace.<br><br />
It also comes with USB-drivers for J-Link, J-Trace and Flasher.<br />
<br />
=== Software overview ===<br />
{| class="wikitable"<br />
|-<br />
! Software !! Description<br />
|-<br />
| [[J-Link Configurator|Flasher Configurator]] || GUI-based configuration tool for Flasher. Allows configuration of USB identification as well as TCP/IP identification of Flashers.<br />
|-<br />
| [[FlasherControl|Flasher Control]] || Command-line tool to connect to the Flasher's command-line interface via USB.<br />
|-<br />
| [[J-Flash]] || Flash programming application.<br />
|-<br />
| [[J-Flash SPI]] || (Q)SPI flash programming application.<br />
|-<br />
| [[J-Link Commander]] || Command-line tool with basic functionality for target analysis.<br />
|-<br />
| [[J-Link Registration]] || SEGGER J-Link Registration utility to register your SEGGER product such as a J-Link, J-Trace or Flasher.<br />
|-<br />
| [[JTAGLoad]] || Command line tool that opens an svf file and sends the data in it via J-Link / J-Trace or Flasher to the target.<br />
|-<br />
| [https://www.segger.com/downloads/flasher/UM08037.pdf U-Flash] || Tool for creating standalone Flasher projects.<br />
|}<br />
<br />
== Flasher overview ==<br />
Flasher connects to a PC using the USB/Ethernet/RS232 interface (what host interfaces are available depends on the Flasher model),<br />
running Windows, Linux & MacOS. In stand-alone mode,<br />
Flasher can be driven by the start/stop button, or via the RS232 interface (handshake control or ASCII interface).<br />
Flasher always has a 20-pin connector, which target interfaces are supported depends on the Flasher model:<br />
* Flasher ARM: JTAG and SWD are supported.<br />
* Flasher RX: JTAG is supported. Flasher comes with additional 14-pin RX adapter<br />
* Flasher PPC: JTAG is supported. Flasher comes with additional 14-pin PPC adapter.<br />
* Flasher PRO: JTAG and SWD are supported.<br />
* Flasher Compact: JTAG and SWD are supported.<br />
<br />
=== Features of Flasher ARM/PPC/RX/PRO ===<br />
* Three boot modes: PC-based mode, stand-alone mode, file access mode<br />
* Stand-alone JTAG/SWD programmer (Once set up, Flasher can be controlled without the use of PC program)<br />
* No power supply required, powered through USB<br />
* Supports internal and external flash devices<br />
* 128 MB memory for storage of target program<br />
* Can be used as J-Link (emulator) with a download speed of up to 720 Kbytes/second<br />
* Data files can updated via USB/Ethernet (using the J-Flash software), via FTP, via RS232 or via the file access mode of Flasher<br />
<br />
{| class="seggertable"<br />
|-<br />
! Flasher model !! Supported cores !! Supported target interfaces !! Flash programming speed (depending on target hardware)<br />
|-<br />
| Flasher ARM || ARM7/ARM9/Cortex-M || JTAG, SWD || between 170 and 300 Kbytes/second<br />
|-<br />
| Flasher RX || Renesas RX610, RX621, RX62N, RX62T || JTAG || between 30-300 Kbytes/second<br />
|-<br />
| Flasher PPC || Power PC e200z0 || JTAG || up to 138 Kbytes/second<br />
|-<br />
| Flasher PRO || ARM7/ARM9/Cortex-M Renesas RX610, RX621, RX62N, RX62T Power PC e200z0 || JTAG, SWD || between 30-300 Kbytes/ second<br />
|-<br />
|}<br />
<br />
==== Features of Flasher Compact ====<br />
<br />
* Three boot modes: PC-based mode, stand-alone mode, file access mode<br />
* Stand-alone JTAG/SWD programmer (Once set up, Flasher can be controlled without the use of PC program)<br />
* No power supply required, powered through USB<br />
* Supports internal and external flash devices<br />
* 128 MB memory for storage of target program<br />
* Can be used as J-Link (emulator) with a download speed of up to 720 Kbytes/second<br />
* Data files can updated via USB/Ethernet (using the J-Flash software) or via the file access mode of Flasher<br />
<br />
{| class="seggertable"<br />
|-<br />
! Flasher model !! Supported cores !! Supported target interfaces !! Flash programming speed (depending on target hardware)<br />
|-<br />
| Flasher ARM || ARM7/ARM9/Cortex-M || JTAG, SWD || between 170 and 300 Kbytes/second<br />
|-<br />
| Flasher RX || Renesas RX610, RX621, RX62N, RX62T || JTAG || between 30-300 Kbytes/second<br />
|-<br />
| Flasher PPC || Power PC e200z0 || JTAG || up to 138 Kbytes/second<br />
|-<br />
| Flasher Compact || ARM7/ARM9/Cortex-M Renesas RX610, RX621, RX62N, RX62T Power PC e200z0 || JTAG, SWD || between 30-300 Kbytes/ second<br />
|-<br />
|}<br />
<br />
==== Features of Flasher Portable/Flasher Portable PLUS ====<br />
<br />
* Stand-alone in-circuit-programmer (Once set up, Flasher can be controlled without the use of a PC program)<br />
* Powered by an internal rechargeable battery (standard batteries for Flasher Portable), no Laptop or external power supply required.<br />
* Multiple firmware images can be stored on Flasher<br />
* 128 MB memory for storage of target program<br />
* Flasher Portable PLUS supports a simple selection of up to 99 firmware images via buttons (since V7.90)<br />
* Supported CPUs: ARM Cortex, Legacy ARM7/9, Renesas RX, Freescale PowerPC<br />
* Supports internal and external flash<br />
* Free software updates<ref name="legitimateOwned" />, 1 year of support<br />
* Data files can be updated via the file access mode functionality or via J-Flash<br />
* Programming speed between 30-300 Kbytes/second (actual speed depends on target hardware)<br />
{{Note|1=Ethernet and RS232 as host interface are not available for Flasher Portable}}<br />
<references><br />
<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.<br />
As a legitimate owner of a SEGGER Flasher, you can always download the latest software free of charge.<br />
Though not planned and not likely, we reserve the right to change this policy.<br />
Note that older models may not be supported by newer versions of the software.<br />
Typically, we support older models with new software at least 3 years after end of life.<br />
</ref><br />
</references><br />
<br />
{| class="seggertable"<br />
|-<br />
! Supported cores !! Supported target interfaces !! Flash programming speed (depending on target hardware)<br />
|-<br />
| ARM7/ARM9/Cortex-M || JTAG, SWD || between 30-300 Kbytes/second<br />
|-<br />
| Renesas RX610, RX621, RX62N, RX62T || JTAG || between 170 and 300 Kbytes/second<br />
|-<br />
| Power PC e200z0 || JTAG || up to 138 Kbytes/second<br />
|-<br />
|}<br />
<br />
==== Working environment ====<br />
<br />
'''General'''<br><br />
The Flasher can operate from a PC with an appropriate software like J-Flash or in stand-alone mode.<br />
<br />
'''Host System'''<br><br />
IBM PC/AT or compatible CPU: 486 (or better) with at least 128MB of RAM,<br />
running Windows, Linux & MacOS. It needs to have a USB, Ethernet or RS232 interface available for communication with Flasher.<br />
<br />
'''Power supply'''<br><br />
Flasher Portable: 3x standard AAA batteries or 5V DC, min. 100 mA via USB connector.<br />
<br />
Flasher Portable PLUS: internal rechargeable 680mAh Li-Ion battery, min. 100 mA via USB connector.<br />
<br />
Other Flashers: 5V DC, min. 100 mA via USB connector.<br />
<br />
'''Installing Flasher PC-software'''<br><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><br />
More information about the package you can find in the similar [[J-Link Software and Documentation Pack]].<br><br />
The package includes U-Flash and J-Flash, the main tools for flashing targets:<br />
* J-Flash : J-Flash User Guide ([https://wiki.segger.com/UM08003_JFlash UM08003_JFlash.pdf]).<br />
* U-Flash : U-Flash User Guide ([https://www.segger.com/downloads/flasher/UM08037.pdf UM08037_UniversalFlashLoader.pdf]).<br />
<br />
=== Specifications ===<br />
<br />
<br />
==== Specifications for Flasher ARM ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Windows, Linux & MacOS<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C<br />
|-<br />
| Storage Temperature || -20 °C ... +60 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
!colspan="100%"| Mechanical<br />
|-<br />
| Size (without cables) || 121mm x 66mm x 30mm<br />
|-<br />
| Weight (without cables) || 119g<br />
|-<br />
!colspan="100%"| Available interfaces<br />
|-<br />
| USB Host interface || USB 2.0, full speed<br />
|-<br />
| Ethernet Host interface || 10/100 MBit<br />
|-<br />
| RS232 Host interface || RS232 9-pin<br />
|-<br />
| Target interface || JTAG 20-pin (14-pin adapter available)<br />
|-<br />
!colspan="100%"| JTAG Interface, Electrical<br />
|-<br />
| Power Supply || USB powered, 100mA for Flasher ARM. 500 mA if target is powered by Flasher ARM<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| Target supply voltage || Supply voltage is 5V, max.<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6 <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Max. JTAG speed || up to 12MHz<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
===== Flasher ARM download speed =====<br />
<br />
The following table lists the Flasher ARM performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! ARM7 memory download<br />
|-<br />
| Flasher ARM || 720 Kbytes/s (12MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
<br />
==== Specifications for Flasher RX ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Windows, Linux & MacOS<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C<br />
|-<br />
| Storage Temperature || -20 °C ... +60 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
!colspan="100%"| Mechanical<br />
|-<br />
| Size (without cables) || 121mm x 66mm x 30mm<br />
|-<br />
| Weight (without cables) || 119g<br />
|-<br />
!colspan="100%"| Available interfaces<br />
|-<br />
| USB Host interface || USB 2.0, full speed<br />
|-<br />
| Ethernet Host interface || 10/100 MBit<br />
|-<br />
| RS232 Host interface || RS232 9-pin<br />
|-<br />
| Target interface || JTAG 20-pin (shipped with 14-pin adapter for Renesas RX)<br />
|-<br />
!colspan="100%"| JTAG Interface, Electrical<br />
|-<br />
| Power Supply || USB powered, 100mA for Flasher RX. 500 mA if target is powered by Flasher RX<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| 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)<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6 <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Max. JTAG speed || up to 12MHz<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
===== Flasher RX download speed =====<br />
<br />
The following table lists the Flasher RX performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! Flasher RX600 series memory download<br />
|-<br />
| Flasher RX || 720 Kbytes/s (12MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
<br />
==== Specifications for Flasher PPC ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Windows, Linux & MacOS<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C<br />
|-<br />
| Storage Temperature || -20 °C ... +60 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
!colspan="100%"| Mechanical<br />
|-<br />
| Size (without cables) || 121mm x 66mm x 30mm<br />
|-<br />
| Weight (without cables) || 119g<br />
|-<br />
!colspan="100%"| Available interfaces<br />
|-<br />
| USB Host interface || USB 2.0, full speed<br />
|-<br />
| Ethernet Host interface || 10/100 MBit<br />
|-<br />
| RS232 Host interface || RS232 9-pin<br />
|-<br />
| Target interface || JTAG 20-pin (shipped with 14-pin adapter for Renesas PPC)<br />
|-<br />
!colspan="100%"| JTAG Interface, Electrical<br />
|-<br />
| Power Supply || USB powered, 100mA for Flasher PPC. 500 mA if target is powered by Flasher PPC<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| Target supply voltage || Supply voltage is 5V, max.<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6 <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Max. JTAG speed || up to 12MHz<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
===== Flasher RX download speed =====<br />
<br />
The following table lists the Flasher PPC performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! Memory download<br />
|-<br />
| Flasher PPC || 530 Kbytes/s (8 MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
<br />
==== Specifications for Flasher PRO ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Windows, Linux & MacOS<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C<br />
|-<br />
| Storage Temperature || -20 °C ... +60 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
!colspan="100%"| Mechanical<br />
|-<br />
| Size (without cables) || 121mm x 66mm x 30mm<br />
|-<br />
| Weight (without cables) || 119g<br />
|-<br />
!colspan="100%"| Available interfaces<br />
|-<br />
| USB Host interface || USB 2.0, full speed<br />
|-<br />
| Ethernet Host interface || 10/100 MBit<br />
|-<br />
| RS232 Host interface || RS232 9-pin<br />
|-<br />
| Target interface || JTAG 20-pin (14-pin adapter available)<br />
|-<br />
!colspan="100%"| JTAG Interface, Electrical<br />
|-<br />
| Power Supply || USB powered, 100mA for Flasher PRO. 500 mA if target is powered by Flasher PRO<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| Target supply voltage || Supply voltage is 5V, max.<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6 <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Max. JTAG speed || up to 12MHz<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
<br />
===== Supported CPU cores =====<br />
<br />
The Flasher PRO supports the following CPU cores:<br />
<br />
'''ARM Cortex'''<br><br />
* Cortex-A5<br />
* Cortex-A8<br />
* Cortex-A9<br />
* Cortex-R4<br />
* Cortex-R5<br />
* Cortex-M0<br />
* Cortex-M0+<br />
* Cortex-M1<br />
* Cortex-M3<br />
* Cortex-M4<br />
<br />
'''ARM (legacy cores)'''<br><br />
* ARM720T<br />
* ARM7TDMI<br />
* ARM7TDMI-S<br />
* ARM920T<br />
* ARM922T<br />
* ARM926EJ-S<br />
* ARM946E-S<br />
* ARM966E-S<br />
* ARM1136JF-S<br />
* ARM1136J-S<br />
* ARM1156T2-S<br />
* ARM1156T2F-S<br />
* ARM1176JZ-S<br />
* ARM1176JZF<br />
* ARM1176JZF-S<br />
<br />
'''Renesas RX'''<br><br />
* RX111<br />
* RX210<br />
* RX220<br />
* RX21A<br />
* RX610<br />
* RX621<br />
* RX62G<br />
* RX62N<br />
* RX62T<br />
* RX630<br />
* RX631<br />
* RX63N<br />
* RX63T<br />
<br />
'''Freescale Power PC'''<br><br />
* e200z0<br />
<br />
===== Supported Target interfaces =====<br />
<br />
The Flasher PRO supports the following target interfaces:<br />
<br />
* JTAG<br />
* SWD<br />
* FINE<br />
* SPD<br />
<br />
===== Flasher PRO download speed =====<br />
<br />
The following table lists the Flasher PRO performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! ARM7 memory download<br />
|-<br />
| Flasher PRO || 720 Kbytes/s (12MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
<br />
==== Specifications for Flasher Compact ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Microsoft Windows (x86/x64)<br>Linux (x86/x64/Arm)<br>macOS (x86/Apple M1)<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C<br />
|-<br />
| Storage Temperature || -20 °C ... +65 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
| Size (without cables) || 70mm x 45mm x 18mm<br />
|-<br />
| Weight (without cables) || 40g<br />
|-<br />
| USB Host interface || USB 2.0 (Hi-Speed); Micro USB<br />
|-<br />
| Target interface || JTAG 20-pin (14-pin adapter available)<br />
|-<br />
| Power Supply || USB powered, 130mA (idle)<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| Target supply voltage || Supply voltage is 5V, max.<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
| Supported target interfaces || SPI, QSPI, 8051 C2, cJTAG, FINE, ICSP, IIC, ISP, JTAG, PDI, SPD, SWD, SWIM, UART, UPDI<br />
|-<br />
| Serial transfer rate between Flasher Compact and target || Up to 50 MHz (Depending on target interface)<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6 <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
===== Supported CPU cores =====<br />
<br />
The Flasher Compact supports the following CPU cores:<br />
'''ARM Cortex'''<br><br />
* Cortex-A5<br />
* Cortex-A8<br />
* Cortex-A9<br />
* Cortex-R4<br />
* Cortex-R5<br />
* Cortex-M0<br />
* Cortex-M0+<br />
* Cortex-M1<br />
* Cortex-M3<br />
* Cortex-M4<br />
<br />
'''ARM (legacy cores)'''<br><br />
* ARM720T<br />
* ARM7TDMI<br />
* ARM7TDMI-S<br />
* ARM920T<br />
* ARM922T<br />
* ARM926EJ-S<br />
* ARM946E-S<br />
* ARM966E-S<br />
* ARM1136JF-S<br />
* ARM1136J-S<br />
* ARM1156T2-S<br />
* ARM1156T2F-S<br />
* ARM1176JZ-S<br />
* ARM1176JZF<br />
* ARM1176JZF-S<br />
<br />
'''Renesas RX'''<br><br />
* RX111<br />
* RX210<br />
* RX220<br />
* RX21A<br />
* RX610<br />
* RX621<br />
* RX62G<br />
* RX62N<br />
* RX62T<br />
* RX630<br />
* RX631<br />
* RX63N<br />
* RX63T<br />
<br />
'''Freescale Power PC'''<br><br />
* e200z0<br />
<br />
===== Flasher Compact download speed =====<br />
<br />
The following table lists the Flasher Compact performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! ARM7 memory download<br />
|-<br />
| Flasher Compact || 720 Kbytes/s (12MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
<br />
==== Specifications for Flasher Portable PLUS ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Windows, Linux & MacOS<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C (normal operation)<br>+5 °C ... +45 °C (battery charging)<br />
|-<br />
| Storage Temperature || -20 °C ... +45 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
| 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)<br />
|-<br />
| Charging via USB || 70 minutes (at 1A charging current)<br />
|-<br />
!colspan="100%"| Mechanical<br />
|-<br />
| Size (without cables) || 126mm x 70mm x 28mm<br />
|-<br />
| Weight (without cables) || 140g<br />
|-<br />
!colspan="100%"| Available interfaces<br />
|-<br />
| USB Host interface || USB 2.0<br />
|-<br />
| Target interface || Standard 20-pin 0.1" connector (Adapters available).<br />
|-<br />
!colspan="100%"| Target Interface, Electrical<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| Target supply voltage || Supply voltage is 4.5V, max. (depends on the current battery voltage).<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6 <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Max. JTAG speed || up to 12MHz<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
===== Supported CPU cores =====<br />
<br />
The Flasher Portable PLUS supports the following CPU cores:<br />
<br />
'''ARM Cortex'''<br><br />
* Cortex-A5<br />
* Cortex-A8<br />
* Cortex-A9<br />
* Cortex-R4<br />
* Cortex-R5<br />
* Cortex-M0<br />
* Cortex-M0+<br />
* Cortex-M1<br />
* Cortex-M3<br />
* Cortex-M4<br />
<br />
'''ARM (legacy cores)'''<br><br />
* ARM720T<br />
* ARM7TDMI<br />
* ARM7TDMI-S<br />
* ARM920T<br />
* ARM922T<br />
* ARM926EJ-S<br />
* ARM946E-S<br />
* ARM966E-S<br />
* ARM1136JF-S<br />
* ARM1136J-S<br />
* ARM1156T2-S<br />
* ARM1156T2F-S<br />
* ARM1176JZ-S<br />
* ARM1176JZF<br />
* ARM1176JZF-S<br />
<br />
'''Renesas RX'''<br><br />
* RX111<br />
* RX210<br />
* RX220<br />
* RX21A<br />
* RX610<br />
* RX621<br />
* RX62G<br />
* RX62N<br />
* RX62T<br />
* RX630<br />
* RX631<br />
* RX63N<br />
* RX63T<br />
<br />
'''Freescale Power PC'''<br><br />
* e200z0<br />
<br />
===== Supported Target interfaces =====<br />
<br />
The Flasher Portable PLUS supports the following target interfaces:<br />
* JTAG<br />
* SWD<br />
* FINE<br />
* SPD<br />
<br />
===== Flasher Portable PLUS download speed =====<br />
<br />
The following table lists the Flasher Portable PLUS performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! ARM7 memory download<br />
|-<br />
| Flasher PRO || 720 Kbytes/s (12MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
<br />
==== Specifications for Flasher Portable ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Windows, Linux & MacOS<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C<br />
|-<br />
| Storage Temperature || -20 °C ... +65 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
| Power Supply || a) USB powered, 100mA for Flasher Portable. 500 mA if target is powered by Flasher Portable<br>b) Batteries powered (3xAAA)<br />
|-<br />
!colspan="100%"| Mechanical<br />
|-<br />
| Size (without cables) || 130mm x 65mm x 25mm<br />
|-<br />
| Weight (without cables) || 120g<br />
|-<br />
!colspan="100%"| Available interfaces<br />
|-<br />
| USB Host interface || USB 2.0<br />
|-<br />
| Target interface || Standard 20-pin 0.1" connector (Adapters available).<br />
|-<br />
!colspan="100%"| Target Interface, Electrical<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| Target supply voltage || Supply voltage is 4.5V, max. (depends on the current battery voltage).<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6V <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Max. JTAG speed || up to 12MHz<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
===== Supported CPU cores =====<br />
<br />
The Flasher Portable supports the following CPU cores:<br />
<br />
'''ARM Cortex'''<br><br />
* Cortex-A5<br />
* Cortex-A8<br />
* Cortex-A9<br />
* Cortex-R4<br />
* Cortex-R5<br />
* Cortex-M0<br />
* Cortex-M0+<br />
* Cortex-M1<br />
* Cortex-M3<br />
* Cortex-M4<br />
<br />
'''ARM (legacy cores)'''<br><br />
* ARM720T<br />
* ARM7TDMI<br />
* ARM7TDMI-S<br />
* ARM920T<br />
* ARM922T<br />
* ARM926EJ-S<br />
* ARM946E-S<br />
* ARM966E-S<br />
* ARM1136JF-S<br />
* ARM1136J-S<br />
* ARM1156T2-S<br />
* ARM1156T2F-S<br />
* ARM1176JZ-S<br />
* ARM1176JZF<br />
* ARM1176JZF-S<br />
<br />
'''Renesas RX'''<br><br />
* RX111<br />
* RX210<br />
* RX220<br />
* RX21A<br />
* RX610<br />
* RX621<br />
* RX62G<br />
* RX62N<br />
* RX62T<br />
* RX630<br />
* RX631<br />
* RX63N<br />
* RX63T<br />
<br />
'''Freescale Power PC'''<br><br />
* e200z0<br />
<br />
===== Supported Target interfaces =====<br />
<br />
The Flasher Portable supports the following target interfaces:<br />
<br />
* JTAG<br />
* SWD<br />
* FINE<br />
* SPD<br />
<br />
===== Flasher Portable download speed =====<br />
<br />
The following table lists the Flasher Portable performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! ARM7 memory download<br />
|-<br />
| Flasher PRO || 720 Kbytes/s (12MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
== Working with Flasher ==<br />
<br />
This chapter describes functionality and how to use Flasher.<br />
<br />
=== Flasher Portable PLUS ===<br />
<br />
The Flasher Portable PLUS is a portable version of SEGGERs Flasher family,<br />
which has been designed to fill the need of an extremely portable, production grade,<br />
Flash programmer used for in-field firmware updates. No need to be tethered to an outlet,<br />
it is powered by an integrated Li-Ion cell (680mAh).<br />
The Flasher Portable PLUS programs flash targets in stand-alone mode or via J-Flash PC software.<br><br />
<br />
Furthermore the Flasher Portable PLUS allows the user to select between 99 data images to be programmed (since V7.90).<br />
The images can be easily selected by using the SEL button on the front of the housing.<br />
For more information about support for multiple images, please refer to [[#Multiple File Support | Multiple File Support]].<br><br />
For setup and configuration purposes, the Flasher Portable PLUS connects to a PC via USB interface,<br />
running Windows, Linux & MacOS and has a built-in standard 20-pin J-Link target connector.<br><br />
<br />
{{Note|1=Ethernet and RS232 as host interface are not available for the Flasher Portable PLUS.}}<br />
<br />
==== Housing & Buttons ====<br />
<br />
The Flasher Portable PLUS comes with a display, which is for example used to represent the status of an ongoing flash progress.<br />
Furthermore, there are three buttons which allow the user to control Flasher Portable PLUS.<br />
For a detailed description of the functions, take a look at the table below:<br />
<br />
<!-- LG xxxxxx edit image with labels for buttons? (Is this actually necessary? Buttons are basically self-explanatory...) --><br />
[[File:Flasher_Portable_PLUS.png | 500px]]<br />
<br />
{| class="seggertable"<br />
|-<br />
! Button !! Description<br />
|-<br />
| Program || Start programming process with the currently selected image.<br />
|-<br />
| Select image || Select the image to be programmed next time the Program button is pressed.<br />
|-<br />
| 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.<br />
|-<br />
|}<br />
<br />
==== Configuration ====<br />
<br />
The Flasher Portable PLUS has some configuration options the other Flashers do not have.<br />
{| class="seggertable"<br />
|-<br />
! Option !! Description !! Value range !! Default value<br />
|-<br />
| AutoPowerOffOnIdle || Specifies the time interval after which the Flasher Portable will turn off without any user action || 1 to 3600 || 60<br />
|-<br />
| ShowDatCRCAfterProgramming || Activates displaying the data file CRC after the programming in the pop up message || 0 = inactive, 1 = active || 0<br />
|-<br />
|}<br />
<br />
If the <tt>Flasher.ini</tt> does not contain a <tt>[Config]</tt> section with the configuration option, the default value is used.<br />
<br />
'''Example:'''<br><br />
This sample will show the data file CRC after the programming and the auto power of is set to five minutes (=300 seconds).<br />
<br />
<source lang="c"><br />
[CONFIG]<br />
AutoPowerOffOnIdle = "300"<br />
ShowDatCRCAfterProgramming = "1"<br />
</source><br />
<br />
=== Flasher Portable ===<br />
<br />
The Flasher Portable is a portable version of SEGGERs Flasher family, which has been designed to fill the need of an extremely portable,<br />
production grade, Flash programmer used for in-field firmware updates. No need to be tethered to an outlet,<br />
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><br />
<br />
Furthermore the Flasher Portable allows the user to select between four data images to be programmed.<br />
The images can be easily selected by using the arrow buttons on the front of the housing.<br />
For more information about support for multiple images, please refer to [[#Multiple File Support | Multiple File Support]].<br><br />
For setup and configuration purposes, the Flasher Portable connects to a PC via USB interface,<br />
running Windows, Linux & MacOS and has a built-in standard 20-pin J-Link target connector.<br><br />
<br />
{{Note|1=Ethernet and RS232 as host interface are not available for the Flasher Portable.}}<br />
<br />
==== Housing & Buttons ====<br />
<br />
The Flasher Portable comes with several leds which are for example used to represent the status of an ongoing flash progress.<br />
Furthermore, there are three buttons which allow the user to control Flasher Portable.<br />
For a detailed description of the functions, take a look at the two tables below:<br />
<br />
<!-- LG xxxxxx edit image with labels for buttons?--><br />
[[File:Flasher_Portable_Top_2.png | 500px]]<br />
<br />
{| class="seggertable"<br />
|-<br />
! LED !! Description<br />
|-<br />
| ACTIVE || GREEN. Blinks while the Flasher Portable is busy / performs operations on the target.<br />
|-<br />
| PASS/FAIL || GREEN/RED. Indicates, if the last flashing cycle was successful.<br />
<ul><br />
<li> GREEN: Flashing cycle completed successfully.</li><br />
<li> RED: Flashing cycle completed with error.</li><br />
</ul><br />
|-<br />
| 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]].<br />
|-<br />
| POWER || GREEN: Indicates if Flasher is currently powered. Blinks while Flasher Portable tries to enumerate via USB.<br />
|-<br />
| 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.<br />
|-<br />
|}<br />
<br />
{| class="seggertable"<br />
|-<br />
! Button !! Description<br />
|-<br />
| Program || Start programming process with the currently selected image.<br />
|-<br />
| Select image || Select the image to be programmed next time the <tt>Program</tt> button is pressed.<br />
|-<br />
| 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<br />
|-<br />
|}<br />
<br />
=== File system ===<br />
<br />
The Flasher with hardware version 4 and lower supports 8.3 filenames only (8 characters filename, 3 characters file extension).<br />
Using longer filenames may result in incorrect operation. Integrated functions,<br />
like the FTP server or the terminal server, will refuse writing files with long filenames.<br />
<br />
=== Setting up the IP interface ===<br />
<br />
Setting up the IP interface<br />
Some of the Flasher models come with an additional Ethernet interface to communicate with the host system.<br />
These Flashers also come with a built-in webserver which allows some basic setup of the emulator,<br />
e.g. configuring a default gateway which allows using it even in large intranets. For more information,<br />
please refer to [[#TCP Services | TCP Services]].<br />
<br />
==== Connecting the first time ====<br />
<br />
When connecting Flasher the first time, it attempts to acquire an IP address via DHCP.<br />
The recommended way for finding out which IP address has been assigned to Flasher is, to use the J-Link Configurator.<br />
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.<br />
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''.<br />
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,<br />
please refer to ''UM08001, J-Link / J-Trace User Guide'', chapter ''Setup'', section ''Setting up the IP interface''.<br />
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]].<br />
<br />
=== Operating modes ===<br />
<br />
All Flashers except the Flasher ATE are able to boot in 3 different modes:<br />
<br />
* PC-based mode<br />
* Stand-alone mode<br />
* File access mode<br />
<br />
{{Note|1=The Flasher ATE only supports the stand-alone mode.}}<br />
<br />
'''Definition PC-based mode'''<br><br />
Flasher is connected to a PC via USB/Ethernet and controlled by a PC application (J-Flash).<br />
If there is an RS232 connection to a PC, does not have any influence on if PC-based mode is entered or not.<br />
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, ...)<br />
<br />
'''Definition Stand-alone mode'''<br><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.<br />
<br />
'''Definition file access mode'''<br><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.<br />
In this mode, Flasher enumerates as a mass storage device (like an USB Stick) at the host PC.<br />
In this mode, configuration + data files can be manually placed on the Flasher and the Flasher logfile can be read out.<br />
If you are using a self-powered Flasher such as the Flasher Portable Plus, the Flasher must be turned off before connecting it.<br />
<br />
==== PC-based mode ====<br />
If you want to use Flasher for the first time you need to install the J-Link software and documentation package.<br />
After installation, connect Flasher to the host PC via USB or Ethernet.<br />
For more information about how to install the J-Link software and documentation package please refer to [[J-Link Software and Documentation Pack]].<br />
<br />
===== Connecting the target system =====<br />
<br />
'''Power-on sequence'''<br><br />
In general, Flasher should be powered on before connecting it with the target device.<br />
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.<br />
Power-on the device after you connected Flasher to it. Flasher will boot in "PC-based mode".<br />
<br />
'''Verifying target device connection with J-Link.exe'''<br><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.<br />
Then start the J-Link command line tool <tt>JLink.exe</tt>,<br />
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.<br />
The screenshot below shows the output of <tt>JLink.exe</tt>.<br />
<br />
[[File:flasher_jlinkmode.gif]]<br />
<br />
===== LED status indicators =====<br />
<br />
In PC-based mode, there are also certain LED status codes defined:<br />
<br />
{| class="seggertable"<br />
|-<br />
! # !! Status of LED !! Meaning<br />
|-<br />
| 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.<br />
|-<br />
| 0 || GREEN<br>constant || Flasher enumeration process is complete and it is ready to be controlled by a PC application.<br />
|-<br />
|}<br />
<br />
==== Stand-alone mode ====<br />
<br />
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]].<br />
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).<br />
In the "stand-alone mode" Flasher can be used as a stand-alone flash programmer.<br><br />
<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]].}}<br />
<br />
===== LED status indicators =====<br />
Progress and result of an operation is indicated by Flasher's LEDs. The behavior is different for J-Link and stand-alone mode.<br />
For a definition of the different modes, please refer to [[#Operating modes | Operating modes]].<br />
The following table describes the behavior of the LEDs in stand-alone mode.<br />
<br />
{| class="seggertable"<br />
|-<br />
! # !! Status of LED !! Meaning<br />
|-<br />
| 0 || GREEN<br>constant || Flasher waits for a start trigger to perform an operation in stand-alone mode.<br />
|-<br />
| 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><br />
|-<br />
| 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.<br />
|-<br />
|}<br />
Older Flasher models have a different behavior.<br />
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:<br />
<br />
* 1621xxxxx (Flasher ARM V2)<br />
* 1630xxxxx (Flasher ARM V3)<br />
* 4210xxxxx (Flasher PPC V1)<br />
* 4110xxxxx (Flasher RX V1)<br />
<br />
{| class="seggertable"<br />
|-<br />
! # !! Status of LED !! Meaning<br />
|-<br />
| 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.<br />
|-<br />
| 1 || GREEN<br>constant || Connect to target and perform init sequence.<br />
|-<br />
| 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><br />
|-<br />
| 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.<br />
|-<br />
|}<br />
<br />
==== File access mode ====<br />
<br />
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".<br />
If you are using a self-powered Flasher such as the Flasher Portable Plus, the Flasher must be turned off before connecting it.<br />
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.<br />
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>.<br />
<br />
[[File:flasher_mode_msd.gif]]<br />
<br />
<tt>FLASHER.CFG</tt> contains the configuration settings for programming the target device and <tt>FLASHER.DAT</tt> contains the data to be programmed.<br />
<tt>FLASHER.LOG</tt> contains all logging information about the commands, performed in stand-alone mode.<br />
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><br />
<br />
Currently, J-Flash does not support to configure Flasher for automated serial number programming.<br><br />
<br />
If you want to configure multiple Flasher for the same target you do not have to use J-Flash all the time.<br />
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".<br />
<br />
=== Setting up Flasher for stand-alone mode ===<br />
{{Note| All Options how to set up the Flasher for stand-alone mode you can find here: [[Flasher/Download project to Flasher|Download project to the Flasher]]}}<br />
<br />
In order to set up Flasher for the stand-alone mode it needs to be configured once using the J-Flash software.<br />
For more information about J-Flash, please refer to the ''J-Flash User Guide''.<br><br />
<br />
After starting J-Flash, open the appropriate J-Flash project for the target Flasher shall be configured for, by selecting '''File''' -> '''Open Project'''.<br />
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><br />
<br />
After the appropriate project has been opened / created, the data file which shall be programmed needs to be loaded, by selecting '''File''' -> '''Open'''.<br />
After this J-Flash should look like in the screenshot below.<br />
<br />
[[File:jflash_projectfile_datafile.gif]]<br />
<br />
Before downloading the configuration (project) and program data (data file) to Flasher, the connection type (USB/IP) needs to be selected in the project.<br />
These settings are also saved on a per-project basis, so this also only needs to be setup once per J-Flash project.<br />
The connection dialog is opened by clicking '''Options''' -> '''Project settings''' -> '''General'''.<br />
<br />
[[File:jflash_connection_dialog.gif]]<br />
<br />
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.<br />
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.<br />
The user then can simply select the Flash he wants to download the configuration to.<br />
<br />
[[File:EmuSelectionDialog.gif]]<br />
<br />
In order to download the configuration and program data to the Flasher, simply select '''File''' -> '''Download config & data file to Flasher'''.<br />
<br />
[[File:jflash_download_to_emul.gif]]<br />
<br />
The J-Flash log window indicates that the download to the emulator was successful.<br />
<br />
[[File:jflash_download_to_emu_succ.gif]]<br />
<br />
From now on, Flasher can be used in stand-alone mode (without host PC interaction) for stand-alone programming.<br />
<br />
==== Preparing for stand-alone operation manually ====<br />
<br />
As an alternative, J-Flash can also be used to save config and data file to a hard drive.<br><br />
<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,<br />
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.<br />
<br />
'''Creating config and data files'''<br><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><br />
<br />
For some devices, additional files (*.PEX) are needed.<br />
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.<br />
<br />
'''About *.PEX files'''<br><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,<br />
the following needs to be taken care of:<br><br />
<br />
For some devices, special connect, reset etc. sequences are necessary which are stored in so-called *.PEX files on the Flasher.<br><br />
<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><br />
<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><br />
The *.PEX files need to be placed in a subdirectory with the same name as the corresponding *.cfg file.<br />
J-Flash creates a directory with the correct name automatically when a config file is created.<br><br />
<br />
Example:<br><br />
<br />
MyConf0 is a project for a device that requires a *.PEX file for connect.<br><br />
MyConf1 is a project for a device that requires no *.PEX file at all.<br />
<br />
[[File:PEX_File_Flasher.png]]<br />
<br />
=== Universal Flash Loader mode ===<br />
<br />
As an alternative to the stand-alone mode, configured via J-Flash, there is the Universal Flash Loader mode.<br />
While the normal stand-alone mode relies on using the debug interface of the device, the Universal Flash Loader<br />
mode uses device or vendor specific programming interfaces and protocols and therefore it is independent of the<br />
CPU core.<br><br />
<br />
The Universal Flash Loader is available for the following Flasher models:<br />
* Flasher PRO<br />
* Flasher Compact<br />
* Flasher Portable PLUS<br />
<br />
For some of the supported devices, SEGGER offers specific adapters.<br />
<br />
==== Preparing manually ====<br />
<br />
The Universal Flash Loader uses an configuration file (*.UNI), a device specific flash programming algorithm (*.PEX) and a data file (*.DAT).<br />
<br />
===== Configuration =====<br />
<br />
The configuration file basically is split into three parts.<br />
The first part, the section [DEVICE], controls the generic behavior of the Universal Flash Loader.<br />
It specifies which protocol driver and data file to use. It allows enabling and configuring target power<br />
and it defines which actions to perform.<br />
The second part consists of one or more [BANKx] sections, which contain information about the memories.<br />
The third part, the section [CONFIG], includes configuration settings for the protocol driver.<br><br />
<br />
An .UNI file might look as follows:<br><br />
<br />
<source lang="c"><br />
[OPTIONS]<br />
TargetPower = "0"<br />
ChipErase = "0"<br />
<br />
[TASKS]<br />
CheckBlank = "1"<br />
Erase = "1"<br />
Program = "1"<br />
Verify = "1"<br />
Secure = "1"<br />
<br />
[DEVICE]<br />
Algo = "RL78.PEX"<br />
Data = "ALL_6k.dat"<br />
<br />
[BANK0]<br />
; Code Flash<br />
Base = "0x00000000"<br />
Size = "0x00004000"<br />
Sect = "0x00000400"<br />
<br />
[BANK1]<br />
; Data Flash<br />
Base = "0x000F1000"<br />
Size = "0x00000800"<br />
Sect = "0x00000400"<br />
<br />
[CONFIG]<br />
BaudRate = "1000000"<br />
ClearConfigOnConnect = "0x00"<br />
Security = "0xFF"<br />
ShieldStart = "0x0000"<br />
ShieldEnd = "0x000F"<br />
</source><br />
<br />
'''[OPTIONS]'''<br><br />
'''TargetPower'''<br><br />
If set to a value >0, power is applied to the target.<br />
The value defines the delay (in ms) after enabling the target power supply and before starting to communicate with the target.<br />
<br />
'''ChipErase'''<br><br />
If set to 1, the chip erase function is called for erasing the chip.<br><br />
{{Note|1=Do not enable this setting if the flash programming algorithm does not support chip erase.}}<br />
<br />
'''[TASKS]'''<br><br />
'''CheckBlank'''<br><br />
Defines if a blank check should be performed before erasing a sector.<br />
<br />
'''Erase'''<br><br />
Defines if the sector should be erased before programming.<br />
<br />
'''Program'''<br><br />
Defines if the sector should be programmed.<br />
<br />
'''Verify'''<br><br />
Defines if the sector should be verified after programming.<br />
<br />
'''Secure'''<br><br />
Defines if the device should be secured or protected against read-out after verifying.<br />
<br />
'''[DEVICE]'''<br><br />
'''Algo'''<br><br />
File name of the flash programming algorithm. This file is provided by SEGGER and will typically support a series of devices.<br />
<br />
'''Data'''<br><br />
File name of the data file to program. The Flasher only supports the Flasher .dat file format.<br />
Flasher .dat files can be generated by J-Flash or Universal Flash Loader and offer high performance together with high flexibility.<br />
<br />
'''[BANKx]'''<br><br />
x blocks with configuration data for the flash banks. All three parameters (Base, Size and Sect) are mandatory.<br />
<br />
'''Base'''<br><br />
Base address of the flash bank.<br />
<br />
'''Size'''<br><br />
Total size of the flash bank.<br />
<br />
'''Sect'''<br><br />
Sector size of the flash bank.<br />
<br />
'''[CONFIG]'''<br><br />
This section includes specific configuration data for the flash programming algorithm.<br><br />
There are no general parameters.<br />
<br />
{{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. }}<br />
<br />
==== Preparing using the PC utility ====<br />
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.<br />
<br />
[[File:Universal Flash Loader.png]]<br />
<br />
The Universal Flash Loader Configurator comes with a large list of devices and flash programming algorithms. If you are going to<br />
use a device from one of the supported families which currently is not available in the utility, feel free to contact the support.<br />
<br />
=== Multiple File Support ===<br />
<br />
It is also possible to have multiple data files and config files on Flasher, to make Flasher more easy to use in production environment.<br />
To choose the correct configuration file and data file pair, a <tt>FLASHER.INI</tt> file is used.<br />
This init file contains a <tt>[FILES]</tt> section which describes which configuration file and which data file should be used for programming.<br />
A sample content of a FLASHER.INI file is shown below:<br><br />
<br />
<source><br />
[FILES]<br />
DataFile = "Flasher1.dat"<br />
ConfigFile = "Flasher1.cfg"<br />
</source><br />
<br />
Using this method all configuration files and data files which are used in the production only have to be downloaded once.<br />
From there on a configuration file / data file pair can be switched by simply replacing the <tt>FLASHER.INI</tt> by a new one,<br />
which contains the new descriptions for the configuration file and data file. The <tt>FLASHER.INI</tt> can be replaced in two ways:<br />
<ol><br />
<li>Boot Flasher in file access mode in order to replace the <tt>FLASHER.INI</tt></li><br />
<li><br />
If Flasher is already integrated into the production line, runs in stand-alone mode and can not be booted in other mode:<br />
Use the file I/O commands provided by the ASCII interface of Flasher, to replace the <tt>FLASHER.INI</tt>.<br />
For more information about the file I/O commands, please refer to [[#File I/O commands | File I/O commands]].<br />
</li><br />
</ol><br />
{{Note|1=Flasher with hardware version 4 and lower only supports 8.3 filenames only (8 characters filename, 3 characters file extension). Using longer filenames may result in incorrect operation.}}<br />
<br />
==== Flasher Portable specifics ====<br />
<br />
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><br />
<br />
Which config / data file pair is used for which image selection position is determined by the contents of the FLASHER.INI.<br />
For this, the FLASHER.INI contents in the <tt>[FILES]</tt> section have been extended.<br />
The sample below shows how to enable the user to select between four different images on the Flasher portable via the select / arrow button:<br />
<br />
<source><br />
[FILES]<br />
DataFile = "First.dat"<br />
ConfigFile = "First.cfg"<br />
DataFile1 = "Second.dat"<br />
ConfigFile1 = "Second.cfg"<br />
DataFile2 = "Third.dat"<br />
ConfigFile2 = "Third.cfg"<br />
DataFile3 = "Fourth.dat"<br />
ConfigFile3 = "Fourth.cfg"<br />
</source><br />
<br />
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.<br />
From there on, switching between the files can be done by simply using the selection button of Flasher Portable.<br />
<br />
===== Example =====<br />
<br />
1 Target, 2 Datafiles (e.g. boot loader und application) --> same configuration file (*.CFG) but different data files (*.DAT) should be used.<br><br />
<br />
* Open pre-configured J-Flash project<br />
* File -> Save Flasher config file ... (DEFAULT.CFG)<br />
* Open data file 1 (boot loader)<br />
* File -> Save Flasher data file ... (BOOT.DAT)<br />
* Open data file 2 (application)<br />
* File -> Save Flasher data file ... (APP.DAT)<br />
* Create the a FLASHER.INI file (content see below)<br />
* Connect the Flasher in file access mode to the PC<br />
* Copy DEFAULT.CFG, BOOT.DAT, APP.DAT and FLASHER.INI on the Flasher<br />
<br />
FLASHER.INI content:<br><br />
<br />
<source><br />
[FILES]<br />
DataFile = "BOOT.DAT"<br />
ConfigFile = "DEFAULT.CFG"<br />
DataFile1 = "APP.DAT"<br />
ConfigFile1 = "DEFAULT.CFG"<br />
</source><br />
<br />
==== Flasher Portable PLUS specifics ====<br />
<br />
Flasher Portable PLUS allows to choose between 99 configuration and data file pairs during runtime by using the select button on the front of Flasher Portable PLUS.<br><br />
<br />
Which config / data file pair is used for which image selection position is determined by the contents of the FLASHER.INI.<br />
For this, the FLASHER.INI may contain several <tt>[BATCH]</tt> sections.<br />
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:<br />
<br />
<source><br />
[BATCH]<br />
DataFile = "First.dat"<br />
ConfigFile = "First.cfg"<br />
[BATCH1]<br />
DataFile = "Second.dat"<br />
ConfigFile = "Second.cfg"<br />
[BATCH2]<br />
DataFile = "Third.dat"<br />
ConfigFile = "Third.cfg"<br />
[BATCH7]<br />
DataFile = "Proj_8.dat"<br />
ConfigFile = "Proj_8.cfg"<br />
[BATCH15]<br />
DataFile = "Proj_16.dat"<br />
ConfigFile = "Proj_16.cfg"<br />
</source><br />
<br />
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.<br />
From there on, switching between the files can be done by simply using the selection button of Flasher Portable PLUS.<br />
<br />
Please also consider the chapter [[#Batch Programming in stand-alone mode | Batch Programming in stand-alone mode]].<br />
<br />
{{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.}}<br />
{{Note|1=You may have gaps in the list. The missing entries will be skipped when selecting the next configuration.}}<br />
{{Note|1=The <tt>[Files]</tt> section is supported by the Flasher Portable PLUS, too. But the number of configuration is limited to four.}}<br />
<br />
===== Example =====<br />
<br />
1 Target, 2 Datafiles (e.g. boot loader und application) --> same configuration file (*.CFG) but different data files (*.DAT) should be used.<br><br />
<br />
* Open pre-configured J-Flash project<br />
* File -> Save Flasher config file ... (DEFAULT.CFG)<br />
* Open data file 1 (boot loader)<br />
* File -> Save Flasher data file ... (BOOT.DAT)<br />
* Open data file 2 (application)<br />
* File -> Save Flasher data file ... (APP.DAT)<br />
* Create the a FLASHER.INI file (content see below)<br />
* Connect the Flasher in file access mode to the PC<br />
* Copy DEFAULT.CFG, BOOT.DAT, APP.DAT and FLASHER.INI on the Flasher<br />
<br />
FLASHER.INI content:<br><br />
<br />
<source><br />
[BATCH]<br />
DataFile = "BOOT.DAT"<br />
ConfigFile = "DEFAULT.CFG"<br />
DisplayName = "Bootloader"<br />
[BATCH1]<br />
DataFile = "APP.DAT"<br />
ConfigFile = "DEFAULT.CFG"<br />
DisplayName = "Application"<br />
[BATCH2]<br />
DataFile = "BOOT.DAT"<br />
ConfigFile = "DEFAULT.CFG"<br />
DataFile1 = "APP.DAT"<br />
ConfigFile1 = "DEFAULT.CFG"<br />
DisplayName = "BL and App"<br />
</source><br />
<br />
=== Custom labels ===<br />
<br />
Flasher supports to assign custom labels to configurations ("Project Display Text" in U-Flash). This allows to specify easy to remember names for configurations that are stored on the Flasher.<br />
<br />
==== Hardware and software requirements ====<br />
This feature is supported by the following models:<br />
* Flasher Portable PLUS<br />
<br />
This feature is supported since V6.30e of the software package and firmware<br />
<br />
==== Assigning labels ====<br />
The configuration and data file pairs are specified in the <tt>FLASHER.INI</tt> file:<br />
<source><br />
[FILES]<br />
DataFile = "IMAGE0.dat"<br />
ConfigFile = "IMAGE0.cfg"<br />
DataFile1 = "IMAGE1.dat"<br />
ConfigFile1 = "IMAGE1.cfg"<br />
</source><br />
<br />
By default, Flasher will show the names of the configuration and data file:<br />
[[File:FW1_smartwatch_nolabel.png]]<br />
[[File:FW2_smart_meter_nolabel.png]]<br />
<br />
By adding <tt>DisplayName</tt>, <tt>DisplayName1</tt>, ... keys to the <tt>FLASHER.INI</tt>, a custom label can be shown instead:<br />
<source><br />
[FILES]<br />
DisplayName = "FW smartwatch"<br />
DataFile = "IMAGE0.dat"<br />
ConfigFile = "IMAGE0.cfg"<br />
DisplayName1 = "FW smart meter"<br />
DataFile1 = "IMAGE1.dat"<br />
ConfigFile1 = "IMAGE1.cfg"<br />
</source><br />
<br />
The images will now be shown as follows:<br />
[[File:FW1_smartwatch_label.png]]<br />
[[File:FW2_smart_meter_label.png]]<br />
<br />
==== Considerations ====<br />
* 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.<br />
<br />
=== Programming multiple targets ===<br />
<br />
It is possible to program multiple targets which are located in a JTAG chain.<br />
The targets will be programmed each with a configuration and a data file.<br><br />
The configuration for the desired target must be selected before it can be programmed,<br />
this can be done with the <tt>#SELECT</tt> command.<br />
For more information how to use the <tt>#SELECT</tt> command please refer to the [[#ASCII_command_interface|ASCII command interface]].<br />
<br />
'''Example'''<br><br />
Three devices should be programmed.<br><br />
<br />
JTAG Chain: ''TDI'' --> ''Device2'' --> ''Device1'' --> ''Device0'' --> ''TDO''<br><br />
<br />
Three configurations would be stored on the flasher:<br><br />
<br />
Config 0: Configured to program Device0 (DEVICE0.CFG, DEVICE0.DAT)<br><br />
Config 1: Configured to program Device1 (DEVICE1.CFG, DEVICE1.DAT)<br><br />
Config 2: Configured to program Device2 (DEVICE2.CFG, DEVICE2.DAT)<br><br />
<br />
Selection and programming of the target will be done via the ASCII interface:<br><br />
<br />
<source><br />
#SELECT DEVICE0<br />
#AUTO<br />
#SELECT DEVICE1<br />
#AUTO<br />
#SELECT DEVICE2<br />
#AUTO<br />
</source><br />
<br />
==== Programming multiple targets with J-Flash ====<br />
<br />
Programming multiple targets can also be done via J-Flash using the command line interface.<br />
For this each target must be handled with its own project file.<br />
<br />
'''Example'''<br><br />
<br />
<source><br />
JFlash.exe -openproj"Device0.jflash" -open"Device0.hex" -auto -exit<br />
JFlash.exe -openproj"Device1.jflash" -open"Device1.hex" -auto -exit<br />
JFlash.exe -openproj"Device2.jflash" -open"Device2.hex" -auto -exit<br />
</source><br />
<br />
=== Batch Programming in stand-alone mode ===<br />
<br />
Batch programming allows to execute different stand-alone mode jobs in batch to be executed in immediate succession, without any user interaction in between.<br />
This can be used for example to program multiple targets in a JTAG-Chain or multiple data files to a target.<br><br />
A batch may contains an unlimited number of configurations which consist of a data file (*.DAT) and config file (*.CFG).<br />
For further information regarding config and data files, please refer to [[#Preparing for stand-alone operation manually | Preparing for stand-alone operation manually]].<br><br />
In order to specify the batch jobs, a FLASHER.INI file is used.<br />
This init file contains a [BATCH] section which describes which configuration pairs (*.DAT and *.CFG file) should be used for each batch job.<br />
A sample content of a FLASHER.INI file is shown below:<br><br />
<br />
<source><br />
[BATCH]<br />
DataFile = "Flasher0.dat"<br />
ConfigFile = "Flasher0.cfg"<br />
DataFile1 = "Flasher1.dat"<br />
ConfigFile1 = "Flasher1.cfg"<br />
</source><br />
<br />
[[File:Batch_Jobs.bmp]]<br />
<br />
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.<br />
<br />
<br />
[[File:Batch_Programming.bmp]]<br />
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<br />
currently executed action.<br />
<br />
<br />
[[File:Batch_Result.bmp]]<br />
The result of the programming will be shown on the screen after finishing all jobs.<br />
<br />
<br />
Creating / Replacing of the FLASHER.INI file can done in two ways:<br><br />
<ol><br />
<li>Boot Flasher in file access mode in order to replace the FLASHER.INI</li><br />
<li><br />
If Flasher is already integrated into the production line, runs in stand-alone mode and can not be booted in other mode:<br />
Use the file I/O commands provided by the ASCII interface of Flasher, to replace the FLASHER.INI .<br />
For more information about the file I/O commands, please refer to [[#File I/O commands | File I/O commands]].<br />
In case of an error occurred during execution, the Flasher terminates the entire batch processing.<br />
</li><br />
</ol><br />
{{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.}}<br />
{{Note|1=The Flasher with hardware version 4 and lower supports 8.3 filenames only (8 characters filename, 3 characters file extension). Using longer filenames may result in incorrect operation.}}<br />
<br />
==== Flasher Portable specifics ====<br />
<br />
Flasher Portable allows to choose between four different batches during runtime by using the select/arrow button on the front of Flasher Portable.<br />
Which batch configuration is used for which image selection position is specified in the FLASHER.INI.<br />
For this, the FLASHER.INI contents in the [BATCH] section have been extended.<br />
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><br />
<br />
<source><br />
[BATCH]<br />
DataFile = "Flasher0.dat"<br />
ConfigFile = "Flasher0.cfg"<br />
DataFile1 = "Flasher1.dat"<br />
ConfigFile1 = "Flasher1.cfg"<br />
DataFile2 = "Flasher2.dat"<br />
ConfigFile2 = "Flasher2.cfg"<br />
[BATCH1]<br />
DataFile = "TEST.dat"<br />
ConfigFile = "Test.cfg"<br />
[BATCH2]<br />
DataFile = "VALIDATE.dat"<br />
ConfigFile = "Flasher0.cfg"<br />
</source><br />
<br />
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.<br />
From there on, switching between the batches can be done by simply using the selection button of Flasher Portable.<br />
<br />
<br />
<br />
==== Examples ====<br />
<br />
'''Example 1:''' Programming two Data files to the same target<br><br />
<br />
* Open your J-Flash project.<br />
* Use File -> Save Flasher config file... to save the .CFG file (in this example: STM32F4.CFG).<br />
* Select the first binary and use File -> Save Flasher Data file... to save the first .DAT file (in this example: DATA0.DAT).<br />
* Select the second binary and use File -> Save Flasher Data file... to save the second data file .DAT file (in this example: DATA1.DAT).<br />
* Copy the Files to the Flasher e.g. by using file access mode.<br />
* Create a FLASHER.INI file in the root directory of the Flasher.<br />
* Exemplary content of FLASHER.INI:<br><br />
<source><br />
[BATCH]<br />
DataFile = "DATA0.dat"<br />
ConfigFile = "emPower.cfg"<br />
DataFile1 = "DATA1.dat"<br />
ConfigFile1 = "emPower.cfg"<br />
</source><br />
<br />
<br />
'''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><br />
Example scenario: 2 Devices in a JTAG chain, a STM32F1 and a STM32F4. <br><br />
<br />
* Follow the same as described before and additionally:<br />
* Create one project file per target (and create a .CFG file of each one).<br />
* Make sure each project file is configured correctly, especially the JTAG-Chain position (See UM8003 "J-Flash" for more detailed info).<br />
* Exemplary content of FLASHER.INI:<br><br />
<source><br />
[BATCH]<br />
DataFile = "F1DATA.dat"<br />
ConfigFile = "STM32F1.cfg"<br />
DataFile1 = "F4DATA0.dat"<br />
ConfigFile1 = "STM32F4.cfg"<br />
DataFile2 = "F4DATA1.dat"<br />
ConfigFile2 = "STM32F4.cfg"<br />
</source><br />
<br />
'''Example 3:''' Using multiple Batch sections with Flasher Portable.<br><br />
Example scenario: 2 Devices in a JTAG chain, a STM32F1 and a STM32F4.<br><br />
Selection 1 will program the STM32F1 target.<br><br />
Selection 2 will program the STM32F4 target using "F4DATA0.dat".<br><br />
Selection 3 will program the STM32F4 target using "F4DATA1.dat".<br><br />
Selection 4 will execute 1, 2 and 3 in sequence.<br><br />
* Exemplary content of FLASHER.INI:<br><br />
<source><br />
[BATCH]<br />
DataFile = "F1DATA.dat"<br />
ConfigFile = "STM32F1.cfg"<br />
[BATCH1]<br />
DataFile = "F4DATA0.dat"<br />
ConfigFile = "STM32F4.cfg"<br />
[BATCH2]<br />
DataFile = "F4DATA1.dat"<br />
ConfigFile = "STM32F4.cfg"<br />
[BATCH3]<br />
DataFile = "F1DATA.dat"<br />
ConfigFile = "STM32F1.cfg"<br />
DataFile1 = "F4DATA0.dat"<br />
ConfigFile1 = "STM32F4.cfg"<br />
DataFile2 = "F4DATA1.dat"<br />
ConfigFile2 = "STM32F4.cfg"<br />
</source><br />
<br />
=== Serial number programming ===<br />
<br />
Flasher supports programming of serial numbers. In order to use the serial number programming feature,<br />
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><br />
<br />
In general, Flasher supports two ways of programming a serial number into the target:<br />
<br />
#<br />
#* Programming continuous serial numbers.<br />
#* The serial number is 1-4 bytes in size.<br />
#* The start serial number, increment, serial number size, and address are configured in the J-Flash project.<br />
#<br />
#* Programming custom serial numbers from a serial number list file.<br />
#* The start line within the serial number list file to get the next serial number bytes, line increment, serial number size, and address is configured in the J-Flash project.<br />
#* The serial number list file needs to be specified and created by the user.<br />
<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.}}<br />
<br />
==== Serial number settings ====<br />
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.<br />
This is done by enabling the '''Program serial number''' option as shown in the screenshot and table below:<br />
<br />
[[File:UM08039_SN_Sample_JFlashSettings.png]]<br />
<br />
{| class="seggertable"<br />
|-<br />
!| Setting || Meaning<br />
|-<br />
| <tt>Address</tt> || The address the serial number should be programmed at.<br />
|-<br />
| <tt>Length</tt> ||<br />
The length of the serial number (in bytes) that 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 8 is selected as length, the serial number and its complement are programmed at the given address.<br />
* In case a serial number list file is given, the 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 '''Length''', the remaining bytes are filled with 0s. No complements etc. are added to the serial number.<br />
|-<br />
| <tt>Next SN</tt> ||<br />
* In case no serial number list file is given, '''Next SN''' is the next serial number which should be programmed. The serial number is always stored in flash memory in little-endian format.<br />
* In case a serial number list file is given, '''Next SN''' describes the line of the serial number list file where to read the next serial number bytes from. The Flasher starts counting at line 0, so in order to start serial number programming with the first line of the <tt>SNList.txt</tt>, '''Next SN''' needs to be set to 0.<br />
|-<br />
| <tt>Increment</tt> || Specifies by how much '''Next SN''' is incremented.<br />
|}<br />
<br />
=== Serial number file ===<br />
When selecting '''File -> Download serial number file to Flasher''', J-Flash will create a serial number file named as <tt><JFlashProjectName>_Serial.txt</tt>.<br />
This file is downloaded as <tt>Serial.txt</tt> on the Flasher.<br />
The file is generated based on the serial number settings in the J-Flash project and will contain the value defined by the '''Next SN''' option.<br />
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.<br />
<br />
==== Serial number list file ====<br />
<br />
In order to program custom serial numbers which can not be covered by the standard serial number scheme provided by J-Flash<br />
(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.<br />
<br />
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.<br />
This file is downloaded as <tt>SNList.txt</tt> on the 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<br />
* Each byte of the serial number is described by two hexadecimal digits.<br />
<br />
'''Example'''<br><br />
A 8-byte serial number should be programmed at address 0x08000000.<br><br />
<br />
It should be programmed as follows in the memory:<br><br />
<br />
<tt>0x08000000: 0x01 0x02 0x03 0x04 0x55 0x66 0x77 0x88</tt><br><br />
<br />
The serial number list file should look as follows:<br><br />
<br />
<tt>0102030455667788</tt><br />
<br />
[[File:SN_SNList.gif]]<br />
<br />
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><br />
<br />
Which line Flasher will read at the next programming cycle, is configured via the <tt>Next SN</tt> option in J-Flash.<br />
For more information, please refer to [[#Serial number settings | Serial number settings]].<br />
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><br />
<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.}}<br />
{{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.}}<br />
<br />
==== Programming process ====<br />
<br />
Flasher will increment the serial number in SERIAL.TXT by the value defined in <tt>Increment</tt>, after each successful programming cycle.<br><br />
<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><br />
<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.<br />
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.}}<br />
<br />
==== Downloading serial number files to Flasher ====<br />
<br />
Downloading the serial number files needs to be done explicitly by selecting '''File-> Download serial number file to Flasher'''.<br />
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.<br />
<br />
==== Sample setup ====<br />
<br />
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.<br />
<br />
'''Defining serial number address, length and start value'''<br><br />
In the J-Flash project the following needs to be defined:<br><br />
* <tt>Address</tt> is 0x08001000<br />
* <tt>Next SN</tt> is 1234567<br />
* <tt>Increment</tt> is 1<br />
* <tt>Len</tt> is 4 (bytes)<br />
<br />
[[File:SN_Sample_JFlashSettings.gif]]<br />
<br />
'''Downloading configuration, data and serial number to Flasher.'''<br><br />
After setting up the rest of the configuration (Target interface etc.) and selecting an appropriate data file, the configuration,<br />
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><br />
<br />
[[File:SN_Sample_DownloadToFlasher.gif]]<br />
<br />
After downloading the serial number to Flasher, J-Flash also created the <tt><JFlashProjectName>_Serial.txt</tt>.<br />
<br />
[[File:SN_Sample_SerialFileCreated.gif]]<br />
<br />
Now Flasher is prepared to program the 8-byte serial number.<br />
<br />
=== Patch file support ===<br />
<br />
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.<br />
Before starting programming process in stand-alone mode, Flasher will look for a file named <tt>Patches.txt</tt> being present on the Flasher.<br />
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><br />
<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.<br />
<br />
'''Syntax'''<br><br />
<!-- LG xxxxxxxxx '==' is shown as '=', so instead use '= ='--><br />
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><br />
<br />
<tt><NumPatches>,<Addr>,<NumBytes>:<nowiki><Data></nowiki>,<Addr>,<NumBytes>:<nowiki><Data></nowiki>,<Addr>,<NumBytes>:<nowiki><Data></nowiki>,<Addr>,<NumBytes>:<nowiki><Data></nowiki>\r\n</tt><br><br />
<br />
Find below a table which describes each parameter.<br><br />
{| class="seggertable"<br />
|-<br />
! Parameter !! Description<br />
|-<br />
| <tt><NumPatches></tt> || Describes the number of patches in this patch line. Max. value is 4.<br />
|-<br />
| <tt><Addr></tt> || Describes the address to be patched. Value is expected in hex.<br />
|-<br />
| <tt><NumBytes></tt> || Number of bytes for the current patch. Max. value is 20h (32 in decimal). Value is expected in hex.<br />
|-<br />
| <tt><nowiki><Data></nowiki></tt> || Describes the data to be patched. <nowiki><Data></nowiki> is always expected as 2 hexadecimal characters per byte.<br />
|-<br />
|}<br />
<br />
{{Note|1=All values are expected in hexadecimal format (hex).<br><br />
<nowiki><Data></nowiki> section is always preceded by ":", not ",".}}<br />
<br />
'''Example'''<br><br />
Below is an example patch.<br><br />
<br />
<source><br />
1,18,4:01020304\r\n<br />
</source><br />
<br />
Patching the following data:<br />
<br />
[[File:data_before.png]]<br />
<br />
with the example patch will result in the following data:<br />
<br />
[[File:data_afterwards.png]]<br />
<br />
Please note that as mentioned earlier patching undefined memory locations will be ignored.<br><br />
Applying the example patch to the following data:<br />
<br />
[[File:undefined_mem_before.png]]<br />
<br />
Causes no data to be patched, as can be seen in the following image:<br />
<br />
[[File:undefined_mem_no_token.png]]<br />
<br />
Therefore it is necessary to first write placeholder data to the memory locations which are supposed to be patched.<br><br />
An example for such a placeholder can be seen here:<br />
<br />
[[File:undefined_mem_token.png]]<br />
<br />
Please note that the actual data inside the placeholder does not matter to the Flasher,<br />
because it is overwritten during patching.<br><br />
Applying the example patch will now work as expected:<br />
<br />
[[File:undefined_mem_after.png]]<br />
<br />
'''Single patch via RS232'''<br><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><br />
<br />
Send the <tt>#AUTO PATCH <NumPatches>,<Addr>,<NumBytes>:<nowiki><Data></nowiki></tt><br><br />
<br />
command via Flasher ASCII interface. The parameters have the same function as described in the table above.<br />
<br />
==== Newline encoding ====<br />
<br />
In general, for all patch files, init files etc. Flasher supports both newline encodings:<br><br />
<br />
* Windows: \r\n<br />
* Unix/Mac: \n<br />
<br />
All parser functionality etc. are written to be independent from the host operating system.<br />
<br />
=== Limiting the number of programming cycles ===<br />
<br />
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.<br />
To make use of this feature, a file called <tt>Cntdown.txt</tt> needs to be placed on the Flasher.<br />
This file simply contains a decimal number (32-bit unsigned integer) that describes how many programming cycles can be performed with the current setup.<br />
<br />
[[File:CntdownTxtContent.jpg]]<br />
<br />
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><br />
<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>.}}<br />
<br />
==== Changed fail/error LED indicator behavior ====<br />
<br />
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><br />
<br />
* The red error/fail LED will lit for 1 second<br />
* After this, it will blink/toggle x times @ 5 Hz, indicating the number of programming cycles left. (blinking 5 times for 5 cycles left, ...)<br />
<br />
==== Required Flasher hardware version for Cntdown.txt support ====<br />
<br />
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><br />
<br />
* 1621xxxxx (Flasher ARM V2)<br />
* 1630xxxxx (Flasher ARM V3)<br />
* 4210xxxxx (Flasher PPC V1)<br />
* 4110xxxxx (Flasher RX V1)<br />
<br />
All other models / hardware versions support limiting of programming cycles.<br />
<br />
=== Authorized flashing ===<br />
<br />
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.<br />
without the possibility to read out the Flasher contents via file access mode, FILE I/O functionality (J-Link Commander) or RS232 commands.<br />
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.<br />
<br />
==== Creating / Adding the secure area ====<br />
<br />
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.<br />
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.<br />
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><br />
<br />
[[File:CreateSecArea.jpg]]<br />
<br />
The following secure area related commands are available in J-Link Commander:<br><br />
<br />
* securearea create<br />
* securearea remove<br />
<br />
{{Note|1=When creating or removing the <tt>secure area</tt>, all configuration and data files being stored on the Flasher, are lost.<br />
Please make sure that they are not needed anymore, before adding / removing the security area.}}<br />
<br />
==== Moving files to the secure area ====<br />
<br />
Before moving configuration + data to the <tt>secure area</tt>, proper functionality of the setup should be tested in stand-alone mode.<br />
Once the setup is working as expected, do the following, to move the configuration + data into the <tt>secure area</tt>:<br><br />
<br />
* Start Flasher in file access mode (For more info, please refer to: [[#file access mode | file access mode]])<br />
<br />
[[File:FilesBeforeSecure.png]]<br />
<br />
* Create a folder "<tt>_SECURE</tt>"<br />
* Move all files that shall be moved to the <tt>secure area</tt>, into this folder<br />
<br />
[[File:FilesAfterSecure.png]]<br />
<br />
* 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.<br />
* Now Flasher can be used in stand-alone mode, as normal, but the files cannot be read back by the user / operator.<br />
<br />
==== Considerations to be taken when using the secure area ====<br />
<br />
When using the <tt>secure area</tt>, some things need to be considered:<br><br />
<br />
* All features like multiple file support, patch file support etc. can also be used when operating from the <tt>secure area</tt>.<br />
* 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>.<br />
* 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>.<br />
* 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.<br />
<br />
==== Required Flasher hardware version ====<br />
<br />
Older Flasher models do not support authorized flashing. The Flashers with the following serial number ranges do not support authorized flashing:<br><br />
<br />
* 1621xxxxx (Flasher ARM V2)<br />
* 1630xxxxx (Flasher ARM V3)<br />
* 4210xxxxx (Flasher PPC V1)<br />
* 4110xxxxx (Flasher RX V1)<br />
<br />
All other models / hardware versions support authorized flashing.<br />
<br />
=== Target interfaces ===<br />
<br />
The table below shows the supported target interfaces of the different Flasher models.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! Supported interfaces<br />
|-<br />
| Flasher PRO || JTAG, SWD<br />
|-<br />
| Flasher Compact || JTAG, SWD<br />
|-<br />
| Flasher ARM || JTAG, SWD<br />
|-<br />
| Flasher RX || JTAG<br />
|-<br />
| Flasher PPC || JTAG<br />
|-<br />
|}<br />
<br />
For more information about the target interfaces itself, please refer to:<br><br />
<br />
* ''UM08001, chapter "Working with J-Link and J-Trace", section "JTAG interface"''<br />
* ''UM08001, chapter "Working with J-Link and J-Trace", section "SWD interface"''<br />
<br />
=== Supported architectures ===<br />
<br />
Flasher supports programming of the internal flash of a large number of different microcontrollers.<br />
The number of supported devices is steadily growing. You can always find the latest list of supported devices on our website:<br><br />
<br />
''http://www.segger.com/supported-devices.html''<br />
<br />
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.<br />
Also the existence of the device may have confidential status, so it might not be mentioned as being supported in public releases yet.<br />
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.<br />
<br />
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).<br />
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.<br />
<br />
If a device is not supported, you can always contact us. We will be happy to provide you with an offer.<br />
<br />
==== External flashes ====<br />
<br />
In general our Flashers support programming of external flashes listed below:<br>(Can differ between Flasher models and hardware versions)<br />
<br />
* parallel NOR flash<br />
* SPI / QSPI flash<br>(see: ''[[SPI_support_by_Flasher_models]]'')<br />
* NAND flash<br />
* I<sup>2</sup>C EEPROM/Flash<br />
* FRAM<br />
<br />
If the parallel NOR flash device which is used is not CFI-compliant you have to select the flash device in J-Flash explicitly,<br />
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''.<br />
<br />
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.<br />
The J-Flash software comes with sample projects for ''Open Flashloader''.<br />
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''<br />
{{Note|1=Complete Information about ''Open Flashloaders'' can be found in our Wiki:<br>''[[Open_Flashloader]]''}}<br />
<br />
==== Cores ====<br />
<br />
===== Flasher ARM =====<br />
<br />
Flasher ARM supports and has been tested with the following cores, but should work with any ARM7/9, Cortex-M0/M1/M3/M4 core.<br />
If you experience problems with a particular core, do not hesitate to contact Segger.<br><br />
<br />
* ARM7TDMI (Rev 1)<br />
* ARM7TDMI (Rev 3)<br />
* ARM7TDMI-S (Rev 4)<br />
* ARM920T<br />
* ARM922T<br />
* ARM926EJ-S<br />
* ARM946E-S<br />
* ARM966E-S<br />
* Cortex-M0<br />
* Cortex-M1<br />
* Cortex-M3<br />
* Cortex-M4<br />
<br />
===== Flasher RX =====<br />
<br />
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><br />
<br />
* RX610<br />
* RX621<br />
* RX62N<br />
* RX62T<br />
<br />
===== Flasher PPC =====<br />
<br />
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.<br />
<br />
* e200z0<br />
<br />
===== Flasher PRO/Compact/Portable PLUS =====<br />
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/''.<br />
<br />
=== Programming multiple targets in parallel ===<br />
<br />
To program multiple targets in parallel there are the following possibilities:<br />
* Using a Flasher gang, or<br />
* Using multiple Flashers, each connecting to one CPU.<br />
<br />
Devices for gang programming are:<br />
* Flasher Hub-12 in conjunction with up to 12 Flasher (Compact). Please refer to [[UM08043_Flasher_Hub-12|Flasher Hub-12 user manual (UM08043_Flasher_Hub-12)]].<br />
* Flasher ATE; suitable for programming up to 10 targets in parallel. Please refer to [https://www.segger.com/downloads/flasher/UM08035 Flasher ATE user manual (UM08035_FlasherATE.pdf)].<br />
When using multiple flashers, this can be done with the J-Flash production programming software.<br />
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''<br />
<br />
=== Logfiles and Quality Management ===<br />
<br />
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:<br />
<source lang="c"><br />
SN: 1 - Failed<br />
SN: 1 - Failed<br />
SN: 2 - O.K. (931 ms)<br />
SN: 3 - O.K. (931 ms)<br />
SN: 4 - O.K. (933 ms)<br />
SN: 5 - O.K. (932 ms)<br />
</source><br />
If applicable, the logfile contains more detailed error messages. For example:<br />
<source lang="c"><br />
ERROR: Programming failed @ address 0x00000000 (1)<br />
ERROR: Cannot connect to CPU. Target interface speed too high?<br />
</source><br />
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:<br />
<source lang="c"><br />
Verify error config word area @<br />
config word<br />
config word read back<br />
Verify error flash area @<br />
data from file<br />
data read back<br />
</source><br />
{{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.}}<br />
<br />
== TCP Services ==<br />
This chapter describes the integrated TCP services.<br />
<br />
=== FTP Server ===<br />
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><br />
[[File:FTPServer.png]]<br />
<br />
==== Access data ====<br />
Anonymous access to the FTP server is limited to read-only access to the file system.<br><br />
For write access, special login credentials have to be used:<br><br />
<tt>Login: admin</tt><br><br />
<tt>Password: 1234</tt><br><br />
<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.<br />
It is not meant as a security feature.}}<br />
<br />
=== Web server ===<br />
<br />
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.<br />
For the network, the IP address settings can be changed and a nick name can be assigned to the device.<br><br />
<br />
Additionally, the web interface provides information about the status of the integrated operating system, the IP stack and the target hardware.<br />
<br />
== Remote control ==<br />
This chapter describes how to control the Flasher in standalone mode.<br />
<br />
=== Overview ===<br />
There are 3 ways to control Flasher operation:<br><br />
{| class="seggertable"<br />
! Type of control !! Description<br />
|-<br />
| Button || Programming operation starts when pressing the PROG-button. The LEDs serve as visible indicators.<br />
|-<br />
| Handshake || 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.<br />
|-<br />
| Terminal || Terminal communication via TELNET, RS232 or VCOM with the [[#ASCII command interface]]<br />
|}<br />
<br />
<br />
{{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.}}<br />
<br />
=== Handshake control ===<br />
<br />
Some Flasher models are equipped with additional hardware control functions that are connected to the SUBD9 male connector, normally used as an RS232 interface to the PC.<br />
These Flasher models can therefore be controlled remotely by automated testers without the need for a connection to a PC.<br />
<br />
The handshake control is available for the following Flashers:<br />
* Flasher ARM<br />
* Flasher PRO<br />
* Flasher Compact (via Flasher Hub and Flasher Hub-12 only)<br />
<br />
The following diagrams show the internal remote control circuitry of Flasher:<br><br />
<br />
[[File:FlasherRemotecontrol.png]]<br />
{| class="seggertable"<br />
|-<br />
! Pin No. !! Function !! Description<br />
|-<br />
| 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.<br />
|-<br />
| 4 || BUSY || As soon as the "Auto" function is started, BUSY becomes active, which means that transistor is switched OFF.<br />
|-<br />
| 5 || GND || Common Signal ground.<br />
|-<br />
| 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.<br />
|-<br />
|}<br />
[[File:FlasherRemoteSignal.png]]<br />
<br />
=== ASCII command interface ===<br />
<br />
==== Introduction ====<br />
<br />
Once set up using J-Flash, the Flasher can be driven by any application or just a simple terminal using ASCII commands.<br><br />
<br />
Every known command is acknowledged by the Flasher and then executed. After command execution, Flasher sends an ASCII reply message.<br><br />
<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}}<br />
<br />
==== General command and reply message format ====<br />
<br />
* Any ASCII command has to start with the start delimiter ''#''.<br />
* Any ASCII command has to end with simple carriage return ('\r', ASCII code 13).<br />
* Commands can be sent upper or lower case<br />
<br />
==== General usage ====<br />
<br />
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.<br />
<br />
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).<br />
<br />
==== Settings for ASCII interface via RS232 ====<br />
<br />
Flasher is driven via a RS232 serial port with the following interface settings:<br><br />
<br />
* 9600 baud<br />
* 8 data bits<br />
* no parity<br />
* 1 stop bit<br />
<br />
The baud rate can be changed by using the <tt>#BAUDRATE</tt> command.<br />
<br />
==== Settings for ASCII interface via Telnet ====<br />
<br />
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><br />
<br />
[[File:telnet_connection.gif]]<br />
<br />
==== Settings for ASCII interface via VCOM ====<br />
<br />
The same settings can be used for VCOM as for [[#Settings for ASCII interface via RS232|RS232]].<br />
<br />
{{Note|The performance also depends on the terminal application used on the PC.}}<br />
<br />
==== Commands and replies ====<br />
<br />
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><br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| Commands to the Flasher<br />
|-<br />
| <tt>#BAUDRATE <Baudrate></tt><br />
|-<br />
| <tt>#AUTO</tt><br />
|-<br />
| <tt>#AUTO PATCH</tt><br />
|-<br />
| <tt>#AUTO NOINFO</tt><br />
|-<br />
| <tt>#CANCEL</tt><br />
|-<br />
| <tt>#ERASE</tt><br />
|-<br />
| <tt>#PROGRAM</tt><br />
|-<br />
| <tt>#RESULT</tt><br />
|-<br />
| <tt>#SELECT <Filename></tt><br />
|-<br />
| <tt>#START</tt><br />
|-<br />
| <tt>#STATUS</tt><br />
|-<br />
| <tt>#VERIFY</tt><br />
|-<br />
| <tt>#READ</tt><br />
|-<br />
| <tt>#QUIT</tt><br />
|-<br />
| <tt>#VERBOSE <Level></tt><br />
|-<br />
!colspan="100%"| File I/O commands<br />
|-<br />
| <tt>#FCLOSE</tt><br />
|-<br />
| <tt>#FCRC</tt><br />
|-<br />
| <tt>#FDELETE <Filename></tt><br />
|-<br />
| <tt>#FFORMAT</tt><br />
|-<br />
| <tt>#FOPEN <Filename></tt><br />
|-<br />
| <tt>#FREAD <Offset>,<NumBytes></tt><br />
|-<br />
| <tt>#FSIZE</tt><br />
|-<br />
| <tt>#FWRITE <Offset>,<NumBytes>:<nowiki><Data></nowiki></tt><br />
|-<br />
| <tt>#FLIST</tt><br />
|-<br />
| <tt>#MKDIR <Dirname></tt><br />
|-<br />
!colspan="100%"| SecureArea commands<br />
|-<br />
| <tt>#HASSECUREAREA</tt><br />
|-<br />
| <tt>#SECUREAREA <action></tt><br />
|-<br />
!colspan="100%"| Replies from the Flasher<br />
|-<br />
| <tt>#ACK</tt><br />
|-<br />
| <tt>#NACK</tt><br />
|-<br />
| <tt>#OK</tt><br />
|-<br />
| <tt>#OK:<NumBytes>:<nowiki><Data></nowiki></tt><br />
|-<br />
| <tt>#OK:<Size></tt><br />
|-<br />
| <tt>#STATUS:</tt><br />
|-<br />
| <tt>#DONE</tt><br />
|-<br />
| <tt>#ERRxxx</tt><br />
|-<br />
|}<br />
<br />
===== Commands to the Flasher =====<br />
<br />
'''#AUTO'''<br><br />
The <tt>#AUTO</tt> command behaves exactly as the start button or external remote control input.<br><br />
<br />
Usually, the following command sequence will be performed when receiving the <tt>#AUTO</tt> command:<br><br />
<br />
* The Flasher erases the target CPU (if not blank)<br />
* The Flasher programs the target CPU<br />
* The Flasher verifies the target CPU<br />
<br />
Depending on the settings chosen in the '''Production''' tab in J-Flash, this sequence can differ from the one shown above.<br><br />
<br />
Finally, Flasher responds with<br><br />
<br />
* <tt>#OK</tt> if no error occurred<br />
* <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.<br />
<br />
During execution of the <tt>#AUTO</tt> command, Flasher automatically sends "status" messages via RS232 to reflect the state of execution.<br />
Typically during execution of <tt>#AUTO</tt> command, Flasher will reply the following sequence of messages:<br><br />
<br />
<tt>#ACK</tt><br><br />
<tt>#STATUS:INITIALIZING</tt><br><br />
<tt>#STATUS:CONNECTING</tt><br><br />
<tt>#STATUS:UNLOCKING</tt><br><br />
<tt>#STATUS:ERASING</tt><br><br />
<tt>#STATUS:PROGRAMMING</tt><br><br />
<tt>#STATUS:VERIFYING</tt><br><br />
<tt>#OK (Total 13.993s, Erase 0.483s, Prog 9.183s, Verify 2.514s)</tt><br><br />
<br />
'''#AUTO PATCH'''<br><br />
The <tt>#AUTO</tt> PATCH command allows patching of the content of the data to be programmed.<br><br />
<br />
Flasher responds with<br><br />
<br />
* <tt>#OK</tt> if no error occurred<br />
* <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.<br />
<br />
For further information about the usage of the <tt>#AUTO PATCH</tt> command please refer to [[#Patch file support | Patch file support]].<br />
<br />
'''#AUTO NOINFO'''<br><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><br />
<br />
The command ends with <tt>#OK</tt> or <tt>#ERRxxx</tt><br />
<br />
'''#BAUDRATE <Baudrate>'''<br><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><br />
<br />
If this command succeeds, Flasher responds with:<br><br />
<br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<br />
Otherwise it will respond with one of the following error messages:<br><br />
<br />
<tt>#ERR255: Invalid parameters</tt><br><br />
<tt>or</tt><br><br />
<tt>#ERR255: Baudrate is not supported</tt><br><br />
<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.<br />
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.}}<br />
<br />
'''#CANCEL'''<br><br />
This command can be sent to abort a running program. It may take a while until the current program is actually canceled.<br><br />
<br />
Flasher will respond with:<br><br />
<br />
<tt>#ERR007:CANCELED.</tt><br><br />
<br />
'''#ERASE'''<br><br />
This command can be sent to erase all selected target flash sectors.<br><br />
<br />
Flasher will reply the following sequence of messages:<br><br />
<br />
<tt>#ACK</tt><br><br />
<tt>#STATUS:INITIALIZING</tt><br><br />
<tt>#STATUS:CONNECTING</tt><br><br />
<tt>#STATUS:UNLOCKING</tt><br><br />
<tt>#STATUS:ERASING</tt><br><br />
<tt>#OK (Total 0.893s, Erase 0.483s)</tt><br><br />
<br />
'''#PROGRAM'''<br><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.<br />
<br />
'''#RESULT'''<br><br />
This command can be sent any time, even during other command execution. Flasher responds with the last result of the previously executed command.<br />
<br />
'''#SELECT <Filename>'''<br><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.<br />
<tt><Filename></tt> specifies the name of file pair without extensions (.CFG and .DAT) on the Flasher which should be selected. If you are<br />
using the universal flash programming mode, <tt><Filename></tt> specifies the full name of the .UNI file '''including''' the extension.<br />
Flasher saves the selected config and data file in the FLASHER.INI file. So this selection is remembered even between power-cycling Flasher.<br><br />
<br />
This may be verfy helpful in cases where several config and data files are stored on Flasher.<br />
The user can easily switch between these config and data files without connecting Flasher to a host.<br><br />
<br />
If this command succeeds, Flasher responds with:<br><br />
<br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<br />
Find below a sample sequence which shows how to use the <tt>#SELECT</tt> command:<br><br />
<br />
<tt>#SELECT ATSAM7_1 // ATSAM7_1.CFG and ATSAM7_1.DAT is selected</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<tt>#AUTO // Start auto programming</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#STATUS:INITIALIZING</tt><br><br />
<tt>#STATUS:CONNECTING</tt><br><br />
<tt>#STATUS:UNLOCKING</tt><br><br />
<tt>#STATUS:ERASING</tt><br><br />
<tt>#STATUS:PROGRAMMING</tt><br><br />
<tt>#STATUS:VERIFYING</tt><br><br />
<tt>#OK (Total 8.416s, Erase 0.005s, Prog 6.845s, Verify 0.959s)</tt><br><br />
<tt>#SELECT ATSAM7_2 // ATSAM7_2.CFG and ATSAM7_2.DAT is selected</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<tt>#AUTO // Start auto programming</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#STATUS:INITIALIZING</tt><br><br />
<tt>#STATUS:CONNECTING</tt><br><br />
<tt>#STATUS:UNLOCKING</tt><br><br />
<tt>#STATUS:ERASING</tt><br><br />
<tt>#STATUS:PROGRAMMING</tt><br><br />
<tt>#STATUS:VERIFYING</tt><br><br />
<tt>#OK (Total 8.632s, Erase 0.005s, Prog 7.051s, Verify 0.969s)</tt><br><br />
<br />
'''#START'''<br><br />
This command can be sent to start the application using the method configured in the J-Flash project.<br><br />
For U-Flash projects, however, the target application is not necessarily started. <br><br />
There is often a "start application" checkbox in the U-Flash settings which have to be set for this.<br />
<br />
Flasher will reply with the following sequence of messages:<br><br />
<br />
<tt>#ACK</tt><br><br />
<tt>#STATUS:INITIALIZING</tt><br><br />
<tt>#STATUS:CONNECTING</tt><br><br />
<tt>#OK (Total 1.148s)</tt><br><br />
<br />
'''#STATUS'''<br><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]].<br />
<br />
'''#VERIFY'''<br><br />
This command can used to verify the target flash content against the data stored in Flasher.<br />
<br />
'''#READ'''<br><br />
Only available for devices supported by U-Flash.<br><br />
This command can used to read out flash data.<br><br />
More information: [https://wiki.segger.com/Flasher/How_to_read_data_from_a_device_using_U-Flash How to read data using U-Flash]<br />
<br />
'''#QUIT'''<br><br />
This command can be used to terminate the active telnet connection from the server side (Flasher).<br />
The command provides an easy way to terminate the session from an automated script.<br />
It is not necessary to parse stdout and switch to local command mode to disconnect.<br />
Not implemented in the Flasher ATE or Flasher Hub.<br />
<br />
'''#VERBOSE <Level>'''<br><br />
This command can be used to change the verbosity level. <br><br />
* Verbosity level 0: Default. <br><br />
* Verbosity level 1: Provides some additional messages during the programming process.<br />
<br />
===== File I/O commands =====<br />
<br />
The ASCII interface of the Flasher also supports file I/O operations.<br />
<br />
The following file I/O commands are supported:<br><br />
<br />
'''#FCLOSE'''<br><br />
The <tt>#FCLOSE</tt> command closes the file on Flasher which was opened via <tt>#FOPEN</tt>.<br />
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><br />
<br />
A typical sequence when using the <tt>#FCLOSE</tt> command does look like as follows:<br><br />
<br />
<tt>#FCLOSE</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<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><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:No file opened</tt><br />
}}<br />
<br />
'''#FCRC'''<br><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>.<br />
The CRC will be also reported by J-Flash when downloading or saving files via J-Flash.<br><br />
<br />
A typical sequence when using the <tt>#FCRC</tt> command does look like as follows:<br><br />
<br />
<tt>#FCRC flasher.dat</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK:0x75BC855A</tt><br><br />
<br />
'''#FDELETE <Filename>'''<br><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><br />
<br />
A typical sequence when using the <tt>#FDELETE</tt> command does look like as follows:<br><br />
<br />
<tt>#FDELETE flasher.dat</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<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><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:Failed to delete file</tt><br />
}}<br />
<br />
'''#FFORMAT'''<br><br />
The <tt>#FFORMAT</tt> command is used to delete all files located in the public area of the Flasher's internal memory.<br />
<br />
{{Note|1=Please note that this command deletes all projects located in the public area. Deleted projects cannot be restored again.<br><br />
This command does not delete the Flasher firmware, neither does it delete files in the secure area.<br />
}}<br />
<br />
A typical sequence using the <tt>#FFORMAT</tt> command does look like as follows:<br><br />
<br />
<tt>#FFORMAT</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#DONE</tt><br><br />
<br />
'''#FOPEN <Filename>'''<br><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.<br />
If <tt><Filename></tt> can not be found on Flasher a new one will be created.<br><br />
<br />
A typical sequence using the <tt>#FOPEN</tt> command does look like as follows:<br><br />
<br />
<tt>#FOPEN flasher.dat</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<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><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:A file has already been opened</tt><br />
}}<br />
<br />
'''#FREAD <Offset>,<NumBytes>'''<br><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.<br />
<tt><NumBytes></tt> specifies the number of bytes which should be read.<br><br />
<br />
A typical sequence when using the <tt>#FREAD</tt> command does look like as follows:<br><br />
<br />
<tt>#FREAD 0,4</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK:04:466c6173</tt><br><br />
<br />
If the <tt>#FREAD</tt> command succeeds, Flasher will finally respond with a <tt>#OK:<NumBytes>:<nowiki><Data></nowiki></tt> reply message.<br />
For more information about the Flasher reply messages, please refer to [[#Replies from Flasher | Replies from Flasher]].<br><br />
<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><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:No file opened</tt>}}<br />
<br />
'''#FSIZE'''<br><br />
The <tt>#FSIZE</tt> command is used to get the size of the currently opened file on Flasher.<br><br />
<br />
A typical sequence when using the <tt>#FSIZE</tt> command does look like as follows:<br><br />
<br />
<tt>#FSIZE</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK:10 // file on flasher which is currently open, has a size of 16 bytes</tt><br><br />
<br />
If the <tt>#FSIZE</tt> command succeeds, Flasher will respond with a <tt>#OK:<Size></tt> reply message.<br />
For more information about the Flasher reply messages, please refer to [[#Replies from Flasher | Replies from Flasher]].<br><br />
<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><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:No file opened</tt>}}<br />
<br />
'''#FWRITE <Offset>,<NumBytes>:<nowiki><Data></nowiki>'''<br><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.<br />
<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.<br />
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><br />
<br />
<tt><Offset></tt> and <tt><NumBytes></tt> are expected in hexadecimal format.<br><br />
<br />
<tt>#FWRITE 0,200:<nowiki><Data></nowiki></tt><br><br />
<tt>#FWRITE 200,200:<nowiki><Data></nowiki></tt><br><br />
<br />
The data is expected in hexadecimal format (two hexadecimal characters per byte). The following example illustrates the use of <tt>#FWRITE</tt>:<br />
<br />
<tt>Data to be send: Hello !</tt><br><br />
<tt>ASCII values: 0x48, 0x65, 0x6C, 0x6C, 0x6F, 0x20, 0x21</tt><br><br />
<br />
<tt>#FWRITE 0,7:48656C6C6F2021</tt><br><br />
<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><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:No file opened</tt><br>}}<br />
<br />
'''#FLIST'''<br><br />
The <tt>#LIST</tt> command is used to list all files stored on the Flasher.<br><br />
<br />
A typical sequence using the <tt>#FLIST</tt> command does look like as follows:<br><br />
<br />
<tt>#FLIST</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>FLASHER.INI Size: 60</tt><br><br />
<tt>SERIAL.TXT Size: 3</tt><br><br />
<tt>FLASHER.LOG Size: 207</tt><br><br />
<tt>FOLDER (DIR)</tt><br><br />
<tt>FOLDER\\TEST1.CFG Size: 2048</tt><br><br />
<tt>FOLDER\\TEST1.DAT Size: 12288</tt><br><br />
<tt>#OK</tt><br><br />
<br />
'''#MKDIR <Dirname>'''<br><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><br />
<br />
A typical sequence using the <tt>#MKDIR</tt> command does look like as follows:<br><br />
<br />
<tt>#MKDIR folder</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<br />
{{Note|1=If the directory can not be created because of a bad <tt><Dirname></tt> argument, Flasher will respond with:<br><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:Failed to create directory</tt><br>}}<br />
<br />
===== Secure Area Commands =====<br />
<br />
'''#HASSECUREAREA'''<br><br />
The <tt>#HASSECUREAREA</tt> command checks if the Flasher is configured with a secure area.<br />
<br />
<tt>#RESULT:YES</tt> indicates the secure area is present, <tt>#RESULT:NO</tt> indicates no secure area is present.<br />
<br />
'''#SECUREAREA'''<br><br />
The <tt>#SECUREAREA <action></tt> command allows to create or remove the secure area on the Flasher.<br />
<br />
* the action <tt>CREATE</tt> creates the secure area.<br />
* the action <tt>REMOVE</tt> will remove the secure area.<br />
<br />
A typical sequence using the <tt>#SECUREAREA</tt> command does look like as follows:<br><br />
<br />
<tt>#SECUREAREA CREATE</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#DONE</tt><br><br />
<br />
{{Note|1=When creating or removing the <tt>secure area</tt>, all configuration and data files being stored on the Flasher, are lost.<br />
Please make sure that they are not needed anymore, before adding / removing the security area.}}<br />
<br />
<br />
<br />
===== Replies from Flasher =====<br />
<br />
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.<br />
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.<br />
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><br />
<br />
<tt>#OK (Total 13.993s, Erase 0.483s, Prog 9.183s, Verify 2.514s)</tt><br><br />
<br />
The following reply messages from Flasher are defined:<br><br />
<br />
'''#ACK'''<br><br />
Flasher replies with <tt>#ACK</tt> message on reception of any defined command before the command itself is executed.<br />
<br />
'''#NACK'''<br><br />
Flasher replies with <tt>#NACK</tt>, if an undefined command was received.<br />
<br />
'''#OK'''<br><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.<br />
<br />
'''#OK:<NumBytes>:<nowiki><Data></nowiki>'''<br><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.<br />
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).<br />
<br />
'''#OK:<Size>'''<br><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.<br />
<br />
'''#STATUS:'''<br><br />
The Flasher replies with its current state.<br><br />
<br />
The following status messages are currently defined:<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Message !! Description<br />
|-<br />
| <tt>#STATUS:READY</tt> || Flasher is ready to receive a new command.<br />
|-<br />
| <tt>#STATUS:CONNECTING</tt> || Flasher initializes connection to target CPU.<br />
|-<br />
| <tt>#STATUS:INITIALIZING</tt> || Flasher performs self check and internal init.<br />
|-<br />
| <tt>#STATUS:UNLOCKING</tt> || Unlocking flash sectors.<br />
|-<br />
| <tt>#STATUS:ERASING</tt> || Flasher is erasing the flash of the target device.<br />
|-<br />
| <tt>#STATUS:PROGRAMMING</tt> || Flasher is programming the flash of the target device.<br />
|-<br />
| <tt>#STATUS:VERIFYING</tt> || Flasher verifies the programmed flash contents.<br />
|-<br />
|}<br />
<br />
'''#ERRxxx'''<br><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><br />
<br />
Some error codes may be followed by colon and an additional error text.<br><br />
<br />
For example:<br><br />
<br />
<tt>#ERR007:CANCELED.</tt><br><br />
<br />
The error code numbers are described in the following table:<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Message !! Description<br />
|-<br />
| <tt>#ERR007</tt> || Flasher received <tt>#CANCEL</tt> command and has canceled the current operation.<br />
|-<br />
| <tt>#ERR008</tt> || Flasher is already busy with execution of previous command.<br />
|-<br />
| <tt>#ERR009</tt> || Failed to allocate memory.<br />
|-<br />
| <tt>#ERR010</tt> || Failed to open file.<br />
|-<br />
| <tt>#ERR011</tt> || Failed to read file.<br />
|-<br />
| <tt>#ERR012</tt> || Failed to write file.<br />
|-<br />
| <tt>#ERR013</tt> || Failed to delete file.<br />
|-<br />
| <tt>#ERR255</tt> || Undefined error occurred. This reply is followed by an error string.<br />
|-<br />
|}<br />
<br />
== Performance ==<br />
<br />
The following chapter lists programming performance of common flash devices andmicrocontrollers.<br />
<br />
=== Performance of MCUs with internal flash memory ===<br />
<br />
==== Flasher ARM ====<br />
<br />
The following table lists program and erase performance values of Flasher ARM for different controllers.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Microcontroller !! Size [kByte] !! Erase time [sec] !! Program time [sec] !! Verify time [sec] !! Total time [sec]<br />
|-<br />
| Analog Devices || 62 || 2.943 || 2.286 || 0.563 || 5.792<br />
|-<br />
| Atmel AT91SAM7S64 || 64 || --- || 3.488 || 0.438 || 3.926<br />
|-<br />
| Atmel AT91SAM7S256 || 256 || --- || 7.709 || 1.053 || 8.762<br />
|-<br />
| NXP LPC1768 || 512 || 3.740 || 8.559 || 5.092 || 17.391<br />
|-<br />
| NXP LPC2106 || 120 || 0.448 || 1.204 || 0.634 || 2.286<br />
|-<br />
| NXP LPC2129 || 248 || 0.449 || 2.916 || 1.347 || 4.712<br />
|-<br />
| NXP LPC2138 || 500 || 0.448 || 5.488 || 2.649 || 8.585<br />
|-<br />
| NXP LPC2148 || 500 || 0.448 || 5.632 || 2.721 || 8.801<br />
|-<br />
| NXP LPC2294 || 2048 || 0.808 || 15.976 || 9.669 || 26.453<br />
|-<br />
| NXP LPC2478 || 504 || 0.448 || 5.419 || 2.559 || 8.426<br />
|-<br />
| ST STM32F103ZE || 512 || 0.028 || 18.763 || 3.939 || 22.730<br />
|-<br />
| ST STR711 || 272 || 0.429 || 5.476 || 4.742 || 10.647<br />
|-<br />
| ST STR912 || 544 || 1.167 || 12.907 || 5.236 || 19.310<br />
|-<br />
| TI TMS470R1B1M || 1024 || 2.289 || 8.147 || 5.362 || 15.798<br />
|-<br />
|}<br />
<br />
==== Flasher PRO ====<br />
See Flasher ARM.<br />
<br />
==== Flasher Compact ====<br />
See Flasher ARM.<br />
<br />
==== Flasher RX ====<br />
<br />
The following table lists program and erase performance values of Flasher RX.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Microcontroller !! Size [kByte] !! Erase time [sec] !! Program time [sec] !! Verify time [sec] !! Total time [sec]<br />
|-<br />
| R5F56108 || 2.048 || 9.523 || 11.915 || 3.890 || 25.585<br />
|-<br />
|}<br />
<br />
==== Flasher PPC ====<br />
<br />
The following table lists program and erase performance values of Flasher PPC.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Microcontroller !! Size [kByte] !! Erase time [sec] !! Program time [sec] !! Verify time [sec] !! Total time [sec]<br />
|-<br />
| ST SPC560B50 || 576 || 4.747 || 4.159 || 1.929 || 10.917<br />
|-<br />
|}<br />
<br />
== Hardware ==<br />
<br />
This chapter gives an overview about Flasher specific hardware details,<br />
such as the pinouts and available adapters.<br />
<br />
=== Flasher ARM 20-pin JTAG/SWD Connector ===<br />
<br />
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.<br />
<br />
==== Pinout JTAG ====<br />
<br />
[[File:jtag_port_20pin.jpg]] <!-- LG xxxxxx image has been cropped to fit page --><br />
<br />
The following table lists the Flasher JTAG pinout.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! PIN !! SIGNAL !! TYPE !! Description<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 13 || TDO || Input || JTAG data output from target CPU. Typically connected to TDO of target CPU.<br />
|-<br />
| 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".<br />
|-<br />
| 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.<br />
|-<br />
| 19 || 5V-Target supply || Output || This pin is used to supply power to some eval boards. Typically left open on target hardware.<br />
|-<br />
|}<br />
<br />
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.<br />
<br />
==== Pinout SWD ====<br />
<br />
The 20-pin connector of Flasher is also compatible to ARM's Serial Wire Debug (SWD) interface.<br><br />
<br />
[[File:SWD_Port.jpg]] <!-- LG xxxxxx image has been cropped to fit page --><br />
<br />
The following table lists the J-Link / J-Trace SWD pinout.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! PIN !! SIGNAL !! TYPE !! Description<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 7 || SWDIO || I/O || Single bi-directional data pin.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 13 || SWO || Output || Serial Wire Output trace port. (Optional, not required for SWD communication.)<br />
|-<br />
| 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".<br />
|-<br />
| 17 || Not used || NC || This pin is not connected in J-Link.<br />
|-<br />
| 19 || 5V-Target supply || Output || This pin can be used to supply power to the target board. Please note the specifications.<br />
|-<br />
|}<br />
<br />
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.<br />
<br />
==== Target power supply ====<br />
<br />
Pin 19 of the connector can be used to supply power to the target hardware. Supply voltage is 5V, max. current is 400mA.<br />
The output current is monitored and protected against overload and short-circuit.<br><br />
<br />
Power can be controlled via the J-Link commander. The following commands are available to control power:<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Command !! Explanation<br />
|-<br />
| <tt>power on</tt> || Switch target power on<br />
|-<br />
| <tt>power off</tt> || Switch target power off<br />
|-<br />
| <tt>power on perm</tt> || Set target power supply default to "on"<br />
|-<br />
| <tt>power off perm</tt> || Set target power supply default to "off"<br />
|-<br />
|}<br />
<br />
=== Flasher RX 14-pin connector ===<br />
<br />
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.<br />
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.<br />
<br />
[[File:jtag_port_14pin.wmf]]<br />
<br />
The following table lists the Flasher RX 14-pin JTAG pinout.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Pin !! Signal !! Type !! Description<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 5 || TDO || Input || JTAG data output from target CPU. Typically connected to TDO on target CPU.<br />
|-<br />
| 6 || --- || NC || This pin is not connected to Flasher RX.<br />
|-<br />
| 7 || --- || NC || This pin is not connected to Flasher RX.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 10 || --- || NC || This pin is not connected to Flasher RX.<br />
|-<br />
| 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.<br />
|-<br />
| 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".<br />
|-<br />
|}<br />
<br />
* All pins marked NC are not connected to Flasher RX. Any signal can be applied here; Flasher RX will simply ignore such a signal.<br />
* Pins 2, 12, 14 are GND pins connected to GND in Flasher RX. They should also be connected to GND in the target system.<br />
<br />
==== Target power supply ====<br />
<br />
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.<br />
Power can be controlled via the J-Link commander. The following commands are available to control power:<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Command !! Explanation<br />
|-<br />
| <tt>power on</tt> || Switch target power on<br />
|-<br />
| <tt>power off</tt> || Switch target power off<br />
|-<br />
| <tt>power on perm</tt> || Set target power supply default to "on"<br />
|-<br />
| <tt>power off perm</tt> || Set target power supply default to "off"<br />
|-<br />
|}<br />
<br />
=== Flasher PPC 14-pin connector ===<br />
<br />
Flasher PPC itself has a 20-pin JTAG connector mounted but comes with a 14-pin adapter for PowerPC devices.<br><br />
<br />
[[File:JTAG_PPC_14pin_adapter.wmf]]<br />
<br />
The following table lists the Flasher PPC 14-pin JTAG pinout.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Pin !! Signal !! Type !! Description<br />
|-<br />
| 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.<br />
|-<br />
| 3 || TDO || Input || JTAG data output from target CPU. Typically connected to TDO on target CPU.<br />
|-<br />
| 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.<br />
|-<br />
| 7 || --- || NC || This pin is not connected to Flasher PPC.<br />
|-<br />
| 8 || --- || NC || This pin is not connected to Flasher PPC.<br />
|-<br />
| 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".<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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).<br />
|-<br />
|}<br />
<br />
* All pins marked NC are not connected to Flasher PPC. Any signal can be applied here; Flasher PPC will simply ignore such a signal.<br />
* 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.<br />
<br />
=== Target board design ===<br />
<br />
We strongly advise following the recommendations given by the chip manufacturer. These recommendations are normally in line with the recommendations.<br />
Please refer to the the appropriate tables depending on the core:<br><br />
<br />
* [[#Pinout JTAG | Pinout JTAG]]<br />
* [[#Pinout SWD | Pinout SWD]]<br />
* [[#Flasher RX 14-pin connector | Flasher RX 14-pin connector]]<br />
* [[#Flasher PPC 14-pin connector | Flasher PPC 14-pin connector]]<br />
<br />
In case of doubt you should follow the recommendations given by the semiconductor manufacturer.<br />
<br />
==== Pull-up/pull-down resistors ====<br />
<br />
Unless otherwise specified by developer's manual, pull-ups/pull-downs are recommended to be between 2.2 kOhms and 47 kOhms.<br />
<br />
==== RESET, nTRST ====<br />
<br />
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><br />
<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.<br />
(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.<br />
<br />
=== Adapters ===<br />
<br />
==== JTAG Isolator ====<br />
<br />
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.<br />
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><br />
<br />
[[File:JTAG_Isolator_Port.wmf]]<br />
<br />
===== Pinout =====<br />
<br />
The following table shows the target-side pinout of the J-Link JTAG Isolator.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Pin !! Signal !! Type !! Description<br />
|-<br />
| 1 || VCC || Output || The target side of the isolator draws power over this pin.<br />
|-<br />
| 2 || VCC || Output || The target side of the isolator draws power over this pin.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 13 || TDO || Input || JTAG data output from target CPU. Typically connected to TDO of target CPU.<br />
|-<br />
| 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".<br />
|-<br />
| 17 || N/C || N/C || This pin is not connected on the target side of the isolator.<br />
|-<br />
| 19 || N/C || N/C || This pin is not connected on the target side of the isolator.<br />
|-<br />
|}<br />
<br />
Pins 4, 6, 8, 10, 12, 14, 16, 18, 20 are connected to GND.<br />
<br />
===== Safety =====<br />
This isolator provides '''basic isolation''' only. '''Do not use with hazardous voltages without further protection measures to avoid risk of electrical shock and fire.'''<br />
<br />
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.<br />
<br />
==== J-Link Needle Adapter ====<br />
<br />
To connect to the J-Link OB via programming interface the ''J-Link Needle Adapter'' is recommended.<br><br />
<br />
[[File:J-Link_Needle_Adapter_500x.jpg]]<br />
<br />
Why to choose the J-Link Needle Adapter:<br><br />
<ol><br />
<li>No additional connector required on your PCB</li><br />
<li>Very small footprint</li><br />
<li>High reliability spring pins for secure connections</li><br />
<li>Designed with 3 locating pins, so the adapter can not be connected the wrong way</li><br />
<li>No external power supply required! The J-Link Needle Adapter comes with the option to power the target hardware via J-Link.</li><br />
</ol><br />
These features make the J-Link Needle Adapter the perfect solution for production purposes.<br><br />
<br />
The pinout of the J-Link Needle Adapter is based on the pinout of the needle adapter by Tag-Connect.<br />
Please note, that both pinouts are not identical since the J-Link Needle Adapter comes with a 5V-supply pin.<br><br />
<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><br />
<br />
Moreover, the two "legs" on each side of the connector guarantee a stable and secure contact between pins and the PCB.<br><br />
<br />
[[File:J-Link_Needle_Adapter_Connector_pins_360x.jpg]]<br />
[[File:J-Link_Needle_Adapter_Pinout.jpg]]<br />
<br />
The J-Link Needle Adapter can be connected to J-Link via the ''20-pin 0.1'' JTAG to a 10-pin needle connector''.<br />
<br />
=== Flasher Pin states when idling ===<br />
WIP<br />
<br />
=== How to determine the hardware version ===<br />
<br />
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.<br />
Flasher has the hardware version printed on the back label.<br><br />
<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).<br />
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><br />
<br />
[[File:FlasherARM_version.gif]]<br />
<br />
== Support and FAQs ==<br />
<br />
This chapter contains troubleshooting tips together with solutions for common problems which might occur when using Flasher.<br />
There are several steps you can take before contacting support.<br />
Performing these steps can solve many problems and often eliminates the need for assistance.<br />
This chapter also contains a collection of frequently asked questions (FAQs) with answers.<br />
<br />
=== Contacting support ===<br />
<br />
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.<br />
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><br />
<br />
If you need to contact support, send the following information to<br><br />
''support@segger.com''<br><br />
<br />
* A detailed description of the problem<br />
* Flasher serial number<br />
* Information about your target hardware (processor, board, etc.).<br />
* <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]].<br />
<br />
Flasher is sold directly by SEGGER.<br />
<br />
=== Frequently Asked Questions ===<br />
<br />
'''Maximum JTAG speed'''<br />
{|<br />
|-<br />
| '''Q:''' || What is the maximum JTAG speed supported by Flasher?<br />
|-<br />
| '''A:''' || Flasher's maximum supported JTAG speed is 12MHz.<br />
|}<br />
<br />
'''Maximum download speed'''<br />
{|<br />
|-<br />
| '''Q:''' || What is the maximum download speed?<br><br />
|-<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.<br />
|}<br />
== Background information ==<br />
<br />
This chapter provides background information about flash programming in general. It<br />
also provides information about how to replace the firmware of Flasher manually.<br />
<br />
=== Flash programming ===<br />
<br />
Flasher comes with a DLL, which allows - amongst other functionalities - reading and writing RAM, CPU registers, starting and stopping the CPU, and setting breakpoints.<br />
<br />
==== How does flash programming via Flasher work? ====<br />
<br />
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.<br />
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.<br />
Different flash chips have different programming algorithms;the programming algorithm also depends on other things,<br />
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).<br />
The RAM code requires data to be programmed into the flash memory. The data is supplied by downloading it to RAM.<br />
<br />
==== Data download to RAM ====<br />
<br />
The data (or part of it) is downloaded to another part of the RAM of the target system.<br />
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.<br />
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.<br />
This process may have to be repeated until the entire data is programmed into the flash.<br />
<br />
==== Available options for flash programming ====<br />
<br />
In general, there are two possibilities in order to use Flasher for flash programming:<br><br />
<br />
* Using Flasher stand-alone to program the target flash memory (stand-alone mode)<br />
* Using Flasher in combination with J-Flash to program the target flash memory (Flasher in "PC-based mode")<br />
<br />
===== Using Flasher in stand-alone mode =====<br />
<br />
In order to use the Flasher in stand-alone mode, it has to be configured first.<br />
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]].<br />
<br />
===== J-Flash - Complete flash programming solution =====<br />
<br />
J-Flash is a stand-alone Windows application, which can read / write data files and program the flash in almost any ARM system.<br />
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''.<br />
<br />
==== How does the universal flash programming work? ====<br />
<br />
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><br />
<br />
Universal flash programming is available only for stand-alone mode.<br />
== Glossary ==<br />
<br />
This chapter describes important terms used throughout this manual.<br />
<br />
'''Big-endian'''<br><br />
Memory organization where the least significant byte of a word is at a higher address than the most significant byte. See Little-endian.<br />
<br />
'''Cache cleaning'''<br><br />
The process of writing dirty data in a cache to main memory.<br />
<br />
'''Coprocessor'''<br><br />
An additional processor that is used for certain operations, for example, for floating-point math calculations, signal processing, or memory management.<br />
<br />
'''Dirty data'''<br><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.<br />
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.<br />
<br />
'''Halfword'''<br><br />
A 16-bit unit of information.<br />
<br />
'''Host'''<br><br />
A computer which provides data and other services to another computer. Especially, a computer providing debugging services to a target being debugged.<br />
<br />
'''ICache'''<br><br />
Instruction cache.<br />
<br />
'''ID'''<br><br />
Identifier.<br />
<br />
'''IEEE 1149.1'''<br><br />
The IEEE Standard which defines TAP. Commonly (but incorrectly) referred to as JTAG.<br />
<br />
'''Image'''<br><br />
An executable file that has been loaded onto a processor for execution.<br />
<br />
'''Instruction Register'''<br><br />
When referring to a TAP controller, a register that controls the operation of the TAP.<br />
<br />
'''IR'''<br><br />
See Instruction Register.<br />
<br />
'''Joint Test Action Group (JTAG)'''<br><br />
The name of the standards group which created the IEEE 1149.1 specification.<br />
<br />
'''Little-endian'''<br><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.<br />
<br />
'''Memory coherency'''<br><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.<br />
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.<br />
<br />
'''Memory management unit (MMU)'''<br><br />
Hardware that controls caches and access permissions to blocks of memory, and translates virtual to physical addresses.<br />
<br />
'''Memory Protection Unit (MPU)'''<br><br />
Hardware that controls access permissions to blocks of memory. Unlike an MMU, a MPU does not translate virtual addresses to physical addresses.<br />
<br />
'''RESET'''<br><br />
Abbreviation of System Reset. The electronic signal which causes the target system other than the TAP controller to be reset.<br />
This signal is also known as "nSRST" "nSYSRST", "nRST", or "nRESET" in some other manuals. See also nTRST.<br />
<br />
'''nTRST'''<br><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.<br />
<br />
'''Open collector'''<br><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.<br />
<br />
'''Processor Core'''<br><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.<br />
It excludes optional coprocessors, caches, and the memory management unit.<br />
<br />
'''Remapping'''<br><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.<br />
<br />
'''RTOS'''<br><br />
Real Time Operating System.<br />
<br />
'''TAP Controller'''<br><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.<br />
<br />
'''Target'''<br><br />
The actual processor (real silicon or simulated) on which the application program is running.<br />
<br />
'''TCK'''<br><br />
The electronic clock signal which times data on the TAP data lines TMS, TDI, and TDO.<br />
<br />
'''TDI'''<br><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.<br />
<br />
'''TDO'''<br><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.<br />
<br />
'''Test Access Port (TAP)'''<br><br />
The port used to access a device's TAP Controller. Comprises TCK, TMS, TDI, TDO, and nTRST (optional).<br />
<br />
'''Transistor-transistor logic (TTL)'''<br><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.<br />
<br />
'''Word'''<br><br />
A 32-bit unit of information. Contents are taken as being an unsigned integer unless otherwise stated.<br />
== Literature and references ==<br />
This chapter lists documents, which we think may be useful to gain a deeper understanding of technical details.</div>JanBhttps://wiki.segger.com/index.php?title=UM08022_Flasher&diff=17582UM08022 Flasher2024-01-31T12:41:18Z<p>JanB: /* Hardware */ Added Section: "Flasher Pin states when idling"</p>
<hr />
<div><!---<br />
General TBD:<br />
- LG: Right now - EVERYTHING<br />
===========================================<br />
--------------------[more specific, but on multiple locations]<br />
- check if all emphasis (bold, tt, blue, etc ) have made it into the new version<br />
- Add Information -> Additional information<br />
- use of the term free-of-charge utility/tool etc<br />
- check compliant to DocStandards_Rules.txt<br />
- Remove everything regarding to Kickstarter versions? eventually create a chapter Legacy -> Kickstarter version were available for hw version 5-x (200x-200x)...[..]<br />
- 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.<br />
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.<br />
- if week keep the IDE specific stuff in the manual, add Ozone, ES and J-Link Commander were no mentioned.<br />
- IDE specifics move into wiki confirmed by Alex<br />
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)<br />
- check all sections regarding licensing<br />
- Check compliance of J-Link emDocs with typographic conventions described in AboutThisDocument.emDoc. What should be altered? e.g. references<br />
- use uref at all (not blue)?<br />
- search and decide where to use \ref (ref with page number)<br />
- why is \ref (no single "option" \uref is more basic as \ref.....)<br />
- in text, use either \ref or \iref instead of \uref<br />
- in old manual, \H3 started on a new page (not per default, but set manually for api tables etc...)<br />
- move used old images and source files (visio etc) via svn (currently copied)<br />
--------------------[grammar / vocabulary discussion]<br />
- Product names<br />
-- Use of SEGGEPROBE in this document?<br />
- use license over licence<br />
- commandline or command-line?<br />
- toolchain or tool chain?<br />
- crossreference/cross-reference/cross reference?<br />
- overcurrent?<br />
- double words?<br />
- frontend?<br />
- Unit: Kbytes, KBytes, V, mV.... 9V or 9 V? Create rule in Vocabulary<br />
- baudrate or baud rate?<br />
- stackpointer or stack pointer<br />
- check where we should replace abbreviations with the long form (e.h. "milliseconds" instead of "ms")<br />
- config or configuration<br />
- filepointer or file pointer?<br />
--------------------[J-Link dep. specific]<br />
- J-Link command strings or J-Link Command strings or J-Link Command Strings<br />
- J-Link settings file or...<br />
- J-Link control panel or ......<br />
- J-Link script files or...<br />
---><br />
Flasher is a programming tool for microcontrollers with on-chip or external flash memory.<br />
Flasher is designed for programming flash targets with the J-Flash software or stand-alone.<br />
In addition to that Flasher can also be used as a regular J-Link. For more information about J-Link in general,<br />
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].<br />
<br />
<div class="toclimit-2"><br />
__TOC__<br />
</div><br />
<br />
== Flasher Software and Documentation Pack ==<br />
The Flasher Software and Documentation Pack, available for download on the [https://www.segger.com/downloads/flasher#FlasherSoftwareAndDocumentationPack SEGGER homepage], includes applications to be used with Flasher and in some cases with J-Link and J-Trace.<br><br />
It also comes with USB-drivers for J-Link, J-Trace and Flasher.<br />
<br />
=== Software overview ===<br />
{| class="wikitable"<br />
|-<br />
! Software !! Description<br />
|-<br />
| [[J-Link Configurator|Flasher Configurator]] || GUI-based configuration tool for Flasher. Allows configuration of USB identification as well as TCP/IP identification of Flashers.<br />
|-<br />
| [[FlasherControl|Flasher Control]] || Command-line tool to connect to the Flasher's command-line interface via USB.<br />
|-<br />
| [[J-Flash]] || Flash programming application.<br />
|-<br />
| [[J-Flash SPI]] || (Q)SPI flash programming application.<br />
|-<br />
| [[J-Link Commander]] || Command-line tool with basic functionality for target analysis.<br />
|-<br />
| [[J-Link Registration]] || SEGGER J-Link Registration utility to register your SEGGER product such as a J-Link, J-Trace or Flasher.<br />
|-<br />
| [[JTAGLoad]] || Command line tool that opens an svf file and sends the data in it via J-Link / J-Trace or Flasher to the target.<br />
|-<br />
| [https://www.segger.com/downloads/flasher/UM08037.pdf U-Flash] || Tool for creating standalone Flasher projects.<br />
|}<br />
<br />
== Flasher overview ==<br />
Flasher connects to a PC using the USB/Ethernet/RS232 interface (what host interfaces are available depends on the Flasher model),<br />
running Windows, Linux & MacOS. In stand-alone mode,<br />
Flasher can be driven by the start/stop button, or via the RS232 interface (handshake control or ASCII interface).<br />
Flasher always has a 20-pin connector, which target interfaces are supported depends on the Flasher model:<br />
* Flasher ARM: JTAG and SWD are supported.<br />
* Flasher RX: JTAG is supported. Flasher comes with additional 14-pin RX adapter<br />
* Flasher PPC: JTAG is supported. Flasher comes with additional 14-pin PPC adapter.<br />
* Flasher PRO: JTAG and SWD are supported.<br />
* Flasher Compact: JTAG and SWD are supported.<br />
<br />
=== Features of Flasher ARM/PPC/RX/PRO ===<br />
* Three boot modes: PC-based mode, stand-alone mode, file access mode<br />
* Stand-alone JTAG/SWD programmer (Once set up, Flasher can be controlled without the use of PC program)<br />
* No power supply required, powered through USB<br />
* Supports internal and external flash devices<br />
* 128 MB memory for storage of target program<br />
* Can be used as J-Link (emulator) with a download speed of up to 720 Kbytes/second<br />
* Data files can updated via USB/Ethernet (using the J-Flash software), via FTP, via RS232 or via the file access mode of Flasher<br />
<br />
{| class="seggertable"<br />
|-<br />
! Flasher model !! Supported cores !! Supported target interfaces !! Flash programming speed (depending on target hardware)<br />
|-<br />
| Flasher ARM || ARM7/ARM9/Cortex-M || JTAG, SWD || between 170 and 300 Kbytes/second<br />
|-<br />
| Flasher RX || Renesas RX610, RX621, RX62N, RX62T || JTAG || between 30-300 Kbytes/second<br />
|-<br />
| Flasher PPC || Power PC e200z0 || JTAG || up to 138 Kbytes/second<br />
|-<br />
| Flasher PRO || ARM7/ARM9/Cortex-M Renesas RX610, RX621, RX62N, RX62T Power PC e200z0 || JTAG, SWD || between 30-300 Kbytes/ second<br />
|-<br />
|}<br />
<br />
==== Features of Flasher Compact ====<br />
<br />
* Three boot modes: PC-based mode, stand-alone mode, file access mode<br />
* Stand-alone JTAG/SWD programmer (Once set up, Flasher can be controlled without the use of PC program)<br />
* No power supply required, powered through USB<br />
* Supports internal and external flash devices<br />
* 128 MB memory for storage of target program<br />
* Can be used as J-Link (emulator) with a download speed of up to 720 Kbytes/second<br />
* Data files can updated via USB/Ethernet (using the J-Flash software) or via the file access mode of Flasher<br />
<br />
{| class="seggertable"<br />
|-<br />
! Flasher model !! Supported cores !! Supported target interfaces !! Flash programming speed (depending on target hardware)<br />
|-<br />
| Flasher ARM || ARM7/ARM9/Cortex-M || JTAG, SWD || between 170 and 300 Kbytes/second<br />
|-<br />
| Flasher RX || Renesas RX610, RX621, RX62N, RX62T || JTAG || between 30-300 Kbytes/second<br />
|-<br />
| Flasher PPC || Power PC e200z0 || JTAG || up to 138 Kbytes/second<br />
|-<br />
| Flasher Compact || ARM7/ARM9/Cortex-M Renesas RX610, RX621, RX62N, RX62T Power PC e200z0 || JTAG, SWD || between 30-300 Kbytes/ second<br />
|-<br />
|}<br />
<br />
==== Features of Flasher Portable/Flasher Portable PLUS ====<br />
<br />
* Stand-alone in-circuit-programmer (Once set up, Flasher can be controlled without the use of a PC program)<br />
* Powered by an internal rechargeable battery (standard batteries for Flasher Portable), no Laptop or external power supply required.<br />
* Multiple firmware images can be stored on Flasher<br />
* 128 MB memory for storage of target program<br />
* Flasher Portable PLUS supports a simple selection of up to 99 firmware images via buttons (since V7.90)<br />
* Supported CPUs: ARM Cortex, Legacy ARM7/9, Renesas RX, Freescale PowerPC<br />
* Supports internal and external flash<br />
* Free software updates<ref name="legitimateOwned" />, 1 year of support<br />
* Data files can be updated via the file access mode functionality or via J-Flash<br />
* Programming speed between 30-300 Kbytes/second (actual speed depends on target hardware)<br />
{{Note|1=Ethernet and RS232 as host interface are not available for Flasher Portable}}<br />
<references><br />
<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.<br />
As a legitimate owner of a SEGGER Flasher, you can always download the latest software free of charge.<br />
Though not planned and not likely, we reserve the right to change this policy.<br />
Note that older models may not be supported by newer versions of the software.<br />
Typically, we support older models with new software at least 3 years after end of life.<br />
</ref><br />
</references><br />
<br />
{| class="seggertable"<br />
|-<br />
! Supported cores !! Supported target interfaces !! Flash programming speed (depending on target hardware)<br />
|-<br />
| ARM7/ARM9/Cortex-M || JTAG, SWD || between 30-300 Kbytes/second<br />
|-<br />
| Renesas RX610, RX621, RX62N, RX62T || JTAG || between 170 and 300 Kbytes/second<br />
|-<br />
| Power PC e200z0 || JTAG || up to 138 Kbytes/second<br />
|-<br />
|}<br />
<br />
==== Working environment ====<br />
<br />
'''General'''<br><br />
The Flasher can operate from a PC with an appropriate software like J-Flash or in stand-alone mode.<br />
<br />
'''Host System'''<br><br />
IBM PC/AT or compatible CPU: 486 (or better) with at least 128MB of RAM,<br />
running Windows, Linux & MacOS. It needs to have a USB, Ethernet or RS232 interface available for communication with Flasher.<br />
<br />
'''Power supply'''<br><br />
Flasher Portable: 3x standard AAA batteries or 5V DC, min. 100 mA via USB connector.<br />
<br />
Flasher Portable PLUS: internal rechargeable 680mAh Li-Ion battery, min. 100 mA via USB connector.<br />
<br />
Other Flashers: 5V DC, min. 100 mA via USB connector.<br />
<br />
'''Installing Flasher PC-software'''<br><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><br />
More information about the package you can find in the similar [[J-Link Software and Documentation Pack]].<br><br />
The package includes U-Flash and J-Flash, the main tools for flashing targets:<br />
* J-Flash : J-Flash User Guide ([https://wiki.segger.com/UM08003_JFlash UM08003_JFlash.pdf]).<br />
* U-Flash : U-Flash User Guide ([https://www.segger.com/downloads/flasher/UM08037.pdf UM08037_UniversalFlashLoader.pdf]).<br />
<br />
=== Specifications ===<br />
<br />
<br />
==== Specifications for Flasher ARM ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Windows, Linux & MacOS<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C<br />
|-<br />
| Storage Temperature || -20 °C ... +60 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
!colspan="100%"| Mechanical<br />
|-<br />
| Size (without cables) || 121mm x 66mm x 30mm<br />
|-<br />
| Weight (without cables) || 119g<br />
|-<br />
!colspan="100%"| Available interfaces<br />
|-<br />
| USB Host interface || USB 2.0, full speed<br />
|-<br />
| Ethernet Host interface || 10/100 MBit<br />
|-<br />
| RS232 Host interface || RS232 9-pin<br />
|-<br />
| Target interface || JTAG 20-pin (14-pin adapter available)<br />
|-<br />
!colspan="100%"| JTAG Interface, Electrical<br />
|-<br />
| Power Supply || USB powered, 100mA for Flasher ARM. 500 mA if target is powered by Flasher ARM<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| Target supply voltage || Supply voltage is 5V, max.<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6 <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Max. JTAG speed || up to 12MHz<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
===== Flasher ARM download speed =====<br />
<br />
The following table lists the Flasher ARM performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! ARM7 memory download<br />
|-<br />
| Flasher ARM || 720 Kbytes/s (12MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
<br />
==== Specifications for Flasher RX ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Windows, Linux & MacOS<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C<br />
|-<br />
| Storage Temperature || -20 °C ... +60 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
!colspan="100%"| Mechanical<br />
|-<br />
| Size (without cables) || 121mm x 66mm x 30mm<br />
|-<br />
| Weight (without cables) || 119g<br />
|-<br />
!colspan="100%"| Available interfaces<br />
|-<br />
| USB Host interface || USB 2.0, full speed<br />
|-<br />
| Ethernet Host interface || 10/100 MBit<br />
|-<br />
| RS232 Host interface || RS232 9-pin<br />
|-<br />
| Target interface || JTAG 20-pin (shipped with 14-pin adapter for Renesas RX)<br />
|-<br />
!colspan="100%"| JTAG Interface, Electrical<br />
|-<br />
| Power Supply || USB powered, 100mA for Flasher RX. 500 mA if target is powered by Flasher RX<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| 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)<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6 <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Max. JTAG speed || up to 12MHz<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
===== Flasher RX download speed =====<br />
<br />
The following table lists the Flasher RX performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! Flasher RX600 series memory download<br />
|-<br />
| Flasher RX || 720 Kbytes/s (12MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
<br />
==== Specifications for Flasher PPC ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Windows, Linux & MacOS<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C<br />
|-<br />
| Storage Temperature || -20 °C ... +60 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
!colspan="100%"| Mechanical<br />
|-<br />
| Size (without cables) || 121mm x 66mm x 30mm<br />
|-<br />
| Weight (without cables) || 119g<br />
|-<br />
!colspan="100%"| Available interfaces<br />
|-<br />
| USB Host interface || USB 2.0, full speed<br />
|-<br />
| Ethernet Host interface || 10/100 MBit<br />
|-<br />
| RS232 Host interface || RS232 9-pin<br />
|-<br />
| Target interface || JTAG 20-pin (shipped with 14-pin adapter for Renesas PPC)<br />
|-<br />
!colspan="100%"| JTAG Interface, Electrical<br />
|-<br />
| Power Supply || USB powered, 100mA for Flasher PPC. 500 mA if target is powered by Flasher PPC<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| Target supply voltage || Supply voltage is 5V, max.<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6 <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Max. JTAG speed || up to 12MHz<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
===== Flasher RX download speed =====<br />
<br />
The following table lists the Flasher PPC performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! Memory download<br />
|-<br />
| Flasher PPC || 530 Kbytes/s (8 MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
<br />
==== Specifications for Flasher PRO ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Windows, Linux & MacOS<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C<br />
|-<br />
| Storage Temperature || -20 °C ... +60 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
!colspan="100%"| Mechanical<br />
|-<br />
| Size (without cables) || 121mm x 66mm x 30mm<br />
|-<br />
| Weight (without cables) || 119g<br />
|-<br />
!colspan="100%"| Available interfaces<br />
|-<br />
| USB Host interface || USB 2.0, full speed<br />
|-<br />
| Ethernet Host interface || 10/100 MBit<br />
|-<br />
| RS232 Host interface || RS232 9-pin<br />
|-<br />
| Target interface || JTAG 20-pin (14-pin adapter available)<br />
|-<br />
!colspan="100%"| JTAG Interface, Electrical<br />
|-<br />
| Power Supply || USB powered, 100mA for Flasher PRO. 500 mA if target is powered by Flasher PRO<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| Target supply voltage || Supply voltage is 5V, max.<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6 <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Max. JTAG speed || up to 12MHz<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
<br />
===== Supported CPU cores =====<br />
<br />
The Flasher PRO supports the following CPU cores:<br />
<br />
'''ARM Cortex'''<br><br />
* Cortex-A5<br />
* Cortex-A8<br />
* Cortex-A9<br />
* Cortex-R4<br />
* Cortex-R5<br />
* Cortex-M0<br />
* Cortex-M0+<br />
* Cortex-M1<br />
* Cortex-M3<br />
* Cortex-M4<br />
<br />
'''ARM (legacy cores)'''<br><br />
* ARM720T<br />
* ARM7TDMI<br />
* ARM7TDMI-S<br />
* ARM920T<br />
* ARM922T<br />
* ARM926EJ-S<br />
* ARM946E-S<br />
* ARM966E-S<br />
* ARM1136JF-S<br />
* ARM1136J-S<br />
* ARM1156T2-S<br />
* ARM1156T2F-S<br />
* ARM1176JZ-S<br />
* ARM1176JZF<br />
* ARM1176JZF-S<br />
<br />
'''Renesas RX'''<br><br />
* RX111<br />
* RX210<br />
* RX220<br />
* RX21A<br />
* RX610<br />
* RX621<br />
* RX62G<br />
* RX62N<br />
* RX62T<br />
* RX630<br />
* RX631<br />
* RX63N<br />
* RX63T<br />
<br />
'''Freescale Power PC'''<br><br />
* e200z0<br />
<br />
===== Supported Target interfaces =====<br />
<br />
The Flasher PRO supports the following target interfaces:<br />
<br />
* JTAG<br />
* SWD<br />
* FINE<br />
* SPD<br />
<br />
===== Flasher PRO download speed =====<br />
<br />
The following table lists the Flasher PRO performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! ARM7 memory download<br />
|-<br />
| Flasher PRO || 720 Kbytes/s (12MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
<br />
==== Specifications for Flasher Compact ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Microsoft Windows (x86/x64)<br>Linux (x86/x64/Arm)<br>macOS (x86/Apple M1)<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C<br />
|-<br />
| Storage Temperature || -20 °C ... +65 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
| Size (without cables) || 70mm x 45mm x 18mm<br />
|-<br />
| Weight (without cables) || 40g<br />
|-<br />
| USB Host interface || USB 2.0 (Hi-Speed); Micro USB<br />
|-<br />
| Target interface || JTAG 20-pin (14-pin adapter available)<br />
|-<br />
| Power Supply || USB powered, 130mA (idle)<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| Target supply voltage || Supply voltage is 5V, max.<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
| Supported target interfaces || SPI, QSPI, 8051 C2, cJTAG, FINE, ICSP, IIC, ISP, JTAG, PDI, SPD, SWD, SWIM, UART, UPDI<br />
|-<br />
| Serial transfer rate between Flasher Compact and target || Up to 50 MHz (Depending on target interface)<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6 <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
===== Supported CPU cores =====<br />
<br />
The Flasher Compact supports the following CPU cores:<br />
'''ARM Cortex'''<br><br />
* Cortex-A5<br />
* Cortex-A8<br />
* Cortex-A9<br />
* Cortex-R4<br />
* Cortex-R5<br />
* Cortex-M0<br />
* Cortex-M0+<br />
* Cortex-M1<br />
* Cortex-M3<br />
* Cortex-M4<br />
<br />
'''ARM (legacy cores)'''<br><br />
* ARM720T<br />
* ARM7TDMI<br />
* ARM7TDMI-S<br />
* ARM920T<br />
* ARM922T<br />
* ARM926EJ-S<br />
* ARM946E-S<br />
* ARM966E-S<br />
* ARM1136JF-S<br />
* ARM1136J-S<br />
* ARM1156T2-S<br />
* ARM1156T2F-S<br />
* ARM1176JZ-S<br />
* ARM1176JZF<br />
* ARM1176JZF-S<br />
<br />
'''Renesas RX'''<br><br />
* RX111<br />
* RX210<br />
* RX220<br />
* RX21A<br />
* RX610<br />
* RX621<br />
* RX62G<br />
* RX62N<br />
* RX62T<br />
* RX630<br />
* RX631<br />
* RX63N<br />
* RX63T<br />
<br />
'''Freescale Power PC'''<br><br />
* e200z0<br />
<br />
===== Flasher Compact download speed =====<br />
<br />
The following table lists the Flasher Compact performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! ARM7 memory download<br />
|-<br />
| Flasher Compact || 720 Kbytes/s (12MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
<br />
==== Specifications for Flasher Portable PLUS ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Windows, Linux & MacOS<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C (normal operation)<br>+5 °C ... +45 °C (battery charging)<br />
|-<br />
| Storage Temperature || -20 °C ... +45 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
| 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)<br />
|-<br />
| Charging via USB || 70 minutes (at 1A charging current)<br />
|-<br />
!colspan="100%"| Mechanical<br />
|-<br />
| Size (without cables) || 126mm x 70mm x 28mm<br />
|-<br />
| Weight (without cables) || 140g<br />
|-<br />
!colspan="100%"| Available interfaces<br />
|-<br />
| USB Host interface || USB 2.0<br />
|-<br />
| Target interface || Standard 20-pin 0.1" connector (Adapters available).<br />
|-<br />
!colspan="100%"| Target Interface, Electrical<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| Target supply voltage || Supply voltage is 4.5V, max. (depends on the current battery voltage).<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6 <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Max. JTAG speed || up to 12MHz<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
===== Supported CPU cores =====<br />
<br />
The Flasher Portable PLUS supports the following CPU cores:<br />
<br />
'''ARM Cortex'''<br><br />
* Cortex-A5<br />
* Cortex-A8<br />
* Cortex-A9<br />
* Cortex-R4<br />
* Cortex-R5<br />
* Cortex-M0<br />
* Cortex-M0+<br />
* Cortex-M1<br />
* Cortex-M3<br />
* Cortex-M4<br />
<br />
'''ARM (legacy cores)'''<br><br />
* ARM720T<br />
* ARM7TDMI<br />
* ARM7TDMI-S<br />
* ARM920T<br />
* ARM922T<br />
* ARM926EJ-S<br />
* ARM946E-S<br />
* ARM966E-S<br />
* ARM1136JF-S<br />
* ARM1136J-S<br />
* ARM1156T2-S<br />
* ARM1156T2F-S<br />
* ARM1176JZ-S<br />
* ARM1176JZF<br />
* ARM1176JZF-S<br />
<br />
'''Renesas RX'''<br><br />
* RX111<br />
* RX210<br />
* RX220<br />
* RX21A<br />
* RX610<br />
* RX621<br />
* RX62G<br />
* RX62N<br />
* RX62T<br />
* RX630<br />
* RX631<br />
* RX63N<br />
* RX63T<br />
<br />
'''Freescale Power PC'''<br><br />
* e200z0<br />
<br />
===== Supported Target interfaces =====<br />
<br />
The Flasher Portable PLUS supports the following target interfaces:<br />
* JTAG<br />
* SWD<br />
* FINE<br />
* SPD<br />
<br />
===== Flasher Portable PLUS download speed =====<br />
<br />
The following table lists the Flasher Portable PLUS performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! ARM7 memory download<br />
|-<br />
| Flasher PRO || 720 Kbytes/s (12MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
<br />
==== Specifications for Flasher Portable ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Windows, Linux & MacOS<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C<br />
|-<br />
| Storage Temperature || -20 °C ... +65 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
| Power Supply || a) USB powered, 100mA for Flasher Portable. 500 mA if target is powered by Flasher Portable<br>b) Batteries powered (3xAAA)<br />
|-<br />
!colspan="100%"| Mechanical<br />
|-<br />
| Size (without cables) || 130mm x 65mm x 25mm<br />
|-<br />
| Weight (without cables) || 120g<br />
|-<br />
!colspan="100%"| Available interfaces<br />
|-<br />
| USB Host interface || USB 2.0<br />
|-<br />
| Target interface || Standard 20-pin 0.1" connector (Adapters available).<br />
|-<br />
!colspan="100%"| Target Interface, Electrical<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| Target supply voltage || Supply voltage is 4.5V, max. (depends on the current battery voltage).<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6V <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Max. JTAG speed || up to 12MHz<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
===== Supported CPU cores =====<br />
<br />
The Flasher Portable supports the following CPU cores:<br />
<br />
'''ARM Cortex'''<br><br />
* Cortex-A5<br />
* Cortex-A8<br />
* Cortex-A9<br />
* Cortex-R4<br />
* Cortex-R5<br />
* Cortex-M0<br />
* Cortex-M0+<br />
* Cortex-M1<br />
* Cortex-M3<br />
* Cortex-M4<br />
<br />
'''ARM (legacy cores)'''<br><br />
* ARM720T<br />
* ARM7TDMI<br />
* ARM7TDMI-S<br />
* ARM920T<br />
* ARM922T<br />
* ARM926EJ-S<br />
* ARM946E-S<br />
* ARM966E-S<br />
* ARM1136JF-S<br />
* ARM1136J-S<br />
* ARM1156T2-S<br />
* ARM1156T2F-S<br />
* ARM1176JZ-S<br />
* ARM1176JZF<br />
* ARM1176JZF-S<br />
<br />
'''Renesas RX'''<br><br />
* RX111<br />
* RX210<br />
* RX220<br />
* RX21A<br />
* RX610<br />
* RX621<br />
* RX62G<br />
* RX62N<br />
* RX62T<br />
* RX630<br />
* RX631<br />
* RX63N<br />
* RX63T<br />
<br />
'''Freescale Power PC'''<br><br />
* e200z0<br />
<br />
===== Supported Target interfaces =====<br />
<br />
The Flasher Portable supports the following target interfaces:<br />
<br />
* JTAG<br />
* SWD<br />
* FINE<br />
* SPD<br />
<br />
===== Flasher Portable download speed =====<br />
<br />
The following table lists the Flasher Portable performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! ARM7 memory download<br />
|-<br />
| Flasher PRO || 720 Kbytes/s (12MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
== Working with Flasher ==<br />
<br />
This chapter describes functionality and how to use Flasher.<br />
<br />
=== Flasher Portable PLUS ===<br />
<br />
The Flasher Portable PLUS is a portable version of SEGGERs Flasher family,<br />
which has been designed to fill the need of an extremely portable, production grade,<br />
Flash programmer used for in-field firmware updates. No need to be tethered to an outlet,<br />
it is powered by an integrated Li-Ion cell (680mAh).<br />
The Flasher Portable PLUS programs flash targets in stand-alone mode or via J-Flash PC software.<br><br />
<br />
Furthermore the Flasher Portable PLUS allows the user to select between 99 data images to be programmed (since V7.90).<br />
The images can be easily selected by using the SEL button on the front of the housing.<br />
For more information about support for multiple images, please refer to [[#Multiple File Support | Multiple File Support]].<br><br />
For setup and configuration purposes, the Flasher Portable PLUS connects to a PC via USB interface,<br />
running Windows, Linux & MacOS and has a built-in standard 20-pin J-Link target connector.<br><br />
<br />
{{Note|1=Ethernet and RS232 as host interface are not available for the Flasher Portable PLUS.}}<br />
<br />
==== Housing & Buttons ====<br />
<br />
The Flasher Portable PLUS comes with a display, which is for example used to represent the status of an ongoing flash progress.<br />
Furthermore, there are three buttons which allow the user to control Flasher Portable PLUS.<br />
For a detailed description of the functions, take a look at the table below:<br />
<br />
<!-- LG xxxxxx edit image with labels for buttons? (Is this actually necessary? Buttons are basically self-explanatory...) --><br />
[[File:Flasher_Portable_PLUS.png | 500px]]<br />
<br />
{| class="seggertable"<br />
|-<br />
! Button !! Description<br />
|-<br />
| Program || Start programming process with the currently selected image.<br />
|-<br />
| Select image || Select the image to be programmed next time the Program button is pressed.<br />
|-<br />
| 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.<br />
|-<br />
|}<br />
<br />
==== Configuration ====<br />
<br />
The Flasher Portable PLUS has some configuration options the other Flashers do not have.<br />
{| class="seggertable"<br />
|-<br />
! Option !! Description !! Value range !! Default value<br />
|-<br />
| AutoPowerOffOnIdle || Specifies the time interval after which the Flasher Portable will turn off without any user action || 1 to 3600 || 60<br />
|-<br />
| ShowDatCRCAfterProgramming || Activates displaying the data file CRC after the programming in the pop up message || 0 = inactive, 1 = active || 0<br />
|-<br />
|}<br />
<br />
If the <tt>Flasher.ini</tt> does not contain a <tt>[Config]</tt> section with the configuration option, the default value is used.<br />
<br />
'''Example:'''<br><br />
This sample will show the data file CRC after the programming and the auto power of is set to five minutes (=300 seconds).<br />
<br />
<source lang="c"><br />
[CONFIG]<br />
AutoPowerOffOnIdle = "300"<br />
ShowDatCRCAfterProgramming = "1"<br />
</source><br />
<br />
=== Flasher Portable ===<br />
<br />
The Flasher Portable is a portable version of SEGGERs Flasher family, which has been designed to fill the need of an extremely portable,<br />
production grade, Flash programmer used for in-field firmware updates. No need to be tethered to an outlet,<br />
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><br />
<br />
Furthermore the Flasher Portable allows the user to select between four data images to be programmed.<br />
The images can be easily selected by using the arrow buttons on the front of the housing.<br />
For more information about support for multiple images, please refer to [[#Multiple File Support | Multiple File Support]].<br><br />
For setup and configuration purposes, the Flasher Portable connects to a PC via USB interface,<br />
running Windows, Linux & MacOS and has a built-in standard 20-pin J-Link target connector.<br><br />
<br />
{{Note|1=Ethernet and RS232 as host interface are not available for the Flasher Portable.}}<br />
<br />
==== Housing & Buttons ====<br />
<br />
The Flasher Portable comes with several leds which are for example used to represent the status of an ongoing flash progress.<br />
Furthermore, there are three buttons which allow the user to control Flasher Portable.<br />
For a detailed description of the functions, take a look at the two tables below:<br />
<br />
<!-- LG xxxxxx edit image with labels for buttons?--><br />
[[File:Flasher_Portable_Top_2.png | 500px]]<br />
<br />
{| class="seggertable"<br />
|-<br />
! LED !! Description<br />
|-<br />
| ACTIVE || GREEN. Blinks while the Flasher Portable is busy / performs operations on the target.<br />
|-<br />
| PASS/FAIL || GREEN/RED. Indicates, if the last flashing cycle was successful.<br />
<ul><br />
<li> GREEN: Flashing cycle completed successfully.</li><br />
<li> RED: Flashing cycle completed with error.</li><br />
</ul><br />
|-<br />
| 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]].<br />
|-<br />
| POWER || GREEN: Indicates if Flasher is currently powered. Blinks while Flasher Portable tries to enumerate via USB.<br />
|-<br />
| 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.<br />
|-<br />
|}<br />
<br />
{| class="seggertable"<br />
|-<br />
! Button !! Description<br />
|-<br />
| Program || Start programming process with the currently selected image.<br />
|-<br />
| Select image || Select the image to be programmed next time the <tt>Program</tt> button is pressed.<br />
|-<br />
| 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<br />
|-<br />
|}<br />
<br />
=== File system ===<br />
<br />
The Flasher with hardware version 4 and lower supports 8.3 filenames only (8 characters filename, 3 characters file extension).<br />
Using longer filenames may result in incorrect operation. Integrated functions,<br />
like the FTP server or the terminal server, will refuse writing files with long filenames.<br />
<br />
=== Setting up the IP interface ===<br />
<br />
Setting up the IP interface<br />
Some of the Flasher models come with an additional Ethernet interface to communicate with the host system.<br />
These Flashers also come with a built-in webserver which allows some basic setup of the emulator,<br />
e.g. configuring a default gateway which allows using it even in large intranets. For more information,<br />
please refer to [[#TCP Services | TCP Services]].<br />
<br />
==== Connecting the first time ====<br />
<br />
When connecting Flasher the first time, it attempts to acquire an IP address via DHCP.<br />
The recommended way for finding out which IP address has been assigned to Flasher is, to use the J-Link Configurator.<br />
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.<br />
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''.<br />
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,<br />
please refer to ''UM08001, J-Link / J-Trace User Guide'', chapter ''Setup'', section ''Setting up the IP interface''.<br />
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]].<br />
<br />
=== Operating modes ===<br />
<br />
All Flashers except the Flasher ATE are able to boot in 3 different modes:<br />
<br />
* PC-based mode<br />
* Stand-alone mode<br />
* File access mode<br />
<br />
{{Note|1=The Flasher ATE only supports the stand-alone mode.}}<br />
<br />
'''Definition PC-based mode'''<br><br />
Flasher is connected to a PC via USB/Ethernet and controlled by a PC application (J-Flash).<br />
If there is an RS232 connection to a PC, does not have any influence on if PC-based mode is entered or not.<br />
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, ...)<br />
<br />
'''Definition Stand-alone mode'''<br><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.<br />
<br />
'''Definition file access mode'''<br><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.<br />
In this mode, Flasher enumerates as a mass storage device (like an USB Stick) at the host PC.<br />
In this mode, configuration + data files can be manually placed on the Flasher and the Flasher logfile can be read out.<br />
If you are using a self-powered Flasher such as the Flasher Portable Plus, the Flasher must be turned off before connecting it.<br />
<br />
==== PC-based mode ====<br />
If you want to use Flasher for the first time you need to install the J-Link software and documentation package.<br />
After installation, connect Flasher to the host PC via USB or Ethernet.<br />
For more information about how to install the J-Link software and documentation package please refer to [[J-Link Software and Documentation Pack]].<br />
<br />
===== Connecting the target system =====<br />
<br />
'''Power-on sequence'''<br><br />
In general, Flasher should be powered on before connecting it with the target device.<br />
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.<br />
Power-on the device after you connected Flasher to it. Flasher will boot in "PC-based mode".<br />
<br />
'''Verifying target device connection with J-Link.exe'''<br><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.<br />
Then start the J-Link command line tool <tt>JLink.exe</tt>,<br />
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.<br />
The screenshot below shows the output of <tt>JLink.exe</tt>.<br />
<br />
[[File:flasher_jlinkmode.gif]]<br />
<br />
===== LED status indicators =====<br />
<br />
In PC-based mode, there are also certain LED status codes defined:<br />
<br />
{| class="seggertable"<br />
|-<br />
! # !! Status of LED !! Meaning<br />
|-<br />
| 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.<br />
|-<br />
| 0 || GREEN<br>constant || Flasher enumeration process is complete and it is ready to be controlled by a PC application.<br />
|-<br />
|}<br />
<br />
==== Stand-alone mode ====<br />
<br />
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]].<br />
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).<br />
In the "stand-alone mode" Flasher can be used as a stand-alone flash programmer.<br><br />
<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]].}}<br />
<br />
===== LED status indicators =====<br />
Progress and result of an operation is indicated by Flasher's LEDs. The behavior is different for J-Link and stand-alone mode.<br />
For a definition of the different modes, please refer to [[#Operating modes | Operating modes]].<br />
The following table describes the behavior of the LEDs in stand-alone mode.<br />
<br />
{| class="seggertable"<br />
|-<br />
! # !! Status of LED !! Meaning<br />
|-<br />
| 0 || GREEN<br>constant || Flasher waits for a start trigger to perform an operation in stand-alone mode.<br />
|-<br />
| 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><br />
|-<br />
| 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.<br />
|-<br />
|}<br />
Older Flasher models have a different behavior.<br />
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:<br />
<br />
* 1621xxxxx (Flasher ARM V2)<br />
* 1630xxxxx (Flasher ARM V3)<br />
* 4210xxxxx (Flasher PPC V1)<br />
* 4110xxxxx (Flasher RX V1)<br />
<br />
{| class="seggertable"<br />
|-<br />
! # !! Status of LED !! Meaning<br />
|-<br />
| 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.<br />
|-<br />
| 1 || GREEN<br>constant || Connect to target and perform init sequence.<br />
|-<br />
| 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><br />
|-<br />
| 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.<br />
|-<br />
|}<br />
<br />
==== File access mode ====<br />
<br />
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".<br />
If you are using a self-powered Flasher such as the Flasher Portable Plus, the Flasher must be turned off before connecting it.<br />
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.<br />
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>.<br />
<br />
[[File:flasher_mode_msd.gif]]<br />
<br />
<tt>FLASHER.CFG</tt> contains the configuration settings for programming the target device and <tt>FLASHER.DAT</tt> contains the data to be programmed.<br />
<tt>FLASHER.LOG</tt> contains all logging information about the commands, performed in stand-alone mode.<br />
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><br />
<br />
Currently, J-Flash does not support to configure Flasher for automated serial number programming.<br><br />
<br />
If you want to configure multiple Flasher for the same target you do not have to use J-Flash all the time.<br />
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".<br />
<br />
=== Setting up Flasher for stand-alone mode ===<br />
{{Note| All Options how to set up the Flasher for stand-alone mode you can find here: [[Flasher/Download project to Flasher|Download project to the Flasher]]}}<br />
<br />
In order to set up Flasher for the stand-alone mode it needs to be configured once using the J-Flash software.<br />
For more information about J-Flash, please refer to the ''J-Flash User Guide''.<br><br />
<br />
After starting J-Flash, open the appropriate J-Flash project for the target Flasher shall be configured for, by selecting '''File''' -> '''Open Project'''.<br />
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><br />
<br />
After the appropriate project has been opened / created, the data file which shall be programmed needs to be loaded, by selecting '''File''' -> '''Open'''.<br />
After this J-Flash should look like in the screenshot below.<br />
<br />
[[File:jflash_projectfile_datafile.gif]]<br />
<br />
Before downloading the configuration (project) and program data (data file) to Flasher, the connection type (USB/IP) needs to be selected in the project.<br />
These settings are also saved on a per-project basis, so this also only needs to be setup once per J-Flash project.<br />
The connection dialog is opened by clicking '''Options''' -> '''Project settings''' -> '''General'''.<br />
<br />
[[File:jflash_connection_dialog.gif]]<br />
<br />
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.<br />
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.<br />
The user then can simply select the Flash he wants to download the configuration to.<br />
<br />
[[File:EmuSelectionDialog.gif]]<br />
<br />
In order to download the configuration and program data to the Flasher, simply select '''File''' -> '''Download config & data file to Flasher'''.<br />
<br />
[[File:jflash_download_to_emul.gif]]<br />
<br />
The J-Flash log window indicates that the download to the emulator was successful.<br />
<br />
[[File:jflash_download_to_emu_succ.gif]]<br />
<br />
From now on, Flasher can be used in stand-alone mode (without host PC interaction) for stand-alone programming.<br />
<br />
==== Preparing for stand-alone operation manually ====<br />
<br />
As an alternative, J-Flash can also be used to save config and data file to a hard drive.<br><br />
<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,<br />
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.<br />
<br />
'''Creating config and data files'''<br><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><br />
<br />
For some devices, additional files (*.PEX) are needed.<br />
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.<br />
<br />
'''About *.PEX files'''<br><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,<br />
the following needs to be taken care of:<br><br />
<br />
For some devices, special connect, reset etc. sequences are necessary which are stored in so-called *.PEX files on the Flasher.<br><br />
<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><br />
<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><br />
The *.PEX files need to be placed in a subdirectory with the same name as the corresponding *.cfg file.<br />
J-Flash creates a directory with the correct name automatically when a config file is created.<br><br />
<br />
Example:<br><br />
<br />
MyConf0 is a project for a device that requires a *.PEX file for connect.<br><br />
MyConf1 is a project for a device that requires no *.PEX file at all.<br />
<br />
[[File:PEX_File_Flasher.png]]<br />
<br />
=== Universal Flash Loader mode ===<br />
<br />
As an alternative to the stand-alone mode, configured via J-Flash, there is the Universal Flash Loader mode.<br />
While the normal stand-alone mode relies on using the debug interface of the device, the Universal Flash Loader<br />
mode uses device or vendor specific programming interfaces and protocols and therefore it is independent of the<br />
CPU core.<br><br />
<br />
The Universal Flash Loader is available for the following Flasher models:<br />
* Flasher PRO<br />
* Flasher Compact<br />
* Flasher Portable PLUS<br />
<br />
For some of the supported devices, SEGGER offers specific adapters.<br />
<br />
==== Preparing manually ====<br />
<br />
The Universal Flash Loader uses an configuration file (*.UNI), a device specific flash programming algorithm (*.PEX) and a data file (*.DAT).<br />
<br />
===== Configuration =====<br />
<br />
The configuration file basically is split into three parts.<br />
The first part, the section [DEVICE], controls the generic behavior of the Universal Flash Loader.<br />
It specifies which protocol driver and data file to use. It allows enabling and configuring target power<br />
and it defines which actions to perform.<br />
The second part consists of one or more [BANKx] sections, which contain information about the memories.<br />
The third part, the section [CONFIG], includes configuration settings for the protocol driver.<br><br />
<br />
An .UNI file might look as follows:<br><br />
<br />
<source lang="c"><br />
[OPTIONS]<br />
TargetPower = "0"<br />
ChipErase = "0"<br />
<br />
[TASKS]<br />
CheckBlank = "1"<br />
Erase = "1"<br />
Program = "1"<br />
Verify = "1"<br />
Secure = "1"<br />
<br />
[DEVICE]<br />
Algo = "RL78.PEX"<br />
Data = "ALL_6k.dat"<br />
<br />
[BANK0]<br />
; Code Flash<br />
Base = "0x00000000"<br />
Size = "0x00004000"<br />
Sect = "0x00000400"<br />
<br />
[BANK1]<br />
; Data Flash<br />
Base = "0x000F1000"<br />
Size = "0x00000800"<br />
Sect = "0x00000400"<br />
<br />
[CONFIG]<br />
BaudRate = "1000000"<br />
ClearConfigOnConnect = "0x00"<br />
Security = "0xFF"<br />
ShieldStart = "0x0000"<br />
ShieldEnd = "0x000F"<br />
</source><br />
<br />
'''[OPTIONS]'''<br><br />
'''TargetPower'''<br><br />
If set to a value >0, power is applied to the target.<br />
The value defines the delay (in ms) after enabling the target power supply and before starting to communicate with the target.<br />
<br />
'''ChipErase'''<br><br />
If set to 1, the chip erase function is called for erasing the chip.<br><br />
{{Note|1=Do not enable this setting if the flash programming algorithm does not support chip erase.}}<br />
<br />
'''[TASKS]'''<br><br />
'''CheckBlank'''<br><br />
Defines if a blank check should be performed before erasing a sector.<br />
<br />
'''Erase'''<br><br />
Defines if the sector should be erased before programming.<br />
<br />
'''Program'''<br><br />
Defines if the sector should be programmed.<br />
<br />
'''Verify'''<br><br />
Defines if the sector should be verified after programming.<br />
<br />
'''Secure'''<br><br />
Defines if the device should be secured or protected against read-out after verifying.<br />
<br />
'''[DEVICE]'''<br><br />
'''Algo'''<br><br />
File name of the flash programming algorithm. This file is provided by SEGGER and will typically support a series of devices.<br />
<br />
'''Data'''<br><br />
File name of the data file to program. The Flasher only supports the Flasher .dat file format.<br />
Flasher .dat files can be generated by J-Flash or Universal Flash Loader and offer high performance together with high flexibility.<br />
<br />
'''[BANKx]'''<br><br />
x blocks with configuration data for the flash banks. All three parameters (Base, Size and Sect) are mandatory.<br />
<br />
'''Base'''<br><br />
Base address of the flash bank.<br />
<br />
'''Size'''<br><br />
Total size of the flash bank.<br />
<br />
'''Sect'''<br><br />
Sector size of the flash bank.<br />
<br />
'''[CONFIG]'''<br><br />
This section includes specific configuration data for the flash programming algorithm.<br><br />
There are no general parameters.<br />
<br />
{{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. }}<br />
<br />
==== Preparing using the PC utility ====<br />
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.<br />
<br />
[[File:Universal Flash Loader.png]]<br />
<br />
The Universal Flash Loader Configurator comes with a large list of devices and flash programming algorithms. If you are going to<br />
use a device from one of the supported families which currently is not available in the utility, feel free to contact the support.<br />
<br />
=== Multiple File Support ===<br />
<br />
It is also possible to have multiple data files and config files on Flasher, to make Flasher more easy to use in production environment.<br />
To choose the correct configuration file and data file pair, a <tt>FLASHER.INI</tt> file is used.<br />
This init file contains a <tt>[FILES]</tt> section which describes which configuration file and which data file should be used for programming.<br />
A sample content of a FLASHER.INI file is shown below:<br><br />
<br />
<source><br />
[FILES]<br />
DataFile = "Flasher1.dat"<br />
ConfigFile = "Flasher1.cfg"<br />
</source><br />
<br />
Using this method all configuration files and data files which are used in the production only have to be downloaded once.<br />
From there on a configuration file / data file pair can be switched by simply replacing the <tt>FLASHER.INI</tt> by a new one,<br />
which contains the new descriptions for the configuration file and data file. The <tt>FLASHER.INI</tt> can be replaced in two ways:<br />
<ol><br />
<li>Boot Flasher in file access mode in order to replace the <tt>FLASHER.INI</tt></li><br />
<li><br />
If Flasher is already integrated into the production line, runs in stand-alone mode and can not be booted in other mode:<br />
Use the file I/O commands provided by the ASCII interface of Flasher, to replace the <tt>FLASHER.INI</tt>.<br />
For more information about the file I/O commands, please refer to [[#File I/O commands | File I/O commands]].<br />
</li><br />
</ol><br />
{{Note|1=Flasher with hardware version 4 and lower only supports 8.3 filenames only (8 characters filename, 3 characters file extension). Using longer filenames may result in incorrect operation.}}<br />
<br />
==== Flasher Portable specifics ====<br />
<br />
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><br />
<br />
Which config / data file pair is used for which image selection position is determined by the contents of the FLASHER.INI.<br />
For this, the FLASHER.INI contents in the <tt>[FILES]</tt> section have been extended.<br />
The sample below shows how to enable the user to select between four different images on the Flasher portable via the select / arrow button:<br />
<br />
<source><br />
[FILES]<br />
DataFile = "First.dat"<br />
ConfigFile = "First.cfg"<br />
DataFile1 = "Second.dat"<br />
ConfigFile1 = "Second.cfg"<br />
DataFile2 = "Third.dat"<br />
ConfigFile2 = "Third.cfg"<br />
DataFile3 = "Fourth.dat"<br />
ConfigFile3 = "Fourth.cfg"<br />
</source><br />
<br />
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.<br />
From there on, switching between the files can be done by simply using the selection button of Flasher Portable.<br />
<br />
===== Example =====<br />
<br />
1 Target, 2 Datafiles (e.g. boot loader und application) --> same configuration file (*.CFG) but different data files (*.DAT) should be used.<br><br />
<br />
* Open pre-configured J-Flash project<br />
* File -> Save Flasher config file ... (DEFAULT.CFG)<br />
* Open data file 1 (boot loader)<br />
* File -> Save Flasher data file ... (BOOT.DAT)<br />
* Open data file 2 (application)<br />
* File -> Save Flasher data file ... (APP.DAT)<br />
* Create the a FLASHER.INI file (content see below)<br />
* Connect the Flasher in file access mode to the PC<br />
* Copy DEFAULT.CFG, BOOT.DAT, APP.DAT and FLASHER.INI on the Flasher<br />
<br />
FLASHER.INI content:<br><br />
<br />
<source><br />
[FILES]<br />
DataFile = "BOOT.DAT"<br />
ConfigFile = "DEFAULT.CFG"<br />
DataFile1 = "APP.DAT"<br />
ConfigFile1 = "DEFAULT.CFG"<br />
</source><br />
<br />
==== Flasher Portable PLUS specifics ====<br />
<br />
Flasher Portable PLUS allows to choose between 99 configuration and data file pairs during runtime by using the select button on the front of Flasher Portable PLUS.<br><br />
<br />
Which config / data file pair is used for which image selection position is determined by the contents of the FLASHER.INI.<br />
For this, the FLASHER.INI may contain several <tt>[BATCH]</tt> sections.<br />
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:<br />
<br />
<source><br />
[BATCH]<br />
DataFile = "First.dat"<br />
ConfigFile = "First.cfg"<br />
[BATCH1]<br />
DataFile = "Second.dat"<br />
ConfigFile = "Second.cfg"<br />
[BATCH2]<br />
DataFile = "Third.dat"<br />
ConfigFile = "Third.cfg"<br />
[BATCH7]<br />
DataFile = "Proj_8.dat"<br />
ConfigFile = "Proj_8.cfg"<br />
[BATCH15]<br />
DataFile = "Proj_16.dat"<br />
ConfigFile = "Proj_16.cfg"<br />
</source><br />
<br />
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.<br />
From there on, switching between the files can be done by simply using the selection button of Flasher Portable PLUS.<br />
<br />
Please also consider the chapter [[#Batch Programming in stand-alone mode | Batch Programming in stand-alone mode]].<br />
<br />
{{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.}}<br />
{{Note|1=You may have gaps in the list. The missing entries will be skipped when selecting the next configuration.}}<br />
{{Note|1=The <tt>[Files]</tt> section is supported by the Flasher Portable PLUS, too. But the number of configuration is limited to four.}}<br />
<br />
===== Example =====<br />
<br />
1 Target, 2 Datafiles (e.g. boot loader und application) --> same configuration file (*.CFG) but different data files (*.DAT) should be used.<br><br />
<br />
* Open pre-configured J-Flash project<br />
* File -> Save Flasher config file ... (DEFAULT.CFG)<br />
* Open data file 1 (boot loader)<br />
* File -> Save Flasher data file ... (BOOT.DAT)<br />
* Open data file 2 (application)<br />
* File -> Save Flasher data file ... (APP.DAT)<br />
* Create the a FLASHER.INI file (content see below)<br />
* Connect the Flasher in file access mode to the PC<br />
* Copy DEFAULT.CFG, BOOT.DAT, APP.DAT and FLASHER.INI on the Flasher<br />
<br />
FLASHER.INI content:<br><br />
<br />
<source><br />
[BATCH]<br />
DataFile = "BOOT.DAT"<br />
ConfigFile = "DEFAULT.CFG"<br />
DisplayName = "Bootloader"<br />
[BATCH1]<br />
DataFile = "APP.DAT"<br />
ConfigFile = "DEFAULT.CFG"<br />
DisplayName = "Application"<br />
[BATCH2]<br />
DataFile = "BOOT.DAT"<br />
ConfigFile = "DEFAULT.CFG"<br />
DataFile1 = "APP.DAT"<br />
ConfigFile1 = "DEFAULT.CFG"<br />
DisplayName = "BL and App"<br />
</source><br />
<br />
=== Custom labels ===<br />
<br />
Flasher supports to assign custom labels to configurations ("Project Display Text" in U-Flash). This allows to specify easy to remember names for configurations that are stored on the Flasher.<br />
<br />
==== Hardware and software requirements ====<br />
This feature is supported by the following models:<br />
* Flasher Portable PLUS<br />
<br />
This feature is supported since V6.30e of the software package and firmware<br />
<br />
==== Assigning labels ====<br />
The configuration and data file pairs are specified in the <tt>FLASHER.INI</tt> file:<br />
<source><br />
[FILES]<br />
DataFile = "IMAGE0.dat"<br />
ConfigFile = "IMAGE0.cfg"<br />
DataFile1 = "IMAGE1.dat"<br />
ConfigFile1 = "IMAGE1.cfg"<br />
</source><br />
<br />
By default, Flasher will show the names of the configuration and data file:<br />
[[File:FW1_smartwatch_nolabel.png]]<br />
[[File:FW2_smart_meter_nolabel.png]]<br />
<br />
By adding <tt>DisplayName</tt>, <tt>DisplayName1</tt>, ... keys to the <tt>FLASHER.INI</tt>, a custom label can be shown instead:<br />
<source><br />
[FILES]<br />
DisplayName = "FW smartwatch"<br />
DataFile = "IMAGE0.dat"<br />
ConfigFile = "IMAGE0.cfg"<br />
DisplayName1 = "FW smart meter"<br />
DataFile1 = "IMAGE1.dat"<br />
ConfigFile1 = "IMAGE1.cfg"<br />
</source><br />
<br />
The images will now be shown as follows:<br />
[[File:FW1_smartwatch_label.png]]<br />
[[File:FW2_smart_meter_label.png]]<br />
<br />
==== Considerations ====<br />
* 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.<br />
<br />
=== Programming multiple targets ===<br />
<br />
It is possible to program multiple targets which are located in a JTAG chain.<br />
The targets will be programmed each with a configuration and a data file.<br><br />
The configuration for the desired target must be selected before it can be programmed,<br />
this can be done with the <tt>#SELECT</tt> command.<br />
For more information how to use the <tt>#SELECT</tt> command please refer to the [[#ASCII_command_interface|ASCII command interface]].<br />
<br />
'''Example'''<br><br />
Three devices should be programmed.<br><br />
<br />
JTAG Chain: ''TDI'' --> ''Device2'' --> ''Device1'' --> ''Device0'' --> ''TDO''<br><br />
<br />
Three configurations would be stored on the flasher:<br><br />
<br />
Config 0: Configured to program Device0 (DEVICE0.CFG, DEVICE0.DAT)<br><br />
Config 1: Configured to program Device1 (DEVICE1.CFG, DEVICE1.DAT)<br><br />
Config 2: Configured to program Device2 (DEVICE2.CFG, DEVICE2.DAT)<br><br />
<br />
Selection and programming of the target will be done via the ASCII interface:<br><br />
<br />
<source><br />
#SELECT DEVICE0<br />
#AUTO<br />
#SELECT DEVICE1<br />
#AUTO<br />
#SELECT DEVICE2<br />
#AUTO<br />
</source><br />
<br />
==== Programming multiple targets with J-Flash ====<br />
<br />
Programming multiple targets can also be done via J-Flash using the command line interface.<br />
For this each target must be handled with its own project file.<br />
<br />
'''Example'''<br><br />
<br />
<source><br />
JFlash.exe -openproj"Device0.jflash" -open"Device0.hex" -auto -exit<br />
JFlash.exe -openproj"Device1.jflash" -open"Device1.hex" -auto -exit<br />
JFlash.exe -openproj"Device2.jflash" -open"Device2.hex" -auto -exit<br />
</source><br />
<br />
=== Batch Programming in stand-alone mode ===<br />
<br />
Batch programming allows to execute different stand-alone mode jobs in batch to be executed in immediate succession, without any user interaction in between.<br />
This can be used for example to program multiple targets in a JTAG-Chain or multiple data files to a target.<br><br />
A batch may contains an unlimited number of configurations which consist of a data file (*.DAT) and config file (*.CFG).<br />
For further information regarding config and data files, please refer to [[#Preparing for stand-alone operation manually | Preparing for stand-alone operation manually]].<br><br />
In order to specify the batch jobs, a FLASHER.INI file is used.<br />
This init file contains a [BATCH] section which describes which configuration pairs (*.DAT and *.CFG file) should be used for each batch job.<br />
A sample content of a FLASHER.INI file is shown below:<br><br />
<br />
<source><br />
[BATCH]<br />
DataFile = "Flasher0.dat"<br />
ConfigFile = "Flasher0.cfg"<br />
DataFile1 = "Flasher1.dat"<br />
ConfigFile1 = "Flasher1.cfg"<br />
</source><br />
<br />
[[File:Batch_Jobs.bmp]]<br />
<br />
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.<br />
<br />
<br />
[[File:Batch_Programming.bmp]]<br />
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<br />
currently executed action.<br />
<br />
<br />
[[File:Batch_Result.bmp]]<br />
The result of the programming will be shown on the screen after finishing all jobs.<br />
<br />
<br />
Creating / Replacing of the FLASHER.INI file can done in two ways:<br><br />
<ol><br />
<li>Boot Flasher in file access mode in order to replace the FLASHER.INI</li><br />
<li><br />
If Flasher is already integrated into the production line, runs in stand-alone mode and can not be booted in other mode:<br />
Use the file I/O commands provided by the ASCII interface of Flasher, to replace the FLASHER.INI .<br />
For more information about the file I/O commands, please refer to [[#File I/O commands | File I/O commands]].<br />
In case of an error occurred during execution, the Flasher terminates the entire batch processing.<br />
</li><br />
</ol><br />
{{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.}}<br />
{{Note|1=The Flasher with hardware version 4 and lower supports 8.3 filenames only (8 characters filename, 3 characters file extension). Using longer filenames may result in incorrect operation.}}<br />
<br />
==== Flasher Portable specifics ====<br />
<br />
Flasher Portable allows to choose between four different batches during runtime by using the select/arrow button on the front of Flasher Portable.<br />
Which batch configuration is used for which image selection position is specified in the FLASHER.INI.<br />
For this, the FLASHER.INI contents in the [BATCH] section have been extended.<br />
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><br />
<br />
<source><br />
[BATCH]<br />
DataFile = "Flasher0.dat"<br />
ConfigFile = "Flasher0.cfg"<br />
DataFile1 = "Flasher1.dat"<br />
ConfigFile1 = "Flasher1.cfg"<br />
DataFile2 = "Flasher2.dat"<br />
ConfigFile2 = "Flasher2.cfg"<br />
[BATCH1]<br />
DataFile = "TEST.dat"<br />
ConfigFile = "Test.cfg"<br />
[BATCH2]<br />
DataFile = "VALIDATE.dat"<br />
ConfigFile = "Flasher0.cfg"<br />
</source><br />
<br />
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.<br />
From there on, switching between the batches can be done by simply using the selection button of Flasher Portable.<br />
<br />
<br />
<br />
==== Examples ====<br />
<br />
'''Example 1:''' Programming two Data files to the same target<br><br />
<br />
* Open your J-Flash project.<br />
* Use File -> Save Flasher config file... to save the .CFG file (in this example: STM32F4.CFG).<br />
* Select the first binary and use File -> Save Flasher Data file... to save the first .DAT file (in this example: DATA0.DAT).<br />
* Select the second binary and use File -> Save Flasher Data file... to save the second data file .DAT file (in this example: DATA1.DAT).<br />
* Copy the Files to the Flasher e.g. by using file access mode.<br />
* Create a FLASHER.INI file in the root directory of the Flasher.<br />
* Exemplary content of FLASHER.INI:<br><br />
<source><br />
[BATCH]<br />
DataFile = "DATA0.dat"<br />
ConfigFile = "emPower.cfg"<br />
DataFile1 = "DATA1.dat"<br />
ConfigFile1 = "emPower.cfg"<br />
</source><br />
<br />
<br />
'''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><br />
Example scenario: 2 Devices in a JTAG chain, a STM32F1 and a STM32F4. <br><br />
<br />
* Follow the same as described before and additionally:<br />
* Create one project file per target (and create a .CFG file of each one).<br />
* Make sure each project file is configured correctly, especially the JTAG-Chain position (See UM8003 "J-Flash" for more detailed info).<br />
* Exemplary content of FLASHER.INI:<br><br />
<source><br />
[BATCH]<br />
DataFile = "F1DATA.dat"<br />
ConfigFile = "STM32F1.cfg"<br />
DataFile1 = "F4DATA0.dat"<br />
ConfigFile1 = "STM32F4.cfg"<br />
DataFile2 = "F4DATA1.dat"<br />
ConfigFile2 = "STM32F4.cfg"<br />
</source><br />
<br />
'''Example 3:''' Using multiple Batch sections with Flasher Portable.<br><br />
Example scenario: 2 Devices in a JTAG chain, a STM32F1 and a STM32F4.<br><br />
Selection 1 will program the STM32F1 target.<br><br />
Selection 2 will program the STM32F4 target using "F4DATA0.dat".<br><br />
Selection 3 will program the STM32F4 target using "F4DATA1.dat".<br><br />
Selection 4 will execute 1, 2 and 3 in sequence.<br><br />
* Exemplary content of FLASHER.INI:<br><br />
<source><br />
[BATCH]<br />
DataFile = "F1DATA.dat"<br />
ConfigFile = "STM32F1.cfg"<br />
[BATCH1]<br />
DataFile = "F4DATA0.dat"<br />
ConfigFile = "STM32F4.cfg"<br />
[BATCH2]<br />
DataFile = "F4DATA1.dat"<br />
ConfigFile = "STM32F4.cfg"<br />
[BATCH3]<br />
DataFile = "F1DATA.dat"<br />
ConfigFile = "STM32F1.cfg"<br />
DataFile1 = "F4DATA0.dat"<br />
ConfigFile1 = "STM32F4.cfg"<br />
DataFile2 = "F4DATA1.dat"<br />
ConfigFile2 = "STM32F4.cfg"<br />
</source><br />
<br />
=== Serial number programming ===<br />
<br />
Flasher supports programming of serial numbers. In order to use the serial number programming feature,<br />
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><br />
<br />
In general, Flasher supports two ways of programming a serial number into the target:<br />
<br />
#<br />
#* Programming continuous serial numbers.<br />
#* The serial number is 1-4 bytes in size.<br />
#* The start serial number, increment, serial number size, and address are configured in the J-Flash project.<br />
#<br />
#* Programming custom serial numbers from a serial number list file.<br />
#* The start line within the serial number list file to get the next serial number bytes, line increment, serial number size, and address is configured in the J-Flash project.<br />
#* The serial number list file needs to be specified and created by the user.<br />
<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.}}<br />
<br />
==== Serial number settings ====<br />
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.<br />
This is done by enabling the '''Program serial number''' option as shown in the screenshot and table below:<br />
<br />
[[File:UM08039_SN_Sample_JFlashSettings.png]]<br />
<br />
{| class="seggertable"<br />
|-<br />
!| Setting || Meaning<br />
|-<br />
| <tt>Address</tt> || The address the serial number should be programmed at.<br />
|-<br />
| <tt>Length</tt> ||<br />
The length of the serial number (in bytes) that 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 8 is selected as length, the serial number and its complement are programmed at the given address.<br />
* In case a serial number list file is given, the 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 '''Length''', the remaining bytes are filled with 0s. No complements etc. are added to the serial number.<br />
|-<br />
| <tt>Next SN</tt> ||<br />
* In case no serial number list file is given, '''Next SN''' is the next serial number which should be programmed. The serial number is always stored in flash memory in little-endian format.<br />
* In case a serial number list file is given, '''Next SN''' describes the line of the serial number list file where to read the next serial number bytes from. The Flasher starts counting at line 0, so in order to start serial number programming with the first line of the <tt>SNList.txt</tt>, '''Next SN''' needs to be set to 0.<br />
|-<br />
| <tt>Increment</tt> || Specifies by how much '''Next SN''' is incremented.<br />
|}<br />
<br />
=== Serial number file ===<br />
When selecting '''File -> Download serial number file to Flasher''', J-Flash will create a serial number file named as <tt><JFlashProjectName>_Serial.txt</tt>.<br />
This file is downloaded as <tt>Serial.txt</tt> on the Flasher.<br />
The file is generated based on the serial number settings in the J-Flash project and will contain the value defined by the '''Next SN''' option.<br />
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.<br />
<br />
==== Serial number list file ====<br />
<br />
In order to program custom serial numbers which can not be covered by the standard serial number scheme provided by J-Flash<br />
(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.<br />
<br />
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.<br />
This file is downloaded as <tt>SNList.txt</tt> on the 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<br />
* Each byte of the serial number is described by two hexadecimal digits.<br />
<br />
'''Example'''<br><br />
A 8-byte serial number should be programmed at address 0x08000000.<br><br />
<br />
It should be programmed as follows in the memory:<br><br />
<br />
<tt>0x08000000: 0x01 0x02 0x03 0x04 0x55 0x66 0x77 0x88</tt><br><br />
<br />
The serial number list file should look as follows:<br><br />
<br />
<tt>0102030455667788</tt><br />
<br />
[[File:SN_SNList.gif]]<br />
<br />
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><br />
<br />
Which line Flasher will read at the next programming cycle, is configured via the <tt>Next SN</tt> option in J-Flash.<br />
For more information, please refer to [[#Serial number settings | Serial number settings]].<br />
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><br />
<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.}}<br />
{{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.}}<br />
<br />
==== Programming process ====<br />
<br />
Flasher will increment the serial number in SERIAL.TXT by the value defined in <tt>Increment</tt>, after each successful programming cycle.<br><br />
<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><br />
<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.<br />
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.}}<br />
<br />
==== Downloading serial number files to Flasher ====<br />
<br />
Downloading the serial number files needs to be done explicitly by selecting '''File-> Download serial number file to Flasher'''.<br />
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.<br />
<br />
==== Sample setup ====<br />
<br />
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.<br />
<br />
'''Defining serial number address, length and start value'''<br><br />
In the J-Flash project the following needs to be defined:<br><br />
* <tt>Address</tt> is 0x08001000<br />
* <tt>Next SN</tt> is 1234567<br />
* <tt>Increment</tt> is 1<br />
* <tt>Len</tt> is 4 (bytes)<br />
<br />
[[File:SN_Sample_JFlashSettings.gif]]<br />
<br />
'''Downloading configuration, data and serial number to Flasher.'''<br><br />
After setting up the rest of the configuration (Target interface etc.) and selecting an appropriate data file, the configuration,<br />
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><br />
<br />
[[File:SN_Sample_DownloadToFlasher.gif]]<br />
<br />
After downloading the serial number to Flasher, J-Flash also created the <tt><JFlashProjectName>_Serial.txt</tt>.<br />
<br />
[[File:SN_Sample_SerialFileCreated.gif]]<br />
<br />
Now Flasher is prepared to program the 8-byte serial number.<br />
<br />
=== Patch file support ===<br />
<br />
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.<br />
Before starting programming process in stand-alone mode, Flasher will look for a file named <tt>Patches.txt</tt> being present on the Flasher.<br />
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><br />
<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.<br />
<br />
'''Syntax'''<br><br />
<!-- LG xxxxxxxxx '==' is shown as '=', so instead use '= ='--><br />
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><br />
<br />
<tt><NumPatches>,<Addr>,<NumBytes>:<nowiki><Data></nowiki>,<Addr>,<NumBytes>:<nowiki><Data></nowiki>,<Addr>,<NumBytes>:<nowiki><Data></nowiki>,<Addr>,<NumBytes>:<nowiki><Data></nowiki>\r\n</tt><br><br />
<br />
Find below a table which describes each parameter.<br><br />
{| class="seggertable"<br />
|-<br />
! Parameter !! Description<br />
|-<br />
| <tt><NumPatches></tt> || Describes the number of patches in this patch line. Max. value is 4.<br />
|-<br />
| <tt><Addr></tt> || Describes the address to be patched. Value is expected in hex.<br />
|-<br />
| <tt><NumBytes></tt> || Number of bytes for the current patch. Max. value is 20h (32 in decimal). Value is expected in hex.<br />
|-<br />
| <tt><nowiki><Data></nowiki></tt> || Describes the data to be patched. <nowiki><Data></nowiki> is always expected as 2 hexadecimal characters per byte.<br />
|-<br />
|}<br />
<br />
{{Note|1=All values are expected in hexadecimal format (hex).<br><br />
<nowiki><Data></nowiki> section is always preceded by ":", not ",".}}<br />
<br />
'''Example'''<br><br />
Below is an example patch.<br><br />
<br />
<source><br />
1,18,4:01020304\r\n<br />
</source><br />
<br />
Patching the following data:<br />
<br />
[[File:data_before.png]]<br />
<br />
with the example patch will result in the following data:<br />
<br />
[[File:data_afterwards.png]]<br />
<br />
Please note that as mentioned earlier patching undefined memory locations will be ignored.<br><br />
Applying the example patch to the following data:<br />
<br />
[[File:undefined_mem_before.png]]<br />
<br />
Causes no data to be patched, as can be seen in the following image:<br />
<br />
[[File:undefined_mem_no_token.png]]<br />
<br />
Therefore it is necessary to first write placeholder data to the memory locations which are supposed to be patched.<br><br />
An example for such a placeholder can be seen here:<br />
<br />
[[File:undefined_mem_token.png]]<br />
<br />
Please note that the actual data inside the placeholder does not matter to the Flasher,<br />
because it is overwritten during patching.<br><br />
Applying the example patch will now work as expected:<br />
<br />
[[File:undefined_mem_after.png]]<br />
<br />
'''Single patch via RS232'''<br><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><br />
<br />
Send the <tt>#AUTO PATCH <NumPatches>,<Addr>,<NumBytes>:<nowiki><Data></nowiki></tt><br><br />
<br />
command via Flasher ASCII interface. The parameters have the same function as described in the table above.<br />
<br />
==== Newline encoding ====<br />
<br />
In general, for all patch files, init files etc. Flasher supports both newline encodings:<br><br />
<br />
* Windows: \r\n<br />
* Unix/Mac: \n<br />
<br />
All parser functionality etc. are written to be independent from the host operating system.<br />
<br />
=== Limiting the number of programming cycles ===<br />
<br />
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.<br />
To make use of this feature, a file called <tt>Cntdown.txt</tt> needs to be placed on the Flasher.<br />
This file simply contains a decimal number (32-bit unsigned integer) that describes how many programming cycles can be performed with the current setup.<br />
<br />
[[File:CntdownTxtContent.jpg]]<br />
<br />
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><br />
<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>.}}<br />
<br />
==== Changed fail/error LED indicator behavior ====<br />
<br />
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><br />
<br />
* The red error/fail LED will lit for 1 second<br />
* After this, it will blink/toggle x times @ 5 Hz, indicating the number of programming cycles left. (blinking 5 times for 5 cycles left, ...)<br />
<br />
==== Required Flasher hardware version for Cntdown.txt support ====<br />
<br />
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><br />
<br />
* 1621xxxxx (Flasher ARM V2)<br />
* 1630xxxxx (Flasher ARM V3)<br />
* 4210xxxxx (Flasher PPC V1)<br />
* 4110xxxxx (Flasher RX V1)<br />
<br />
All other models / hardware versions support limiting of programming cycles.<br />
<br />
=== Authorized flashing ===<br />
<br />
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.<br />
without the possibility to read out the Flasher contents via file access mode, FILE I/O functionality (J-Link Commander) or RS232 commands.<br />
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.<br />
<br />
==== Creating / Adding the secure area ====<br />
<br />
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.<br />
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.<br />
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><br />
<br />
[[File:CreateSecArea.jpg]]<br />
<br />
The following secure area related commands are available in J-Link Commander:<br><br />
<br />
* securearea create<br />
* securearea remove<br />
<br />
{{Note|1=When creating or removing the <tt>secure area</tt>, all configuration and data files being stored on the Flasher, are lost.<br />
Please make sure that they are not needed anymore, before adding / removing the security area.}}<br />
<br />
==== Moving files to the secure area ====<br />
<br />
Before moving configuration + data to the <tt>secure area</tt>, proper functionality of the setup should be tested in stand-alone mode.<br />
Once the setup is working as expected, do the following, to move the configuration + data into the <tt>secure area</tt>:<br><br />
<br />
* Start Flasher in file access mode (For more info, please refer to: [[#file access mode | file access mode]])<br />
<br />
[[File:FilesBeforeSecure.png]]<br />
<br />
* Create a folder "<tt>_SECURE</tt>"<br />
* Move all files that shall be moved to the <tt>secure area</tt>, into this folder<br />
<br />
[[File:FilesAfterSecure.png]]<br />
<br />
* 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.<br />
* Now Flasher can be used in stand-alone mode, as normal, but the files cannot be read back by the user / operator.<br />
<br />
==== Considerations to be taken when using the secure area ====<br />
<br />
When using the <tt>secure area</tt>, some things need to be considered:<br><br />
<br />
* All features like multiple file support, patch file support etc. can also be used when operating from the <tt>secure area</tt>.<br />
* 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>.<br />
* 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>.<br />
* 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.<br />
<br />
==== Required Flasher hardware version ====<br />
<br />
Older Flasher models do not support authorized flashing. The Flashers with the following serial number ranges do not support authorized flashing:<br><br />
<br />
* 1621xxxxx (Flasher ARM V2)<br />
* 1630xxxxx (Flasher ARM V3)<br />
* 4210xxxxx (Flasher PPC V1)<br />
* 4110xxxxx (Flasher RX V1)<br />
<br />
All other models / hardware versions support authorized flashing.<br />
<br />
=== Target interfaces ===<br />
<br />
The table below shows the supported target interfaces of the different Flasher models.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! Supported interfaces<br />
|-<br />
| Flasher PRO || JTAG, SWD<br />
|-<br />
| Flasher Compact || JTAG, SWD<br />
|-<br />
| Flasher ARM || JTAG, SWD<br />
|-<br />
| Flasher RX || JTAG<br />
|-<br />
| Flasher PPC || JTAG<br />
|-<br />
|}<br />
<br />
For more information about the target interfaces itself, please refer to:<br><br />
<br />
* ''UM08001, chapter "Working with J-Link and J-Trace", section "JTAG interface"''<br />
* ''UM08001, chapter "Working with J-Link and J-Trace", section "SWD interface"''<br />
<br />
=== Supported architectures ===<br />
<br />
Flasher supports programming of the internal flash of a large number of different microcontrollers.<br />
The number of supported devices is steadily growing. You can always find the latest list of supported devices on our website:<br><br />
<br />
''http://www.segger.com/supported-devices.html''<br />
<br />
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.<br />
Also the existence of the device may have confidential status, so it might not be mentioned as being supported in public releases yet.<br />
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.<br />
<br />
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).<br />
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.<br />
<br />
If a device is not supported, you can always contact us. We will be happy to provide you with an offer.<br />
<br />
==== External flashes ====<br />
<br />
In general our Flashers support programming of external flashes listed below:<br>(Can differ between Flasher models and hardware versions)<br />
<br />
* parallel NOR flash<br />
* SPI / QSPI flash<br>(see: ''[[SPI_support_by_Flasher_models]]'')<br />
* NAND flash<br />
* I<sup>2</sup>C EEPROM/Flash<br />
* FRAM<br />
<br />
If the parallel NOR flash device which is used is not CFI-compliant you have to select the flash device in J-Flash explicitly,<br />
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''.<br />
<br />
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.<br />
The J-Flash software comes with sample projects for ''Open Flashloader''.<br />
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''<br />
{{Note|1=Complete Information about ''Open Flashloaders'' can be found in our Wiki:<br>''[[Open_Flashloader]]''}}<br />
<br />
==== Cores ====<br />
<br />
===== Flasher ARM =====<br />
<br />
Flasher ARM supports and has been tested with the following cores, but should work with any ARM7/9, Cortex-M0/M1/M3/M4 core.<br />
If you experience problems with a particular core, do not hesitate to contact Segger.<br><br />
<br />
* ARM7TDMI (Rev 1)<br />
* ARM7TDMI (Rev 3)<br />
* ARM7TDMI-S (Rev 4)<br />
* ARM920T<br />
* ARM922T<br />
* ARM926EJ-S<br />
* ARM946E-S<br />
* ARM966E-S<br />
* Cortex-M0<br />
* Cortex-M1<br />
* Cortex-M3<br />
* Cortex-M4<br />
<br />
===== Flasher RX =====<br />
<br />
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><br />
<br />
* RX610<br />
* RX621<br />
* RX62N<br />
* RX62T<br />
<br />
===== Flasher PPC =====<br />
<br />
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.<br />
<br />
* e200z0<br />
<br />
===== Flasher PRO/Compact/Portable PLUS =====<br />
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/''.<br />
<br />
=== Programming multiple targets in parallel ===<br />
<br />
To program multiple targets in parallel there are the following possibilities:<br />
* Using a Flasher gang, or<br />
* Using multiple Flashers, each connecting to one CPU.<br />
<br />
Devices for gang programming are:<br />
* Flasher Hub-12 in conjunction with up to 12 Flasher (Compact). Please refer to [[UM08043_Flasher_Hub-12|Flasher Hub-12 user manual (UM08043_Flasher_Hub-12)]].<br />
* Flasher ATE; suitable for programming up to 10 targets in parallel. Please refer to [https://www.segger.com/downloads/flasher/UM08035 Flasher ATE user manual (UM08035_FlasherATE.pdf)].<br />
When using multiple flashers, this can be done with the J-Flash production programming software.<br />
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''<br />
<br />
=== Logfiles and Quality Management ===<br />
<br />
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:<br />
<source lang="c"><br />
SN: 1 - Failed<br />
SN: 1 - Failed<br />
SN: 2 - O.K. (931 ms)<br />
SN: 3 - O.K. (931 ms)<br />
SN: 4 - O.K. (933 ms)<br />
SN: 5 - O.K. (932 ms)<br />
</source><br />
If applicable, the logfile contains more detailed error messages. For example:<br />
<source lang="c"><br />
ERROR: Programming failed @ address 0x00000000 (1)<br />
ERROR: Cannot connect to CPU. Target interface speed too high?<br />
</source><br />
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:<br />
<source lang="c"><br />
Verify error config word area @<br />
config word<br />
config word read back<br />
Verify error flash area @<br />
data from file<br />
data read back<br />
</source><br />
{{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.}}<br />
<br />
== TCP Services ==<br />
This chapter describes the integrated TCP services.<br />
<br />
=== FTP Server ===<br />
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><br />
[[File:FTPServer.png]]<br />
<br />
==== Access data ====<br />
Anonymous access to the FTP server is limited to read-only access to the file system.<br><br />
For write access, special login credentials have to be used:<br><br />
<tt>Login: admin</tt><br><br />
<tt>Password: 1234</tt><br><br />
<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.<br />
It is not meant as a security feature.}}<br />
<br />
=== Web server ===<br />
<br />
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.<br />
For the network, the IP address settings can be changed and a nick name can be assigned to the device.<br><br />
<br />
Additionally, the web interface provides information about the status of the integrated operating system, the IP stack and the target hardware.<br />
<br />
== Remote control ==<br />
This chapter describes how to control the Flasher in standalone mode.<br />
<br />
=== Overview ===<br />
There are 3 ways to control Flasher operation:<br><br />
{| class="seggertable"<br />
! Type of control !! Description<br />
|-<br />
| Button || Programming operation starts when pressing the PROG-button. The LEDs serve as visible indicators.<br />
|-<br />
| Handshake || 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.<br />
|-<br />
| Terminal || Terminal communication via TELNET, RS232 or VCOM with the [[#ASCII command interface]]<br />
|}<br />
<br />
<br />
{{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.}}<br />
<br />
=== Handshake control ===<br />
<br />
Some Flasher models are equipped with additional hardware control functions that are connected to the SUBD9 male connector, normally used as an RS232 interface to the PC.<br />
These Flasher models can therefore be controlled remotely by automated testers without the need for a connection to a PC.<br />
<br />
The handshake control is available for the following Flashers:<br />
* Flasher ARM<br />
* Flasher PRO<br />
* Flasher Compact (via Flasher Hub and Flasher Hub-12 only)<br />
<br />
The following diagrams show the internal remote control circuitry of Flasher:<br><br />
<br />
[[File:FlasherRemotecontrol.png]]<br />
{| class="seggertable"<br />
|-<br />
! Pin No. !! Function !! Description<br />
|-<br />
| 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.<br />
|-<br />
| 4 || BUSY || As soon as the "Auto" function is started, BUSY becomes active, which means that transistor is switched OFF.<br />
|-<br />
| 5 || GND || Common Signal ground.<br />
|-<br />
| 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.<br />
|-<br />
|}<br />
[[File:FlasherRemoteSignal.png]]<br />
<br />
=== ASCII command interface ===<br />
<br />
==== Introduction ====<br />
<br />
Once set up using J-Flash, the Flasher can be driven by any application or just a simple terminal using ASCII commands.<br><br />
<br />
Every known command is acknowledged by the Flasher and then executed. After command execution, Flasher sends an ASCII reply message.<br><br />
<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}}<br />
<br />
==== General command and reply message format ====<br />
<br />
* Any ASCII command has to start with the start delimiter ''#''.<br />
* Any ASCII command has to end with simple carriage return ('\r', ASCII code 13).<br />
* Commands can be sent upper or lower case<br />
<br />
==== General usage ====<br />
<br />
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.<br />
<br />
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).<br />
<br />
==== Settings for ASCII interface via RS232 ====<br />
<br />
Flasher is driven via a RS232 serial port with the following interface settings:<br><br />
<br />
* 9600 baud<br />
* 8 data bits<br />
* no parity<br />
* 1 stop bit<br />
<br />
The baud rate can be changed by using the <tt>#BAUDRATE</tt> command.<br />
<br />
==== Settings for ASCII interface via Telnet ====<br />
<br />
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><br />
<br />
[[File:telnet_connection.gif]]<br />
<br />
==== Settings for ASCII interface via VCOM ====<br />
<br />
The same settings can be used for VCOM as for [[#Settings for ASCII interface via RS232|RS232]].<br />
<br />
{{Note|The performance also depends on the terminal application used on the PC.}}<br />
<br />
==== Commands and replies ====<br />
<br />
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><br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| Commands to the Flasher<br />
|-<br />
| <tt>#BAUDRATE <Baudrate></tt><br />
|-<br />
| <tt>#AUTO</tt><br />
|-<br />
| <tt>#AUTO PATCH</tt><br />
|-<br />
| <tt>#AUTO NOINFO</tt><br />
|-<br />
| <tt>#CANCEL</tt><br />
|-<br />
| <tt>#ERASE</tt><br />
|-<br />
| <tt>#PROGRAM</tt><br />
|-<br />
| <tt>#RESULT</tt><br />
|-<br />
| <tt>#SELECT <Filename></tt><br />
|-<br />
| <tt>#START</tt><br />
|-<br />
| <tt>#STATUS</tt><br />
|-<br />
| <tt>#VERIFY</tt><br />
|-<br />
| <tt>#READ</tt><br />
|-<br />
| <tt>#QUIT</tt><br />
|-<br />
| <tt>#VERBOSE <Level></tt><br />
|-<br />
!colspan="100%"| File I/O commands<br />
|-<br />
| <tt>#FCLOSE</tt><br />
|-<br />
| <tt>#FCRC</tt><br />
|-<br />
| <tt>#FDELETE <Filename></tt><br />
|-<br />
| <tt>#FFORMAT</tt><br />
|-<br />
| <tt>#FOPEN <Filename></tt><br />
|-<br />
| <tt>#FREAD <Offset>,<NumBytes></tt><br />
|-<br />
| <tt>#FSIZE</tt><br />
|-<br />
| <tt>#FWRITE <Offset>,<NumBytes>:<nowiki><Data></nowiki></tt><br />
|-<br />
| <tt>#FLIST</tt><br />
|-<br />
| <tt>#MKDIR <Dirname></tt><br />
|-<br />
!colspan="100%"| SecureArea commands<br />
|-<br />
| <tt>#HASSECUREAREA</tt><br />
|-<br />
| <tt>#SECUREAREA <action></tt><br />
|-<br />
!colspan="100%"| Replies from the Flasher<br />
|-<br />
| <tt>#ACK</tt><br />
|-<br />
| <tt>#NACK</tt><br />
|-<br />
| <tt>#OK</tt><br />
|-<br />
| <tt>#OK:<NumBytes>:<nowiki><Data></nowiki></tt><br />
|-<br />
| <tt>#OK:<Size></tt><br />
|-<br />
| <tt>#STATUS:</tt><br />
|-<br />
| <tt>#DONE</tt><br />
|-<br />
| <tt>#ERRxxx</tt><br />
|-<br />
|}<br />
<br />
===== Commands to the Flasher =====<br />
<br />
'''#AUTO'''<br><br />
The <tt>#AUTO</tt> command behaves exactly as the start button or external remote control input.<br><br />
<br />
Usually, the following command sequence will be performed when receiving the <tt>#AUTO</tt> command:<br><br />
<br />
* The Flasher erases the target CPU (if not blank)<br />
* The Flasher programs the target CPU<br />
* The Flasher verifies the target CPU<br />
<br />
Depending on the settings chosen in the '''Production''' tab in J-Flash, this sequence can differ from the one shown above.<br><br />
<br />
Finally, Flasher responds with<br><br />
<br />
* <tt>#OK</tt> if no error occurred<br />
* <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.<br />
<br />
During execution of the <tt>#AUTO</tt> command, Flasher automatically sends "status" messages via RS232 to reflect the state of execution.<br />
Typically during execution of <tt>#AUTO</tt> command, Flasher will reply the following sequence of messages:<br><br />
<br />
<tt>#ACK</tt><br><br />
<tt>#STATUS:INITIALIZING</tt><br><br />
<tt>#STATUS:CONNECTING</tt><br><br />
<tt>#STATUS:UNLOCKING</tt><br><br />
<tt>#STATUS:ERASING</tt><br><br />
<tt>#STATUS:PROGRAMMING</tt><br><br />
<tt>#STATUS:VERIFYING</tt><br><br />
<tt>#OK (Total 13.993s, Erase 0.483s, Prog 9.183s, Verify 2.514s)</tt><br><br />
<br />
'''#AUTO PATCH'''<br><br />
The <tt>#AUTO</tt> PATCH command allows patching of the content of the data to be programmed.<br><br />
<br />
Flasher responds with<br><br />
<br />
* <tt>#OK</tt> if no error occurred<br />
* <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.<br />
<br />
For further information about the usage of the <tt>#AUTO PATCH</tt> command please refer to [[#Patch file support | Patch file support]].<br />
<br />
'''#AUTO NOINFO'''<br><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><br />
<br />
The command ends with <tt>#OK</tt> or <tt>#ERRxxx</tt><br />
<br />
'''#BAUDRATE <Baudrate>'''<br><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><br />
<br />
If this command succeeds, Flasher responds with:<br><br />
<br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<br />
Otherwise it will respond with one of the following error messages:<br><br />
<br />
<tt>#ERR255: Invalid parameters</tt><br><br />
<tt>or</tt><br><br />
<tt>#ERR255: Baudrate is not supported</tt><br><br />
<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.<br />
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.}}<br />
<br />
'''#CANCEL'''<br><br />
This command can be sent to abort a running program. It may take a while until the current program is actually canceled.<br><br />
<br />
Flasher will respond with:<br><br />
<br />
<tt>#ERR007:CANCELED.</tt><br><br />
<br />
'''#ERASE'''<br><br />
This command can be sent to erase all selected target flash sectors.<br><br />
<br />
Flasher will reply the following sequence of messages:<br><br />
<br />
<tt>#ACK</tt><br><br />
<tt>#STATUS:INITIALIZING</tt><br><br />
<tt>#STATUS:CONNECTING</tt><br><br />
<tt>#STATUS:UNLOCKING</tt><br><br />
<tt>#STATUS:ERASING</tt><br><br />
<tt>#OK (Total 0.893s, Erase 0.483s)</tt><br><br />
<br />
'''#PROGRAM'''<br><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.<br />
<br />
'''#RESULT'''<br><br />
This command can be sent any time, even during other command execution. Flasher responds with the last result of the previously executed command.<br />
<br />
'''#SELECT <Filename>'''<br><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.<br />
<tt><Filename></tt> specifies the name of file pair without extensions (.CFG and .DAT) on the Flasher which should be selected. If you are<br />
using the universal flash programming mode, <tt><Filename></tt> specifies the full name of the .UNI file '''including''' the extension.<br />
Flasher saves the selected config and data file in the FLASHER.INI file. So this selection is remembered even between power-cycling Flasher.<br><br />
<br />
This may be verfy helpful in cases where several config and data files are stored on Flasher.<br />
The user can easily switch between these config and data files without connecting Flasher to a host.<br><br />
<br />
If this command succeeds, Flasher responds with:<br><br />
<br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<br />
Find below a sample sequence which shows how to use the <tt>#SELECT</tt> command:<br><br />
<br />
<tt>#SELECT ATSAM7_1 // ATSAM7_1.CFG and ATSAM7_1.DAT is selected</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<tt>#AUTO // Start auto programming</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#STATUS:INITIALIZING</tt><br><br />
<tt>#STATUS:CONNECTING</tt><br><br />
<tt>#STATUS:UNLOCKING</tt><br><br />
<tt>#STATUS:ERASING</tt><br><br />
<tt>#STATUS:PROGRAMMING</tt><br><br />
<tt>#STATUS:VERIFYING</tt><br><br />
<tt>#OK (Total 8.416s, Erase 0.005s, Prog 6.845s, Verify 0.959s)</tt><br><br />
<tt>#SELECT ATSAM7_2 // ATSAM7_2.CFG and ATSAM7_2.DAT is selected</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<tt>#AUTO // Start auto programming</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#STATUS:INITIALIZING</tt><br><br />
<tt>#STATUS:CONNECTING</tt><br><br />
<tt>#STATUS:UNLOCKING</tt><br><br />
<tt>#STATUS:ERASING</tt><br><br />
<tt>#STATUS:PROGRAMMING</tt><br><br />
<tt>#STATUS:VERIFYING</tt><br><br />
<tt>#OK (Total 8.632s, Erase 0.005s, Prog 7.051s, Verify 0.969s)</tt><br><br />
<br />
'''#START'''<br><br />
This command can be sent to start the application using the method configured in the J-Flash project.<br><br />
For U-Flash projects, however, the target application is not necessarily started. <br><br />
There is often a "start application" checkbox in the U-Flash settings which have to be set for this.<br />
<br />
Flasher will reply with the following sequence of messages:<br><br />
<br />
<tt>#ACK</tt><br><br />
<tt>#STATUS:INITIALIZING</tt><br><br />
<tt>#STATUS:CONNECTING</tt><br><br />
<tt>#OK (Total 1.148s)</tt><br><br />
<br />
'''#STATUS'''<br><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]].<br />
<br />
'''#VERIFY'''<br><br />
This command can used to verify the target flash content against the data stored in Flasher.<br />
<br />
'''#READ'''<br><br />
Only available for devices supported by U-Flash.<br><br />
This command can used to read out flash data.<br><br />
More information: [https://wiki.segger.com/Flasher/How_to_read_data_from_a_device_using_U-Flash How to read data using U-Flash]<br />
<br />
'''#QUIT'''<br><br />
This command can be used to terminate the active telnet connection from the server side (Flasher).<br />
The command provides an easy way to terminate the session from an automated script.<br />
It is not necessary to parse stdout and switch to local command mode to disconnect.<br />
Not implemented in the Flasher ATE or Flasher Hub.<br />
<br />
'''#VERBOSE <Level>'''<br><br />
This command can be used to change the verbosity level. <br><br />
* Verbosity level 0: Default. <br><br />
* Verbosity level 1: Provides some additional messages during the programming process.<br />
<br />
===== File I/O commands =====<br />
<br />
The ASCII interface of the Flasher also supports file I/O operations.<br />
<br />
The following file I/O commands are supported:<br><br />
<br />
'''#FCLOSE'''<br><br />
The <tt>#FCLOSE</tt> command closes the file on Flasher which was opened via <tt>#FOPEN</tt>.<br />
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><br />
<br />
A typical sequence when using the <tt>#FCLOSE</tt> command does look like as follows:<br><br />
<br />
<tt>#FCLOSE</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<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><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:No file opened</tt><br />
}}<br />
<br />
'''#FCRC'''<br><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>.<br />
The CRC will be also reported by J-Flash when downloading or saving files via J-Flash.<br><br />
<br />
A typical sequence when using the <tt>#FCRC</tt> command does look like as follows:<br><br />
<br />
<tt>#FCRC flasher.dat</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK:0x75BC855A</tt><br><br />
<br />
'''#FDELETE <Filename>'''<br><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><br />
<br />
A typical sequence when using the <tt>#FDELETE</tt> command does look like as follows:<br><br />
<br />
<tt>#FDELETE flasher.dat</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<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><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:Failed to delete file</tt><br />
}}<br />
<br />
'''#FFORMAT'''<br><br />
The <tt>#FFORMAT</tt> command is used to delete all files located in the public area of the Flasher's internal memory.<br />
<br />
{{Note|1=Please note that this command deletes all projects located in the public area. Deleted projects cannot be restored again.<br><br />
This command does not delete the Flasher firmware, neither does it delete files in the secure area.<br />
}}<br />
<br />
A typical sequence using the <tt>#FFORMAT</tt> command does look like as follows:<br><br />
<br />
<tt>#FFORMAT</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#DONE</tt><br><br />
<br />
'''#FOPEN <Filename>'''<br><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.<br />
If <tt><Filename></tt> can not be found on Flasher a new one will be created.<br><br />
<br />
A typical sequence using the <tt>#FOPEN</tt> command does look like as follows:<br><br />
<br />
<tt>#FOPEN flasher.dat</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<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><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:A file has already been opened</tt><br />
}}<br />
<br />
'''#FREAD <Offset>,<NumBytes>'''<br><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.<br />
<tt><NumBytes></tt> specifies the number of bytes which should be read.<br><br />
<br />
A typical sequence when using the <tt>#FREAD</tt> command does look like as follows:<br><br />
<br />
<tt>#FREAD 0,4</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK:04:466c6173</tt><br><br />
<br />
If the <tt>#FREAD</tt> command succeeds, Flasher will finally respond with a <tt>#OK:<NumBytes>:<nowiki><Data></nowiki></tt> reply message.<br />
For more information about the Flasher reply messages, please refer to [[#Replies from Flasher | Replies from Flasher]].<br><br />
<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><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:No file opened</tt>}}<br />
<br />
'''#FSIZE'''<br><br />
The <tt>#FSIZE</tt> command is used to get the size of the currently opened file on Flasher.<br><br />
<br />
A typical sequence when using the <tt>#FSIZE</tt> command does look like as follows:<br><br />
<br />
<tt>#FSIZE</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK:10 // file on flasher which is currently open, has a size of 16 bytes</tt><br><br />
<br />
If the <tt>#FSIZE</tt> command succeeds, Flasher will respond with a <tt>#OK:<Size></tt> reply message.<br />
For more information about the Flasher reply messages, please refer to [[#Replies from Flasher | Replies from Flasher]].<br><br />
<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><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:No file opened</tt>}}<br />
<br />
'''#FWRITE <Offset>,<NumBytes>:<nowiki><Data></nowiki>'''<br><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.<br />
<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.<br />
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><br />
<br />
<tt><Offset></tt> and <tt><NumBytes></tt> are expected in hexadecimal format.<br><br />
<br />
<tt>#FWRITE 0,200:<nowiki><Data></nowiki></tt><br><br />
<tt>#FWRITE 200,200:<nowiki><Data></nowiki></tt><br><br />
<br />
The data is expected in hexadecimal format (two hexadecimal characters per byte). The following example illustrates the use of <tt>#FWRITE</tt>:<br />
<br />
<tt>Data to be send: Hello !</tt><br><br />
<tt>ASCII values: 0x48, 0x65, 0x6C, 0x6C, 0x6F, 0x20, 0x21</tt><br><br />
<br />
<tt>#FWRITE 0,7:48656C6C6F2021</tt><br><br />
<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><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:No file opened</tt><br>}}<br />
<br />
'''#FLIST'''<br><br />
The <tt>#LIST</tt> command is used to list all files stored on the Flasher.<br><br />
<br />
A typical sequence using the <tt>#FLIST</tt> command does look like as follows:<br><br />
<br />
<tt>#FLIST</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>FLASHER.INI Size: 60</tt><br><br />
<tt>SERIAL.TXT Size: 3</tt><br><br />
<tt>FLASHER.LOG Size: 207</tt><br><br />
<tt>FOLDER (DIR)</tt><br><br />
<tt>FOLDER\\TEST1.CFG Size: 2048</tt><br><br />
<tt>FOLDER\\TEST1.DAT Size: 12288</tt><br><br />
<tt>#OK</tt><br><br />
<br />
'''#MKDIR <Dirname>'''<br><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><br />
<br />
A typical sequence using the <tt>#MKDIR</tt> command does look like as follows:<br><br />
<br />
<tt>#MKDIR folder</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<br />
{{Note|1=If the directory can not be created because of a bad <tt><Dirname></tt> argument, Flasher will respond with:<br><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:Failed to create directory</tt><br>}}<br />
<br />
===== Secure Area Commands =====<br />
<br />
'''#HASSECUREAREA'''<br><br />
The <tt>#HASSECUREAREA</tt> command checks if the Flasher is configured with a secure area.<br />
<br />
<tt>#RESULT:YES</tt> indicates the secure area is present, <tt>#RESULT:NO</tt> indicates no secure area is present.<br />
<br />
'''#SECUREAREA'''<br><br />
The <tt>#SECUREAREA <action></tt> command allows to create or remove the secure area on the Flasher.<br />
<br />
* the action <tt>CREATE</tt> creates the secure area.<br />
* the action <tt>REMOVE</tt> will remove the secure area.<br />
<br />
A typical sequence using the <tt>#SECUREAREA</tt> command does look like as follows:<br><br />
<br />
<tt>#SECUREAREA CREATE</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#DONE</tt><br><br />
<br />
{{Note|1=When creating or removing the <tt>secure area</tt>, all configuration and data files being stored on the Flasher, are lost.<br />
Please make sure that they are not needed anymore, before adding / removing the security area.}}<br />
<br />
<br />
<br />
===== Replies from Flasher =====<br />
<br />
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.<br />
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.<br />
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><br />
<br />
<tt>#OK (Total 13.993s, Erase 0.483s, Prog 9.183s, Verify 2.514s)</tt><br><br />
<br />
The following reply messages from Flasher are defined:<br><br />
<br />
'''#ACK'''<br><br />
Flasher replies with <tt>#ACK</tt> message on reception of any defined command before the command itself is executed.<br />
<br />
'''#NACK'''<br><br />
Flasher replies with <tt>#NACK</tt>, if an undefined command was received.<br />
<br />
'''#OK'''<br><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.<br />
<br />
'''#OK:<NumBytes>:<nowiki><Data></nowiki>'''<br><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.<br />
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).<br />
<br />
'''#OK:<Size>'''<br><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.<br />
<br />
'''#STATUS:'''<br><br />
The Flasher replies with its current state.<br><br />
<br />
The following status messages are currently defined:<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Message !! Description<br />
|-<br />
| <tt>#STATUS:READY</tt> || Flasher is ready to receive a new command.<br />
|-<br />
| <tt>#STATUS:CONNECTING</tt> || Flasher initializes connection to target CPU.<br />
|-<br />
| <tt>#STATUS:INITIALIZING</tt> || Flasher performs self check and internal init.<br />
|-<br />
| <tt>#STATUS:UNLOCKING</tt> || Unlocking flash sectors.<br />
|-<br />
| <tt>#STATUS:ERASING</tt> || Flasher is erasing the flash of the target device.<br />
|-<br />
| <tt>#STATUS:PROGRAMMING</tt> || Flasher is programming the flash of the target device.<br />
|-<br />
| <tt>#STATUS:VERIFYING</tt> || Flasher verifies the programmed flash contents.<br />
|-<br />
|}<br />
<br />
'''#ERRxxx'''<br><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><br />
<br />
Some error codes may be followed by colon and an additional error text.<br><br />
<br />
For example:<br><br />
<br />
<tt>#ERR007:CANCELED.</tt><br><br />
<br />
The error code numbers are described in the following table:<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Message !! Description<br />
|-<br />
| <tt>#ERR007</tt> || Flasher received <tt>#CANCEL</tt> command and has canceled the current operation.<br />
|-<br />
| <tt>#ERR008</tt> || Flasher is already busy with execution of previous command.<br />
|-<br />
| <tt>#ERR009</tt> || Failed to allocate memory.<br />
|-<br />
| <tt>#ERR010</tt> || Failed to open file.<br />
|-<br />
| <tt>#ERR011</tt> || Failed to read file.<br />
|-<br />
| <tt>#ERR012</tt> || Failed to write file.<br />
|-<br />
| <tt>#ERR013</tt> || Failed to delete file.<br />
|-<br />
| <tt>#ERR255</tt> || Undefined error occurred. This reply is followed by an error string.<br />
|-<br />
|}<br />
<br />
== Performance ==<br />
<br />
The following chapter lists programming performance of common flash devices andmicrocontrollers.<br />
<br />
=== Performance of MCUs with internal flash memory ===<br />
<br />
==== Flasher ARM ====<br />
<br />
The following table lists program and erase performance values of Flasher ARM for different controllers.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Microcontroller !! Size [kByte] !! Erase time [sec] !! Program time [sec] !! Verify time [sec] !! Total time [sec]<br />
|-<br />
| Analog Devices || 62 || 2.943 || 2.286 || 0.563 || 5.792<br />
|-<br />
| Atmel AT91SAM7S64 || 64 || --- || 3.488 || 0.438 || 3.926<br />
|-<br />
| Atmel AT91SAM7S256 || 256 || --- || 7.709 || 1.053 || 8.762<br />
|-<br />
| NXP LPC1768 || 512 || 3.740 || 8.559 || 5.092 || 17.391<br />
|-<br />
| NXP LPC2106 || 120 || 0.448 || 1.204 || 0.634 || 2.286<br />
|-<br />
| NXP LPC2129 || 248 || 0.449 || 2.916 || 1.347 || 4.712<br />
|-<br />
| NXP LPC2138 || 500 || 0.448 || 5.488 || 2.649 || 8.585<br />
|-<br />
| NXP LPC2148 || 500 || 0.448 || 5.632 || 2.721 || 8.801<br />
|-<br />
| NXP LPC2294 || 2048 || 0.808 || 15.976 || 9.669 || 26.453<br />
|-<br />
| NXP LPC2478 || 504 || 0.448 || 5.419 || 2.559 || 8.426<br />
|-<br />
| ST STM32F103ZE || 512 || 0.028 || 18.763 || 3.939 || 22.730<br />
|-<br />
| ST STR711 || 272 || 0.429 || 5.476 || 4.742 || 10.647<br />
|-<br />
| ST STR912 || 544 || 1.167 || 12.907 || 5.236 || 19.310<br />
|-<br />
| TI TMS470R1B1M || 1024 || 2.289 || 8.147 || 5.362 || 15.798<br />
|-<br />
|}<br />
<br />
==== Flasher PRO ====<br />
See Flasher ARM.<br />
<br />
==== Flasher Compact ====<br />
See Flasher ARM.<br />
<br />
==== Flasher RX ====<br />
<br />
The following table lists program and erase performance values of Flasher RX.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Microcontroller !! Size [kByte] !! Erase time [sec] !! Program time [sec] !! Verify time [sec] !! Total time [sec]<br />
|-<br />
| R5F56108 || 2.048 || 9.523 || 11.915 || 3.890 || 25.585<br />
|-<br />
|}<br />
<br />
==== Flasher PPC ====<br />
<br />
The following table lists program and erase performance values of Flasher PPC.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Microcontroller !! Size [kByte] !! Erase time [sec] !! Program time [sec] !! Verify time [sec] !! Total time [sec]<br />
|-<br />
| ST SPC560B50 || 576 || 4.747 || 4.159 || 1.929 || 10.917<br />
|-<br />
|}<br />
<br />
== Hardware ==<br />
<br />
This chapter gives an overview about Flasher specific hardware details,<br />
such as the pinouts and available adapters.<br />
<br />
=== Flasher ARM 20-pin JTAG/SWD Connector ===<br />
<br />
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.<br />
<br />
==== Pinout JTAG ====<br />
<br />
[[File:jtag_port_20pin.jpg]] <!-- LG xxxxxx image has been cropped to fit page --><br />
<br />
The following table lists the Flasher JTAG pinout.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! PIN !! SIGNAL !! TYPE !! Description<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 13 || TDO || Input || JTAG data output from target CPU. Typically connected to TDO of target CPU.<br />
|-<br />
| 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".<br />
|-<br />
| 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.<br />
|-<br />
| 19 || 5V-Target supply || Output || This pin is used to supply power to some eval boards. Typically left open on target hardware.<br />
|-<br />
|}<br />
<br />
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.<br />
<br />
==== Pinout SWD ====<br />
<br />
The 20-pin connector of Flasher is also compatible to ARM's Serial Wire Debug (SWD) interface.<br><br />
<br />
[[File:SWD_Port.jpg]] <!-- LG xxxxxx image has been cropped to fit page --><br />
<br />
The following table lists the J-Link / J-Trace SWD pinout.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! PIN !! SIGNAL !! TYPE !! Description<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 7 || SWDIO || I/O || Single bi-directional data pin.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 13 || SWO || Output || Serial Wire Output trace port. (Optional, not required for SWD communication.)<br />
|-<br />
| 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".<br />
|-<br />
| 17 || Not used || NC || This pin is not connected in J-Link.<br />
|-<br />
| 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.<br />
|-<br />
|}<br />
<br />
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.<br />
<br />
==== Target power supply ====<br />
<br />
Pin 19 of the connector can be used to supply power to the target hardware. Supply voltage is 5V, max. current is 400mA.<br />
The output current is monitored and protected against overload and short-circuit.<br><br />
<br />
Power can be controlled via the J-Link commander. The following commands are available to control power:<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Command !! Explanation<br />
|-<br />
| <tt>power on</tt> || Switch target power on<br />
|-<br />
| <tt>power off</tt> || Switch target power off<br />
|-<br />
| <tt>power on perm</tt> || Set target power supply default to "on"<br />
|-<br />
| <tt>power off perm</tt> || Set target power supply default to "off"<br />
|-<br />
|}<br />
<br />
=== Flasher RX 14-pin connector ===<br />
<br />
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.<br />
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.<br />
<br />
[[File:jtag_port_14pin.wmf]]<br />
<br />
The following table lists the Flasher RX 14-pin JTAG pinout.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Pin !! Signal !! Type !! Description<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 5 || TDO || Input || JTAG data output from target CPU. Typically connected to TDO on target CPU.<br />
|-<br />
| 6 || --- || NC || This pin is not connected to Flasher RX.<br />
|-<br />
| 7 || --- || NC || This pin is not connected to Flasher RX.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 10 || --- || NC || This pin is not connected to Flasher RX.<br />
|-<br />
| 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.<br />
|-<br />
| 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".<br />
|-<br />
|}<br />
<br />
* All pins marked NC are not connected to Flasher RX. Any signal can be applied here; Flasher RX will simply ignore such a signal.<br />
* Pins 2, 12, 14 are GND pins connected to GND in Flasher RX. They should also be connected to GND in the target system.<br />
<br />
==== Target power supply ====<br />
<br />
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.<br />
Power can be controlled via the J-Link commander. The following commands are available to control power:<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Command !! Explanation<br />
|-<br />
| <tt>power on</tt> || Switch target power on<br />
|-<br />
| <tt>power off</tt> || Switch target power off<br />
|-<br />
| <tt>power on perm</tt> || Set target power supply default to "on"<br />
|-<br />
| <tt>power off perm</tt> || Set target power supply default to "off"<br />
|-<br />
|}<br />
<br />
=== Flasher PPC 14-pin connector ===<br />
<br />
Flasher PPC itself has a 20-pin JTAG connector mounted but comes with a 14-pin adapter for PowerPC devices.<br><br />
<br />
[[File:JTAG_PPC_14pin_adapter.wmf]]<br />
<br />
The following table lists the Flasher PPC 14-pin JTAG pinout.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Pin !! Signal !! Type !! Description<br />
|-<br />
| 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.<br />
|-<br />
| 3 || TDO || Input || JTAG data output from target CPU. Typically connected to TDO on target CPU.<br />
|-<br />
| 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.<br />
|-<br />
| 7 || --- || NC || This pin is not connected to Flasher PPC.<br />
|-<br />
| 8 || --- || NC || This pin is not connected to Flasher PPC.<br />
|-<br />
| 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".<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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).<br />
|-<br />
|}<br />
<br />
* All pins marked NC are not connected to Flasher PPC. Any signal can be applied here; Flasher PPC will simply ignore such a signal.<br />
* 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.<br />
<br />
=== Target board design ===<br />
<br />
We strongly advise following the recommendations given by the chip manufacturer. These recommendations are normally in line with the recommendations.<br />
Please refer to the the appropriate tables depending on the core:<br><br />
<br />
* [[#Pinout JTAG | Pinout JTAG]]<br />
* [[#Pinout SWD | Pinout SWD]]<br />
* [[#Flasher RX 14-pin connector | Flasher RX 14-pin connector]]<br />
* [[#Flasher PPC 14-pin connector | Flasher PPC 14-pin connector]]<br />
<br />
In case of doubt you should follow the recommendations given by the semiconductor manufacturer.<br />
<br />
==== Pull-up/pull-down resistors ====<br />
<br />
Unless otherwise specified by developer's manual, pull-ups/pull-downs are recommended to be between 2.2 kOhms and 47 kOhms.<br />
<br />
==== RESET, nTRST ====<br />
<br />
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><br />
<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.<br />
(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.<br />
<br />
=== Adapters ===<br />
<br />
==== JTAG Isolator ====<br />
<br />
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.<br />
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><br />
<br />
[[File:JTAG_Isolator_Port.wmf]]<br />
<br />
===== Pinout =====<br />
<br />
The following table shows the target-side pinout of the J-Link JTAG Isolator.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Pin !! Signal !! Type !! Description<br />
|-<br />
| 1 || VCC || Output || The target side of the isolator draws power over this pin.<br />
|-<br />
| 2 || VCC || Output || The target side of the isolator draws power over this pin.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 13 || TDO || Input || JTAG data output from target CPU. Typically connected to TDO of target CPU.<br />
|-<br />
| 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".<br />
|-<br />
| 17 || N/C || N/C || This pin is not connected on the target side of the isolator.<br />
|-<br />
| 19 || N/C || N/C || This pin is not connected on the target side of the isolator.<br />
|-<br />
|}<br />
<br />
Pins 4, 6, 8, 10, 12, 14, 16, 18, 20 are connected to GND.<br />
<br />
===== Safety =====<br />
This isolator provides '''basic isolation''' only. '''Do not use with hazardous voltages without further protection measures to avoid risk of electrical shock and fire.'''<br />
<br />
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.<br />
<br />
==== J-Link Needle Adapter ====<br />
<br />
To connect to the J-Link OB via programming interface the ''J-Link Needle Adapter'' is recommended.<br><br />
<br />
[[File:J-Link_Needle_Adapter_500x.jpg]]<br />
<br />
Why to choose the J-Link Needle Adapter:<br><br />
<ol><br />
<li>No additional connector required on your PCB</li><br />
<li>Very small footprint</li><br />
<li>High reliability spring pins for secure connections</li><br />
<li>Designed with 3 locating pins, so the adapter can not be connected the wrong way</li><br />
<li>No external power supply required! The J-Link Needle Adapter comes with the option to power the target hardware via J-Link.</li><br />
</ol><br />
These features make the J-Link Needle Adapter the perfect solution for production purposes.<br><br />
<br />
The pinout of the J-Link Needle Adapter is based on the pinout of the needle adapter by Tag-Connect.<br />
Please note, that both pinouts are not identical since the J-Link Needle Adapter comes with a 5V-supply pin.<br><br />
<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><br />
<br />
Moreover, the two "legs" on each side of the connector guarantee a stable and secure contact between pins and the PCB.<br><br />
<br />
[[File:J-Link_Needle_Adapter_Connector_pins_360x.jpg]]<br />
[[File:J-Link_Needle_Adapter_Pinout.jpg]]<br />
<br />
The J-Link Needle Adapter can be connected to J-Link via the ''20-pin 0.1'' JTAG to a 10-pin needle connector''.<br />
<br />
=== Flasher Pin states when idling ===<br />
WIP<br />
<br />
=== How to determine the hardware version ===<br />
<br />
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.<br />
Flasher has the hardware version printed on the back label.<br><br />
<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).<br />
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><br />
<br />
[[File:FlasherARM_version.gif]]<br />
<br />
== Support and FAQs ==<br />
<br />
This chapter contains troubleshooting tips together with solutions for common problems which might occur when using Flasher.<br />
There are several steps you can take before contacting support.<br />
Performing these steps can solve many problems and often eliminates the need for assistance.<br />
This chapter also contains a collection of frequently asked questions (FAQs) with answers.<br />
<br />
=== Contacting support ===<br />
<br />
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.<br />
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><br />
<br />
If you need to contact support, send the following information to<br><br />
''support@segger.com''<br><br />
<br />
* A detailed description of the problem<br />
* Flasher serial number<br />
* Information about your target hardware (processor, board, etc.).<br />
* <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]].<br />
<br />
Flasher is sold directly by SEGGER.<br />
<br />
=== Frequently Asked Questions ===<br />
<br />
'''Maximum JTAG speed'''<br />
{|<br />
|-<br />
| '''Q:''' || What is the maximum JTAG speed supported by Flasher?<br />
|-<br />
| '''A:''' || Flasher's maximum supported JTAG speed is 12MHz.<br />
|}<br />
<br />
'''Maximum download speed'''<br />
{|<br />
|-<br />
| '''Q:''' || What is the maximum download speed?<br><br />
|-<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.<br />
|}<br />
== Background information ==<br />
<br />
This chapter provides background information about flash programming in general. It<br />
also provides information about how to replace the firmware of Flasher manually.<br />
<br />
=== Flash programming ===<br />
<br />
Flasher comes with a DLL, which allows - amongst other functionalities - reading and writing RAM, CPU registers, starting and stopping the CPU, and setting breakpoints.<br />
<br />
==== How does flash programming via Flasher work? ====<br />
<br />
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.<br />
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.<br />
Different flash chips have different programming algorithms;the programming algorithm also depends on other things,<br />
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).<br />
The RAM code requires data to be programmed into the flash memory. The data is supplied by downloading it to RAM.<br />
<br />
==== Data download to RAM ====<br />
<br />
The data (or part of it) is downloaded to another part of the RAM of the target system.<br />
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.<br />
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.<br />
This process may have to be repeated until the entire data is programmed into the flash.<br />
<br />
==== Available options for flash programming ====<br />
<br />
In general, there are two possibilities in order to use Flasher for flash programming:<br><br />
<br />
* Using Flasher stand-alone to program the target flash memory (stand-alone mode)<br />
* Using Flasher in combination with J-Flash to program the target flash memory (Flasher in "PC-based mode")<br />
<br />
===== Using Flasher in stand-alone mode =====<br />
<br />
In order to use the Flasher in stand-alone mode, it has to be configured first.<br />
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]].<br />
<br />
===== J-Flash - Complete flash programming solution =====<br />
<br />
J-Flash is a stand-alone Windows application, which can read / write data files and program the flash in almost any ARM system.<br />
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''.<br />
<br />
==== How does the universal flash programming work? ====<br />
<br />
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><br />
<br />
Universal flash programming is available only for stand-alone mode.<br />
== Glossary ==<br />
<br />
This chapter describes important terms used throughout this manual.<br />
<br />
'''Big-endian'''<br><br />
Memory organization where the least significant byte of a word is at a higher address than the most significant byte. See Little-endian.<br />
<br />
'''Cache cleaning'''<br><br />
The process of writing dirty data in a cache to main memory.<br />
<br />
'''Coprocessor'''<br><br />
An additional processor that is used for certain operations, for example, for floating-point math calculations, signal processing, or memory management.<br />
<br />
'''Dirty data'''<br><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.<br />
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.<br />
<br />
'''Halfword'''<br><br />
A 16-bit unit of information.<br />
<br />
'''Host'''<br><br />
A computer which provides data and other services to another computer. Especially, a computer providing debugging services to a target being debugged.<br />
<br />
'''ICache'''<br><br />
Instruction cache.<br />
<br />
'''ID'''<br><br />
Identifier.<br />
<br />
'''IEEE 1149.1'''<br><br />
The IEEE Standard which defines TAP. Commonly (but incorrectly) referred to as JTAG.<br />
<br />
'''Image'''<br><br />
An executable file that has been loaded onto a processor for execution.<br />
<br />
'''Instruction Register'''<br><br />
When referring to a TAP controller, a register that controls the operation of the TAP.<br />
<br />
'''IR'''<br><br />
See Instruction Register.<br />
<br />
'''Joint Test Action Group (JTAG)'''<br><br />
The name of the standards group which created the IEEE 1149.1 specification.<br />
<br />
'''Little-endian'''<br><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.<br />
<br />
'''Memory coherency'''<br><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.<br />
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.<br />
<br />
'''Memory management unit (MMU)'''<br><br />
Hardware that controls caches and access permissions to blocks of memory, and translates virtual to physical addresses.<br />
<br />
'''Memory Protection Unit (MPU)'''<br><br />
Hardware that controls access permissions to blocks of memory. Unlike an MMU, a MPU does not translate virtual addresses to physical addresses.<br />
<br />
'''RESET'''<br><br />
Abbreviation of System Reset. The electronic signal which causes the target system other than the TAP controller to be reset.<br />
This signal is also known as "nSRST" "nSYSRST", "nRST", or "nRESET" in some other manuals. See also nTRST.<br />
<br />
'''nTRST'''<br><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.<br />
<br />
'''Open collector'''<br><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.<br />
<br />
'''Processor Core'''<br><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.<br />
It excludes optional coprocessors, caches, and the memory management unit.<br />
<br />
'''Remapping'''<br><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.<br />
<br />
'''RTOS'''<br><br />
Real Time Operating System.<br />
<br />
'''TAP Controller'''<br><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.<br />
<br />
'''Target'''<br><br />
The actual processor (real silicon or simulated) on which the application program is running.<br />
<br />
'''TCK'''<br><br />
The electronic clock signal which times data on the TAP data lines TMS, TDI, and TDO.<br />
<br />
'''TDI'''<br><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.<br />
<br />
'''TDO'''<br><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.<br />
<br />
'''Test Access Port (TAP)'''<br><br />
The port used to access a device's TAP Controller. Comprises TCK, TMS, TDI, TDO, and nTRST (optional).<br />
<br />
'''Transistor-transistor logic (TTL)'''<br><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.<br />
<br />
'''Word'''<br><br />
A 32-bit unit of information. Contents are taken as being an unsigned integer unless otherwise stated.<br />
== Literature and references ==<br />
This chapter lists documents, which we think may be useful to gain a deeper understanding of technical details.</div>JanBhttps://wiki.segger.com/index.php?title=UM08022_Flasher&diff=17452UM08022 Flasher2024-01-16T11:27:39Z<p>JanB: /* Batch Programming in stand-alone mode */</p>
<hr />
<div><!---<br />
General TBD:<br />
- LG: Right now - EVERYTHING<br />
===========================================<br />
--------------------[more specific, but on multiple locations]<br />
- check if all emphasis (bold, tt, blue, etc ) have made it into the new version<br />
- Add Information -> Additional information<br />
- use of the term free-of-charge utility/tool etc<br />
- check compliant to DocStandards_Rules.txt<br />
- Remove everything regarding to Kickstarter versions? eventually create a chapter Legacy -> Kickstarter version were available for hw version 5-x (200x-200x)...[..]<br />
- 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.<br />
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.<br />
- if week keep the IDE specific stuff in the manual, add Ozone, ES and J-Link Commander were no mentioned.<br />
- IDE specifics move into wiki confirmed by Alex<br />
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)<br />
- check all sections regarding licensing<br />
- Check compliance of J-Link emDocs with typographic conventions described in AboutThisDocument.emDoc. What should be altered? e.g. references<br />
- use uref at all (not blue)?<br />
- search and decide where to use \ref (ref with page number)<br />
- why is \ref (no single "option" \uref is more basic as \ref.....)<br />
- in text, use either \ref or \iref instead of \uref<br />
- in old manual, \H3 started on a new page (not per default, but set manually for api tables etc...)<br />
- move used old images and source files (visio etc) via svn (currently copied)<br />
--------------------[grammar / vocabulary discussion]<br />
- Product names<br />
-- Use of SEGGEPROBE in this document?<br />
- use license over licence<br />
- commandline or command-line?<br />
- toolchain or tool chain?<br />
- crossreference/cross-reference/cross reference?<br />
- overcurrent?<br />
- double words?<br />
- frontend?<br />
- Unit: Kbytes, KBytes, V, mV.... 9V or 9 V? Create rule in Vocabulary<br />
- baudrate or baud rate?<br />
- stackpointer or stack pointer<br />
- check where we should replace abbreviations with the long form (e.h. "milliseconds" instead of "ms")<br />
- config or configuration<br />
- filepointer or file pointer?<br />
--------------------[J-Link dep. specific]<br />
- J-Link command strings or J-Link Command strings or J-Link Command Strings<br />
- J-Link settings file or...<br />
- J-Link control panel or ......<br />
- J-Link script files or...<br />
---><br />
Flasher is a programming tool for microcontrollers with on-chip or external flash memory.<br />
Flasher is designed for programming flash targets with the J-Flash software or stand-alone.<br />
In addition to that Flasher can also be used as a regular J-Link. For more information about J-Link in general,<br />
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].<br />
<br />
<div class="toclimit-2"><br />
__TOC__<br />
</div><br />
<br />
== Flasher Software and Documentation Pack ==<br />
The Flasher Software and Documentation Pack, available for download on the [https://www.segger.com/downloads/flasher#FlasherSoftwareAndDocumentationPack SEGGER homepage], includes applications to be used with Flasher and in some cases with J-Link and J-Trace.<br><br />
It also comes with USB-drivers for J-Link, J-Trace and Flasher.<br />
<br />
=== Software overview ===<br />
{| class="wikitable"<br />
|-<br />
! Software !! Description<br />
|-<br />
| [[J-Link Configurator|Flasher Configurator]] || GUI-based configuration tool for Flasher. Allows configuration of USB identification as well as TCP/IP identification of Flashers.<br />
|-<br />
| [[FlasherControl|Flasher Control]] || Command-line tool to connect to the Flasher's command-line interface via USB.<br />
|-<br />
| [[J-Flash]] || Flash programming application.<br />
|-<br />
| [[J-Flash SPI]] || (Q)SPI flash programming application.<br />
|-<br />
| [[J-Link Commander]] || Command-line tool with basic functionality for target analysis.<br />
|-<br />
| [[J-Link Registration]] || SEGGER J-Link Registration utility to register your SEGGER product such as a J-Link, J-Trace or Flasher.<br />
|-<br />
| [[JTAGLoad]] || Command line tool that opens an svf file and sends the data in it via J-Link / J-Trace or Flasher to the target.<br />
|-<br />
| [https://www.segger.com/downloads/flasher/UM08037.pdf U-Flash] || Tool for creating standalone Flasher projects.<br />
|}<br />
<br />
== Flasher overview ==<br />
Flasher connects to a PC using the USB/Ethernet/RS232 interface (what host interfaces are available depends on the Flasher model),<br />
running Windows, Linux & MacOS. In stand-alone mode,<br />
Flasher can be driven by the start/stop button, or via the RS232 interface (handshake control or ASCII interface).<br />
Flasher always has a 20-pin connector, which target interfaces are supported depends on the Flasher model:<br />
* Flasher ARM: JTAG and SWD are supported.<br />
* Flasher RX: JTAG is supported. Flasher comes with additional 14-pin RX adapter<br />
* Flasher PPC: JTAG is supported. Flasher comes with additional 14-pin PPC adapter.<br />
* Flasher PRO: JTAG and SWD are supported.<br />
* Flasher Compact: JTAG and SWD are supported.<br />
<br />
=== Features of Flasher ARM/PPC/RX/PRO ===<br />
* Three boot modes: PC-based mode, stand-alone mode, file access mode<br />
* Stand-alone JTAG/SWD programmer (Once set up, Flasher can be controlled without the use of PC program)<br />
* No power supply required, powered through USB<br />
* Supports internal and external flash devices<br />
* 128 MB memory for storage of target program<br />
* Can be used as J-Link (emulator) with a download speed of up to 720 Kbytes/second<br />
* Data files can updated via USB/Ethernet (using the J-Flash software), via FTP, via RS232 or via the file access mode of Flasher<br />
<br />
{| class="seggertable"<br />
|-<br />
! Flasher model !! Supported cores !! Supported target interfaces !! Flash programming speed (depending on target hardware)<br />
|-<br />
| Flasher ARM || ARM7/ARM9/Cortex-M || JTAG, SWD || between 170 and 300 Kbytes/second<br />
|-<br />
| Flasher RX || Renesas RX610, RX621, RX62N, RX62T || JTAG || between 30-300 Kbytes/second<br />
|-<br />
| Flasher PPC || Power PC e200z0 || JTAG || up to 138 Kbytes/second<br />
|-<br />
| Flasher PRO || ARM7/ARM9/Cortex-M Renesas RX610, RX621, RX62N, RX62T Power PC e200z0 || JTAG, SWD || between 30-300 Kbytes/ second<br />
|-<br />
|}<br />
<br />
==== Features of Flasher Compact ====<br />
<br />
* Three boot modes: PC-based mode, stand-alone mode, file access mode<br />
* Stand-alone JTAG/SWD programmer (Once set up, Flasher can be controlled without the use of PC program)<br />
* No power supply required, powered through USB<br />
* Supports internal and external flash devices<br />
* 128 MB memory for storage of target program<br />
* Can be used as J-Link (emulator) with a download speed of up to 720 Kbytes/second<br />
* Data files can updated via USB/Ethernet (using the J-Flash software) or via the file access mode of Flasher<br />
<br />
{| class="seggertable"<br />
|-<br />
! Flasher model !! Supported cores !! Supported target interfaces !! Flash programming speed (depending on target hardware)<br />
|-<br />
| Flasher ARM || ARM7/ARM9/Cortex-M || JTAG, SWD || between 170 and 300 Kbytes/second<br />
|-<br />
| Flasher RX || Renesas RX610, RX621, RX62N, RX62T || JTAG || between 30-300 Kbytes/second<br />
|-<br />
| Flasher PPC || Power PC e200z0 || JTAG || up to 138 Kbytes/second<br />
|-<br />
| Flasher Compact || ARM7/ARM9/Cortex-M Renesas RX610, RX621, RX62N, RX62T Power PC e200z0 || JTAG, SWD || between 30-300 Kbytes/ second<br />
|-<br />
|}<br />
<br />
==== Features of Flasher Portable/Flasher Portable PLUS ====<br />
<br />
* Stand-alone in-circuit-programmer (Once set up, Flasher can be controlled without the use of a PC program)<br />
* Powered by an internal rechargeable battery (standard batteries for Flasher Portable), no Laptop or external power supply required.<br />
* Multiple firmware images can be stored on Flasher<br />
* 128 MB memory for storage of target program<br />
* Flasher Portable PLUS supports a simple selection of up to 99 firmware images via buttons (since V7.90)<br />
* Supported CPUs: ARM Cortex, Legacy ARM7/9, Renesas RX, Freescale PowerPC<br />
* Supports internal and external flash<br />
* Free software updates<ref name="legitimateOwned" />, 1 year of support<br />
* Data files can be updated via the file access mode functionality or via J-Flash<br />
* Programming speed between 30-300 Kbytes/second (actual speed depends on target hardware)<br />
{{Note|1=Ethernet and RS232 as host interface are not available for Flasher Portable}}<br />
<references><br />
<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.<br />
As a legitimate owner of a SEGGER Flasher, you can always download the latest software free of charge.<br />
Though not planned and not likely, we reserve the right to change this policy.<br />
Note that older models may not be supported by newer versions of the software.<br />
Typically, we support older models with new software at least 3 years after end of life.<br />
</ref><br />
</references><br />
<br />
{| class="seggertable"<br />
|-<br />
! Supported cores !! Supported target interfaces !! Flash programming speed (depending on target hardware)<br />
|-<br />
| ARM7/ARM9/Cortex-M || JTAG, SWD || between 30-300 Kbytes/second<br />
|-<br />
| Renesas RX610, RX621, RX62N, RX62T || JTAG || between 170 and 300 Kbytes/second<br />
|-<br />
| Power PC e200z0 || JTAG || up to 138 Kbytes/second<br />
|-<br />
|}<br />
<br />
==== Working environment ====<br />
<br />
'''General'''<br><br />
The Flasher can operate from a PC with an appropriate software like J-Flash or in stand-alone mode.<br />
<br />
'''Host System'''<br><br />
IBM PC/AT or compatible CPU: 486 (or better) with at least 128MB of RAM,<br />
running Windows, Linux & MacOS. It needs to have a USB, Ethernet or RS232 interface available for communication with Flasher.<br />
<br />
'''Power supply'''<br><br />
Flasher Portable: 3x standard AAA batteries or 5V DC, min. 100 mA via USB connector.<br />
<br />
Flasher Portable PLUS: internal rechargeable 680mAh Li-Ion battery, min. 100 mA via USB connector.<br />
<br />
Other Flashers: 5V DC, min. 100 mA via USB connector.<br />
<br />
'''Installing Flasher PC-software'''<br><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><br />
More information about the package you can find in the similar [[J-Link Software and Documentation Pack]].<br><br />
The package includes U-Flash and J-Flash, the main tools for flashing targets:<br />
* J-Flash : J-Flash User Guide ([https://wiki.segger.com/UM08003_JFlash UM08003_JFlash.pdf]).<br />
* U-Flash : U-Flash User Guide ([https://www.segger.com/downloads/flasher/UM08037.pdf UM08037_UniversalFlashLoader.pdf]).<br />
<br />
=== Specifications ===<br />
<br />
<br />
==== Specifications for Flasher ARM ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Windows, Linux & MacOS<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C<br />
|-<br />
| Storage Temperature || -20 °C ... +60 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
!colspan="100%"| Mechanical<br />
|-<br />
| Size (without cables) || 121mm x 66mm x 30mm<br />
|-<br />
| Weight (without cables) || 119g<br />
|-<br />
!colspan="100%"| Available interfaces<br />
|-<br />
| USB Host interface || USB 2.0, full speed<br />
|-<br />
| Ethernet Host interface || 10/100 MBit<br />
|-<br />
| RS232 Host interface || RS232 9-pin<br />
|-<br />
| Target interface || JTAG 20-pin (14-pin adapter available)<br />
|-<br />
!colspan="100%"| JTAG Interface, Electrical<br />
|-<br />
| Power Supply || USB powered, 100mA for Flasher ARM. 500 mA if target is powered by Flasher ARM<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| Target supply voltage || Supply voltage is 5V, max.<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6 <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Max. JTAG speed || up to 12MHz<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
===== Flasher ARM download speed =====<br />
<br />
The following table lists the Flasher ARM performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! ARM7 memory download<br />
|-<br />
| Flasher ARM || 720 Kbytes/s (12MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
<br />
==== Specifications for Flasher RX ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Windows, Linux & MacOS<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C<br />
|-<br />
| Storage Temperature || -20 °C ... +60 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
!colspan="100%"| Mechanical<br />
|-<br />
| Size (without cables) || 121mm x 66mm x 30mm<br />
|-<br />
| Weight (without cables) || 119g<br />
|-<br />
!colspan="100%"| Available interfaces<br />
|-<br />
| USB Host interface || USB 2.0, full speed<br />
|-<br />
| Ethernet Host interface || 10/100 MBit<br />
|-<br />
| RS232 Host interface || RS232 9-pin<br />
|-<br />
| Target interface || JTAG 20-pin (shipped with 14-pin adapter for Renesas RX)<br />
|-<br />
!colspan="100%"| JTAG Interface, Electrical<br />
|-<br />
| Power Supply || USB powered, 100mA for Flasher RX. 500 mA if target is powered by Flasher RX<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| 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)<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6 <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Max. JTAG speed || up to 12MHz<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
===== Flasher RX download speed =====<br />
<br />
The following table lists the Flasher RX performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! Flasher RX600 series memory download<br />
|-<br />
| Flasher RX || 720 Kbytes/s (12MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
<br />
==== Specifications for Flasher PPC ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Windows, Linux & MacOS<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C<br />
|-<br />
| Storage Temperature || -20 °C ... +60 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
!colspan="100%"| Mechanical<br />
|-<br />
| Size (without cables) || 121mm x 66mm x 30mm<br />
|-<br />
| Weight (without cables) || 119g<br />
|-<br />
!colspan="100%"| Available interfaces<br />
|-<br />
| USB Host interface || USB 2.0, full speed<br />
|-<br />
| Ethernet Host interface || 10/100 MBit<br />
|-<br />
| RS232 Host interface || RS232 9-pin<br />
|-<br />
| Target interface || JTAG 20-pin (shipped with 14-pin adapter for Renesas PPC)<br />
|-<br />
!colspan="100%"| JTAG Interface, Electrical<br />
|-<br />
| Power Supply || USB powered, 100mA for Flasher PPC. 500 mA if target is powered by Flasher PPC<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| Target supply voltage || Supply voltage is 5V, max.<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6 <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Max. JTAG speed || up to 12MHz<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
===== Flasher RX download speed =====<br />
<br />
The following table lists the Flasher PPC performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! Memory download<br />
|-<br />
| Flasher PPC || 530 Kbytes/s (8 MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
<br />
==== Specifications for Flasher PRO ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Windows, Linux & MacOS<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C<br />
|-<br />
| Storage Temperature || -20 °C ... +60 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
!colspan="100%"| Mechanical<br />
|-<br />
| Size (without cables) || 121mm x 66mm x 30mm<br />
|-<br />
| Weight (without cables) || 119g<br />
|-<br />
!colspan="100%"| Available interfaces<br />
|-<br />
| USB Host interface || USB 2.0, full speed<br />
|-<br />
| Ethernet Host interface || 10/100 MBit<br />
|-<br />
| RS232 Host interface || RS232 9-pin<br />
|-<br />
| Target interface || JTAG 20-pin (14-pin adapter available)<br />
|-<br />
!colspan="100%"| JTAG Interface, Electrical<br />
|-<br />
| Power Supply || USB powered, 100mA for Flasher PRO. 500 mA if target is powered by Flasher PRO<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| Target supply voltage || Supply voltage is 5V, max.<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6 <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Max. JTAG speed || up to 12MHz<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
<br />
===== Supported CPU cores =====<br />
<br />
The Flasher PRO supports the following CPU cores:<br />
<br />
'''ARM Cortex'''<br><br />
* Cortex-A5<br />
* Cortex-A8<br />
* Cortex-A9<br />
* Cortex-R4<br />
* Cortex-R5<br />
* Cortex-M0<br />
* Cortex-M0+<br />
* Cortex-M1<br />
* Cortex-M3<br />
* Cortex-M4<br />
<br />
'''ARM (legacy cores)'''<br><br />
* ARM720T<br />
* ARM7TDMI<br />
* ARM7TDMI-S<br />
* ARM920T<br />
* ARM922T<br />
* ARM926EJ-S<br />
* ARM946E-S<br />
* ARM966E-S<br />
* ARM1136JF-S<br />
* ARM1136J-S<br />
* ARM1156T2-S<br />
* ARM1156T2F-S<br />
* ARM1176JZ-S<br />
* ARM1176JZF<br />
* ARM1176JZF-S<br />
<br />
'''Renesas RX'''<br><br />
* RX111<br />
* RX210<br />
* RX220<br />
* RX21A<br />
* RX610<br />
* RX621<br />
* RX62G<br />
* RX62N<br />
* RX62T<br />
* RX630<br />
* RX631<br />
* RX63N<br />
* RX63T<br />
<br />
'''Freescale Power PC'''<br><br />
* e200z0<br />
<br />
===== Supported Target interfaces =====<br />
<br />
The Flasher PRO supports the following target interfaces:<br />
<br />
* JTAG<br />
* SWD<br />
* FINE<br />
* SPD<br />
<br />
===== Flasher PRO download speed =====<br />
<br />
The following table lists the Flasher PRO performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! ARM7 memory download<br />
|-<br />
| Flasher PRO || 720 Kbytes/s (12MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
<br />
==== Specifications for Flasher Compact ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Microsoft Windows (x86/x64)<br>Linux (x86/x64/Arm)<br>macOS (x86/Apple M1)<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C<br />
|-<br />
| Storage Temperature || -20 °C ... +65 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
| Size (without cables) || 70mm x 45mm x 18mm<br />
|-<br />
| Weight (without cables) || 40g<br />
|-<br />
| USB Host interface || USB 2.0 (Hi-Speed); Micro USB<br />
|-<br />
| Target interface || JTAG 20-pin (14-pin adapter available)<br />
|-<br />
| Power Supply || USB powered, 130mA (idle)<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| Target supply voltage || Supply voltage is 5V, max.<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
| Supported target interfaces || SPI, QSPI, 8051 C2, cJTAG, FINE, ICSP, IIC, ISP, JTAG, PDI, SPD, SWD, SWIM, UART, UPDI<br />
|-<br />
| Serial transfer rate between Flasher Compact and target || Up to 50 MHz (Depending on target interface)<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6 <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
===== Supported CPU cores =====<br />
<br />
The Flasher Compact supports the following CPU cores:<br />
'''ARM Cortex'''<br><br />
* Cortex-A5<br />
* Cortex-A8<br />
* Cortex-A9<br />
* Cortex-R4<br />
* Cortex-R5<br />
* Cortex-M0<br />
* Cortex-M0+<br />
* Cortex-M1<br />
* Cortex-M3<br />
* Cortex-M4<br />
<br />
'''ARM (legacy cores)'''<br><br />
* ARM720T<br />
* ARM7TDMI<br />
* ARM7TDMI-S<br />
* ARM920T<br />
* ARM922T<br />
* ARM926EJ-S<br />
* ARM946E-S<br />
* ARM966E-S<br />
* ARM1136JF-S<br />
* ARM1136J-S<br />
* ARM1156T2-S<br />
* ARM1156T2F-S<br />
* ARM1176JZ-S<br />
* ARM1176JZF<br />
* ARM1176JZF-S<br />
<br />
'''Renesas RX'''<br><br />
* RX111<br />
* RX210<br />
* RX220<br />
* RX21A<br />
* RX610<br />
* RX621<br />
* RX62G<br />
* RX62N<br />
* RX62T<br />
* RX630<br />
* RX631<br />
* RX63N<br />
* RX63T<br />
<br />
'''Freescale Power PC'''<br><br />
* e200z0<br />
<br />
===== Flasher Compact download speed =====<br />
<br />
The following table lists the Flasher Compact performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! ARM7 memory download<br />
|-<br />
| Flasher Compact || 720 Kbytes/s (12MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
<br />
==== Specifications for Flasher Portable PLUS ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Windows, Linux & MacOS<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C (normal operation)<br>+5 °C ... +45 °C (battery charging)<br />
|-<br />
| Storage Temperature || -20 °C ... +45 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
| 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)<br />
|-<br />
| Charging via USB || 70 minutes (at 1A charging current)<br />
|-<br />
!colspan="100%"| Mechanical<br />
|-<br />
| Size (without cables) || 126mm x 70mm x 28mm<br />
|-<br />
| Weight (without cables) || 140g<br />
|-<br />
!colspan="100%"| Available interfaces<br />
|-<br />
| USB Host interface || USB 2.0<br />
|-<br />
| Target interface || Standard 20-pin 0.1" connector (Adapters available).<br />
|-<br />
!colspan="100%"| Target Interface, Electrical<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| Target supply voltage || Supply voltage is 4.5V, max. (depends on the current battery voltage).<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6 <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Max. JTAG speed || up to 12MHz<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
===== Supported CPU cores =====<br />
<br />
The Flasher Portable PLUS supports the following CPU cores:<br />
<br />
'''ARM Cortex'''<br><br />
* Cortex-A5<br />
* Cortex-A8<br />
* Cortex-A9<br />
* Cortex-R4<br />
* Cortex-R5<br />
* Cortex-M0<br />
* Cortex-M0+<br />
* Cortex-M1<br />
* Cortex-M3<br />
* Cortex-M4<br />
<br />
'''ARM (legacy cores)'''<br><br />
* ARM720T<br />
* ARM7TDMI<br />
* ARM7TDMI-S<br />
* ARM920T<br />
* ARM922T<br />
* ARM926EJ-S<br />
* ARM946E-S<br />
* ARM966E-S<br />
* ARM1136JF-S<br />
* ARM1136J-S<br />
* ARM1156T2-S<br />
* ARM1156T2F-S<br />
* ARM1176JZ-S<br />
* ARM1176JZF<br />
* ARM1176JZF-S<br />
<br />
'''Renesas RX'''<br><br />
* RX111<br />
* RX210<br />
* RX220<br />
* RX21A<br />
* RX610<br />
* RX621<br />
* RX62G<br />
* RX62N<br />
* RX62T<br />
* RX630<br />
* RX631<br />
* RX63N<br />
* RX63T<br />
<br />
'''Freescale Power PC'''<br><br />
* e200z0<br />
<br />
===== Supported Target interfaces =====<br />
<br />
The Flasher Portable PLUS supports the following target interfaces:<br />
* JTAG<br />
* SWD<br />
* FINE<br />
* SPD<br />
<br />
===== Flasher Portable PLUS download speed =====<br />
<br />
The following table lists the Flasher Portable PLUS performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! ARM7 memory download<br />
|-<br />
| Flasher PRO || 720 Kbytes/s (12MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
<br />
==== Specifications for Flasher Portable ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Windows, Linux & MacOS<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C<br />
|-<br />
| Storage Temperature || -20 °C ... +65 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
| Power Supply || a) USB powered, 100mA for Flasher Portable. 500 mA if target is powered by Flasher Portable<br>b) Batteries powered (3xAAA)<br />
|-<br />
!colspan="100%"| Mechanical<br />
|-<br />
| Size (without cables) || 130mm x 65mm x 25mm<br />
|-<br />
| Weight (without cables) || 120g<br />
|-<br />
!colspan="100%"| Available interfaces<br />
|-<br />
| USB Host interface || USB 2.0<br />
|-<br />
| Target interface || Standard 20-pin 0.1" connector (Adapters available).<br />
|-<br />
!colspan="100%"| Target Interface, Electrical<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| Target supply voltage || Supply voltage is 4.5V, max. (depends on the current battery voltage).<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6V <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Max. JTAG speed || up to 12MHz<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
===== Supported CPU cores =====<br />
<br />
The Flasher Portable supports the following CPU cores:<br />
<br />
'''ARM Cortex'''<br><br />
* Cortex-A5<br />
* Cortex-A8<br />
* Cortex-A9<br />
* Cortex-R4<br />
* Cortex-R5<br />
* Cortex-M0<br />
* Cortex-M0+<br />
* Cortex-M1<br />
* Cortex-M3<br />
* Cortex-M4<br />
<br />
'''ARM (legacy cores)'''<br><br />
* ARM720T<br />
* ARM7TDMI<br />
* ARM7TDMI-S<br />
* ARM920T<br />
* ARM922T<br />
* ARM926EJ-S<br />
* ARM946E-S<br />
* ARM966E-S<br />
* ARM1136JF-S<br />
* ARM1136J-S<br />
* ARM1156T2-S<br />
* ARM1156T2F-S<br />
* ARM1176JZ-S<br />
* ARM1176JZF<br />
* ARM1176JZF-S<br />
<br />
'''Renesas RX'''<br><br />
* RX111<br />
* RX210<br />
* RX220<br />
* RX21A<br />
* RX610<br />
* RX621<br />
* RX62G<br />
* RX62N<br />
* RX62T<br />
* RX630<br />
* RX631<br />
* RX63N<br />
* RX63T<br />
<br />
'''Freescale Power PC'''<br><br />
* e200z0<br />
<br />
===== Supported Target interfaces =====<br />
<br />
The Flasher Portable supports the following target interfaces:<br />
<br />
* JTAG<br />
* SWD<br />
* FINE<br />
* SPD<br />
<br />
===== Flasher Portable download speed =====<br />
<br />
The following table lists the Flasher Portable performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! ARM7 memory download<br />
|-<br />
| Flasher PRO || 720 Kbytes/s (12MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
== Working with Flasher ==<br />
<br />
This chapter describes functionality and how to use Flasher.<br />
<br />
=== Flasher Portable PLUS ===<br />
<br />
The Flasher Portable PLUS is a portable version of SEGGERs Flasher family,<br />
which has been designed to fill the need of an extremely portable, production grade,<br />
Flash programmer used for in-field firmware updates. No need to be tethered to an outlet,<br />
it is powered by an integrated Li-Ion cell (680mAh).<br />
The Flasher Portable PLUS programs flash targets in stand-alone mode or via J-Flash PC software.<br><br />
<br />
Furthermore the Flasher Portable PLUS allows the user to select between 99 data images to be programmed (since V7.90).<br />
The images can be easily selected by using the SEL button on the front of the housing.<br />
For more information about support for multiple images, please refer to [[#Multiple File Support | Multiple File Support]].<br><br />
For setup and configuration purposes, the Flasher Portable PLUS connects to a PC via USB interface,<br />
running Windows, Linux & MacOS and has a built-in standard 20-pin J-Link target connector.<br><br />
<br />
{{Note|1=Ethernet and RS232 as host interface are not available for the Flasher Portable PLUS.}}<br />
<br />
==== Housing & Buttons ====<br />
<br />
The Flasher Portable PLUS comes with a display, which is for example used to represent the status of an ongoing flash progress.<br />
Furthermore, there are three buttons which allow the user to control Flasher Portable PLUS.<br />
For a detailed description of the functions, take a look at the table below:<br />
<br />
<!-- LG xxxxxx edit image with labels for buttons? (Is this actually necessary? Buttons are basically self-explanatory...) --><br />
[[File:Flasher_Portable_PLUS.png | 500px]]<br />
<br />
{| class="seggertable"<br />
|-<br />
! Button !! Description<br />
|-<br />
| Program || Start programming process with the currently selected image.<br />
|-<br />
| Select image || Select the image to be programmed next time the Program button is pressed.<br />
|-<br />
| 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.<br />
|-<br />
|}<br />
<br />
==== Configuration ====<br />
<br />
The Flasher Portable PLUS has some configuration options the other Flashers do not have.<br />
{| class="seggertable"<br />
|-<br />
! Option !! Description !! Value range !! Default value<br />
|-<br />
| AutoPowerOffOnIdle || Specifies the time interval after which the Flasher Portable will turn off without any user action || 1 to 3600 || 60<br />
|-<br />
| ShowDatCRCAfterProgramming || Activates displaying the data file CRC after the programming in the pop up message || 0 = inactive, 1 = active || 0<br />
|-<br />
|}<br />
<br />
If the <tt>Flasher.ini</tt> does not contain a <tt>[Config]</tt> section with the configuration option, the default value is used.<br />
<br />
'''Example:'''<br><br />
This sample will show the data file CRC after the programming and the auto power of is set to five minutes (=300 seconds).<br />
<br />
<source lang="c"><br />
[CONFIG]<br />
AutoPowerOffOnIdle = "300"<br />
ShowDatCRCAfterProgramming = "1"<br />
</source><br />
<br />
=== Flasher Portable ===<br />
<br />
The Flasher Portable is a portable version of SEGGERs Flasher family, which has been designed to fill the need of an extremely portable,<br />
production grade, Flash programmer used for in-field firmware updates. No need to be tethered to an outlet,<br />
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><br />
<br />
Furthermore the Flasher Portable allows the user to select between four data images to be programmed.<br />
The images can be easily selected by using the arrow buttons on the front of the housing.<br />
For more information about support for multiple images, please refer to [[#Multiple File Support | Multiple File Support]].<br><br />
For setup and configuration purposes, the Flasher Portable connects to a PC via USB interface,<br />
running Windows, Linux & MacOS and has a built-in standard 20-pin J-Link target connector.<br><br />
<br />
{{Note|1=Ethernet and RS232 as host interface are not available for the Flasher Portable.}}<br />
<br />
==== Housing & Buttons ====<br />
<br />
The Flasher Portable comes with several leds which are for example used to represent the status of an ongoing flash progress.<br />
Furthermore, there are three buttons which allow the user to control Flasher Portable.<br />
For a detailed description of the functions, take a look at the two tables below:<br />
<br />
<!-- LG xxxxxx edit image with labels for buttons?--><br />
[[File:Flasher_Portable_Top_2.png | 500px]]<br />
<br />
{| class="seggertable"<br />
|-<br />
! LED !! Description<br />
|-<br />
| ACTIVE || GREEN. Blinks while the Flasher Portable is busy / performs operations on the target.<br />
|-<br />
| PASS/FAIL || GREEN/RED. Indicates, if the last flashing cycle was successful.<br />
<ul><br />
<li> GREEN: Flashing cycle completed successfully.</li><br />
<li> RED: Flashing cycle completed with error.</li><br />
</ul><br />
|-<br />
| 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]].<br />
|-<br />
| POWER || GREEN: Indicates if Flasher is currently powered. Blinks while Flasher Portable tries to enumerate via USB.<br />
|-<br />
| 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.<br />
|-<br />
|}<br />
<br />
{| class="seggertable"<br />
|-<br />
! Button !! Description<br />
|-<br />
| Program || Start programming process with the currently selected image.<br />
|-<br />
| Select image || Select the image to be programmed next time the <tt>Program</tt> button is pressed.<br />
|-<br />
| 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<br />
|-<br />
|}<br />
<br />
=== File system ===<br />
<br />
The Flasher with hardware version 4 and lower supports 8.3 filenames only (8 characters filename, 3 characters file extension).<br />
Using longer filenames may result in incorrect operation. Integrated functions,<br />
like the FTP server or the terminal server, will refuse writing files with long filenames.<br />
<br />
=== Setting up the IP interface ===<br />
<br />
Setting up the IP interface<br />
Some of the Flasher models come with an additional Ethernet interface to communicate with the host system.<br />
These Flashers also come with a built-in webserver which allows some basic setup of the emulator,<br />
e.g. configuring a default gateway which allows using it even in large intranets. For more information,<br />
please refer to [[#TCP Services | TCP Services]].<br />
<br />
==== Connecting the first time ====<br />
<br />
When connecting Flasher the first time, it attempts to acquire an IP address via DHCP.<br />
The recommended way for finding out which IP address has been assigned to Flasher is, to use the J-Link Configurator.<br />
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.<br />
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''.<br />
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,<br />
please refer to ''UM08001, J-Link / J-Trace User Guide'', chapter ''Setup'', section ''Setting up the IP interface''.<br />
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]].<br />
<br />
=== Operating modes ===<br />
<br />
All Flashers except the Flasher ATE are able to boot in 3 different modes:<br />
<br />
* PC-based mode<br />
* Stand-alone mode<br />
* File access mode<br />
<br />
{{Note|1=The Flasher ATE only supports the stand-alone mode.}}<br />
<br />
'''Definition PC-based mode'''<br><br />
Flasher is connected to a PC via USB/Ethernet and controlled by a PC application (J-Flash).<br />
If there is an RS232 connection to a PC, does not have any influence on if PC-based mode is entered or not.<br />
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, ...)<br />
<br />
'''Definition Stand-alone mode'''<br><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.<br />
<br />
'''Definition file access mode'''<br><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.<br />
In this mode, Flasher enumerates as a mass storage device (like an USB Stick) at the host PC.<br />
In this mode, configuration + data files can be manually placed on the Flasher and the Flasher logfile can be read out.<br />
If you are using a self-powered Flasher such as the Flasher Portable Plus, the Flasher must be turned off before connecting it.<br />
<br />
==== PC-based mode ====<br />
If you want to use Flasher for the first time you need to install the J-Link software and documentation package.<br />
After installation, connect Flasher to the host PC via USB or Ethernet.<br />
For more information about how to install the J-Link software and documentation package please refer to [[J-Link Software and Documentation Pack]].<br />
<br />
===== Connecting the target system =====<br />
<br />
'''Power-on sequence'''<br><br />
In general, Flasher should be powered on before connecting it with the target device.<br />
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.<br />
Power-on the device after you connected Flasher to it. Flasher will boot in "PC-based mode".<br />
<br />
'''Verifying target device connection with J-Link.exe'''<br><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.<br />
Then start the J-Link command line tool <tt>JLink.exe</tt>,<br />
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.<br />
The screenshot below shows the output of <tt>JLink.exe</tt>.<br />
<br />
[[File:flasher_jlinkmode.gif]]<br />
<br />
===== LED status indicators =====<br />
<br />
In PC-based mode, there are also certain LED status codes defined:<br />
<br />
{| class="seggertable"<br />
|-<br />
! # !! Status of LED !! Meaning<br />
|-<br />
| 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.<br />
|-<br />
| 0 || GREEN<br>constant || Flasher enumeration process is complete and it is ready to be controlled by a PC application.<br />
|-<br />
|}<br />
<br />
==== Stand-alone mode ====<br />
<br />
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]].<br />
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).<br />
In the "stand-alone mode" Flasher can be used as a stand-alone flash programmer.<br><br />
<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]].}}<br />
<br />
===== LED status indicators =====<br />
Progress and result of an operation is indicated by Flasher's LEDs. The behavior is different for J-Link and stand-alone mode.<br />
For a definition of the different modes, please refer to [[#Operating modes | Operating modes]].<br />
The following table describes the behavior of the LEDs in stand-alone mode.<br />
<br />
{| class="seggertable"<br />
|-<br />
! # !! Status of LED !! Meaning<br />
|-<br />
| 0 || GREEN<br>constant || Flasher waits for a start trigger to perform an operation in stand-alone mode.<br />
|-<br />
| 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><br />
|-<br />
| 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.<br />
|-<br />
|}<br />
Older Flasher models have a different behavior.<br />
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:<br />
<br />
* 1621xxxxx (Flasher ARM V2)<br />
* 1630xxxxx (Flasher ARM V3)<br />
* 4210xxxxx (Flasher PPC V1)<br />
* 4110xxxxx (Flasher RX V1)<br />
<br />
{| class="seggertable"<br />
|-<br />
! # !! Status of LED !! Meaning<br />
|-<br />
| 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.<br />
|-<br />
| 1 || GREEN<br>constant || Connect to target and perform init sequence.<br />
|-<br />
| 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><br />
|-<br />
| 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.<br />
|-<br />
|}<br />
<br />
==== File access mode ====<br />
<br />
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".<br />
If you are using a self-powered Flasher such as the Flasher Portable Plus, the Flasher must be turned off before connecting it.<br />
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.<br />
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>.<br />
<br />
[[File:flasher_mode_msd.gif]]<br />
<br />
<tt>FLASHER.CFG</tt> contains the configuration settings for programming the target device and <tt>FLASHER.DAT</tt> contains the data to be programmed.<br />
<tt>FLASHER.LOG</tt> contains all logging information about the commands, performed in stand-alone mode.<br />
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><br />
<br />
Currently, J-Flash does not support to configure Flasher for automated serial number programming.<br><br />
<br />
If you want to configure multiple Flasher for the same target you do not have to use J-Flash all the time.<br />
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".<br />
<br />
=== Setting up Flasher for stand-alone mode ===<br />
{{Note| All Options how to set up the Flasher for stand-alone mode you can find here: [[Flasher/Download project to Flasher|Download project to the Flasher]]}}<br />
<br />
In order to set up Flasher for the stand-alone mode it needs to be configured once using the J-Flash software.<br />
For more information about J-Flash, please refer to the ''J-Flash User Guide''.<br><br />
<br />
After starting J-Flash, open the appropriate J-Flash project for the target Flasher shall be configured for, by selecting '''File''' -> '''Open Project'''.<br />
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><br />
<br />
After the appropriate project has been opened / created, the data file which shall be programmed needs to be loaded, by selecting '''File''' -> '''Open'''.<br />
After this J-Flash should look like in the screenshot below.<br />
<br />
[[File:jflash_projectfile_datafile.gif]]<br />
<br />
Before downloading the configuration (project) and program data (data file) to Flasher, the connection type (USB/IP) needs to be selected in the project.<br />
These settings are also saved on a per-project basis, so this also only needs to be setup once per J-Flash project.<br />
The connection dialog is opened by clicking '''Options''' -> '''Project settings''' -> '''General'''.<br />
<br />
[[File:jflash_connection_dialog.gif]]<br />
<br />
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.<br />
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.<br />
The user then can simply select the Flash he wants to download the configuration to.<br />
<br />
[[File:EmuSelectionDialog.gif]]<br />
<br />
In order to download the configuration and program data to the Flasher, simply select '''File''' -> '''Download config & data file to Flasher'''.<br />
<br />
[[File:jflash_download_to_emul.gif]]<br />
<br />
The J-Flash log window indicates that the download to the emulator was successful.<br />
<br />
[[File:jflash_download_to_emu_succ.gif]]<br />
<br />
From now on, Flasher can be used in stand-alone mode (without host PC interaction) for stand-alone programming.<br />
<br />
==== Preparing for stand-alone operation manually ====<br />
<br />
As an alternative, J-Flash can also be used to save config and data file to a hard drive.<br><br />
<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,<br />
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.<br />
<br />
'''Creating config and data files'''<br><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><br />
<br />
For some devices, additional files (*.PEX) are needed.<br />
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.<br />
<br />
'''About *.PEX files'''<br><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,<br />
the following needs to be taken care of:<br><br />
<br />
For some devices, special connect, reset etc. sequences are necessary which are stored in so-called *.PEX files on the Flasher.<br><br />
<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><br />
<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><br />
The *.PEX files need to be placed in a subdirectory with the same name as the corresponding *.cfg file.<br />
J-Flash creates a directory with the correct name automatically when a config file is created.<br><br />
<br />
Example:<br><br />
<br />
MyConf0 is a project for a device that requires a *.PEX file for connect.<br><br />
MyConf1 is a project for a device that requires no *.PEX file at all.<br />
<br />
[[File:PEX_File_Flasher.png]]<br />
<br />
=== Universal Flash Loader mode ===<br />
<br />
As an alternative to the stand-alone mode, configured via J-Flash, there is the Universal Flash Loader mode.<br />
While the normal stand-alone mode relies on using the debug interface of the device, the Universal Flash Loader<br />
mode uses device or vendor specific programming interfaces and protocols and therefore it is independent of the<br />
CPU core.<br><br />
<br />
The Universal Flash Loader is available for the following Flasher models:<br />
* Flasher PRO<br />
* Flasher Compact<br />
* Flasher Portable PLUS<br />
<br />
For some of the supported devices, SEGGER offers specific adapters.<br />
<br />
==== Preparing manually ====<br />
<br />
The Universal Flash Loader uses an configuration file (*.UNI), a device specific flash programming algorithm (*.PEX) and a data file (*.DAT).<br />
<br />
===== Configuration =====<br />
<br />
The configuration file basically is split into three parts.<br />
The first part, the section [DEVICE], controls the generic behavior of the Universal Flash Loader.<br />
It specifies which protocol driver and data file to use. It allows enabling and configuring target power<br />
and it defines which actions to perform.<br />
The second part consists of one or more [BANKx] sections, which contain information about the memories.<br />
The third part, the section [CONFIG], includes configuration settings for the protocol driver.<br><br />
<br />
An .UNI file might look as follows:<br><br />
<br />
<source lang="c"><br />
[OPTIONS]<br />
TargetPower = "0"<br />
ChipErase = "0"<br />
<br />
[TASKS]<br />
CheckBlank = "1"<br />
Erase = "1"<br />
Program = "1"<br />
Verify = "1"<br />
Secure = "1"<br />
<br />
[DEVICE]<br />
Algo = "RL78.PEX"<br />
Data = "ALL_6k.dat"<br />
<br />
[BANK0]<br />
; Code Flash<br />
Base = "0x00000000"<br />
Size = "0x00004000"<br />
Sect = "0x00000400"<br />
<br />
[BANK1]<br />
; Data Flash<br />
Base = "0x000F1000"<br />
Size = "0x00000800"<br />
Sect = "0x00000400"<br />
<br />
[CONFIG]<br />
BaudRate = "1000000"<br />
ClearConfigOnConnect = "0x00"<br />
Security = "0xFF"<br />
ShieldStart = "0x0000"<br />
ShieldEnd = "0x000F"<br />
</source><br />
<br />
'''[OPTIONS]'''<br><br />
'''TargetPower'''<br><br />
If set to a value >0, power is applied to the target.<br />
The value defines the delay (in ms) after enabling the target power supply and before starting to communicate with the target.<br />
<br />
'''ChipErase'''<br><br />
If set to 1, the chip erase function is called for erasing the chip.<br><br />
{{Note|1=Do not enable this setting if the flash programming algorithm does not support chip erase.}}<br />
<br />
'''[TASKS]'''<br><br />
'''CheckBlank'''<br><br />
Defines if a blank check should be performed before erasing a sector.<br />
<br />
'''Erase'''<br><br />
Defines if the sector should be erased before programming.<br />
<br />
'''Program'''<br><br />
Defines if the sector should be programmed.<br />
<br />
'''Verify'''<br><br />
Defines if the sector should be verified after programming.<br />
<br />
'''Secure'''<br><br />
Defines if the device should be secured or protected against read-out after verifying.<br />
<br />
'''[DEVICE]'''<br><br />
'''Algo'''<br><br />
File name of the flash programming algorithm. This file is provided by SEGGER and will typically support a series of devices.<br />
<br />
'''Data'''<br><br />
File name of the data file to program. The Flasher only supports the Flasher .dat file format.<br />
Flasher .dat files can be generated by J-Flash or Universal Flash Loader and offer high performance together with high flexibility.<br />
<br />
'''[BANKx]'''<br><br />
x blocks with configuration data for the flash banks. All three parameters (Base, Size and Sect) are mandatory.<br />
<br />
'''Base'''<br><br />
Base address of the flash bank.<br />
<br />
'''Size'''<br><br />
Total size of the flash bank.<br />
<br />
'''Sect'''<br><br />
Sector size of the flash bank.<br />
<br />
'''[CONFIG]'''<br><br />
This section includes specific configuration data for the flash programming algorithm.<br><br />
There are no general parameters.<br />
<br />
{{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. }}<br />
<br />
==== Preparing using the PC utility ====<br />
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.<br />
<br />
[[File:Universal Flash Loader.png]]<br />
<br />
The Universal Flash Loader Configurator comes with a large list of devices and flash programming algorithms. If you are going to<br />
use a device from one of the supported families which currently is not available in the utility, feel free to contact the support.<br />
<br />
=== Multiple File Support ===<br />
<br />
It is also possible to have multiple data files and config files on Flasher, to make Flasher more easy to use in production environment.<br />
To choose the correct configuration file and data file pair, a <tt>FLASHER.INI</tt> file is used.<br />
This init file contains a <tt>[FILES]</tt> section which describes which configuration file and which data file should be used for programming.<br />
A sample content of a FLASHER.INI file is shown below:<br><br />
<br />
<source><br />
[FILES]<br />
DataFile = "Flasher1.dat"<br />
ConfigFile = "Flasher1.cfg"<br />
</source><br />
<br />
Using this method all configuration files and data files which are used in the production only have to be downloaded once.<br />
From there on a configuration file / data file pair can be switched by simply replacing the <tt>FLASHER.INI</tt> by a new one,<br />
which contains the new descriptions for the configuration file and data file. The <tt>FLASHER.INI</tt> can be replaced in two ways:<br />
<ol><br />
<li>Boot Flasher in file access mode in order to replace the <tt>FLASHER.INI</tt></li><br />
<li><br />
If Flasher is already integrated into the production line, runs in stand-alone mode and can not be booted in other mode:<br />
Use the file I/O commands provided by the ASCII interface of Flasher, to replace the <tt>FLASHER.INI</tt>.<br />
For more information about the file I/O commands, please refer to [[#File I/O commands | File I/O commands]].<br />
</li><br />
</ol><br />
{{Note|1=Flasher with hardware version 4 and lower only supports 8.3 filenames only (8 characters filename, 3 characters file extension). Using longer filenames may result in incorrect operation.}}<br />
<br />
==== Flasher Portable specifics ====<br />
<br />
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><br />
<br />
Which config / data file pair is used for which image selection position is determined by the contents of the FLASHER.INI.<br />
For this, the FLASHER.INI contents in the <tt>[FILES]</tt> section have been extended.<br />
The sample below shows how to enable the user to select between four different images on the Flasher portable via the select / arrow button:<br />
<br />
<source><br />
[FILES]<br />
DataFile = "First.dat"<br />
ConfigFile = "First.cfg"<br />
DataFile1 = "Second.dat"<br />
ConfigFile1 = "Second.cfg"<br />
DataFile2 = "Third.dat"<br />
ConfigFile2 = "Third.cfg"<br />
DataFile3 = "Fourth.dat"<br />
ConfigFile3 = "Fourth.cfg"<br />
</source><br />
<br />
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.<br />
From there on, switching between the files can be done by simply using the selection button of Flasher Portable.<br />
<br />
===== Example =====<br />
<br />
1 Target, 2 Datafiles (e.g. boot loader und application) --> same configuration file (*.CFG) but different data files (*.DAT) should be used.<br><br />
<br />
* Open pre-configured J-Flash project<br />
* File -> Save Flasher config file ... (DEFAULT.CFG)<br />
* Open data file 1 (boot loader)<br />
* File -> Save Flasher data file ... (BOOT.DAT)<br />
* Open data file 2 (application)<br />
* File -> Save Flasher data file ... (APP.DAT)<br />
* Create the a FLASHER.INI file (content see below)<br />
* Connect the Flasher in file access mode to the PC<br />
* Copy DEFAULT.CFG, BOOT.DAT, APP.DAT and FLASHER.INI on the Flasher<br />
<br />
FLASHER.INI content:<br><br />
<br />
<source><br />
[FILES]<br />
DataFile = "BOOT.DAT"<br />
ConfigFile = "DEFAULT.CFG"<br />
DataFile1 = "APP.DAT"<br />
ConfigFile1 = "DEFAULT.CFG"<br />
</source><br />
<br />
==== Flasher Portable PLUS specifics ====<br />
<br />
Flasher Portable PLUS allows to choose between 99 configuration and data file pairs during runtime by using the select button on the front of Flasher Portable PLUS.<br><br />
<br />
Which config / data file pair is used for which image selection position is determined by the contents of the FLASHER.INI.<br />
For this, the FLASHER.INI may contain several <tt>[BATCH]</tt> sections.<br />
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:<br />
<br />
<source><br />
[BATCH]<br />
DataFile = "First.dat"<br />
ConfigFile = "First.cfg"<br />
[BATCH1]<br />
DataFile = "Second.dat"<br />
ConfigFile = "Second.cfg"<br />
[BATCH2]<br />
DataFile = "Third.dat"<br />
ConfigFile = "Third.cfg"<br />
[BATCH7]<br />
DataFile = "Proj_8.dat"<br />
ConfigFile = "Proj_8.cfg"<br />
[BATCH15]<br />
DataFile = "Proj_16.dat"<br />
ConfigFile = "Proj_16.cfg"<br />
</source><br />
<br />
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.<br />
From there on, switching between the files can be done by simply using the selection button of Flasher Portable PLUS.<br />
<br />
Please also consider the chapter [[#Batch Programming in stand-alone mode | Batch Programming in stand-alone mode]].<br />
<br />
{{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.}}<br />
{{Note|1=You may have gaps in the list. The missing entries will be skipped when selecting the next configuration.}}<br />
{{Note|1=The <tt>[Files]</tt> section is supported by the Flasher Portable PLUS, too. But the number of configuration is limited to four.}}<br />
<br />
===== Example =====<br />
<br />
1 Target, 2 Datafiles (e.g. boot loader und application) --> same configuration file (*.CFG) but different data files (*.DAT) should be used.<br><br />
<br />
* Open pre-configured J-Flash project<br />
* File -> Save Flasher config file ... (DEFAULT.CFG)<br />
* Open data file 1 (boot loader)<br />
* File -> Save Flasher data file ... (BOOT.DAT)<br />
* Open data file 2 (application)<br />
* File -> Save Flasher data file ... (APP.DAT)<br />
* Create the a FLASHER.INI file (content see below)<br />
* Connect the Flasher in file access mode to the PC<br />
* Copy DEFAULT.CFG, BOOT.DAT, APP.DAT and FLASHER.INI on the Flasher<br />
<br />
FLASHER.INI content:<br><br />
<br />
<source><br />
[BATCH]<br />
DataFile = "BOOT.DAT"<br />
ConfigFile = "DEFAULT.CFG"<br />
DisplayName = "Bootloader"<br />
[BATCH1]<br />
DataFile = "APP.DAT"<br />
ConfigFile = "DEFAULT.CFG"<br />
DisplayName = "Application"<br />
[BATCH2]<br />
DataFile = "BOOT.DAT"<br />
ConfigFile = "DEFAULT.CFG"<br />
DataFile1 = "APP.DAT"<br />
ConfigFile1 = "DEFAULT.CFG"<br />
DisplayName = "BL and App"<br />
</source><br />
<br />
=== Custom labels ===<br />
<br />
Flasher supports to assign custom labels to configurations ("Project Display Text" in U-Flash). This allows to specify easy to remember names for configurations that are stored on the Flasher.<br />
<br />
==== Hardware and software requirements ====<br />
This feature is supported by the following models:<br />
* Flasher Portable PLUS<br />
<br />
This feature is supported since V6.30e of the software package and firmware<br />
<br />
==== Assigning labels ====<br />
The configuration and data file pairs are specified in the <tt>FLASHER.INI</tt> file:<br />
<source><br />
[FILES]<br />
DataFile = "IMAGE0.dat"<br />
ConfigFile = "IMAGE0.cfg"<br />
DataFile1 = "IMAGE1.dat"<br />
ConfigFile1 = "IMAGE1.cfg"<br />
</source><br />
<br />
By default, Flasher will show the names of the configuration and data file:<br />
[[File:FW1_smartwatch_nolabel.png]]<br />
[[File:FW2_smart_meter_nolabel.png]]<br />
<br />
By adding <tt>DisplayName</tt>, <tt>DisplayName1</tt>, ... keys to the <tt>FLASHER.INI</tt>, a custom label can be shown instead:<br />
<source><br />
[FILES]<br />
DisplayName = "FW smartwatch"<br />
DataFile = "IMAGE0.dat"<br />
ConfigFile = "IMAGE0.cfg"<br />
DisplayName1 = "FW smart meter"<br />
DataFile1 = "IMAGE1.dat"<br />
ConfigFile1 = "IMAGE1.cfg"<br />
</source><br />
<br />
The images will now be shown as follows:<br />
[[File:FW1_smartwatch_label.png]]<br />
[[File:FW2_smart_meter_label.png]]<br />
<br />
==== Considerations ====<br />
* 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.<br />
<br />
=== Programming multiple targets ===<br />
<br />
It is possible to program multiple targets which are located in a JTAG chain.<br />
The targets will be programmed each with a configuration and a data file.<br><br />
The configuration for the desired target must be selected before it can be programmed,<br />
this can be done with the <tt>#SELECT</tt> command.<br />
For more information how to use the <tt>#SELECT</tt> command please refer to the [[#ASCII_command_interface|ASCII command interface]].<br />
<br />
'''Example'''<br><br />
Three devices should be programmed.<br><br />
<br />
JTAG Chain: ''TDI'' --> ''Device2'' --> ''Device1'' --> ''Device0'' --> ''TDO''<br><br />
<br />
Three configurations would be stored on the flasher:<br><br />
<br />
Config 0: Configured to program Device0 (DEVICE0.CFG, DEVICE0.DAT)<br><br />
Config 1: Configured to program Device1 (DEVICE1.CFG, DEVICE1.DAT)<br><br />
Config 2: Configured to program Device2 (DEVICE2.CFG, DEVICE2.DAT)<br><br />
<br />
Selection and programming of the target will be done via the ASCII interface:<br><br />
<br />
<source><br />
#SELECT DEVICE0<br />
#AUTO<br />
#SELECT DEVICE1<br />
#AUTO<br />
#SELECT DEVICE2<br />
#AUTO<br />
</source><br />
<br />
==== Programming multiple targets with J-Flash ====<br />
<br />
Programming multiple targets can also be done via J-Flash using the command line interface.<br />
For this each target must be handled with its own project file.<br />
<br />
'''Example'''<br><br />
<br />
<source><br />
JFlash.exe -openproj"Device0.jflash" -open"Device0.hex" -auto -exit<br />
JFlash.exe -openproj"Device1.jflash" -open"Device1.hex" -auto -exit<br />
JFlash.exe -openproj"Device2.jflash" -open"Device2.hex" -auto -exit<br />
</source><br />
<br />
=== Batch Programming in stand-alone mode ===<br />
<br />
Batch programming allows to execute different stand-alone mode jobs in batch to be executed in immediate succession, without any user interaction in between.<br />
This can be used for example to program multiple targets in a JTAG-Chain or multiple data files to a target.<br><br />
A batch may contains an unlimited number of configurations which consist of a data file (*.DAT) and config file (*.CFG).<br />
For further information regarding config and data files, please refer to [[#Preparing for stand-alone operation manually | Preparing for stand-alone operation manually]].<br><br />
In order to specify the batch jobs, a FLASHER.INI file is used.<br />
This init file contains a [BATCH] section which describes which configuration pairs (*.DAT and *.CFG file) should be used for each batch job.<br />
A sample content of a FLASHER.INI file is shown below:<br><br />
<br />
<source><br />
[BATCH]<br />
DataFile = "Flasher0.dat"<br />
ConfigFile = "Flasher0.cfg"<br />
DataFile1 = "Flasher1.dat"<br />
ConfigFile1 = "Flasher1.cfg"<br />
</source><br />
<br />
[[File:Batch_Jobs.bmp]]<br />
<br />
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.<br />
<br />
<br />
[[File:Batch_Programming.bmp]]<br />
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<br />
currently executed action.<br />
<br />
<br />
[[File:Batch_Result.bmp]]<br />
The result of the programming will be shown on the screen after finishing all jobs.<br />
<br />
<br />
Creating / Replacing of the FLASHER.INI file can done in two ways:<br><br />
<ol><br />
<li>Boot Flasher in file access mode in order to replace the FLASHER.INI</li><br />
<li><br />
If Flasher is already integrated into the production line, runs in stand-alone mode and can not be booted in other mode:<br />
Use the file I/O commands provided by the ASCII interface of Flasher, to replace the FLASHER.INI .<br />
For more information about the file I/O commands, please refer to [[#File I/O commands | File I/O commands]].<br />
In case of an error occurred during execution, the Flasher terminates the entire batch processing.<br />
</li><br />
</ol><br />
{{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.}}<br />
{{Note|1=The Flasher with hardware version 4 and lower supports 8.3 filenames only (8 characters filename, 3 characters file extension). Using longer filenames may result in incorrect operation.}}<br />
<br />
==== Flasher Portable specifics ====<br />
<br />
Flasher Portable allows to choose between four different batches during runtime by using the select/arrow button on the front of Flasher Portable.<br />
Which batch configuration is used for which image selection position is specified in the FLASHER.INI.<br />
For this, the FLASHER.INI contents in the [BATCH] section have been extended.<br />
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><br />
<br />
<source><br />
[BATCH]<br />
DataFile = "Flasher0.dat"<br />
ConfigFile = "Flasher0.cfg"<br />
DataFile1 = "Flasher1.dat"<br />
ConfigFile1 = "Flasher1.cfg"<br />
DataFile2 = "Flasher2.dat"<br />
ConfigFile2 = "Flasher2.cfg"<br />
[BATCH1]<br />
DataFile = "TEST.dat"<br />
ConfigFile = "Test.cfg"<br />
[BATCH2]<br />
DataFile = "VALIDATE.dat"<br />
ConfigFile = "Flasher0.cfg"<br />
</source><br />
<br />
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.<br />
From there on, switching between the batches can be done by simply using the selection button of Flasher Portable.<br />
<br />
<br />
<br />
==== Examples ====<br />
<br />
'''Example 1:''' Programming two Data files to the same target<br><br />
<br />
* Open your J-Flash project.<br />
* Use File -> Save Flasher config file... to save the .CFG file (in this example: STM32F4.CFG).<br />
* Select the first binary and use File -> Save Flasher Data file... to save the first .DAT file (in this example: DATA0.DAT).<br />
* Select the second binary and use File -> Save Flasher Data file... to save the second data file .DAT file (in this example: DATA1.DAT).<br />
* Copy the Files to the Flasher e.g. by using file access mode.<br />
* Create a FLASHER.INI file in the root directory of the Flasher.<br />
* Exemplary content of FLASHER.INI:<br><br />
<source><br />
[BATCH]<br />
DataFile = "DATA0.dat"<br />
ConfigFile = "emPower.cfg"<br />
DataFile1 = "DATA1.dat"<br />
ConfigFile1 = "emPower.cfg"<br />
</source><br />
<br />
<br />
'''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><br />
Example scenario: 2 Devices in a JTAG chain, a STM32F1 and a STM32F4. <br><br />
<br />
* Follow the same as described before and additionally:<br />
* Create one project file per target (and create a .CFG file of each one).<br />
* Make sure each project file is configured correctly, especially the JTAG-Chain position (See UM8003 "J-Flash" for more detailed info).<br />
* Exemplary content of FLASHER.INI:<br><br />
<source><br />
[BATCH]<br />
DataFile = "F1DATA.dat"<br />
ConfigFile = "STM32F1.cfg"<br />
DataFile1 = "F4DATA0.dat"<br />
ConfigFile1 = "STM32F4.cfg"<br />
DataFile2 = "F4DATA1.dat"<br />
ConfigFile2 = "STM32F4.cfg"<br />
</source><br />
<br />
'''Example 3:''' Using multiple Batch sections with Flasher Portable.<br><br />
Example scenario: 2 Devices in a JTAG chain, a STM32F1 and a STM32F4.<br><br />
Selection 1 will program the STM32F1 target.<br><br />
Selection 2 will program the STM32F4 target using "F4DATA0.dat".<br><br />
Selection 3 will program the STM32F4 target using "F4DATA1.dat".<br><br />
Selection 4 will execute 1, 2 and 3 in sequence.<br><br />
* Exemplary content of FLASHER.INI:<br><br />
<source><br />
[BATCH]<br />
DataFile = "F1DATA.dat"<br />
ConfigFile = "STM32F1.cfg"<br />
[BATCH1]<br />
DataFile = "F4DATA0.dat"<br />
ConfigFile = "STM32F4.cfg"<br />
[BATCH2]<br />
DataFile = "F4DATA1.dat"<br />
ConfigFile = "STM32F4.cfg"<br />
[BATCH3]<br />
DataFile = "F1DATA.dat"<br />
ConfigFile = "STM32F1.cfg"<br />
DataFile1 = "F4DATA0.dat"<br />
ConfigFile1 = "STM32F4.cfg"<br />
DataFile2 = "F4DATA1.dat"<br />
ConfigFile2 = "STM32F4.cfg"<br />
</source><br />
<br />
=== Serial number programming ===<br />
<br />
Flasher supports programming of serial numbers. In order to use the serial number programming feature,<br />
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><br />
<br />
In general, Flasher supports two ways of programming a serial number into the target:<br />
<br />
#<br />
#* Programming continuous serial numbers.<br />
#* The serial number is 1-4 bytes in size.<br />
#* The start serial number, increment, serial number size, and address are configured in the J-Flash project.<br />
#<br />
#* Programming custom serial numbers from a serial number list file.<br />
#* The start line within the serial number list file to get the next serial number bytes, line increment, serial number size, and address is configured in the J-Flash project.<br />
#* The serial number list file needs to be specified and created by the user.<br />
<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.}}<br />
<br />
==== Serial number settings ====<br />
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.<br />
This is done by enabling the '''Program serial number''' option as shown in the screenshot and table below:<br />
<br />
[[File:UM08039_SN_Sample_JFlashSettings.png]]<br />
<br />
{| class="seggertable"<br />
|-<br />
!| Setting || Meaning<br />
|-<br />
| <tt>Address</tt> || The address the serial number should be programmed at.<br />
|-<br />
| <tt>Length</tt> ||<br />
The length of the serial number (in bytes) that 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 8 is selected as length, the serial number and its complement are programmed at the given address.<br />
* In case a serial number list file is given, the 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 '''Length''', the remaining bytes are filled with 0s. No complements etc. are added to the serial number.<br />
|-<br />
| <tt>Next SN</tt> ||<br />
* In case no serial number list file is given, '''Next SN''' is the next serial number which should be programmed. The serial number is always stored in flash memory in little-endian format.<br />
* In case a serial number list file is given, '''Next SN''' describes the line of the serial number list file where to read the next serial number bytes from. The Flasher starts counting at line 0, so in order to start serial number programming with the first line of the <tt>SNList.txt</tt>, '''Next SN''' needs to be set to 0.<br />
|-<br />
| <tt>Increment</tt> || Specifies by how much '''Next SN''' is incremented.<br />
|}<br />
<br />
=== Serial number file ===<br />
When selecting '''File -> Download serial number file to Flasher''', J-Flash will create a serial number file named as <tt><JFlashProjectName>_Serial.txt</tt>.<br />
This file is downloaded as <tt>Serial.txt</tt> on the Flasher.<br />
The file is generated based on the serial number settings in the J-Flash project and will contain the value defined by the '''Next SN''' option.<br />
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.<br />
<br />
==== Serial number list file ====<br />
<br />
In order to program custom serial numbers which can not be covered by the standard serial number scheme provided by J-Flash<br />
(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.<br />
<br />
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.<br />
This file is downloaded as <tt>SNList.txt</tt> on the 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<br />
* Each byte of the serial number is described by two hexadecimal digits.<br />
<br />
'''Example'''<br><br />
A 8-byte serial number should be programmed at address 0x08000000.<br><br />
<br />
It should be programmed as follows in the memory:<br><br />
<br />
<tt>0x08000000: 0x01 0x02 0x03 0x04 0x55 0x66 0x77 0x88</tt><br><br />
<br />
The serial number list file should look as follows:<br><br />
<br />
<tt>0102030455667788</tt><br />
<br />
[[File:SN_SNList.gif]]<br />
<br />
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><br />
<br />
Which line Flasher will read at the next programming cycle, is configured via the <tt>Next SN</tt> option in J-Flash.<br />
For more information, please refer to [[#Serial number settings | Serial number settings]].<br />
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><br />
<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.}}<br />
{{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.}}<br />
<br />
==== Programming process ====<br />
<br />
Flasher will increment the serial number in SERIAL.TXT by the value defined in <tt>Increment</tt>, after each successful programming cycle.<br><br />
<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><br />
<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.<br />
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.}}<br />
<br />
==== Downloading serial number files to Flasher ====<br />
<br />
Downloading the serial number files needs to be done explicitly by selecting '''File-> Download serial number file to Flasher'''.<br />
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.<br />
<br />
==== Sample setup ====<br />
<br />
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.<br />
<br />
'''Defining serial number address, length and start value'''<br><br />
In the J-Flash project the following needs to be defined:<br><br />
* <tt>Address</tt> is 0x08001000<br />
* <tt>Next SN</tt> is 1234567<br />
* <tt>Increment</tt> is 1<br />
* <tt>Len</tt> is 4 (bytes)<br />
<br />
[[File:SN_Sample_JFlashSettings.gif]]<br />
<br />
'''Downloading configuration, data and serial number to Flasher.'''<br><br />
After setting up the rest of the configuration (Target interface etc.) and selecting an appropriate data file, the configuration,<br />
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><br />
<br />
[[File:SN_Sample_DownloadToFlasher.gif]]<br />
<br />
After downloading the serial number to Flasher, J-Flash also created the <tt><JFlashProjectName>_Serial.txt</tt>.<br />
<br />
[[File:SN_Sample_SerialFileCreated.gif]]<br />
<br />
Now Flasher is prepared to program the 8-byte serial number.<br />
<br />
=== Patch file support ===<br />
<br />
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.<br />
Before starting programming process in stand-alone mode, Flasher will look for a file named <tt>Patches.txt</tt> being present on the Flasher.<br />
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><br />
<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.<br />
<br />
'''Syntax'''<br><br />
<!-- LG xxxxxxxxx '==' is shown as '=', so instead use '= ='--><br />
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><br />
<br />
<tt><NumPatches>,<Addr>,<NumBytes>:<nowiki><Data></nowiki>,<Addr>,<NumBytes>:<nowiki><Data></nowiki>,<Addr>,<NumBytes>:<nowiki><Data></nowiki>,<Addr>,<NumBytes>:<nowiki><Data></nowiki>\r\n</tt><br><br />
<br />
Find below a table which describes each parameter.<br><br />
{| class="seggertable"<br />
|-<br />
! Parameter !! Description<br />
|-<br />
| <tt><NumPatches></tt> || Describes the number of patches in this patch line. Max. value is 4.<br />
|-<br />
| <tt><Addr></tt> || Describes the address to be patched. Value is expected in hex.<br />
|-<br />
| <tt><NumBytes></tt> || Number of bytes for the current patch. Max. value is 20h (32 in decimal). Value is expected in hex.<br />
|-<br />
| <tt><nowiki><Data></nowiki></tt> || Describes the data to be patched. <nowiki><Data></nowiki> is always expected as 2 hexadecimal characters per byte.<br />
|-<br />
|}<br />
<br />
{{Note|1=All values are expected in hexadecimal format (hex).<br><br />
<nowiki><Data></nowiki> section is always preceded by ":", not ",".}}<br />
<br />
'''Example'''<br><br />
Below is an example patch.<br><br />
<br />
<source><br />
1,18,4:01020304\r\n<br />
</source><br />
<br />
Patching the following data:<br />
<br />
[[File:data_before.png]]<br />
<br />
with the example patch will result in the following data:<br />
<br />
[[File:data_afterwards.png]]<br />
<br />
Please note that as mentioned earlier patching undefined memory locations will be ignored.<br><br />
Applying the example patch to the following data:<br />
<br />
[[File:undefined_mem_before.png]]<br />
<br />
Causes no data to be patched, as can be seen in the following image:<br />
<br />
[[File:undefined_mem_no_token.png]]<br />
<br />
Therefore it is necessary to first write placeholder data to the memory locations which are supposed to be patched.<br><br />
An example for such a placeholder can be seen here:<br />
<br />
[[File:undefined_mem_token.png]]<br />
<br />
Please note that the actual data inside the placeholder does not matter to the Flasher,<br />
because it is overwritten during patching.<br><br />
Applying the example patch will now work as expected:<br />
<br />
[[File:undefined_mem_after.png]]<br />
<br />
'''Single patch via RS232'''<br><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><br />
<br />
Send the <tt>#AUTO PATCH <NumPatches>,<Addr>,<NumBytes>:<nowiki><Data></nowiki></tt><br><br />
<br />
command via Flasher ASCII interface. The parameters have the same function as described in the table above.<br />
<br />
==== Newline encoding ====<br />
<br />
In general, for all patch files, init files etc. Flasher supports both newline encodings:<br><br />
<br />
* Windows: \r\n<br />
* Unix/Mac: \n<br />
<br />
All parser functionality etc. are written to be independent from the host operating system.<br />
<br />
=== Limiting the number of programming cycles ===<br />
<br />
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.<br />
To make use of this feature, a file called <tt>Cntdown.txt</tt> needs to be placed on the Flasher.<br />
This file simply contains a decimal number (32-bit unsigned integer) that describes how many programming cycles can be performed with the current setup.<br />
<br />
[[File:CntdownTxtContent.jpg]]<br />
<br />
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><br />
<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>.}}<br />
<br />
==== Changed fail/error LED indicator behavior ====<br />
<br />
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><br />
<br />
* The red error/fail LED will lit for 1 second<br />
* After this, it will blink/toggle x times @ 5 Hz, indicating the number of programming cycles left. (blinking 5 times for 5 cycles left, ...)<br />
<br />
==== Required Flasher hardware version for Cntdown.txt support ====<br />
<br />
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><br />
<br />
* 1621xxxxx (Flasher ARM V2)<br />
* 1630xxxxx (Flasher ARM V3)<br />
* 4210xxxxx (Flasher PPC V1)<br />
* 4110xxxxx (Flasher RX V1)<br />
<br />
All other models / hardware versions support limiting of programming cycles.<br />
<br />
=== Authorized flashing ===<br />
<br />
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.<br />
without the possibility to read out the Flasher contents via file access mode, FILE I/O functionality (J-Link Commander) or RS232 commands.<br />
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.<br />
<br />
==== Creating / Adding the secure area ====<br />
<br />
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.<br />
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.<br />
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><br />
<br />
[[File:CreateSecArea.jpg]]<br />
<br />
The following secure area related commands are available in J-Link Commander:<br><br />
<br />
* securearea create<br />
* securearea remove<br />
<br />
{{Note|1=When creating or removing the <tt>secure area</tt>, all configuration and data files being stored on the Flasher, are lost.<br />
Please make sure that they are not needed anymore, before adding / removing the security area.}}<br />
<br />
==== Moving files to the secure area ====<br />
<br />
Before moving configuration + data to the <tt>secure area</tt>, proper functionality of the setup should be tested in stand-alone mode.<br />
Once the setup is working as expected, do the following, to move the configuration + data into the <tt>secure area</tt>:<br><br />
<br />
* Start Flasher in file access mode (For more info, please refer to: [[#file access mode | file access mode]])<br />
<br />
[[File:FilesBeforeSecure.png]]<br />
<br />
* Create a folder "<tt>_SECURE</tt>"<br />
* Move all files that shall be moved to the <tt>secure area</tt>, into this folder<br />
<br />
[[File:FilesAfterSecure.png]]<br />
<br />
* 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.<br />
* Now Flasher can be used in stand-alone mode, as normal, but the files cannot be read back by the user / operator.<br />
<br />
==== Considerations to be taken when using the secure area ====<br />
<br />
When using the <tt>secure area</tt>, some things need to be considered:<br><br />
<br />
* All features like multiple file support, patch file support etc. can also be used when operating from the <tt>secure area</tt>.<br />
* 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>.<br />
* 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>.<br />
* 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.<br />
<br />
==== Required Flasher hardware version ====<br />
<br />
Older Flasher models do not support authorized flashing. The Flashers with the following serial number ranges do not support authorized flashing:<br><br />
<br />
* 1621xxxxx (Flasher ARM V2)<br />
* 1630xxxxx (Flasher ARM V3)<br />
* 4210xxxxx (Flasher PPC V1)<br />
* 4110xxxxx (Flasher RX V1)<br />
<br />
All other models / hardware versions support authorized flashing.<br />
<br />
=== Target interfaces ===<br />
<br />
The table below shows the supported target interfaces of the different Flasher models.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! Supported interfaces<br />
|-<br />
| Flasher PRO || JTAG, SWD<br />
|-<br />
| Flasher Compact || JTAG, SWD<br />
|-<br />
| Flasher ARM || JTAG, SWD<br />
|-<br />
| Flasher RX || JTAG<br />
|-<br />
| Flasher PPC || JTAG<br />
|-<br />
|}<br />
<br />
For more information about the target interfaces itself, please refer to:<br><br />
<br />
* ''UM08001, chapter "Working with J-Link and J-Trace", section "JTAG interface"''<br />
* ''UM08001, chapter "Working with J-Link and J-Trace", section "SWD interface"''<br />
<br />
=== Supported architectures ===<br />
<br />
Flasher supports programming of the internal flash of a large number of different microcontrollers.<br />
The number of supported devices is steadily growing. You can always find the latest list of supported devices on our website:<br><br />
<br />
''http://www.segger.com/supported-devices.html''<br />
<br />
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.<br />
Also the existence of the device may have confidential status, so it might not be mentioned as being supported in public releases yet.<br />
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.<br />
<br />
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).<br />
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.<br />
<br />
If a device is not supported, you can always contact us. We will be happy to provide you with an offer.<br />
<br />
==== External flashes ====<br />
<br />
In general our Flashers support programming of external flashes listed below:<br>(Can differ between Flasher models and hardware versions)<br />
<br />
* parallel NOR flash<br />
* SPI / QSPI flash<br>(see: ''[[SPI_support_by_Flasher_models]]'')<br />
* NAND flash<br />
* I<sup>2</sup>C EEPROM/Flash<br />
* FRAM<br />
<br />
If the parallel NOR flash device which is used is not CFI-compliant you have to select the flash device in J-Flash explicitly,<br />
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''.<br />
<br />
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.<br />
The J-Flash software comes with sample projects for ''Open Flashloader''.<br />
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''<br />
{{Note|1=Complete Information about ''Open Flashloaders'' can be found in our Wiki:<br>''[[Open_Flashloader]]''}}<br />
<br />
==== Cores ====<br />
<br />
===== Flasher ARM =====<br />
<br />
Flasher ARM supports and has been tested with the following cores, but should work with any ARM7/9, Cortex-M0/M1/M3/M4 core.<br />
If you experience problems with a particular core, do not hesitate to contact Segger.<br><br />
<br />
* ARM7TDMI (Rev 1)<br />
* ARM7TDMI (Rev 3)<br />
* ARM7TDMI-S (Rev 4)<br />
* ARM920T<br />
* ARM922T<br />
* ARM926EJ-S<br />
* ARM946E-S<br />
* ARM966E-S<br />
* Cortex-M0<br />
* Cortex-M1<br />
* Cortex-M3<br />
* Cortex-M4<br />
<br />
===== Flasher RX =====<br />
<br />
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><br />
<br />
* RX610<br />
* RX621<br />
* RX62N<br />
* RX62T<br />
<br />
===== Flasher PPC =====<br />
<br />
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.<br />
<br />
* e200z0<br />
<br />
===== Flasher PRO/Compact/Portable PLUS =====<br />
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/''.<br />
<br />
=== Programming multiple targets in parallel ===<br />
<br />
To program multiple targets in parallel there are the following possibilities:<br />
* Using a Flasher gang, or<br />
* Using multiple Flashers, each connecting to one CPU.<br />
<br />
Devices for gang programming are:<br />
* Flasher Hub-12 in conjunction with up to 12 Flasher (Compact). Please refer to [[UM08043_Flasher_Hub-12|Flasher Hub-12 user manual (UM08043_Flasher_Hub-12)]].<br />
* Flasher ATE; suitable for programming up to 10 targets in parallel. Please refer to [https://www.segger.com/downloads/flasher/UM08035 Flasher ATE user manual (UM08035_FlasherATE.pdf)].<br />
When using multiple flashers, this can be done with the J-Flash production programming software.<br />
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''<br />
<br />
=== Logfiles and Quality Management ===<br />
<br />
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:<br />
<source lang="c"><br />
SN: 1 - Failed<br />
SN: 1 - Failed<br />
SN: 2 - O.K. (931 ms)<br />
SN: 3 - O.K. (931 ms)<br />
SN: 4 - O.K. (933 ms)<br />
SN: 5 - O.K. (932 ms)<br />
</source><br />
If applicable, the logfile contains more detailed error messages. For example:<br />
<source lang="c"><br />
ERROR: Programming failed @ address 0x00000000 (1)<br />
ERROR: Cannot connect to CPU. Target interface speed too high?<br />
</source><br />
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:<br />
<source lang="c"><br />
Verify error config word area @<br />
config word<br />
config word read back<br />
Verify error flash area @<br />
data from file<br />
data read back<br />
</source><br />
{{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.}}<br />
<br />
== TCP Services ==<br />
This chapter describes the integrated TCP services.<br />
<br />
=== FTP Server ===<br />
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><br />
[[File:FTPServer.png]]<br />
<br />
==== Access data ====<br />
Anonymous access to the FTP server is limited to read-only access to the file system.<br><br />
For write access, special login credentials have to be used:<br><br />
<tt>Login: admin</tt><br><br />
<tt>Password: 1234</tt><br><br />
<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.<br />
It is not meant as a security feature.}}<br />
<br />
=== Web server ===<br />
<br />
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.<br />
For the network, the IP address settings can be changed and a nick name can be assigned to the device.<br><br />
<br />
Additionally, the web interface provides information about the status of the integrated operating system, the IP stack and the target hardware.<br />
<br />
== Remote control ==<br />
This chapter describes how to control the Flasher in standalone mode.<br />
<br />
=== Overview ===<br />
There are 3 ways to control Flasher operation:<br><br />
{| class="seggertable"<br />
! Type of control !! Description<br />
|-<br />
| Button || Programming operation starts when pressing the PROG-button. The LEDs serve as visible indicators.<br />
|-<br />
| Handshake || 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.<br />
|-<br />
| Terminal || Terminal communication via TELNET, RS232 or VCOM with the [[#ASCII command interface]]<br />
|}<br />
<br />
<br />
{{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.}}<br />
<br />
=== Handshake control ===<br />
<br />
Some Flasher models are equipped with additional hardware control functions that are connected to the SUBD9 male connector, normally used as an RS232 interface to the PC.<br />
These Flasher models can therefore be controlled remotely by automated testers without the need for a connection to a PC.<br />
<br />
The handshake control is available for the following Flashers:<br />
* Flasher ARM<br />
* Flasher PRO<br />
* Flasher Compact (via Flasher Hub and Flasher Hub-12 only)<br />
<br />
The following diagrams show the internal remote control circuitry of Flasher:<br><br />
<br />
[[File:FlasherRemotecontrol.png]]<br />
{| class="seggertable"<br />
|-<br />
! Pin No. !! Function !! Description<br />
|-<br />
| 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.<br />
|-<br />
| 4 || BUSY || As soon as the "Auto" function is started, BUSY becomes active, which means that transistor is switched OFF.<br />
|-<br />
| 5 || GND || Common Signal ground.<br />
|-<br />
| 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.<br />
|-<br />
|}<br />
[[File:FlasherRemoteSignal.png]]<br />
<br />
=== ASCII command interface ===<br />
<br />
==== Introduction ====<br />
<br />
Once set up using J-Flash, the Flasher can be driven by any application or just a simple terminal using ASCII commands.<br><br />
<br />
Every known command is acknowledged by the Flasher and then executed. After command execution, Flasher sends an ASCII reply message.<br><br />
<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}}<br />
<br />
==== General command and reply message format ====<br />
<br />
* Any ASCII command has to start with the start delimiter ''#''.<br />
* Any ASCII command has to end with simple carriage return ('\r', ASCII code 13).<br />
* Commands can be sent upper or lower case<br />
<br />
==== General usage ====<br />
<br />
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.<br />
<br />
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).<br />
<br />
==== Settings for ASCII interface via RS232 ====<br />
<br />
Flasher is driven via a RS232 serial port with the following interface settings:<br><br />
<br />
* 9600 baud<br />
* 8 data bits<br />
* no parity<br />
* 1 stop bit<br />
<br />
The baud rate can be changed by using the <tt>#BAUDRATE</tt> command.<br />
<br />
==== Settings for ASCII interface via Telnet ====<br />
<br />
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><br />
<br />
[[File:telnet_connection.gif]]<br />
<br />
==== Settings for ASCII interface via VCOM ====<br />
<br />
The same settings can be used for VCOM as for [[#Settings for ASCII interface via RS232|RS232]].<br />
<br />
{{Note|The performance also depends on the terminal application used on the PC.}}<br />
<br />
==== Commands and replies ====<br />
<br />
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><br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| Commands to the Flasher<br />
|-<br />
| <tt>#BAUDRATE <Baudrate></tt><br />
|-<br />
| <tt>#AUTO</tt><br />
|-<br />
| <tt>#AUTO PATCH</tt><br />
|-<br />
| <tt>#AUTO NOINFO</tt><br />
|-<br />
| <tt>#CANCEL</tt><br />
|-<br />
| <tt>#ERASE</tt><br />
|-<br />
| <tt>#PROGRAM</tt><br />
|-<br />
| <tt>#RESULT</tt><br />
|-<br />
| <tt>#SELECT <Filename></tt><br />
|-<br />
| <tt>#START</tt><br />
|-<br />
| <tt>#STATUS</tt><br />
|-<br />
| <tt>#VERIFY</tt><br />
|-<br />
| <tt>#READ</tt><br />
|-<br />
| <tt>#QUIT</tt><br />
|-<br />
| <tt>#VERBOSE <Level></tt><br />
|-<br />
!colspan="100%"| File I/O commands<br />
|-<br />
| <tt>#FCLOSE</tt><br />
|-<br />
| <tt>#FCRC</tt><br />
|-<br />
| <tt>#FDELETE <Filename></tt><br />
|-<br />
| <tt>#FFORMAT</tt><br />
|-<br />
| <tt>#FOPEN <Filename></tt><br />
|-<br />
| <tt>#FREAD <Offset>,<NumBytes></tt><br />
|-<br />
| <tt>#FSIZE</tt><br />
|-<br />
| <tt>#FWRITE <Offset>,<NumBytes>:<nowiki><Data></nowiki></tt><br />
|-<br />
| <tt>#FLIST</tt><br />
|-<br />
| <tt>#MKDIR <Dirname></tt><br />
|-<br />
!colspan="100%"| SecureArea commands<br />
|-<br />
| <tt>#HASSECUREAREA</tt><br />
|-<br />
| <tt>#SECUREAREA <action></tt><br />
|-<br />
!colspan="100%"| Replies from the Flasher<br />
|-<br />
| <tt>#ACK</tt><br />
|-<br />
| <tt>#NACK</tt><br />
|-<br />
| <tt>#OK</tt><br />
|-<br />
| <tt>#OK:<NumBytes>:<nowiki><Data></nowiki></tt><br />
|-<br />
| <tt>#OK:<Size></tt><br />
|-<br />
| <tt>#STATUS:</tt><br />
|-<br />
| <tt>#DONE</tt><br />
|-<br />
| <tt>#ERRxxx</tt><br />
|-<br />
|}<br />
<br />
===== Commands to the Flasher =====<br />
<br />
'''#AUTO'''<br><br />
The <tt>#AUTO</tt> command behaves exactly as the start button or external remote control input.<br><br />
<br />
Usually, the following command sequence will be performed when receiving the <tt>#AUTO</tt> command:<br><br />
<br />
* The Flasher erases the target CPU (if not blank)<br />
* The Flasher programs the target CPU<br />
* The Flasher verifies the target CPU<br />
<br />
Depending on the settings chosen in the '''Production''' tab in J-Flash, this sequence can differ from the one shown above.<br><br />
<br />
Finally, Flasher responds with<br><br />
<br />
* <tt>#OK</tt> if no error occurred<br />
* <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.<br />
<br />
During execution of the <tt>#AUTO</tt> command, Flasher automatically sends "status" messages via RS232 to reflect the state of execution.<br />
Typically during execution of <tt>#AUTO</tt> command, Flasher will reply the following sequence of messages:<br><br />
<br />
<tt>#ACK</tt><br><br />
<tt>#STATUS:INITIALIZING</tt><br><br />
<tt>#STATUS:CONNECTING</tt><br><br />
<tt>#STATUS:UNLOCKING</tt><br><br />
<tt>#STATUS:ERASING</tt><br><br />
<tt>#STATUS:PROGRAMMING</tt><br><br />
<tt>#STATUS:VERIFYING</tt><br><br />
<tt>#OK (Total 13.993s, Erase 0.483s, Prog 9.183s, Verify 2.514s)</tt><br><br />
<br />
'''#AUTO PATCH'''<br><br />
The <tt>#AUTO</tt> PATCH command allows patching of the content of the data to be programmed.<br><br />
<br />
Flasher responds with<br><br />
<br />
* <tt>#OK</tt> if no error occurred<br />
* <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.<br />
<br />
For further information about the usage of the <tt>#AUTO PATCH</tt> command please refer to [[#Patch file support | Patch file support]].<br />
<br />
'''#AUTO NOINFO'''<br><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><br />
<br />
The command ends with <tt>#OK</tt> or <tt>#ERRxxx</tt><br />
<br />
'''#BAUDRATE <Baudrate>'''<br><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><br />
<br />
If this command succeeds, Flasher responds with:<br><br />
<br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<br />
Otherwise it will respond with one of the following error messages:<br><br />
<br />
<tt>#ERR255: Invalid parameters</tt><br><br />
<tt>or</tt><br><br />
<tt>#ERR255: Baudrate is not supported</tt><br><br />
<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.<br />
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.}}<br />
<br />
'''#CANCEL'''<br><br />
This command can be sent to abort a running program. It may take a while until the current program is actually canceled.<br><br />
<br />
Flasher will respond with:<br><br />
<br />
<tt>#ERR007:CANCELED.</tt><br><br />
<br />
'''#ERASE'''<br><br />
This command can be sent to erase all selected target flash sectors.<br><br />
<br />
Flasher will reply the following sequence of messages:<br><br />
<br />
<tt>#ACK</tt><br><br />
<tt>#STATUS:INITIALIZING</tt><br><br />
<tt>#STATUS:CONNECTING</tt><br><br />
<tt>#STATUS:UNLOCKING</tt><br><br />
<tt>#STATUS:ERASING</tt><br><br />
<tt>#OK (Total 0.893s, Erase 0.483s)</tt><br><br />
<br />
'''#PROGRAM'''<br><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.<br />
<br />
'''#RESULT'''<br><br />
This command can be sent any time, even during other command execution. Flasher responds with the last result of the previously executed command.<br />
<br />
'''#SELECT <Filename>'''<br><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.<br />
<tt><Filename></tt> specifies the name of file pair without extensions (.CFG and .DAT) on the Flasher which should be selected. If you are<br />
using the universal flash programming mode, <tt><Filename></tt> specifies the full name of the .UNI file '''including''' the extension.<br />
Flasher saves the selected config and data file in the FLASHER.INI file. So this selection is remembered even between power-cycling Flasher.<br><br />
<br />
This may be verfy helpful in cases where several config and data files are stored on Flasher.<br />
The user can easily switch between these config and data files without connecting Flasher to a host.<br><br />
<br />
If this command succeeds, Flasher responds with:<br><br />
<br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<br />
Find below a sample sequence which shows how to use the <tt>#SELECT</tt> command:<br><br />
<br />
<tt>#SELECT ATSAM7_1 // ATSAM7_1.CFG and ATSAM7_1.DAT is selected</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<tt>#AUTO // Start auto programming</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#STATUS:INITIALIZING</tt><br><br />
<tt>#STATUS:CONNECTING</tt><br><br />
<tt>#STATUS:UNLOCKING</tt><br><br />
<tt>#STATUS:ERASING</tt><br><br />
<tt>#STATUS:PROGRAMMING</tt><br><br />
<tt>#STATUS:VERIFYING</tt><br><br />
<tt>#OK (Total 8.416s, Erase 0.005s, Prog 6.845s, Verify 0.959s)</tt><br><br />
<tt>#SELECT ATSAM7_2 // ATSAM7_2.CFG and ATSAM7_2.DAT is selected</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<tt>#AUTO // Start auto programming</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#STATUS:INITIALIZING</tt><br><br />
<tt>#STATUS:CONNECTING</tt><br><br />
<tt>#STATUS:UNLOCKING</tt><br><br />
<tt>#STATUS:ERASING</tt><br><br />
<tt>#STATUS:PROGRAMMING</tt><br><br />
<tt>#STATUS:VERIFYING</tt><br><br />
<tt>#OK (Total 8.632s, Erase 0.005s, Prog 7.051s, Verify 0.969s)</tt><br><br />
<br />
'''#START'''<br><br />
This command can be sent to start the application using the method configured in the J-Flash project.<br><br />
For U-Flash projects, however, the target application is not necessarily started. <br><br />
There is often a "start application" checkbox in the U-Flash settings which have to be set for this.<br />
<br />
Flasher will reply with the following sequence of messages:<br><br />
<br />
<tt>#ACK</tt><br><br />
<tt>#STATUS:INITIALIZING</tt><br><br />
<tt>#STATUS:CONNECTING</tt><br><br />
<tt>#OK (Total 1.148s)</tt><br><br />
<br />
'''#STATUS'''<br><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]].<br />
<br />
'''#VERIFY'''<br><br />
This command can used to verify the target flash content against the data stored in Flasher.<br />
<br />
'''#READ'''<br><br />
Only available for devices supported by U-Flash.<br><br />
This command can used to read out flash data.<br><br />
More information: [https://wiki.segger.com/Flasher/How_to_read_data_from_a_device_using_U-Flash How to read data using U-Flash]<br />
<br />
'''#QUIT'''<br><br />
This command can be used to terminate the active telnet connection from the server side (Flasher).<br />
The command provides an easy way to terminate the session from an automated script.<br />
It is not necessary to parse stdout and switch to local command mode to disconnect.<br />
Not implemented in the Flasher ATE or Flasher Hub.<br />
<br />
'''#VERBOSE <Level>'''<br><br />
This command can be used to change the verbosity level. <br><br />
* Verbosity level 0: Default. <br><br />
* Verbosity level 1: Provides some additional messages during the programming process.<br />
<br />
===== File I/O commands =====<br />
<br />
The ASCII interface of the Flasher also supports file I/O operations.<br />
<br />
The following file I/O commands are supported:<br><br />
<br />
'''#FCLOSE'''<br><br />
The <tt>#FCLOSE</tt> command closes the file on Flasher which was opened via <tt>#FOPEN</tt>.<br />
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><br />
<br />
A typical sequence when using the <tt>#FCLOSE</tt> command does look like as follows:<br><br />
<br />
<tt>#FCLOSE</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<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><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:No file opened</tt><br />
}}<br />
<br />
'''#FCRC'''<br><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>.<br />
The CRC will be also reported by J-Flash when downloading or saving files via J-Flash.<br><br />
<br />
A typical sequence when using the <tt>#FCRC</tt> command does look like as follows:<br><br />
<br />
<tt>#FCRC flasher.dat</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK:0x75BC855A</tt><br><br />
<br />
'''#FDELETE <Filename>'''<br><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><br />
<br />
A typical sequence when using the <tt>#FDELETE</tt> command does look like as follows:<br><br />
<br />
<tt>#FDELETE flasher.dat</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<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><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:Failed to delete file</tt><br />
}}<br />
<br />
'''#FFORMAT'''<br><br />
The <tt>#FFORMAT</tt> command is used to delete all files located in the public area of the Flasher's internal memory.<br />
<br />
{{Note|1=Please note that this command deletes all projects located in the public area. Deleted projects cannot be restored again.<br><br />
This command does not delete the Flasher firmware, neither does it delete files in the secure area.<br />
}}<br />
<br />
A typical sequence using the <tt>#FFORMAT</tt> command does look like as follows:<br><br />
<br />
<tt>#FFORMAT</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#DONE</tt><br><br />
<br />
'''#FOPEN <Filename>'''<br><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.<br />
If <tt><Filename></tt> can not be found on Flasher a new one will be created.<br><br />
<br />
A typical sequence using the <tt>#FOPEN</tt> command does look like as follows:<br><br />
<br />
<tt>#FOPEN flasher.dat</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<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><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:A file has already been opened</tt><br />
}}<br />
<br />
'''#FREAD <Offset>,<NumBytes>'''<br><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.<br />
<tt><NumBytes></tt> specifies the number of bytes which should be read.<br><br />
<br />
A typical sequence when using the <tt>#FREAD</tt> command does look like as follows:<br><br />
<br />
<tt>#FREAD 0,4</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK:04:466c6173</tt><br><br />
<br />
If the <tt>#FREAD</tt> command succeeds, Flasher will finally respond with a <tt>#OK:<NumBytes>:<nowiki><Data></nowiki></tt> reply message.<br />
For more information about the Flasher reply messages, please refer to [[#Replies from Flasher | Replies from Flasher]].<br><br />
<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><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:No file opened</tt>}}<br />
<br />
'''#FSIZE'''<br><br />
The <tt>#FSIZE</tt> command is used to get the size of the currently opened file on Flasher.<br><br />
<br />
A typical sequence when using the <tt>#FSIZE</tt> command does look like as follows:<br><br />
<br />
<tt>#FSIZE</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK:10 // file on flasher which is currently open, has a size of 16 bytes</tt><br><br />
<br />
If the <tt>#FSIZE</tt> command succeeds, Flasher will respond with a <tt>#OK:<Size></tt> reply message.<br />
For more information about the Flasher reply messages, please refer to [[#Replies from Flasher | Replies from Flasher]].<br><br />
<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><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:No file opened</tt>}}<br />
<br />
'''#FWRITE <Offset>,<NumBytes>:<nowiki><Data></nowiki>'''<br><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.<br />
<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.<br />
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><br />
<br />
<tt><Offset></tt> and <tt><NumBytes></tt> are expected in hexadecimal format.<br><br />
<br />
<tt>#FWRITE 0,200:<nowiki><Data></nowiki></tt><br><br />
<tt>#FWRITE 200,200:<nowiki><Data></nowiki></tt><br><br />
<br />
The data is expected in hexadecimal format (two hexadecimal characters per byte). The following example illustrates the use of <tt>#FWRITE</tt>:<br />
<br />
<tt>Data to be send: Hello !</tt><br><br />
<tt>ASCII values: 0x48, 0x65, 0x6C, 0x6C, 0x6F, 0x20, 0x21</tt><br><br />
<br />
<tt>#FWRITE 0,7:48656C6C6F2021</tt><br><br />
<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><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:No file opened</tt><br>}}<br />
<br />
'''#FLIST'''<br><br />
The <tt>#LIST</tt> command is used to list all files stored on the Flasher.<br><br />
<br />
A typical sequence using the <tt>#FLIST</tt> command does look like as follows:<br><br />
<br />
<tt>#FLIST</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>FLASHER.INI Size: 60</tt><br><br />
<tt>SERIAL.TXT Size: 3</tt><br><br />
<tt>FLASHER.LOG Size: 207</tt><br><br />
<tt>FOLDER (DIR)</tt><br><br />
<tt>FOLDER\\TEST1.CFG Size: 2048</tt><br><br />
<tt>FOLDER\\TEST1.DAT Size: 12288</tt><br><br />
<tt>#OK</tt><br><br />
<br />
'''#MKDIR <Dirname>'''<br><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><br />
<br />
A typical sequence using the <tt>#MKDIR</tt> command does look like as follows:<br><br />
<br />
<tt>#MKDIR folder</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<br />
{{Note|1=If the directory can not be created because of a bad <tt><Dirname></tt> argument, Flasher will respond with:<br><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:Failed to create directory</tt><br>}}<br />
<br />
===== Secure Area Commands =====<br />
<br />
'''#HASSECUREAREA'''<br><br />
The <tt>#HASSECUREAREA</tt> command checks if the Flasher is configured with a secure area.<br />
<br />
<tt>#RESULT:YES</tt> indicates the secure area is present, <tt>#RESULT:NO</tt> indicates no secure area is present.<br />
<br />
'''#SECUREAREA'''<br><br />
The <tt>#SECUREAREA <action></tt> command allows to create or remove the secure area on the Flasher.<br />
<br />
* the action <tt>CREATE</tt> creates the secure area.<br />
* the action <tt>REMOVE</tt> will remove the secure area.<br />
<br />
A typical sequence using the <tt>#SECUREAREA</tt> command does look like as follows:<br><br />
<br />
<tt>#SECUREAREA CREATE</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#DONE</tt><br><br />
<br />
{{Note|1=When creating or removing the <tt>secure area</tt>, all configuration and data files being stored on the Flasher, are lost.<br />
Please make sure that they are not needed anymore, before adding / removing the security area.}}<br />
<br />
<br />
<br />
===== Replies from Flasher =====<br />
<br />
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.<br />
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.<br />
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><br />
<br />
<tt>#OK (Total 13.993s, Erase 0.483s, Prog 9.183s, Verify 2.514s)</tt><br><br />
<br />
The following reply messages from Flasher are defined:<br><br />
<br />
'''#ACK'''<br><br />
Flasher replies with <tt>#ACK</tt> message on reception of any defined command before the command itself is executed.<br />
<br />
'''#NACK'''<br><br />
Flasher replies with <tt>#NACK</tt>, if an undefined command was received.<br />
<br />
'''#OK'''<br><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.<br />
<br />
'''#OK:<NumBytes>:<nowiki><Data></nowiki>'''<br><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.<br />
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).<br />
<br />
'''#OK:<Size>'''<br><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.<br />
<br />
'''#STATUS:'''<br><br />
The Flasher replies with its current state.<br><br />
<br />
The following status messages are currently defined:<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Message !! Description<br />
|-<br />
| <tt>#STATUS:READY</tt> || Flasher is ready to receive a new command.<br />
|-<br />
| <tt>#STATUS:CONNECTING</tt> || Flasher initializes connection to target CPU.<br />
|-<br />
| <tt>#STATUS:INITIALIZING</tt> || Flasher performs self check and internal init.<br />
|-<br />
| <tt>#STATUS:UNLOCKING</tt> || Unlocking flash sectors.<br />
|-<br />
| <tt>#STATUS:ERASING</tt> || Flasher is erasing the flash of the target device.<br />
|-<br />
| <tt>#STATUS:PROGRAMMING</tt> || Flasher is programming the flash of the target device.<br />
|-<br />
| <tt>#STATUS:VERIFYING</tt> || Flasher verifies the programmed flash contents.<br />
|-<br />
|}<br />
<br />
'''#ERRxxx'''<br><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><br />
<br />
Some error codes may be followed by colon and an additional error text.<br><br />
<br />
For example:<br><br />
<br />
<tt>#ERR007:CANCELED.</tt><br><br />
<br />
The error code numbers are described in the following table:<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Message !! Description<br />
|-<br />
| <tt>#ERR007</tt> || Flasher received <tt>#CANCEL</tt> command and has canceled the current operation.<br />
|-<br />
| <tt>#ERR008</tt> || Flasher is already busy with execution of previous command.<br />
|-<br />
| <tt>#ERR009</tt> || Failed to allocate memory.<br />
|-<br />
| <tt>#ERR010</tt> || Failed to open file.<br />
|-<br />
| <tt>#ERR011</tt> || Failed to read file.<br />
|-<br />
| <tt>#ERR012</tt> || Failed to write file.<br />
|-<br />
| <tt>#ERR013</tt> || Failed to delete file.<br />
|-<br />
| <tt>#ERR255</tt> || Undefined error occurred. This reply is followed by an error string.<br />
|-<br />
|}<br />
<br />
== Performance ==<br />
<br />
The following chapter lists programming performance of common flash devices andmicrocontrollers.<br />
<br />
=== Performance of MCUs with internal flash memory ===<br />
<br />
==== Flasher ARM ====<br />
<br />
The following table lists program and erase performance values of Flasher ARM for different controllers.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Microcontroller !! Size [kByte] !! Erase time [sec] !! Program time [sec] !! Verify time [sec] !! Total time [sec]<br />
|-<br />
| Analog Devices || 62 || 2.943 || 2.286 || 0.563 || 5.792<br />
|-<br />
| Atmel AT91SAM7S64 || 64 || --- || 3.488 || 0.438 || 3.926<br />
|-<br />
| Atmel AT91SAM7S256 || 256 || --- || 7.709 || 1.053 || 8.762<br />
|-<br />
| NXP LPC1768 || 512 || 3.740 || 8.559 || 5.092 || 17.391<br />
|-<br />
| NXP LPC2106 || 120 || 0.448 || 1.204 || 0.634 || 2.286<br />
|-<br />
| NXP LPC2129 || 248 || 0.449 || 2.916 || 1.347 || 4.712<br />
|-<br />
| NXP LPC2138 || 500 || 0.448 || 5.488 || 2.649 || 8.585<br />
|-<br />
| NXP LPC2148 || 500 || 0.448 || 5.632 || 2.721 || 8.801<br />
|-<br />
| NXP LPC2294 || 2048 || 0.808 || 15.976 || 9.669 || 26.453<br />
|-<br />
| NXP LPC2478 || 504 || 0.448 || 5.419 || 2.559 || 8.426<br />
|-<br />
| ST STM32F103ZE || 512 || 0.028 || 18.763 || 3.939 || 22.730<br />
|-<br />
| ST STR711 || 272 || 0.429 || 5.476 || 4.742 || 10.647<br />
|-<br />
| ST STR912 || 544 || 1.167 || 12.907 || 5.236 || 19.310<br />
|-<br />
| TI TMS470R1B1M || 1024 || 2.289 || 8.147 || 5.362 || 15.798<br />
|-<br />
|}<br />
<br />
==== Flasher PRO ====<br />
See Flasher ARM.<br />
<br />
==== Flasher Compact ====<br />
See Flasher ARM.<br />
<br />
==== Flasher RX ====<br />
<br />
The following table lists program and erase performance values of Flasher RX.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Microcontroller !! Size [kByte] !! Erase time [sec] !! Program time [sec] !! Verify time [sec] !! Total time [sec]<br />
|-<br />
| R5F56108 || 2.048 || 9.523 || 11.915 || 3.890 || 25.585<br />
|-<br />
|}<br />
<br />
==== Flasher PPC ====<br />
<br />
The following table lists program and erase performance values of Flasher PPC.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Microcontroller !! Size [kByte] !! Erase time [sec] !! Program time [sec] !! Verify time [sec] !! Total time [sec]<br />
|-<br />
| ST SPC560B50 || 576 || 4.747 || 4.159 || 1.929 || 10.917<br />
|-<br />
|}<br />
<br />
== Hardware ==<br />
<br />
This chapter gives an overview about Flasher specific hardware details,<br />
such as the pinouts and available adapters.<br />
<br />
=== Flasher ARM 20-pin JTAG/SWD Connector ===<br />
<br />
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.<br />
<br />
==== Pinout JTAG ====<br />
<br />
[[File:jtag_port_20pin.jpg]] <!-- LG xxxxxx image has been cropped to fit page --><br />
<br />
The following table lists the Flasher JTAG pinout.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! PIN !! SIGNAL !! TYPE !! Description<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 13 || TDO || Input || JTAG data output from target CPU. Typically connected to TDO of target CPU.<br />
|-<br />
| 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".<br />
|-<br />
| 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.<br />
|-<br />
| 19 || 5V-Target supply || Output || This pin is used to supply power to some eval boards. Typically left open on target hardware.<br />
|-<br />
|}<br />
<br />
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.<br />
<br />
==== Pinout SWD ====<br />
<br />
The 20-pin connector of Flasher is also compatible to ARM's Serial Wire Debug (SWD) interface.<br><br />
<br />
[[File:SWD_Port.jpg]] <!-- LG xxxxxx image has been cropped to fit page --><br />
<br />
The following table lists the J-Link / J-Trace SWD pinout.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! PIN !! SIGNAL !! TYPE !! Description<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 7 || SWDIO || I/O || Single bi-directional data pin.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 13 || SWO || Output || Serial Wire Output trace port. (Optional, not required for SWD communication.)<br />
|-<br />
| 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".<br />
|-<br />
| 17 || Not used || NC || This pin is not connected in J-Link.<br />
|-<br />
| 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.<br />
|-<br />
|}<br />
<br />
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.<br />
<br />
==== Target power supply ====<br />
<br />
Pin 19 of the connector can be used to supply power to the target hardware. Supply voltage is 5V, max. current is 400mA.<br />
The output current is monitored and protected against overload and short-circuit.<br><br />
<br />
Power can be controlled via the J-Link commander. The following commands are available to control power:<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Command !! Explanation<br />
|-<br />
| <tt>power on</tt> || Switch target power on<br />
|-<br />
| <tt>power off</tt> || Switch target power off<br />
|-<br />
| <tt>power on perm</tt> || Set target power supply default to "on"<br />
|-<br />
| <tt>power off perm</tt> || Set target power supply default to "off"<br />
|-<br />
|}<br />
<br />
=== Flasher RX 14-pin connector ===<br />
<br />
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.<br />
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.<br />
<br />
[[File:jtag_port_14pin.wmf]]<br />
<br />
The following table lists the Flasher RX 14-pin JTAG pinout.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Pin !! Signal !! Type !! Description<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 5 || TDO || Input || JTAG data output from target CPU. Typically connected to TDO on target CPU.<br />
|-<br />
| 6 || --- || NC || This pin is not connected to Flasher RX.<br />
|-<br />
| 7 || --- || NC || This pin is not connected to Flasher RX.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 10 || --- || NC || This pin is not connected to Flasher RX.<br />
|-<br />
| 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.<br />
|-<br />
| 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".<br />
|-<br />
|}<br />
<br />
* All pins marked NC are not connected to Flasher RX. Any signal can be applied here; Flasher RX will simply ignore such a signal.<br />
* Pins 2, 12, 14 are GND pins connected to GND in Flasher RX. They should also be connected to GND in the target system.<br />
<br />
==== Target power supply ====<br />
<br />
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.<br />
Power can be controlled via the J-Link commander. The following commands are available to control power:<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Command !! Explanation<br />
|-<br />
| <tt>power on</tt> || Switch target power on<br />
|-<br />
| <tt>power off</tt> || Switch target power off<br />
|-<br />
| <tt>power on perm</tt> || Set target power supply default to "on"<br />
|-<br />
| <tt>power off perm</tt> || Set target power supply default to "off"<br />
|-<br />
|}<br />
<br />
=== Flasher PPC 14-pin connector ===<br />
<br />
Flasher PPC itself has a 20-pin JTAG connector mounted but comes with a 14-pin adapter for PowerPC devices.<br><br />
<br />
[[File:JTAG_PPC_14pin_adapter.wmf]]<br />
<br />
The following table lists the Flasher PPC 14-pin JTAG pinout.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Pin !! Signal !! Type !! Description<br />
|-<br />
| 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.<br />
|-<br />
| 3 || TDO || Input || JTAG data output from target CPU. Typically connected to TDO on target CPU.<br />
|-<br />
| 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.<br />
|-<br />
| 7 || --- || NC || This pin is not connected to Flasher PPC.<br />
|-<br />
| 8 || --- || NC || This pin is not connected to Flasher PPC.<br />
|-<br />
| 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".<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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).<br />
|-<br />
|}<br />
<br />
* All pins marked NC are not connected to Flasher PPC. Any signal can be applied here; Flasher PPC will simply ignore such a signal.<br />
* 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.<br />
<br />
=== Target board design ===<br />
<br />
We strongly advise following the recommendations given by the chip manufacturer. These recommendations are normally in line with the recommendations.<br />
Please refer to the the appropriate tables depending on the core:<br><br />
<br />
* [[#Pinout JTAG | Pinout JTAG]]<br />
* [[#Pinout SWD | Pinout SWD]]<br />
* [[#Flasher RX 14-pin connector | Flasher RX 14-pin connector]]<br />
* [[#Flasher PPC 14-pin connector | Flasher PPC 14-pin connector]]<br />
<br />
In case of doubt you should follow the recommendations given by the semiconductor manufacturer.<br />
<br />
==== Pull-up/pull-down resistors ====<br />
<br />
Unless otherwise specified by developer's manual, pull-ups/pull-downs are recommended to be between 2.2 kOhms and 47 kOhms.<br />
<br />
==== RESET, nTRST ====<br />
<br />
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><br />
<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.<br />
(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.<br />
<br />
=== Adapters ===<br />
<br />
==== JTAG Isolator ====<br />
<br />
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.<br />
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><br />
<br />
[[File:JTAG_Isolator_Port.wmf]]<br />
<br />
===== Pinout =====<br />
<br />
The following table shows the target-side pinout of the J-Link JTAG Isolator.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Pin !! Signal !! Type !! Description<br />
|-<br />
| 1 || VCC || Output || The target side of the isolator draws power over this pin.<br />
|-<br />
| 2 || VCC || Output || The target side of the isolator draws power over this pin.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 13 || TDO || Input || JTAG data output from target CPU. Typically connected to TDO of target CPU.<br />
|-<br />
| 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".<br />
|-<br />
| 17 || N/C || N/C || This pin is not connected on the target side of the isolator.<br />
|-<br />
| 19 || N/C || N/C || This pin is not connected on the target side of the isolator.<br />
|-<br />
|}<br />
<br />
Pins 4, 6, 8, 10, 12, 14, 16, 18, 20 are connected to GND.<br />
<br />
===== Safety =====<br />
This isolator provides '''basic isolation''' only. '''Do not use with hazardous voltages without further protection measures to avoid risk of electrical shock and fire.'''<br />
<br />
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.<br />
<br />
==== J-Link Needle Adapter ====<br />
<br />
To connect to the J-Link OB via programming interface the ''J-Link Needle Adapter'' is recommended.<br><br />
<br />
[[File:J-Link_Needle_Adapter_500x.jpg]]<br />
<br />
Why to choose the J-Link Needle Adapter:<br><br />
<ol><br />
<li>No additional connector required on your PCB</li><br />
<li>Very small footprint</li><br />
<li>High reliability spring pins for secure connections</li><br />
<li>Designed with 3 locating pins, so the adapter can not be connected the wrong way</li><br />
<li>No external power supply required! The J-Link Needle Adapter comes with the option to power the target hardware via J-Link.</li><br />
</ol><br />
These features make the J-Link Needle Adapter the perfect solution for production purposes.<br><br />
<br />
The pinout of the J-Link Needle Adapter is based on the pinout of the needle adapter by Tag-Connect.<br />
Please note, that both pinouts are not identical since the J-Link Needle Adapter comes with a 5V-supply pin.<br><br />
<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><br />
<br />
Moreover, the two "legs" on each side of the connector guarantee a stable and secure contact between pins and the PCB.<br><br />
<br />
[[File:J-Link_Needle_Adapter_Connector_pins_360x.jpg]]<br />
[[File:J-Link_Needle_Adapter_Pinout.jpg]]<br />
<br />
The J-Link Needle Adapter can be connected to J-Link via the ''20-pin 0.1'' JTAG to a 10-pin needle connector''.<br />
<br />
=== How to determine the hardware version ===<br />
<br />
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.<br />
Flasher has the hardware version printed on the back label.<br><br />
<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).<br />
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><br />
<br />
[[File:FlasherARM_version.gif]]<br />
== Support and FAQs ==<br />
<br />
This chapter contains troubleshooting tips together with solutions for common problems which might occur when using Flasher.<br />
There are several steps you can take before contacting support.<br />
Performing these steps can solve many problems and often eliminates the need for assistance.<br />
This chapter also contains a collection of frequently asked questions (FAQs) with answers.<br />
<br />
=== Contacting support ===<br />
<br />
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.<br />
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><br />
<br />
If you need to contact support, send the following information to<br><br />
''support@segger.com''<br><br />
<br />
* A detailed description of the problem<br />
* Flasher serial number<br />
* Information about your target hardware (processor, board, etc.).<br />
* <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]].<br />
<br />
Flasher is sold directly by SEGGER.<br />
<br />
=== Frequently Asked Questions ===<br />
<br />
'''Maximum JTAG speed'''<br />
{|<br />
|-<br />
| '''Q:''' || What is the maximum JTAG speed supported by Flasher?<br />
|-<br />
| '''A:''' || Flasher's maximum supported JTAG speed is 12MHz.<br />
|}<br />
<br />
'''Maximum download speed'''<br />
{|<br />
|-<br />
| '''Q:''' || What is the maximum download speed?<br><br />
|-<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.<br />
|}<br />
== Background information ==<br />
<br />
This chapter provides background information about flash programming in general. It<br />
also provides information about how to replace the firmware of Flasher manually.<br />
<br />
=== Flash programming ===<br />
<br />
Flasher comes with a DLL, which allows - amongst other functionalities - reading and writing RAM, CPU registers, starting and stopping the CPU, and setting breakpoints.<br />
<br />
==== How does flash programming via Flasher work? ====<br />
<br />
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.<br />
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.<br />
Different flash chips have different programming algorithms;the programming algorithm also depends on other things,<br />
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).<br />
The RAM code requires data to be programmed into the flash memory. The data is supplied by downloading it to RAM.<br />
<br />
==== Data download to RAM ====<br />
<br />
The data (or part of it) is downloaded to another part of the RAM of the target system.<br />
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.<br />
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.<br />
This process may have to be repeated until the entire data is programmed into the flash.<br />
<br />
==== Available options for flash programming ====<br />
<br />
In general, there are two possibilities in order to use Flasher for flash programming:<br><br />
<br />
* Using Flasher stand-alone to program the target flash memory (stand-alone mode)<br />
* Using Flasher in combination with J-Flash to program the target flash memory (Flasher in "PC-based mode")<br />
<br />
===== Using Flasher in stand-alone mode =====<br />
<br />
In order to use the Flasher in stand-alone mode, it has to be configured first.<br />
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]].<br />
<br />
===== J-Flash - Complete flash programming solution =====<br />
<br />
J-Flash is a stand-alone Windows application, which can read / write data files and program the flash in almost any ARM system.<br />
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''.<br />
<br />
==== How does the universal flash programming work? ====<br />
<br />
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><br />
<br />
Universal flash programming is available only for stand-alone mode.<br />
== Glossary ==<br />
<br />
This chapter describes important terms used throughout this manual.<br />
<br />
'''Big-endian'''<br><br />
Memory organization where the least significant byte of a word is at a higher address than the most significant byte. See Little-endian.<br />
<br />
'''Cache cleaning'''<br><br />
The process of writing dirty data in a cache to main memory.<br />
<br />
'''Coprocessor'''<br><br />
An additional processor that is used for certain operations, for example, for floating-point math calculations, signal processing, or memory management.<br />
<br />
'''Dirty data'''<br><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.<br />
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.<br />
<br />
'''Halfword'''<br><br />
A 16-bit unit of information.<br />
<br />
'''Host'''<br><br />
A computer which provides data and other services to another computer. Especially, a computer providing debugging services to a target being debugged.<br />
<br />
'''ICache'''<br><br />
Instruction cache.<br />
<br />
'''ID'''<br><br />
Identifier.<br />
<br />
'''IEEE 1149.1'''<br><br />
The IEEE Standard which defines TAP. Commonly (but incorrectly) referred to as JTAG.<br />
<br />
'''Image'''<br><br />
An executable file that has been loaded onto a processor for execution.<br />
<br />
'''Instruction Register'''<br><br />
When referring to a TAP controller, a register that controls the operation of the TAP.<br />
<br />
'''IR'''<br><br />
See Instruction Register.<br />
<br />
'''Joint Test Action Group (JTAG)'''<br><br />
The name of the standards group which created the IEEE 1149.1 specification.<br />
<br />
'''Little-endian'''<br><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.<br />
<br />
'''Memory coherency'''<br><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.<br />
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.<br />
<br />
'''Memory management unit (MMU)'''<br><br />
Hardware that controls caches and access permissions to blocks of memory, and translates virtual to physical addresses.<br />
<br />
'''Memory Protection Unit (MPU)'''<br><br />
Hardware that controls access permissions to blocks of memory. Unlike an MMU, a MPU does not translate virtual addresses to physical addresses.<br />
<br />
'''RESET'''<br><br />
Abbreviation of System Reset. The electronic signal which causes the target system other than the TAP controller to be reset.<br />
This signal is also known as "nSRST" "nSYSRST", "nRST", or "nRESET" in some other manuals. See also nTRST.<br />
<br />
'''nTRST'''<br><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.<br />
<br />
'''Open collector'''<br><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.<br />
<br />
'''Processor Core'''<br><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.<br />
It excludes optional coprocessors, caches, and the memory management unit.<br />
<br />
'''Remapping'''<br><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.<br />
<br />
'''RTOS'''<br><br />
Real Time Operating System.<br />
<br />
'''TAP Controller'''<br><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.<br />
<br />
'''Target'''<br><br />
The actual processor (real silicon or simulated) on which the application program is running.<br />
<br />
'''TCK'''<br><br />
The electronic clock signal which times data on the TAP data lines TMS, TDI, and TDO.<br />
<br />
'''TDI'''<br><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.<br />
<br />
'''TDO'''<br><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.<br />
<br />
'''Test Access Port (TAP)'''<br><br />
The port used to access a device's TAP Controller. Comprises TCK, TMS, TDI, TDO, and nTRST (optional).<br />
<br />
'''Transistor-transistor logic (TTL)'''<br><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.<br />
<br />
'''Word'''<br><br />
A 32-bit unit of information. Contents are taken as being an unsigned integer unless otherwise stated.<br />
== Literature and references ==<br />
This chapter lists documents, which we think may be useful to gain a deeper understanding of technical details.</div>JanBhttps://wiki.segger.com/index.php?title=UM08022_Flasher&diff=17451UM08022 Flasher2024-01-16T11:26:59Z<p>JanB: /* File system */</p>
<hr />
<div><!---<br />
General TBD:<br />
- LG: Right now - EVERYTHING<br />
===========================================<br />
--------------------[more specific, but on multiple locations]<br />
- check if all emphasis (bold, tt, blue, etc ) have made it into the new version<br />
- Add Information -> Additional information<br />
- use of the term free-of-charge utility/tool etc<br />
- check compliant to DocStandards_Rules.txt<br />
- Remove everything regarding to Kickstarter versions? eventually create a chapter Legacy -> Kickstarter version were available for hw version 5-x (200x-200x)...[..]<br />
- 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.<br />
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.<br />
- if week keep the IDE specific stuff in the manual, add Ozone, ES and J-Link Commander were no mentioned.<br />
- IDE specifics move into wiki confirmed by Alex<br />
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)<br />
- check all sections regarding licensing<br />
- Check compliance of J-Link emDocs with typographic conventions described in AboutThisDocument.emDoc. What should be altered? e.g. references<br />
- use uref at all (not blue)?<br />
- search and decide where to use \ref (ref with page number)<br />
- why is \ref (no single "option" \uref is more basic as \ref.....)<br />
- in text, use either \ref or \iref instead of \uref<br />
- in old manual, \H3 started on a new page (not per default, but set manually for api tables etc...)<br />
- move used old images and source files (visio etc) via svn (currently copied)<br />
--------------------[grammar / vocabulary discussion]<br />
- Product names<br />
-- Use of SEGGEPROBE in this document?<br />
- use license over licence<br />
- commandline or command-line?<br />
- toolchain or tool chain?<br />
- crossreference/cross-reference/cross reference?<br />
- overcurrent?<br />
- double words?<br />
- frontend?<br />
- Unit: Kbytes, KBytes, V, mV.... 9V or 9 V? Create rule in Vocabulary<br />
- baudrate or baud rate?<br />
- stackpointer or stack pointer<br />
- check where we should replace abbreviations with the long form (e.h. "milliseconds" instead of "ms")<br />
- config or configuration<br />
- filepointer or file pointer?<br />
--------------------[J-Link dep. specific]<br />
- J-Link command strings or J-Link Command strings or J-Link Command Strings<br />
- J-Link settings file or...<br />
- J-Link control panel or ......<br />
- J-Link script files or...<br />
---><br />
Flasher is a programming tool for microcontrollers with on-chip or external flash memory.<br />
Flasher is designed for programming flash targets with the J-Flash software or stand-alone.<br />
In addition to that Flasher can also be used as a regular J-Link. For more information about J-Link in general,<br />
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].<br />
<br />
<div class="toclimit-2"><br />
__TOC__<br />
</div><br />
<br />
== Flasher Software and Documentation Pack ==<br />
The Flasher Software and Documentation Pack, available for download on the [https://www.segger.com/downloads/flasher#FlasherSoftwareAndDocumentationPack SEGGER homepage], includes applications to be used with Flasher and in some cases with J-Link and J-Trace.<br><br />
It also comes with USB-drivers for J-Link, J-Trace and Flasher.<br />
<br />
=== Software overview ===<br />
{| class="wikitable"<br />
|-<br />
! Software !! Description<br />
|-<br />
| [[J-Link Configurator|Flasher Configurator]] || GUI-based configuration tool for Flasher. Allows configuration of USB identification as well as TCP/IP identification of Flashers.<br />
|-<br />
| [[FlasherControl|Flasher Control]] || Command-line tool to connect to the Flasher's command-line interface via USB.<br />
|-<br />
| [[J-Flash]] || Flash programming application.<br />
|-<br />
| [[J-Flash SPI]] || (Q)SPI flash programming application.<br />
|-<br />
| [[J-Link Commander]] || Command-line tool with basic functionality for target analysis.<br />
|-<br />
| [[J-Link Registration]] || SEGGER J-Link Registration utility to register your SEGGER product such as a J-Link, J-Trace or Flasher.<br />
|-<br />
| [[JTAGLoad]] || Command line tool that opens an svf file and sends the data in it via J-Link / J-Trace or Flasher to the target.<br />
|-<br />
| [https://www.segger.com/downloads/flasher/UM08037.pdf U-Flash] || Tool for creating standalone Flasher projects.<br />
|}<br />
<br />
== Flasher overview ==<br />
Flasher connects to a PC using the USB/Ethernet/RS232 interface (what host interfaces are available depends on the Flasher model),<br />
running Windows, Linux & MacOS. In stand-alone mode,<br />
Flasher can be driven by the start/stop button, or via the RS232 interface (handshake control or ASCII interface).<br />
Flasher always has a 20-pin connector, which target interfaces are supported depends on the Flasher model:<br />
* Flasher ARM: JTAG and SWD are supported.<br />
* Flasher RX: JTAG is supported. Flasher comes with additional 14-pin RX adapter<br />
* Flasher PPC: JTAG is supported. Flasher comes with additional 14-pin PPC adapter.<br />
* Flasher PRO: JTAG and SWD are supported.<br />
* Flasher Compact: JTAG and SWD are supported.<br />
<br />
=== Features of Flasher ARM/PPC/RX/PRO ===<br />
* Three boot modes: PC-based mode, stand-alone mode, file access mode<br />
* Stand-alone JTAG/SWD programmer (Once set up, Flasher can be controlled without the use of PC program)<br />
* No power supply required, powered through USB<br />
* Supports internal and external flash devices<br />
* 128 MB memory for storage of target program<br />
* Can be used as J-Link (emulator) with a download speed of up to 720 Kbytes/second<br />
* Data files can updated via USB/Ethernet (using the J-Flash software), via FTP, via RS232 or via the file access mode of Flasher<br />
<br />
{| class="seggertable"<br />
|-<br />
! Flasher model !! Supported cores !! Supported target interfaces !! Flash programming speed (depending on target hardware)<br />
|-<br />
| Flasher ARM || ARM7/ARM9/Cortex-M || JTAG, SWD || between 170 and 300 Kbytes/second<br />
|-<br />
| Flasher RX || Renesas RX610, RX621, RX62N, RX62T || JTAG || between 30-300 Kbytes/second<br />
|-<br />
| Flasher PPC || Power PC e200z0 || JTAG || up to 138 Kbytes/second<br />
|-<br />
| Flasher PRO || ARM7/ARM9/Cortex-M Renesas RX610, RX621, RX62N, RX62T Power PC e200z0 || JTAG, SWD || between 30-300 Kbytes/ second<br />
|-<br />
|}<br />
<br />
==== Features of Flasher Compact ====<br />
<br />
* Three boot modes: PC-based mode, stand-alone mode, file access mode<br />
* Stand-alone JTAG/SWD programmer (Once set up, Flasher can be controlled without the use of PC program)<br />
* No power supply required, powered through USB<br />
* Supports internal and external flash devices<br />
* 128 MB memory for storage of target program<br />
* Can be used as J-Link (emulator) with a download speed of up to 720 Kbytes/second<br />
* Data files can updated via USB/Ethernet (using the J-Flash software) or via the file access mode of Flasher<br />
<br />
{| class="seggertable"<br />
|-<br />
! Flasher model !! Supported cores !! Supported target interfaces !! Flash programming speed (depending on target hardware)<br />
|-<br />
| Flasher ARM || ARM7/ARM9/Cortex-M || JTAG, SWD || between 170 and 300 Kbytes/second<br />
|-<br />
| Flasher RX || Renesas RX610, RX621, RX62N, RX62T || JTAG || between 30-300 Kbytes/second<br />
|-<br />
| Flasher PPC || Power PC e200z0 || JTAG || up to 138 Kbytes/second<br />
|-<br />
| Flasher Compact || ARM7/ARM9/Cortex-M Renesas RX610, RX621, RX62N, RX62T Power PC e200z0 || JTAG, SWD || between 30-300 Kbytes/ second<br />
|-<br />
|}<br />
<br />
==== Features of Flasher Portable/Flasher Portable PLUS ====<br />
<br />
* Stand-alone in-circuit-programmer (Once set up, Flasher can be controlled without the use of a PC program)<br />
* Powered by an internal rechargeable battery (standard batteries for Flasher Portable), no Laptop or external power supply required.<br />
* Multiple firmware images can be stored on Flasher<br />
* 128 MB memory for storage of target program<br />
* Flasher Portable PLUS supports a simple selection of up to 99 firmware images via buttons (since V7.90)<br />
* Supported CPUs: ARM Cortex, Legacy ARM7/9, Renesas RX, Freescale PowerPC<br />
* Supports internal and external flash<br />
* Free software updates<ref name="legitimateOwned" />, 1 year of support<br />
* Data files can be updated via the file access mode functionality or via J-Flash<br />
* Programming speed between 30-300 Kbytes/second (actual speed depends on target hardware)<br />
{{Note|1=Ethernet and RS232 as host interface are not available for Flasher Portable}}<br />
<references><br />
<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.<br />
As a legitimate owner of a SEGGER Flasher, you can always download the latest software free of charge.<br />
Though not planned and not likely, we reserve the right to change this policy.<br />
Note that older models may not be supported by newer versions of the software.<br />
Typically, we support older models with new software at least 3 years after end of life.<br />
</ref><br />
</references><br />
<br />
{| class="seggertable"<br />
|-<br />
! Supported cores !! Supported target interfaces !! Flash programming speed (depending on target hardware)<br />
|-<br />
| ARM7/ARM9/Cortex-M || JTAG, SWD || between 30-300 Kbytes/second<br />
|-<br />
| Renesas RX610, RX621, RX62N, RX62T || JTAG || between 170 and 300 Kbytes/second<br />
|-<br />
| Power PC e200z0 || JTAG || up to 138 Kbytes/second<br />
|-<br />
|}<br />
<br />
==== Working environment ====<br />
<br />
'''General'''<br><br />
The Flasher can operate from a PC with an appropriate software like J-Flash or in stand-alone mode.<br />
<br />
'''Host System'''<br><br />
IBM PC/AT or compatible CPU: 486 (or better) with at least 128MB of RAM,<br />
running Windows, Linux & MacOS. It needs to have a USB, Ethernet or RS232 interface available for communication with Flasher.<br />
<br />
'''Power supply'''<br><br />
Flasher Portable: 3x standard AAA batteries or 5V DC, min. 100 mA via USB connector.<br />
<br />
Flasher Portable PLUS: internal rechargeable 680mAh Li-Ion battery, min. 100 mA via USB connector.<br />
<br />
Other Flashers: 5V DC, min. 100 mA via USB connector.<br />
<br />
'''Installing Flasher PC-software'''<br><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><br />
More information about the package you can find in the similar [[J-Link Software and Documentation Pack]].<br><br />
The package includes U-Flash and J-Flash, the main tools for flashing targets:<br />
* J-Flash : J-Flash User Guide ([https://wiki.segger.com/UM08003_JFlash UM08003_JFlash.pdf]).<br />
* U-Flash : U-Flash User Guide ([https://www.segger.com/downloads/flasher/UM08037.pdf UM08037_UniversalFlashLoader.pdf]).<br />
<br />
=== Specifications ===<br />
<br />
<br />
==== Specifications for Flasher ARM ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Windows, Linux & MacOS<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C<br />
|-<br />
| Storage Temperature || -20 °C ... +60 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
!colspan="100%"| Mechanical<br />
|-<br />
| Size (without cables) || 121mm x 66mm x 30mm<br />
|-<br />
| Weight (without cables) || 119g<br />
|-<br />
!colspan="100%"| Available interfaces<br />
|-<br />
| USB Host interface || USB 2.0, full speed<br />
|-<br />
| Ethernet Host interface || 10/100 MBit<br />
|-<br />
| RS232 Host interface || RS232 9-pin<br />
|-<br />
| Target interface || JTAG 20-pin (14-pin adapter available)<br />
|-<br />
!colspan="100%"| JTAG Interface, Electrical<br />
|-<br />
| Power Supply || USB powered, 100mA for Flasher ARM. 500 mA if target is powered by Flasher ARM<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| Target supply voltage || Supply voltage is 5V, max.<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6 <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Max. JTAG speed || up to 12MHz<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
===== Flasher ARM download speed =====<br />
<br />
The following table lists the Flasher ARM performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! ARM7 memory download<br />
|-<br />
| Flasher ARM || 720 Kbytes/s (12MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
<br />
==== Specifications for Flasher RX ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Windows, Linux & MacOS<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C<br />
|-<br />
| Storage Temperature || -20 °C ... +60 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
!colspan="100%"| Mechanical<br />
|-<br />
| Size (without cables) || 121mm x 66mm x 30mm<br />
|-<br />
| Weight (without cables) || 119g<br />
|-<br />
!colspan="100%"| Available interfaces<br />
|-<br />
| USB Host interface || USB 2.0, full speed<br />
|-<br />
| Ethernet Host interface || 10/100 MBit<br />
|-<br />
| RS232 Host interface || RS232 9-pin<br />
|-<br />
| Target interface || JTAG 20-pin (shipped with 14-pin adapter for Renesas RX)<br />
|-<br />
!colspan="100%"| JTAG Interface, Electrical<br />
|-<br />
| Power Supply || USB powered, 100mA for Flasher RX. 500 mA if target is powered by Flasher RX<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| 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)<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6 <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Max. JTAG speed || up to 12MHz<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
===== Flasher RX download speed =====<br />
<br />
The following table lists the Flasher RX performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! Flasher RX600 series memory download<br />
|-<br />
| Flasher RX || 720 Kbytes/s (12MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
<br />
==== Specifications for Flasher PPC ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Windows, Linux & MacOS<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C<br />
|-<br />
| Storage Temperature || -20 °C ... +60 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
!colspan="100%"| Mechanical<br />
|-<br />
| Size (without cables) || 121mm x 66mm x 30mm<br />
|-<br />
| Weight (without cables) || 119g<br />
|-<br />
!colspan="100%"| Available interfaces<br />
|-<br />
| USB Host interface || USB 2.0, full speed<br />
|-<br />
| Ethernet Host interface || 10/100 MBit<br />
|-<br />
| RS232 Host interface || RS232 9-pin<br />
|-<br />
| Target interface || JTAG 20-pin (shipped with 14-pin adapter for Renesas PPC)<br />
|-<br />
!colspan="100%"| JTAG Interface, Electrical<br />
|-<br />
| Power Supply || USB powered, 100mA for Flasher PPC. 500 mA if target is powered by Flasher PPC<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| Target supply voltage || Supply voltage is 5V, max.<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6 <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Max. JTAG speed || up to 12MHz<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
===== Flasher RX download speed =====<br />
<br />
The following table lists the Flasher PPC performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! Memory download<br />
|-<br />
| Flasher PPC || 530 Kbytes/s (8 MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
<br />
==== Specifications for Flasher PRO ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Windows, Linux & MacOS<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C<br />
|-<br />
| Storage Temperature || -20 °C ... +60 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
!colspan="100%"| Mechanical<br />
|-<br />
| Size (without cables) || 121mm x 66mm x 30mm<br />
|-<br />
| Weight (without cables) || 119g<br />
|-<br />
!colspan="100%"| Available interfaces<br />
|-<br />
| USB Host interface || USB 2.0, full speed<br />
|-<br />
| Ethernet Host interface || 10/100 MBit<br />
|-<br />
| RS232 Host interface || RS232 9-pin<br />
|-<br />
| Target interface || JTAG 20-pin (14-pin adapter available)<br />
|-<br />
!colspan="100%"| JTAG Interface, Electrical<br />
|-<br />
| Power Supply || USB powered, 100mA for Flasher PRO. 500 mA if target is powered by Flasher PRO<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| Target supply voltage || Supply voltage is 5V, max.<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6 <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Max. JTAG speed || up to 12MHz<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
<br />
===== Supported CPU cores =====<br />
<br />
The Flasher PRO supports the following CPU cores:<br />
<br />
'''ARM Cortex'''<br><br />
* Cortex-A5<br />
* Cortex-A8<br />
* Cortex-A9<br />
* Cortex-R4<br />
* Cortex-R5<br />
* Cortex-M0<br />
* Cortex-M0+<br />
* Cortex-M1<br />
* Cortex-M3<br />
* Cortex-M4<br />
<br />
'''ARM (legacy cores)'''<br><br />
* ARM720T<br />
* ARM7TDMI<br />
* ARM7TDMI-S<br />
* ARM920T<br />
* ARM922T<br />
* ARM926EJ-S<br />
* ARM946E-S<br />
* ARM966E-S<br />
* ARM1136JF-S<br />
* ARM1136J-S<br />
* ARM1156T2-S<br />
* ARM1156T2F-S<br />
* ARM1176JZ-S<br />
* ARM1176JZF<br />
* ARM1176JZF-S<br />
<br />
'''Renesas RX'''<br><br />
* RX111<br />
* RX210<br />
* RX220<br />
* RX21A<br />
* RX610<br />
* RX621<br />
* RX62G<br />
* RX62N<br />
* RX62T<br />
* RX630<br />
* RX631<br />
* RX63N<br />
* RX63T<br />
<br />
'''Freescale Power PC'''<br><br />
* e200z0<br />
<br />
===== Supported Target interfaces =====<br />
<br />
The Flasher PRO supports the following target interfaces:<br />
<br />
* JTAG<br />
* SWD<br />
* FINE<br />
* SPD<br />
<br />
===== Flasher PRO download speed =====<br />
<br />
The following table lists the Flasher PRO performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! ARM7 memory download<br />
|-<br />
| Flasher PRO || 720 Kbytes/s (12MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
<br />
==== Specifications for Flasher Compact ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Microsoft Windows (x86/x64)<br>Linux (x86/x64/Arm)<br>macOS (x86/Apple M1)<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C<br />
|-<br />
| Storage Temperature || -20 °C ... +65 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
| Size (without cables) || 70mm x 45mm x 18mm<br />
|-<br />
| Weight (without cables) || 40g<br />
|-<br />
| USB Host interface || USB 2.0 (Hi-Speed); Micro USB<br />
|-<br />
| Target interface || JTAG 20-pin (14-pin adapter available)<br />
|-<br />
| Power Supply || USB powered, 130mA (idle)<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| Target supply voltage || Supply voltage is 5V, max.<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
| Supported target interfaces || SPI, QSPI, 8051 C2, cJTAG, FINE, ICSP, IIC, ISP, JTAG, PDI, SPD, SWD, SWIM, UART, UPDI<br />
|-<br />
| Serial transfer rate between Flasher Compact and target || Up to 50 MHz (Depending on target interface)<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6 <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
===== Supported CPU cores =====<br />
<br />
The Flasher Compact supports the following CPU cores:<br />
'''ARM Cortex'''<br><br />
* Cortex-A5<br />
* Cortex-A8<br />
* Cortex-A9<br />
* Cortex-R4<br />
* Cortex-R5<br />
* Cortex-M0<br />
* Cortex-M0+<br />
* Cortex-M1<br />
* Cortex-M3<br />
* Cortex-M4<br />
<br />
'''ARM (legacy cores)'''<br><br />
* ARM720T<br />
* ARM7TDMI<br />
* ARM7TDMI-S<br />
* ARM920T<br />
* ARM922T<br />
* ARM926EJ-S<br />
* ARM946E-S<br />
* ARM966E-S<br />
* ARM1136JF-S<br />
* ARM1136J-S<br />
* ARM1156T2-S<br />
* ARM1156T2F-S<br />
* ARM1176JZ-S<br />
* ARM1176JZF<br />
* ARM1176JZF-S<br />
<br />
'''Renesas RX'''<br><br />
* RX111<br />
* RX210<br />
* RX220<br />
* RX21A<br />
* RX610<br />
* RX621<br />
* RX62G<br />
* RX62N<br />
* RX62T<br />
* RX630<br />
* RX631<br />
* RX63N<br />
* RX63T<br />
<br />
'''Freescale Power PC'''<br><br />
* e200z0<br />
<br />
===== Flasher Compact download speed =====<br />
<br />
The following table lists the Flasher Compact performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! ARM7 memory download<br />
|-<br />
| Flasher Compact || 720 Kbytes/s (12MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
<br />
==== Specifications for Flasher Portable PLUS ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Windows, Linux & MacOS<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C (normal operation)<br>+5 °C ... +45 °C (battery charging)<br />
|-<br />
| Storage Temperature || -20 °C ... +45 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
| 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)<br />
|-<br />
| Charging via USB || 70 minutes (at 1A charging current)<br />
|-<br />
!colspan="100%"| Mechanical<br />
|-<br />
| Size (without cables) || 126mm x 70mm x 28mm<br />
|-<br />
| Weight (without cables) || 140g<br />
|-<br />
!colspan="100%"| Available interfaces<br />
|-<br />
| USB Host interface || USB 2.0<br />
|-<br />
| Target interface || Standard 20-pin 0.1" connector (Adapters available).<br />
|-<br />
!colspan="100%"| Target Interface, Electrical<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| Target supply voltage || Supply voltage is 4.5V, max. (depends on the current battery voltage).<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6 <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Max. JTAG speed || up to 12MHz<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
===== Supported CPU cores =====<br />
<br />
The Flasher Portable PLUS supports the following CPU cores:<br />
<br />
'''ARM Cortex'''<br><br />
* Cortex-A5<br />
* Cortex-A8<br />
* Cortex-A9<br />
* Cortex-R4<br />
* Cortex-R5<br />
* Cortex-M0<br />
* Cortex-M0+<br />
* Cortex-M1<br />
* Cortex-M3<br />
* Cortex-M4<br />
<br />
'''ARM (legacy cores)'''<br><br />
* ARM720T<br />
* ARM7TDMI<br />
* ARM7TDMI-S<br />
* ARM920T<br />
* ARM922T<br />
* ARM926EJ-S<br />
* ARM946E-S<br />
* ARM966E-S<br />
* ARM1136JF-S<br />
* ARM1136J-S<br />
* ARM1156T2-S<br />
* ARM1156T2F-S<br />
* ARM1176JZ-S<br />
* ARM1176JZF<br />
* ARM1176JZF-S<br />
<br />
'''Renesas RX'''<br><br />
* RX111<br />
* RX210<br />
* RX220<br />
* RX21A<br />
* RX610<br />
* RX621<br />
* RX62G<br />
* RX62N<br />
* RX62T<br />
* RX630<br />
* RX631<br />
* RX63N<br />
* RX63T<br />
<br />
'''Freescale Power PC'''<br><br />
* e200z0<br />
<br />
===== Supported Target interfaces =====<br />
<br />
The Flasher Portable PLUS supports the following target interfaces:<br />
* JTAG<br />
* SWD<br />
* FINE<br />
* SPD<br />
<br />
===== Flasher Portable PLUS download speed =====<br />
<br />
The following table lists the Flasher Portable PLUS performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! ARM7 memory download<br />
|-<br />
| Flasher PRO || 720 Kbytes/s (12MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
<br />
==== Specifications for Flasher Portable ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Windows, Linux & MacOS<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C<br />
|-<br />
| Storage Temperature || -20 °C ... +65 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
| Power Supply || a) USB powered, 100mA for Flasher Portable. 500 mA if target is powered by Flasher Portable<br>b) Batteries powered (3xAAA)<br />
|-<br />
!colspan="100%"| Mechanical<br />
|-<br />
| Size (without cables) || 130mm x 65mm x 25mm<br />
|-<br />
| Weight (without cables) || 120g<br />
|-<br />
!colspan="100%"| Available interfaces<br />
|-<br />
| USB Host interface || USB 2.0<br />
|-<br />
| Target interface || Standard 20-pin 0.1" connector (Adapters available).<br />
|-<br />
!colspan="100%"| Target Interface, Electrical<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| Target supply voltage || Supply voltage is 4.5V, max. (depends on the current battery voltage).<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6V <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Max. JTAG speed || up to 12MHz<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
===== Supported CPU cores =====<br />
<br />
The Flasher Portable supports the following CPU cores:<br />
<br />
'''ARM Cortex'''<br><br />
* Cortex-A5<br />
* Cortex-A8<br />
* Cortex-A9<br />
* Cortex-R4<br />
* Cortex-R5<br />
* Cortex-M0<br />
* Cortex-M0+<br />
* Cortex-M1<br />
* Cortex-M3<br />
* Cortex-M4<br />
<br />
'''ARM (legacy cores)'''<br><br />
* ARM720T<br />
* ARM7TDMI<br />
* ARM7TDMI-S<br />
* ARM920T<br />
* ARM922T<br />
* ARM926EJ-S<br />
* ARM946E-S<br />
* ARM966E-S<br />
* ARM1136JF-S<br />
* ARM1136J-S<br />
* ARM1156T2-S<br />
* ARM1156T2F-S<br />
* ARM1176JZ-S<br />
* ARM1176JZF<br />
* ARM1176JZF-S<br />
<br />
'''Renesas RX'''<br><br />
* RX111<br />
* RX210<br />
* RX220<br />
* RX21A<br />
* RX610<br />
* RX621<br />
* RX62G<br />
* RX62N<br />
* RX62T<br />
* RX630<br />
* RX631<br />
* RX63N<br />
* RX63T<br />
<br />
'''Freescale Power PC'''<br><br />
* e200z0<br />
<br />
===== Supported Target interfaces =====<br />
<br />
The Flasher Portable supports the following target interfaces:<br />
<br />
* JTAG<br />
* SWD<br />
* FINE<br />
* SPD<br />
<br />
===== Flasher Portable download speed =====<br />
<br />
The following table lists the Flasher Portable performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! ARM7 memory download<br />
|-<br />
| Flasher PRO || 720 Kbytes/s (12MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
== Working with Flasher ==<br />
<br />
This chapter describes functionality and how to use Flasher.<br />
<br />
=== Flasher Portable PLUS ===<br />
<br />
The Flasher Portable PLUS is a portable version of SEGGERs Flasher family,<br />
which has been designed to fill the need of an extremely portable, production grade,<br />
Flash programmer used for in-field firmware updates. No need to be tethered to an outlet,<br />
it is powered by an integrated Li-Ion cell (680mAh).<br />
The Flasher Portable PLUS programs flash targets in stand-alone mode or via J-Flash PC software.<br><br />
<br />
Furthermore the Flasher Portable PLUS allows the user to select between 99 data images to be programmed (since V7.90).<br />
The images can be easily selected by using the SEL button on the front of the housing.<br />
For more information about support for multiple images, please refer to [[#Multiple File Support | Multiple File Support]].<br><br />
For setup and configuration purposes, the Flasher Portable PLUS connects to a PC via USB interface,<br />
running Windows, Linux & MacOS and has a built-in standard 20-pin J-Link target connector.<br><br />
<br />
{{Note|1=Ethernet and RS232 as host interface are not available for the Flasher Portable PLUS.}}<br />
<br />
==== Housing & Buttons ====<br />
<br />
The Flasher Portable PLUS comes with a display, which is for example used to represent the status of an ongoing flash progress.<br />
Furthermore, there are three buttons which allow the user to control Flasher Portable PLUS.<br />
For a detailed description of the functions, take a look at the table below:<br />
<br />
<!-- LG xxxxxx edit image with labels for buttons? (Is this actually necessary? Buttons are basically self-explanatory...) --><br />
[[File:Flasher_Portable_PLUS.png | 500px]]<br />
<br />
{| class="seggertable"<br />
|-<br />
! Button !! Description<br />
|-<br />
| Program || Start programming process with the currently selected image.<br />
|-<br />
| Select image || Select the image to be programmed next time the Program button is pressed.<br />
|-<br />
| 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.<br />
|-<br />
|}<br />
<br />
==== Configuration ====<br />
<br />
The Flasher Portable PLUS has some configuration options the other Flashers do not have.<br />
{| class="seggertable"<br />
|-<br />
! Option !! Description !! Value range !! Default value<br />
|-<br />
| AutoPowerOffOnIdle || Specifies the time interval after which the Flasher Portable will turn off without any user action || 1 to 3600 || 60<br />
|-<br />
| ShowDatCRCAfterProgramming || Activates displaying the data file CRC after the programming in the pop up message || 0 = inactive, 1 = active || 0<br />
|-<br />
|}<br />
<br />
If the <tt>Flasher.ini</tt> does not contain a <tt>[Config]</tt> section with the configuration option, the default value is used.<br />
<br />
'''Example:'''<br><br />
This sample will show the data file CRC after the programming and the auto power of is set to five minutes (=300 seconds).<br />
<br />
<source lang="c"><br />
[CONFIG]<br />
AutoPowerOffOnIdle = "300"<br />
ShowDatCRCAfterProgramming = "1"<br />
</source><br />
<br />
=== Flasher Portable ===<br />
<br />
The Flasher Portable is a portable version of SEGGERs Flasher family, which has been designed to fill the need of an extremely portable,<br />
production grade, Flash programmer used for in-field firmware updates. No need to be tethered to an outlet,<br />
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><br />
<br />
Furthermore the Flasher Portable allows the user to select between four data images to be programmed.<br />
The images can be easily selected by using the arrow buttons on the front of the housing.<br />
For more information about support for multiple images, please refer to [[#Multiple File Support | Multiple File Support]].<br><br />
For setup and configuration purposes, the Flasher Portable connects to a PC via USB interface,<br />
running Windows, Linux & MacOS and has a built-in standard 20-pin J-Link target connector.<br><br />
<br />
{{Note|1=Ethernet and RS232 as host interface are not available for the Flasher Portable.}}<br />
<br />
==== Housing & Buttons ====<br />
<br />
The Flasher Portable comes with several leds which are for example used to represent the status of an ongoing flash progress.<br />
Furthermore, there are three buttons which allow the user to control Flasher Portable.<br />
For a detailed description of the functions, take a look at the two tables below:<br />
<br />
<!-- LG xxxxxx edit image with labels for buttons?--><br />
[[File:Flasher_Portable_Top_2.png | 500px]]<br />
<br />
{| class="seggertable"<br />
|-<br />
! LED !! Description<br />
|-<br />
| ACTIVE || GREEN. Blinks while the Flasher Portable is busy / performs operations on the target.<br />
|-<br />
| PASS/FAIL || GREEN/RED. Indicates, if the last flashing cycle was successful.<br />
<ul><br />
<li> GREEN: Flashing cycle completed successfully.</li><br />
<li> RED: Flashing cycle completed with error.</li><br />
</ul><br />
|-<br />
| 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]].<br />
|-<br />
| POWER || GREEN: Indicates if Flasher is currently powered. Blinks while Flasher Portable tries to enumerate via USB.<br />
|-<br />
| 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.<br />
|-<br />
|}<br />
<br />
{| class="seggertable"<br />
|-<br />
! Button !! Description<br />
|-<br />
| Program || Start programming process with the currently selected image.<br />
|-<br />
| Select image || Select the image to be programmed next time the <tt>Program</tt> button is pressed.<br />
|-<br />
| 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<br />
|-<br />
|}<br />
<br />
=== File system ===<br />
<br />
The Flasher with hardware version 4 and lower supports 8.3 filenames only (8 characters filename, 3 characters file extension).<br />
Using longer filenames may result in incorrect operation. Integrated functions,<br />
like the FTP server or the terminal server, will refuse writing files with long filenames.<br />
<br />
=== Setting up the IP interface ===<br />
<br />
Setting up the IP interface<br />
Some of the Flasher models come with an additional Ethernet interface to communicate with the host system.<br />
These Flashers also come with a built-in webserver which allows some basic setup of the emulator,<br />
e.g. configuring a default gateway which allows using it even in large intranets. For more information,<br />
please refer to [[#TCP Services | TCP Services]].<br />
<br />
==== Connecting the first time ====<br />
<br />
When connecting Flasher the first time, it attempts to acquire an IP address via DHCP.<br />
The recommended way for finding out which IP address has been assigned to Flasher is, to use the J-Link Configurator.<br />
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.<br />
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''.<br />
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,<br />
please refer to ''UM08001, J-Link / J-Trace User Guide'', chapter ''Setup'', section ''Setting up the IP interface''.<br />
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]].<br />
<br />
=== Operating modes ===<br />
<br />
All Flashers except the Flasher ATE are able to boot in 3 different modes:<br />
<br />
* PC-based mode<br />
* Stand-alone mode<br />
* File access mode<br />
<br />
{{Note|1=The Flasher ATE only supports the stand-alone mode.}}<br />
<br />
'''Definition PC-based mode'''<br><br />
Flasher is connected to a PC via USB/Ethernet and controlled by a PC application (J-Flash).<br />
If there is an RS232 connection to a PC, does not have any influence on if PC-based mode is entered or not.<br />
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, ...)<br />
<br />
'''Definition Stand-alone mode'''<br><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.<br />
<br />
'''Definition file access mode'''<br><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.<br />
In this mode, Flasher enumerates as a mass storage device (like an USB Stick) at the host PC.<br />
In this mode, configuration + data files can be manually placed on the Flasher and the Flasher logfile can be read out.<br />
If you are using a self-powered Flasher such as the Flasher Portable Plus, the Flasher must be turned off before connecting it.<br />
<br />
==== PC-based mode ====<br />
If you want to use Flasher for the first time you need to install the J-Link software and documentation package.<br />
After installation, connect Flasher to the host PC via USB or Ethernet.<br />
For more information about how to install the J-Link software and documentation package please refer to [[J-Link Software and Documentation Pack]].<br />
<br />
===== Connecting the target system =====<br />
<br />
'''Power-on sequence'''<br><br />
In general, Flasher should be powered on before connecting it with the target device.<br />
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.<br />
Power-on the device after you connected Flasher to it. Flasher will boot in "PC-based mode".<br />
<br />
'''Verifying target device connection with J-Link.exe'''<br><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.<br />
Then start the J-Link command line tool <tt>JLink.exe</tt>,<br />
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.<br />
The screenshot below shows the output of <tt>JLink.exe</tt>.<br />
<br />
[[File:flasher_jlinkmode.gif]]<br />
<br />
===== LED status indicators =====<br />
<br />
In PC-based mode, there are also certain LED status codes defined:<br />
<br />
{| class="seggertable"<br />
|-<br />
! # !! Status of LED !! Meaning<br />
|-<br />
| 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.<br />
|-<br />
| 0 || GREEN<br>constant || Flasher enumeration process is complete and it is ready to be controlled by a PC application.<br />
|-<br />
|}<br />
<br />
==== Stand-alone mode ====<br />
<br />
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]].<br />
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).<br />
In the "stand-alone mode" Flasher can be used as a stand-alone flash programmer.<br><br />
<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]].}}<br />
<br />
===== LED status indicators =====<br />
Progress and result of an operation is indicated by Flasher's LEDs. The behavior is different for J-Link and stand-alone mode.<br />
For a definition of the different modes, please refer to [[#Operating modes | Operating modes]].<br />
The following table describes the behavior of the LEDs in stand-alone mode.<br />
<br />
{| class="seggertable"<br />
|-<br />
! # !! Status of LED !! Meaning<br />
|-<br />
| 0 || GREEN<br>constant || Flasher waits for a start trigger to perform an operation in stand-alone mode.<br />
|-<br />
| 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><br />
|-<br />
| 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.<br />
|-<br />
|}<br />
Older Flasher models have a different behavior.<br />
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:<br />
<br />
* 1621xxxxx (Flasher ARM V2)<br />
* 1630xxxxx (Flasher ARM V3)<br />
* 4210xxxxx (Flasher PPC V1)<br />
* 4110xxxxx (Flasher RX V1)<br />
<br />
{| class="seggertable"<br />
|-<br />
! # !! Status of LED !! Meaning<br />
|-<br />
| 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.<br />
|-<br />
| 1 || GREEN<br>constant || Connect to target and perform init sequence.<br />
|-<br />
| 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><br />
|-<br />
| 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.<br />
|-<br />
|}<br />
<br />
==== File access mode ====<br />
<br />
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".<br />
If you are using a self-powered Flasher such as the Flasher Portable Plus, the Flasher must be turned off before connecting it.<br />
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.<br />
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>.<br />
<br />
[[File:flasher_mode_msd.gif]]<br />
<br />
<tt>FLASHER.CFG</tt> contains the configuration settings for programming the target device and <tt>FLASHER.DAT</tt> contains the data to be programmed.<br />
<tt>FLASHER.LOG</tt> contains all logging information about the commands, performed in stand-alone mode.<br />
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><br />
<br />
Currently, J-Flash does not support to configure Flasher for automated serial number programming.<br><br />
<br />
If you want to configure multiple Flasher for the same target you do not have to use J-Flash all the time.<br />
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".<br />
<br />
=== Setting up Flasher for stand-alone mode ===<br />
{{Note| All Options how to set up the Flasher for stand-alone mode you can find here: [[Flasher/Download project to Flasher|Download project to the Flasher]]}}<br />
<br />
In order to set up Flasher for the stand-alone mode it needs to be configured once using the J-Flash software.<br />
For more information about J-Flash, please refer to the ''J-Flash User Guide''.<br><br />
<br />
After starting J-Flash, open the appropriate J-Flash project for the target Flasher shall be configured for, by selecting '''File''' -> '''Open Project'''.<br />
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><br />
<br />
After the appropriate project has been opened / created, the data file which shall be programmed needs to be loaded, by selecting '''File''' -> '''Open'''.<br />
After this J-Flash should look like in the screenshot below.<br />
<br />
[[File:jflash_projectfile_datafile.gif]]<br />
<br />
Before downloading the configuration (project) and program data (data file) to Flasher, the connection type (USB/IP) needs to be selected in the project.<br />
These settings are also saved on a per-project basis, so this also only needs to be setup once per J-Flash project.<br />
The connection dialog is opened by clicking '''Options''' -> '''Project settings''' -> '''General'''.<br />
<br />
[[File:jflash_connection_dialog.gif]]<br />
<br />
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.<br />
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.<br />
The user then can simply select the Flash he wants to download the configuration to.<br />
<br />
[[File:EmuSelectionDialog.gif]]<br />
<br />
In order to download the configuration and program data to the Flasher, simply select '''File''' -> '''Download config & data file to Flasher'''.<br />
<br />
[[File:jflash_download_to_emul.gif]]<br />
<br />
The J-Flash log window indicates that the download to the emulator was successful.<br />
<br />
[[File:jflash_download_to_emu_succ.gif]]<br />
<br />
From now on, Flasher can be used in stand-alone mode (without host PC interaction) for stand-alone programming.<br />
<br />
==== Preparing for stand-alone operation manually ====<br />
<br />
As an alternative, J-Flash can also be used to save config and data file to a hard drive.<br><br />
<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,<br />
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.<br />
<br />
'''Creating config and data files'''<br><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><br />
<br />
For some devices, additional files (*.PEX) are needed.<br />
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.<br />
<br />
'''About *.PEX files'''<br><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,<br />
the following needs to be taken care of:<br><br />
<br />
For some devices, special connect, reset etc. sequences are necessary which are stored in so-called *.PEX files on the Flasher.<br><br />
<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><br />
<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><br />
The *.PEX files need to be placed in a subdirectory with the same name as the corresponding *.cfg file.<br />
J-Flash creates a directory with the correct name automatically when a config file is created.<br><br />
<br />
Example:<br><br />
<br />
MyConf0 is a project for a device that requires a *.PEX file for connect.<br><br />
MyConf1 is a project for a device that requires no *.PEX file at all.<br />
<br />
[[File:PEX_File_Flasher.png]]<br />
<br />
=== Universal Flash Loader mode ===<br />
<br />
As an alternative to the stand-alone mode, configured via J-Flash, there is the Universal Flash Loader mode.<br />
While the normal stand-alone mode relies on using the debug interface of the device, the Universal Flash Loader<br />
mode uses device or vendor specific programming interfaces and protocols and therefore it is independent of the<br />
CPU core.<br><br />
<br />
The Universal Flash Loader is available for the following Flasher models:<br />
* Flasher PRO<br />
* Flasher Compact<br />
* Flasher Portable PLUS<br />
<br />
For some of the supported devices, SEGGER offers specific adapters.<br />
<br />
==== Preparing manually ====<br />
<br />
The Universal Flash Loader uses an configuration file (*.UNI), a device specific flash programming algorithm (*.PEX) and a data file (*.DAT).<br />
<br />
===== Configuration =====<br />
<br />
The configuration file basically is split into three parts.<br />
The first part, the section [DEVICE], controls the generic behavior of the Universal Flash Loader.<br />
It specifies which protocol driver and data file to use. It allows enabling and configuring target power<br />
and it defines which actions to perform.<br />
The second part consists of one or more [BANKx] sections, which contain information about the memories.<br />
The third part, the section [CONFIG], includes configuration settings for the protocol driver.<br><br />
<br />
An .UNI file might look as follows:<br><br />
<br />
<source lang="c"><br />
[OPTIONS]<br />
TargetPower = "0"<br />
ChipErase = "0"<br />
<br />
[TASKS]<br />
CheckBlank = "1"<br />
Erase = "1"<br />
Program = "1"<br />
Verify = "1"<br />
Secure = "1"<br />
<br />
[DEVICE]<br />
Algo = "RL78.PEX"<br />
Data = "ALL_6k.dat"<br />
<br />
[BANK0]<br />
; Code Flash<br />
Base = "0x00000000"<br />
Size = "0x00004000"<br />
Sect = "0x00000400"<br />
<br />
[BANK1]<br />
; Data Flash<br />
Base = "0x000F1000"<br />
Size = "0x00000800"<br />
Sect = "0x00000400"<br />
<br />
[CONFIG]<br />
BaudRate = "1000000"<br />
ClearConfigOnConnect = "0x00"<br />
Security = "0xFF"<br />
ShieldStart = "0x0000"<br />
ShieldEnd = "0x000F"<br />
</source><br />
<br />
'''[OPTIONS]'''<br><br />
'''TargetPower'''<br><br />
If set to a value >0, power is applied to the target.<br />
The value defines the delay (in ms) after enabling the target power supply and before starting to communicate with the target.<br />
<br />
'''ChipErase'''<br><br />
If set to 1, the chip erase function is called for erasing the chip.<br><br />
{{Note|1=Do not enable this setting if the flash programming algorithm does not support chip erase.}}<br />
<br />
'''[TASKS]'''<br><br />
'''CheckBlank'''<br><br />
Defines if a blank check should be performed before erasing a sector.<br />
<br />
'''Erase'''<br><br />
Defines if the sector should be erased before programming.<br />
<br />
'''Program'''<br><br />
Defines if the sector should be programmed.<br />
<br />
'''Verify'''<br><br />
Defines if the sector should be verified after programming.<br />
<br />
'''Secure'''<br><br />
Defines if the device should be secured or protected against read-out after verifying.<br />
<br />
'''[DEVICE]'''<br><br />
'''Algo'''<br><br />
File name of the flash programming algorithm. This file is provided by SEGGER and will typically support a series of devices.<br />
<br />
'''Data'''<br><br />
File name of the data file to program. The Flasher only supports the Flasher .dat file format.<br />
Flasher .dat files can be generated by J-Flash or Universal Flash Loader and offer high performance together with high flexibility.<br />
<br />
'''[BANKx]'''<br><br />
x blocks with configuration data for the flash banks. All three parameters (Base, Size and Sect) are mandatory.<br />
<br />
'''Base'''<br><br />
Base address of the flash bank.<br />
<br />
'''Size'''<br><br />
Total size of the flash bank.<br />
<br />
'''Sect'''<br><br />
Sector size of the flash bank.<br />
<br />
'''[CONFIG]'''<br><br />
This section includes specific configuration data for the flash programming algorithm.<br><br />
There are no general parameters.<br />
<br />
{{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. }}<br />
<br />
==== Preparing using the PC utility ====<br />
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.<br />
<br />
[[File:Universal Flash Loader.png]]<br />
<br />
The Universal Flash Loader Configurator comes with a large list of devices and flash programming algorithms. If you are going to<br />
use a device from one of the supported families which currently is not available in the utility, feel free to contact the support.<br />
<br />
=== Multiple File Support ===<br />
<br />
It is also possible to have multiple data files and config files on Flasher, to make Flasher more easy to use in production environment.<br />
To choose the correct configuration file and data file pair, a <tt>FLASHER.INI</tt> file is used.<br />
This init file contains a <tt>[FILES]</tt> section which describes which configuration file and which data file should be used for programming.<br />
A sample content of a FLASHER.INI file is shown below:<br><br />
<br />
<source><br />
[FILES]<br />
DataFile = "Flasher1.dat"<br />
ConfigFile = "Flasher1.cfg"<br />
</source><br />
<br />
Using this method all configuration files and data files which are used in the production only have to be downloaded once.<br />
From there on a configuration file / data file pair can be switched by simply replacing the <tt>FLASHER.INI</tt> by a new one,<br />
which contains the new descriptions for the configuration file and data file. The <tt>FLASHER.INI</tt> can be replaced in two ways:<br />
<ol><br />
<li>Boot Flasher in file access mode in order to replace the <tt>FLASHER.INI</tt></li><br />
<li><br />
If Flasher is already integrated into the production line, runs in stand-alone mode and can not be booted in other mode:<br />
Use the file I/O commands provided by the ASCII interface of Flasher, to replace the <tt>FLASHER.INI</tt>.<br />
For more information about the file I/O commands, please refer to [[#File I/O commands | File I/O commands]].<br />
</li><br />
</ol><br />
{{Note|1=Flasher with hardware version 4 and lower only supports 8.3 filenames only (8 characters filename, 3 characters file extension). Using longer filenames may result in incorrect operation.}}<br />
<br />
==== Flasher Portable specifics ====<br />
<br />
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><br />
<br />
Which config / data file pair is used for which image selection position is determined by the contents of the FLASHER.INI.<br />
For this, the FLASHER.INI contents in the <tt>[FILES]</tt> section have been extended.<br />
The sample below shows how to enable the user to select between four different images on the Flasher portable via the select / arrow button:<br />
<br />
<source><br />
[FILES]<br />
DataFile = "First.dat"<br />
ConfigFile = "First.cfg"<br />
DataFile1 = "Second.dat"<br />
ConfigFile1 = "Second.cfg"<br />
DataFile2 = "Third.dat"<br />
ConfigFile2 = "Third.cfg"<br />
DataFile3 = "Fourth.dat"<br />
ConfigFile3 = "Fourth.cfg"<br />
</source><br />
<br />
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.<br />
From there on, switching between the files can be done by simply using the selection button of Flasher Portable.<br />
<br />
===== Example =====<br />
<br />
1 Target, 2 Datafiles (e.g. boot loader und application) --> same configuration file (*.CFG) but different data files (*.DAT) should be used.<br><br />
<br />
* Open pre-configured J-Flash project<br />
* File -> Save Flasher config file ... (DEFAULT.CFG)<br />
* Open data file 1 (boot loader)<br />
* File -> Save Flasher data file ... (BOOT.DAT)<br />
* Open data file 2 (application)<br />
* File -> Save Flasher data file ... (APP.DAT)<br />
* Create the a FLASHER.INI file (content see below)<br />
* Connect the Flasher in file access mode to the PC<br />
* Copy DEFAULT.CFG, BOOT.DAT, APP.DAT and FLASHER.INI on the Flasher<br />
<br />
FLASHER.INI content:<br><br />
<br />
<source><br />
[FILES]<br />
DataFile = "BOOT.DAT"<br />
ConfigFile = "DEFAULT.CFG"<br />
DataFile1 = "APP.DAT"<br />
ConfigFile1 = "DEFAULT.CFG"<br />
</source><br />
<br />
==== Flasher Portable PLUS specifics ====<br />
<br />
Flasher Portable PLUS allows to choose between 99 configuration and data file pairs during runtime by using the select button on the front of Flasher Portable PLUS.<br><br />
<br />
Which config / data file pair is used for which image selection position is determined by the contents of the FLASHER.INI.<br />
For this, the FLASHER.INI may contain several <tt>[BATCH]</tt> sections.<br />
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:<br />
<br />
<source><br />
[BATCH]<br />
DataFile = "First.dat"<br />
ConfigFile = "First.cfg"<br />
[BATCH1]<br />
DataFile = "Second.dat"<br />
ConfigFile = "Second.cfg"<br />
[BATCH2]<br />
DataFile = "Third.dat"<br />
ConfigFile = "Third.cfg"<br />
[BATCH7]<br />
DataFile = "Proj_8.dat"<br />
ConfigFile = "Proj_8.cfg"<br />
[BATCH15]<br />
DataFile = "Proj_16.dat"<br />
ConfigFile = "Proj_16.cfg"<br />
</source><br />
<br />
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.<br />
From there on, switching between the files can be done by simply using the selection button of Flasher Portable PLUS.<br />
<br />
Please also consider the chapter [[#Batch Programming in stand-alone mode | Batch Programming in stand-alone mode]].<br />
<br />
{{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.}}<br />
{{Note|1=You may have gaps in the list. The missing entries will be skipped when selecting the next configuration.}}<br />
{{Note|1=The <tt>[Files]</tt> section is supported by the Flasher Portable PLUS, too. But the number of configuration is limited to four.}}<br />
<br />
===== Example =====<br />
<br />
1 Target, 2 Datafiles (e.g. boot loader und application) --> same configuration file (*.CFG) but different data files (*.DAT) should be used.<br><br />
<br />
* Open pre-configured J-Flash project<br />
* File -> Save Flasher config file ... (DEFAULT.CFG)<br />
* Open data file 1 (boot loader)<br />
* File -> Save Flasher data file ... (BOOT.DAT)<br />
* Open data file 2 (application)<br />
* File -> Save Flasher data file ... (APP.DAT)<br />
* Create the a FLASHER.INI file (content see below)<br />
* Connect the Flasher in file access mode to the PC<br />
* Copy DEFAULT.CFG, BOOT.DAT, APP.DAT and FLASHER.INI on the Flasher<br />
<br />
FLASHER.INI content:<br><br />
<br />
<source><br />
[BATCH]<br />
DataFile = "BOOT.DAT"<br />
ConfigFile = "DEFAULT.CFG"<br />
DisplayName = "Bootloader"<br />
[BATCH1]<br />
DataFile = "APP.DAT"<br />
ConfigFile = "DEFAULT.CFG"<br />
DisplayName = "Application"<br />
[BATCH2]<br />
DataFile = "BOOT.DAT"<br />
ConfigFile = "DEFAULT.CFG"<br />
DataFile1 = "APP.DAT"<br />
ConfigFile1 = "DEFAULT.CFG"<br />
DisplayName = "BL and App"<br />
</source><br />
<br />
=== Custom labels ===<br />
<br />
Flasher supports to assign custom labels to configurations ("Project Display Text" in U-Flash). This allows to specify easy to remember names for configurations that are stored on the Flasher.<br />
<br />
==== Hardware and software requirements ====<br />
This feature is supported by the following models:<br />
* Flasher Portable PLUS<br />
<br />
This feature is supported since V6.30e of the software package and firmware<br />
<br />
==== Assigning labels ====<br />
The configuration and data file pairs are specified in the <tt>FLASHER.INI</tt> file:<br />
<source><br />
[FILES]<br />
DataFile = "IMAGE0.dat"<br />
ConfigFile = "IMAGE0.cfg"<br />
DataFile1 = "IMAGE1.dat"<br />
ConfigFile1 = "IMAGE1.cfg"<br />
</source><br />
<br />
By default, Flasher will show the names of the configuration and data file:<br />
[[File:FW1_smartwatch_nolabel.png]]<br />
[[File:FW2_smart_meter_nolabel.png]]<br />
<br />
By adding <tt>DisplayName</tt>, <tt>DisplayName1</tt>, ... keys to the <tt>FLASHER.INI</tt>, a custom label can be shown instead:<br />
<source><br />
[FILES]<br />
DisplayName = "FW smartwatch"<br />
DataFile = "IMAGE0.dat"<br />
ConfigFile = "IMAGE0.cfg"<br />
DisplayName1 = "FW smart meter"<br />
DataFile1 = "IMAGE1.dat"<br />
ConfigFile1 = "IMAGE1.cfg"<br />
</source><br />
<br />
The images will now be shown as follows:<br />
[[File:FW1_smartwatch_label.png]]<br />
[[File:FW2_smart_meter_label.png]]<br />
<br />
==== Considerations ====<br />
* 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.<br />
<br />
=== Programming multiple targets ===<br />
<br />
It is possible to program multiple targets which are located in a JTAG chain.<br />
The targets will be programmed each with a configuration and a data file.<br><br />
The configuration for the desired target must be selected before it can be programmed,<br />
this can be done with the <tt>#SELECT</tt> command.<br />
For more information how to use the <tt>#SELECT</tt> command please refer to the [[#ASCII_command_interface|ASCII command interface]].<br />
<br />
'''Example'''<br><br />
Three devices should be programmed.<br><br />
<br />
JTAG Chain: ''TDI'' --> ''Device2'' --> ''Device1'' --> ''Device0'' --> ''TDO''<br><br />
<br />
Three configurations would be stored on the flasher:<br><br />
<br />
Config 0: Configured to program Device0 (DEVICE0.CFG, DEVICE0.DAT)<br><br />
Config 1: Configured to program Device1 (DEVICE1.CFG, DEVICE1.DAT)<br><br />
Config 2: Configured to program Device2 (DEVICE2.CFG, DEVICE2.DAT)<br><br />
<br />
Selection and programming of the target will be done via the ASCII interface:<br><br />
<br />
<source><br />
#SELECT DEVICE0<br />
#AUTO<br />
#SELECT DEVICE1<br />
#AUTO<br />
#SELECT DEVICE2<br />
#AUTO<br />
</source><br />
<br />
==== Programming multiple targets with J-Flash ====<br />
<br />
Programming multiple targets can also be done via J-Flash using the command line interface.<br />
For this each target must be handled with its own project file.<br />
<br />
'''Example'''<br><br />
<br />
<source><br />
JFlash.exe -openproj"Device0.jflash" -open"Device0.hex" -auto -exit<br />
JFlash.exe -openproj"Device1.jflash" -open"Device1.hex" -auto -exit<br />
JFlash.exe -openproj"Device2.jflash" -open"Device2.hex" -auto -exit<br />
</source><br />
<br />
=== Batch Programming in stand-alone mode ===<br />
<br />
Batch programming allows to execute different stand-alone mode jobs in batch to be executed in immediate succession, without any user interaction in between.<br />
This can be used for example to program multiple targets in a JTAG-Chain or multiple data files to a target.<br><br />
A batch may contains an unlimited number of configurations which consist of a data file (*.DAT) and config file (*.CFG).<br />
For further information regarding config and data files, please refer to [[#Preparing for stand-alone operation manually | Preparing for stand-alone operation manually]].<br><br />
In order to specify the batch jobs, a FLASHER.INI file is used.<br />
This init file contains a [BATCH] section which describes which configuration pairs (*.DAT and *.CFG file) should be used for each batch job.<br />
A sample content of a FLASHER.INI file is shown below:<br><br />
<br />
<source><br />
[BATCH]<br />
DataFile = "Flasher0.dat"<br />
ConfigFile = "Flasher0.cfg"<br />
DataFile1 = "Flasher1.dat"<br />
ConfigFile1 = "Flasher1.cfg"<br />
</source><br />
<br />
[[File:Batch_Jobs.bmp]]<br />
<br />
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.<br />
<br />
<br />
[[File:Batch_Programming.bmp]]<br />
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<br />
currently executed action.<br />
<br />
<br />
[[File:Batch_Result.bmp]]<br />
The result of the programming will be shown on the screen after finishing all jobs.<br />
<br />
<br />
Creating / Replacing of the FLASHER.INI file can done in two ways:<br><br />
<ol><br />
<li>Boot Flasher in file access mode in order to replace the FLASHER.INI</li><br />
<li><br />
If Flasher is already integrated into the production line, runs in stand-alone mode and can not be booted in other mode:<br />
Use the file I/O commands provided by the ASCII interface of Flasher, to replace the FLASHER.INI .<br />
For more information about the file I/O commands, please refer to [[#File I/O commands | File I/O commands]].<br />
In case of an error occurred during execution, the Flasher terminates the entire batch processing.<br />
</li><br />
</ol><br />
{{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.}}<br />
{{Note|1=Flasher supports 8.3 filenames only (8 characters filename, 3 characters file extension). Using longer filenames may result in incorrect operation.}}<br />
<br />
==== Flasher Portable specifics ====<br />
<br />
Flasher Portable allows to choose between four different batches during runtime by using the select/arrow button on the front of Flasher Portable.<br />
Which batch configuration is used for which image selection position is specified in the FLASHER.INI.<br />
For this, the FLASHER.INI contents in the [BATCH] section have been extended.<br />
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><br />
<br />
<source><br />
[BATCH]<br />
DataFile = "Flasher0.dat"<br />
ConfigFile = "Flasher0.cfg"<br />
DataFile1 = "Flasher1.dat"<br />
ConfigFile1 = "Flasher1.cfg"<br />
DataFile2 = "Flasher2.dat"<br />
ConfigFile2 = "Flasher2.cfg"<br />
[BATCH1]<br />
DataFile = "TEST.dat"<br />
ConfigFile = "Test.cfg"<br />
[BATCH2]<br />
DataFile = "VALIDATE.dat"<br />
ConfigFile = "Flasher0.cfg"<br />
</source><br />
<br />
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.<br />
From there on, switching between the batches can be done by simply using the selection button of Flasher Portable.<br />
<br />
<br />
<br />
==== Examples ====<br />
<br />
'''Example 1:''' Programming two Data files to the same target<br><br />
<br />
* Open your J-Flash project.<br />
* Use File -> Save Flasher config file... to save the .CFG file (in this example: STM32F4.CFG).<br />
* Select the first binary and use File -> Save Flasher Data file... to save the first .DAT file (in this example: DATA0.DAT).<br />
* Select the second binary and use File -> Save Flasher Data file... to save the second data file .DAT file (in this example: DATA1.DAT).<br />
* Copy the Files to the Flasher e.g. by using file access mode.<br />
* Create a FLASHER.INI file in the root directory of the Flasher.<br />
* Exemplary content of FLASHER.INI:<br><br />
<source><br />
[BATCH]<br />
DataFile = "DATA0.dat"<br />
ConfigFile = "emPower.cfg"<br />
DataFile1 = "DATA1.dat"<br />
ConfigFile1 = "emPower.cfg"<br />
</source><br />
<br />
<br />
'''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><br />
Example scenario: 2 Devices in a JTAG chain, a STM32F1 and a STM32F4. <br><br />
<br />
* Follow the same as described before and additionally:<br />
* Create one project file per target (and create a .CFG file of each one).<br />
* Make sure each project file is configured correctly, especially the JTAG-Chain position (See UM8003 "J-Flash" for more detailed info).<br />
* Exemplary content of FLASHER.INI:<br><br />
<source><br />
[BATCH]<br />
DataFile = "F1DATA.dat"<br />
ConfigFile = "STM32F1.cfg"<br />
DataFile1 = "F4DATA0.dat"<br />
ConfigFile1 = "STM32F4.cfg"<br />
DataFile2 = "F4DATA1.dat"<br />
ConfigFile2 = "STM32F4.cfg"<br />
</source><br />
<br />
'''Example 3:''' Using multiple Batch sections with Flasher Portable.<br><br />
Example scenario: 2 Devices in a JTAG chain, a STM32F1 and a STM32F4.<br><br />
Selection 1 will program the STM32F1 target.<br><br />
Selection 2 will program the STM32F4 target using "F4DATA0.dat".<br><br />
Selection 3 will program the STM32F4 target using "F4DATA1.dat".<br><br />
Selection 4 will execute 1, 2 and 3 in sequence.<br><br />
* Exemplary content of FLASHER.INI:<br><br />
<source><br />
[BATCH]<br />
DataFile = "F1DATA.dat"<br />
ConfigFile = "STM32F1.cfg"<br />
[BATCH1]<br />
DataFile = "F4DATA0.dat"<br />
ConfigFile = "STM32F4.cfg"<br />
[BATCH2]<br />
DataFile = "F4DATA1.dat"<br />
ConfigFile = "STM32F4.cfg"<br />
[BATCH3]<br />
DataFile = "F1DATA.dat"<br />
ConfigFile = "STM32F1.cfg"<br />
DataFile1 = "F4DATA0.dat"<br />
ConfigFile1 = "STM32F4.cfg"<br />
DataFile2 = "F4DATA1.dat"<br />
ConfigFile2 = "STM32F4.cfg"<br />
</source><br />
<br />
=== Serial number programming ===<br />
<br />
Flasher supports programming of serial numbers. In order to use the serial number programming feature,<br />
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><br />
<br />
In general, Flasher supports two ways of programming a serial number into the target:<br />
<br />
#<br />
#* Programming continuous serial numbers.<br />
#* The serial number is 1-4 bytes in size.<br />
#* The start serial number, increment, serial number size, and address are configured in the J-Flash project.<br />
#<br />
#* Programming custom serial numbers from a serial number list file.<br />
#* The start line within the serial number list file to get the next serial number bytes, line increment, serial number size, and address is configured in the J-Flash project.<br />
#* The serial number list file needs to be specified and created by the user.<br />
<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.}}<br />
<br />
==== Serial number settings ====<br />
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.<br />
This is done by enabling the '''Program serial number''' option as shown in the screenshot and table below:<br />
<br />
[[File:UM08039_SN_Sample_JFlashSettings.png]]<br />
<br />
{| class="seggertable"<br />
|-<br />
!| Setting || Meaning<br />
|-<br />
| <tt>Address</tt> || The address the serial number should be programmed at.<br />
|-<br />
| <tt>Length</tt> ||<br />
The length of the serial number (in bytes) that 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 8 is selected as length, the serial number and its complement are programmed at the given address.<br />
* In case a serial number list file is given, the 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 '''Length''', the remaining bytes are filled with 0s. No complements etc. are added to the serial number.<br />
|-<br />
| <tt>Next SN</tt> ||<br />
* In case no serial number list file is given, '''Next SN''' is the next serial number which should be programmed. The serial number is always stored in flash memory in little-endian format.<br />
* In case a serial number list file is given, '''Next SN''' describes the line of the serial number list file where to read the next serial number bytes from. The Flasher starts counting at line 0, so in order to start serial number programming with the first line of the <tt>SNList.txt</tt>, '''Next SN''' needs to be set to 0.<br />
|-<br />
| <tt>Increment</tt> || Specifies by how much '''Next SN''' is incremented.<br />
|}<br />
<br />
=== Serial number file ===<br />
When selecting '''File -> Download serial number file to Flasher''', J-Flash will create a serial number file named as <tt><JFlashProjectName>_Serial.txt</tt>.<br />
This file is downloaded as <tt>Serial.txt</tt> on the Flasher.<br />
The file is generated based on the serial number settings in the J-Flash project and will contain the value defined by the '''Next SN''' option.<br />
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.<br />
<br />
==== Serial number list file ====<br />
<br />
In order to program custom serial numbers which can not be covered by the standard serial number scheme provided by J-Flash<br />
(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.<br />
<br />
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.<br />
This file is downloaded as <tt>SNList.txt</tt> on the 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<br />
* Each byte of the serial number is described by two hexadecimal digits.<br />
<br />
'''Example'''<br><br />
A 8-byte serial number should be programmed at address 0x08000000.<br><br />
<br />
It should be programmed as follows in the memory:<br><br />
<br />
<tt>0x08000000: 0x01 0x02 0x03 0x04 0x55 0x66 0x77 0x88</tt><br><br />
<br />
The serial number list file should look as follows:<br><br />
<br />
<tt>0102030455667788</tt><br />
<br />
[[File:SN_SNList.gif]]<br />
<br />
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><br />
<br />
Which line Flasher will read at the next programming cycle, is configured via the <tt>Next SN</tt> option in J-Flash.<br />
For more information, please refer to [[#Serial number settings | Serial number settings]].<br />
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><br />
<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.}}<br />
{{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.}}<br />
<br />
==== Programming process ====<br />
<br />
Flasher will increment the serial number in SERIAL.TXT by the value defined in <tt>Increment</tt>, after each successful programming cycle.<br><br />
<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><br />
<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.<br />
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.}}<br />
<br />
==== Downloading serial number files to Flasher ====<br />
<br />
Downloading the serial number files needs to be done explicitly by selecting '''File-> Download serial number file to Flasher'''.<br />
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.<br />
<br />
==== Sample setup ====<br />
<br />
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.<br />
<br />
'''Defining serial number address, length and start value'''<br><br />
In the J-Flash project the following needs to be defined:<br><br />
* <tt>Address</tt> is 0x08001000<br />
* <tt>Next SN</tt> is 1234567<br />
* <tt>Increment</tt> is 1<br />
* <tt>Len</tt> is 4 (bytes)<br />
<br />
[[File:SN_Sample_JFlashSettings.gif]]<br />
<br />
'''Downloading configuration, data and serial number to Flasher.'''<br><br />
After setting up the rest of the configuration (Target interface etc.) and selecting an appropriate data file, the configuration,<br />
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><br />
<br />
[[File:SN_Sample_DownloadToFlasher.gif]]<br />
<br />
After downloading the serial number to Flasher, J-Flash also created the <tt><JFlashProjectName>_Serial.txt</tt>.<br />
<br />
[[File:SN_Sample_SerialFileCreated.gif]]<br />
<br />
Now Flasher is prepared to program the 8-byte serial number.<br />
<br />
=== Patch file support ===<br />
<br />
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.<br />
Before starting programming process in stand-alone mode, Flasher will look for a file named <tt>Patches.txt</tt> being present on the Flasher.<br />
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><br />
<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.<br />
<br />
'''Syntax'''<br><br />
<!-- LG xxxxxxxxx '==' is shown as '=', so instead use '= ='--><br />
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><br />
<br />
<tt><NumPatches>,<Addr>,<NumBytes>:<nowiki><Data></nowiki>,<Addr>,<NumBytes>:<nowiki><Data></nowiki>,<Addr>,<NumBytes>:<nowiki><Data></nowiki>,<Addr>,<NumBytes>:<nowiki><Data></nowiki>\r\n</tt><br><br />
<br />
Find below a table which describes each parameter.<br><br />
{| class="seggertable"<br />
|-<br />
! Parameter !! Description<br />
|-<br />
| <tt><NumPatches></tt> || Describes the number of patches in this patch line. Max. value is 4.<br />
|-<br />
| <tt><Addr></tt> || Describes the address to be patched. Value is expected in hex.<br />
|-<br />
| <tt><NumBytes></tt> || Number of bytes for the current patch. Max. value is 20h (32 in decimal). Value is expected in hex.<br />
|-<br />
| <tt><nowiki><Data></nowiki></tt> || Describes the data to be patched. <nowiki><Data></nowiki> is always expected as 2 hexadecimal characters per byte.<br />
|-<br />
|}<br />
<br />
{{Note|1=All values are expected in hexadecimal format (hex).<br><br />
<nowiki><Data></nowiki> section is always preceded by ":", not ",".}}<br />
<br />
'''Example'''<br><br />
Below is an example patch.<br><br />
<br />
<source><br />
1,18,4:01020304\r\n<br />
</source><br />
<br />
Patching the following data:<br />
<br />
[[File:data_before.png]]<br />
<br />
with the example patch will result in the following data:<br />
<br />
[[File:data_afterwards.png]]<br />
<br />
Please note that as mentioned earlier patching undefined memory locations will be ignored.<br><br />
Applying the example patch to the following data:<br />
<br />
[[File:undefined_mem_before.png]]<br />
<br />
Causes no data to be patched, as can be seen in the following image:<br />
<br />
[[File:undefined_mem_no_token.png]]<br />
<br />
Therefore it is necessary to first write placeholder data to the memory locations which are supposed to be patched.<br><br />
An example for such a placeholder can be seen here:<br />
<br />
[[File:undefined_mem_token.png]]<br />
<br />
Please note that the actual data inside the placeholder does not matter to the Flasher,<br />
because it is overwritten during patching.<br><br />
Applying the example patch will now work as expected:<br />
<br />
[[File:undefined_mem_after.png]]<br />
<br />
'''Single patch via RS232'''<br><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><br />
<br />
Send the <tt>#AUTO PATCH <NumPatches>,<Addr>,<NumBytes>:<nowiki><Data></nowiki></tt><br><br />
<br />
command via Flasher ASCII interface. The parameters have the same function as described in the table above.<br />
<br />
==== Newline encoding ====<br />
<br />
In general, for all patch files, init files etc. Flasher supports both newline encodings:<br><br />
<br />
* Windows: \r\n<br />
* Unix/Mac: \n<br />
<br />
All parser functionality etc. are written to be independent from the host operating system.<br />
<br />
=== Limiting the number of programming cycles ===<br />
<br />
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.<br />
To make use of this feature, a file called <tt>Cntdown.txt</tt> needs to be placed on the Flasher.<br />
This file simply contains a decimal number (32-bit unsigned integer) that describes how many programming cycles can be performed with the current setup.<br />
<br />
[[File:CntdownTxtContent.jpg]]<br />
<br />
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><br />
<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>.}}<br />
<br />
==== Changed fail/error LED indicator behavior ====<br />
<br />
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><br />
<br />
* The red error/fail LED will lit for 1 second<br />
* After this, it will blink/toggle x times @ 5 Hz, indicating the number of programming cycles left. (blinking 5 times for 5 cycles left, ...)<br />
<br />
==== Required Flasher hardware version for Cntdown.txt support ====<br />
<br />
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><br />
<br />
* 1621xxxxx (Flasher ARM V2)<br />
* 1630xxxxx (Flasher ARM V3)<br />
* 4210xxxxx (Flasher PPC V1)<br />
* 4110xxxxx (Flasher RX V1)<br />
<br />
All other models / hardware versions support limiting of programming cycles.<br />
<br />
=== Authorized flashing ===<br />
<br />
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.<br />
without the possibility to read out the Flasher contents via file access mode, FILE I/O functionality (J-Link Commander) or RS232 commands.<br />
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.<br />
<br />
==== Creating / Adding the secure area ====<br />
<br />
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.<br />
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.<br />
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><br />
<br />
[[File:CreateSecArea.jpg]]<br />
<br />
The following secure area related commands are available in J-Link Commander:<br><br />
<br />
* securearea create<br />
* securearea remove<br />
<br />
{{Note|1=When creating or removing the <tt>secure area</tt>, all configuration and data files being stored on the Flasher, are lost.<br />
Please make sure that they are not needed anymore, before adding / removing the security area.}}<br />
<br />
==== Moving files to the secure area ====<br />
<br />
Before moving configuration + data to the <tt>secure area</tt>, proper functionality of the setup should be tested in stand-alone mode.<br />
Once the setup is working as expected, do the following, to move the configuration + data into the <tt>secure area</tt>:<br><br />
<br />
* Start Flasher in file access mode (For more info, please refer to: [[#file access mode | file access mode]])<br />
<br />
[[File:FilesBeforeSecure.png]]<br />
<br />
* Create a folder "<tt>_SECURE</tt>"<br />
* Move all files that shall be moved to the <tt>secure area</tt>, into this folder<br />
<br />
[[File:FilesAfterSecure.png]]<br />
<br />
* 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.<br />
* Now Flasher can be used in stand-alone mode, as normal, but the files cannot be read back by the user / operator.<br />
<br />
==== Considerations to be taken when using the secure area ====<br />
<br />
When using the <tt>secure area</tt>, some things need to be considered:<br><br />
<br />
* All features like multiple file support, patch file support etc. can also be used when operating from the <tt>secure area</tt>.<br />
* 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>.<br />
* 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>.<br />
* 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.<br />
<br />
==== Required Flasher hardware version ====<br />
<br />
Older Flasher models do not support authorized flashing. The Flashers with the following serial number ranges do not support authorized flashing:<br><br />
<br />
* 1621xxxxx (Flasher ARM V2)<br />
* 1630xxxxx (Flasher ARM V3)<br />
* 4210xxxxx (Flasher PPC V1)<br />
* 4110xxxxx (Flasher RX V1)<br />
<br />
All other models / hardware versions support authorized flashing.<br />
<br />
=== Target interfaces ===<br />
<br />
The table below shows the supported target interfaces of the different Flasher models.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! Supported interfaces<br />
|-<br />
| Flasher PRO || JTAG, SWD<br />
|-<br />
| Flasher Compact || JTAG, SWD<br />
|-<br />
| Flasher ARM || JTAG, SWD<br />
|-<br />
| Flasher RX || JTAG<br />
|-<br />
| Flasher PPC || JTAG<br />
|-<br />
|}<br />
<br />
For more information about the target interfaces itself, please refer to:<br><br />
<br />
* ''UM08001, chapter "Working with J-Link and J-Trace", section "JTAG interface"''<br />
* ''UM08001, chapter "Working with J-Link and J-Trace", section "SWD interface"''<br />
<br />
=== Supported architectures ===<br />
<br />
Flasher supports programming of the internal flash of a large number of different microcontrollers.<br />
The number of supported devices is steadily growing. You can always find the latest list of supported devices on our website:<br><br />
<br />
''http://www.segger.com/supported-devices.html''<br />
<br />
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.<br />
Also the existence of the device may have confidential status, so it might not be mentioned as being supported in public releases yet.<br />
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.<br />
<br />
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).<br />
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.<br />
<br />
If a device is not supported, you can always contact us. We will be happy to provide you with an offer.<br />
<br />
==== External flashes ====<br />
<br />
In general our Flashers support programming of external flashes listed below:<br>(Can differ between Flasher models and hardware versions)<br />
<br />
* parallel NOR flash<br />
* SPI / QSPI flash<br>(see: ''[[SPI_support_by_Flasher_models]]'')<br />
* NAND flash<br />
* I<sup>2</sup>C EEPROM/Flash<br />
* FRAM<br />
<br />
If the parallel NOR flash device which is used is not CFI-compliant you have to select the flash device in J-Flash explicitly,<br />
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''.<br />
<br />
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.<br />
The J-Flash software comes with sample projects for ''Open Flashloader''.<br />
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''<br />
{{Note|1=Complete Information about ''Open Flashloaders'' can be found in our Wiki:<br>''[[Open_Flashloader]]''}}<br />
<br />
==== Cores ====<br />
<br />
===== Flasher ARM =====<br />
<br />
Flasher ARM supports and has been tested with the following cores, but should work with any ARM7/9, Cortex-M0/M1/M3/M4 core.<br />
If you experience problems with a particular core, do not hesitate to contact Segger.<br><br />
<br />
* ARM7TDMI (Rev 1)<br />
* ARM7TDMI (Rev 3)<br />
* ARM7TDMI-S (Rev 4)<br />
* ARM920T<br />
* ARM922T<br />
* ARM926EJ-S<br />
* ARM946E-S<br />
* ARM966E-S<br />
* Cortex-M0<br />
* Cortex-M1<br />
* Cortex-M3<br />
* Cortex-M4<br />
<br />
===== Flasher RX =====<br />
<br />
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><br />
<br />
* RX610<br />
* RX621<br />
* RX62N<br />
* RX62T<br />
<br />
===== Flasher PPC =====<br />
<br />
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.<br />
<br />
* e200z0<br />
<br />
===== Flasher PRO/Compact/Portable PLUS =====<br />
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/''.<br />
<br />
=== Programming multiple targets in parallel ===<br />
<br />
To program multiple targets in parallel there are the following possibilities:<br />
* Using a Flasher gang, or<br />
* Using multiple Flashers, each connecting to one CPU.<br />
<br />
Devices for gang programming are:<br />
* Flasher Hub-12 in conjunction with up to 12 Flasher (Compact). Please refer to [[UM08043_Flasher_Hub-12|Flasher Hub-12 user manual (UM08043_Flasher_Hub-12)]].<br />
* Flasher ATE; suitable for programming up to 10 targets in parallel. Please refer to [https://www.segger.com/downloads/flasher/UM08035 Flasher ATE user manual (UM08035_FlasherATE.pdf)].<br />
When using multiple flashers, this can be done with the J-Flash production programming software.<br />
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''<br />
<br />
=== Logfiles and Quality Management ===<br />
<br />
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:<br />
<source lang="c"><br />
SN: 1 - Failed<br />
SN: 1 - Failed<br />
SN: 2 - O.K. (931 ms)<br />
SN: 3 - O.K. (931 ms)<br />
SN: 4 - O.K. (933 ms)<br />
SN: 5 - O.K. (932 ms)<br />
</source><br />
If applicable, the logfile contains more detailed error messages. For example:<br />
<source lang="c"><br />
ERROR: Programming failed @ address 0x00000000 (1)<br />
ERROR: Cannot connect to CPU. Target interface speed too high?<br />
</source><br />
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:<br />
<source lang="c"><br />
Verify error config word area @<br />
config word<br />
config word read back<br />
Verify error flash area @<br />
data from file<br />
data read back<br />
</source><br />
{{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.}}<br />
<br />
== TCP Services ==<br />
This chapter describes the integrated TCP services.<br />
<br />
=== FTP Server ===<br />
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><br />
[[File:FTPServer.png]]<br />
<br />
==== Access data ====<br />
Anonymous access to the FTP server is limited to read-only access to the file system.<br><br />
For write access, special login credentials have to be used:<br><br />
<tt>Login: admin</tt><br><br />
<tt>Password: 1234</tt><br><br />
<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.<br />
It is not meant as a security feature.}}<br />
<br />
=== Web server ===<br />
<br />
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.<br />
For the network, the IP address settings can be changed and a nick name can be assigned to the device.<br><br />
<br />
Additionally, the web interface provides information about the status of the integrated operating system, the IP stack and the target hardware.<br />
<br />
== Remote control ==<br />
This chapter describes how to control the Flasher in standalone mode.<br />
<br />
=== Overview ===<br />
There are 3 ways to control Flasher operation:<br><br />
{| class="seggertable"<br />
! Type of control !! Description<br />
|-<br />
| Button || Programming operation starts when pressing the PROG-button. The LEDs serve as visible indicators.<br />
|-<br />
| Handshake || 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.<br />
|-<br />
| Terminal || Terminal communication via TELNET, RS232 or VCOM with the [[#ASCII command interface]]<br />
|}<br />
<br />
<br />
{{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.}}<br />
<br />
=== Handshake control ===<br />
<br />
Some Flasher models are equipped with additional hardware control functions that are connected to the SUBD9 male connector, normally used as an RS232 interface to the PC.<br />
These Flasher models can therefore be controlled remotely by automated testers without the need for a connection to a PC.<br />
<br />
The handshake control is available for the following Flashers:<br />
* Flasher ARM<br />
* Flasher PRO<br />
* Flasher Compact (via Flasher Hub and Flasher Hub-12 only)<br />
<br />
The following diagrams show the internal remote control circuitry of Flasher:<br><br />
<br />
[[File:FlasherRemotecontrol.png]]<br />
{| class="seggertable"<br />
|-<br />
! Pin No. !! Function !! Description<br />
|-<br />
| 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.<br />
|-<br />
| 4 || BUSY || As soon as the "Auto" function is started, BUSY becomes active, which means that transistor is switched OFF.<br />
|-<br />
| 5 || GND || Common Signal ground.<br />
|-<br />
| 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.<br />
|-<br />
|}<br />
[[File:FlasherRemoteSignal.png]]<br />
<br />
=== ASCII command interface ===<br />
<br />
==== Introduction ====<br />
<br />
Once set up using J-Flash, the Flasher can be driven by any application or just a simple terminal using ASCII commands.<br><br />
<br />
Every known command is acknowledged by the Flasher and then executed. After command execution, Flasher sends an ASCII reply message.<br><br />
<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}}<br />
<br />
==== General command and reply message format ====<br />
<br />
* Any ASCII command has to start with the start delimiter ''#''.<br />
* Any ASCII command has to end with simple carriage return ('\r', ASCII code 13).<br />
* Commands can be sent upper or lower case<br />
<br />
==== General usage ====<br />
<br />
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.<br />
<br />
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).<br />
<br />
==== Settings for ASCII interface via RS232 ====<br />
<br />
Flasher is driven via a RS232 serial port with the following interface settings:<br><br />
<br />
* 9600 baud<br />
* 8 data bits<br />
* no parity<br />
* 1 stop bit<br />
<br />
The baud rate can be changed by using the <tt>#BAUDRATE</tt> command.<br />
<br />
==== Settings for ASCII interface via Telnet ====<br />
<br />
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><br />
<br />
[[File:telnet_connection.gif]]<br />
<br />
==== Settings for ASCII interface via VCOM ====<br />
<br />
The same settings can be used for VCOM as for [[#Settings for ASCII interface via RS232|RS232]].<br />
<br />
{{Note|The performance also depends on the terminal application used on the PC.}}<br />
<br />
==== Commands and replies ====<br />
<br />
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><br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| Commands to the Flasher<br />
|-<br />
| <tt>#BAUDRATE <Baudrate></tt><br />
|-<br />
| <tt>#AUTO</tt><br />
|-<br />
| <tt>#AUTO PATCH</tt><br />
|-<br />
| <tt>#AUTO NOINFO</tt><br />
|-<br />
| <tt>#CANCEL</tt><br />
|-<br />
| <tt>#ERASE</tt><br />
|-<br />
| <tt>#PROGRAM</tt><br />
|-<br />
| <tt>#RESULT</tt><br />
|-<br />
| <tt>#SELECT <Filename></tt><br />
|-<br />
| <tt>#START</tt><br />
|-<br />
| <tt>#STATUS</tt><br />
|-<br />
| <tt>#VERIFY</tt><br />
|-<br />
| <tt>#READ</tt><br />
|-<br />
| <tt>#QUIT</tt><br />
|-<br />
| <tt>#VERBOSE <Level></tt><br />
|-<br />
!colspan="100%"| File I/O commands<br />
|-<br />
| <tt>#FCLOSE</tt><br />
|-<br />
| <tt>#FCRC</tt><br />
|-<br />
| <tt>#FDELETE <Filename></tt><br />
|-<br />
| <tt>#FFORMAT</tt><br />
|-<br />
| <tt>#FOPEN <Filename></tt><br />
|-<br />
| <tt>#FREAD <Offset>,<NumBytes></tt><br />
|-<br />
| <tt>#FSIZE</tt><br />
|-<br />
| <tt>#FWRITE <Offset>,<NumBytes>:<nowiki><Data></nowiki></tt><br />
|-<br />
| <tt>#FLIST</tt><br />
|-<br />
| <tt>#MKDIR <Dirname></tt><br />
|-<br />
!colspan="100%"| SecureArea commands<br />
|-<br />
| <tt>#HASSECUREAREA</tt><br />
|-<br />
| <tt>#SECUREAREA <action></tt><br />
|-<br />
!colspan="100%"| Replies from the Flasher<br />
|-<br />
| <tt>#ACK</tt><br />
|-<br />
| <tt>#NACK</tt><br />
|-<br />
| <tt>#OK</tt><br />
|-<br />
| <tt>#OK:<NumBytes>:<nowiki><Data></nowiki></tt><br />
|-<br />
| <tt>#OK:<Size></tt><br />
|-<br />
| <tt>#STATUS:</tt><br />
|-<br />
| <tt>#DONE</tt><br />
|-<br />
| <tt>#ERRxxx</tt><br />
|-<br />
|}<br />
<br />
===== Commands to the Flasher =====<br />
<br />
'''#AUTO'''<br><br />
The <tt>#AUTO</tt> command behaves exactly as the start button or external remote control input.<br><br />
<br />
Usually, the following command sequence will be performed when receiving the <tt>#AUTO</tt> command:<br><br />
<br />
* The Flasher erases the target CPU (if not blank)<br />
* The Flasher programs the target CPU<br />
* The Flasher verifies the target CPU<br />
<br />
Depending on the settings chosen in the '''Production''' tab in J-Flash, this sequence can differ from the one shown above.<br><br />
<br />
Finally, Flasher responds with<br><br />
<br />
* <tt>#OK</tt> if no error occurred<br />
* <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.<br />
<br />
During execution of the <tt>#AUTO</tt> command, Flasher automatically sends "status" messages via RS232 to reflect the state of execution.<br />
Typically during execution of <tt>#AUTO</tt> command, Flasher will reply the following sequence of messages:<br><br />
<br />
<tt>#ACK</tt><br><br />
<tt>#STATUS:INITIALIZING</tt><br><br />
<tt>#STATUS:CONNECTING</tt><br><br />
<tt>#STATUS:UNLOCKING</tt><br><br />
<tt>#STATUS:ERASING</tt><br><br />
<tt>#STATUS:PROGRAMMING</tt><br><br />
<tt>#STATUS:VERIFYING</tt><br><br />
<tt>#OK (Total 13.993s, Erase 0.483s, Prog 9.183s, Verify 2.514s)</tt><br><br />
<br />
'''#AUTO PATCH'''<br><br />
The <tt>#AUTO</tt> PATCH command allows patching of the content of the data to be programmed.<br><br />
<br />
Flasher responds with<br><br />
<br />
* <tt>#OK</tt> if no error occurred<br />
* <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.<br />
<br />
For further information about the usage of the <tt>#AUTO PATCH</tt> command please refer to [[#Patch file support | Patch file support]].<br />
<br />
'''#AUTO NOINFO'''<br><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><br />
<br />
The command ends with <tt>#OK</tt> or <tt>#ERRxxx</tt><br />
<br />
'''#BAUDRATE <Baudrate>'''<br><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><br />
<br />
If this command succeeds, Flasher responds with:<br><br />
<br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<br />
Otherwise it will respond with one of the following error messages:<br><br />
<br />
<tt>#ERR255: Invalid parameters</tt><br><br />
<tt>or</tt><br><br />
<tt>#ERR255: Baudrate is not supported</tt><br><br />
<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.<br />
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.}}<br />
<br />
'''#CANCEL'''<br><br />
This command can be sent to abort a running program. It may take a while until the current program is actually canceled.<br><br />
<br />
Flasher will respond with:<br><br />
<br />
<tt>#ERR007:CANCELED.</tt><br><br />
<br />
'''#ERASE'''<br><br />
This command can be sent to erase all selected target flash sectors.<br><br />
<br />
Flasher will reply the following sequence of messages:<br><br />
<br />
<tt>#ACK</tt><br><br />
<tt>#STATUS:INITIALIZING</tt><br><br />
<tt>#STATUS:CONNECTING</tt><br><br />
<tt>#STATUS:UNLOCKING</tt><br><br />
<tt>#STATUS:ERASING</tt><br><br />
<tt>#OK (Total 0.893s, Erase 0.483s)</tt><br><br />
<br />
'''#PROGRAM'''<br><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.<br />
<br />
'''#RESULT'''<br><br />
This command can be sent any time, even during other command execution. Flasher responds with the last result of the previously executed command.<br />
<br />
'''#SELECT <Filename>'''<br><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.<br />
<tt><Filename></tt> specifies the name of file pair without extensions (.CFG and .DAT) on the Flasher which should be selected. If you are<br />
using the universal flash programming mode, <tt><Filename></tt> specifies the full name of the .UNI file '''including''' the extension.<br />
Flasher saves the selected config and data file in the FLASHER.INI file. So this selection is remembered even between power-cycling Flasher.<br><br />
<br />
This may be verfy helpful in cases where several config and data files are stored on Flasher.<br />
The user can easily switch between these config and data files without connecting Flasher to a host.<br><br />
<br />
If this command succeeds, Flasher responds with:<br><br />
<br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<br />
Find below a sample sequence which shows how to use the <tt>#SELECT</tt> command:<br><br />
<br />
<tt>#SELECT ATSAM7_1 // ATSAM7_1.CFG and ATSAM7_1.DAT is selected</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<tt>#AUTO // Start auto programming</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#STATUS:INITIALIZING</tt><br><br />
<tt>#STATUS:CONNECTING</tt><br><br />
<tt>#STATUS:UNLOCKING</tt><br><br />
<tt>#STATUS:ERASING</tt><br><br />
<tt>#STATUS:PROGRAMMING</tt><br><br />
<tt>#STATUS:VERIFYING</tt><br><br />
<tt>#OK (Total 8.416s, Erase 0.005s, Prog 6.845s, Verify 0.959s)</tt><br><br />
<tt>#SELECT ATSAM7_2 // ATSAM7_2.CFG and ATSAM7_2.DAT is selected</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<tt>#AUTO // Start auto programming</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#STATUS:INITIALIZING</tt><br><br />
<tt>#STATUS:CONNECTING</tt><br><br />
<tt>#STATUS:UNLOCKING</tt><br><br />
<tt>#STATUS:ERASING</tt><br><br />
<tt>#STATUS:PROGRAMMING</tt><br><br />
<tt>#STATUS:VERIFYING</tt><br><br />
<tt>#OK (Total 8.632s, Erase 0.005s, Prog 7.051s, Verify 0.969s)</tt><br><br />
<br />
'''#START'''<br><br />
This command can be sent to start the application using the method configured in the J-Flash project.<br><br />
For U-Flash projects, however, the target application is not necessarily started. <br><br />
There is often a "start application" checkbox in the U-Flash settings which have to be set for this.<br />
<br />
Flasher will reply with the following sequence of messages:<br><br />
<br />
<tt>#ACK</tt><br><br />
<tt>#STATUS:INITIALIZING</tt><br><br />
<tt>#STATUS:CONNECTING</tt><br><br />
<tt>#OK (Total 1.148s)</tt><br><br />
<br />
'''#STATUS'''<br><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]].<br />
<br />
'''#VERIFY'''<br><br />
This command can used to verify the target flash content against the data stored in Flasher.<br />
<br />
'''#READ'''<br><br />
Only available for devices supported by U-Flash.<br><br />
This command can used to read out flash data.<br><br />
More information: [https://wiki.segger.com/Flasher/How_to_read_data_from_a_device_using_U-Flash How to read data using U-Flash]<br />
<br />
'''#QUIT'''<br><br />
This command can be used to terminate the active telnet connection from the server side (Flasher).<br />
The command provides an easy way to terminate the session from an automated script.<br />
It is not necessary to parse stdout and switch to local command mode to disconnect.<br />
Not implemented in the Flasher ATE or Flasher Hub.<br />
<br />
'''#VERBOSE <Level>'''<br><br />
This command can be used to change the verbosity level. <br><br />
* Verbosity level 0: Default. <br><br />
* Verbosity level 1: Provides some additional messages during the programming process.<br />
<br />
===== File I/O commands =====<br />
<br />
The ASCII interface of the Flasher also supports file I/O operations.<br />
<br />
The following file I/O commands are supported:<br><br />
<br />
'''#FCLOSE'''<br><br />
The <tt>#FCLOSE</tt> command closes the file on Flasher which was opened via <tt>#FOPEN</tt>.<br />
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><br />
<br />
A typical sequence when using the <tt>#FCLOSE</tt> command does look like as follows:<br><br />
<br />
<tt>#FCLOSE</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<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><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:No file opened</tt><br />
}}<br />
<br />
'''#FCRC'''<br><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>.<br />
The CRC will be also reported by J-Flash when downloading or saving files via J-Flash.<br><br />
<br />
A typical sequence when using the <tt>#FCRC</tt> command does look like as follows:<br><br />
<br />
<tt>#FCRC flasher.dat</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK:0x75BC855A</tt><br><br />
<br />
'''#FDELETE <Filename>'''<br><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><br />
<br />
A typical sequence when using the <tt>#FDELETE</tt> command does look like as follows:<br><br />
<br />
<tt>#FDELETE flasher.dat</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<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><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:Failed to delete file</tt><br />
}}<br />
<br />
'''#FFORMAT'''<br><br />
The <tt>#FFORMAT</tt> command is used to delete all files located in the public area of the Flasher's internal memory.<br />
<br />
{{Note|1=Please note that this command deletes all projects located in the public area. Deleted projects cannot be restored again.<br><br />
This command does not delete the Flasher firmware, neither does it delete files in the secure area.<br />
}}<br />
<br />
A typical sequence using the <tt>#FFORMAT</tt> command does look like as follows:<br><br />
<br />
<tt>#FFORMAT</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#DONE</tt><br><br />
<br />
'''#FOPEN <Filename>'''<br><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.<br />
If <tt><Filename></tt> can not be found on Flasher a new one will be created.<br><br />
<br />
A typical sequence using the <tt>#FOPEN</tt> command does look like as follows:<br><br />
<br />
<tt>#FOPEN flasher.dat</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<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><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:A file has already been opened</tt><br />
}}<br />
<br />
'''#FREAD <Offset>,<NumBytes>'''<br><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.<br />
<tt><NumBytes></tt> specifies the number of bytes which should be read.<br><br />
<br />
A typical sequence when using the <tt>#FREAD</tt> command does look like as follows:<br><br />
<br />
<tt>#FREAD 0,4</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK:04:466c6173</tt><br><br />
<br />
If the <tt>#FREAD</tt> command succeeds, Flasher will finally respond with a <tt>#OK:<NumBytes>:<nowiki><Data></nowiki></tt> reply message.<br />
For more information about the Flasher reply messages, please refer to [[#Replies from Flasher | Replies from Flasher]].<br><br />
<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><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:No file opened</tt>}}<br />
<br />
'''#FSIZE'''<br><br />
The <tt>#FSIZE</tt> command is used to get the size of the currently opened file on Flasher.<br><br />
<br />
A typical sequence when using the <tt>#FSIZE</tt> command does look like as follows:<br><br />
<br />
<tt>#FSIZE</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK:10 // file on flasher which is currently open, has a size of 16 bytes</tt><br><br />
<br />
If the <tt>#FSIZE</tt> command succeeds, Flasher will respond with a <tt>#OK:<Size></tt> reply message.<br />
For more information about the Flasher reply messages, please refer to [[#Replies from Flasher | Replies from Flasher]].<br><br />
<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><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:No file opened</tt>}}<br />
<br />
'''#FWRITE <Offset>,<NumBytes>:<nowiki><Data></nowiki>'''<br><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.<br />
<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.<br />
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><br />
<br />
<tt><Offset></tt> and <tt><NumBytes></tt> are expected in hexadecimal format.<br><br />
<br />
<tt>#FWRITE 0,200:<nowiki><Data></nowiki></tt><br><br />
<tt>#FWRITE 200,200:<nowiki><Data></nowiki></tt><br><br />
<br />
The data is expected in hexadecimal format (two hexadecimal characters per byte). The following example illustrates the use of <tt>#FWRITE</tt>:<br />
<br />
<tt>Data to be send: Hello !</tt><br><br />
<tt>ASCII values: 0x48, 0x65, 0x6C, 0x6C, 0x6F, 0x20, 0x21</tt><br><br />
<br />
<tt>#FWRITE 0,7:48656C6C6F2021</tt><br><br />
<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><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:No file opened</tt><br>}}<br />
<br />
'''#FLIST'''<br><br />
The <tt>#LIST</tt> command is used to list all files stored on the Flasher.<br><br />
<br />
A typical sequence using the <tt>#FLIST</tt> command does look like as follows:<br><br />
<br />
<tt>#FLIST</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>FLASHER.INI Size: 60</tt><br><br />
<tt>SERIAL.TXT Size: 3</tt><br><br />
<tt>FLASHER.LOG Size: 207</tt><br><br />
<tt>FOLDER (DIR)</tt><br><br />
<tt>FOLDER\\TEST1.CFG Size: 2048</tt><br><br />
<tt>FOLDER\\TEST1.DAT Size: 12288</tt><br><br />
<tt>#OK</tt><br><br />
<br />
'''#MKDIR <Dirname>'''<br><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><br />
<br />
A typical sequence using the <tt>#MKDIR</tt> command does look like as follows:<br><br />
<br />
<tt>#MKDIR folder</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<br />
{{Note|1=If the directory can not be created because of a bad <tt><Dirname></tt> argument, Flasher will respond with:<br><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:Failed to create directory</tt><br>}}<br />
<br />
===== Secure Area Commands =====<br />
<br />
'''#HASSECUREAREA'''<br><br />
The <tt>#HASSECUREAREA</tt> command checks if the Flasher is configured with a secure area.<br />
<br />
<tt>#RESULT:YES</tt> indicates the secure area is present, <tt>#RESULT:NO</tt> indicates no secure area is present.<br />
<br />
'''#SECUREAREA'''<br><br />
The <tt>#SECUREAREA <action></tt> command allows to create or remove the secure area on the Flasher.<br />
<br />
* the action <tt>CREATE</tt> creates the secure area.<br />
* the action <tt>REMOVE</tt> will remove the secure area.<br />
<br />
A typical sequence using the <tt>#SECUREAREA</tt> command does look like as follows:<br><br />
<br />
<tt>#SECUREAREA CREATE</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#DONE</tt><br><br />
<br />
{{Note|1=When creating or removing the <tt>secure area</tt>, all configuration and data files being stored on the Flasher, are lost.<br />
Please make sure that they are not needed anymore, before adding / removing the security area.}}<br />
<br />
<br />
<br />
===== Replies from Flasher =====<br />
<br />
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.<br />
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.<br />
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><br />
<br />
<tt>#OK (Total 13.993s, Erase 0.483s, Prog 9.183s, Verify 2.514s)</tt><br><br />
<br />
The following reply messages from Flasher are defined:<br><br />
<br />
'''#ACK'''<br><br />
Flasher replies with <tt>#ACK</tt> message on reception of any defined command before the command itself is executed.<br />
<br />
'''#NACK'''<br><br />
Flasher replies with <tt>#NACK</tt>, if an undefined command was received.<br />
<br />
'''#OK'''<br><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.<br />
<br />
'''#OK:<NumBytes>:<nowiki><Data></nowiki>'''<br><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.<br />
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).<br />
<br />
'''#OK:<Size>'''<br><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.<br />
<br />
'''#STATUS:'''<br><br />
The Flasher replies with its current state.<br><br />
<br />
The following status messages are currently defined:<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Message !! Description<br />
|-<br />
| <tt>#STATUS:READY</tt> || Flasher is ready to receive a new command.<br />
|-<br />
| <tt>#STATUS:CONNECTING</tt> || Flasher initializes connection to target CPU.<br />
|-<br />
| <tt>#STATUS:INITIALIZING</tt> || Flasher performs self check and internal init.<br />
|-<br />
| <tt>#STATUS:UNLOCKING</tt> || Unlocking flash sectors.<br />
|-<br />
| <tt>#STATUS:ERASING</tt> || Flasher is erasing the flash of the target device.<br />
|-<br />
| <tt>#STATUS:PROGRAMMING</tt> || Flasher is programming the flash of the target device.<br />
|-<br />
| <tt>#STATUS:VERIFYING</tt> || Flasher verifies the programmed flash contents.<br />
|-<br />
|}<br />
<br />
'''#ERRxxx'''<br><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><br />
<br />
Some error codes may be followed by colon and an additional error text.<br><br />
<br />
For example:<br><br />
<br />
<tt>#ERR007:CANCELED.</tt><br><br />
<br />
The error code numbers are described in the following table:<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Message !! Description<br />
|-<br />
| <tt>#ERR007</tt> || Flasher received <tt>#CANCEL</tt> command and has canceled the current operation.<br />
|-<br />
| <tt>#ERR008</tt> || Flasher is already busy with execution of previous command.<br />
|-<br />
| <tt>#ERR009</tt> || Failed to allocate memory.<br />
|-<br />
| <tt>#ERR010</tt> || Failed to open file.<br />
|-<br />
| <tt>#ERR011</tt> || Failed to read file.<br />
|-<br />
| <tt>#ERR012</tt> || Failed to write file.<br />
|-<br />
| <tt>#ERR013</tt> || Failed to delete file.<br />
|-<br />
| <tt>#ERR255</tt> || Undefined error occurred. This reply is followed by an error string.<br />
|-<br />
|}<br />
<br />
== Performance ==<br />
<br />
The following chapter lists programming performance of common flash devices andmicrocontrollers.<br />
<br />
=== Performance of MCUs with internal flash memory ===<br />
<br />
==== Flasher ARM ====<br />
<br />
The following table lists program and erase performance values of Flasher ARM for different controllers.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Microcontroller !! Size [kByte] !! Erase time [sec] !! Program time [sec] !! Verify time [sec] !! Total time [sec]<br />
|-<br />
| Analog Devices || 62 || 2.943 || 2.286 || 0.563 || 5.792<br />
|-<br />
| Atmel AT91SAM7S64 || 64 || --- || 3.488 || 0.438 || 3.926<br />
|-<br />
| Atmel AT91SAM7S256 || 256 || --- || 7.709 || 1.053 || 8.762<br />
|-<br />
| NXP LPC1768 || 512 || 3.740 || 8.559 || 5.092 || 17.391<br />
|-<br />
| NXP LPC2106 || 120 || 0.448 || 1.204 || 0.634 || 2.286<br />
|-<br />
| NXP LPC2129 || 248 || 0.449 || 2.916 || 1.347 || 4.712<br />
|-<br />
| NXP LPC2138 || 500 || 0.448 || 5.488 || 2.649 || 8.585<br />
|-<br />
| NXP LPC2148 || 500 || 0.448 || 5.632 || 2.721 || 8.801<br />
|-<br />
| NXP LPC2294 || 2048 || 0.808 || 15.976 || 9.669 || 26.453<br />
|-<br />
| NXP LPC2478 || 504 || 0.448 || 5.419 || 2.559 || 8.426<br />
|-<br />
| ST STM32F103ZE || 512 || 0.028 || 18.763 || 3.939 || 22.730<br />
|-<br />
| ST STR711 || 272 || 0.429 || 5.476 || 4.742 || 10.647<br />
|-<br />
| ST STR912 || 544 || 1.167 || 12.907 || 5.236 || 19.310<br />
|-<br />
| TI TMS470R1B1M || 1024 || 2.289 || 8.147 || 5.362 || 15.798<br />
|-<br />
|}<br />
<br />
==== Flasher PRO ====<br />
See Flasher ARM.<br />
<br />
==== Flasher Compact ====<br />
See Flasher ARM.<br />
<br />
==== Flasher RX ====<br />
<br />
The following table lists program and erase performance values of Flasher RX.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Microcontroller !! Size [kByte] !! Erase time [sec] !! Program time [sec] !! Verify time [sec] !! Total time [sec]<br />
|-<br />
| R5F56108 || 2.048 || 9.523 || 11.915 || 3.890 || 25.585<br />
|-<br />
|}<br />
<br />
==== Flasher PPC ====<br />
<br />
The following table lists program and erase performance values of Flasher PPC.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Microcontroller !! Size [kByte] !! Erase time [sec] !! Program time [sec] !! Verify time [sec] !! Total time [sec]<br />
|-<br />
| ST SPC560B50 || 576 || 4.747 || 4.159 || 1.929 || 10.917<br />
|-<br />
|}<br />
<br />
== Hardware ==<br />
<br />
This chapter gives an overview about Flasher specific hardware details,<br />
such as the pinouts and available adapters.<br />
<br />
=== Flasher ARM 20-pin JTAG/SWD Connector ===<br />
<br />
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.<br />
<br />
==== Pinout JTAG ====<br />
<br />
[[File:jtag_port_20pin.jpg]] <!-- LG xxxxxx image has been cropped to fit page --><br />
<br />
The following table lists the Flasher JTAG pinout.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! PIN !! SIGNAL !! TYPE !! Description<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 13 || TDO || Input || JTAG data output from target CPU. Typically connected to TDO of target CPU.<br />
|-<br />
| 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".<br />
|-<br />
| 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.<br />
|-<br />
| 19 || 5V-Target supply || Output || This pin is used to supply power to some eval boards. Typically left open on target hardware.<br />
|-<br />
|}<br />
<br />
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.<br />
<br />
==== Pinout SWD ====<br />
<br />
The 20-pin connector of Flasher is also compatible to ARM's Serial Wire Debug (SWD) interface.<br><br />
<br />
[[File:SWD_Port.jpg]] <!-- LG xxxxxx image has been cropped to fit page --><br />
<br />
The following table lists the J-Link / J-Trace SWD pinout.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! PIN !! SIGNAL !! TYPE !! Description<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 7 || SWDIO || I/O || Single bi-directional data pin.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 13 || SWO || Output || Serial Wire Output trace port. (Optional, not required for SWD communication.)<br />
|-<br />
| 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".<br />
|-<br />
| 17 || Not used || NC || This pin is not connected in J-Link.<br />
|-<br />
| 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.<br />
|-<br />
|}<br />
<br />
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.<br />
<br />
==== Target power supply ====<br />
<br />
Pin 19 of the connector can be used to supply power to the target hardware. Supply voltage is 5V, max. current is 400mA.<br />
The output current is monitored and protected against overload and short-circuit.<br><br />
<br />
Power can be controlled via the J-Link commander. The following commands are available to control power:<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Command !! Explanation<br />
|-<br />
| <tt>power on</tt> || Switch target power on<br />
|-<br />
| <tt>power off</tt> || Switch target power off<br />
|-<br />
| <tt>power on perm</tt> || Set target power supply default to "on"<br />
|-<br />
| <tt>power off perm</tt> || Set target power supply default to "off"<br />
|-<br />
|}<br />
<br />
=== Flasher RX 14-pin connector ===<br />
<br />
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.<br />
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.<br />
<br />
[[File:jtag_port_14pin.wmf]]<br />
<br />
The following table lists the Flasher RX 14-pin JTAG pinout.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Pin !! Signal !! Type !! Description<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 5 || TDO || Input || JTAG data output from target CPU. Typically connected to TDO on target CPU.<br />
|-<br />
| 6 || --- || NC || This pin is not connected to Flasher RX.<br />
|-<br />
| 7 || --- || NC || This pin is not connected to Flasher RX.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 10 || --- || NC || This pin is not connected to Flasher RX.<br />
|-<br />
| 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.<br />
|-<br />
| 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".<br />
|-<br />
|}<br />
<br />
* All pins marked NC are not connected to Flasher RX. Any signal can be applied here; Flasher RX will simply ignore such a signal.<br />
* Pins 2, 12, 14 are GND pins connected to GND in Flasher RX. They should also be connected to GND in the target system.<br />
<br />
==== Target power supply ====<br />
<br />
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.<br />
Power can be controlled via the J-Link commander. The following commands are available to control power:<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Command !! Explanation<br />
|-<br />
| <tt>power on</tt> || Switch target power on<br />
|-<br />
| <tt>power off</tt> || Switch target power off<br />
|-<br />
| <tt>power on perm</tt> || Set target power supply default to "on"<br />
|-<br />
| <tt>power off perm</tt> || Set target power supply default to "off"<br />
|-<br />
|}<br />
<br />
=== Flasher PPC 14-pin connector ===<br />
<br />
Flasher PPC itself has a 20-pin JTAG connector mounted but comes with a 14-pin adapter for PowerPC devices.<br><br />
<br />
[[File:JTAG_PPC_14pin_adapter.wmf]]<br />
<br />
The following table lists the Flasher PPC 14-pin JTAG pinout.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Pin !! Signal !! Type !! Description<br />
|-<br />
| 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.<br />
|-<br />
| 3 || TDO || Input || JTAG data output from target CPU. Typically connected to TDO on target CPU.<br />
|-<br />
| 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.<br />
|-<br />
| 7 || --- || NC || This pin is not connected to Flasher PPC.<br />
|-<br />
| 8 || --- || NC || This pin is not connected to Flasher PPC.<br />
|-<br />
| 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".<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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).<br />
|-<br />
|}<br />
<br />
* All pins marked NC are not connected to Flasher PPC. Any signal can be applied here; Flasher PPC will simply ignore such a signal.<br />
* 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.<br />
<br />
=== Target board design ===<br />
<br />
We strongly advise following the recommendations given by the chip manufacturer. These recommendations are normally in line with the recommendations.<br />
Please refer to the the appropriate tables depending on the core:<br><br />
<br />
* [[#Pinout JTAG | Pinout JTAG]]<br />
* [[#Pinout SWD | Pinout SWD]]<br />
* [[#Flasher RX 14-pin connector | Flasher RX 14-pin connector]]<br />
* [[#Flasher PPC 14-pin connector | Flasher PPC 14-pin connector]]<br />
<br />
In case of doubt you should follow the recommendations given by the semiconductor manufacturer.<br />
<br />
==== Pull-up/pull-down resistors ====<br />
<br />
Unless otherwise specified by developer's manual, pull-ups/pull-downs are recommended to be between 2.2 kOhms and 47 kOhms.<br />
<br />
==== RESET, nTRST ====<br />
<br />
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><br />
<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.<br />
(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.<br />
<br />
=== Adapters ===<br />
<br />
==== JTAG Isolator ====<br />
<br />
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.<br />
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><br />
<br />
[[File:JTAG_Isolator_Port.wmf]]<br />
<br />
===== Pinout =====<br />
<br />
The following table shows the target-side pinout of the J-Link JTAG Isolator.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Pin !! Signal !! Type !! Description<br />
|-<br />
| 1 || VCC || Output || The target side of the isolator draws power over this pin.<br />
|-<br />
| 2 || VCC || Output || The target side of the isolator draws power over this pin.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 13 || TDO || Input || JTAG data output from target CPU. Typically connected to TDO of target CPU.<br />
|-<br />
| 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".<br />
|-<br />
| 17 || N/C || N/C || This pin is not connected on the target side of the isolator.<br />
|-<br />
| 19 || N/C || N/C || This pin is not connected on the target side of the isolator.<br />
|-<br />
|}<br />
<br />
Pins 4, 6, 8, 10, 12, 14, 16, 18, 20 are connected to GND.<br />
<br />
===== Safety =====<br />
This isolator provides '''basic isolation''' only. '''Do not use with hazardous voltages without further protection measures to avoid risk of electrical shock and fire.'''<br />
<br />
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.<br />
<br />
==== J-Link Needle Adapter ====<br />
<br />
To connect to the J-Link OB via programming interface the ''J-Link Needle Adapter'' is recommended.<br><br />
<br />
[[File:J-Link_Needle_Adapter_500x.jpg]]<br />
<br />
Why to choose the J-Link Needle Adapter:<br><br />
<ol><br />
<li>No additional connector required on your PCB</li><br />
<li>Very small footprint</li><br />
<li>High reliability spring pins for secure connections</li><br />
<li>Designed with 3 locating pins, so the adapter can not be connected the wrong way</li><br />
<li>No external power supply required! The J-Link Needle Adapter comes with the option to power the target hardware via J-Link.</li><br />
</ol><br />
These features make the J-Link Needle Adapter the perfect solution for production purposes.<br><br />
<br />
The pinout of the J-Link Needle Adapter is based on the pinout of the needle adapter by Tag-Connect.<br />
Please note, that both pinouts are not identical since the J-Link Needle Adapter comes with a 5V-supply pin.<br><br />
<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><br />
<br />
Moreover, the two "legs" on each side of the connector guarantee a stable and secure contact between pins and the PCB.<br><br />
<br />
[[File:J-Link_Needle_Adapter_Connector_pins_360x.jpg]]<br />
[[File:J-Link_Needle_Adapter_Pinout.jpg]]<br />
<br />
The J-Link Needle Adapter can be connected to J-Link via the ''20-pin 0.1'' JTAG to a 10-pin needle connector''.<br />
<br />
=== How to determine the hardware version ===<br />
<br />
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.<br />
Flasher has the hardware version printed on the back label.<br><br />
<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).<br />
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><br />
<br />
[[File:FlasherARM_version.gif]]<br />
== Support and FAQs ==<br />
<br />
This chapter contains troubleshooting tips together with solutions for common problems which might occur when using Flasher.<br />
There are several steps you can take before contacting support.<br />
Performing these steps can solve many problems and often eliminates the need for assistance.<br />
This chapter also contains a collection of frequently asked questions (FAQs) with answers.<br />
<br />
=== Contacting support ===<br />
<br />
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.<br />
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><br />
<br />
If you need to contact support, send the following information to<br><br />
''support@segger.com''<br><br />
<br />
* A detailed description of the problem<br />
* Flasher serial number<br />
* Information about your target hardware (processor, board, etc.).<br />
* <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]].<br />
<br />
Flasher is sold directly by SEGGER.<br />
<br />
=== Frequently Asked Questions ===<br />
<br />
'''Maximum JTAG speed'''<br />
{|<br />
|-<br />
| '''Q:''' || What is the maximum JTAG speed supported by Flasher?<br />
|-<br />
| '''A:''' || Flasher's maximum supported JTAG speed is 12MHz.<br />
|}<br />
<br />
'''Maximum download speed'''<br />
{|<br />
|-<br />
| '''Q:''' || What is the maximum download speed?<br><br />
|-<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.<br />
|}<br />
== Background information ==<br />
<br />
This chapter provides background information about flash programming in general. It<br />
also provides information about how to replace the firmware of Flasher manually.<br />
<br />
=== Flash programming ===<br />
<br />
Flasher comes with a DLL, which allows - amongst other functionalities - reading and writing RAM, CPU registers, starting and stopping the CPU, and setting breakpoints.<br />
<br />
==== How does flash programming via Flasher work? ====<br />
<br />
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.<br />
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.<br />
Different flash chips have different programming algorithms;the programming algorithm also depends on other things,<br />
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).<br />
The RAM code requires data to be programmed into the flash memory. The data is supplied by downloading it to RAM.<br />
<br />
==== Data download to RAM ====<br />
<br />
The data (or part of it) is downloaded to another part of the RAM of the target system.<br />
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.<br />
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.<br />
This process may have to be repeated until the entire data is programmed into the flash.<br />
<br />
==== Available options for flash programming ====<br />
<br />
In general, there are two possibilities in order to use Flasher for flash programming:<br><br />
<br />
* Using Flasher stand-alone to program the target flash memory (stand-alone mode)<br />
* Using Flasher in combination with J-Flash to program the target flash memory (Flasher in "PC-based mode")<br />
<br />
===== Using Flasher in stand-alone mode =====<br />
<br />
In order to use the Flasher in stand-alone mode, it has to be configured first.<br />
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]].<br />
<br />
===== J-Flash - Complete flash programming solution =====<br />
<br />
J-Flash is a stand-alone Windows application, which can read / write data files and program the flash in almost any ARM system.<br />
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''.<br />
<br />
==== How does the universal flash programming work? ====<br />
<br />
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><br />
<br />
Universal flash programming is available only for stand-alone mode.<br />
== Glossary ==<br />
<br />
This chapter describes important terms used throughout this manual.<br />
<br />
'''Big-endian'''<br><br />
Memory organization where the least significant byte of a word is at a higher address than the most significant byte. See Little-endian.<br />
<br />
'''Cache cleaning'''<br><br />
The process of writing dirty data in a cache to main memory.<br />
<br />
'''Coprocessor'''<br><br />
An additional processor that is used for certain operations, for example, for floating-point math calculations, signal processing, or memory management.<br />
<br />
'''Dirty data'''<br><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.<br />
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.<br />
<br />
'''Halfword'''<br><br />
A 16-bit unit of information.<br />
<br />
'''Host'''<br><br />
A computer which provides data and other services to another computer. Especially, a computer providing debugging services to a target being debugged.<br />
<br />
'''ICache'''<br><br />
Instruction cache.<br />
<br />
'''ID'''<br><br />
Identifier.<br />
<br />
'''IEEE 1149.1'''<br><br />
The IEEE Standard which defines TAP. Commonly (but incorrectly) referred to as JTAG.<br />
<br />
'''Image'''<br><br />
An executable file that has been loaded onto a processor for execution.<br />
<br />
'''Instruction Register'''<br><br />
When referring to a TAP controller, a register that controls the operation of the TAP.<br />
<br />
'''IR'''<br><br />
See Instruction Register.<br />
<br />
'''Joint Test Action Group (JTAG)'''<br><br />
The name of the standards group which created the IEEE 1149.1 specification.<br />
<br />
'''Little-endian'''<br><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.<br />
<br />
'''Memory coherency'''<br><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.<br />
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.<br />
<br />
'''Memory management unit (MMU)'''<br><br />
Hardware that controls caches and access permissions to blocks of memory, and translates virtual to physical addresses.<br />
<br />
'''Memory Protection Unit (MPU)'''<br><br />
Hardware that controls access permissions to blocks of memory. Unlike an MMU, a MPU does not translate virtual addresses to physical addresses.<br />
<br />
'''RESET'''<br><br />
Abbreviation of System Reset. The electronic signal which causes the target system other than the TAP controller to be reset.<br />
This signal is also known as "nSRST" "nSYSRST", "nRST", or "nRESET" in some other manuals. See also nTRST.<br />
<br />
'''nTRST'''<br><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.<br />
<br />
'''Open collector'''<br><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.<br />
<br />
'''Processor Core'''<br><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.<br />
It excludes optional coprocessors, caches, and the memory management unit.<br />
<br />
'''Remapping'''<br><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.<br />
<br />
'''RTOS'''<br><br />
Real Time Operating System.<br />
<br />
'''TAP Controller'''<br><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.<br />
<br />
'''Target'''<br><br />
The actual processor (real silicon or simulated) on which the application program is running.<br />
<br />
'''TCK'''<br><br />
The electronic clock signal which times data on the TAP data lines TMS, TDI, and TDO.<br />
<br />
'''TDI'''<br><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.<br />
<br />
'''TDO'''<br><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.<br />
<br />
'''Test Access Port (TAP)'''<br><br />
The port used to access a device's TAP Controller. Comprises TCK, TMS, TDI, TDO, and nTRST (optional).<br />
<br />
'''Transistor-transistor logic (TTL)'''<br><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.<br />
<br />
'''Word'''<br><br />
A 32-bit unit of information. Contents are taken as being an unsigned integer unless otherwise stated.<br />
== Literature and references ==<br />
This chapter lists documents, which we think may be useful to gain a deeper understanding of technical details.</div>JanBhttps://wiki.segger.com/index.php?title=UM08022_Flasher&diff=17450UM08022 Flasher2024-01-16T11:25:14Z<p>JanB: /* Custom labels */</p>
<hr />
<div><!---<br />
General TBD:<br />
- LG: Right now - EVERYTHING<br />
===========================================<br />
--------------------[more specific, but on multiple locations]<br />
- check if all emphasis (bold, tt, blue, etc ) have made it into the new version<br />
- Add Information -> Additional information<br />
- use of the term free-of-charge utility/tool etc<br />
- check compliant to DocStandards_Rules.txt<br />
- Remove everything regarding to Kickstarter versions? eventually create a chapter Legacy -> Kickstarter version were available for hw version 5-x (200x-200x)...[..]<br />
- 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.<br />
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.<br />
- if week keep the IDE specific stuff in the manual, add Ozone, ES and J-Link Commander were no mentioned.<br />
- IDE specifics move into wiki confirmed by Alex<br />
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)<br />
- check all sections regarding licensing<br />
- Check compliance of J-Link emDocs with typographic conventions described in AboutThisDocument.emDoc. What should be altered? e.g. references<br />
- use uref at all (not blue)?<br />
- search and decide where to use \ref (ref with page number)<br />
- why is \ref (no single "option" \uref is more basic as \ref.....)<br />
- in text, use either \ref or \iref instead of \uref<br />
- in old manual, \H3 started on a new page (not per default, but set manually for api tables etc...)<br />
- move used old images and source files (visio etc) via svn (currently copied)<br />
--------------------[grammar / vocabulary discussion]<br />
- Product names<br />
-- Use of SEGGEPROBE in this document?<br />
- use license over licence<br />
- commandline or command-line?<br />
- toolchain or tool chain?<br />
- crossreference/cross-reference/cross reference?<br />
- overcurrent?<br />
- double words?<br />
- frontend?<br />
- Unit: Kbytes, KBytes, V, mV.... 9V or 9 V? Create rule in Vocabulary<br />
- baudrate or baud rate?<br />
- stackpointer or stack pointer<br />
- check where we should replace abbreviations with the long form (e.h. "milliseconds" instead of "ms")<br />
- config or configuration<br />
- filepointer or file pointer?<br />
--------------------[J-Link dep. specific]<br />
- J-Link command strings or J-Link Command strings or J-Link Command Strings<br />
- J-Link settings file or...<br />
- J-Link control panel or ......<br />
- J-Link script files or...<br />
---><br />
Flasher is a programming tool for microcontrollers with on-chip or external flash memory.<br />
Flasher is designed for programming flash targets with the J-Flash software or stand-alone.<br />
In addition to that Flasher can also be used as a regular J-Link. For more information about J-Link in general,<br />
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].<br />
<br />
<div class="toclimit-2"><br />
__TOC__<br />
</div><br />
<br />
== Flasher Software and Documentation Pack ==<br />
The Flasher Software and Documentation Pack, available for download on the [https://www.segger.com/downloads/flasher#FlasherSoftwareAndDocumentationPack SEGGER homepage], includes applications to be used with Flasher and in some cases with J-Link and J-Trace.<br><br />
It also comes with USB-drivers for J-Link, J-Trace and Flasher.<br />
<br />
=== Software overview ===<br />
{| class="wikitable"<br />
|-<br />
! Software !! Description<br />
|-<br />
| [[J-Link Configurator|Flasher Configurator]] || GUI-based configuration tool for Flasher. Allows configuration of USB identification as well as TCP/IP identification of Flashers.<br />
|-<br />
| [[FlasherControl|Flasher Control]] || Command-line tool to connect to the Flasher's command-line interface via USB.<br />
|-<br />
| [[J-Flash]] || Flash programming application.<br />
|-<br />
| [[J-Flash SPI]] || (Q)SPI flash programming application.<br />
|-<br />
| [[J-Link Commander]] || Command-line tool with basic functionality for target analysis.<br />
|-<br />
| [[J-Link Registration]] || SEGGER J-Link Registration utility to register your SEGGER product such as a J-Link, J-Trace or Flasher.<br />
|-<br />
| [[JTAGLoad]] || Command line tool that opens an svf file and sends the data in it via J-Link / J-Trace or Flasher to the target.<br />
|-<br />
| [https://www.segger.com/downloads/flasher/UM08037.pdf U-Flash] || Tool for creating standalone Flasher projects.<br />
|}<br />
<br />
== Flasher overview ==<br />
Flasher connects to a PC using the USB/Ethernet/RS232 interface (what host interfaces are available depends on the Flasher model),<br />
running Windows, Linux & MacOS. In stand-alone mode,<br />
Flasher can be driven by the start/stop button, or via the RS232 interface (handshake control or ASCII interface).<br />
Flasher always has a 20-pin connector, which target interfaces are supported depends on the Flasher model:<br />
* Flasher ARM: JTAG and SWD are supported.<br />
* Flasher RX: JTAG is supported. Flasher comes with additional 14-pin RX adapter<br />
* Flasher PPC: JTAG is supported. Flasher comes with additional 14-pin PPC adapter.<br />
* Flasher PRO: JTAG and SWD are supported.<br />
* Flasher Compact: JTAG and SWD are supported.<br />
<br />
=== Features of Flasher ARM/PPC/RX/PRO ===<br />
* Three boot modes: PC-based mode, stand-alone mode, file access mode<br />
* Stand-alone JTAG/SWD programmer (Once set up, Flasher can be controlled without the use of PC program)<br />
* No power supply required, powered through USB<br />
* Supports internal and external flash devices<br />
* 128 MB memory for storage of target program<br />
* Can be used as J-Link (emulator) with a download speed of up to 720 Kbytes/second<br />
* Data files can updated via USB/Ethernet (using the J-Flash software), via FTP, via RS232 or via the file access mode of Flasher<br />
<br />
{| class="seggertable"<br />
|-<br />
! Flasher model !! Supported cores !! Supported target interfaces !! Flash programming speed (depending on target hardware)<br />
|-<br />
| Flasher ARM || ARM7/ARM9/Cortex-M || JTAG, SWD || between 170 and 300 Kbytes/second<br />
|-<br />
| Flasher RX || Renesas RX610, RX621, RX62N, RX62T || JTAG || between 30-300 Kbytes/second<br />
|-<br />
| Flasher PPC || Power PC e200z0 || JTAG || up to 138 Kbytes/second<br />
|-<br />
| Flasher PRO || ARM7/ARM9/Cortex-M Renesas RX610, RX621, RX62N, RX62T Power PC e200z0 || JTAG, SWD || between 30-300 Kbytes/ second<br />
|-<br />
|}<br />
<br />
==== Features of Flasher Compact ====<br />
<br />
* Three boot modes: PC-based mode, stand-alone mode, file access mode<br />
* Stand-alone JTAG/SWD programmer (Once set up, Flasher can be controlled without the use of PC program)<br />
* No power supply required, powered through USB<br />
* Supports internal and external flash devices<br />
* 128 MB memory for storage of target program<br />
* Can be used as J-Link (emulator) with a download speed of up to 720 Kbytes/second<br />
* Data files can updated via USB/Ethernet (using the J-Flash software) or via the file access mode of Flasher<br />
<br />
{| class="seggertable"<br />
|-<br />
! Flasher model !! Supported cores !! Supported target interfaces !! Flash programming speed (depending on target hardware)<br />
|-<br />
| Flasher ARM || ARM7/ARM9/Cortex-M || JTAG, SWD || between 170 and 300 Kbytes/second<br />
|-<br />
| Flasher RX || Renesas RX610, RX621, RX62N, RX62T || JTAG || between 30-300 Kbytes/second<br />
|-<br />
| Flasher PPC || Power PC e200z0 || JTAG || up to 138 Kbytes/second<br />
|-<br />
| Flasher Compact || ARM7/ARM9/Cortex-M Renesas RX610, RX621, RX62N, RX62T Power PC e200z0 || JTAG, SWD || between 30-300 Kbytes/ second<br />
|-<br />
|}<br />
<br />
==== Features of Flasher Portable/Flasher Portable PLUS ====<br />
<br />
* Stand-alone in-circuit-programmer (Once set up, Flasher can be controlled without the use of a PC program)<br />
* Powered by an internal rechargeable battery (standard batteries for Flasher Portable), no Laptop or external power supply required.<br />
* Multiple firmware images can be stored on Flasher<br />
* 128 MB memory for storage of target program<br />
* Flasher Portable PLUS supports a simple selection of up to 99 firmware images via buttons (since V7.90)<br />
* Supported CPUs: ARM Cortex, Legacy ARM7/9, Renesas RX, Freescale PowerPC<br />
* Supports internal and external flash<br />
* Free software updates<ref name="legitimateOwned" />, 1 year of support<br />
* Data files can be updated via the file access mode functionality or via J-Flash<br />
* Programming speed between 30-300 Kbytes/second (actual speed depends on target hardware)<br />
{{Note|1=Ethernet and RS232 as host interface are not available for Flasher Portable}}<br />
<references><br />
<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.<br />
As a legitimate owner of a SEGGER Flasher, you can always download the latest software free of charge.<br />
Though not planned and not likely, we reserve the right to change this policy.<br />
Note that older models may not be supported by newer versions of the software.<br />
Typically, we support older models with new software at least 3 years after end of life.<br />
</ref><br />
</references><br />
<br />
{| class="seggertable"<br />
|-<br />
! Supported cores !! Supported target interfaces !! Flash programming speed (depending on target hardware)<br />
|-<br />
| ARM7/ARM9/Cortex-M || JTAG, SWD || between 30-300 Kbytes/second<br />
|-<br />
| Renesas RX610, RX621, RX62N, RX62T || JTAG || between 170 and 300 Kbytes/second<br />
|-<br />
| Power PC e200z0 || JTAG || up to 138 Kbytes/second<br />
|-<br />
|}<br />
<br />
==== Working environment ====<br />
<br />
'''General'''<br><br />
The Flasher can operate from a PC with an appropriate software like J-Flash or in stand-alone mode.<br />
<br />
'''Host System'''<br><br />
IBM PC/AT or compatible CPU: 486 (or better) with at least 128MB of RAM,<br />
running Windows, Linux & MacOS. It needs to have a USB, Ethernet or RS232 interface available for communication with Flasher.<br />
<br />
'''Power supply'''<br><br />
Flasher Portable: 3x standard AAA batteries or 5V DC, min. 100 mA via USB connector.<br />
<br />
Flasher Portable PLUS: internal rechargeable 680mAh Li-Ion battery, min. 100 mA via USB connector.<br />
<br />
Other Flashers: 5V DC, min. 100 mA via USB connector.<br />
<br />
'''Installing Flasher PC-software'''<br><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><br />
More information about the package you can find in the similar [[J-Link Software and Documentation Pack]].<br><br />
The package includes U-Flash and J-Flash, the main tools for flashing targets:<br />
* J-Flash : J-Flash User Guide ([https://wiki.segger.com/UM08003_JFlash UM08003_JFlash.pdf]).<br />
* U-Flash : U-Flash User Guide ([https://www.segger.com/downloads/flasher/UM08037.pdf UM08037_UniversalFlashLoader.pdf]).<br />
<br />
=== Specifications ===<br />
<br />
<br />
==== Specifications for Flasher ARM ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Windows, Linux & MacOS<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C<br />
|-<br />
| Storage Temperature || -20 °C ... +60 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
!colspan="100%"| Mechanical<br />
|-<br />
| Size (without cables) || 121mm x 66mm x 30mm<br />
|-<br />
| Weight (without cables) || 119g<br />
|-<br />
!colspan="100%"| Available interfaces<br />
|-<br />
| USB Host interface || USB 2.0, full speed<br />
|-<br />
| Ethernet Host interface || 10/100 MBit<br />
|-<br />
| RS232 Host interface || RS232 9-pin<br />
|-<br />
| Target interface || JTAG 20-pin (14-pin adapter available)<br />
|-<br />
!colspan="100%"| JTAG Interface, Electrical<br />
|-<br />
| Power Supply || USB powered, 100mA for Flasher ARM. 500 mA if target is powered by Flasher ARM<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| Target supply voltage || Supply voltage is 5V, max.<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6 <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Max. JTAG speed || up to 12MHz<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
===== Flasher ARM download speed =====<br />
<br />
The following table lists the Flasher ARM performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! ARM7 memory download<br />
|-<br />
| Flasher ARM || 720 Kbytes/s (12MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
<br />
==== Specifications for Flasher RX ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Windows, Linux & MacOS<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C<br />
|-<br />
| Storage Temperature || -20 °C ... +60 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
!colspan="100%"| Mechanical<br />
|-<br />
| Size (without cables) || 121mm x 66mm x 30mm<br />
|-<br />
| Weight (without cables) || 119g<br />
|-<br />
!colspan="100%"| Available interfaces<br />
|-<br />
| USB Host interface || USB 2.0, full speed<br />
|-<br />
| Ethernet Host interface || 10/100 MBit<br />
|-<br />
| RS232 Host interface || RS232 9-pin<br />
|-<br />
| Target interface || JTAG 20-pin (shipped with 14-pin adapter for Renesas RX)<br />
|-<br />
!colspan="100%"| JTAG Interface, Electrical<br />
|-<br />
| Power Supply || USB powered, 100mA for Flasher RX. 500 mA if target is powered by Flasher RX<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| 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)<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6 <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Max. JTAG speed || up to 12MHz<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
===== Flasher RX download speed =====<br />
<br />
The following table lists the Flasher RX performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! Flasher RX600 series memory download<br />
|-<br />
| Flasher RX || 720 Kbytes/s (12MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
<br />
==== Specifications for Flasher PPC ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Windows, Linux & MacOS<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C<br />
|-<br />
| Storage Temperature || -20 °C ... +60 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
!colspan="100%"| Mechanical<br />
|-<br />
| Size (without cables) || 121mm x 66mm x 30mm<br />
|-<br />
| Weight (without cables) || 119g<br />
|-<br />
!colspan="100%"| Available interfaces<br />
|-<br />
| USB Host interface || USB 2.0, full speed<br />
|-<br />
| Ethernet Host interface || 10/100 MBit<br />
|-<br />
| RS232 Host interface || RS232 9-pin<br />
|-<br />
| Target interface || JTAG 20-pin (shipped with 14-pin adapter for Renesas PPC)<br />
|-<br />
!colspan="100%"| JTAG Interface, Electrical<br />
|-<br />
| Power Supply || USB powered, 100mA for Flasher PPC. 500 mA if target is powered by Flasher PPC<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| Target supply voltage || Supply voltage is 5V, max.<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6 <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Max. JTAG speed || up to 12MHz<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
===== Flasher RX download speed =====<br />
<br />
The following table lists the Flasher PPC performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! Memory download<br />
|-<br />
| Flasher PPC || 530 Kbytes/s (8 MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
<br />
==== Specifications for Flasher PRO ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Windows, Linux & MacOS<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C<br />
|-<br />
| Storage Temperature || -20 °C ... +60 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
!colspan="100%"| Mechanical<br />
|-<br />
| Size (without cables) || 121mm x 66mm x 30mm<br />
|-<br />
| Weight (without cables) || 119g<br />
|-<br />
!colspan="100%"| Available interfaces<br />
|-<br />
| USB Host interface || USB 2.0, full speed<br />
|-<br />
| Ethernet Host interface || 10/100 MBit<br />
|-<br />
| RS232 Host interface || RS232 9-pin<br />
|-<br />
| Target interface || JTAG 20-pin (14-pin adapter available)<br />
|-<br />
!colspan="100%"| JTAG Interface, Electrical<br />
|-<br />
| Power Supply || USB powered, 100mA for Flasher PRO. 500 mA if target is powered by Flasher PRO<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| Target supply voltage || Supply voltage is 5V, max.<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6 <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Max. JTAG speed || up to 12MHz<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
<br />
===== Supported CPU cores =====<br />
<br />
The Flasher PRO supports the following CPU cores:<br />
<br />
'''ARM Cortex'''<br><br />
* Cortex-A5<br />
* Cortex-A8<br />
* Cortex-A9<br />
* Cortex-R4<br />
* Cortex-R5<br />
* Cortex-M0<br />
* Cortex-M0+<br />
* Cortex-M1<br />
* Cortex-M3<br />
* Cortex-M4<br />
<br />
'''ARM (legacy cores)'''<br><br />
* ARM720T<br />
* ARM7TDMI<br />
* ARM7TDMI-S<br />
* ARM920T<br />
* ARM922T<br />
* ARM926EJ-S<br />
* ARM946E-S<br />
* ARM966E-S<br />
* ARM1136JF-S<br />
* ARM1136J-S<br />
* ARM1156T2-S<br />
* ARM1156T2F-S<br />
* ARM1176JZ-S<br />
* ARM1176JZF<br />
* ARM1176JZF-S<br />
<br />
'''Renesas RX'''<br><br />
* RX111<br />
* RX210<br />
* RX220<br />
* RX21A<br />
* RX610<br />
* RX621<br />
* RX62G<br />
* RX62N<br />
* RX62T<br />
* RX630<br />
* RX631<br />
* RX63N<br />
* RX63T<br />
<br />
'''Freescale Power PC'''<br><br />
* e200z0<br />
<br />
===== Supported Target interfaces =====<br />
<br />
The Flasher PRO supports the following target interfaces:<br />
<br />
* JTAG<br />
* SWD<br />
* FINE<br />
* SPD<br />
<br />
===== Flasher PRO download speed =====<br />
<br />
The following table lists the Flasher PRO performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! ARM7 memory download<br />
|-<br />
| Flasher PRO || 720 Kbytes/s (12MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
<br />
==== Specifications for Flasher Compact ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Microsoft Windows (x86/x64)<br>Linux (x86/x64/Arm)<br>macOS (x86/Apple M1)<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C<br />
|-<br />
| Storage Temperature || -20 °C ... +65 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
| Size (without cables) || 70mm x 45mm x 18mm<br />
|-<br />
| Weight (without cables) || 40g<br />
|-<br />
| USB Host interface || USB 2.0 (Hi-Speed); Micro USB<br />
|-<br />
| Target interface || JTAG 20-pin (14-pin adapter available)<br />
|-<br />
| Power Supply || USB powered, 130mA (idle)<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| Target supply voltage || Supply voltage is 5V, max.<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
| Supported target interfaces || SPI, QSPI, 8051 C2, cJTAG, FINE, ICSP, IIC, ISP, JTAG, PDI, SPD, SWD, SWIM, UART, UPDI<br />
|-<br />
| Serial transfer rate between Flasher Compact and target || Up to 50 MHz (Depending on target interface)<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6 <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
===== Supported CPU cores =====<br />
<br />
The Flasher Compact supports the following CPU cores:<br />
'''ARM Cortex'''<br><br />
* Cortex-A5<br />
* Cortex-A8<br />
* Cortex-A9<br />
* Cortex-R4<br />
* Cortex-R5<br />
* Cortex-M0<br />
* Cortex-M0+<br />
* Cortex-M1<br />
* Cortex-M3<br />
* Cortex-M4<br />
<br />
'''ARM (legacy cores)'''<br><br />
* ARM720T<br />
* ARM7TDMI<br />
* ARM7TDMI-S<br />
* ARM920T<br />
* ARM922T<br />
* ARM926EJ-S<br />
* ARM946E-S<br />
* ARM966E-S<br />
* ARM1136JF-S<br />
* ARM1136J-S<br />
* ARM1156T2-S<br />
* ARM1156T2F-S<br />
* ARM1176JZ-S<br />
* ARM1176JZF<br />
* ARM1176JZF-S<br />
<br />
'''Renesas RX'''<br><br />
* RX111<br />
* RX210<br />
* RX220<br />
* RX21A<br />
* RX610<br />
* RX621<br />
* RX62G<br />
* RX62N<br />
* RX62T<br />
* RX630<br />
* RX631<br />
* RX63N<br />
* RX63T<br />
<br />
'''Freescale Power PC'''<br><br />
* e200z0<br />
<br />
===== Flasher Compact download speed =====<br />
<br />
The following table lists the Flasher Compact performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! ARM7 memory download<br />
|-<br />
| Flasher Compact || 720 Kbytes/s (12MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
<br />
==== Specifications for Flasher Portable PLUS ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Windows, Linux & MacOS<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C (normal operation)<br>+5 °C ... +45 °C (battery charging)<br />
|-<br />
| Storage Temperature || -20 °C ... +45 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
| 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)<br />
|-<br />
| Charging via USB || 70 minutes (at 1A charging current)<br />
|-<br />
!colspan="100%"| Mechanical<br />
|-<br />
| Size (without cables) || 126mm x 70mm x 28mm<br />
|-<br />
| Weight (without cables) || 140g<br />
|-<br />
!colspan="100%"| Available interfaces<br />
|-<br />
| USB Host interface || USB 2.0<br />
|-<br />
| Target interface || Standard 20-pin 0.1" connector (Adapters available).<br />
|-<br />
!colspan="100%"| Target Interface, Electrical<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| Target supply voltage || Supply voltage is 4.5V, max. (depends on the current battery voltage).<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6 <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Max. JTAG speed || up to 12MHz<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
===== Supported CPU cores =====<br />
<br />
The Flasher Portable PLUS supports the following CPU cores:<br />
<br />
'''ARM Cortex'''<br><br />
* Cortex-A5<br />
* Cortex-A8<br />
* Cortex-A9<br />
* Cortex-R4<br />
* Cortex-R5<br />
* Cortex-M0<br />
* Cortex-M0+<br />
* Cortex-M1<br />
* Cortex-M3<br />
* Cortex-M4<br />
<br />
'''ARM (legacy cores)'''<br><br />
* ARM720T<br />
* ARM7TDMI<br />
* ARM7TDMI-S<br />
* ARM920T<br />
* ARM922T<br />
* ARM926EJ-S<br />
* ARM946E-S<br />
* ARM966E-S<br />
* ARM1136JF-S<br />
* ARM1136J-S<br />
* ARM1156T2-S<br />
* ARM1156T2F-S<br />
* ARM1176JZ-S<br />
* ARM1176JZF<br />
* ARM1176JZF-S<br />
<br />
'''Renesas RX'''<br><br />
* RX111<br />
* RX210<br />
* RX220<br />
* RX21A<br />
* RX610<br />
* RX621<br />
* RX62G<br />
* RX62N<br />
* RX62T<br />
* RX630<br />
* RX631<br />
* RX63N<br />
* RX63T<br />
<br />
'''Freescale Power PC'''<br><br />
* e200z0<br />
<br />
===== Supported Target interfaces =====<br />
<br />
The Flasher Portable PLUS supports the following target interfaces:<br />
* JTAG<br />
* SWD<br />
* FINE<br />
* SPD<br />
<br />
===== Flasher Portable PLUS download speed =====<br />
<br />
The following table lists the Flasher Portable PLUS performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! ARM7 memory download<br />
|-<br />
| Flasher PRO || 720 Kbytes/s (12MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
<br />
==== Specifications for Flasher Portable ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Windows, Linux & MacOS<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C<br />
|-<br />
| Storage Temperature || -20 °C ... +65 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
| Power Supply || a) USB powered, 100mA for Flasher Portable. 500 mA if target is powered by Flasher Portable<br>b) Batteries powered (3xAAA)<br />
|-<br />
!colspan="100%"| Mechanical<br />
|-<br />
| Size (without cables) || 130mm x 65mm x 25mm<br />
|-<br />
| Weight (without cables) || 120g<br />
|-<br />
!colspan="100%"| Available interfaces<br />
|-<br />
| USB Host interface || USB 2.0<br />
|-<br />
| Target interface || Standard 20-pin 0.1" connector (Adapters available).<br />
|-<br />
!colspan="100%"| Target Interface, Electrical<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| Target supply voltage || Supply voltage is 4.5V, max. (depends on the current battery voltage).<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6V <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Max. JTAG speed || up to 12MHz<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
===== Supported CPU cores =====<br />
<br />
The Flasher Portable supports the following CPU cores:<br />
<br />
'''ARM Cortex'''<br><br />
* Cortex-A5<br />
* Cortex-A8<br />
* Cortex-A9<br />
* Cortex-R4<br />
* Cortex-R5<br />
* Cortex-M0<br />
* Cortex-M0+<br />
* Cortex-M1<br />
* Cortex-M3<br />
* Cortex-M4<br />
<br />
'''ARM (legacy cores)'''<br><br />
* ARM720T<br />
* ARM7TDMI<br />
* ARM7TDMI-S<br />
* ARM920T<br />
* ARM922T<br />
* ARM926EJ-S<br />
* ARM946E-S<br />
* ARM966E-S<br />
* ARM1136JF-S<br />
* ARM1136J-S<br />
* ARM1156T2-S<br />
* ARM1156T2F-S<br />
* ARM1176JZ-S<br />
* ARM1176JZF<br />
* ARM1176JZF-S<br />
<br />
'''Renesas RX'''<br><br />
* RX111<br />
* RX210<br />
* RX220<br />
* RX21A<br />
* RX610<br />
* RX621<br />
* RX62G<br />
* RX62N<br />
* RX62T<br />
* RX630<br />
* RX631<br />
* RX63N<br />
* RX63T<br />
<br />
'''Freescale Power PC'''<br><br />
* e200z0<br />
<br />
===== Supported Target interfaces =====<br />
<br />
The Flasher Portable supports the following target interfaces:<br />
<br />
* JTAG<br />
* SWD<br />
* FINE<br />
* SPD<br />
<br />
===== Flasher Portable download speed =====<br />
<br />
The following table lists the Flasher Portable performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! ARM7 memory download<br />
|-<br />
| Flasher PRO || 720 Kbytes/s (12MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
== Working with Flasher ==<br />
<br />
This chapter describes functionality and how to use Flasher.<br />
<br />
=== Flasher Portable PLUS ===<br />
<br />
The Flasher Portable PLUS is a portable version of SEGGERs Flasher family,<br />
which has been designed to fill the need of an extremely portable, production grade,<br />
Flash programmer used for in-field firmware updates. No need to be tethered to an outlet,<br />
it is powered by an integrated Li-Ion cell (680mAh).<br />
The Flasher Portable PLUS programs flash targets in stand-alone mode or via J-Flash PC software.<br><br />
<br />
Furthermore the Flasher Portable PLUS allows the user to select between 99 data images to be programmed (since V7.90).<br />
The images can be easily selected by using the SEL button on the front of the housing.<br />
For more information about support for multiple images, please refer to [[#Multiple File Support | Multiple File Support]].<br><br />
For setup and configuration purposes, the Flasher Portable PLUS connects to a PC via USB interface,<br />
running Windows, Linux & MacOS and has a built-in standard 20-pin J-Link target connector.<br><br />
<br />
{{Note|1=Ethernet and RS232 as host interface are not available for the Flasher Portable PLUS.}}<br />
<br />
==== Housing & Buttons ====<br />
<br />
The Flasher Portable PLUS comes with a display, which is for example used to represent the status of an ongoing flash progress.<br />
Furthermore, there are three buttons which allow the user to control Flasher Portable PLUS.<br />
For a detailed description of the functions, take a look at the table below:<br />
<br />
<!-- LG xxxxxx edit image with labels for buttons? (Is this actually necessary? Buttons are basically self-explanatory...) --><br />
[[File:Flasher_Portable_PLUS.png | 500px]]<br />
<br />
{| class="seggertable"<br />
|-<br />
! Button !! Description<br />
|-<br />
| Program || Start programming process with the currently selected image.<br />
|-<br />
| Select image || Select the image to be programmed next time the Program button is pressed.<br />
|-<br />
| 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.<br />
|-<br />
|}<br />
<br />
==== Configuration ====<br />
<br />
The Flasher Portable PLUS has some configuration options the other Flashers do not have.<br />
{| class="seggertable"<br />
|-<br />
! Option !! Description !! Value range !! Default value<br />
|-<br />
| AutoPowerOffOnIdle || Specifies the time interval after which the Flasher Portable will turn off without any user action || 1 to 3600 || 60<br />
|-<br />
| ShowDatCRCAfterProgramming || Activates displaying the data file CRC after the programming in the pop up message || 0 = inactive, 1 = active || 0<br />
|-<br />
|}<br />
<br />
If the <tt>Flasher.ini</tt> does not contain a <tt>[Config]</tt> section with the configuration option, the default value is used.<br />
<br />
'''Example:'''<br><br />
This sample will show the data file CRC after the programming and the auto power of is set to five minutes (=300 seconds).<br />
<br />
<source lang="c"><br />
[CONFIG]<br />
AutoPowerOffOnIdle = "300"<br />
ShowDatCRCAfterProgramming = "1"<br />
</source><br />
<br />
=== Flasher Portable ===<br />
<br />
The Flasher Portable is a portable version of SEGGERs Flasher family, which has been designed to fill the need of an extremely portable,<br />
production grade, Flash programmer used for in-field firmware updates. No need to be tethered to an outlet,<br />
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><br />
<br />
Furthermore the Flasher Portable allows the user to select between four data images to be programmed.<br />
The images can be easily selected by using the arrow buttons on the front of the housing.<br />
For more information about support for multiple images, please refer to [[#Multiple File Support | Multiple File Support]].<br><br />
For setup and configuration purposes, the Flasher Portable connects to a PC via USB interface,<br />
running Windows, Linux & MacOS and has a built-in standard 20-pin J-Link target connector.<br><br />
<br />
{{Note|1=Ethernet and RS232 as host interface are not available for the Flasher Portable.}}<br />
<br />
==== Housing & Buttons ====<br />
<br />
The Flasher Portable comes with several leds which are for example used to represent the status of an ongoing flash progress.<br />
Furthermore, there are three buttons which allow the user to control Flasher Portable.<br />
For a detailed description of the functions, take a look at the two tables below:<br />
<br />
<!-- LG xxxxxx edit image with labels for buttons?--><br />
[[File:Flasher_Portable_Top_2.png | 500px]]<br />
<br />
{| class="seggertable"<br />
|-<br />
! LED !! Description<br />
|-<br />
| ACTIVE || GREEN. Blinks while the Flasher Portable is busy / performs operations on the target.<br />
|-<br />
| PASS/FAIL || GREEN/RED. Indicates, if the last flashing cycle was successful.<br />
<ul><br />
<li> GREEN: Flashing cycle completed successfully.</li><br />
<li> RED: Flashing cycle completed with error.</li><br />
</ul><br />
|-<br />
| 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]].<br />
|-<br />
| POWER || GREEN: Indicates if Flasher is currently powered. Blinks while Flasher Portable tries to enumerate via USB.<br />
|-<br />
| 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.<br />
|-<br />
|}<br />
<br />
{| class="seggertable"<br />
|-<br />
! Button !! Description<br />
|-<br />
| Program || Start programming process with the currently selected image.<br />
|-<br />
| Select image || Select the image to be programmed next time the <tt>Program</tt> button is pressed.<br />
|-<br />
| 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<br />
|-<br />
|}<br />
<br />
=== File system ===<br />
<br />
The Flasher supports 8.3 filenames only (8 characters filename, 3 characters file extension).<br />
Using longer filenames may result in incorrect operation. Integrated functions,<br />
like the FTP server or the terminal server, will refuse writing files with long filenames.<br />
<br />
=== Setting up the IP interface ===<br />
<br />
Setting up the IP interface<br />
Some of the Flasher models come with an additional Ethernet interface to communicate with the host system.<br />
These Flashers also come with a built-in webserver which allows some basic setup of the emulator,<br />
e.g. configuring a default gateway which allows using it even in large intranets. For more information,<br />
please refer to [[#TCP Services | TCP Services]].<br />
<br />
==== Connecting the first time ====<br />
<br />
When connecting Flasher the first time, it attempts to acquire an IP address via DHCP.<br />
The recommended way for finding out which IP address has been assigned to Flasher is, to use the J-Link Configurator.<br />
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.<br />
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''.<br />
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,<br />
please refer to ''UM08001, J-Link / J-Trace User Guide'', chapter ''Setup'', section ''Setting up the IP interface''.<br />
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]].<br />
<br />
=== Operating modes ===<br />
<br />
All Flashers except the Flasher ATE are able to boot in 3 different modes:<br />
<br />
* PC-based mode<br />
* Stand-alone mode<br />
* File access mode<br />
<br />
{{Note|1=The Flasher ATE only supports the stand-alone mode.}}<br />
<br />
'''Definition PC-based mode'''<br><br />
Flasher is connected to a PC via USB/Ethernet and controlled by a PC application (J-Flash).<br />
If there is an RS232 connection to a PC, does not have any influence on if PC-based mode is entered or not.<br />
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, ...)<br />
<br />
'''Definition Stand-alone mode'''<br><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.<br />
<br />
'''Definition file access mode'''<br><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.<br />
In this mode, Flasher enumerates as a mass storage device (like an USB Stick) at the host PC.<br />
In this mode, configuration + data files can be manually placed on the Flasher and the Flasher logfile can be read out.<br />
If you are using a self-powered Flasher such as the Flasher Portable Plus, the Flasher must be turned off before connecting it.<br />
<br />
==== PC-based mode ====<br />
If you want to use Flasher for the first time you need to install the J-Link software and documentation package.<br />
After installation, connect Flasher to the host PC via USB or Ethernet.<br />
For more information about how to install the J-Link software and documentation package please refer to [[J-Link Software and Documentation Pack]].<br />
<br />
===== Connecting the target system =====<br />
<br />
'''Power-on sequence'''<br><br />
In general, Flasher should be powered on before connecting it with the target device.<br />
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.<br />
Power-on the device after you connected Flasher to it. Flasher will boot in "PC-based mode".<br />
<br />
'''Verifying target device connection with J-Link.exe'''<br><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.<br />
Then start the J-Link command line tool <tt>JLink.exe</tt>,<br />
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.<br />
The screenshot below shows the output of <tt>JLink.exe</tt>.<br />
<br />
[[File:flasher_jlinkmode.gif]]<br />
<br />
===== LED status indicators =====<br />
<br />
In PC-based mode, there are also certain LED status codes defined:<br />
<br />
{| class="seggertable"<br />
|-<br />
! # !! Status of LED !! Meaning<br />
|-<br />
| 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.<br />
|-<br />
| 0 || GREEN<br>constant || Flasher enumeration process is complete and it is ready to be controlled by a PC application.<br />
|-<br />
|}<br />
<br />
==== Stand-alone mode ====<br />
<br />
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]].<br />
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).<br />
In the "stand-alone mode" Flasher can be used as a stand-alone flash programmer.<br><br />
<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]].}}<br />
<br />
===== LED status indicators =====<br />
Progress and result of an operation is indicated by Flasher's LEDs. The behavior is different for J-Link and stand-alone mode.<br />
For a definition of the different modes, please refer to [[#Operating modes | Operating modes]].<br />
The following table describes the behavior of the LEDs in stand-alone mode.<br />
<br />
{| class="seggertable"<br />
|-<br />
! # !! Status of LED !! Meaning<br />
|-<br />
| 0 || GREEN<br>constant || Flasher waits for a start trigger to perform an operation in stand-alone mode.<br />
|-<br />
| 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><br />
|-<br />
| 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.<br />
|-<br />
|}<br />
Older Flasher models have a different behavior.<br />
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:<br />
<br />
* 1621xxxxx (Flasher ARM V2)<br />
* 1630xxxxx (Flasher ARM V3)<br />
* 4210xxxxx (Flasher PPC V1)<br />
* 4110xxxxx (Flasher RX V1)<br />
<br />
{| class="seggertable"<br />
|-<br />
! # !! Status of LED !! Meaning<br />
|-<br />
| 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.<br />
|-<br />
| 1 || GREEN<br>constant || Connect to target and perform init sequence.<br />
|-<br />
| 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><br />
|-<br />
| 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.<br />
|-<br />
|}<br />
<br />
==== File access mode ====<br />
<br />
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".<br />
If you are using a self-powered Flasher such as the Flasher Portable Plus, the Flasher must be turned off before connecting it.<br />
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.<br />
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>.<br />
<br />
[[File:flasher_mode_msd.gif]]<br />
<br />
<tt>FLASHER.CFG</tt> contains the configuration settings for programming the target device and <tt>FLASHER.DAT</tt> contains the data to be programmed.<br />
<tt>FLASHER.LOG</tt> contains all logging information about the commands, performed in stand-alone mode.<br />
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><br />
<br />
Currently, J-Flash does not support to configure Flasher for automated serial number programming.<br><br />
<br />
If you want to configure multiple Flasher for the same target you do not have to use J-Flash all the time.<br />
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".<br />
<br />
=== Setting up Flasher for stand-alone mode ===<br />
{{Note| All Options how to set up the Flasher for stand-alone mode you can find here: [[Flasher/Download project to Flasher|Download project to the Flasher]]}}<br />
<br />
In order to set up Flasher for the stand-alone mode it needs to be configured once using the J-Flash software.<br />
For more information about J-Flash, please refer to the ''J-Flash User Guide''.<br><br />
<br />
After starting J-Flash, open the appropriate J-Flash project for the target Flasher shall be configured for, by selecting '''File''' -> '''Open Project'''.<br />
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><br />
<br />
After the appropriate project has been opened / created, the data file which shall be programmed needs to be loaded, by selecting '''File''' -> '''Open'''.<br />
After this J-Flash should look like in the screenshot below.<br />
<br />
[[File:jflash_projectfile_datafile.gif]]<br />
<br />
Before downloading the configuration (project) and program data (data file) to Flasher, the connection type (USB/IP) needs to be selected in the project.<br />
These settings are also saved on a per-project basis, so this also only needs to be setup once per J-Flash project.<br />
The connection dialog is opened by clicking '''Options''' -> '''Project settings''' -> '''General'''.<br />
<br />
[[File:jflash_connection_dialog.gif]]<br />
<br />
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.<br />
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.<br />
The user then can simply select the Flash he wants to download the configuration to.<br />
<br />
[[File:EmuSelectionDialog.gif]]<br />
<br />
In order to download the configuration and program data to the Flasher, simply select '''File''' -> '''Download config & data file to Flasher'''.<br />
<br />
[[File:jflash_download_to_emul.gif]]<br />
<br />
The J-Flash log window indicates that the download to the emulator was successful.<br />
<br />
[[File:jflash_download_to_emu_succ.gif]]<br />
<br />
From now on, Flasher can be used in stand-alone mode (without host PC interaction) for stand-alone programming.<br />
<br />
==== Preparing for stand-alone operation manually ====<br />
<br />
As an alternative, J-Flash can also be used to save config and data file to a hard drive.<br><br />
<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,<br />
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.<br />
<br />
'''Creating config and data files'''<br><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><br />
<br />
For some devices, additional files (*.PEX) are needed.<br />
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.<br />
<br />
'''About *.PEX files'''<br><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,<br />
the following needs to be taken care of:<br><br />
<br />
For some devices, special connect, reset etc. sequences are necessary which are stored in so-called *.PEX files on the Flasher.<br><br />
<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><br />
<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><br />
The *.PEX files need to be placed in a subdirectory with the same name as the corresponding *.cfg file.<br />
J-Flash creates a directory with the correct name automatically when a config file is created.<br><br />
<br />
Example:<br><br />
<br />
MyConf0 is a project for a device that requires a *.PEX file for connect.<br><br />
MyConf1 is a project for a device that requires no *.PEX file at all.<br />
<br />
[[File:PEX_File_Flasher.png]]<br />
<br />
=== Universal Flash Loader mode ===<br />
<br />
As an alternative to the stand-alone mode, configured via J-Flash, there is the Universal Flash Loader mode.<br />
While the normal stand-alone mode relies on using the debug interface of the device, the Universal Flash Loader<br />
mode uses device or vendor specific programming interfaces and protocols and therefore it is independent of the<br />
CPU core.<br><br />
<br />
The Universal Flash Loader is available for the following Flasher models:<br />
* Flasher PRO<br />
* Flasher Compact<br />
* Flasher Portable PLUS<br />
<br />
For some of the supported devices, SEGGER offers specific adapters.<br />
<br />
==== Preparing manually ====<br />
<br />
The Universal Flash Loader uses an configuration file (*.UNI), a device specific flash programming algorithm (*.PEX) and a data file (*.DAT).<br />
<br />
===== Configuration =====<br />
<br />
The configuration file basically is split into three parts.<br />
The first part, the section [DEVICE], controls the generic behavior of the Universal Flash Loader.<br />
It specifies which protocol driver and data file to use. It allows enabling and configuring target power<br />
and it defines which actions to perform.<br />
The second part consists of one or more [BANKx] sections, which contain information about the memories.<br />
The third part, the section [CONFIG], includes configuration settings for the protocol driver.<br><br />
<br />
An .UNI file might look as follows:<br><br />
<br />
<source lang="c"><br />
[OPTIONS]<br />
TargetPower = "0"<br />
ChipErase = "0"<br />
<br />
[TASKS]<br />
CheckBlank = "1"<br />
Erase = "1"<br />
Program = "1"<br />
Verify = "1"<br />
Secure = "1"<br />
<br />
[DEVICE]<br />
Algo = "RL78.PEX"<br />
Data = "ALL_6k.dat"<br />
<br />
[BANK0]<br />
; Code Flash<br />
Base = "0x00000000"<br />
Size = "0x00004000"<br />
Sect = "0x00000400"<br />
<br />
[BANK1]<br />
; Data Flash<br />
Base = "0x000F1000"<br />
Size = "0x00000800"<br />
Sect = "0x00000400"<br />
<br />
[CONFIG]<br />
BaudRate = "1000000"<br />
ClearConfigOnConnect = "0x00"<br />
Security = "0xFF"<br />
ShieldStart = "0x0000"<br />
ShieldEnd = "0x000F"<br />
</source><br />
<br />
'''[OPTIONS]'''<br><br />
'''TargetPower'''<br><br />
If set to a value >0, power is applied to the target.<br />
The value defines the delay (in ms) after enabling the target power supply and before starting to communicate with the target.<br />
<br />
'''ChipErase'''<br><br />
If set to 1, the chip erase function is called for erasing the chip.<br><br />
{{Note|1=Do not enable this setting if the flash programming algorithm does not support chip erase.}}<br />
<br />
'''[TASKS]'''<br><br />
'''CheckBlank'''<br><br />
Defines if a blank check should be performed before erasing a sector.<br />
<br />
'''Erase'''<br><br />
Defines if the sector should be erased before programming.<br />
<br />
'''Program'''<br><br />
Defines if the sector should be programmed.<br />
<br />
'''Verify'''<br><br />
Defines if the sector should be verified after programming.<br />
<br />
'''Secure'''<br><br />
Defines if the device should be secured or protected against read-out after verifying.<br />
<br />
'''[DEVICE]'''<br><br />
'''Algo'''<br><br />
File name of the flash programming algorithm. This file is provided by SEGGER and will typically support a series of devices.<br />
<br />
'''Data'''<br><br />
File name of the data file to program. The Flasher only supports the Flasher .dat file format.<br />
Flasher .dat files can be generated by J-Flash or Universal Flash Loader and offer high performance together with high flexibility.<br />
<br />
'''[BANKx]'''<br><br />
x blocks with configuration data for the flash banks. All three parameters (Base, Size and Sect) are mandatory.<br />
<br />
'''Base'''<br><br />
Base address of the flash bank.<br />
<br />
'''Size'''<br><br />
Total size of the flash bank.<br />
<br />
'''Sect'''<br><br />
Sector size of the flash bank.<br />
<br />
'''[CONFIG]'''<br><br />
This section includes specific configuration data for the flash programming algorithm.<br><br />
There are no general parameters.<br />
<br />
{{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. }}<br />
<br />
==== Preparing using the PC utility ====<br />
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.<br />
<br />
[[File:Universal Flash Loader.png]]<br />
<br />
The Universal Flash Loader Configurator comes with a large list of devices and flash programming algorithms. If you are going to<br />
use a device from one of the supported families which currently is not available in the utility, feel free to contact the support.<br />
<br />
=== Multiple File Support ===<br />
<br />
It is also possible to have multiple data files and config files on Flasher, to make Flasher more easy to use in production environment.<br />
To choose the correct configuration file and data file pair, a <tt>FLASHER.INI</tt> file is used.<br />
This init file contains a <tt>[FILES]</tt> section which describes which configuration file and which data file should be used for programming.<br />
A sample content of a FLASHER.INI file is shown below:<br><br />
<br />
<source><br />
[FILES]<br />
DataFile = "Flasher1.dat"<br />
ConfigFile = "Flasher1.cfg"<br />
</source><br />
<br />
Using this method all configuration files and data files which are used in the production only have to be downloaded once.<br />
From there on a configuration file / data file pair can be switched by simply replacing the <tt>FLASHER.INI</tt> by a new one,<br />
which contains the new descriptions for the configuration file and data file. The <tt>FLASHER.INI</tt> can be replaced in two ways:<br />
<ol><br />
<li>Boot Flasher in file access mode in order to replace the <tt>FLASHER.INI</tt></li><br />
<li><br />
If Flasher is already integrated into the production line, runs in stand-alone mode and can not be booted in other mode:<br />
Use the file I/O commands provided by the ASCII interface of Flasher, to replace the <tt>FLASHER.INI</tt>.<br />
For more information about the file I/O commands, please refer to [[#File I/O commands | File I/O commands]].<br />
</li><br />
</ol><br />
{{Note|1=Flasher with hardware version 4 and lower only supports 8.3 filenames only (8 characters filename, 3 characters file extension). Using longer filenames may result in incorrect operation.}}<br />
<br />
==== Flasher Portable specifics ====<br />
<br />
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><br />
<br />
Which config / data file pair is used for which image selection position is determined by the contents of the FLASHER.INI.<br />
For this, the FLASHER.INI contents in the <tt>[FILES]</tt> section have been extended.<br />
The sample below shows how to enable the user to select between four different images on the Flasher portable via the select / arrow button:<br />
<br />
<source><br />
[FILES]<br />
DataFile = "First.dat"<br />
ConfigFile = "First.cfg"<br />
DataFile1 = "Second.dat"<br />
ConfigFile1 = "Second.cfg"<br />
DataFile2 = "Third.dat"<br />
ConfigFile2 = "Third.cfg"<br />
DataFile3 = "Fourth.dat"<br />
ConfigFile3 = "Fourth.cfg"<br />
</source><br />
<br />
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.<br />
From there on, switching between the files can be done by simply using the selection button of Flasher Portable.<br />
<br />
===== Example =====<br />
<br />
1 Target, 2 Datafiles (e.g. boot loader und application) --> same configuration file (*.CFG) but different data files (*.DAT) should be used.<br><br />
<br />
* Open pre-configured J-Flash project<br />
* File -> Save Flasher config file ... (DEFAULT.CFG)<br />
* Open data file 1 (boot loader)<br />
* File -> Save Flasher data file ... (BOOT.DAT)<br />
* Open data file 2 (application)<br />
* File -> Save Flasher data file ... (APP.DAT)<br />
* Create the a FLASHER.INI file (content see below)<br />
* Connect the Flasher in file access mode to the PC<br />
* Copy DEFAULT.CFG, BOOT.DAT, APP.DAT and FLASHER.INI on the Flasher<br />
<br />
FLASHER.INI content:<br><br />
<br />
<source><br />
[FILES]<br />
DataFile = "BOOT.DAT"<br />
ConfigFile = "DEFAULT.CFG"<br />
DataFile1 = "APP.DAT"<br />
ConfigFile1 = "DEFAULT.CFG"<br />
</source><br />
<br />
==== Flasher Portable PLUS specifics ====<br />
<br />
Flasher Portable PLUS allows to choose between 99 configuration and data file pairs during runtime by using the select button on the front of Flasher Portable PLUS.<br><br />
<br />
Which config / data file pair is used for which image selection position is determined by the contents of the FLASHER.INI.<br />
For this, the FLASHER.INI may contain several <tt>[BATCH]</tt> sections.<br />
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:<br />
<br />
<source><br />
[BATCH]<br />
DataFile = "First.dat"<br />
ConfigFile = "First.cfg"<br />
[BATCH1]<br />
DataFile = "Second.dat"<br />
ConfigFile = "Second.cfg"<br />
[BATCH2]<br />
DataFile = "Third.dat"<br />
ConfigFile = "Third.cfg"<br />
[BATCH7]<br />
DataFile = "Proj_8.dat"<br />
ConfigFile = "Proj_8.cfg"<br />
[BATCH15]<br />
DataFile = "Proj_16.dat"<br />
ConfigFile = "Proj_16.cfg"<br />
</source><br />
<br />
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.<br />
From there on, switching between the files can be done by simply using the selection button of Flasher Portable PLUS.<br />
<br />
Please also consider the chapter [[#Batch Programming in stand-alone mode | Batch Programming in stand-alone mode]].<br />
<br />
{{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.}}<br />
{{Note|1=You may have gaps in the list. The missing entries will be skipped when selecting the next configuration.}}<br />
{{Note|1=The <tt>[Files]</tt> section is supported by the Flasher Portable PLUS, too. But the number of configuration is limited to four.}}<br />
<br />
===== Example =====<br />
<br />
1 Target, 2 Datafiles (e.g. boot loader und application) --> same configuration file (*.CFG) but different data files (*.DAT) should be used.<br><br />
<br />
* Open pre-configured J-Flash project<br />
* File -> Save Flasher config file ... (DEFAULT.CFG)<br />
* Open data file 1 (boot loader)<br />
* File -> Save Flasher data file ... (BOOT.DAT)<br />
* Open data file 2 (application)<br />
* File -> Save Flasher data file ... (APP.DAT)<br />
* Create the a FLASHER.INI file (content see below)<br />
* Connect the Flasher in file access mode to the PC<br />
* Copy DEFAULT.CFG, BOOT.DAT, APP.DAT and FLASHER.INI on the Flasher<br />
<br />
FLASHER.INI content:<br><br />
<br />
<source><br />
[BATCH]<br />
DataFile = "BOOT.DAT"<br />
ConfigFile = "DEFAULT.CFG"<br />
DisplayName = "Bootloader"<br />
[BATCH1]<br />
DataFile = "APP.DAT"<br />
ConfigFile = "DEFAULT.CFG"<br />
DisplayName = "Application"<br />
[BATCH2]<br />
DataFile = "BOOT.DAT"<br />
ConfigFile = "DEFAULT.CFG"<br />
DataFile1 = "APP.DAT"<br />
ConfigFile1 = "DEFAULT.CFG"<br />
DisplayName = "BL and App"<br />
</source><br />
<br />
=== Custom labels ===<br />
<br />
Flasher supports to assign custom labels to configurations ("Project Display Text" in U-Flash). This allows to specify easy to remember names for configurations that are stored on the Flasher.<br />
<br />
==== Hardware and software requirements ====<br />
This feature is supported by the following models:<br />
* Flasher Portable PLUS<br />
<br />
This feature is supported since V6.30e of the software package and firmware<br />
<br />
==== Assigning labels ====<br />
The configuration and data file pairs are specified in the <tt>FLASHER.INI</tt> file:<br />
<source><br />
[FILES]<br />
DataFile = "IMAGE0.dat"<br />
ConfigFile = "IMAGE0.cfg"<br />
DataFile1 = "IMAGE1.dat"<br />
ConfigFile1 = "IMAGE1.cfg"<br />
</source><br />
<br />
By default, Flasher will show the names of the configuration and data file:<br />
[[File:FW1_smartwatch_nolabel.png]]<br />
[[File:FW2_smart_meter_nolabel.png]]<br />
<br />
By adding <tt>DisplayName</tt>, <tt>DisplayName1</tt>, ... keys to the <tt>FLASHER.INI</tt>, a custom label can be shown instead:<br />
<source><br />
[FILES]<br />
DisplayName = "FW smartwatch"<br />
DataFile = "IMAGE0.dat"<br />
ConfigFile = "IMAGE0.cfg"<br />
DisplayName1 = "FW smart meter"<br />
DataFile1 = "IMAGE1.dat"<br />
ConfigFile1 = "IMAGE1.cfg"<br />
</source><br />
<br />
The images will now be shown as follows:<br />
[[File:FW1_smartwatch_label.png]]<br />
[[File:FW2_smart_meter_label.png]]<br />
<br />
==== Considerations ====<br />
* 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.<br />
<br />
=== Programming multiple targets ===<br />
<br />
It is possible to program multiple targets which are located in a JTAG chain.<br />
The targets will be programmed each with a configuration and a data file.<br><br />
The configuration for the desired target must be selected before it can be programmed,<br />
this can be done with the <tt>#SELECT</tt> command.<br />
For more information how to use the <tt>#SELECT</tt> command please refer to the [[#ASCII_command_interface|ASCII command interface]].<br />
<br />
'''Example'''<br><br />
Three devices should be programmed.<br><br />
<br />
JTAG Chain: ''TDI'' --> ''Device2'' --> ''Device1'' --> ''Device0'' --> ''TDO''<br><br />
<br />
Three configurations would be stored on the flasher:<br><br />
<br />
Config 0: Configured to program Device0 (DEVICE0.CFG, DEVICE0.DAT)<br><br />
Config 1: Configured to program Device1 (DEVICE1.CFG, DEVICE1.DAT)<br><br />
Config 2: Configured to program Device2 (DEVICE2.CFG, DEVICE2.DAT)<br><br />
<br />
Selection and programming of the target will be done via the ASCII interface:<br><br />
<br />
<source><br />
#SELECT DEVICE0<br />
#AUTO<br />
#SELECT DEVICE1<br />
#AUTO<br />
#SELECT DEVICE2<br />
#AUTO<br />
</source><br />
<br />
==== Programming multiple targets with J-Flash ====<br />
<br />
Programming multiple targets can also be done via J-Flash using the command line interface.<br />
For this each target must be handled with its own project file.<br />
<br />
'''Example'''<br><br />
<br />
<source><br />
JFlash.exe -openproj"Device0.jflash" -open"Device0.hex" -auto -exit<br />
JFlash.exe -openproj"Device1.jflash" -open"Device1.hex" -auto -exit<br />
JFlash.exe -openproj"Device2.jflash" -open"Device2.hex" -auto -exit<br />
</source><br />
<br />
=== Batch Programming in stand-alone mode ===<br />
<br />
Batch programming allows to execute different stand-alone mode jobs in batch to be executed in immediate succession, without any user interaction in between.<br />
This can be used for example to program multiple targets in a JTAG-Chain or multiple data files to a target.<br><br />
A batch may contains an unlimited number of configurations which consist of a data file (*.DAT) and config file (*.CFG).<br />
For further information regarding config and data files, please refer to [[#Preparing for stand-alone operation manually | Preparing for stand-alone operation manually]].<br><br />
In order to specify the batch jobs, a FLASHER.INI file is used.<br />
This init file contains a [BATCH] section which describes which configuration pairs (*.DAT and *.CFG file) should be used for each batch job.<br />
A sample content of a FLASHER.INI file is shown below:<br><br />
<br />
<source><br />
[BATCH]<br />
DataFile = "Flasher0.dat"<br />
ConfigFile = "Flasher0.cfg"<br />
DataFile1 = "Flasher1.dat"<br />
ConfigFile1 = "Flasher1.cfg"<br />
</source><br />
<br />
[[File:Batch_Jobs.bmp]]<br />
<br />
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.<br />
<br />
<br />
[[File:Batch_Programming.bmp]]<br />
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<br />
currently executed action.<br />
<br />
<br />
[[File:Batch_Result.bmp]]<br />
The result of the programming will be shown on the screen after finishing all jobs.<br />
<br />
<br />
Creating / Replacing of the FLASHER.INI file can done in two ways:<br><br />
<ol><br />
<li>Boot Flasher in file access mode in order to replace the FLASHER.INI</li><br />
<li><br />
If Flasher is already integrated into the production line, runs in stand-alone mode and can not be booted in other mode:<br />
Use the file I/O commands provided by the ASCII interface of Flasher, to replace the FLASHER.INI .<br />
For more information about the file I/O commands, please refer to [[#File I/O commands | File I/O commands]].<br />
In case of an error occurred during execution, the Flasher terminates the entire batch processing.<br />
</li><br />
</ol><br />
{{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.}}<br />
{{Note|1=Flasher supports 8.3 filenames only (8 characters filename, 3 characters file extension). Using longer filenames may result in incorrect operation.}}<br />
<br />
==== Flasher Portable specifics ====<br />
<br />
Flasher Portable allows to choose between four different batches during runtime by using the select/arrow button on the front of Flasher Portable.<br />
Which batch configuration is used for which image selection position is specified in the FLASHER.INI.<br />
For this, the FLASHER.INI contents in the [BATCH] section have been extended.<br />
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><br />
<br />
<source><br />
[BATCH]<br />
DataFile = "Flasher0.dat"<br />
ConfigFile = "Flasher0.cfg"<br />
DataFile1 = "Flasher1.dat"<br />
ConfigFile1 = "Flasher1.cfg"<br />
DataFile2 = "Flasher2.dat"<br />
ConfigFile2 = "Flasher2.cfg"<br />
[BATCH1]<br />
DataFile = "TEST.dat"<br />
ConfigFile = "Test.cfg"<br />
[BATCH2]<br />
DataFile = "VALIDATE.dat"<br />
ConfigFile = "Flasher0.cfg"<br />
</source><br />
<br />
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.<br />
From there on, switching between the batches can be done by simply using the selection button of Flasher Portable.<br />
<br />
<br />
<br />
==== Examples ====<br />
<br />
'''Example 1:''' Programming two Data files to the same target<br><br />
<br />
* Open your J-Flash project.<br />
* Use File -> Save Flasher config file... to save the .CFG file (in this example: STM32F4.CFG).<br />
* Select the first binary and use File -> Save Flasher Data file... to save the first .DAT file (in this example: DATA0.DAT).<br />
* Select the second binary and use File -> Save Flasher Data file... to save the second data file .DAT file (in this example: DATA1.DAT).<br />
* Copy the Files to the Flasher e.g. by using file access mode.<br />
* Create a FLASHER.INI file in the root directory of the Flasher.<br />
* Exemplary content of FLASHER.INI:<br><br />
<source><br />
[BATCH]<br />
DataFile = "DATA0.dat"<br />
ConfigFile = "emPower.cfg"<br />
DataFile1 = "DATA1.dat"<br />
ConfigFile1 = "emPower.cfg"<br />
</source><br />
<br />
<br />
'''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><br />
Example scenario: 2 Devices in a JTAG chain, a STM32F1 and a STM32F4. <br><br />
<br />
* Follow the same as described before and additionally:<br />
* Create one project file per target (and create a .CFG file of each one).<br />
* Make sure each project file is configured correctly, especially the JTAG-Chain position (See UM8003 "J-Flash" for more detailed info).<br />
* Exemplary content of FLASHER.INI:<br><br />
<source><br />
[BATCH]<br />
DataFile = "F1DATA.dat"<br />
ConfigFile = "STM32F1.cfg"<br />
DataFile1 = "F4DATA0.dat"<br />
ConfigFile1 = "STM32F4.cfg"<br />
DataFile2 = "F4DATA1.dat"<br />
ConfigFile2 = "STM32F4.cfg"<br />
</source><br />
<br />
'''Example 3:''' Using multiple Batch sections with Flasher Portable.<br><br />
Example scenario: 2 Devices in a JTAG chain, a STM32F1 and a STM32F4.<br><br />
Selection 1 will program the STM32F1 target.<br><br />
Selection 2 will program the STM32F4 target using "F4DATA0.dat".<br><br />
Selection 3 will program the STM32F4 target using "F4DATA1.dat".<br><br />
Selection 4 will execute 1, 2 and 3 in sequence.<br><br />
* Exemplary content of FLASHER.INI:<br><br />
<source><br />
[BATCH]<br />
DataFile = "F1DATA.dat"<br />
ConfigFile = "STM32F1.cfg"<br />
[BATCH1]<br />
DataFile = "F4DATA0.dat"<br />
ConfigFile = "STM32F4.cfg"<br />
[BATCH2]<br />
DataFile = "F4DATA1.dat"<br />
ConfigFile = "STM32F4.cfg"<br />
[BATCH3]<br />
DataFile = "F1DATA.dat"<br />
ConfigFile = "STM32F1.cfg"<br />
DataFile1 = "F4DATA0.dat"<br />
ConfigFile1 = "STM32F4.cfg"<br />
DataFile2 = "F4DATA1.dat"<br />
ConfigFile2 = "STM32F4.cfg"<br />
</source><br />
<br />
=== Serial number programming ===<br />
<br />
Flasher supports programming of serial numbers. In order to use the serial number programming feature,<br />
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><br />
<br />
In general, Flasher supports two ways of programming a serial number into the target:<br />
<br />
#<br />
#* Programming continuous serial numbers.<br />
#* The serial number is 1-4 bytes in size.<br />
#* The start serial number, increment, serial number size, and address are configured in the J-Flash project.<br />
#<br />
#* Programming custom serial numbers from a serial number list file.<br />
#* The start line within the serial number list file to get the next serial number bytes, line increment, serial number size, and address is configured in the J-Flash project.<br />
#* The serial number list file needs to be specified and created by the user.<br />
<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.}}<br />
<br />
==== Serial number settings ====<br />
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.<br />
This is done by enabling the '''Program serial number''' option as shown in the screenshot and table below:<br />
<br />
[[File:UM08039_SN_Sample_JFlashSettings.png]]<br />
<br />
{| class="seggertable"<br />
|-<br />
!| Setting || Meaning<br />
|-<br />
| <tt>Address</tt> || The address the serial number should be programmed at.<br />
|-<br />
| <tt>Length</tt> ||<br />
The length of the serial number (in bytes) that 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 8 is selected as length, the serial number and its complement are programmed at the given address.<br />
* In case a serial number list file is given, the 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 '''Length''', the remaining bytes are filled with 0s. No complements etc. are added to the serial number.<br />
|-<br />
| <tt>Next SN</tt> ||<br />
* In case no serial number list file is given, '''Next SN''' is the next serial number which should be programmed. The serial number is always stored in flash memory in little-endian format.<br />
* In case a serial number list file is given, '''Next SN''' describes the line of the serial number list file where to read the next serial number bytes from. The Flasher starts counting at line 0, so in order to start serial number programming with the first line of the <tt>SNList.txt</tt>, '''Next SN''' needs to be set to 0.<br />
|-<br />
| <tt>Increment</tt> || Specifies by how much '''Next SN''' is incremented.<br />
|}<br />
<br />
=== Serial number file ===<br />
When selecting '''File -> Download serial number file to Flasher''', J-Flash will create a serial number file named as <tt><JFlashProjectName>_Serial.txt</tt>.<br />
This file is downloaded as <tt>Serial.txt</tt> on the Flasher.<br />
The file is generated based on the serial number settings in the J-Flash project and will contain the value defined by the '''Next SN''' option.<br />
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.<br />
<br />
==== Serial number list file ====<br />
<br />
In order to program custom serial numbers which can not be covered by the standard serial number scheme provided by J-Flash<br />
(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.<br />
<br />
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.<br />
This file is downloaded as <tt>SNList.txt</tt> on the 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<br />
* Each byte of the serial number is described by two hexadecimal digits.<br />
<br />
'''Example'''<br><br />
A 8-byte serial number should be programmed at address 0x08000000.<br><br />
<br />
It should be programmed as follows in the memory:<br><br />
<br />
<tt>0x08000000: 0x01 0x02 0x03 0x04 0x55 0x66 0x77 0x88</tt><br><br />
<br />
The serial number list file should look as follows:<br><br />
<br />
<tt>0102030455667788</tt><br />
<br />
[[File:SN_SNList.gif]]<br />
<br />
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><br />
<br />
Which line Flasher will read at the next programming cycle, is configured via the <tt>Next SN</tt> option in J-Flash.<br />
For more information, please refer to [[#Serial number settings | Serial number settings]].<br />
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><br />
<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.}}<br />
{{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.}}<br />
<br />
==== Programming process ====<br />
<br />
Flasher will increment the serial number in SERIAL.TXT by the value defined in <tt>Increment</tt>, after each successful programming cycle.<br><br />
<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><br />
<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.<br />
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.}}<br />
<br />
==== Downloading serial number files to Flasher ====<br />
<br />
Downloading the serial number files needs to be done explicitly by selecting '''File-> Download serial number file to Flasher'''.<br />
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.<br />
<br />
==== Sample setup ====<br />
<br />
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.<br />
<br />
'''Defining serial number address, length and start value'''<br><br />
In the J-Flash project the following needs to be defined:<br><br />
* <tt>Address</tt> is 0x08001000<br />
* <tt>Next SN</tt> is 1234567<br />
* <tt>Increment</tt> is 1<br />
* <tt>Len</tt> is 4 (bytes)<br />
<br />
[[File:SN_Sample_JFlashSettings.gif]]<br />
<br />
'''Downloading configuration, data and serial number to Flasher.'''<br><br />
After setting up the rest of the configuration (Target interface etc.) and selecting an appropriate data file, the configuration,<br />
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><br />
<br />
[[File:SN_Sample_DownloadToFlasher.gif]]<br />
<br />
After downloading the serial number to Flasher, J-Flash also created the <tt><JFlashProjectName>_Serial.txt</tt>.<br />
<br />
[[File:SN_Sample_SerialFileCreated.gif]]<br />
<br />
Now Flasher is prepared to program the 8-byte serial number.<br />
<br />
=== Patch file support ===<br />
<br />
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.<br />
Before starting programming process in stand-alone mode, Flasher will look for a file named <tt>Patches.txt</tt> being present on the Flasher.<br />
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><br />
<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.<br />
<br />
'''Syntax'''<br><br />
<!-- LG xxxxxxxxx '==' is shown as '=', so instead use '= ='--><br />
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><br />
<br />
<tt><NumPatches>,<Addr>,<NumBytes>:<nowiki><Data></nowiki>,<Addr>,<NumBytes>:<nowiki><Data></nowiki>,<Addr>,<NumBytes>:<nowiki><Data></nowiki>,<Addr>,<NumBytes>:<nowiki><Data></nowiki>\r\n</tt><br><br />
<br />
Find below a table which describes each parameter.<br><br />
{| class="seggertable"<br />
|-<br />
! Parameter !! Description<br />
|-<br />
| <tt><NumPatches></tt> || Describes the number of patches in this patch line. Max. value is 4.<br />
|-<br />
| <tt><Addr></tt> || Describes the address to be patched. Value is expected in hex.<br />
|-<br />
| <tt><NumBytes></tt> || Number of bytes for the current patch. Max. value is 20h (32 in decimal). Value is expected in hex.<br />
|-<br />
| <tt><nowiki><Data></nowiki></tt> || Describes the data to be patched. <nowiki><Data></nowiki> is always expected as 2 hexadecimal characters per byte.<br />
|-<br />
|}<br />
<br />
{{Note|1=All values are expected in hexadecimal format (hex).<br><br />
<nowiki><Data></nowiki> section is always preceded by ":", not ",".}}<br />
<br />
'''Example'''<br><br />
Below is an example patch.<br><br />
<br />
<source><br />
1,18,4:01020304\r\n<br />
</source><br />
<br />
Patching the following data:<br />
<br />
[[File:data_before.png]]<br />
<br />
with the example patch will result in the following data:<br />
<br />
[[File:data_afterwards.png]]<br />
<br />
Please note that as mentioned earlier patching undefined memory locations will be ignored.<br><br />
Applying the example patch to the following data:<br />
<br />
[[File:undefined_mem_before.png]]<br />
<br />
Causes no data to be patched, as can be seen in the following image:<br />
<br />
[[File:undefined_mem_no_token.png]]<br />
<br />
Therefore it is necessary to first write placeholder data to the memory locations which are supposed to be patched.<br><br />
An example for such a placeholder can be seen here:<br />
<br />
[[File:undefined_mem_token.png]]<br />
<br />
Please note that the actual data inside the placeholder does not matter to the Flasher,<br />
because it is overwritten during patching.<br><br />
Applying the example patch will now work as expected:<br />
<br />
[[File:undefined_mem_after.png]]<br />
<br />
'''Single patch via RS232'''<br><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><br />
<br />
Send the <tt>#AUTO PATCH <NumPatches>,<Addr>,<NumBytes>:<nowiki><Data></nowiki></tt><br><br />
<br />
command via Flasher ASCII interface. The parameters have the same function as described in the table above.<br />
<br />
==== Newline encoding ====<br />
<br />
In general, for all patch files, init files etc. Flasher supports both newline encodings:<br><br />
<br />
* Windows: \r\n<br />
* Unix/Mac: \n<br />
<br />
All parser functionality etc. are written to be independent from the host operating system.<br />
<br />
=== Limiting the number of programming cycles ===<br />
<br />
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.<br />
To make use of this feature, a file called <tt>Cntdown.txt</tt> needs to be placed on the Flasher.<br />
This file simply contains a decimal number (32-bit unsigned integer) that describes how many programming cycles can be performed with the current setup.<br />
<br />
[[File:CntdownTxtContent.jpg]]<br />
<br />
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><br />
<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>.}}<br />
<br />
==== Changed fail/error LED indicator behavior ====<br />
<br />
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><br />
<br />
* The red error/fail LED will lit for 1 second<br />
* After this, it will blink/toggle x times @ 5 Hz, indicating the number of programming cycles left. (blinking 5 times for 5 cycles left, ...)<br />
<br />
==== Required Flasher hardware version for Cntdown.txt support ====<br />
<br />
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><br />
<br />
* 1621xxxxx (Flasher ARM V2)<br />
* 1630xxxxx (Flasher ARM V3)<br />
* 4210xxxxx (Flasher PPC V1)<br />
* 4110xxxxx (Flasher RX V1)<br />
<br />
All other models / hardware versions support limiting of programming cycles.<br />
<br />
=== Authorized flashing ===<br />
<br />
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.<br />
without the possibility to read out the Flasher contents via file access mode, FILE I/O functionality (J-Link Commander) or RS232 commands.<br />
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.<br />
<br />
==== Creating / Adding the secure area ====<br />
<br />
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.<br />
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.<br />
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><br />
<br />
[[File:CreateSecArea.jpg]]<br />
<br />
The following secure area related commands are available in J-Link Commander:<br><br />
<br />
* securearea create<br />
* securearea remove<br />
<br />
{{Note|1=When creating or removing the <tt>secure area</tt>, all configuration and data files being stored on the Flasher, are lost.<br />
Please make sure that they are not needed anymore, before adding / removing the security area.}}<br />
<br />
==== Moving files to the secure area ====<br />
<br />
Before moving configuration + data to the <tt>secure area</tt>, proper functionality of the setup should be tested in stand-alone mode.<br />
Once the setup is working as expected, do the following, to move the configuration + data into the <tt>secure area</tt>:<br><br />
<br />
* Start Flasher in file access mode (For more info, please refer to: [[#file access mode | file access mode]])<br />
<br />
[[File:FilesBeforeSecure.png]]<br />
<br />
* Create a folder "<tt>_SECURE</tt>"<br />
* Move all files that shall be moved to the <tt>secure area</tt>, into this folder<br />
<br />
[[File:FilesAfterSecure.png]]<br />
<br />
* 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.<br />
* Now Flasher can be used in stand-alone mode, as normal, but the files cannot be read back by the user / operator.<br />
<br />
==== Considerations to be taken when using the secure area ====<br />
<br />
When using the <tt>secure area</tt>, some things need to be considered:<br><br />
<br />
* All features like multiple file support, patch file support etc. can also be used when operating from the <tt>secure area</tt>.<br />
* 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>.<br />
* 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>.<br />
* 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.<br />
<br />
==== Required Flasher hardware version ====<br />
<br />
Older Flasher models do not support authorized flashing. The Flashers with the following serial number ranges do not support authorized flashing:<br><br />
<br />
* 1621xxxxx (Flasher ARM V2)<br />
* 1630xxxxx (Flasher ARM V3)<br />
* 4210xxxxx (Flasher PPC V1)<br />
* 4110xxxxx (Flasher RX V1)<br />
<br />
All other models / hardware versions support authorized flashing.<br />
<br />
=== Target interfaces ===<br />
<br />
The table below shows the supported target interfaces of the different Flasher models.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! Supported interfaces<br />
|-<br />
| Flasher PRO || JTAG, SWD<br />
|-<br />
| Flasher Compact || JTAG, SWD<br />
|-<br />
| Flasher ARM || JTAG, SWD<br />
|-<br />
| Flasher RX || JTAG<br />
|-<br />
| Flasher PPC || JTAG<br />
|-<br />
|}<br />
<br />
For more information about the target interfaces itself, please refer to:<br><br />
<br />
* ''UM08001, chapter "Working with J-Link and J-Trace", section "JTAG interface"''<br />
* ''UM08001, chapter "Working with J-Link and J-Trace", section "SWD interface"''<br />
<br />
=== Supported architectures ===<br />
<br />
Flasher supports programming of the internal flash of a large number of different microcontrollers.<br />
The number of supported devices is steadily growing. You can always find the latest list of supported devices on our website:<br><br />
<br />
''http://www.segger.com/supported-devices.html''<br />
<br />
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.<br />
Also the existence of the device may have confidential status, so it might not be mentioned as being supported in public releases yet.<br />
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.<br />
<br />
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).<br />
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.<br />
<br />
If a device is not supported, you can always contact us. We will be happy to provide you with an offer.<br />
<br />
==== External flashes ====<br />
<br />
In general our Flashers support programming of external flashes listed below:<br>(Can differ between Flasher models and hardware versions)<br />
<br />
* parallel NOR flash<br />
* SPI / QSPI flash<br>(see: ''[[SPI_support_by_Flasher_models]]'')<br />
* NAND flash<br />
* I<sup>2</sup>C EEPROM/Flash<br />
* FRAM<br />
<br />
If the parallel NOR flash device which is used is not CFI-compliant you have to select the flash device in J-Flash explicitly,<br />
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''.<br />
<br />
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.<br />
The J-Flash software comes with sample projects for ''Open Flashloader''.<br />
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''<br />
{{Note|1=Complete Information about ''Open Flashloaders'' can be found in our Wiki:<br>''[[Open_Flashloader]]''}}<br />
<br />
==== Cores ====<br />
<br />
===== Flasher ARM =====<br />
<br />
Flasher ARM supports and has been tested with the following cores, but should work with any ARM7/9, Cortex-M0/M1/M3/M4 core.<br />
If you experience problems with a particular core, do not hesitate to contact Segger.<br><br />
<br />
* ARM7TDMI (Rev 1)<br />
* ARM7TDMI (Rev 3)<br />
* ARM7TDMI-S (Rev 4)<br />
* ARM920T<br />
* ARM922T<br />
* ARM926EJ-S<br />
* ARM946E-S<br />
* ARM966E-S<br />
* Cortex-M0<br />
* Cortex-M1<br />
* Cortex-M3<br />
* Cortex-M4<br />
<br />
===== Flasher RX =====<br />
<br />
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><br />
<br />
* RX610<br />
* RX621<br />
* RX62N<br />
* RX62T<br />
<br />
===== Flasher PPC =====<br />
<br />
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.<br />
<br />
* e200z0<br />
<br />
===== Flasher PRO/Compact/Portable PLUS =====<br />
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/''.<br />
<br />
=== Programming multiple targets in parallel ===<br />
<br />
To program multiple targets in parallel there are the following possibilities:<br />
* Using a Flasher gang, or<br />
* Using multiple Flashers, each connecting to one CPU.<br />
<br />
Devices for gang programming are:<br />
* Flasher Hub-12 in conjunction with up to 12 Flasher (Compact). Please refer to [[UM08043_Flasher_Hub-12|Flasher Hub-12 user manual (UM08043_Flasher_Hub-12)]].<br />
* Flasher ATE; suitable for programming up to 10 targets in parallel. Please refer to [https://www.segger.com/downloads/flasher/UM08035 Flasher ATE user manual (UM08035_FlasherATE.pdf)].<br />
When using multiple flashers, this can be done with the J-Flash production programming software.<br />
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''<br />
<br />
=== Logfiles and Quality Management ===<br />
<br />
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:<br />
<source lang="c"><br />
SN: 1 - Failed<br />
SN: 1 - Failed<br />
SN: 2 - O.K. (931 ms)<br />
SN: 3 - O.K. (931 ms)<br />
SN: 4 - O.K. (933 ms)<br />
SN: 5 - O.K. (932 ms)<br />
</source><br />
If applicable, the logfile contains more detailed error messages. For example:<br />
<source lang="c"><br />
ERROR: Programming failed @ address 0x00000000 (1)<br />
ERROR: Cannot connect to CPU. Target interface speed too high?<br />
</source><br />
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:<br />
<source lang="c"><br />
Verify error config word area @<br />
config word<br />
config word read back<br />
Verify error flash area @<br />
data from file<br />
data read back<br />
</source><br />
{{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.}}<br />
<br />
== TCP Services ==<br />
This chapter describes the integrated TCP services.<br />
<br />
=== FTP Server ===<br />
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><br />
[[File:FTPServer.png]]<br />
<br />
==== Access data ====<br />
Anonymous access to the FTP server is limited to read-only access to the file system.<br><br />
For write access, special login credentials have to be used:<br><br />
<tt>Login: admin</tt><br><br />
<tt>Password: 1234</tt><br><br />
<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.<br />
It is not meant as a security feature.}}<br />
<br />
=== Web server ===<br />
<br />
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.<br />
For the network, the IP address settings can be changed and a nick name can be assigned to the device.<br><br />
<br />
Additionally, the web interface provides information about the status of the integrated operating system, the IP stack and the target hardware.<br />
<br />
== Remote control ==<br />
This chapter describes how to control the Flasher in standalone mode.<br />
<br />
=== Overview ===<br />
There are 3 ways to control Flasher operation:<br><br />
{| class="seggertable"<br />
! Type of control !! Description<br />
|-<br />
| Button || Programming operation starts when pressing the PROG-button. The LEDs serve as visible indicators.<br />
|-<br />
| Handshake || 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.<br />
|-<br />
| Terminal || Terminal communication via TELNET, RS232 or VCOM with the [[#ASCII command interface]]<br />
|}<br />
<br />
<br />
{{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.}}<br />
<br />
=== Handshake control ===<br />
<br />
Some Flasher models are equipped with additional hardware control functions that are connected to the SUBD9 male connector, normally used as an RS232 interface to the PC.<br />
These Flasher models can therefore be controlled remotely by automated testers without the need for a connection to a PC.<br />
<br />
The handshake control is available for the following Flashers:<br />
* Flasher ARM<br />
* Flasher PRO<br />
* Flasher Compact (via Flasher Hub and Flasher Hub-12 only)<br />
<br />
The following diagrams show the internal remote control circuitry of Flasher:<br><br />
<br />
[[File:FlasherRemotecontrol.png]]<br />
{| class="seggertable"<br />
|-<br />
! Pin No. !! Function !! Description<br />
|-<br />
| 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.<br />
|-<br />
| 4 || BUSY || As soon as the "Auto" function is started, BUSY becomes active, which means that transistor is switched OFF.<br />
|-<br />
| 5 || GND || Common Signal ground.<br />
|-<br />
| 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.<br />
|-<br />
|}<br />
[[File:FlasherRemoteSignal.png]]<br />
<br />
=== ASCII command interface ===<br />
<br />
==== Introduction ====<br />
<br />
Once set up using J-Flash, the Flasher can be driven by any application or just a simple terminal using ASCII commands.<br><br />
<br />
Every known command is acknowledged by the Flasher and then executed. After command execution, Flasher sends an ASCII reply message.<br><br />
<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}}<br />
<br />
==== General command and reply message format ====<br />
<br />
* Any ASCII command has to start with the start delimiter ''#''.<br />
* Any ASCII command has to end with simple carriage return ('\r', ASCII code 13).<br />
* Commands can be sent upper or lower case<br />
<br />
==== General usage ====<br />
<br />
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.<br />
<br />
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).<br />
<br />
==== Settings for ASCII interface via RS232 ====<br />
<br />
Flasher is driven via a RS232 serial port with the following interface settings:<br><br />
<br />
* 9600 baud<br />
* 8 data bits<br />
* no parity<br />
* 1 stop bit<br />
<br />
The baud rate can be changed by using the <tt>#BAUDRATE</tt> command.<br />
<br />
==== Settings for ASCII interface via Telnet ====<br />
<br />
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><br />
<br />
[[File:telnet_connection.gif]]<br />
<br />
==== Settings for ASCII interface via VCOM ====<br />
<br />
The same settings can be used for VCOM as for [[#Settings for ASCII interface via RS232|RS232]].<br />
<br />
{{Note|The performance also depends on the terminal application used on the PC.}}<br />
<br />
==== Commands and replies ====<br />
<br />
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><br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| Commands to the Flasher<br />
|-<br />
| <tt>#BAUDRATE <Baudrate></tt><br />
|-<br />
| <tt>#AUTO</tt><br />
|-<br />
| <tt>#AUTO PATCH</tt><br />
|-<br />
| <tt>#AUTO NOINFO</tt><br />
|-<br />
| <tt>#CANCEL</tt><br />
|-<br />
| <tt>#ERASE</tt><br />
|-<br />
| <tt>#PROGRAM</tt><br />
|-<br />
| <tt>#RESULT</tt><br />
|-<br />
| <tt>#SELECT <Filename></tt><br />
|-<br />
| <tt>#START</tt><br />
|-<br />
| <tt>#STATUS</tt><br />
|-<br />
| <tt>#VERIFY</tt><br />
|-<br />
| <tt>#READ</tt><br />
|-<br />
| <tt>#QUIT</tt><br />
|-<br />
| <tt>#VERBOSE <Level></tt><br />
|-<br />
!colspan="100%"| File I/O commands<br />
|-<br />
| <tt>#FCLOSE</tt><br />
|-<br />
| <tt>#FCRC</tt><br />
|-<br />
| <tt>#FDELETE <Filename></tt><br />
|-<br />
| <tt>#FFORMAT</tt><br />
|-<br />
| <tt>#FOPEN <Filename></tt><br />
|-<br />
| <tt>#FREAD <Offset>,<NumBytes></tt><br />
|-<br />
| <tt>#FSIZE</tt><br />
|-<br />
| <tt>#FWRITE <Offset>,<NumBytes>:<nowiki><Data></nowiki></tt><br />
|-<br />
| <tt>#FLIST</tt><br />
|-<br />
| <tt>#MKDIR <Dirname></tt><br />
|-<br />
!colspan="100%"| SecureArea commands<br />
|-<br />
| <tt>#HASSECUREAREA</tt><br />
|-<br />
| <tt>#SECUREAREA <action></tt><br />
|-<br />
!colspan="100%"| Replies from the Flasher<br />
|-<br />
| <tt>#ACK</tt><br />
|-<br />
| <tt>#NACK</tt><br />
|-<br />
| <tt>#OK</tt><br />
|-<br />
| <tt>#OK:<NumBytes>:<nowiki><Data></nowiki></tt><br />
|-<br />
| <tt>#OK:<Size></tt><br />
|-<br />
| <tt>#STATUS:</tt><br />
|-<br />
| <tt>#DONE</tt><br />
|-<br />
| <tt>#ERRxxx</tt><br />
|-<br />
|}<br />
<br />
===== Commands to the Flasher =====<br />
<br />
'''#AUTO'''<br><br />
The <tt>#AUTO</tt> command behaves exactly as the start button or external remote control input.<br><br />
<br />
Usually, the following command sequence will be performed when receiving the <tt>#AUTO</tt> command:<br><br />
<br />
* The Flasher erases the target CPU (if not blank)<br />
* The Flasher programs the target CPU<br />
* The Flasher verifies the target CPU<br />
<br />
Depending on the settings chosen in the '''Production''' tab in J-Flash, this sequence can differ from the one shown above.<br><br />
<br />
Finally, Flasher responds with<br><br />
<br />
* <tt>#OK</tt> if no error occurred<br />
* <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.<br />
<br />
During execution of the <tt>#AUTO</tt> command, Flasher automatically sends "status" messages via RS232 to reflect the state of execution.<br />
Typically during execution of <tt>#AUTO</tt> command, Flasher will reply the following sequence of messages:<br><br />
<br />
<tt>#ACK</tt><br><br />
<tt>#STATUS:INITIALIZING</tt><br><br />
<tt>#STATUS:CONNECTING</tt><br><br />
<tt>#STATUS:UNLOCKING</tt><br><br />
<tt>#STATUS:ERASING</tt><br><br />
<tt>#STATUS:PROGRAMMING</tt><br><br />
<tt>#STATUS:VERIFYING</tt><br><br />
<tt>#OK (Total 13.993s, Erase 0.483s, Prog 9.183s, Verify 2.514s)</tt><br><br />
<br />
'''#AUTO PATCH'''<br><br />
The <tt>#AUTO</tt> PATCH command allows patching of the content of the data to be programmed.<br><br />
<br />
Flasher responds with<br><br />
<br />
* <tt>#OK</tt> if no error occurred<br />
* <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.<br />
<br />
For further information about the usage of the <tt>#AUTO PATCH</tt> command please refer to [[#Patch file support | Patch file support]].<br />
<br />
'''#AUTO NOINFO'''<br><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><br />
<br />
The command ends with <tt>#OK</tt> or <tt>#ERRxxx</tt><br />
<br />
'''#BAUDRATE <Baudrate>'''<br><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><br />
<br />
If this command succeeds, Flasher responds with:<br><br />
<br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<br />
Otherwise it will respond with one of the following error messages:<br><br />
<br />
<tt>#ERR255: Invalid parameters</tt><br><br />
<tt>or</tt><br><br />
<tt>#ERR255: Baudrate is not supported</tt><br><br />
<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.<br />
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.}}<br />
<br />
'''#CANCEL'''<br><br />
This command can be sent to abort a running program. It may take a while until the current program is actually canceled.<br><br />
<br />
Flasher will respond with:<br><br />
<br />
<tt>#ERR007:CANCELED.</tt><br><br />
<br />
'''#ERASE'''<br><br />
This command can be sent to erase all selected target flash sectors.<br><br />
<br />
Flasher will reply the following sequence of messages:<br><br />
<br />
<tt>#ACK</tt><br><br />
<tt>#STATUS:INITIALIZING</tt><br><br />
<tt>#STATUS:CONNECTING</tt><br><br />
<tt>#STATUS:UNLOCKING</tt><br><br />
<tt>#STATUS:ERASING</tt><br><br />
<tt>#OK (Total 0.893s, Erase 0.483s)</tt><br><br />
<br />
'''#PROGRAM'''<br><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.<br />
<br />
'''#RESULT'''<br><br />
This command can be sent any time, even during other command execution. Flasher responds with the last result of the previously executed command.<br />
<br />
'''#SELECT <Filename>'''<br><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.<br />
<tt><Filename></tt> specifies the name of file pair without extensions (.CFG and .DAT) on the Flasher which should be selected. If you are<br />
using the universal flash programming mode, <tt><Filename></tt> specifies the full name of the .UNI file '''including''' the extension.<br />
Flasher saves the selected config and data file in the FLASHER.INI file. So this selection is remembered even between power-cycling Flasher.<br><br />
<br />
This may be verfy helpful in cases where several config and data files are stored on Flasher.<br />
The user can easily switch between these config and data files without connecting Flasher to a host.<br><br />
<br />
If this command succeeds, Flasher responds with:<br><br />
<br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<br />
Find below a sample sequence which shows how to use the <tt>#SELECT</tt> command:<br><br />
<br />
<tt>#SELECT ATSAM7_1 // ATSAM7_1.CFG and ATSAM7_1.DAT is selected</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<tt>#AUTO // Start auto programming</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#STATUS:INITIALIZING</tt><br><br />
<tt>#STATUS:CONNECTING</tt><br><br />
<tt>#STATUS:UNLOCKING</tt><br><br />
<tt>#STATUS:ERASING</tt><br><br />
<tt>#STATUS:PROGRAMMING</tt><br><br />
<tt>#STATUS:VERIFYING</tt><br><br />
<tt>#OK (Total 8.416s, Erase 0.005s, Prog 6.845s, Verify 0.959s)</tt><br><br />
<tt>#SELECT ATSAM7_2 // ATSAM7_2.CFG and ATSAM7_2.DAT is selected</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<tt>#AUTO // Start auto programming</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#STATUS:INITIALIZING</tt><br><br />
<tt>#STATUS:CONNECTING</tt><br><br />
<tt>#STATUS:UNLOCKING</tt><br><br />
<tt>#STATUS:ERASING</tt><br><br />
<tt>#STATUS:PROGRAMMING</tt><br><br />
<tt>#STATUS:VERIFYING</tt><br><br />
<tt>#OK (Total 8.632s, Erase 0.005s, Prog 7.051s, Verify 0.969s)</tt><br><br />
<br />
'''#START'''<br><br />
This command can be sent to start the application using the method configured in the J-Flash project.<br><br />
For U-Flash projects, however, the target application is not necessarily started. <br><br />
There is often a "start application" checkbox in the U-Flash settings which have to be set for this.<br />
<br />
Flasher will reply with the following sequence of messages:<br><br />
<br />
<tt>#ACK</tt><br><br />
<tt>#STATUS:INITIALIZING</tt><br><br />
<tt>#STATUS:CONNECTING</tt><br><br />
<tt>#OK (Total 1.148s)</tt><br><br />
<br />
'''#STATUS'''<br><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]].<br />
<br />
'''#VERIFY'''<br><br />
This command can used to verify the target flash content against the data stored in Flasher.<br />
<br />
'''#READ'''<br><br />
Only available for devices supported by U-Flash.<br><br />
This command can used to read out flash data.<br><br />
More information: [https://wiki.segger.com/Flasher/How_to_read_data_from_a_device_using_U-Flash How to read data using U-Flash]<br />
<br />
'''#QUIT'''<br><br />
This command can be used to terminate the active telnet connection from the server side (Flasher).<br />
The command provides an easy way to terminate the session from an automated script.<br />
It is not necessary to parse stdout and switch to local command mode to disconnect.<br />
Not implemented in the Flasher ATE or Flasher Hub.<br />
<br />
'''#VERBOSE <Level>'''<br><br />
This command can be used to change the verbosity level. <br><br />
* Verbosity level 0: Default. <br><br />
* Verbosity level 1: Provides some additional messages during the programming process.<br />
<br />
===== File I/O commands =====<br />
<br />
The ASCII interface of the Flasher also supports file I/O operations.<br />
<br />
The following file I/O commands are supported:<br><br />
<br />
'''#FCLOSE'''<br><br />
The <tt>#FCLOSE</tt> command closes the file on Flasher which was opened via <tt>#FOPEN</tt>.<br />
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><br />
<br />
A typical sequence when using the <tt>#FCLOSE</tt> command does look like as follows:<br><br />
<br />
<tt>#FCLOSE</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<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><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:No file opened</tt><br />
}}<br />
<br />
'''#FCRC'''<br><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>.<br />
The CRC will be also reported by J-Flash when downloading or saving files via J-Flash.<br><br />
<br />
A typical sequence when using the <tt>#FCRC</tt> command does look like as follows:<br><br />
<br />
<tt>#FCRC flasher.dat</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK:0x75BC855A</tt><br><br />
<br />
'''#FDELETE <Filename>'''<br><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><br />
<br />
A typical sequence when using the <tt>#FDELETE</tt> command does look like as follows:<br><br />
<br />
<tt>#FDELETE flasher.dat</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<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><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:Failed to delete file</tt><br />
}}<br />
<br />
'''#FFORMAT'''<br><br />
The <tt>#FFORMAT</tt> command is used to delete all files located in the public area of the Flasher's internal memory.<br />
<br />
{{Note|1=Please note that this command deletes all projects located in the public area. Deleted projects cannot be restored again.<br><br />
This command does not delete the Flasher firmware, neither does it delete files in the secure area.<br />
}}<br />
<br />
A typical sequence using the <tt>#FFORMAT</tt> command does look like as follows:<br><br />
<br />
<tt>#FFORMAT</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#DONE</tt><br><br />
<br />
'''#FOPEN <Filename>'''<br><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.<br />
If <tt><Filename></tt> can not be found on Flasher a new one will be created.<br><br />
<br />
A typical sequence using the <tt>#FOPEN</tt> command does look like as follows:<br><br />
<br />
<tt>#FOPEN flasher.dat</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<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><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:A file has already been opened</tt><br />
}}<br />
<br />
'''#FREAD <Offset>,<NumBytes>'''<br><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.<br />
<tt><NumBytes></tt> specifies the number of bytes which should be read.<br><br />
<br />
A typical sequence when using the <tt>#FREAD</tt> command does look like as follows:<br><br />
<br />
<tt>#FREAD 0,4</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK:04:466c6173</tt><br><br />
<br />
If the <tt>#FREAD</tt> command succeeds, Flasher will finally respond with a <tt>#OK:<NumBytes>:<nowiki><Data></nowiki></tt> reply message.<br />
For more information about the Flasher reply messages, please refer to [[#Replies from Flasher | Replies from Flasher]].<br><br />
<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><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:No file opened</tt>}}<br />
<br />
'''#FSIZE'''<br><br />
The <tt>#FSIZE</tt> command is used to get the size of the currently opened file on Flasher.<br><br />
<br />
A typical sequence when using the <tt>#FSIZE</tt> command does look like as follows:<br><br />
<br />
<tt>#FSIZE</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK:10 // file on flasher which is currently open, has a size of 16 bytes</tt><br><br />
<br />
If the <tt>#FSIZE</tt> command succeeds, Flasher will respond with a <tt>#OK:<Size></tt> reply message.<br />
For more information about the Flasher reply messages, please refer to [[#Replies from Flasher | Replies from Flasher]].<br><br />
<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><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:No file opened</tt>}}<br />
<br />
'''#FWRITE <Offset>,<NumBytes>:<nowiki><Data></nowiki>'''<br><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.<br />
<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.<br />
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><br />
<br />
<tt><Offset></tt> and <tt><NumBytes></tt> are expected in hexadecimal format.<br><br />
<br />
<tt>#FWRITE 0,200:<nowiki><Data></nowiki></tt><br><br />
<tt>#FWRITE 200,200:<nowiki><Data></nowiki></tt><br><br />
<br />
The data is expected in hexadecimal format (two hexadecimal characters per byte). The following example illustrates the use of <tt>#FWRITE</tt>:<br />
<br />
<tt>Data to be send: Hello !</tt><br><br />
<tt>ASCII values: 0x48, 0x65, 0x6C, 0x6C, 0x6F, 0x20, 0x21</tt><br><br />
<br />
<tt>#FWRITE 0,7:48656C6C6F2021</tt><br><br />
<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><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:No file opened</tt><br>}}<br />
<br />
'''#FLIST'''<br><br />
The <tt>#LIST</tt> command is used to list all files stored on the Flasher.<br><br />
<br />
A typical sequence using the <tt>#FLIST</tt> command does look like as follows:<br><br />
<br />
<tt>#FLIST</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>FLASHER.INI Size: 60</tt><br><br />
<tt>SERIAL.TXT Size: 3</tt><br><br />
<tt>FLASHER.LOG Size: 207</tt><br><br />
<tt>FOLDER (DIR)</tt><br><br />
<tt>FOLDER\\TEST1.CFG Size: 2048</tt><br><br />
<tt>FOLDER\\TEST1.DAT Size: 12288</tt><br><br />
<tt>#OK</tt><br><br />
<br />
'''#MKDIR <Dirname>'''<br><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><br />
<br />
A typical sequence using the <tt>#MKDIR</tt> command does look like as follows:<br><br />
<br />
<tt>#MKDIR folder</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<br />
{{Note|1=If the directory can not be created because of a bad <tt><Dirname></tt> argument, Flasher will respond with:<br><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:Failed to create directory</tt><br>}}<br />
<br />
===== Secure Area Commands =====<br />
<br />
'''#HASSECUREAREA'''<br><br />
The <tt>#HASSECUREAREA</tt> command checks if the Flasher is configured with a secure area.<br />
<br />
<tt>#RESULT:YES</tt> indicates the secure area is present, <tt>#RESULT:NO</tt> indicates no secure area is present.<br />
<br />
'''#SECUREAREA'''<br><br />
The <tt>#SECUREAREA <action></tt> command allows to create or remove the secure area on the Flasher.<br />
<br />
* the action <tt>CREATE</tt> creates the secure area.<br />
* the action <tt>REMOVE</tt> will remove the secure area.<br />
<br />
A typical sequence using the <tt>#SECUREAREA</tt> command does look like as follows:<br><br />
<br />
<tt>#SECUREAREA CREATE</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#DONE</tt><br><br />
<br />
{{Note|1=When creating or removing the <tt>secure area</tt>, all configuration and data files being stored on the Flasher, are lost.<br />
Please make sure that they are not needed anymore, before adding / removing the security area.}}<br />
<br />
<br />
<br />
===== Replies from Flasher =====<br />
<br />
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.<br />
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.<br />
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><br />
<br />
<tt>#OK (Total 13.993s, Erase 0.483s, Prog 9.183s, Verify 2.514s)</tt><br><br />
<br />
The following reply messages from Flasher are defined:<br><br />
<br />
'''#ACK'''<br><br />
Flasher replies with <tt>#ACK</tt> message on reception of any defined command before the command itself is executed.<br />
<br />
'''#NACK'''<br><br />
Flasher replies with <tt>#NACK</tt>, if an undefined command was received.<br />
<br />
'''#OK'''<br><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.<br />
<br />
'''#OK:<NumBytes>:<nowiki><Data></nowiki>'''<br><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.<br />
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).<br />
<br />
'''#OK:<Size>'''<br><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.<br />
<br />
'''#STATUS:'''<br><br />
The Flasher replies with its current state.<br><br />
<br />
The following status messages are currently defined:<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Message !! Description<br />
|-<br />
| <tt>#STATUS:READY</tt> || Flasher is ready to receive a new command.<br />
|-<br />
| <tt>#STATUS:CONNECTING</tt> || Flasher initializes connection to target CPU.<br />
|-<br />
| <tt>#STATUS:INITIALIZING</tt> || Flasher performs self check and internal init.<br />
|-<br />
| <tt>#STATUS:UNLOCKING</tt> || Unlocking flash sectors.<br />
|-<br />
| <tt>#STATUS:ERASING</tt> || Flasher is erasing the flash of the target device.<br />
|-<br />
| <tt>#STATUS:PROGRAMMING</tt> || Flasher is programming the flash of the target device.<br />
|-<br />
| <tt>#STATUS:VERIFYING</tt> || Flasher verifies the programmed flash contents.<br />
|-<br />
|}<br />
<br />
'''#ERRxxx'''<br><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><br />
<br />
Some error codes may be followed by colon and an additional error text.<br><br />
<br />
For example:<br><br />
<br />
<tt>#ERR007:CANCELED.</tt><br><br />
<br />
The error code numbers are described in the following table:<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Message !! Description<br />
|-<br />
| <tt>#ERR007</tt> || Flasher received <tt>#CANCEL</tt> command and has canceled the current operation.<br />
|-<br />
| <tt>#ERR008</tt> || Flasher is already busy with execution of previous command.<br />
|-<br />
| <tt>#ERR009</tt> || Failed to allocate memory.<br />
|-<br />
| <tt>#ERR010</tt> || Failed to open file.<br />
|-<br />
| <tt>#ERR011</tt> || Failed to read file.<br />
|-<br />
| <tt>#ERR012</tt> || Failed to write file.<br />
|-<br />
| <tt>#ERR013</tt> || Failed to delete file.<br />
|-<br />
| <tt>#ERR255</tt> || Undefined error occurred. This reply is followed by an error string.<br />
|-<br />
|}<br />
<br />
== Performance ==<br />
<br />
The following chapter lists programming performance of common flash devices andmicrocontrollers.<br />
<br />
=== Performance of MCUs with internal flash memory ===<br />
<br />
==== Flasher ARM ====<br />
<br />
The following table lists program and erase performance values of Flasher ARM for different controllers.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Microcontroller !! Size [kByte] !! Erase time [sec] !! Program time [sec] !! Verify time [sec] !! Total time [sec]<br />
|-<br />
| Analog Devices || 62 || 2.943 || 2.286 || 0.563 || 5.792<br />
|-<br />
| Atmel AT91SAM7S64 || 64 || --- || 3.488 || 0.438 || 3.926<br />
|-<br />
| Atmel AT91SAM7S256 || 256 || --- || 7.709 || 1.053 || 8.762<br />
|-<br />
| NXP LPC1768 || 512 || 3.740 || 8.559 || 5.092 || 17.391<br />
|-<br />
| NXP LPC2106 || 120 || 0.448 || 1.204 || 0.634 || 2.286<br />
|-<br />
| NXP LPC2129 || 248 || 0.449 || 2.916 || 1.347 || 4.712<br />
|-<br />
| NXP LPC2138 || 500 || 0.448 || 5.488 || 2.649 || 8.585<br />
|-<br />
| NXP LPC2148 || 500 || 0.448 || 5.632 || 2.721 || 8.801<br />
|-<br />
| NXP LPC2294 || 2048 || 0.808 || 15.976 || 9.669 || 26.453<br />
|-<br />
| NXP LPC2478 || 504 || 0.448 || 5.419 || 2.559 || 8.426<br />
|-<br />
| ST STM32F103ZE || 512 || 0.028 || 18.763 || 3.939 || 22.730<br />
|-<br />
| ST STR711 || 272 || 0.429 || 5.476 || 4.742 || 10.647<br />
|-<br />
| ST STR912 || 544 || 1.167 || 12.907 || 5.236 || 19.310<br />
|-<br />
| TI TMS470R1B1M || 1024 || 2.289 || 8.147 || 5.362 || 15.798<br />
|-<br />
|}<br />
<br />
==== Flasher PRO ====<br />
See Flasher ARM.<br />
<br />
==== Flasher Compact ====<br />
See Flasher ARM.<br />
<br />
==== Flasher RX ====<br />
<br />
The following table lists program and erase performance values of Flasher RX.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Microcontroller !! Size [kByte] !! Erase time [sec] !! Program time [sec] !! Verify time [sec] !! Total time [sec]<br />
|-<br />
| R5F56108 || 2.048 || 9.523 || 11.915 || 3.890 || 25.585<br />
|-<br />
|}<br />
<br />
==== Flasher PPC ====<br />
<br />
The following table lists program and erase performance values of Flasher PPC.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Microcontroller !! Size [kByte] !! Erase time [sec] !! Program time [sec] !! Verify time [sec] !! Total time [sec]<br />
|-<br />
| ST SPC560B50 || 576 || 4.747 || 4.159 || 1.929 || 10.917<br />
|-<br />
|}<br />
<br />
== Hardware ==<br />
<br />
This chapter gives an overview about Flasher specific hardware details,<br />
such as the pinouts and available adapters.<br />
<br />
=== Flasher ARM 20-pin JTAG/SWD Connector ===<br />
<br />
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.<br />
<br />
==== Pinout JTAG ====<br />
<br />
[[File:jtag_port_20pin.jpg]] <!-- LG xxxxxx image has been cropped to fit page --><br />
<br />
The following table lists the Flasher JTAG pinout.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! PIN !! SIGNAL !! TYPE !! Description<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 13 || TDO || Input || JTAG data output from target CPU. Typically connected to TDO of target CPU.<br />
|-<br />
| 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".<br />
|-<br />
| 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.<br />
|-<br />
| 19 || 5V-Target supply || Output || This pin is used to supply power to some eval boards. Typically left open on target hardware.<br />
|-<br />
|}<br />
<br />
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.<br />
<br />
==== Pinout SWD ====<br />
<br />
The 20-pin connector of Flasher is also compatible to ARM's Serial Wire Debug (SWD) interface.<br><br />
<br />
[[File:SWD_Port.jpg]] <!-- LG xxxxxx image has been cropped to fit page --><br />
<br />
The following table lists the J-Link / J-Trace SWD pinout.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! PIN !! SIGNAL !! TYPE !! Description<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 7 || SWDIO || I/O || Single bi-directional data pin.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 13 || SWO || Output || Serial Wire Output trace port. (Optional, not required for SWD communication.)<br />
|-<br />
| 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".<br />
|-<br />
| 17 || Not used || NC || This pin is not connected in J-Link.<br />
|-<br />
| 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.<br />
|-<br />
|}<br />
<br />
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.<br />
<br />
==== Target power supply ====<br />
<br />
Pin 19 of the connector can be used to supply power to the target hardware. Supply voltage is 5V, max. current is 400mA.<br />
The output current is monitored and protected against overload and short-circuit.<br><br />
<br />
Power can be controlled via the J-Link commander. The following commands are available to control power:<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Command !! Explanation<br />
|-<br />
| <tt>power on</tt> || Switch target power on<br />
|-<br />
| <tt>power off</tt> || Switch target power off<br />
|-<br />
| <tt>power on perm</tt> || Set target power supply default to "on"<br />
|-<br />
| <tt>power off perm</tt> || Set target power supply default to "off"<br />
|-<br />
|}<br />
<br />
=== Flasher RX 14-pin connector ===<br />
<br />
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.<br />
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.<br />
<br />
[[File:jtag_port_14pin.wmf]]<br />
<br />
The following table lists the Flasher RX 14-pin JTAG pinout.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Pin !! Signal !! Type !! Description<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 5 || TDO || Input || JTAG data output from target CPU. Typically connected to TDO on target CPU.<br />
|-<br />
| 6 || --- || NC || This pin is not connected to Flasher RX.<br />
|-<br />
| 7 || --- || NC || This pin is not connected to Flasher RX.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 10 || --- || NC || This pin is not connected to Flasher RX.<br />
|-<br />
| 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.<br />
|-<br />
| 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".<br />
|-<br />
|}<br />
<br />
* All pins marked NC are not connected to Flasher RX. Any signal can be applied here; Flasher RX will simply ignore such a signal.<br />
* Pins 2, 12, 14 are GND pins connected to GND in Flasher RX. They should also be connected to GND in the target system.<br />
<br />
==== Target power supply ====<br />
<br />
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.<br />
Power can be controlled via the J-Link commander. The following commands are available to control power:<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Command !! Explanation<br />
|-<br />
| <tt>power on</tt> || Switch target power on<br />
|-<br />
| <tt>power off</tt> || Switch target power off<br />
|-<br />
| <tt>power on perm</tt> || Set target power supply default to "on"<br />
|-<br />
| <tt>power off perm</tt> || Set target power supply default to "off"<br />
|-<br />
|}<br />
<br />
=== Flasher PPC 14-pin connector ===<br />
<br />
Flasher PPC itself has a 20-pin JTAG connector mounted but comes with a 14-pin adapter for PowerPC devices.<br><br />
<br />
[[File:JTAG_PPC_14pin_adapter.wmf]]<br />
<br />
The following table lists the Flasher PPC 14-pin JTAG pinout.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Pin !! Signal !! Type !! Description<br />
|-<br />
| 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.<br />
|-<br />
| 3 || TDO || Input || JTAG data output from target CPU. Typically connected to TDO on target CPU.<br />
|-<br />
| 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.<br />
|-<br />
| 7 || --- || NC || This pin is not connected to Flasher PPC.<br />
|-<br />
| 8 || --- || NC || This pin is not connected to Flasher PPC.<br />
|-<br />
| 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".<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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).<br />
|-<br />
|}<br />
<br />
* All pins marked NC are not connected to Flasher PPC. Any signal can be applied here; Flasher PPC will simply ignore such a signal.<br />
* 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.<br />
<br />
=== Target board design ===<br />
<br />
We strongly advise following the recommendations given by the chip manufacturer. These recommendations are normally in line with the recommendations.<br />
Please refer to the the appropriate tables depending on the core:<br><br />
<br />
* [[#Pinout JTAG | Pinout JTAG]]<br />
* [[#Pinout SWD | Pinout SWD]]<br />
* [[#Flasher RX 14-pin connector | Flasher RX 14-pin connector]]<br />
* [[#Flasher PPC 14-pin connector | Flasher PPC 14-pin connector]]<br />
<br />
In case of doubt you should follow the recommendations given by the semiconductor manufacturer.<br />
<br />
==== Pull-up/pull-down resistors ====<br />
<br />
Unless otherwise specified by developer's manual, pull-ups/pull-downs are recommended to be between 2.2 kOhms and 47 kOhms.<br />
<br />
==== RESET, nTRST ====<br />
<br />
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><br />
<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.<br />
(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.<br />
<br />
=== Adapters ===<br />
<br />
==== JTAG Isolator ====<br />
<br />
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.<br />
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><br />
<br />
[[File:JTAG_Isolator_Port.wmf]]<br />
<br />
===== Pinout =====<br />
<br />
The following table shows the target-side pinout of the J-Link JTAG Isolator.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Pin !! Signal !! Type !! Description<br />
|-<br />
| 1 || VCC || Output || The target side of the isolator draws power over this pin.<br />
|-<br />
| 2 || VCC || Output || The target side of the isolator draws power over this pin.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 13 || TDO || Input || JTAG data output from target CPU. Typically connected to TDO of target CPU.<br />
|-<br />
| 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".<br />
|-<br />
| 17 || N/C || N/C || This pin is not connected on the target side of the isolator.<br />
|-<br />
| 19 || N/C || N/C || This pin is not connected on the target side of the isolator.<br />
|-<br />
|}<br />
<br />
Pins 4, 6, 8, 10, 12, 14, 16, 18, 20 are connected to GND.<br />
<br />
===== Safety =====<br />
This isolator provides '''basic isolation''' only. '''Do not use with hazardous voltages without further protection measures to avoid risk of electrical shock and fire.'''<br />
<br />
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.<br />
<br />
==== J-Link Needle Adapter ====<br />
<br />
To connect to the J-Link OB via programming interface the ''J-Link Needle Adapter'' is recommended.<br><br />
<br />
[[File:J-Link_Needle_Adapter_500x.jpg]]<br />
<br />
Why to choose the J-Link Needle Adapter:<br><br />
<ol><br />
<li>No additional connector required on your PCB</li><br />
<li>Very small footprint</li><br />
<li>High reliability spring pins for secure connections</li><br />
<li>Designed with 3 locating pins, so the adapter can not be connected the wrong way</li><br />
<li>No external power supply required! The J-Link Needle Adapter comes with the option to power the target hardware via J-Link.</li><br />
</ol><br />
These features make the J-Link Needle Adapter the perfect solution for production purposes.<br><br />
<br />
The pinout of the J-Link Needle Adapter is based on the pinout of the needle adapter by Tag-Connect.<br />
Please note, that both pinouts are not identical since the J-Link Needle Adapter comes with a 5V-supply pin.<br><br />
<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><br />
<br />
Moreover, the two "legs" on each side of the connector guarantee a stable and secure contact between pins and the PCB.<br><br />
<br />
[[File:J-Link_Needle_Adapter_Connector_pins_360x.jpg]]<br />
[[File:J-Link_Needle_Adapter_Pinout.jpg]]<br />
<br />
The J-Link Needle Adapter can be connected to J-Link via the ''20-pin 0.1'' JTAG to a 10-pin needle connector''.<br />
<br />
=== How to determine the hardware version ===<br />
<br />
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.<br />
Flasher has the hardware version printed on the back label.<br><br />
<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).<br />
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><br />
<br />
[[File:FlasherARM_version.gif]]<br />
== Support and FAQs ==<br />
<br />
This chapter contains troubleshooting tips together with solutions for common problems which might occur when using Flasher.<br />
There are several steps you can take before contacting support.<br />
Performing these steps can solve many problems and often eliminates the need for assistance.<br />
This chapter also contains a collection of frequently asked questions (FAQs) with answers.<br />
<br />
=== Contacting support ===<br />
<br />
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.<br />
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><br />
<br />
If you need to contact support, send the following information to<br><br />
''support@segger.com''<br><br />
<br />
* A detailed description of the problem<br />
* Flasher serial number<br />
* Information about your target hardware (processor, board, etc.).<br />
* <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]].<br />
<br />
Flasher is sold directly by SEGGER.<br />
<br />
=== Frequently Asked Questions ===<br />
<br />
'''Maximum JTAG speed'''<br />
{|<br />
|-<br />
| '''Q:''' || What is the maximum JTAG speed supported by Flasher?<br />
|-<br />
| '''A:''' || Flasher's maximum supported JTAG speed is 12MHz.<br />
|}<br />
<br />
'''Maximum download speed'''<br />
{|<br />
|-<br />
| '''Q:''' || What is the maximum download speed?<br><br />
|-<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.<br />
|}<br />
== Background information ==<br />
<br />
This chapter provides background information about flash programming in general. It<br />
also provides information about how to replace the firmware of Flasher manually.<br />
<br />
=== Flash programming ===<br />
<br />
Flasher comes with a DLL, which allows - amongst other functionalities - reading and writing RAM, CPU registers, starting and stopping the CPU, and setting breakpoints.<br />
<br />
==== How does flash programming via Flasher work? ====<br />
<br />
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.<br />
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.<br />
Different flash chips have different programming algorithms;the programming algorithm also depends on other things,<br />
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).<br />
The RAM code requires data to be programmed into the flash memory. The data is supplied by downloading it to RAM.<br />
<br />
==== Data download to RAM ====<br />
<br />
The data (or part of it) is downloaded to another part of the RAM of the target system.<br />
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.<br />
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.<br />
This process may have to be repeated until the entire data is programmed into the flash.<br />
<br />
==== Available options for flash programming ====<br />
<br />
In general, there are two possibilities in order to use Flasher for flash programming:<br><br />
<br />
* Using Flasher stand-alone to program the target flash memory (stand-alone mode)<br />
* Using Flasher in combination with J-Flash to program the target flash memory (Flasher in "PC-based mode")<br />
<br />
===== Using Flasher in stand-alone mode =====<br />
<br />
In order to use the Flasher in stand-alone mode, it has to be configured first.<br />
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]].<br />
<br />
===== J-Flash - Complete flash programming solution =====<br />
<br />
J-Flash is a stand-alone Windows application, which can read / write data files and program the flash in almost any ARM system.<br />
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''.<br />
<br />
==== How does the universal flash programming work? ====<br />
<br />
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><br />
<br />
Universal flash programming is available only for stand-alone mode.<br />
== Glossary ==<br />
<br />
This chapter describes important terms used throughout this manual.<br />
<br />
'''Big-endian'''<br><br />
Memory organization where the least significant byte of a word is at a higher address than the most significant byte. See Little-endian.<br />
<br />
'''Cache cleaning'''<br><br />
The process of writing dirty data in a cache to main memory.<br />
<br />
'''Coprocessor'''<br><br />
An additional processor that is used for certain operations, for example, for floating-point math calculations, signal processing, or memory management.<br />
<br />
'''Dirty data'''<br><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.<br />
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.<br />
<br />
'''Halfword'''<br><br />
A 16-bit unit of information.<br />
<br />
'''Host'''<br><br />
A computer which provides data and other services to another computer. Especially, a computer providing debugging services to a target being debugged.<br />
<br />
'''ICache'''<br><br />
Instruction cache.<br />
<br />
'''ID'''<br><br />
Identifier.<br />
<br />
'''IEEE 1149.1'''<br><br />
The IEEE Standard which defines TAP. Commonly (but incorrectly) referred to as JTAG.<br />
<br />
'''Image'''<br><br />
An executable file that has been loaded onto a processor for execution.<br />
<br />
'''Instruction Register'''<br><br />
When referring to a TAP controller, a register that controls the operation of the TAP.<br />
<br />
'''IR'''<br><br />
See Instruction Register.<br />
<br />
'''Joint Test Action Group (JTAG)'''<br><br />
The name of the standards group which created the IEEE 1149.1 specification.<br />
<br />
'''Little-endian'''<br><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.<br />
<br />
'''Memory coherency'''<br><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.<br />
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.<br />
<br />
'''Memory management unit (MMU)'''<br><br />
Hardware that controls caches and access permissions to blocks of memory, and translates virtual to physical addresses.<br />
<br />
'''Memory Protection Unit (MPU)'''<br><br />
Hardware that controls access permissions to blocks of memory. Unlike an MMU, a MPU does not translate virtual addresses to physical addresses.<br />
<br />
'''RESET'''<br><br />
Abbreviation of System Reset. The electronic signal which causes the target system other than the TAP controller to be reset.<br />
This signal is also known as "nSRST" "nSYSRST", "nRST", or "nRESET" in some other manuals. See also nTRST.<br />
<br />
'''nTRST'''<br><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.<br />
<br />
'''Open collector'''<br><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.<br />
<br />
'''Processor Core'''<br><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.<br />
It excludes optional coprocessors, caches, and the memory management unit.<br />
<br />
'''Remapping'''<br><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.<br />
<br />
'''RTOS'''<br><br />
Real Time Operating System.<br />
<br />
'''TAP Controller'''<br><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.<br />
<br />
'''Target'''<br><br />
The actual processor (real silicon or simulated) on which the application program is running.<br />
<br />
'''TCK'''<br><br />
The electronic clock signal which times data on the TAP data lines TMS, TDI, and TDO.<br />
<br />
'''TDI'''<br><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.<br />
<br />
'''TDO'''<br><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.<br />
<br />
'''Test Access Port (TAP)'''<br><br />
The port used to access a device's TAP Controller. Comprises TCK, TMS, TDI, TDO, and nTRST (optional).<br />
<br />
'''Transistor-transistor logic (TTL)'''<br><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.<br />
<br />
'''Word'''<br><br />
A 32-bit unit of information. Contents are taken as being an unsigned integer unless otherwise stated.<br />
== Literature and references ==<br />
This chapter lists documents, which we think may be useful to gain a deeper understanding of technical details.</div>JanBhttps://wiki.segger.com/index.php?title=UM08022_Flasher&diff=17449UM08022 Flasher2024-01-16T11:22:23Z<p>JanB: /* Multiple File Support */</p>
<hr />
<div><!---<br />
General TBD:<br />
- LG: Right now - EVERYTHING<br />
===========================================<br />
--------------------[more specific, but on multiple locations]<br />
- check if all emphasis (bold, tt, blue, etc ) have made it into the new version<br />
- Add Information -> Additional information<br />
- use of the term free-of-charge utility/tool etc<br />
- check compliant to DocStandards_Rules.txt<br />
- Remove everything regarding to Kickstarter versions? eventually create a chapter Legacy -> Kickstarter version were available for hw version 5-x (200x-200x)...[..]<br />
- 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.<br />
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.<br />
- if week keep the IDE specific stuff in the manual, add Ozone, ES and J-Link Commander were no mentioned.<br />
- IDE specifics move into wiki confirmed by Alex<br />
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)<br />
- check all sections regarding licensing<br />
- Check compliance of J-Link emDocs with typographic conventions described in AboutThisDocument.emDoc. What should be altered? e.g. references<br />
- use uref at all (not blue)?<br />
- search and decide where to use \ref (ref with page number)<br />
- why is \ref (no single "option" \uref is more basic as \ref.....)<br />
- in text, use either \ref or \iref instead of \uref<br />
- in old manual, \H3 started on a new page (not per default, but set manually for api tables etc...)<br />
- move used old images and source files (visio etc) via svn (currently copied)<br />
--------------------[grammar / vocabulary discussion]<br />
- Product names<br />
-- Use of SEGGEPROBE in this document?<br />
- use license over licence<br />
- commandline or command-line?<br />
- toolchain or tool chain?<br />
- crossreference/cross-reference/cross reference?<br />
- overcurrent?<br />
- double words?<br />
- frontend?<br />
- Unit: Kbytes, KBytes, V, mV.... 9V or 9 V? Create rule in Vocabulary<br />
- baudrate or baud rate?<br />
- stackpointer or stack pointer<br />
- check where we should replace abbreviations with the long form (e.h. "milliseconds" instead of "ms")<br />
- config or configuration<br />
- filepointer or file pointer?<br />
--------------------[J-Link dep. specific]<br />
- J-Link command strings or J-Link Command strings or J-Link Command Strings<br />
- J-Link settings file or...<br />
- J-Link control panel or ......<br />
- J-Link script files or...<br />
---><br />
Flasher is a programming tool for microcontrollers with on-chip or external flash memory.<br />
Flasher is designed for programming flash targets with the J-Flash software or stand-alone.<br />
In addition to that Flasher can also be used as a regular J-Link. For more information about J-Link in general,<br />
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].<br />
<br />
<div class="toclimit-2"><br />
__TOC__<br />
</div><br />
<br />
== Flasher Software and Documentation Pack ==<br />
The Flasher Software and Documentation Pack, available for download on the [https://www.segger.com/downloads/flasher#FlasherSoftwareAndDocumentationPack SEGGER homepage], includes applications to be used with Flasher and in some cases with J-Link and J-Trace.<br><br />
It also comes with USB-drivers for J-Link, J-Trace and Flasher.<br />
<br />
=== Software overview ===<br />
{| class="wikitable"<br />
|-<br />
! Software !! Description<br />
|-<br />
| [[J-Link Configurator|Flasher Configurator]] || GUI-based configuration tool for Flasher. Allows configuration of USB identification as well as TCP/IP identification of Flashers.<br />
|-<br />
| [[FlasherControl|Flasher Control]] || Command-line tool to connect to the Flasher's command-line interface via USB.<br />
|-<br />
| [[J-Flash]] || Flash programming application.<br />
|-<br />
| [[J-Flash SPI]] || (Q)SPI flash programming application.<br />
|-<br />
| [[J-Link Commander]] || Command-line tool with basic functionality for target analysis.<br />
|-<br />
| [[J-Link Registration]] || SEGGER J-Link Registration utility to register your SEGGER product such as a J-Link, J-Trace or Flasher.<br />
|-<br />
| [[JTAGLoad]] || Command line tool that opens an svf file and sends the data in it via J-Link / J-Trace or Flasher to the target.<br />
|-<br />
| [https://www.segger.com/downloads/flasher/UM08037.pdf U-Flash] || Tool for creating standalone Flasher projects.<br />
|}<br />
<br />
== Flasher overview ==<br />
Flasher connects to a PC using the USB/Ethernet/RS232 interface (what host interfaces are available depends on the Flasher model),<br />
running Windows, Linux & MacOS. In stand-alone mode,<br />
Flasher can be driven by the start/stop button, or via the RS232 interface (handshake control or ASCII interface).<br />
Flasher always has a 20-pin connector, which target interfaces are supported depends on the Flasher model:<br />
* Flasher ARM: JTAG and SWD are supported.<br />
* Flasher RX: JTAG is supported. Flasher comes with additional 14-pin RX adapter<br />
* Flasher PPC: JTAG is supported. Flasher comes with additional 14-pin PPC adapter.<br />
* Flasher PRO: JTAG and SWD are supported.<br />
* Flasher Compact: JTAG and SWD are supported.<br />
<br />
=== Features of Flasher ARM/PPC/RX/PRO ===<br />
* Three boot modes: PC-based mode, stand-alone mode, file access mode<br />
* Stand-alone JTAG/SWD programmer (Once set up, Flasher can be controlled without the use of PC program)<br />
* No power supply required, powered through USB<br />
* Supports internal and external flash devices<br />
* 128 MB memory for storage of target program<br />
* Can be used as J-Link (emulator) with a download speed of up to 720 Kbytes/second<br />
* Data files can updated via USB/Ethernet (using the J-Flash software), via FTP, via RS232 or via the file access mode of Flasher<br />
<br />
{| class="seggertable"<br />
|-<br />
! Flasher model !! Supported cores !! Supported target interfaces !! Flash programming speed (depending on target hardware)<br />
|-<br />
| Flasher ARM || ARM7/ARM9/Cortex-M || JTAG, SWD || between 170 and 300 Kbytes/second<br />
|-<br />
| Flasher RX || Renesas RX610, RX621, RX62N, RX62T || JTAG || between 30-300 Kbytes/second<br />
|-<br />
| Flasher PPC || Power PC e200z0 || JTAG || up to 138 Kbytes/second<br />
|-<br />
| Flasher PRO || ARM7/ARM9/Cortex-M Renesas RX610, RX621, RX62N, RX62T Power PC e200z0 || JTAG, SWD || between 30-300 Kbytes/ second<br />
|-<br />
|}<br />
<br />
==== Features of Flasher Compact ====<br />
<br />
* Three boot modes: PC-based mode, stand-alone mode, file access mode<br />
* Stand-alone JTAG/SWD programmer (Once set up, Flasher can be controlled without the use of PC program)<br />
* No power supply required, powered through USB<br />
* Supports internal and external flash devices<br />
* 128 MB memory for storage of target program<br />
* Can be used as J-Link (emulator) with a download speed of up to 720 Kbytes/second<br />
* Data files can updated via USB/Ethernet (using the J-Flash software) or via the file access mode of Flasher<br />
<br />
{| class="seggertable"<br />
|-<br />
! Flasher model !! Supported cores !! Supported target interfaces !! Flash programming speed (depending on target hardware)<br />
|-<br />
| Flasher ARM || ARM7/ARM9/Cortex-M || JTAG, SWD || between 170 and 300 Kbytes/second<br />
|-<br />
| Flasher RX || Renesas RX610, RX621, RX62N, RX62T || JTAG || between 30-300 Kbytes/second<br />
|-<br />
| Flasher PPC || Power PC e200z0 || JTAG || up to 138 Kbytes/second<br />
|-<br />
| Flasher Compact || ARM7/ARM9/Cortex-M Renesas RX610, RX621, RX62N, RX62T Power PC e200z0 || JTAG, SWD || between 30-300 Kbytes/ second<br />
|-<br />
|}<br />
<br />
==== Features of Flasher Portable/Flasher Portable PLUS ====<br />
<br />
* Stand-alone in-circuit-programmer (Once set up, Flasher can be controlled without the use of a PC program)<br />
* Powered by an internal rechargeable battery (standard batteries for Flasher Portable), no Laptop or external power supply required.<br />
* Multiple firmware images can be stored on Flasher<br />
* 128 MB memory for storage of target program<br />
* Flasher Portable PLUS supports a simple selection of up to 99 firmware images via buttons (since V7.90)<br />
* Supported CPUs: ARM Cortex, Legacy ARM7/9, Renesas RX, Freescale PowerPC<br />
* Supports internal and external flash<br />
* Free software updates<ref name="legitimateOwned" />, 1 year of support<br />
* Data files can be updated via the file access mode functionality or via J-Flash<br />
* Programming speed between 30-300 Kbytes/second (actual speed depends on target hardware)<br />
{{Note|1=Ethernet and RS232 as host interface are not available for Flasher Portable}}<br />
<references><br />
<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.<br />
As a legitimate owner of a SEGGER Flasher, you can always download the latest software free of charge.<br />
Though not planned and not likely, we reserve the right to change this policy.<br />
Note that older models may not be supported by newer versions of the software.<br />
Typically, we support older models with new software at least 3 years after end of life.<br />
</ref><br />
</references><br />
<br />
{| class="seggertable"<br />
|-<br />
! Supported cores !! Supported target interfaces !! Flash programming speed (depending on target hardware)<br />
|-<br />
| ARM7/ARM9/Cortex-M || JTAG, SWD || between 30-300 Kbytes/second<br />
|-<br />
| Renesas RX610, RX621, RX62N, RX62T || JTAG || between 170 and 300 Kbytes/second<br />
|-<br />
| Power PC e200z0 || JTAG || up to 138 Kbytes/second<br />
|-<br />
|}<br />
<br />
==== Working environment ====<br />
<br />
'''General'''<br><br />
The Flasher can operate from a PC with an appropriate software like J-Flash or in stand-alone mode.<br />
<br />
'''Host System'''<br><br />
IBM PC/AT or compatible CPU: 486 (or better) with at least 128MB of RAM,<br />
running Windows, Linux & MacOS. It needs to have a USB, Ethernet or RS232 interface available for communication with Flasher.<br />
<br />
'''Power supply'''<br><br />
Flasher Portable: 3x standard AAA batteries or 5V DC, min. 100 mA via USB connector.<br />
<br />
Flasher Portable PLUS: internal rechargeable 680mAh Li-Ion battery, min. 100 mA via USB connector.<br />
<br />
Other Flashers: 5V DC, min. 100 mA via USB connector.<br />
<br />
'''Installing Flasher PC-software'''<br><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><br />
More information about the package you can find in the similar [[J-Link Software and Documentation Pack]].<br><br />
The package includes U-Flash and J-Flash, the main tools for flashing targets:<br />
* J-Flash : J-Flash User Guide ([https://wiki.segger.com/UM08003_JFlash UM08003_JFlash.pdf]).<br />
* U-Flash : U-Flash User Guide ([https://www.segger.com/downloads/flasher/UM08037.pdf UM08037_UniversalFlashLoader.pdf]).<br />
<br />
=== Specifications ===<br />
<br />
<br />
==== Specifications for Flasher ARM ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Windows, Linux & MacOS<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C<br />
|-<br />
| Storage Temperature || -20 °C ... +60 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
!colspan="100%"| Mechanical<br />
|-<br />
| Size (without cables) || 121mm x 66mm x 30mm<br />
|-<br />
| Weight (without cables) || 119g<br />
|-<br />
!colspan="100%"| Available interfaces<br />
|-<br />
| USB Host interface || USB 2.0, full speed<br />
|-<br />
| Ethernet Host interface || 10/100 MBit<br />
|-<br />
| RS232 Host interface || RS232 9-pin<br />
|-<br />
| Target interface || JTAG 20-pin (14-pin adapter available)<br />
|-<br />
!colspan="100%"| JTAG Interface, Electrical<br />
|-<br />
| Power Supply || USB powered, 100mA for Flasher ARM. 500 mA if target is powered by Flasher ARM<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| Target supply voltage || Supply voltage is 5V, max.<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6 <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Max. JTAG speed || up to 12MHz<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
===== Flasher ARM download speed =====<br />
<br />
The following table lists the Flasher ARM performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! ARM7 memory download<br />
|-<br />
| Flasher ARM || 720 Kbytes/s (12MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
<br />
==== Specifications for Flasher RX ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Windows, Linux & MacOS<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C<br />
|-<br />
| Storage Temperature || -20 °C ... +60 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
!colspan="100%"| Mechanical<br />
|-<br />
| Size (without cables) || 121mm x 66mm x 30mm<br />
|-<br />
| Weight (without cables) || 119g<br />
|-<br />
!colspan="100%"| Available interfaces<br />
|-<br />
| USB Host interface || USB 2.0, full speed<br />
|-<br />
| Ethernet Host interface || 10/100 MBit<br />
|-<br />
| RS232 Host interface || RS232 9-pin<br />
|-<br />
| Target interface || JTAG 20-pin (shipped with 14-pin adapter for Renesas RX)<br />
|-<br />
!colspan="100%"| JTAG Interface, Electrical<br />
|-<br />
| Power Supply || USB powered, 100mA for Flasher RX. 500 mA if target is powered by Flasher RX<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| 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)<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6 <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Max. JTAG speed || up to 12MHz<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
===== Flasher RX download speed =====<br />
<br />
The following table lists the Flasher RX performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! Flasher RX600 series memory download<br />
|-<br />
| Flasher RX || 720 Kbytes/s (12MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
<br />
==== Specifications for Flasher PPC ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Windows, Linux & MacOS<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C<br />
|-<br />
| Storage Temperature || -20 °C ... +60 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
!colspan="100%"| Mechanical<br />
|-<br />
| Size (without cables) || 121mm x 66mm x 30mm<br />
|-<br />
| Weight (without cables) || 119g<br />
|-<br />
!colspan="100%"| Available interfaces<br />
|-<br />
| USB Host interface || USB 2.0, full speed<br />
|-<br />
| Ethernet Host interface || 10/100 MBit<br />
|-<br />
| RS232 Host interface || RS232 9-pin<br />
|-<br />
| Target interface || JTAG 20-pin (shipped with 14-pin adapter for Renesas PPC)<br />
|-<br />
!colspan="100%"| JTAG Interface, Electrical<br />
|-<br />
| Power Supply || USB powered, 100mA for Flasher PPC. 500 mA if target is powered by Flasher PPC<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| Target supply voltage || Supply voltage is 5V, max.<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6 <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Max. JTAG speed || up to 12MHz<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
===== Flasher RX download speed =====<br />
<br />
The following table lists the Flasher PPC performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! Memory download<br />
|-<br />
| Flasher PPC || 530 Kbytes/s (8 MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
<br />
==== Specifications for Flasher PRO ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Windows, Linux & MacOS<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C<br />
|-<br />
| Storage Temperature || -20 °C ... +60 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
!colspan="100%"| Mechanical<br />
|-<br />
| Size (without cables) || 121mm x 66mm x 30mm<br />
|-<br />
| Weight (without cables) || 119g<br />
|-<br />
!colspan="100%"| Available interfaces<br />
|-<br />
| USB Host interface || USB 2.0, full speed<br />
|-<br />
| Ethernet Host interface || 10/100 MBit<br />
|-<br />
| RS232 Host interface || RS232 9-pin<br />
|-<br />
| Target interface || JTAG 20-pin (14-pin adapter available)<br />
|-<br />
!colspan="100%"| JTAG Interface, Electrical<br />
|-<br />
| Power Supply || USB powered, 100mA for Flasher PRO. 500 mA if target is powered by Flasher PRO<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| Target supply voltage || Supply voltage is 5V, max.<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6 <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Max. JTAG speed || up to 12MHz<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
<br />
===== Supported CPU cores =====<br />
<br />
The Flasher PRO supports the following CPU cores:<br />
<br />
'''ARM Cortex'''<br><br />
* Cortex-A5<br />
* Cortex-A8<br />
* Cortex-A9<br />
* Cortex-R4<br />
* Cortex-R5<br />
* Cortex-M0<br />
* Cortex-M0+<br />
* Cortex-M1<br />
* Cortex-M3<br />
* Cortex-M4<br />
<br />
'''ARM (legacy cores)'''<br><br />
* ARM720T<br />
* ARM7TDMI<br />
* ARM7TDMI-S<br />
* ARM920T<br />
* ARM922T<br />
* ARM926EJ-S<br />
* ARM946E-S<br />
* ARM966E-S<br />
* ARM1136JF-S<br />
* ARM1136J-S<br />
* ARM1156T2-S<br />
* ARM1156T2F-S<br />
* ARM1176JZ-S<br />
* ARM1176JZF<br />
* ARM1176JZF-S<br />
<br />
'''Renesas RX'''<br><br />
* RX111<br />
* RX210<br />
* RX220<br />
* RX21A<br />
* RX610<br />
* RX621<br />
* RX62G<br />
* RX62N<br />
* RX62T<br />
* RX630<br />
* RX631<br />
* RX63N<br />
* RX63T<br />
<br />
'''Freescale Power PC'''<br><br />
* e200z0<br />
<br />
===== Supported Target interfaces =====<br />
<br />
The Flasher PRO supports the following target interfaces:<br />
<br />
* JTAG<br />
* SWD<br />
* FINE<br />
* SPD<br />
<br />
===== Flasher PRO download speed =====<br />
<br />
The following table lists the Flasher PRO performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! ARM7 memory download<br />
|-<br />
| Flasher PRO || 720 Kbytes/s (12MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
<br />
==== Specifications for Flasher Compact ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Microsoft Windows (x86/x64)<br>Linux (x86/x64/Arm)<br>macOS (x86/Apple M1)<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C<br />
|-<br />
| Storage Temperature || -20 °C ... +65 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
| Size (without cables) || 70mm x 45mm x 18mm<br />
|-<br />
| Weight (without cables) || 40g<br />
|-<br />
| USB Host interface || USB 2.0 (Hi-Speed); Micro USB<br />
|-<br />
| Target interface || JTAG 20-pin (14-pin adapter available)<br />
|-<br />
| Power Supply || USB powered, 130mA (idle)<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| Target supply voltage || Supply voltage is 5V, max.<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
| Supported target interfaces || SPI, QSPI, 8051 C2, cJTAG, FINE, ICSP, IIC, ISP, JTAG, PDI, SPD, SWD, SWIM, UART, UPDI<br />
|-<br />
| Serial transfer rate between Flasher Compact and target || Up to 50 MHz (Depending on target interface)<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6 <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
===== Supported CPU cores =====<br />
<br />
The Flasher Compact supports the following CPU cores:<br />
'''ARM Cortex'''<br><br />
* Cortex-A5<br />
* Cortex-A8<br />
* Cortex-A9<br />
* Cortex-R4<br />
* Cortex-R5<br />
* Cortex-M0<br />
* Cortex-M0+<br />
* Cortex-M1<br />
* Cortex-M3<br />
* Cortex-M4<br />
<br />
'''ARM (legacy cores)'''<br><br />
* ARM720T<br />
* ARM7TDMI<br />
* ARM7TDMI-S<br />
* ARM920T<br />
* ARM922T<br />
* ARM926EJ-S<br />
* ARM946E-S<br />
* ARM966E-S<br />
* ARM1136JF-S<br />
* ARM1136J-S<br />
* ARM1156T2-S<br />
* ARM1156T2F-S<br />
* ARM1176JZ-S<br />
* ARM1176JZF<br />
* ARM1176JZF-S<br />
<br />
'''Renesas RX'''<br><br />
* RX111<br />
* RX210<br />
* RX220<br />
* RX21A<br />
* RX610<br />
* RX621<br />
* RX62G<br />
* RX62N<br />
* RX62T<br />
* RX630<br />
* RX631<br />
* RX63N<br />
* RX63T<br />
<br />
'''Freescale Power PC'''<br><br />
* e200z0<br />
<br />
===== Flasher Compact download speed =====<br />
<br />
The following table lists the Flasher Compact performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! ARM7 memory download<br />
|-<br />
| Flasher Compact || 720 Kbytes/s (12MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
<br />
==== Specifications for Flasher Portable PLUS ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Windows, Linux & MacOS<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C (normal operation)<br>+5 °C ... +45 °C (battery charging)<br />
|-<br />
| Storage Temperature || -20 °C ... +45 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
| 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)<br />
|-<br />
| Charging via USB || 70 minutes (at 1A charging current)<br />
|-<br />
!colspan="100%"| Mechanical<br />
|-<br />
| Size (without cables) || 126mm x 70mm x 28mm<br />
|-<br />
| Weight (without cables) || 140g<br />
|-<br />
!colspan="100%"| Available interfaces<br />
|-<br />
| USB Host interface || USB 2.0<br />
|-<br />
| Target interface || Standard 20-pin 0.1" connector (Adapters available).<br />
|-<br />
!colspan="100%"| Target Interface, Electrical<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| Target supply voltage || Supply voltage is 4.5V, max. (depends on the current battery voltage).<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6 <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Max. JTAG speed || up to 12MHz<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
===== Supported CPU cores =====<br />
<br />
The Flasher Portable PLUS supports the following CPU cores:<br />
<br />
'''ARM Cortex'''<br><br />
* Cortex-A5<br />
* Cortex-A8<br />
* Cortex-A9<br />
* Cortex-R4<br />
* Cortex-R5<br />
* Cortex-M0<br />
* Cortex-M0+<br />
* Cortex-M1<br />
* Cortex-M3<br />
* Cortex-M4<br />
<br />
'''ARM (legacy cores)'''<br><br />
* ARM720T<br />
* ARM7TDMI<br />
* ARM7TDMI-S<br />
* ARM920T<br />
* ARM922T<br />
* ARM926EJ-S<br />
* ARM946E-S<br />
* ARM966E-S<br />
* ARM1136JF-S<br />
* ARM1136J-S<br />
* ARM1156T2-S<br />
* ARM1156T2F-S<br />
* ARM1176JZ-S<br />
* ARM1176JZF<br />
* ARM1176JZF-S<br />
<br />
'''Renesas RX'''<br><br />
* RX111<br />
* RX210<br />
* RX220<br />
* RX21A<br />
* RX610<br />
* RX621<br />
* RX62G<br />
* RX62N<br />
* RX62T<br />
* RX630<br />
* RX631<br />
* RX63N<br />
* RX63T<br />
<br />
'''Freescale Power PC'''<br><br />
* e200z0<br />
<br />
===== Supported Target interfaces =====<br />
<br />
The Flasher Portable PLUS supports the following target interfaces:<br />
* JTAG<br />
* SWD<br />
* FINE<br />
* SPD<br />
<br />
===== Flasher Portable PLUS download speed =====<br />
<br />
The following table lists the Flasher Portable PLUS performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! ARM7 memory download<br />
|-<br />
| Flasher PRO || 720 Kbytes/s (12MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
<br />
==== Specifications for Flasher Portable ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Windows, Linux & MacOS<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C<br />
|-<br />
| Storage Temperature || -20 °C ... +65 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
| Power Supply || a) USB powered, 100mA for Flasher Portable. 500 mA if target is powered by Flasher Portable<br>b) Batteries powered (3xAAA)<br />
|-<br />
!colspan="100%"| Mechanical<br />
|-<br />
| Size (without cables) || 130mm x 65mm x 25mm<br />
|-<br />
| Weight (without cables) || 120g<br />
|-<br />
!colspan="100%"| Available interfaces<br />
|-<br />
| USB Host interface || USB 2.0<br />
|-<br />
| Target interface || Standard 20-pin 0.1" connector (Adapters available).<br />
|-<br />
!colspan="100%"| Target Interface, Electrical<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| Target supply voltage || Supply voltage is 4.5V, max. (depends on the current battery voltage).<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6V <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Max. JTAG speed || up to 12MHz<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
===== Supported CPU cores =====<br />
<br />
The Flasher Portable supports the following CPU cores:<br />
<br />
'''ARM Cortex'''<br><br />
* Cortex-A5<br />
* Cortex-A8<br />
* Cortex-A9<br />
* Cortex-R4<br />
* Cortex-R5<br />
* Cortex-M0<br />
* Cortex-M0+<br />
* Cortex-M1<br />
* Cortex-M3<br />
* Cortex-M4<br />
<br />
'''ARM (legacy cores)'''<br><br />
* ARM720T<br />
* ARM7TDMI<br />
* ARM7TDMI-S<br />
* ARM920T<br />
* ARM922T<br />
* ARM926EJ-S<br />
* ARM946E-S<br />
* ARM966E-S<br />
* ARM1136JF-S<br />
* ARM1136J-S<br />
* ARM1156T2-S<br />
* ARM1156T2F-S<br />
* ARM1176JZ-S<br />
* ARM1176JZF<br />
* ARM1176JZF-S<br />
<br />
'''Renesas RX'''<br><br />
* RX111<br />
* RX210<br />
* RX220<br />
* RX21A<br />
* RX610<br />
* RX621<br />
* RX62G<br />
* RX62N<br />
* RX62T<br />
* RX630<br />
* RX631<br />
* RX63N<br />
* RX63T<br />
<br />
'''Freescale Power PC'''<br><br />
* e200z0<br />
<br />
===== Supported Target interfaces =====<br />
<br />
The Flasher Portable supports the following target interfaces:<br />
<br />
* JTAG<br />
* SWD<br />
* FINE<br />
* SPD<br />
<br />
===== Flasher Portable download speed =====<br />
<br />
The following table lists the Flasher Portable performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! ARM7 memory download<br />
|-<br />
| Flasher PRO || 720 Kbytes/s (12MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
== Working with Flasher ==<br />
<br />
This chapter describes functionality and how to use Flasher.<br />
<br />
=== Flasher Portable PLUS ===<br />
<br />
The Flasher Portable PLUS is a portable version of SEGGERs Flasher family,<br />
which has been designed to fill the need of an extremely portable, production grade,<br />
Flash programmer used for in-field firmware updates. No need to be tethered to an outlet,<br />
it is powered by an integrated Li-Ion cell (680mAh).<br />
The Flasher Portable PLUS programs flash targets in stand-alone mode or via J-Flash PC software.<br><br />
<br />
Furthermore the Flasher Portable PLUS allows the user to select between 99 data images to be programmed (since V7.90).<br />
The images can be easily selected by using the SEL button on the front of the housing.<br />
For more information about support for multiple images, please refer to [[#Multiple File Support | Multiple File Support]].<br><br />
For setup and configuration purposes, the Flasher Portable PLUS connects to a PC via USB interface,<br />
running Windows, Linux & MacOS and has a built-in standard 20-pin J-Link target connector.<br><br />
<br />
{{Note|1=Ethernet and RS232 as host interface are not available for the Flasher Portable PLUS.}}<br />
<br />
==== Housing & Buttons ====<br />
<br />
The Flasher Portable PLUS comes with a display, which is for example used to represent the status of an ongoing flash progress.<br />
Furthermore, there are three buttons which allow the user to control Flasher Portable PLUS.<br />
For a detailed description of the functions, take a look at the table below:<br />
<br />
<!-- LG xxxxxx edit image with labels for buttons? (Is this actually necessary? Buttons are basically self-explanatory...) --><br />
[[File:Flasher_Portable_PLUS.png | 500px]]<br />
<br />
{| class="seggertable"<br />
|-<br />
! Button !! Description<br />
|-<br />
| Program || Start programming process with the currently selected image.<br />
|-<br />
| Select image || Select the image to be programmed next time the Program button is pressed.<br />
|-<br />
| 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.<br />
|-<br />
|}<br />
<br />
==== Configuration ====<br />
<br />
The Flasher Portable PLUS has some configuration options the other Flashers do not have.<br />
{| class="seggertable"<br />
|-<br />
! Option !! Description !! Value range !! Default value<br />
|-<br />
| AutoPowerOffOnIdle || Specifies the time interval after which the Flasher Portable will turn off without any user action || 1 to 3600 || 60<br />
|-<br />
| ShowDatCRCAfterProgramming || Activates displaying the data file CRC after the programming in the pop up message || 0 = inactive, 1 = active || 0<br />
|-<br />
|}<br />
<br />
If the <tt>Flasher.ini</tt> does not contain a <tt>[Config]</tt> section with the configuration option, the default value is used.<br />
<br />
'''Example:'''<br><br />
This sample will show the data file CRC after the programming and the auto power of is set to five minutes (=300 seconds).<br />
<br />
<source lang="c"><br />
[CONFIG]<br />
AutoPowerOffOnIdle = "300"<br />
ShowDatCRCAfterProgramming = "1"<br />
</source><br />
<br />
=== Flasher Portable ===<br />
<br />
The Flasher Portable is a portable version of SEGGERs Flasher family, which has been designed to fill the need of an extremely portable,<br />
production grade, Flash programmer used for in-field firmware updates. No need to be tethered to an outlet,<br />
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><br />
<br />
Furthermore the Flasher Portable allows the user to select between four data images to be programmed.<br />
The images can be easily selected by using the arrow buttons on the front of the housing.<br />
For more information about support for multiple images, please refer to [[#Multiple File Support | Multiple File Support]].<br><br />
For setup and configuration purposes, the Flasher Portable connects to a PC via USB interface,<br />
running Windows, Linux & MacOS and has a built-in standard 20-pin J-Link target connector.<br><br />
<br />
{{Note|1=Ethernet and RS232 as host interface are not available for the Flasher Portable.}}<br />
<br />
==== Housing & Buttons ====<br />
<br />
The Flasher Portable comes with several leds which are for example used to represent the status of an ongoing flash progress.<br />
Furthermore, there are three buttons which allow the user to control Flasher Portable.<br />
For a detailed description of the functions, take a look at the two tables below:<br />
<br />
<!-- LG xxxxxx edit image with labels for buttons?--><br />
[[File:Flasher_Portable_Top_2.png | 500px]]<br />
<br />
{| class="seggertable"<br />
|-<br />
! LED !! Description<br />
|-<br />
| ACTIVE || GREEN. Blinks while the Flasher Portable is busy / performs operations on the target.<br />
|-<br />
| PASS/FAIL || GREEN/RED. Indicates, if the last flashing cycle was successful.<br />
<ul><br />
<li> GREEN: Flashing cycle completed successfully.</li><br />
<li> RED: Flashing cycle completed with error.</li><br />
</ul><br />
|-<br />
| 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]].<br />
|-<br />
| POWER || GREEN: Indicates if Flasher is currently powered. Blinks while Flasher Portable tries to enumerate via USB.<br />
|-<br />
| 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.<br />
|-<br />
|}<br />
<br />
{| class="seggertable"<br />
|-<br />
! Button !! Description<br />
|-<br />
| Program || Start programming process with the currently selected image.<br />
|-<br />
| Select image || Select the image to be programmed next time the <tt>Program</tt> button is pressed.<br />
|-<br />
| 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<br />
|-<br />
|}<br />
<br />
=== File system ===<br />
<br />
The Flasher supports 8.3 filenames only (8 characters filename, 3 characters file extension).<br />
Using longer filenames may result in incorrect operation. Integrated functions,<br />
like the FTP server or the terminal server, will refuse writing files with long filenames.<br />
<br />
=== Setting up the IP interface ===<br />
<br />
Setting up the IP interface<br />
Some of the Flasher models come with an additional Ethernet interface to communicate with the host system.<br />
These Flashers also come with a built-in webserver which allows some basic setup of the emulator,<br />
e.g. configuring a default gateway which allows using it even in large intranets. For more information,<br />
please refer to [[#TCP Services | TCP Services]].<br />
<br />
==== Connecting the first time ====<br />
<br />
When connecting Flasher the first time, it attempts to acquire an IP address via DHCP.<br />
The recommended way for finding out which IP address has been assigned to Flasher is, to use the J-Link Configurator.<br />
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.<br />
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''.<br />
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,<br />
please refer to ''UM08001, J-Link / J-Trace User Guide'', chapter ''Setup'', section ''Setting up the IP interface''.<br />
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]].<br />
<br />
=== Operating modes ===<br />
<br />
All Flashers except the Flasher ATE are able to boot in 3 different modes:<br />
<br />
* PC-based mode<br />
* Stand-alone mode<br />
* File access mode<br />
<br />
{{Note|1=The Flasher ATE only supports the stand-alone mode.}}<br />
<br />
'''Definition PC-based mode'''<br><br />
Flasher is connected to a PC via USB/Ethernet and controlled by a PC application (J-Flash).<br />
If there is an RS232 connection to a PC, does not have any influence on if PC-based mode is entered or not.<br />
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, ...)<br />
<br />
'''Definition Stand-alone mode'''<br><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.<br />
<br />
'''Definition file access mode'''<br><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.<br />
In this mode, Flasher enumerates as a mass storage device (like an USB Stick) at the host PC.<br />
In this mode, configuration + data files can be manually placed on the Flasher and the Flasher logfile can be read out.<br />
If you are using a self-powered Flasher such as the Flasher Portable Plus, the Flasher must be turned off before connecting it.<br />
<br />
==== PC-based mode ====<br />
If you want to use Flasher for the first time you need to install the J-Link software and documentation package.<br />
After installation, connect Flasher to the host PC via USB or Ethernet.<br />
For more information about how to install the J-Link software and documentation package please refer to [[J-Link Software and Documentation Pack]].<br />
<br />
===== Connecting the target system =====<br />
<br />
'''Power-on sequence'''<br><br />
In general, Flasher should be powered on before connecting it with the target device.<br />
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.<br />
Power-on the device after you connected Flasher to it. Flasher will boot in "PC-based mode".<br />
<br />
'''Verifying target device connection with J-Link.exe'''<br><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.<br />
Then start the J-Link command line tool <tt>JLink.exe</tt>,<br />
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.<br />
The screenshot below shows the output of <tt>JLink.exe</tt>.<br />
<br />
[[File:flasher_jlinkmode.gif]]<br />
<br />
===== LED status indicators =====<br />
<br />
In PC-based mode, there are also certain LED status codes defined:<br />
<br />
{| class="seggertable"<br />
|-<br />
! # !! Status of LED !! Meaning<br />
|-<br />
| 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.<br />
|-<br />
| 0 || GREEN<br>constant || Flasher enumeration process is complete and it is ready to be controlled by a PC application.<br />
|-<br />
|}<br />
<br />
==== Stand-alone mode ====<br />
<br />
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]].<br />
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).<br />
In the "stand-alone mode" Flasher can be used as a stand-alone flash programmer.<br><br />
<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]].}}<br />
<br />
===== LED status indicators =====<br />
Progress and result of an operation is indicated by Flasher's LEDs. The behavior is different for J-Link and stand-alone mode.<br />
For a definition of the different modes, please refer to [[#Operating modes | Operating modes]].<br />
The following table describes the behavior of the LEDs in stand-alone mode.<br />
<br />
{| class="seggertable"<br />
|-<br />
! # !! Status of LED !! Meaning<br />
|-<br />
| 0 || GREEN<br>constant || Flasher waits for a start trigger to perform an operation in stand-alone mode.<br />
|-<br />
| 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><br />
|-<br />
| 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.<br />
|-<br />
|}<br />
Older Flasher models have a different behavior.<br />
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:<br />
<br />
* 1621xxxxx (Flasher ARM V2)<br />
* 1630xxxxx (Flasher ARM V3)<br />
* 4210xxxxx (Flasher PPC V1)<br />
* 4110xxxxx (Flasher RX V1)<br />
<br />
{| class="seggertable"<br />
|-<br />
! # !! Status of LED !! Meaning<br />
|-<br />
| 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.<br />
|-<br />
| 1 || GREEN<br>constant || Connect to target and perform init sequence.<br />
|-<br />
| 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><br />
|-<br />
| 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.<br />
|-<br />
|}<br />
<br />
==== File access mode ====<br />
<br />
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".<br />
If you are using a self-powered Flasher such as the Flasher Portable Plus, the Flasher must be turned off before connecting it.<br />
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.<br />
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>.<br />
<br />
[[File:flasher_mode_msd.gif]]<br />
<br />
<tt>FLASHER.CFG</tt> contains the configuration settings for programming the target device and <tt>FLASHER.DAT</tt> contains the data to be programmed.<br />
<tt>FLASHER.LOG</tt> contains all logging information about the commands, performed in stand-alone mode.<br />
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><br />
<br />
Currently, J-Flash does not support to configure Flasher for automated serial number programming.<br><br />
<br />
If you want to configure multiple Flasher for the same target you do not have to use J-Flash all the time.<br />
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".<br />
<br />
=== Setting up Flasher for stand-alone mode ===<br />
{{Note| All Options how to set up the Flasher for stand-alone mode you can find here: [[Flasher/Download project to Flasher|Download project to the Flasher]]}}<br />
<br />
In order to set up Flasher for the stand-alone mode it needs to be configured once using the J-Flash software.<br />
For more information about J-Flash, please refer to the ''J-Flash User Guide''.<br><br />
<br />
After starting J-Flash, open the appropriate J-Flash project for the target Flasher shall be configured for, by selecting '''File''' -> '''Open Project'''.<br />
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><br />
<br />
After the appropriate project has been opened / created, the data file which shall be programmed needs to be loaded, by selecting '''File''' -> '''Open'''.<br />
After this J-Flash should look like in the screenshot below.<br />
<br />
[[File:jflash_projectfile_datafile.gif]]<br />
<br />
Before downloading the configuration (project) and program data (data file) to Flasher, the connection type (USB/IP) needs to be selected in the project.<br />
These settings are also saved on a per-project basis, so this also only needs to be setup once per J-Flash project.<br />
The connection dialog is opened by clicking '''Options''' -> '''Project settings''' -> '''General'''.<br />
<br />
[[File:jflash_connection_dialog.gif]]<br />
<br />
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.<br />
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.<br />
The user then can simply select the Flash he wants to download the configuration to.<br />
<br />
[[File:EmuSelectionDialog.gif]]<br />
<br />
In order to download the configuration and program data to the Flasher, simply select '''File''' -> '''Download config & data file to Flasher'''.<br />
<br />
[[File:jflash_download_to_emul.gif]]<br />
<br />
The J-Flash log window indicates that the download to the emulator was successful.<br />
<br />
[[File:jflash_download_to_emu_succ.gif]]<br />
<br />
From now on, Flasher can be used in stand-alone mode (without host PC interaction) for stand-alone programming.<br />
<br />
==== Preparing for stand-alone operation manually ====<br />
<br />
As an alternative, J-Flash can also be used to save config and data file to a hard drive.<br><br />
<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,<br />
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.<br />
<br />
'''Creating config and data files'''<br><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><br />
<br />
For some devices, additional files (*.PEX) are needed.<br />
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.<br />
<br />
'''About *.PEX files'''<br><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,<br />
the following needs to be taken care of:<br><br />
<br />
For some devices, special connect, reset etc. sequences are necessary which are stored in so-called *.PEX files on the Flasher.<br><br />
<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><br />
<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><br />
The *.PEX files need to be placed in a subdirectory with the same name as the corresponding *.cfg file.<br />
J-Flash creates a directory with the correct name automatically when a config file is created.<br><br />
<br />
Example:<br><br />
<br />
MyConf0 is a project for a device that requires a *.PEX file for connect.<br><br />
MyConf1 is a project for a device that requires no *.PEX file at all.<br />
<br />
[[File:PEX_File_Flasher.png]]<br />
<br />
=== Universal Flash Loader mode ===<br />
<br />
As an alternative to the stand-alone mode, configured via J-Flash, there is the Universal Flash Loader mode.<br />
While the normal stand-alone mode relies on using the debug interface of the device, the Universal Flash Loader<br />
mode uses device or vendor specific programming interfaces and protocols and therefore it is independent of the<br />
CPU core.<br><br />
<br />
The Universal Flash Loader is available for the following Flasher models:<br />
* Flasher PRO<br />
* Flasher Compact<br />
* Flasher Portable PLUS<br />
<br />
For some of the supported devices, SEGGER offers specific adapters.<br />
<br />
==== Preparing manually ====<br />
<br />
The Universal Flash Loader uses an configuration file (*.UNI), a device specific flash programming algorithm (*.PEX) and a data file (*.DAT).<br />
<br />
===== Configuration =====<br />
<br />
The configuration file basically is split into three parts.<br />
The first part, the section [DEVICE], controls the generic behavior of the Universal Flash Loader.<br />
It specifies which protocol driver and data file to use. It allows enabling and configuring target power<br />
and it defines which actions to perform.<br />
The second part consists of one or more [BANKx] sections, which contain information about the memories.<br />
The third part, the section [CONFIG], includes configuration settings for the protocol driver.<br><br />
<br />
An .UNI file might look as follows:<br><br />
<br />
<source lang="c"><br />
[OPTIONS]<br />
TargetPower = "0"<br />
ChipErase = "0"<br />
<br />
[TASKS]<br />
CheckBlank = "1"<br />
Erase = "1"<br />
Program = "1"<br />
Verify = "1"<br />
Secure = "1"<br />
<br />
[DEVICE]<br />
Algo = "RL78.PEX"<br />
Data = "ALL_6k.dat"<br />
<br />
[BANK0]<br />
; Code Flash<br />
Base = "0x00000000"<br />
Size = "0x00004000"<br />
Sect = "0x00000400"<br />
<br />
[BANK1]<br />
; Data Flash<br />
Base = "0x000F1000"<br />
Size = "0x00000800"<br />
Sect = "0x00000400"<br />
<br />
[CONFIG]<br />
BaudRate = "1000000"<br />
ClearConfigOnConnect = "0x00"<br />
Security = "0xFF"<br />
ShieldStart = "0x0000"<br />
ShieldEnd = "0x000F"<br />
</source><br />
<br />
'''[OPTIONS]'''<br><br />
'''TargetPower'''<br><br />
If set to a value >0, power is applied to the target.<br />
The value defines the delay (in ms) after enabling the target power supply and before starting to communicate with the target.<br />
<br />
'''ChipErase'''<br><br />
If set to 1, the chip erase function is called for erasing the chip.<br><br />
{{Note|1=Do not enable this setting if the flash programming algorithm does not support chip erase.}}<br />
<br />
'''[TASKS]'''<br><br />
'''CheckBlank'''<br><br />
Defines if a blank check should be performed before erasing a sector.<br />
<br />
'''Erase'''<br><br />
Defines if the sector should be erased before programming.<br />
<br />
'''Program'''<br><br />
Defines if the sector should be programmed.<br />
<br />
'''Verify'''<br><br />
Defines if the sector should be verified after programming.<br />
<br />
'''Secure'''<br><br />
Defines if the device should be secured or protected against read-out after verifying.<br />
<br />
'''[DEVICE]'''<br><br />
'''Algo'''<br><br />
File name of the flash programming algorithm. This file is provided by SEGGER and will typically support a series of devices.<br />
<br />
'''Data'''<br><br />
File name of the data file to program. The Flasher only supports the Flasher .dat file format.<br />
Flasher .dat files can be generated by J-Flash or Universal Flash Loader and offer high performance together with high flexibility.<br />
<br />
'''[BANKx]'''<br><br />
x blocks with configuration data for the flash banks. All three parameters (Base, Size and Sect) are mandatory.<br />
<br />
'''Base'''<br><br />
Base address of the flash bank.<br />
<br />
'''Size'''<br><br />
Total size of the flash bank.<br />
<br />
'''Sect'''<br><br />
Sector size of the flash bank.<br />
<br />
'''[CONFIG]'''<br><br />
This section includes specific configuration data for the flash programming algorithm.<br><br />
There are no general parameters.<br />
<br />
{{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. }}<br />
<br />
==== Preparing using the PC utility ====<br />
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.<br />
<br />
[[File:Universal Flash Loader.png]]<br />
<br />
The Universal Flash Loader Configurator comes with a large list of devices and flash programming algorithms. If you are going to<br />
use a device from one of the supported families which currently is not available in the utility, feel free to contact the support.<br />
<br />
=== Multiple File Support ===<br />
<br />
It is also possible to have multiple data files and config files on Flasher, to make Flasher more easy to use in production environment.<br />
To choose the correct configuration file and data file pair, a <tt>FLASHER.INI</tt> file is used.<br />
This init file contains a <tt>[FILES]</tt> section which describes which configuration file and which data file should be used for programming.<br />
A sample content of a FLASHER.INI file is shown below:<br><br />
<br />
<source><br />
[FILES]<br />
DataFile = "Flasher1.dat"<br />
ConfigFile = "Flasher1.cfg"<br />
</source><br />
<br />
Using this method all configuration files and data files which are used in the production only have to be downloaded once.<br />
From there on a configuration file / data file pair can be switched by simply replacing the <tt>FLASHER.INI</tt> by a new one,<br />
which contains the new descriptions for the configuration file and data file. The <tt>FLASHER.INI</tt> can be replaced in two ways:<br />
<ol><br />
<li>Boot Flasher in file access mode in order to replace the <tt>FLASHER.INI</tt></li><br />
<li><br />
If Flasher is already integrated into the production line, runs in stand-alone mode and can not be booted in other mode:<br />
Use the file I/O commands provided by the ASCII interface of Flasher, to replace the <tt>FLASHER.INI</tt>.<br />
For more information about the file I/O commands, please refer to [[#File I/O commands | File I/O commands]].<br />
</li><br />
</ol><br />
{{Note|1=Flasher with hardware version 4 and lower only supports 8.3 filenames only (8 characters filename, 3 characters file extension). Using longer filenames may result in incorrect operation.}}<br />
<br />
==== Flasher Portable specifics ====<br />
<br />
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><br />
<br />
Which config / data file pair is used for which image selection position is determined by the contents of the FLASHER.INI.<br />
For this, the FLASHER.INI contents in the <tt>[FILES]</tt> section have been extended.<br />
The sample below shows how to enable the user to select between four different images on the Flasher portable via the select / arrow button:<br />
<br />
<source><br />
[FILES]<br />
DataFile = "First.dat"<br />
ConfigFile = "First.cfg"<br />
DataFile1 = "Second.dat"<br />
ConfigFile1 = "Second.cfg"<br />
DataFile2 = "Third.dat"<br />
ConfigFile2 = "Third.cfg"<br />
DataFile3 = "Fourth.dat"<br />
ConfigFile3 = "Fourth.cfg"<br />
</source><br />
<br />
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.<br />
From there on, switching between the files can be done by simply using the selection button of Flasher Portable.<br />
<br />
===== Example =====<br />
<br />
1 Target, 2 Datafiles (e.g. boot loader und application) --> same configuration file (*.CFG) but different data files (*.DAT) should be used.<br><br />
<br />
* Open pre-configured J-Flash project<br />
* File -> Save Flasher config file ... (DEFAULT.CFG)<br />
* Open data file 1 (boot loader)<br />
* File -> Save Flasher data file ... (BOOT.DAT)<br />
* Open data file 2 (application)<br />
* File -> Save Flasher data file ... (APP.DAT)<br />
* Create the a FLASHER.INI file (content see below)<br />
* Connect the Flasher in file access mode to the PC<br />
* Copy DEFAULT.CFG, BOOT.DAT, APP.DAT and FLASHER.INI on the Flasher<br />
<br />
FLASHER.INI content:<br><br />
<br />
<source><br />
[FILES]<br />
DataFile = "BOOT.DAT"<br />
ConfigFile = "DEFAULT.CFG"<br />
DataFile1 = "APP.DAT"<br />
ConfigFile1 = "DEFAULT.CFG"<br />
</source><br />
<br />
==== Flasher Portable PLUS specifics ====<br />
<br />
Flasher Portable PLUS allows to choose between 99 configuration and data file pairs during runtime by using the select button on the front of Flasher Portable PLUS.<br><br />
<br />
Which config / data file pair is used for which image selection position is determined by the contents of the FLASHER.INI.<br />
For this, the FLASHER.INI may contain several <tt>[BATCH]</tt> sections.<br />
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:<br />
<br />
<source><br />
[BATCH]<br />
DataFile = "First.dat"<br />
ConfigFile = "First.cfg"<br />
[BATCH1]<br />
DataFile = "Second.dat"<br />
ConfigFile = "Second.cfg"<br />
[BATCH2]<br />
DataFile = "Third.dat"<br />
ConfigFile = "Third.cfg"<br />
[BATCH7]<br />
DataFile = "Proj_8.dat"<br />
ConfigFile = "Proj_8.cfg"<br />
[BATCH15]<br />
DataFile = "Proj_16.dat"<br />
ConfigFile = "Proj_16.cfg"<br />
</source><br />
<br />
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.<br />
From there on, switching between the files can be done by simply using the selection button of Flasher Portable PLUS.<br />
<br />
Please also consider the chapter [[#Batch Programming in stand-alone mode | Batch Programming in stand-alone mode]].<br />
<br />
{{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.}}<br />
{{Note|1=You may have gaps in the list. The missing entries will be skipped when selecting the next configuration.}}<br />
{{Note|1=The <tt>[Files]</tt> section is supported by the Flasher Portable PLUS, too. But the number of configuration is limited to four.}}<br />
<br />
===== Example =====<br />
<br />
1 Target, 2 Datafiles (e.g. boot loader und application) --> same configuration file (*.CFG) but different data files (*.DAT) should be used.<br><br />
<br />
* Open pre-configured J-Flash project<br />
* File -> Save Flasher config file ... (DEFAULT.CFG)<br />
* Open data file 1 (boot loader)<br />
* File -> Save Flasher data file ... (BOOT.DAT)<br />
* Open data file 2 (application)<br />
* File -> Save Flasher data file ... (APP.DAT)<br />
* Create the a FLASHER.INI file (content see below)<br />
* Connect the Flasher in file access mode to the PC<br />
* Copy DEFAULT.CFG, BOOT.DAT, APP.DAT and FLASHER.INI on the Flasher<br />
<br />
FLASHER.INI content:<br><br />
<br />
<source><br />
[BATCH]<br />
DataFile = "BOOT.DAT"<br />
ConfigFile = "DEFAULT.CFG"<br />
DisplayName = "Bootloader"<br />
[BATCH1]<br />
DataFile = "APP.DAT"<br />
ConfigFile = "DEFAULT.CFG"<br />
DisplayName = "Application"<br />
[BATCH2]<br />
DataFile = "BOOT.DAT"<br />
ConfigFile = "DEFAULT.CFG"<br />
DataFile1 = "APP.DAT"<br />
ConfigFile1 = "DEFAULT.CFG"<br />
DisplayName = "BL and App"<br />
</source><br />
<br />
=== Custom labels ===<br />
<br />
Flasher supports to assign custom labels to configurations. This allows to specify easy to remember names for configurations that are stored on the Flasher.<br />
<br />
==== Hardware and software requirements ====<br />
This feature is supported by the following models:<br />
* Flasher Portable PLUS<br />
<br />
This feature is supported since V6.30e of the software package and firmware<br />
<br />
==== Assigning labels ====<br />
The configuration and data file pairs are specified in the <tt>FLASHER.INI</tt> file:<br />
<source><br />
[FILES]<br />
DataFile = "IMAGE0.dat"<br />
ConfigFile = "IMAGE0.cfg"<br />
DataFile1 = "IMAGE1.dat"<br />
ConfigFile1 = "IMAGE1.cfg"<br />
</source><br />
<br />
By default, Flasher will show the names of the configuration and data file:<br />
[[File:FW1_smartwatch_nolabel.png]]<br />
[[File:FW2_smart_meter_nolabel.png]]<br />
<br />
By adding <tt>DisplayName</tt>, <tt>DisplayName1</tt>, ... keys to the <tt>FLASHER.INI</tt>, a custom label can be shown instead:<br />
<source><br />
[FILES]<br />
DisplayName = "FW smartwatch"<br />
DataFile = "IMAGE0.dat"<br />
ConfigFile = "IMAGE0.cfg"<br />
DisplayName1 = "FW smart meter"<br />
DataFile1 = "IMAGE1.dat"<br />
ConfigFile1 = "IMAGE1.cfg"<br />
</source><br />
<br />
The images will now be shown as follows:<br />
[[File:FW1_smartwatch_label.png]]<br />
[[File:FW2_smart_meter_label.png]]<br />
<br />
==== Considerations ====<br />
* 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.<br />
<br />
=== Programming multiple targets ===<br />
<br />
It is possible to program multiple targets which are located in a JTAG chain.<br />
The targets will be programmed each with a configuration and a data file.<br><br />
The configuration for the desired target must be selected before it can be programmed,<br />
this can be done with the <tt>#SELECT</tt> command.<br />
For more information how to use the <tt>#SELECT</tt> command please refer to the [[#ASCII_command_interface|ASCII command interface]].<br />
<br />
'''Example'''<br><br />
Three devices should be programmed.<br><br />
<br />
JTAG Chain: ''TDI'' --> ''Device2'' --> ''Device1'' --> ''Device0'' --> ''TDO''<br><br />
<br />
Three configurations would be stored on the flasher:<br><br />
<br />
Config 0: Configured to program Device0 (DEVICE0.CFG, DEVICE0.DAT)<br><br />
Config 1: Configured to program Device1 (DEVICE1.CFG, DEVICE1.DAT)<br><br />
Config 2: Configured to program Device2 (DEVICE2.CFG, DEVICE2.DAT)<br><br />
<br />
Selection and programming of the target will be done via the ASCII interface:<br><br />
<br />
<source><br />
#SELECT DEVICE0<br />
#AUTO<br />
#SELECT DEVICE1<br />
#AUTO<br />
#SELECT DEVICE2<br />
#AUTO<br />
</source><br />
<br />
==== Programming multiple targets with J-Flash ====<br />
<br />
Programming multiple targets can also be done via J-Flash using the command line interface.<br />
For this each target must be handled with its own project file.<br />
<br />
'''Example'''<br><br />
<br />
<source><br />
JFlash.exe -openproj"Device0.jflash" -open"Device0.hex" -auto -exit<br />
JFlash.exe -openproj"Device1.jflash" -open"Device1.hex" -auto -exit<br />
JFlash.exe -openproj"Device2.jflash" -open"Device2.hex" -auto -exit<br />
</source><br />
<br />
=== Batch Programming in stand-alone mode ===<br />
<br />
Batch programming allows to execute different stand-alone mode jobs in batch to be executed in immediate succession, without any user interaction in between.<br />
This can be used for example to program multiple targets in a JTAG-Chain or multiple data files to a target.<br><br />
A batch may contains an unlimited number of configurations which consist of a data file (*.DAT) and config file (*.CFG).<br />
For further information regarding config and data files, please refer to [[#Preparing for stand-alone operation manually | Preparing for stand-alone operation manually]].<br><br />
In order to specify the batch jobs, a FLASHER.INI file is used.<br />
This init file contains a [BATCH] section which describes which configuration pairs (*.DAT and *.CFG file) should be used for each batch job.<br />
A sample content of a FLASHER.INI file is shown below:<br><br />
<br />
<source><br />
[BATCH]<br />
DataFile = "Flasher0.dat"<br />
ConfigFile = "Flasher0.cfg"<br />
DataFile1 = "Flasher1.dat"<br />
ConfigFile1 = "Flasher1.cfg"<br />
</source><br />
<br />
[[File:Batch_Jobs.bmp]]<br />
<br />
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.<br />
<br />
<br />
[[File:Batch_Programming.bmp]]<br />
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<br />
currently executed action.<br />
<br />
<br />
[[File:Batch_Result.bmp]]<br />
The result of the programming will be shown on the screen after finishing all jobs.<br />
<br />
<br />
Creating / Replacing of the FLASHER.INI file can done in two ways:<br><br />
<ol><br />
<li>Boot Flasher in file access mode in order to replace the FLASHER.INI</li><br />
<li><br />
If Flasher is already integrated into the production line, runs in stand-alone mode and can not be booted in other mode:<br />
Use the file I/O commands provided by the ASCII interface of Flasher, to replace the FLASHER.INI .<br />
For more information about the file I/O commands, please refer to [[#File I/O commands | File I/O commands]].<br />
In case of an error occurred during execution, the Flasher terminates the entire batch processing.<br />
</li><br />
</ol><br />
{{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.}}<br />
{{Note|1=Flasher supports 8.3 filenames only (8 characters filename, 3 characters file extension). Using longer filenames may result in incorrect operation.}}<br />
<br />
==== Flasher Portable specifics ====<br />
<br />
Flasher Portable allows to choose between four different batches during runtime by using the select/arrow button on the front of Flasher Portable.<br />
Which batch configuration is used for which image selection position is specified in the FLASHER.INI.<br />
For this, the FLASHER.INI contents in the [BATCH] section have been extended.<br />
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><br />
<br />
<source><br />
[BATCH]<br />
DataFile = "Flasher0.dat"<br />
ConfigFile = "Flasher0.cfg"<br />
DataFile1 = "Flasher1.dat"<br />
ConfigFile1 = "Flasher1.cfg"<br />
DataFile2 = "Flasher2.dat"<br />
ConfigFile2 = "Flasher2.cfg"<br />
[BATCH1]<br />
DataFile = "TEST.dat"<br />
ConfigFile = "Test.cfg"<br />
[BATCH2]<br />
DataFile = "VALIDATE.dat"<br />
ConfigFile = "Flasher0.cfg"<br />
</source><br />
<br />
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.<br />
From there on, switching between the batches can be done by simply using the selection button of Flasher Portable.<br />
<br />
<br />
<br />
==== Examples ====<br />
<br />
'''Example 1:''' Programming two Data files to the same target<br><br />
<br />
* Open your J-Flash project.<br />
* Use File -> Save Flasher config file... to save the .CFG file (in this example: STM32F4.CFG).<br />
* Select the first binary and use File -> Save Flasher Data file... to save the first .DAT file (in this example: DATA0.DAT).<br />
* Select the second binary and use File -> Save Flasher Data file... to save the second data file .DAT file (in this example: DATA1.DAT).<br />
* Copy the Files to the Flasher e.g. by using file access mode.<br />
* Create a FLASHER.INI file in the root directory of the Flasher.<br />
* Exemplary content of FLASHER.INI:<br><br />
<source><br />
[BATCH]<br />
DataFile = "DATA0.dat"<br />
ConfigFile = "emPower.cfg"<br />
DataFile1 = "DATA1.dat"<br />
ConfigFile1 = "emPower.cfg"<br />
</source><br />
<br />
<br />
'''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><br />
Example scenario: 2 Devices in a JTAG chain, a STM32F1 and a STM32F4. <br><br />
<br />
* Follow the same as described before and additionally:<br />
* Create one project file per target (and create a .CFG file of each one).<br />
* Make sure each project file is configured correctly, especially the JTAG-Chain position (See UM8003 "J-Flash" for more detailed info).<br />
* Exemplary content of FLASHER.INI:<br><br />
<source><br />
[BATCH]<br />
DataFile = "F1DATA.dat"<br />
ConfigFile = "STM32F1.cfg"<br />
DataFile1 = "F4DATA0.dat"<br />
ConfigFile1 = "STM32F4.cfg"<br />
DataFile2 = "F4DATA1.dat"<br />
ConfigFile2 = "STM32F4.cfg"<br />
</source><br />
<br />
'''Example 3:''' Using multiple Batch sections with Flasher Portable.<br><br />
Example scenario: 2 Devices in a JTAG chain, a STM32F1 and a STM32F4.<br><br />
Selection 1 will program the STM32F1 target.<br><br />
Selection 2 will program the STM32F4 target using "F4DATA0.dat".<br><br />
Selection 3 will program the STM32F4 target using "F4DATA1.dat".<br><br />
Selection 4 will execute 1, 2 and 3 in sequence.<br><br />
* Exemplary content of FLASHER.INI:<br><br />
<source><br />
[BATCH]<br />
DataFile = "F1DATA.dat"<br />
ConfigFile = "STM32F1.cfg"<br />
[BATCH1]<br />
DataFile = "F4DATA0.dat"<br />
ConfigFile = "STM32F4.cfg"<br />
[BATCH2]<br />
DataFile = "F4DATA1.dat"<br />
ConfigFile = "STM32F4.cfg"<br />
[BATCH3]<br />
DataFile = "F1DATA.dat"<br />
ConfigFile = "STM32F1.cfg"<br />
DataFile1 = "F4DATA0.dat"<br />
ConfigFile1 = "STM32F4.cfg"<br />
DataFile2 = "F4DATA1.dat"<br />
ConfigFile2 = "STM32F4.cfg"<br />
</source><br />
<br />
=== Serial number programming ===<br />
<br />
Flasher supports programming of serial numbers. In order to use the serial number programming feature,<br />
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><br />
<br />
In general, Flasher supports two ways of programming a serial number into the target:<br />
<br />
#<br />
#* Programming continuous serial numbers.<br />
#* The serial number is 1-4 bytes in size.<br />
#* The start serial number, increment, serial number size, and address are configured in the J-Flash project.<br />
#<br />
#* Programming custom serial numbers from a serial number list file.<br />
#* The start line within the serial number list file to get the next serial number bytes, line increment, serial number size, and address is configured in the J-Flash project.<br />
#* The serial number list file needs to be specified and created by the user.<br />
<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.}}<br />
<br />
==== Serial number settings ====<br />
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.<br />
This is done by enabling the '''Program serial number''' option as shown in the screenshot and table below:<br />
<br />
[[File:UM08039_SN_Sample_JFlashSettings.png]]<br />
<br />
{| class="seggertable"<br />
|-<br />
!| Setting || Meaning<br />
|-<br />
| <tt>Address</tt> || The address the serial number should be programmed at.<br />
|-<br />
| <tt>Length</tt> ||<br />
The length of the serial number (in bytes) that 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 8 is selected as length, the serial number and its complement are programmed at the given address.<br />
* In case a serial number list file is given, the 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 '''Length''', the remaining bytes are filled with 0s. No complements etc. are added to the serial number.<br />
|-<br />
| <tt>Next SN</tt> ||<br />
* In case no serial number list file is given, '''Next SN''' is the next serial number which should be programmed. The serial number is always stored in flash memory in little-endian format.<br />
* In case a serial number list file is given, '''Next SN''' describes the line of the serial number list file where to read the next serial number bytes from. The Flasher starts counting at line 0, so in order to start serial number programming with the first line of the <tt>SNList.txt</tt>, '''Next SN''' needs to be set to 0.<br />
|-<br />
| <tt>Increment</tt> || Specifies by how much '''Next SN''' is incremented.<br />
|}<br />
<br />
=== Serial number file ===<br />
When selecting '''File -> Download serial number file to Flasher''', J-Flash will create a serial number file named as <tt><JFlashProjectName>_Serial.txt</tt>.<br />
This file is downloaded as <tt>Serial.txt</tt> on the Flasher.<br />
The file is generated based on the serial number settings in the J-Flash project and will contain the value defined by the '''Next SN''' option.<br />
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.<br />
<br />
==== Serial number list file ====<br />
<br />
In order to program custom serial numbers which can not be covered by the standard serial number scheme provided by J-Flash<br />
(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.<br />
<br />
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.<br />
This file is downloaded as <tt>SNList.txt</tt> on the 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<br />
* Each byte of the serial number is described by two hexadecimal digits.<br />
<br />
'''Example'''<br><br />
A 8-byte serial number should be programmed at address 0x08000000.<br><br />
<br />
It should be programmed as follows in the memory:<br><br />
<br />
<tt>0x08000000: 0x01 0x02 0x03 0x04 0x55 0x66 0x77 0x88</tt><br><br />
<br />
The serial number list file should look as follows:<br><br />
<br />
<tt>0102030455667788</tt><br />
<br />
[[File:SN_SNList.gif]]<br />
<br />
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><br />
<br />
Which line Flasher will read at the next programming cycle, is configured via the <tt>Next SN</tt> option in J-Flash.<br />
For more information, please refer to [[#Serial number settings | Serial number settings]].<br />
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><br />
<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.}}<br />
{{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.}}<br />
<br />
==== Programming process ====<br />
<br />
Flasher will increment the serial number in SERIAL.TXT by the value defined in <tt>Increment</tt>, after each successful programming cycle.<br><br />
<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><br />
<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.<br />
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.}}<br />
<br />
==== Downloading serial number files to Flasher ====<br />
<br />
Downloading the serial number files needs to be done explicitly by selecting '''File-> Download serial number file to Flasher'''.<br />
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.<br />
<br />
==== Sample setup ====<br />
<br />
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.<br />
<br />
'''Defining serial number address, length and start value'''<br><br />
In the J-Flash project the following needs to be defined:<br><br />
* <tt>Address</tt> is 0x08001000<br />
* <tt>Next SN</tt> is 1234567<br />
* <tt>Increment</tt> is 1<br />
* <tt>Len</tt> is 4 (bytes)<br />
<br />
[[File:SN_Sample_JFlashSettings.gif]]<br />
<br />
'''Downloading configuration, data and serial number to Flasher.'''<br><br />
After setting up the rest of the configuration (Target interface etc.) and selecting an appropriate data file, the configuration,<br />
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><br />
<br />
[[File:SN_Sample_DownloadToFlasher.gif]]<br />
<br />
After downloading the serial number to Flasher, J-Flash also created the <tt><JFlashProjectName>_Serial.txt</tt>.<br />
<br />
[[File:SN_Sample_SerialFileCreated.gif]]<br />
<br />
Now Flasher is prepared to program the 8-byte serial number.<br />
<br />
=== Patch file support ===<br />
<br />
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.<br />
Before starting programming process in stand-alone mode, Flasher will look for a file named <tt>Patches.txt</tt> being present on the Flasher.<br />
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><br />
<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.<br />
<br />
'''Syntax'''<br><br />
<!-- LG xxxxxxxxx '==' is shown as '=', so instead use '= ='--><br />
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><br />
<br />
<tt><NumPatches>,<Addr>,<NumBytes>:<nowiki><Data></nowiki>,<Addr>,<NumBytes>:<nowiki><Data></nowiki>,<Addr>,<NumBytes>:<nowiki><Data></nowiki>,<Addr>,<NumBytes>:<nowiki><Data></nowiki>\r\n</tt><br><br />
<br />
Find below a table which describes each parameter.<br><br />
{| class="seggertable"<br />
|-<br />
! Parameter !! Description<br />
|-<br />
| <tt><NumPatches></tt> || Describes the number of patches in this patch line. Max. value is 4.<br />
|-<br />
| <tt><Addr></tt> || Describes the address to be patched. Value is expected in hex.<br />
|-<br />
| <tt><NumBytes></tt> || Number of bytes for the current patch. Max. value is 20h (32 in decimal). Value is expected in hex.<br />
|-<br />
| <tt><nowiki><Data></nowiki></tt> || Describes the data to be patched. <nowiki><Data></nowiki> is always expected as 2 hexadecimal characters per byte.<br />
|-<br />
|}<br />
<br />
{{Note|1=All values are expected in hexadecimal format (hex).<br><br />
<nowiki><Data></nowiki> section is always preceded by ":", not ",".}}<br />
<br />
'''Example'''<br><br />
Below is an example patch.<br><br />
<br />
<source><br />
1,18,4:01020304\r\n<br />
</source><br />
<br />
Patching the following data:<br />
<br />
[[File:data_before.png]]<br />
<br />
with the example patch will result in the following data:<br />
<br />
[[File:data_afterwards.png]]<br />
<br />
Please note that as mentioned earlier patching undefined memory locations will be ignored.<br><br />
Applying the example patch to the following data:<br />
<br />
[[File:undefined_mem_before.png]]<br />
<br />
Causes no data to be patched, as can be seen in the following image:<br />
<br />
[[File:undefined_mem_no_token.png]]<br />
<br />
Therefore it is necessary to first write placeholder data to the memory locations which are supposed to be patched.<br><br />
An example for such a placeholder can be seen here:<br />
<br />
[[File:undefined_mem_token.png]]<br />
<br />
Please note that the actual data inside the placeholder does not matter to the Flasher,<br />
because it is overwritten during patching.<br><br />
Applying the example patch will now work as expected:<br />
<br />
[[File:undefined_mem_after.png]]<br />
<br />
'''Single patch via RS232'''<br><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><br />
<br />
Send the <tt>#AUTO PATCH <NumPatches>,<Addr>,<NumBytes>:<nowiki><Data></nowiki></tt><br><br />
<br />
command via Flasher ASCII interface. The parameters have the same function as described in the table above.<br />
<br />
==== Newline encoding ====<br />
<br />
In general, for all patch files, init files etc. Flasher supports both newline encodings:<br><br />
<br />
* Windows: \r\n<br />
* Unix/Mac: \n<br />
<br />
All parser functionality etc. are written to be independent from the host operating system.<br />
<br />
=== Limiting the number of programming cycles ===<br />
<br />
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.<br />
To make use of this feature, a file called <tt>Cntdown.txt</tt> needs to be placed on the Flasher.<br />
This file simply contains a decimal number (32-bit unsigned integer) that describes how many programming cycles can be performed with the current setup.<br />
<br />
[[File:CntdownTxtContent.jpg]]<br />
<br />
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><br />
<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>.}}<br />
<br />
==== Changed fail/error LED indicator behavior ====<br />
<br />
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><br />
<br />
* The red error/fail LED will lit for 1 second<br />
* After this, it will blink/toggle x times @ 5 Hz, indicating the number of programming cycles left. (blinking 5 times for 5 cycles left, ...)<br />
<br />
==== Required Flasher hardware version for Cntdown.txt support ====<br />
<br />
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><br />
<br />
* 1621xxxxx (Flasher ARM V2)<br />
* 1630xxxxx (Flasher ARM V3)<br />
* 4210xxxxx (Flasher PPC V1)<br />
* 4110xxxxx (Flasher RX V1)<br />
<br />
All other models / hardware versions support limiting of programming cycles.<br />
<br />
=== Authorized flashing ===<br />
<br />
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.<br />
without the possibility to read out the Flasher contents via file access mode, FILE I/O functionality (J-Link Commander) or RS232 commands.<br />
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.<br />
<br />
==== Creating / Adding the secure area ====<br />
<br />
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.<br />
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.<br />
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><br />
<br />
[[File:CreateSecArea.jpg]]<br />
<br />
The following secure area related commands are available in J-Link Commander:<br><br />
<br />
* securearea create<br />
* securearea remove<br />
<br />
{{Note|1=When creating or removing the <tt>secure area</tt>, all configuration and data files being stored on the Flasher, are lost.<br />
Please make sure that they are not needed anymore, before adding / removing the security area.}}<br />
<br />
==== Moving files to the secure area ====<br />
<br />
Before moving configuration + data to the <tt>secure area</tt>, proper functionality of the setup should be tested in stand-alone mode.<br />
Once the setup is working as expected, do the following, to move the configuration + data into the <tt>secure area</tt>:<br><br />
<br />
* Start Flasher in file access mode (For more info, please refer to: [[#file access mode | file access mode]])<br />
<br />
[[File:FilesBeforeSecure.png]]<br />
<br />
* Create a folder "<tt>_SECURE</tt>"<br />
* Move all files that shall be moved to the <tt>secure area</tt>, into this folder<br />
<br />
[[File:FilesAfterSecure.png]]<br />
<br />
* 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.<br />
* Now Flasher can be used in stand-alone mode, as normal, but the files cannot be read back by the user / operator.<br />
<br />
==== Considerations to be taken when using the secure area ====<br />
<br />
When using the <tt>secure area</tt>, some things need to be considered:<br><br />
<br />
* All features like multiple file support, patch file support etc. can also be used when operating from the <tt>secure area</tt>.<br />
* 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>.<br />
* 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>.<br />
* 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.<br />
<br />
==== Required Flasher hardware version ====<br />
<br />
Older Flasher models do not support authorized flashing. The Flashers with the following serial number ranges do not support authorized flashing:<br><br />
<br />
* 1621xxxxx (Flasher ARM V2)<br />
* 1630xxxxx (Flasher ARM V3)<br />
* 4210xxxxx (Flasher PPC V1)<br />
* 4110xxxxx (Flasher RX V1)<br />
<br />
All other models / hardware versions support authorized flashing.<br />
<br />
=== Target interfaces ===<br />
<br />
The table below shows the supported target interfaces of the different Flasher models.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! Supported interfaces<br />
|-<br />
| Flasher PRO || JTAG, SWD<br />
|-<br />
| Flasher Compact || JTAG, SWD<br />
|-<br />
| Flasher ARM || JTAG, SWD<br />
|-<br />
| Flasher RX || JTAG<br />
|-<br />
| Flasher PPC || JTAG<br />
|-<br />
|}<br />
<br />
For more information about the target interfaces itself, please refer to:<br><br />
<br />
* ''UM08001, chapter "Working with J-Link and J-Trace", section "JTAG interface"''<br />
* ''UM08001, chapter "Working with J-Link and J-Trace", section "SWD interface"''<br />
<br />
=== Supported architectures ===<br />
<br />
Flasher supports programming of the internal flash of a large number of different microcontrollers.<br />
The number of supported devices is steadily growing. You can always find the latest list of supported devices on our website:<br><br />
<br />
''http://www.segger.com/supported-devices.html''<br />
<br />
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.<br />
Also the existence of the device may have confidential status, so it might not be mentioned as being supported in public releases yet.<br />
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.<br />
<br />
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).<br />
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.<br />
<br />
If a device is not supported, you can always contact us. We will be happy to provide you with an offer.<br />
<br />
==== External flashes ====<br />
<br />
In general our Flashers support programming of external flashes listed below:<br>(Can differ between Flasher models and hardware versions)<br />
<br />
* parallel NOR flash<br />
* SPI / QSPI flash<br>(see: ''[[SPI_support_by_Flasher_models]]'')<br />
* NAND flash<br />
* I<sup>2</sup>C EEPROM/Flash<br />
* FRAM<br />
<br />
If the parallel NOR flash device which is used is not CFI-compliant you have to select the flash device in J-Flash explicitly,<br />
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''.<br />
<br />
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.<br />
The J-Flash software comes with sample projects for ''Open Flashloader''.<br />
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''<br />
{{Note|1=Complete Information about ''Open Flashloaders'' can be found in our Wiki:<br>''[[Open_Flashloader]]''}}<br />
<br />
==== Cores ====<br />
<br />
===== Flasher ARM =====<br />
<br />
Flasher ARM supports and has been tested with the following cores, but should work with any ARM7/9, Cortex-M0/M1/M3/M4 core.<br />
If you experience problems with a particular core, do not hesitate to contact Segger.<br><br />
<br />
* ARM7TDMI (Rev 1)<br />
* ARM7TDMI (Rev 3)<br />
* ARM7TDMI-S (Rev 4)<br />
* ARM920T<br />
* ARM922T<br />
* ARM926EJ-S<br />
* ARM946E-S<br />
* ARM966E-S<br />
* Cortex-M0<br />
* Cortex-M1<br />
* Cortex-M3<br />
* Cortex-M4<br />
<br />
===== Flasher RX =====<br />
<br />
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><br />
<br />
* RX610<br />
* RX621<br />
* RX62N<br />
* RX62T<br />
<br />
===== Flasher PPC =====<br />
<br />
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.<br />
<br />
* e200z0<br />
<br />
===== Flasher PRO/Compact/Portable PLUS =====<br />
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/''.<br />
<br />
=== Programming multiple targets in parallel ===<br />
<br />
To program multiple targets in parallel there are the following possibilities:<br />
* Using a Flasher gang, or<br />
* Using multiple Flashers, each connecting to one CPU.<br />
<br />
Devices for gang programming are:<br />
* Flasher Hub-12 in conjunction with up to 12 Flasher (Compact). Please refer to [[UM08043_Flasher_Hub-12|Flasher Hub-12 user manual (UM08043_Flasher_Hub-12)]].<br />
* Flasher ATE; suitable for programming up to 10 targets in parallel. Please refer to [https://www.segger.com/downloads/flasher/UM08035 Flasher ATE user manual (UM08035_FlasherATE.pdf)].<br />
When using multiple flashers, this can be done with the J-Flash production programming software.<br />
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''<br />
<br />
=== Logfiles and Quality Management ===<br />
<br />
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:<br />
<source lang="c"><br />
SN: 1 - Failed<br />
SN: 1 - Failed<br />
SN: 2 - O.K. (931 ms)<br />
SN: 3 - O.K. (931 ms)<br />
SN: 4 - O.K. (933 ms)<br />
SN: 5 - O.K. (932 ms)<br />
</source><br />
If applicable, the logfile contains more detailed error messages. For example:<br />
<source lang="c"><br />
ERROR: Programming failed @ address 0x00000000 (1)<br />
ERROR: Cannot connect to CPU. Target interface speed too high?<br />
</source><br />
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:<br />
<source lang="c"><br />
Verify error config word area @<br />
config word<br />
config word read back<br />
Verify error flash area @<br />
data from file<br />
data read back<br />
</source><br />
{{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.}}<br />
<br />
== TCP Services ==<br />
This chapter describes the integrated TCP services.<br />
<br />
=== FTP Server ===<br />
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><br />
[[File:FTPServer.png]]<br />
<br />
==== Access data ====<br />
Anonymous access to the FTP server is limited to read-only access to the file system.<br><br />
For write access, special login credentials have to be used:<br><br />
<tt>Login: admin</tt><br><br />
<tt>Password: 1234</tt><br><br />
<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.<br />
It is not meant as a security feature.}}<br />
<br />
=== Web server ===<br />
<br />
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.<br />
For the network, the IP address settings can be changed and a nick name can be assigned to the device.<br><br />
<br />
Additionally, the web interface provides information about the status of the integrated operating system, the IP stack and the target hardware.<br />
<br />
== Remote control ==<br />
This chapter describes how to control the Flasher in standalone mode.<br />
<br />
=== Overview ===<br />
There are 3 ways to control Flasher operation:<br><br />
{| class="seggertable"<br />
! Type of control !! Description<br />
|-<br />
| Button || Programming operation starts when pressing the PROG-button. The LEDs serve as visible indicators.<br />
|-<br />
| Handshake || 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.<br />
|-<br />
| Terminal || Terminal communication via TELNET, RS232 or VCOM with the [[#ASCII command interface]]<br />
|}<br />
<br />
<br />
{{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.}}<br />
<br />
=== Handshake control ===<br />
<br />
Some Flasher models are equipped with additional hardware control functions that are connected to the SUBD9 male connector, normally used as an RS232 interface to the PC.<br />
These Flasher models can therefore be controlled remotely by automated testers without the need for a connection to a PC.<br />
<br />
The handshake control is available for the following Flashers:<br />
* Flasher ARM<br />
* Flasher PRO<br />
* Flasher Compact (via Flasher Hub and Flasher Hub-12 only)<br />
<br />
The following diagrams show the internal remote control circuitry of Flasher:<br><br />
<br />
[[File:FlasherRemotecontrol.png]]<br />
{| class="seggertable"<br />
|-<br />
! Pin No. !! Function !! Description<br />
|-<br />
| 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.<br />
|-<br />
| 4 || BUSY || As soon as the "Auto" function is started, BUSY becomes active, which means that transistor is switched OFF.<br />
|-<br />
| 5 || GND || Common Signal ground.<br />
|-<br />
| 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.<br />
|-<br />
|}<br />
[[File:FlasherRemoteSignal.png]]<br />
<br />
=== ASCII command interface ===<br />
<br />
==== Introduction ====<br />
<br />
Once set up using J-Flash, the Flasher can be driven by any application or just a simple terminal using ASCII commands.<br><br />
<br />
Every known command is acknowledged by the Flasher and then executed. After command execution, Flasher sends an ASCII reply message.<br><br />
<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}}<br />
<br />
==== General command and reply message format ====<br />
<br />
* Any ASCII command has to start with the start delimiter ''#''.<br />
* Any ASCII command has to end with simple carriage return ('\r', ASCII code 13).<br />
* Commands can be sent upper or lower case<br />
<br />
==== General usage ====<br />
<br />
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.<br />
<br />
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).<br />
<br />
==== Settings for ASCII interface via RS232 ====<br />
<br />
Flasher is driven via a RS232 serial port with the following interface settings:<br><br />
<br />
* 9600 baud<br />
* 8 data bits<br />
* no parity<br />
* 1 stop bit<br />
<br />
The baud rate can be changed by using the <tt>#BAUDRATE</tt> command.<br />
<br />
==== Settings for ASCII interface via Telnet ====<br />
<br />
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><br />
<br />
[[File:telnet_connection.gif]]<br />
<br />
==== Settings for ASCII interface via VCOM ====<br />
<br />
The same settings can be used for VCOM as for [[#Settings for ASCII interface via RS232|RS232]].<br />
<br />
{{Note|The performance also depends on the terminal application used on the PC.}}<br />
<br />
==== Commands and replies ====<br />
<br />
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><br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| Commands to the Flasher<br />
|-<br />
| <tt>#BAUDRATE <Baudrate></tt><br />
|-<br />
| <tt>#AUTO</tt><br />
|-<br />
| <tt>#AUTO PATCH</tt><br />
|-<br />
| <tt>#AUTO NOINFO</tt><br />
|-<br />
| <tt>#CANCEL</tt><br />
|-<br />
| <tt>#ERASE</tt><br />
|-<br />
| <tt>#PROGRAM</tt><br />
|-<br />
| <tt>#RESULT</tt><br />
|-<br />
| <tt>#SELECT <Filename></tt><br />
|-<br />
| <tt>#START</tt><br />
|-<br />
| <tt>#STATUS</tt><br />
|-<br />
| <tt>#VERIFY</tt><br />
|-<br />
| <tt>#READ</tt><br />
|-<br />
| <tt>#QUIT</tt><br />
|-<br />
| <tt>#VERBOSE <Level></tt><br />
|-<br />
!colspan="100%"| File I/O commands<br />
|-<br />
| <tt>#FCLOSE</tt><br />
|-<br />
| <tt>#FCRC</tt><br />
|-<br />
| <tt>#FDELETE <Filename></tt><br />
|-<br />
| <tt>#FFORMAT</tt><br />
|-<br />
| <tt>#FOPEN <Filename></tt><br />
|-<br />
| <tt>#FREAD <Offset>,<NumBytes></tt><br />
|-<br />
| <tt>#FSIZE</tt><br />
|-<br />
| <tt>#FWRITE <Offset>,<NumBytes>:<nowiki><Data></nowiki></tt><br />
|-<br />
| <tt>#FLIST</tt><br />
|-<br />
| <tt>#MKDIR <Dirname></tt><br />
|-<br />
!colspan="100%"| SecureArea commands<br />
|-<br />
| <tt>#HASSECUREAREA</tt><br />
|-<br />
| <tt>#SECUREAREA <action></tt><br />
|-<br />
!colspan="100%"| Replies from the Flasher<br />
|-<br />
| <tt>#ACK</tt><br />
|-<br />
| <tt>#NACK</tt><br />
|-<br />
| <tt>#OK</tt><br />
|-<br />
| <tt>#OK:<NumBytes>:<nowiki><Data></nowiki></tt><br />
|-<br />
| <tt>#OK:<Size></tt><br />
|-<br />
| <tt>#STATUS:</tt><br />
|-<br />
| <tt>#DONE</tt><br />
|-<br />
| <tt>#ERRxxx</tt><br />
|-<br />
|}<br />
<br />
===== Commands to the Flasher =====<br />
<br />
'''#AUTO'''<br><br />
The <tt>#AUTO</tt> command behaves exactly as the start button or external remote control input.<br><br />
<br />
Usually, the following command sequence will be performed when receiving the <tt>#AUTO</tt> command:<br><br />
<br />
* The Flasher erases the target CPU (if not blank)<br />
* The Flasher programs the target CPU<br />
* The Flasher verifies the target CPU<br />
<br />
Depending on the settings chosen in the '''Production''' tab in J-Flash, this sequence can differ from the one shown above.<br><br />
<br />
Finally, Flasher responds with<br><br />
<br />
* <tt>#OK</tt> if no error occurred<br />
* <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.<br />
<br />
During execution of the <tt>#AUTO</tt> command, Flasher automatically sends "status" messages via RS232 to reflect the state of execution.<br />
Typically during execution of <tt>#AUTO</tt> command, Flasher will reply the following sequence of messages:<br><br />
<br />
<tt>#ACK</tt><br><br />
<tt>#STATUS:INITIALIZING</tt><br><br />
<tt>#STATUS:CONNECTING</tt><br><br />
<tt>#STATUS:UNLOCKING</tt><br><br />
<tt>#STATUS:ERASING</tt><br><br />
<tt>#STATUS:PROGRAMMING</tt><br><br />
<tt>#STATUS:VERIFYING</tt><br><br />
<tt>#OK (Total 13.993s, Erase 0.483s, Prog 9.183s, Verify 2.514s)</tt><br><br />
<br />
'''#AUTO PATCH'''<br><br />
The <tt>#AUTO</tt> PATCH command allows patching of the content of the data to be programmed.<br><br />
<br />
Flasher responds with<br><br />
<br />
* <tt>#OK</tt> if no error occurred<br />
* <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.<br />
<br />
For further information about the usage of the <tt>#AUTO PATCH</tt> command please refer to [[#Patch file support | Patch file support]].<br />
<br />
'''#AUTO NOINFO'''<br><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><br />
<br />
The command ends with <tt>#OK</tt> or <tt>#ERRxxx</tt><br />
<br />
'''#BAUDRATE <Baudrate>'''<br><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><br />
<br />
If this command succeeds, Flasher responds with:<br><br />
<br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<br />
Otherwise it will respond with one of the following error messages:<br><br />
<br />
<tt>#ERR255: Invalid parameters</tt><br><br />
<tt>or</tt><br><br />
<tt>#ERR255: Baudrate is not supported</tt><br><br />
<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.<br />
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.}}<br />
<br />
'''#CANCEL'''<br><br />
This command can be sent to abort a running program. It may take a while until the current program is actually canceled.<br><br />
<br />
Flasher will respond with:<br><br />
<br />
<tt>#ERR007:CANCELED.</tt><br><br />
<br />
'''#ERASE'''<br><br />
This command can be sent to erase all selected target flash sectors.<br><br />
<br />
Flasher will reply the following sequence of messages:<br><br />
<br />
<tt>#ACK</tt><br><br />
<tt>#STATUS:INITIALIZING</tt><br><br />
<tt>#STATUS:CONNECTING</tt><br><br />
<tt>#STATUS:UNLOCKING</tt><br><br />
<tt>#STATUS:ERASING</tt><br><br />
<tt>#OK (Total 0.893s, Erase 0.483s)</tt><br><br />
<br />
'''#PROGRAM'''<br><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.<br />
<br />
'''#RESULT'''<br><br />
This command can be sent any time, even during other command execution. Flasher responds with the last result of the previously executed command.<br />
<br />
'''#SELECT <Filename>'''<br><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.<br />
<tt><Filename></tt> specifies the name of file pair without extensions (.CFG and .DAT) on the Flasher which should be selected. If you are<br />
using the universal flash programming mode, <tt><Filename></tt> specifies the full name of the .UNI file '''including''' the extension.<br />
Flasher saves the selected config and data file in the FLASHER.INI file. So this selection is remembered even between power-cycling Flasher.<br><br />
<br />
This may be verfy helpful in cases where several config and data files are stored on Flasher.<br />
The user can easily switch between these config and data files without connecting Flasher to a host.<br><br />
<br />
If this command succeeds, Flasher responds with:<br><br />
<br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<br />
Find below a sample sequence which shows how to use the <tt>#SELECT</tt> command:<br><br />
<br />
<tt>#SELECT ATSAM7_1 // ATSAM7_1.CFG and ATSAM7_1.DAT is selected</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<tt>#AUTO // Start auto programming</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#STATUS:INITIALIZING</tt><br><br />
<tt>#STATUS:CONNECTING</tt><br><br />
<tt>#STATUS:UNLOCKING</tt><br><br />
<tt>#STATUS:ERASING</tt><br><br />
<tt>#STATUS:PROGRAMMING</tt><br><br />
<tt>#STATUS:VERIFYING</tt><br><br />
<tt>#OK (Total 8.416s, Erase 0.005s, Prog 6.845s, Verify 0.959s)</tt><br><br />
<tt>#SELECT ATSAM7_2 // ATSAM7_2.CFG and ATSAM7_2.DAT is selected</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<tt>#AUTO // Start auto programming</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#STATUS:INITIALIZING</tt><br><br />
<tt>#STATUS:CONNECTING</tt><br><br />
<tt>#STATUS:UNLOCKING</tt><br><br />
<tt>#STATUS:ERASING</tt><br><br />
<tt>#STATUS:PROGRAMMING</tt><br><br />
<tt>#STATUS:VERIFYING</tt><br><br />
<tt>#OK (Total 8.632s, Erase 0.005s, Prog 7.051s, Verify 0.969s)</tt><br><br />
<br />
'''#START'''<br><br />
This command can be sent to start the application using the method configured in the J-Flash project.<br><br />
For U-Flash projects, however, the target application is not necessarily started. <br><br />
There is often a "start application" checkbox in the U-Flash settings which have to be set for this.<br />
<br />
Flasher will reply with the following sequence of messages:<br><br />
<br />
<tt>#ACK</tt><br><br />
<tt>#STATUS:INITIALIZING</tt><br><br />
<tt>#STATUS:CONNECTING</tt><br><br />
<tt>#OK (Total 1.148s)</tt><br><br />
<br />
'''#STATUS'''<br><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]].<br />
<br />
'''#VERIFY'''<br><br />
This command can used to verify the target flash content against the data stored in Flasher.<br />
<br />
'''#READ'''<br><br />
Only available for devices supported by U-Flash.<br><br />
This command can used to read out flash data.<br><br />
More information: [https://wiki.segger.com/Flasher/How_to_read_data_from_a_device_using_U-Flash How to read data using U-Flash]<br />
<br />
'''#QUIT'''<br><br />
This command can be used to terminate the active telnet connection from the server side (Flasher).<br />
The command provides an easy way to terminate the session from an automated script.<br />
It is not necessary to parse stdout and switch to local command mode to disconnect.<br />
Not implemented in the Flasher ATE or Flasher Hub.<br />
<br />
'''#VERBOSE <Level>'''<br><br />
This command can be used to change the verbosity level. <br><br />
* Verbosity level 0: Default. <br><br />
* Verbosity level 1: Provides some additional messages during the programming process.<br />
<br />
===== File I/O commands =====<br />
<br />
The ASCII interface of the Flasher also supports file I/O operations.<br />
<br />
The following file I/O commands are supported:<br><br />
<br />
'''#FCLOSE'''<br><br />
The <tt>#FCLOSE</tt> command closes the file on Flasher which was opened via <tt>#FOPEN</tt>.<br />
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><br />
<br />
A typical sequence when using the <tt>#FCLOSE</tt> command does look like as follows:<br><br />
<br />
<tt>#FCLOSE</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<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><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:No file opened</tt><br />
}}<br />
<br />
'''#FCRC'''<br><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>.<br />
The CRC will be also reported by J-Flash when downloading or saving files via J-Flash.<br><br />
<br />
A typical sequence when using the <tt>#FCRC</tt> command does look like as follows:<br><br />
<br />
<tt>#FCRC flasher.dat</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK:0x75BC855A</tt><br><br />
<br />
'''#FDELETE <Filename>'''<br><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><br />
<br />
A typical sequence when using the <tt>#FDELETE</tt> command does look like as follows:<br><br />
<br />
<tt>#FDELETE flasher.dat</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<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><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:Failed to delete file</tt><br />
}}<br />
<br />
'''#FFORMAT'''<br><br />
The <tt>#FFORMAT</tt> command is used to delete all files located in the public area of the Flasher's internal memory.<br />
<br />
{{Note|1=Please note that this command deletes all projects located in the public area. Deleted projects cannot be restored again.<br><br />
This command does not delete the Flasher firmware, neither does it delete files in the secure area.<br />
}}<br />
<br />
A typical sequence using the <tt>#FFORMAT</tt> command does look like as follows:<br><br />
<br />
<tt>#FFORMAT</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#DONE</tt><br><br />
<br />
'''#FOPEN <Filename>'''<br><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.<br />
If <tt><Filename></tt> can not be found on Flasher a new one will be created.<br><br />
<br />
A typical sequence using the <tt>#FOPEN</tt> command does look like as follows:<br><br />
<br />
<tt>#FOPEN flasher.dat</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<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><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:A file has already been opened</tt><br />
}}<br />
<br />
'''#FREAD <Offset>,<NumBytes>'''<br><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.<br />
<tt><NumBytes></tt> specifies the number of bytes which should be read.<br><br />
<br />
A typical sequence when using the <tt>#FREAD</tt> command does look like as follows:<br><br />
<br />
<tt>#FREAD 0,4</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK:04:466c6173</tt><br><br />
<br />
If the <tt>#FREAD</tt> command succeeds, Flasher will finally respond with a <tt>#OK:<NumBytes>:<nowiki><Data></nowiki></tt> reply message.<br />
For more information about the Flasher reply messages, please refer to [[#Replies from Flasher | Replies from Flasher]].<br><br />
<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><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:No file opened</tt>}}<br />
<br />
'''#FSIZE'''<br><br />
The <tt>#FSIZE</tt> command is used to get the size of the currently opened file on Flasher.<br><br />
<br />
A typical sequence when using the <tt>#FSIZE</tt> command does look like as follows:<br><br />
<br />
<tt>#FSIZE</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK:10 // file on flasher which is currently open, has a size of 16 bytes</tt><br><br />
<br />
If the <tt>#FSIZE</tt> command succeeds, Flasher will respond with a <tt>#OK:<Size></tt> reply message.<br />
For more information about the Flasher reply messages, please refer to [[#Replies from Flasher | Replies from Flasher]].<br><br />
<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><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:No file opened</tt>}}<br />
<br />
'''#FWRITE <Offset>,<NumBytes>:<nowiki><Data></nowiki>'''<br><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.<br />
<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.<br />
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><br />
<br />
<tt><Offset></tt> and <tt><NumBytes></tt> are expected in hexadecimal format.<br><br />
<br />
<tt>#FWRITE 0,200:<nowiki><Data></nowiki></tt><br><br />
<tt>#FWRITE 200,200:<nowiki><Data></nowiki></tt><br><br />
<br />
The data is expected in hexadecimal format (two hexadecimal characters per byte). The following example illustrates the use of <tt>#FWRITE</tt>:<br />
<br />
<tt>Data to be send: Hello !</tt><br><br />
<tt>ASCII values: 0x48, 0x65, 0x6C, 0x6C, 0x6F, 0x20, 0x21</tt><br><br />
<br />
<tt>#FWRITE 0,7:48656C6C6F2021</tt><br><br />
<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><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:No file opened</tt><br>}}<br />
<br />
'''#FLIST'''<br><br />
The <tt>#LIST</tt> command is used to list all files stored on the Flasher.<br><br />
<br />
A typical sequence using the <tt>#FLIST</tt> command does look like as follows:<br><br />
<br />
<tt>#FLIST</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>FLASHER.INI Size: 60</tt><br><br />
<tt>SERIAL.TXT Size: 3</tt><br><br />
<tt>FLASHER.LOG Size: 207</tt><br><br />
<tt>FOLDER (DIR)</tt><br><br />
<tt>FOLDER\\TEST1.CFG Size: 2048</tt><br><br />
<tt>FOLDER\\TEST1.DAT Size: 12288</tt><br><br />
<tt>#OK</tt><br><br />
<br />
'''#MKDIR <Dirname>'''<br><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><br />
<br />
A typical sequence using the <tt>#MKDIR</tt> command does look like as follows:<br><br />
<br />
<tt>#MKDIR folder</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<br />
{{Note|1=If the directory can not be created because of a bad <tt><Dirname></tt> argument, Flasher will respond with:<br><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:Failed to create directory</tt><br>}}<br />
<br />
===== Secure Area Commands =====<br />
<br />
'''#HASSECUREAREA'''<br><br />
The <tt>#HASSECUREAREA</tt> command checks if the Flasher is configured with a secure area.<br />
<br />
<tt>#RESULT:YES</tt> indicates the secure area is present, <tt>#RESULT:NO</tt> indicates no secure area is present.<br />
<br />
'''#SECUREAREA'''<br><br />
The <tt>#SECUREAREA <action></tt> command allows to create or remove the secure area on the Flasher.<br />
<br />
* the action <tt>CREATE</tt> creates the secure area.<br />
* the action <tt>REMOVE</tt> will remove the secure area.<br />
<br />
A typical sequence using the <tt>#SECUREAREA</tt> command does look like as follows:<br><br />
<br />
<tt>#SECUREAREA CREATE</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#DONE</tt><br><br />
<br />
{{Note|1=When creating or removing the <tt>secure area</tt>, all configuration and data files being stored on the Flasher, are lost.<br />
Please make sure that they are not needed anymore, before adding / removing the security area.}}<br />
<br />
<br />
<br />
===== Replies from Flasher =====<br />
<br />
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.<br />
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.<br />
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><br />
<br />
<tt>#OK (Total 13.993s, Erase 0.483s, Prog 9.183s, Verify 2.514s)</tt><br><br />
<br />
The following reply messages from Flasher are defined:<br><br />
<br />
'''#ACK'''<br><br />
Flasher replies with <tt>#ACK</tt> message on reception of any defined command before the command itself is executed.<br />
<br />
'''#NACK'''<br><br />
Flasher replies with <tt>#NACK</tt>, if an undefined command was received.<br />
<br />
'''#OK'''<br><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.<br />
<br />
'''#OK:<NumBytes>:<nowiki><Data></nowiki>'''<br><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.<br />
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).<br />
<br />
'''#OK:<Size>'''<br><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.<br />
<br />
'''#STATUS:'''<br><br />
The Flasher replies with its current state.<br><br />
<br />
The following status messages are currently defined:<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Message !! Description<br />
|-<br />
| <tt>#STATUS:READY</tt> || Flasher is ready to receive a new command.<br />
|-<br />
| <tt>#STATUS:CONNECTING</tt> || Flasher initializes connection to target CPU.<br />
|-<br />
| <tt>#STATUS:INITIALIZING</tt> || Flasher performs self check and internal init.<br />
|-<br />
| <tt>#STATUS:UNLOCKING</tt> || Unlocking flash sectors.<br />
|-<br />
| <tt>#STATUS:ERASING</tt> || Flasher is erasing the flash of the target device.<br />
|-<br />
| <tt>#STATUS:PROGRAMMING</tt> || Flasher is programming the flash of the target device.<br />
|-<br />
| <tt>#STATUS:VERIFYING</tt> || Flasher verifies the programmed flash contents.<br />
|-<br />
|}<br />
<br />
'''#ERRxxx'''<br><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><br />
<br />
Some error codes may be followed by colon and an additional error text.<br><br />
<br />
For example:<br><br />
<br />
<tt>#ERR007:CANCELED.</tt><br><br />
<br />
The error code numbers are described in the following table:<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Message !! Description<br />
|-<br />
| <tt>#ERR007</tt> || Flasher received <tt>#CANCEL</tt> command and has canceled the current operation.<br />
|-<br />
| <tt>#ERR008</tt> || Flasher is already busy with execution of previous command.<br />
|-<br />
| <tt>#ERR009</tt> || Failed to allocate memory.<br />
|-<br />
| <tt>#ERR010</tt> || Failed to open file.<br />
|-<br />
| <tt>#ERR011</tt> || Failed to read file.<br />
|-<br />
| <tt>#ERR012</tt> || Failed to write file.<br />
|-<br />
| <tt>#ERR013</tt> || Failed to delete file.<br />
|-<br />
| <tt>#ERR255</tt> || Undefined error occurred. This reply is followed by an error string.<br />
|-<br />
|}<br />
<br />
== Performance ==<br />
<br />
The following chapter lists programming performance of common flash devices andmicrocontrollers.<br />
<br />
=== Performance of MCUs with internal flash memory ===<br />
<br />
==== Flasher ARM ====<br />
<br />
The following table lists program and erase performance values of Flasher ARM for different controllers.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Microcontroller !! Size [kByte] !! Erase time [sec] !! Program time [sec] !! Verify time [sec] !! Total time [sec]<br />
|-<br />
| Analog Devices || 62 || 2.943 || 2.286 || 0.563 || 5.792<br />
|-<br />
| Atmel AT91SAM7S64 || 64 || --- || 3.488 || 0.438 || 3.926<br />
|-<br />
| Atmel AT91SAM7S256 || 256 || --- || 7.709 || 1.053 || 8.762<br />
|-<br />
| NXP LPC1768 || 512 || 3.740 || 8.559 || 5.092 || 17.391<br />
|-<br />
| NXP LPC2106 || 120 || 0.448 || 1.204 || 0.634 || 2.286<br />
|-<br />
| NXP LPC2129 || 248 || 0.449 || 2.916 || 1.347 || 4.712<br />
|-<br />
| NXP LPC2138 || 500 || 0.448 || 5.488 || 2.649 || 8.585<br />
|-<br />
| NXP LPC2148 || 500 || 0.448 || 5.632 || 2.721 || 8.801<br />
|-<br />
| NXP LPC2294 || 2048 || 0.808 || 15.976 || 9.669 || 26.453<br />
|-<br />
| NXP LPC2478 || 504 || 0.448 || 5.419 || 2.559 || 8.426<br />
|-<br />
| ST STM32F103ZE || 512 || 0.028 || 18.763 || 3.939 || 22.730<br />
|-<br />
| ST STR711 || 272 || 0.429 || 5.476 || 4.742 || 10.647<br />
|-<br />
| ST STR912 || 544 || 1.167 || 12.907 || 5.236 || 19.310<br />
|-<br />
| TI TMS470R1B1M || 1024 || 2.289 || 8.147 || 5.362 || 15.798<br />
|-<br />
|}<br />
<br />
==== Flasher PRO ====<br />
See Flasher ARM.<br />
<br />
==== Flasher Compact ====<br />
See Flasher ARM.<br />
<br />
==== Flasher RX ====<br />
<br />
The following table lists program and erase performance values of Flasher RX.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Microcontroller !! Size [kByte] !! Erase time [sec] !! Program time [sec] !! Verify time [sec] !! Total time [sec]<br />
|-<br />
| R5F56108 || 2.048 || 9.523 || 11.915 || 3.890 || 25.585<br />
|-<br />
|}<br />
<br />
==== Flasher PPC ====<br />
<br />
The following table lists program and erase performance values of Flasher PPC.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Microcontroller !! Size [kByte] !! Erase time [sec] !! Program time [sec] !! Verify time [sec] !! Total time [sec]<br />
|-<br />
| ST SPC560B50 || 576 || 4.747 || 4.159 || 1.929 || 10.917<br />
|-<br />
|}<br />
<br />
== Hardware ==<br />
<br />
This chapter gives an overview about Flasher specific hardware details,<br />
such as the pinouts and available adapters.<br />
<br />
=== Flasher ARM 20-pin JTAG/SWD Connector ===<br />
<br />
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.<br />
<br />
==== Pinout JTAG ====<br />
<br />
[[File:jtag_port_20pin.jpg]] <!-- LG xxxxxx image has been cropped to fit page --><br />
<br />
The following table lists the Flasher JTAG pinout.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! PIN !! SIGNAL !! TYPE !! Description<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 13 || TDO || Input || JTAG data output from target CPU. Typically connected to TDO of target CPU.<br />
|-<br />
| 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".<br />
|-<br />
| 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.<br />
|-<br />
| 19 || 5V-Target supply || Output || This pin is used to supply power to some eval boards. Typically left open on target hardware.<br />
|-<br />
|}<br />
<br />
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.<br />
<br />
==== Pinout SWD ====<br />
<br />
The 20-pin connector of Flasher is also compatible to ARM's Serial Wire Debug (SWD) interface.<br><br />
<br />
[[File:SWD_Port.jpg]] <!-- LG xxxxxx image has been cropped to fit page --><br />
<br />
The following table lists the J-Link / J-Trace SWD pinout.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! PIN !! SIGNAL !! TYPE !! Description<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 7 || SWDIO || I/O || Single bi-directional data pin.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 13 || SWO || Output || Serial Wire Output trace port. (Optional, not required for SWD communication.)<br />
|-<br />
| 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".<br />
|-<br />
| 17 || Not used || NC || This pin is not connected in J-Link.<br />
|-<br />
| 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.<br />
|-<br />
|}<br />
<br />
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.<br />
<br />
==== Target power supply ====<br />
<br />
Pin 19 of the connector can be used to supply power to the target hardware. Supply voltage is 5V, max. current is 400mA.<br />
The output current is monitored and protected against overload and short-circuit.<br><br />
<br />
Power can be controlled via the J-Link commander. The following commands are available to control power:<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Command !! Explanation<br />
|-<br />
| <tt>power on</tt> || Switch target power on<br />
|-<br />
| <tt>power off</tt> || Switch target power off<br />
|-<br />
| <tt>power on perm</tt> || Set target power supply default to "on"<br />
|-<br />
| <tt>power off perm</tt> || Set target power supply default to "off"<br />
|-<br />
|}<br />
<br />
=== Flasher RX 14-pin connector ===<br />
<br />
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.<br />
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.<br />
<br />
[[File:jtag_port_14pin.wmf]]<br />
<br />
The following table lists the Flasher RX 14-pin JTAG pinout.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Pin !! Signal !! Type !! Description<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 5 || TDO || Input || JTAG data output from target CPU. Typically connected to TDO on target CPU.<br />
|-<br />
| 6 || --- || NC || This pin is not connected to Flasher RX.<br />
|-<br />
| 7 || --- || NC || This pin is not connected to Flasher RX.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 10 || --- || NC || This pin is not connected to Flasher RX.<br />
|-<br />
| 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.<br />
|-<br />
| 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".<br />
|-<br />
|}<br />
<br />
* All pins marked NC are not connected to Flasher RX. Any signal can be applied here; Flasher RX will simply ignore such a signal.<br />
* Pins 2, 12, 14 are GND pins connected to GND in Flasher RX. They should also be connected to GND in the target system.<br />
<br />
==== Target power supply ====<br />
<br />
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.<br />
Power can be controlled via the J-Link commander. The following commands are available to control power:<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Command !! Explanation<br />
|-<br />
| <tt>power on</tt> || Switch target power on<br />
|-<br />
| <tt>power off</tt> || Switch target power off<br />
|-<br />
| <tt>power on perm</tt> || Set target power supply default to "on"<br />
|-<br />
| <tt>power off perm</tt> || Set target power supply default to "off"<br />
|-<br />
|}<br />
<br />
=== Flasher PPC 14-pin connector ===<br />
<br />
Flasher PPC itself has a 20-pin JTAG connector mounted but comes with a 14-pin adapter for PowerPC devices.<br><br />
<br />
[[File:JTAG_PPC_14pin_adapter.wmf]]<br />
<br />
The following table lists the Flasher PPC 14-pin JTAG pinout.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Pin !! Signal !! Type !! Description<br />
|-<br />
| 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.<br />
|-<br />
| 3 || TDO || Input || JTAG data output from target CPU. Typically connected to TDO on target CPU.<br />
|-<br />
| 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.<br />
|-<br />
| 7 || --- || NC || This pin is not connected to Flasher PPC.<br />
|-<br />
| 8 || --- || NC || This pin is not connected to Flasher PPC.<br />
|-<br />
| 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".<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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).<br />
|-<br />
|}<br />
<br />
* All pins marked NC are not connected to Flasher PPC. Any signal can be applied here; Flasher PPC will simply ignore such a signal.<br />
* 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.<br />
<br />
=== Target board design ===<br />
<br />
We strongly advise following the recommendations given by the chip manufacturer. These recommendations are normally in line with the recommendations.<br />
Please refer to the the appropriate tables depending on the core:<br><br />
<br />
* [[#Pinout JTAG | Pinout JTAG]]<br />
* [[#Pinout SWD | Pinout SWD]]<br />
* [[#Flasher RX 14-pin connector | Flasher RX 14-pin connector]]<br />
* [[#Flasher PPC 14-pin connector | Flasher PPC 14-pin connector]]<br />
<br />
In case of doubt you should follow the recommendations given by the semiconductor manufacturer.<br />
<br />
==== Pull-up/pull-down resistors ====<br />
<br />
Unless otherwise specified by developer's manual, pull-ups/pull-downs are recommended to be between 2.2 kOhms and 47 kOhms.<br />
<br />
==== RESET, nTRST ====<br />
<br />
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><br />
<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.<br />
(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.<br />
<br />
=== Adapters ===<br />
<br />
==== JTAG Isolator ====<br />
<br />
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.<br />
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><br />
<br />
[[File:JTAG_Isolator_Port.wmf]]<br />
<br />
===== Pinout =====<br />
<br />
The following table shows the target-side pinout of the J-Link JTAG Isolator.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Pin !! Signal !! Type !! Description<br />
|-<br />
| 1 || VCC || Output || The target side of the isolator draws power over this pin.<br />
|-<br />
| 2 || VCC || Output || The target side of the isolator draws power over this pin.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 13 || TDO || Input || JTAG data output from target CPU. Typically connected to TDO of target CPU.<br />
|-<br />
| 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".<br />
|-<br />
| 17 || N/C || N/C || This pin is not connected on the target side of the isolator.<br />
|-<br />
| 19 || N/C || N/C || This pin is not connected on the target side of the isolator.<br />
|-<br />
|}<br />
<br />
Pins 4, 6, 8, 10, 12, 14, 16, 18, 20 are connected to GND.<br />
<br />
===== Safety =====<br />
This isolator provides '''basic isolation''' only. '''Do not use with hazardous voltages without further protection measures to avoid risk of electrical shock and fire.'''<br />
<br />
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.<br />
<br />
==== J-Link Needle Adapter ====<br />
<br />
To connect to the J-Link OB via programming interface the ''J-Link Needle Adapter'' is recommended.<br><br />
<br />
[[File:J-Link_Needle_Adapter_500x.jpg]]<br />
<br />
Why to choose the J-Link Needle Adapter:<br><br />
<ol><br />
<li>No additional connector required on your PCB</li><br />
<li>Very small footprint</li><br />
<li>High reliability spring pins for secure connections</li><br />
<li>Designed with 3 locating pins, so the adapter can not be connected the wrong way</li><br />
<li>No external power supply required! The J-Link Needle Adapter comes with the option to power the target hardware via J-Link.</li><br />
</ol><br />
These features make the J-Link Needle Adapter the perfect solution for production purposes.<br><br />
<br />
The pinout of the J-Link Needle Adapter is based on the pinout of the needle adapter by Tag-Connect.<br />
Please note, that both pinouts are not identical since the J-Link Needle Adapter comes with a 5V-supply pin.<br><br />
<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><br />
<br />
Moreover, the two "legs" on each side of the connector guarantee a stable and secure contact between pins and the PCB.<br><br />
<br />
[[File:J-Link_Needle_Adapter_Connector_pins_360x.jpg]]<br />
[[File:J-Link_Needle_Adapter_Pinout.jpg]]<br />
<br />
The J-Link Needle Adapter can be connected to J-Link via the ''20-pin 0.1'' JTAG to a 10-pin needle connector''.<br />
<br />
=== How to determine the hardware version ===<br />
<br />
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.<br />
Flasher has the hardware version printed on the back label.<br><br />
<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).<br />
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><br />
<br />
[[File:FlasherARM_version.gif]]<br />
== Support and FAQs ==<br />
<br />
This chapter contains troubleshooting tips together with solutions for common problems which might occur when using Flasher.<br />
There are several steps you can take before contacting support.<br />
Performing these steps can solve many problems and often eliminates the need for assistance.<br />
This chapter also contains a collection of frequently asked questions (FAQs) with answers.<br />
<br />
=== Contacting support ===<br />
<br />
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.<br />
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><br />
<br />
If you need to contact support, send the following information to<br><br />
''support@segger.com''<br><br />
<br />
* A detailed description of the problem<br />
* Flasher serial number<br />
* Information about your target hardware (processor, board, etc.).<br />
* <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]].<br />
<br />
Flasher is sold directly by SEGGER.<br />
<br />
=== Frequently Asked Questions ===<br />
<br />
'''Maximum JTAG speed'''<br />
{|<br />
|-<br />
| '''Q:''' || What is the maximum JTAG speed supported by Flasher?<br />
|-<br />
| '''A:''' || Flasher's maximum supported JTAG speed is 12MHz.<br />
|}<br />
<br />
'''Maximum download speed'''<br />
{|<br />
|-<br />
| '''Q:''' || What is the maximum download speed?<br><br />
|-<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.<br />
|}<br />
== Background information ==<br />
<br />
This chapter provides background information about flash programming in general. It<br />
also provides information about how to replace the firmware of Flasher manually.<br />
<br />
=== Flash programming ===<br />
<br />
Flasher comes with a DLL, which allows - amongst other functionalities - reading and writing RAM, CPU registers, starting and stopping the CPU, and setting breakpoints.<br />
<br />
==== How does flash programming via Flasher work? ====<br />
<br />
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.<br />
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.<br />
Different flash chips have different programming algorithms;the programming algorithm also depends on other things,<br />
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).<br />
The RAM code requires data to be programmed into the flash memory. The data is supplied by downloading it to RAM.<br />
<br />
==== Data download to RAM ====<br />
<br />
The data (or part of it) is downloaded to another part of the RAM of the target system.<br />
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.<br />
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.<br />
This process may have to be repeated until the entire data is programmed into the flash.<br />
<br />
==== Available options for flash programming ====<br />
<br />
In general, there are two possibilities in order to use Flasher for flash programming:<br><br />
<br />
* Using Flasher stand-alone to program the target flash memory (stand-alone mode)<br />
* Using Flasher in combination with J-Flash to program the target flash memory (Flasher in "PC-based mode")<br />
<br />
===== Using Flasher in stand-alone mode =====<br />
<br />
In order to use the Flasher in stand-alone mode, it has to be configured first.<br />
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]].<br />
<br />
===== J-Flash - Complete flash programming solution =====<br />
<br />
J-Flash is a stand-alone Windows application, which can read / write data files and program the flash in almost any ARM system.<br />
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''.<br />
<br />
==== How does the universal flash programming work? ====<br />
<br />
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><br />
<br />
Universal flash programming is available only for stand-alone mode.<br />
== Glossary ==<br />
<br />
This chapter describes important terms used throughout this manual.<br />
<br />
'''Big-endian'''<br><br />
Memory organization where the least significant byte of a word is at a higher address than the most significant byte. See Little-endian.<br />
<br />
'''Cache cleaning'''<br><br />
The process of writing dirty data in a cache to main memory.<br />
<br />
'''Coprocessor'''<br><br />
An additional processor that is used for certain operations, for example, for floating-point math calculations, signal processing, or memory management.<br />
<br />
'''Dirty data'''<br><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.<br />
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.<br />
<br />
'''Halfword'''<br><br />
A 16-bit unit of information.<br />
<br />
'''Host'''<br><br />
A computer which provides data and other services to another computer. Especially, a computer providing debugging services to a target being debugged.<br />
<br />
'''ICache'''<br><br />
Instruction cache.<br />
<br />
'''ID'''<br><br />
Identifier.<br />
<br />
'''IEEE 1149.1'''<br><br />
The IEEE Standard which defines TAP. Commonly (but incorrectly) referred to as JTAG.<br />
<br />
'''Image'''<br><br />
An executable file that has been loaded onto a processor for execution.<br />
<br />
'''Instruction Register'''<br><br />
When referring to a TAP controller, a register that controls the operation of the TAP.<br />
<br />
'''IR'''<br><br />
See Instruction Register.<br />
<br />
'''Joint Test Action Group (JTAG)'''<br><br />
The name of the standards group which created the IEEE 1149.1 specification.<br />
<br />
'''Little-endian'''<br><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.<br />
<br />
'''Memory coherency'''<br><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.<br />
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.<br />
<br />
'''Memory management unit (MMU)'''<br><br />
Hardware that controls caches and access permissions to blocks of memory, and translates virtual to physical addresses.<br />
<br />
'''Memory Protection Unit (MPU)'''<br><br />
Hardware that controls access permissions to blocks of memory. Unlike an MMU, a MPU does not translate virtual addresses to physical addresses.<br />
<br />
'''RESET'''<br><br />
Abbreviation of System Reset. The electronic signal which causes the target system other than the TAP controller to be reset.<br />
This signal is also known as "nSRST" "nSYSRST", "nRST", or "nRESET" in some other manuals. See also nTRST.<br />
<br />
'''nTRST'''<br><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.<br />
<br />
'''Open collector'''<br><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.<br />
<br />
'''Processor Core'''<br><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.<br />
It excludes optional coprocessors, caches, and the memory management unit.<br />
<br />
'''Remapping'''<br><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.<br />
<br />
'''RTOS'''<br><br />
Real Time Operating System.<br />
<br />
'''TAP Controller'''<br><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.<br />
<br />
'''Target'''<br><br />
The actual processor (real silicon or simulated) on which the application program is running.<br />
<br />
'''TCK'''<br><br />
The electronic clock signal which times data on the TAP data lines TMS, TDI, and TDO.<br />
<br />
'''TDI'''<br><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.<br />
<br />
'''TDO'''<br><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.<br />
<br />
'''Test Access Port (TAP)'''<br><br />
The port used to access a device's TAP Controller. Comprises TCK, TMS, TDI, TDO, and nTRST (optional).<br />
<br />
'''Transistor-transistor logic (TTL)'''<br><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.<br />
<br />
'''Word'''<br><br />
A 32-bit unit of information. Contents are taken as being an unsigned integer unless otherwise stated.<br />
== Literature and references ==<br />
This chapter lists documents, which we think may be useful to gain a deeper understanding of technical details.</div>JanBhttps://wiki.segger.com/index.php?title=UM08022_Flasher&diff=17448UM08022 Flasher2024-01-16T11:20:58Z<p>JanB: /* Flasher Portable PLUS specifics */</p>
<hr />
<div><!---<br />
General TBD:<br />
- LG: Right now - EVERYTHING<br />
===========================================<br />
--------------------[more specific, but on multiple locations]<br />
- check if all emphasis (bold, tt, blue, etc ) have made it into the new version<br />
- Add Information -> Additional information<br />
- use of the term free-of-charge utility/tool etc<br />
- check compliant to DocStandards_Rules.txt<br />
- Remove everything regarding to Kickstarter versions? eventually create a chapter Legacy -> Kickstarter version were available for hw version 5-x (200x-200x)...[..]<br />
- 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.<br />
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.<br />
- if week keep the IDE specific stuff in the manual, add Ozone, ES and J-Link Commander were no mentioned.<br />
- IDE specifics move into wiki confirmed by Alex<br />
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)<br />
- check all sections regarding licensing<br />
- Check compliance of J-Link emDocs with typographic conventions described in AboutThisDocument.emDoc. What should be altered? e.g. references<br />
- use uref at all (not blue)?<br />
- search and decide where to use \ref (ref with page number)<br />
- why is \ref (no single "option" \uref is more basic as \ref.....)<br />
- in text, use either \ref or \iref instead of \uref<br />
- in old manual, \H3 started on a new page (not per default, but set manually for api tables etc...)<br />
- move used old images and source files (visio etc) via svn (currently copied)<br />
--------------------[grammar / vocabulary discussion]<br />
- Product names<br />
-- Use of SEGGEPROBE in this document?<br />
- use license over licence<br />
- commandline or command-line?<br />
- toolchain or tool chain?<br />
- crossreference/cross-reference/cross reference?<br />
- overcurrent?<br />
- double words?<br />
- frontend?<br />
- Unit: Kbytes, KBytes, V, mV.... 9V or 9 V? Create rule in Vocabulary<br />
- baudrate or baud rate?<br />
- stackpointer or stack pointer<br />
- check where we should replace abbreviations with the long form (e.h. "milliseconds" instead of "ms")<br />
- config or configuration<br />
- filepointer or file pointer?<br />
--------------------[J-Link dep. specific]<br />
- J-Link command strings or J-Link Command strings or J-Link Command Strings<br />
- J-Link settings file or...<br />
- J-Link control panel or ......<br />
- J-Link script files or...<br />
---><br />
Flasher is a programming tool for microcontrollers with on-chip or external flash memory.<br />
Flasher is designed for programming flash targets with the J-Flash software or stand-alone.<br />
In addition to that Flasher can also be used as a regular J-Link. For more information about J-Link in general,<br />
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].<br />
<br />
<div class="toclimit-2"><br />
__TOC__<br />
</div><br />
<br />
== Flasher Software and Documentation Pack ==<br />
The Flasher Software and Documentation Pack, available for download on the [https://www.segger.com/downloads/flasher#FlasherSoftwareAndDocumentationPack SEGGER homepage], includes applications to be used with Flasher and in some cases with J-Link and J-Trace.<br><br />
It also comes with USB-drivers for J-Link, J-Trace and Flasher.<br />
<br />
=== Software overview ===<br />
{| class="wikitable"<br />
|-<br />
! Software !! Description<br />
|-<br />
| [[J-Link Configurator|Flasher Configurator]] || GUI-based configuration tool for Flasher. Allows configuration of USB identification as well as TCP/IP identification of Flashers.<br />
|-<br />
| [[FlasherControl|Flasher Control]] || Command-line tool to connect to the Flasher's command-line interface via USB.<br />
|-<br />
| [[J-Flash]] || Flash programming application.<br />
|-<br />
| [[J-Flash SPI]] || (Q)SPI flash programming application.<br />
|-<br />
| [[J-Link Commander]] || Command-line tool with basic functionality for target analysis.<br />
|-<br />
| [[J-Link Registration]] || SEGGER J-Link Registration utility to register your SEGGER product such as a J-Link, J-Trace or Flasher.<br />
|-<br />
| [[JTAGLoad]] || Command line tool that opens an svf file and sends the data in it via J-Link / J-Trace or Flasher to the target.<br />
|-<br />
| [https://www.segger.com/downloads/flasher/UM08037.pdf U-Flash] || Tool for creating standalone Flasher projects.<br />
|}<br />
<br />
== Flasher overview ==<br />
Flasher connects to a PC using the USB/Ethernet/RS232 interface (what host interfaces are available depends on the Flasher model),<br />
running Windows, Linux & MacOS. In stand-alone mode,<br />
Flasher can be driven by the start/stop button, or via the RS232 interface (handshake control or ASCII interface).<br />
Flasher always has a 20-pin connector, which target interfaces are supported depends on the Flasher model:<br />
* Flasher ARM: JTAG and SWD are supported.<br />
* Flasher RX: JTAG is supported. Flasher comes with additional 14-pin RX adapter<br />
* Flasher PPC: JTAG is supported. Flasher comes with additional 14-pin PPC adapter.<br />
* Flasher PRO: JTAG and SWD are supported.<br />
* Flasher Compact: JTAG and SWD are supported.<br />
<br />
=== Features of Flasher ARM/PPC/RX/PRO ===<br />
* Three boot modes: PC-based mode, stand-alone mode, file access mode<br />
* Stand-alone JTAG/SWD programmer (Once set up, Flasher can be controlled without the use of PC program)<br />
* No power supply required, powered through USB<br />
* Supports internal and external flash devices<br />
* 128 MB memory for storage of target program<br />
* Can be used as J-Link (emulator) with a download speed of up to 720 Kbytes/second<br />
* Data files can updated via USB/Ethernet (using the J-Flash software), via FTP, via RS232 or via the file access mode of Flasher<br />
<br />
{| class="seggertable"<br />
|-<br />
! Flasher model !! Supported cores !! Supported target interfaces !! Flash programming speed (depending on target hardware)<br />
|-<br />
| Flasher ARM || ARM7/ARM9/Cortex-M || JTAG, SWD || between 170 and 300 Kbytes/second<br />
|-<br />
| Flasher RX || Renesas RX610, RX621, RX62N, RX62T || JTAG || between 30-300 Kbytes/second<br />
|-<br />
| Flasher PPC || Power PC e200z0 || JTAG || up to 138 Kbytes/second<br />
|-<br />
| Flasher PRO || ARM7/ARM9/Cortex-M Renesas RX610, RX621, RX62N, RX62T Power PC e200z0 || JTAG, SWD || between 30-300 Kbytes/ second<br />
|-<br />
|}<br />
<br />
==== Features of Flasher Compact ====<br />
<br />
* Three boot modes: PC-based mode, stand-alone mode, file access mode<br />
* Stand-alone JTAG/SWD programmer (Once set up, Flasher can be controlled without the use of PC program)<br />
* No power supply required, powered through USB<br />
* Supports internal and external flash devices<br />
* 128 MB memory for storage of target program<br />
* Can be used as J-Link (emulator) with a download speed of up to 720 Kbytes/second<br />
* Data files can updated via USB/Ethernet (using the J-Flash software) or via the file access mode of Flasher<br />
<br />
{| class="seggertable"<br />
|-<br />
! Flasher model !! Supported cores !! Supported target interfaces !! Flash programming speed (depending on target hardware)<br />
|-<br />
| Flasher ARM || ARM7/ARM9/Cortex-M || JTAG, SWD || between 170 and 300 Kbytes/second<br />
|-<br />
| Flasher RX || Renesas RX610, RX621, RX62N, RX62T || JTAG || between 30-300 Kbytes/second<br />
|-<br />
| Flasher PPC || Power PC e200z0 || JTAG || up to 138 Kbytes/second<br />
|-<br />
| Flasher Compact || ARM7/ARM9/Cortex-M Renesas RX610, RX621, RX62N, RX62T Power PC e200z0 || JTAG, SWD || between 30-300 Kbytes/ second<br />
|-<br />
|}<br />
<br />
==== Features of Flasher Portable/Flasher Portable PLUS ====<br />
<br />
* Stand-alone in-circuit-programmer (Once set up, Flasher can be controlled without the use of a PC program)<br />
* Powered by an internal rechargeable battery (standard batteries for Flasher Portable), no Laptop or external power supply required.<br />
* Multiple firmware images can be stored on Flasher<br />
* 128 MB memory for storage of target program<br />
* Flasher Portable PLUS supports a simple selection of up to 99 firmware images via buttons (since V7.90)<br />
* Supported CPUs: ARM Cortex, Legacy ARM7/9, Renesas RX, Freescale PowerPC<br />
* Supports internal and external flash<br />
* Free software updates<ref name="legitimateOwned" />, 1 year of support<br />
* Data files can be updated via the file access mode functionality or via J-Flash<br />
* Programming speed between 30-300 Kbytes/second (actual speed depends on target hardware)<br />
{{Note|1=Ethernet and RS232 as host interface are not available for Flasher Portable}}<br />
<references><br />
<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.<br />
As a legitimate owner of a SEGGER Flasher, you can always download the latest software free of charge.<br />
Though not planned and not likely, we reserve the right to change this policy.<br />
Note that older models may not be supported by newer versions of the software.<br />
Typically, we support older models with new software at least 3 years after end of life.<br />
</ref><br />
</references><br />
<br />
{| class="seggertable"<br />
|-<br />
! Supported cores !! Supported target interfaces !! Flash programming speed (depending on target hardware)<br />
|-<br />
| ARM7/ARM9/Cortex-M || JTAG, SWD || between 30-300 Kbytes/second<br />
|-<br />
| Renesas RX610, RX621, RX62N, RX62T || JTAG || between 170 and 300 Kbytes/second<br />
|-<br />
| Power PC e200z0 || JTAG || up to 138 Kbytes/second<br />
|-<br />
|}<br />
<br />
==== Working environment ====<br />
<br />
'''General'''<br><br />
The Flasher can operate from a PC with an appropriate software like J-Flash or in stand-alone mode.<br />
<br />
'''Host System'''<br><br />
IBM PC/AT or compatible CPU: 486 (or better) with at least 128MB of RAM,<br />
running Windows, Linux & MacOS. It needs to have a USB, Ethernet or RS232 interface available for communication with Flasher.<br />
<br />
'''Power supply'''<br><br />
Flasher Portable: 3x standard AAA batteries or 5V DC, min. 100 mA via USB connector.<br />
<br />
Flasher Portable PLUS: internal rechargeable 680mAh Li-Ion battery, min. 100 mA via USB connector.<br />
<br />
Other Flashers: 5V DC, min. 100 mA via USB connector.<br />
<br />
'''Installing Flasher PC-software'''<br><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><br />
More information about the package you can find in the similar [[J-Link Software and Documentation Pack]].<br><br />
The package includes U-Flash and J-Flash, the main tools for flashing targets:<br />
* J-Flash : J-Flash User Guide ([https://wiki.segger.com/UM08003_JFlash UM08003_JFlash.pdf]).<br />
* U-Flash : U-Flash User Guide ([https://www.segger.com/downloads/flasher/UM08037.pdf UM08037_UniversalFlashLoader.pdf]).<br />
<br />
=== Specifications ===<br />
<br />
<br />
==== Specifications for Flasher ARM ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Windows, Linux & MacOS<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C<br />
|-<br />
| Storage Temperature || -20 °C ... +60 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
!colspan="100%"| Mechanical<br />
|-<br />
| Size (without cables) || 121mm x 66mm x 30mm<br />
|-<br />
| Weight (without cables) || 119g<br />
|-<br />
!colspan="100%"| Available interfaces<br />
|-<br />
| USB Host interface || USB 2.0, full speed<br />
|-<br />
| Ethernet Host interface || 10/100 MBit<br />
|-<br />
| RS232 Host interface || RS232 9-pin<br />
|-<br />
| Target interface || JTAG 20-pin (14-pin adapter available)<br />
|-<br />
!colspan="100%"| JTAG Interface, Electrical<br />
|-<br />
| Power Supply || USB powered, 100mA for Flasher ARM. 500 mA if target is powered by Flasher ARM<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| Target supply voltage || Supply voltage is 5V, max.<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6 <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Max. JTAG speed || up to 12MHz<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
===== Flasher ARM download speed =====<br />
<br />
The following table lists the Flasher ARM performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! ARM7 memory download<br />
|-<br />
| Flasher ARM || 720 Kbytes/s (12MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
<br />
==== Specifications for Flasher RX ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Windows, Linux & MacOS<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C<br />
|-<br />
| Storage Temperature || -20 °C ... +60 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
!colspan="100%"| Mechanical<br />
|-<br />
| Size (without cables) || 121mm x 66mm x 30mm<br />
|-<br />
| Weight (without cables) || 119g<br />
|-<br />
!colspan="100%"| Available interfaces<br />
|-<br />
| USB Host interface || USB 2.0, full speed<br />
|-<br />
| Ethernet Host interface || 10/100 MBit<br />
|-<br />
| RS232 Host interface || RS232 9-pin<br />
|-<br />
| Target interface || JTAG 20-pin (shipped with 14-pin adapter for Renesas RX)<br />
|-<br />
!colspan="100%"| JTAG Interface, Electrical<br />
|-<br />
| Power Supply || USB powered, 100mA for Flasher RX. 500 mA if target is powered by Flasher RX<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| 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)<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6 <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Max. JTAG speed || up to 12MHz<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
===== Flasher RX download speed =====<br />
<br />
The following table lists the Flasher RX performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! Flasher RX600 series memory download<br />
|-<br />
| Flasher RX || 720 Kbytes/s (12MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
<br />
==== Specifications for Flasher PPC ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Windows, Linux & MacOS<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C<br />
|-<br />
| Storage Temperature || -20 °C ... +60 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
!colspan="100%"| Mechanical<br />
|-<br />
| Size (without cables) || 121mm x 66mm x 30mm<br />
|-<br />
| Weight (without cables) || 119g<br />
|-<br />
!colspan="100%"| Available interfaces<br />
|-<br />
| USB Host interface || USB 2.0, full speed<br />
|-<br />
| Ethernet Host interface || 10/100 MBit<br />
|-<br />
| RS232 Host interface || RS232 9-pin<br />
|-<br />
| Target interface || JTAG 20-pin (shipped with 14-pin adapter for Renesas PPC)<br />
|-<br />
!colspan="100%"| JTAG Interface, Electrical<br />
|-<br />
| Power Supply || USB powered, 100mA for Flasher PPC. 500 mA if target is powered by Flasher PPC<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| Target supply voltage || Supply voltage is 5V, max.<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6 <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Max. JTAG speed || up to 12MHz<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
===== Flasher RX download speed =====<br />
<br />
The following table lists the Flasher PPC performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! Memory download<br />
|-<br />
| Flasher PPC || 530 Kbytes/s (8 MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
<br />
==== Specifications for Flasher PRO ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Windows, Linux & MacOS<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C<br />
|-<br />
| Storage Temperature || -20 °C ... +60 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
!colspan="100%"| Mechanical<br />
|-<br />
| Size (without cables) || 121mm x 66mm x 30mm<br />
|-<br />
| Weight (without cables) || 119g<br />
|-<br />
!colspan="100%"| Available interfaces<br />
|-<br />
| USB Host interface || USB 2.0, full speed<br />
|-<br />
| Ethernet Host interface || 10/100 MBit<br />
|-<br />
| RS232 Host interface || RS232 9-pin<br />
|-<br />
| Target interface || JTAG 20-pin (14-pin adapter available)<br />
|-<br />
!colspan="100%"| JTAG Interface, Electrical<br />
|-<br />
| Power Supply || USB powered, 100mA for Flasher PRO. 500 mA if target is powered by Flasher PRO<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| Target supply voltage || Supply voltage is 5V, max.<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6 <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Max. JTAG speed || up to 12MHz<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
<br />
===== Supported CPU cores =====<br />
<br />
The Flasher PRO supports the following CPU cores:<br />
<br />
'''ARM Cortex'''<br><br />
* Cortex-A5<br />
* Cortex-A8<br />
* Cortex-A9<br />
* Cortex-R4<br />
* Cortex-R5<br />
* Cortex-M0<br />
* Cortex-M0+<br />
* Cortex-M1<br />
* Cortex-M3<br />
* Cortex-M4<br />
<br />
'''ARM (legacy cores)'''<br><br />
* ARM720T<br />
* ARM7TDMI<br />
* ARM7TDMI-S<br />
* ARM920T<br />
* ARM922T<br />
* ARM926EJ-S<br />
* ARM946E-S<br />
* ARM966E-S<br />
* ARM1136JF-S<br />
* ARM1136J-S<br />
* ARM1156T2-S<br />
* ARM1156T2F-S<br />
* ARM1176JZ-S<br />
* ARM1176JZF<br />
* ARM1176JZF-S<br />
<br />
'''Renesas RX'''<br><br />
* RX111<br />
* RX210<br />
* RX220<br />
* RX21A<br />
* RX610<br />
* RX621<br />
* RX62G<br />
* RX62N<br />
* RX62T<br />
* RX630<br />
* RX631<br />
* RX63N<br />
* RX63T<br />
<br />
'''Freescale Power PC'''<br><br />
* e200z0<br />
<br />
===== Supported Target interfaces =====<br />
<br />
The Flasher PRO supports the following target interfaces:<br />
<br />
* JTAG<br />
* SWD<br />
* FINE<br />
* SPD<br />
<br />
===== Flasher PRO download speed =====<br />
<br />
The following table lists the Flasher PRO performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! ARM7 memory download<br />
|-<br />
| Flasher PRO || 720 Kbytes/s (12MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
<br />
==== Specifications for Flasher Compact ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Microsoft Windows (x86/x64)<br>Linux (x86/x64/Arm)<br>macOS (x86/Apple M1)<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C<br />
|-<br />
| Storage Temperature || -20 °C ... +65 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
| Size (without cables) || 70mm x 45mm x 18mm<br />
|-<br />
| Weight (without cables) || 40g<br />
|-<br />
| USB Host interface || USB 2.0 (Hi-Speed); Micro USB<br />
|-<br />
| Target interface || JTAG 20-pin (14-pin adapter available)<br />
|-<br />
| Power Supply || USB powered, 130mA (idle)<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| Target supply voltage || Supply voltage is 5V, max.<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
| Supported target interfaces || SPI, QSPI, 8051 C2, cJTAG, FINE, ICSP, IIC, ISP, JTAG, PDI, SPD, SWD, SWIM, UART, UPDI<br />
|-<br />
| Serial transfer rate between Flasher Compact and target || Up to 50 MHz (Depending on target interface)<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6 <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
===== Supported CPU cores =====<br />
<br />
The Flasher Compact supports the following CPU cores:<br />
'''ARM Cortex'''<br><br />
* Cortex-A5<br />
* Cortex-A8<br />
* Cortex-A9<br />
* Cortex-R4<br />
* Cortex-R5<br />
* Cortex-M0<br />
* Cortex-M0+<br />
* Cortex-M1<br />
* Cortex-M3<br />
* Cortex-M4<br />
<br />
'''ARM (legacy cores)'''<br><br />
* ARM720T<br />
* ARM7TDMI<br />
* ARM7TDMI-S<br />
* ARM920T<br />
* ARM922T<br />
* ARM926EJ-S<br />
* ARM946E-S<br />
* ARM966E-S<br />
* ARM1136JF-S<br />
* ARM1136J-S<br />
* ARM1156T2-S<br />
* ARM1156T2F-S<br />
* ARM1176JZ-S<br />
* ARM1176JZF<br />
* ARM1176JZF-S<br />
<br />
'''Renesas RX'''<br><br />
* RX111<br />
* RX210<br />
* RX220<br />
* RX21A<br />
* RX610<br />
* RX621<br />
* RX62G<br />
* RX62N<br />
* RX62T<br />
* RX630<br />
* RX631<br />
* RX63N<br />
* RX63T<br />
<br />
'''Freescale Power PC'''<br><br />
* e200z0<br />
<br />
===== Flasher Compact download speed =====<br />
<br />
The following table lists the Flasher Compact performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! ARM7 memory download<br />
|-<br />
| Flasher Compact || 720 Kbytes/s (12MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
<br />
==== Specifications for Flasher Portable PLUS ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Windows, Linux & MacOS<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C (normal operation)<br>+5 °C ... +45 °C (battery charging)<br />
|-<br />
| Storage Temperature || -20 °C ... +45 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
| 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)<br />
|-<br />
| Charging via USB || 70 minutes (at 1A charging current)<br />
|-<br />
!colspan="100%"| Mechanical<br />
|-<br />
| Size (without cables) || 126mm x 70mm x 28mm<br />
|-<br />
| Weight (without cables) || 140g<br />
|-<br />
!colspan="100%"| Available interfaces<br />
|-<br />
| USB Host interface || USB 2.0<br />
|-<br />
| Target interface || Standard 20-pin 0.1" connector (Adapters available).<br />
|-<br />
!colspan="100%"| Target Interface, Electrical<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| Target supply voltage || Supply voltage is 4.5V, max. (depends on the current battery voltage).<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6 <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Max. JTAG speed || up to 12MHz<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
===== Supported CPU cores =====<br />
<br />
The Flasher Portable PLUS supports the following CPU cores:<br />
<br />
'''ARM Cortex'''<br><br />
* Cortex-A5<br />
* Cortex-A8<br />
* Cortex-A9<br />
* Cortex-R4<br />
* Cortex-R5<br />
* Cortex-M0<br />
* Cortex-M0+<br />
* Cortex-M1<br />
* Cortex-M3<br />
* Cortex-M4<br />
<br />
'''ARM (legacy cores)'''<br><br />
* ARM720T<br />
* ARM7TDMI<br />
* ARM7TDMI-S<br />
* ARM920T<br />
* ARM922T<br />
* ARM926EJ-S<br />
* ARM946E-S<br />
* ARM966E-S<br />
* ARM1136JF-S<br />
* ARM1136J-S<br />
* ARM1156T2-S<br />
* ARM1156T2F-S<br />
* ARM1176JZ-S<br />
* ARM1176JZF<br />
* ARM1176JZF-S<br />
<br />
'''Renesas RX'''<br><br />
* RX111<br />
* RX210<br />
* RX220<br />
* RX21A<br />
* RX610<br />
* RX621<br />
* RX62G<br />
* RX62N<br />
* RX62T<br />
* RX630<br />
* RX631<br />
* RX63N<br />
* RX63T<br />
<br />
'''Freescale Power PC'''<br><br />
* e200z0<br />
<br />
===== Supported Target interfaces =====<br />
<br />
The Flasher Portable PLUS supports the following target interfaces:<br />
* JTAG<br />
* SWD<br />
* FINE<br />
* SPD<br />
<br />
===== Flasher Portable PLUS download speed =====<br />
<br />
The following table lists the Flasher Portable PLUS performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! ARM7 memory download<br />
|-<br />
| Flasher PRO || 720 Kbytes/s (12MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
<br />
==== Specifications for Flasher Portable ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Windows, Linux & MacOS<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C<br />
|-<br />
| Storage Temperature || -20 °C ... +65 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
| Power Supply || a) USB powered, 100mA for Flasher Portable. 500 mA if target is powered by Flasher Portable<br>b) Batteries powered (3xAAA)<br />
|-<br />
!colspan="100%"| Mechanical<br />
|-<br />
| Size (without cables) || 130mm x 65mm x 25mm<br />
|-<br />
| Weight (without cables) || 120g<br />
|-<br />
!colspan="100%"| Available interfaces<br />
|-<br />
| USB Host interface || USB 2.0<br />
|-<br />
| Target interface || Standard 20-pin 0.1" connector (Adapters available).<br />
|-<br />
!colspan="100%"| Target Interface, Electrical<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| Target supply voltage || Supply voltage is 4.5V, max. (depends on the current battery voltage).<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6V <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Max. JTAG speed || up to 12MHz<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
===== Supported CPU cores =====<br />
<br />
The Flasher Portable supports the following CPU cores:<br />
<br />
'''ARM Cortex'''<br><br />
* Cortex-A5<br />
* Cortex-A8<br />
* Cortex-A9<br />
* Cortex-R4<br />
* Cortex-R5<br />
* Cortex-M0<br />
* Cortex-M0+<br />
* Cortex-M1<br />
* Cortex-M3<br />
* Cortex-M4<br />
<br />
'''ARM (legacy cores)'''<br><br />
* ARM720T<br />
* ARM7TDMI<br />
* ARM7TDMI-S<br />
* ARM920T<br />
* ARM922T<br />
* ARM926EJ-S<br />
* ARM946E-S<br />
* ARM966E-S<br />
* ARM1136JF-S<br />
* ARM1136J-S<br />
* ARM1156T2-S<br />
* ARM1156T2F-S<br />
* ARM1176JZ-S<br />
* ARM1176JZF<br />
* ARM1176JZF-S<br />
<br />
'''Renesas RX'''<br><br />
* RX111<br />
* RX210<br />
* RX220<br />
* RX21A<br />
* RX610<br />
* RX621<br />
* RX62G<br />
* RX62N<br />
* RX62T<br />
* RX630<br />
* RX631<br />
* RX63N<br />
* RX63T<br />
<br />
'''Freescale Power PC'''<br><br />
* e200z0<br />
<br />
===== Supported Target interfaces =====<br />
<br />
The Flasher Portable supports the following target interfaces:<br />
<br />
* JTAG<br />
* SWD<br />
* FINE<br />
* SPD<br />
<br />
===== Flasher Portable download speed =====<br />
<br />
The following table lists the Flasher Portable performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! ARM7 memory download<br />
|-<br />
| Flasher PRO || 720 Kbytes/s (12MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
== Working with Flasher ==<br />
<br />
This chapter describes functionality and how to use Flasher.<br />
<br />
=== Flasher Portable PLUS ===<br />
<br />
The Flasher Portable PLUS is a portable version of SEGGERs Flasher family,<br />
which has been designed to fill the need of an extremely portable, production grade,<br />
Flash programmer used for in-field firmware updates. No need to be tethered to an outlet,<br />
it is powered by an integrated Li-Ion cell (680mAh).<br />
The Flasher Portable PLUS programs flash targets in stand-alone mode or via J-Flash PC software.<br><br />
<br />
Furthermore the Flasher Portable PLUS allows the user to select between 99 data images to be programmed (since V7.90).<br />
The images can be easily selected by using the SEL button on the front of the housing.<br />
For more information about support for multiple images, please refer to [[#Multiple File Support | Multiple File Support]].<br><br />
For setup and configuration purposes, the Flasher Portable PLUS connects to a PC via USB interface,<br />
running Windows, Linux & MacOS and has a built-in standard 20-pin J-Link target connector.<br><br />
<br />
{{Note|1=Ethernet and RS232 as host interface are not available for the Flasher Portable PLUS.}}<br />
<br />
==== Housing & Buttons ====<br />
<br />
The Flasher Portable PLUS comes with a display, which is for example used to represent the status of an ongoing flash progress.<br />
Furthermore, there are three buttons which allow the user to control Flasher Portable PLUS.<br />
For a detailed description of the functions, take a look at the table below:<br />
<br />
<!-- LG xxxxxx edit image with labels for buttons? (Is this actually necessary? Buttons are basically self-explanatory...) --><br />
[[File:Flasher_Portable_PLUS.png | 500px]]<br />
<br />
{| class="seggertable"<br />
|-<br />
! Button !! Description<br />
|-<br />
| Program || Start programming process with the currently selected image.<br />
|-<br />
| Select image || Select the image to be programmed next time the Program button is pressed.<br />
|-<br />
| 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.<br />
|-<br />
|}<br />
<br />
==== Configuration ====<br />
<br />
The Flasher Portable PLUS has some configuration options the other Flashers do not have.<br />
{| class="seggertable"<br />
|-<br />
! Option !! Description !! Value range !! Default value<br />
|-<br />
| AutoPowerOffOnIdle || Specifies the time interval after which the Flasher Portable will turn off without any user action || 1 to 3600 || 60<br />
|-<br />
| ShowDatCRCAfterProgramming || Activates displaying the data file CRC after the programming in the pop up message || 0 = inactive, 1 = active || 0<br />
|-<br />
|}<br />
<br />
If the <tt>Flasher.ini</tt> does not contain a <tt>[Config]</tt> section with the configuration option, the default value is used.<br />
<br />
'''Example:'''<br><br />
This sample will show the data file CRC after the programming and the auto power of is set to five minutes (=300 seconds).<br />
<br />
<source lang="c"><br />
[CONFIG]<br />
AutoPowerOffOnIdle = "300"<br />
ShowDatCRCAfterProgramming = "1"<br />
</source><br />
<br />
=== Flasher Portable ===<br />
<br />
The Flasher Portable is a portable version of SEGGERs Flasher family, which has been designed to fill the need of an extremely portable,<br />
production grade, Flash programmer used for in-field firmware updates. No need to be tethered to an outlet,<br />
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><br />
<br />
Furthermore the Flasher Portable allows the user to select between four data images to be programmed.<br />
The images can be easily selected by using the arrow buttons on the front of the housing.<br />
For more information about support for multiple images, please refer to [[#Multiple File Support | Multiple File Support]].<br><br />
For setup and configuration purposes, the Flasher Portable connects to a PC via USB interface,<br />
running Windows, Linux & MacOS and has a built-in standard 20-pin J-Link target connector.<br><br />
<br />
{{Note|1=Ethernet and RS232 as host interface are not available for the Flasher Portable.}}<br />
<br />
==== Housing & Buttons ====<br />
<br />
The Flasher Portable comes with several leds which are for example used to represent the status of an ongoing flash progress.<br />
Furthermore, there are three buttons which allow the user to control Flasher Portable.<br />
For a detailed description of the functions, take a look at the two tables below:<br />
<br />
<!-- LG xxxxxx edit image with labels for buttons?--><br />
[[File:Flasher_Portable_Top_2.png | 500px]]<br />
<br />
{| class="seggertable"<br />
|-<br />
! LED !! Description<br />
|-<br />
| ACTIVE || GREEN. Blinks while the Flasher Portable is busy / performs operations on the target.<br />
|-<br />
| PASS/FAIL || GREEN/RED. Indicates, if the last flashing cycle was successful.<br />
<ul><br />
<li> GREEN: Flashing cycle completed successfully.</li><br />
<li> RED: Flashing cycle completed with error.</li><br />
</ul><br />
|-<br />
| 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]].<br />
|-<br />
| POWER || GREEN: Indicates if Flasher is currently powered. Blinks while Flasher Portable tries to enumerate via USB.<br />
|-<br />
| 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.<br />
|-<br />
|}<br />
<br />
{| class="seggertable"<br />
|-<br />
! Button !! Description<br />
|-<br />
| Program || Start programming process with the currently selected image.<br />
|-<br />
| Select image || Select the image to be programmed next time the <tt>Program</tt> button is pressed.<br />
|-<br />
| 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<br />
|-<br />
|}<br />
<br />
=== File system ===<br />
<br />
The Flasher supports 8.3 filenames only (8 characters filename, 3 characters file extension).<br />
Using longer filenames may result in incorrect operation. Integrated functions,<br />
like the FTP server or the terminal server, will refuse writing files with long filenames.<br />
<br />
=== Setting up the IP interface ===<br />
<br />
Setting up the IP interface<br />
Some of the Flasher models come with an additional Ethernet interface to communicate with the host system.<br />
These Flashers also come with a built-in webserver which allows some basic setup of the emulator,<br />
e.g. configuring a default gateway which allows using it even in large intranets. For more information,<br />
please refer to [[#TCP Services | TCP Services]].<br />
<br />
==== Connecting the first time ====<br />
<br />
When connecting Flasher the first time, it attempts to acquire an IP address via DHCP.<br />
The recommended way for finding out which IP address has been assigned to Flasher is, to use the J-Link Configurator.<br />
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.<br />
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''.<br />
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,<br />
please refer to ''UM08001, J-Link / J-Trace User Guide'', chapter ''Setup'', section ''Setting up the IP interface''.<br />
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]].<br />
<br />
=== Operating modes ===<br />
<br />
All Flashers except the Flasher ATE are able to boot in 3 different modes:<br />
<br />
* PC-based mode<br />
* Stand-alone mode<br />
* File access mode<br />
<br />
{{Note|1=The Flasher ATE only supports the stand-alone mode.}}<br />
<br />
'''Definition PC-based mode'''<br><br />
Flasher is connected to a PC via USB/Ethernet and controlled by a PC application (J-Flash).<br />
If there is an RS232 connection to a PC, does not have any influence on if PC-based mode is entered or not.<br />
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, ...)<br />
<br />
'''Definition Stand-alone mode'''<br><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.<br />
<br />
'''Definition file access mode'''<br><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.<br />
In this mode, Flasher enumerates as a mass storage device (like an USB Stick) at the host PC.<br />
In this mode, configuration + data files can be manually placed on the Flasher and the Flasher logfile can be read out.<br />
If you are using a self-powered Flasher such as the Flasher Portable Plus, the Flasher must be turned off before connecting it.<br />
<br />
==== PC-based mode ====<br />
If you want to use Flasher for the first time you need to install the J-Link software and documentation package.<br />
After installation, connect Flasher to the host PC via USB or Ethernet.<br />
For more information about how to install the J-Link software and documentation package please refer to [[J-Link Software and Documentation Pack]].<br />
<br />
===== Connecting the target system =====<br />
<br />
'''Power-on sequence'''<br><br />
In general, Flasher should be powered on before connecting it with the target device.<br />
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.<br />
Power-on the device after you connected Flasher to it. Flasher will boot in "PC-based mode".<br />
<br />
'''Verifying target device connection with J-Link.exe'''<br><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.<br />
Then start the J-Link command line tool <tt>JLink.exe</tt>,<br />
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.<br />
The screenshot below shows the output of <tt>JLink.exe</tt>.<br />
<br />
[[File:flasher_jlinkmode.gif]]<br />
<br />
===== LED status indicators =====<br />
<br />
In PC-based mode, there are also certain LED status codes defined:<br />
<br />
{| class="seggertable"<br />
|-<br />
! # !! Status of LED !! Meaning<br />
|-<br />
| 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.<br />
|-<br />
| 0 || GREEN<br>constant || Flasher enumeration process is complete and it is ready to be controlled by a PC application.<br />
|-<br />
|}<br />
<br />
==== Stand-alone mode ====<br />
<br />
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]].<br />
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).<br />
In the "stand-alone mode" Flasher can be used as a stand-alone flash programmer.<br><br />
<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]].}}<br />
<br />
===== LED status indicators =====<br />
Progress and result of an operation is indicated by Flasher's LEDs. The behavior is different for J-Link and stand-alone mode.<br />
For a definition of the different modes, please refer to [[#Operating modes | Operating modes]].<br />
The following table describes the behavior of the LEDs in stand-alone mode.<br />
<br />
{| class="seggertable"<br />
|-<br />
! # !! Status of LED !! Meaning<br />
|-<br />
| 0 || GREEN<br>constant || Flasher waits for a start trigger to perform an operation in stand-alone mode.<br />
|-<br />
| 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><br />
|-<br />
| 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.<br />
|-<br />
|}<br />
Older Flasher models have a different behavior.<br />
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:<br />
<br />
* 1621xxxxx (Flasher ARM V2)<br />
* 1630xxxxx (Flasher ARM V3)<br />
* 4210xxxxx (Flasher PPC V1)<br />
* 4110xxxxx (Flasher RX V1)<br />
<br />
{| class="seggertable"<br />
|-<br />
! # !! Status of LED !! Meaning<br />
|-<br />
| 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.<br />
|-<br />
| 1 || GREEN<br>constant || Connect to target and perform init sequence.<br />
|-<br />
| 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><br />
|-<br />
| 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.<br />
|-<br />
|}<br />
<br />
==== File access mode ====<br />
<br />
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".<br />
If you are using a self-powered Flasher such as the Flasher Portable Plus, the Flasher must be turned off before connecting it.<br />
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.<br />
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>.<br />
<br />
[[File:flasher_mode_msd.gif]]<br />
<br />
<tt>FLASHER.CFG</tt> contains the configuration settings for programming the target device and <tt>FLASHER.DAT</tt> contains the data to be programmed.<br />
<tt>FLASHER.LOG</tt> contains all logging information about the commands, performed in stand-alone mode.<br />
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><br />
<br />
Currently, J-Flash does not support to configure Flasher for automated serial number programming.<br><br />
<br />
If you want to configure multiple Flasher for the same target you do not have to use J-Flash all the time.<br />
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".<br />
<br />
=== Setting up Flasher for stand-alone mode ===<br />
{{Note| All Options how to set up the Flasher for stand-alone mode you can find here: [[Flasher/Download project to Flasher|Download project to the Flasher]]}}<br />
<br />
In order to set up Flasher for the stand-alone mode it needs to be configured once using the J-Flash software.<br />
For more information about J-Flash, please refer to the ''J-Flash User Guide''.<br><br />
<br />
After starting J-Flash, open the appropriate J-Flash project for the target Flasher shall be configured for, by selecting '''File''' -> '''Open Project'''.<br />
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><br />
<br />
After the appropriate project has been opened / created, the data file which shall be programmed needs to be loaded, by selecting '''File''' -> '''Open'''.<br />
After this J-Flash should look like in the screenshot below.<br />
<br />
[[File:jflash_projectfile_datafile.gif]]<br />
<br />
Before downloading the configuration (project) and program data (data file) to Flasher, the connection type (USB/IP) needs to be selected in the project.<br />
These settings are also saved on a per-project basis, so this also only needs to be setup once per J-Flash project.<br />
The connection dialog is opened by clicking '''Options''' -> '''Project settings''' -> '''General'''.<br />
<br />
[[File:jflash_connection_dialog.gif]]<br />
<br />
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.<br />
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.<br />
The user then can simply select the Flash he wants to download the configuration to.<br />
<br />
[[File:EmuSelectionDialog.gif]]<br />
<br />
In order to download the configuration and program data to the Flasher, simply select '''File''' -> '''Download config & data file to Flasher'''.<br />
<br />
[[File:jflash_download_to_emul.gif]]<br />
<br />
The J-Flash log window indicates that the download to the emulator was successful.<br />
<br />
[[File:jflash_download_to_emu_succ.gif]]<br />
<br />
From now on, Flasher can be used in stand-alone mode (without host PC interaction) for stand-alone programming.<br />
<br />
==== Preparing for stand-alone operation manually ====<br />
<br />
As an alternative, J-Flash can also be used to save config and data file to a hard drive.<br><br />
<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,<br />
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.<br />
<br />
'''Creating config and data files'''<br><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><br />
<br />
For some devices, additional files (*.PEX) are needed.<br />
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.<br />
<br />
'''About *.PEX files'''<br><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,<br />
the following needs to be taken care of:<br><br />
<br />
For some devices, special connect, reset etc. sequences are necessary which are stored in so-called *.PEX files on the Flasher.<br><br />
<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><br />
<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><br />
The *.PEX files need to be placed in a subdirectory with the same name as the corresponding *.cfg file.<br />
J-Flash creates a directory with the correct name automatically when a config file is created.<br><br />
<br />
Example:<br><br />
<br />
MyConf0 is a project for a device that requires a *.PEX file for connect.<br><br />
MyConf1 is a project for a device that requires no *.PEX file at all.<br />
<br />
[[File:PEX_File_Flasher.png]]<br />
<br />
=== Universal Flash Loader mode ===<br />
<br />
As an alternative to the stand-alone mode, configured via J-Flash, there is the Universal Flash Loader mode.<br />
While the normal stand-alone mode relies on using the debug interface of the device, the Universal Flash Loader<br />
mode uses device or vendor specific programming interfaces and protocols and therefore it is independent of the<br />
CPU core.<br><br />
<br />
The Universal Flash Loader is available for the following Flasher models:<br />
* Flasher PRO<br />
* Flasher Compact<br />
* Flasher Portable PLUS<br />
<br />
For some of the supported devices, SEGGER offers specific adapters.<br />
<br />
==== Preparing manually ====<br />
<br />
The Universal Flash Loader uses an configuration file (*.UNI), a device specific flash programming algorithm (*.PEX) and a data file (*.DAT).<br />
<br />
===== Configuration =====<br />
<br />
The configuration file basically is split into three parts.<br />
The first part, the section [DEVICE], controls the generic behavior of the Universal Flash Loader.<br />
It specifies which protocol driver and data file to use. It allows enabling and configuring target power<br />
and it defines which actions to perform.<br />
The second part consists of one or more [BANKx] sections, which contain information about the memories.<br />
The third part, the section [CONFIG], includes configuration settings for the protocol driver.<br><br />
<br />
An .UNI file might look as follows:<br><br />
<br />
<source lang="c"><br />
[OPTIONS]<br />
TargetPower = "0"<br />
ChipErase = "0"<br />
<br />
[TASKS]<br />
CheckBlank = "1"<br />
Erase = "1"<br />
Program = "1"<br />
Verify = "1"<br />
Secure = "1"<br />
<br />
[DEVICE]<br />
Algo = "RL78.PEX"<br />
Data = "ALL_6k.dat"<br />
<br />
[BANK0]<br />
; Code Flash<br />
Base = "0x00000000"<br />
Size = "0x00004000"<br />
Sect = "0x00000400"<br />
<br />
[BANK1]<br />
; Data Flash<br />
Base = "0x000F1000"<br />
Size = "0x00000800"<br />
Sect = "0x00000400"<br />
<br />
[CONFIG]<br />
BaudRate = "1000000"<br />
ClearConfigOnConnect = "0x00"<br />
Security = "0xFF"<br />
ShieldStart = "0x0000"<br />
ShieldEnd = "0x000F"<br />
</source><br />
<br />
'''[OPTIONS]'''<br><br />
'''TargetPower'''<br><br />
If set to a value >0, power is applied to the target.<br />
The value defines the delay (in ms) after enabling the target power supply and before starting to communicate with the target.<br />
<br />
'''ChipErase'''<br><br />
If set to 1, the chip erase function is called for erasing the chip.<br><br />
{{Note|1=Do not enable this setting if the flash programming algorithm does not support chip erase.}}<br />
<br />
'''[TASKS]'''<br><br />
'''CheckBlank'''<br><br />
Defines if a blank check should be performed before erasing a sector.<br />
<br />
'''Erase'''<br><br />
Defines if the sector should be erased before programming.<br />
<br />
'''Program'''<br><br />
Defines if the sector should be programmed.<br />
<br />
'''Verify'''<br><br />
Defines if the sector should be verified after programming.<br />
<br />
'''Secure'''<br><br />
Defines if the device should be secured or protected against read-out after verifying.<br />
<br />
'''[DEVICE]'''<br><br />
'''Algo'''<br><br />
File name of the flash programming algorithm. This file is provided by SEGGER and will typically support a series of devices.<br />
<br />
'''Data'''<br><br />
File name of the data file to program. The Flasher only supports the Flasher .dat file format.<br />
Flasher .dat files can be generated by J-Flash or Universal Flash Loader and offer high performance together with high flexibility.<br />
<br />
'''[BANKx]'''<br><br />
x blocks with configuration data for the flash banks. All three parameters (Base, Size and Sect) are mandatory.<br />
<br />
'''Base'''<br><br />
Base address of the flash bank.<br />
<br />
'''Size'''<br><br />
Total size of the flash bank.<br />
<br />
'''Sect'''<br><br />
Sector size of the flash bank.<br />
<br />
'''[CONFIG]'''<br><br />
This section includes specific configuration data for the flash programming algorithm.<br><br />
There are no general parameters.<br />
<br />
{{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. }}<br />
<br />
==== Preparing using the PC utility ====<br />
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.<br />
<br />
[[File:Universal Flash Loader.png]]<br />
<br />
The Universal Flash Loader Configurator comes with a large list of devices and flash programming algorithms. If you are going to<br />
use a device from one of the supported families which currently is not available in the utility, feel free to contact the support.<br />
<br />
=== Multiple File Support ===<br />
<br />
It is also possible to have multiple data files and config files on Flasher, to make Flasher more easy to use in production environment.<br />
To choose the correct configuration file and data file pair, a <tt>FLASHER.INI</tt> file is used.<br />
This init file contains a <tt>[FILES]</tt> section which describes which configuration file and which data file should be used for programming.<br />
A sample content of a FLASHER.INI file is shown below:<br><br />
<br />
<source><br />
[FILES]<br />
DataFile = "Flasher1.dat"<br />
ConfigFile = "Flasher1.cfg"<br />
</source><br />
<br />
Using this method all configuration files and data files which are used in the production only have to be downloaded once.<br />
From there on a configuration file / data file pair can be switched by simply replacing the <tt>FLASHER.INI</tt> by a new one,<br />
which contains the new descriptions for the configuration file and data file. The <tt>FLASHER.INI</tt> can be replaced in two ways:<br />
<ol><br />
<li>Boot Flasher in file access mode in order to replace the <tt>FLASHER.INI</tt></li><br />
<li><br />
If Flasher is already integrated into the production line, runs in stand-alone mode and can not be booted in other mode:<br />
Use the file I/O commands provided by the ASCII interface of Flasher, to replace the <tt>FLASHER.INI</tt>.<br />
For more information about the file I/O commands, please refer to [[#File I/O commands | File I/O commands]].<br />
</li><br />
</ol><br />
{{Note|1=Flasher supports 8.3 filenames only (8 characters filename, 3 characters file extension). Using longer filenames may result in incorrect operation.}}<br />
<br />
==== Flasher Portable specifics ====<br />
<br />
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><br />
<br />
Which config / data file pair is used for which image selection position is determined by the contents of the FLASHER.INI.<br />
For this, the FLASHER.INI contents in the <tt>[FILES]</tt> section have been extended.<br />
The sample below shows how to enable the user to select between four different images on the Flasher portable via the select / arrow button:<br />
<br />
<source><br />
[FILES]<br />
DataFile = "First.dat"<br />
ConfigFile = "First.cfg"<br />
DataFile1 = "Second.dat"<br />
ConfigFile1 = "Second.cfg"<br />
DataFile2 = "Third.dat"<br />
ConfigFile2 = "Third.cfg"<br />
DataFile3 = "Fourth.dat"<br />
ConfigFile3 = "Fourth.cfg"<br />
</source><br />
<br />
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.<br />
From there on, switching between the files can be done by simply using the selection button of Flasher Portable.<br />
<br />
===== Example =====<br />
<br />
1 Target, 2 Datafiles (e.g. boot loader und application) --> same configuration file (*.CFG) but different data files (*.DAT) should be used.<br><br />
<br />
* Open pre-configured J-Flash project<br />
* File -> Save Flasher config file ... (DEFAULT.CFG)<br />
* Open data file 1 (boot loader)<br />
* File -> Save Flasher data file ... (BOOT.DAT)<br />
* Open data file 2 (application)<br />
* File -> Save Flasher data file ... (APP.DAT)<br />
* Create the a FLASHER.INI file (content see below)<br />
* Connect the Flasher in file access mode to the PC<br />
* Copy DEFAULT.CFG, BOOT.DAT, APP.DAT and FLASHER.INI on the Flasher<br />
<br />
FLASHER.INI content:<br><br />
<br />
<source><br />
[FILES]<br />
DataFile = "BOOT.DAT"<br />
ConfigFile = "DEFAULT.CFG"<br />
DataFile1 = "APP.DAT"<br />
ConfigFile1 = "DEFAULT.CFG"<br />
</source><br />
<br />
==== Flasher Portable PLUS specifics ====<br />
<br />
Flasher Portable PLUS allows to choose between 99 configuration and data file pairs during runtime by using the select button on the front of Flasher Portable PLUS.<br><br />
<br />
Which config / data file pair is used for which image selection position is determined by the contents of the FLASHER.INI.<br />
For this, the FLASHER.INI may contain several <tt>[BATCH]</tt> sections.<br />
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:<br />
<br />
<source><br />
[BATCH]<br />
DataFile = "First.dat"<br />
ConfigFile = "First.cfg"<br />
[BATCH1]<br />
DataFile = "Second.dat"<br />
ConfigFile = "Second.cfg"<br />
[BATCH2]<br />
DataFile = "Third.dat"<br />
ConfigFile = "Third.cfg"<br />
[BATCH7]<br />
DataFile = "Proj_8.dat"<br />
ConfigFile = "Proj_8.cfg"<br />
[BATCH15]<br />
DataFile = "Proj_16.dat"<br />
ConfigFile = "Proj_16.cfg"<br />
</source><br />
<br />
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.<br />
From there on, switching between the files can be done by simply using the selection button of Flasher Portable PLUS.<br />
<br />
Please also consider the chapter [[#Batch Programming in stand-alone mode | Batch Programming in stand-alone mode]].<br />
<br />
{{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.}}<br />
{{Note|1=You may have gaps in the list. The missing entries will be skipped when selecting the next configuration.}}<br />
{{Note|1=The <tt>[Files]</tt> section is supported by the Flasher Portable PLUS, too. But the number of configuration is limited to four.}}<br />
<br />
===== Example =====<br />
<br />
1 Target, 2 Datafiles (e.g. boot loader und application) --> same configuration file (*.CFG) but different data files (*.DAT) should be used.<br><br />
<br />
* Open pre-configured J-Flash project<br />
* File -> Save Flasher config file ... (DEFAULT.CFG)<br />
* Open data file 1 (boot loader)<br />
* File -> Save Flasher data file ... (BOOT.DAT)<br />
* Open data file 2 (application)<br />
* File -> Save Flasher data file ... (APP.DAT)<br />
* Create the a FLASHER.INI file (content see below)<br />
* Connect the Flasher in file access mode to the PC<br />
* Copy DEFAULT.CFG, BOOT.DAT, APP.DAT and FLASHER.INI on the Flasher<br />
<br />
FLASHER.INI content:<br><br />
<br />
<source><br />
[BATCH]<br />
DataFile = "BOOT.DAT"<br />
ConfigFile = "DEFAULT.CFG"<br />
DisplayName = "Bootloader"<br />
[BATCH1]<br />
DataFile = "APP.DAT"<br />
ConfigFile = "DEFAULT.CFG"<br />
DisplayName = "Application"<br />
[BATCH2]<br />
DataFile = "BOOT.DAT"<br />
ConfigFile = "DEFAULT.CFG"<br />
DataFile1 = "APP.DAT"<br />
ConfigFile1 = "DEFAULT.CFG"<br />
DisplayName = "BL and App"<br />
</source><br />
<br />
=== Custom labels ===<br />
<br />
Flasher supports to assign custom labels to configurations. This allows to specify easy to remember names for configurations that are stored on the Flasher.<br />
<br />
==== Hardware and software requirements ====<br />
This feature is supported by the following models:<br />
* Flasher Portable PLUS<br />
<br />
This feature is supported since V6.30e of the software package and firmware<br />
<br />
==== Assigning labels ====<br />
The configuration and data file pairs are specified in the <tt>FLASHER.INI</tt> file:<br />
<source><br />
[FILES]<br />
DataFile = "IMAGE0.dat"<br />
ConfigFile = "IMAGE0.cfg"<br />
DataFile1 = "IMAGE1.dat"<br />
ConfigFile1 = "IMAGE1.cfg"<br />
</source><br />
<br />
By default, Flasher will show the names of the configuration and data file:<br />
[[File:FW1_smartwatch_nolabel.png]]<br />
[[File:FW2_smart_meter_nolabel.png]]<br />
<br />
By adding <tt>DisplayName</tt>, <tt>DisplayName1</tt>, ... keys to the <tt>FLASHER.INI</tt>, a custom label can be shown instead:<br />
<source><br />
[FILES]<br />
DisplayName = "FW smartwatch"<br />
DataFile = "IMAGE0.dat"<br />
ConfigFile = "IMAGE0.cfg"<br />
DisplayName1 = "FW smart meter"<br />
DataFile1 = "IMAGE1.dat"<br />
ConfigFile1 = "IMAGE1.cfg"<br />
</source><br />
<br />
The images will now be shown as follows:<br />
[[File:FW1_smartwatch_label.png]]<br />
[[File:FW2_smart_meter_label.png]]<br />
<br />
==== Considerations ====<br />
* 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.<br />
<br />
=== Programming multiple targets ===<br />
<br />
It is possible to program multiple targets which are located in a JTAG chain.<br />
The targets will be programmed each with a configuration and a data file.<br><br />
The configuration for the desired target must be selected before it can be programmed,<br />
this can be done with the <tt>#SELECT</tt> command.<br />
For more information how to use the <tt>#SELECT</tt> command please refer to the [[#ASCII_command_interface|ASCII command interface]].<br />
<br />
'''Example'''<br><br />
Three devices should be programmed.<br><br />
<br />
JTAG Chain: ''TDI'' --> ''Device2'' --> ''Device1'' --> ''Device0'' --> ''TDO''<br><br />
<br />
Three configurations would be stored on the flasher:<br><br />
<br />
Config 0: Configured to program Device0 (DEVICE0.CFG, DEVICE0.DAT)<br><br />
Config 1: Configured to program Device1 (DEVICE1.CFG, DEVICE1.DAT)<br><br />
Config 2: Configured to program Device2 (DEVICE2.CFG, DEVICE2.DAT)<br><br />
<br />
Selection and programming of the target will be done via the ASCII interface:<br><br />
<br />
<source><br />
#SELECT DEVICE0<br />
#AUTO<br />
#SELECT DEVICE1<br />
#AUTO<br />
#SELECT DEVICE2<br />
#AUTO<br />
</source><br />
<br />
==== Programming multiple targets with J-Flash ====<br />
<br />
Programming multiple targets can also be done via J-Flash using the command line interface.<br />
For this each target must be handled with its own project file.<br />
<br />
'''Example'''<br><br />
<br />
<source><br />
JFlash.exe -openproj"Device0.jflash" -open"Device0.hex" -auto -exit<br />
JFlash.exe -openproj"Device1.jflash" -open"Device1.hex" -auto -exit<br />
JFlash.exe -openproj"Device2.jflash" -open"Device2.hex" -auto -exit<br />
</source><br />
<br />
=== Batch Programming in stand-alone mode ===<br />
<br />
Batch programming allows to execute different stand-alone mode jobs in batch to be executed in immediate succession, without any user interaction in between.<br />
This can be used for example to program multiple targets in a JTAG-Chain or multiple data files to a target.<br><br />
A batch may contains an unlimited number of configurations which consist of a data file (*.DAT) and config file (*.CFG).<br />
For further information regarding config and data files, please refer to [[#Preparing for stand-alone operation manually | Preparing for stand-alone operation manually]].<br><br />
In order to specify the batch jobs, a FLASHER.INI file is used.<br />
This init file contains a [BATCH] section which describes which configuration pairs (*.DAT and *.CFG file) should be used for each batch job.<br />
A sample content of a FLASHER.INI file is shown below:<br><br />
<br />
<source><br />
[BATCH]<br />
DataFile = "Flasher0.dat"<br />
ConfigFile = "Flasher0.cfg"<br />
DataFile1 = "Flasher1.dat"<br />
ConfigFile1 = "Flasher1.cfg"<br />
</source><br />
<br />
[[File:Batch_Jobs.bmp]]<br />
<br />
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.<br />
<br />
<br />
[[File:Batch_Programming.bmp]]<br />
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<br />
currently executed action.<br />
<br />
<br />
[[File:Batch_Result.bmp]]<br />
The result of the programming will be shown on the screen after finishing all jobs.<br />
<br />
<br />
Creating / Replacing of the FLASHER.INI file can done in two ways:<br><br />
<ol><br />
<li>Boot Flasher in file access mode in order to replace the FLASHER.INI</li><br />
<li><br />
If Flasher is already integrated into the production line, runs in stand-alone mode and can not be booted in other mode:<br />
Use the file I/O commands provided by the ASCII interface of Flasher, to replace the FLASHER.INI .<br />
For more information about the file I/O commands, please refer to [[#File I/O commands | File I/O commands]].<br />
In case of an error occurred during execution, the Flasher terminates the entire batch processing.<br />
</li><br />
</ol><br />
{{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.}}<br />
{{Note|1=Flasher supports 8.3 filenames only (8 characters filename, 3 characters file extension). Using longer filenames may result in incorrect operation.}}<br />
<br />
==== Flasher Portable specifics ====<br />
<br />
Flasher Portable allows to choose between four different batches during runtime by using the select/arrow button on the front of Flasher Portable.<br />
Which batch configuration is used for which image selection position is specified in the FLASHER.INI.<br />
For this, the FLASHER.INI contents in the [BATCH] section have been extended.<br />
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><br />
<br />
<source><br />
[BATCH]<br />
DataFile = "Flasher0.dat"<br />
ConfigFile = "Flasher0.cfg"<br />
DataFile1 = "Flasher1.dat"<br />
ConfigFile1 = "Flasher1.cfg"<br />
DataFile2 = "Flasher2.dat"<br />
ConfigFile2 = "Flasher2.cfg"<br />
[BATCH1]<br />
DataFile = "TEST.dat"<br />
ConfigFile = "Test.cfg"<br />
[BATCH2]<br />
DataFile = "VALIDATE.dat"<br />
ConfigFile = "Flasher0.cfg"<br />
</source><br />
<br />
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.<br />
From there on, switching between the batches can be done by simply using the selection button of Flasher Portable.<br />
<br />
<br />
<br />
==== Examples ====<br />
<br />
'''Example 1:''' Programming two Data files to the same target<br><br />
<br />
* Open your J-Flash project.<br />
* Use File -> Save Flasher config file... to save the .CFG file (in this example: STM32F4.CFG).<br />
* Select the first binary and use File -> Save Flasher Data file... to save the first .DAT file (in this example: DATA0.DAT).<br />
* Select the second binary and use File -> Save Flasher Data file... to save the second data file .DAT file (in this example: DATA1.DAT).<br />
* Copy the Files to the Flasher e.g. by using file access mode.<br />
* Create a FLASHER.INI file in the root directory of the Flasher.<br />
* Exemplary content of FLASHER.INI:<br><br />
<source><br />
[BATCH]<br />
DataFile = "DATA0.dat"<br />
ConfigFile = "emPower.cfg"<br />
DataFile1 = "DATA1.dat"<br />
ConfigFile1 = "emPower.cfg"<br />
</source><br />
<br />
<br />
'''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><br />
Example scenario: 2 Devices in a JTAG chain, a STM32F1 and a STM32F4. <br><br />
<br />
* Follow the same as described before and additionally:<br />
* Create one project file per target (and create a .CFG file of each one).<br />
* Make sure each project file is configured correctly, especially the JTAG-Chain position (See UM8003 "J-Flash" for more detailed info).<br />
* Exemplary content of FLASHER.INI:<br><br />
<source><br />
[BATCH]<br />
DataFile = "F1DATA.dat"<br />
ConfigFile = "STM32F1.cfg"<br />
DataFile1 = "F4DATA0.dat"<br />
ConfigFile1 = "STM32F4.cfg"<br />
DataFile2 = "F4DATA1.dat"<br />
ConfigFile2 = "STM32F4.cfg"<br />
</source><br />
<br />
'''Example 3:''' Using multiple Batch sections with Flasher Portable.<br><br />
Example scenario: 2 Devices in a JTAG chain, a STM32F1 and a STM32F4.<br><br />
Selection 1 will program the STM32F1 target.<br><br />
Selection 2 will program the STM32F4 target using "F4DATA0.dat".<br><br />
Selection 3 will program the STM32F4 target using "F4DATA1.dat".<br><br />
Selection 4 will execute 1, 2 and 3 in sequence.<br><br />
* Exemplary content of FLASHER.INI:<br><br />
<source><br />
[BATCH]<br />
DataFile = "F1DATA.dat"<br />
ConfigFile = "STM32F1.cfg"<br />
[BATCH1]<br />
DataFile = "F4DATA0.dat"<br />
ConfigFile = "STM32F4.cfg"<br />
[BATCH2]<br />
DataFile = "F4DATA1.dat"<br />
ConfigFile = "STM32F4.cfg"<br />
[BATCH3]<br />
DataFile = "F1DATA.dat"<br />
ConfigFile = "STM32F1.cfg"<br />
DataFile1 = "F4DATA0.dat"<br />
ConfigFile1 = "STM32F4.cfg"<br />
DataFile2 = "F4DATA1.dat"<br />
ConfigFile2 = "STM32F4.cfg"<br />
</source><br />
<br />
=== Serial number programming ===<br />
<br />
Flasher supports programming of serial numbers. In order to use the serial number programming feature,<br />
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><br />
<br />
In general, Flasher supports two ways of programming a serial number into the target:<br />
<br />
#<br />
#* Programming continuous serial numbers.<br />
#* The serial number is 1-4 bytes in size.<br />
#* The start serial number, increment, serial number size, and address are configured in the J-Flash project.<br />
#<br />
#* Programming custom serial numbers from a serial number list file.<br />
#* The start line within the serial number list file to get the next serial number bytes, line increment, serial number size, and address is configured in the J-Flash project.<br />
#* The serial number list file needs to be specified and created by the user.<br />
<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.}}<br />
<br />
==== Serial number settings ====<br />
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.<br />
This is done by enabling the '''Program serial number''' option as shown in the screenshot and table below:<br />
<br />
[[File:UM08039_SN_Sample_JFlashSettings.png]]<br />
<br />
{| class="seggertable"<br />
|-<br />
!| Setting || Meaning<br />
|-<br />
| <tt>Address</tt> || The address the serial number should be programmed at.<br />
|-<br />
| <tt>Length</tt> ||<br />
The length of the serial number (in bytes) that 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 8 is selected as length, the serial number and its complement are programmed at the given address.<br />
* In case a serial number list file is given, the 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 '''Length''', the remaining bytes are filled with 0s. No complements etc. are added to the serial number.<br />
|-<br />
| <tt>Next SN</tt> ||<br />
* In case no serial number list file is given, '''Next SN''' is the next serial number which should be programmed. The serial number is always stored in flash memory in little-endian format.<br />
* In case a serial number list file is given, '''Next SN''' describes the line of the serial number list file where to read the next serial number bytes from. The Flasher starts counting at line 0, so in order to start serial number programming with the first line of the <tt>SNList.txt</tt>, '''Next SN''' needs to be set to 0.<br />
|-<br />
| <tt>Increment</tt> || Specifies by how much '''Next SN''' is incremented.<br />
|}<br />
<br />
=== Serial number file ===<br />
When selecting '''File -> Download serial number file to Flasher''', J-Flash will create a serial number file named as <tt><JFlashProjectName>_Serial.txt</tt>.<br />
This file is downloaded as <tt>Serial.txt</tt> on the Flasher.<br />
The file is generated based on the serial number settings in the J-Flash project and will contain the value defined by the '''Next SN''' option.<br />
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.<br />
<br />
==== Serial number list file ====<br />
<br />
In order to program custom serial numbers which can not be covered by the standard serial number scheme provided by J-Flash<br />
(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.<br />
<br />
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.<br />
This file is downloaded as <tt>SNList.txt</tt> on the 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<br />
* Each byte of the serial number is described by two hexadecimal digits.<br />
<br />
'''Example'''<br><br />
A 8-byte serial number should be programmed at address 0x08000000.<br><br />
<br />
It should be programmed as follows in the memory:<br><br />
<br />
<tt>0x08000000: 0x01 0x02 0x03 0x04 0x55 0x66 0x77 0x88</tt><br><br />
<br />
The serial number list file should look as follows:<br><br />
<br />
<tt>0102030455667788</tt><br />
<br />
[[File:SN_SNList.gif]]<br />
<br />
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><br />
<br />
Which line Flasher will read at the next programming cycle, is configured via the <tt>Next SN</tt> option in J-Flash.<br />
For more information, please refer to [[#Serial number settings | Serial number settings]].<br />
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><br />
<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.}}<br />
{{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.}}<br />
<br />
==== Programming process ====<br />
<br />
Flasher will increment the serial number in SERIAL.TXT by the value defined in <tt>Increment</tt>, after each successful programming cycle.<br><br />
<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><br />
<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.<br />
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.}}<br />
<br />
==== Downloading serial number files to Flasher ====<br />
<br />
Downloading the serial number files needs to be done explicitly by selecting '''File-> Download serial number file to Flasher'''.<br />
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.<br />
<br />
==== Sample setup ====<br />
<br />
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.<br />
<br />
'''Defining serial number address, length and start value'''<br><br />
In the J-Flash project the following needs to be defined:<br><br />
* <tt>Address</tt> is 0x08001000<br />
* <tt>Next SN</tt> is 1234567<br />
* <tt>Increment</tt> is 1<br />
* <tt>Len</tt> is 4 (bytes)<br />
<br />
[[File:SN_Sample_JFlashSettings.gif]]<br />
<br />
'''Downloading configuration, data and serial number to Flasher.'''<br><br />
After setting up the rest of the configuration (Target interface etc.) and selecting an appropriate data file, the configuration,<br />
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><br />
<br />
[[File:SN_Sample_DownloadToFlasher.gif]]<br />
<br />
After downloading the serial number to Flasher, J-Flash also created the <tt><JFlashProjectName>_Serial.txt</tt>.<br />
<br />
[[File:SN_Sample_SerialFileCreated.gif]]<br />
<br />
Now Flasher is prepared to program the 8-byte serial number.<br />
<br />
=== Patch file support ===<br />
<br />
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.<br />
Before starting programming process in stand-alone mode, Flasher will look for a file named <tt>Patches.txt</tt> being present on the Flasher.<br />
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><br />
<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.<br />
<br />
'''Syntax'''<br><br />
<!-- LG xxxxxxxxx '==' is shown as '=', so instead use '= ='--><br />
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><br />
<br />
<tt><NumPatches>,<Addr>,<NumBytes>:<nowiki><Data></nowiki>,<Addr>,<NumBytes>:<nowiki><Data></nowiki>,<Addr>,<NumBytes>:<nowiki><Data></nowiki>,<Addr>,<NumBytes>:<nowiki><Data></nowiki>\r\n</tt><br><br />
<br />
Find below a table which describes each parameter.<br><br />
{| class="seggertable"<br />
|-<br />
! Parameter !! Description<br />
|-<br />
| <tt><NumPatches></tt> || Describes the number of patches in this patch line. Max. value is 4.<br />
|-<br />
| <tt><Addr></tt> || Describes the address to be patched. Value is expected in hex.<br />
|-<br />
| <tt><NumBytes></tt> || Number of bytes for the current patch. Max. value is 20h (32 in decimal). Value is expected in hex.<br />
|-<br />
| <tt><nowiki><Data></nowiki></tt> || Describes the data to be patched. <nowiki><Data></nowiki> is always expected as 2 hexadecimal characters per byte.<br />
|-<br />
|}<br />
<br />
{{Note|1=All values are expected in hexadecimal format (hex).<br><br />
<nowiki><Data></nowiki> section is always preceded by ":", not ",".}}<br />
<br />
'''Example'''<br><br />
Below is an example patch.<br><br />
<br />
<source><br />
1,18,4:01020304\r\n<br />
</source><br />
<br />
Patching the following data:<br />
<br />
[[File:data_before.png]]<br />
<br />
with the example patch will result in the following data:<br />
<br />
[[File:data_afterwards.png]]<br />
<br />
Please note that as mentioned earlier patching undefined memory locations will be ignored.<br><br />
Applying the example patch to the following data:<br />
<br />
[[File:undefined_mem_before.png]]<br />
<br />
Causes no data to be patched, as can be seen in the following image:<br />
<br />
[[File:undefined_mem_no_token.png]]<br />
<br />
Therefore it is necessary to first write placeholder data to the memory locations which are supposed to be patched.<br><br />
An example for such a placeholder can be seen here:<br />
<br />
[[File:undefined_mem_token.png]]<br />
<br />
Please note that the actual data inside the placeholder does not matter to the Flasher,<br />
because it is overwritten during patching.<br><br />
Applying the example patch will now work as expected:<br />
<br />
[[File:undefined_mem_after.png]]<br />
<br />
'''Single patch via RS232'''<br><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><br />
<br />
Send the <tt>#AUTO PATCH <NumPatches>,<Addr>,<NumBytes>:<nowiki><Data></nowiki></tt><br><br />
<br />
command via Flasher ASCII interface. The parameters have the same function as described in the table above.<br />
<br />
==== Newline encoding ====<br />
<br />
In general, for all patch files, init files etc. Flasher supports both newline encodings:<br><br />
<br />
* Windows: \r\n<br />
* Unix/Mac: \n<br />
<br />
All parser functionality etc. are written to be independent from the host operating system.<br />
<br />
=== Limiting the number of programming cycles ===<br />
<br />
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.<br />
To make use of this feature, a file called <tt>Cntdown.txt</tt> needs to be placed on the Flasher.<br />
This file simply contains a decimal number (32-bit unsigned integer) that describes how many programming cycles can be performed with the current setup.<br />
<br />
[[File:CntdownTxtContent.jpg]]<br />
<br />
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><br />
<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>.}}<br />
<br />
==== Changed fail/error LED indicator behavior ====<br />
<br />
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><br />
<br />
* The red error/fail LED will lit for 1 second<br />
* After this, it will blink/toggle x times @ 5 Hz, indicating the number of programming cycles left. (blinking 5 times for 5 cycles left, ...)<br />
<br />
==== Required Flasher hardware version for Cntdown.txt support ====<br />
<br />
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><br />
<br />
* 1621xxxxx (Flasher ARM V2)<br />
* 1630xxxxx (Flasher ARM V3)<br />
* 4210xxxxx (Flasher PPC V1)<br />
* 4110xxxxx (Flasher RX V1)<br />
<br />
All other models / hardware versions support limiting of programming cycles.<br />
<br />
=== Authorized flashing ===<br />
<br />
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.<br />
without the possibility to read out the Flasher contents via file access mode, FILE I/O functionality (J-Link Commander) or RS232 commands.<br />
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.<br />
<br />
==== Creating / Adding the secure area ====<br />
<br />
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.<br />
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.<br />
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><br />
<br />
[[File:CreateSecArea.jpg]]<br />
<br />
The following secure area related commands are available in J-Link Commander:<br><br />
<br />
* securearea create<br />
* securearea remove<br />
<br />
{{Note|1=When creating or removing the <tt>secure area</tt>, all configuration and data files being stored on the Flasher, are lost.<br />
Please make sure that they are not needed anymore, before adding / removing the security area.}}<br />
<br />
==== Moving files to the secure area ====<br />
<br />
Before moving configuration + data to the <tt>secure area</tt>, proper functionality of the setup should be tested in stand-alone mode.<br />
Once the setup is working as expected, do the following, to move the configuration + data into the <tt>secure area</tt>:<br><br />
<br />
* Start Flasher in file access mode (For more info, please refer to: [[#file access mode | file access mode]])<br />
<br />
[[File:FilesBeforeSecure.png]]<br />
<br />
* Create a folder "<tt>_SECURE</tt>"<br />
* Move all files that shall be moved to the <tt>secure area</tt>, into this folder<br />
<br />
[[File:FilesAfterSecure.png]]<br />
<br />
* 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.<br />
* Now Flasher can be used in stand-alone mode, as normal, but the files cannot be read back by the user / operator.<br />
<br />
==== Considerations to be taken when using the secure area ====<br />
<br />
When using the <tt>secure area</tt>, some things need to be considered:<br><br />
<br />
* All features like multiple file support, patch file support etc. can also be used when operating from the <tt>secure area</tt>.<br />
* 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>.<br />
* 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>.<br />
* 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.<br />
<br />
==== Required Flasher hardware version ====<br />
<br />
Older Flasher models do not support authorized flashing. The Flashers with the following serial number ranges do not support authorized flashing:<br><br />
<br />
* 1621xxxxx (Flasher ARM V2)<br />
* 1630xxxxx (Flasher ARM V3)<br />
* 4210xxxxx (Flasher PPC V1)<br />
* 4110xxxxx (Flasher RX V1)<br />
<br />
All other models / hardware versions support authorized flashing.<br />
<br />
=== Target interfaces ===<br />
<br />
The table below shows the supported target interfaces of the different Flasher models.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! Supported interfaces<br />
|-<br />
| Flasher PRO || JTAG, SWD<br />
|-<br />
| Flasher Compact || JTAG, SWD<br />
|-<br />
| Flasher ARM || JTAG, SWD<br />
|-<br />
| Flasher RX || JTAG<br />
|-<br />
| Flasher PPC || JTAG<br />
|-<br />
|}<br />
<br />
For more information about the target interfaces itself, please refer to:<br><br />
<br />
* ''UM08001, chapter "Working with J-Link and J-Trace", section "JTAG interface"''<br />
* ''UM08001, chapter "Working with J-Link and J-Trace", section "SWD interface"''<br />
<br />
=== Supported architectures ===<br />
<br />
Flasher supports programming of the internal flash of a large number of different microcontrollers.<br />
The number of supported devices is steadily growing. You can always find the latest list of supported devices on our website:<br><br />
<br />
''http://www.segger.com/supported-devices.html''<br />
<br />
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.<br />
Also the existence of the device may have confidential status, so it might not be mentioned as being supported in public releases yet.<br />
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.<br />
<br />
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).<br />
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.<br />
<br />
If a device is not supported, you can always contact us. We will be happy to provide you with an offer.<br />
<br />
==== External flashes ====<br />
<br />
In general our Flashers support programming of external flashes listed below:<br>(Can differ between Flasher models and hardware versions)<br />
<br />
* parallel NOR flash<br />
* SPI / QSPI flash<br>(see: ''[[SPI_support_by_Flasher_models]]'')<br />
* NAND flash<br />
* I<sup>2</sup>C EEPROM/Flash<br />
* FRAM<br />
<br />
If the parallel NOR flash device which is used is not CFI-compliant you have to select the flash device in J-Flash explicitly,<br />
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''.<br />
<br />
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.<br />
The J-Flash software comes with sample projects for ''Open Flashloader''.<br />
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''<br />
{{Note|1=Complete Information about ''Open Flashloaders'' can be found in our Wiki:<br>''[[Open_Flashloader]]''}}<br />
<br />
==== Cores ====<br />
<br />
===== Flasher ARM =====<br />
<br />
Flasher ARM supports and has been tested with the following cores, but should work with any ARM7/9, Cortex-M0/M1/M3/M4 core.<br />
If you experience problems with a particular core, do not hesitate to contact Segger.<br><br />
<br />
* ARM7TDMI (Rev 1)<br />
* ARM7TDMI (Rev 3)<br />
* ARM7TDMI-S (Rev 4)<br />
* ARM920T<br />
* ARM922T<br />
* ARM926EJ-S<br />
* ARM946E-S<br />
* ARM966E-S<br />
* Cortex-M0<br />
* Cortex-M1<br />
* Cortex-M3<br />
* Cortex-M4<br />
<br />
===== Flasher RX =====<br />
<br />
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><br />
<br />
* RX610<br />
* RX621<br />
* RX62N<br />
* RX62T<br />
<br />
===== Flasher PPC =====<br />
<br />
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.<br />
<br />
* e200z0<br />
<br />
===== Flasher PRO/Compact/Portable PLUS =====<br />
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/''.<br />
<br />
=== Programming multiple targets in parallel ===<br />
<br />
To program multiple targets in parallel there are the following possibilities:<br />
* Using a Flasher gang, or<br />
* Using multiple Flashers, each connecting to one CPU.<br />
<br />
Devices for gang programming are:<br />
* Flasher Hub-12 in conjunction with up to 12 Flasher (Compact). Please refer to [[UM08043_Flasher_Hub-12|Flasher Hub-12 user manual (UM08043_Flasher_Hub-12)]].<br />
* Flasher ATE; suitable for programming up to 10 targets in parallel. Please refer to [https://www.segger.com/downloads/flasher/UM08035 Flasher ATE user manual (UM08035_FlasherATE.pdf)].<br />
When using multiple flashers, this can be done with the J-Flash production programming software.<br />
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''<br />
<br />
=== Logfiles and Quality Management ===<br />
<br />
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:<br />
<source lang="c"><br />
SN: 1 - Failed<br />
SN: 1 - Failed<br />
SN: 2 - O.K. (931 ms)<br />
SN: 3 - O.K. (931 ms)<br />
SN: 4 - O.K. (933 ms)<br />
SN: 5 - O.K. (932 ms)<br />
</source><br />
If applicable, the logfile contains more detailed error messages. For example:<br />
<source lang="c"><br />
ERROR: Programming failed @ address 0x00000000 (1)<br />
ERROR: Cannot connect to CPU. Target interface speed too high?<br />
</source><br />
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:<br />
<source lang="c"><br />
Verify error config word area @<br />
config word<br />
config word read back<br />
Verify error flash area @<br />
data from file<br />
data read back<br />
</source><br />
{{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.}}<br />
<br />
== TCP Services ==<br />
This chapter describes the integrated TCP services.<br />
<br />
=== FTP Server ===<br />
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><br />
[[File:FTPServer.png]]<br />
<br />
==== Access data ====<br />
Anonymous access to the FTP server is limited to read-only access to the file system.<br><br />
For write access, special login credentials have to be used:<br><br />
<tt>Login: admin</tt><br><br />
<tt>Password: 1234</tt><br><br />
<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.<br />
It is not meant as a security feature.}}<br />
<br />
=== Web server ===<br />
<br />
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.<br />
For the network, the IP address settings can be changed and a nick name can be assigned to the device.<br><br />
<br />
Additionally, the web interface provides information about the status of the integrated operating system, the IP stack and the target hardware.<br />
<br />
== Remote control ==<br />
This chapter describes how to control the Flasher in standalone mode.<br />
<br />
=== Overview ===<br />
There are 3 ways to control Flasher operation:<br><br />
{| class="seggertable"<br />
! Type of control !! Description<br />
|-<br />
| Button || Programming operation starts when pressing the PROG-button. The LEDs serve as visible indicators.<br />
|-<br />
| Handshake || 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.<br />
|-<br />
| Terminal || Terminal communication via TELNET, RS232 or VCOM with the [[#ASCII command interface]]<br />
|}<br />
<br />
<br />
{{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.}}<br />
<br />
=== Handshake control ===<br />
<br />
Some Flasher models are equipped with additional hardware control functions that are connected to the SUBD9 male connector, normally used as an RS232 interface to the PC.<br />
These Flasher models can therefore be controlled remotely by automated testers without the need for a connection to a PC.<br />
<br />
The handshake control is available for the following Flashers:<br />
* Flasher ARM<br />
* Flasher PRO<br />
* Flasher Compact (via Flasher Hub and Flasher Hub-12 only)<br />
<br />
The following diagrams show the internal remote control circuitry of Flasher:<br><br />
<br />
[[File:FlasherRemotecontrol.png]]<br />
{| class="seggertable"<br />
|-<br />
! Pin No. !! Function !! Description<br />
|-<br />
| 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.<br />
|-<br />
| 4 || BUSY || As soon as the "Auto" function is started, BUSY becomes active, which means that transistor is switched OFF.<br />
|-<br />
| 5 || GND || Common Signal ground.<br />
|-<br />
| 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.<br />
|-<br />
|}<br />
[[File:FlasherRemoteSignal.png]]<br />
<br />
=== ASCII command interface ===<br />
<br />
==== Introduction ====<br />
<br />
Once set up using J-Flash, the Flasher can be driven by any application or just a simple terminal using ASCII commands.<br><br />
<br />
Every known command is acknowledged by the Flasher and then executed. After command execution, Flasher sends an ASCII reply message.<br><br />
<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}}<br />
<br />
==== General command and reply message format ====<br />
<br />
* Any ASCII command has to start with the start delimiter ''#''.<br />
* Any ASCII command has to end with simple carriage return ('\r', ASCII code 13).<br />
* Commands can be sent upper or lower case<br />
<br />
==== General usage ====<br />
<br />
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.<br />
<br />
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).<br />
<br />
==== Settings for ASCII interface via RS232 ====<br />
<br />
Flasher is driven via a RS232 serial port with the following interface settings:<br><br />
<br />
* 9600 baud<br />
* 8 data bits<br />
* no parity<br />
* 1 stop bit<br />
<br />
The baud rate can be changed by using the <tt>#BAUDRATE</tt> command.<br />
<br />
==== Settings for ASCII interface via Telnet ====<br />
<br />
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><br />
<br />
[[File:telnet_connection.gif]]<br />
<br />
==== Settings for ASCII interface via VCOM ====<br />
<br />
The same settings can be used for VCOM as for [[#Settings for ASCII interface via RS232|RS232]].<br />
<br />
{{Note|The performance also depends on the terminal application used on the PC.}}<br />
<br />
==== Commands and replies ====<br />
<br />
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><br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| Commands to the Flasher<br />
|-<br />
| <tt>#BAUDRATE <Baudrate></tt><br />
|-<br />
| <tt>#AUTO</tt><br />
|-<br />
| <tt>#AUTO PATCH</tt><br />
|-<br />
| <tt>#AUTO NOINFO</tt><br />
|-<br />
| <tt>#CANCEL</tt><br />
|-<br />
| <tt>#ERASE</tt><br />
|-<br />
| <tt>#PROGRAM</tt><br />
|-<br />
| <tt>#RESULT</tt><br />
|-<br />
| <tt>#SELECT <Filename></tt><br />
|-<br />
| <tt>#START</tt><br />
|-<br />
| <tt>#STATUS</tt><br />
|-<br />
| <tt>#VERIFY</tt><br />
|-<br />
| <tt>#READ</tt><br />
|-<br />
| <tt>#QUIT</tt><br />
|-<br />
| <tt>#VERBOSE <Level></tt><br />
|-<br />
!colspan="100%"| File I/O commands<br />
|-<br />
| <tt>#FCLOSE</tt><br />
|-<br />
| <tt>#FCRC</tt><br />
|-<br />
| <tt>#FDELETE <Filename></tt><br />
|-<br />
| <tt>#FFORMAT</tt><br />
|-<br />
| <tt>#FOPEN <Filename></tt><br />
|-<br />
| <tt>#FREAD <Offset>,<NumBytes></tt><br />
|-<br />
| <tt>#FSIZE</tt><br />
|-<br />
| <tt>#FWRITE <Offset>,<NumBytes>:<nowiki><Data></nowiki></tt><br />
|-<br />
| <tt>#FLIST</tt><br />
|-<br />
| <tt>#MKDIR <Dirname></tt><br />
|-<br />
!colspan="100%"| SecureArea commands<br />
|-<br />
| <tt>#HASSECUREAREA</tt><br />
|-<br />
| <tt>#SECUREAREA <action></tt><br />
|-<br />
!colspan="100%"| Replies from the Flasher<br />
|-<br />
| <tt>#ACK</tt><br />
|-<br />
| <tt>#NACK</tt><br />
|-<br />
| <tt>#OK</tt><br />
|-<br />
| <tt>#OK:<NumBytes>:<nowiki><Data></nowiki></tt><br />
|-<br />
| <tt>#OK:<Size></tt><br />
|-<br />
| <tt>#STATUS:</tt><br />
|-<br />
| <tt>#DONE</tt><br />
|-<br />
| <tt>#ERRxxx</tt><br />
|-<br />
|}<br />
<br />
===== Commands to the Flasher =====<br />
<br />
'''#AUTO'''<br><br />
The <tt>#AUTO</tt> command behaves exactly as the start button or external remote control input.<br><br />
<br />
Usually, the following command sequence will be performed when receiving the <tt>#AUTO</tt> command:<br><br />
<br />
* The Flasher erases the target CPU (if not blank)<br />
* The Flasher programs the target CPU<br />
* The Flasher verifies the target CPU<br />
<br />
Depending on the settings chosen in the '''Production''' tab in J-Flash, this sequence can differ from the one shown above.<br><br />
<br />
Finally, Flasher responds with<br><br />
<br />
* <tt>#OK</tt> if no error occurred<br />
* <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.<br />
<br />
During execution of the <tt>#AUTO</tt> command, Flasher automatically sends "status" messages via RS232 to reflect the state of execution.<br />
Typically during execution of <tt>#AUTO</tt> command, Flasher will reply the following sequence of messages:<br><br />
<br />
<tt>#ACK</tt><br><br />
<tt>#STATUS:INITIALIZING</tt><br><br />
<tt>#STATUS:CONNECTING</tt><br><br />
<tt>#STATUS:UNLOCKING</tt><br><br />
<tt>#STATUS:ERASING</tt><br><br />
<tt>#STATUS:PROGRAMMING</tt><br><br />
<tt>#STATUS:VERIFYING</tt><br><br />
<tt>#OK (Total 13.993s, Erase 0.483s, Prog 9.183s, Verify 2.514s)</tt><br><br />
<br />
'''#AUTO PATCH'''<br><br />
The <tt>#AUTO</tt> PATCH command allows patching of the content of the data to be programmed.<br><br />
<br />
Flasher responds with<br><br />
<br />
* <tt>#OK</tt> if no error occurred<br />
* <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.<br />
<br />
For further information about the usage of the <tt>#AUTO PATCH</tt> command please refer to [[#Patch file support | Patch file support]].<br />
<br />
'''#AUTO NOINFO'''<br><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><br />
<br />
The command ends with <tt>#OK</tt> or <tt>#ERRxxx</tt><br />
<br />
'''#BAUDRATE <Baudrate>'''<br><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><br />
<br />
If this command succeeds, Flasher responds with:<br><br />
<br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<br />
Otherwise it will respond with one of the following error messages:<br><br />
<br />
<tt>#ERR255: Invalid parameters</tt><br><br />
<tt>or</tt><br><br />
<tt>#ERR255: Baudrate is not supported</tt><br><br />
<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.<br />
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.}}<br />
<br />
'''#CANCEL'''<br><br />
This command can be sent to abort a running program. It may take a while until the current program is actually canceled.<br><br />
<br />
Flasher will respond with:<br><br />
<br />
<tt>#ERR007:CANCELED.</tt><br><br />
<br />
'''#ERASE'''<br><br />
This command can be sent to erase all selected target flash sectors.<br><br />
<br />
Flasher will reply the following sequence of messages:<br><br />
<br />
<tt>#ACK</tt><br><br />
<tt>#STATUS:INITIALIZING</tt><br><br />
<tt>#STATUS:CONNECTING</tt><br><br />
<tt>#STATUS:UNLOCKING</tt><br><br />
<tt>#STATUS:ERASING</tt><br><br />
<tt>#OK (Total 0.893s, Erase 0.483s)</tt><br><br />
<br />
'''#PROGRAM'''<br><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.<br />
<br />
'''#RESULT'''<br><br />
This command can be sent any time, even during other command execution. Flasher responds with the last result of the previously executed command.<br />
<br />
'''#SELECT <Filename>'''<br><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.<br />
<tt><Filename></tt> specifies the name of file pair without extensions (.CFG and .DAT) on the Flasher which should be selected. If you are<br />
using the universal flash programming mode, <tt><Filename></tt> specifies the full name of the .UNI file '''including''' the extension.<br />
Flasher saves the selected config and data file in the FLASHER.INI file. So this selection is remembered even between power-cycling Flasher.<br><br />
<br />
This may be verfy helpful in cases where several config and data files are stored on Flasher.<br />
The user can easily switch between these config and data files without connecting Flasher to a host.<br><br />
<br />
If this command succeeds, Flasher responds with:<br><br />
<br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<br />
Find below a sample sequence which shows how to use the <tt>#SELECT</tt> command:<br><br />
<br />
<tt>#SELECT ATSAM7_1 // ATSAM7_1.CFG and ATSAM7_1.DAT is selected</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<tt>#AUTO // Start auto programming</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#STATUS:INITIALIZING</tt><br><br />
<tt>#STATUS:CONNECTING</tt><br><br />
<tt>#STATUS:UNLOCKING</tt><br><br />
<tt>#STATUS:ERASING</tt><br><br />
<tt>#STATUS:PROGRAMMING</tt><br><br />
<tt>#STATUS:VERIFYING</tt><br><br />
<tt>#OK (Total 8.416s, Erase 0.005s, Prog 6.845s, Verify 0.959s)</tt><br><br />
<tt>#SELECT ATSAM7_2 // ATSAM7_2.CFG and ATSAM7_2.DAT is selected</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<tt>#AUTO // Start auto programming</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#STATUS:INITIALIZING</tt><br><br />
<tt>#STATUS:CONNECTING</tt><br><br />
<tt>#STATUS:UNLOCKING</tt><br><br />
<tt>#STATUS:ERASING</tt><br><br />
<tt>#STATUS:PROGRAMMING</tt><br><br />
<tt>#STATUS:VERIFYING</tt><br><br />
<tt>#OK (Total 8.632s, Erase 0.005s, Prog 7.051s, Verify 0.969s)</tt><br><br />
<br />
'''#START'''<br><br />
This command can be sent to start the application using the method configured in the J-Flash project.<br><br />
For U-Flash projects, however, the target application is not necessarily started. <br><br />
There is often a "start application" checkbox in the U-Flash settings which have to be set for this.<br />
<br />
Flasher will reply with the following sequence of messages:<br><br />
<br />
<tt>#ACK</tt><br><br />
<tt>#STATUS:INITIALIZING</tt><br><br />
<tt>#STATUS:CONNECTING</tt><br><br />
<tt>#OK (Total 1.148s)</tt><br><br />
<br />
'''#STATUS'''<br><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]].<br />
<br />
'''#VERIFY'''<br><br />
This command can used to verify the target flash content against the data stored in Flasher.<br />
<br />
'''#READ'''<br><br />
Only available for devices supported by U-Flash.<br><br />
This command can used to read out flash data.<br><br />
More information: [https://wiki.segger.com/Flasher/How_to_read_data_from_a_device_using_U-Flash How to read data using U-Flash]<br />
<br />
'''#QUIT'''<br><br />
This command can be used to terminate the active telnet connection from the server side (Flasher).<br />
The command provides an easy way to terminate the session from an automated script.<br />
It is not necessary to parse stdout and switch to local command mode to disconnect.<br />
Not implemented in the Flasher ATE or Flasher Hub.<br />
<br />
'''#VERBOSE <Level>'''<br><br />
This command can be used to change the verbosity level. <br><br />
* Verbosity level 0: Default. <br><br />
* Verbosity level 1: Provides some additional messages during the programming process.<br />
<br />
===== File I/O commands =====<br />
<br />
The ASCII interface of the Flasher also supports file I/O operations.<br />
<br />
The following file I/O commands are supported:<br><br />
<br />
'''#FCLOSE'''<br><br />
The <tt>#FCLOSE</tt> command closes the file on Flasher which was opened via <tt>#FOPEN</tt>.<br />
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><br />
<br />
A typical sequence when using the <tt>#FCLOSE</tt> command does look like as follows:<br><br />
<br />
<tt>#FCLOSE</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<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><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:No file opened</tt><br />
}}<br />
<br />
'''#FCRC'''<br><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>.<br />
The CRC will be also reported by J-Flash when downloading or saving files via J-Flash.<br><br />
<br />
A typical sequence when using the <tt>#FCRC</tt> command does look like as follows:<br><br />
<br />
<tt>#FCRC flasher.dat</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK:0x75BC855A</tt><br><br />
<br />
'''#FDELETE <Filename>'''<br><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><br />
<br />
A typical sequence when using the <tt>#FDELETE</tt> command does look like as follows:<br><br />
<br />
<tt>#FDELETE flasher.dat</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<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><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:Failed to delete file</tt><br />
}}<br />
<br />
'''#FFORMAT'''<br><br />
The <tt>#FFORMAT</tt> command is used to delete all files located in the public area of the Flasher's internal memory.<br />
<br />
{{Note|1=Please note that this command deletes all projects located in the public area. Deleted projects cannot be restored again.<br><br />
This command does not delete the Flasher firmware, neither does it delete files in the secure area.<br />
}}<br />
<br />
A typical sequence using the <tt>#FFORMAT</tt> command does look like as follows:<br><br />
<br />
<tt>#FFORMAT</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#DONE</tt><br><br />
<br />
'''#FOPEN <Filename>'''<br><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.<br />
If <tt><Filename></tt> can not be found on Flasher a new one will be created.<br><br />
<br />
A typical sequence using the <tt>#FOPEN</tt> command does look like as follows:<br><br />
<br />
<tt>#FOPEN flasher.dat</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<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><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:A file has already been opened</tt><br />
}}<br />
<br />
'''#FREAD <Offset>,<NumBytes>'''<br><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.<br />
<tt><NumBytes></tt> specifies the number of bytes which should be read.<br><br />
<br />
A typical sequence when using the <tt>#FREAD</tt> command does look like as follows:<br><br />
<br />
<tt>#FREAD 0,4</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK:04:466c6173</tt><br><br />
<br />
If the <tt>#FREAD</tt> command succeeds, Flasher will finally respond with a <tt>#OK:<NumBytes>:<nowiki><Data></nowiki></tt> reply message.<br />
For more information about the Flasher reply messages, please refer to [[#Replies from Flasher | Replies from Flasher]].<br><br />
<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><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:No file opened</tt>}}<br />
<br />
'''#FSIZE'''<br><br />
The <tt>#FSIZE</tt> command is used to get the size of the currently opened file on Flasher.<br><br />
<br />
A typical sequence when using the <tt>#FSIZE</tt> command does look like as follows:<br><br />
<br />
<tt>#FSIZE</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK:10 // file on flasher which is currently open, has a size of 16 bytes</tt><br><br />
<br />
If the <tt>#FSIZE</tt> command succeeds, Flasher will respond with a <tt>#OK:<Size></tt> reply message.<br />
For more information about the Flasher reply messages, please refer to [[#Replies from Flasher | Replies from Flasher]].<br><br />
<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><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:No file opened</tt>}}<br />
<br />
'''#FWRITE <Offset>,<NumBytes>:<nowiki><Data></nowiki>'''<br><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.<br />
<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.<br />
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><br />
<br />
<tt><Offset></tt> and <tt><NumBytes></tt> are expected in hexadecimal format.<br><br />
<br />
<tt>#FWRITE 0,200:<nowiki><Data></nowiki></tt><br><br />
<tt>#FWRITE 200,200:<nowiki><Data></nowiki></tt><br><br />
<br />
The data is expected in hexadecimal format (two hexadecimal characters per byte). The following example illustrates the use of <tt>#FWRITE</tt>:<br />
<br />
<tt>Data to be send: Hello !</tt><br><br />
<tt>ASCII values: 0x48, 0x65, 0x6C, 0x6C, 0x6F, 0x20, 0x21</tt><br><br />
<br />
<tt>#FWRITE 0,7:48656C6C6F2021</tt><br><br />
<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><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:No file opened</tt><br>}}<br />
<br />
'''#FLIST'''<br><br />
The <tt>#LIST</tt> command is used to list all files stored on the Flasher.<br><br />
<br />
A typical sequence using the <tt>#FLIST</tt> command does look like as follows:<br><br />
<br />
<tt>#FLIST</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>FLASHER.INI Size: 60</tt><br><br />
<tt>SERIAL.TXT Size: 3</tt><br><br />
<tt>FLASHER.LOG Size: 207</tt><br><br />
<tt>FOLDER (DIR)</tt><br><br />
<tt>FOLDER\\TEST1.CFG Size: 2048</tt><br><br />
<tt>FOLDER\\TEST1.DAT Size: 12288</tt><br><br />
<tt>#OK</tt><br><br />
<br />
'''#MKDIR <Dirname>'''<br><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><br />
<br />
A typical sequence using the <tt>#MKDIR</tt> command does look like as follows:<br><br />
<br />
<tt>#MKDIR folder</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<br />
{{Note|1=If the directory can not be created because of a bad <tt><Dirname></tt> argument, Flasher will respond with:<br><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:Failed to create directory</tt><br>}}<br />
<br />
===== Secure Area Commands =====<br />
<br />
'''#HASSECUREAREA'''<br><br />
The <tt>#HASSECUREAREA</tt> command checks if the Flasher is configured with a secure area.<br />
<br />
<tt>#RESULT:YES</tt> indicates the secure area is present, <tt>#RESULT:NO</tt> indicates no secure area is present.<br />
<br />
'''#SECUREAREA'''<br><br />
The <tt>#SECUREAREA <action></tt> command allows to create or remove the secure area on the Flasher.<br />
<br />
* the action <tt>CREATE</tt> creates the secure area.<br />
* the action <tt>REMOVE</tt> will remove the secure area.<br />
<br />
A typical sequence using the <tt>#SECUREAREA</tt> command does look like as follows:<br><br />
<br />
<tt>#SECUREAREA CREATE</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#DONE</tt><br><br />
<br />
{{Note|1=When creating or removing the <tt>secure area</tt>, all configuration and data files being stored on the Flasher, are lost.<br />
Please make sure that they are not needed anymore, before adding / removing the security area.}}<br />
<br />
<br />
<br />
===== Replies from Flasher =====<br />
<br />
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.<br />
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.<br />
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><br />
<br />
<tt>#OK (Total 13.993s, Erase 0.483s, Prog 9.183s, Verify 2.514s)</tt><br><br />
<br />
The following reply messages from Flasher are defined:<br><br />
<br />
'''#ACK'''<br><br />
Flasher replies with <tt>#ACK</tt> message on reception of any defined command before the command itself is executed.<br />
<br />
'''#NACK'''<br><br />
Flasher replies with <tt>#NACK</tt>, if an undefined command was received.<br />
<br />
'''#OK'''<br><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.<br />
<br />
'''#OK:<NumBytes>:<nowiki><Data></nowiki>'''<br><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.<br />
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).<br />
<br />
'''#OK:<Size>'''<br><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.<br />
<br />
'''#STATUS:'''<br><br />
The Flasher replies with its current state.<br><br />
<br />
The following status messages are currently defined:<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Message !! Description<br />
|-<br />
| <tt>#STATUS:READY</tt> || Flasher is ready to receive a new command.<br />
|-<br />
| <tt>#STATUS:CONNECTING</tt> || Flasher initializes connection to target CPU.<br />
|-<br />
| <tt>#STATUS:INITIALIZING</tt> || Flasher performs self check and internal init.<br />
|-<br />
| <tt>#STATUS:UNLOCKING</tt> || Unlocking flash sectors.<br />
|-<br />
| <tt>#STATUS:ERASING</tt> || Flasher is erasing the flash of the target device.<br />
|-<br />
| <tt>#STATUS:PROGRAMMING</tt> || Flasher is programming the flash of the target device.<br />
|-<br />
| <tt>#STATUS:VERIFYING</tt> || Flasher verifies the programmed flash contents.<br />
|-<br />
|}<br />
<br />
'''#ERRxxx'''<br><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><br />
<br />
Some error codes may be followed by colon and an additional error text.<br><br />
<br />
For example:<br><br />
<br />
<tt>#ERR007:CANCELED.</tt><br><br />
<br />
The error code numbers are described in the following table:<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Message !! Description<br />
|-<br />
| <tt>#ERR007</tt> || Flasher received <tt>#CANCEL</tt> command and has canceled the current operation.<br />
|-<br />
| <tt>#ERR008</tt> || Flasher is already busy with execution of previous command.<br />
|-<br />
| <tt>#ERR009</tt> || Failed to allocate memory.<br />
|-<br />
| <tt>#ERR010</tt> || Failed to open file.<br />
|-<br />
| <tt>#ERR011</tt> || Failed to read file.<br />
|-<br />
| <tt>#ERR012</tt> || Failed to write file.<br />
|-<br />
| <tt>#ERR013</tt> || Failed to delete file.<br />
|-<br />
| <tt>#ERR255</tt> || Undefined error occurred. This reply is followed by an error string.<br />
|-<br />
|}<br />
<br />
== Performance ==<br />
<br />
The following chapter lists programming performance of common flash devices andmicrocontrollers.<br />
<br />
=== Performance of MCUs with internal flash memory ===<br />
<br />
==== Flasher ARM ====<br />
<br />
The following table lists program and erase performance values of Flasher ARM for different controllers.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Microcontroller !! Size [kByte] !! Erase time [sec] !! Program time [sec] !! Verify time [sec] !! Total time [sec]<br />
|-<br />
| Analog Devices || 62 || 2.943 || 2.286 || 0.563 || 5.792<br />
|-<br />
| Atmel AT91SAM7S64 || 64 || --- || 3.488 || 0.438 || 3.926<br />
|-<br />
| Atmel AT91SAM7S256 || 256 || --- || 7.709 || 1.053 || 8.762<br />
|-<br />
| NXP LPC1768 || 512 || 3.740 || 8.559 || 5.092 || 17.391<br />
|-<br />
| NXP LPC2106 || 120 || 0.448 || 1.204 || 0.634 || 2.286<br />
|-<br />
| NXP LPC2129 || 248 || 0.449 || 2.916 || 1.347 || 4.712<br />
|-<br />
| NXP LPC2138 || 500 || 0.448 || 5.488 || 2.649 || 8.585<br />
|-<br />
| NXP LPC2148 || 500 || 0.448 || 5.632 || 2.721 || 8.801<br />
|-<br />
| NXP LPC2294 || 2048 || 0.808 || 15.976 || 9.669 || 26.453<br />
|-<br />
| NXP LPC2478 || 504 || 0.448 || 5.419 || 2.559 || 8.426<br />
|-<br />
| ST STM32F103ZE || 512 || 0.028 || 18.763 || 3.939 || 22.730<br />
|-<br />
| ST STR711 || 272 || 0.429 || 5.476 || 4.742 || 10.647<br />
|-<br />
| ST STR912 || 544 || 1.167 || 12.907 || 5.236 || 19.310<br />
|-<br />
| TI TMS470R1B1M || 1024 || 2.289 || 8.147 || 5.362 || 15.798<br />
|-<br />
|}<br />
<br />
==== Flasher PRO ====<br />
See Flasher ARM.<br />
<br />
==== Flasher Compact ====<br />
See Flasher ARM.<br />
<br />
==== Flasher RX ====<br />
<br />
The following table lists program and erase performance values of Flasher RX.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Microcontroller !! Size [kByte] !! Erase time [sec] !! Program time [sec] !! Verify time [sec] !! Total time [sec]<br />
|-<br />
| R5F56108 || 2.048 || 9.523 || 11.915 || 3.890 || 25.585<br />
|-<br />
|}<br />
<br />
==== Flasher PPC ====<br />
<br />
The following table lists program and erase performance values of Flasher PPC.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Microcontroller !! Size [kByte] !! Erase time [sec] !! Program time [sec] !! Verify time [sec] !! Total time [sec]<br />
|-<br />
| ST SPC560B50 || 576 || 4.747 || 4.159 || 1.929 || 10.917<br />
|-<br />
|}<br />
<br />
== Hardware ==<br />
<br />
This chapter gives an overview about Flasher specific hardware details,<br />
such as the pinouts and available adapters.<br />
<br />
=== Flasher ARM 20-pin JTAG/SWD Connector ===<br />
<br />
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.<br />
<br />
==== Pinout JTAG ====<br />
<br />
[[File:jtag_port_20pin.jpg]] <!-- LG xxxxxx image has been cropped to fit page --><br />
<br />
The following table lists the Flasher JTAG pinout.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! PIN !! SIGNAL !! TYPE !! Description<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 13 || TDO || Input || JTAG data output from target CPU. Typically connected to TDO of target CPU.<br />
|-<br />
| 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".<br />
|-<br />
| 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.<br />
|-<br />
| 19 || 5V-Target supply || Output || This pin is used to supply power to some eval boards. Typically left open on target hardware.<br />
|-<br />
|}<br />
<br />
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.<br />
<br />
==== Pinout SWD ====<br />
<br />
The 20-pin connector of Flasher is also compatible to ARM's Serial Wire Debug (SWD) interface.<br><br />
<br />
[[File:SWD_Port.jpg]] <!-- LG xxxxxx image has been cropped to fit page --><br />
<br />
The following table lists the J-Link / J-Trace SWD pinout.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! PIN !! SIGNAL !! TYPE !! Description<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 7 || SWDIO || I/O || Single bi-directional data pin.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 13 || SWO || Output || Serial Wire Output trace port. (Optional, not required for SWD communication.)<br />
|-<br />
| 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".<br />
|-<br />
| 17 || Not used || NC || This pin is not connected in J-Link.<br />
|-<br />
| 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.<br />
|-<br />
|}<br />
<br />
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.<br />
<br />
==== Target power supply ====<br />
<br />
Pin 19 of the connector can be used to supply power to the target hardware. Supply voltage is 5V, max. current is 400mA.<br />
The output current is monitored and protected against overload and short-circuit.<br><br />
<br />
Power can be controlled via the J-Link commander. The following commands are available to control power:<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Command !! Explanation<br />
|-<br />
| <tt>power on</tt> || Switch target power on<br />
|-<br />
| <tt>power off</tt> || Switch target power off<br />
|-<br />
| <tt>power on perm</tt> || Set target power supply default to "on"<br />
|-<br />
| <tt>power off perm</tt> || Set target power supply default to "off"<br />
|-<br />
|}<br />
<br />
=== Flasher RX 14-pin connector ===<br />
<br />
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.<br />
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.<br />
<br />
[[File:jtag_port_14pin.wmf]]<br />
<br />
The following table lists the Flasher RX 14-pin JTAG pinout.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Pin !! Signal !! Type !! Description<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 5 || TDO || Input || JTAG data output from target CPU. Typically connected to TDO on target CPU.<br />
|-<br />
| 6 || --- || NC || This pin is not connected to Flasher RX.<br />
|-<br />
| 7 || --- || NC || This pin is not connected to Flasher RX.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 10 || --- || NC || This pin is not connected to Flasher RX.<br />
|-<br />
| 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.<br />
|-<br />
| 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".<br />
|-<br />
|}<br />
<br />
* All pins marked NC are not connected to Flasher RX. Any signal can be applied here; Flasher RX will simply ignore such a signal.<br />
* Pins 2, 12, 14 are GND pins connected to GND in Flasher RX. They should also be connected to GND in the target system.<br />
<br />
==== Target power supply ====<br />
<br />
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.<br />
Power can be controlled via the J-Link commander. The following commands are available to control power:<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Command !! Explanation<br />
|-<br />
| <tt>power on</tt> || Switch target power on<br />
|-<br />
| <tt>power off</tt> || Switch target power off<br />
|-<br />
| <tt>power on perm</tt> || Set target power supply default to "on"<br />
|-<br />
| <tt>power off perm</tt> || Set target power supply default to "off"<br />
|-<br />
|}<br />
<br />
=== Flasher PPC 14-pin connector ===<br />
<br />
Flasher PPC itself has a 20-pin JTAG connector mounted but comes with a 14-pin adapter for PowerPC devices.<br><br />
<br />
[[File:JTAG_PPC_14pin_adapter.wmf]]<br />
<br />
The following table lists the Flasher PPC 14-pin JTAG pinout.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Pin !! Signal !! Type !! Description<br />
|-<br />
| 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.<br />
|-<br />
| 3 || TDO || Input || JTAG data output from target CPU. Typically connected to TDO on target CPU.<br />
|-<br />
| 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.<br />
|-<br />
| 7 || --- || NC || This pin is not connected to Flasher PPC.<br />
|-<br />
| 8 || --- || NC || This pin is not connected to Flasher PPC.<br />
|-<br />
| 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".<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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).<br />
|-<br />
|}<br />
<br />
* All pins marked NC are not connected to Flasher PPC. Any signal can be applied here; Flasher PPC will simply ignore such a signal.<br />
* 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.<br />
<br />
=== Target board design ===<br />
<br />
We strongly advise following the recommendations given by the chip manufacturer. These recommendations are normally in line with the recommendations.<br />
Please refer to the the appropriate tables depending on the core:<br><br />
<br />
* [[#Pinout JTAG | Pinout JTAG]]<br />
* [[#Pinout SWD | Pinout SWD]]<br />
* [[#Flasher RX 14-pin connector | Flasher RX 14-pin connector]]<br />
* [[#Flasher PPC 14-pin connector | Flasher PPC 14-pin connector]]<br />
<br />
In case of doubt you should follow the recommendations given by the semiconductor manufacturer.<br />
<br />
==== Pull-up/pull-down resistors ====<br />
<br />
Unless otherwise specified by developer's manual, pull-ups/pull-downs are recommended to be between 2.2 kOhms and 47 kOhms.<br />
<br />
==== RESET, nTRST ====<br />
<br />
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><br />
<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.<br />
(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.<br />
<br />
=== Adapters ===<br />
<br />
==== JTAG Isolator ====<br />
<br />
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.<br />
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><br />
<br />
[[File:JTAG_Isolator_Port.wmf]]<br />
<br />
===== Pinout =====<br />
<br />
The following table shows the target-side pinout of the J-Link JTAG Isolator.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Pin !! Signal !! Type !! Description<br />
|-<br />
| 1 || VCC || Output || The target side of the isolator draws power over this pin.<br />
|-<br />
| 2 || VCC || Output || The target side of the isolator draws power over this pin.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 13 || TDO || Input || JTAG data output from target CPU. Typically connected to TDO of target CPU.<br />
|-<br />
| 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".<br />
|-<br />
| 17 || N/C || N/C || This pin is not connected on the target side of the isolator.<br />
|-<br />
| 19 || N/C || N/C || This pin is not connected on the target side of the isolator.<br />
|-<br />
|}<br />
<br />
Pins 4, 6, 8, 10, 12, 14, 16, 18, 20 are connected to GND.<br />
<br />
===== Safety =====<br />
This isolator provides '''basic isolation''' only. '''Do not use with hazardous voltages without further protection measures to avoid risk of electrical shock and fire.'''<br />
<br />
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.<br />
<br />
==== J-Link Needle Adapter ====<br />
<br />
To connect to the J-Link OB via programming interface the ''J-Link Needle Adapter'' is recommended.<br><br />
<br />
[[File:J-Link_Needle_Adapter_500x.jpg]]<br />
<br />
Why to choose the J-Link Needle Adapter:<br><br />
<ol><br />
<li>No additional connector required on your PCB</li><br />
<li>Very small footprint</li><br />
<li>High reliability spring pins for secure connections</li><br />
<li>Designed with 3 locating pins, so the adapter can not be connected the wrong way</li><br />
<li>No external power supply required! The J-Link Needle Adapter comes with the option to power the target hardware via J-Link.</li><br />
</ol><br />
These features make the J-Link Needle Adapter the perfect solution for production purposes.<br><br />
<br />
The pinout of the J-Link Needle Adapter is based on the pinout of the needle adapter by Tag-Connect.<br />
Please note, that both pinouts are not identical since the J-Link Needle Adapter comes with a 5V-supply pin.<br><br />
<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><br />
<br />
Moreover, the two "legs" on each side of the connector guarantee a stable and secure contact between pins and the PCB.<br><br />
<br />
[[File:J-Link_Needle_Adapter_Connector_pins_360x.jpg]]<br />
[[File:J-Link_Needle_Adapter_Pinout.jpg]]<br />
<br />
The J-Link Needle Adapter can be connected to J-Link via the ''20-pin 0.1'' JTAG to a 10-pin needle connector''.<br />
<br />
=== How to determine the hardware version ===<br />
<br />
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.<br />
Flasher has the hardware version printed on the back label.<br><br />
<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).<br />
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><br />
<br />
[[File:FlasherARM_version.gif]]<br />
== Support and FAQs ==<br />
<br />
This chapter contains troubleshooting tips together with solutions for common problems which might occur when using Flasher.<br />
There are several steps you can take before contacting support.<br />
Performing these steps can solve many problems and often eliminates the need for assistance.<br />
This chapter also contains a collection of frequently asked questions (FAQs) with answers.<br />
<br />
=== Contacting support ===<br />
<br />
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.<br />
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><br />
<br />
If you need to contact support, send the following information to<br><br />
''support@segger.com''<br><br />
<br />
* A detailed description of the problem<br />
* Flasher serial number<br />
* Information about your target hardware (processor, board, etc.).<br />
* <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]].<br />
<br />
Flasher is sold directly by SEGGER.<br />
<br />
=== Frequently Asked Questions ===<br />
<br />
'''Maximum JTAG speed'''<br />
{|<br />
|-<br />
| '''Q:''' || What is the maximum JTAG speed supported by Flasher?<br />
|-<br />
| '''A:''' || Flasher's maximum supported JTAG speed is 12MHz.<br />
|}<br />
<br />
'''Maximum download speed'''<br />
{|<br />
|-<br />
| '''Q:''' || What is the maximum download speed?<br><br />
|-<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.<br />
|}<br />
== Background information ==<br />
<br />
This chapter provides background information about flash programming in general. It<br />
also provides information about how to replace the firmware of Flasher manually.<br />
<br />
=== Flash programming ===<br />
<br />
Flasher comes with a DLL, which allows - amongst other functionalities - reading and writing RAM, CPU registers, starting and stopping the CPU, and setting breakpoints.<br />
<br />
==== How does flash programming via Flasher work? ====<br />
<br />
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.<br />
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.<br />
Different flash chips have different programming algorithms;the programming algorithm also depends on other things,<br />
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).<br />
The RAM code requires data to be programmed into the flash memory. The data is supplied by downloading it to RAM.<br />
<br />
==== Data download to RAM ====<br />
<br />
The data (or part of it) is downloaded to another part of the RAM of the target system.<br />
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.<br />
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.<br />
This process may have to be repeated until the entire data is programmed into the flash.<br />
<br />
==== Available options for flash programming ====<br />
<br />
In general, there are two possibilities in order to use Flasher for flash programming:<br><br />
<br />
* Using Flasher stand-alone to program the target flash memory (stand-alone mode)<br />
* Using Flasher in combination with J-Flash to program the target flash memory (Flasher in "PC-based mode")<br />
<br />
===== Using Flasher in stand-alone mode =====<br />
<br />
In order to use the Flasher in stand-alone mode, it has to be configured first.<br />
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]].<br />
<br />
===== J-Flash - Complete flash programming solution =====<br />
<br />
J-Flash is a stand-alone Windows application, which can read / write data files and program the flash in almost any ARM system.<br />
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''.<br />
<br />
==== How does the universal flash programming work? ====<br />
<br />
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><br />
<br />
Universal flash programming is available only for stand-alone mode.<br />
== Glossary ==<br />
<br />
This chapter describes important terms used throughout this manual.<br />
<br />
'''Big-endian'''<br><br />
Memory organization where the least significant byte of a word is at a higher address than the most significant byte. See Little-endian.<br />
<br />
'''Cache cleaning'''<br><br />
The process of writing dirty data in a cache to main memory.<br />
<br />
'''Coprocessor'''<br><br />
An additional processor that is used for certain operations, for example, for floating-point math calculations, signal processing, or memory management.<br />
<br />
'''Dirty data'''<br><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.<br />
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.<br />
<br />
'''Halfword'''<br><br />
A 16-bit unit of information.<br />
<br />
'''Host'''<br><br />
A computer which provides data and other services to another computer. Especially, a computer providing debugging services to a target being debugged.<br />
<br />
'''ICache'''<br><br />
Instruction cache.<br />
<br />
'''ID'''<br><br />
Identifier.<br />
<br />
'''IEEE 1149.1'''<br><br />
The IEEE Standard which defines TAP. Commonly (but incorrectly) referred to as JTAG.<br />
<br />
'''Image'''<br><br />
An executable file that has been loaded onto a processor for execution.<br />
<br />
'''Instruction Register'''<br><br />
When referring to a TAP controller, a register that controls the operation of the TAP.<br />
<br />
'''IR'''<br><br />
See Instruction Register.<br />
<br />
'''Joint Test Action Group (JTAG)'''<br><br />
The name of the standards group which created the IEEE 1149.1 specification.<br />
<br />
'''Little-endian'''<br><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.<br />
<br />
'''Memory coherency'''<br><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.<br />
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.<br />
<br />
'''Memory management unit (MMU)'''<br><br />
Hardware that controls caches and access permissions to blocks of memory, and translates virtual to physical addresses.<br />
<br />
'''Memory Protection Unit (MPU)'''<br><br />
Hardware that controls access permissions to blocks of memory. Unlike an MMU, a MPU does not translate virtual addresses to physical addresses.<br />
<br />
'''RESET'''<br><br />
Abbreviation of System Reset. The electronic signal which causes the target system other than the TAP controller to be reset.<br />
This signal is also known as "nSRST" "nSYSRST", "nRST", or "nRESET" in some other manuals. See also nTRST.<br />
<br />
'''nTRST'''<br><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.<br />
<br />
'''Open collector'''<br><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.<br />
<br />
'''Processor Core'''<br><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.<br />
It excludes optional coprocessors, caches, and the memory management unit.<br />
<br />
'''Remapping'''<br><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.<br />
<br />
'''RTOS'''<br><br />
Real Time Operating System.<br />
<br />
'''TAP Controller'''<br><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.<br />
<br />
'''Target'''<br><br />
The actual processor (real silicon or simulated) on which the application program is running.<br />
<br />
'''TCK'''<br><br />
The electronic clock signal which times data on the TAP data lines TMS, TDI, and TDO.<br />
<br />
'''TDI'''<br><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.<br />
<br />
'''TDO'''<br><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.<br />
<br />
'''Test Access Port (TAP)'''<br><br />
The port used to access a device's TAP Controller. Comprises TCK, TMS, TDI, TDO, and nTRST (optional).<br />
<br />
'''Transistor-transistor logic (TTL)'''<br><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.<br />
<br />
'''Word'''<br><br />
A 32-bit unit of information. Contents are taken as being an unsigned integer unless otherwise stated.<br />
== Literature and references ==<br />
This chapter lists documents, which we think may be useful to gain a deeper understanding of technical details.</div>JanBhttps://wiki.segger.com/index.php?title=UM08022_Flasher&diff=17447UM08022 Flasher2024-01-16T11:17:39Z<p>JanB: /* Flasher Portable PLUS */</p>
<hr />
<div><!---<br />
General TBD:<br />
- LG: Right now - EVERYTHING<br />
===========================================<br />
--------------------[more specific, but on multiple locations]<br />
- check if all emphasis (bold, tt, blue, etc ) have made it into the new version<br />
- Add Information -> Additional information<br />
- use of the term free-of-charge utility/tool etc<br />
- check compliant to DocStandards_Rules.txt<br />
- Remove everything regarding to Kickstarter versions? eventually create a chapter Legacy -> Kickstarter version were available for hw version 5-x (200x-200x)...[..]<br />
- 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.<br />
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.<br />
- if week keep the IDE specific stuff in the manual, add Ozone, ES and J-Link Commander were no mentioned.<br />
- IDE specifics move into wiki confirmed by Alex<br />
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)<br />
- check all sections regarding licensing<br />
- Check compliance of J-Link emDocs with typographic conventions described in AboutThisDocument.emDoc. What should be altered? e.g. references<br />
- use uref at all (not blue)?<br />
- search and decide where to use \ref (ref with page number)<br />
- why is \ref (no single "option" \uref is more basic as \ref.....)<br />
- in text, use either \ref or \iref instead of \uref<br />
- in old manual, \H3 started on a new page (not per default, but set manually for api tables etc...)<br />
- move used old images and source files (visio etc) via svn (currently copied)<br />
--------------------[grammar / vocabulary discussion]<br />
- Product names<br />
-- Use of SEGGEPROBE in this document?<br />
- use license over licence<br />
- commandline or command-line?<br />
- toolchain or tool chain?<br />
- crossreference/cross-reference/cross reference?<br />
- overcurrent?<br />
- double words?<br />
- frontend?<br />
- Unit: Kbytes, KBytes, V, mV.... 9V or 9 V? Create rule in Vocabulary<br />
- baudrate or baud rate?<br />
- stackpointer or stack pointer<br />
- check where we should replace abbreviations with the long form (e.h. "milliseconds" instead of "ms")<br />
- config or configuration<br />
- filepointer or file pointer?<br />
--------------------[J-Link dep. specific]<br />
- J-Link command strings or J-Link Command strings or J-Link Command Strings<br />
- J-Link settings file or...<br />
- J-Link control panel or ......<br />
- J-Link script files or...<br />
---><br />
Flasher is a programming tool for microcontrollers with on-chip or external flash memory.<br />
Flasher is designed for programming flash targets with the J-Flash software or stand-alone.<br />
In addition to that Flasher can also be used as a regular J-Link. For more information about J-Link in general,<br />
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].<br />
<br />
<div class="toclimit-2"><br />
__TOC__<br />
</div><br />
<br />
== Flasher Software and Documentation Pack ==<br />
The Flasher Software and Documentation Pack, available for download on the [https://www.segger.com/downloads/flasher#FlasherSoftwareAndDocumentationPack SEGGER homepage], includes applications to be used with Flasher and in some cases with J-Link and J-Trace.<br><br />
It also comes with USB-drivers for J-Link, J-Trace and Flasher.<br />
<br />
=== Software overview ===<br />
{| class="wikitable"<br />
|-<br />
! Software !! Description<br />
|-<br />
| [[J-Link Configurator|Flasher Configurator]] || GUI-based configuration tool for Flasher. Allows configuration of USB identification as well as TCP/IP identification of Flashers.<br />
|-<br />
| [[FlasherControl|Flasher Control]] || Command-line tool to connect to the Flasher's command-line interface via USB.<br />
|-<br />
| [[J-Flash]] || Flash programming application.<br />
|-<br />
| [[J-Flash SPI]] || (Q)SPI flash programming application.<br />
|-<br />
| [[J-Link Commander]] || Command-line tool with basic functionality for target analysis.<br />
|-<br />
| [[J-Link Registration]] || SEGGER J-Link Registration utility to register your SEGGER product such as a J-Link, J-Trace or Flasher.<br />
|-<br />
| [[JTAGLoad]] || Command line tool that opens an svf file and sends the data in it via J-Link / J-Trace or Flasher to the target.<br />
|-<br />
| [https://www.segger.com/downloads/flasher/UM08037.pdf U-Flash] || Tool for creating standalone Flasher projects.<br />
|}<br />
<br />
== Flasher overview ==<br />
Flasher connects to a PC using the USB/Ethernet/RS232 interface (what host interfaces are available depends on the Flasher model),<br />
running Windows, Linux & MacOS. In stand-alone mode,<br />
Flasher can be driven by the start/stop button, or via the RS232 interface (handshake control or ASCII interface).<br />
Flasher always has a 20-pin connector, which target interfaces are supported depends on the Flasher model:<br />
* Flasher ARM: JTAG and SWD are supported.<br />
* Flasher RX: JTAG is supported. Flasher comes with additional 14-pin RX adapter<br />
* Flasher PPC: JTAG is supported. Flasher comes with additional 14-pin PPC adapter.<br />
* Flasher PRO: JTAG and SWD are supported.<br />
* Flasher Compact: JTAG and SWD are supported.<br />
<br />
=== Features of Flasher ARM/PPC/RX/PRO ===<br />
* Three boot modes: PC-based mode, stand-alone mode, file access mode<br />
* Stand-alone JTAG/SWD programmer (Once set up, Flasher can be controlled without the use of PC program)<br />
* No power supply required, powered through USB<br />
* Supports internal and external flash devices<br />
* 128 MB memory for storage of target program<br />
* Can be used as J-Link (emulator) with a download speed of up to 720 Kbytes/second<br />
* Data files can updated via USB/Ethernet (using the J-Flash software), via FTP, via RS232 or via the file access mode of Flasher<br />
<br />
{| class="seggertable"<br />
|-<br />
! Flasher model !! Supported cores !! Supported target interfaces !! Flash programming speed (depending on target hardware)<br />
|-<br />
| Flasher ARM || ARM7/ARM9/Cortex-M || JTAG, SWD || between 170 and 300 Kbytes/second<br />
|-<br />
| Flasher RX || Renesas RX610, RX621, RX62N, RX62T || JTAG || between 30-300 Kbytes/second<br />
|-<br />
| Flasher PPC || Power PC e200z0 || JTAG || up to 138 Kbytes/second<br />
|-<br />
| Flasher PRO || ARM7/ARM9/Cortex-M Renesas RX610, RX621, RX62N, RX62T Power PC e200z0 || JTAG, SWD || between 30-300 Kbytes/ second<br />
|-<br />
|}<br />
<br />
==== Features of Flasher Compact ====<br />
<br />
* Three boot modes: PC-based mode, stand-alone mode, file access mode<br />
* Stand-alone JTAG/SWD programmer (Once set up, Flasher can be controlled without the use of PC program)<br />
* No power supply required, powered through USB<br />
* Supports internal and external flash devices<br />
* 128 MB memory for storage of target program<br />
* Can be used as J-Link (emulator) with a download speed of up to 720 Kbytes/second<br />
* Data files can updated via USB/Ethernet (using the J-Flash software) or via the file access mode of Flasher<br />
<br />
{| class="seggertable"<br />
|-<br />
! Flasher model !! Supported cores !! Supported target interfaces !! Flash programming speed (depending on target hardware)<br />
|-<br />
| Flasher ARM || ARM7/ARM9/Cortex-M || JTAG, SWD || between 170 and 300 Kbytes/second<br />
|-<br />
| Flasher RX || Renesas RX610, RX621, RX62N, RX62T || JTAG || between 30-300 Kbytes/second<br />
|-<br />
| Flasher PPC || Power PC e200z0 || JTAG || up to 138 Kbytes/second<br />
|-<br />
| Flasher Compact || ARM7/ARM9/Cortex-M Renesas RX610, RX621, RX62N, RX62T Power PC e200z0 || JTAG, SWD || between 30-300 Kbytes/ second<br />
|-<br />
|}<br />
<br />
==== Features of Flasher Portable/Flasher Portable PLUS ====<br />
<br />
* Stand-alone in-circuit-programmer (Once set up, Flasher can be controlled without the use of a PC program)<br />
* Powered by an internal rechargeable battery (standard batteries for Flasher Portable), no Laptop or external power supply required.<br />
* Multiple firmware images can be stored on Flasher<br />
* 128 MB memory for storage of target program<br />
* Flasher Portable PLUS supports a simple selection of up to 99 firmware images via buttons (since V7.90)<br />
* Supported CPUs: ARM Cortex, Legacy ARM7/9, Renesas RX, Freescale PowerPC<br />
* Supports internal and external flash<br />
* Free software updates<ref name="legitimateOwned" />, 1 year of support<br />
* Data files can be updated via the file access mode functionality or via J-Flash<br />
* Programming speed between 30-300 Kbytes/second (actual speed depends on target hardware)<br />
{{Note|1=Ethernet and RS232 as host interface are not available for Flasher Portable}}<br />
<references><br />
<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.<br />
As a legitimate owner of a SEGGER Flasher, you can always download the latest software free of charge.<br />
Though not planned and not likely, we reserve the right to change this policy.<br />
Note that older models may not be supported by newer versions of the software.<br />
Typically, we support older models with new software at least 3 years after end of life.<br />
</ref><br />
</references><br />
<br />
{| class="seggertable"<br />
|-<br />
! Supported cores !! Supported target interfaces !! Flash programming speed (depending on target hardware)<br />
|-<br />
| ARM7/ARM9/Cortex-M || JTAG, SWD || between 30-300 Kbytes/second<br />
|-<br />
| Renesas RX610, RX621, RX62N, RX62T || JTAG || between 170 and 300 Kbytes/second<br />
|-<br />
| Power PC e200z0 || JTAG || up to 138 Kbytes/second<br />
|-<br />
|}<br />
<br />
==== Working environment ====<br />
<br />
'''General'''<br><br />
The Flasher can operate from a PC with an appropriate software like J-Flash or in stand-alone mode.<br />
<br />
'''Host System'''<br><br />
IBM PC/AT or compatible CPU: 486 (or better) with at least 128MB of RAM,<br />
running Windows, Linux & MacOS. It needs to have a USB, Ethernet or RS232 interface available for communication with Flasher.<br />
<br />
'''Power supply'''<br><br />
Flasher Portable: 3x standard AAA batteries or 5V DC, min. 100 mA via USB connector.<br />
<br />
Flasher Portable PLUS: internal rechargeable 680mAh Li-Ion battery, min. 100 mA via USB connector.<br />
<br />
Other Flashers: 5V DC, min. 100 mA via USB connector.<br />
<br />
'''Installing Flasher PC-software'''<br><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><br />
More information about the package you can find in the similar [[J-Link Software and Documentation Pack]].<br><br />
The package includes U-Flash and J-Flash, the main tools for flashing targets:<br />
* J-Flash : J-Flash User Guide ([https://wiki.segger.com/UM08003_JFlash UM08003_JFlash.pdf]).<br />
* U-Flash : U-Flash User Guide ([https://www.segger.com/downloads/flasher/UM08037.pdf UM08037_UniversalFlashLoader.pdf]).<br />
<br />
=== Specifications ===<br />
<br />
<br />
==== Specifications for Flasher ARM ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Windows, Linux & MacOS<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C<br />
|-<br />
| Storage Temperature || -20 °C ... +60 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
!colspan="100%"| Mechanical<br />
|-<br />
| Size (without cables) || 121mm x 66mm x 30mm<br />
|-<br />
| Weight (without cables) || 119g<br />
|-<br />
!colspan="100%"| Available interfaces<br />
|-<br />
| USB Host interface || USB 2.0, full speed<br />
|-<br />
| Ethernet Host interface || 10/100 MBit<br />
|-<br />
| RS232 Host interface || RS232 9-pin<br />
|-<br />
| Target interface || JTAG 20-pin (14-pin adapter available)<br />
|-<br />
!colspan="100%"| JTAG Interface, Electrical<br />
|-<br />
| Power Supply || USB powered, 100mA for Flasher ARM. 500 mA if target is powered by Flasher ARM<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| Target supply voltage || Supply voltage is 5V, max.<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6 <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Max. JTAG speed || up to 12MHz<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
===== Flasher ARM download speed =====<br />
<br />
The following table lists the Flasher ARM performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! ARM7 memory download<br />
|-<br />
| Flasher ARM || 720 Kbytes/s (12MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
<br />
==== Specifications for Flasher RX ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Windows, Linux & MacOS<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C<br />
|-<br />
| Storage Temperature || -20 °C ... +60 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
!colspan="100%"| Mechanical<br />
|-<br />
| Size (without cables) || 121mm x 66mm x 30mm<br />
|-<br />
| Weight (without cables) || 119g<br />
|-<br />
!colspan="100%"| Available interfaces<br />
|-<br />
| USB Host interface || USB 2.0, full speed<br />
|-<br />
| Ethernet Host interface || 10/100 MBit<br />
|-<br />
| RS232 Host interface || RS232 9-pin<br />
|-<br />
| Target interface || JTAG 20-pin (shipped with 14-pin adapter for Renesas RX)<br />
|-<br />
!colspan="100%"| JTAG Interface, Electrical<br />
|-<br />
| Power Supply || USB powered, 100mA for Flasher RX. 500 mA if target is powered by Flasher RX<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| 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)<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6 <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Max. JTAG speed || up to 12MHz<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
===== Flasher RX download speed =====<br />
<br />
The following table lists the Flasher RX performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! Flasher RX600 series memory download<br />
|-<br />
| Flasher RX || 720 Kbytes/s (12MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
<br />
==== Specifications for Flasher PPC ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Windows, Linux & MacOS<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C<br />
|-<br />
| Storage Temperature || -20 °C ... +60 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
!colspan="100%"| Mechanical<br />
|-<br />
| Size (without cables) || 121mm x 66mm x 30mm<br />
|-<br />
| Weight (without cables) || 119g<br />
|-<br />
!colspan="100%"| Available interfaces<br />
|-<br />
| USB Host interface || USB 2.0, full speed<br />
|-<br />
| Ethernet Host interface || 10/100 MBit<br />
|-<br />
| RS232 Host interface || RS232 9-pin<br />
|-<br />
| Target interface || JTAG 20-pin (shipped with 14-pin adapter for Renesas PPC)<br />
|-<br />
!colspan="100%"| JTAG Interface, Electrical<br />
|-<br />
| Power Supply || USB powered, 100mA for Flasher PPC. 500 mA if target is powered by Flasher PPC<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| Target supply voltage || Supply voltage is 5V, max.<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6 <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Max. JTAG speed || up to 12MHz<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
===== Flasher RX download speed =====<br />
<br />
The following table lists the Flasher PPC performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! Memory download<br />
|-<br />
| Flasher PPC || 530 Kbytes/s (8 MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
<br />
==== Specifications for Flasher PRO ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Windows, Linux & MacOS<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C<br />
|-<br />
| Storage Temperature || -20 °C ... +60 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
!colspan="100%"| Mechanical<br />
|-<br />
| Size (without cables) || 121mm x 66mm x 30mm<br />
|-<br />
| Weight (without cables) || 119g<br />
|-<br />
!colspan="100%"| Available interfaces<br />
|-<br />
| USB Host interface || USB 2.0, full speed<br />
|-<br />
| Ethernet Host interface || 10/100 MBit<br />
|-<br />
| RS232 Host interface || RS232 9-pin<br />
|-<br />
| Target interface || JTAG 20-pin (14-pin adapter available)<br />
|-<br />
!colspan="100%"| JTAG Interface, Electrical<br />
|-<br />
| Power Supply || USB powered, 100mA for Flasher PRO. 500 mA if target is powered by Flasher PRO<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| Target supply voltage || Supply voltage is 5V, max.<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6 <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Max. JTAG speed || up to 12MHz<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
<br />
===== Supported CPU cores =====<br />
<br />
The Flasher PRO supports the following CPU cores:<br />
<br />
'''ARM Cortex'''<br><br />
* Cortex-A5<br />
* Cortex-A8<br />
* Cortex-A9<br />
* Cortex-R4<br />
* Cortex-R5<br />
* Cortex-M0<br />
* Cortex-M0+<br />
* Cortex-M1<br />
* Cortex-M3<br />
* Cortex-M4<br />
<br />
'''ARM (legacy cores)'''<br><br />
* ARM720T<br />
* ARM7TDMI<br />
* ARM7TDMI-S<br />
* ARM920T<br />
* ARM922T<br />
* ARM926EJ-S<br />
* ARM946E-S<br />
* ARM966E-S<br />
* ARM1136JF-S<br />
* ARM1136J-S<br />
* ARM1156T2-S<br />
* ARM1156T2F-S<br />
* ARM1176JZ-S<br />
* ARM1176JZF<br />
* ARM1176JZF-S<br />
<br />
'''Renesas RX'''<br><br />
* RX111<br />
* RX210<br />
* RX220<br />
* RX21A<br />
* RX610<br />
* RX621<br />
* RX62G<br />
* RX62N<br />
* RX62T<br />
* RX630<br />
* RX631<br />
* RX63N<br />
* RX63T<br />
<br />
'''Freescale Power PC'''<br><br />
* e200z0<br />
<br />
===== Supported Target interfaces =====<br />
<br />
The Flasher PRO supports the following target interfaces:<br />
<br />
* JTAG<br />
* SWD<br />
* FINE<br />
* SPD<br />
<br />
===== Flasher PRO download speed =====<br />
<br />
The following table lists the Flasher PRO performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! ARM7 memory download<br />
|-<br />
| Flasher PRO || 720 Kbytes/s (12MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
<br />
==== Specifications for Flasher Compact ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Microsoft Windows (x86/x64)<br>Linux (x86/x64/Arm)<br>macOS (x86/Apple M1)<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C<br />
|-<br />
| Storage Temperature || -20 °C ... +65 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
| Size (without cables) || 70mm x 45mm x 18mm<br />
|-<br />
| Weight (without cables) || 40g<br />
|-<br />
| USB Host interface || USB 2.0 (Hi-Speed); Micro USB<br />
|-<br />
| Target interface || JTAG 20-pin (14-pin adapter available)<br />
|-<br />
| Power Supply || USB powered, 130mA (idle)<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| Target supply voltage || Supply voltage is 5V, max.<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
| Supported target interfaces || SPI, QSPI, 8051 C2, cJTAG, FINE, ICSP, IIC, ISP, JTAG, PDI, SPD, SWD, SWIM, UART, UPDI<br />
|-<br />
| Serial transfer rate between Flasher Compact and target || Up to 50 MHz (Depending on target interface)<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6 <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
===== Supported CPU cores =====<br />
<br />
The Flasher Compact supports the following CPU cores:<br />
'''ARM Cortex'''<br><br />
* Cortex-A5<br />
* Cortex-A8<br />
* Cortex-A9<br />
* Cortex-R4<br />
* Cortex-R5<br />
* Cortex-M0<br />
* Cortex-M0+<br />
* Cortex-M1<br />
* Cortex-M3<br />
* Cortex-M4<br />
<br />
'''ARM (legacy cores)'''<br><br />
* ARM720T<br />
* ARM7TDMI<br />
* ARM7TDMI-S<br />
* ARM920T<br />
* ARM922T<br />
* ARM926EJ-S<br />
* ARM946E-S<br />
* ARM966E-S<br />
* ARM1136JF-S<br />
* ARM1136J-S<br />
* ARM1156T2-S<br />
* ARM1156T2F-S<br />
* ARM1176JZ-S<br />
* ARM1176JZF<br />
* ARM1176JZF-S<br />
<br />
'''Renesas RX'''<br><br />
* RX111<br />
* RX210<br />
* RX220<br />
* RX21A<br />
* RX610<br />
* RX621<br />
* RX62G<br />
* RX62N<br />
* RX62T<br />
* RX630<br />
* RX631<br />
* RX63N<br />
* RX63T<br />
<br />
'''Freescale Power PC'''<br><br />
* e200z0<br />
<br />
===== Flasher Compact download speed =====<br />
<br />
The following table lists the Flasher Compact performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! ARM7 memory download<br />
|-<br />
| Flasher Compact || 720 Kbytes/s (12MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
<br />
==== Specifications for Flasher Portable PLUS ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Windows, Linux & MacOS<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C (normal operation)<br>+5 °C ... +45 °C (battery charging)<br />
|-<br />
| Storage Temperature || -20 °C ... +45 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
| 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)<br />
|-<br />
| Charging via USB || 70 minutes (at 1A charging current)<br />
|-<br />
!colspan="100%"| Mechanical<br />
|-<br />
| Size (without cables) || 126mm x 70mm x 28mm<br />
|-<br />
| Weight (without cables) || 140g<br />
|-<br />
!colspan="100%"| Available interfaces<br />
|-<br />
| USB Host interface || USB 2.0<br />
|-<br />
| Target interface || Standard 20-pin 0.1" connector (Adapters available).<br />
|-<br />
!colspan="100%"| Target Interface, Electrical<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| Target supply voltage || Supply voltage is 4.5V, max. (depends on the current battery voltage).<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6 <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Max. JTAG speed || up to 12MHz<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
===== Supported CPU cores =====<br />
<br />
The Flasher Portable PLUS supports the following CPU cores:<br />
<br />
'''ARM Cortex'''<br><br />
* Cortex-A5<br />
* Cortex-A8<br />
* Cortex-A9<br />
* Cortex-R4<br />
* Cortex-R5<br />
* Cortex-M0<br />
* Cortex-M0+<br />
* Cortex-M1<br />
* Cortex-M3<br />
* Cortex-M4<br />
<br />
'''ARM (legacy cores)'''<br><br />
* ARM720T<br />
* ARM7TDMI<br />
* ARM7TDMI-S<br />
* ARM920T<br />
* ARM922T<br />
* ARM926EJ-S<br />
* ARM946E-S<br />
* ARM966E-S<br />
* ARM1136JF-S<br />
* ARM1136J-S<br />
* ARM1156T2-S<br />
* ARM1156T2F-S<br />
* ARM1176JZ-S<br />
* ARM1176JZF<br />
* ARM1176JZF-S<br />
<br />
'''Renesas RX'''<br><br />
* RX111<br />
* RX210<br />
* RX220<br />
* RX21A<br />
* RX610<br />
* RX621<br />
* RX62G<br />
* RX62N<br />
* RX62T<br />
* RX630<br />
* RX631<br />
* RX63N<br />
* RX63T<br />
<br />
'''Freescale Power PC'''<br><br />
* e200z0<br />
<br />
===== Supported Target interfaces =====<br />
<br />
The Flasher Portable PLUS supports the following target interfaces:<br />
* JTAG<br />
* SWD<br />
* FINE<br />
* SPD<br />
<br />
===== Flasher Portable PLUS download speed =====<br />
<br />
The following table lists the Flasher Portable PLUS performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! ARM7 memory download<br />
|-<br />
| Flasher PRO || 720 Kbytes/s (12MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
<br />
==== Specifications for Flasher Portable ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Windows, Linux & MacOS<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C<br />
|-<br />
| Storage Temperature || -20 °C ... +65 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
| Power Supply || a) USB powered, 100mA for Flasher Portable. 500 mA if target is powered by Flasher Portable<br>b) Batteries powered (3xAAA)<br />
|-<br />
!colspan="100%"| Mechanical<br />
|-<br />
| Size (without cables) || 130mm x 65mm x 25mm<br />
|-<br />
| Weight (without cables) || 120g<br />
|-<br />
!colspan="100%"| Available interfaces<br />
|-<br />
| USB Host interface || USB 2.0<br />
|-<br />
| Target interface || Standard 20-pin 0.1" connector (Adapters available).<br />
|-<br />
!colspan="100%"| Target Interface, Electrical<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| Target supply voltage || Supply voltage is 4.5V, max. (depends on the current battery voltage).<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6V <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Max. JTAG speed || up to 12MHz<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
===== Supported CPU cores =====<br />
<br />
The Flasher Portable supports the following CPU cores:<br />
<br />
'''ARM Cortex'''<br><br />
* Cortex-A5<br />
* Cortex-A8<br />
* Cortex-A9<br />
* Cortex-R4<br />
* Cortex-R5<br />
* Cortex-M0<br />
* Cortex-M0+<br />
* Cortex-M1<br />
* Cortex-M3<br />
* Cortex-M4<br />
<br />
'''ARM (legacy cores)'''<br><br />
* ARM720T<br />
* ARM7TDMI<br />
* ARM7TDMI-S<br />
* ARM920T<br />
* ARM922T<br />
* ARM926EJ-S<br />
* ARM946E-S<br />
* ARM966E-S<br />
* ARM1136JF-S<br />
* ARM1136J-S<br />
* ARM1156T2-S<br />
* ARM1156T2F-S<br />
* ARM1176JZ-S<br />
* ARM1176JZF<br />
* ARM1176JZF-S<br />
<br />
'''Renesas RX'''<br><br />
* RX111<br />
* RX210<br />
* RX220<br />
* RX21A<br />
* RX610<br />
* RX621<br />
* RX62G<br />
* RX62N<br />
* RX62T<br />
* RX630<br />
* RX631<br />
* RX63N<br />
* RX63T<br />
<br />
'''Freescale Power PC'''<br><br />
* e200z0<br />
<br />
===== Supported Target interfaces =====<br />
<br />
The Flasher Portable supports the following target interfaces:<br />
<br />
* JTAG<br />
* SWD<br />
* FINE<br />
* SPD<br />
<br />
===== Flasher Portable download speed =====<br />
<br />
The following table lists the Flasher Portable performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! ARM7 memory download<br />
|-<br />
| Flasher PRO || 720 Kbytes/s (12MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
== Working with Flasher ==<br />
<br />
This chapter describes functionality and how to use Flasher.<br />
<br />
=== Flasher Portable PLUS ===<br />
<br />
The Flasher Portable PLUS is a portable version of SEGGERs Flasher family,<br />
which has been designed to fill the need of an extremely portable, production grade,<br />
Flash programmer used for in-field firmware updates. No need to be tethered to an outlet,<br />
it is powered by an integrated Li-Ion cell (680mAh).<br />
The Flasher Portable PLUS programs flash targets in stand-alone mode or via J-Flash PC software.<br><br />
<br />
Furthermore the Flasher Portable PLUS allows the user to select between 99 data images to be programmed (since V7.90).<br />
The images can be easily selected by using the SEL button on the front of the housing.<br />
For more information about support for multiple images, please refer to [[#Multiple File Support | Multiple File Support]].<br><br />
For setup and configuration purposes, the Flasher Portable PLUS connects to a PC via USB interface,<br />
running Windows, Linux & MacOS and has a built-in standard 20-pin J-Link target connector.<br><br />
<br />
{{Note|1=Ethernet and RS232 as host interface are not available for the Flasher Portable PLUS.}}<br />
<br />
==== Housing & Buttons ====<br />
<br />
The Flasher Portable PLUS comes with a display, which is for example used to represent the status of an ongoing flash progress.<br />
Furthermore, there are three buttons which allow the user to control Flasher Portable PLUS.<br />
For a detailed description of the functions, take a look at the table below:<br />
<br />
<!-- LG xxxxxx edit image with labels for buttons? (Is this actually necessary? Buttons are basically self-explanatory...) --><br />
[[File:Flasher_Portable_PLUS.png | 500px]]<br />
<br />
{| class="seggertable"<br />
|-<br />
! Button !! Description<br />
|-<br />
| Program || Start programming process with the currently selected image.<br />
|-<br />
| Select image || Select the image to be programmed next time the Program button is pressed.<br />
|-<br />
| 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.<br />
|-<br />
|}<br />
<br />
==== Configuration ====<br />
<br />
The Flasher Portable PLUS has some configuration options the other Flashers do not have.<br />
{| class="seggertable"<br />
|-<br />
! Option !! Description !! Value range !! Default value<br />
|-<br />
| AutoPowerOffOnIdle || Specifies the time interval after which the Flasher Portable will turn off without any user action || 1 to 3600 || 60<br />
|-<br />
| ShowDatCRCAfterProgramming || Activates displaying the data file CRC after the programming in the pop up message || 0 = inactive, 1 = active || 0<br />
|-<br />
|}<br />
<br />
If the <tt>Flasher.ini</tt> does not contain a <tt>[Config]</tt> section with the configuration option, the default value is used.<br />
<br />
'''Example:'''<br><br />
This sample will show the data file CRC after the programming and the auto power of is set to five minutes (=300 seconds).<br />
<br />
<source lang="c"><br />
[CONFIG]<br />
AutoPowerOffOnIdle = "300"<br />
ShowDatCRCAfterProgramming = "1"<br />
</source><br />
<br />
=== Flasher Portable ===<br />
<br />
The Flasher Portable is a portable version of SEGGERs Flasher family, which has been designed to fill the need of an extremely portable,<br />
production grade, Flash programmer used for in-field firmware updates. No need to be tethered to an outlet,<br />
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><br />
<br />
Furthermore the Flasher Portable allows the user to select between four data images to be programmed.<br />
The images can be easily selected by using the arrow buttons on the front of the housing.<br />
For more information about support for multiple images, please refer to [[#Multiple File Support | Multiple File Support]].<br><br />
For setup and configuration purposes, the Flasher Portable connects to a PC via USB interface,<br />
running Windows, Linux & MacOS and has a built-in standard 20-pin J-Link target connector.<br><br />
<br />
{{Note|1=Ethernet and RS232 as host interface are not available for the Flasher Portable.}}<br />
<br />
==== Housing & Buttons ====<br />
<br />
The Flasher Portable comes with several leds which are for example used to represent the status of an ongoing flash progress.<br />
Furthermore, there are three buttons which allow the user to control Flasher Portable.<br />
For a detailed description of the functions, take a look at the two tables below:<br />
<br />
<!-- LG xxxxxx edit image with labels for buttons?--><br />
[[File:Flasher_Portable_Top_2.png | 500px]]<br />
<br />
{| class="seggertable"<br />
|-<br />
! LED !! Description<br />
|-<br />
| ACTIVE || GREEN. Blinks while the Flasher Portable is busy / performs operations on the target.<br />
|-<br />
| PASS/FAIL || GREEN/RED. Indicates, if the last flashing cycle was successful.<br />
<ul><br />
<li> GREEN: Flashing cycle completed successfully.</li><br />
<li> RED: Flashing cycle completed with error.</li><br />
</ul><br />
|-<br />
| 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]].<br />
|-<br />
| POWER || GREEN: Indicates if Flasher is currently powered. Blinks while Flasher Portable tries to enumerate via USB.<br />
|-<br />
| 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.<br />
|-<br />
|}<br />
<br />
{| class="seggertable"<br />
|-<br />
! Button !! Description<br />
|-<br />
| Program || Start programming process with the currently selected image.<br />
|-<br />
| Select image || Select the image to be programmed next time the <tt>Program</tt> button is pressed.<br />
|-<br />
| 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<br />
|-<br />
|}<br />
<br />
=== File system ===<br />
<br />
The Flasher supports 8.3 filenames only (8 characters filename, 3 characters file extension).<br />
Using longer filenames may result in incorrect operation. Integrated functions,<br />
like the FTP server or the terminal server, will refuse writing files with long filenames.<br />
<br />
=== Setting up the IP interface ===<br />
<br />
Setting up the IP interface<br />
Some of the Flasher models come with an additional Ethernet interface to communicate with the host system.<br />
These Flashers also come with a built-in webserver which allows some basic setup of the emulator,<br />
e.g. configuring a default gateway which allows using it even in large intranets. For more information,<br />
please refer to [[#TCP Services | TCP Services]].<br />
<br />
==== Connecting the first time ====<br />
<br />
When connecting Flasher the first time, it attempts to acquire an IP address via DHCP.<br />
The recommended way for finding out which IP address has been assigned to Flasher is, to use the J-Link Configurator.<br />
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.<br />
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''.<br />
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,<br />
please refer to ''UM08001, J-Link / J-Trace User Guide'', chapter ''Setup'', section ''Setting up the IP interface''.<br />
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]].<br />
<br />
=== Operating modes ===<br />
<br />
All Flashers except the Flasher ATE are able to boot in 3 different modes:<br />
<br />
* PC-based mode<br />
* Stand-alone mode<br />
* File access mode<br />
<br />
{{Note|1=The Flasher ATE only supports the stand-alone mode.}}<br />
<br />
'''Definition PC-based mode'''<br><br />
Flasher is connected to a PC via USB/Ethernet and controlled by a PC application (J-Flash).<br />
If there is an RS232 connection to a PC, does not have any influence on if PC-based mode is entered or not.<br />
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, ...)<br />
<br />
'''Definition Stand-alone mode'''<br><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.<br />
<br />
'''Definition file access mode'''<br><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.<br />
In this mode, Flasher enumerates as a mass storage device (like an USB Stick) at the host PC.<br />
In this mode, configuration + data files can be manually placed on the Flasher and the Flasher logfile can be read out.<br />
If you are using a self-powered Flasher such as the Flasher Portable Plus, the Flasher must be turned off before connecting it.<br />
<br />
==== PC-based mode ====<br />
If you want to use Flasher for the first time you need to install the J-Link software and documentation package.<br />
After installation, connect Flasher to the host PC via USB or Ethernet.<br />
For more information about how to install the J-Link software and documentation package please refer to [[J-Link Software and Documentation Pack]].<br />
<br />
===== Connecting the target system =====<br />
<br />
'''Power-on sequence'''<br><br />
In general, Flasher should be powered on before connecting it with the target device.<br />
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.<br />
Power-on the device after you connected Flasher to it. Flasher will boot in "PC-based mode".<br />
<br />
'''Verifying target device connection with J-Link.exe'''<br><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.<br />
Then start the J-Link command line tool <tt>JLink.exe</tt>,<br />
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.<br />
The screenshot below shows the output of <tt>JLink.exe</tt>.<br />
<br />
[[File:flasher_jlinkmode.gif]]<br />
<br />
===== LED status indicators =====<br />
<br />
In PC-based mode, there are also certain LED status codes defined:<br />
<br />
{| class="seggertable"<br />
|-<br />
! # !! Status of LED !! Meaning<br />
|-<br />
| 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.<br />
|-<br />
| 0 || GREEN<br>constant || Flasher enumeration process is complete and it is ready to be controlled by a PC application.<br />
|-<br />
|}<br />
<br />
==== Stand-alone mode ====<br />
<br />
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]].<br />
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).<br />
In the "stand-alone mode" Flasher can be used as a stand-alone flash programmer.<br><br />
<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]].}}<br />
<br />
===== LED status indicators =====<br />
Progress and result of an operation is indicated by Flasher's LEDs. The behavior is different for J-Link and stand-alone mode.<br />
For a definition of the different modes, please refer to [[#Operating modes | Operating modes]].<br />
The following table describes the behavior of the LEDs in stand-alone mode.<br />
<br />
{| class="seggertable"<br />
|-<br />
! # !! Status of LED !! Meaning<br />
|-<br />
| 0 || GREEN<br>constant || Flasher waits for a start trigger to perform an operation in stand-alone mode.<br />
|-<br />
| 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><br />
|-<br />
| 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.<br />
|-<br />
|}<br />
Older Flasher models have a different behavior.<br />
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:<br />
<br />
* 1621xxxxx (Flasher ARM V2)<br />
* 1630xxxxx (Flasher ARM V3)<br />
* 4210xxxxx (Flasher PPC V1)<br />
* 4110xxxxx (Flasher RX V1)<br />
<br />
{| class="seggertable"<br />
|-<br />
! # !! Status of LED !! Meaning<br />
|-<br />
| 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.<br />
|-<br />
| 1 || GREEN<br>constant || Connect to target and perform init sequence.<br />
|-<br />
| 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><br />
|-<br />
| 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.<br />
|-<br />
|}<br />
<br />
==== File access mode ====<br />
<br />
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".<br />
If you are using a self-powered Flasher such as the Flasher Portable Plus, the Flasher must be turned off before connecting it.<br />
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.<br />
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>.<br />
<br />
[[File:flasher_mode_msd.gif]]<br />
<br />
<tt>FLASHER.CFG</tt> contains the configuration settings for programming the target device and <tt>FLASHER.DAT</tt> contains the data to be programmed.<br />
<tt>FLASHER.LOG</tt> contains all logging information about the commands, performed in stand-alone mode.<br />
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><br />
<br />
Currently, J-Flash does not support to configure Flasher for automated serial number programming.<br><br />
<br />
If you want to configure multiple Flasher for the same target you do not have to use J-Flash all the time.<br />
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".<br />
<br />
=== Setting up Flasher for stand-alone mode ===<br />
{{Note| All Options how to set up the Flasher for stand-alone mode you can find here: [[Flasher/Download project to Flasher|Download project to the Flasher]]}}<br />
<br />
In order to set up Flasher for the stand-alone mode it needs to be configured once using the J-Flash software.<br />
For more information about J-Flash, please refer to the ''J-Flash User Guide''.<br><br />
<br />
After starting J-Flash, open the appropriate J-Flash project for the target Flasher shall be configured for, by selecting '''File''' -> '''Open Project'''.<br />
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><br />
<br />
After the appropriate project has been opened / created, the data file which shall be programmed needs to be loaded, by selecting '''File''' -> '''Open'''.<br />
After this J-Flash should look like in the screenshot below.<br />
<br />
[[File:jflash_projectfile_datafile.gif]]<br />
<br />
Before downloading the configuration (project) and program data (data file) to Flasher, the connection type (USB/IP) needs to be selected in the project.<br />
These settings are also saved on a per-project basis, so this also only needs to be setup once per J-Flash project.<br />
The connection dialog is opened by clicking '''Options''' -> '''Project settings''' -> '''General'''.<br />
<br />
[[File:jflash_connection_dialog.gif]]<br />
<br />
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.<br />
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.<br />
The user then can simply select the Flash he wants to download the configuration to.<br />
<br />
[[File:EmuSelectionDialog.gif]]<br />
<br />
In order to download the configuration and program data to the Flasher, simply select '''File''' -> '''Download config & data file to Flasher'''.<br />
<br />
[[File:jflash_download_to_emul.gif]]<br />
<br />
The J-Flash log window indicates that the download to the emulator was successful.<br />
<br />
[[File:jflash_download_to_emu_succ.gif]]<br />
<br />
From now on, Flasher can be used in stand-alone mode (without host PC interaction) for stand-alone programming.<br />
<br />
==== Preparing for stand-alone operation manually ====<br />
<br />
As an alternative, J-Flash can also be used to save config and data file to a hard drive.<br><br />
<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,<br />
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.<br />
<br />
'''Creating config and data files'''<br><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><br />
<br />
For some devices, additional files (*.PEX) are needed.<br />
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.<br />
<br />
'''About *.PEX files'''<br><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,<br />
the following needs to be taken care of:<br><br />
<br />
For some devices, special connect, reset etc. sequences are necessary which are stored in so-called *.PEX files on the Flasher.<br><br />
<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><br />
<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><br />
The *.PEX files need to be placed in a subdirectory with the same name as the corresponding *.cfg file.<br />
J-Flash creates a directory with the correct name automatically when a config file is created.<br><br />
<br />
Example:<br><br />
<br />
MyConf0 is a project for a device that requires a *.PEX file for connect.<br><br />
MyConf1 is a project for a device that requires no *.PEX file at all.<br />
<br />
[[File:PEX_File_Flasher.png]]<br />
<br />
=== Universal Flash Loader mode ===<br />
<br />
As an alternative to the stand-alone mode, configured via J-Flash, there is the Universal Flash Loader mode.<br />
While the normal stand-alone mode relies on using the debug interface of the device, the Universal Flash Loader<br />
mode uses device or vendor specific programming interfaces and protocols and therefore it is independent of the<br />
CPU core.<br><br />
<br />
The Universal Flash Loader is available for the following Flasher models:<br />
* Flasher PRO<br />
* Flasher Compact<br />
* Flasher Portable PLUS<br />
<br />
For some of the supported devices, SEGGER offers specific adapters.<br />
<br />
==== Preparing manually ====<br />
<br />
The Universal Flash Loader uses an configuration file (*.UNI), a device specific flash programming algorithm (*.PEX) and a data file (*.DAT).<br />
<br />
===== Configuration =====<br />
<br />
The configuration file basically is split into three parts.<br />
The first part, the section [DEVICE], controls the generic behavior of the Universal Flash Loader.<br />
It specifies which protocol driver and data file to use. It allows enabling and configuring target power<br />
and it defines which actions to perform.<br />
The second part consists of one or more [BANKx] sections, which contain information about the memories.<br />
The third part, the section [CONFIG], includes configuration settings for the protocol driver.<br><br />
<br />
An .UNI file might look as follows:<br><br />
<br />
<source lang="c"><br />
[OPTIONS]<br />
TargetPower = "0"<br />
ChipErase = "0"<br />
<br />
[TASKS]<br />
CheckBlank = "1"<br />
Erase = "1"<br />
Program = "1"<br />
Verify = "1"<br />
Secure = "1"<br />
<br />
[DEVICE]<br />
Algo = "RL78.PEX"<br />
Data = "ALL_6k.dat"<br />
<br />
[BANK0]<br />
; Code Flash<br />
Base = "0x00000000"<br />
Size = "0x00004000"<br />
Sect = "0x00000400"<br />
<br />
[BANK1]<br />
; Data Flash<br />
Base = "0x000F1000"<br />
Size = "0x00000800"<br />
Sect = "0x00000400"<br />
<br />
[CONFIG]<br />
BaudRate = "1000000"<br />
ClearConfigOnConnect = "0x00"<br />
Security = "0xFF"<br />
ShieldStart = "0x0000"<br />
ShieldEnd = "0x000F"<br />
</source><br />
<br />
'''[OPTIONS]'''<br><br />
'''TargetPower'''<br><br />
If set to a value >0, power is applied to the target.<br />
The value defines the delay (in ms) after enabling the target power supply and before starting to communicate with the target.<br />
<br />
'''ChipErase'''<br><br />
If set to 1, the chip erase function is called for erasing the chip.<br><br />
{{Note|1=Do not enable this setting if the flash programming algorithm does not support chip erase.}}<br />
<br />
'''[TASKS]'''<br><br />
'''CheckBlank'''<br><br />
Defines if a blank check should be performed before erasing a sector.<br />
<br />
'''Erase'''<br><br />
Defines if the sector should be erased before programming.<br />
<br />
'''Program'''<br><br />
Defines if the sector should be programmed.<br />
<br />
'''Verify'''<br><br />
Defines if the sector should be verified after programming.<br />
<br />
'''Secure'''<br><br />
Defines if the device should be secured or protected against read-out after verifying.<br />
<br />
'''[DEVICE]'''<br><br />
'''Algo'''<br><br />
File name of the flash programming algorithm. This file is provided by SEGGER and will typically support a series of devices.<br />
<br />
'''Data'''<br><br />
File name of the data file to program. The Flasher only supports the Flasher .dat file format.<br />
Flasher .dat files can be generated by J-Flash or Universal Flash Loader and offer high performance together with high flexibility.<br />
<br />
'''[BANKx]'''<br><br />
x blocks with configuration data for the flash banks. All three parameters (Base, Size and Sect) are mandatory.<br />
<br />
'''Base'''<br><br />
Base address of the flash bank.<br />
<br />
'''Size'''<br><br />
Total size of the flash bank.<br />
<br />
'''Sect'''<br><br />
Sector size of the flash bank.<br />
<br />
'''[CONFIG]'''<br><br />
This section includes specific configuration data for the flash programming algorithm.<br><br />
There are no general parameters.<br />
<br />
{{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. }}<br />
<br />
==== Preparing using the PC utility ====<br />
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.<br />
<br />
[[File:Universal Flash Loader.png]]<br />
<br />
The Universal Flash Loader Configurator comes with a large list of devices and flash programming algorithms. If you are going to<br />
use a device from one of the supported families which currently is not available in the utility, feel free to contact the support.<br />
<br />
=== Multiple File Support ===<br />
<br />
It is also possible to have multiple data files and config files on Flasher, to make Flasher more easy to use in production environment.<br />
To choose the correct configuration file and data file pair, a <tt>FLASHER.INI</tt> file is used.<br />
This init file contains a <tt>[FILES]</tt> section which describes which configuration file and which data file should be used for programming.<br />
A sample content of a FLASHER.INI file is shown below:<br><br />
<br />
<source><br />
[FILES]<br />
DataFile = "Flasher1.dat"<br />
ConfigFile = "Flasher1.cfg"<br />
</source><br />
<br />
Using this method all configuration files and data files which are used in the production only have to be downloaded once.<br />
From there on a configuration file / data file pair can be switched by simply replacing the <tt>FLASHER.INI</tt> by a new one,<br />
which contains the new descriptions for the configuration file and data file. The <tt>FLASHER.INI</tt> can be replaced in two ways:<br />
<ol><br />
<li>Boot Flasher in file access mode in order to replace the <tt>FLASHER.INI</tt></li><br />
<li><br />
If Flasher is already integrated into the production line, runs in stand-alone mode and can not be booted in other mode:<br />
Use the file I/O commands provided by the ASCII interface of Flasher, to replace the <tt>FLASHER.INI</tt>.<br />
For more information about the file I/O commands, please refer to [[#File I/O commands | File I/O commands]].<br />
</li><br />
</ol><br />
{{Note|1=Flasher supports 8.3 filenames only (8 characters filename, 3 characters file extension). Using longer filenames may result in incorrect operation.}}<br />
<br />
==== Flasher Portable specifics ====<br />
<br />
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><br />
<br />
Which config / data file pair is used for which image selection position is determined by the contents of the FLASHER.INI.<br />
For this, the FLASHER.INI contents in the <tt>[FILES]</tt> section have been extended.<br />
The sample below shows how to enable the user to select between four different images on the Flasher portable via the select / arrow button:<br />
<br />
<source><br />
[FILES]<br />
DataFile = "First.dat"<br />
ConfigFile = "First.cfg"<br />
DataFile1 = "Second.dat"<br />
ConfigFile1 = "Second.cfg"<br />
DataFile2 = "Third.dat"<br />
ConfigFile2 = "Third.cfg"<br />
DataFile3 = "Fourth.dat"<br />
ConfigFile3 = "Fourth.cfg"<br />
</source><br />
<br />
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.<br />
From there on, switching between the files can be done by simply using the selection button of Flasher Portable.<br />
<br />
===== Example =====<br />
<br />
1 Target, 2 Datafiles (e.g. boot loader und application) --> same configuration file (*.CFG) but different data files (*.DAT) should be used.<br><br />
<br />
* Open pre-configured J-Flash project<br />
* File -> Save Flasher config file ... (DEFAULT.CFG)<br />
* Open data file 1 (boot loader)<br />
* File -> Save Flasher data file ... (BOOT.DAT)<br />
* Open data file 2 (application)<br />
* File -> Save Flasher data file ... (APP.DAT)<br />
* Create the a FLASHER.INI file (content see below)<br />
* Connect the Flasher in file access mode to the PC<br />
* Copy DEFAULT.CFG, BOOT.DAT, APP.DAT and FLASHER.INI on the Flasher<br />
<br />
FLASHER.INI content:<br><br />
<br />
<source><br />
[FILES]<br />
DataFile = "BOOT.DAT"<br />
ConfigFile = "DEFAULT.CFG"<br />
DataFile1 = "APP.DAT"<br />
ConfigFile1 = "DEFAULT.CFG"<br />
</source><br />
<br />
==== Flasher Portable PLUS specifics ====<br />
<br />
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><br />
<br />
Which config / data file pair is used for which image selection position is determined by the contents of the FLASHER.INI.<br />
For this, the FLASHER.INI may contain several <tt>[BATCH]</tt> sections.<br />
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:<br />
<br />
<source><br />
[BATCH]<br />
DataFile = "First.dat"<br />
ConfigFile = "First.cfg"<br />
[BATCH1]<br />
DataFile = "Second.dat"<br />
ConfigFile = "Second.cfg"<br />
[BATCH2]<br />
DataFile = "Third.dat"<br />
ConfigFile = "Third.cfg"<br />
[BATCH7]<br />
DataFile = "Proj_8.dat"<br />
ConfigFile = "Proj_8.cfg"<br />
[BATCH15]<br />
DataFile = "Proj_16.dat"<br />
ConfigFile = "Proj_16.cfg"<br />
</source><br />
<br />
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.<br />
From there on, switching between the files can be done by simply using the selection button of Flasher Portable PLUS.<br />
<br />
Please also consider the chapter [[#Batch Programming in stand-alone mode | Batch Programming in stand-alone mode]].<br />
<br />
{{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.}}<br />
{{Note|1=You may have gaps in the list. The missing entries will be skipped when selecting the next configuration.}}<br />
{{Note|1=The <tt>[Files]</tt> section is supported by the Flasher Portable PLUS, too. But the number of configuration is limited to four.}}<br />
<br />
===== Example =====<br />
<br />
1 Target, 2 Datafiles (e.g. boot loader und application) --> same configuration file (*.CFG) but different data files (*.DAT) should be used.<br><br />
<br />
* Open pre-configured J-Flash project<br />
* File -> Save Flasher config file ... (DEFAULT.CFG)<br />
* Open data file 1 (boot loader)<br />
* File -> Save Flasher data file ... (BOOT.DAT)<br />
* Open data file 2 (application)<br />
* File -> Save Flasher data file ... (APP.DAT)<br />
* Create the a FLASHER.INI file (content see below)<br />
* Connect the Flasher in file access mode to the PC<br />
* Copy DEFAULT.CFG, BOOT.DAT, APP.DAT and FLASHER.INI on the Flasher<br />
<br />
FLASHER.INI content:<br><br />
<br />
<source><br />
[BATCH]<br />
DataFile = "BOOT.DAT"<br />
ConfigFile = "DEFAULT.CFG"<br />
DisplayName = "Bootloader"<br />
[BATCH1]<br />
DataFile = "APP.DAT"<br />
ConfigFile = "DEFAULT.CFG"<br />
DisplayName = "Application"<br />
[BATCH2]<br />
DataFile = "BOOT.DAT"<br />
ConfigFile = "DEFAULT.CFG"<br />
DataFile1 = "APP.DAT"<br />
ConfigFile1 = "DEFAULT.CFG"<br />
DisplayName = "BL and App"<br />
</source><br />
<br />
=== Custom labels ===<br />
<br />
Flasher supports to assign custom labels to configurations. This allows to specify easy to remember names for configurations that are stored on the Flasher.<br />
<br />
==== Hardware and software requirements ====<br />
This feature is supported by the following models:<br />
* Flasher Portable PLUS<br />
<br />
This feature is supported since V6.30e of the software package and firmware<br />
<br />
==== Assigning labels ====<br />
The configuration and data file pairs are specified in the <tt>FLASHER.INI</tt> file:<br />
<source><br />
[FILES]<br />
DataFile = "IMAGE0.dat"<br />
ConfigFile = "IMAGE0.cfg"<br />
DataFile1 = "IMAGE1.dat"<br />
ConfigFile1 = "IMAGE1.cfg"<br />
</source><br />
<br />
By default, Flasher will show the names of the configuration and data file:<br />
[[File:FW1_smartwatch_nolabel.png]]<br />
[[File:FW2_smart_meter_nolabel.png]]<br />
<br />
By adding <tt>DisplayName</tt>, <tt>DisplayName1</tt>, ... keys to the <tt>FLASHER.INI</tt>, a custom label can be shown instead:<br />
<source><br />
[FILES]<br />
DisplayName = "FW smartwatch"<br />
DataFile = "IMAGE0.dat"<br />
ConfigFile = "IMAGE0.cfg"<br />
DisplayName1 = "FW smart meter"<br />
DataFile1 = "IMAGE1.dat"<br />
ConfigFile1 = "IMAGE1.cfg"<br />
</source><br />
<br />
The images will now be shown as follows:<br />
[[File:FW1_smartwatch_label.png]]<br />
[[File:FW2_smart_meter_label.png]]<br />
<br />
==== Considerations ====<br />
* 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.<br />
<br />
=== Programming multiple targets ===<br />
<br />
It is possible to program multiple targets which are located in a JTAG chain.<br />
The targets will be programmed each with a configuration and a data file.<br><br />
The configuration for the desired target must be selected before it can be programmed,<br />
this can be done with the <tt>#SELECT</tt> command.<br />
For more information how to use the <tt>#SELECT</tt> command please refer to the [[#ASCII_command_interface|ASCII command interface]].<br />
<br />
'''Example'''<br><br />
Three devices should be programmed.<br><br />
<br />
JTAG Chain: ''TDI'' --> ''Device2'' --> ''Device1'' --> ''Device0'' --> ''TDO''<br><br />
<br />
Three configurations would be stored on the flasher:<br><br />
<br />
Config 0: Configured to program Device0 (DEVICE0.CFG, DEVICE0.DAT)<br><br />
Config 1: Configured to program Device1 (DEVICE1.CFG, DEVICE1.DAT)<br><br />
Config 2: Configured to program Device2 (DEVICE2.CFG, DEVICE2.DAT)<br><br />
<br />
Selection and programming of the target will be done via the ASCII interface:<br><br />
<br />
<source><br />
#SELECT DEVICE0<br />
#AUTO<br />
#SELECT DEVICE1<br />
#AUTO<br />
#SELECT DEVICE2<br />
#AUTO<br />
</source><br />
<br />
==== Programming multiple targets with J-Flash ====<br />
<br />
Programming multiple targets can also be done via J-Flash using the command line interface.<br />
For this each target must be handled with its own project file.<br />
<br />
'''Example'''<br><br />
<br />
<source><br />
JFlash.exe -openproj"Device0.jflash" -open"Device0.hex" -auto -exit<br />
JFlash.exe -openproj"Device1.jflash" -open"Device1.hex" -auto -exit<br />
JFlash.exe -openproj"Device2.jflash" -open"Device2.hex" -auto -exit<br />
</source><br />
<br />
=== Batch Programming in stand-alone mode ===<br />
<br />
Batch programming allows to execute different stand-alone mode jobs in batch to be executed in immediate succession, without any user interaction in between.<br />
This can be used for example to program multiple targets in a JTAG-Chain or multiple data files to a target.<br><br />
A batch may contains an unlimited number of configurations which consist of a data file (*.DAT) and config file (*.CFG).<br />
For further information regarding config and data files, please refer to [[#Preparing for stand-alone operation manually | Preparing for stand-alone operation manually]].<br><br />
In order to specify the batch jobs, a FLASHER.INI file is used.<br />
This init file contains a [BATCH] section which describes which configuration pairs (*.DAT and *.CFG file) should be used for each batch job.<br />
A sample content of a FLASHER.INI file is shown below:<br><br />
<br />
<source><br />
[BATCH]<br />
DataFile = "Flasher0.dat"<br />
ConfigFile = "Flasher0.cfg"<br />
DataFile1 = "Flasher1.dat"<br />
ConfigFile1 = "Flasher1.cfg"<br />
</source><br />
<br />
[[File:Batch_Jobs.bmp]]<br />
<br />
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.<br />
<br />
<br />
[[File:Batch_Programming.bmp]]<br />
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<br />
currently executed action.<br />
<br />
<br />
[[File:Batch_Result.bmp]]<br />
The result of the programming will be shown on the screen after finishing all jobs.<br />
<br />
<br />
Creating / Replacing of the FLASHER.INI file can done in two ways:<br><br />
<ol><br />
<li>Boot Flasher in file access mode in order to replace the FLASHER.INI</li><br />
<li><br />
If Flasher is already integrated into the production line, runs in stand-alone mode and can not be booted in other mode:<br />
Use the file I/O commands provided by the ASCII interface of Flasher, to replace the FLASHER.INI .<br />
For more information about the file I/O commands, please refer to [[#File I/O commands | File I/O commands]].<br />
In case of an error occurred during execution, the Flasher terminates the entire batch processing.<br />
</li><br />
</ol><br />
{{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.}}<br />
{{Note|1=Flasher supports 8.3 filenames only (8 characters filename, 3 characters file extension). Using longer filenames may result in incorrect operation.}}<br />
<br />
==== Flasher Portable specifics ====<br />
<br />
Flasher Portable allows to choose between four different batches during runtime by using the select/arrow button on the front of Flasher Portable.<br />
Which batch configuration is used for which image selection position is specified in the FLASHER.INI.<br />
For this, the FLASHER.INI contents in the [BATCH] section have been extended.<br />
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><br />
<br />
<source><br />
[BATCH]<br />
DataFile = "Flasher0.dat"<br />
ConfigFile = "Flasher0.cfg"<br />
DataFile1 = "Flasher1.dat"<br />
ConfigFile1 = "Flasher1.cfg"<br />
DataFile2 = "Flasher2.dat"<br />
ConfigFile2 = "Flasher2.cfg"<br />
[BATCH1]<br />
DataFile = "TEST.dat"<br />
ConfigFile = "Test.cfg"<br />
[BATCH2]<br />
DataFile = "VALIDATE.dat"<br />
ConfigFile = "Flasher0.cfg"<br />
</source><br />
<br />
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.<br />
From there on, switching between the batches can be done by simply using the selection button of Flasher Portable.<br />
<br />
<br />
<br />
==== Examples ====<br />
<br />
'''Example 1:''' Programming two Data files to the same target<br><br />
<br />
* Open your J-Flash project.<br />
* Use File -> Save Flasher config file... to save the .CFG file (in this example: STM32F4.CFG).<br />
* Select the first binary and use File -> Save Flasher Data file... to save the first .DAT file (in this example: DATA0.DAT).<br />
* Select the second binary and use File -> Save Flasher Data file... to save the second data file .DAT file (in this example: DATA1.DAT).<br />
* Copy the Files to the Flasher e.g. by using file access mode.<br />
* Create a FLASHER.INI file in the root directory of the Flasher.<br />
* Exemplary content of FLASHER.INI:<br><br />
<source><br />
[BATCH]<br />
DataFile = "DATA0.dat"<br />
ConfigFile = "emPower.cfg"<br />
DataFile1 = "DATA1.dat"<br />
ConfigFile1 = "emPower.cfg"<br />
</source><br />
<br />
<br />
'''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><br />
Example scenario: 2 Devices in a JTAG chain, a STM32F1 and a STM32F4. <br><br />
<br />
* Follow the same as described before and additionally:<br />
* Create one project file per target (and create a .CFG file of each one).<br />
* Make sure each project file is configured correctly, especially the JTAG-Chain position (See UM8003 "J-Flash" for more detailed info).<br />
* Exemplary content of FLASHER.INI:<br><br />
<source><br />
[BATCH]<br />
DataFile = "F1DATA.dat"<br />
ConfigFile = "STM32F1.cfg"<br />
DataFile1 = "F4DATA0.dat"<br />
ConfigFile1 = "STM32F4.cfg"<br />
DataFile2 = "F4DATA1.dat"<br />
ConfigFile2 = "STM32F4.cfg"<br />
</source><br />
<br />
'''Example 3:''' Using multiple Batch sections with Flasher Portable.<br><br />
Example scenario: 2 Devices in a JTAG chain, a STM32F1 and a STM32F4.<br><br />
Selection 1 will program the STM32F1 target.<br><br />
Selection 2 will program the STM32F4 target using "F4DATA0.dat".<br><br />
Selection 3 will program the STM32F4 target using "F4DATA1.dat".<br><br />
Selection 4 will execute 1, 2 and 3 in sequence.<br><br />
* Exemplary content of FLASHER.INI:<br><br />
<source><br />
[BATCH]<br />
DataFile = "F1DATA.dat"<br />
ConfigFile = "STM32F1.cfg"<br />
[BATCH1]<br />
DataFile = "F4DATA0.dat"<br />
ConfigFile = "STM32F4.cfg"<br />
[BATCH2]<br />
DataFile = "F4DATA1.dat"<br />
ConfigFile = "STM32F4.cfg"<br />
[BATCH3]<br />
DataFile = "F1DATA.dat"<br />
ConfigFile = "STM32F1.cfg"<br />
DataFile1 = "F4DATA0.dat"<br />
ConfigFile1 = "STM32F4.cfg"<br />
DataFile2 = "F4DATA1.dat"<br />
ConfigFile2 = "STM32F4.cfg"<br />
</source><br />
<br />
=== Serial number programming ===<br />
<br />
Flasher supports programming of serial numbers. In order to use the serial number programming feature,<br />
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><br />
<br />
In general, Flasher supports two ways of programming a serial number into the target:<br />
<br />
#<br />
#* Programming continuous serial numbers.<br />
#* The serial number is 1-4 bytes in size.<br />
#* The start serial number, increment, serial number size, and address are configured in the J-Flash project.<br />
#<br />
#* Programming custom serial numbers from a serial number list file.<br />
#* The start line within the serial number list file to get the next serial number bytes, line increment, serial number size, and address is configured in the J-Flash project.<br />
#* The serial number list file needs to be specified and created by the user.<br />
<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.}}<br />
<br />
==== Serial number settings ====<br />
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.<br />
This is done by enabling the '''Program serial number''' option as shown in the screenshot and table below:<br />
<br />
[[File:UM08039_SN_Sample_JFlashSettings.png]]<br />
<br />
{| class="seggertable"<br />
|-<br />
!| Setting || Meaning<br />
|-<br />
| <tt>Address</tt> || The address the serial number should be programmed at.<br />
|-<br />
| <tt>Length</tt> ||<br />
The length of the serial number (in bytes) that 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 8 is selected as length, the serial number and its complement are programmed at the given address.<br />
* In case a serial number list file is given, the 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 '''Length''', the remaining bytes are filled with 0s. No complements etc. are added to the serial number.<br />
|-<br />
| <tt>Next SN</tt> ||<br />
* In case no serial number list file is given, '''Next SN''' is the next serial number which should be programmed. The serial number is always stored in flash memory in little-endian format.<br />
* In case a serial number list file is given, '''Next SN''' describes the line of the serial number list file where to read the next serial number bytes from. The Flasher starts counting at line 0, so in order to start serial number programming with the first line of the <tt>SNList.txt</tt>, '''Next SN''' needs to be set to 0.<br />
|-<br />
| <tt>Increment</tt> || Specifies by how much '''Next SN''' is incremented.<br />
|}<br />
<br />
=== Serial number file ===<br />
When selecting '''File -> Download serial number file to Flasher''', J-Flash will create a serial number file named as <tt><JFlashProjectName>_Serial.txt</tt>.<br />
This file is downloaded as <tt>Serial.txt</tt> on the Flasher.<br />
The file is generated based on the serial number settings in the J-Flash project and will contain the value defined by the '''Next SN''' option.<br />
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.<br />
<br />
==== Serial number list file ====<br />
<br />
In order to program custom serial numbers which can not be covered by the standard serial number scheme provided by J-Flash<br />
(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.<br />
<br />
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.<br />
This file is downloaded as <tt>SNList.txt</tt> on the 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<br />
* Each byte of the serial number is described by two hexadecimal digits.<br />
<br />
'''Example'''<br><br />
A 8-byte serial number should be programmed at address 0x08000000.<br><br />
<br />
It should be programmed as follows in the memory:<br><br />
<br />
<tt>0x08000000: 0x01 0x02 0x03 0x04 0x55 0x66 0x77 0x88</tt><br><br />
<br />
The serial number list file should look as follows:<br><br />
<br />
<tt>0102030455667788</tt><br />
<br />
[[File:SN_SNList.gif]]<br />
<br />
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><br />
<br />
Which line Flasher will read at the next programming cycle, is configured via the <tt>Next SN</tt> option in J-Flash.<br />
For more information, please refer to [[#Serial number settings | Serial number settings]].<br />
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><br />
<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.}}<br />
{{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.}}<br />
<br />
==== Programming process ====<br />
<br />
Flasher will increment the serial number in SERIAL.TXT by the value defined in <tt>Increment</tt>, after each successful programming cycle.<br><br />
<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><br />
<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.<br />
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.}}<br />
<br />
==== Downloading serial number files to Flasher ====<br />
<br />
Downloading the serial number files needs to be done explicitly by selecting '''File-> Download serial number file to Flasher'''.<br />
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.<br />
<br />
==== Sample setup ====<br />
<br />
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.<br />
<br />
'''Defining serial number address, length and start value'''<br><br />
In the J-Flash project the following needs to be defined:<br><br />
* <tt>Address</tt> is 0x08001000<br />
* <tt>Next SN</tt> is 1234567<br />
* <tt>Increment</tt> is 1<br />
* <tt>Len</tt> is 4 (bytes)<br />
<br />
[[File:SN_Sample_JFlashSettings.gif]]<br />
<br />
'''Downloading configuration, data and serial number to Flasher.'''<br><br />
After setting up the rest of the configuration (Target interface etc.) and selecting an appropriate data file, the configuration,<br />
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><br />
<br />
[[File:SN_Sample_DownloadToFlasher.gif]]<br />
<br />
After downloading the serial number to Flasher, J-Flash also created the <tt><JFlashProjectName>_Serial.txt</tt>.<br />
<br />
[[File:SN_Sample_SerialFileCreated.gif]]<br />
<br />
Now Flasher is prepared to program the 8-byte serial number.<br />
<br />
=== Patch file support ===<br />
<br />
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.<br />
Before starting programming process in stand-alone mode, Flasher will look for a file named <tt>Patches.txt</tt> being present on the Flasher.<br />
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><br />
<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.<br />
<br />
'''Syntax'''<br><br />
<!-- LG xxxxxxxxx '==' is shown as '=', so instead use '= ='--><br />
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><br />
<br />
<tt><NumPatches>,<Addr>,<NumBytes>:<nowiki><Data></nowiki>,<Addr>,<NumBytes>:<nowiki><Data></nowiki>,<Addr>,<NumBytes>:<nowiki><Data></nowiki>,<Addr>,<NumBytes>:<nowiki><Data></nowiki>\r\n</tt><br><br />
<br />
Find below a table which describes each parameter.<br><br />
{| class="seggertable"<br />
|-<br />
! Parameter !! Description<br />
|-<br />
| <tt><NumPatches></tt> || Describes the number of patches in this patch line. Max. value is 4.<br />
|-<br />
| <tt><Addr></tt> || Describes the address to be patched. Value is expected in hex.<br />
|-<br />
| <tt><NumBytes></tt> || Number of bytes for the current patch. Max. value is 20h (32 in decimal). Value is expected in hex.<br />
|-<br />
| <tt><nowiki><Data></nowiki></tt> || Describes the data to be patched. <nowiki><Data></nowiki> is always expected as 2 hexadecimal characters per byte.<br />
|-<br />
|}<br />
<br />
{{Note|1=All values are expected in hexadecimal format (hex).<br><br />
<nowiki><Data></nowiki> section is always preceded by ":", not ",".}}<br />
<br />
'''Example'''<br><br />
Below is an example patch.<br><br />
<br />
<source><br />
1,18,4:01020304\r\n<br />
</source><br />
<br />
Patching the following data:<br />
<br />
[[File:data_before.png]]<br />
<br />
with the example patch will result in the following data:<br />
<br />
[[File:data_afterwards.png]]<br />
<br />
Please note that as mentioned earlier patching undefined memory locations will be ignored.<br><br />
Applying the example patch to the following data:<br />
<br />
[[File:undefined_mem_before.png]]<br />
<br />
Causes no data to be patched, as can be seen in the following image:<br />
<br />
[[File:undefined_mem_no_token.png]]<br />
<br />
Therefore it is necessary to first write placeholder data to the memory locations which are supposed to be patched.<br><br />
An example for such a placeholder can be seen here:<br />
<br />
[[File:undefined_mem_token.png]]<br />
<br />
Please note that the actual data inside the placeholder does not matter to the Flasher,<br />
because it is overwritten during patching.<br><br />
Applying the example patch will now work as expected:<br />
<br />
[[File:undefined_mem_after.png]]<br />
<br />
'''Single patch via RS232'''<br><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><br />
<br />
Send the <tt>#AUTO PATCH <NumPatches>,<Addr>,<NumBytes>:<nowiki><Data></nowiki></tt><br><br />
<br />
command via Flasher ASCII interface. The parameters have the same function as described in the table above.<br />
<br />
==== Newline encoding ====<br />
<br />
In general, for all patch files, init files etc. Flasher supports both newline encodings:<br><br />
<br />
* Windows: \r\n<br />
* Unix/Mac: \n<br />
<br />
All parser functionality etc. are written to be independent from the host operating system.<br />
<br />
=== Limiting the number of programming cycles ===<br />
<br />
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.<br />
To make use of this feature, a file called <tt>Cntdown.txt</tt> needs to be placed on the Flasher.<br />
This file simply contains a decimal number (32-bit unsigned integer) that describes how many programming cycles can be performed with the current setup.<br />
<br />
[[File:CntdownTxtContent.jpg]]<br />
<br />
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><br />
<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>.}}<br />
<br />
==== Changed fail/error LED indicator behavior ====<br />
<br />
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><br />
<br />
* The red error/fail LED will lit for 1 second<br />
* After this, it will blink/toggle x times @ 5 Hz, indicating the number of programming cycles left. (blinking 5 times for 5 cycles left, ...)<br />
<br />
==== Required Flasher hardware version for Cntdown.txt support ====<br />
<br />
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><br />
<br />
* 1621xxxxx (Flasher ARM V2)<br />
* 1630xxxxx (Flasher ARM V3)<br />
* 4210xxxxx (Flasher PPC V1)<br />
* 4110xxxxx (Flasher RX V1)<br />
<br />
All other models / hardware versions support limiting of programming cycles.<br />
<br />
=== Authorized flashing ===<br />
<br />
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.<br />
without the possibility to read out the Flasher contents via file access mode, FILE I/O functionality (J-Link Commander) or RS232 commands.<br />
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.<br />
<br />
==== Creating / Adding the secure area ====<br />
<br />
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.<br />
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.<br />
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><br />
<br />
[[File:CreateSecArea.jpg]]<br />
<br />
The following secure area related commands are available in J-Link Commander:<br><br />
<br />
* securearea create<br />
* securearea remove<br />
<br />
{{Note|1=When creating or removing the <tt>secure area</tt>, all configuration and data files being stored on the Flasher, are lost.<br />
Please make sure that they are not needed anymore, before adding / removing the security area.}}<br />
<br />
==== Moving files to the secure area ====<br />
<br />
Before moving configuration + data to the <tt>secure area</tt>, proper functionality of the setup should be tested in stand-alone mode.<br />
Once the setup is working as expected, do the following, to move the configuration + data into the <tt>secure area</tt>:<br><br />
<br />
* Start Flasher in file access mode (For more info, please refer to: [[#file access mode | file access mode]])<br />
<br />
[[File:FilesBeforeSecure.png]]<br />
<br />
* Create a folder "<tt>_SECURE</tt>"<br />
* Move all files that shall be moved to the <tt>secure area</tt>, into this folder<br />
<br />
[[File:FilesAfterSecure.png]]<br />
<br />
* 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.<br />
* Now Flasher can be used in stand-alone mode, as normal, but the files cannot be read back by the user / operator.<br />
<br />
==== Considerations to be taken when using the secure area ====<br />
<br />
When using the <tt>secure area</tt>, some things need to be considered:<br><br />
<br />
* All features like multiple file support, patch file support etc. can also be used when operating from the <tt>secure area</tt>.<br />
* 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>.<br />
* 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>.<br />
* 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.<br />
<br />
==== Required Flasher hardware version ====<br />
<br />
Older Flasher models do not support authorized flashing. The Flashers with the following serial number ranges do not support authorized flashing:<br><br />
<br />
* 1621xxxxx (Flasher ARM V2)<br />
* 1630xxxxx (Flasher ARM V3)<br />
* 4210xxxxx (Flasher PPC V1)<br />
* 4110xxxxx (Flasher RX V1)<br />
<br />
All other models / hardware versions support authorized flashing.<br />
<br />
=== Target interfaces ===<br />
<br />
The table below shows the supported target interfaces of the different Flasher models.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! Supported interfaces<br />
|-<br />
| Flasher PRO || JTAG, SWD<br />
|-<br />
| Flasher Compact || JTAG, SWD<br />
|-<br />
| Flasher ARM || JTAG, SWD<br />
|-<br />
| Flasher RX || JTAG<br />
|-<br />
| Flasher PPC || JTAG<br />
|-<br />
|}<br />
<br />
For more information about the target interfaces itself, please refer to:<br><br />
<br />
* ''UM08001, chapter "Working with J-Link and J-Trace", section "JTAG interface"''<br />
* ''UM08001, chapter "Working with J-Link and J-Trace", section "SWD interface"''<br />
<br />
=== Supported architectures ===<br />
<br />
Flasher supports programming of the internal flash of a large number of different microcontrollers.<br />
The number of supported devices is steadily growing. You can always find the latest list of supported devices on our website:<br><br />
<br />
''http://www.segger.com/supported-devices.html''<br />
<br />
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.<br />
Also the existence of the device may have confidential status, so it might not be mentioned as being supported in public releases yet.<br />
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.<br />
<br />
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).<br />
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.<br />
<br />
If a device is not supported, you can always contact us. We will be happy to provide you with an offer.<br />
<br />
==== External flashes ====<br />
<br />
In general our Flashers support programming of external flashes listed below:<br>(Can differ between Flasher models and hardware versions)<br />
<br />
* parallel NOR flash<br />
* SPI / QSPI flash<br>(see: ''[[SPI_support_by_Flasher_models]]'')<br />
* NAND flash<br />
* I<sup>2</sup>C EEPROM/Flash<br />
* FRAM<br />
<br />
If the parallel NOR flash device which is used is not CFI-compliant you have to select the flash device in J-Flash explicitly,<br />
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''.<br />
<br />
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.<br />
The J-Flash software comes with sample projects for ''Open Flashloader''.<br />
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''<br />
{{Note|1=Complete Information about ''Open Flashloaders'' can be found in our Wiki:<br>''[[Open_Flashloader]]''}}<br />
<br />
==== Cores ====<br />
<br />
===== Flasher ARM =====<br />
<br />
Flasher ARM supports and has been tested with the following cores, but should work with any ARM7/9, Cortex-M0/M1/M3/M4 core.<br />
If you experience problems with a particular core, do not hesitate to contact Segger.<br><br />
<br />
* ARM7TDMI (Rev 1)<br />
* ARM7TDMI (Rev 3)<br />
* ARM7TDMI-S (Rev 4)<br />
* ARM920T<br />
* ARM922T<br />
* ARM926EJ-S<br />
* ARM946E-S<br />
* ARM966E-S<br />
* Cortex-M0<br />
* Cortex-M1<br />
* Cortex-M3<br />
* Cortex-M4<br />
<br />
===== Flasher RX =====<br />
<br />
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><br />
<br />
* RX610<br />
* RX621<br />
* RX62N<br />
* RX62T<br />
<br />
===== Flasher PPC =====<br />
<br />
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.<br />
<br />
* e200z0<br />
<br />
===== Flasher PRO/Compact/Portable PLUS =====<br />
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/''.<br />
<br />
=== Programming multiple targets in parallel ===<br />
<br />
To program multiple targets in parallel there are the following possibilities:<br />
* Using a Flasher gang, or<br />
* Using multiple Flashers, each connecting to one CPU.<br />
<br />
Devices for gang programming are:<br />
* Flasher Hub-12 in conjunction with up to 12 Flasher (Compact). Please refer to [[UM08043_Flasher_Hub-12|Flasher Hub-12 user manual (UM08043_Flasher_Hub-12)]].<br />
* Flasher ATE; suitable for programming up to 10 targets in parallel. Please refer to [https://www.segger.com/downloads/flasher/UM08035 Flasher ATE user manual (UM08035_FlasherATE.pdf)].<br />
When using multiple flashers, this can be done with the J-Flash production programming software.<br />
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''<br />
<br />
=== Logfiles and Quality Management ===<br />
<br />
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:<br />
<source lang="c"><br />
SN: 1 - Failed<br />
SN: 1 - Failed<br />
SN: 2 - O.K. (931 ms)<br />
SN: 3 - O.K. (931 ms)<br />
SN: 4 - O.K. (933 ms)<br />
SN: 5 - O.K. (932 ms)<br />
</source><br />
If applicable, the logfile contains more detailed error messages. For example:<br />
<source lang="c"><br />
ERROR: Programming failed @ address 0x00000000 (1)<br />
ERROR: Cannot connect to CPU. Target interface speed too high?<br />
</source><br />
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:<br />
<source lang="c"><br />
Verify error config word area @<br />
config word<br />
config word read back<br />
Verify error flash area @<br />
data from file<br />
data read back<br />
</source><br />
{{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.}}<br />
<br />
== TCP Services ==<br />
This chapter describes the integrated TCP services.<br />
<br />
=== FTP Server ===<br />
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><br />
[[File:FTPServer.png]]<br />
<br />
==== Access data ====<br />
Anonymous access to the FTP server is limited to read-only access to the file system.<br><br />
For write access, special login credentials have to be used:<br><br />
<tt>Login: admin</tt><br><br />
<tt>Password: 1234</tt><br><br />
<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.<br />
It is not meant as a security feature.}}<br />
<br />
=== Web server ===<br />
<br />
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.<br />
For the network, the IP address settings can be changed and a nick name can be assigned to the device.<br><br />
<br />
Additionally, the web interface provides information about the status of the integrated operating system, the IP stack and the target hardware.<br />
<br />
== Remote control ==<br />
This chapter describes how to control the Flasher in standalone mode.<br />
<br />
=== Overview ===<br />
There are 3 ways to control Flasher operation:<br><br />
{| class="seggertable"<br />
! Type of control !! Description<br />
|-<br />
| Button || Programming operation starts when pressing the PROG-button. The LEDs serve as visible indicators.<br />
|-<br />
| Handshake || 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.<br />
|-<br />
| Terminal || Terminal communication via TELNET, RS232 or VCOM with the [[#ASCII command interface]]<br />
|}<br />
<br />
<br />
{{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.}}<br />
<br />
=== Handshake control ===<br />
<br />
Some Flasher models are equipped with additional hardware control functions that are connected to the SUBD9 male connector, normally used as an RS232 interface to the PC.<br />
These Flasher models can therefore be controlled remotely by automated testers without the need for a connection to a PC.<br />
<br />
The handshake control is available for the following Flashers:<br />
* Flasher ARM<br />
* Flasher PRO<br />
* Flasher Compact (via Flasher Hub and Flasher Hub-12 only)<br />
<br />
The following diagrams show the internal remote control circuitry of Flasher:<br><br />
<br />
[[File:FlasherRemotecontrol.png]]<br />
{| class="seggertable"<br />
|-<br />
! Pin No. !! Function !! Description<br />
|-<br />
| 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.<br />
|-<br />
| 4 || BUSY || As soon as the "Auto" function is started, BUSY becomes active, which means that transistor is switched OFF.<br />
|-<br />
| 5 || GND || Common Signal ground.<br />
|-<br />
| 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.<br />
|-<br />
|}<br />
[[File:FlasherRemoteSignal.png]]<br />
<br />
=== ASCII command interface ===<br />
<br />
==== Introduction ====<br />
<br />
Once set up using J-Flash, the Flasher can be driven by any application or just a simple terminal using ASCII commands.<br><br />
<br />
Every known command is acknowledged by the Flasher and then executed. After command execution, Flasher sends an ASCII reply message.<br><br />
<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}}<br />
<br />
==== General command and reply message format ====<br />
<br />
* Any ASCII command has to start with the start delimiter ''#''.<br />
* Any ASCII command has to end with simple carriage return ('\r', ASCII code 13).<br />
* Commands can be sent upper or lower case<br />
<br />
==== General usage ====<br />
<br />
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.<br />
<br />
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).<br />
<br />
==== Settings for ASCII interface via RS232 ====<br />
<br />
Flasher is driven via a RS232 serial port with the following interface settings:<br><br />
<br />
* 9600 baud<br />
* 8 data bits<br />
* no parity<br />
* 1 stop bit<br />
<br />
The baud rate can be changed by using the <tt>#BAUDRATE</tt> command.<br />
<br />
==== Settings for ASCII interface via Telnet ====<br />
<br />
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><br />
<br />
[[File:telnet_connection.gif]]<br />
<br />
==== Settings for ASCII interface via VCOM ====<br />
<br />
The same settings can be used for VCOM as for [[#Settings for ASCII interface via RS232|RS232]].<br />
<br />
{{Note|The performance also depends on the terminal application used on the PC.}}<br />
<br />
==== Commands and replies ====<br />
<br />
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><br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| Commands to the Flasher<br />
|-<br />
| <tt>#BAUDRATE <Baudrate></tt><br />
|-<br />
| <tt>#AUTO</tt><br />
|-<br />
| <tt>#AUTO PATCH</tt><br />
|-<br />
| <tt>#AUTO NOINFO</tt><br />
|-<br />
| <tt>#CANCEL</tt><br />
|-<br />
| <tt>#ERASE</tt><br />
|-<br />
| <tt>#PROGRAM</tt><br />
|-<br />
| <tt>#RESULT</tt><br />
|-<br />
| <tt>#SELECT <Filename></tt><br />
|-<br />
| <tt>#START</tt><br />
|-<br />
| <tt>#STATUS</tt><br />
|-<br />
| <tt>#VERIFY</tt><br />
|-<br />
| <tt>#READ</tt><br />
|-<br />
| <tt>#QUIT</tt><br />
|-<br />
| <tt>#VERBOSE <Level></tt><br />
|-<br />
!colspan="100%"| File I/O commands<br />
|-<br />
| <tt>#FCLOSE</tt><br />
|-<br />
| <tt>#FCRC</tt><br />
|-<br />
| <tt>#FDELETE <Filename></tt><br />
|-<br />
| <tt>#FFORMAT</tt><br />
|-<br />
| <tt>#FOPEN <Filename></tt><br />
|-<br />
| <tt>#FREAD <Offset>,<NumBytes></tt><br />
|-<br />
| <tt>#FSIZE</tt><br />
|-<br />
| <tt>#FWRITE <Offset>,<NumBytes>:<nowiki><Data></nowiki></tt><br />
|-<br />
| <tt>#FLIST</tt><br />
|-<br />
| <tt>#MKDIR <Dirname></tt><br />
|-<br />
!colspan="100%"| SecureArea commands<br />
|-<br />
| <tt>#HASSECUREAREA</tt><br />
|-<br />
| <tt>#SECUREAREA <action></tt><br />
|-<br />
!colspan="100%"| Replies from the Flasher<br />
|-<br />
| <tt>#ACK</tt><br />
|-<br />
| <tt>#NACK</tt><br />
|-<br />
| <tt>#OK</tt><br />
|-<br />
| <tt>#OK:<NumBytes>:<nowiki><Data></nowiki></tt><br />
|-<br />
| <tt>#OK:<Size></tt><br />
|-<br />
| <tt>#STATUS:</tt><br />
|-<br />
| <tt>#DONE</tt><br />
|-<br />
| <tt>#ERRxxx</tt><br />
|-<br />
|}<br />
<br />
===== Commands to the Flasher =====<br />
<br />
'''#AUTO'''<br><br />
The <tt>#AUTO</tt> command behaves exactly as the start button or external remote control input.<br><br />
<br />
Usually, the following command sequence will be performed when receiving the <tt>#AUTO</tt> command:<br><br />
<br />
* The Flasher erases the target CPU (if not blank)<br />
* The Flasher programs the target CPU<br />
* The Flasher verifies the target CPU<br />
<br />
Depending on the settings chosen in the '''Production''' tab in J-Flash, this sequence can differ from the one shown above.<br><br />
<br />
Finally, Flasher responds with<br><br />
<br />
* <tt>#OK</tt> if no error occurred<br />
* <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.<br />
<br />
During execution of the <tt>#AUTO</tt> command, Flasher automatically sends "status" messages via RS232 to reflect the state of execution.<br />
Typically during execution of <tt>#AUTO</tt> command, Flasher will reply the following sequence of messages:<br><br />
<br />
<tt>#ACK</tt><br><br />
<tt>#STATUS:INITIALIZING</tt><br><br />
<tt>#STATUS:CONNECTING</tt><br><br />
<tt>#STATUS:UNLOCKING</tt><br><br />
<tt>#STATUS:ERASING</tt><br><br />
<tt>#STATUS:PROGRAMMING</tt><br><br />
<tt>#STATUS:VERIFYING</tt><br><br />
<tt>#OK (Total 13.993s, Erase 0.483s, Prog 9.183s, Verify 2.514s)</tt><br><br />
<br />
'''#AUTO PATCH'''<br><br />
The <tt>#AUTO</tt> PATCH command allows patching of the content of the data to be programmed.<br><br />
<br />
Flasher responds with<br><br />
<br />
* <tt>#OK</tt> if no error occurred<br />
* <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.<br />
<br />
For further information about the usage of the <tt>#AUTO PATCH</tt> command please refer to [[#Patch file support | Patch file support]].<br />
<br />
'''#AUTO NOINFO'''<br><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><br />
<br />
The command ends with <tt>#OK</tt> or <tt>#ERRxxx</tt><br />
<br />
'''#BAUDRATE <Baudrate>'''<br><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><br />
<br />
If this command succeeds, Flasher responds with:<br><br />
<br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<br />
Otherwise it will respond with one of the following error messages:<br><br />
<br />
<tt>#ERR255: Invalid parameters</tt><br><br />
<tt>or</tt><br><br />
<tt>#ERR255: Baudrate is not supported</tt><br><br />
<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.<br />
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.}}<br />
<br />
'''#CANCEL'''<br><br />
This command can be sent to abort a running program. It may take a while until the current program is actually canceled.<br><br />
<br />
Flasher will respond with:<br><br />
<br />
<tt>#ERR007:CANCELED.</tt><br><br />
<br />
'''#ERASE'''<br><br />
This command can be sent to erase all selected target flash sectors.<br><br />
<br />
Flasher will reply the following sequence of messages:<br><br />
<br />
<tt>#ACK</tt><br><br />
<tt>#STATUS:INITIALIZING</tt><br><br />
<tt>#STATUS:CONNECTING</tt><br><br />
<tt>#STATUS:UNLOCKING</tt><br><br />
<tt>#STATUS:ERASING</tt><br><br />
<tt>#OK (Total 0.893s, Erase 0.483s)</tt><br><br />
<br />
'''#PROGRAM'''<br><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.<br />
<br />
'''#RESULT'''<br><br />
This command can be sent any time, even during other command execution. Flasher responds with the last result of the previously executed command.<br />
<br />
'''#SELECT <Filename>'''<br><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.<br />
<tt><Filename></tt> specifies the name of file pair without extensions (.CFG and .DAT) on the Flasher which should be selected. If you are<br />
using the universal flash programming mode, <tt><Filename></tt> specifies the full name of the .UNI file '''including''' the extension.<br />
Flasher saves the selected config and data file in the FLASHER.INI file. So this selection is remembered even between power-cycling Flasher.<br><br />
<br />
This may be verfy helpful in cases where several config and data files are stored on Flasher.<br />
The user can easily switch between these config and data files without connecting Flasher to a host.<br><br />
<br />
If this command succeeds, Flasher responds with:<br><br />
<br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<br />
Find below a sample sequence which shows how to use the <tt>#SELECT</tt> command:<br><br />
<br />
<tt>#SELECT ATSAM7_1 // ATSAM7_1.CFG and ATSAM7_1.DAT is selected</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<tt>#AUTO // Start auto programming</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#STATUS:INITIALIZING</tt><br><br />
<tt>#STATUS:CONNECTING</tt><br><br />
<tt>#STATUS:UNLOCKING</tt><br><br />
<tt>#STATUS:ERASING</tt><br><br />
<tt>#STATUS:PROGRAMMING</tt><br><br />
<tt>#STATUS:VERIFYING</tt><br><br />
<tt>#OK (Total 8.416s, Erase 0.005s, Prog 6.845s, Verify 0.959s)</tt><br><br />
<tt>#SELECT ATSAM7_2 // ATSAM7_2.CFG and ATSAM7_2.DAT is selected</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<tt>#AUTO // Start auto programming</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#STATUS:INITIALIZING</tt><br><br />
<tt>#STATUS:CONNECTING</tt><br><br />
<tt>#STATUS:UNLOCKING</tt><br><br />
<tt>#STATUS:ERASING</tt><br><br />
<tt>#STATUS:PROGRAMMING</tt><br><br />
<tt>#STATUS:VERIFYING</tt><br><br />
<tt>#OK (Total 8.632s, Erase 0.005s, Prog 7.051s, Verify 0.969s)</tt><br><br />
<br />
'''#START'''<br><br />
This command can be sent to start the application using the method configured in the J-Flash project.<br><br />
For U-Flash projects, however, the target application is not necessarily started. <br><br />
There is often a "start application" checkbox in the U-Flash settings which have to be set for this.<br />
<br />
Flasher will reply with the following sequence of messages:<br><br />
<br />
<tt>#ACK</tt><br><br />
<tt>#STATUS:INITIALIZING</tt><br><br />
<tt>#STATUS:CONNECTING</tt><br><br />
<tt>#OK (Total 1.148s)</tt><br><br />
<br />
'''#STATUS'''<br><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]].<br />
<br />
'''#VERIFY'''<br><br />
This command can used to verify the target flash content against the data stored in Flasher.<br />
<br />
'''#READ'''<br><br />
Only available for devices supported by U-Flash.<br><br />
This command can used to read out flash data.<br><br />
More information: [https://wiki.segger.com/Flasher/How_to_read_data_from_a_device_using_U-Flash How to read data using U-Flash]<br />
<br />
'''#QUIT'''<br><br />
This command can be used to terminate the active telnet connection from the server side (Flasher).<br />
The command provides an easy way to terminate the session from an automated script.<br />
It is not necessary to parse stdout and switch to local command mode to disconnect.<br />
Not implemented in the Flasher ATE or Flasher Hub.<br />
<br />
'''#VERBOSE <Level>'''<br><br />
This command can be used to change the verbosity level. <br><br />
* Verbosity level 0: Default. <br><br />
* Verbosity level 1: Provides some additional messages during the programming process.<br />
<br />
===== File I/O commands =====<br />
<br />
The ASCII interface of the Flasher also supports file I/O operations.<br />
<br />
The following file I/O commands are supported:<br><br />
<br />
'''#FCLOSE'''<br><br />
The <tt>#FCLOSE</tt> command closes the file on Flasher which was opened via <tt>#FOPEN</tt>.<br />
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><br />
<br />
A typical sequence when using the <tt>#FCLOSE</tt> command does look like as follows:<br><br />
<br />
<tt>#FCLOSE</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<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><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:No file opened</tt><br />
}}<br />
<br />
'''#FCRC'''<br><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>.<br />
The CRC will be also reported by J-Flash when downloading or saving files via J-Flash.<br><br />
<br />
A typical sequence when using the <tt>#FCRC</tt> command does look like as follows:<br><br />
<br />
<tt>#FCRC flasher.dat</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK:0x75BC855A</tt><br><br />
<br />
'''#FDELETE <Filename>'''<br><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><br />
<br />
A typical sequence when using the <tt>#FDELETE</tt> command does look like as follows:<br><br />
<br />
<tt>#FDELETE flasher.dat</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<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><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:Failed to delete file</tt><br />
}}<br />
<br />
'''#FFORMAT'''<br><br />
The <tt>#FFORMAT</tt> command is used to delete all files located in the public area of the Flasher's internal memory.<br />
<br />
{{Note|1=Please note that this command deletes all projects located in the public area. Deleted projects cannot be restored again.<br><br />
This command does not delete the Flasher firmware, neither does it delete files in the secure area.<br />
}}<br />
<br />
A typical sequence using the <tt>#FFORMAT</tt> command does look like as follows:<br><br />
<br />
<tt>#FFORMAT</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#DONE</tt><br><br />
<br />
'''#FOPEN <Filename>'''<br><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.<br />
If <tt><Filename></tt> can not be found on Flasher a new one will be created.<br><br />
<br />
A typical sequence using the <tt>#FOPEN</tt> command does look like as follows:<br><br />
<br />
<tt>#FOPEN flasher.dat</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<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><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:A file has already been opened</tt><br />
}}<br />
<br />
'''#FREAD <Offset>,<NumBytes>'''<br><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.<br />
<tt><NumBytes></tt> specifies the number of bytes which should be read.<br><br />
<br />
A typical sequence when using the <tt>#FREAD</tt> command does look like as follows:<br><br />
<br />
<tt>#FREAD 0,4</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK:04:466c6173</tt><br><br />
<br />
If the <tt>#FREAD</tt> command succeeds, Flasher will finally respond with a <tt>#OK:<NumBytes>:<nowiki><Data></nowiki></tt> reply message.<br />
For more information about the Flasher reply messages, please refer to [[#Replies from Flasher | Replies from Flasher]].<br><br />
<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><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:No file opened</tt>}}<br />
<br />
'''#FSIZE'''<br><br />
The <tt>#FSIZE</tt> command is used to get the size of the currently opened file on Flasher.<br><br />
<br />
A typical sequence when using the <tt>#FSIZE</tt> command does look like as follows:<br><br />
<br />
<tt>#FSIZE</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK:10 // file on flasher which is currently open, has a size of 16 bytes</tt><br><br />
<br />
If the <tt>#FSIZE</tt> command succeeds, Flasher will respond with a <tt>#OK:<Size></tt> reply message.<br />
For more information about the Flasher reply messages, please refer to [[#Replies from Flasher | Replies from Flasher]].<br><br />
<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><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:No file opened</tt>}}<br />
<br />
'''#FWRITE <Offset>,<NumBytes>:<nowiki><Data></nowiki>'''<br><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.<br />
<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.<br />
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><br />
<br />
<tt><Offset></tt> and <tt><NumBytes></tt> are expected in hexadecimal format.<br><br />
<br />
<tt>#FWRITE 0,200:<nowiki><Data></nowiki></tt><br><br />
<tt>#FWRITE 200,200:<nowiki><Data></nowiki></tt><br><br />
<br />
The data is expected in hexadecimal format (two hexadecimal characters per byte). The following example illustrates the use of <tt>#FWRITE</tt>:<br />
<br />
<tt>Data to be send: Hello !</tt><br><br />
<tt>ASCII values: 0x48, 0x65, 0x6C, 0x6C, 0x6F, 0x20, 0x21</tt><br><br />
<br />
<tt>#FWRITE 0,7:48656C6C6F2021</tt><br><br />
<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><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:No file opened</tt><br>}}<br />
<br />
'''#FLIST'''<br><br />
The <tt>#LIST</tt> command is used to list all files stored on the Flasher.<br><br />
<br />
A typical sequence using the <tt>#FLIST</tt> command does look like as follows:<br><br />
<br />
<tt>#FLIST</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>FLASHER.INI Size: 60</tt><br><br />
<tt>SERIAL.TXT Size: 3</tt><br><br />
<tt>FLASHER.LOG Size: 207</tt><br><br />
<tt>FOLDER (DIR)</tt><br><br />
<tt>FOLDER\\TEST1.CFG Size: 2048</tt><br><br />
<tt>FOLDER\\TEST1.DAT Size: 12288</tt><br><br />
<tt>#OK</tt><br><br />
<br />
'''#MKDIR <Dirname>'''<br><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><br />
<br />
A typical sequence using the <tt>#MKDIR</tt> command does look like as follows:<br><br />
<br />
<tt>#MKDIR folder</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<br />
{{Note|1=If the directory can not be created because of a bad <tt><Dirname></tt> argument, Flasher will respond with:<br><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:Failed to create directory</tt><br>}}<br />
<br />
===== Secure Area Commands =====<br />
<br />
'''#HASSECUREAREA'''<br><br />
The <tt>#HASSECUREAREA</tt> command checks if the Flasher is configured with a secure area.<br />
<br />
<tt>#RESULT:YES</tt> indicates the secure area is present, <tt>#RESULT:NO</tt> indicates no secure area is present.<br />
<br />
'''#SECUREAREA'''<br><br />
The <tt>#SECUREAREA <action></tt> command allows to create or remove the secure area on the Flasher.<br />
<br />
* the action <tt>CREATE</tt> creates the secure area.<br />
* the action <tt>REMOVE</tt> will remove the secure area.<br />
<br />
A typical sequence using the <tt>#SECUREAREA</tt> command does look like as follows:<br><br />
<br />
<tt>#SECUREAREA CREATE</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#DONE</tt><br><br />
<br />
{{Note|1=When creating or removing the <tt>secure area</tt>, all configuration and data files being stored on the Flasher, are lost.<br />
Please make sure that they are not needed anymore, before adding / removing the security area.}}<br />
<br />
<br />
<br />
===== Replies from Flasher =====<br />
<br />
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.<br />
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.<br />
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><br />
<br />
<tt>#OK (Total 13.993s, Erase 0.483s, Prog 9.183s, Verify 2.514s)</tt><br><br />
<br />
The following reply messages from Flasher are defined:<br><br />
<br />
'''#ACK'''<br><br />
Flasher replies with <tt>#ACK</tt> message on reception of any defined command before the command itself is executed.<br />
<br />
'''#NACK'''<br><br />
Flasher replies with <tt>#NACK</tt>, if an undefined command was received.<br />
<br />
'''#OK'''<br><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.<br />
<br />
'''#OK:<NumBytes>:<nowiki><Data></nowiki>'''<br><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.<br />
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).<br />
<br />
'''#OK:<Size>'''<br><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.<br />
<br />
'''#STATUS:'''<br><br />
The Flasher replies with its current state.<br><br />
<br />
The following status messages are currently defined:<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Message !! Description<br />
|-<br />
| <tt>#STATUS:READY</tt> || Flasher is ready to receive a new command.<br />
|-<br />
| <tt>#STATUS:CONNECTING</tt> || Flasher initializes connection to target CPU.<br />
|-<br />
| <tt>#STATUS:INITIALIZING</tt> || Flasher performs self check and internal init.<br />
|-<br />
| <tt>#STATUS:UNLOCKING</tt> || Unlocking flash sectors.<br />
|-<br />
| <tt>#STATUS:ERASING</tt> || Flasher is erasing the flash of the target device.<br />
|-<br />
| <tt>#STATUS:PROGRAMMING</tt> || Flasher is programming the flash of the target device.<br />
|-<br />
| <tt>#STATUS:VERIFYING</tt> || Flasher verifies the programmed flash contents.<br />
|-<br />
|}<br />
<br />
'''#ERRxxx'''<br><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><br />
<br />
Some error codes may be followed by colon and an additional error text.<br><br />
<br />
For example:<br><br />
<br />
<tt>#ERR007:CANCELED.</tt><br><br />
<br />
The error code numbers are described in the following table:<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Message !! Description<br />
|-<br />
| <tt>#ERR007</tt> || Flasher received <tt>#CANCEL</tt> command and has canceled the current operation.<br />
|-<br />
| <tt>#ERR008</tt> || Flasher is already busy with execution of previous command.<br />
|-<br />
| <tt>#ERR009</tt> || Failed to allocate memory.<br />
|-<br />
| <tt>#ERR010</tt> || Failed to open file.<br />
|-<br />
| <tt>#ERR011</tt> || Failed to read file.<br />
|-<br />
| <tt>#ERR012</tt> || Failed to write file.<br />
|-<br />
| <tt>#ERR013</tt> || Failed to delete file.<br />
|-<br />
| <tt>#ERR255</tt> || Undefined error occurred. This reply is followed by an error string.<br />
|-<br />
|}<br />
<br />
== Performance ==<br />
<br />
The following chapter lists programming performance of common flash devices andmicrocontrollers.<br />
<br />
=== Performance of MCUs with internal flash memory ===<br />
<br />
==== Flasher ARM ====<br />
<br />
The following table lists program and erase performance values of Flasher ARM for different controllers.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Microcontroller !! Size [kByte] !! Erase time [sec] !! Program time [sec] !! Verify time [sec] !! Total time [sec]<br />
|-<br />
| Analog Devices || 62 || 2.943 || 2.286 || 0.563 || 5.792<br />
|-<br />
| Atmel AT91SAM7S64 || 64 || --- || 3.488 || 0.438 || 3.926<br />
|-<br />
| Atmel AT91SAM7S256 || 256 || --- || 7.709 || 1.053 || 8.762<br />
|-<br />
| NXP LPC1768 || 512 || 3.740 || 8.559 || 5.092 || 17.391<br />
|-<br />
| NXP LPC2106 || 120 || 0.448 || 1.204 || 0.634 || 2.286<br />
|-<br />
| NXP LPC2129 || 248 || 0.449 || 2.916 || 1.347 || 4.712<br />
|-<br />
| NXP LPC2138 || 500 || 0.448 || 5.488 || 2.649 || 8.585<br />
|-<br />
| NXP LPC2148 || 500 || 0.448 || 5.632 || 2.721 || 8.801<br />
|-<br />
| NXP LPC2294 || 2048 || 0.808 || 15.976 || 9.669 || 26.453<br />
|-<br />
| NXP LPC2478 || 504 || 0.448 || 5.419 || 2.559 || 8.426<br />
|-<br />
| ST STM32F103ZE || 512 || 0.028 || 18.763 || 3.939 || 22.730<br />
|-<br />
| ST STR711 || 272 || 0.429 || 5.476 || 4.742 || 10.647<br />
|-<br />
| ST STR912 || 544 || 1.167 || 12.907 || 5.236 || 19.310<br />
|-<br />
| TI TMS470R1B1M || 1024 || 2.289 || 8.147 || 5.362 || 15.798<br />
|-<br />
|}<br />
<br />
==== Flasher PRO ====<br />
See Flasher ARM.<br />
<br />
==== Flasher Compact ====<br />
See Flasher ARM.<br />
<br />
==== Flasher RX ====<br />
<br />
The following table lists program and erase performance values of Flasher RX.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Microcontroller !! Size [kByte] !! Erase time [sec] !! Program time [sec] !! Verify time [sec] !! Total time [sec]<br />
|-<br />
| R5F56108 || 2.048 || 9.523 || 11.915 || 3.890 || 25.585<br />
|-<br />
|}<br />
<br />
==== Flasher PPC ====<br />
<br />
The following table lists program and erase performance values of Flasher PPC.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Microcontroller !! Size [kByte] !! Erase time [sec] !! Program time [sec] !! Verify time [sec] !! Total time [sec]<br />
|-<br />
| ST SPC560B50 || 576 || 4.747 || 4.159 || 1.929 || 10.917<br />
|-<br />
|}<br />
<br />
== Hardware ==<br />
<br />
This chapter gives an overview about Flasher specific hardware details,<br />
such as the pinouts and available adapters.<br />
<br />
=== Flasher ARM 20-pin JTAG/SWD Connector ===<br />
<br />
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.<br />
<br />
==== Pinout JTAG ====<br />
<br />
[[File:jtag_port_20pin.jpg]] <!-- LG xxxxxx image has been cropped to fit page --><br />
<br />
The following table lists the Flasher JTAG pinout.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! PIN !! SIGNAL !! TYPE !! Description<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 13 || TDO || Input || JTAG data output from target CPU. Typically connected to TDO of target CPU.<br />
|-<br />
| 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".<br />
|-<br />
| 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.<br />
|-<br />
| 19 || 5V-Target supply || Output || This pin is used to supply power to some eval boards. Typically left open on target hardware.<br />
|-<br />
|}<br />
<br />
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.<br />
<br />
==== Pinout SWD ====<br />
<br />
The 20-pin connector of Flasher is also compatible to ARM's Serial Wire Debug (SWD) interface.<br><br />
<br />
[[File:SWD_Port.jpg]] <!-- LG xxxxxx image has been cropped to fit page --><br />
<br />
The following table lists the J-Link / J-Trace SWD pinout.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! PIN !! SIGNAL !! TYPE !! Description<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 7 || SWDIO || I/O || Single bi-directional data pin.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 13 || SWO || Output || Serial Wire Output trace port. (Optional, not required for SWD communication.)<br />
|-<br />
| 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".<br />
|-<br />
| 17 || Not used || NC || This pin is not connected in J-Link.<br />
|-<br />
| 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.<br />
|-<br />
|}<br />
<br />
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.<br />
<br />
==== Target power supply ====<br />
<br />
Pin 19 of the connector can be used to supply power to the target hardware. Supply voltage is 5V, max. current is 400mA.<br />
The output current is monitored and protected against overload and short-circuit.<br><br />
<br />
Power can be controlled via the J-Link commander. The following commands are available to control power:<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Command !! Explanation<br />
|-<br />
| <tt>power on</tt> || Switch target power on<br />
|-<br />
| <tt>power off</tt> || Switch target power off<br />
|-<br />
| <tt>power on perm</tt> || Set target power supply default to "on"<br />
|-<br />
| <tt>power off perm</tt> || Set target power supply default to "off"<br />
|-<br />
|}<br />
<br />
=== Flasher RX 14-pin connector ===<br />
<br />
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.<br />
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.<br />
<br />
[[File:jtag_port_14pin.wmf]]<br />
<br />
The following table lists the Flasher RX 14-pin JTAG pinout.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Pin !! Signal !! Type !! Description<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 5 || TDO || Input || JTAG data output from target CPU. Typically connected to TDO on target CPU.<br />
|-<br />
| 6 || --- || NC || This pin is not connected to Flasher RX.<br />
|-<br />
| 7 || --- || NC || This pin is not connected to Flasher RX.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 10 || --- || NC || This pin is not connected to Flasher RX.<br />
|-<br />
| 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.<br />
|-<br />
| 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".<br />
|-<br />
|}<br />
<br />
* All pins marked NC are not connected to Flasher RX. Any signal can be applied here; Flasher RX will simply ignore such a signal.<br />
* Pins 2, 12, 14 are GND pins connected to GND in Flasher RX. They should also be connected to GND in the target system.<br />
<br />
==== Target power supply ====<br />
<br />
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.<br />
Power can be controlled via the J-Link commander. The following commands are available to control power:<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Command !! Explanation<br />
|-<br />
| <tt>power on</tt> || Switch target power on<br />
|-<br />
| <tt>power off</tt> || Switch target power off<br />
|-<br />
| <tt>power on perm</tt> || Set target power supply default to "on"<br />
|-<br />
| <tt>power off perm</tt> || Set target power supply default to "off"<br />
|-<br />
|}<br />
<br />
=== Flasher PPC 14-pin connector ===<br />
<br />
Flasher PPC itself has a 20-pin JTAG connector mounted but comes with a 14-pin adapter for PowerPC devices.<br><br />
<br />
[[File:JTAG_PPC_14pin_adapter.wmf]]<br />
<br />
The following table lists the Flasher PPC 14-pin JTAG pinout.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Pin !! Signal !! Type !! Description<br />
|-<br />
| 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.<br />
|-<br />
| 3 || TDO || Input || JTAG data output from target CPU. Typically connected to TDO on target CPU.<br />
|-<br />
| 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.<br />
|-<br />
| 7 || --- || NC || This pin is not connected to Flasher PPC.<br />
|-<br />
| 8 || --- || NC || This pin is not connected to Flasher PPC.<br />
|-<br />
| 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".<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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).<br />
|-<br />
|}<br />
<br />
* All pins marked NC are not connected to Flasher PPC. Any signal can be applied here; Flasher PPC will simply ignore such a signal.<br />
* 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.<br />
<br />
=== Target board design ===<br />
<br />
We strongly advise following the recommendations given by the chip manufacturer. These recommendations are normally in line with the recommendations.<br />
Please refer to the the appropriate tables depending on the core:<br><br />
<br />
* [[#Pinout JTAG | Pinout JTAG]]<br />
* [[#Pinout SWD | Pinout SWD]]<br />
* [[#Flasher RX 14-pin connector | Flasher RX 14-pin connector]]<br />
* [[#Flasher PPC 14-pin connector | Flasher PPC 14-pin connector]]<br />
<br />
In case of doubt you should follow the recommendations given by the semiconductor manufacturer.<br />
<br />
==== Pull-up/pull-down resistors ====<br />
<br />
Unless otherwise specified by developer's manual, pull-ups/pull-downs are recommended to be between 2.2 kOhms and 47 kOhms.<br />
<br />
==== RESET, nTRST ====<br />
<br />
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><br />
<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.<br />
(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.<br />
<br />
=== Adapters ===<br />
<br />
==== JTAG Isolator ====<br />
<br />
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.<br />
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><br />
<br />
[[File:JTAG_Isolator_Port.wmf]]<br />
<br />
===== Pinout =====<br />
<br />
The following table shows the target-side pinout of the J-Link JTAG Isolator.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Pin !! Signal !! Type !! Description<br />
|-<br />
| 1 || VCC || Output || The target side of the isolator draws power over this pin.<br />
|-<br />
| 2 || VCC || Output || The target side of the isolator draws power over this pin.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 13 || TDO || Input || JTAG data output from target CPU. Typically connected to TDO of target CPU.<br />
|-<br />
| 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".<br />
|-<br />
| 17 || N/C || N/C || This pin is not connected on the target side of the isolator.<br />
|-<br />
| 19 || N/C || N/C || This pin is not connected on the target side of the isolator.<br />
|-<br />
|}<br />
<br />
Pins 4, 6, 8, 10, 12, 14, 16, 18, 20 are connected to GND.<br />
<br />
===== Safety =====<br />
This isolator provides '''basic isolation''' only. '''Do not use with hazardous voltages without further protection measures to avoid risk of electrical shock and fire.'''<br />
<br />
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.<br />
<br />
==== J-Link Needle Adapter ====<br />
<br />
To connect to the J-Link OB via programming interface the ''J-Link Needle Adapter'' is recommended.<br><br />
<br />
[[File:J-Link_Needle_Adapter_500x.jpg]]<br />
<br />
Why to choose the J-Link Needle Adapter:<br><br />
<ol><br />
<li>No additional connector required on your PCB</li><br />
<li>Very small footprint</li><br />
<li>High reliability spring pins for secure connections</li><br />
<li>Designed with 3 locating pins, so the adapter can not be connected the wrong way</li><br />
<li>No external power supply required! The J-Link Needle Adapter comes with the option to power the target hardware via J-Link.</li><br />
</ol><br />
These features make the J-Link Needle Adapter the perfect solution for production purposes.<br><br />
<br />
The pinout of the J-Link Needle Adapter is based on the pinout of the needle adapter by Tag-Connect.<br />
Please note, that both pinouts are not identical since the J-Link Needle Adapter comes with a 5V-supply pin.<br><br />
<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><br />
<br />
Moreover, the two "legs" on each side of the connector guarantee a stable and secure contact between pins and the PCB.<br><br />
<br />
[[File:J-Link_Needle_Adapter_Connector_pins_360x.jpg]]<br />
[[File:J-Link_Needle_Adapter_Pinout.jpg]]<br />
<br />
The J-Link Needle Adapter can be connected to J-Link via the ''20-pin 0.1'' JTAG to a 10-pin needle connector''.<br />
<br />
=== How to determine the hardware version ===<br />
<br />
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.<br />
Flasher has the hardware version printed on the back label.<br><br />
<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).<br />
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><br />
<br />
[[File:FlasherARM_version.gif]]<br />
== Support and FAQs ==<br />
<br />
This chapter contains troubleshooting tips together with solutions for common problems which might occur when using Flasher.<br />
There are several steps you can take before contacting support.<br />
Performing these steps can solve many problems and often eliminates the need for assistance.<br />
This chapter also contains a collection of frequently asked questions (FAQs) with answers.<br />
<br />
=== Contacting support ===<br />
<br />
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.<br />
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><br />
<br />
If you need to contact support, send the following information to<br><br />
''support@segger.com''<br><br />
<br />
* A detailed description of the problem<br />
* Flasher serial number<br />
* Information about your target hardware (processor, board, etc.).<br />
* <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]].<br />
<br />
Flasher is sold directly by SEGGER.<br />
<br />
=== Frequently Asked Questions ===<br />
<br />
'''Maximum JTAG speed'''<br />
{|<br />
|-<br />
| '''Q:''' || What is the maximum JTAG speed supported by Flasher?<br />
|-<br />
| '''A:''' || Flasher's maximum supported JTAG speed is 12MHz.<br />
|}<br />
<br />
'''Maximum download speed'''<br />
{|<br />
|-<br />
| '''Q:''' || What is the maximum download speed?<br><br />
|-<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.<br />
|}<br />
== Background information ==<br />
<br />
This chapter provides background information about flash programming in general. It<br />
also provides information about how to replace the firmware of Flasher manually.<br />
<br />
=== Flash programming ===<br />
<br />
Flasher comes with a DLL, which allows - amongst other functionalities - reading and writing RAM, CPU registers, starting and stopping the CPU, and setting breakpoints.<br />
<br />
==== How does flash programming via Flasher work? ====<br />
<br />
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.<br />
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.<br />
Different flash chips have different programming algorithms;the programming algorithm also depends on other things,<br />
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).<br />
The RAM code requires data to be programmed into the flash memory. The data is supplied by downloading it to RAM.<br />
<br />
==== Data download to RAM ====<br />
<br />
The data (or part of it) is downloaded to another part of the RAM of the target system.<br />
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.<br />
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.<br />
This process may have to be repeated until the entire data is programmed into the flash.<br />
<br />
==== Available options for flash programming ====<br />
<br />
In general, there are two possibilities in order to use Flasher for flash programming:<br><br />
<br />
* Using Flasher stand-alone to program the target flash memory (stand-alone mode)<br />
* Using Flasher in combination with J-Flash to program the target flash memory (Flasher in "PC-based mode")<br />
<br />
===== Using Flasher in stand-alone mode =====<br />
<br />
In order to use the Flasher in stand-alone mode, it has to be configured first.<br />
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]].<br />
<br />
===== J-Flash - Complete flash programming solution =====<br />
<br />
J-Flash is a stand-alone Windows application, which can read / write data files and program the flash in almost any ARM system.<br />
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''.<br />
<br />
==== How does the universal flash programming work? ====<br />
<br />
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><br />
<br />
Universal flash programming is available only for stand-alone mode.<br />
== Glossary ==<br />
<br />
This chapter describes important terms used throughout this manual.<br />
<br />
'''Big-endian'''<br><br />
Memory organization where the least significant byte of a word is at a higher address than the most significant byte. See Little-endian.<br />
<br />
'''Cache cleaning'''<br><br />
The process of writing dirty data in a cache to main memory.<br />
<br />
'''Coprocessor'''<br><br />
An additional processor that is used for certain operations, for example, for floating-point math calculations, signal processing, or memory management.<br />
<br />
'''Dirty data'''<br><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.<br />
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.<br />
<br />
'''Halfword'''<br><br />
A 16-bit unit of information.<br />
<br />
'''Host'''<br><br />
A computer which provides data and other services to another computer. Especially, a computer providing debugging services to a target being debugged.<br />
<br />
'''ICache'''<br><br />
Instruction cache.<br />
<br />
'''ID'''<br><br />
Identifier.<br />
<br />
'''IEEE 1149.1'''<br><br />
The IEEE Standard which defines TAP. Commonly (but incorrectly) referred to as JTAG.<br />
<br />
'''Image'''<br><br />
An executable file that has been loaded onto a processor for execution.<br />
<br />
'''Instruction Register'''<br><br />
When referring to a TAP controller, a register that controls the operation of the TAP.<br />
<br />
'''IR'''<br><br />
See Instruction Register.<br />
<br />
'''Joint Test Action Group (JTAG)'''<br><br />
The name of the standards group which created the IEEE 1149.1 specification.<br />
<br />
'''Little-endian'''<br><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.<br />
<br />
'''Memory coherency'''<br><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.<br />
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.<br />
<br />
'''Memory management unit (MMU)'''<br><br />
Hardware that controls caches and access permissions to blocks of memory, and translates virtual to physical addresses.<br />
<br />
'''Memory Protection Unit (MPU)'''<br><br />
Hardware that controls access permissions to blocks of memory. Unlike an MMU, a MPU does not translate virtual addresses to physical addresses.<br />
<br />
'''RESET'''<br><br />
Abbreviation of System Reset. The electronic signal which causes the target system other than the TAP controller to be reset.<br />
This signal is also known as "nSRST" "nSYSRST", "nRST", or "nRESET" in some other manuals. See also nTRST.<br />
<br />
'''nTRST'''<br><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.<br />
<br />
'''Open collector'''<br><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.<br />
<br />
'''Processor Core'''<br><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.<br />
It excludes optional coprocessors, caches, and the memory management unit.<br />
<br />
'''Remapping'''<br><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.<br />
<br />
'''RTOS'''<br><br />
Real Time Operating System.<br />
<br />
'''TAP Controller'''<br><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.<br />
<br />
'''Target'''<br><br />
The actual processor (real silicon or simulated) on which the application program is running.<br />
<br />
'''TCK'''<br><br />
The electronic clock signal which times data on the TAP data lines TMS, TDI, and TDO.<br />
<br />
'''TDI'''<br><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.<br />
<br />
'''TDO'''<br><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.<br />
<br />
'''Test Access Port (TAP)'''<br><br />
The port used to access a device's TAP Controller. Comprises TCK, TMS, TDI, TDO, and nTRST (optional).<br />
<br />
'''Transistor-transistor logic (TTL)'''<br><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.<br />
<br />
'''Word'''<br><br />
A 32-bit unit of information. Contents are taken as being an unsigned integer unless otherwise stated.<br />
== Literature and references ==<br />
This chapter lists documents, which we think may be useful to gain a deeper understanding of technical details.</div>JanBhttps://wiki.segger.com/index.php?title=UM08022_Flasher&diff=17345UM08022 Flasher2023-12-21T16:16:18Z<p>JanB: /* Features of Flasher ARM/PPC/RX/PRO */ Flasher Portable PLUS can now select 99 Images via Buttons.</p>
<hr />
<div><!---<br />
General TBD:<br />
- LG: Right now - EVERYTHING<br />
===========================================<br />
--------------------[more specific, but on multiple locations]<br />
- check if all emphasis (bold, tt, blue, etc ) have made it into the new version<br />
- Add Information -> Additional information<br />
- use of the term free-of-charge utility/tool etc<br />
- check compliant to DocStandards_Rules.txt<br />
- Remove everything regarding to Kickstarter versions? eventually create a chapter Legacy -> Kickstarter version were available for hw version 5-x (200x-200x)...[..]<br />
- 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.<br />
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.<br />
- if week keep the IDE specific stuff in the manual, add Ozone, ES and J-Link Commander were no mentioned.<br />
- IDE specifics move into wiki confirmed by Alex<br />
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)<br />
- check all sections regarding licensing<br />
- Check compliance of J-Link emDocs with typographic conventions described in AboutThisDocument.emDoc. What should be altered? e.g. references<br />
- use uref at all (not blue)?<br />
- search and decide where to use \ref (ref with page number)<br />
- why is \ref (no single "option" \uref is more basic as \ref.....)<br />
- in text, use either \ref or \iref instead of \uref<br />
- in old manual, \H3 started on a new page (not per default, but set manually for api tables etc...)<br />
- move used old images and source files (visio etc) via svn (currently copied)<br />
--------------------[grammar / vocabulary discussion]<br />
- Product names<br />
-- Use of SEGGEPROBE in this document?<br />
- use license over licence<br />
- commandline or command-line?<br />
- toolchain or tool chain?<br />
- crossreference/cross-reference/cross reference?<br />
- overcurrent?<br />
- double words?<br />
- frontend?<br />
- Unit: Kbytes, KBytes, V, mV.... 9V or 9 V? Create rule in Vocabulary<br />
- baudrate or baud rate?<br />
- stackpointer or stack pointer<br />
- check where we should replace abbreviations with the long form (e.h. "milliseconds" instead of "ms")<br />
- config or configuration<br />
- filepointer or file pointer?<br />
--------------------[J-Link dep. specific]<br />
- J-Link command strings or J-Link Command strings or J-Link Command Strings<br />
- J-Link settings file or...<br />
- J-Link control panel or ......<br />
- J-Link script files or...<br />
---><br />
Flasher is a programming tool for microcontrollers with on-chip or external flash memory.<br />
Flasher is designed for programming flash targets with the J-Flash software or stand-alone.<br />
In addition to that Flasher can also be used as a regular J-Link. For more information about J-Link in general,<br />
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].<br />
<br />
<div class="toclimit-2"><br />
__TOC__<br />
</div><br />
<br />
== Flasher overview ==<br />
Flasher connects to a PC using the USB/Ethernet/RS232 interface (what host interfaces are available depends on the Flasher model),<br />
running Windows, Linux & MacOS. In stand-alone mode,<br />
Flasher can be driven by the start/stop button, or via the RS232 interface (handshake control or ASCII interface).<br />
Flasher always has a 20-pin connector, which target interfaces are supported depends on the Flasher model:<br />
* Flasher ARM: JTAG and SWD are supported.<br />
* Flasher RX: JTAG is supported. Flasher comes with additional 14-pin RX adapter<br />
* Flasher PPC: JTAG is supported. Flasher comes with additional 14-pin PPC adapter.<br />
* Flasher PRO: JTAG and SWD are supported.<br />
* Flasher Compact: JTAG and SWD are supported.<br />
<br />
=== Features of Flasher ARM/PPC/RX/PRO ===<br />
* Three boot modes: PC-based mode, stand-alone mode, file access mode<br />
* Stand-alone JTAG/SWD programmer (Once set up, Flasher can be controlled without the use of PC program)<br />
* No power supply required, powered through USB<br />
* Supports internal and external flash devices<br />
* 128 MB memory for storage of target program<br />
* Can be used as J-Link (emulator) with a download speed of up to 720 Kbytes/second<br />
* Data files can updated via USB/Ethernet (using the J-Flash software), via FTP, via RS232 or via the file access mode of Flasher<br />
<br />
{| class="seggertable"<br />
|-<br />
! Flasher model !! Supported cores !! Supported target interfaces !! Flash programming speed (depending on target hardware)<br />
|-<br />
| Flasher ARM || ARM7/ARM9/Cortex-M || JTAG, SWD || between 170 and 300 Kbytes/second<br />
|-<br />
| Flasher RX || Renesas RX610, RX621, RX62N, RX62T || JTAG || between 30-300 Kbytes/second<br />
|-<br />
| Flasher PPC || Power PC e200z0 || JTAG || up to 138 Kbytes/second<br />
|-<br />
| Flasher PRO || ARM7/ARM9/Cortex-M Renesas RX610, RX621, RX62N, RX62T Power PC e200z0 || JTAG, SWD || between 30-300 Kbytes/ second<br />
|-<br />
|}<br />
<br />
==== Features of Flasher Compact ====<br />
<br />
* Three boot modes: PC-based mode, stand-alone mode, file access mode<br />
* Stand-alone JTAG/SWD programmer (Once set up, Flasher can be controlled without the use of PC program)<br />
* No power supply required, powered through USB<br />
* Supports internal and external flash devices<br />
* 128 MB memory for storage of target program<br />
* Can be used as J-Link (emulator) with a download speed of up to 720 Kbytes/second<br />
* Data files can updated via USB/Ethernet (using the J-Flash software) or via the file access mode of Flasher<br />
<br />
{| class="seggertable"<br />
|-<br />
! Flasher model !! Supported cores !! Supported target interfaces !! Flash programming speed (depending on target hardware)<br />
|-<br />
| Flasher ARM || ARM7/ARM9/Cortex-M || JTAG, SWD || between 170 and 300 Kbytes/second<br />
|-<br />
| Flasher RX || Renesas RX610, RX621, RX62N, RX62T || JTAG || between 30-300 Kbytes/second<br />
|-<br />
| Flasher PPC || Power PC e200z0 || JTAG || up to 138 Kbytes/second<br />
|-<br />
| Flasher Compact || ARM7/ARM9/Cortex-M Renesas RX610, RX621, RX62N, RX62T Power PC e200z0 || JTAG, SWD || between 30-300 Kbytes/ second<br />
|-<br />
|}<br />
<br />
==== Features of Flasher Portable/Flasher Portable PLUS ====<br />
<br />
* Stand-alone in-circuit-programmer (Once set up, Flasher can be controlled without the use of a PC program)<br />
* Powered by an internal rechargeable battery (standard batteries for Flasher Portable), no Laptop or external power supply required.<br />
* Multiple firmware images can be stored on Flasher<br />
* 128 MB memory for storage of target program<br />
* Flasher Portable PLUS supports a simple selection of up to 99 firmware images via buttons (since V7.90)<br />
* Supported CPUs: ARM Cortex, Legacy ARM7/9, Renesas RX, Freescale PowerPC<br />
* Supports internal and external flash<br />
* Free software updates<ref name="legitimateOwned" />, 1 year of support<br />
* Data files can be updated via the file access mode functionality or via J-Flash<br />
* Programming speed between 30-300 Kbytes/second (actual speed depends on target hardware)<br />
{{Note|1=Ethernet and RS232 as host interface are not available for Flasher Portable}}<br />
<references><br />
<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.<br />
As a legitimate owner of a SEGGER Flasher, you can always download the latest software free of charge.<br />
Though not planned and not likely, we reserve the right to change this policy.<br />
Note that older models may not be supported by newer versions of the software.<br />
Typically, we support older models with new software at least 3 years after end of life.<br />
</ref><br />
</references><br />
<br />
{| class="seggertable"<br />
|-<br />
! Supported cores !! Supported target interfaces !! Flash programming speed (depending on target hardware)<br />
|-<br />
| ARM7/ARM9/Cortex-M || JTAG, SWD || between 30-300 Kbytes/second<br />
|-<br />
| Renesas RX610, RX621, RX62N, RX62T || JTAG || between 170 and 300 Kbytes/second<br />
|-<br />
| Power PC e200z0 || JTAG || up to 138 Kbytes/second<br />
|-<br />
|}<br />
<br />
==== Working environment ====<br />
<br />
'''General'''<br><br />
The Flasher can operate from a PC with an appropriate software like J-Flash or in stand-alone mode.<br />
<br />
'''Host System'''<br><br />
IBM PC/AT or compatible CPU: 486 (or better) with at least 128MB of RAM,<br />
running Windows, Linux & MacOS. It needs to have a USB, Ethernet or RS232 interface available for communication with Flasher.<br />
<br />
'''Power supply'''<br><br />
Flasher Portable: 3x standard AAA batteries or 5V DC, min. 100 mA via USB connector.<br />
<br />
Flasher Portable PLUS: internal rechargeable 680mAh Li-Ion battery, min. 100 mA via USB connector.<br />
<br />
Other Flashers: 5V DC, min. 100 mA via USB connector.<br />
<br />
'''Installing Flasher PC-software'''<br><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><br />
More information about the package you can find in the similar [[J-Link Software and Documentation Pack]].<br><br />
The package includes U-Flash and J-Flash, the main tools for flashing targets:<br />
* J-Flash : J-Flash User Guide ([https://wiki.segger.com/UM08003_JFlash UM08003_JFlash.pdf]).<br />
* U-Flash : U-Flash User Guide ([https://www.segger.com/downloads/flasher/UM08037.pdf UM08037_UniversalFlashLoader.pdf]).<br />
<br />
=== Specifications ===<br />
<br />
<br />
==== Specifications for Flasher ARM ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Windows, Linux & MacOS<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C<br />
|-<br />
| Storage Temperature || -20 °C ... +60 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
!colspan="100%"| Mechanical<br />
|-<br />
| Size (without cables) || 121mm x 66mm x 30mm<br />
|-<br />
| Weight (without cables) || 119g<br />
|-<br />
!colspan="100%"| Available interfaces<br />
|-<br />
| USB Host interface || USB 2.0, full speed<br />
|-<br />
| Ethernet Host interface || 10/100 MBit<br />
|-<br />
| RS232 Host interface || RS232 9-pin<br />
|-<br />
| Target interface || JTAG 20-pin (14-pin adapter available)<br />
|-<br />
!colspan="100%"| JTAG Interface, Electrical<br />
|-<br />
| Power Supply || USB powered, 100mA for Flasher ARM. 500 mA if target is powered by Flasher ARM<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| Target supply voltage || Supply voltage is 5V, max.<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6 <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Max. JTAG speed || up to 12MHz<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
===== Flasher ARM download speed =====<br />
<br />
The following table lists the Flasher ARM performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! ARM7 memory download<br />
|-<br />
| Flasher ARM || 720 Kbytes/s (12MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
<br />
==== Specifications for Flasher RX ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Windows, Linux & MacOS<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C<br />
|-<br />
| Storage Temperature || -20 °C ... +60 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
!colspan="100%"| Mechanical<br />
|-<br />
| Size (without cables) || 121mm x 66mm x 30mm<br />
|-<br />
| Weight (without cables) || 119g<br />
|-<br />
!colspan="100%"| Available interfaces<br />
|-<br />
| USB Host interface || USB 2.0, full speed<br />
|-<br />
| Ethernet Host interface || 10/100 MBit<br />
|-<br />
| RS232 Host interface || RS232 9-pin<br />
|-<br />
| Target interface || JTAG 20-pin (shipped with 14-pin adapter for Renesas RX)<br />
|-<br />
!colspan="100%"| JTAG Interface, Electrical<br />
|-<br />
| Power Supply || USB powered, 100mA for Flasher RX. 500 mA if target is powered by Flasher RX<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| 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)<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6 <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Max. JTAG speed || up to 12MHz<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
===== Flasher RX download speed =====<br />
<br />
The following table lists the Flasher RX performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! Flasher RX600 series memory download<br />
|-<br />
| Flasher RX || 720 Kbytes/s (12MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
<br />
==== Specifications for Flasher PPC ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Windows, Linux & MacOS<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C<br />
|-<br />
| Storage Temperature || -20 °C ... +60 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
!colspan="100%"| Mechanical<br />
|-<br />
| Size (without cables) || 121mm x 66mm x 30mm<br />
|-<br />
| Weight (without cables) || 119g<br />
|-<br />
!colspan="100%"| Available interfaces<br />
|-<br />
| USB Host interface || USB 2.0, full speed<br />
|-<br />
| Ethernet Host interface || 10/100 MBit<br />
|-<br />
| RS232 Host interface || RS232 9-pin<br />
|-<br />
| Target interface || JTAG 20-pin (shipped with 14-pin adapter for Renesas PPC)<br />
|-<br />
!colspan="100%"| JTAG Interface, Electrical<br />
|-<br />
| Power Supply || USB powered, 100mA for Flasher PPC. 500 mA if target is powered by Flasher PPC<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| Target supply voltage || Supply voltage is 5V, max.<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6 <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Max. JTAG speed || up to 12MHz<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
===== Flasher RX download speed =====<br />
<br />
The following table lists the Flasher PPC performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! Memory download<br />
|-<br />
| Flasher PPC || 530 Kbytes/s (8 MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
<br />
==== Specifications for Flasher PRO ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Windows, Linux & MacOS<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C<br />
|-<br />
| Storage Temperature || -20 °C ... +60 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
!colspan="100%"| Mechanical<br />
|-<br />
| Size (without cables) || 121mm x 66mm x 30mm<br />
|-<br />
| Weight (without cables) || 119g<br />
|-<br />
!colspan="100%"| Available interfaces<br />
|-<br />
| USB Host interface || USB 2.0, full speed<br />
|-<br />
| Ethernet Host interface || 10/100 MBit<br />
|-<br />
| RS232 Host interface || RS232 9-pin<br />
|-<br />
| Target interface || JTAG 20-pin (14-pin adapter available)<br />
|-<br />
!colspan="100%"| JTAG Interface, Electrical<br />
|-<br />
| Power Supply || USB powered, 100mA for Flasher PRO. 500 mA if target is powered by Flasher PRO<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| Target supply voltage || Supply voltage is 5V, max.<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6 <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Max. JTAG speed || up to 12MHz<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
<br />
===== Supported CPU cores =====<br />
<br />
The Flasher PRO supports the following CPU cores:<br />
<br />
'''ARM Cortex'''<br><br />
* Cortex-A5<br />
* Cortex-A8<br />
* Cortex-A9<br />
* Cortex-R4<br />
* Cortex-R5<br />
* Cortex-M0<br />
* Cortex-M0+<br />
* Cortex-M1<br />
* Cortex-M3<br />
* Cortex-M4<br />
<br />
'''ARM (legacy cores)'''<br><br />
* ARM720T<br />
* ARM7TDMI<br />
* ARM7TDMI-S<br />
* ARM920T<br />
* ARM922T<br />
* ARM926EJ-S<br />
* ARM946E-S<br />
* ARM966E-S<br />
* ARM1136JF-S<br />
* ARM1136J-S<br />
* ARM1156T2-S<br />
* ARM1156T2F-S<br />
* ARM1176JZ-S<br />
* ARM1176JZF<br />
* ARM1176JZF-S<br />
<br />
'''Renesas RX'''<br><br />
* RX111<br />
* RX210<br />
* RX220<br />
* RX21A<br />
* RX610<br />
* RX621<br />
* RX62G<br />
* RX62N<br />
* RX62T<br />
* RX630<br />
* RX631<br />
* RX63N<br />
* RX63T<br />
<br />
'''Freescale Power PC'''<br><br />
* e200z0<br />
<br />
===== Supported Target interfaces =====<br />
<br />
The Flasher PRO supports the following target interfaces:<br />
<br />
* JTAG<br />
* SWD<br />
* FINE<br />
* SPD<br />
<br />
===== Flasher PRO download speed =====<br />
<br />
The following table lists the Flasher PRO performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! ARM7 memory download<br />
|-<br />
| Flasher PRO || 720 Kbytes/s (12MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
<br />
==== Specifications for Flasher Compact ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Microsoft Windows (x86/x64)<br>Linux (x86/x64/Arm)<br>macOS (x86/Apple M1)<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C<br />
|-<br />
| Storage Temperature || -20 °C ... +65 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
| Size (without cables) || 70mm x 45mm x 18mm<br />
|-<br />
| Weight (without cables) || 40g<br />
|-<br />
| USB Host interface || USB 2.0 (Hi-Speed); Micro USB<br />
|-<br />
| Target interface || JTAG 20-pin (14-pin adapter available)<br />
|-<br />
| Power Supply || USB powered, 130mA (idle)<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| Target supply voltage || Supply voltage is 5V, max.<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
| Supported target interfaces || SPI, QSPI, 8051 C2, cJTAG, FINE, ICSP, IIC, ISP, JTAG, PDI, SPD, SWD, SWIM, UART, UPDI<br />
|-<br />
| Serial transfer rate between Flasher Compact and target || Up to 50 MHz (Depending on target interface)<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6 <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
===== Supported CPU cores =====<br />
<br />
The Flasher Compact supports the following CPU cores:<br />
'''ARM Cortex'''<br><br />
* Cortex-A5<br />
* Cortex-A8<br />
* Cortex-A9<br />
* Cortex-R4<br />
* Cortex-R5<br />
* Cortex-M0<br />
* Cortex-M0+<br />
* Cortex-M1<br />
* Cortex-M3<br />
* Cortex-M4<br />
<br />
'''ARM (legacy cores)'''<br><br />
* ARM720T<br />
* ARM7TDMI<br />
* ARM7TDMI-S<br />
* ARM920T<br />
* ARM922T<br />
* ARM926EJ-S<br />
* ARM946E-S<br />
* ARM966E-S<br />
* ARM1136JF-S<br />
* ARM1136J-S<br />
* ARM1156T2-S<br />
* ARM1156T2F-S<br />
* ARM1176JZ-S<br />
* ARM1176JZF<br />
* ARM1176JZF-S<br />
<br />
'''Renesas RX'''<br><br />
* RX111<br />
* RX210<br />
* RX220<br />
* RX21A<br />
* RX610<br />
* RX621<br />
* RX62G<br />
* RX62N<br />
* RX62T<br />
* RX630<br />
* RX631<br />
* RX63N<br />
* RX63T<br />
<br />
'''Freescale Power PC'''<br><br />
* e200z0<br />
<br />
===== Flasher Compact download speed =====<br />
<br />
The following table lists the Flasher Compact performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! ARM7 memory download<br />
|-<br />
| Flasher Compact || 720 Kbytes/s (12MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
<br />
==== Specifications for Flasher Portable PLUS ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Windows, Linux & MacOS<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C (normal operation)<br>+5 °C ... +45 °C (battery charging)<br />
|-<br />
| Storage Temperature || -20 °C ... +45 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
| 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)<br />
|-<br />
| Charging via USB || 70 minutes (at 1A charging current)<br />
|-<br />
!colspan="100%"| Mechanical<br />
|-<br />
| Size (without cables) || 126mm x 70mm x 28mm<br />
|-<br />
| Weight (without cables) || 140g<br />
|-<br />
!colspan="100%"| Available interfaces<br />
|-<br />
| USB Host interface || USB 2.0<br />
|-<br />
| Target interface || Standard 20-pin 0.1" connector (Adapters available).<br />
|-<br />
!colspan="100%"| Target Interface, Electrical<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| Target supply voltage || Supply voltage is 4.5V, max. (depends on the current battery voltage).<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6 <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Max. JTAG speed || up to 12MHz<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
===== Supported CPU cores =====<br />
<br />
The Flasher Portable PLUS supports the following CPU cores:<br />
<br />
'''ARM Cortex'''<br><br />
* Cortex-A5<br />
* Cortex-A8<br />
* Cortex-A9<br />
* Cortex-R4<br />
* Cortex-R5<br />
* Cortex-M0<br />
* Cortex-M0+<br />
* Cortex-M1<br />
* Cortex-M3<br />
* Cortex-M4<br />
<br />
'''ARM (legacy cores)'''<br><br />
* ARM720T<br />
* ARM7TDMI<br />
* ARM7TDMI-S<br />
* ARM920T<br />
* ARM922T<br />
* ARM926EJ-S<br />
* ARM946E-S<br />
* ARM966E-S<br />
* ARM1136JF-S<br />
* ARM1136J-S<br />
* ARM1156T2-S<br />
* ARM1156T2F-S<br />
* ARM1176JZ-S<br />
* ARM1176JZF<br />
* ARM1176JZF-S<br />
<br />
'''Renesas RX'''<br><br />
* RX111<br />
* RX210<br />
* RX220<br />
* RX21A<br />
* RX610<br />
* RX621<br />
* RX62G<br />
* RX62N<br />
* RX62T<br />
* RX630<br />
* RX631<br />
* RX63N<br />
* RX63T<br />
<br />
'''Freescale Power PC'''<br><br />
* e200z0<br />
<br />
===== Supported Target interfaces =====<br />
<br />
The Flasher Portable PLUS supports the following target interfaces:<br />
* JTAG<br />
* SWD<br />
* FINE<br />
* SPD<br />
<br />
===== Flasher Portable PLUS download speed =====<br />
<br />
The following table lists the Flasher Portable PLUS performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! ARM7 memory download<br />
|-<br />
| Flasher PRO || 720 Kbytes/s (12MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
<br />
==== Specifications for Flasher Portable ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Windows, Linux & MacOS<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C<br />
|-<br />
| Storage Temperature || -20 °C ... +65 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
| Power Supply || a) USB powered, 100mA for Flasher Portable. 500 mA if target is powered by Flasher Portable<br>b) Batteries powered (3xAAA)<br />
|-<br />
!colspan="100%"| Mechanical<br />
|-<br />
| Size (without cables) || 130mm x 65mm x 25mm<br />
|-<br />
| Weight (without cables) || 120g<br />
|-<br />
!colspan="100%"| Available interfaces<br />
|-<br />
| USB Host interface || USB 2.0<br />
|-<br />
| Target interface || Standard 20-pin 0.1" connector (Adapters available).<br />
|-<br />
!colspan="100%"| Target Interface, Electrical<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| Target supply voltage || Supply voltage is 4.5V, max. (depends on the current battery voltage).<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6V <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Max. JTAG speed || up to 12MHz<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
===== Supported CPU cores =====<br />
<br />
The Flasher Portable supports the following CPU cores:<br />
<br />
'''ARM Cortex'''<br><br />
* Cortex-A5<br />
* Cortex-A8<br />
* Cortex-A9<br />
* Cortex-R4<br />
* Cortex-R5<br />
* Cortex-M0<br />
* Cortex-M0+<br />
* Cortex-M1<br />
* Cortex-M3<br />
* Cortex-M4<br />
<br />
'''ARM (legacy cores)'''<br><br />
* ARM720T<br />
* ARM7TDMI<br />
* ARM7TDMI-S<br />
* ARM920T<br />
* ARM922T<br />
* ARM926EJ-S<br />
* ARM946E-S<br />
* ARM966E-S<br />
* ARM1136JF-S<br />
* ARM1136J-S<br />
* ARM1156T2-S<br />
* ARM1156T2F-S<br />
* ARM1176JZ-S<br />
* ARM1176JZF<br />
* ARM1176JZF-S<br />
<br />
'''Renesas RX'''<br><br />
* RX111<br />
* RX210<br />
* RX220<br />
* RX21A<br />
* RX610<br />
* RX621<br />
* RX62G<br />
* RX62N<br />
* RX62T<br />
* RX630<br />
* RX631<br />
* RX63N<br />
* RX63T<br />
<br />
'''Freescale Power PC'''<br><br />
* e200z0<br />
<br />
===== Supported Target interfaces =====<br />
<br />
The Flasher Portable supports the following target interfaces:<br />
<br />
* JTAG<br />
* SWD<br />
* FINE<br />
* SPD<br />
<br />
===== Flasher Portable download speed =====<br />
<br />
The following table lists the Flasher Portable performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! ARM7 memory download<br />
|-<br />
| Flasher PRO || 720 Kbytes/s (12MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
== Working with Flasher ==<br />
<br />
This chapter describes functionality and how to use Flasher.<br />
<br />
=== Flasher Portable PLUS ===<br />
<br />
The Flasher Portable PLUS is a portable version of SEGGERs Flasher family,<br />
which has been designed to fill the need of an extremely portable, production grade,<br />
Flash programmer used for in-field firmware updates. No need to be tethered to an outlet,<br />
it is powered by an integrated Li-Ion cell (680mAh).<br />
The Flasher Portable PLUS programs flash targets in stand-alone mode or via J-Flash PC software.<br><br />
<br />
Furthermore the Flasher Portable PLUS allows the user to select between eight data images to be programmed.<br />
The images can be easily selected by using the SEL button on the front of the housing.<br />
For more information about support for multiple images, please refer to [[#Multiple File Support | Multiple File Support]].<br><br />
For setup and configuration purposes, the Flasher Portable PLUS connects to a PC via USB interface,<br />
running Windows, Linux & MacOS and has a built-in standard 20-pin J-Link target connector.<br><br />
<br />
{{Note|1=Ethernet and RS232 as host interface are not available for the Flasher Portable PLUS.}}<br />
<br />
==== Housing & Buttons ====<br />
<br />
The Flasher Portable PLUS comes with a display, which is for example used to represent the status of an ongoing flash progress.<br />
Furthermore, there are three buttons which allow the user to control Flasher Portable PLUS.<br />
For a detailed description of the functions, take a look at the table below:<br />
<br />
<!-- LG xxxxxx edit image with labels for buttons? (Is this actually necessary? Buttons are basically self-explanatory...) --><br />
[[File:Flasher_Portable_PLUS.png | 500px]]<br />
<br />
{| class="seggertable"<br />
|-<br />
! Button !! Description<br />
|-<br />
| Program || Start programming process with the currently selected image.<br />
|-<br />
| Select image || Select the image to be programmed next time the Program button is pressed.<br />
|-<br />
| 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.<br />
|-<br />
|}<br />
<br />
==== Configuration ====<br />
<br />
The Flasher Portable PLUS has some configuration options the other Flashers do not have.<br />
{| class="seggertable"<br />
|-<br />
! Option !! Description !! Value range !! Default value<br />
|-<br />
| AutoPowerOffOnIdle || Specifies the time interval after which the Flasher Portable will turn off without any user action || 1 to 3600 || 60<br />
|-<br />
| ShowDatCRCAfterProgramming || Activates displaying the data file CRC after the programming in the pop up message || 0 = inactive, 1 = active || 0<br />
|-<br />
|}<br />
<br />
If the <tt>Flasher.ini</tt> does not contain a <tt>[Config]</tt> section with the configuration option, the default value is used.<br />
<br />
'''Example:'''<br><br />
This sample will show the data file CRC after the programming and the auto power of is set to five minutes (=300 seconds).<br />
<br />
<source lang="c"><br />
[CONFIG]<br />
AutoPowerOffOnIdle = "300"<br />
ShowDatCRCAfterProgramming = "1"<br />
</source><br />
<br />
=== Flasher Portable ===<br />
<br />
The Flasher Portable is a portable version of SEGGERs Flasher family, which has been designed to fill the need of an extremely portable,<br />
production grade, Flash programmer used for in-field firmware updates. No need to be tethered to an outlet,<br />
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><br />
<br />
Furthermore the Flasher Portable allows the user to select between four data images to be programmed.<br />
The images can be easily selected by using the arrow buttons on the front of the housing.<br />
For more information about support for multiple images, please refer to [[#Multiple File Support | Multiple File Support]].<br><br />
For setup and configuration purposes, the Flasher Portable connects to a PC via USB interface,<br />
running Windows, Linux & MacOS and has a built-in standard 20-pin J-Link target connector.<br><br />
<br />
{{Note|1=Ethernet and RS232 as host interface are not available for the Flasher Portable.}}<br />
<br />
==== Housing & Buttons ====<br />
<br />
The Flasher Portable comes with several leds which are for example used to represent the status of an ongoing flash progress.<br />
Furthermore, there are three buttons which allow the user to control Flasher Portable.<br />
For a detailed description of the functions, take a look at the two tables below:<br />
<br />
<!-- LG xxxxxx edit image with labels for buttons?--><br />
[[File:Flasher_Portable_Top_2.png | 500px]]<br />
<br />
{| class="seggertable"<br />
|-<br />
! LED !! Description<br />
|-<br />
| ACTIVE || GREEN. Blinks while the Flasher Portable is busy / performs operations on the target.<br />
|-<br />
| PASS/FAIL || GREEN/RED. Indicates, if the last flashing cycle was successful.<br />
<ul><br />
<li> GREEN: Flashing cycle completed successfully.</li><br />
<li> RED: Flashing cycle completed with error.</li><br />
</ul><br />
|-<br />
| 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]].<br />
|-<br />
| POWER || GREEN: Indicates if Flasher is currently powered. Blinks while Flasher Portable tries to enumerate via USB.<br />
|-<br />
| 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.<br />
|-<br />
|}<br />
<br />
{| class="seggertable"<br />
|-<br />
! Button !! Description<br />
|-<br />
| Program || Start programming process with the currently selected image.<br />
|-<br />
| Select image || Select the image to be programmed next time the <tt>Program</tt> button is pressed.<br />
|-<br />
| 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<br />
|-<br />
|}<br />
<br />
=== File system ===<br />
<br />
The Flasher supports 8.3 filenames only (8 characters filename, 3 characters file extension).<br />
Using longer filenames may result in incorrect operation. Integrated functions,<br />
like the FTP server or the terminal server, will refuse writing files with long filenames.<br />
<br />
=== Setting up the IP interface ===<br />
<br />
Setting up the IP interface<br />
Some of the Flasher models come with an additional Ethernet interface to communicate with the host system.<br />
These Flashers also come with a built-in webserver which allows some basic setup of the emulator,<br />
e.g. configuring a default gateway which allows using it even in large intranets. For more information,<br />
please refer to [[#TCP Services | TCP Services]].<br />
<br />
==== Connecting the first time ====<br />
<br />
When connecting Flasher the first time, it attempts to acquire an IP address via DHCP.<br />
The recommended way for finding out which IP address has been assigned to Flasher is, to use the J-Link Configurator.<br />
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.<br />
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''.<br />
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,<br />
please refer to ''UM08001, J-Link / J-Trace User Guide'', chapter ''Setup'', section ''Setting up the IP interface''.<br />
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]].<br />
<br />
=== Operating modes ===<br />
<br />
All Flashers except the Flasher ATE are able to boot in 3 different modes:<br />
<br />
* PC-based mode<br />
* Stand-alone mode<br />
* File access mode<br />
<br />
{{Note|1=The Flasher ATE only supports the stand-alone mode.}}<br />
<br />
'''Definition PC-based mode'''<br><br />
Flasher is connected to a PC via USB/Ethernet and controlled by a PC application (J-Flash).<br />
If there is an RS232 connection to a PC, does not have any influence on if PC-based mode is entered or not.<br />
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, ...)<br />
<br />
'''Definition Stand-alone mode'''<br><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.<br />
<br />
'''Definition file access mode'''<br><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.<br />
In this mode, Flasher enumerates as a mass storage device (like an USB Stick) at the host PC.<br />
In this mode, configuration + data files can be manually placed on the Flasher and the Flasher logfile can be read out.<br />
If you are using a self-powered Flasher such as the Flasher Portable Plus, the Flasher must be turned off before connecting it.<br />
<br />
==== PC-based mode ====<br />
If you want to use Flasher for the first time you need to install the J-Link software and documentation package.<br />
After installation, connect Flasher to the host PC via USB or Ethernet.<br />
For more information about how to install the J-Link software and documentation package please refer to [[J-Link Software and Documentation Pack]].<br />
<br />
===== Connecting the target system =====<br />
<br />
'''Power-on sequence'''<br><br />
In general, Flasher should be powered on before connecting it with the target device.<br />
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.<br />
Power-on the device after you connected Flasher to it. Flasher will boot in "PC-based mode".<br />
<br />
'''Verifying target device connection with J-Link.exe'''<br><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.<br />
Then start the J-Link command line tool <tt>JLink.exe</tt>,<br />
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.<br />
The screenshot below shows the output of <tt>JLink.exe</tt>.<br />
<br />
[[File:flasher_jlinkmode.gif]]<br />
<br />
===== LED status indicators =====<br />
<br />
In PC-based mode, there are also certain LED status codes defined:<br />
<br />
{| class="seggertable"<br />
|-<br />
! # !! Status of LED !! Meaning<br />
|-<br />
| 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.<br />
|-<br />
| 0 || GREEN<br>constant || Flasher enumeration process is complete and it is ready to be controlled by a PC application.<br />
|-<br />
|}<br />
<br />
==== Stand-alone mode ====<br />
<br />
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]].<br />
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).<br />
In the "stand-alone mode" Flasher can be used as a stand-alone flash programmer.<br><br />
<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]].}}<br />
<br />
===== LED status indicators =====<br />
Progress and result of an operation is indicated by Flasher's LEDs. The behavior is different for J-Link and stand-alone mode.<br />
For a definition of the different modes, please refer to [[#Operating modes | Operating modes]].<br />
The following table describes the behavior of the LEDs in stand-alone mode.<br />
<br />
{| class="seggertable"<br />
|-<br />
! # !! Status of LED !! Meaning<br />
|-<br />
| 0 || GREEN<br>constant || Flasher waits for a start trigger to perform an operation in stand-alone mode.<br />
|-<br />
| 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><br />
|-<br />
| 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.<br />
|-<br />
|}<br />
Older Flasher models have a different behavior.<br />
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:<br />
<br />
* 1621xxxxx (Flasher ARM V2)<br />
* 1630xxxxx (Flasher ARM V3)<br />
* 4210xxxxx (Flasher PPC V1)<br />
* 4110xxxxx (Flasher RX V1)<br />
<br />
{| class="seggertable"<br />
|-<br />
! # !! Status of LED !! Meaning<br />
|-<br />
| 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.<br />
|-<br />
| 1 || GREEN<br>constant || Connect to target and perform init sequence.<br />
|-<br />
| 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><br />
|-<br />
| 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.<br />
|-<br />
|}<br />
<br />
==== File access mode ====<br />
<br />
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".<br />
If you are using a self-powered Flasher such as the Flasher Portable Plus, the Flasher must be turned off before connecting it.<br />
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.<br />
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>.<br />
<br />
[[File:flasher_mode_msd.gif]]<br />
<br />
<tt>FLASHER.CFG</tt> contains the configuration settings for programming the target device and <tt>FLASHER.DAT</tt> contains the data to be programmed.<br />
<tt>FLASHER.LOG</tt> contains all logging information about the commands, performed in stand-alone mode.<br />
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><br />
<br />
Currently, J-Flash does not support to configure Flasher for automated serial number programming.<br><br />
<br />
If you want to configure multiple Flasher for the same target you do not have to use J-Flash all the time.<br />
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".<br />
<br />
=== Setting up Flasher for stand-alone mode ===<br />
{{Note| All Options how to set up the Flasher for stand-alone mode you can find here: [[Flasher/Download project to Flasher|Download project to the Flasher]]}}<br />
<br />
In order to set up Flasher for the stand-alone mode it needs to be configured once using the J-Flash software.<br />
For more information about J-Flash, please refer to the ''J-Flash User Guide''.<br><br />
<br />
After starting J-Flash, open the appropriate J-Flash project for the target Flasher shall be configured for, by selecting '''File''' -> '''Open Project'''.<br />
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><br />
<br />
After the appropriate project has been opened / created, the data file which shall be programmed needs to be loaded, by selecting '''File''' -> '''Open'''.<br />
After this J-Flash should look like in the screenshot below.<br />
<br />
[[File:jflash_projectfile_datafile.gif]]<br />
<br />
Before downloading the configuration (project) and program data (data file) to Flasher, the connection type (USB/IP) needs to be selected in the project.<br />
These settings are also saved on a per-project basis, so this also only needs to be setup once per J-Flash project.<br />
The connection dialog is opened by clicking '''Options''' -> '''Project settings''' -> '''General'''.<br />
<br />
[[File:jflash_connection_dialog.gif]]<br />
<br />
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.<br />
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.<br />
The user then can simply select the Flash he wants to download the configuration to.<br />
<br />
[[File:EmuSelectionDialog.gif]]<br />
<br />
In order to download the configuration and program data to the Flasher, simply select '''File''' -> '''Download config & data file to Flasher'''.<br />
<br />
[[File:jflash_download_to_emul.gif]]<br />
<br />
The J-Flash log window indicates that the download to the emulator was successful.<br />
<br />
[[File:jflash_download_to_emu_succ.gif]]<br />
<br />
From now on, Flasher can be used in stand-alone mode (without host PC interaction) for stand-alone programming.<br />
<br />
==== Preparing for stand-alone operation manually ====<br />
<br />
As an alternative, J-Flash can also be used to save config and data file to a hard drive.<br><br />
<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,<br />
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.<br />
<br />
'''Creating config and data files'''<br><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><br />
<br />
For some devices, additional files (*.PEX) are needed.<br />
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.<br />
<br />
'''About *.PEX files'''<br><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,<br />
the following needs to be taken care of:<br><br />
<br />
For some devices, special connect, reset etc. sequences are necessary which are stored in so-called *.PEX files on the Flasher.<br><br />
<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><br />
<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><br />
The *.PEX files need to be placed in a subdirectory with the same name as the corresponding *.cfg file.<br />
J-Flash creates a directory with the correct name automatically when a config file is created.<br><br />
<br />
Example:<br><br />
<br />
MyConf0 is a project for a device that requires a *.PEX file for connect.<br><br />
MyConf1 is a project for a device that requires no *.PEX file at all.<br />
<br />
[[File:PEX_File_Flasher.png]]<br />
<br />
=== Universal Flash Loader mode ===<br />
<br />
As an alternative to the stand-alone mode, configured via J-Flash, there is the Universal Flash Loader mode.<br />
While the normal stand-alone mode relies on using the debug interface of the device, the Universal Flash Loader<br />
mode uses device or vendor specific programming interfaces and protocols and therefore it is independent of the<br />
CPU core.<br><br />
<br />
The Universal Flash Loader is available for the following Flasher models:<br />
* Flasher PRO<br />
* Flasher Compact<br />
* Flasher Portable PLUS<br />
<br />
For some of the supported devices, SEGGER offers specific adapters.<br />
<br />
==== Preparing manually ====<br />
<br />
The Universal Flash Loader uses an configuration file (*.UNI), a device specific flash programming algorithm (*.PEX) and a data file (*.DAT).<br />
<br />
===== Configuration =====<br />
<br />
The configuration file basically is split into three parts.<br />
The first part, the section [DEVICE], controls the generic behavior of the Universal Flash Loader.<br />
It specifies which protocol driver and data file to use. It allows enabling and configuring target power<br />
and it defines which actions to perform.<br />
The second part consists of one or more [BANKx] sections, which contain information about the memories.<br />
The third part, the section [CONFIG], includes configuration settings for the protocol driver.<br><br />
<br />
An .UNI file might look as follows:<br><br />
<br />
<source lang="c"><br />
[OPTIONS]<br />
TargetPower = "0"<br />
ChipErase = "0"<br />
<br />
[TASKS]<br />
CheckBlank = "1"<br />
Erase = "1"<br />
Program = "1"<br />
Verify = "1"<br />
Secure = "1"<br />
<br />
[DEVICE]<br />
Algo = "RL78.PEX"<br />
Data = "ALL_6k.dat"<br />
<br />
[BANK0]<br />
; Code Flash<br />
Base = "0x00000000"<br />
Size = "0x00004000"<br />
Sect = "0x00000400"<br />
<br />
[BANK1]<br />
; Data Flash<br />
Base = "0x000F1000"<br />
Size = "0x00000800"<br />
Sect = "0x00000400"<br />
<br />
[CONFIG]<br />
BaudRate = "1000000"<br />
ClearConfigOnConnect = "0x00"<br />
Security = "0xFF"<br />
ShieldStart = "0x0000"<br />
ShieldEnd = "0x000F"<br />
</source><br />
<br />
'''[OPTIONS]'''<br><br />
'''TargetPower'''<br><br />
If set to a value >0, power is applied to the target.<br />
The value defines the delay (in ms) after enabling the target power supply and before starting to communicate with the target.<br />
<br />
'''ChipErase'''<br><br />
If set to 1, the chip erase function is called for erasing the chip.<br><br />
{{Note|1=Do not enable this setting if the flash programming algorithm does not support chip erase.}}<br />
<br />
'''[TASKS]'''<br><br />
'''CheckBlank'''<br><br />
Defines if a blank check should be performed before erasing a sector.<br />
<br />
'''Erase'''<br><br />
Defines if the sector should be erased before programming.<br />
<br />
'''Program'''<br><br />
Defines if the sector should be programmed.<br />
<br />
'''Verify'''<br><br />
Defines if the sector should be verified after programming.<br />
<br />
'''Secure'''<br><br />
Defines if the device should be secured or protected against read-out after verifying.<br />
<br />
'''[DEVICE]'''<br><br />
'''Algo'''<br><br />
File name of the flash programming algorithm. This file is provided by SEGGER and will typically support a series of devices.<br />
<br />
'''Data'''<br><br />
File name of the data file to program. The Flasher only supports the Flasher .dat file format.<br />
Flasher .dat files can be generated by J-Flash or Universal Flash Loader and offer high performance together with high flexibility.<br />
<br />
'''[BANKx]'''<br><br />
x blocks with configuration data for the flash banks. All three parameters (Base, Size and Sect) are mandatory.<br />
<br />
'''Base'''<br><br />
Base address of the flash bank.<br />
<br />
'''Size'''<br><br />
Total size of the flash bank.<br />
<br />
'''Sect'''<br><br />
Sector size of the flash bank.<br />
<br />
'''[CONFIG]'''<br><br />
This section includes specific configuration data for the flash programming algorithm.<br><br />
There are no general parameters.<br />
<br />
{{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. }}<br />
<br />
==== Preparing using the PC utility ====<br />
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.<br />
<br />
[[File:Universal Flash Loader.png]]<br />
<br />
The Universal Flash Loader Configurator comes with a large list of devices and flash programming algorithms. If you are going to<br />
use a device from one of the supported families which currently is not available in the utility, feel free to contact the support.<br />
<br />
=== Multiple File Support ===<br />
<br />
It is also possible to have multiple data files and config files on Flasher, to make Flasher more easy to use in production environment.<br />
To choose the correct configuration file and data file pair, a <tt>FLASHER.INI</tt> file is used.<br />
This init file contains a <tt>[FILES]</tt> section which describes which configuration file and which data file should be used for programming.<br />
A sample content of a FLASHER.INI file is shown below:<br><br />
<br />
<source><br />
[FILES]<br />
DataFile = "Flasher1.dat"<br />
ConfigFile = "Flasher1.cfg"<br />
</source><br />
<br />
Using this method all configuration files and data files which are used in the production only have to be downloaded once.<br />
From there on a configuration file / data file pair can be switched by simply replacing the <tt>FLASHER.INI</tt> by a new one,<br />
which contains the new descriptions for the configuration file and data file. The <tt>FLASHER.INI</tt> can be replaced in two ways:<br />
<ol><br />
<li>Boot Flasher in file access mode in order to replace the <tt>FLASHER.INI</tt></li><br />
<li><br />
If Flasher is already integrated into the production line, runs in stand-alone mode and can not be booted in other mode:<br />
Use the file I/O commands provided by the ASCII interface of Flasher, to replace the <tt>FLASHER.INI</tt>.<br />
For more information about the file I/O commands, please refer to [[#File I/O commands | File I/O commands]].<br />
</li><br />
</ol><br />
{{Note|1=Flasher supports 8.3 filenames only (8 characters filename, 3 characters file extension). Using longer filenames may result in incorrect operation.}}<br />
<br />
==== Flasher Portable specifics ====<br />
<br />
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><br />
<br />
Which config / data file pair is used for which image selection position is determined by the contents of the FLASHER.INI.<br />
For this, the FLASHER.INI contents in the <tt>[FILES]</tt> section have been extended.<br />
The sample below shows how to enable the user to select between four different images on the Flasher portable via the select / arrow button:<br />
<br />
<source><br />
[FILES]<br />
DataFile = "First.dat"<br />
ConfigFile = "First.cfg"<br />
DataFile1 = "Second.dat"<br />
ConfigFile1 = "Second.cfg"<br />
DataFile2 = "Third.dat"<br />
ConfigFile2 = "Third.cfg"<br />
DataFile3 = "Fourth.dat"<br />
ConfigFile3 = "Fourth.cfg"<br />
</source><br />
<br />
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.<br />
From there on, switching between the files can be done by simply using the selection button of Flasher Portable.<br />
<br />
===== Example =====<br />
<br />
1 Target, 2 Datafiles (e.g. boot loader und application) --> same configuration file (*.CFG) but different data files (*.DAT) should be used.<br><br />
<br />
* Open pre-configured J-Flash project<br />
* File -> Save Flasher config file ... (DEFAULT.CFG)<br />
* Open data file 1 (boot loader)<br />
* File -> Save Flasher data file ... (BOOT.DAT)<br />
* Open data file 2 (application)<br />
* File -> Save Flasher data file ... (APP.DAT)<br />
* Create the a FLASHER.INI file (content see below)<br />
* Connect the Flasher in file access mode to the PC<br />
* Copy DEFAULT.CFG, BOOT.DAT, APP.DAT and FLASHER.INI on the Flasher<br />
<br />
FLASHER.INI content:<br><br />
<br />
<source><br />
[FILES]<br />
DataFile = "BOOT.DAT"<br />
ConfigFile = "DEFAULT.CFG"<br />
DataFile1 = "APP.DAT"<br />
ConfigFile1 = "DEFAULT.CFG"<br />
</source><br />
<br />
==== Flasher Portable PLUS specifics ====<br />
<br />
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><br />
<br />
Which config / data file pair is used for which image selection position is determined by the contents of the FLASHER.INI.<br />
For this, the FLASHER.INI may contain several <tt>[BATCH]</tt> sections.<br />
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:<br />
<br />
<source><br />
[BATCH]<br />
DataFile = "First.dat"<br />
ConfigFile = "First.cfg"<br />
[BATCH1]<br />
DataFile = "Second.dat"<br />
ConfigFile = "Second.cfg"<br />
[BATCH2]<br />
DataFile = "Third.dat"<br />
ConfigFile = "Third.cfg"<br />
[BATCH7]<br />
DataFile = "Proj_8.dat"<br />
ConfigFile = "Proj_8.cfg"<br />
[BATCH15]<br />
DataFile = "Proj_16.dat"<br />
ConfigFile = "Proj_16.cfg"<br />
</source><br />
<br />
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.<br />
From there on, switching between the files can be done by simply using the selection button of Flasher Portable PLUS.<br />
<br />
Please also consider the chapter [[#Batch Programming in stand-alone mode | Batch Programming in stand-alone mode]].<br />
<br />
{{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.}}<br />
{{Note|1=You may have gaps in the list. The missing entries will be skipped when selecting the next configuration.}}<br />
{{Note|1=The <tt>[Files]</tt> section is supported by the Flasher Portable PLUS, too. But the number of configuration is limited to four.}}<br />
<br />
===== Example =====<br />
<br />
1 Target, 2 Datafiles (e.g. boot loader und application) --> same configuration file (*.CFG) but different data files (*.DAT) should be used.<br><br />
<br />
* Open pre-configured J-Flash project<br />
* File -> Save Flasher config file ... (DEFAULT.CFG)<br />
* Open data file 1 (boot loader)<br />
* File -> Save Flasher data file ... (BOOT.DAT)<br />
* Open data file 2 (application)<br />
* File -> Save Flasher data file ... (APP.DAT)<br />
* Create the a FLASHER.INI file (content see below)<br />
* Connect the Flasher in file access mode to the PC<br />
* Copy DEFAULT.CFG, BOOT.DAT, APP.DAT and FLASHER.INI on the Flasher<br />
<br />
FLASHER.INI content:<br><br />
<br />
<source><br />
[BATCH]<br />
DataFile = "BOOT.DAT"<br />
ConfigFile = "DEFAULT.CFG"<br />
DisplayName = "Bootloader"<br />
[BATCH1]<br />
DataFile = "APP.DAT"<br />
ConfigFile = "DEFAULT.CFG"<br />
DisplayName = "Application"<br />
[BATCH2]<br />
DataFile = "BOOT.DAT"<br />
ConfigFile = "DEFAULT.CFG"<br />
DataFile1 = "APP.DAT"<br />
ConfigFile1 = "DEFAULT.CFG"<br />
DisplayName = "BL and App"<br />
</source><br />
<br />
=== Custom labels ===<br />
<br />
Flasher supports to assign custom labels to configurations. This allows to specify easy to remember names for configurations that are stored on the Flasher.<br />
<br />
==== Hardware and software requirements ====<br />
This feature is supported by the following models:<br />
* Flasher Portable PLUS<br />
<br />
This feature is supported since V6.30e of the software package and firmware<br />
<br />
==== Assigning labels ====<br />
The configuration and data file pairs are specified in the <tt>FLASHER.INI</tt> file:<br />
<source><br />
[FILES]<br />
DataFile = "IMAGE0.dat"<br />
ConfigFile = "IMAGE0.cfg"<br />
DataFile1 = "IMAGE1.dat"<br />
ConfigFile1 = "IMAGE1.cfg"<br />
</source><br />
<br />
By default, Flasher will show the names of the configuration and data file:<br />
[[File:FW1_smartwatch_nolabel.png]]<br />
[[File:FW2_smart_meter_nolabel.png]]<br />
<br />
By adding <tt>DisplayName</tt>, <tt>DisplayName1</tt>, ... keys to the <tt>FLASHER.INI</tt>, a custom label can be shown instead:<br />
<source><br />
[FILES]<br />
DisplayName = "FW smartwatch"<br />
DataFile = "IMAGE0.dat"<br />
ConfigFile = "IMAGE0.cfg"<br />
DisplayName1 = "FW smart meter"<br />
DataFile1 = "IMAGE1.dat"<br />
ConfigFile1 = "IMAGE1.cfg"<br />
</source><br />
<br />
The images will now be shown as follows:<br />
[[File:FW1_smartwatch_label.png]]<br />
[[File:FW2_smart_meter_label.png]]<br />
<br />
==== Considerations ====<br />
* 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.<br />
<br />
=== Programming multiple targets ===<br />
<br />
It is possible to program multiple targets which are located in a JTAG chain.<br />
The targets will be programmed each with a configuration and a data file.<br><br />
The configuration for the desired target must be selected before it can be programmed,<br />
this can be done with the <tt>#SELECT</tt> command.<br />
For more information how to use the <tt>#SELECT</tt> command please refer to the [[#ASCII_command_interface|ASCII command interface]].<br />
<br />
'''Example'''<br><br />
Three devices should be programmed.<br><br />
<br />
JTAG Chain: ''TDI'' --> ''Device2'' --> ''Device1'' --> ''Device0'' --> ''TDO''<br><br />
<br />
Three configurations would be stored on the flasher:<br><br />
<br />
Config 0: Configured to program Device0 (DEVICE0.CFG, DEVICE0.DAT)<br><br />
Config 1: Configured to program Device1 (DEVICE1.CFG, DEVICE1.DAT)<br><br />
Config 2: Configured to program Device2 (DEVICE2.CFG, DEVICE2.DAT)<br><br />
<br />
Selection and programming of the target will be done via the ASCII interface:<br><br />
<br />
<source><br />
#SELECT DEVICE0<br />
#AUTO<br />
#SELECT DEVICE1<br />
#AUTO<br />
#SELECT DEVICE2<br />
#AUTO<br />
</source><br />
<br />
==== Programming multiple targets with J-Flash ====<br />
<br />
Programming multiple targets can also be done via J-Flash using the command line interface.<br />
For this each target must be handled with its own project file.<br />
<br />
'''Example'''<br><br />
<br />
<source><br />
JFlash.exe -openproj"Device0.jflash" -open"Device0.hex" -auto -exit<br />
JFlash.exe -openproj"Device1.jflash" -open"Device1.hex" -auto -exit<br />
JFlash.exe -openproj"Device2.jflash" -open"Device2.hex" -auto -exit<br />
</source><br />
<br />
=== Batch Programming in stand-alone mode ===<br />
<br />
Batch programming allows to execute different stand-alone mode jobs in batch to be executed in immediate succession, without any user interaction in between.<br />
This can be used for example to program multiple targets in a JTAG-Chain or multiple data files to a target.<br><br />
A batch may contains an unlimited number of configurations which consist of a data file (*.DAT) and config file (*.CFG).<br />
For further information regarding config and data files, please refer to [[#Preparing for stand-alone operation manually | Preparing for stand-alone operation manually]].<br><br />
In order to specify the batch jobs, a FLASHER.INI file is used.<br />
This init file contains a [BATCH] section which describes which configuration pairs (*.DAT and *.CFG file) should be used for each batch job.<br />
A sample content of a FLASHER.INI file is shown below:<br><br />
<br />
<source><br />
[BATCH]<br />
DataFile = "Flasher0.dat"<br />
ConfigFile = "Flasher0.cfg"<br />
DataFile1 = "Flasher1.dat"<br />
ConfigFile1 = "Flasher1.cfg"<br />
</source><br />
<br />
[[File:Batch_Jobs.bmp]]<br />
<br />
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.<br />
<br />
<br />
[[File:Batch_Programming.bmp]]<br />
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<br />
currently executed action.<br />
<br />
<br />
[[File:Batch_Result.bmp]]<br />
The result of the programming will be shown on the screen after finishing all jobs.<br />
<br />
<br />
Creating / Replacing of the FLASHER.INI file can done in two ways:<br><br />
<ol><br />
<li>Boot Flasher in file access mode in order to replace the FLASHER.INI</li><br />
<li><br />
If Flasher is already integrated into the production line, runs in stand-alone mode and can not be booted in other mode:<br />
Use the file I/O commands provided by the ASCII interface of Flasher, to replace the FLASHER.INI .<br />
For more information about the file I/O commands, please refer to [[#File I/O commands | File I/O commands]].<br />
In case of an error occurred during execution, the Flasher terminates the entire batch processing.<br />
</li><br />
</ol><br />
{{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.}}<br />
{{Note|1=Flasher supports 8.3 filenames only (8 characters filename, 3 characters file extension). Using longer filenames may result in incorrect operation.}}<br />
<br />
==== Flasher Portable specifics ====<br />
<br />
Flasher Portable allows to choose between four different batches during runtime by using the select/arrow button on the front of Flasher Portable.<br />
Which batch configuration is used for which image selection position is specified in the FLASHER.INI.<br />
For this, the FLASHER.INI contents in the [BATCH] section have been extended.<br />
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><br />
<br />
<source><br />
[BATCH]<br />
DataFile = "Flasher0.dat"<br />
ConfigFile = "Flasher0.cfg"<br />
DataFile1 = "Flasher1.dat"<br />
ConfigFile1 = "Flasher1.cfg"<br />
DataFile2 = "Flasher2.dat"<br />
ConfigFile2 = "Flasher2.cfg"<br />
[BATCH1]<br />
DataFile = "TEST.dat"<br />
ConfigFile = "Test.cfg"<br />
[BATCH2]<br />
DataFile = "VALIDATE.dat"<br />
ConfigFile = "Flasher0.cfg"<br />
</source><br />
<br />
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.<br />
From there on, switching between the batches can be done by simply using the selection button of Flasher Portable.<br />
<br />
<br />
<br />
==== Examples ====<br />
<br />
'''Example 1:''' Programming two Data files to the same target<br><br />
<br />
* Open your J-Flash project.<br />
* Use File -> Save Flasher config file... to save the .CFG file (in this example: STM32F4.CFG).<br />
* Select the first binary and use File -> Save Flasher Data file... to save the first .DAT file (in this example: DATA0.DAT).<br />
* Select the second binary and use File -> Save Flasher Data file... to save the second data file .DAT file (in this example: DATA1.DAT).<br />
* Copy the Files to the Flasher e.g. by using file access mode.<br />
* Create a FLASHER.INI file in the root directory of the Flasher.<br />
* Exemplary content of FLASHER.INI:<br><br />
<source><br />
[BATCH]<br />
DataFile = "DATA0.dat"<br />
ConfigFile = "emPower.cfg"<br />
DataFile1 = "DATA1.dat"<br />
ConfigFile1 = "emPower.cfg"<br />
</source><br />
<br />
<br />
'''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><br />
Example scenario: 2 Devices in a JTAG chain, a STM32F1 and a STM32F4. <br><br />
<br />
* Follow the same as described before and additionally:<br />
* Create one project file per target (and create a .CFG file of each one).<br />
* Make sure each project file is configured correctly, especially the JTAG-Chain position (See UM8003 "J-Flash" for more detailed info).<br />
* Exemplary content of FLASHER.INI:<br><br />
<source><br />
[BATCH]<br />
DataFile = "F1DATA.dat"<br />
ConfigFile = "STM32F1.cfg"<br />
DataFile1 = "F4DATA0.dat"<br />
ConfigFile1 = "STM32F4.cfg"<br />
DataFile2 = "F4DATA1.dat"<br />
ConfigFile2 = "STM32F4.cfg"<br />
</source><br />
<br />
'''Example 3:''' Using multiple Batch sections with Flasher Portable.<br><br />
Example scenario: 2 Devices in a JTAG chain, a STM32F1 and a STM32F4.<br><br />
Selection 1 will program the STM32F1 target.<br><br />
Selection 2 will program the STM32F4 target using "F4DATA0.dat".<br><br />
Selection 3 will program the STM32F4 target using "F4DATA1.dat".<br><br />
Selection 4 will execute 1, 2 and 3 in sequence.<br><br />
* Exemplary content of FLASHER.INI:<br><br />
<source><br />
[BATCH]<br />
DataFile = "F1DATA.dat"<br />
ConfigFile = "STM32F1.cfg"<br />
[BATCH1]<br />
DataFile = "F4DATA0.dat"<br />
ConfigFile = "STM32F4.cfg"<br />
[BATCH2]<br />
DataFile = "F4DATA1.dat"<br />
ConfigFile = "STM32F4.cfg"<br />
[BATCH3]<br />
DataFile = "F1DATA.dat"<br />
ConfigFile = "STM32F1.cfg"<br />
DataFile1 = "F4DATA0.dat"<br />
ConfigFile1 = "STM32F4.cfg"<br />
DataFile2 = "F4DATA1.dat"<br />
ConfigFile2 = "STM32F4.cfg"<br />
</source><br />
<br />
=== Serial number programming ===<br />
<br />
Flasher supports programming of serial numbers. In order to use the serial number programming feature,<br />
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><br />
<br />
In general, Flasher supports two ways of programming a serial number into the target:<br />
<br />
#<br />
#* Programming continuous serial numbers.<br />
#* The serial number is 1-4 bytes in size.<br />
#* The start serial number, increment, serial number size, and address are configured in the J-Flash project.<br />
#<br />
#* Programming custom serial numbers from a serial number list file.<br />
#* The start line within the serial number list file to get the next serial number bytes, line increment, serial number size, and address is configured in the J-Flash project.<br />
#* The serial number list file needs to be specified and created by the user.<br />
<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.}}<br />
<br />
==== Serial number settings ====<br />
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.<br />
This is done by enabling the '''Program serial number''' option as shown in the screenshot and table below:<br />
<br />
[[File:UM08039_SN_Sample_JFlashSettings.png]]<br />
<br />
{| class="seggertable"<br />
|-<br />
!| Setting || Meaning<br />
|-<br />
| <tt>Address</tt> || The address the serial number should be programmed at.<br />
|-<br />
| <tt>Length</tt> ||<br />
The length of the serial number (in bytes) that 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 8 is selected as length, the serial number and its complement are programmed at the given address.<br />
* In case a serial number list file is given, the 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 '''Length''', the remaining bytes are filled with 0s. No complements etc. are added to the serial number.<br />
|-<br />
| <tt>Next SN</tt> ||<br />
* In case no serial number list file is given, '''Next SN''' is the next serial number which should be programmed. The serial number is always stored in flash memory in little-endian format.<br />
* In case a serial number list file is given, '''Next SN''' describes the line of the serial number list file where to read the next serial number bytes from. The Flasher starts counting at line 0, so in order to start serial number programming with the first line of the <tt>SNList.txt</tt>, '''Next SN''' needs to be set to 0.<br />
|-<br />
| <tt>Increment</tt> || Specifies by how much '''Next SN''' is incremented.<br />
|}<br />
<br />
=== Serial number file ===<br />
When selecting '''File -> Download serial number file to Flasher''', J-Flash will create a serial number file named as <tt><JFlashProjectName>_Serial.txt</tt>.<br />
This file is downloaded as <tt>Serial.txt</tt> on the Flasher.<br />
The file is generated based on the serial number settings in the J-Flash project and will contain the value defined by the '''Next SN''' option.<br />
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.<br />
<br />
==== Serial number list file ====<br />
<br />
In order to program custom serial numbers which can not be covered by the standard serial number scheme provided by J-Flash<br />
(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.<br />
<br />
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.<br />
This file is downloaded as <tt>SNList.txt</tt> on the 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<br />
* Each byte of the serial number is described by two hexadecimal digits.<br />
<br />
'''Example'''<br><br />
A 8-byte serial number should be programmed at address 0x08000000.<br><br />
<br />
It should be programmed as follows in the memory:<br><br />
<br />
<tt>0x08000000: 0x01 0x02 0x03 0x04 0x55 0x66 0x77 0x88</tt><br><br />
<br />
The serial number list file should look as follows:<br><br />
<br />
<tt>0102030455667788</tt><br />
<br />
[[File:SN_SNList.gif]]<br />
<br />
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><br />
<br />
Which line Flasher will read at the next programming cycle, is configured via the <tt>Next SN</tt> option in J-Flash.<br />
For more information, please refer to [[#Serial number settings | Serial number settings]].<br />
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><br />
<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.}}<br />
{{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.}}<br />
<br />
==== Programming process ====<br />
<br />
Flasher will increment the serial number in SERIAL.TXT by the value defined in <tt>Increment</tt>, after each successful programming cycle.<br><br />
<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><br />
<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.<br />
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.}}<br />
<br />
==== Downloading serial number files to Flasher ====<br />
<br />
Downloading the serial number files needs to be done explicitly by selecting '''File-> Download serial number file to Flasher'''.<br />
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.<br />
<br />
==== Sample setup ====<br />
<br />
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.<br />
<br />
'''Defining serial number address, length and start value'''<br><br />
In the J-Flash project the following needs to be defined:<br><br />
* <tt>Address</tt> is 0x08001000<br />
* <tt>Next SN</tt> is 1234567<br />
* <tt>Increment</tt> is 1<br />
* <tt>Len</tt> is 4 (bytes)<br />
<br />
[[File:SN_Sample_JFlashSettings.gif]]<br />
<br />
'''Downloading configuration, data and serial number to Flasher.'''<br><br />
After setting up the rest of the configuration (Target interface etc.) and selecting an appropriate data file, the configuration,<br />
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><br />
<br />
[[File:SN_Sample_DownloadToFlasher.gif]]<br />
<br />
After downloading the serial number to Flasher, J-Flash also created the <tt><JFlashProjectName>_Serial.txt</tt>.<br />
<br />
[[File:SN_Sample_SerialFileCreated.gif]]<br />
<br />
Now Flasher is prepared to program the 8-byte serial number.<br />
<br />
=== Patch file support ===<br />
<br />
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.<br />
Before starting programming process in stand-alone mode, Flasher will look for a file named <tt>Patches.txt</tt> being present on the Flasher.<br />
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><br />
<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.<br />
<br />
'''Syntax'''<br><br />
<!-- LG xxxxxxxxx '==' is shown as '=', so instead use '= ='--><br />
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><br />
<br />
<tt><NumPatches>,<Addr>,<NumBytes>:<nowiki><Data></nowiki>,<Addr>,<NumBytes>:<nowiki><Data></nowiki>,<Addr>,<NumBytes>:<nowiki><Data></nowiki>,<Addr>,<NumBytes>:<nowiki><Data></nowiki>\r\n</tt><br><br />
<br />
Find below a table which describes each parameter.<br><br />
{| class="seggertable"<br />
|-<br />
! Parameter !! Description<br />
|-<br />
| <tt><NumPatches></tt> || Describes the number of patches in this patch line. Max. value is 4.<br />
|-<br />
| <tt><Addr></tt> || Describes the address to be patched. Value is expected in hex.<br />
|-<br />
| <tt><NumBytes></tt> || Number of bytes for the current patch. Max. value is 20h (32 in decimal). Value is expected in hex.<br />
|-<br />
| <tt><nowiki><Data></nowiki></tt> || Describes the data to be patched. <nowiki><Data></nowiki> is always expected as 2 hexadecimal characters per byte.<br />
|-<br />
|}<br />
<br />
{{Note|1=All values are expected in hexadecimal format (hex).<br><br />
<nowiki><Data></nowiki> section is always preceded by ":", not ",".}}<br />
<br />
'''Example'''<br><br />
Below is an example patch.<br><br />
<br />
<source><br />
1,18,4:01020304\r\n<br />
</source><br />
<br />
Patching the following data:<br />
<br />
[[File:data_before.png]]<br />
<br />
with the example patch will result in the following data:<br />
<br />
[[File:data_afterwards.png]]<br />
<br />
Please note that as mentioned earlier patching undefined memory locations will be ignored.<br><br />
Applying the example patch to the following data:<br />
<br />
[[File:undefined_mem_before.png]]<br />
<br />
Causes no data to be patched, as can be seen in the following image:<br />
<br />
[[File:undefined_mem_no_token.png]]<br />
<br />
Therefore it is necessary to first write placeholder data to the memory locations which are supposed to be patched.<br><br />
An example for such a placeholder can be seen here:<br />
<br />
[[File:undefined_mem_token.png]]<br />
<br />
Please note that the actual data inside the placeholder does not matter to the Flasher,<br />
because it is overwritten during patching.<br><br />
Applying the example patch will now work as expected:<br />
<br />
[[File:undefined_mem_after.png]]<br />
<br />
'''Single patch via RS232'''<br><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><br />
<br />
Send the <tt>#AUTO PATCH <NumPatches>,<Addr>,<NumBytes>:<nowiki><Data></nowiki></tt><br><br />
<br />
command via Flasher ASCII interface. The parameters have the same function as described in the table above.<br />
<br />
==== Newline encoding ====<br />
<br />
In general, for all patch files, init files etc. Flasher supports both newline encodings:<br><br />
<br />
* Windows: \r\n<br />
* Unix/Mac: \n<br />
<br />
All parser functionality etc. are written to be independent from the host operating system.<br />
<br />
=== Limiting the number of programming cycles ===<br />
<br />
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.<br />
To make use of this feature, a file called <tt>Cntdown.txt</tt> needs to be placed on the Flasher.<br />
This file simply contains a decimal number (32-bit unsigned integer) that describes how many programming cycles can be performed with the current setup.<br />
<br />
[[File:CntdownTxtContent.jpg]]<br />
<br />
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><br />
<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>.}}<br />
<br />
==== Changed fail/error LED indicator behavior ====<br />
<br />
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><br />
<br />
* The red error/fail LED will lit for 1 second<br />
* After this, it will blink/toggle x times @ 5 Hz, indicating the number of programming cycles left. (blinking 5 times for 5 cycles left, ...)<br />
<br />
==== Required Flasher hardware version for Cntdown.txt support ====<br />
<br />
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><br />
<br />
* 1621xxxxx (Flasher ARM V2)<br />
* 1630xxxxx (Flasher ARM V3)<br />
* 4210xxxxx (Flasher PPC V1)<br />
* 4110xxxxx (Flasher RX V1)<br />
<br />
All other models / hardware versions support limiting of programming cycles.<br />
<br />
=== Authorized flashing ===<br />
<br />
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.<br />
without the possibility to read out the Flasher contents via file access mode, FILE I/O functionality (J-Link Commander) or RS232 commands.<br />
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.<br />
<br />
==== Creating / Adding the secure area ====<br />
<br />
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.<br />
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.<br />
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><br />
<br />
[[File:CreateSecArea.jpg]]<br />
<br />
The following secure area related commands are available in J-Link Commander:<br><br />
<br />
* securearea create<br />
* securearea remove<br />
<br />
{{Note|1=When creating or removing the <tt>secure area</tt>, all configuration and data files being stored on the Flasher, are lost.<br />
Please make sure that they are not needed anymore, before adding / removing the security area.}}<br />
<br />
==== Moving files to the secure area ====<br />
<br />
Before moving configuration + data to the <tt>secure area</tt>, proper functionality of the setup should be tested in stand-alone mode.<br />
Once the setup is working as expected, do the following, to move the configuration + data into the <tt>secure area</tt>:<br><br />
<br />
* Start Flasher in file access mode (For more info, please refer to: [[#file access mode | file access mode]])<br />
<br />
[[File:FilesBeforeSecure.png]]<br />
<br />
* Create a folder "<tt>_SECURE</tt>"<br />
* Move all files that shall be moved to the <tt>secure area</tt>, into this folder<br />
<br />
[[File:FilesAfterSecure.png]]<br />
<br />
* 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.<br />
* Now Flasher can be used in stand-alone mode, as normal, but the files cannot be read back by the user / operator.<br />
<br />
==== Considerations to be taken when using the secure area ====<br />
<br />
When using the <tt>secure area</tt>, some things need to be considered:<br><br />
<br />
* All features like multiple file support, patch file support etc. can also be used when operating from the <tt>secure area</tt>.<br />
* 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>.<br />
* 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>.<br />
* 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.<br />
<br />
==== Required Flasher hardware version ====<br />
<br />
Older Flasher models do not support authorized flashing. The Flashers with the following serial number ranges do not support authorized flashing:<br><br />
<br />
* 1621xxxxx (Flasher ARM V2)<br />
* 1630xxxxx (Flasher ARM V3)<br />
* 4210xxxxx (Flasher PPC V1)<br />
* 4110xxxxx (Flasher RX V1)<br />
<br />
All other models / hardware versions support authorized flashing.<br />
<br />
=== Target interfaces ===<br />
<br />
The table below shows the supported target interfaces of the different Flasher models.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! Supported interfaces<br />
|-<br />
| Flasher PRO || JTAG, SWD<br />
|-<br />
| Flasher Compact || JTAG, SWD<br />
|-<br />
| Flasher ARM || JTAG, SWD<br />
|-<br />
| Flasher RX || JTAG<br />
|-<br />
| Flasher PPC || JTAG<br />
|-<br />
|}<br />
<br />
For more information about the target interfaces itself, please refer to:<br><br />
<br />
* ''UM08001, chapter "Working with J-Link and J-Trace", section "JTAG interface"''<br />
* ''UM08001, chapter "Working with J-Link and J-Trace", section "SWD interface"''<br />
<br />
=== Supported architectures ===<br />
<br />
Flasher supports programming of the internal flash of a large number of different microcontrollers.<br />
The number of supported devices is steadily growing. You can always find the latest list of supported devices on our website:<br><br />
<br />
''http://www.segger.com/supported-devices.html''<br />
<br />
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.<br />
Also the existence of the device may have confidential status, so it might not be mentioned as being supported in public releases yet.<br />
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.<br />
<br />
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).<br />
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.<br />
<br />
If a device is not supported, you can always contact us. We will be happy to provide you with an offer.<br />
<br />
==== External flashes ====<br />
<br />
In general our Flashers support programming of external flashes listed below:<br>(Can differ between Flasher models and hardware versions)<br />
<br />
* parallel NOR flash<br />
* SPI / QSPI flash<br>(see: ''[[SPI_support_by_Flasher_models]]'')<br />
* NAND flash<br />
* I<sup>2</sup>C EEPROM/Flash<br />
* FRAM<br />
<br />
If the parallel NOR flash device which is used is not CFI-compliant you have to select the flash device in J-Flash explicitly,<br />
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''.<br />
<br />
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.<br />
The J-Flash software comes with sample projects for ''Open Flashloader''.<br />
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''<br />
{{Note|1=Complete Information about ''Open Flashloaders'' can be found in our Wiki:<br>''[[Open_Flashloader]]''}}<br />
<br />
==== Cores ====<br />
<br />
===== Flasher ARM =====<br />
<br />
Flasher ARM supports and has been tested with the following cores, but should work with any ARM7/9, Cortex-M0/M1/M3/M4 core.<br />
If you experience problems with a particular core, do not hesitate to contact Segger.<br><br />
<br />
* ARM7TDMI (Rev 1)<br />
* ARM7TDMI (Rev 3)<br />
* ARM7TDMI-S (Rev 4)<br />
* ARM920T<br />
* ARM922T<br />
* ARM926EJ-S<br />
* ARM946E-S<br />
* ARM966E-S<br />
* Cortex-M0<br />
* Cortex-M1<br />
* Cortex-M3<br />
* Cortex-M4<br />
<br />
===== Flasher RX =====<br />
<br />
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><br />
<br />
* RX610<br />
* RX621<br />
* RX62N<br />
* RX62T<br />
<br />
===== Flasher PPC =====<br />
<br />
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.<br />
<br />
* e200z0<br />
<br />
===== Flasher PRO/Compact/Portable PLUS =====<br />
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/''.<br />
<br />
=== Programming multiple targets in parallel ===<br />
<br />
To program multiple targets in parallel there are the following possibilities:<br />
* Using a Flasher gang, or<br />
* Using multiple Flashers, each connecting to one CPU.<br />
<br />
Devices for gang programming are:<br />
* Flasher Hub-12 in conjunction with up to 12 Flasher (Compact). Please refer to [[UM08043_Flasher_Hub-12|Flasher Hub-12 user manual (UM08043_Flasher_Hub-12)]].<br />
* Flasher ATE; suitable for programming up to 10 targets in parallel. Please refer to [https://www.segger.com/downloads/flasher/UM08035 Flasher ATE user manual (UM08035_FlasherATE.pdf)].<br />
When using multiple flashers, this can be done with the J-Flash production programming software.<br />
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''<br />
<br />
=== Logfiles and Quality Management ===<br />
<br />
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:<br />
<source lang="c"><br />
SN: 1 - Failed<br />
SN: 1 - Failed<br />
SN: 2 - O.K. (931 ms)<br />
SN: 3 - O.K. (931 ms)<br />
SN: 4 - O.K. (933 ms)<br />
SN: 5 - O.K. (932 ms)<br />
</source><br />
If applicable, the logfile contains more detailed error messages. For example:<br />
<source lang="c"><br />
ERROR: Programming failed @ address 0x00000000 (1)<br />
ERROR: Cannot connect to CPU. Target interface speed too high?<br />
</source><br />
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:<br />
<source lang="c"><br />
Verify error config word area @<br />
config word<br />
config word read back<br />
Verify error flash area @<br />
data from file<br />
data read back<br />
</source><br />
{{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.}}<br />
<br />
== TCP Services ==<br />
This chapter describes the integrated TCP services.<br />
<br />
=== FTP Server ===<br />
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><br />
[[File:FTPServer.png]]<br />
<br />
==== Access data ====<br />
Anonymous access to the FTP server is limited to read-only access to the file system.<br><br />
For write access, special login credentials have to be used:<br><br />
<tt>Login: admin</tt><br><br />
<tt>Password: 1234</tt><br><br />
<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.<br />
It is not meant as a security feature.}}<br />
<br />
=== Web server ===<br />
<br />
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.<br />
For the network, the IP address settings can be changed and a nick name can be assigned to the device.<br><br />
<br />
Additionally, the web interface provides information about the status of the integrated operating system, the IP stack and the target hardware.<br />
<br />
== Remote control ==<br />
This chapter describes how to control the Flasher in standalone mode.<br />
<br />
=== Overview ===<br />
There are 3 ways to control Flasher operation:<br><br />
{| class="seggertable"<br />
! Type of control !! Description<br />
|-<br />
| Button || Programming operation starts when pressing the PROG-button. The LEDs serve as visible indicators.<br />
|-<br />
| Handshake || 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.<br />
|-<br />
| Terminal || Terminal communication via TELNET, RS232 or VCOM with the [[#ASCII command interface]]<br />
|}<br />
<br />
<br />
{{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.}}<br />
<br />
=== Handshake control ===<br />
<br />
Some Flasher models are equipped with additional hardware control functions that are connected to the SUBD9 male connector, normally used as an RS232 interface to the PC.<br />
These Flasher models can therefore be controlled remotely by automated testers without the need for a connection to a PC.<br />
<br />
The handshake control is available for the following Flashers:<br />
* Flasher ARM<br />
* Flasher PRO<br />
* Flasher Compact (via Flasher Hub and Flasher Hub-12 only)<br />
<br />
The following diagrams show the internal remote control circuitry of Flasher:<br><br />
<br />
[[File:FlasherRemotecontrol.png]]<br />
{| class="seggertable"<br />
|-<br />
! Pin No. !! Function !! Description<br />
|-<br />
| 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.<br />
|-<br />
| 4 || BUSY || As soon as the "Auto" function is started, BUSY becomes active, which means that transistor is switched OFF.<br />
|-<br />
| 5 || GND || Common Signal ground.<br />
|-<br />
| 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.<br />
|-<br />
|}<br />
[[File:FlasherRemoteSignal.png]]<br />
<br />
=== ASCII command interface ===<br />
<br />
==== Introduction ====<br />
<br />
Once set up using J-Flash, the Flasher can be driven by any application or just a simple terminal using ASCII commands.<br><br />
<br />
Every known command is acknowledged by the Flasher and then executed. After command execution, Flasher sends an ASCII reply message.<br><br />
<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}}<br />
<br />
==== General command and reply message format ====<br />
<br />
* Any ASCII command has to start with the start delimiter ''#''.<br />
* Any ASCII command has to end with simple carriage return ('\r', ASCII code 13).<br />
* Commands can be sent upper or lower case<br />
<br />
==== General usage ====<br />
<br />
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.<br />
<br />
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).<br />
<br />
==== Settings for ASCII interface via RS232 ====<br />
<br />
Flasher is driven via a RS232 serial port with the following interface settings:<br><br />
<br />
* 9600 baud<br />
* 8 data bits<br />
* no parity<br />
* 1 stop bit<br />
<br />
The baud rate can be changed by using the <tt>#BAUDRATE</tt> command.<br />
<br />
==== Settings for ASCII interface via Telnet ====<br />
<br />
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><br />
<br />
[[File:telnet_connection.gif]]<br />
<br />
==== Settings for ASCII interface via VCOM ====<br />
<br />
The same settings can be used for VCOM as for [[#Settings for ASCII interface via RS232|RS232]].<br />
<br />
{{Note|The performance also depends on the terminal application used on the PC.}}<br />
<br />
==== Commands and replies ====<br />
<br />
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><br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| Commands to the Flasher<br />
|-<br />
| <tt>#BAUDRATE <Baudrate></tt><br />
|-<br />
| <tt>#AUTO</tt><br />
|-<br />
| <tt>#AUTO PATCH</tt><br />
|-<br />
| <tt>#AUTO NOINFO</tt><br />
|-<br />
| <tt>#CANCEL</tt><br />
|-<br />
| <tt>#ERASE</tt><br />
|-<br />
| <tt>#PROGRAM</tt><br />
|-<br />
| <tt>#RESULT</tt><br />
|-<br />
| <tt>#SELECT <Filename></tt><br />
|-<br />
| <tt>#START</tt><br />
|-<br />
| <tt>#STATUS</tt><br />
|-<br />
| <tt>#VERIFY</tt><br />
|-<br />
| <tt>#READ</tt><br />
|-<br />
| <tt>#QUIT</tt><br />
|-<br />
| <tt>#VERBOSE <Level></tt><br />
|-<br />
!colspan="100%"| File I/O commands<br />
|-<br />
| <tt>#FCLOSE</tt><br />
|-<br />
| <tt>#FCRC</tt><br />
|-<br />
| <tt>#FDELETE <Filename></tt><br />
|-<br />
| <tt>#FOPEN <Filename></tt><br />
|-<br />
| <tt>#FREAD <Offset>,<NumBytes></tt><br />
|-<br />
| <tt>#FSIZE</tt><br />
|-<br />
| <tt>#FWRITE <Offset>,<NumBytes>:<nowiki><Data></nowiki></tt><br />
|-<br />
| <tt>#FLIST</tt><br />
|-<br />
| <tt>#MKDIR <Dirname></tt><br />
|-<br />
!colspan="100%"| SecureArea commands<br />
|-<br />
| <tt>#HASSECUREAREA</tt><br />
|-<br />
| <tt>#SECUREAREA <action></tt><br />
|-<br />
!colspan="100%"| Replies from the Flasher<br />
|-<br />
| <tt>#ACK</tt><br />
|-<br />
| <tt>#NACK</tt><br />
|-<br />
| <tt>#OK</tt><br />
|-<br />
| <tt>#OK:<NumBytes>:<nowiki><Data></nowiki></tt><br />
|-<br />
| <tt>#OK:<Size></tt><br />
|-<br />
| <tt>#STATUS:</tt><br />
|-<br />
| <tt>#DONE</tt><br />
|-<br />
| <tt>#ERRxxx</tt><br />
|-<br />
|}<br />
<br />
===== Commands to the Flasher =====<br />
<br />
'''#AUTO'''<br><br />
The <tt>#AUTO</tt> command behaves exactly as the start button or external remote control input.<br><br />
<br />
Usually, the following command sequence will be performed when receiving the <tt>#AUTO</tt> command:<br><br />
<br />
* The Flasher erases the target CPU (if not blank)<br />
* The Flasher programs the target CPU<br />
* The Flasher verifies the target CPU<br />
<br />
Depending on the settings chosen in the '''Production''' tab in J-Flash, this sequence can differ from the one shown above.<br><br />
<br />
Finally, Flasher responds with<br><br />
<br />
* <tt>#OK</tt> if no error occurred<br />
* <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.<br />
<br />
During execution of the <tt>#AUTO</tt> command, Flasher automatically sends "status" messages via RS232 to reflect the state of execution.<br />
Typically during execution of <tt>#AUTO</tt> command, Flasher will reply the following sequence of messages:<br><br />
<br />
<tt>#ACK</tt><br><br />
<tt>#STATUS:INITIALIZING</tt><br><br />
<tt>#STATUS:CONNECTING</tt><br><br />
<tt>#STATUS:UNLOCKING</tt><br><br />
<tt>#STATUS:ERASING</tt><br><br />
<tt>#STATUS:PROGRAMMING</tt><br><br />
<tt>#STATUS:VERIFYING</tt><br><br />
<tt>#OK (Total 13.993s, Erase 0.483s, Prog 9.183s, Verify 2.514s)</tt><br><br />
<br />
'''#AUTO PATCH'''<br><br />
The <tt>#AUTO</tt> PATCH command allows patching of the content of the data to be programmed.<br><br />
<br />
Flasher responds with<br><br />
<br />
* <tt>#OK</tt> if no error occurred<br />
* <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.<br />
<br />
For further information about the usage of the <tt>#AUTO PATCH</tt> command please refer to [[#Patch file support | Patch file support]].<br />
<br />
'''#AUTO NOINFO'''<br><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><br />
<br />
The command ends with <tt>#OK</tt> or <tt>#ERRxxx</tt><br />
<br />
'''#BAUDRATE <Baudrate>'''<br><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><br />
<br />
If this command succeeds, Flasher responds with:<br><br />
<br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<br />
Otherwise it will respond with one of the following error messages:<br><br />
<br />
<tt>#ERR255: Invalid parameters</tt><br><br />
<tt>or</tt><br><br />
<tt>#ERR255: Baudrate is not supported</tt><br><br />
<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.<br />
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.}}<br />
<br />
'''#CANCEL'''<br><br />
This command can be sent to abort a running program. It may take a while until the current program is actually canceled.<br><br />
<br />
Flasher will respond with:<br><br />
<br />
<tt>#ERR007:CANCELED.</tt><br><br />
<br />
'''#ERASE'''<br><br />
This command can be sent to erase all selected target flash sectors.<br><br />
<br />
Flasher will reply the following sequence of messages:<br><br />
<br />
<tt>#ACK</tt><br><br />
<tt>#STATUS:INITIALIZING</tt><br><br />
<tt>#STATUS:CONNECTING</tt><br><br />
<tt>#STATUS:UNLOCKING</tt><br><br />
<tt>#STATUS:ERASING</tt><br><br />
<tt>#OK (Total 0.893s, Erase 0.483s)</tt><br><br />
<br />
'''#PROGRAM'''<br><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.<br />
<br />
'''#RESULT'''<br><br />
This command can be sent any time, even during other command execution. Flasher responds with the last result of the previously executed command.<br />
<br />
'''#SELECT <Filename>'''<br><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.<br />
<tt><Filename></tt> specifies the name of file pair without extensions (.CFG and .DAT) on the Flasher which should be selected. If you are<br />
using the universal flash programming mode, <tt><Filename></tt> specifies the full name of the .UNI file '''including''' the extension.<br />
Flasher saves the selected config and data file in the FLASHER.INI file. So this selection is remembered even between power-cycling Flasher.<br><br />
<br />
This may be verfy helpful in cases where several config and data files are stored on Flasher.<br />
The user can easily switch between these config and data files without connecting Flasher to a host.<br><br />
<br />
If this command succeeds, Flasher responds with:<br><br />
<br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<br />
Find below a sample sequence which shows how to use the <tt>#SELECT</tt> command:<br><br />
<br />
<tt>#SELECT ATSAM7_1 // ATSAM7_1.CFG and ATSAM7_1.DAT is selected</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<tt>#AUTO // Start auto programming</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#STATUS:INITIALIZING</tt><br><br />
<tt>#STATUS:CONNECTING</tt><br><br />
<tt>#STATUS:UNLOCKING</tt><br><br />
<tt>#STATUS:ERASING</tt><br><br />
<tt>#STATUS:PROGRAMMING</tt><br><br />
<tt>#STATUS:VERIFYING</tt><br><br />
<tt>#OK (Total 8.416s, Erase 0.005s, Prog 6.845s, Verify 0.959s)</tt><br><br />
<tt>#SELECT ATSAM7_2 // ATSAM7_2.CFG and ATSAM7_2.DAT is selected</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<tt>#AUTO // Start auto programming</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#STATUS:INITIALIZING</tt><br><br />
<tt>#STATUS:CONNECTING</tt><br><br />
<tt>#STATUS:UNLOCKING</tt><br><br />
<tt>#STATUS:ERASING</tt><br><br />
<tt>#STATUS:PROGRAMMING</tt><br><br />
<tt>#STATUS:VERIFYING</tt><br><br />
<tt>#OK (Total 8.632s, Erase 0.005s, Prog 7.051s, Verify 0.969s)</tt><br><br />
<br />
'''#START'''<br><br />
This command can be sent to start the application using the method configured in the J-Flash project.<br><br />
For U-Flash projects, however, the target application is not necessarily started. <br><br />
There is often a "start application" checkbox in the U-Flash settings which have to be set for this.<br />
<br />
Flasher will reply with the following sequence of messages:<br><br />
<br />
<tt>#ACK</tt><br><br />
<tt>#STATUS:INITIALIZING</tt><br><br />
<tt>#STATUS:CONNECTING</tt><br><br />
<tt>#OK (Total 1.148s)</tt><br><br />
<br />
'''#STATUS'''<br><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]].<br />
<br />
'''#VERIFY'''<br><br />
This command can used to verify the target flash content against the data stored in Flasher.<br />
<br />
'''#READ'''<br><br />
Only available for devices supported by U-Flash.<br><br />
This command can used to read out flash data.<br><br />
More information: [https://wiki.segger.com/Flasher/How_to_read_data_from_a_device_using_U-Flash How to read data using U-Flash]<br />
<br />
'''#QUIT'''<br><br />
This command can be used to terminate the active telnet connection from the server side (Flasher).<br />
The command provides an easy way to terminate the session from an automated script.<br />
It is not necessary to parse stdout and switch to local command mode to disconnect.<br />
Not implemented in the Flasher ATE or Flasher Hub.<br />
<br />
'''#VERBOSE <Level>'''<br><br />
This command can be used to change the verbosity level. <br><br />
* Verbosity level 0: Default. <br><br />
* Verbosity level 1: Provides some additional messages during the programming process.<br />
<br />
===== File I/O commands =====<br />
<br />
The ASCII interface of the Flasher also supports file I/O operations.<br />
<br />
The following file I/O commands are supported:<br><br />
<br />
'''#FCLOSE'''<br><br />
The <tt>#FCLOSE</tt> command closes the file on Flasher which was opened via <tt>#FOPEN</tt>.<br />
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><br />
<br />
A typical sequence when using the <tt>#FCLOSE</tt> command does look like as follows:<br><br />
<br />
<tt>#FCLOSE</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<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><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:No file opened</tt><br />
}}<br />
<br />
'''#FCRC'''<br><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>.<br />
The CRC will be also reported by J-Flash when downloading or saving files via J-Flash.<br><br />
<br />
A typical sequence when using the <tt>#FCRC</tt> command does look like as follows:<br><br />
<br />
<tt>#FCRC flasher.dat</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK:0x75BC855A</tt><br><br />
<br />
'''#FDELETE <Filename>'''<br><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><br />
<br />
A typical sequence when using the <tt>#FDELETE</tt> command does look like as follows:<br><br />
<br />
<tt>#FDELETE flasher.dat</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<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><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:Failed to delete file</tt><br />
}}<br />
<br />
'''#FOPEN <Filename>'''<br><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.<br />
If <tt><Filename></tt> can not be found on Flasher a new one will be created.<br><br />
<br />
A typical sequence using the <tt>#FOPEN</tt> command does look like as follows:<br><br />
<br />
<tt>#FOPEN flasher.dat</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<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><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:A file has already been opened</tt><br />
}}<br />
<br />
'''#FREAD <Offset>,<NumBytes>'''<br><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.<br />
<tt><NumBytes></tt> specifies the number of bytes which should be read.<br><br />
<br />
A typical sequence when using the <tt>#FREAD</tt> command does look like as follows:<br><br />
<br />
<tt>#FREAD 0,4</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK:04:466c6173</tt><br><br />
<br />
If the <tt>#FREAD</tt> command succeeds, Flasher will finally respond with a <tt>#OK:<NumBytes>:<nowiki><Data></nowiki></tt> reply message.<br />
For more information about the Flasher reply messages, please refer to [[#Replies from Flasher | Replies from Flasher]].<br><br />
<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><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:No file opened</tt>}}<br />
<br />
'''#FSIZE'''<br><br />
The <tt>#FSIZE</tt> command is used to get the size of the currently opened file on Flasher.<br><br />
<br />
A typical sequence when using the <tt>#FSIZE</tt> command does look like as follows:<br><br />
<br />
<tt>#FSIZE</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK:10 // file on flasher which is currently open, has a size of 16 bytes</tt><br><br />
<br />
If the <tt>#FSIZE</tt> command succeeds, Flasher will respond with a <tt>#OK:<Size></tt> reply message.<br />
For more information about the Flasher reply messages, please refer to [[#Replies from Flasher | Replies from Flasher]].<br><br />
<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><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:No file opened</tt>}}<br />
<br />
'''#FWRITE <Offset>,<NumBytes>:<nowiki><Data></nowiki>'''<br><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.<br />
<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.<br />
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><br />
<br />
<tt><Offset></tt> and <tt><NumBytes></tt> are expected in hexadecimal format.<br><br />
<br />
<tt>#FWRITE 0,200:<nowiki><Data></nowiki></tt><br><br />
<tt>#FWRITE 200,200:<nowiki><Data></nowiki></tt><br><br />
<br />
The data is expected in hexadecimal format (two hexadecimal characters per byte). The following example illustrates the use of <tt>#FWRITE</tt>:<br />
<br />
<tt>Data to be send: Hello !</tt><br><br />
<tt>ASCII values: 0x48, 0x65, 0x6C, 0x6C, 0x6F, 0x20, 0x21</tt><br><br />
<br />
<tt>#FWRITE 0,7:48656C6C6F2021</tt><br><br />
<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><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:No file opened</tt><br>}}<br />
<br />
'''#FLIST'''<br><br />
The <tt>#LIST</tt> command is used to list all files stored on the Flasher.<br><br />
<br />
A typical sequence using the <tt>#FLIST</tt> command does look like as follows:<br><br />
<br />
<tt>#FLIST</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>FLASHER.INI Size: 60</tt><br><br />
<tt>SERIAL.TXT Size: 3</tt><br><br />
<tt>FLASHER.LOG Size: 207</tt><br><br />
<tt>FOLDER (DIR)</tt><br><br />
<tt>FOLDER\\TEST1.CFG Size: 2048</tt><br><br />
<tt>FOLDER\\TEST1.DAT Size: 12288</tt><br><br />
<tt>#OK</tt><br><br />
<br />
'''#MKDIR <Dirname>'''<br><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><br />
<br />
A typical sequence using the <tt>#MKDIR</tt> command does look like as follows:<br><br />
<br />
<tt>#MKDIR folder</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<br />
{{Note|1=If the directory can not be created because of a bad <tt><Dirname></tt> argument, Flasher will respond with:<br><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:Failed to create directory</tt><br>}}<br />
<br />
===== Secure Area Commands =====<br />
<br />
'''#HASSECUREAREA'''<br><br />
The <tt>#HASSECUREAREA</tt> command checks if the Flasher is configured with a secure area.<br />
<br />
<tt>#RESULT:YES</tt> indicates the secure area is present, <tt>#RESULT:NO</tt> indicates no secure area is present.<br />
<br />
'''#SECUREAREA'''<br><br />
The <tt>#SECUREAREA <action></tt> command allows to create or remove the secure area on the Flasher.<br />
<br />
* the action <tt>CREATE</tt> creates the secure area.<br />
* the action <tt>REMOVE</tt> will remove the secure area.<br />
<br />
A typical sequence using the <tt>#SECUREAREA</tt> command does look like as follows:<br><br />
<br />
<tt>#SECUREAREA CREATE</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#DONE</tt><br><br />
<br />
{{Note|1=When creating or removing the <tt>secure area</tt>, all configuration and data files being stored on the Flasher, are lost.<br />
Please make sure that they are not needed anymore, before adding / removing the security area.}}<br />
<br />
<br />
<br />
===== Replies from Flasher =====<br />
<br />
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.<br />
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.<br />
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><br />
<br />
<tt>#OK (Total 13.993s, Erase 0.483s, Prog 9.183s, Verify 2.514s)</tt><br><br />
<br />
The following reply messages from Flasher are defined:<br><br />
<br />
'''#ACK'''<br><br />
Flasher replies with <tt>#ACK</tt> message on reception of any defined command before the command itself is executed.<br />
<br />
'''#NACK'''<br><br />
Flasher replies with <tt>#NACK</tt>, if an undefined command was received.<br />
<br />
'''#OK'''<br><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.<br />
<br />
'''#OK:<NumBytes>:<nowiki><Data></nowiki>'''<br><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.<br />
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).<br />
<br />
'''#OK:<Size>'''<br><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.<br />
<br />
'''#STATUS:'''<br><br />
The Flasher replies with its current state.<br><br />
<br />
The following status messages are currently defined:<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Message !! Description<br />
|-<br />
| <tt>#STATUS:READY</tt> || Flasher is ready to receive a new command.<br />
|-<br />
| <tt>#STATUS:CONNECTING</tt> || Flasher initializes connection to target CPU.<br />
|-<br />
| <tt>#STATUS:INITIALIZING</tt> || Flasher performs self check and internal init.<br />
|-<br />
| <tt>#STATUS:UNLOCKING</tt> || Unlocking flash sectors.<br />
|-<br />
| <tt>#STATUS:ERASING</tt> || Flasher is erasing the flash of the target device.<br />
|-<br />
| <tt>#STATUS:PROGRAMMING</tt> || Flasher is programming the flash of the target device.<br />
|-<br />
| <tt>#STATUS:VERIFYING</tt> || Flasher verifies the programmed flash contents.<br />
|-<br />
|}<br />
<br />
'''#ERRxxx'''<br><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><br />
<br />
Some error codes may be followed by colon and an additional error text.<br><br />
<br />
For example:<br><br />
<br />
<tt>#ERR007:CANCELED.</tt><br><br />
<br />
The error code numbers are described in the following table:<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Message !! Description<br />
|-<br />
| <tt>#ERR007</tt> || Flasher received <tt>#CANCEL</tt> command and has canceled the current operation.<br />
|-<br />
| <tt>#ERR008</tt> || Flasher is already busy with execution of previous command.<br />
|-<br />
| <tt>#ERR009</tt> || Failed to allocate memory.<br />
|-<br />
| <tt>#ERR010</tt> || Failed to open file.<br />
|-<br />
| <tt>#ERR011</tt> || Failed to read file.<br />
|-<br />
| <tt>#ERR012</tt> || Failed to write file.<br />
|-<br />
| <tt>#ERR013</tt> || Failed to delete file.<br />
|-<br />
| <tt>#ERR255</tt> || Undefined error occurred. This reply is followed by an error string.<br />
|-<br />
|}<br />
<br />
== Performance ==<br />
<br />
The following chapter lists programming performance of common flash devices andmicrocontrollers.<br />
<br />
=== Performance of MCUs with internal flash memory ===<br />
<br />
==== Flasher ARM ====<br />
<br />
The following table lists program and erase performance values of Flasher ARM for different controllers.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Microcontroller !! Size [kByte] !! Erase time [sec] !! Program time [sec] !! Verify time [sec] !! Total time [sec]<br />
|-<br />
| Analog Devices || 62 || 2.943 || 2.286 || 0.563 || 5.792<br />
|-<br />
| Atmel AT91SAM7S64 || 64 || --- || 3.488 || 0.438 || 3.926<br />
|-<br />
| Atmel AT91SAM7S256 || 256 || --- || 7.709 || 1.053 || 8.762<br />
|-<br />
| NXP LPC1768 || 512 || 3.740 || 8.559 || 5.092 || 17.391<br />
|-<br />
| NXP LPC2106 || 120 || 0.448 || 1.204 || 0.634 || 2.286<br />
|-<br />
| NXP LPC2129 || 248 || 0.449 || 2.916 || 1.347 || 4.712<br />
|-<br />
| NXP LPC2138 || 500 || 0.448 || 5.488 || 2.649 || 8.585<br />
|-<br />
| NXP LPC2148 || 500 || 0.448 || 5.632 || 2.721 || 8.801<br />
|-<br />
| NXP LPC2294 || 2048 || 0.808 || 15.976 || 9.669 || 26.453<br />
|-<br />
| NXP LPC2478 || 504 || 0.448 || 5.419 || 2.559 || 8.426<br />
|-<br />
| ST STM32F103ZE || 512 || 0.028 || 18.763 || 3.939 || 22.730<br />
|-<br />
| ST STR711 || 272 || 0.429 || 5.476 || 4.742 || 10.647<br />
|-<br />
| ST STR912 || 544 || 1.167 || 12.907 || 5.236 || 19.310<br />
|-<br />
| TI TMS470R1B1M || 1024 || 2.289 || 8.147 || 5.362 || 15.798<br />
|-<br />
|}<br />
<br />
==== Flasher PRO ====<br />
See Flasher ARM.<br />
<br />
==== Flasher Compact ====<br />
See Flasher ARM.<br />
<br />
==== Flasher RX ====<br />
<br />
The following table lists program and erase performance values of Flasher RX.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Microcontroller !! Size [kByte] !! Erase time [sec] !! Program time [sec] !! Verify time [sec] !! Total time [sec]<br />
|-<br />
| R5F56108 || 2.048 || 9.523 || 11.915 || 3.890 || 25.585<br />
|-<br />
|}<br />
<br />
==== Flasher PPC ====<br />
<br />
The following table lists program and erase performance values of Flasher PPC.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Microcontroller !! Size [kByte] !! Erase time [sec] !! Program time [sec] !! Verify time [sec] !! Total time [sec]<br />
|-<br />
| ST SPC560B50 || 576 || 4.747 || 4.159 || 1.929 || 10.917<br />
|-<br />
|}<br />
<br />
== Hardware ==<br />
<br />
This chapter gives an overview about Flasher specific hardware details,<br />
such as the pinouts and available adapters.<br />
<br />
=== Flasher ARM 20-pin JTAG/SWD Connector ===<br />
<br />
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.<br />
<br />
==== Pinout JTAG ====<br />
<br />
[[File:jtag_port_20pin.jpg]] <!-- LG xxxxxx image has been cropped to fit page --><br />
<br />
The following table lists the Flasher JTAG pinout.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! PIN !! SIGNAL !! TYPE !! Description<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 13 || TDO || Input || JTAG data output from target CPU. Typically connected to TDO of target CPU.<br />
|-<br />
| 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".<br />
|-<br />
| 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.<br />
|-<br />
| 19 || 5V-Target supply || Output || This pin is used to supply power to some eval boards. Typically left open on target hardware.<br />
|-<br />
|}<br />
<br />
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.<br />
<br />
==== Pinout SWD ====<br />
<br />
The 20-pin connector of Flasher is also compatible to ARM's Serial Wire Debug (SWD) interface.<br><br />
<br />
[[File:SWD_Port.jpg]] <!-- LG xxxxxx image has been cropped to fit page --><br />
<br />
The following table lists the J-Link / J-Trace SWD pinout.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! PIN !! SIGNAL !! TYPE !! Description<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 7 || SWDIO || I/O || Single bi-directional data pin.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 13 || SWO || Output || Serial Wire Output trace port. (Optional, not required for SWD communication.)<br />
|-<br />
| 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".<br />
|-<br />
| 17 || Not used || NC || This pin is not connected in J-Link.<br />
|-<br />
| 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.<br />
|-<br />
|}<br />
<br />
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.<br />
<br />
==== Target power supply ====<br />
<br />
Pin 19 of the connector can be used to supply power to the target hardware. Supply voltage is 5V, max. current is 400mA.<br />
The output current is monitored and protected against overload and short-circuit.<br><br />
<br />
Power can be controlled via the J-Link commander. The following commands are available to control power:<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Command !! Explanation<br />
|-<br />
| <tt>power on</tt> || Switch target power on<br />
|-<br />
| <tt>power off</tt> || Switch target power off<br />
|-<br />
| <tt>power on perm</tt> || Set target power supply default to "on"<br />
|-<br />
| <tt>power off perm</tt> || Set target power supply default to "off"<br />
|-<br />
|}<br />
<br />
=== Flasher RX 14-pin connector ===<br />
<br />
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.<br />
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.<br />
<br />
[[File:jtag_port_14pin.wmf]]<br />
<br />
The following table lists the Flasher RX 14-pin JTAG pinout.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Pin !! Signal !! Type !! Description<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 5 || TDO || Input || JTAG data output from target CPU. Typically connected to TDO on target CPU.<br />
|-<br />
| 6 || --- || NC || This pin is not connected to Flasher RX.<br />
|-<br />
| 7 || --- || NC || This pin is not connected to Flasher RX.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 10 || --- || NC || This pin is not connected to Flasher RX.<br />
|-<br />
| 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.<br />
|-<br />
| 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".<br />
|-<br />
|}<br />
<br />
* All pins marked NC are not connected to Flasher RX. Any signal can be applied here; Flasher RX will simply ignore such a signal.<br />
* Pins 2, 12, 14 are GND pins connected to GND in Flasher RX. They should also be connected to GND in the target system.<br />
<br />
==== Target power supply ====<br />
<br />
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.<br />
Power can be controlled via the J-Link commander. The following commands are available to control power:<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Command !! Explanation<br />
|-<br />
| <tt>power on</tt> || Switch target power on<br />
|-<br />
| <tt>power off</tt> || Switch target power off<br />
|-<br />
| <tt>power on perm</tt> || Set target power supply default to "on"<br />
|-<br />
| <tt>power off perm</tt> || Set target power supply default to "off"<br />
|-<br />
|}<br />
<br />
=== Flasher PPC 14-pin connector ===<br />
<br />
Flasher PPC itself has a 20-pin JTAG connector mounted but comes with a 14-pin adapter for PowerPC devices.<br><br />
<br />
[[File:JTAG_PPC_14pin_adapter.wmf]]<br />
<br />
The following table lists the Flasher PPC 14-pin JTAG pinout.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Pin !! Signal !! Type !! Description<br />
|-<br />
| 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.<br />
|-<br />
| 3 || TDO || Input || JTAG data output from target CPU. Typically connected to TDO on target CPU.<br />
|-<br />
| 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.<br />
|-<br />
| 7 || --- || NC || This pin is not connected to Flasher PPC.<br />
|-<br />
| 8 || --- || NC || This pin is not connected to Flasher PPC.<br />
|-<br />
| 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".<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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).<br />
|-<br />
|}<br />
<br />
* All pins marked NC are not connected to Flasher PPC. Any signal can be applied here; Flasher PPC will simply ignore such a signal.<br />
* 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.<br />
<br />
=== Target board design ===<br />
<br />
We strongly advise following the recommendations given by the chip manufacturer. These recommendations are normally in line with the recommendations.<br />
Please refer to the the appropriate tables depending on the core:<br><br />
<br />
* [[#Pinout JTAG | Pinout JTAG]]<br />
* [[#Pinout SWD | Pinout SWD]]<br />
* [[#Flasher RX 14-pin connector | Flasher RX 14-pin connector]]<br />
* [[#Flasher PPC 14-pin connector | Flasher PPC 14-pin connector]]<br />
<br />
In case of doubt you should follow the recommendations given by the semiconductor manufacturer.<br />
<br />
==== Pull-up/pull-down resistors ====<br />
<br />
Unless otherwise specified by developer's manual, pull-ups/pull-downs are recommended to be between 2.2 kOhms and 47 kOhms.<br />
<br />
==== RESET, nTRST ====<br />
<br />
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><br />
<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.<br />
(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.<br />
<br />
=== Adapters ===<br />
<br />
==== JTAG Isolator ====<br />
<br />
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.<br />
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><br />
<br />
[[File:JTAG_Isolator_Port.wmf]]<br />
<br />
===== Pinout =====<br />
<br />
The following table shows the target-side pinout of the J-Link JTAG Isolator.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Pin !! Signal !! Type !! Description<br />
|-<br />
| 1 || VCC || Output || The target side of the isolator draws power over this pin.<br />
|-<br />
| 2 || VCC || Output || The target side of the isolator draws power over this pin.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 13 || TDO || Input || JTAG data output from target CPU. Typically connected to TDO of target CPU.<br />
|-<br />
| 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".<br />
|-<br />
| 17 || N/C || N/C || This pin is not connected on the target side of the isolator.<br />
|-<br />
| 19 || N/C || N/C || This pin is not connected on the target side of the isolator.<br />
|-<br />
|}<br />
<br />
Pins 4, 6, 8, 10, 12, 14, 16, 18, 20 are connected to GND.<br />
<br />
===== Safety =====<br />
This isolator provides '''basic isolation''' only. '''Do not use with hazardous voltages without further protection measures to avoid risk of electrical shock and fire.'''<br />
<br />
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.<br />
<br />
==== J-Link Needle Adapter ====<br />
<br />
To connect to the J-Link OB via programming interface the ''J-Link Needle Adapter'' is recommended.<br><br />
<br />
[[File:J-Link_Needle_Adapter_500x.jpg]]<br />
<br />
Why to choose the J-Link Needle Adapter:<br><br />
<ol><br />
<li>No additional connector required on your PCB</li><br />
<li>Very small footprint</li><br />
<li>High reliability spring pins for secure connections</li><br />
<li>Designed with 3 locating pins, so the adapter can not be connected the wrong way</li><br />
<li>No external power supply required! The J-Link Needle Adapter comes with the option to power the target hardware via J-Link.</li><br />
</ol><br />
These features make the J-Link Needle Adapter the perfect solution for production purposes.<br><br />
<br />
The pinout of the J-Link Needle Adapter is based on the pinout of the needle adapter by Tag-Connect.<br />
Please note, that both pinouts are not identical since the J-Link Needle Adapter comes with a 5V-supply pin.<br><br />
<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><br />
<br />
Moreover, the two "legs" on each side of the connector guarantee a stable and secure contact between pins and the PCB.<br><br />
<br />
[[File:J-Link_Needle_Adapter_Connector_pins_360x.jpg]]<br />
[[File:J-Link_Needle_Adapter_Pinout.jpg]]<br />
<br />
The J-Link Needle Adapter can be connected to J-Link via the ''20-pin 0.1'' JTAG to a 10-pin needle connector''.<br />
<br />
=== How to determine the hardware version ===<br />
<br />
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.<br />
Flasher has the hardware version printed on the back label.<br><br />
<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).<br />
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><br />
<br />
[[File:FlasherARM_version.gif]]<br />
== Support and FAQs ==<br />
<br />
This chapter contains troubleshooting tips together with solutions for common problems which might occur when using Flasher.<br />
There are several steps you can take before contacting support.<br />
Performing these steps can solve many problems and often eliminates the need for assistance.<br />
This chapter also contains a collection of frequently asked questions (FAQs) with answers.<br />
<br />
=== Contacting support ===<br />
<br />
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.<br />
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><br />
<br />
If you need to contact support, send the following information to<br><br />
''support@segger.com''<br><br />
<br />
* A detailed description of the problem<br />
* Flasher serial number<br />
* Information about your target hardware (processor, board, etc.).<br />
* <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]].<br />
<br />
Flasher is sold directly by SEGGER.<br />
<br />
=== Frequently Asked Questions ===<br />
<br />
'''Maximum JTAG speed'''<br />
{|<br />
|-<br />
| '''Q:''' || What is the maximum JTAG speed supported by Flasher?<br />
|-<br />
| '''A:''' || Flasher's maximum supported JTAG speed is 12MHz.<br />
|}<br />
<br />
'''Maximum download speed'''<br />
{|<br />
|-<br />
| '''Q:''' || What is the maximum download speed?<br><br />
|-<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.<br />
|}<br />
== Background information ==<br />
<br />
This chapter provides background information about flash programming in general. It<br />
also provides information about how to replace the firmware of Flasher manually.<br />
<br />
=== Flash programming ===<br />
<br />
Flasher comes with a DLL, which allows - amongst other functionalities - reading and writing RAM, CPU registers, starting and stopping the CPU, and setting breakpoints.<br />
<br />
==== How does flash programming via Flasher work? ====<br />
<br />
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.<br />
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.<br />
Different flash chips have different programming algorithms;the programming algorithm also depends on other things,<br />
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).<br />
The RAM code requires data to be programmed into the flash memory. The data is supplied by downloading it to RAM.<br />
<br />
==== Data download to RAM ====<br />
<br />
The data (or part of it) is downloaded to another part of the RAM of the target system.<br />
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.<br />
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.<br />
This process may have to be repeated until the entire data is programmed into the flash.<br />
<br />
==== Available options for flash programming ====<br />
<br />
In general, there are two possibilities in order to use Flasher for flash programming:<br><br />
<br />
* Using Flasher stand-alone to program the target flash memory (stand-alone mode)<br />
* Using Flasher in combination with J-Flash to program the target flash memory (Flasher in "PC-based mode")<br />
<br />
===== Using Flasher in stand-alone mode =====<br />
<br />
In order to use the Flasher in stand-alone mode, it has to be configured first.<br />
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]].<br />
<br />
===== J-Flash - Complete flash programming solution =====<br />
<br />
J-Flash is a stand-alone Windows application, which can read / write data files and program the flash in almost any ARM system.<br />
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''.<br />
<br />
==== How does the universal flash programming work? ====<br />
<br />
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><br />
<br />
Universal flash programming is available only for stand-alone mode.<br />
== Glossary ==<br />
<br />
This chapter describes important terms used throughout this manual.<br />
<br />
'''Big-endian'''<br><br />
Memory organization where the least significant byte of a word is at a higher address than the most significant byte. See Little-endian.<br />
<br />
'''Cache cleaning'''<br><br />
The process of writing dirty data in a cache to main memory.<br />
<br />
'''Coprocessor'''<br><br />
An additional processor that is used for certain operations, for example, for floating-point math calculations, signal processing, or memory management.<br />
<br />
'''Dirty data'''<br><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.<br />
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.<br />
<br />
'''Halfword'''<br><br />
A 16-bit unit of information.<br />
<br />
'''Host'''<br><br />
A computer which provides data and other services to another computer. Especially, a computer providing debugging services to a target being debugged.<br />
<br />
'''ICache'''<br><br />
Instruction cache.<br />
<br />
'''ID'''<br><br />
Identifier.<br />
<br />
'''IEEE 1149.1'''<br><br />
The IEEE Standard which defines TAP. Commonly (but incorrectly) referred to as JTAG.<br />
<br />
'''Image'''<br><br />
An executable file that has been loaded onto a processor for execution.<br />
<br />
'''Instruction Register'''<br><br />
When referring to a TAP controller, a register that controls the operation of the TAP.<br />
<br />
'''IR'''<br><br />
See Instruction Register.<br />
<br />
'''Joint Test Action Group (JTAG)'''<br><br />
The name of the standards group which created the IEEE 1149.1 specification.<br />
<br />
'''Little-endian'''<br><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.<br />
<br />
'''Memory coherency'''<br><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.<br />
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.<br />
<br />
'''Memory management unit (MMU)'''<br><br />
Hardware that controls caches and access permissions to blocks of memory, and translates virtual to physical addresses.<br />
<br />
'''Memory Protection Unit (MPU)'''<br><br />
Hardware that controls access permissions to blocks of memory. Unlike an MMU, a MPU does not translate virtual addresses to physical addresses.<br />
<br />
'''RESET'''<br><br />
Abbreviation of System Reset. The electronic signal which causes the target system other than the TAP controller to be reset.<br />
This signal is also known as "nSRST" "nSYSRST", "nRST", or "nRESET" in some other manuals. See also nTRST.<br />
<br />
'''nTRST'''<br><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.<br />
<br />
'''Open collector'''<br><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.<br />
<br />
'''Processor Core'''<br><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.<br />
It excludes optional coprocessors, caches, and the memory management unit.<br />
<br />
'''Remapping'''<br><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.<br />
<br />
'''RTOS'''<br><br />
Real Time Operating System.<br />
<br />
'''TAP Controller'''<br><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.<br />
<br />
'''Target'''<br><br />
The actual processor (real silicon or simulated) on which the application program is running.<br />
<br />
'''TCK'''<br><br />
The electronic clock signal which times data on the TAP data lines TMS, TDI, and TDO.<br />
<br />
'''TDI'''<br><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.<br />
<br />
'''TDO'''<br><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.<br />
<br />
'''Test Access Port (TAP)'''<br><br />
The port used to access a device's TAP Controller. Comprises TCK, TMS, TDI, TDO, and nTRST (optional).<br />
<br />
'''Transistor-transistor logic (TTL)'''<br><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.<br />
<br />
'''Word'''<br><br />
A 32-bit unit of information. Contents are taken as being an unsigned integer unless otherwise stated.<br />
== Literature and references ==<br />
This chapter lists documents, which we think may be useful to gain a deeper understanding of technical details.</div>JanBhttps://wiki.segger.com/index.php?title=UM08022_Flasher&diff=17344UM08022 Flasher2023-12-21T14:09:17Z<p>JanB: /* Commands and replies */</p>
<hr />
<div><!---<br />
General TBD:<br />
- LG: Right now - EVERYTHING<br />
===========================================<br />
--------------------[more specific, but on multiple locations]<br />
- check if all emphasis (bold, tt, blue, etc ) have made it into the new version<br />
- Add Information -> Additional information<br />
- use of the term free-of-charge utility/tool etc<br />
- check compliant to DocStandards_Rules.txt<br />
- Remove everything regarding to Kickstarter versions? eventually create a chapter Legacy -> Kickstarter version were available for hw version 5-x (200x-200x)...[..]<br />
- 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.<br />
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.<br />
- if week keep the IDE specific stuff in the manual, add Ozone, ES and J-Link Commander were no mentioned.<br />
- IDE specifics move into wiki confirmed by Alex<br />
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)<br />
- check all sections regarding licensing<br />
- Check compliance of J-Link emDocs with typographic conventions described in AboutThisDocument.emDoc. What should be altered? e.g. references<br />
- use uref at all (not blue)?<br />
- search and decide where to use \ref (ref with page number)<br />
- why is \ref (no single "option" \uref is more basic as \ref.....)<br />
- in text, use either \ref or \iref instead of \uref<br />
- in old manual, \H3 started on a new page (not per default, but set manually for api tables etc...)<br />
- move used old images and source files (visio etc) via svn (currently copied)<br />
--------------------[grammar / vocabulary discussion]<br />
- Product names<br />
-- Use of SEGGEPROBE in this document?<br />
- use license over licence<br />
- commandline or command-line?<br />
- toolchain or tool chain?<br />
- crossreference/cross-reference/cross reference?<br />
- overcurrent?<br />
- double words?<br />
- frontend?<br />
- Unit: Kbytes, KBytes, V, mV.... 9V or 9 V? Create rule in Vocabulary<br />
- baudrate or baud rate?<br />
- stackpointer or stack pointer<br />
- check where we should replace abbreviations with the long form (e.h. "milliseconds" instead of "ms")<br />
- config or configuration<br />
- filepointer or file pointer?<br />
--------------------[J-Link dep. specific]<br />
- J-Link command strings or J-Link Command strings or J-Link Command Strings<br />
- J-Link settings file or...<br />
- J-Link control panel or ......<br />
- J-Link script files or...<br />
---><br />
Flasher is a programming tool for microcontrollers with on-chip or external flash memory.<br />
Flasher is designed for programming flash targets with the J-Flash software or stand-alone.<br />
In addition to that Flasher can also be used as a regular J-Link. For more information about J-Link in general,<br />
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].<br />
<br />
<div class="toclimit-2"><br />
__TOC__<br />
</div><br />
<br />
== Flasher overview ==<br />
Flasher connects to a PC using the USB/Ethernet/RS232 interface (what host interfaces are available depends on the Flasher model),<br />
running Windows, Linux & MacOS. In stand-alone mode,<br />
Flasher can be driven by the start/stop button, or via the RS232 interface (handshake control or ASCII interface).<br />
Flasher always has a 20-pin connector, which target interfaces are supported depends on the Flasher model:<br />
* Flasher ARM: JTAG and SWD are supported.<br />
* Flasher RX: JTAG is supported. Flasher comes with additional 14-pin RX adapter<br />
* Flasher PPC: JTAG is supported. Flasher comes with additional 14-pin PPC adapter.<br />
* Flasher PRO: JTAG and SWD are supported.<br />
* Flasher Compact: JTAG and SWD are supported.<br />
<br />
=== Features of Flasher ARM/PPC/RX/PRO ===<br />
* Three boot modes: PC-based mode, stand-alone mode, file access mode<br />
* Stand-alone JTAG/SWD programmer (Once set up, Flasher can be controlled without the use of PC program)<br />
* No power supply required, powered through USB<br />
* Supports internal and external flash devices<br />
* 128 MB memory for storage of target program<br />
* Can be used as J-Link (emulator) with a download speed of up to 720 Kbytes/second<br />
* Data files can updated via USB/Ethernet (using the J-Flash software), via FTP, via RS232 or via the file access mode of Flasher<br />
<br />
{| class="seggertable"<br />
|-<br />
! Flasher model !! Supported cores !! Supported target interfaces !! Flash programming speed (depending on target hardware)<br />
|-<br />
| Flasher ARM || ARM7/ARM9/Cortex-M || JTAG, SWD || between 170 and 300 Kbytes/second<br />
|-<br />
| Flasher RX || Renesas RX610, RX621, RX62N, RX62T || JTAG || between 30-300 Kbytes/second<br />
|-<br />
| Flasher PPC || Power PC e200z0 || JTAG || up to 138 Kbytes/second<br />
|-<br />
| Flasher PRO || ARM7/ARM9/Cortex-M Renesas RX610, RX621, RX62N, RX62T Power PC e200z0 || JTAG, SWD || between 30-300 Kbytes/ second<br />
|-<br />
|}<br />
<br />
==== Features of Flasher Compact ====<br />
<br />
* Three boot modes: PC-based mode, stand-alone mode, file access mode<br />
* Stand-alone JTAG/SWD programmer (Once set up, Flasher can be controlled without the use of PC program)<br />
* No power supply required, powered through USB<br />
* Supports internal and external flash devices<br />
* 128 MB memory for storage of target program<br />
* Can be used as J-Link (emulator) with a download speed of up to 720 Kbytes/second<br />
* Data files can updated via USB/Ethernet (using the J-Flash software) or via the file access mode of Flasher<br />
<br />
{| class="seggertable"<br />
|-<br />
! Flasher model !! Supported cores !! Supported target interfaces !! Flash programming speed (depending on target hardware)<br />
|-<br />
| Flasher ARM || ARM7/ARM9/Cortex-M || JTAG, SWD || between 170 and 300 Kbytes/second<br />
|-<br />
| Flasher RX || Renesas RX610, RX621, RX62N, RX62T || JTAG || between 30-300 Kbytes/second<br />
|-<br />
| Flasher PPC || Power PC e200z0 || JTAG || up to 138 Kbytes/second<br />
|-<br />
| Flasher Compact || ARM7/ARM9/Cortex-M Renesas RX610, RX621, RX62N, RX62T Power PC e200z0 || JTAG, SWD || between 30-300 Kbytes/ second<br />
|-<br />
|}<br />
<br />
==== Features of Flasher Portable/Flasher Portable PLUS ====<br />
<br />
* Stand-alone in-circuit-programmer (Once set up, Flasher can be controlled without the use of a PC program)<br />
* Powered by an internal rechargeable battery (standard batteries for Flasher Portable), no Laptop or external power supply required.<br />
* Multiple firmware images can be stored on Flasher<br />
* 128 MB memory for storage of target program<br />
* Easy selection of image to be programmed, via button<br />
* Supported CPUs: ARM Cortex, Legacy ARM7/9, Renesas RX, Freescale PowerPC<br />
* Supports internal and external flash<br />
* Free software updates<ref name="legitimateOwned" />, 1 year of support<br />
* Data files can be updated via the file access mode functionality or via J-Flash<br />
* Programming speed between 30-300 Kbytes/second (actual speed depends on target hardware)<br />
{{Note|1=Ethernet and RS232 as host interface are not available for Flasher Portable}}<br />
<references><br />
<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.<br />
As a legitimate owner of a SEGGER Flasher, you can always download the latest software free of charge.<br />
Though not planned and not likely, we reserve the right to change this policy.<br />
Note that older models may not be supported by newer versions of the software.<br />
Typically, we support older models with new software at least 3 years after end of life.<br />
</ref><br />
</references><br />
<br />
{| class="seggertable"<br />
|-<br />
! Supported cores !! Supported target interfaces !! Flash programming speed (depending on target hardware)<br />
|-<br />
| ARM7/ARM9/Cortex-M || JTAG, SWD || between 30-300 Kbytes/second<br />
|-<br />
| Renesas RX610, RX621, RX62N, RX62T || JTAG || between 170 and 300 Kbytes/second<br />
|-<br />
| Power PC e200z0 || JTAG || up to 138 Kbytes/second<br />
|-<br />
|}<br />
<br />
==== Working environment ====<br />
<br />
'''General'''<br><br />
The Flasher can operate from a PC with an appropriate software like J-Flash or in stand-alone mode.<br />
<br />
'''Host System'''<br><br />
IBM PC/AT or compatible CPU: 486 (or better) with at least 128MB of RAM,<br />
running Windows, Linux & MacOS. It needs to have a USB, Ethernet or RS232 interface available for communication with Flasher.<br />
<br />
'''Power supply'''<br><br />
Flasher Portable: 3x standard AAA batteries or 5V DC, min. 100 mA via USB connector.<br />
<br />
Flasher Portable PLUS: internal rechargeable 680mAh Li-Ion battery, min. 100 mA via USB connector.<br />
<br />
Other Flashers: 5V DC, min. 100 mA via USB connector.<br />
<br />
'''Installing Flasher PC-software'''<br><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><br />
More information about the package you can find in the similar [[J-Link Software and Documentation Pack]].<br><br />
The package includes U-Flash and J-Flash, the main tools for flashing targets:<br />
* J-Flash : J-Flash User Guide ([https://wiki.segger.com/UM08003_JFlash UM08003_JFlash.pdf]).<br />
* U-Flash : U-Flash User Guide ([https://www.segger.com/downloads/flasher/UM08037.pdf UM08037_UniversalFlashLoader.pdf]).<br />
<br />
=== Specifications ===<br />
<br />
<br />
==== Specifications for Flasher ARM ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Windows, Linux & MacOS<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C<br />
|-<br />
| Storage Temperature || -20 °C ... +60 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
!colspan="100%"| Mechanical<br />
|-<br />
| Size (without cables) || 121mm x 66mm x 30mm<br />
|-<br />
| Weight (without cables) || 119g<br />
|-<br />
!colspan="100%"| Available interfaces<br />
|-<br />
| USB Host interface || USB 2.0, full speed<br />
|-<br />
| Ethernet Host interface || 10/100 MBit<br />
|-<br />
| RS232 Host interface || RS232 9-pin<br />
|-<br />
| Target interface || JTAG 20-pin (14-pin adapter available)<br />
|-<br />
!colspan="100%"| JTAG Interface, Electrical<br />
|-<br />
| Power Supply || USB powered, 100mA for Flasher ARM. 500 mA if target is powered by Flasher ARM<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| Target supply voltage || Supply voltage is 5V, max.<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6 <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Max. JTAG speed || up to 12MHz<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
===== Flasher ARM download speed =====<br />
<br />
The following table lists the Flasher ARM performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! ARM7 memory download<br />
|-<br />
| Flasher ARM || 720 Kbytes/s (12MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
<br />
==== Specifications for Flasher RX ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Windows, Linux & MacOS<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C<br />
|-<br />
| Storage Temperature || -20 °C ... +60 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
!colspan="100%"| Mechanical<br />
|-<br />
| Size (without cables) || 121mm x 66mm x 30mm<br />
|-<br />
| Weight (without cables) || 119g<br />
|-<br />
!colspan="100%"| Available interfaces<br />
|-<br />
| USB Host interface || USB 2.0, full speed<br />
|-<br />
| Ethernet Host interface || 10/100 MBit<br />
|-<br />
| RS232 Host interface || RS232 9-pin<br />
|-<br />
| Target interface || JTAG 20-pin (shipped with 14-pin adapter for Renesas RX)<br />
|-<br />
!colspan="100%"| JTAG Interface, Electrical<br />
|-<br />
| Power Supply || USB powered, 100mA for Flasher RX. 500 mA if target is powered by Flasher RX<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| 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)<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6 <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Max. JTAG speed || up to 12MHz<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
===== Flasher RX download speed =====<br />
<br />
The following table lists the Flasher RX performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! Flasher RX600 series memory download<br />
|-<br />
| Flasher RX || 720 Kbytes/s (12MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
<br />
==== Specifications for Flasher PPC ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Windows, Linux & MacOS<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C<br />
|-<br />
| Storage Temperature || -20 °C ... +60 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
!colspan="100%"| Mechanical<br />
|-<br />
| Size (without cables) || 121mm x 66mm x 30mm<br />
|-<br />
| Weight (without cables) || 119g<br />
|-<br />
!colspan="100%"| Available interfaces<br />
|-<br />
| USB Host interface || USB 2.0, full speed<br />
|-<br />
| Ethernet Host interface || 10/100 MBit<br />
|-<br />
| RS232 Host interface || RS232 9-pin<br />
|-<br />
| Target interface || JTAG 20-pin (shipped with 14-pin adapter for Renesas PPC)<br />
|-<br />
!colspan="100%"| JTAG Interface, Electrical<br />
|-<br />
| Power Supply || USB powered, 100mA for Flasher PPC. 500 mA if target is powered by Flasher PPC<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| Target supply voltage || Supply voltage is 5V, max.<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6 <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Max. JTAG speed || up to 12MHz<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
===== Flasher RX download speed =====<br />
<br />
The following table lists the Flasher PPC performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! Memory download<br />
|-<br />
| Flasher PPC || 530 Kbytes/s (8 MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
<br />
==== Specifications for Flasher PRO ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Windows, Linux & MacOS<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C<br />
|-<br />
| Storage Temperature || -20 °C ... +60 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
!colspan="100%"| Mechanical<br />
|-<br />
| Size (without cables) || 121mm x 66mm x 30mm<br />
|-<br />
| Weight (without cables) || 119g<br />
|-<br />
!colspan="100%"| Available interfaces<br />
|-<br />
| USB Host interface || USB 2.0, full speed<br />
|-<br />
| Ethernet Host interface || 10/100 MBit<br />
|-<br />
| RS232 Host interface || RS232 9-pin<br />
|-<br />
| Target interface || JTAG 20-pin (14-pin adapter available)<br />
|-<br />
!colspan="100%"| JTAG Interface, Electrical<br />
|-<br />
| Power Supply || USB powered, 100mA for Flasher PRO. 500 mA if target is powered by Flasher PRO<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| Target supply voltage || Supply voltage is 5V, max.<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6 <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Max. JTAG speed || up to 12MHz<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
<br />
===== Supported CPU cores =====<br />
<br />
The Flasher PRO supports the following CPU cores:<br />
<br />
'''ARM Cortex'''<br><br />
* Cortex-A5<br />
* Cortex-A8<br />
* Cortex-A9<br />
* Cortex-R4<br />
* Cortex-R5<br />
* Cortex-M0<br />
* Cortex-M0+<br />
* Cortex-M1<br />
* Cortex-M3<br />
* Cortex-M4<br />
<br />
'''ARM (legacy cores)'''<br><br />
* ARM720T<br />
* ARM7TDMI<br />
* ARM7TDMI-S<br />
* ARM920T<br />
* ARM922T<br />
* ARM926EJ-S<br />
* ARM946E-S<br />
* ARM966E-S<br />
* ARM1136JF-S<br />
* ARM1136J-S<br />
* ARM1156T2-S<br />
* ARM1156T2F-S<br />
* ARM1176JZ-S<br />
* ARM1176JZF<br />
* ARM1176JZF-S<br />
<br />
'''Renesas RX'''<br><br />
* RX111<br />
* RX210<br />
* RX220<br />
* RX21A<br />
* RX610<br />
* RX621<br />
* RX62G<br />
* RX62N<br />
* RX62T<br />
* RX630<br />
* RX631<br />
* RX63N<br />
* RX63T<br />
<br />
'''Freescale Power PC'''<br><br />
* e200z0<br />
<br />
===== Supported Target interfaces =====<br />
<br />
The Flasher PRO supports the following target interfaces:<br />
<br />
* JTAG<br />
* SWD<br />
* FINE<br />
* SPD<br />
<br />
===== Flasher PRO download speed =====<br />
<br />
The following table lists the Flasher PRO performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! ARM7 memory download<br />
|-<br />
| Flasher PRO || 720 Kbytes/s (12MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
<br />
==== Specifications for Flasher Compact ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Microsoft Windows (x86/x64)<br>Linux (x86/x64/Arm)<br>macOS (x86/Apple M1)<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C<br />
|-<br />
| Storage Temperature || -20 °C ... +65 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
| Size (without cables) || 70mm x 45mm x 18mm<br />
|-<br />
| Weight (without cables) || 40g<br />
|-<br />
| USB Host interface || USB 2.0 (Hi-Speed); Micro USB<br />
|-<br />
| Target interface || JTAG 20-pin (14-pin adapter available)<br />
|-<br />
| Power Supply || USB powered, 130mA (idle)<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| Target supply voltage || Supply voltage is 5V, max.<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
| Supported target interfaces || SPI, QSPI, 8051 C2, cJTAG, FINE, ICSP, IIC, ISP, JTAG, PDI, SPD, SWD, SWIM, UART, UPDI<br />
|-<br />
| Serial transfer rate between Flasher Compact and target || Up to 50 MHz (Depending on target interface)<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6 <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
===== Supported CPU cores =====<br />
<br />
The Flasher Compact supports the following CPU cores:<br />
'''ARM Cortex'''<br><br />
* Cortex-A5<br />
* Cortex-A8<br />
* Cortex-A9<br />
* Cortex-R4<br />
* Cortex-R5<br />
* Cortex-M0<br />
* Cortex-M0+<br />
* Cortex-M1<br />
* Cortex-M3<br />
* Cortex-M4<br />
<br />
'''ARM (legacy cores)'''<br><br />
* ARM720T<br />
* ARM7TDMI<br />
* ARM7TDMI-S<br />
* ARM920T<br />
* ARM922T<br />
* ARM926EJ-S<br />
* ARM946E-S<br />
* ARM966E-S<br />
* ARM1136JF-S<br />
* ARM1136J-S<br />
* ARM1156T2-S<br />
* ARM1156T2F-S<br />
* ARM1176JZ-S<br />
* ARM1176JZF<br />
* ARM1176JZF-S<br />
<br />
'''Renesas RX'''<br><br />
* RX111<br />
* RX210<br />
* RX220<br />
* RX21A<br />
* RX610<br />
* RX621<br />
* RX62G<br />
* RX62N<br />
* RX62T<br />
* RX630<br />
* RX631<br />
* RX63N<br />
* RX63T<br />
<br />
'''Freescale Power PC'''<br><br />
* e200z0<br />
<br />
===== Flasher Compact download speed =====<br />
<br />
The following table lists the Flasher Compact performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! ARM7 memory download<br />
|-<br />
| Flasher Compact || 720 Kbytes/s (12MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
<br />
==== Specifications for Flasher Portable PLUS ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Windows, Linux & MacOS<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C (normal operation)<br>+5 °C ... +45 °C (battery charging)<br />
|-<br />
| Storage Temperature || -20 °C ... +45 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
| 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)<br />
|-<br />
| Charging via USB || 70 minutes (at 1A charging current)<br />
|-<br />
!colspan="100%"| Mechanical<br />
|-<br />
| Size (without cables) || 126mm x 70mm x 28mm<br />
|-<br />
| Weight (without cables) || 140g<br />
|-<br />
!colspan="100%"| Available interfaces<br />
|-<br />
| USB Host interface || USB 2.0<br />
|-<br />
| Target interface || Standard 20-pin 0.1" connector (Adapters available).<br />
|-<br />
!colspan="100%"| Target Interface, Electrical<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| Target supply voltage || Supply voltage is 4.5V, max. (depends on the current battery voltage).<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6 <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Max. JTAG speed || up to 12MHz<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
===== Supported CPU cores =====<br />
<br />
The Flasher Portable PLUS supports the following CPU cores:<br />
<br />
'''ARM Cortex'''<br><br />
* Cortex-A5<br />
* Cortex-A8<br />
* Cortex-A9<br />
* Cortex-R4<br />
* Cortex-R5<br />
* Cortex-M0<br />
* Cortex-M0+<br />
* Cortex-M1<br />
* Cortex-M3<br />
* Cortex-M4<br />
<br />
'''ARM (legacy cores)'''<br><br />
* ARM720T<br />
* ARM7TDMI<br />
* ARM7TDMI-S<br />
* ARM920T<br />
* ARM922T<br />
* ARM926EJ-S<br />
* ARM946E-S<br />
* ARM966E-S<br />
* ARM1136JF-S<br />
* ARM1136J-S<br />
* ARM1156T2-S<br />
* ARM1156T2F-S<br />
* ARM1176JZ-S<br />
* ARM1176JZF<br />
* ARM1176JZF-S<br />
<br />
'''Renesas RX'''<br><br />
* RX111<br />
* RX210<br />
* RX220<br />
* RX21A<br />
* RX610<br />
* RX621<br />
* RX62G<br />
* RX62N<br />
* RX62T<br />
* RX630<br />
* RX631<br />
* RX63N<br />
* RX63T<br />
<br />
'''Freescale Power PC'''<br><br />
* e200z0<br />
<br />
===== Supported Target interfaces =====<br />
<br />
The Flasher Portable PLUS supports the following target interfaces:<br />
* JTAG<br />
* SWD<br />
* FINE<br />
* SPD<br />
<br />
===== Flasher Portable PLUS download speed =====<br />
<br />
The following table lists the Flasher Portable PLUS performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! ARM7 memory download<br />
|-<br />
| Flasher PRO || 720 Kbytes/s (12MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
<br />
==== Specifications for Flasher Portable ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Windows, Linux & MacOS<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C<br />
|-<br />
| Storage Temperature || -20 °C ... +65 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
| Power Supply || a) USB powered, 100mA for Flasher Portable. 500 mA if target is powered by Flasher Portable<br>b) Batteries powered (3xAAA)<br />
|-<br />
!colspan="100%"| Mechanical<br />
|-<br />
| Size (without cables) || 130mm x 65mm x 25mm<br />
|-<br />
| Weight (without cables) || 120g<br />
|-<br />
!colspan="100%"| Available interfaces<br />
|-<br />
| USB Host interface || USB 2.0<br />
|-<br />
| Target interface || Standard 20-pin 0.1" connector (Adapters available).<br />
|-<br />
!colspan="100%"| Target Interface, Electrical<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| Target supply voltage || Supply voltage is 4.5V, max. (depends on the current battery voltage).<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6V <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Max. JTAG speed || up to 12MHz<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
===== Supported CPU cores =====<br />
<br />
The Flasher Portable supports the following CPU cores:<br />
<br />
'''ARM Cortex'''<br><br />
* Cortex-A5<br />
* Cortex-A8<br />
* Cortex-A9<br />
* Cortex-R4<br />
* Cortex-R5<br />
* Cortex-M0<br />
* Cortex-M0+<br />
* Cortex-M1<br />
* Cortex-M3<br />
* Cortex-M4<br />
<br />
'''ARM (legacy cores)'''<br><br />
* ARM720T<br />
* ARM7TDMI<br />
* ARM7TDMI-S<br />
* ARM920T<br />
* ARM922T<br />
* ARM926EJ-S<br />
* ARM946E-S<br />
* ARM966E-S<br />
* ARM1136JF-S<br />
* ARM1136J-S<br />
* ARM1156T2-S<br />
* ARM1156T2F-S<br />
* ARM1176JZ-S<br />
* ARM1176JZF<br />
* ARM1176JZF-S<br />
<br />
'''Renesas RX'''<br><br />
* RX111<br />
* RX210<br />
* RX220<br />
* RX21A<br />
* RX610<br />
* RX621<br />
* RX62G<br />
* RX62N<br />
* RX62T<br />
* RX630<br />
* RX631<br />
* RX63N<br />
* RX63T<br />
<br />
'''Freescale Power PC'''<br><br />
* e200z0<br />
<br />
===== Supported Target interfaces =====<br />
<br />
The Flasher Portable supports the following target interfaces:<br />
<br />
* JTAG<br />
* SWD<br />
* FINE<br />
* SPD<br />
<br />
===== Flasher Portable download speed =====<br />
<br />
The following table lists the Flasher Portable performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! ARM7 memory download<br />
|-<br />
| Flasher PRO || 720 Kbytes/s (12MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
== Working with Flasher ==<br />
<br />
This chapter describes functionality and how to use Flasher.<br />
<br />
=== Flasher Portable PLUS ===<br />
<br />
The Flasher Portable PLUS is a portable version of SEGGERs Flasher family,<br />
which has been designed to fill the need of an extremely portable, production grade,<br />
Flash programmer used for in-field firmware updates. No need to be tethered to an outlet,<br />
it is powered by an integrated Li-Ion cell (680mAh).<br />
The Flasher Portable PLUS programs flash targets in stand-alone mode or via J-Flash PC software.<br><br />
<br />
Furthermore the Flasher Portable PLUS allows the user to select between eight data images to be programmed.<br />
The images can be easily selected by using the SEL button on the front of the housing.<br />
For more information about support for multiple images, please refer to [[#Multiple File Support | Multiple File Support]].<br><br />
For setup and configuration purposes, the Flasher Portable PLUS connects to a PC via USB interface,<br />
running Windows, Linux & MacOS and has a built-in standard 20-pin J-Link target connector.<br><br />
<br />
{{Note|1=Ethernet and RS232 as host interface are not available for the Flasher Portable PLUS.}}<br />
<br />
==== Housing & Buttons ====<br />
<br />
The Flasher Portable PLUS comes with a display, which is for example used to represent the status of an ongoing flash progress.<br />
Furthermore, there are three buttons which allow the user to control Flasher Portable PLUS.<br />
For a detailed description of the functions, take a look at the table below:<br />
<br />
<!-- LG xxxxxx edit image with labels for buttons? (Is this actually necessary? Buttons are basically self-explanatory...) --><br />
[[File:Flasher_Portable_PLUS.png | 500px]]<br />
<br />
{| class="seggertable"<br />
|-<br />
! Button !! Description<br />
|-<br />
| Program || Start programming process with the currently selected image.<br />
|-<br />
| Select image || Select the image to be programmed next time the Program button is pressed.<br />
|-<br />
| 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.<br />
|-<br />
|}<br />
<br />
==== Configuration ====<br />
<br />
The Flasher Portable PLUS has some configuration options the other Flashers do not have.<br />
{| class="seggertable"<br />
|-<br />
! Option !! Description !! Value range !! Default value<br />
|-<br />
| AutoPowerOffOnIdle || Specifies the time interval after which the Flasher Portable will turn off without any user action || 1 to 3600 || 60<br />
|-<br />
| ShowDatCRCAfterProgramming || Activates displaying the data file CRC after the programming in the pop up message || 0 = inactive, 1 = active || 0<br />
|-<br />
|}<br />
<br />
If the <tt>Flasher.ini</tt> does not contain a <tt>[Config]</tt> section with the configuration option, the default value is used.<br />
<br />
'''Example:'''<br><br />
This sample will show the data file CRC after the programming and the auto power of is set to five minutes (=300 seconds).<br />
<br />
<source lang="c"><br />
[CONFIG]<br />
AutoPowerOffOnIdle = "300"<br />
ShowDatCRCAfterProgramming = "1"<br />
</source><br />
<br />
=== Flasher Portable ===<br />
<br />
The Flasher Portable is a portable version of SEGGERs Flasher family, which has been designed to fill the need of an extremely portable,<br />
production grade, Flash programmer used for in-field firmware updates. No need to be tethered to an outlet,<br />
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><br />
<br />
Furthermore the Flasher Portable allows the user to select between four data images to be programmed.<br />
The images can be easily selected by using the arrow buttons on the front of the housing.<br />
For more information about support for multiple images, please refer to [[#Multiple File Support | Multiple File Support]].<br><br />
For setup and configuration purposes, the Flasher Portable connects to a PC via USB interface,<br />
running Windows, Linux & MacOS and has a built-in standard 20-pin J-Link target connector.<br><br />
<br />
{{Note|1=Ethernet and RS232 as host interface are not available for the Flasher Portable.}}<br />
<br />
==== Housing & Buttons ====<br />
<br />
The Flasher Portable comes with several leds which are for example used to represent the status of an ongoing flash progress.<br />
Furthermore, there are three buttons which allow the user to control Flasher Portable.<br />
For a detailed description of the functions, take a look at the two tables below:<br />
<br />
<!-- LG xxxxxx edit image with labels for buttons?--><br />
[[File:Flasher_Portable_Top_2.png | 500px]]<br />
<br />
{| class="seggertable"<br />
|-<br />
! LED !! Description<br />
|-<br />
| ACTIVE || GREEN. Blinks while the Flasher Portable is busy / performs operations on the target.<br />
|-<br />
| PASS/FAIL || GREEN/RED. Indicates, if the last flashing cycle was successful.<br />
<ul><br />
<li> GREEN: Flashing cycle completed successfully.</li><br />
<li> RED: Flashing cycle completed with error.</li><br />
</ul><br />
|-<br />
| 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]].<br />
|-<br />
| POWER || GREEN: Indicates if Flasher is currently powered. Blinks while Flasher Portable tries to enumerate via USB.<br />
|-<br />
| 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.<br />
|-<br />
|}<br />
<br />
{| class="seggertable"<br />
|-<br />
! Button !! Description<br />
|-<br />
| Program || Start programming process with the currently selected image.<br />
|-<br />
| Select image || Select the image to be programmed next time the <tt>Program</tt> button is pressed.<br />
|-<br />
| 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<br />
|-<br />
|}<br />
<br />
=== File system ===<br />
<br />
The Flasher supports 8.3 filenames only (8 characters filename, 3 characters file extension).<br />
Using longer filenames may result in incorrect operation. Integrated functions,<br />
like the FTP server or the terminal server, will refuse writing files with long filenames.<br />
<br />
=== Setting up the IP interface ===<br />
<br />
Setting up the IP interface<br />
Some of the Flasher models come with an additional Ethernet interface to communicate with the host system.<br />
These Flashers also come with a built-in webserver which allows some basic setup of the emulator,<br />
e.g. configuring a default gateway which allows using it even in large intranets. For more information,<br />
please refer to [[#TCP Services | TCP Services]].<br />
<br />
==== Connecting the first time ====<br />
<br />
When connecting Flasher the first time, it attempts to acquire an IP address via DHCP.<br />
The recommended way for finding out which IP address has been assigned to Flasher is, to use the J-Link Configurator.<br />
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.<br />
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''.<br />
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,<br />
please refer to ''UM08001, J-Link / J-Trace User Guide'', chapter ''Setup'', section ''Setting up the IP interface''.<br />
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]].<br />
<br />
=== Operating modes ===<br />
<br />
All Flashers except the Flasher ATE are able to boot in 3 different modes:<br />
<br />
* PC-based mode<br />
* Stand-alone mode<br />
* File access mode<br />
<br />
{{Note|1=The Flasher ATE only supports the stand-alone mode.}}<br />
<br />
'''Definition PC-based mode'''<br><br />
Flasher is connected to a PC via USB/Ethernet and controlled by a PC application (J-Flash).<br />
If there is an RS232 connection to a PC, does not have any influence on if PC-based mode is entered or not.<br />
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, ...)<br />
<br />
'''Definition Stand-alone mode'''<br><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.<br />
<br />
'''Definition file access mode'''<br><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.<br />
In this mode, Flasher enumerates as a mass storage device (like an USB Stick) at the host PC.<br />
In this mode, configuration + data files can be manually placed on the Flasher and the Flasher logfile can be read out.<br />
If you are using a self-powered Flasher such as the Flasher Portable Plus, the Flasher must be turned off before connecting it.<br />
<br />
==== PC-based mode ====<br />
If you want to use Flasher for the first time you need to install the J-Link software and documentation package.<br />
After installation, connect Flasher to the host PC via USB or Ethernet.<br />
For more information about how to install the J-Link software and documentation package please refer to [[J-Link Software and Documentation Pack]].<br />
<br />
===== Connecting the target system =====<br />
<br />
'''Power-on sequence'''<br><br />
In general, Flasher should be powered on before connecting it with the target device.<br />
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.<br />
Power-on the device after you connected Flasher to it. Flasher will boot in "PC-based mode".<br />
<br />
'''Verifying target device connection with J-Link.exe'''<br><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.<br />
Then start the J-Link command line tool <tt>JLink.exe</tt>,<br />
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.<br />
The screenshot below shows the output of <tt>JLink.exe</tt>.<br />
<br />
[[File:flasher_jlinkmode.gif]]<br />
<br />
===== LED status indicators =====<br />
<br />
In PC-based mode, there are also certain LED status codes defined:<br />
<br />
{| class="seggertable"<br />
|-<br />
! # !! Status of LED !! Meaning<br />
|-<br />
| 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.<br />
|-<br />
| 0 || GREEN<br>constant || Flasher enumeration process is complete and it is ready to be controlled by a PC application.<br />
|-<br />
|}<br />
<br />
==== Stand-alone mode ====<br />
<br />
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]].<br />
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).<br />
In the "stand-alone mode" Flasher can be used as a stand-alone flash programmer.<br><br />
<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]].}}<br />
<br />
===== LED status indicators =====<br />
Progress and result of an operation is indicated by Flasher's LEDs. The behavior is different for J-Link and stand-alone mode.<br />
For a definition of the different modes, please refer to [[#Operating modes | Operating modes]].<br />
The following table describes the behavior of the LEDs in stand-alone mode.<br />
<br />
{| class="seggertable"<br />
|-<br />
! # !! Status of LED !! Meaning<br />
|-<br />
| 0 || GREEN<br>constant || Flasher waits for a start trigger to perform an operation in stand-alone mode.<br />
|-<br />
| 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><br />
|-<br />
| 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.<br />
|-<br />
|}<br />
Older Flasher models have a different behavior.<br />
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:<br />
<br />
* 1621xxxxx (Flasher ARM V2)<br />
* 1630xxxxx (Flasher ARM V3)<br />
* 4210xxxxx (Flasher PPC V1)<br />
* 4110xxxxx (Flasher RX V1)<br />
<br />
{| class="seggertable"<br />
|-<br />
! # !! Status of LED !! Meaning<br />
|-<br />
| 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.<br />
|-<br />
| 1 || GREEN<br>constant || Connect to target and perform init sequence.<br />
|-<br />
| 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><br />
|-<br />
| 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.<br />
|-<br />
|}<br />
<br />
==== File access mode ====<br />
<br />
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".<br />
If you are using a self-powered Flasher such as the Flasher Portable Plus, the Flasher must be turned off before connecting it.<br />
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.<br />
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>.<br />
<br />
[[File:flasher_mode_msd.gif]]<br />
<br />
<tt>FLASHER.CFG</tt> contains the configuration settings for programming the target device and <tt>FLASHER.DAT</tt> contains the data to be programmed.<br />
<tt>FLASHER.LOG</tt> contains all logging information about the commands, performed in stand-alone mode.<br />
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><br />
<br />
Currently, J-Flash does not support to configure Flasher for automated serial number programming.<br><br />
<br />
If you want to configure multiple Flasher for the same target you do not have to use J-Flash all the time.<br />
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".<br />
<br />
=== Setting up Flasher for stand-alone mode ===<br />
{{Note| All Options how to set up the Flasher for stand-alone mode you can find here: [[Flasher/Download project to Flasher|Download project to the Flasher]]}}<br />
<br />
In order to set up Flasher for the stand-alone mode it needs to be configured once using the J-Flash software.<br />
For more information about J-Flash, please refer to the ''J-Flash User Guide''.<br><br />
<br />
After starting J-Flash, open the appropriate J-Flash project for the target Flasher shall be configured for, by selecting '''File''' -> '''Open Project'''.<br />
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><br />
<br />
After the appropriate project has been opened / created, the data file which shall be programmed needs to be loaded, by selecting '''File''' -> '''Open'''.<br />
After this J-Flash should look like in the screenshot below.<br />
<br />
[[File:jflash_projectfile_datafile.gif]]<br />
<br />
Before downloading the configuration (project) and program data (data file) to Flasher, the connection type (USB/IP) needs to be selected in the project.<br />
These settings are also saved on a per-project basis, so this also only needs to be setup once per J-Flash project.<br />
The connection dialog is opened by clicking '''Options''' -> '''Project settings''' -> '''General'''.<br />
<br />
[[File:jflash_connection_dialog.gif]]<br />
<br />
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.<br />
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.<br />
The user then can simply select the Flash he wants to download the configuration to.<br />
<br />
[[File:EmuSelectionDialog.gif]]<br />
<br />
In order to download the configuration and program data to the Flasher, simply select '''File''' -> '''Download config & data file to Flasher'''.<br />
<br />
[[File:jflash_download_to_emul.gif]]<br />
<br />
The J-Flash log window indicates that the download to the emulator was successful.<br />
<br />
[[File:jflash_download_to_emu_succ.gif]]<br />
<br />
From now on, Flasher can be used in stand-alone mode (without host PC interaction) for stand-alone programming.<br />
<br />
==== Preparing for stand-alone operation manually ====<br />
<br />
As an alternative, J-Flash can also be used to save config and data file to a hard drive.<br><br />
<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,<br />
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.<br />
<br />
'''Creating config and data files'''<br><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><br />
<br />
For some devices, additional files (*.PEX) are needed.<br />
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.<br />
<br />
'''About *.PEX files'''<br><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,<br />
the following needs to be taken care of:<br><br />
<br />
For some devices, special connect, reset etc. sequences are necessary which are stored in so-called *.PEX files on the Flasher.<br><br />
<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><br />
<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><br />
The *.PEX files need to be placed in a subdirectory with the same name as the corresponding *.cfg file.<br />
J-Flash creates a directory with the correct name automatically when a config file is created.<br><br />
<br />
Example:<br><br />
<br />
MyConf0 is a project for a device that requires a *.PEX file for connect.<br><br />
MyConf1 is a project for a device that requires no *.PEX file at all.<br />
<br />
[[File:PEX_File_Flasher.png]]<br />
<br />
=== Universal Flash Loader mode ===<br />
<br />
As an alternative to the stand-alone mode, configured via J-Flash, there is the Universal Flash Loader mode.<br />
While the normal stand-alone mode relies on using the debug interface of the device, the Universal Flash Loader<br />
mode uses device or vendor specific programming interfaces and protocols and therefore it is independent of the<br />
CPU core.<br><br />
<br />
The Universal Flash Loader is available for the following Flasher models:<br />
* Flasher PRO<br />
* Flasher Compact<br />
* Flasher Portable PLUS<br />
<br />
For some of the supported devices, SEGGER offers specific adapters.<br />
<br />
==== Preparing manually ====<br />
<br />
The Universal Flash Loader uses an configuration file (*.UNI), a device specific flash programming algorithm (*.PEX) and a data file (*.DAT).<br />
<br />
===== Configuration =====<br />
<br />
The configuration file basically is split into three parts.<br />
The first part, the section [DEVICE], controls the generic behavior of the Universal Flash Loader.<br />
It specifies which protocol driver and data file to use. It allows enabling and configuring target power<br />
and it defines which actions to perform.<br />
The second part consists of one or more [BANKx] sections, which contain information about the memories.<br />
The third part, the section [CONFIG], includes configuration settings for the protocol driver.<br><br />
<br />
An .UNI file might look as follows:<br><br />
<br />
<source lang="c"><br />
[OPTIONS]<br />
TargetPower = "0"<br />
ChipErase = "0"<br />
<br />
[TASKS]<br />
CheckBlank = "1"<br />
Erase = "1"<br />
Program = "1"<br />
Verify = "1"<br />
Secure = "1"<br />
<br />
[DEVICE]<br />
Algo = "RL78.PEX"<br />
Data = "ALL_6k.dat"<br />
<br />
[BANK0]<br />
; Code Flash<br />
Base = "0x00000000"<br />
Size = "0x00004000"<br />
Sect = "0x00000400"<br />
<br />
[BANK1]<br />
; Data Flash<br />
Base = "0x000F1000"<br />
Size = "0x00000800"<br />
Sect = "0x00000400"<br />
<br />
[CONFIG]<br />
BaudRate = "1000000"<br />
ClearConfigOnConnect = "0x00"<br />
Security = "0xFF"<br />
ShieldStart = "0x0000"<br />
ShieldEnd = "0x000F"<br />
</source><br />
<br />
'''[OPTIONS]'''<br><br />
'''TargetPower'''<br><br />
If set to a value >0, power is applied to the target.<br />
The value defines the delay (in ms) after enabling the target power supply and before starting to communicate with the target.<br />
<br />
'''ChipErase'''<br><br />
If set to 1, the chip erase function is called for erasing the chip.<br><br />
{{Note|1=Do not enable this setting if the flash programming algorithm does not support chip erase.}}<br />
<br />
'''[TASKS]'''<br><br />
'''CheckBlank'''<br><br />
Defines if a blank check should be performed before erasing a sector.<br />
<br />
'''Erase'''<br><br />
Defines if the sector should be erased before programming.<br />
<br />
'''Program'''<br><br />
Defines if the sector should be programmed.<br />
<br />
'''Verify'''<br><br />
Defines if the sector should be verified after programming.<br />
<br />
'''Secure'''<br><br />
Defines if the device should be secured or protected against read-out after verifying.<br />
<br />
'''[DEVICE]'''<br><br />
'''Algo'''<br><br />
File name of the flash programming algorithm. This file is provided by SEGGER and will typically support a series of devices.<br />
<br />
'''Data'''<br><br />
File name of the data file to program. The Flasher only supports the Flasher .dat file format.<br />
Flasher .dat files can be generated by J-Flash or Universal Flash Loader and offer high performance together with high flexibility.<br />
<br />
'''[BANKx]'''<br><br />
x blocks with configuration data for the flash banks. All three parameters (Base, Size and Sect) are mandatory.<br />
<br />
'''Base'''<br><br />
Base address of the flash bank.<br />
<br />
'''Size'''<br><br />
Total size of the flash bank.<br />
<br />
'''Sect'''<br><br />
Sector size of the flash bank.<br />
<br />
'''[CONFIG]'''<br><br />
This section includes specific configuration data for the flash programming algorithm.<br><br />
There are no general parameters.<br />
<br />
{{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. }}<br />
<br />
==== Preparing using the PC utility ====<br />
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.<br />
<br />
[[File:Universal Flash Loader.png]]<br />
<br />
The Universal Flash Loader Configurator comes with a large list of devices and flash programming algorithms. If you are going to<br />
use a device from one of the supported families which currently is not available in the utility, feel free to contact the support.<br />
<br />
=== Multiple File Support ===<br />
<br />
It is also possible to have multiple data files and config files on Flasher, to make Flasher more easy to use in production environment.<br />
To choose the correct configuration file and data file pair, a <tt>FLASHER.INI</tt> file is used.<br />
This init file contains a <tt>[FILES]</tt> section which describes which configuration file and which data file should be used for programming.<br />
A sample content of a FLASHER.INI file is shown below:<br><br />
<br />
<source><br />
[FILES]<br />
DataFile = "Flasher1.dat"<br />
ConfigFile = "Flasher1.cfg"<br />
</source><br />
<br />
Using this method all configuration files and data files which are used in the production only have to be downloaded once.<br />
From there on a configuration file / data file pair can be switched by simply replacing the <tt>FLASHER.INI</tt> by a new one,<br />
which contains the new descriptions for the configuration file and data file. The <tt>FLASHER.INI</tt> can be replaced in two ways:<br />
<ol><br />
<li>Boot Flasher in file access mode in order to replace the <tt>FLASHER.INI</tt></li><br />
<li><br />
If Flasher is already integrated into the production line, runs in stand-alone mode and can not be booted in other mode:<br />
Use the file I/O commands provided by the ASCII interface of Flasher, to replace the <tt>FLASHER.INI</tt>.<br />
For more information about the file I/O commands, please refer to [[#File I/O commands | File I/O commands]].<br />
</li><br />
</ol><br />
{{Note|1=Flasher supports 8.3 filenames only (8 characters filename, 3 characters file extension). Using longer filenames may result in incorrect operation.}}<br />
<br />
==== Flasher Portable specifics ====<br />
<br />
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><br />
<br />
Which config / data file pair is used for which image selection position is determined by the contents of the FLASHER.INI.<br />
For this, the FLASHER.INI contents in the <tt>[FILES]</tt> section have been extended.<br />
The sample below shows how to enable the user to select between four different images on the Flasher portable via the select / arrow button:<br />
<br />
<source><br />
[FILES]<br />
DataFile = "First.dat"<br />
ConfigFile = "First.cfg"<br />
DataFile1 = "Second.dat"<br />
ConfigFile1 = "Second.cfg"<br />
DataFile2 = "Third.dat"<br />
ConfigFile2 = "Third.cfg"<br />
DataFile3 = "Fourth.dat"<br />
ConfigFile3 = "Fourth.cfg"<br />
</source><br />
<br />
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.<br />
From there on, switching between the files can be done by simply using the selection button of Flasher Portable.<br />
<br />
===== Example =====<br />
<br />
1 Target, 2 Datafiles (e.g. boot loader und application) --> same configuration file (*.CFG) but different data files (*.DAT) should be used.<br><br />
<br />
* Open pre-configured J-Flash project<br />
* File -> Save Flasher config file ... (DEFAULT.CFG)<br />
* Open data file 1 (boot loader)<br />
* File -> Save Flasher data file ... (BOOT.DAT)<br />
* Open data file 2 (application)<br />
* File -> Save Flasher data file ... (APP.DAT)<br />
* Create the a FLASHER.INI file (content see below)<br />
* Connect the Flasher in file access mode to the PC<br />
* Copy DEFAULT.CFG, BOOT.DAT, APP.DAT and FLASHER.INI on the Flasher<br />
<br />
FLASHER.INI content:<br><br />
<br />
<source><br />
[FILES]<br />
DataFile = "BOOT.DAT"<br />
ConfigFile = "DEFAULT.CFG"<br />
DataFile1 = "APP.DAT"<br />
ConfigFile1 = "DEFAULT.CFG"<br />
</source><br />
<br />
==== Flasher Portable PLUS specifics ====<br />
<br />
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><br />
<br />
Which config / data file pair is used for which image selection position is determined by the contents of the FLASHER.INI.<br />
For this, the FLASHER.INI may contain several <tt>[BATCH]</tt> sections.<br />
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:<br />
<br />
<source><br />
[BATCH]<br />
DataFile = "First.dat"<br />
ConfigFile = "First.cfg"<br />
[BATCH1]<br />
DataFile = "Second.dat"<br />
ConfigFile = "Second.cfg"<br />
[BATCH2]<br />
DataFile = "Third.dat"<br />
ConfigFile = "Third.cfg"<br />
[BATCH7]<br />
DataFile = "Proj_8.dat"<br />
ConfigFile = "Proj_8.cfg"<br />
[BATCH15]<br />
DataFile = "Proj_16.dat"<br />
ConfigFile = "Proj_16.cfg"<br />
</source><br />
<br />
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.<br />
From there on, switching between the files can be done by simply using the selection button of Flasher Portable PLUS.<br />
<br />
Please also consider the chapter [[#Batch Programming in stand-alone mode | Batch Programming in stand-alone mode]].<br />
<br />
{{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.}}<br />
{{Note|1=You may have gaps in the list. The missing entries will be skipped when selecting the next configuration.}}<br />
{{Note|1=The <tt>[Files]</tt> section is supported by the Flasher Portable PLUS, too. But the number of configuration is limited to four.}}<br />
<br />
===== Example =====<br />
<br />
1 Target, 2 Datafiles (e.g. boot loader und application) --> same configuration file (*.CFG) but different data files (*.DAT) should be used.<br><br />
<br />
* Open pre-configured J-Flash project<br />
* File -> Save Flasher config file ... (DEFAULT.CFG)<br />
* Open data file 1 (boot loader)<br />
* File -> Save Flasher data file ... (BOOT.DAT)<br />
* Open data file 2 (application)<br />
* File -> Save Flasher data file ... (APP.DAT)<br />
* Create the a FLASHER.INI file (content see below)<br />
* Connect the Flasher in file access mode to the PC<br />
* Copy DEFAULT.CFG, BOOT.DAT, APP.DAT and FLASHER.INI on the Flasher<br />
<br />
FLASHER.INI content:<br><br />
<br />
<source><br />
[BATCH]<br />
DataFile = "BOOT.DAT"<br />
ConfigFile = "DEFAULT.CFG"<br />
DisplayName = "Bootloader"<br />
[BATCH1]<br />
DataFile = "APP.DAT"<br />
ConfigFile = "DEFAULT.CFG"<br />
DisplayName = "Application"<br />
[BATCH2]<br />
DataFile = "BOOT.DAT"<br />
ConfigFile = "DEFAULT.CFG"<br />
DataFile1 = "APP.DAT"<br />
ConfigFile1 = "DEFAULT.CFG"<br />
DisplayName = "BL and App"<br />
</source><br />
<br />
=== Custom labels ===<br />
<br />
Flasher supports to assign custom labels to configurations. This allows to specify easy to remember names for configurations that are stored on the Flasher.<br />
<br />
==== Hardware and software requirements ====<br />
This feature is supported by the following models:<br />
* Flasher Portable PLUS<br />
<br />
This feature is supported since V6.30e of the software package and firmware<br />
<br />
==== Assigning labels ====<br />
The configuration and data file pairs are specified in the <tt>FLASHER.INI</tt> file:<br />
<source><br />
[FILES]<br />
DataFile = "IMAGE0.dat"<br />
ConfigFile = "IMAGE0.cfg"<br />
DataFile1 = "IMAGE1.dat"<br />
ConfigFile1 = "IMAGE1.cfg"<br />
</source><br />
<br />
By default, Flasher will show the names of the configuration and data file:<br />
[[File:FW1_smartwatch_nolabel.png]]<br />
[[File:FW2_smart_meter_nolabel.png]]<br />
<br />
By adding <tt>DisplayName</tt>, <tt>DisplayName1</tt>, ... keys to the <tt>FLASHER.INI</tt>, a custom label can be shown instead:<br />
<source><br />
[FILES]<br />
DisplayName = "FW smartwatch"<br />
DataFile = "IMAGE0.dat"<br />
ConfigFile = "IMAGE0.cfg"<br />
DisplayName1 = "FW smart meter"<br />
DataFile1 = "IMAGE1.dat"<br />
ConfigFile1 = "IMAGE1.cfg"<br />
</source><br />
<br />
The images will now be shown as follows:<br />
[[File:FW1_smartwatch_label.png]]<br />
[[File:FW2_smart_meter_label.png]]<br />
<br />
==== Considerations ====<br />
* 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.<br />
<br />
=== Programming multiple targets ===<br />
<br />
It is possible to program multiple targets which are located in a JTAG chain.<br />
The targets will be programmed each with a configuration and a data file.<br><br />
The configuration for the desired target must be selected before it can be programmed,<br />
this can be done with the <tt>#SELECT</tt> command.<br />
For more information how to use the <tt>#SELECT</tt> command please refer to the [[#ASCII_command_interface|ASCII command interface]].<br />
<br />
'''Example'''<br><br />
Three devices should be programmed.<br><br />
<br />
JTAG Chain: ''TDI'' --> ''Device2'' --> ''Device1'' --> ''Device0'' --> ''TDO''<br><br />
<br />
Three configurations would be stored on the flasher:<br><br />
<br />
Config 0: Configured to program Device0 (DEVICE0.CFG, DEVICE0.DAT)<br><br />
Config 1: Configured to program Device1 (DEVICE1.CFG, DEVICE1.DAT)<br><br />
Config 2: Configured to program Device2 (DEVICE2.CFG, DEVICE2.DAT)<br><br />
<br />
Selection and programming of the target will be done via the ASCII interface:<br><br />
<br />
<source><br />
#SELECT DEVICE0<br />
#AUTO<br />
#SELECT DEVICE1<br />
#AUTO<br />
#SELECT DEVICE2<br />
#AUTO<br />
</source><br />
<br />
==== Programming multiple targets with J-Flash ====<br />
<br />
Programming multiple targets can also be done via J-Flash using the command line interface.<br />
For this each target must be handled with its own project file.<br />
<br />
'''Example'''<br><br />
<br />
<source><br />
JFlash.exe -openproj"Device0.jflash" -open"Device0.hex" -auto -exit<br />
JFlash.exe -openproj"Device1.jflash" -open"Device1.hex" -auto -exit<br />
JFlash.exe -openproj"Device2.jflash" -open"Device2.hex" -auto -exit<br />
</source><br />
<br />
=== Batch Programming in stand-alone mode ===<br />
<br />
Batch programming allows to execute different stand-alone mode jobs in batch to be executed in immediate succession, without any user interaction in between.<br />
This can be used for example to program multiple targets in a JTAG-Chain or multiple data files to a target.<br><br />
A batch may contains an unlimited number of configurations which consist of a data file (*.DAT) and config file (*.CFG).<br />
For further information regarding config and data files, please refer to [[#Preparing for stand-alone operation manually | Preparing for stand-alone operation manually]].<br><br />
In order to specify the batch jobs, a FLASHER.INI file is used.<br />
This init file contains a [BATCH] section which describes which configuration pairs (*.DAT and *.CFG file) should be used for each batch job.<br />
A sample content of a FLASHER.INI file is shown below:<br><br />
<br />
<source><br />
[BATCH]<br />
DataFile = "Flasher0.dat"<br />
ConfigFile = "Flasher0.cfg"<br />
DataFile1 = "Flasher1.dat"<br />
ConfigFile1 = "Flasher1.cfg"<br />
</source><br />
<br />
[[File:Batch_Jobs.bmp]]<br />
<br />
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.<br />
<br />
<br />
[[File:Batch_Programming.bmp]]<br />
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<br />
currently executed action.<br />
<br />
<br />
[[File:Batch_Result.bmp]]<br />
The result of the programming will be shown on the screen after finishing all jobs.<br />
<br />
<br />
Creating / Replacing of the FLASHER.INI file can done in two ways:<br><br />
<ol><br />
<li>Boot Flasher in file access mode in order to replace the FLASHER.INI</li><br />
<li><br />
If Flasher is already integrated into the production line, runs in stand-alone mode and can not be booted in other mode:<br />
Use the file I/O commands provided by the ASCII interface of Flasher, to replace the FLASHER.INI .<br />
For more information about the file I/O commands, please refer to [[#File I/O commands | File I/O commands]].<br />
In case of an error occurred during execution, the Flasher terminates the entire batch processing.<br />
</li><br />
</ol><br />
{{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.}}<br />
{{Note|1=Flasher supports 8.3 filenames only (8 characters filename, 3 characters file extension). Using longer filenames may result in incorrect operation.}}<br />
<br />
==== Flasher Portable specifics ====<br />
<br />
Flasher Portable allows to choose between four different batches during runtime by using the select/arrow button on the front of Flasher Portable.<br />
Which batch configuration is used for which image selection position is specified in the FLASHER.INI.<br />
For this, the FLASHER.INI contents in the [BATCH] section have been extended.<br />
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><br />
<br />
<source><br />
[BATCH]<br />
DataFile = "Flasher0.dat"<br />
ConfigFile = "Flasher0.cfg"<br />
DataFile1 = "Flasher1.dat"<br />
ConfigFile1 = "Flasher1.cfg"<br />
DataFile2 = "Flasher2.dat"<br />
ConfigFile2 = "Flasher2.cfg"<br />
[BATCH1]<br />
DataFile = "TEST.dat"<br />
ConfigFile = "Test.cfg"<br />
[BATCH2]<br />
DataFile = "VALIDATE.dat"<br />
ConfigFile = "Flasher0.cfg"<br />
</source><br />
<br />
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.<br />
From there on, switching between the batches can be done by simply using the selection button of Flasher Portable.<br />
<br />
<br />
<br />
==== Examples ====<br />
<br />
'''Example 1:''' Programming two Data files to the same target<br><br />
<br />
* Open your J-Flash project.<br />
* Use File -> Save Flasher config file... to save the .CFG file (in this example: STM32F4.CFG).<br />
* Select the first binary and use File -> Save Flasher Data file... to save the first .DAT file (in this example: DATA0.DAT).<br />
* Select the second binary and use File -> Save Flasher Data file... to save the second data file .DAT file (in this example: DATA1.DAT).<br />
* Copy the Files to the Flasher e.g. by using file access mode.<br />
* Create a FLASHER.INI file in the root directory of the Flasher.<br />
* Exemplary content of FLASHER.INI:<br><br />
<source><br />
[BATCH]<br />
DataFile = "DATA0.dat"<br />
ConfigFile = "emPower.cfg"<br />
DataFile1 = "DATA1.dat"<br />
ConfigFile1 = "emPower.cfg"<br />
</source><br />
<br />
<br />
'''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><br />
Example scenario: 2 Devices in a JTAG chain, a STM32F1 and a STM32F4. <br><br />
<br />
* Follow the same as described before and additionally:<br />
* Create one project file per target (and create a .CFG file of each one).<br />
* Make sure each project file is configured correctly, especially the JTAG-Chain position (See UM8003 "J-Flash" for more detailed info).<br />
* Exemplary content of FLASHER.INI:<br><br />
<source><br />
[BATCH]<br />
DataFile = "F1DATA.dat"<br />
ConfigFile = "STM32F1.cfg"<br />
DataFile1 = "F4DATA0.dat"<br />
ConfigFile1 = "STM32F4.cfg"<br />
DataFile2 = "F4DATA1.dat"<br />
ConfigFile2 = "STM32F4.cfg"<br />
</source><br />
<br />
'''Example 3:''' Using multiple Batch sections with Flasher Portable.<br><br />
Example scenario: 2 Devices in a JTAG chain, a STM32F1 and a STM32F4.<br><br />
Selection 1 will program the STM32F1 target.<br><br />
Selection 2 will program the STM32F4 target using "F4DATA0.dat".<br><br />
Selection 3 will program the STM32F4 target using "F4DATA1.dat".<br><br />
Selection 4 will execute 1, 2 and 3 in sequence.<br><br />
* Exemplary content of FLASHER.INI:<br><br />
<source><br />
[BATCH]<br />
DataFile = "F1DATA.dat"<br />
ConfigFile = "STM32F1.cfg"<br />
[BATCH1]<br />
DataFile = "F4DATA0.dat"<br />
ConfigFile = "STM32F4.cfg"<br />
[BATCH2]<br />
DataFile = "F4DATA1.dat"<br />
ConfigFile = "STM32F4.cfg"<br />
[BATCH3]<br />
DataFile = "F1DATA.dat"<br />
ConfigFile = "STM32F1.cfg"<br />
DataFile1 = "F4DATA0.dat"<br />
ConfigFile1 = "STM32F4.cfg"<br />
DataFile2 = "F4DATA1.dat"<br />
ConfigFile2 = "STM32F4.cfg"<br />
</source><br />
<br />
=== Serial number programming ===<br />
<br />
Flasher supports programming of serial numbers. In order to use the serial number programming feature,<br />
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><br />
<br />
In general, Flasher supports two ways of programming a serial number into the target:<br />
<br />
#<br />
#* Programming continuous serial numbers.<br />
#* The serial number is 1-4 bytes in size.<br />
#* The start serial number, increment, serial number size, and address are configured in the J-Flash project.<br />
#<br />
#* Programming custom serial numbers from a serial number list file.<br />
#* The start line within the serial number list file to get the next serial number bytes, line increment, serial number size, and address is configured in the J-Flash project.<br />
#* The serial number list file needs to be specified and created by the user.<br />
<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.}}<br />
<br />
==== Serial number settings ====<br />
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.<br />
This is done by enabling the '''Program serial number''' option as shown in the screenshot and table below:<br />
<br />
[[File:UM08039_SN_Sample_JFlashSettings.png]]<br />
<br />
{| class="seggertable"<br />
|-<br />
!| Setting || Meaning<br />
|-<br />
| <tt>Address</tt> || The address the serial number should be programmed at.<br />
|-<br />
| <tt>Length</tt> ||<br />
The length of the serial number (in bytes) that 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 8 is selected as length, the serial number and its complement are programmed at the given address.<br />
* In case a serial number list file is given, the 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 '''Length''', the remaining bytes are filled with 0s. No complements etc. are added to the serial number.<br />
|-<br />
| <tt>Next SN</tt> ||<br />
* In case no serial number list file is given, '''Next SN''' is the next serial number which should be programmed. The serial number is always stored in flash memory in little-endian format.<br />
* In case a serial number list file is given, '''Next SN''' describes the line of the serial number list file where to read the next serial number bytes from. The Flasher starts counting at line 0, so in order to start serial number programming with the first line of the <tt>SNList.txt</tt>, '''Next SN''' needs to be set to 0.<br />
|-<br />
| <tt>Increment</tt> || Specifies by how much '''Next SN''' is incremented.<br />
|}<br />
<br />
=== Serial number file ===<br />
When selecting '''File -> Download serial number file to Flasher''', J-Flash will create a serial number file named as <tt><JFlashProjectName>_Serial.txt</tt>.<br />
This file is downloaded as <tt>Serial.txt</tt> on the Flasher.<br />
The file is generated based on the serial number settings in the J-Flash project and will contain the value defined by the '''Next SN''' option.<br />
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.<br />
<br />
==== Serial number list file ====<br />
<br />
In order to program custom serial numbers which can not be covered by the standard serial number scheme provided by J-Flash<br />
(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.<br />
<br />
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.<br />
This file is downloaded as <tt>SNList.txt</tt> on the 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<br />
* Each byte of the serial number is described by two hexadecimal digits.<br />
<br />
'''Example'''<br><br />
A 8-byte serial number should be programmed at address 0x08000000.<br><br />
<br />
It should be programmed as follows in the memory:<br><br />
<br />
<tt>0x08000000: 0x01 0x02 0x03 0x04 0x55 0x66 0x77 0x88</tt><br><br />
<br />
The serial number list file should look as follows:<br><br />
<br />
<tt>0102030455667788</tt><br />
<br />
[[File:SN_SNList.gif]]<br />
<br />
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><br />
<br />
Which line Flasher will read at the next programming cycle, is configured via the <tt>Next SN</tt> option in J-Flash.<br />
For more information, please refer to [[#Serial number settings | Serial number settings]].<br />
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><br />
<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.}}<br />
{{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.}}<br />
<br />
==== Programming process ====<br />
<br />
Flasher will increment the serial number in SERIAL.TXT by the value defined in <tt>Increment</tt>, after each successful programming cycle.<br><br />
<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><br />
<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.<br />
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.}}<br />
<br />
==== Downloading serial number files to Flasher ====<br />
<br />
Downloading the serial number files needs to be done explicitly by selecting '''File-> Download serial number file to Flasher'''.<br />
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.<br />
<br />
==== Sample setup ====<br />
<br />
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.<br />
<br />
'''Defining serial number address, length and start value'''<br><br />
In the J-Flash project the following needs to be defined:<br><br />
* <tt>Address</tt> is 0x08001000<br />
* <tt>Next SN</tt> is 1234567<br />
* <tt>Increment</tt> is 1<br />
* <tt>Len</tt> is 4 (bytes)<br />
<br />
[[File:SN_Sample_JFlashSettings.gif]]<br />
<br />
'''Downloading configuration, data and serial number to Flasher.'''<br><br />
After setting up the rest of the configuration (Target interface etc.) and selecting an appropriate data file, the configuration,<br />
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><br />
<br />
[[File:SN_Sample_DownloadToFlasher.gif]]<br />
<br />
After downloading the serial number to Flasher, J-Flash also created the <tt><JFlashProjectName>_Serial.txt</tt>.<br />
<br />
[[File:SN_Sample_SerialFileCreated.gif]]<br />
<br />
Now Flasher is prepared to program the 8-byte serial number.<br />
<br />
=== Patch file support ===<br />
<br />
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.<br />
Before starting programming process in stand-alone mode, Flasher will look for a file named <tt>Patches.txt</tt> being present on the Flasher.<br />
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><br />
<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.<br />
<br />
'''Syntax'''<br><br />
<!-- LG xxxxxxxxx '==' is shown as '=', so instead use '= ='--><br />
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><br />
<br />
<tt><NumPatches>,<Addr>,<NumBytes>:<nowiki><Data></nowiki>,<Addr>,<NumBytes>:<nowiki><Data></nowiki>,<Addr>,<NumBytes>:<nowiki><Data></nowiki>,<Addr>,<NumBytes>:<nowiki><Data></nowiki>\r\n</tt><br><br />
<br />
Find below a table which describes each parameter.<br><br />
{| class="seggertable"<br />
|-<br />
! Parameter !! Description<br />
|-<br />
| <tt><NumPatches></tt> || Describes the number of patches in this patch line. Max. value is 4.<br />
|-<br />
| <tt><Addr></tt> || Describes the address to be patched. Value is expected in hex.<br />
|-<br />
| <tt><NumBytes></tt> || Number of bytes for the current patch. Max. value is 20h (32 in decimal). Value is expected in hex.<br />
|-<br />
| <tt><nowiki><Data></nowiki></tt> || Describes the data to be patched. <nowiki><Data></nowiki> is always expected as 2 hexadecimal characters per byte.<br />
|-<br />
|}<br />
<br />
{{Note|1=All values are expected in hexadecimal format (hex).<br><br />
<nowiki><Data></nowiki> section is always preceded by ":", not ",".}}<br />
<br />
'''Example'''<br><br />
Below is an example patch.<br><br />
<br />
<source><br />
1,18,4:01020304\r\n<br />
</source><br />
<br />
Patching the following data:<br />
<br />
[[File:data_before.png]]<br />
<br />
with the example patch will result in the following data:<br />
<br />
[[File:data_afterwards.png]]<br />
<br />
Please note that as mentioned earlier patching undefined memory locations will be ignored.<br><br />
Applying the example patch to the following data:<br />
<br />
[[File:undefined_mem_before.png]]<br />
<br />
Causes no data to be patched, as can be seen in the following image:<br />
<br />
[[File:undefined_mem_no_token.png]]<br />
<br />
Therefore it is necessary to first write placeholder data to the memory locations which are supposed to be patched.<br><br />
An example for such a placeholder can be seen here:<br />
<br />
[[File:undefined_mem_token.png]]<br />
<br />
Please note that the actual data inside the placeholder does not matter to the Flasher,<br />
because it is overwritten during patching.<br><br />
Applying the example patch will now work as expected:<br />
<br />
[[File:undefined_mem_after.png]]<br />
<br />
'''Single patch via RS232'''<br><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><br />
<br />
Send the <tt>#AUTO PATCH <NumPatches>,<Addr>,<NumBytes>:<nowiki><Data></nowiki></tt><br><br />
<br />
command via Flasher ASCII interface. The parameters have the same function as described in the table above.<br />
<br />
==== Newline encoding ====<br />
<br />
In general, for all patch files, init files etc. Flasher supports both newline encodings:<br><br />
<br />
* Windows: \r\n<br />
* Unix/Mac: \n<br />
<br />
All parser functionality etc. are written to be independent from the host operating system.<br />
<br />
=== Limiting the number of programming cycles ===<br />
<br />
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.<br />
To make use of this feature, a file called <tt>Cntdown.txt</tt> needs to be placed on the Flasher.<br />
This file simply contains a decimal number (32-bit unsigned integer) that describes how many programming cycles can be performed with the current setup.<br />
<br />
[[File:CntdownTxtContent.jpg]]<br />
<br />
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><br />
<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>.}}<br />
<br />
==== Changed fail/error LED indicator behavior ====<br />
<br />
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><br />
<br />
* The red error/fail LED will lit for 1 second<br />
* After this, it will blink/toggle x times @ 5 Hz, indicating the number of programming cycles left. (blinking 5 times for 5 cycles left, ...)<br />
<br />
==== Required Flasher hardware version for Cntdown.txt support ====<br />
<br />
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><br />
<br />
* 1621xxxxx (Flasher ARM V2)<br />
* 1630xxxxx (Flasher ARM V3)<br />
* 4210xxxxx (Flasher PPC V1)<br />
* 4110xxxxx (Flasher RX V1)<br />
<br />
All other models / hardware versions support limiting of programming cycles.<br />
<br />
=== Authorized flashing ===<br />
<br />
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.<br />
without the possibility to read out the Flasher contents via file access mode, FILE I/O functionality (J-Link Commander) or RS232 commands.<br />
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.<br />
<br />
==== Creating / Adding the secure area ====<br />
<br />
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.<br />
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.<br />
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><br />
<br />
[[File:CreateSecArea.jpg]]<br />
<br />
The following secure area related commands are available in J-Link Commander:<br><br />
<br />
* securearea create<br />
* securearea remove<br />
<br />
{{Note|1=When creating or removing the <tt>secure area</tt>, all configuration and data files being stored on the Flasher, are lost.<br />
Please make sure that they are not needed anymore, before adding / removing the security area.}}<br />
<br />
==== Moving files to the secure area ====<br />
<br />
Before moving configuration + data to the <tt>secure area</tt>, proper functionality of the setup should be tested in stand-alone mode.<br />
Once the setup is working as expected, do the following, to move the configuration + data into the <tt>secure area</tt>:<br><br />
<br />
* Start Flasher in file access mode (For more info, please refer to: [[#file access mode | file access mode]])<br />
<br />
[[File:FilesBeforeSecure.png]]<br />
<br />
* Create a folder "<tt>_SECURE</tt>"<br />
* Move all files that shall be moved to the <tt>secure area</tt>, into this folder<br />
<br />
[[File:FilesAfterSecure.png]]<br />
<br />
* 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.<br />
* Now Flasher can be used in stand-alone mode, as normal, but the files cannot be read back by the user / operator.<br />
<br />
==== Considerations to be taken when using the secure area ====<br />
<br />
When using the <tt>secure area</tt>, some things need to be considered:<br><br />
<br />
* All features like multiple file support, patch file support etc. can also be used when operating from the <tt>secure area</tt>.<br />
* 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>.<br />
* 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>.<br />
* 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.<br />
<br />
==== Required Flasher hardware version ====<br />
<br />
Older Flasher models do not support authorized flashing. The Flashers with the following serial number ranges do not support authorized flashing:<br><br />
<br />
* 1621xxxxx (Flasher ARM V2)<br />
* 1630xxxxx (Flasher ARM V3)<br />
* 4210xxxxx (Flasher PPC V1)<br />
* 4110xxxxx (Flasher RX V1)<br />
<br />
All other models / hardware versions support authorized flashing.<br />
<br />
=== Target interfaces ===<br />
<br />
The table below shows the supported target interfaces of the different Flasher models.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! Supported interfaces<br />
|-<br />
| Flasher PRO || JTAG, SWD<br />
|-<br />
| Flasher Compact || JTAG, SWD<br />
|-<br />
| Flasher ARM || JTAG, SWD<br />
|-<br />
| Flasher RX || JTAG<br />
|-<br />
| Flasher PPC || JTAG<br />
|-<br />
|}<br />
<br />
For more information about the target interfaces itself, please refer to:<br><br />
<br />
* ''UM08001, chapter "Working with J-Link and J-Trace", section "JTAG interface"''<br />
* ''UM08001, chapter "Working with J-Link and J-Trace", section "SWD interface"''<br />
<br />
=== Supported architectures ===<br />
<br />
Flasher supports programming of the internal flash of a large number of different microcontrollers.<br />
The number of supported devices is steadily growing. You can always find the latest list of supported devices on our website:<br><br />
<br />
''http://www.segger.com/supported-devices.html''<br />
<br />
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.<br />
Also the existence of the device may have confidential status, so it might not be mentioned as being supported in public releases yet.<br />
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.<br />
<br />
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).<br />
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.<br />
<br />
If a device is not supported, you can always contact us. We will be happy to provide you with an offer.<br />
<br />
==== External flashes ====<br />
<br />
In general our Flashers support programming of external flashes listed below:<br>(Can differ between Flasher models and hardware versions)<br />
<br />
* parallel NOR flash<br />
* SPI / QSPI flash<br>(see: ''[[SPI_support_by_Flasher_models]]'')<br />
* NAND flash<br />
* I<sup>2</sup>C EEPROM/Flash<br />
* FRAM<br />
<br />
If the parallel NOR flash device which is used is not CFI-compliant you have to select the flash device in J-Flash explicitly,<br />
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''.<br />
<br />
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.<br />
The J-Flash software comes with sample projects for ''Open Flashloader''.<br />
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''<br />
{{Note|1=Complete Information about ''Open Flashloaders'' can be found in our Wiki:<br>''[[Open_Flashloader]]''}}<br />
<br />
==== Cores ====<br />
<br />
===== Flasher ARM =====<br />
<br />
Flasher ARM supports and has been tested with the following cores, but should work with any ARM7/9, Cortex-M0/M1/M3/M4 core.<br />
If you experience problems with a particular core, do not hesitate to contact Segger.<br><br />
<br />
* ARM7TDMI (Rev 1)<br />
* ARM7TDMI (Rev 3)<br />
* ARM7TDMI-S (Rev 4)<br />
* ARM920T<br />
* ARM922T<br />
* ARM926EJ-S<br />
* ARM946E-S<br />
* ARM966E-S<br />
* Cortex-M0<br />
* Cortex-M1<br />
* Cortex-M3<br />
* Cortex-M4<br />
<br />
===== Flasher RX =====<br />
<br />
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><br />
<br />
* RX610<br />
* RX621<br />
* RX62N<br />
* RX62T<br />
<br />
===== Flasher PPC =====<br />
<br />
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.<br />
<br />
* e200z0<br />
<br />
===== Flasher PRO/Compact/Portable PLUS =====<br />
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/''.<br />
<br />
=== Programming multiple targets in parallel ===<br />
<br />
To program multiple targets in parallel there are the following possibilities:<br />
* Using a Flasher gang, or<br />
* Using multiple Flashers, each connecting to one CPU.<br />
<br />
Devices for gang programming are:<br />
* Flasher Hub-12 in conjunction with up to 12 Flasher (Compact). Please refer to [[UM08043_Flasher_Hub-12|Flasher Hub-12 user manual (UM08043_Flasher_Hub-12)]].<br />
* Flasher ATE; suitable for programming up to 10 targets in parallel. Please refer to [https://www.segger.com/downloads/flasher/UM08035 Flasher ATE user manual (UM08035_FlasherATE.pdf)].<br />
When using multiple flashers, this can be done with the J-Flash production programming software.<br />
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''<br />
<br />
=== Logfiles and Quality Management ===<br />
<br />
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:<br />
<source lang="c"><br />
SN: 1 - Failed<br />
SN: 1 - Failed<br />
SN: 2 - O.K. (931 ms)<br />
SN: 3 - O.K. (931 ms)<br />
SN: 4 - O.K. (933 ms)<br />
SN: 5 - O.K. (932 ms)<br />
</source><br />
If applicable, the logfile contains more detailed error messages. For example:<br />
<source lang="c"><br />
ERROR: Programming failed @ address 0x00000000 (1)<br />
ERROR: Cannot connect to CPU. Target interface speed too high?<br />
</source><br />
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:<br />
<source lang="c"><br />
Verify error config word area @<br />
config word<br />
config word read back<br />
Verify error flash area @<br />
data from file<br />
data read back<br />
</source><br />
{{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.}}<br />
<br />
== TCP Services ==<br />
This chapter describes the integrated TCP services.<br />
<br />
=== FTP Server ===<br />
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><br />
[[File:FTPServer.png]]<br />
<br />
==== Access data ====<br />
Anonymous access to the FTP server is limited to read-only access to the file system.<br><br />
For write access, special login credentials have to be used:<br><br />
<tt>Login: admin</tt><br><br />
<tt>Password: 1234</tt><br><br />
<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.<br />
It is not meant as a security feature.}}<br />
<br />
=== Web server ===<br />
<br />
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.<br />
For the network, the IP address settings can be changed and a nick name can be assigned to the device.<br><br />
<br />
Additionally, the web interface provides information about the status of the integrated operating system, the IP stack and the target hardware.<br />
<br />
== Remote control ==<br />
This chapter describes how to control the Flasher in standalone mode.<br />
<br />
=== Overview ===<br />
There are 3 ways to control Flasher operation:<br><br />
{| class="seggertable"<br />
! Type of control !! Description<br />
|-<br />
| Button || Programming operation starts when pressing the PROG-button. The LEDs serve as visible indicators.<br />
|-<br />
| Handshake || 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.<br />
|-<br />
| Terminal || Terminal communication via TELNET, RS232 or VCOM with the [[#ASCII command interface]]<br />
|}<br />
<br />
<br />
{{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.}}<br />
<br />
=== Handshake control ===<br />
<br />
Some Flasher models are equipped with additional hardware control functions that are connected to the SUBD9 male connector, normally used as an RS232 interface to the PC.<br />
These Flasher models can therefore be controlled remotely by automated testers without the need for a connection to a PC.<br />
<br />
The handshake control is available for the following Flashers:<br />
* Flasher ARM<br />
* Flasher PRO<br />
* Flasher Compact (via Flasher Hub and Flasher Hub-12 only)<br />
<br />
The following diagrams show the internal remote control circuitry of Flasher:<br><br />
<br />
[[File:FlasherRemotecontrol.png]]<br />
{| class="seggertable"<br />
|-<br />
! Pin No. !! Function !! Description<br />
|-<br />
| 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.<br />
|-<br />
| 4 || BUSY || As soon as the "Auto" function is started, BUSY becomes active, which means that transistor is switched OFF.<br />
|-<br />
| 5 || GND || Common Signal ground.<br />
|-<br />
| 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.<br />
|-<br />
|}<br />
[[File:FlasherRemoteSignal.png]]<br />
<br />
=== ASCII command interface ===<br />
<br />
==== Introduction ====<br />
<br />
Once set up using J-Flash, the Flasher can be driven by any application or just a simple terminal using ASCII commands.<br><br />
<br />
Every known command is acknowledged by the Flasher and then executed. After command execution, Flasher sends an ASCII reply message.<br><br />
<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}}<br />
<br />
==== General command and reply message format ====<br />
<br />
* Any ASCII command has to start with the start delimiter ''#''.<br />
* Any ASCII command has to end with simple carriage return ('\r', ASCII code 13).<br />
* Commands can be sent upper or lower case<br />
<br />
==== General usage ====<br />
<br />
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.<br />
<br />
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).<br />
<br />
==== Settings for ASCII interface via RS232 ====<br />
<br />
Flasher is driven via a RS232 serial port with the following interface settings:<br><br />
<br />
* 9600 baud<br />
* 8 data bits<br />
* no parity<br />
* 1 stop bit<br />
<br />
The baud rate can be changed by using the <tt>#BAUDRATE</tt> command.<br />
<br />
==== Settings for ASCII interface via Telnet ====<br />
<br />
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><br />
<br />
[[File:telnet_connection.gif]]<br />
<br />
==== Settings for ASCII interface via VCOM ====<br />
<br />
The same settings can be used for VCOM as for [[#Settings for ASCII interface via RS232|RS232]].<br />
<br />
{{Note|The performance also depends on the terminal application used on the PC.}}<br />
<br />
==== Commands and replies ====<br />
<br />
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><br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| Commands to the Flasher<br />
|-<br />
| <tt>#BAUDRATE <Baudrate></tt><br />
|-<br />
| <tt>#AUTO</tt><br />
|-<br />
| <tt>#AUTO PATCH</tt><br />
|-<br />
| <tt>#AUTO NOINFO</tt><br />
|-<br />
| <tt>#CANCEL</tt><br />
|-<br />
| <tt>#ERASE</tt><br />
|-<br />
| <tt>#PROGRAM</tt><br />
|-<br />
| <tt>#RESULT</tt><br />
|-<br />
| <tt>#SELECT <Filename></tt><br />
|-<br />
| <tt>#START</tt><br />
|-<br />
| <tt>#STATUS</tt><br />
|-<br />
| <tt>#VERIFY</tt><br />
|-<br />
| <tt>#READ</tt><br />
|-<br />
| <tt>#QUIT</tt><br />
|-<br />
| <tt>#VERBOSE <Level></tt><br />
|-<br />
!colspan="100%"| File I/O commands<br />
|-<br />
| <tt>#FCLOSE</tt><br />
|-<br />
| <tt>#FCRC</tt><br />
|-<br />
| <tt>#FDELETE <Filename></tt><br />
|-<br />
| <tt>#FOPEN <Filename></tt><br />
|-<br />
| <tt>#FREAD <Offset>,<NumBytes></tt><br />
|-<br />
| <tt>#FSIZE</tt><br />
|-<br />
| <tt>#FWRITE <Offset>,<NumBytes>:<nowiki><Data></nowiki></tt><br />
|-<br />
| <tt>#FLIST</tt><br />
|-<br />
| <tt>#MKDIR <Dirname></tt><br />
|-<br />
!colspan="100%"| SecureArea commands<br />
|-<br />
| <tt>#HASSECUREAREA</tt><br />
|-<br />
| <tt>#SECUREAREA <action></tt><br />
|-<br />
!colspan="100%"| Replies from the Flasher<br />
|-<br />
| <tt>#ACK</tt><br />
|-<br />
| <tt>#NACK</tt><br />
|-<br />
| <tt>#OK</tt><br />
|-<br />
| <tt>#OK:<NumBytes>:<nowiki><Data></nowiki></tt><br />
|-<br />
| <tt>#OK:<Size></tt><br />
|-<br />
| <tt>#STATUS:</tt><br />
|-<br />
| <tt>#DONE</tt><br />
|-<br />
| <tt>#ERRxxx</tt><br />
|-<br />
|}<br />
<br />
===== Commands to the Flasher =====<br />
<br />
'''#AUTO'''<br><br />
The <tt>#AUTO</tt> command behaves exactly as the start button or external remote control input.<br><br />
<br />
Usually, the following command sequence will be performed when receiving the <tt>#AUTO</tt> command:<br><br />
<br />
* The Flasher erases the target CPU (if not blank)<br />
* The Flasher programs the target CPU<br />
* The Flasher verifies the target CPU<br />
<br />
Depending on the settings chosen in the '''Production''' tab in J-Flash, this sequence can differ from the one shown above.<br><br />
<br />
Finally, Flasher responds with<br><br />
<br />
* <tt>#OK</tt> if no error occurred<br />
* <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.<br />
<br />
During execution of the <tt>#AUTO</tt> command, Flasher automatically sends "status" messages via RS232 to reflect the state of execution.<br />
Typically during execution of <tt>#AUTO</tt> command, Flasher will reply the following sequence of messages:<br><br />
<br />
<tt>#ACK</tt><br><br />
<tt>#STATUS:INITIALIZING</tt><br><br />
<tt>#STATUS:CONNECTING</tt><br><br />
<tt>#STATUS:UNLOCKING</tt><br><br />
<tt>#STATUS:ERASING</tt><br><br />
<tt>#STATUS:PROGRAMMING</tt><br><br />
<tt>#STATUS:VERIFYING</tt><br><br />
<tt>#OK (Total 13.993s, Erase 0.483s, Prog 9.183s, Verify 2.514s)</tt><br><br />
<br />
'''#AUTO PATCH'''<br><br />
The <tt>#AUTO</tt> PATCH command allows patching of the content of the data to be programmed.<br><br />
<br />
Flasher responds with<br><br />
<br />
* <tt>#OK</tt> if no error occurred<br />
* <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.<br />
<br />
For further information about the usage of the <tt>#AUTO PATCH</tt> command please refer to [[#Patch file support | Patch file support]].<br />
<br />
'''#AUTO NOINFO'''<br><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><br />
<br />
The command ends with <tt>#OK</tt> or <tt>#ERRxxx</tt><br />
<br />
'''#BAUDRATE <Baudrate>'''<br><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><br />
<br />
If this command succeeds, Flasher responds with:<br><br />
<br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<br />
Otherwise it will respond with one of the following error messages:<br><br />
<br />
<tt>#ERR255: Invalid parameters</tt><br><br />
<tt>or</tt><br><br />
<tt>#ERR255: Baudrate is not supported</tt><br><br />
<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.<br />
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.}}<br />
<br />
'''#CANCEL'''<br><br />
This command can be sent to abort a running program. It may take a while until the current program is actually canceled.<br><br />
<br />
Flasher will respond with:<br><br />
<br />
<tt>#ERR007:CANCELED.</tt><br><br />
<br />
'''#ERASE'''<br><br />
This command can be sent to erase all selected target flash sectors.<br><br />
<br />
Flasher will reply the following sequence of messages:<br><br />
<br />
<tt>#ACK</tt><br><br />
<tt>#STATUS:INITIALIZING</tt><br><br />
<tt>#STATUS:CONNECTING</tt><br><br />
<tt>#STATUS:UNLOCKING</tt><br><br />
<tt>#STATUS:ERASING</tt><br><br />
<tt>#OK (Total 0.893s, Erase 0.483s)</tt><br><br />
<br />
'''#PROGRAM'''<br><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.<br />
<br />
'''#RESULT'''<br><br />
This command can be sent any time, even during other command execution. Flasher responds with the last result of the previously executed command.<br />
<br />
'''#SELECT <Filename>'''<br><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.<br />
<tt><Filename></tt> specifies the name of file pair without extensions (.CFG and .DAT) on the Flasher which should be selected. If you are<br />
using the universal flash programming mode, <tt><Filename></tt> specifies the full name of the .UNI file '''including''' the extension.<br />
Flasher saves the selected config and data file in the FLASHER.INI file. So this selection is remembered even between power-cycling Flasher.<br><br />
<br />
This may be verfy helpful in cases where several config and data files are stored on Flasher.<br />
The user can easily switch between these config and data files without connecting Flasher to a host.<br><br />
<br />
If this command succeeds, Flasher responds with:<br><br />
<br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<br />
Find below a sample sequence which shows how to use the <tt>#SELECT</tt> command:<br><br />
<br />
<tt>#SELECT ATSAM7_1 // ATSAM7_1.CFG and ATSAM7_1.DAT is selected</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<tt>#AUTO // Start auto programming</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#STATUS:INITIALIZING</tt><br><br />
<tt>#STATUS:CONNECTING</tt><br><br />
<tt>#STATUS:UNLOCKING</tt><br><br />
<tt>#STATUS:ERASING</tt><br><br />
<tt>#STATUS:PROGRAMMING</tt><br><br />
<tt>#STATUS:VERIFYING</tt><br><br />
<tt>#OK (Total 8.416s, Erase 0.005s, Prog 6.845s, Verify 0.959s)</tt><br><br />
<tt>#SELECT ATSAM7_2 // ATSAM7_2.CFG and ATSAM7_2.DAT is selected</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<tt>#AUTO // Start auto programming</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#STATUS:INITIALIZING</tt><br><br />
<tt>#STATUS:CONNECTING</tt><br><br />
<tt>#STATUS:UNLOCKING</tt><br><br />
<tt>#STATUS:ERASING</tt><br><br />
<tt>#STATUS:PROGRAMMING</tt><br><br />
<tt>#STATUS:VERIFYING</tt><br><br />
<tt>#OK (Total 8.632s, Erase 0.005s, Prog 7.051s, Verify 0.969s)</tt><br><br />
<br />
'''#START'''<br><br />
This command can be sent to start the application using the method configured in the J-Flash project.<br><br />
For U-Flash projects, however, the target application is not necessarily started. <br><br />
There is often a "start application" checkbox in the U-Flash settings which have to be set for this.<br />
<br />
Flasher will reply with the following sequence of messages:<br><br />
<br />
<tt>#ACK</tt><br><br />
<tt>#STATUS:INITIALIZING</tt><br><br />
<tt>#STATUS:CONNECTING</tt><br><br />
<tt>#OK (Total 1.148s)</tt><br><br />
<br />
'''#STATUS'''<br><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]].<br />
<br />
'''#VERIFY'''<br><br />
This command can used to verify the target flash content against the data stored in Flasher.<br />
<br />
'''#READ'''<br><br />
Only available for devices supported by U-Flash.<br><br />
This command can used to read out flash data.<br><br />
More information: [https://wiki.segger.com/Flasher/How_to_read_data_from_a_device_using_U-Flash How to read data using U-Flash]<br />
<br />
'''#QUIT'''<br><br />
This command can be used to terminate the active telnet connection from the server side (Flasher).<br />
The command provides an easy way to terminate the session from an automated script.<br />
It is not necessary to parse stdout and switch to local command mode to disconnect.<br />
Not implemented in the Flasher ATE or Flasher Hub.<br />
<br />
'''#VERBOSE <Level>'''<br><br />
This command can be used to change the verbosity level. <br><br />
* Verbosity level 0: Default. <br><br />
* Verbosity level 1: Provides some additional messages during the programming process.<br />
<br />
===== File I/O commands =====<br />
<br />
The ASCII interface of the Flasher also supports file I/O operations.<br />
<br />
The following file I/O commands are supported:<br><br />
<br />
'''#FCLOSE'''<br><br />
The <tt>#FCLOSE</tt> command closes the file on Flasher which was opened via <tt>#FOPEN</tt>.<br />
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><br />
<br />
A typical sequence when using the <tt>#FCLOSE</tt> command does look like as follows:<br><br />
<br />
<tt>#FCLOSE</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<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><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:No file opened</tt><br />
}}<br />
<br />
'''#FCRC'''<br><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>.<br />
The CRC will be also reported by J-Flash when downloading or saving files via J-Flash.<br><br />
<br />
A typical sequence when using the <tt>#FCRC</tt> command does look like as follows:<br><br />
<br />
<tt>#FCRC flasher.dat</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK:0x75BC855A</tt><br><br />
<br />
'''#FDELETE <Filename>'''<br><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><br />
<br />
A typical sequence when using the <tt>#FDELETE</tt> command does look like as follows:<br><br />
<br />
<tt>#FDELETE flasher.dat</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<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><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:Failed to delete file</tt><br />
}}<br />
<br />
'''#FOPEN <Filename>'''<br><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.<br />
If <tt><Filename></tt> can not be found on Flasher a new one will be created.<br><br />
<br />
A typical sequence using the <tt>#FOPEN</tt> command does look like as follows:<br><br />
<br />
<tt>#FOPEN flasher.dat</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<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><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:A file has already been opened</tt><br />
}}<br />
<br />
'''#FREAD <Offset>,<NumBytes>'''<br><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.<br />
<tt><NumBytes></tt> specifies the number of bytes which should be read.<br><br />
<br />
A typical sequence when using the <tt>#FREAD</tt> command does look like as follows:<br><br />
<br />
<tt>#FREAD 0,4</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK:04:466c6173</tt><br><br />
<br />
If the <tt>#FREAD</tt> command succeeds, Flasher will finally respond with a <tt>#OK:<NumBytes>:<nowiki><Data></nowiki></tt> reply message.<br />
For more information about the Flasher reply messages, please refer to [[#Replies from Flasher | Replies from Flasher]].<br><br />
<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><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:No file opened</tt>}}<br />
<br />
'''#FSIZE'''<br><br />
The <tt>#FSIZE</tt> command is used to get the size of the currently opened file on Flasher.<br><br />
<br />
A typical sequence when using the <tt>#FSIZE</tt> command does look like as follows:<br><br />
<br />
<tt>#FSIZE</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK:10 // file on flasher which is currently open, has a size of 16 bytes</tt><br><br />
<br />
If the <tt>#FSIZE</tt> command succeeds, Flasher will respond with a <tt>#OK:<Size></tt> reply message.<br />
For more information about the Flasher reply messages, please refer to [[#Replies from Flasher | Replies from Flasher]].<br><br />
<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><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:No file opened</tt>}}<br />
<br />
'''#FWRITE <Offset>,<NumBytes>:<nowiki><Data></nowiki>'''<br><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.<br />
<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.<br />
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><br />
<br />
<tt><Offset></tt> and <tt><NumBytes></tt> are expected in hexadecimal format.<br><br />
<br />
<tt>#FWRITE 0,200:<nowiki><Data></nowiki></tt><br><br />
<tt>#FWRITE 200,200:<nowiki><Data></nowiki></tt><br><br />
<br />
The data is expected in hexadecimal format (two hexadecimal characters per byte). The following example illustrates the use of <tt>#FWRITE</tt>:<br />
<br />
<tt>Data to be send: Hello !</tt><br><br />
<tt>ASCII values: 0x48, 0x65, 0x6C, 0x6C, 0x6F, 0x20, 0x21</tt><br><br />
<br />
<tt>#FWRITE 0,7:48656C6C6F2021</tt><br><br />
<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><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:No file opened</tt><br>}}<br />
<br />
'''#FLIST'''<br><br />
The <tt>#LIST</tt> command is used to list all files stored on the Flasher.<br><br />
<br />
A typical sequence using the <tt>#FLIST</tt> command does look like as follows:<br><br />
<br />
<tt>#FLIST</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>FLASHER.INI Size: 60</tt><br><br />
<tt>SERIAL.TXT Size: 3</tt><br><br />
<tt>FLASHER.LOG Size: 207</tt><br><br />
<tt>FOLDER (DIR)</tt><br><br />
<tt>FOLDER\\TEST1.CFG Size: 2048</tt><br><br />
<tt>FOLDER\\TEST1.DAT Size: 12288</tt><br><br />
<tt>#OK</tt><br><br />
<br />
'''#MKDIR <Dirname>'''<br><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><br />
<br />
A typical sequence using the <tt>#MKDIR</tt> command does look like as follows:<br><br />
<br />
<tt>#MKDIR folder</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<br />
{{Note|1=If the directory can not be created because of a bad <tt><Dirname></tt> argument, Flasher will respond with:<br><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:Failed to create directory</tt><br>}}<br />
<br />
===== Secure Area Commands =====<br />
<br />
'''#HASSECUREAREA'''<br><br />
The <tt>#HASSECUREAREA</tt> command checks if the Flasher is configured with a secure area.<br />
<br />
<tt>#RESULT:YES</tt> indicates the secure area is present, <tt>#RESULT:NO</tt> indicates no secure area is present.<br />
<br />
'''#SECUREAREA'''<br><br />
The <tt>#SECUREAREA <action></tt> command allows to create or remove the secure area on the Flasher.<br />
<br />
* the action <tt>CREATE</tt> creates the secure area.<br />
* the action <tt>REMOVE</tt> will remove the secure area.<br />
<br />
A typical sequence using the <tt>#SECUREAREA</tt> command does look like as follows:<br><br />
<br />
<tt>#SECUREAREA CREATE</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#DONE</tt><br><br />
<br />
{{Note|1=When creating or removing the <tt>secure area</tt>, all configuration and data files being stored on the Flasher, are lost.<br />
Please make sure that they are not needed anymore, before adding / removing the security area.}}<br />
<br />
<br />
<br />
===== Replies from Flasher =====<br />
<br />
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.<br />
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.<br />
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><br />
<br />
<tt>#OK (Total 13.993s, Erase 0.483s, Prog 9.183s, Verify 2.514s)</tt><br><br />
<br />
The following reply messages from Flasher are defined:<br><br />
<br />
'''#ACK'''<br><br />
Flasher replies with <tt>#ACK</tt> message on reception of any defined command before the command itself is executed.<br />
<br />
'''#NACK'''<br><br />
Flasher replies with <tt>#NACK</tt>, if an undefined command was received.<br />
<br />
'''#OK'''<br><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.<br />
<br />
'''#OK:<NumBytes>:<nowiki><Data></nowiki>'''<br><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.<br />
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).<br />
<br />
'''#OK:<Size>'''<br><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.<br />
<br />
'''#STATUS:'''<br><br />
The Flasher replies with its current state.<br><br />
<br />
The following status messages are currently defined:<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Message !! Description<br />
|-<br />
| <tt>#STATUS:READY</tt> || Flasher is ready to receive a new command.<br />
|-<br />
| <tt>#STATUS:CONNECTING</tt> || Flasher initializes connection to target CPU.<br />
|-<br />
| <tt>#STATUS:INITIALIZING</tt> || Flasher performs self check and internal init.<br />
|-<br />
| <tt>#STATUS:UNLOCKING</tt> || Unlocking flash sectors.<br />
|-<br />
| <tt>#STATUS:ERASING</tt> || Flasher is erasing the flash of the target device.<br />
|-<br />
| <tt>#STATUS:PROGRAMMING</tt> || Flasher is programming the flash of the target device.<br />
|-<br />
| <tt>#STATUS:VERIFYING</tt> || Flasher verifies the programmed flash contents.<br />
|-<br />
|}<br />
<br />
'''#ERRxxx'''<br><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><br />
<br />
Some error codes may be followed by colon and an additional error text.<br><br />
<br />
For example:<br><br />
<br />
<tt>#ERR007:CANCELED.</tt><br><br />
<br />
The error code numbers are described in the following table:<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Message !! Description<br />
|-<br />
| <tt>#ERR007</tt> || Flasher received <tt>#CANCEL</tt> command and has canceled the current operation.<br />
|-<br />
| <tt>#ERR008</tt> || Flasher is already busy with execution of previous command.<br />
|-<br />
| <tt>#ERR009</tt> || Failed to allocate memory.<br />
|-<br />
| <tt>#ERR010</tt> || Failed to open file.<br />
|-<br />
| <tt>#ERR011</tt> || Failed to read file.<br />
|-<br />
| <tt>#ERR012</tt> || Failed to write file.<br />
|-<br />
| <tt>#ERR013</tt> || Failed to delete file.<br />
|-<br />
| <tt>#ERR255</tt> || Undefined error occurred. This reply is followed by an error string.<br />
|-<br />
|}<br />
<br />
== Performance ==<br />
<br />
The following chapter lists programming performance of common flash devices andmicrocontrollers.<br />
<br />
=== Performance of MCUs with internal flash memory ===<br />
<br />
==== Flasher ARM ====<br />
<br />
The following table lists program and erase performance values of Flasher ARM for different controllers.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Microcontroller !! Size [kByte] !! Erase time [sec] !! Program time [sec] !! Verify time [sec] !! Total time [sec]<br />
|-<br />
| Analog Devices || 62 || 2.943 || 2.286 || 0.563 || 5.792<br />
|-<br />
| Atmel AT91SAM7S64 || 64 || --- || 3.488 || 0.438 || 3.926<br />
|-<br />
| Atmel AT91SAM7S256 || 256 || --- || 7.709 || 1.053 || 8.762<br />
|-<br />
| NXP LPC1768 || 512 || 3.740 || 8.559 || 5.092 || 17.391<br />
|-<br />
| NXP LPC2106 || 120 || 0.448 || 1.204 || 0.634 || 2.286<br />
|-<br />
| NXP LPC2129 || 248 || 0.449 || 2.916 || 1.347 || 4.712<br />
|-<br />
| NXP LPC2138 || 500 || 0.448 || 5.488 || 2.649 || 8.585<br />
|-<br />
| NXP LPC2148 || 500 || 0.448 || 5.632 || 2.721 || 8.801<br />
|-<br />
| NXP LPC2294 || 2048 || 0.808 || 15.976 || 9.669 || 26.453<br />
|-<br />
| NXP LPC2478 || 504 || 0.448 || 5.419 || 2.559 || 8.426<br />
|-<br />
| ST STM32F103ZE || 512 || 0.028 || 18.763 || 3.939 || 22.730<br />
|-<br />
| ST STR711 || 272 || 0.429 || 5.476 || 4.742 || 10.647<br />
|-<br />
| ST STR912 || 544 || 1.167 || 12.907 || 5.236 || 19.310<br />
|-<br />
| TI TMS470R1B1M || 1024 || 2.289 || 8.147 || 5.362 || 15.798<br />
|-<br />
|}<br />
<br />
==== Flasher PRO ====<br />
See Flasher ARM.<br />
<br />
==== Flasher Compact ====<br />
See Flasher ARM.<br />
<br />
==== Flasher RX ====<br />
<br />
The following table lists program and erase performance values of Flasher RX.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Microcontroller !! Size [kByte] !! Erase time [sec] !! Program time [sec] !! Verify time [sec] !! Total time [sec]<br />
|-<br />
| R5F56108 || 2.048 || 9.523 || 11.915 || 3.890 || 25.585<br />
|-<br />
|}<br />
<br />
==== Flasher PPC ====<br />
<br />
The following table lists program and erase performance values of Flasher PPC.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Microcontroller !! Size [kByte] !! Erase time [sec] !! Program time [sec] !! Verify time [sec] !! Total time [sec]<br />
|-<br />
| ST SPC560B50 || 576 || 4.747 || 4.159 || 1.929 || 10.917<br />
|-<br />
|}<br />
<br />
== Hardware ==<br />
<br />
This chapter gives an overview about Flasher specific hardware details,<br />
such as the pinouts and available adapters.<br />
<br />
=== Flasher ARM 20-pin JTAG/SWD Connector ===<br />
<br />
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.<br />
<br />
==== Pinout JTAG ====<br />
<br />
[[File:jtag_port_20pin.jpg]] <!-- LG xxxxxx image has been cropped to fit page --><br />
<br />
The following table lists the Flasher JTAG pinout.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! PIN !! SIGNAL !! TYPE !! Description<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 13 || TDO || Input || JTAG data output from target CPU. Typically connected to TDO of target CPU.<br />
|-<br />
| 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".<br />
|-<br />
| 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.<br />
|-<br />
| 19 || 5V-Target supply || Output || This pin is used to supply power to some eval boards. Typically left open on target hardware.<br />
|-<br />
|}<br />
<br />
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.<br />
<br />
==== Pinout SWD ====<br />
<br />
The 20-pin connector of Flasher is also compatible to ARM's Serial Wire Debug (SWD) interface.<br><br />
<br />
[[File:SWD_Port.jpg]] <!-- LG xxxxxx image has been cropped to fit page --><br />
<br />
The following table lists the J-Link / J-Trace SWD pinout.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! PIN !! SIGNAL !! TYPE !! Description<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 7 || SWDIO || I/O || Single bi-directional data pin.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 13 || SWO || Output || Serial Wire Output trace port. (Optional, not required for SWD communication.)<br />
|-<br />
| 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".<br />
|-<br />
| 17 || Not used || NC || This pin is not connected in J-Link.<br />
|-<br />
| 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.<br />
|-<br />
|}<br />
<br />
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.<br />
<br />
==== Target power supply ====<br />
<br />
Pin 19 of the connector can be used to supply power to the target hardware. Supply voltage is 5V, max. current is 400mA.<br />
The output current is monitored and protected against overload and short-circuit.<br><br />
<br />
Power can be controlled via the J-Link commander. The following commands are available to control power:<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Command !! Explanation<br />
|-<br />
| <tt>power on</tt> || Switch target power on<br />
|-<br />
| <tt>power off</tt> || Switch target power off<br />
|-<br />
| <tt>power on perm</tt> || Set target power supply default to "on"<br />
|-<br />
| <tt>power off perm</tt> || Set target power supply default to "off"<br />
|-<br />
|}<br />
<br />
=== Flasher RX 14-pin connector ===<br />
<br />
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.<br />
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.<br />
<br />
[[File:jtag_port_14pin.wmf]]<br />
<br />
The following table lists the Flasher RX 14-pin JTAG pinout.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Pin !! Signal !! Type !! Description<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 5 || TDO || Input || JTAG data output from target CPU. Typically connected to TDO on target CPU.<br />
|-<br />
| 6 || --- || NC || This pin is not connected to Flasher RX.<br />
|-<br />
| 7 || --- || NC || This pin is not connected to Flasher RX.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 10 || --- || NC || This pin is not connected to Flasher RX.<br />
|-<br />
| 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.<br />
|-<br />
| 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".<br />
|-<br />
|}<br />
<br />
* All pins marked NC are not connected to Flasher RX. Any signal can be applied here; Flasher RX will simply ignore such a signal.<br />
* Pins 2, 12, 14 are GND pins connected to GND in Flasher RX. They should also be connected to GND in the target system.<br />
<br />
==== Target power supply ====<br />
<br />
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.<br />
Power can be controlled via the J-Link commander. The following commands are available to control power:<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Command !! Explanation<br />
|-<br />
| <tt>power on</tt> || Switch target power on<br />
|-<br />
| <tt>power off</tt> || Switch target power off<br />
|-<br />
| <tt>power on perm</tt> || Set target power supply default to "on"<br />
|-<br />
| <tt>power off perm</tt> || Set target power supply default to "off"<br />
|-<br />
|}<br />
<br />
=== Flasher PPC 14-pin connector ===<br />
<br />
Flasher PPC itself has a 20-pin JTAG connector mounted but comes with a 14-pin adapter for PowerPC devices.<br><br />
<br />
[[File:JTAG_PPC_14pin_adapter.wmf]]<br />
<br />
The following table lists the Flasher PPC 14-pin JTAG pinout.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Pin !! Signal !! Type !! Description<br />
|-<br />
| 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.<br />
|-<br />
| 3 || TDO || Input || JTAG data output from target CPU. Typically connected to TDO on target CPU.<br />
|-<br />
| 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.<br />
|-<br />
| 7 || --- || NC || This pin is not connected to Flasher PPC.<br />
|-<br />
| 8 || --- || NC || This pin is not connected to Flasher PPC.<br />
|-<br />
| 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".<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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).<br />
|-<br />
|}<br />
<br />
* All pins marked NC are not connected to Flasher PPC. Any signal can be applied here; Flasher PPC will simply ignore such a signal.<br />
* 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.<br />
<br />
=== Target board design ===<br />
<br />
We strongly advise following the recommendations given by the chip manufacturer. These recommendations are normally in line with the recommendations.<br />
Please refer to the the appropriate tables depending on the core:<br><br />
<br />
* [[#Pinout JTAG | Pinout JTAG]]<br />
* [[#Pinout SWD | Pinout SWD]]<br />
* [[#Flasher RX 14-pin connector | Flasher RX 14-pin connector]]<br />
* [[#Flasher PPC 14-pin connector | Flasher PPC 14-pin connector]]<br />
<br />
In case of doubt you should follow the recommendations given by the semiconductor manufacturer.<br />
<br />
==== Pull-up/pull-down resistors ====<br />
<br />
Unless otherwise specified by developer's manual, pull-ups/pull-downs are recommended to be between 2.2 kOhms and 47 kOhms.<br />
<br />
==== RESET, nTRST ====<br />
<br />
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><br />
<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.<br />
(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.<br />
<br />
=== Adapters ===<br />
<br />
==== JTAG Isolator ====<br />
<br />
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.<br />
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><br />
<br />
[[File:JTAG_Isolator_Port.wmf]]<br />
<br />
===== Pinout =====<br />
<br />
The following table shows the target-side pinout of the J-Link JTAG Isolator.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Pin !! Signal !! Type !! Description<br />
|-<br />
| 1 || VCC || Output || The target side of the isolator draws power over this pin.<br />
|-<br />
| 2 || VCC || Output || The target side of the isolator draws power over this pin.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 13 || TDO || Input || JTAG data output from target CPU. Typically connected to TDO of target CPU.<br />
|-<br />
| 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".<br />
|-<br />
| 17 || N/C || N/C || This pin is not connected on the target side of the isolator.<br />
|-<br />
| 19 || N/C || N/C || This pin is not connected on the target side of the isolator.<br />
|-<br />
|}<br />
<br />
Pins 4, 6, 8, 10, 12, 14, 16, 18, 20 are connected to GND.<br />
<br />
===== Safety =====<br />
This isolator provides '''basic isolation''' only. '''Do not use with hazardous voltages without further protection measures to avoid risk of electrical shock and fire.'''<br />
<br />
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.<br />
<br />
==== J-Link Needle Adapter ====<br />
<br />
To connect to the J-Link OB via programming interface the ''J-Link Needle Adapter'' is recommended.<br><br />
<br />
[[File:J-Link_Needle_Adapter_500x.jpg]]<br />
<br />
Why to choose the J-Link Needle Adapter:<br><br />
<ol><br />
<li>No additional connector required on your PCB</li><br />
<li>Very small footprint</li><br />
<li>High reliability spring pins for secure connections</li><br />
<li>Designed with 3 locating pins, so the adapter can not be connected the wrong way</li><br />
<li>No external power supply required! The J-Link Needle Adapter comes with the option to power the target hardware via J-Link.</li><br />
</ol><br />
These features make the J-Link Needle Adapter the perfect solution for production purposes.<br><br />
<br />
The pinout of the J-Link Needle Adapter is based on the pinout of the needle adapter by Tag-Connect.<br />
Please note, that both pinouts are not identical since the J-Link Needle Adapter comes with a 5V-supply pin.<br><br />
<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><br />
<br />
Moreover, the two "legs" on each side of the connector guarantee a stable and secure contact between pins and the PCB.<br><br />
<br />
[[File:J-Link_Needle_Adapter_Connector_pins_360x.jpg]]<br />
[[File:J-Link_Needle_Adapter_Pinout.jpg]]<br />
<br />
The J-Link Needle Adapter can be connected to J-Link via the ''20-pin 0.1'' JTAG to a 10-pin needle connector''.<br />
<br />
=== How to determine the hardware version ===<br />
<br />
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.<br />
Flasher has the hardware version printed on the back label.<br><br />
<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).<br />
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><br />
<br />
[[File:FlasherARM_version.gif]]<br />
== Support and FAQs ==<br />
<br />
This chapter contains troubleshooting tips together with solutions for common problems which might occur when using Flasher.<br />
There are several steps you can take before contacting support.<br />
Performing these steps can solve many problems and often eliminates the need for assistance.<br />
This chapter also contains a collection of frequently asked questions (FAQs) with answers.<br />
<br />
=== Contacting support ===<br />
<br />
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.<br />
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><br />
<br />
If you need to contact support, send the following information to<br><br />
''support@segger.com''<br><br />
<br />
* A detailed description of the problem<br />
* Flasher serial number<br />
* Information about your target hardware (processor, board, etc.).<br />
* <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]].<br />
<br />
Flasher is sold directly by SEGGER.<br />
<br />
=== Frequently Asked Questions ===<br />
<br />
'''Maximum JTAG speed'''<br />
{|<br />
|-<br />
| '''Q:''' || What is the maximum JTAG speed supported by Flasher?<br />
|-<br />
| '''A:''' || Flasher's maximum supported JTAG speed is 12MHz.<br />
|}<br />
<br />
'''Maximum download speed'''<br />
{|<br />
|-<br />
| '''Q:''' || What is the maximum download speed?<br><br />
|-<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.<br />
|}<br />
== Background information ==<br />
<br />
This chapter provides background information about flash programming in general. It<br />
also provides information about how to replace the firmware of Flasher manually.<br />
<br />
=== Flash programming ===<br />
<br />
Flasher comes with a DLL, which allows - amongst other functionalities - reading and writing RAM, CPU registers, starting and stopping the CPU, and setting breakpoints.<br />
<br />
==== How does flash programming via Flasher work? ====<br />
<br />
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.<br />
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.<br />
Different flash chips have different programming algorithms;the programming algorithm also depends on other things,<br />
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).<br />
The RAM code requires data to be programmed into the flash memory. The data is supplied by downloading it to RAM.<br />
<br />
==== Data download to RAM ====<br />
<br />
The data (or part of it) is downloaded to another part of the RAM of the target system.<br />
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.<br />
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.<br />
This process may have to be repeated until the entire data is programmed into the flash.<br />
<br />
==== Available options for flash programming ====<br />
<br />
In general, there are two possibilities in order to use Flasher for flash programming:<br><br />
<br />
* Using Flasher stand-alone to program the target flash memory (stand-alone mode)<br />
* Using Flasher in combination with J-Flash to program the target flash memory (Flasher in "PC-based mode")<br />
<br />
===== Using Flasher in stand-alone mode =====<br />
<br />
In order to use the Flasher in stand-alone mode, it has to be configured first.<br />
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]].<br />
<br />
===== J-Flash - Complete flash programming solution =====<br />
<br />
J-Flash is a stand-alone Windows application, which can read / write data files and program the flash in almost any ARM system.<br />
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''.<br />
<br />
==== How does the universal flash programming work? ====<br />
<br />
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><br />
<br />
Universal flash programming is available only for stand-alone mode.<br />
== Glossary ==<br />
<br />
This chapter describes important terms used throughout this manual.<br />
<br />
'''Big-endian'''<br><br />
Memory organization where the least significant byte of a word is at a higher address than the most significant byte. See Little-endian.<br />
<br />
'''Cache cleaning'''<br><br />
The process of writing dirty data in a cache to main memory.<br />
<br />
'''Coprocessor'''<br><br />
An additional processor that is used for certain operations, for example, for floating-point math calculations, signal processing, or memory management.<br />
<br />
'''Dirty data'''<br><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.<br />
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.<br />
<br />
'''Halfword'''<br><br />
A 16-bit unit of information.<br />
<br />
'''Host'''<br><br />
A computer which provides data and other services to another computer. Especially, a computer providing debugging services to a target being debugged.<br />
<br />
'''ICache'''<br><br />
Instruction cache.<br />
<br />
'''ID'''<br><br />
Identifier.<br />
<br />
'''IEEE 1149.1'''<br><br />
The IEEE Standard which defines TAP. Commonly (but incorrectly) referred to as JTAG.<br />
<br />
'''Image'''<br><br />
An executable file that has been loaded onto a processor for execution.<br />
<br />
'''Instruction Register'''<br><br />
When referring to a TAP controller, a register that controls the operation of the TAP.<br />
<br />
'''IR'''<br><br />
See Instruction Register.<br />
<br />
'''Joint Test Action Group (JTAG)'''<br><br />
The name of the standards group which created the IEEE 1149.1 specification.<br />
<br />
'''Little-endian'''<br><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.<br />
<br />
'''Memory coherency'''<br><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.<br />
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.<br />
<br />
'''Memory management unit (MMU)'''<br><br />
Hardware that controls caches and access permissions to blocks of memory, and translates virtual to physical addresses.<br />
<br />
'''Memory Protection Unit (MPU)'''<br><br />
Hardware that controls access permissions to blocks of memory. Unlike an MMU, a MPU does not translate virtual addresses to physical addresses.<br />
<br />
'''RESET'''<br><br />
Abbreviation of System Reset. The electronic signal which causes the target system other than the TAP controller to be reset.<br />
This signal is also known as "nSRST" "nSYSRST", "nRST", or "nRESET" in some other manuals. See also nTRST.<br />
<br />
'''nTRST'''<br><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.<br />
<br />
'''Open collector'''<br><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.<br />
<br />
'''Processor Core'''<br><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.<br />
It excludes optional coprocessors, caches, and the memory management unit.<br />
<br />
'''Remapping'''<br><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.<br />
<br />
'''RTOS'''<br><br />
Real Time Operating System.<br />
<br />
'''TAP Controller'''<br><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.<br />
<br />
'''Target'''<br><br />
The actual processor (real silicon or simulated) on which the application program is running.<br />
<br />
'''TCK'''<br><br />
The electronic clock signal which times data on the TAP data lines TMS, TDI, and TDO.<br />
<br />
'''TDI'''<br><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.<br />
<br />
'''TDO'''<br><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.<br />
<br />
'''Test Access Port (TAP)'''<br><br />
The port used to access a device's TAP Controller. Comprises TCK, TMS, TDI, TDO, and nTRST (optional).<br />
<br />
'''Transistor-transistor logic (TTL)'''<br><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.<br />
<br />
'''Word'''<br><br />
A 32-bit unit of information. Contents are taken as being an unsigned integer unless otherwise stated.<br />
== Literature and references ==<br />
This chapter lists documents, which we think may be useful to gain a deeper understanding of technical details.</div>JanBhttps://wiki.segger.com/index.php?title=UM08003_JFlash&diff=17343UM08003 JFlash2023-12-21T10:28:31Z<p>JanB: /* Target menu elements */</p>
<hr />
<div><div class="toclimit-3"><br />
__TOC__<br />
</div><br />
<br />
= Introduction =<br />
The following chapter introduces J-Flash, highlights some of its features, and lists its requirements on host and target systems.<br />
[[File:JFlash_MainWindow.png|thumb|left|J-Flash main window]]<br />
<br clear=all><br />
<br />
== What is J-Flash? ==<br />
J-Flash is a stand-alone flash programming software for PCs running Windows, Linux or macOS. <br />
<br />
J-Flash has an intuitive user interface and makes programming flash devices convenient.<br />
J-Flash requires a J-Link / Flasher as an interface to the target hardware.<br />
It is able to program internal and external flash at very high speeds, upwards of 550KBytes/s depending on the chip.<br />
Another notable feature is smart read back, which only transfers non-blank portions of the flash, increasing the speed of read back greatly.<br />
These features along with its ability to work with any ARM7/ARM9/ARM11, Cortex-M0/M1/M3/M4/M7, Cortex-A5/A8/A9/R4/R5 and Renesas RX600 chip makes it a great solution for most projects.<br />
<br />
=== Supported Operating Systems ===<br />
The following operating systems are supported:<br />
* Microsoft Windows 2000<br />
* Microsoft Windows XP<br />
* Microsoft Windows XP x64<br />
* Microsoft Windows 2003<br />
* Microsoft Windows 2003 x64<br />
* Microsoft Windows Vista<br />
* Microsoft Windows Vista x64<br />
* Microsoft Windows 7<br />
* Microsoft Windows 7 x64<br />
* Microsoft Windows 8<br />
* Microsoft Windows 8 x64<br />
* Microsoft Windows 10<br />
* Microsoft Windows 10 x64<br />
* Linux ([[Linux_specifics#Requirements_for_GUI_applications |Requirements]])<br />
* macOS 10.5 and higher<br />
<br />
=== Features ===<br />
# Any ARM7/ARM9/ARM11, Cortex-M0/M1/M3/M4/M7, Cortex-A5/A8/A9/R4/R5 and Renesas RX600 core supported<br />
# Microcontroller (internal flash) support.<br />
# Support for most external flash chips (For more information please refer to [[#Target_systems | Target systems]]).<br />
# High speed programming: up to 550 KBytes/s<sup>*</sup>.<br />
# Smart read back: only non-blank portions of flash are transferred and saved.<br />
# Free evaluation licenses available.<br />
# Verbose logging of all communication.<br />
# .hex, .mot, .srec, .bin and .elf support.<br />
# Intuitive user interface.<br />
<nowiki>*</nowiki> Depending on flash device. Measured with J-Link V10<br />
<br />
== Assumptions ==<br />
This user manual assumes that you already possess working knowledge of the J-Link device.<br />
If you feel that your knowledge of J-Link is not sufficient, we recommend the [[UM08001 | J-Link Manual (UM08001)]], which describes the device and its use in detail.<br />
<br />
== Requirements ==<br />
* J-Link / Flasher<br />
* Supported operating system (see [[#Supported_Operating_Systems | Supported Operating Systems]])<br />
* Interface from Host to probe (USB, Ethernet, WiFi, …)<br />
* Supported device/core (see [[#Supported_microcontrollers | Supported microcontrollers]])<br />
<br />
= Licensing =<br />
J-Flash may be installed on as many host machines as you want. Without a license key<br />
J-Flash can still be used to open project files, read from connected devices, blank check<br />
target memory, verify data files and so on. However to actually program devices via J-Flash<br />
and J-Link, a valid license is required. For an overview which SEGGER products come with<br />
a built-in license for J-Flash, please refer to the [https://www.segger.com/products/debug-probes/j-link/models/model-overview/ J-Link Model overview]. All Flasher models<br />
come with a built-in license for J-Flash.<br />
<br />
= Getting Started =<br />
This chapter presents an introduction to J-Flash. It provides an overview of the included<br />
sample projects and describes J-Flash’s menu structure in detail.<br />
<br />
== Setup ==<br />
The J-Link setup procedure required in order to work with J-Flash is described in chapter 2<br />
of the [[UM08001 | J-Link / J-Trace User Guide (UM08001)]]. The [[UM08001 | J-Link / J-Trace User Guide (UM08001)]] is<br />
part of the J-Link Software and Documentation Pack which is available for download under<br />
[https://www.segger.com/jlink-software.html segger.com/jlink-software.html].<br />
<br />
=== What is included? ===<br />
The following table shows the contents of all sub directories of the J-Link Software and<br />
Documentation Pack with regard to J-Flash:<br />
<br />
{| class="wikitable"<br />
|-<br />
! Directory !! Contents<br />
|-<br />
| . || The J-Flash application. Please refer to the [[UM08001 | J-Link Manual (UM08001)]] for more information about the other J-Link related tools.<br />
|-<br />
| .\Doc || Contains the J-Flash documentation and the other J-Link related manuals.<br />
|-<br />
| .\ETC\JFlash || Two *.csv files for the J-Flash internal management of supported MCU’s und flash chips.<br />
|-<br />
| .\Samples\JFlash\ProjectFiles || Contains sample projects with good default settings (see section [[#Sample_Projects | Sample Projects]] for further details).<br />
|-<br />
|}<br />
<br />
== Using J-Flash for the first time ==<br />
=== Welcome dialog ===<br />
When starting J-Flash, by default a startup dialog pops up which gives the user two options<br />
how to proceed.<br />
[[File:JFlash_Welcome.png|thumb|left|Welcome Dialog]]<br />
<br clear=all><br />
The startup dialog provides the following options:<br />
* Open existing project: Select a project from the list of recent projects or press Other… to open another existing project.<br />
* Create new project: Opens another dialog to create a new J-Flash project<br />
If “Do not show this message again.” is checked, J-Flash will execute the option currently<br />
selected automatically on future starts without showing the welcome dialog again.<br />
<br />
=== Sample Projects ===<br />
For some setups, special settings / configurations needs to be done in the J-Flash project<br />
(e.g. PLL initialization, external bus interface initialization, script files, etc…). Therefore, the J-Link Software and Documentation Pack already includes some example projects for<br />
various special setups which can be used as reference for custom setups.<br />
Those project files can be found in the \Samples\JFlash\ProjectFiles sub directory of the J-Link Software and Documentation Pack installation directory.<br />
<br />
=== Creating a new J-Flash project ===<br />
The recommend way of getting started with J-Flash is to use the '''Create New Project'''<br />
wizard.<br />
* Start by selecting the '''Create new project''' option inside the Welcome dialog or by selecting '''File -> New project'''<br />
* The new project wizard will launch, which looks like as follows: <br />
[[File:JFlash_NewProjectWizard.png|thumb|left|New project wizard]]<br />
<br clear=all><br />
* Select the target device, the target interface and interface speed according to the setup. If only a core is selected, the target endianness must be specified as well.<br />
* Click '''OK'''<br />
The created Project file is now ready for use. More sophisticated settings can be configured<br />
in the '''Project settings'''. Please refer to [[#Project_Settings | Project Settings]].<br />
<br />
=== Creating a new init sequence ===<br />
Many microcontrollers require a custom init sequence to initialize the target hardware, for<br />
example to initialize the PLL, disable the watchdog or define the wait states of the flash.<br />
This means that an compatible init sequence for the microcontroller must be built, if a new<br />
project is created or an existing project is modified.<br />
<br />
A custom init sequence can be created or updated in the '''Init. steps''' tab of the '''Project settings''' menu. Click the + button to open the '''Add custom CPU step''' dialog.<br />
[[File:JFlash_Add_custom_CPU_step.png|thumb|left| Init Steps: Add action dialog]]<br />
<br clear=all><br />
In the '''Action Type''' dropdown menu all available actions are listed. Depending on the type<br />
of action, there are either one or two textboxes next to the dropdown menu, which can be<br />
used to enter the required parameter. The '''Comment''' text box should be used to enter a<br />
short description of the action. For a list of all valid actions which can be used in an init<br />
sequence, please refer to [[#Init_steps | Init steps]].<br />
<br />
==== Example init sequence ====<br />
A good example of a typical init sequence is the init sequence of an AT91SAM7 CPU. The<br />
following example is excerpted from the J-Flash project for the AT91SAM7S256.<br />
<br />
'''The example init sequence step by step:'''<br />
# Reset the target with J-Link reset strategy 8 and 0 delay.<br />
# Disable the watchdog by writing to the Watchdog Timer Mode Register.<br />
# Set flash wait states by writing to the MC Flash Mode Register.<br />
# Set the PLL by writing to power management controller.<br />
# Set a delay of 200ms.<br />
# Set the PLL and the divider by writing to PLL Register of the power management controller.<br />
# Set a delay of 200ms.<br />
# Set the master and processor clock by writing to the Master Clock Register of the power management controller.<br />
'''The steps implemented in J-Flash:'''<br />
[[File:JFlash_InitSequence_Example.png|thumb|left| MCU settings: Init Steps: Example]]<br />
<br clear=all><br />
<br />
=== Serial number programming ===<br />
J-Flash 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 in the working folder<br />
(depending on the configuration) need to be configured first.<br />
<br />
In general, J-Flash supports two ways of programming a serial number into the target:<br />
# <br />
#* Programming continuous serial numbers. <br />
#* Serial number is 1-4 bytes in size. <br />
#* Start serial number, increment, serial number size and address have to be configured in the J-Flash project production settings.<br />
# <br />
#* Programming custom serial numbers from a serial number list file. <br />
#* 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 production project settings. <br />
#* Serial number list file needs to be specified and created by user.<br />
In the following, some generic information how to setup a serial number programming configuration are given.<br />
<br />
==== Serial number settings ====<br />
In order to use the serial number feature, the J-Flash project has to be configured to enable programming a serial number at a specific address. <br />
This is done by enabling the '''Program serial number''' option as shown in the screenshot and table below:<br />
[[File:JFlash SN Sample Settings.png|thumb|left| Program serial number option]]<br />
<br clear=all><br />
{| class="wikitable"<br />
|-<br />
! Setting !! Meaning<br />
|-<br />
| Address || The address the serial number should be programmed at.<br />
|-<br />
| Len || 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. If 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, J-Flash will take the serial number bytes from the list file. If a serial number in the list file does not define all bytes of '''Len''', the remaining bytes are filled with 0s. No complements etc. are added to the serial number.<br />
|-<br />
| Next SN ||<br />
* In case no serial number list file is given, '''Next SN''' is the next serial number which should be programmed. The serial number is always stored in little endian format in the flash memory.<br />
* In case a serial number list file is given, '''Next SN''' describes the line of the serial number list file where to read the next serial number bytes from. J-Flash starts counting with line 0, so in order to start serial number programming with the first line of the SNList.txt, '''Next SN''' needs to be set to 0.<br />
|-<br />
| Increment || Specifies how much '''Next SN''' is incremented.<br />
|-<br />
|}<br />
<br />
==== Serial number file ====<br />
When starting the program process '''Target -> Production Programming''', J-Flash will<br />
create a serial number file named as <JFlashProjectName>_Serial.txt . The file is generated based on the serial number settings in the J-Flash project and will contain the value<br />
defined by the '''Next SN''' option. The serial number file can also be manually edited by the<br />
user, since the serial number is written ASCII.<br />
<br />
==== Serial number list file ====<br />
In order to program custom serial numbers which can not be covered by the standard<br />
serial number scheme provided by J-Flash (e.g. when programming non-continuous serial<br />
numbers or having gaps between the serial numbers), a so called serial number list file<br />
needs to be created by the user.<br />
When selecting '''Target -> Production Programming''', J-Flash will check for a serial number<br />
list file named as ''<JFlashProjectName>_SNList.txt'' in the directory where the J-Flash<br />
project is located. The serial number list file needs to be created manually by the user and<br />
has the following syntax:<br />
* One serial number per line<br />
* Each byte of the serial number is described by two hexadecimal digits.<br />
<br />
'''Example:'''<br />
<br />
An 8-byte serial number should be programmed at address ''0x08000000''. It should be programmed as follows in the memory:<br />
0x08000000: 0x01 0x02 0x03 0x04 0x55 0x66 0x77 0x88<br />
The serial number list file should look as follows:<br />
0102030455667788<br />
[[File:JFlash SN SNList.png|thumb|left| SN list example]]<br />
<br clear=all><br />
{{Note|1=<br />
Make sure to use LF (Line Feed) for word wrap. CRLF (Carriage Return + Line Feed is not supported).<br />
Wikipedia: https://en.wikipedia.org/wiki/Newline#Representation<br />
}}<br />
The number of bytes to read per line is configured via the '''Len''' option in J-Flash. For more<br />
information, please refer to [[#Serial_number_settings | Serial number settings]].<br />
Which line J-Flash will read at the next programming cycle is configured via the '''Next SN'''<br />
option. For more information, please refer to [[#Serial_number_settings | Serial number settings]].<br />
In this case '''Next SN''' needs to be set to 0, since programming should be started with the serial<br />
number bytes defined in the first line of the file.<br />
<br />
'''Notes:'''<br />
* 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 are filled with 0s by Flasher ARM.<br />
* 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 J-Flash.<br />
* Please make sure that the used project file is located at a folder with write permission.<br />
<br />
==== Programming process ====<br />
J-Flash will increment the serial number in ''<JFlashProjectName>_Serial.txt'' by the value<br />
defined in '''Increment''', after each successful programming cycle.<br />
<br />
==== Sample setup ====<br />
In the following a small sample is given how to setup J-Flash for serial number programming. In the following sample, 4-byte serial numbers starting at 1234567 (''0x12D68'') shall<br />
be programmed at address ''0x08001000''.<br />
<br />
'''Defining serial number address, length, start value and increment:'''<br />
* '''Address''' is ''0x08001000''<br />
* '''Len''' is 4 (bytes)<br />
* '''Next SN''' is 1234567<br />
* '''Increment''' is 1<br />
[[File:JFlash SN Sample Settings.png|thumb|left| Program serial number option]]<br />
<br clear=all><br />
Now J-Flash is prepared to program the 8-byte serial number. After programming the serial number, J-Flash creates the ''<JFlashProjectName>_Serial.txt''.<br />
[[File:JFlash_SN_Sample_SerialFileCreated.png|thumb|left| Serial number file]]<br />
<br clear=all><br />
<br />
== Menu structure ==<br />
The main window of J-Flash contains seven dropdown menus ('''File''', '''Edit''', '''Target''', '''Options''', '''View''', '''Help''').<br />
<br />
=== File menu elements ===<br />
{| class="wikitable"<br />
|-<br />
! Command !! Description<br />
|-<br />
| Open data file... || Opens a data file that may be used to flash the target device. The data file must be one of the following: Intel HEX file, Motorola S file, Binary file or ELF file (.hex, .mot, .srec, .bin or .elf).<br />
|-<br />
| Merge data file... || Merges two data files (.hex, .mot, .srec, .bin or .elf). All gaps will be filled with ''0xFF''. Find below a short example of merging two data files named, File0.bin and File1.bin into File3.bin.<br />
<br />
File0.bin --> Addr ''0x0200 - 0x02FF''<br />
<br />
File1.bin --> Addr ''0x1000 - 0x13FF''<br />
<br />
Merge File0.bin & File1.bin<br />
<br />
* ''0x0200 - 0x02FF'' Data of File0.bin<br />
* ''0x0300 - 0x0FFF'' gap (will be filled with ''0xFF'' if image is saved as *.bin file)<br />
* ''0x1000 - 0x13FF'' Data of File1.bin<br />
<br />
Can be saved in new data file (File3.bin).<br />
|-<br />
| Save data file || Saves the data file that currently has focus.<br />
|-<br />
| Save data file as... || Saves the data file that currently has focus using the name and location given.<br />
|- ||<br />
| New project || Creates a new project (See [[#Creating_a_new_J-Flash_project | Creating a new J-Flash project]])<br />
|- <br />
| Open project || Opens a J-Flash project file. Please note that only one project file may be open at a time. Opening a project will close any other project currently open.<br />
|-<br />
| Save project || Saves a J-Flash project file.<br />
|-<br />
| Save project as... || Saves a J-Flash project file using the name and location given.<br />
|-<br />
| Close project || Closes a J-Flash project file.<br />
|-<br />
| Save Flasher config file... || Saves a .CFG file for stand-alone mode using the name and location given. Please refer to the Flasher documentation (UM08022) for more information regarding stand-alone mode.<br />
|-<br />
| Save Flasher data file... || Saves a .DAT file for stand-alone mode using the name and location given. Please refer to the Flasher documentation (UM08022) for more information regarding stand-alone mode.<br />
|-<br />
| Download config & data file to Flasher || Prepares a connected Flasher for stand-alone mode using the current project and the data file which had focus most recently. Please refer to the Flasher documentation (UM08022) for more information regarding stand-alone mode.<br />
|-<br />
| Download serial number file to Flasher || Downloads a serial number file to a connected Flasher. Please refer to the Flasher documentation (UM08022) for more information regarding stand-alone mode.<br />
|-<br />
| Recent Files || Contains a list of the most recently open data files.<br />
|-<br />
| Recent Projects || Contains a list of the most recently open project files.<br />
|-<br />
| Exit || Exits the J-Flash application.<br />
|-<br />
|}<br />
<br />
=== Edit menu elements ===<br />
{| class="wikitable"<br />
|-<br />
! Command !! Description<br />
|-<br />
| Relocate... || Relocates the start of the data file to the supplied hex offset from the current start location.<br />
|-<br />
| Delete range... || Deletes a range of values from the data file, starting and ending at given addresses. The End address must be greater than the Start address otherwise nothing will be done.<br />
|-<br />
| Eliminate blank areas… || Eliminates blank regions within the data file.<br />
|-<br />
|}<br />
<br />
=== Target menu elements ===<br />
{| class="wikitable"<br />
|-<br />
! Command !! Description<br />
|-<br />
| Connect || Creates a connection through the J-Link / Flasher using the configuration options set in the Project settings... of the Options dropdown menu.<br />
|-<br />
| Disconnect || Disconnects a current connection that has been made through the J-Link / Flasher. This is done by:<br />
# Starting the target CPU.<br />
# Resetting the debug bits that had to be set for the connection to the target.<br />
# Closing the connection between J-Flash and J-Link / Flasher, which causes all pins are set to input. <br />
To physically separate the connection between J-Link / Flasher and the target, we recommend using the [https://www.segger.com/products/production/flasher/accessories/adapters/relay-adapter/ SEGGER Relay Adapter].<br />
|-<br />
| Test > Generate test data || Generates data which can be used to test if the flash can be programmed correctly. The size of the generated data file can be defined.<br />
|-<br />
| Test > Test speed || Writes data of an specified size to an defined address, reads the written data back and measures the up- and download speed.<br />
|-<br />
| Test > Show CFI info || Reads the CFI query information of a CFI compliant flash device.<br />
|-<br />
| Test > Hardware > Activate BUSY || Sets the RS232 Busy signal of a connected Flasher. Can be used to test the RS232 setup.<br />
|-<br />
| Test > Hardware > Deactivate BUSY || Resets the RS232 Busy signal of a connected Flasher. Can be used to test the RS232 setup.<br />
|-<br />
| Test > Hardware > Activate OK || Sets the RS232 OK signal of a connected Flasher. Can be used to test the RS232 setup.<br />
|-<br />
| Test > Hardware > Deactivate OK || Resets the RS232 OK signal of a connected Flasher. Can be used to test the RS232 setup.<br />
|-<br />
| Production Programming || Performs a sequence of steps, which can be configured in the Production tab of the Project settings. Additionally, the first step executed are the init steps and the last step executed are the exit steps, which both can be configured in the MCU tab of the project settings.<br />
|-<br />
| Manual Programming > Secure Chip || Secures the MCU.<br />
|-<br />
| Manual Programming > Unsecure Chip || Unsecures the MCU.<br />
|-<br />
| Manual Programming > Check Blank || Checks flash to see if it is empty.<br />
|-<br />
| Manual Programming > Erase Sectors || Erases all selected flash sectors.<br />
|-<br />
| Manual Programming > Erase Chip || Erases the entire chip.<br />
|-<br />
| Manual Programming > Program || Programs the chip using the currently active data file. Please note that no erase / blank check is performed prior programming so the flash is assumed to be in an erased state.<br />
|-<br />
| Manual Programming > Program & Verify || Programs the chip using the currently active data file and then verifies that it was written successfully.<br />
|-<br />
| Manual Programming > Verify || Verifies the data found on the chip with the data file.<br />
|-<br />
| Manual Programming > Read back > Selected Sectors || Reads back the data found in the selected sectors and creates a new data file to store this information.<br />
|-<br />
| Manual Programming > Read back > Entire chip || Reads back the data found on the chip and creates a new data file to store this information.<br />
|-<br />
| Manual Programming > Read back > Range || Reads back the data found in a range specified by the user and creates a new data file to store this information. <br />
|-<br />
| Manual Programming > Start Application || Starts the application.<br />
|-<br />
|}<br />
<br />
=== Options menu elements ===<br />
{| class="wikitable"<br />
|-<br />
! Command !! Description<br />
|-<br />
| Project settings... || Opens the project settings dialog.<br />
|-<br />
| Global settings... || Opens the global settings dialog.<br />
|-<br />
|}<br />
<br />
=== View menu elements ===<br />
{| class="wikitable"<br />
|-<br />
! Command !! Description<br />
|-<br />
| Show project information || Opens and/or sets the focus to the project window.<br />
|-<br />
| Show log || Opens and/or sets the focus to the log window.<br />
|-<br />
|}<br />
<br />
=== Help menu elements ===<br />
{| class="wikitable"<br />
|-<br />
! Command !! Description<br />
|-<br />
| J-Flash Wiki || Opens this wiki page in a browser.<br />
|-<br />
| J-Link Wiki || Opens the J-Link wiki in a browser.<br />
|-<br />
| Flasher Wiki || Opens the Flasher wiki in a browser.<br />
|-<br />
| J-Flash User Guide || Opens the J-Flash Manual (UM08003) document in the default .PDF application of the system.<br />
|-<br />
| J-Link User Guide || Opens the J-Link Manual (UM08001) in the default .PDF application of the system.<br />
|-<br />
| Flasher User Guide || Opens the Flasher Manual (UM08022) in the default .PDF application of the system.<br />
|-<br />
| Flasher ATE User Guide || Opens the Flasher ATE Manual (UM08035) in the default .PDF application of the system.<br />
|-<br />
| Flasher Hub User Guide || Opens the Flasher Hub Manual (UM08039) in the default .PDF application of the system.<br />
|-<br />
| Licenses... || Shows a dialog with licensing information. The serial number of a connected J-Link may be read and licenses added or removed.<br />
|-<br />
| About... || J-Flash and company information.<br />
|-<br />
|}<br />
<br />
= Settings =<br />
The following chapter provides an overview of the program settings. Both general and per<br />
project settings are considered.<br />
<br />
== Project Settings ==<br />
Project settings are available from the Options menu in the main window or by using the '''ALT + F7''' keyboard shortcut.<br />
<br />
=== General Settings ===<br />
This dialog is used to configure the connection to the J-Link / Flasher.<br />
The J-Link / Flasher can either be connected to the host system of J-Flash directly via USB,<br />
Ethernet or WiFi, or it can be connected through the J-Link Remote Server running on a<br />
remote system.<br />
For more information on the operation of J-Link / Flasher, please refer to the J-Link Manual<br />
(UM08001). <br />
<br />
For more information on the J-Link Remote Server, please refer to: <br />
[https://www.segger.com/products/debug-probes/j-link/tools/j-link-remote-server/ J-Link Remote Server overview]<br />
[[File:JFlash_CreateProject_01.png | thumb | left | General Settings]]<br />
<br clear=all><br />
<br />
==== USB ====<br />
If this option is checked, J-Flash will connect to J-Link / Flasher over the USB port. The default device number is 0. For more information about how to use multiple J-Link / Flasher on<br />
one PC, please see also the chapter “Working with J-Link” of the J-Link Manual (UM08001).<br />
<br />
==== USB S/N ====<br />
If this option is checked, J-Flash will connect to J-Link / Flasher over the USB port. <br />
J-Flash will only use the J-Link / Flasher with the specified S/N and any operation will fail if the J-Link / Flasher with specified S/N is not connected or cannot be used for any reason.<br />
<br />
==== TCP/IP ====<br />
If this option is checked, J-Flash will connect to J-Link / Flasher via TCP/IP. This should<br />
be configured for SEGGER probes connected via Ethernet directly (e.g. J-Link PRO, Flasher<br />
PRO, …) or using the J-Link Remote Server. The hostname (or IP address) of the system<br />
to connect to be may be entered in the textbox for TCP/IP. For connections via the J-Link<br />
Remote Server the according connection string may be entered.<br />
<br />
==== Flasher ATE module selection ====<br />
If this option is checked, J-Flash will connect to the selected Flasher ATE Modules.<br><br />
Currently, the only operations that can be done with Flasher ATE Modules are:<br />
*Download of .CFG and .DAT files<br />
<br />
==== User interface mode ====<br />
Select the ''Engineering'' radio button when setting up a project or<br />
select the ''Simplified'' radio button when using J-Flash in production environments.<br />
In the simplified user interface some options are disabled to reduce possible error sources<br />
in the production phase.<br />
<br />
=== Target Interface Settings ===<br />
This dialog is used to configure the interface connection to the target:<br />
[[File:JFlash_CreateProject_02.png|thumb|left| Target Interface Settings]]<br />
<br clear=all><br />
<br />
==== Interface Speed ====<br />
The interface speed used before and after initialization can be configured. <br />
The interface speed before init is used to communicate with the target before and during execution of<br />
the custom initialization sequence (described in the section [[#Init_steps | Init steps]]). <br />
The interface speed after init is used to communicate after executing the custom initialization<br />
sequence. <br />
This is useful if a target running at slow speed and the users wants to set up a PLL in the initialization sequence.<br />
<br />
For more information about the different types of interface speed please see the chapter<br />
“Setup” of the J-Link Manual (UM08001).<br />
<br />
==== JTAG scan chain ====<br />
The “JTAG scan chain information” box allows to configure a JTAG scan chain with multiple<br />
devices on it.<br />
[[File:JFlash_CreateProject_02_1.png|thumb|left| A ''"simple"'' JTAG scan chain configuration]]<br />
<br clear=all><br />
[[File:JFlash_CreateProject_02_2.png|thumb|left| A “detailed” JTAG scan chain configuration]]<br />
<br clear=all><br />
In a scan chain configuration with multiple devices, the TCK and TMS lines of all JTAG devices are connected, while the TDI and TDO lines form a ring.<br />
[[File:arm_2device_connect.png|thumb|left|JTAG-chain]]<br />
<br clear=all><br />
The position of the device to connect with J-Flash is selected from the Position dropdown<br />
menu. The Instruction Register length (IRLen) of a device is defined by its manufacturer.<br />
For ARM cores, the IRLen is always four, which is why the value of IRLen is by default set to<br />
four times the position indicated. This works fine for ARM only scan chains. However, if any<br />
non-ARM devices are introduced to the scan chain the IRLen must be modified accordingly.<br />
<br />
=== MCU Settings ===<br />
This dialog allows the selection of microcontroller dependent settings:<br />
[[File:JFlash_CreateProject_03.png|thumb|left|MCU Settings]]<br />
<br clear=all><br />
J-Flash can be used to program both external or internal flash memory. In order to use J-Flash with an external flash device, the proper Core must be selected.<br />
To program internal flash devices, the respective microcontroller must be selected in the<br />
Device list by clicking the ... button. <br />
<br />
If a microcontroller is not found on this list, contact SEGGER, as new microcontrollers are continuously being added.<br />
<br />
====Device====<br />
Select the respective microcontroller from the list to program internal flash devices. In<br />
order to program external flash, select the device or core from the list.<br />
<br />
====Clock speed====<br />
For some devices, the actual CPU clock frequency in Hz of the MCU is required to guarantee<br />
accurate operation of J-Flash. By default, J-Flash uses the “Auto” CPU speed detection<br />
feature.<br />
<br />
====Endianness====<br />
The compatible endianness of the selected device is set automatically if possible. Otherwise,<br />
select '''little endian''' or '''big endian''' from the dropdown menu accordant to the device.<br />
<br />
====Use J-Link script file====<br />
Allows the user to specify a [[J-Link Script file]] for the project.<br />
<br />
==== Check core ID ====<br />
If the core ID is known for the device to be programmed, it can be used to verify that the<br />
device in communication with the J-Link / Flasher is the intended device. The core ID for all<br />
listed devices is known, therefore this value is filled in automatically if a device is selected<br />
and can not be modified. If only a core family is selected, the core '''ID''' field can be modified.<br />
<br />
===== Mask =====<br />
This option allows the user to mask out specified bits of the core ID. All bits set to 0 in<br />
“Mask” are not taken into account when comparing the Code ID found by the J-Link / Flasher<br />
with the Core ID entered in J-Flash.<br />
<br />
Example:<br />
{| class="wikitable"<br />
|-<br />
! Values !! Check result<br />
|-<br />
| Core ID entered: ''0x3BA00477''<br>Core ID found: ''0x4BA00477''<br>Mask: ''0xFFFFFFFF'' || Failed<br />
|-<br />
| Core ID entered: ''0x3BA00477''<br>Core ID found: ''0x4BA00477''<br>Mask: ''0x0FFFFFFF'' || Passed<br />
|-<br />
|}<br />
The code ID check works as follows:<br />
<source lang="C"><br />
CoreIDFound &= Mask;<br />
CoreIDEntered &= Mask;<br />
if (CoreIDFound != CoreIDEntered) {<br />
return Error; // Core ID check failed.<br />
}<br />
</source><br />
<br />
==== J-Link Work RAM settings ====<br />
The J-Link Work RAM is target RAM used by J-Link to store the RAMCode for flash programming.<br />
The "J-Link Work RAM" settings define the start address and the size of the Work RAM.<br />
<br />
==== Init steps ====<br />
Many microcontrollers require an initialization sequence for different reasons: <br />
When powered on, the PLL may not be initialized, which means the chip is very slow, or a watchdog<br />
must be disabled manually. To use these chips the user must first perform the required<br />
initialization.<br />
<br />
This dialog allows the user to enter a custom initialization sequence using a predefined list<br />
of operations. After choosing an operation and corresponding values to be associated with<br />
the operation, a comment may be added to make it easier for others to determine its effect.<br />
The following list shows all valid commands which can be used in an init sequence:<br />
{| class="wikitable"<br />
! Command !! Value0 !! Value1 !! Description<br />
|-<br />
| Delay || -- || Length of the delay || Sets a delay.<br />
|-<br />
| DisableMMU || -- || -- || Disables the MMU.<br />
|-<br />
| Disable Checks || -- || -- || Disables JTAG checks. Some CPUs (e.g. TMS470R1B1M) report JTAG communication errors while initializing, so that they can not be programmed if the JTAG communication checks are enabled.<br />
|-<br />
| Enable Checks || -- || -- || Enables JTAG checks. This option is activated by default.<br />
|-<br />
| Go || -- || -- || Starts the CPU<br />
|-<br />
| Halt || -- || -- || Halts the CPU<br />
|-<br />
| Reset || J-Link reset type || Length of the delay || Resets the CPU. Refer to the [[UM08001 | J-Link User Manual]] for an detailed explanation of the different reset types.<br />
|-<br />
| Read 8bit || Address (Hex) || -- || Reads 8bit from a given address and stores the value in the internal variable.<br />
|-<br />
| Read 16bit || Address (Hex) || -- || Reads 16bit from a given address and stores the value in the internal variable.<br />
|-<br />
| Read 32bit || Address (Hex) || -- || Reads 32bit from a given address and stores the value in the internal variable.<br />
|-<br />
| SetAllowRemoteRead || -- || On/Off || This option defines if the emulator (remote) or the host handles the read access to the target. This option is activated by default to enhance the performance.<br />
|-<br />
| SetAllowRemoteWrite || -- || On/Off || This option defines if the emulator (remote) or the host handles the write access to the target. This option is activated by default to enhance the performance.<br />
|-<br />
| Verify 8bit || Address (Hex) || Data (Hex) || Verifies whether 8bit data on a declared address is identical to the declared 8bit data.<br> Verification failure is handled as error and causes an abort.<br />
|-<br />
| Verify 16bit || Address (Hex) || Data (Hex) || Verifies whether 16bit data on a declared address is identical to the declared 16bit data.<br> Verification failure is handled as error and causes an abort.<br />
|-<br />
| Verify 32bit || Address (Hex) || Data (Hex) || Verifies whether 32bit data on a declared address is identical to the declared 32bit data.<br> Verification failure is handled as error and causes an abort.<br />
|-<br />
| Write 8bit || Address (Hex) || Data (Hex) || Writes 8bit data to a given address.<br />
|-<br />
| Write 16bit || Address (Hex) || Data (Hex) || Writes 16bit data to a given address.<br />
|-<br />
| Write 32bit || Address (Hex) || Data (Hex) || Writes 32bit data to a given address.<br />
|-<br />
| Write&Verify 8bit || Address (Hex) || Data (Hex) || Writes 8bit data to a given address and verifies it afterwards.<br> Verification failure is handled as error and causes an abort.<br />
|-<br />
| Write&Verify 16bit || Address (Hex) || Data (Hex) || Writes 16bit data to a given address and verifies it afterwards.<br> Verification failure is handled as error and causes an abort.<br />
|-<br />
| Write&Verify 32bit || Address (Hex) || Data (Hex) || Writes 32bit data to a given address and verifies it afterwards.<br> Verification failure is handled as error and causes an abort.<br />
|-<br />
| Write Register || Register || Data (Hex) || Writes data into a register.<br />
|-<br />
| Write JTAG IR || Command || -- || Writes a command in the JTAG instruction register.<br />
|-<br />
| Write JTAG DR || NumBits || Data (Hex) || Writes a declared number of bits into the JTAG data register.<br />
|-<br />
| Var AND || -- || Value (Hex) || Logical AND combination of the internal variable with a given value.<br />
|-<br />
| Var OR || -- || Value (Hex) || Logical OR combination of the internal variable with a given value.<br />
|-<br />
| Var XOR || -- || Value (Hex) || Logical XOR combination of the internal variable with a given value.<br />
|-<br />
| Var BEQ || Index || -- || Checks if the internal variable is equal to 0. Performs jump to index on match.<br />
|-<br />
| Var BNE || Index || -- || Checks if the internal variable is not equal to 0. Performs jump to index on match.<br />
|-<br />
| Var Write 8bit || Address (Hex) || Data (Hex) || Writes 8bit data of the internal variable to a given address.<br />
|-<br />
| Var Write 16bit || Address (Hex) || Data (Hex) || Writes 16bit data of the internal variable to a given address.<br />
|-<br />
| Var Write 32bit || Address (Hex) || Data (Hex) || Writes 32bit data of the internal variable to a given address.<br />
|-<br />
| SetModeBigEndian || -- || -- || Sets bit 7 of the CP15 register to 1.<br />
|-<br />
| SetModeLittleEndian || -- || -- || Sets bit 7 of the CP15 register to 0.<br />
|-<br />
| Var Write File 8bit || Address (Hex) || -- || Writes 8bit data of the internal variable to a given address in the data file.<br />
|-<br />
| Var Write File 16bit || Address (Hex) || -- || Writes 16bit data of the internal variable to a given address in the data file.<br />
|-<br />
| Var Write File 32bit || Address (Hex) || -- || Writes 32bit data of the internal variable to a given address in the data file.<br />
|-<br />
| Comment || -- || -- || Can be used as additional space to insert comments. Does nothing.<br />
|-<br />
| Write File 8bit || Address (Hex) || Data (Hex) || Writes 8bit data to a given address in the data file.<br />
|-<br />
| Write File 16bit || Address (Hex) || Data (Hex) || Writes 16bit data to a given address in the data file.<br />
|-<br />
| Write File 32bit || Address (Hex) || Data (Hex) || Writes 32bit data to a given address in the data file.<br />
|-<br />
| Report Error || Value (Hex) || -- || Displays a message box in J-Flash with the given error code.<br />
|-<br />
|}<br />
'''Note:'''<br />
<br />
All "Write *" commands may only be used to write RAM or SFR registers, but not Flash memory.<br />
Flash memory can only be influenced by altering the data file.<br />
The data file can changed in the init steps by using the "Write File*" commands.<br />
<br />
====Exit steps====<br />
Those steps will be performed immediately after the target has been successfully programmed.<br />
In case of verify is checked in the production settings ('''Options} -> Project settings... -> Production'''), those steps will be performed after verify.<br />
<br />
The Exit steps can be used to do some special handling after programming, for example to set<br />
some security bits in order to secure the chip.<br />
{{Note|1=<br />
* Exit steps are only performed for Target -> Production Programming operations.<br />
* For the exit steps, the same commands can be used as for the [[#Init_steps | Init steps]].<br />
}}<br />
<br />
=== Flash Settings ===<br />
This dialog is used to select and configure the flash device to operate with.<br />
The listed options of the Flash settings menu are dependent on the selection in<br />
the [[#MCU_Settings | MCU Settings]].<br />
If a core family has been selected in order to program external flash memory or a custom Flash Bank<br />
has been added and is selected, the menu should look similar to the screenshot below.<br />
[[File:JFlash_FlashSettings_External.png|thumb|left|Flash Settings: external Flash]]<br />
<br clear=all><br />
If a specific device has been selected to program the flash of these device, the menu should<br />
look similar to the screenshot below.<br />
[[File:JFlash_FlashSettings_Internal.png|thumb|left|Flash Settings: internal Flash]]<br />
<br clear=all><br />
<br />
====Base Address====<br />
This is the base address of the flash.<br />
<br />
====Disable flash bank====<br />
<br />
The '''Disable flash bank''' checkbox disables the flash bank currently selected in the dropdown menu,<br />
which can be used to change which flash banks are processed by J-Flash with only one click per flash bank.<br />
This is especially useful when testing different configurations.<br />
<br />
====Sector selection====<br />
The final section of this dialog indicates the sectors to be affected by erase, read and write operations done by J-Flash.<br />
An individual or series of sectors may be selected from the predetermined valid range.<br />
<br />
====External Flash specific settings====<br />
[[File:JFlash_ExternalFlash_NoAuto.png|thumb|left|Flash Settings: external Flash, auto detection unchecked]]<br />
<br clear=all><br />
<br />
=====Organization=====<br />
For some flashes (e.g. CFI compliant NOR flashes), the organization needs to be specified.<br />
The organization settings make it possible to configure the bus width and the number of flash chips connected to the address and data bus of the MCU.<br />
<br />
=====ID checking=====<br />
There are two other checkboxes that are of interest in this subsection which are '''Check manufacturer flash Id''' and '''Check product flash Id'''. <br />
These checkboxes should be selected to confirm the type of device that is in communication with J-Flash.<br />
<br />
===Production settings===<br />
[[File:JFlash_ProductionSettings.png|thumb|left|Production Settings]]<br />
<br clear=all><br />
<br />
====Target power supply====<br />
Available power source options are:<br />
* ''None''<br />
* ''V<sub>CC5V</sub>''<br />
* ''V<sub>TGT</sub>''<br />
<br />
'''Delay before start''' defines the delay (in ms) after enabling the target power supply and<br />
before starting to communicate with the target.<br />
<br />
'''Discharge target on disconnect''' causes a discharge of any capacities left on the target<br />
on disconnect.<br />
<br />
'''Notes:'''<br />
<br />
* The option VTGT for power source is for Flasher ATE only. Other Flasher models will use VCC5V, even when VTGT is selected.<br />
* The option Discharge target on disconnect is for Flasher ATE only and will be ignored by the other Flasher models.<br />
<br />
====Reference voltage settings====<br />
Enabling '''VTref monitor''' causes the Flasher to monitor the target voltage (VTref) in stand-<br />
alone mode and makes the Flasher throw an error when the voltage drops below the min-<br />
imum or rises above the maximum during programming.<br />
<br />
====Program serial number====<br />
J-Flash supports programming of serial numbers into the target in two ways. For a detailed<br />
description on how to use the serial number programming feature please refer to [[#Serial_number_programming | Serial number programming]]<br />
<br />
====Actions performed by "Production Programming"====<br />
The checked options will be performed when auto programming a target via '''Target -> Production Programming''' (shortcut: F7).<br />
<br />
Find below a table which describes the commands:<br />
{| class="wikitable"<br />
! Command !! Enabled by default? !! Description<br />
|-<br />
| Init steps || Yes || Executes the init steps defined in the MCU settings<br />
|-<br />
| Erase sectors || Yes || Performs an erase depending on the settings, selected in the drop down box.<br />
* Sectors: Erases all sectors which are effected by the image to be programmed.<br />
* Sectors if not blank: Erases all sectors which are both, effected by the image to be programmed and not already blank<br />
* Chip: Erase the entire chip independent of the content.<br />
|-<br />
| Program || Yes || Programs the data file.<br />
|-<br />
| Verify || Yes || Verifies the program data.<br />
* CRC: Verifies data via a high optimized CRC calculation (recommended verification method).<br />
* Complete data: Verifies data by reading it back.<br />
|-<br />
| Start application || No || Starts application after programming/verify completed. Needs reset pin to be connected to Flasher.<br />
|-<br />
| Secure chip || No || Secures the device if supported by algorithm.<br />
|-<br />
| Exit steps || Yes || Executes the exit steps defined in the MCU settings<br />
|-<br />
|}<br />
<br />
====Override timeouts====<br />
The settings in this section are taken account for stand-alone configurations, only. <br><br />
For more information on how to use J-Flash for Flashers in stand-alone mode, please refer to the [https://www.segger.com/downloads/flasher/UM08022 Flasher User Guide] (chapter "''Setting up Flasher for stand-alone mode<br />
''").<br />
<br />
===Performance settings===<br />
[[File:JFlash_PerformanceSettings.png|thumb|left|Performance Settings]]<br />
<br clear=all><br />
<br />
====On "Erase selected sectors" / On "Erase chip"====<br />
If Perform blank check is checked, a blank check will be performed before an erase. If<br />
the area to erase is already blank, no erase happens.<br />
<br />
'''Note:'''<br />
<br />
This check takes place for '''Target -> Production Programming''' as well as '''Target -> Manual Programming'''.<br />
<br />
====On "Verify"====<br />
Configures the type of verify that takes place:<br />
* via CRC<br />
* via readback<br />
<br />
==Global Settings==<br />
[[File:JFlash_GlobalSettings.png|thumb|left|Global Settings]]<br />
<br clear=all><br />
<br />
===General log level===<br />
This specifies the log level of J-Flash. Increasing log levels result in more information logged<br />
in the log window.<br />
<br />
===Enable J-Link logfile===<br />
If this option is checked, a file name of the J-Link logfile can be specified. The J-Link logfile<br />
differs from the log window output of J-Flash. It does not log J-Flash operations performed.<br />
Instead of that, it logs the J-Link DLL API functions called from within J-Flash.<br />
<br />
===Enable J-Flash logfile===<br />
If this option is checked, a file name of the J-Flash logfile can be specified. The J-Flash<br />
logfile contains the same messages as the log window output of J-Flash.<br />
<br />
===Save project file on close===<br />
If this option is checked, J-Flash will always save the changes made to a project file when<br />
a project or J-Flash is closed and therefore overrides the old project file without asking for<br />
permission to do so.<br />
<br />
===Action on J-Flash start===<br />
In this section, the action J-Flash performs on startup can be selected. <br />
* Load most recent project<br />
* Show New Project Dialog <br />
* Show Welcome Dialog (default)<br />
<br />
=Command Line Interface=<br />
This chapter describes the J-Flash command line interface. The command line interface<br />
allows using J-Flash in batch processing mode and other advanced uses.<br />
<br />
==Overview==<br />
In addition to its graphical user interface (GUI), J-Flash supports a command line mode as<br />
well. This makes it possible to use J-Flash for batch processing or automatization purposes.<br />
All important options accessible from the menus are available in command line mode as<br />
well. If command line options are provided, J-Flash will still start its GUI, but processing<br />
will start immediately.<br />
<br />
The screenshot below shows the command line help dialog, which is displayed if J-Flash is<br />
started with the command line parameter '''-help''' or '''-?''':<br />
JFlash.exe -help<br />
JFlash.exe -?<br />
<br />
[[File:JFlash_CommandLineHelp.png|thumb|left|Command line options]]<br />
<br clear=all><br />
<br />
==Command line options==<br />
This section lists and describes all available command line options.<br />
Some options accept additional parameters which are enclosed in angle brackets, e.g.<br />
'''<FILENAME>'''.<br />
If these parameters are optional they are enclosed in square brackets too, e.g. '''[<SADDR>]'''.<br />
Neither the angle nor the square brackets must be typed on the command line, they are<br />
used here only to denote (optional) parameters.<br />
<br />
The command line options are evaluated in the order as they are passed to J-Flash, so please<br />
ensure that a project + data file have already been opened when evaluating a command<br />
line option which requires this.<br />
<br />
It is recommended to always use<br />
-openprj<PRJFILENAME> -open<FILENAME>[,<SADDR>]<br />
to make sure the right project file and the right data file is opened.<br><br />
All command line options return 0 if the processing was successfully.<br />
A return value unequal 0 means that an error occurred.<br />
<br />
{| class="wikitable"<br />
! Option !! Description<br />
|-<br />
| -? || Displays the help dialog.<br />
|-<br />
| -auto || Executes the steps selected in Production Programming. <br />
'''Default:''' Erases, programs and verifies target.<br />
|-<br />
| -checkblank || Blank checks target.<br />
|-<br />
| -connect || Connects to the target.<br />
|-<br />
| -delrange<SADDR>,<EADDR> || Deletes data in the given range.<br />
|-<br />
| -disconnect || Disconnects from the target.<br />
|-<br />
| -download || Downloads configuration to Flasher.<br />
|-<br />
| -eliminate || Eliminates blank areas in data file.<br />
|-<br />
| -erasechip || Erases the entire flash chip.<br />
|-<br />
| -erasesectors || Erases selected sectors.<br />
|-<br />
| -exit || Exits J-Flash.<br />
|-<br />
| -help || Displays the help dialog.<br />
|-<br />
| -jflashlog<FILENAME> || Sets a temporary J-Flash logfile.<br />
|-<br />
| -jlinklog<FILENAME> || Sets a temporary J-Link logfile.<br />
|-<br />
| -jlinkdevicesxmlpath<PATH> || Sets the path to the JLinkDevices.xml file.<br />
|-<br />
| -merge<FILENAME><br>-merge<FILENAME>.bin,<ADDR> || Merges a given data file with the one currently opened in J-Flash.<br />
|-<br />
| -min || Starts J-Flash minimized<br />
|-<br />
| -open<FILENAME>[,<SADDR>] || Opens a data file.<br />
|-<br />
| -openprj<FILENAME> || Opens an existing project file. When no data file to open (''-open'') is specified in the command line, this will also automatically open the data file that has been recently used with this project. When this option is not set, J-Flash will open the most recently used project. If no recently used project could be found, J-Flash generates a default project.<br />
|-<br />
| -production || Same as -auto<br />
|-<br />
| -program || Programs the target.<br />
|-<br />
| -programverify || Programs and verify the target.<br />
|-<br />
| -readchip || Reads the entire flash chip.<br />
|-<br />
| -readsectors || Reads selected sectors.<br />
|-<br />
| -readrange<SADDR>,<EADDR> || Reads specified range of target memory.<br />
|-<br />
| -relocate<OFFSET> || Relocates data by the given offset.<br />
|-<br />
| -save[<SADDR>,<EADDR>] || Saves the current data file.<br>Please note that the parameters <SADDR>,<EADDR> apply only if the data file is a *.bin file or *.c file.<br />
|-<br />
| -saveas<FILENAME>[,<SADDR>,<EADDR>] || Saves the current data file in the specified file.<br>Please note that the parameters <SADDR>,<EADDR> apply only if the data file is a *.bin file or *.c file.<br />
|-<br />
| -savecfg<FILENAME> || Saves Flasher config file.<br />
|-<br />
| -savedat<FILENAME> || Saves Flasher data file.<br />
|-<br />
| -saveprj || Saves the current project.<br />
|-<br />
| -saveprjas<FILENAME> || Saves the current project in the specified file.<br />
|-<br />
| -securechip || Secures target device.<br />
|-<br />
| -setcpuidcode<IDCodeString> || Sets the CPU ID code to be used by the DLL (e.g. during authentication process). Please note that this is '''NOT''' the Core ID which can be found in the [[#MCU_Settings | MCU Settings]].<br />
|-<br />
| -setrxidcode<IDCodeString> || Sets the RXIDCode to be used by the DLL.<br>Additional info <IDCodeString>: 32 characters, 16 IDCode bytes<br />
|-<br />
| -startapp || Starts the target application.<br />
|-<br />
| -unsecurechip || Unsecures target device.<br />
|-<br />
| -verify || Verifies the target memory.<br />
|-<br />
| -usb<SN> || Overrides connection settings to USB S/N.<br />
|- <br />
| -ip<xxx.xxx.xxx.xxx><br>-ip<HostName> || Overrides connection settings to IP.<br />
|-<br />
| -hide || Starts J-Flash hidden. <br />
|-<br />
|}<br />
<br />
==Batch processing==<br />
J-Flash can be used for batch processing purposes. All important options are available in<br />
command line mode as well. If command line options are provided, J-Flash will still start<br />
its GUI, but processing will start immediately.<br />
<br />
The example batchfile below will cause J-Flash to perform the following operations:<br />
# Open project C:\Projects\Default.jflash<br />
# Open bin file C:\Data\data.bin and set start address to ''0x100000''<br />
# Perform “Auto” operation (“Production Programming”)<br />
# Close J-Flash<br />
<br />
The return value will be checked and in case of an error an error message displayed. This<br />
sample can be used as a template to be adapted according to the requirements of your<br />
project.<br />
<source lang="batch"><br />
@ECHO OFF<br />
ECHO Open a project and data file, start auto processing and exit<br />
JFlash.exe -openprjC:\Projects\Default.jflash -openC:\Data<br />
\data.bin,0x100000 -auto -exit<br />
IF ERRORLEVEL 1 goto ERROR<br />
goto END<br />
:ERROR<br />
ECHO J-Flash ARM: Error!<br />
pause<br />
:END<br />
</source><br />
<br />
===Starting J-Flash minimized===<br />
The following example call starts J-Flash minimized:<br />
start /min /wait "J-Flash" "JFlash.exe" -openprjC:\Projects\Default.jflash -<br />
openC:\Data\data.bin,0x100000 -auto -exit<br />
<br />
'''Note:'''<br />
<br />
Every call of ''JFlash.exe'' has to be completed with the ''-exit'' option, otherwise the<br />
execution of the batch file stops and the following commands will not be processed.<br />
<br />
==Programming multiple targets in parallel==<br />
In order to program multiple targets in parallel using J-Flash, the following is needed:<br />
* J-Link / Flasher needs to be configured to allow to connect multiple ones to one PC at the same time. Please refer to [[UM08001#Connecting_multiple_J-Links_.2F_J-Traces_to_your_PC | Connecting multiple J-Links / J-Traces to your PC]]<br />
* A J-Flash project (containing the configuration). Basically, J-Flash connects to a specific J-Link / Flasher, configured in the project settings, but there is a command line option available, which allows to temporary override this setting. Therefore, only one J-Flash project is needed.<br />
<br />
=== Batch file example ===<br />
<br />
Find below a small example which shows how to program multiple targets in parallel using a batch file ('''Windows only''').<br />
Please note that in this example, two separate files are required to start parallel programming with a batch file.<br />
<br />
'''ParallelProgramming.bat'''<br><br />
Executing this file starts parallel programming using J-Flash.<br />
{{Note|1=The "List of jobs" section contains placeholders and must be adjusted to use the desired Flasher serial numbers, J-Flash project file(s) and data file(s).<br />
Furthermore, the list may be expanded to run more sessions of J-Flash in parallel.}}<br />
<br />
<source lang="batch"><br />
@ECHO OFF<br />
REM<br />
REM List of jobs<br />
REM Serial no. J-Flash project file Data file<br />
set aJobs[0]=1015000001 Path\To\ProjectFile.jflash Path\To\DataFile.hex<br />
set aJobs[1]=1015000002 Path\To\ProjectFile.jflash Path\To\DataFile.hex<br />
set aJobs[2]=1015000003 Path\To\ProjectFile.jflash Path\To\DataFile.hex<br />
REM set aJobs[3]=1015000004 Path\To\ProjectFile.jflash Path\To\DataFile.hex<br />
REM set aJobs[4]=1015000005 Path\To\ProjectFile.jflash Path\To\DataFile.hex<br />
REM set aJobs[5]=1015000006 Path\To\ProjectFile.jflash Path\To\DataFile.hex<br />
REM set aJobs[6]=1015000007 Path\To\ProjectFile.jflash Path\To\DataFile.hex<br />
REM [...]<br />
REM<br />
<br />
REM<br />
REM :Main<br />
REM<br />
REM Function description<br />
REM Entry point for the batch script<br />
REM Starts multiple instances of J-Flash and waits until all of them have exited<br />
REM<br />
:Main<br />
REM<br />
REM Enable the use of variables inside the for loop by using delayed variable expansion<br />
REM<br />
setlocal ENABLEDELAYEDEXPANSION<br />
REM<br />
REM In order to wait for all processes to finish, lock files are used which are located at %temp%<br />
REM Each process blocks its corresponding lock file as long as the process is alive.<br />
REM<br />
set "lock=%temp%\wait!random!.lock" <br />
echo Starting J-Flash...<br />
set /a Cnt=0<br />
:_JobStartLoop<br />
if defined aJobs[%Cnt%] (<br />
start "" 9>"!lock!%Cnt%" StartJFlash.bat %%aJobs[%Cnt%]%%<br />
set /a "Cnt+=1"<br />
GOTO :_JobStartLoop<br />
)<br />
echo Waiting for J-Flash to finish...<br />
REM<br />
REM Wait for processes to finish before continuing<br />
REM<br />
set /a Cnt=0<br />
:_JobWaitLoop<br />
if defined aJobs[%Cnt%] (<br />
call :WaitForUnlock !lock!%Cnt% >nul 2>&1<br />
set /a "Cnt+=1"<br />
GOTO :_JobWaitLoop<br />
)<br />
REM <br />
REM Delete temporary lock files<br />
REM<br />
del "!lock!*"<br />
echo Done.<br />
pause<br />
exit /b<br />
<br />
REM<br />
REM :WaitForUnlock<br />
REM<br />
REM Function description<br />
REM This function waits for the passed lock file to be accessible<br />
REM<br />
REM Parameters<br />
REM %~1 Lock file path<br />
REM<br />
:WaitForUnlock<br />
goto :Start<br />
:Retry<br />
REM<br />
REM This is a ping to the IPv6 local loopback address which is used to burn some time waiting for J-Flash to finish.<br />
REM There is a 1 sec delay between two pings, so /n 2 generates a sleep for at least 1 sec.<br />
REM<br />
1>nul 2>nul ping /n 2 ::1<br />
:Start<br />
call 9>"%~1" || goto Retry<br />
exit /b<br />
</source><br />
<br />
'''StartJFlash.bat'''<br><br />
This file is used as a helper file for '''ParallelProgramming.bat''' and should not be executed on its own.<br />
{{Note|1=The path to the J-Flash executable ("JFlash.exe") may be adjusted to fit the environment this file is used in.}}<br />
<br />
<source lang="batch"><br />
@ECHO OFF<br />
REM<br />
REM Expected parameters passed to this script:<br />
REM %1 S/N of USB Flasher<br />
REM %2 Path to project file<br />
REM %3 Path to data file<br />
REM<br />
REM Open a project with a data file, start programming and exit afterwards<br />
REM<br />
start /wait "J-Flash" "JFlash.exe" -usb%1 -openprj%2 -open%3 -auto -exit<br />
IF ERRORLEVEL 1 goto ERROR<br />
goto END<br />
:ERROR<br />
ECHO %ERRORLEVEL%<br />
ECHO J-Flash: Error! SN: %1<br />
pause<br />
exit<br />
:END<br />
ECHO J-Flash: Succeed!<br />
exit<br />
</source><br />
<br />
=== Python script example ===<br />
<br />
Find below a small example which shows how to program multiple targets in parallel using Python 3.<br />
<br />
'''ParallelProgramming.py'''<br />
{{Note|1=The list of job information ('''_aJobs''') contains placeholders and must be adjusted to use the desired J-Flash command line options.<br />
Furthermore, the list may be expanded to run more sessions of J-Flash in parallel.}}<br />
<br />
<source lang="Python3"><br />
#/*********************************************************************<br />
#*<br />
#* Version Check<br />
#*<br />
#**********************************************************************<br />
#*/<br />
import os<br />
import sys<br />
import subprocess<br />
<br />
if sys.version_info < (3, 0, 0):<br />
sys.stderr.write("Warning: Using Python 2.x. This script may only be run using Python 3!\n")<br />
raw_input("Press <Return> to exit")<br />
sys.exit(1)<br />
<br />
#/*********************************************************************<br />
#*<br />
#* Defines<br />
#*<br />
#**********************************************************************<br />
#*/<br />
<br />
_PATH_JFLASH_EXE = os.path.join("C:\\", "Program Files", "SEGGER", "JLink", "JFlash.exe") # Default installation path on Windows<br />
<br />
#/*********************************************************************<br />
#*<br />
#* Classes<br />
#*<br />
#**********************************************************************<br />
#*/<br />
<br />
class JOB_INFO:<br />
def __init__(self, ParamList):<br />
self.ParamList = ParamList # List of strings, each of which represents a command line option passed to J-Flash<br />
<br />
#/*********************************************************************<br />
#*<br />
#* List of jobs<br />
#*<br />
#**********************************************************************<br />
#*/<br />
<br />
_aJobs = [ # For a list of supported command line options, refer to https://wiki.segger.com/UM08003_JFlash#Command_line_options<br />
JOB_INFO(["-usb1015000001", "-openprjPath\\To\\ProjectFile.jflash", "-openPath\\To\\DataFile.hex", "-auto", "-exit"])<br />
,JOB_INFO(["-usb1015000002", "-openprjPath\\To\\ProjectFile.jflash", "-openPath\\To\\DataFile.hex", "-auto", "-exit"])<br />
,JOB_INFO(["-usb1015000003", "-openprjPath\\To\\ProjectFile.jflash", "-openPath\\To\\DataFile.hex", "-auto", "-exit"])<br />
# ,JOB_INFO(["-usb1015000004", "-openprjPath\\To\\ProjectFile.jflash", "-openPath\\To\\DataFile.hex", "-auto", "-exit"])<br />
# ,JOB_INFO(["-usb1015000005", "-openprjPath\\To\\ProjectFile.jflash", "-openPath\\To\\DataFile.hex", "-auto", "-exit"])<br />
# ,JOB_INFO(["-usb1015000006", "-openprjPath\\To\\ProjectFile.jflash", "-openPath\\To\\DataFile.hex", "-auto", "-exit"])<br />
# ,JOB_INFO(["-usb1015000007", "-openprjPath\\To\\ProjectFile.jflash", "-openPath\\To\\DataFile.hex", "-auto", "-exit"])<br />
# [...]<br />
]<br />
<br />
#/*********************************************************************<br />
#*<br />
#* Functions / Code<br />
#*<br />
#**********************************************************************<br />
#*/<br />
<br />
#/*********************************************************************<br />
#*<br />
#* main()<br />
#*<br />
#* Function description<br />
#* Handles parallel programming via multiple J-Flash instances<br />
#*/<br />
def main():<br />
aProc = []<br />
#<br />
# Sanity check<br />
#<br />
r = os.path.exists(_PATH_JFLASH_EXE)<br />
if (r == False):<br />
print("Could not find J-Flash at", _PATH_JFLASH_EXE)<br />
input("Press <Return> to exit...")<br />
return -1<br />
#<br />
# Go through jobs and start J-Flash instance for each job<br />
#<br />
print("Starting J-Flash...")<br />
for JobInfo in _aJobs:<br />
aCmd = [_PATH_JFLASH_EXE] # The first arg passed to subprocess.Popen is the path to the executable<br />
aCmd += JobInfo.ParamList<br />
hProc = subprocess.Popen(aCmd, shell=True)<br />
aProc.append(hProc)<br />
#<br />
# Go through processes and wait for each to finish executing<br />
#<br />
print("Waiting for J-Flash to finish...")<br />
Result = 0<br />
for hProc in aProc:<br />
hProc.wait()<br />
r = hProc.returncode<br />
if (r != 0): # Error occurred? => Print error message including arguments for identification of failed session<br />
Result = -1<br />
print("Error occurred for following J-Flash instance:", hProc.args)<br />
if (Result == 0): # No errors occurred?<br />
print("Success!")<br />
print("Done.")<br />
input("Press <Return> to exit...")<br />
return Result<br />
<br />
#/*********************************************************************<br />
#*<br />
#* Main<br />
#*<br />
#**********************************************************************<br />
#*/<br />
if __name__ == "__main__": # only executed if this module is executed directly, not if its imported<br />
main()<br />
</source><br />
<br />
== Programming multiple data files at once ==<br />
<br />
For some production environments, the firmware image to program may consist of multiple data files, e.g.<br />
# Bootloader<br />
# Firmware<br />
# Unit-specific data<br />
#* MAC address<br />
#* Calibration data<br />
#* Signature<br />
# etc...<br />
<br />
J-Flash can only program one data file to a target at a time.<br><br />
Programming the data files separately could cause a series of issues, e.g.<br />
* One of the data files enables a flash write protection, causing following flash programming attempts to fail<br />
* Multiple programming operations decrease the flash memory's lifespan<br />
* Multiple programming operations increase the time required to produce a single unit<br />
Instead, J-Flash can be used to merge multiple data files into a single data file which can then be programmed in one go.<br />
Example:<br />
<br />
<source><br />
JFlash.exe -openprj"Path\To\Proj.jflash" -open"Path\To\Data1.bin",0x08000000 -merge"Path\To\Data2.bin",0x08000200 -merge"Path\To\Data3.bin",0x08000400 -saveas"Path\To\Merged.hex" -auto<br />
</source><br />
<br />
The command line above does the following:<br />
# Starts J-Flash<br />
# Opens the project file <code>Proj.jflash</code><br />
# Opens the data file <code>Data1.bin</code><br />
# Merges <code>Data2.bin</code> into <code>Data1.bin</code><br />
# Merges <code>Data3.bin</code> into the merged data<br />
# Saves the resulting data file to <code>Merged.hex</code><br />
# Starts production programming of the merged data<br />
<br />
{{Note|1=The contents of the data files <code>Data1.bin</code>, <code>Data2.bin</code> and <code>Data3.bin</code> are not changed by J-Flash using the command line above.<br><br />
Furthermore, saving the resulting merged data before programming is not necessary and that step may be omitted.}}<br />
<br />
=Device specifics=<br />
For some devices, special handling might be required. In order to find out if special handling<br />
is necessary for the used device, please refer to the article [https://wiki.segger.com/Debug_Probes_-_J-Link_%26_J-Trace#Device_specifics Device specifics].<br />
<br />
=Target systems=<br />
The following chapter lists all supported flash devices.<br />
<br />
==Which devices can be programmed by J-Flash?==<br />
J-Flash supports programming of internal and external flash devices. The external flash<br />
device can be a:<br />
* Parallel NOR flash<br />
* Serial NOR flash<br />
* NAND flash<br />
* DataFlash<br />
<br />
For parallel NOR flash any combination of ARM CPU and parallel NOR flash device (1x8bit,<br />
2x8bit, 4x8bit, 1x16bit, 2x16bit, 1x32bit) is supported, if the NOR flash device is CFI-<br />
compliant. If the NOR flash device which is used is not CFI-compliant, the flash device has<br />
to explicitly selected in J-Flash. For a list of all parallel NOR flash devices which can be<br />
explicitly selected in J-Flash, please refer to [[#Supported_Flash_Devices | Supported Flash Devices]].<br />
For serial NOR flash, NAND flash and DataFlash devices a custom RAMCode is needed since<br />
the connection of the flash to the CPU differs from device to device.<br />
For more information on how to create a custom RAM Code for J-Flash, please refer to the article: [[Open_Flashloader#Create_a_Flash_Loader | Creating a Flash Loader]]<br />
<br />
For more information about which which microcontrollers with internal flash are supported<br />
by J-Flash, please refer to [[#Supported_microcontrollers | Supported microcontrollers ]].<br />
SEGGER is constantly adding support for new devices. If you need support for a chip or<br />
flash not listed in the tables, please do not hesitate to contact us.<br />
<br />
==Supported microcontrollers==<br />
J-Flash supports download into the internal flash of a large number of microcontrollers. The<br />
latest list of supported devices can always be found on our website:<br />
<br />
[https://www.segger.com/jlink_supported_devices.html List of supported devices]<br />
<br />
===Supported Flash Devices===<br />
J-Flash supports a large number of external parallel NOR flash devices. In general, every<br />
CFI-compliant parallel NOR flash device is supported by J-Flash. For non-CFI compliant<br />
ones, J-Flash allows the user to explicitly select the device. The latest list of supported flash<br />
devices can always be found on our website:<br />
<br />
[https://www.segger.com/supported-flash-devices.html List of supported flash devices]<br />
<br />
=Performance=<br />
For programming speed measurements, please refer to the SEGGER website:<br />
[https://www.segger.com/jlink-flash-download.html Internal Flash programming performance]<br />
<br />
=Background information=<br />
This chapter provides some background information about specific parts of the J-Flash<br />
software.<br />
<br />
==Version compatibility==<br />
J-Flash is backwards compatible (as all other J-Link software), meaning that any project files created with J-Flash version <''X''><br />
can also be opened with any version of J-Flash newer than <''X''> (i.e. a project created with version V6.64 can also opened with V6.71d).<br><br />
<br />
J-Flash is '''not always''' forward compatible.<br><br />
If a project file was generated with a newer version of J-Flash where the project file format was changed,<br />
it cannot be opened with an older version of J-Flash.<br><br />
When that is that case, the message box shown below will appear.<br><br />
<br />
As long as the project file format has not changed from one version to another,<br />
the project file should open in both versions without any issues.<br />
<br />
[[File: JFlash_VersionInfo.png]]<br />
<br />
==Auto-update of project==<br />
When opening a J-Flash project with a version of J-Flash that is more recent than the version of J-Flash that the project was last saved with,<br><br />
it can happen that J-Flash prompts the user to allow an automatic update of the J-Flash project contents.<br><br />
This is for example the case when the information about internal flash banks of the selected target device<br><br />
inside the J-Link shared library has changed from the older version of the J-Link software to the newer version.<br><br />
<br />
In order for J-Flash to work properly, it is necessary for the project file information to be in sync with the information of the J-Link shared lib.<br><br />
Because of that, it is necessary for J-Flash to update the project information accordingly - otherwise it cannot open the project file.<br><br />
<br />
[[File: JFlash_AutoUpdate.png]]<br />
<br />
'''Note''':<br><br />
In the process of auto-updating the J-Flash project file, some information (like the selection of sectors a flash bank) may get reset.<br><br />
Because of that, it is highly recommended for any user to verify the correctness of the project file settings after an auto-update by J-Flash.<br><br />
<br />
==CRC calculation==<br />
J-Flash and Flasher are using a [[CRC]].<br />
The CRC used is the CRC32-CCITT polynomial.<br />
Normal form: 0x04C11DB7<br />
Reversed form: 0xEDB88320 (used by J-Flash)<br />
<br />
Please note, that the initial CRC used for the calculation is 0x00000000 (some calculators use 0xFFFFFFFF).<br />
<br />
Further information regarding this can be found here:<br />
* SEGGER Knowledge Base: Explaining [[CRC]]<br />
* Wikipedia: https://en.wikipedia.org/wiki/Cyclic_redundancy_check#Standards_and_common_use (table entry for CRC-32)<br />
<br />
===CRC of current data file===<br />
When opening a data file in J-Flash ('''File -> Open...'''), J-Flash calculates and displays the<br />
CRC of the user data in this file.<br />
[[File:JFlash_FileCRC_LogWindow.png|thumb|left|CRC in Log Window]]<br />
<br clear=all><br />
The following steps are taken into consideration when calculating this CRC: <br />
# The CRC is calculated over all sectors which are selected in the current project<br>[[File:JFlash_FileCRC_SelectedSectors.png|thumb|left|CRC: selected sectors]]<br clear=all><br />
# Everything that is not covered by the data file (gaps in the data file, unused sectors etc.) which is opened, is assumed as ''0xFF'' during the CRC calculation.<br />
# The polynomial which is used for the CRC calculation is ''0xEDB88320''.<br />
===ELF file support===<br />
J-Flash has been tested with the output of the following compilers: GCC, Clang, ARM, IAR. Output of other compilers may be supported but is not guaranteed to be.<br />
<br />
=Support=<br />
The following chapter provides information about how to contact our support.<br />
<br />
==Troubleshooting==<br />
<br />
===General procedure===<br />
* Make sure the J-Link / Flasher is working as expected. See the troubleshooting article: [[Debug_Probes_-_J-Link_%26_J-Trace#Troubleshooting | J-Link / J-Trace / Flasher Troubleshooting]]<br />
* Ensure that the target hardware matches the project file settings. Pay special attention to the following aspects:<br />
** Init sequence<br />
** Clock speed<br />
** RAM address<br />
** Flash base address<br />
** MCU / Flash chip<br />
** Flash organization<br />
* The interface clock frequency depends on several factors, e.g. cable length, target board etc. Try setting the frequency to lower or higher values accordingly.<br />
* Make sure the flash memory is unlocked before programming or erasing.<br />
<br />
===Typical problems===<br />
<br />
====Failed to connect====<br />
''Meaning:''<br />
<br />
This error message is shown if any error occurs during the connection process.<br />
<br />
''Remedy:''<br />
<br />
First of all, make sure the target is actually connected to J-Link. Verify the correctness of<br />
the init sequence, check the JTAG speed, and ensure the correct flash type is selected.<br />
<br />
====Programming / Erasing failed====<br />
''Meaning:''<br />
<br />
The flash memory sector may be locked and programming or erasing the respective memory<br />
section fails therefore.<br />
<br />
''Remedy:''<br />
<br />
Make sure the memory sector is unlocked before programming or erasing. J-Flash provides<br />
a dedicated menu item for unlocking flash memory.<br />
<br />
====Timeout errors during programming====<br />
''Meaning:''<br />
<br />
A timeout occurs if the target is too slow during DCC communication or the target flash<br />
memory is too slow during programming.<br />
<br />
''Remedy:''<br />
<br />
Using smaller RAM block sizes may fix this problem.<br />
<br />
====Blank check failed====<br />
''Meaning:''<br />
<br />
The target memory was not empty during blank check.<br />
<br />
''Remedy:''<br />
<br />
Erase target memory.<br />
<br />
====RAM check failed====<br />
''Meaning:''<br />
<br />
No RAM found at the specified RAM location.<br />
<br />
''Remedy:''<br />
<br />
Make sure a correct RAM address is specified in the project settings. See section MCU Settings.<br />
<br />
====Unexpected core ID====<br />
''Meaning:''<br />
<br />
The specified CPU core ID does not match with the one read from the target CPU.<br />
<br />
''Remedy:''<br />
<br />
Ensure the specified core ID is correct for the used target CPU. See section MCU Settings for information about setting the core ID.<br />
<br />
====Unsupported flash type / bus width====<br />
<br />
''Meaning:''<br />
<br />
The target flash memory or the bus organization is not yet supported.<br />
<br />
''Remedy:''<br />
<br />
Inform us about the flash type you want to use. SEGGER is constantly adding support for new flash memory devices.<br />
<br />
====No matching RAMCode====<br />
<br />
''Meaning:''<br />
<br />
There is no programming algorithm available for the selected target memory type.<br />
<br />
''Remedy:''<br />
<br />
Inform us about the flash type you want to use. SEGGER is constantly adding support for new flash memory devices.<br />
<br />
==Contacting support==<br />
If you experience a J-Flash related problem and the advices from the sections above do<br />
not help you to solve it, you may contact our J-Flash support. In this case, please provide<br />
us with the following information:<br />
* A detailed description of the problem.<br />
* The relevant logfile and project file. In order to generate an expressive logfile, set the log level to “All messages” (see section Global Settings for information about changing the log level in J-Flash).<br />
* The relevant data file as a .hex or .mot file (if possible)<br />
* The processor and flash types used<br />
Once we received this information we will try our best to solve the problem for you.<br />
<br />
You can contact SEGGER directly via our support system: https://www.segger.com/ticket/.</div>JanBhttps://wiki.segger.com/index.php?title=UM08022_Flasher&diff=17171UM08022 Flasher2023-12-07T07:46:07Z<p>JanB: /* Patch file support */ removed newline in example</p>
<hr />
<div><!---<br />
General TBD:<br />
- LG: Right now - EVERYTHING<br />
===========================================<br />
--------------------[more specific, but on multiple locations]<br />
- check if all emphasis (bold, tt, blue, etc ) have made it into the new version<br />
- Add Information -> Additional information<br />
- use of the term free-of-charge utility/tool etc<br />
- check compliant to DocStandards_Rules.txt<br />
- Remove everything regarding to Kickstarter versions? eventually create a chapter Legacy -> Kickstarter version were available for hw version 5-x (200x-200x)...[..]<br />
- 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.<br />
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.<br />
- if week keep the IDE specific stuff in the manual, add Ozone, ES and J-Link Commander were no mentioned.<br />
- IDE specifics move into wiki confirmed by Alex<br />
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)<br />
- check all sections regarding licensing<br />
- Check compliance of J-Link emDocs with typographic conventions described in AboutThisDocument.emDoc. What should be altered? e.g. references<br />
- use uref at all (not blue)?<br />
- search and decide where to use \ref (ref with page number)<br />
- why is \ref (no single "option" \uref is more basic as \ref.....)<br />
- in text, use either \ref or \iref instead of \uref<br />
- in old manual, \H3 started on a new page (not per default, but set manually for api tables etc...)<br />
- move used old images and source files (visio etc) via svn (currently copied)<br />
--------------------[grammar / vocabulary discussion]<br />
- Product names<br />
-- Use of SEGGEPROBE in this document?<br />
- use license over licence<br />
- commandline or command-line?<br />
- toolchain or tool chain?<br />
- crossreference/cross-reference/cross reference?<br />
- overcurrent?<br />
- double words?<br />
- frontend?<br />
- Unit: Kbytes, KBytes, V, mV.... 9V or 9 V? Create rule in Vocabulary<br />
- baudrate or baud rate?<br />
- stackpointer or stack pointer<br />
- check where we should replace abbreviations with the long form (e.h. "milliseconds" instead of "ms")<br />
- config or configuration<br />
- filepointer or file pointer?<br />
--------------------[J-Link dep. specific]<br />
- J-Link command strings or J-Link Command strings or J-Link Command Strings<br />
- J-Link settings file or...<br />
- J-Link control panel or ......<br />
- J-Link script files or...<br />
---><br />
Flasher is a programming tool for microcontrollers with on-chip or external flash memory.<br />
Flasher is designed for programming flash targets with the J-Flash software or stand-alone.<br />
In addition to that Flasher can also be used as a regular J-Link. For more information about J-Link in general,<br />
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].<br />
<br />
<div class="toclimit-2"><br />
__TOC__<br />
</div><br />
<br />
== Flasher overview ==<br />
Flasher connects to a PC using the USB/Ethernet/RS232 interface (what host interfaces are available depends on the Flasher model),<br />
running Windows, Linux & MacOS. In stand-alone mode,<br />
Flasher can be driven by the start/stop button, or via the RS232 interface (handshake control or ASCII interface).<br />
Flasher always has a 20-pin connector, which target interfaces are supported depends on the Flasher model:<br />
* Flasher ARM: JTAG and SWD are supported.<br />
* Flasher RX: JTAG is supported. Flasher comes with additional 14-pin RX adapter<br />
* Flasher PPC: JTAG is supported. Flasher comes with additional 14-pin PPC adapter.<br />
* Flasher PRO: JTAG and SWD are supported.<br />
* Flasher Compact: JTAG and SWD are supported.<br />
<br />
=== Features of Flasher ARM/PPC/RX/PRO ===<br />
* Three boot modes: PC-based mode, stand-alone mode, file access mode<br />
* Stand-alone JTAG/SWD programmer (Once set up, Flasher can be controlled without the use of PC program)<br />
* No power supply required, powered through USB<br />
* Supports internal and external flash devices<br />
* 128 MB memory for storage of target program<br />
* Can be used as J-Link (emulator) with a download speed of up to 720 Kbytes/second<br />
* Data files can updated via USB/Ethernet (using the J-Flash software), via FTP, via RS232 or via the file access mode of Flasher<br />
<br />
{| class="seggertable"<br />
|-<br />
! Flasher model !! Supported cores !! Supported target interfaces !! Flash programming speed (depending on target hardware)<br />
|-<br />
| Flasher ARM || ARM7/ARM9/Cortex-M || JTAG, SWD || between 170 and 300 Kbytes/second<br />
|-<br />
| Flasher RX || Renesas RX610, RX621, RX62N, RX62T || JTAG || between 30-300 Kbytes/second<br />
|-<br />
| Flasher PPC || Power PC e200z0 || JTAG || up to 138 Kbytes/second<br />
|-<br />
| Flasher PRO || ARM7/ARM9/Cortex-M Renesas RX610, RX621, RX62N, RX62T Power PC e200z0 || JTAG, SWD || between 30-300 Kbytes/ second<br />
|-<br />
|}<br />
<br />
==== Features of Flasher Compact ====<br />
<br />
* Three boot modes: PC-based mode, stand-alone mode, file access mode<br />
* Stand-alone JTAG/SWD programmer (Once set up, Flasher can be controlled without the use of PC program)<br />
* No power supply required, powered through USB<br />
* Supports internal and external flash devices<br />
* 128 MB memory for storage of target program<br />
* Can be used as J-Link (emulator) with a download speed of up to 720 Kbytes/second<br />
* Data files can updated via USB/Ethernet (using the J-Flash software) or via the file access mode of Flasher<br />
<br />
{| class="seggertable"<br />
|-<br />
! Flasher model !! Supported cores !! Supported target interfaces !! Flash programming speed (depending on target hardware)<br />
|-<br />
| Flasher ARM || ARM7/ARM9/Cortex-M || JTAG, SWD || between 170 and 300 Kbytes/second<br />
|-<br />
| Flasher RX || Renesas RX610, RX621, RX62N, RX62T || JTAG || between 30-300 Kbytes/second<br />
|-<br />
| Flasher PPC || Power PC e200z0 || JTAG || up to 138 Kbytes/second<br />
|-<br />
| Flasher Compact || ARM7/ARM9/Cortex-M Renesas RX610, RX621, RX62N, RX62T Power PC e200z0 || JTAG, SWD || between 30-300 Kbytes/ second<br />
|-<br />
|}<br />
<br />
==== Features of Flasher Portable/Flasher Portable PLUS ====<br />
<br />
* Stand-alone in-circuit-programmer (Once set up, Flasher can be controlled without the use of a PC program)<br />
* Powered by an internal rechargeable battery (standard batteries for Flasher Portable), no Laptop or external power supply required.<br />
* Multiple firmware images can be stored on Flasher<br />
* 128 MB memory for storage of target program<br />
* Easy selection of image to be programmed, via button<br />
* Supported CPUs: ARM Cortex, Legacy ARM7/9, Renesas RX, Freescale PowerPC<br />
* Supports internal and external flash<br />
* Free software updates<ref name="legitimateOwned" />, 1 year of support<br />
* Data files can be updated via the file access mode functionality or via J-Flash<br />
* Programming speed between 30-300 Kbytes/second (actual speed depends on target hardware)<br />
{{Note|1=Ethernet and RS232 as host interface are not available for Flasher Portable}}<br />
<references><br />
<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.<br />
As a legitimate owner of a SEGGER Flasher, you can always download the latest software free of charge.<br />
Though not planned and not likely, we reserve the right to change this policy.<br />
Note that older models may not be supported by newer versions of the software.<br />
Typically, we support older models with new software at least 3 years after end of life.<br />
</ref><br />
</references><br />
<br />
{| class="seggertable"<br />
|-<br />
! Supported cores !! Supported target interfaces !! Flash programming speed (depending on target hardware)<br />
|-<br />
| ARM7/ARM9/Cortex-M || JTAG, SWD || between 30-300 Kbytes/second<br />
|-<br />
| Renesas RX610, RX621, RX62N, RX62T || JTAG || between 170 and 300 Kbytes/second<br />
|-<br />
| Power PC e200z0 || JTAG || up to 138 Kbytes/second<br />
|-<br />
|}<br />
<br />
==== Working environment ====<br />
<br />
'''General'''<br><br />
The Flasher can operate from a PC with an appropriate software like J-Flash or in stand-alone mode.<br />
<br />
'''Host System'''<br><br />
IBM PC/AT or compatible CPU: 486 (or better) with at least 128MB of RAM,<br />
running Windows, Linux & MacOS. It needs to have a USB, Ethernet or RS232 interface available for communication with Flasher.<br />
<br />
'''Power supply'''<br><br />
Flasher Portable: 3x standard AAA batteries or 5V DC, min. 100 mA via USB connector.<br />
<br />
Flasher Portable PLUS: internal rechargeable 680mAh Li-Ion battery, min. 100 mA via USB connector.<br />
<br />
Other Flashers: 5V DC, min. 100 mA via USB connector.<br />
<br />
'''Installing Flasher PC-software'''<br><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><br />
More information about the package you can find in the similar [[J-Link Software and Documentation Pack]].<br><br />
The package includes U-Flash and J-Flash, the main tools for flashing targets:<br />
* J-Flash : J-Flash User Guide ([https://wiki.segger.com/UM08003_JFlash UM08003_JFlash.pdf]).<br />
* U-Flash : U-Flash User Guide ([https://www.segger.com/downloads/flasher/UM08037.pdf UM08037_UniversalFlashLoader.pdf]).<br />
<br />
=== Specifications ===<br />
<br />
<br />
==== Specifications for Flasher ARM ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Windows, Linux & MacOS<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C<br />
|-<br />
| Storage Temperature || -20 °C ... +60 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
!colspan="100%"| Mechanical<br />
|-<br />
| Size (without cables) || 121mm x 66mm x 30mm<br />
|-<br />
| Weight (without cables) || 119g<br />
|-<br />
!colspan="100%"| Available interfaces<br />
|-<br />
| USB Host interface || USB 2.0, full speed<br />
|-<br />
| Ethernet Host interface || 10/100 MBit<br />
|-<br />
| RS232 Host interface || RS232 9-pin<br />
|-<br />
| Target interface || JTAG 20-pin (14-pin adapter available)<br />
|-<br />
!colspan="100%"| JTAG Interface, Electrical<br />
|-<br />
| Power Supply || USB powered, 100mA for Flasher ARM. 500 mA if target is powered by Flasher ARM<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| Target supply voltage || Supply voltage is 5V, max.<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6 <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Max. JTAG speed || up to 12MHz<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
===== Flasher ARM download speed =====<br />
<br />
The following table lists the Flasher ARM performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! ARM7 memory download<br />
|-<br />
| Flasher ARM || 720 Kbytes/s (12MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
<br />
==== Specifications for Flasher RX ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Windows, Linux & MacOS<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C<br />
|-<br />
| Storage Temperature || -20 °C ... +60 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
!colspan="100%"| Mechanical<br />
|-<br />
| Size (without cables) || 121mm x 66mm x 30mm<br />
|-<br />
| Weight (without cables) || 119g<br />
|-<br />
!colspan="100%"| Available interfaces<br />
|-<br />
| USB Host interface || USB 2.0, full speed<br />
|-<br />
| Ethernet Host interface || 10/100 MBit<br />
|-<br />
| RS232 Host interface || RS232 9-pin<br />
|-<br />
| Target interface || JTAG 20-pin (shipped with 14-pin adapter for Renesas RX)<br />
|-<br />
!colspan="100%"| JTAG Interface, Electrical<br />
|-<br />
| Power Supply || USB powered, 100mA for Flasher RX. 500 mA if target is powered by Flasher RX<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| 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)<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6 <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Max. JTAG speed || up to 12MHz<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
===== Flasher RX download speed =====<br />
<br />
The following table lists the Flasher RX performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! Flasher RX600 series memory download<br />
|-<br />
| Flasher RX || 720 Kbytes/s (12MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
<br />
==== Specifications for Flasher PPC ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Windows, Linux & MacOS<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C<br />
|-<br />
| Storage Temperature || -20 °C ... +60 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
!colspan="100%"| Mechanical<br />
|-<br />
| Size (without cables) || 121mm x 66mm x 30mm<br />
|-<br />
| Weight (without cables) || 119g<br />
|-<br />
!colspan="100%"| Available interfaces<br />
|-<br />
| USB Host interface || USB 2.0, full speed<br />
|-<br />
| Ethernet Host interface || 10/100 MBit<br />
|-<br />
| RS232 Host interface || RS232 9-pin<br />
|-<br />
| Target interface || JTAG 20-pin (shipped with 14-pin adapter for Renesas PPC)<br />
|-<br />
!colspan="100%"| JTAG Interface, Electrical<br />
|-<br />
| Power Supply || USB powered, 100mA for Flasher PPC. 500 mA if target is powered by Flasher PPC<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| Target supply voltage || Supply voltage is 5V, max.<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6 <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Max. JTAG speed || up to 12MHz<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
===== Flasher RX download speed =====<br />
<br />
The following table lists the Flasher PPC performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! Memory download<br />
|-<br />
| Flasher PPC || 530 Kbytes/s (8 MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
<br />
==== Specifications for Flasher PRO ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Windows, Linux & MacOS<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C<br />
|-<br />
| Storage Temperature || -20 °C ... +60 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
!colspan="100%"| Mechanical<br />
|-<br />
| Size (without cables) || 121mm x 66mm x 30mm<br />
|-<br />
| Weight (without cables) || 119g<br />
|-<br />
!colspan="100%"| Available interfaces<br />
|-<br />
| USB Host interface || USB 2.0, full speed<br />
|-<br />
| Ethernet Host interface || 10/100 MBit<br />
|-<br />
| RS232 Host interface || RS232 9-pin<br />
|-<br />
| Target interface || JTAG 20-pin (14-pin adapter available)<br />
|-<br />
!colspan="100%"| JTAG Interface, Electrical<br />
|-<br />
| Power Supply || USB powered, 100mA for Flasher PRO. 500 mA if target is powered by Flasher PRO<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| Target supply voltage || Supply voltage is 5V, max.<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6 <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Max. JTAG speed || up to 12MHz<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
<br />
===== Supported CPU cores =====<br />
<br />
The Flasher PRO supports the following CPU cores:<br />
<br />
'''ARM Cortex'''<br><br />
* Cortex-A5<br />
* Cortex-A8<br />
* Cortex-A9<br />
* Cortex-R4<br />
* Cortex-R5<br />
* Cortex-M0<br />
* Cortex-M0+<br />
* Cortex-M1<br />
* Cortex-M3<br />
* Cortex-M4<br />
<br />
'''ARM (legacy cores)'''<br><br />
* ARM720T<br />
* ARM7TDMI<br />
* ARM7TDMI-S<br />
* ARM920T<br />
* ARM922T<br />
* ARM926EJ-S<br />
* ARM946E-S<br />
* ARM966E-S<br />
* ARM1136JF-S<br />
* ARM1136J-S<br />
* ARM1156T2-S<br />
* ARM1156T2F-S<br />
* ARM1176JZ-S<br />
* ARM1176JZF<br />
* ARM1176JZF-S<br />
<br />
'''Renesas RX'''<br><br />
* RX111<br />
* RX210<br />
* RX220<br />
* RX21A<br />
* RX610<br />
* RX621<br />
* RX62G<br />
* RX62N<br />
* RX62T<br />
* RX630<br />
* RX631<br />
* RX63N<br />
* RX63T<br />
<br />
'''Freescale Power PC'''<br><br />
* e200z0<br />
<br />
===== Supported Target interfaces =====<br />
<br />
The Flasher PRO supports the following target interfaces:<br />
<br />
* JTAG<br />
* SWD<br />
* FINE<br />
* SPD<br />
<br />
===== Flasher PRO download speed =====<br />
<br />
The following table lists the Flasher PRO performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! ARM7 memory download<br />
|-<br />
| Flasher PRO || 720 Kbytes/s (12MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
<br />
==== Specifications for Flasher Compact ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Microsoft Windows (x86/x64)<br>Linux (x86/x64/Arm)<br>macOS (x86/Apple M1)<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C<br />
|-<br />
| Storage Temperature || -20 °C ... +65 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
| Size (without cables) || 70mm x 45mm x 18mm<br />
|-<br />
| Weight (without cables) || 40g<br />
|-<br />
| USB Host interface || USB 2.0 (Hi-Speed); Micro USB<br />
|-<br />
| Target interface || JTAG 20-pin (14-pin adapter available)<br />
|-<br />
| Power Supply || USB powered, 130mA (idle)<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| Target supply voltage || Supply voltage is 5V, max.<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
| Supported target interfaces || SPI, QSPI, 8051 C2, cJTAG, FINE, ICSP, IIC, ISP, JTAG, PDI, SPD, SWD, SWIM, UART, UPDI<br />
|-<br />
| Serial transfer rate between Flasher Compact and target || Up to 50 MHz (Depending on target interface)<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6 <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
===== Supported CPU cores =====<br />
<br />
The Flasher Compact supports the following CPU cores:<br />
'''ARM Cortex'''<br><br />
* Cortex-A5<br />
* Cortex-A8<br />
* Cortex-A9<br />
* Cortex-R4<br />
* Cortex-R5<br />
* Cortex-M0<br />
* Cortex-M0+<br />
* Cortex-M1<br />
* Cortex-M3<br />
* Cortex-M4<br />
<br />
'''ARM (legacy cores)'''<br><br />
* ARM720T<br />
* ARM7TDMI<br />
* ARM7TDMI-S<br />
* ARM920T<br />
* ARM922T<br />
* ARM926EJ-S<br />
* ARM946E-S<br />
* ARM966E-S<br />
* ARM1136JF-S<br />
* ARM1136J-S<br />
* ARM1156T2-S<br />
* ARM1156T2F-S<br />
* ARM1176JZ-S<br />
* ARM1176JZF<br />
* ARM1176JZF-S<br />
<br />
'''Renesas RX'''<br><br />
* RX111<br />
* RX210<br />
* RX220<br />
* RX21A<br />
* RX610<br />
* RX621<br />
* RX62G<br />
* RX62N<br />
* RX62T<br />
* RX630<br />
* RX631<br />
* RX63N<br />
* RX63T<br />
<br />
'''Freescale Power PC'''<br><br />
* e200z0<br />
<br />
===== Flasher Compact download speed =====<br />
<br />
The following table lists the Flasher Compact performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! ARM7 memory download<br />
|-<br />
| Flasher Compact || 720 Kbytes/s (12MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
<br />
==== Specifications for Flasher Portable PLUS ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Windows, Linux & MacOS<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C (normal operation)<br>+5 °C ... +45 °C (battery charging)<br />
|-<br />
| Storage Temperature || -20 °C ... +45 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
| 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)<br />
|-<br />
| Charging via USB || 70 minutes (at 1A charging current)<br />
|-<br />
!colspan="100%"| Mechanical<br />
|-<br />
| Size (without cables) || 126mm x 70mm x 28mm<br />
|-<br />
| Weight (without cables) || 140g<br />
|-<br />
!colspan="100%"| Available interfaces<br />
|-<br />
| USB Host interface || USB 2.0<br />
|-<br />
| Target interface || Standard 20-pin 0.1" connector (Adapters available).<br />
|-<br />
!colspan="100%"| Target Interface, Electrical<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| Target supply voltage || Supply voltage is 4.5V, max. (depends on the current battery voltage).<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6 <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Max. JTAG speed || up to 12MHz<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
===== Supported CPU cores =====<br />
<br />
The Flasher Portable PLUS supports the following CPU cores:<br />
<br />
'''ARM Cortex'''<br><br />
* Cortex-A5<br />
* Cortex-A8<br />
* Cortex-A9<br />
* Cortex-R4<br />
* Cortex-R5<br />
* Cortex-M0<br />
* Cortex-M0+<br />
* Cortex-M1<br />
* Cortex-M3<br />
* Cortex-M4<br />
<br />
'''ARM (legacy cores)'''<br><br />
* ARM720T<br />
* ARM7TDMI<br />
* ARM7TDMI-S<br />
* ARM920T<br />
* ARM922T<br />
* ARM926EJ-S<br />
* ARM946E-S<br />
* ARM966E-S<br />
* ARM1136JF-S<br />
* ARM1136J-S<br />
* ARM1156T2-S<br />
* ARM1156T2F-S<br />
* ARM1176JZ-S<br />
* ARM1176JZF<br />
* ARM1176JZF-S<br />
<br />
'''Renesas RX'''<br><br />
* RX111<br />
* RX210<br />
* RX220<br />
* RX21A<br />
* RX610<br />
* RX621<br />
* RX62G<br />
* RX62N<br />
* RX62T<br />
* RX630<br />
* RX631<br />
* RX63N<br />
* RX63T<br />
<br />
'''Freescale Power PC'''<br><br />
* e200z0<br />
<br />
===== Supported Target interfaces =====<br />
<br />
The Flasher Portable PLUS supports the following target interfaces:<br />
* JTAG<br />
* SWD<br />
* FINE<br />
* SPD<br />
<br />
===== Flasher Portable PLUS download speed =====<br />
<br />
The following table lists the Flasher Portable PLUS performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! ARM7 memory download<br />
|-<br />
| Flasher PRO || 720 Kbytes/s (12MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
<br />
==== Specifications for Flasher Portable ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Windows, Linux & MacOS<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C<br />
|-<br />
| Storage Temperature || -20 °C ... +65 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
| Power Supply || a) USB powered, 100mA for Flasher Portable. 500 mA if target is powered by Flasher Portable<br>b) Batteries powered (3xAAA)<br />
|-<br />
!colspan="100%"| Mechanical<br />
|-<br />
| Size (without cables) || 130mm x 65mm x 25mm<br />
|-<br />
| Weight (without cables) || 120g<br />
|-<br />
!colspan="100%"| Available interfaces<br />
|-<br />
| USB Host interface || USB 2.0<br />
|-<br />
| Target interface || Standard 20-pin 0.1" connector (Adapters available).<br />
|-<br />
!colspan="100%"| Target Interface, Electrical<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| Target supply voltage || Supply voltage is 4.5V, max. (depends on the current battery voltage).<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6V <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Max. JTAG speed || up to 12MHz<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
===== Supported CPU cores =====<br />
<br />
The Flasher Portable supports the following CPU cores:<br />
<br />
'''ARM Cortex'''<br><br />
* Cortex-A5<br />
* Cortex-A8<br />
* Cortex-A9<br />
* Cortex-R4<br />
* Cortex-R5<br />
* Cortex-M0<br />
* Cortex-M0+<br />
* Cortex-M1<br />
* Cortex-M3<br />
* Cortex-M4<br />
<br />
'''ARM (legacy cores)'''<br><br />
* ARM720T<br />
* ARM7TDMI<br />
* ARM7TDMI-S<br />
* ARM920T<br />
* ARM922T<br />
* ARM926EJ-S<br />
* ARM946E-S<br />
* ARM966E-S<br />
* ARM1136JF-S<br />
* ARM1136J-S<br />
* ARM1156T2-S<br />
* ARM1156T2F-S<br />
* ARM1176JZ-S<br />
* ARM1176JZF<br />
* ARM1176JZF-S<br />
<br />
'''Renesas RX'''<br><br />
* RX111<br />
* RX210<br />
* RX220<br />
* RX21A<br />
* RX610<br />
* RX621<br />
* RX62G<br />
* RX62N<br />
* RX62T<br />
* RX630<br />
* RX631<br />
* RX63N<br />
* RX63T<br />
<br />
'''Freescale Power PC'''<br><br />
* e200z0<br />
<br />
===== Supported Target interfaces =====<br />
<br />
The Flasher Portable supports the following target interfaces:<br />
<br />
* JTAG<br />
* SWD<br />
* FINE<br />
* SPD<br />
<br />
===== Flasher Portable download speed =====<br />
<br />
The following table lists the Flasher Portable performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! ARM7 memory download<br />
|-<br />
| Flasher PRO || 720 Kbytes/s (12MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
== Working with Flasher ==<br />
<br />
This chapter describes functionality and how to use Flasher.<br />
<br />
=== Flasher Portable PLUS ===<br />
<br />
The Flasher Portable PLUS is a portable version of SEGGERs Flasher family,<br />
which has been designed to fill the need of an extremely portable, production grade,<br />
Flash programmer used for in-field firmware updates. No need to be tethered to an outlet,<br />
it is powered by an integrated Li-Ion cell (680mAh).<br />
The Flasher Portable PLUS programs flash targets in stand-alone mode or via J-Flash PC software.<br><br />
<br />
Furthermore the Flasher Portable PLUS allows the user to select between eight data images to be programmed.<br />
The images can be easily selected by using the SEL button on the front of the housing.<br />
For more information about support for multiple images, please refer to [[#Multiple File Support | Multiple File Support]].<br><br />
For setup and configuration purposes, the Flasher Portable PLUS connects to a PC via USB interface,<br />
running Windows, Linux & MacOS and has a built-in standard 20-pin J-Link target connector.<br><br />
<br />
{{Note|1=Ethernet and RS232 as host interface are not available for the Flasher Portable PLUS.}}<br />
<br />
==== Housing & Buttons ====<br />
<br />
The Flasher Portable PLUS comes with a display, which is for example used to represent the status of an ongoing flash progress.<br />
Furthermore, there are three buttons which allow the user to control Flasher Portable PLUS.<br />
For a detailed description of the functions, take a look at the table below:<br />
<br />
<!-- LG xxxxxx edit image with labels for buttons? (Is this actually necessary? Buttons are basically self-explanatory...) --><br />
[[File:Flasher_Portable_PLUS.png | 500px]]<br />
<br />
{| class="seggertable"<br />
|-<br />
! Button !! Description<br />
|-<br />
| Program || Start programming process with the currently selected image.<br />
|-<br />
| Select image || Select the image to be programmed next time the Program button is pressed.<br />
|-<br />
| 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.<br />
|-<br />
|}<br />
<br />
==== Configuration ====<br />
<br />
The Flasher Portable PLUS has some configuration options the other Flashers do not have.<br />
{| class="seggertable"<br />
|-<br />
! Option !! Description !! Value range !! Default value<br />
|-<br />
| AutoPowerOffOnIdle || Specifies the time interval after which the Flasher Portable will turn off without any user action || 1 to 3600 || 60<br />
|-<br />
| ShowDatCRCAfterProgramming || Activates displaying the data file CRC after the programming in the pop up message || 0 = inactive, 1 = active || 0<br />
|-<br />
|}<br />
<br />
If the <tt>Flasher.ini</tt> does not contain a <tt>[Config]</tt> section with the configuration option, the default value is used.<br />
<br />
'''Example:'''<br><br />
This sample will show the data file CRC after the programming and the auto power of is set to five minutes (=300 seconds).<br />
<br />
<source lang="c"><br />
[CONFIG]<br />
AutoPowerOffOnIdle = "300"<br />
ShowDatCRCAfterProgramming = "1"<br />
</source><br />
<br />
=== Flasher Portable ===<br />
<br />
The Flasher Portable is a portable version of SEGGERs Flasher family, which has been designed to fill the need of an extremely portable,<br />
production grade, Flash programmer used for in-field firmware updates. No need to be tethered to an outlet,<br />
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><br />
<br />
Furthermore the Flasher Portable allows the user to select between four data images to be programmed.<br />
The images can be easily selected by using the arrow buttons on the front of the housing.<br />
For more information about support for multiple images, please refer to [[#Multiple File Support | Multiple File Support]].<br><br />
For setup and configuration purposes, the Flasher Portable connects to a PC via USB interface,<br />
running Windows, Linux & MacOS and has a built-in standard 20-pin J-Link target connector.<br><br />
<br />
{{Note|1=Ethernet and RS232 as host interface are not available for the Flasher Portable.}}<br />
<br />
==== Housing & Buttons ====<br />
<br />
The Flasher Portable comes with several leds which are for example used to represent the status of an ongoing flash progress.<br />
Furthermore, there are three buttons which allow the user to control Flasher Portable.<br />
For a detailed description of the functions, take a look at the two tables below:<br />
<br />
<!-- LG xxxxxx edit image with labels for buttons?--><br />
[[File:Flasher_Portable_Top_2.png | 500px]]<br />
<br />
{| class="seggertable"<br />
|-<br />
! LED !! Description<br />
|-<br />
| ACTIVE || GREEN. Blinks while the Flasher Portable is busy / performs operations on the target.<br />
|-<br />
| PASS/FAIL || GREEN/RED. Indicates, if the last flashing cycle was successful.<br />
<ul><br />
<li> GREEN: Flashing cycle completed successfully.</li><br />
<li> RED: Flashing cycle completed with error.</li><br />
</ul><br />
|-<br />
| 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]].<br />
|-<br />
| POWER || GREEN: Indicates if Flasher is currently powered. Blinks while Flasher Portable tries to enumerate via USB.<br />
|-<br />
| 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.<br />
|-<br />
|}<br />
<br />
{| class="seggertable"<br />
|-<br />
! Button !! Description<br />
|-<br />
| Program || Start programming process with the currently selected image.<br />
|-<br />
| Select image || Select the image to be programmed next time the <tt>Program</tt> button is pressed.<br />
|-<br />
| 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<br />
|-<br />
|}<br />
<br />
=== File system ===<br />
<br />
The Flasher supports 8.3 filenames only (8 characters filename, 3 characters file extension).<br />
Using longer filenames may result in incorrect operation. Integrated functions,<br />
like the FTP server or the terminal server, will refuse writing files with long filenames.<br />
<br />
=== Setting up the IP interface ===<br />
<br />
Setting up the IP interface<br />
Some of the Flasher models come with an additional Ethernet interface to communicate with the host system.<br />
These Flashers also come with a built-in webserver which allows some basic setup of the emulator,<br />
e.g. configuring a default gateway which allows using it even in large intranets. For more information,<br />
please refer to [[#TCP Services | TCP Services]].<br />
<br />
==== Connecting the first time ====<br />
<br />
When connecting Flasher the first time, it attempts to acquire an IP address via DHCP.<br />
The recommended way for finding out which IP address has been assigned to Flasher is, to use the J-Link Configurator.<br />
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.<br />
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''.<br />
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,<br />
please refer to ''UM08001, J-Link / J-Trace User Guide'', chapter ''Setup'', section ''Setting up the IP interface''.<br />
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]].<br />
<br />
=== Operating modes ===<br />
<br />
All Flashers except the Flasher ATE are able to boot in 3 different modes:<br />
<br />
* PC-based mode<br />
* Stand-alone mode<br />
* File access mode<br />
<br />
{{Note|1=The Flasher ATE only supports the stand-alone mode.}}<br />
<br />
'''Definition PC-based mode'''<br><br />
Flasher is connected to a PC via USB/Ethernet and controlled by a PC application (J-Flash).<br />
If there is an RS232 connection to a PC, does not have any influence on if PC-based mode is entered or not.<br />
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, ...)<br />
<br />
'''Definition Stand-alone mode'''<br><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.<br />
<br />
'''Definition file access mode'''<br><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.<br />
In this mode, Flasher enumerates as a mass storage device (like an USB Stick) at the host PC.<br />
In this mode, configuration + data files can be manually placed on the Flasher and the Flasher logfile can be read out.<br />
If you are using a self-powered Flasher such as the Flasher Portable Plus, the Flasher must be turned off before connecting it.<br />
<br />
==== PC-based mode ====<br />
If you want to use Flasher for the first time you need to install the J-Link software and documentation package.<br />
After installation, connect Flasher to the host PC via USB or Ethernet.<br />
For more information about how to install the J-Link software and documentation package please refer to [[J-Link Software and Documentation Pack]].<br />
<br />
===== Connecting the target system =====<br />
<br />
'''Power-on sequence'''<br><br />
In general, Flasher should be powered on before connecting it with the target device.<br />
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.<br />
Power-on the device after you connected Flasher to it. Flasher will boot in "PC-based mode".<br />
<br />
'''Verifying target device connection with J-Link.exe'''<br><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.<br />
Then start the J-Link command line tool <tt>JLink.exe</tt>,<br />
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.<br />
The screenshot below shows the output of <tt>JLink.exe</tt>.<br />
<br />
[[File:flasher_jlinkmode.gif]]<br />
<br />
===== LED status indicators =====<br />
<br />
In PC-based mode, there are also certain LED status codes defined:<br />
<br />
{| class="seggertable"<br />
|-<br />
! # !! Status of LED !! Meaning<br />
|-<br />
| 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.<br />
|-<br />
| 0 || GREEN<br>constant || Flasher enumeration process is complete and it is ready to be controlled by a PC application.<br />
|-<br />
|}<br />
<br />
==== Stand-alone mode ====<br />
<br />
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]].<br />
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).<br />
In the "stand-alone mode" Flasher can be used as a stand-alone flash programmer.<br><br />
<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]].}}<br />
<br />
===== LED status indicators =====<br />
Progress and result of an operation is indicated by Flasher's LEDs. The behavior is different for J-Link and stand-alone mode.<br />
For a definition of the different modes, please refer to [[#Operating modes | Operating modes]].<br />
The following table describes the behavior of the LEDs in stand-alone mode.<br />
<br />
{| class="seggertable"<br />
|-<br />
! # !! Status of LED !! Meaning<br />
|-<br />
| 0 || GREEN<br>constant || Flasher waits for a start trigger to perform an operation in stand-alone mode.<br />
|-<br />
| 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><br />
|-<br />
| 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.<br />
|-<br />
|}<br />
Older Flasher models have a different behavior.<br />
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:<br />
<br />
* 1621xxxxx (Flasher ARM V2)<br />
* 1630xxxxx (Flasher ARM V3)<br />
* 4210xxxxx (Flasher PPC V1)<br />
* 4110xxxxx (Flasher RX V1)<br />
<br />
{| class="seggertable"<br />
|-<br />
! # !! Status of LED !! Meaning<br />
|-<br />
| 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.<br />
|-<br />
| 1 || GREEN<br>constant || Connect to target and perform init sequence.<br />
|-<br />
| 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><br />
|-<br />
| 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.<br />
|-<br />
|}<br />
<br />
==== File access mode ====<br />
<br />
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".<br />
If you are using a self-powered Flasher such as the Flasher Portable Plus, the Flasher must be turned off before connecting it.<br />
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.<br />
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>.<br />
<br />
[[File:flasher_mode_msd.gif]]<br />
<br />
<tt>FLASHER.CFG</tt> contains the configuration settings for programming the target device and <tt>FLASHER.DAT</tt> contains the data to be programmed.<br />
<tt>FLASHER.LOG</tt> contains all logging information about the commands, performed in stand-alone mode.<br />
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><br />
<br />
Currently, J-Flash does not support to configure Flasher for automated serial number programming.<br><br />
<br />
If you want to configure multiple Flasher for the same target you do not have to use J-Flash all the time.<br />
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".<br />
<br />
=== Setting up Flasher for stand-alone mode ===<br />
{{Note| All Options how to set up the Flasher for stand-alone mode you can find here: https://wiki.segger.com/Flasher/Download_project_to_Flasher}}<br />
<br />
In order to set up Flasher for the stand-alone mode it needs to be configured once using the J-Flash software.<br />
For more information about J-Flash, please refer to the ''J-Flash User Guide''.<br><br />
<br />
After starting J-Flash, open the appropriate J-Flash project for the target Flasher shall be configured for, by selecting '''File''' -> '''Open Project'''.<br />
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><br />
<br />
After the appropriate project has been opened / created, the data file which shall be programmed needs to be loaded, by selecting '''File''' -> '''Open'''.<br />
After this J-Flash should look like in the screenshot below.<br />
<br />
[[File:jflash_projectfile_datafile.gif]]<br />
<br />
Before downloading the configuration (project) and program data (data file) to Flasher, the connection type (USB/IP) needs to be selected in the project.<br />
These settings are also saved on a per-project basis, so this also only needs to be setup once per J-Flash project.<br />
The connection dialog is opened by clicking '''Options''' -> '''Project settings''' -> '''General'''.<br />
<br />
[[File:jflash_connection_dialog.gif]]<br />
<br />
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.<br />
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.<br />
The user then can simply select the Flash he wants to download the configuration to.<br />
<br />
[[File:EmuSelectionDialog.gif]]<br />
<br />
In order to download the configuration and program data to the Flasher, simply select '''File''' -> '''Download config & data file to Flasher'''.<br />
<br />
[[File:jflash_download_to_emul.gif]]<br />
<br />
The J-Flash log window indicates that the download to the emulator was successful.<br />
<br />
[[File:jflash_download_to_emu_succ.gif]]<br />
<br />
From now on, Flasher can be used in stand-alone mode (without host PC interaction) for stand-alone programming.<br />
<br />
==== Preparing for stand-alone operation manually ====<br />
<br />
As an alternative, J-Flash can also be used to save config and data file to a hard drive.<br><br />
<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,<br />
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.<br />
<br />
'''Creating config and data files'''<br><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><br />
<br />
For some devices, additional files (*.PEX) are needed.<br />
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.<br />
<br />
'''About *.PEX files'''<br><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,<br />
the following needs to be taken care of:<br><br />
<br />
For some devices, special connect, reset etc. sequences are necessary which are stored in so-called *.PEX files on the Flasher.<br><br />
<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><br />
<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><br />
The *.PEX files need to be placed in a subdirectory with the same name as the corresponding *.cfg file.<br />
J-Flash creates a directory with the correct name automatically when a config file is created.<br><br />
<br />
Example:<br><br />
<br />
MyConf0 is a project for a device that requires a *.PEX file for connect.<br><br />
MyConf1 is a project for a device that requires no *.PEX file at all.<br />
<br />
[[File:PEX_File_Flasher.png]]<br />
<br />
=== Universal Flash Loader mode ===<br />
<br />
As an alternative to the stand-alone mode, configured via J-Flash, there is the Universal Flash Loader mode.<br />
While the normal stand-alone mode relies on using the debug interface of the device, the Universal Flash Loader<br />
mode uses device or vendor specific programming interfaces and protocols and therefore it is independent of the<br />
CPU core.<br><br />
<br />
The Universal Flash Loader is available for the following Flasher models:<br />
* Flasher PRO<br />
* Flasher Compact<br />
* Flasher Portable PLUS<br />
<br />
For some of the supported devices, SEGGER offers specific adapters.<br />
<br />
==== Preparing manually ====<br />
<br />
The Universal Flash Loader uses an configuration file (*.UNI), a device specific flash programming algorithm (*.PEX) and a data file (*.DAT).<br />
<br />
===== Configuration =====<br />
<br />
The configuration file basically is split into three parts.<br />
The first part, the section [DEVICE], controls the generic behavior of the Universal Flash Loader.<br />
It specifies which protocol driver and data file to use. It allows enabling and configuring target power<br />
and it defines which actions to perform.<br />
The second part consists of one or more [BANKx] sections, which contain information about the memories.<br />
The third part, the section [CONFIG], includes configuration settings for the protocol driver.<br><br />
<br />
An .UNI file might look as follows:<br><br />
<br />
<source lang="c"><br />
[OPTIONS]<br />
TargetPower = "0"<br />
ChipErase = "0"<br />
<br />
[TASKS]<br />
CheckBlank = "1"<br />
Erase = "1"<br />
Program = "1"<br />
Verify = "1"<br />
Secure = "1"<br />
<br />
[DEVICE]<br />
Algo = "RL78.PEX"<br />
Data = "ALL_6k.dat"<br />
<br />
[BANK0]<br />
; Code Flash<br />
Base = "0x00000000"<br />
Size = "0x00004000"<br />
Sect = "0x00000400"<br />
<br />
[BANK1]<br />
; Data Flash<br />
Base = "0x000F1000"<br />
Size = "0x00000800"<br />
Sect = "0x00000400"<br />
<br />
[CONFIG]<br />
BaudRate = "1000000"<br />
ClearConfigOnConnect = "0x00"<br />
Security = "0xFF"<br />
ShieldStart = "0x0000"<br />
ShieldEnd = "0x000F"<br />
</source><br />
<br />
'''[OPTIONS]'''<br><br />
'''TargetPower'''<br><br />
If set to a value >0, power is applied to the target.<br />
The value defines the delay (in ms) after enabling the target power supply and before starting to communicate with the target.<br />
<br />
'''ChipErase'''<br><br />
If set to 1, the chip erase function is called for erasing the chip.<br><br />
{{Note|1=Do not enable this setting if the flash programming algorithm does not support chip erase.}}<br />
<br />
'''[TASKS]'''<br><br />
'''CheckBlank'''<br><br />
Defines if a blank check should be performed before erasing a sector.<br />
<br />
'''Erase'''<br><br />
Defines if the sector should be erased before programming.<br />
<br />
'''Program'''<br><br />
Defines if the sector should be programmed.<br />
<br />
'''Verify'''<br><br />
Defines if the sector should be verified after programming.<br />
<br />
'''Secure'''<br><br />
Defines if the device should be secured or protected against read-out after verifying.<br />
<br />
'''[DEVICE]'''<br><br />
'''Algo'''<br><br />
File name of the flash programming algorithm. This file is provided by SEGGER and will typically support a series of devices.<br />
<br />
'''Data'''<br><br />
File name of the data file to program. The Flasher only supports the Flasher .dat file format.<br />
Flasher .dat files can be generated by J-Flash or Universal Flash Loader and offer high performance together with high flexibility.<br />
<br />
'''[BANKx]'''<br><br />
x blocks with configuration data for the flash banks. All three parameters (Base, Size and Sect) are mandatory.<br />
<br />
'''Base'''<br><br />
Base address of the flash bank.<br />
<br />
'''Size'''<br><br />
Total size of the flash bank.<br />
<br />
'''Sect'''<br><br />
Sector size of the flash bank.<br />
<br />
'''[CONFIG]'''<br><br />
This section includes specific configuration data for the flash programming algorithm.<br><br />
There are no general parameters.<br />
<br />
{{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. }}<br />
<br />
==== Preparing using the PC utility ====<br />
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.<br />
<br />
[[File:Universal Flash Loader.png]]<br />
<br />
The Universal Flash Loader Configurator comes with a large list of devices and flash programming algorithms. If you are going to<br />
use a device from one of the supported families which currently is not available in the utility, feel free to contact the support.<br />
<br />
=== Multiple File Support ===<br />
<br />
It is also possible to have multiple data files and config files on Flasher, to make Flasher more easy to use in production environment.<br />
To choose the correct configuration file and data file pair, a <tt>FLASHER.INI</tt> file is used.<br />
This init file contains a <tt>[FILES]</tt> section which describes which configuration file and which data file should be used for programming.<br />
A sample content of a FLASHER.INI file is shown below:<br><br />
<br />
<source><br />
[FILES]<br />
DataFile = "Flasher1.dat"<br />
ConfigFile = "Flasher1.cfg"<br />
</source><br />
<br />
Using this method all configuration files and data files which are used in the production only have to be downloaded once.<br />
From there on a configuration file / data file pair can be switched by simply replacing the <tt>FLASHER.INI</tt> by a new one,<br />
which contains the new descriptions for the configuration file and data file. The <tt>FLASHER.INI</tt> can be replaced in two ways:<br />
<ol><br />
<li>Boot Flasher in file access mode in order to replace the <tt>FLASHER.INI</tt></li><br />
<li><br />
If Flasher is already integrated into the production line, runs in stand-alone mode and can not be booted in other mode:<br />
Use the file I/O commands provided by the ASCII interface of Flasher, to replace the <tt>FLASHER.INI</tt>.<br />
For more information about the file I/O commands, please refer to [[#File I/O commands | File I/O commands]].<br />
</li><br />
</ol><br />
{{Note|1=Flasher supports 8.3 filenames only (8 characters filename, 3 characters file extension). Using longer filenames may result in incorrect operation.}}<br />
<br />
==== Flasher Portable specifics ====<br />
<br />
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><br />
<br />
Which config / data file pair is used for which image selection position is determined by the contents of the FLASHER.INI.<br />
For this, the FLASHER.INI contents in the <tt>[FILES]</tt> section have been extended.<br />
The sample below shows how to enable the user to select between four different images on the Flasher portable via the select / arrow button:<br />
<br />
<source><br />
[FILES]<br />
DataFile = "First.dat"<br />
ConfigFile = "First.cfg"<br />
DataFile1 = "Second.dat"<br />
ConfigFile1 = "Second.cfg"<br />
DataFile2 = "Third.dat"<br />
ConfigFile2 = "Third.cfg"<br />
DataFile3 = "Fourth.dat"<br />
ConfigFile3 = "Fourth.cfg"<br />
</source><br />
<br />
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.<br />
From there on, switching between the files can be done by simply using the selection button of Flasher Portable.<br />
<br />
===== Example =====<br />
<br />
1 Target, 2 Datafiles (e.g. boot loader und application) --> same configuration file (*.CFG) but different data files (*.DAT) should be used.<br><br />
<br />
* Open pre-configured J-Flash project<br />
* File -> Save Flasher config file ... (DEFAULT.CFG)<br />
* Open data file 1 (boot loader)<br />
* File -> Save Flasher data file ... (BOOT.DAT)<br />
* Open data file 2 (application)<br />
* File -> Save Flasher data file ... (APP.DAT)<br />
* Create the a FLASHER.INI file (content see below)<br />
* Connect the Flasher in file access mode to the PC<br />
* Copy DEFAULT.CFG, BOOT.DAT, APP.DAT and FLASHER.INI on the Flasher<br />
<br />
FLASHER.INI content:<br><br />
<br />
<source><br />
[FILES]<br />
DataFile = "BOOT.DAT"<br />
ConfigFile = "DEFAULT.CFG"<br />
DataFile1 = "APP.DAT"<br />
ConfigFile1 = "DEFAULT.CFG"<br />
</source><br />
<br />
==== Flasher Portable PLUS specifics ====<br />
<br />
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><br />
<br />
Which config / data file pair is used for which image selection position is determined by the contents of the FLASHER.INI.<br />
For this, the FLASHER.INI may contain several <tt>[BATCH]</tt> sections.<br />
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:<br />
<br />
<source><br />
[BATCH]<br />
DataFile = "First.dat"<br />
ConfigFile = "First.cfg"<br />
[BATCH1]<br />
DataFile = "Second.dat"<br />
ConfigFile = "Second.cfg"<br />
[BATCH2]<br />
DataFile = "Third.dat"<br />
ConfigFile = "Third.cfg"<br />
[BATCH7]<br />
DataFile = "Proj_8.dat"<br />
ConfigFile = "Proj_8.cfg"<br />
[BATCH15]<br />
DataFile = "Proj_16.dat"<br />
ConfigFile = "Proj_16.cfg"<br />
</source><br />
<br />
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.<br />
From there on, switching between the files can be done by simply using the selection button of Flasher Portable PLUS.<br />
<br />
Please also consider the chapter [[#Batch Programming in stand-alone mode | Batch Programming in stand-alone mode]].<br />
<br />
{{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.}}<br />
{{Note|1=You may have gaps in the list. The missing entries will be skipped when selecting the next configuration.}}<br />
{{Note|1=The <tt>[Files]</tt> section is supported by the Flasher Portable PLUS, too. But the number of configuration is limited to four.}}<br />
<br />
===== Example =====<br />
<br />
1 Target, 2 Datafiles (e.g. boot loader und application) --> same configuration file (*.CFG) but different data files (*.DAT) should be used.<br><br />
<br />
* Open pre-configured J-Flash project<br />
* File -> Save Flasher config file ... (DEFAULT.CFG)<br />
* Open data file 1 (boot loader)<br />
* File -> Save Flasher data file ... (BOOT.DAT)<br />
* Open data file 2 (application)<br />
* File -> Save Flasher data file ... (APP.DAT)<br />
* Create the a FLASHER.INI file (content see below)<br />
* Connect the Flasher in file access mode to the PC<br />
* Copy DEFAULT.CFG, BOOT.DAT, APP.DAT and FLASHER.INI on the Flasher<br />
<br />
FLASHER.INI content:<br><br />
<br />
<source><br />
[BATCH]<br />
DataFile = "BOOT.DAT"<br />
ConfigFile = "DEFAULT.CFG"<br />
DisplayName = "Bootloader"<br />
[BATCH1]<br />
DataFile = "APP.DAT"<br />
ConfigFile = "DEFAULT.CFG"<br />
DisplayName = "Application"<br />
[BATCH2]<br />
DataFile = "BOOT.DAT"<br />
ConfigFile = "DEFAULT.CFG"<br />
DataFile1 = "APP.DAT"<br />
ConfigFile1 = "DEFAULT.CFG"<br />
DisplayName = "BL and App"<br />
</source><br />
<br />
=== Custom labels ===<br />
<br />
Flasher supports to assign custom labels to configurations. This allows to specify easy to remember names for configurations that are stored on the Flasher.<br />
<br />
==== Hardware and software requirements ====<br />
This feature is supported by the following models:<br />
* Flasher Portable PLUS<br />
<br />
This feature is supported since V6.30e of the software package and firmware<br />
<br />
==== Assigning labels ====<br />
The configuration and data file pairs are specified in the <tt>FLASHER.INI</tt> file:<br />
<source><br />
[FILES]<br />
DataFile = "IMAGE0.dat"<br />
ConfigFile = "IMAGE0.cfg"<br />
DataFile1 = "IMAGE1.dat"<br />
ConfigFile1 = "IMAGE1.cfg"<br />
</source><br />
<br />
By default, Flasher will show the names of the configuration and data file:<br />
[[File:FW1_smartwatch_nolabel.png]]<br />
[[File:FW2_smart_meter_nolabel.png]]<br />
<br />
By adding <tt>DisplayName</tt>, <tt>DisplayName1</tt>, ... keys to the <tt>FLASHER.INI</tt>, a custom label can be shown instead:<br />
<source><br />
[FILES]<br />
DisplayName = "FW smartwatch"<br />
DataFile = "IMAGE0.dat"<br />
ConfigFile = "IMAGE0.cfg"<br />
DisplayName1 = "FW smart meter"<br />
DataFile1 = "IMAGE1.dat"<br />
ConfigFile1 = "IMAGE1.cfg"<br />
</source><br />
<br />
The images will now be shown as follows:<br />
[[File:FW1_smartwatch_label.png]]<br />
[[File:FW2_smart_meter_label.png]]<br />
<br />
==== Considerations ====<br />
* 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.<br />
<br />
=== Programming multiple targets ===<br />
<br />
It is possible to program multiple targets which are located in a JTAG chain.<br />
The targets will be programmed each with a configuration and a data file.<br><br />
The configuration for the desired target must be selected before it can be programmed,<br />
this can be done with the <tt>#SELECT</tt> command.<br />
For more information how to use the <tt>#SELECT</tt> command please refer to the [[#ASCII_command_interface|ASCII command interface]].<br />
<br />
'''Example'''<br><br />
Three devices should be programmed.<br><br />
<br />
JTAG Chain: ''TDI'' --> ''Device2'' --> ''Device1'' --> ''Device0'' --> ''TDO''<br><br />
<br />
Three configurations would be stored on the flasher:<br><br />
<br />
Config 0: Configured to program Device0 (DEVICE0.CFG, DEVICE0.DAT)<br><br />
Config 1: Configured to program Device1 (DEVICE1.CFG, DEVICE1.DAT)<br><br />
Config 2: Configured to program Device2 (DEVICE2.CFG, DEVICE2.DAT)<br><br />
<br />
Selection and programming of the target will be done via the ASCII interface:<br><br />
<br />
<source><br />
#SELECT DEVICE0<br />
#AUTO<br />
#SELECT DEVICE1<br />
#AUTO<br />
#SELECT DEVICE2<br />
#AUTO<br />
</source><br />
<br />
==== Programming multiple targets with J-Flash ====<br />
<br />
Programming multiple targets can also be done via J-Flash using the command line interface.<br />
For this each target must be handled with its own project file.<br />
<br />
'''Example'''<br><br />
<br />
<source><br />
JFlash.exe -openproj"Device0.jflash" -open"Device0.hex" -auto -exit<br />
JFlash.exe -openproj"Device1.jflash" -open"Device1.hex" -auto -exit<br />
JFlash.exe -openproj"Device2.jflash" -open"Device2.hex" -auto -exit<br />
</source><br />
<br />
=== Batch Programming in stand-alone mode ===<br />
<br />
Batch programming allows to execute different stand-alone mode jobs in batch to be executed in immediate succession, without any user interaction in between.<br />
This can be used for example to program multiple targets in a JTAG-Chain or multiple data files to a target.<br><br />
A batch may contains an unlimited number of configurations which consist of a data file (*.DAT) and config file (*.CFG).<br />
For further information regarding config and data files, please refer to [[#Preparing for stand-alone operation manually | Preparing for stand-alone operation manually]].<br><br />
In order to specify the batch jobs, a FLASHER.INI file is used.<br />
This init file contains a [BATCH] section which describes which configuration pairs (*.DAT and *.CFG file) should be used for each batch job.<br />
A sample content of a FLASHER.INI file is shown below:<br><br />
<br />
<source><br />
[BATCH]<br />
DataFile = "Flasher0.dat"<br />
ConfigFile = "Flasher0.cfg"<br />
DataFile1 = "Flasher1.dat"<br />
ConfigFile1 = "Flasher1.cfg"<br />
</source><br />
<br />
[[File:Batch_Jobs.bmp]]<br />
<br />
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.<br />
<br />
<br />
[[File:Batch_Programming.bmp]]<br />
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<br />
currently executed action.<br />
<br />
<br />
[[File:Batch_Result.bmp]]<br />
The result of the programming will be shown on the screen after finishing all jobs.<br />
<br />
<br />
Creating / Replacing of the FLASHER.INI file can done in two ways:<br><br />
<ol><br />
<li>Boot Flasher in file access mode in order to replace the FLASHER.INI</li><br />
<li><br />
If Flasher is already integrated into the production line, runs in stand-alone mode and can not be booted in other mode:<br />
Use the file I/O commands provided by the ASCII interface of Flasher, to replace the FLASHER.INI .<br />
For more information about the file I/O commands, please refer to [[#File I/O commands | File I/O commands]].<br />
In case of an error occurred during execution, the Flasher terminates the entire batch processing.<br />
</li><br />
</ol><br />
{{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.}}<br />
{{Note|1=Flasher supports 8.3 filenames only (8 characters filename, 3 characters file extension). Using longer filenames may result in incorrect operation.}}<br />
<br />
==== Flasher Portable specifics ====<br />
<br />
Flasher Portable allows to choose between four different batches during runtime by using the select/arrow button on the front of Flasher Portable.<br />
Which batch configuration is used for which image selection position is specified in the FLASHER.INI.<br />
For this, the FLASHER.INI contents in the [BATCH] section have been extended.<br />
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><br />
<br />
<source><br />
[BATCH]<br />
DataFile = "Flasher0.dat"<br />
ConfigFile = "Flasher0.cfg"<br />
DataFile1 = "Flasher1.dat"<br />
ConfigFile1 = "Flasher1.cfg"<br />
DataFile2 = "Flasher2.dat"<br />
ConfigFile2 = "Flasher2.cfg"<br />
[BATCH1]<br />
DataFile = "TEST.dat"<br />
ConfigFile = "Test.cfg"<br />
[BATCH2]<br />
DataFile = "VALIDATE.dat"<br />
ConfigFile = "Flasher0.cfg"<br />
</source><br />
<br />
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.<br />
From there on, switching between the batches can be done by simply using the selection button of Flasher Portable.<br />
<br />
<br />
<br />
==== Examples ====<br />
<br />
'''Example 1:''' Programming two Data files to the same target<br><br />
<br />
* Open your J-Flash project.<br />
* Use File -> Save Flasher config file... to save the .CFG file (in this example: STM32F4.CFG).<br />
* Select the first binary and use File -> Save Flasher Data file... to save the first .DAT file (in this example: DATA0.DAT).<br />
* Select the second binary and use File -> Save Flasher Data file... to save the second data file .DAT file (in this example: DATA1.DAT).<br />
* Copy the Files to the Flasher e.g. by using file access mode.<br />
* Create a FLASHER.INI file in the root directory of the Flasher.<br />
* Exemplary content of FLASHER.INI:<br><br />
<source><br />
[BATCH]<br />
DataFile = "DATA0.dat"<br />
ConfigFile = "emPower.cfg"<br />
DataFile1 = "DATA1.dat"<br />
ConfigFile1 = "emPower.cfg"<br />
</source><br />
<br />
<br />
'''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><br />
Example scenario: 2 Devices in a JTAG chain, a STM32F1 and a STM32F4. <br><br />
<br />
* Follow the same as described before and additionally:<br />
* Create one project file per target (and create a .CFG file of each one).<br />
* Make sure each project file is configured correctly, especially the JTAG-Chain position (See UM8003 "J-Flash" for more detailed info).<br />
* Exemplary content of FLASHER.INI:<br><br />
<source><br />
[BATCH]<br />
DataFile = "F1DATA.dat"<br />
ConfigFile = "STM32F1.cfg"<br />
DataFile1 = "F4DATA0.dat"<br />
ConfigFile1 = "STM32F4.cfg"<br />
DataFile2 = "F4DATA1.dat"<br />
ConfigFile2 = "STM32F4.cfg"<br />
</source><br />
<br />
'''Example 3:''' Using multiple Batch sections with Flasher Portable.<br><br />
Example scenario: 2 Devices in a JTAG chain, a STM32F1 and a STM32F4.<br><br />
Selection 1 will program the STM32F1 target.<br><br />
Selection 2 will program the STM32F4 target using "F4DATA0.dat".<br><br />
Selection 3 will program the STM32F4 target using "F4DATA1.dat".<br><br />
Selection 4 will execute 1, 2 and 3 in sequence.<br><br />
* Exemplary content of FLASHER.INI:<br><br />
<source><br />
[BATCH]<br />
DataFile = "F1DATA.dat"<br />
ConfigFile = "STM32F1.cfg"<br />
[BATCH1]<br />
DataFile = "F4DATA0.dat"<br />
ConfigFile = "STM32F4.cfg"<br />
[BATCH2]<br />
DataFile = "F4DATA1.dat"<br />
ConfigFile = "STM32F4.cfg"<br />
[BATCH3]<br />
DataFile = "F1DATA.dat"<br />
ConfigFile = "STM32F1.cfg"<br />
DataFile1 = "F4DATA0.dat"<br />
ConfigFile1 = "STM32F4.cfg"<br />
DataFile2 = "F4DATA1.dat"<br />
ConfigFile2 = "STM32F4.cfg"<br />
</source><br />
<br />
=== Serial number programming ===<br />
<br />
Flasher supports programming of serial numbers. In order to use the serial number programming feature,<br />
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><br />
<br />
In general, Flasher supports two ways of programming a serial number into the target:<br />
<br />
#<br />
#* Programming continuous serial numbers.<br />
#* The serial number is 1-4 bytes in size.<br />
#* The start serial number, increment, serial number size, and address are configured in the J-Flash project.<br />
#<br />
#* Programming custom serial numbers from a serial number list file.<br />
#* The start line within the serial number list file to get the next serial number bytes, line increment, serial number size, and address is configured in the J-Flash project.<br />
#* The serial number list file needs to be specified and created by the user.<br />
<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.}}<br />
<br />
==== Serial number settings ====<br />
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.<br />
This is done by enabling the '''Program serial number''' option as shown in the screenshot and table below:<br />
<br />
[[File:UM08039_SN_Sample_JFlashSettings.png]]<br />
<br />
{| class="seggertable"<br />
|-<br />
!| Setting || Meaning<br />
|-<br />
| <tt>Address</tt> || The address the serial number should be programmed at.<br />
|-<br />
| <tt>Length</tt> ||<br />
The length of the serial number (in bytes) that 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 8 is selected as length, the serial number and its complement are programmed at the given address.<br />
* In case a serial number list file is given, the 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 '''Length''', the remaining bytes are filled with 0s. No complements etc. are added to the serial number.<br />
|-<br />
| <tt>Next SN</tt> ||<br />
* In case no serial number list file is given, '''Next SN''' is the next serial number which should be programmed. The serial number is always stored in flash memory in little-endian format.<br />
* In case a serial number list file is given, '''Next SN''' describes the line of the serial number list file where to read the next serial number bytes from. The Flasher starts counting at line 0, so in order to start serial number programming with the first line of the <tt>SNList.txt</tt>, '''Next SN''' needs to be set to 0.<br />
|-<br />
| <tt>Increment</tt> || Specifies by how much '''Next SN''' is incremented.<br />
|}<br />
<br />
=== Serial number file ===<br />
When selecting '''File -> Download serial number file to Flasher''', J-Flash will create a serial number file named as <tt><JFlashProjectName>_Serial.txt</tt>.<br />
This file is downloaded as <tt>Serial.txt</tt> on the Flasher.<br />
The file is generated based on the serial number settings in the J-Flash project and will contain the value defined by the '''Next SN''' option.<br />
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.<br />
<br />
==== Serial number list file ====<br />
<br />
In order to program custom serial numbers which can not be covered by the standard serial number scheme provided by J-Flash<br />
(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.<br />
<br />
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.<br />
This file is downloaded as <tt>SNList.txt</tt> on the 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<br />
* Each byte of the serial number is described by two hexadecimal digits.<br />
<br />
'''Example'''<br><br />
A 8-byte serial number should be programmed at address 0x08000000.<br><br />
<br />
It should be programmed as follows in the memory:<br><br />
<br />
<tt>0x08000000: 0x01 0x02 0x03 0x04 0x55 0x66 0x77 0x88</tt><br><br />
<br />
The serial number list file should look as follows:<br><br />
<br />
<tt>0102030455667788</tt><br />
<br />
[[File:SN_SNList.gif]]<br />
<br />
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><br />
<br />
Which line Flasher will read at the next programming cycle, is configured via the <tt>Next SN</tt> option in J-Flash.<br />
For more information, please refer to [[#Serial number settings | Serial number settings]].<br />
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><br />
<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.}}<br />
{{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.}}<br />
<br />
==== Programming process ====<br />
<br />
Flasher will increment the serial number in SERIAL.TXT by the value defined in <tt>Increment</tt>, after each successful programming cycle.<br><br />
<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><br />
<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.<br />
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.}}<br />
<br />
==== Downloading serial number files to Flasher ====<br />
<br />
Downloading the serial number files needs to be done explicitly by selecting '''File-> Download serial number file to Flasher'''.<br />
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.<br />
<br />
==== Sample setup ====<br />
<br />
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.<br />
<br />
'''Defining serial number address, length and start value'''<br><br />
In the J-Flash project the following needs to be defined:<br><br />
* <tt>Address</tt> is 0x08001000<br />
* <tt>Next SN</tt> is 1234567<br />
* <tt>Increment</tt> is 1<br />
* <tt>Len</tt> is 4 (bytes)<br />
<br />
[[File:SN_Sample_JFlashSettings.gif]]<br />
<br />
'''Downloading configuration, data and serial number to Flasher.'''<br><br />
After setting up the rest of the configuration (Target interface etc.) and selecting an appropriate data file, the configuration,<br />
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><br />
<br />
[[File:SN_Sample_DownloadToFlasher.gif]]<br />
<br />
After downloading the serial number to Flasher, J-Flash also created the <tt><JFlashProjectName>_Serial.txt</tt>.<br />
<br />
[[File:SN_Sample_SerialFileCreated.gif]]<br />
<br />
Now Flasher is prepared to program the 8-byte serial number.<br />
<br />
=== Patch file support ===<br />
<br />
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.<br />
Before starting programming process in stand-alone mode, Flasher will look for a file named <tt>Patches.txt</tt> being present on the Flasher.<br />
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><br />
<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.<br />
<br />
'''Syntax'''<br><br />
<!-- LG xxxxxxxxx '==' is shown as '=', so instead use '= ='--><br />
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><br />
<br />
<tt><NumPatches>,<Addr>,<NumBytes>:<nowiki><Data></nowiki>,<Addr>,<NumBytes>:<nowiki><Data></nowiki>,<Addr>,<NumBytes>:<nowiki><Data></nowiki>,<Addr>,<NumBytes>:<nowiki><Data></nowiki>\r\n</tt><br><br />
<br />
Find below a table which describes each parameter.<br><br />
{| class="seggertable"<br />
|-<br />
! Parameter !! Description<br />
|-<br />
| <tt><NumPatches></tt> || Describes the number of patches in this patch line. Max. value is 4.<br />
|-<br />
| <tt><Addr></tt> || Describes the address to be patched. Value is expected in hex.<br />
|-<br />
| <tt><NumBytes></tt> || Number of bytes for the current patch. Max. value is 20h (32 in decimal). Value is expected in hex.<br />
|-<br />
| <tt><nowiki><Data></nowiki></tt> || Describes the data to be patched. <nowiki><Data></nowiki> is always expected as 2 hexadecimal characters per byte.<br />
|-<br />
|}<br />
<br />
{{Note|1=All values are expected in hexadecimal format (hex).<br><br />
<nowiki><Data></nowiki> section is always preceded by ":", not ",".}}<br />
<br />
'''Example'''<br><br />
Below is an example patch.<br><br />
<br />
<source><br />
1,18,4:01020304\r\n<br />
</source><br />
<br />
Patching the following data:<br />
<br />
[[File:data_before.png]]<br />
<br />
with the example patch will result in the following data:<br />
<br />
[[File:data_afterwards.png]]<br />
<br />
Please note that as mentioned earlier patching undefined memory locations will be ignored.<br><br />
Applying the example patch to the following data:<br />
<br />
[[File:undefined_mem_before.png]]<br />
<br />
Causes no data to be patched, as can be seen in the following image:<br />
<br />
[[File:undefined_mem_no_token.png]]<br />
<br />
Therefore it is necessary to first write placeholder data to the memory locations which are supposed to be patched.<br><br />
An example for such a placeholder can be seen here:<br />
<br />
[[File:undefined_mem_token.png]]<br />
<br />
Please note that the actual data inside the placeholder does not matter to the Flasher,<br />
because it is overwritten during patching.<br><br />
Applying the example patch will now work as expected:<br />
<br />
[[File:undefined_mem_after.png]]<br />
<br />
'''Single patch via RS232'''<br><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><br />
<br />
Send the <tt>#AUTO PATCH <NumPatches>,<Addr>,<NumBytes>:<nowiki><Data></nowiki></tt><br><br />
<br />
command via Flasher ASCII interface. The parameters have the same function as described in the table above.<br />
<br />
==== Newline encoding ====<br />
<br />
In general, for all patch files, init files etc. Flasher supports both newline encodings:<br><br />
<br />
* Windows: \r\n<br />
* Unix/Mac: \n<br />
<br />
All parser functionality etc. are written to be independent from the host operating system.<br />
<br />
=== Limiting the number of programming cycles ===<br />
<br />
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.<br />
To make use of this feature, a file called <tt>Cntdown.txt</tt> needs to be placed on the Flasher.<br />
This file simply contains a decimal number (32-bit unsigned integer) that describes how many programming cycles can be performed with the current setup.<br />
<br />
[[File:CntdownTxtContent.jpg]]<br />
<br />
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><br />
<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>.}}<br />
<br />
==== Changed fail/error LED indicator behavior ====<br />
<br />
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><br />
<br />
* The red error/fail LED will lit for 1 second<br />
* After this, it will blink/toggle x times @ 5 Hz, indicating the number of programming cycles left. (blinking 5 times for 5 cycles left, ...)<br />
<br />
==== Required Flasher hardware version for Cntdown.txt support ====<br />
<br />
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><br />
<br />
* 1621xxxxx (Flasher ARM V2)<br />
* 1630xxxxx (Flasher ARM V3)<br />
* 4210xxxxx (Flasher PPC V1)<br />
* 4110xxxxx (Flasher RX V1)<br />
<br />
All other models / hardware versions support limiting of programming cycles.<br />
<br />
=== Authorized flashing ===<br />
<br />
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.<br />
without the possibility to read out the Flasher contents via file access mode, FILE I/O functionality (J-Link Commander) or RS232 commands.<br />
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.<br />
<br />
==== Creating / Adding the secure area ====<br />
<br />
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.<br />
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.<br />
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><br />
<br />
[[File:CreateSecArea.jpg]]<br />
<br />
The following secure area related commands are available in J-Link Commander:<br><br />
<br />
* securearea create<br />
* securearea remove<br />
<br />
{{Note|1=When creating or removing the <tt>secure area</tt>, all configuration and data files being stored on the Flasher, are lost.<br />
Please make sure that they are not needed anymore, before adding / removing the security area.}}<br />
<br />
==== Moving files to the secure area ====<br />
<br />
Before moving configuration + data to the <tt>secure area</tt>, proper functionality of the setup should be tested in stand-alone mode.<br />
Once the setup is working as expected, do the following, to move the configuration + data into the <tt>secure area</tt>:<br><br />
<br />
* Start Flasher in file access mode (For more info, please refer to: [[#file access mode | file access mode]])<br />
<br />
[[File:FilesBeforeSecure.png]]<br />
<br />
* Create a folder "<tt>_SECURE</tt>"<br />
* Move all files that shall be moved to the <tt>secure area</tt>, into this folder<br />
<br />
[[File:FilesAfterSecure.png]]<br />
<br />
* 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.<br />
* Now Flasher can be used in stand-alone mode, as normal, but the files cannot be read back by the user / operator.<br />
<br />
==== Considerations to be taken when using the secure area ====<br />
<br />
When using the <tt>secure area</tt>, some things need to be considered:<br><br />
<br />
* All features like multiple file support, patch file support etc. can also be used when operating from the <tt>secure area</tt>.<br />
* 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>.<br />
* 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>.<br />
* 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.<br />
<br />
==== Required Flasher hardware version ====<br />
<br />
Older Flasher models do not support authorized flashing. The Flashers with the following serial number ranges do not support authorized flashing:<br><br />
<br />
* 1621xxxxx (Flasher ARM V2)<br />
* 1630xxxxx (Flasher ARM V3)<br />
* 4210xxxxx (Flasher PPC V1)<br />
* 4110xxxxx (Flasher RX V1)<br />
<br />
All other models / hardware versions support authorized flashing.<br />
<br />
=== Target interfaces ===<br />
<br />
The table below shows the supported target interfaces of the different Flasher models.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! Supported interfaces<br />
|-<br />
| Flasher PRO || JTAG, SWD<br />
|-<br />
| Flasher Compact || JTAG, SWD<br />
|-<br />
| Flasher ARM || JTAG, SWD<br />
|-<br />
| Flasher RX || JTAG<br />
|-<br />
| Flasher PPC || JTAG<br />
|-<br />
|}<br />
<br />
For more information about the target interfaces itself, please refer to:<br><br />
<br />
* ''UM08001, chapter "Working with J-Link and J-Trace", section "JTAG interface"''<br />
* ''UM08001, chapter "Working with J-Link and J-Trace", section "SWD interface"''<br />
<br />
=== Supported architectures ===<br />
<br />
Flasher supports programming of the internal flash of a large number of different microcontrollers.<br />
The number of supported devices is steadily growing. You can always find the latest list of supported devices on our website:<br><br />
<br />
''http://www.segger.com/supported-devices.html''<br />
<br />
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.<br />
Also the existence of the device may have confidential status, so it might not be mentioned as being supported in public releases yet.<br />
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.<br />
<br />
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).<br />
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.<br />
<br />
If a device is not supported, you can always contact us. We will be happy to provide you with an offer.<br />
<br />
==== External flashes ====<br />
<br />
In general our Flashers support programming of external flashes listed below:<br>(Can differ between Flasher models and hardware versions)<br />
<br />
* parallel NOR flash<br />
* SPI / QSPI flash<br>(see: ''[[SPI_support_by_Flasher_models]]'')<br />
* NAND flash<br />
* I<sup>2</sup>C EEPROM/Flash<br />
* FRAM<br />
<br />
If the parallel NOR flash device which is used is not CFI-compliant you have to select the flash device in J-Flash explicitly,<br />
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''.<br />
<br />
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.<br />
The J-Flash software comes with sample projects for ''Open Flashloader''.<br />
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''<br />
{{Note|1=Complete Information about ''Open Flashloaders'' can be found in our Wiki:<br>''[[Open_Flashloader]]''}}<br />
<br />
==== Cores ====<br />
<br />
===== Flasher ARM =====<br />
<br />
Flasher ARM supports and has been tested with the following cores, but should work with any ARM7/9, Cortex-M0/M1/M3/M4 core.<br />
If you experience problems with a particular core, do not hesitate to contact Segger.<br><br />
<br />
* ARM7TDMI (Rev 1)<br />
* ARM7TDMI (Rev 3)<br />
* ARM7TDMI-S (Rev 4)<br />
* ARM920T<br />
* ARM922T<br />
* ARM926EJ-S<br />
* ARM946E-S<br />
* ARM966E-S<br />
* Cortex-M0<br />
* Cortex-M1<br />
* Cortex-M3<br />
* Cortex-M4<br />
<br />
===== Flasher RX =====<br />
<br />
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><br />
<br />
* RX610<br />
* RX621<br />
* RX62N<br />
* RX62T<br />
<br />
===== Flasher PPC =====<br />
<br />
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.<br />
<br />
* e200z0<br />
<br />
===== Flasher PRO/Compact/Portable PLUS =====<br />
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/''.<br />
<br />
=== Programming multiple targets in parallel ===<br />
<br />
To program multiple targets in parallel there are the following possibilities:<br />
* Using a Flasher gang, or<br />
* Using multiple Flashers, each connecting to one CPU.<br />
<br />
Devices for gang programming are:<br />
* 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)].<br />
* 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)].<br />
When using multiple flashers, this can be done with the J-Flash production programming software.<br />
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''<br />
<br />
=== Logfiles and Quality Management ===<br />
<br />
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:<br />
<source lang="c"><br />
SN: 1 - Failed<br />
SN: 1 - Failed<br />
SN: 2 - O.K. (931 ms)<br />
SN: 3 - O.K. (931 ms)<br />
SN: 4 - O.K. (933 ms)<br />
SN: 5 - O.K. (932 ms)<br />
</source><br />
If applicable, the logfile contains more detailed error messages. For example:<br />
<source lang="c"><br />
ERROR: Programming failed @ address 0x00000000 (1)<br />
ERROR: Cannot connect to CPU. Target interface speed too high?<br />
</source><br />
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:<br />
<source lang="c"><br />
Verify error config word area @<br />
config word<br />
config word read back<br />
Verify error flash area @<br />
data from file<br />
data read back<br />
</source><br />
{{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.}}<br />
<br />
== TCP Services ==<br />
This chapter describes the integrated TCP services.<br />
<br />
=== FTP Server ===<br />
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><br />
[[File:FTPServer.png]]<br />
<br />
==== Access data ====<br />
Anonymous access to the FTP server is limited to read-only access to the file system.<br><br />
For write access, special login credentials have to be used:<br><br />
<tt>Login: admin</tt><br><br />
<tt>Password: 1234</tt><br><br />
<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.<br />
It is not meant as a security feature.}}<br />
<br />
=== Web server ===<br />
<br />
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.<br />
For the network, the IP address settings can be changed and a nick name can be assigned to the device.<br><br />
<br />
Additionally, the web interface provides information about the status of the integrated operating system, the IP stack and the target hardware.<br />
<br />
== Remote control ==<br />
This chapter describes how to control the Flasher in standalone mode.<br />
<br />
=== Overview ===<br />
There are 3 ways to control Flasher operation:<br><br />
{| class="seggertable"<br />
! Type of control !! Description<br />
|-<br />
| Button || Programming operation starts when pressing the PROG-button. The LEDs serve as visible indicators.<br />
|-<br />
| Handshake || 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.<br />
|-<br />
| Terminal || Terminal communication via TELNET, RS232 or VCOM with the [[#ASCII command interface]]<br />
|}<br />
<br />
<br />
{{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.}}<br />
<br />
=== Handshake control ===<br />
<br />
Some Flasher models are equipped with additional hardware control functions that are connected to the SUBD9 male connector, normally used as an RS232 interface to the PC.<br />
These Flasher models can therefore be controlled remotely by automated testers without the need for a connection to a PC.<br />
<br />
The handshake control is available for the following Flashers:<br />
* Flasher ARM<br />
* Flasher PRO<br />
* Flasher Compact (via Flasher Hub and Flasher Hub-12 only)<br />
<br />
The following diagrams show the internal remote control circuitry of Flasher:<br><br />
<br />
[[File:FlasherRemotecontrol.png]]<br />
{| class="seggertable"<br />
|-<br />
! Pin No. !! Function !! Description<br />
|-<br />
| 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.<br />
|-<br />
| 4 || BUSY || As soon as the "Auto" function is started, BUSY becomes active, which means that transistor is switched OFF.<br />
|-<br />
| 5 || GND || Common Signal ground.<br />
|-<br />
| 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.<br />
|-<br />
|}<br />
[[File:FlasherRemoteSignal.png]]<br />
<br />
=== ASCII command interface ===<br />
<br />
==== Introduction ====<br />
<br />
Once set up using J-Flash, the Flasher can be driven by any application or just a simple terminal using ASCII commands.<br><br />
<br />
Every known command is acknowledged by the Flasher and then executed. After command execution, Flasher sends an ASCII reply message.<br><br />
<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}}<br />
<br />
==== General command and reply message format ====<br />
<br />
* Any ASCII command has to start with the start delimiter ''#''.<br />
* Any ASCII command has to end with simple carriage return ('\r', ASCII code 13).<br />
* Commands can be sent upper or lower case<br />
<br />
==== General usage ====<br />
<br />
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.<br />
<br />
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).<br />
<br />
==== Settings for ASCII interface via RS232 ====<br />
<br />
Flasher is driven via a RS232 serial port with the following interface settings:<br><br />
<br />
* 9600 baud<br />
* 8 data bits<br />
* no parity<br />
* 1 stop bit<br />
<br />
The baud rate can be changed by using the <tt>#BAUDRATE</tt> command.<br />
<br />
==== Settings for ASCII interface via Telnet ====<br />
<br />
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><br />
<br />
[[File:telnet_connection.gif]]<br />
<br />
==== Settings for ASCII interface via VCOM ====<br />
<br />
The same settings can be used for VCOM as for [[#Settings for ASCII interface via RS232|RS232]].<br />
<br />
{{Note|The performance also depends on the terminal application used on the PC.}}<br />
<br />
==== Commands and replies ====<br />
<br />
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><br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| Commands to the Flasher<br />
|-<br />
| <tt>#BAUDRATE <Baudrate></tt><br />
|-<br />
| <tt>#AUTO</tt><br />
|-<br />
| <tt>#AUTO PATCH</tt><br />
|-<br />
| <tt>#AUTO NOINFO</tt><br />
|-<br />
| <tt>#CANCEL</tt><br />
|-<br />
| <tt>#ERASE</tt><br />
|-<br />
| <tt>#PROGRAM</tt><br />
|-<br />
| <tt>#RESULT</tt><br />
|-<br />
| <tt>#SELECT <Filename></tt><br />
|-<br />
| <tt>#START</tt><br />
|-<br />
| <tt>#STATUS</tt><br />
|-<br />
| <tt>#VERIFY</tt><br />
|-<br />
| <tt>#READ</tt><br />
|-<br />
| <tt>#QUIT</tt><br />
|-<br />
| <tt>#VERBOSE <Level></tt><br />
|-<br />
!colspan="100%"| File I/O commands<br />
|-<br />
| <tt>#FCLOSE</tt><br />
|-<br />
| <tt>#FCRC</tt><br />
|-<br />
| <tt>#FDELETE <Filename></tt><br />
|-<br />
| <tt>#FOPEN <Filename></tt><br />
|-<br />
| <tt>#FREAD <Offset>,<NumBytes></tt><br />
|-<br />
| <tt>#FSIZE</tt><br />
|-<br />
| <tt>#FWRITE <Offset>,<NumBytes>:<nowiki><Data></nowiki></tt><br />
|-<br />
| <tt>#FLIST</tt><br />
|-<br />
| <tt>#MKDIR <Dirname></tt><br />
|-<br />
!colspan="100%"| SecureArea commands<br />
|-<br />
| <tt>#HASSECUREAREA</tt><br />
|-<br />
| <tt>#SECUREAREA <action></tt><br />
|-<br />
!colspan="100%"| Replies from the Flasher<br />
|-<br />
| <tt>#ACK</tt><br />
|-<br />
| <tt>#NACK</tt><br />
|-<br />
| <tt>#OK</tt><br />
|-<br />
| <tt>#OK:<NumBytes>:<nowiki><Data></nowiki></tt><br />
|-<br />
| <tt>#OK:<Size></tt><br />
|-<br />
| <tt>#STATUS:</tt><br />
|-<br />
| <tt>#DONE</tt><br />
|-<br />
| <tt>#ERRxxx</tt><br />
|-<br />
|}<br />
<br />
===== Commands to the Flasher =====<br />
<br />
'''#AUTO'''<br><br />
The <tt>#AUTO</tt> command behaves exactly as the start button or external remote control input.<br><br />
<br />
Usually, the following command sequence will be performed when receiving the <tt>#AUTO</tt> command:<br><br />
<br />
* The Flasher erases the target CPU (if not blank)<br />
* The Flasher programs the target CPU<br />
* The Flasher verifies the target CPU<br />
<br />
Depending on the settings chosen in the '''Production''' tab in J-Flash, this sequence can differ from the one shown above.<br><br />
<br />
Finally, Flasher responds with<br><br />
<br />
* <tt>#OK</tt> if no error occurred<br />
* <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.<br />
<br />
During execution of the <tt>#AUTO</tt> command, Flasher automatically sends "status" messages via RS232 to reflect the state of execution.<br />
Typically during execution of <tt>#AUTO</tt> command, Flasher will reply the following sequence of messages:<br><br />
<br />
<tt>#ACK</tt><br><br />
<tt>#STATUS:INITIALIZING</tt><br><br />
<tt>#STATUS:CONNECTING</tt><br><br />
<tt>#STATUS:UNLOCKING</tt><br><br />
<tt>#STATUS:ERASING</tt><br><br />
<tt>#STATUS:PROGRAMMING</tt><br><br />
<tt>#STATUS:VERIFYING</tt><br><br />
<tt>#OK (Total 13.993s, Erase 0.483s, Prog 9.183s, Verify 2.514s)</tt><br><br />
<br />
'''#AUTO PATCH'''<br><br />
The <tt>#AUTO</tt> PATCH command allows patching of the content of the data to be programmed.<br><br />
<br />
Flasher responds with<br><br />
<br />
* <tt>#OK</tt> if no error occurred<br />
* <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.<br />
<br />
For further information about the usage of the <tt>#AUTO PATCH</tt> command please refer to [[#Patch file support | Patch file support]].<br />
<br />
'''#AUTO NOINFO'''<br><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><br />
<br />
The command ends with <tt>#OK</tt> or <tt>#ERRxxx</tt><br />
<br />
'''#BAUDRATE <Baudrate>'''<br><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><br />
<br />
If this command succeeds, Flasher responds with:<br><br />
<br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<br />
Otherwise it will respond with one of the following error messages:<br><br />
<br />
<tt>#ERR255: Invalid parameters</tt><br><br />
<tt>or</tt><br><br />
<tt>#ERR255: Baudrate is not supported</tt><br><br />
<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.<br />
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.}}<br />
<br />
'''#CANCEL'''<br><br />
This command can be sent to abort a running program. It may take a while until the current program is actually canceled.<br><br />
<br />
Flasher will respond with:<br><br />
<br />
<tt>#ERR007:CANCELED.</tt><br><br />
<br />
'''#ERASE'''<br><br />
This command can be sent to erase all selected target flash sectors.<br><br />
<br />
Flasher will reply the following sequence of messages:<br><br />
<br />
<tt>#ACK</tt><br><br />
<tt>#STATUS:INITIALIZING</tt><br><br />
<tt>#STATUS:CONNECTING</tt><br><br />
<tt>#STATUS:UNLOCKING</tt><br><br />
<tt>#STATUS:ERASING</tt><br><br />
<tt>#OK (Total 0.893s, Erase 0.483s)</tt><br><br />
<br />
'''#PROGRAM'''<br><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.<br />
<br />
'''#RESULT'''<br><br />
This command can be sent any time, even during other command execution. Flasher responds with the last result of the previously executed command.<br />
<br />
'''#SELECT <Filename>'''<br><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.<br />
<tt><Filename></tt> specifies the name of file pair without extensions (.CFG and .DAT) on the Flasher which should be selected. If you are<br />
using the universal flash programming mode, <tt><Filename></tt> specifies the full name of the .UNI file '''including''' the extension.<br />
Flasher saves the selected config and data file in the FLASHER.INI file. So this selection is remembered even between power-cycling Flasher.<br><br />
<br />
This may be verfy helpful in cases where several config and data files are stored on Flasher.<br />
The user can easily switch between these config and data files without connecting Flasher to a host.<br><br />
<br />
If this command succeeds, Flasher responds with:<br><br />
<br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<br />
Find below a sample sequence which shows how to use the <tt>#SELECT</tt> command:<br><br />
<br />
<tt>#SELECT ATSAM7_1 // ATSAM7_1.CFG and ATSAM7_1.DAT is selected</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<tt>#AUTO // Start auto programming</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#STATUS:INITIALIZING</tt><br><br />
<tt>#STATUS:CONNECTING</tt><br><br />
<tt>#STATUS:UNLOCKING</tt><br><br />
<tt>#STATUS:ERASING</tt><br><br />
<tt>#STATUS:PROGRAMMING</tt><br><br />
<tt>#STATUS:VERIFYING</tt><br><br />
<tt>#OK (Total 8.416s, Erase 0.005s, Prog 6.845s, Verify 0.959s)</tt><br><br />
<tt>#SELECT ATSAM7_2 // ATSAM7_2.CFG and ATSAM7_2.DAT is selected</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<tt>#AUTO // Start auto programming</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#STATUS:INITIALIZING</tt><br><br />
<tt>#STATUS:CONNECTING</tt><br><br />
<tt>#STATUS:UNLOCKING</tt><br><br />
<tt>#STATUS:ERASING</tt><br><br />
<tt>#STATUS:PROGRAMMING</tt><br><br />
<tt>#STATUS:VERIFYING</tt><br><br />
<tt>#OK (Total 8.632s, Erase 0.005s, Prog 7.051s, Verify 0.969s)</tt><br><br />
<br />
'''#START'''<br><br />
This command can be sent to start the application using the method configured in the J-Flash project.<br />
<br />
Flasher will reply with the following sequence of messages:<br><br />
<br />
<tt>#ACK</tt><br><br />
<tt>#STATUS:INITIALIZING</tt><br><br />
<tt>#STATUS:CONNECTING</tt><br><br />
<tt>#OK (Total 1.148s)</tt><br><br />
<br />
'''#STATUS'''<br><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]].<br />
<br />
'''#VERIFY'''<br><br />
This command can used to verify the target flash content against the data stored in Flasher.<br />
<br />
'''#READ'''<br><br />
Only available for devices supported by U-Flash.<br><br />
This command can used to read out flash data.<br><br />
More information: [https://wiki.segger.com/Flasher/How_to_read_data_from_a_device_using_U-Flash How to read data using U-Flash]<br />
<br />
'''#QUIT'''<br><br />
This command can be used to terminate the active telnet connection from the server side (Flasher).<br />
The command provides an easy way to terminate the session from an automated script.<br />
It is not necessary to parse stdout and switch to local command mode to disconnect.<br />
Not implemented in the Flasher ATE or Flasher Hub.<br />
<br />
'''#VERBOSE <Level>'''<br><br />
This command can be used to change the verbosity level. <br><br />
* Verbosity level 0: Default. <br><br />
* Verbosity level 1: Provides some additional messages during the programming process.<br />
<br />
===== File I/O commands =====<br />
<br />
The ASCII interface of the Flasher also supports file I/O operations.<br />
<br />
The following file I/O commands are supported:<br><br />
<br />
'''#FCLOSE'''<br><br />
The <tt>#FCLOSE</tt> command closes the file on Flasher which was opened via <tt>#FOPEN</tt>.<br />
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><br />
<br />
A typical sequence when using the <tt>#FCLOSE</tt> command does look like as follows:<br><br />
<br />
<tt>#FCLOSE</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<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><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:No file opened</tt><br />
}}<br />
<br />
'''#FCRC'''<br><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>.<br />
The CRC will be also reported by J-Flash when downloading or saving files via J-Flash.<br><br />
<br />
A typical sequence when using the <tt>#FCRC</tt> command does look like as follows:<br><br />
<br />
<tt>#FCRC flasher.dat</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK:0x75BC855A</tt><br><br />
<br />
'''#FDELETE <Filename>'''<br><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><br />
<br />
A typical sequence when using the <tt>#FDELETE</tt> command does look like as follows:<br><br />
<br />
<tt>#FDELETE flasher.dat</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<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><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:Failed to delete file</tt><br />
}}<br />
<br />
'''#FOPEN <Filename>'''<br><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.<br />
If <tt><Filename></tt> can not be found on Flasher a new one will be created.<br><br />
<br />
A typical sequence using the <tt>#FOPEN</tt> command does look like as follows:<br><br />
<br />
<tt>#FOPEN flasher.dat</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<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><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:A file has already been opened</tt><br />
}}<br />
<br />
'''#FREAD <Offset>,<NumBytes>'''<br><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.<br />
<tt><NumBytes></tt> specifies the number of bytes which should be read.<br><br />
<br />
A typical sequence when using the <tt>#FREAD</tt> command does look like as follows:<br><br />
<br />
<tt>#FREAD 0,4</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK:04:466c6173</tt><br><br />
<br />
If the <tt>#FREAD</tt> command succeeds, Flasher will finally respond with a <tt>#OK:<NumBytes>:<nowiki><Data></nowiki></tt> reply message.<br />
For more information about the Flasher reply messages, please refer to [[#Replies from Flasher | Replies from Flasher]].<br><br />
<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><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:No file opened</tt>}}<br />
<br />
'''#FSIZE'''<br><br />
The <tt>#FSIZE</tt> command is used to get the size of the currently opened file on Flasher.<br><br />
<br />
A typical sequence when using the <tt>#FSIZE</tt> command does look like as follows:<br><br />
<br />
<tt>#FSIZE</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK:10 // file on flasher which is currently open, has a size of 16 bytes</tt><br><br />
<br />
If the <tt>#FSIZE</tt> command succeeds, Flasher will respond with a <tt>#OK:<Size></tt> reply message.<br />
For more information about the Flasher reply messages, please refer to [[#Replies from Flasher | Replies from Flasher]].<br><br />
<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><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:No file opened</tt>}}<br />
<br />
'''#FWRITE <Offset>,<NumBytes>:<nowiki><Data></nowiki>'''<br><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.<br />
<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.<br />
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><br />
<br />
<tt><Offset></tt> and <tt><NumBytes></tt> are expected in hexadecimal format.<br><br />
<br />
<tt>#FWRITE 0,200:<nowiki><Data></nowiki></tt><br><br />
<tt>#FWRITE 200,200:<nowiki><Data></nowiki></tt><br><br />
<br />
The data is expected in hexadecimal format (two hexadecimal characters per byte). The following example illustrates the use of <tt>#FWRITE</tt>:<br />
<br />
<tt>Data to be send: Hello !</tt><br><br />
<tt>ASCII values: 0x48, 0x65, 0x6C, 0x6C, 0x6F, 0x20, 0x21</tt><br><br />
<br />
<tt>#FWRITE 0,7:48656C6C6F2021</tt><br><br />
<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><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:No file opened</tt><br>}}<br />
<br />
'''#FLIST'''<br><br />
The <tt>#LIST</tt> command is used to list all files stored on the Flasher.<br><br />
<br />
A typical sequence using the <tt>#FLIST</tt> command does look like as follows:<br><br />
<br />
<tt>#FLIST</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>FLASHER.INI Size: 60</tt><br><br />
<tt>SERIAL.TXT Size: 3</tt><br><br />
<tt>FLASHER.LOG Size: 207</tt><br><br />
<tt>FOLDER (DIR)</tt><br><br />
<tt>FOLDER\\TEST1.CFG Size: 2048</tt><br><br />
<tt>FOLDER\\TEST1.DAT Size: 12288</tt><br><br />
<tt>#OK</tt><br><br />
<br />
'''#MKDIR <Dirname>'''<br><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><br />
<br />
A typical sequence using the <tt>#MKDIR</tt> command does look like as follows:<br><br />
<br />
<tt>#MKDIR folder</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<br />
{{Note|1=If the directory can not be created because of a bad <tt><Dirname></tt> argument, Flasher will respond with:<br><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:Failed to create directory</tt><br>}}<br />
<br />
===== Secure Area Commands =====<br />
<br />
'''#HASSECUREAREA'''<br><br />
The <tt>#HASSECUREAREA</tt> command checks if the Flasher is configured with a secure area.<br />
<br />
<tt>#RESULT:YES</tt> indicates the secure area is present, <tt>#RESULT:NO</tt> indicates no secure area is present.<br />
<br />
'''#SECUREAREA'''<br><br />
The <tt>#SECUREAREA <action></tt> command allows to create or remove the secure area on the Flasher.<br />
<br />
* the action <tt>CREATE</tt> creates the secure area.<br />
* the action <tt>REMOVE</tt> will remove the secure area.<br />
<br />
A typical sequence using the <tt>#SECUREAREA</tt> command does look like as follows:<br><br />
<br />
<tt>#SECUREAREA CREATE</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#DONE</tt><br><br />
<br />
{{Note|1=When creating or removing the <tt>secure area</tt>, all configuration and data files being stored on the Flasher, are lost.<br />
Please make sure that they are not needed anymore, before adding / removing the security area.}}<br />
<br />
<br />
<br />
===== Replies from Flasher =====<br />
<br />
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.<br />
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.<br />
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><br />
<br />
<tt>#OK (Total 13.993s, Erase 0.483s, Prog 9.183s, Verify 2.514s)</tt><br><br />
<br />
The following reply messages from Flasher are defined:<br><br />
<br />
'''#ACK'''<br><br />
Flasher replies with <tt>#ACK</tt> message on reception of any defined command before the command itself is executed.<br />
<br />
'''#NACK'''<br><br />
Flasher replies with <tt>#NACK</tt>, if an undefined command was received.<br />
<br />
'''#OK'''<br><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.<br />
<br />
'''#OK:<NumBytes>:<nowiki><Data></nowiki>'''<br><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.<br />
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).<br />
<br />
'''#OK:<Size>'''<br><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.<br />
<br />
'''#STATUS:'''<br><br />
The Flasher replies with its current state.<br><br />
<br />
The following status messages are currently defined:<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Message !! Description<br />
|-<br />
| <tt>#STATUS:READY</tt> || Flasher is ready to receive a new command.<br />
|-<br />
| <tt>#STATUS:CONNECTING</tt> || Flasher initializes connection to target CPU.<br />
|-<br />
| <tt>#STATUS:INITIALIZING</tt> || Flasher performs self check and internal init.<br />
|-<br />
| <tt>#STATUS:UNLOCKING</tt> || Unlocking flash sectors.<br />
|-<br />
| <tt>#STATUS:ERASING</tt> || Flasher is erasing the flash of the target device.<br />
|-<br />
| <tt>#STATUS:PROGRAMMING</tt> || Flasher is programming the flash of the target device.<br />
|-<br />
| <tt>#STATUS:VERIFYING</tt> || Flasher verifies the programmed flash contents.<br />
|-<br />
|}<br />
<br />
'''#ERRxxx'''<br><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><br />
<br />
Some error codes may be followed by colon and an additional error text.<br><br />
<br />
For example:<br><br />
<br />
<tt>#ERR007:CANCELED.</tt><br><br />
<br />
The error code numbers are described in the following table:<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Message !! Description<br />
|-<br />
| <tt>#ERR007</tt> || Flasher received <tt>#CANCEL</tt> command and has canceled the current operation.<br />
|-<br />
| <tt>#ERR008</tt> || Flasher is already busy with execution of previous command.<br />
|-<br />
| <tt>#ERR009</tt> || Failed to allocate memory.<br />
|-<br />
| <tt>#ERR010</tt> || Failed to open file.<br />
|-<br />
| <tt>#ERR011</tt> || Failed to read file.<br />
|-<br />
| <tt>#ERR012</tt> || Failed to write file.<br />
|-<br />
| <tt>#ERR013</tt> || Failed to delete file.<br />
|-<br />
| <tt>#ERR255</tt> || Undefined error occurred. This reply is followed by an error string.<br />
|-<br />
|}<br />
<br />
== Performance ==<br />
<br />
The following chapter lists programming performance of common flash devices andmicrocontrollers.<br />
<br />
=== Performance of MCUs with internal flash memory ===<br />
<br />
==== Flasher ARM ====<br />
<br />
The following table lists program and erase performance values of Flasher ARM for different controllers.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Microcontroller !! Size [kByte] !! Erase time [sec] !! Program time [sec] !! Verify time [sec] !! Total time [sec]<br />
|-<br />
| Analog Devices || 62 || 2.943 || 2.286 || 0.563 || 5.792<br />
|-<br />
| Atmel AT91SAM7S64 || 64 || --- || 3.488 || 0.438 || 3.926<br />
|-<br />
| Atmel AT91SAM7S256 || 256 || --- || 7.709 || 1.053 || 8.762<br />
|-<br />
| NXP LPC1768 || 512 || 3.740 || 8.559 || 5.092 || 17.391<br />
|-<br />
| NXP LPC2106 || 120 || 0.448 || 1.204 || 0.634 || 2.286<br />
|-<br />
| NXP LPC2129 || 248 || 0.449 || 2.916 || 1.347 || 4.712<br />
|-<br />
| NXP LPC2138 || 500 || 0.448 || 5.488 || 2.649 || 8.585<br />
|-<br />
| NXP LPC2148 || 500 || 0.448 || 5.632 || 2.721 || 8.801<br />
|-<br />
| NXP LPC2294 || 2048 || 0.808 || 15.976 || 9.669 || 26.453<br />
|-<br />
| NXP LPC2478 || 504 || 0.448 || 5.419 || 2.559 || 8.426<br />
|-<br />
| ST STM32F103ZE || 512 || 0.028 || 18.763 || 3.939 || 22.730<br />
|-<br />
| ST STR711 || 272 || 0.429 || 5.476 || 4.742 || 10.647<br />
|-<br />
| ST STR912 || 544 || 1.167 || 12.907 || 5.236 || 19.310<br />
|-<br />
| TI TMS470R1B1M || 1024 || 2.289 || 8.147 || 5.362 || 15.798<br />
|-<br />
|}<br />
<br />
==== Flasher PRO ====<br />
See Flasher ARM.<br />
<br />
==== Flasher Compact ====<br />
See Flasher ARM.<br />
<br />
==== Flasher RX ====<br />
<br />
The following table lists program and erase performance values of Flasher RX.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Microcontroller !! Size [kByte] !! Erase time [sec] !! Program time [sec] !! Verify time [sec] !! Total time [sec]<br />
|-<br />
| R5F56108 || 2.048 || 9.523 || 11.915 || 3.890 || 25.585<br />
|-<br />
|}<br />
<br />
==== Flasher PPC ====<br />
<br />
The following table lists program and erase performance values of Flasher PPC.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Microcontroller !! Size [kByte] !! Erase time [sec] !! Program time [sec] !! Verify time [sec] !! Total time [sec]<br />
|-<br />
| ST SPC560B50 || 576 || 4.747 || 4.159 || 1.929 || 10.917<br />
|-<br />
|}<br />
<br />
== Hardware ==<br />
<br />
This chapter gives an overview about Flasher specific hardware details,<br />
such as the pinouts and available adapters.<br />
<br />
=== Flasher ARM 20-pin JTAG/SWD Connector ===<br />
<br />
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.<br />
<br />
==== Pinout JTAG ====<br />
<br />
[[File:jtag_port_20pin.jpg]] <!-- LG xxxxxx image has been cropped to fit page --><br />
<br />
The following table lists the Flasher JTAG pinout.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! PIN !! SIGNAL !! TYPE !! Description<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 13 || TDO || Input || JTAG data output from target CPU. Typically connected to TDO of target CPU.<br />
|-<br />
| 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".<br />
|-<br />
| 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.<br />
|-<br />
| 19 || 5V-Target supply || Output || This pin is used to supply power to some eval boards. Typically left open on target hardware.<br />
|-<br />
|}<br />
<br />
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.<br />
<br />
==== Pinout SWD ====<br />
<br />
The 20-pin connector of Flasher is also compatible to ARM's Serial Wire Debug (SWD) interface.<br><br />
<br />
[[File:SWD_Port.jpg]] <!-- LG xxxxxx image has been cropped to fit page --><br />
<br />
The following table lists the J-Link / J-Trace SWD pinout.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! PIN !! SIGNAL !! TYPE !! Description<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 7 || SWDIO || I/O || Single bi-directional data pin.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 13 || SWO || Output || Serial Wire Output trace port. (Optional, not required for SWD communication.)<br />
|-<br />
| 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".<br />
|-<br />
| 17 || Not used || NC || This pin is not connected in J-Link.<br />
|-<br />
| 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.<br />
|-<br />
|}<br />
<br />
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.<br />
<br />
==== Target power supply ====<br />
<br />
Pin 19 of the connector can be used to supply power to the target hardware. Supply voltage is 5V, max. current is 400mA.<br />
The output current is monitored and protected against overload and short-circuit.<br><br />
<br />
Power can be controlled via the J-Link commander. The following commands are available to control power:<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Command !! Explanation<br />
|-<br />
| <tt>power on</tt> || Switch target power on<br />
|-<br />
| <tt>power off</tt> || Switch target power off<br />
|-<br />
| <tt>power on perm</tt> || Set target power supply default to "on"<br />
|-<br />
| <tt>power off perm</tt> || Set target power supply default to "off"<br />
|-<br />
|}<br />
<br />
=== Flasher RX 14-pin connector ===<br />
<br />
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.<br />
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.<br />
<br />
[[File:jtag_port_14pin.wmf]]<br />
<br />
The following table lists the Flasher RX 14-pin JTAG pinout.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Pin !! Signal !! Type !! Description<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 5 || TDO || Input || JTAG data output from target CPU. Typically connected to TDO on target CPU.<br />
|-<br />
| 6 || --- || NC || This pin is not connected to Flasher RX.<br />
|-<br />
| 7 || --- || NC || This pin is not connected to Flasher RX.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 10 || --- || NC || This pin is not connected to Flasher RX.<br />
|-<br />
| 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.<br />
|-<br />
| 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".<br />
|-<br />
|}<br />
<br />
* All pins marked NC are not connected to Flasher RX. Any signal can be applied here; Flasher RX will simply ignore such a signal.<br />
* Pins 2, 12, 14 are GND pins connected to GND in Flasher RX. They should also be connected to GND in the target system.<br />
<br />
==== Target power supply ====<br />
<br />
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.<br />
Power can be controlled via the J-Link commander. The following commands are available to control power:<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Command !! Explanation<br />
|-<br />
| <tt>power on</tt> || Switch target power on<br />
|-<br />
| <tt>power off</tt> || Switch target power off<br />
|-<br />
| <tt>power on perm</tt> || Set target power supply default to "on"<br />
|-<br />
| <tt>power off perm</tt> || Set target power supply default to "off"<br />
|-<br />
|}<br />
<br />
=== Flasher PPC 14-pin connector ===<br />
<br />
Flasher PPC itself has a 20-pin JTAG connector mounted but comes with a 14-pin adapter for PowerPC devices.<br><br />
<br />
[[File:JTAG_PPC_14pin_adapter.wmf]]<br />
<br />
The following table lists the Flasher PPC 14-pin JTAG pinout.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Pin !! Signal !! Type !! Description<br />
|-<br />
| 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.<br />
|-<br />
| 3 || TDO || Input || JTAG data output from target CPU. Typically connected to TDO on target CPU.<br />
|-<br />
| 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.<br />
|-<br />
| 7 || --- || NC || This pin is not connected to Flasher PPC.<br />
|-<br />
| 8 || --- || NC || This pin is not connected to Flasher PPC.<br />
|-<br />
| 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".<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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).<br />
|-<br />
|}<br />
<br />
* All pins marked NC are not connected to Flasher PPC. Any signal can be applied here; Flasher PPC will simply ignore such a signal.<br />
* 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.<br />
<br />
=== Target board design ===<br />
<br />
We strongly advise following the recommendations given by the chip manufacturer. These recommendations are normally in line with the recommendations.<br />
Please refer to the the appropriate tables depending on the core:<br><br />
<br />
* [[#Pinout JTAG | Pinout JTAG]]<br />
* [[#Pinout SWD | Pinout SWD]]<br />
* [[#Flasher RX 14-pin connector | Flasher RX 14-pin connector]]<br />
* [[#Flasher PPC 14-pin connector | Flasher PPC 14-pin connector]]<br />
<br />
In case of doubt you should follow the recommendations given by the semiconductor manufacturer.<br />
<br />
==== Pull-up/pull-down resistors ====<br />
<br />
Unless otherwise specified by developer's manual, pull-ups/pull-downs are recommended to be between 2.2 kOhms and 47 kOhms.<br />
<br />
==== RESET, nTRST ====<br />
<br />
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><br />
<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.<br />
(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.<br />
<br />
=== Adapters ===<br />
<br />
==== JTAG Isolator ====<br />
<br />
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.<br />
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><br />
<br />
[[File:JTAG_Isolator_Port.wmf]]<br />
<br />
===== Pinout =====<br />
<br />
The following table shows the target-side pinout of the J-Link JTAG Isolator.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Pin !! Signal !! Type !! Description<br />
|-<br />
| 1 || VCC || Output || The target side of the isolator draws power over this pin.<br />
|-<br />
| 2 || VCC || Output || The target side of the isolator draws power over this pin.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 13 || TDO || Input || JTAG data output from target CPU. Typically connected to TDO of target CPU.<br />
|-<br />
| 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".<br />
|-<br />
| 17 || N/C || N/C || This pin is not connected on the target side of the isolator.<br />
|-<br />
| 19 || N/C || N/C || This pin is not connected on the target side of the isolator.<br />
|-<br />
|}<br />
<br />
Pins 4, 6, 8, 10, 12, 14, 16, 18, 20 are connected to GND.<br />
<br />
===== Safety =====<br />
This isolator provides '''basic isolation''' only. '''Do not use with hazardous voltages without further protection measures to avoid risk of electrical shock and fire.'''<br />
<br />
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.<br />
<br />
==== J-Link Needle Adapter ====<br />
<br />
To connect to the J-Link OB via programming interface the ''J-Link Needle Adapter'' is recommended.<br><br />
<br />
[[File:J-Link_Needle_Adapter_500x.jpg]]<br />
<br />
Why to choose the J-Link Needle Adapter:<br><br />
<ol><br />
<li>No additional connector required on your PCB</li><br />
<li>Very small footprint</li><br />
<li>High reliability spring pins for secure connections</li><br />
<li>Designed with 3 locating pins, so the adapter can not be connected the wrong way</li><br />
<li>No external power supply required! The J-Link Needle Adapter comes with the option to power the target hardware via J-Link.</li><br />
</ol><br />
These features make the J-Link Needle Adapter the perfect solution for production purposes.<br><br />
<br />
The pinout of the J-Link Needle Adapter is based on the pinout of the needle adapter by Tag-Connect.<br />
Please note, that both pinouts are not identical since the J-Link Needle Adapter comes with a 5V-supply pin.<br><br />
<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><br />
<br />
Moreover, the two "legs" on each side of the connector guarantee a stable and secure contact between pins and the PCB.<br><br />
<br />
[[File:J-Link_Needle_Adapter_Connector_pins_360x.jpg]]<br />
[[File:J-Link_Needle_Adapter_Pinout.jpg]]<br />
<br />
The J-Link Needle Adapter can be connected to J-Link via the ''20-pin 0.1'' JTAG to a 10-pin needle connector''.<br />
<br />
=== How to determine the hardware version ===<br />
<br />
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.<br />
Flasher has the hardware version printed on the back label.<br><br />
<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).<br />
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><br />
<br />
[[File:FlasherARM_version.gif]]<br />
== Support and FAQs ==<br />
<br />
This chapter contains troubleshooting tips together with solutions for common problems which might occur when using Flasher.<br />
There are several steps you can take before contacting support.<br />
Performing these steps can solve many problems and often eliminates the need for assistance.<br />
This chapter also contains a collection of frequently asked questions (FAQs) with answers.<br />
<br />
=== Contacting support ===<br />
<br />
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.<br />
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><br />
<br />
If you need to contact support, send the following information to<br><br />
''support@segger.com''<br><br />
<br />
* A detailed description of the problem<br />
* Flasher serial number<br />
* Information about your target hardware (processor, board, etc.).<br />
* <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]].<br />
<br />
Flasher is sold directly by SEGGER.<br />
<br />
=== Frequently Asked Questions ===<br />
<br />
'''Maximum JTAG speed'''<br />
{|<br />
|-<br />
| '''Q:''' || What is the maximum JTAG speed supported by Flasher?<br />
|-<br />
| '''A:''' || Flasher's maximum supported JTAG speed is 12MHz.<br />
|}<br />
<br />
'''Maximum download speed'''<br />
{|<br />
|-<br />
| '''Q:''' || What is the maximum download speed?<br><br />
|-<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.<br />
|}<br />
== Background information ==<br />
<br />
This chapter provides background information about flash programming in general. It<br />
also provides information about how to replace the firmware of Flasher manually.<br />
<br />
=== Flash programming ===<br />
<br />
Flasher comes with a DLL, which allows - amongst other functionalities - reading and writing RAM, CPU registers, starting and stopping the CPU, and setting breakpoints.<br />
<br />
==== How does flash programming via Flasher work? ====<br />
<br />
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.<br />
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.<br />
Different flash chips have different programming algorithms;the programming algorithm also depends on other things,<br />
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).<br />
The RAM code requires data to be programmed into the flash memory. The data is supplied by downloading it to RAM.<br />
<br />
==== Data download to RAM ====<br />
<br />
The data (or part of it) is downloaded to another part of the RAM of the target system.<br />
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.<br />
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.<br />
This process may have to be repeated until the entire data is programmed into the flash.<br />
<br />
==== Available options for flash programming ====<br />
<br />
In general, there are two possibilities in order to use Flasher for flash programming:<br><br />
<br />
* Using Flasher stand-alone to program the target flash memory (stand-alone mode)<br />
* Using Flasher in combination with J-Flash to program the target flash memory (Flasher in "PC-based mode")<br />
<br />
===== Using Flasher in stand-alone mode =====<br />
<br />
In order to use the Flasher in stand-alone mode, it has to be configured first.<br />
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]].<br />
<br />
===== J-Flash - Complete flash programming solution =====<br />
<br />
J-Flash is a stand-alone Windows application, which can read / write data files and program the flash in almost any ARM system.<br />
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''.<br />
<br />
==== How does the universal flash programming work? ====<br />
<br />
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><br />
<br />
Universal flash programming is available only for stand-alone mode.<br />
== Glossary ==<br />
<br />
This chapter describes important terms used throughout this manual.<br />
<br />
'''Big-endian'''<br><br />
Memory organization where the least significant byte of a word is at a higher address than the most significant byte. See Little-endian.<br />
<br />
'''Cache cleaning'''<br><br />
The process of writing dirty data in a cache to main memory.<br />
<br />
'''Coprocessor'''<br><br />
An additional processor that is used for certain operations, for example, for floating-point math calculations, signal processing, or memory management.<br />
<br />
'''Dirty data'''<br><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.<br />
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.<br />
<br />
'''Halfword'''<br><br />
A 16-bit unit of information.<br />
<br />
'''Host'''<br><br />
A computer which provides data and other services to another computer. Especially, a computer providing debugging services to a target being debugged.<br />
<br />
'''ICache'''<br><br />
Instruction cache.<br />
<br />
'''ID'''<br><br />
Identifier.<br />
<br />
'''IEEE 1149.1'''<br><br />
The IEEE Standard which defines TAP. Commonly (but incorrectly) referred to as JTAG.<br />
<br />
'''Image'''<br><br />
An executable file that has been loaded onto a processor for execution.<br />
<br />
'''Instruction Register'''<br><br />
When referring to a TAP controller, a register that controls the operation of the TAP.<br />
<br />
'''IR'''<br><br />
See Instruction Register.<br />
<br />
'''Joint Test Action Group (JTAG)'''<br><br />
The name of the standards group which created the IEEE 1149.1 specification.<br />
<br />
'''Little-endian'''<br><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.<br />
<br />
'''Memory coherency'''<br><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.<br />
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.<br />
<br />
'''Memory management unit (MMU)'''<br><br />
Hardware that controls caches and access permissions to blocks of memory, and translates virtual to physical addresses.<br />
<br />
'''Memory Protection Unit (MPU)'''<br><br />
Hardware that controls access permissions to blocks of memory. Unlike an MMU, a MPU does not translate virtual addresses to physical addresses.<br />
<br />
'''RESET'''<br><br />
Abbreviation of System Reset. The electronic signal which causes the target system other than the TAP controller to be reset.<br />
This signal is also known as "nSRST" "nSYSRST", "nRST", or "nRESET" in some other manuals. See also nTRST.<br />
<br />
'''nTRST'''<br><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.<br />
<br />
'''Open collector'''<br><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.<br />
<br />
'''Processor Core'''<br><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.<br />
It excludes optional coprocessors, caches, and the memory management unit.<br />
<br />
'''Remapping'''<br><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.<br />
<br />
'''RTOS'''<br><br />
Real Time Operating System.<br />
<br />
'''TAP Controller'''<br><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.<br />
<br />
'''Target'''<br><br />
The actual processor (real silicon or simulated) on which the application program is running.<br />
<br />
'''TCK'''<br><br />
The electronic clock signal which times data on the TAP data lines TMS, TDI, and TDO.<br />
<br />
'''TDI'''<br><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.<br />
<br />
'''TDO'''<br><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.<br />
<br />
'''Test Access Port (TAP)'''<br><br />
The port used to access a device's TAP Controller. Comprises TCK, TMS, TDI, TDO, and nTRST (optional).<br />
<br />
'''Transistor-transistor logic (TTL)'''<br><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.<br />
<br />
'''Word'''<br><br />
A 32-bit unit of information. Contents are taken as being an unsigned integer unless otherwise stated.<br />
== Literature and references ==<br />
This chapter lists documents, which we think may be useful to gain a deeper understanding of technical details.</div>JanBhttps://wiki.segger.com/index.php?title=UM08022_Flasher&diff=17160UM08022 Flasher2023-12-05T09:33:47Z<p>JanB: /* Commands and replies */ Added #Read command</p>
<hr />
<div><!---<br />
General TBD:<br />
- LG: Right now - EVERYTHING<br />
===========================================<br />
--------------------[more specific, but on multiple locations]<br />
- check if all emphasis (bold, tt, blue, etc ) have made it into the new version<br />
- Add Information -> Additional information<br />
- use of the term free-of-charge utility/tool etc<br />
- check compliant to DocStandards_Rules.txt<br />
- Remove everything regarding to Kickstarter versions? eventually create a chapter Legacy -> Kickstarter version were available for hw version 5-x (200x-200x)...[..]<br />
- 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.<br />
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.<br />
- if week keep the IDE specific stuff in the manual, add Ozone, ES and J-Link Commander were no mentioned.<br />
- IDE specifics move into wiki confirmed by Alex<br />
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)<br />
- check all sections regarding licensing<br />
- Check compliance of J-Link emDocs with typographic conventions described in AboutThisDocument.emDoc. What should be altered? e.g. references<br />
- use uref at all (not blue)?<br />
- search and decide where to use \ref (ref with page number)<br />
- why is \ref (no single "option" \uref is more basic as \ref.....)<br />
- in text, use either \ref or \iref instead of \uref<br />
- in old manual, \H3 started on a new page (not per default, but set manually for api tables etc...)<br />
- move used old images and source files (visio etc) via svn (currently copied)<br />
--------------------[grammar / vocabulary discussion]<br />
- Product names<br />
-- Use of SEGGEPROBE in this document?<br />
- use license over licence<br />
- commandline or command-line?<br />
- toolchain or tool chain?<br />
- crossreference/cross-reference/cross reference?<br />
- overcurrent?<br />
- double words?<br />
- frontend?<br />
- Unit: Kbytes, KBytes, V, mV.... 9V or 9 V? Create rule in Vocabulary<br />
- baudrate or baud rate?<br />
- stackpointer or stack pointer<br />
- check where we should replace abbreviations with the long form (e.h. "milliseconds" instead of "ms")<br />
- config or configuration<br />
- filepointer or file pointer?<br />
--------------------[J-Link dep. specific]<br />
- J-Link command strings or J-Link Command strings or J-Link Command Strings<br />
- J-Link settings file or...<br />
- J-Link control panel or ......<br />
- J-Link script files or...<br />
---><br />
Flasher is a programming tool for microcontrollers with on-chip or external flash memory.<br />
Flasher is designed for programming flash targets with the J-Flash software or stand-alone.<br />
In addition to that Flasher can also be used as a regular J-Link. For more information about J-Link in general,<br />
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].<br />
<br />
<div class="toclimit-2"><br />
__TOC__<br />
</div><br />
<br />
== Flasher overview ==<br />
Flasher connects to a PC using the USB/Ethernet/RS232 interface (what host interfaces are available depends on the Flasher model),<br />
running Windows, Linux & MacOS. In stand-alone mode,<br />
Flasher can be driven by the start/stop button, or via the RS232 interface (handshake control or ASCII interface).<br />
Flasher always has a 20-pin connector, which target interfaces are supported depends on the Flasher model:<br />
* Flasher ARM: JTAG and SWD are supported.<br />
* Flasher RX: JTAG is supported. Flasher comes with additional 14-pin RX adapter<br />
* Flasher PPC: JTAG is supported. Flasher comes with additional 14-pin PPC adapter.<br />
* Flasher PRO: JTAG and SWD are supported.<br />
* Flasher Compact: JTAG and SWD are supported.<br />
<br />
=== Features of Flasher ARM/PPC/RX/PRO ===<br />
* Three boot modes: PC-based mode, stand-alone mode, file access mode<br />
* Stand-alone JTAG/SWD programmer (Once set up, Flasher can be controlled without the use of PC program)<br />
* No power supply required, powered through USB<br />
* Supports internal and external flash devices<br />
* 128 MB memory for storage of target program<br />
* Can be used as J-Link (emulator) with a download speed of up to 720 Kbytes/second<br />
* Data files can updated via USB/Ethernet (using the J-Flash software), via FTP, via RS232 or via the file access mode of Flasher<br />
<br />
{| class="seggertable"<br />
|-<br />
! Flasher model !! Supported cores !! Supported target interfaces !! Flash programming speed (depending on target hardware)<br />
|-<br />
| Flasher ARM || ARM7/ARM9/Cortex-M || JTAG, SWD || between 170 and 300 Kbytes/second<br />
|-<br />
| Flasher RX || Renesas RX610, RX621, RX62N, RX62T || JTAG || between 30-300 Kbytes/second<br />
|-<br />
| Flasher PPC || Power PC e200z0 || JTAG || up to 138 Kbytes/second<br />
|-<br />
| Flasher PRO || ARM7/ARM9/Cortex-M Renesas RX610, RX621, RX62N, RX62T Power PC e200z0 || JTAG, SWD || between 30-300 Kbytes/ second<br />
|-<br />
|}<br />
<br />
==== Features of Flasher Compact ====<br />
<br />
* Three boot modes: PC-based mode, stand-alone mode, file access mode<br />
* Stand-alone JTAG/SWD programmer (Once set up, Flasher can be controlled without the use of PC program)<br />
* No power supply required, powered through USB<br />
* Supports internal and external flash devices<br />
* 128 MB memory for storage of target program<br />
* Can be used as J-Link (emulator) with a download speed of up to 720 Kbytes/second<br />
* Data files can updated via USB/Ethernet (using the J-Flash software) or via the file access mode of Flasher<br />
<br />
{| class="seggertable"<br />
|-<br />
! Flasher model !! Supported cores !! Supported target interfaces !! Flash programming speed (depending on target hardware)<br />
|-<br />
| Flasher ARM || ARM7/ARM9/Cortex-M || JTAG, SWD || between 170 and 300 Kbytes/second<br />
|-<br />
| Flasher RX || Renesas RX610, RX621, RX62N, RX62T || JTAG || between 30-300 Kbytes/second<br />
|-<br />
| Flasher PPC || Power PC e200z0 || JTAG || up to 138 Kbytes/second<br />
|-<br />
| Flasher Compact || ARM7/ARM9/Cortex-M Renesas RX610, RX621, RX62N, RX62T Power PC e200z0 || JTAG, SWD || between 30-300 Kbytes/ second<br />
|-<br />
|}<br />
<br />
==== Features of Flasher Portable/Flasher Portable PLUS ====<br />
<br />
* Stand-alone in-circuit-programmer (Once set up, Flasher can be controlled without the use of a PC program)<br />
* Powered by an internal rechargeable battery (standard batteries for Flasher Portable), no Laptop or external power supply required.<br />
* Multiple firmware images can be stored on Flasher<br />
* 128 MB memory for storage of target program<br />
* Easy selection of image to be programmed, via button<br />
* Supported CPUs: ARM Cortex, Legacy ARM7/9, Renesas RX, Freescale PowerPC<br />
* Supports internal and external flash<br />
* Free software updates<ref name="legitimateOwned" />, 1 year of support<br />
* Data files can be updated via the file access mode functionality or via J-Flash<br />
* Programming speed between 30-300 Kbytes/second (actual speed depends on target hardware)<br />
{{Note|1=Ethernet and RS232 as host interface are not available for Flasher Portable}}<br />
<references><br />
<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.<br />
As a legitimate owner of a SEGGER Flasher, you can always download the latest software free of charge.<br />
Though not planned and not likely, we reserve the right to change this policy.<br />
Note that older models may not be supported by newer versions of the software.<br />
Typically, we support older models with new software at least 3 years after end of life.<br />
</ref><br />
</references><br />
<br />
{| class="seggertable"<br />
|-<br />
! Supported cores !! Supported target interfaces !! Flash programming speed (depending on target hardware)<br />
|-<br />
| ARM7/ARM9/Cortex-M || JTAG, SWD || between 30-300 Kbytes/second<br />
|-<br />
| Renesas RX610, RX621, RX62N, RX62T || JTAG || between 170 and 300 Kbytes/second<br />
|-<br />
| Power PC e200z0 || JTAG || up to 138 Kbytes/second<br />
|-<br />
|}<br />
<br />
==== Working environment ====<br />
<br />
'''General'''<br><br />
The Flasher can operate from a PC with an appropriate software like J-Flash or in stand-alone mode.<br />
<br />
'''Host System'''<br><br />
IBM PC/AT or compatible CPU: 486 (or better) with at least 128MB of RAM,<br />
running Windows, Linux & MacOS. It needs to have a USB, Ethernet or RS232 interface available for communication with Flasher.<br />
<br />
'''Power supply'''<br><br />
Flasher Portable: 3x standard AAA batteries or 5V DC, min. 100 mA via USB connector.<br />
<br />
Flasher Portable PLUS: internal rechargeable 680mAh Li-Ion battery, min. 100 mA via USB connector.<br />
<br />
Other Flashers: 5V DC, min. 100 mA via USB connector.<br />
<br />
'''Installing Flasher PC-software'''<br><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><br />
More information about the package you can find in the similar [[J-Link Software and Documentation Pack]].<br><br />
The package includes U-Flash and J-Flash, the main tools for flashing targets:<br />
* J-Flash : J-Flash User Guide ([https://wiki.segger.com/UM08003_JFlash UM08003_JFlash.pdf]).<br />
* U-Flash : U-Flash User Guide ([https://www.segger.com/downloads/flasher/UM08037.pdf UM08037_UniversalFlashLoader.pdf]).<br />
<br />
=== Specifications ===<br />
<br />
<br />
==== Specifications for Flasher ARM ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Windows, Linux & MacOS<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C<br />
|-<br />
| Storage Temperature || -20 °C ... +60 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
!colspan="100%"| Mechanical<br />
|-<br />
| Size (without cables) || 121mm x 66mm x 30mm<br />
|-<br />
| Weight (without cables) || 119g<br />
|-<br />
!colspan="100%"| Available interfaces<br />
|-<br />
| USB Host interface || USB 2.0, full speed<br />
|-<br />
| Ethernet Host interface || 10/100 MBit<br />
|-<br />
| RS232 Host interface || RS232 9-pin<br />
|-<br />
| Target interface || JTAG 20-pin (14-pin adapter available)<br />
|-<br />
!colspan="100%"| JTAG Interface, Electrical<br />
|-<br />
| Power Supply || USB powered, 100mA for Flasher ARM. 500 mA if target is powered by Flasher ARM<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| Target supply voltage || Supply voltage is 5V, max.<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6 <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Max. JTAG speed || up to 12MHz<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
===== Flasher ARM download speed =====<br />
<br />
The following table lists the Flasher ARM performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! ARM7 memory download<br />
|-<br />
| Flasher ARM || 720 Kbytes/s (12MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
<br />
==== Specifications for Flasher RX ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Windows, Linux & MacOS<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C<br />
|-<br />
| Storage Temperature || -20 °C ... +60 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
!colspan="100%"| Mechanical<br />
|-<br />
| Size (without cables) || 121mm x 66mm x 30mm<br />
|-<br />
| Weight (without cables) || 119g<br />
|-<br />
!colspan="100%"| Available interfaces<br />
|-<br />
| USB Host interface || USB 2.0, full speed<br />
|-<br />
| Ethernet Host interface || 10/100 MBit<br />
|-<br />
| RS232 Host interface || RS232 9-pin<br />
|-<br />
| Target interface || JTAG 20-pin (shipped with 14-pin adapter for Renesas RX)<br />
|-<br />
!colspan="100%"| JTAG Interface, Electrical<br />
|-<br />
| Power Supply || USB powered, 100mA for Flasher RX. 500 mA if target is powered by Flasher RX<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| 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)<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6 <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Max. JTAG speed || up to 12MHz<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
===== Flasher RX download speed =====<br />
<br />
The following table lists the Flasher RX performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! Flasher RX600 series memory download<br />
|-<br />
| Flasher RX || 720 Kbytes/s (12MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
<br />
==== Specifications for Flasher PPC ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Windows, Linux & MacOS<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C<br />
|-<br />
| Storage Temperature || -20 °C ... +60 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
!colspan="100%"| Mechanical<br />
|-<br />
| Size (without cables) || 121mm x 66mm x 30mm<br />
|-<br />
| Weight (without cables) || 119g<br />
|-<br />
!colspan="100%"| Available interfaces<br />
|-<br />
| USB Host interface || USB 2.0, full speed<br />
|-<br />
| Ethernet Host interface || 10/100 MBit<br />
|-<br />
| RS232 Host interface || RS232 9-pin<br />
|-<br />
| Target interface || JTAG 20-pin (shipped with 14-pin adapter for Renesas PPC)<br />
|-<br />
!colspan="100%"| JTAG Interface, Electrical<br />
|-<br />
| Power Supply || USB powered, 100mA for Flasher PPC. 500 mA if target is powered by Flasher PPC<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| Target supply voltage || Supply voltage is 5V, max.<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6 <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Max. JTAG speed || up to 12MHz<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
===== Flasher RX download speed =====<br />
<br />
The following table lists the Flasher PPC performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! Memory download<br />
|-<br />
| Flasher PPC || 530 Kbytes/s (8 MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
<br />
==== Specifications for Flasher PRO ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Windows, Linux & MacOS<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C<br />
|-<br />
| Storage Temperature || -20 °C ... +60 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
!colspan="100%"| Mechanical<br />
|-<br />
| Size (without cables) || 121mm x 66mm x 30mm<br />
|-<br />
| Weight (without cables) || 119g<br />
|-<br />
!colspan="100%"| Available interfaces<br />
|-<br />
| USB Host interface || USB 2.0, full speed<br />
|-<br />
| Ethernet Host interface || 10/100 MBit<br />
|-<br />
| RS232 Host interface || RS232 9-pin<br />
|-<br />
| Target interface || JTAG 20-pin (14-pin adapter available)<br />
|-<br />
!colspan="100%"| JTAG Interface, Electrical<br />
|-<br />
| Power Supply || USB powered, 100mA for Flasher PRO. 500 mA if target is powered by Flasher PRO<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| Target supply voltage || Supply voltage is 5V, max.<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6 <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Max. JTAG speed || up to 12MHz<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
<br />
===== Supported CPU cores =====<br />
<br />
The Flasher PRO supports the following CPU cores:<br />
<br />
'''ARM Cortex'''<br><br />
* Cortex-A5<br />
* Cortex-A8<br />
* Cortex-A9<br />
* Cortex-R4<br />
* Cortex-R5<br />
* Cortex-M0<br />
* Cortex-M0+<br />
* Cortex-M1<br />
* Cortex-M3<br />
* Cortex-M4<br />
<br />
'''ARM (legacy cores)'''<br><br />
* ARM720T<br />
* ARM7TDMI<br />
* ARM7TDMI-S<br />
* ARM920T<br />
* ARM922T<br />
* ARM926EJ-S<br />
* ARM946E-S<br />
* ARM966E-S<br />
* ARM1136JF-S<br />
* ARM1136J-S<br />
* ARM1156T2-S<br />
* ARM1156T2F-S<br />
* ARM1176JZ-S<br />
* ARM1176JZF<br />
* ARM1176JZF-S<br />
<br />
'''Renesas RX'''<br><br />
* RX111<br />
* RX210<br />
* RX220<br />
* RX21A<br />
* RX610<br />
* RX621<br />
* RX62G<br />
* RX62N<br />
* RX62T<br />
* RX630<br />
* RX631<br />
* RX63N<br />
* RX63T<br />
<br />
'''Freescale Power PC'''<br><br />
* e200z0<br />
<br />
===== Supported Target interfaces =====<br />
<br />
The Flasher PRO supports the following target interfaces:<br />
<br />
* JTAG<br />
* SWD<br />
* FINE<br />
* SPD<br />
<br />
===== Flasher PRO download speed =====<br />
<br />
The following table lists the Flasher PRO performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! ARM7 memory download<br />
|-<br />
| Flasher PRO || 720 Kbytes/s (12MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
<br />
==== Specifications for Flasher Compact ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Microsoft Windows (x86/x64)<br>Linux (x86/x64/Arm)<br>macOS (x86/Apple M1)<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C<br />
|-<br />
| Storage Temperature || -20 °C ... +65 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
| Size (without cables) || 70mm x 45mm x 18mm<br />
|-<br />
| Weight (without cables) || 40g<br />
|-<br />
| USB Host interface || USB 2.0 (Hi-Speed); Micro USB<br />
|-<br />
| Target interface || JTAG 20-pin (14-pin adapter available)<br />
|-<br />
| Power Supply || USB powered, 130mA (idle)<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| Target supply voltage || Supply voltage is 5V, max.<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
| Supported target interfaces || SPI, QSPI, 8051 C2, cJTAG, FINE, ICSP, IIC, ISP, JTAG, PDI, SPD, SWD, SWIM, UART, UPDI<br />
|-<br />
| Serial transfer rate between Flasher Compact and target || Up to 50 MHz (Depending on target interface)<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6 <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
===== Supported CPU cores =====<br />
<br />
The Flasher Compact supports the following CPU cores:<br />
'''ARM Cortex'''<br><br />
* Cortex-A5<br />
* Cortex-A8<br />
* Cortex-A9<br />
* Cortex-R4<br />
* Cortex-R5<br />
* Cortex-M0<br />
* Cortex-M0+<br />
* Cortex-M1<br />
* Cortex-M3<br />
* Cortex-M4<br />
<br />
'''ARM (legacy cores)'''<br><br />
* ARM720T<br />
* ARM7TDMI<br />
* ARM7TDMI-S<br />
* ARM920T<br />
* ARM922T<br />
* ARM926EJ-S<br />
* ARM946E-S<br />
* ARM966E-S<br />
* ARM1136JF-S<br />
* ARM1136J-S<br />
* ARM1156T2-S<br />
* ARM1156T2F-S<br />
* ARM1176JZ-S<br />
* ARM1176JZF<br />
* ARM1176JZF-S<br />
<br />
'''Renesas RX'''<br><br />
* RX111<br />
* RX210<br />
* RX220<br />
* RX21A<br />
* RX610<br />
* RX621<br />
* RX62G<br />
* RX62N<br />
* RX62T<br />
* RX630<br />
* RX631<br />
* RX63N<br />
* RX63T<br />
<br />
'''Freescale Power PC'''<br><br />
* e200z0<br />
<br />
===== Flasher Compact download speed =====<br />
<br />
The following table lists the Flasher Compact performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! ARM7 memory download<br />
|-<br />
| Flasher Compact || 720 Kbytes/s (12MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
<br />
==== Specifications for Flasher Portable PLUS ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Windows, Linux & MacOS<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C (normal operation)<br>+5 °C ... +45 °C (battery charging)<br />
|-<br />
| Storage Temperature || -20 °C ... +45 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
| 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)<br />
|-<br />
| Charging via USB || 70 minutes (at 1A charging current)<br />
|-<br />
!colspan="100%"| Mechanical<br />
|-<br />
| Size (without cables) || 126mm x 70mm x 28mm<br />
|-<br />
| Weight (without cables) || 140g<br />
|-<br />
!colspan="100%"| Available interfaces<br />
|-<br />
| USB Host interface || USB 2.0<br />
|-<br />
| Target interface || Standard 20-pin 0.1" connector (Adapters available).<br />
|-<br />
!colspan="100%"| Target Interface, Electrical<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| Target supply voltage || Supply voltage is 4.5V, max. (depends on the current battery voltage).<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6 <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Max. JTAG speed || up to 12MHz<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
===== Supported CPU cores =====<br />
<br />
The Flasher Portable PLUS supports the following CPU cores:<br />
<br />
'''ARM Cortex'''<br><br />
* Cortex-A5<br />
* Cortex-A8<br />
* Cortex-A9<br />
* Cortex-R4<br />
* Cortex-R5<br />
* Cortex-M0<br />
* Cortex-M0+<br />
* Cortex-M1<br />
* Cortex-M3<br />
* Cortex-M4<br />
<br />
'''ARM (legacy cores)'''<br><br />
* ARM720T<br />
* ARM7TDMI<br />
* ARM7TDMI-S<br />
* ARM920T<br />
* ARM922T<br />
* ARM926EJ-S<br />
* ARM946E-S<br />
* ARM966E-S<br />
* ARM1136JF-S<br />
* ARM1136J-S<br />
* ARM1156T2-S<br />
* ARM1156T2F-S<br />
* ARM1176JZ-S<br />
* ARM1176JZF<br />
* ARM1176JZF-S<br />
<br />
'''Renesas RX'''<br><br />
* RX111<br />
* RX210<br />
* RX220<br />
* RX21A<br />
* RX610<br />
* RX621<br />
* RX62G<br />
* RX62N<br />
* RX62T<br />
* RX630<br />
* RX631<br />
* RX63N<br />
* RX63T<br />
<br />
'''Freescale Power PC'''<br><br />
* e200z0<br />
<br />
===== Supported Target interfaces =====<br />
<br />
The Flasher Portable PLUS supports the following target interfaces:<br />
* JTAG<br />
* SWD<br />
* FINE<br />
* SPD<br />
<br />
===== Flasher Portable PLUS download speed =====<br />
<br />
The following table lists the Flasher Portable PLUS performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! ARM7 memory download<br />
|-<br />
| Flasher PRO || 720 Kbytes/s (12MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
<br />
==== Specifications for Flasher Portable ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Windows, Linux & MacOS<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C<br />
|-<br />
| Storage Temperature || -20 °C ... +65 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
| Power Supply || a) USB powered, 100mA for Flasher Portable. 500 mA if target is powered by Flasher Portable<br>b) Batteries powered (3xAAA)<br />
|-<br />
!colspan="100%"| Mechanical<br />
|-<br />
| Size (without cables) || 130mm x 65mm x 25mm<br />
|-<br />
| Weight (without cables) || 120g<br />
|-<br />
!colspan="100%"| Available interfaces<br />
|-<br />
| USB Host interface || USB 2.0<br />
|-<br />
| Target interface || Standard 20-pin 0.1" connector (Adapters available).<br />
|-<br />
!colspan="100%"| Target Interface, Electrical<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| Target supply voltage || Supply voltage is 4.5V, max. (depends on the current battery voltage).<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6V <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Max. JTAG speed || up to 12MHz<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
===== Supported CPU cores =====<br />
<br />
The Flasher Portable supports the following CPU cores:<br />
<br />
'''ARM Cortex'''<br><br />
* Cortex-A5<br />
* Cortex-A8<br />
* Cortex-A9<br />
* Cortex-R4<br />
* Cortex-R5<br />
* Cortex-M0<br />
* Cortex-M0+<br />
* Cortex-M1<br />
* Cortex-M3<br />
* Cortex-M4<br />
<br />
'''ARM (legacy cores)'''<br><br />
* ARM720T<br />
* ARM7TDMI<br />
* ARM7TDMI-S<br />
* ARM920T<br />
* ARM922T<br />
* ARM926EJ-S<br />
* ARM946E-S<br />
* ARM966E-S<br />
* ARM1136JF-S<br />
* ARM1136J-S<br />
* ARM1156T2-S<br />
* ARM1156T2F-S<br />
* ARM1176JZ-S<br />
* ARM1176JZF<br />
* ARM1176JZF-S<br />
<br />
'''Renesas RX'''<br><br />
* RX111<br />
* RX210<br />
* RX220<br />
* RX21A<br />
* RX610<br />
* RX621<br />
* RX62G<br />
* RX62N<br />
* RX62T<br />
* RX630<br />
* RX631<br />
* RX63N<br />
* RX63T<br />
<br />
'''Freescale Power PC'''<br><br />
* e200z0<br />
<br />
===== Supported Target interfaces =====<br />
<br />
The Flasher Portable supports the following target interfaces:<br />
<br />
* JTAG<br />
* SWD<br />
* FINE<br />
* SPD<br />
<br />
===== Flasher Portable download speed =====<br />
<br />
The following table lists the Flasher Portable performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! ARM7 memory download<br />
|-<br />
| Flasher PRO || 720 Kbytes/s (12MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
== Working with Flasher ==<br />
<br />
This chapter describes functionality and how to use Flasher.<br />
<br />
=== Flasher Portable PLUS ===<br />
<br />
The Flasher Portable PLUS is a portable version of SEGGERs Flasher family,<br />
which has been designed to fill the need of an extremely portable, production grade,<br />
Flash programmer used for in-field firmware updates. No need to be tethered to an outlet,<br />
it is powered by an integrated Li-Ion cell (680mAh).<br />
The Flasher Portable PLUS programs flash targets in stand-alone mode or via J-Flash PC software.<br><br />
<br />
Furthermore the Flasher Portable PLUS allows the user to select between eight data images to be programmed.<br />
The images can be easily selected by using the SEL button on the front of the housing.<br />
For more information about support for multiple images, please refer to [[#Multiple File Support | Multiple File Support]].<br><br />
For setup and configuration purposes, the Flasher Portable PLUS connects to a PC via USB interface,<br />
running Windows, Linux & MacOS and has a built-in standard 20-pin J-Link target connector.<br><br />
<br />
{{Note|1=Ethernet and RS232 as host interface are not available for the Flasher Portable PLUS.}}<br />
<br />
==== Housing & Buttons ====<br />
<br />
The Flasher Portable PLUS comes with a display, which is for example used to represent the status of an ongoing flash progress.<br />
Furthermore, there are three buttons which allow the user to control Flasher Portable PLUS.<br />
For a detailed description of the functions, take a look at the table below:<br />
<br />
<!-- LG xxxxxx edit image with labels for buttons? (Is this actually necessary? Buttons are basically self-explanatory...) --><br />
[[File:Flasher_Portable_PLUS.png | 500px]]<br />
<br />
{| class="seggertable"<br />
|-<br />
! Button !! Description<br />
|-<br />
| Program || Start programming process with the currently selected image.<br />
|-<br />
| Select image || Select the image to be programmed next time the Program button is pressed.<br />
|-<br />
| 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.<br />
|-<br />
|}<br />
<br />
==== Configuration ====<br />
<br />
The Flasher Portable PLUS has some configuration options the other Flashers do not have.<br />
{| class="seggertable"<br />
|-<br />
! Option !! Description !! Value range !! Default value<br />
|-<br />
| AutoPowerOffOnIdle || Specifies the time interval after which the Flasher Portable will turn off without any user action || 1 to 3600 || 60<br />
|-<br />
| ShowDatCRCAfterProgramming || Activates displaying the data file CRC after the programming in the pop up message || 0 = inactive, 1 = active || 0<br />
|-<br />
|}<br />
<br />
If the <tt>Flasher.ini</tt> does not contain a <tt>[Config]</tt> section with the configuration option, the default value is used.<br />
<br />
'''Example:'''<br><br />
This sample will show the data file CRC after the programming and the auto power of is set to five minutes (=300 seconds).<br />
<br />
<source lang="c"><br />
[CONFIG]<br />
AutoPowerOffOnIdle = "300"<br />
ShowDatCRCAfterProgramming = "1"<br />
</source><br />
<br />
=== Flasher Portable ===<br />
<br />
The Flasher Portable is a portable version of SEGGERs Flasher family, which has been designed to fill the need of an extremely portable,<br />
production grade, Flash programmer used for in-field firmware updates. No need to be tethered to an outlet,<br />
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><br />
<br />
Furthermore the Flasher Portable allows the user to select between four data images to be programmed.<br />
The images can be easily selected by using the arrow buttons on the front of the housing.<br />
For more information about support for multiple images, please refer to [[#Multiple File Support | Multiple File Support]].<br><br />
For setup and configuration purposes, the Flasher Portable connects to a PC via USB interface,<br />
running Windows, Linux & MacOS and has a built-in standard 20-pin J-Link target connector.<br><br />
<br />
{{Note|1=Ethernet and RS232 as host interface are not available for the Flasher Portable.}}<br />
<br />
==== Housing & Buttons ====<br />
<br />
The Flasher Portable comes with several leds which are for example used to represent the status of an ongoing flash progress.<br />
Furthermore, there are three buttons which allow the user to control Flasher Portable.<br />
For a detailed description of the functions, take a look at the two tables below:<br />
<br />
<!-- LG xxxxxx edit image with labels for buttons?--><br />
[[File:Flasher_Portable_Top_2.png | 500px]]<br />
<br />
{| class="seggertable"<br />
|-<br />
! LED !! Description<br />
|-<br />
| ACTIVE || GREEN. Blinks while the Flasher Portable is busy / performs operations on the target.<br />
|-<br />
| PASS/FAIL || GREEN/RED. Indicates, if the last flashing cycle was successful.<br />
<ul><br />
<li> GREEN: Flashing cycle completed successfully.</li><br />
<li> RED: Flashing cycle completed with error.</li><br />
</ul><br />
|-<br />
| 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]].<br />
|-<br />
| POWER || GREEN: Indicates if Flasher is currently powered. Blinks while Flasher Portable tries to enumerate via USB.<br />
|-<br />
| 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.<br />
|-<br />
|}<br />
<br />
{| class="seggertable"<br />
|-<br />
! Button !! Description<br />
|-<br />
| Program || Start programming process with the currently selected image.<br />
|-<br />
| Select image || Select the image to be programmed next time the <tt>Program</tt> button is pressed.<br />
|-<br />
| 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<br />
|-<br />
|}<br />
<br />
=== File system ===<br />
<br />
The Flasher supports 8.3 filenames only (8 characters filename, 3 characters file extension).<br />
Using longer filenames may result in incorrect operation. Integrated functions,<br />
like the FTP server or the terminal server, will refuse writing files with long filenames.<br />
<br />
=== Setting up the IP interface ===<br />
<br />
Setting up the IP interface<br />
Some of the Flasher models come with an additional Ethernet interface to communicate with the host system.<br />
These Flashers also come with a built-in webserver which allows some basic setup of the emulator,<br />
e.g. configuring a default gateway which allows using it even in large intranets. For more information,<br />
please refer to [[#TCP Services | TCP Services]].<br />
<br />
==== Connecting the first time ====<br />
<br />
When connecting Flasher the first time, it attempts to acquire an IP address via DHCP.<br />
The recommended way for finding out which IP address has been assigned to Flasher is, to use the J-Link Configurator.<br />
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.<br />
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''.<br />
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,<br />
please refer to ''UM08001, J-Link / J-Trace User Guide'', chapter ''Setup'', section ''Setting up the IP interface''.<br />
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]].<br />
<br />
=== Operating modes ===<br />
<br />
All Flashers except the Flasher ATE are able to boot in 3 different modes:<br />
<br />
* PC-based mode<br />
* Stand-alone mode<br />
* File access mode<br />
<br />
{{Note|1=The Flasher ATE only supports the stand-alone mode.}}<br />
<br />
'''Definition PC-based mode'''<br><br />
Flasher is connected to a PC via USB/Ethernet and controlled by a PC application (J-Flash).<br />
If there is an RS232 connection to a PC, does not have any influence on if PC-based mode is entered or not.<br />
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, ...)<br />
<br />
'''Definition Stand-alone mode'''<br><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.<br />
<br />
'''Definition file access mode'''<br><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.<br />
In this mode, Flasher enumerates as a mass storage device (like an USB Stick) at the host PC.<br />
In this mode, configuration + data files can be manually placed on the Flasher and the Flasher logfile can be read out.<br />
If you are using a self-powered Flasher such as the Flasher Portable Plus, the Flasher must be turned off before connecting it.<br />
<br />
==== PC-based mode ====<br />
If you want to use Flasher for the first time you need to install the J-Link software and documentation package.<br />
After installation, connect Flasher to the host PC via USB or Ethernet.<br />
For more information about how to install the J-Link software and documentation package please refer to [[J-Link Software and Documentation Pack]].<br />
<br />
===== Connecting the target system =====<br />
<br />
'''Power-on sequence'''<br><br />
In general, Flasher should be powered on before connecting it with the target device.<br />
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.<br />
Power-on the device after you connected Flasher to it. Flasher will boot in "PC-based mode".<br />
<br />
'''Verifying target device connection with J-Link.exe'''<br><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.<br />
Then start the J-Link command line tool <tt>JLink.exe</tt>,<br />
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.<br />
The screenshot below shows the output of <tt>JLink.exe</tt>.<br />
<br />
[[File:flasher_jlinkmode.gif]]<br />
<br />
===== LED status indicators =====<br />
<br />
In PC-based mode, there are also certain LED status codes defined:<br />
<br />
{| class="seggertable"<br />
|-<br />
! # !! Status of LED !! Meaning<br />
|-<br />
| 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.<br />
|-<br />
| 0 || GREEN<br>constant || Flasher enumeration process is complete and it is ready to be controlled by a PC application.<br />
|-<br />
|}<br />
<br />
==== Stand-alone mode ====<br />
<br />
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]].<br />
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).<br />
In the "stand-alone mode" Flasher can be used as a stand-alone flash programmer.<br><br />
<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]].}}<br />
<br />
===== LED status indicators =====<br />
Progress and result of an operation is indicated by Flasher's LEDs. The behavior is different for J-Link and stand-alone mode.<br />
For a definition of the different modes, please refer to [[#Operating modes | Operating modes]].<br />
The following table describes the behavior of the LEDs in stand-alone mode.<br />
<br />
{| class="seggertable"<br />
|-<br />
! # !! Status of LED !! Meaning<br />
|-<br />
| 0 || GREEN<br>constant || Flasher waits for a start trigger to perform an operation in stand-alone mode.<br />
|-<br />
| 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><br />
|-<br />
| 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.<br />
|-<br />
|}<br />
Older Flasher models have a different behavior.<br />
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:<br />
<br />
* 1621xxxxx (Flasher ARM V2)<br />
* 1630xxxxx (Flasher ARM V3)<br />
* 4210xxxxx (Flasher PPC V1)<br />
* 4110xxxxx (Flasher RX V1)<br />
<br />
{| class="seggertable"<br />
|-<br />
! # !! Status of LED !! Meaning<br />
|-<br />
| 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.<br />
|-<br />
| 1 || GREEN<br>constant || Connect to target and perform init sequence.<br />
|-<br />
| 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><br />
|-<br />
| 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.<br />
|-<br />
|}<br />
<br />
==== File access mode ====<br />
<br />
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".<br />
If you are using a self-powered Flasher such as the Flasher Portable Plus, the Flasher must be turned off before connecting it.<br />
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.<br />
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>.<br />
<br />
[[File:flasher_mode_msd.gif]]<br />
<br />
<tt>FLASHER.CFG</tt> contains the configuration settings for programming the target device and <tt>FLASHER.DAT</tt> contains the data to be programmed.<br />
<tt>FLASHER.LOG</tt> contains all logging information about the commands, performed in stand-alone mode.<br />
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><br />
<br />
Currently, J-Flash does not support to configure Flasher for automated serial number programming.<br><br />
<br />
If you want to configure multiple Flasher for the same target you do not have to use J-Flash all the time.<br />
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".<br />
<br />
=== Setting up Flasher for stand-alone mode ===<br />
{{Note| All Options how to set up the Flasher for stand-alone mode you can find here: https://wiki.segger.com/Flasher/Download_project_to_Flasher}}<br />
<br />
In order to set up Flasher for the stand-alone mode it needs to be configured once using the J-Flash software.<br />
For more information about J-Flash, please refer to the ''J-Flash User Guide''.<br><br />
<br />
After starting J-Flash, open the appropriate J-Flash project for the target Flasher shall be configured for, by selecting '''File''' -> '''Open Project'''.<br />
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><br />
<br />
After the appropriate project has been opened / created, the data file which shall be programmed needs to be loaded, by selecting '''File''' -> '''Open'''.<br />
After this J-Flash should look like in the screenshot below.<br />
<br />
[[File:jflash_projectfile_datafile.gif]]<br />
<br />
Before downloading the configuration (project) and program data (data file) to Flasher, the connection type (USB/IP) needs to be selected in the project.<br />
These settings are also saved on a per-project basis, so this also only needs to be setup once per J-Flash project.<br />
The connection dialog is opened by clicking '''Options''' -> '''Project settings''' -> '''General'''.<br />
<br />
[[File:jflash_connection_dialog.gif]]<br />
<br />
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.<br />
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.<br />
The user then can simply select the Flash he wants to download the configuration to.<br />
<br />
[[File:EmuSelectionDialog.gif]]<br />
<br />
In order to download the configuration and program data to the Flasher, simply select '''File''' -> '''Download config & data file to Flasher'''.<br />
<br />
[[File:jflash_download_to_emul.gif]]<br />
<br />
The J-Flash log window indicates that the download to the emulator was successful.<br />
<br />
[[File:jflash_download_to_emu_succ.gif]]<br />
<br />
From now on, Flasher can be used in stand-alone mode (without host PC interaction) for stand-alone programming.<br />
<br />
==== Preparing for stand-alone operation manually ====<br />
<br />
As an alternative, J-Flash can also be used to save config and data file to a hard drive.<br><br />
<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,<br />
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.<br />
<br />
'''Creating config and data files'''<br><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><br />
<br />
For some devices, additional files (*.PEX) are needed.<br />
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.<br />
<br />
'''About *.PEX files'''<br><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,<br />
the following needs to be taken care of:<br><br />
<br />
For some devices, special connect, reset etc. sequences are necessary which are stored in so-called *.PEX files on the Flasher.<br><br />
<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><br />
<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><br />
The *.PEX files need to be placed in a subdirectory with the same name as the corresponding *.cfg file.<br />
J-Flash creates a directory with the correct name automatically when a config file is created.<br><br />
<br />
Example:<br><br />
<br />
MyConf0 is a project for a device that requires a *.PEX file for connect.<br><br />
MyConf1 is a project for a device that requires no *.PEX file at all.<br />
<br />
[[File:PEX_File_Flasher.png]]<br />
<br />
=== Universal Flash Loader mode ===<br />
<br />
As an alternative to the stand-alone mode, configured via J-Flash, there is the Universal Flash Loader mode.<br />
While the normal stand-alone mode relies on using the debug interface of the device, the Universal Flash Loader<br />
mode uses device or vendor specific programming interfaces and protocols and therefore it is independent of the<br />
CPU core.<br><br />
<br />
The Universal Flash Loader is available for the following Flasher models:<br />
* Flasher PRO<br />
* Flasher Compact<br />
* Flasher Portable PLUS<br />
<br />
For some of the supported devices, SEGGER offers specific adapters.<br />
<br />
==== Preparing manually ====<br />
<br />
The Universal Flash Loader uses an configuration file (*.UNI), a device specific flash programming algorithm (*.PEX) and a data file (*.DAT).<br />
<br />
===== Configuration =====<br />
<br />
The configuration file basically is split into three parts.<br />
The first part, the section [DEVICE], controls the generic behavior of the Universal Flash Loader.<br />
It specifies which protocol driver and data file to use. It allows enabling and configuring target power<br />
and it defines which actions to perform.<br />
The second part consists of one or more [BANKx] sections, which contain information about the memories.<br />
The third part, the section [CONFIG], includes configuration settings for the protocol driver.<br><br />
<br />
An .UNI file might look as follows:<br><br />
<br />
<source lang="c"><br />
[OPTIONS]<br />
TargetPower = "0"<br />
ChipErase = "0"<br />
<br />
[TASKS]<br />
CheckBlank = "1"<br />
Erase = "1"<br />
Program = "1"<br />
Verify = "1"<br />
Secure = "1"<br />
<br />
[DEVICE]<br />
Algo = "RL78.PEX"<br />
Data = "ALL_6k.dat"<br />
<br />
[BANK0]<br />
; Code Flash<br />
Base = "0x00000000"<br />
Size = "0x00004000"<br />
Sect = "0x00000400"<br />
<br />
[BANK1]<br />
; Data Flash<br />
Base = "0x000F1000"<br />
Size = "0x00000800"<br />
Sect = "0x00000400"<br />
<br />
[CONFIG]<br />
BaudRate = "1000000"<br />
ClearConfigOnConnect = "0x00"<br />
Security = "0xFF"<br />
ShieldStart = "0x0000"<br />
ShieldEnd = "0x000F"<br />
</source><br />
<br />
'''[OPTIONS]'''<br><br />
'''TargetPower'''<br><br />
If set to a value >0, power is applied to the target.<br />
The value defines the delay (in ms) after enabling the target power supply and before starting to communicate with the target.<br />
<br />
'''ChipErase'''<br><br />
If set to 1, the chip erase function is called for erasing the chip.<br><br />
{{Note|1=Do not enable this setting if the flash programming algorithm does not support chip erase.}}<br />
<br />
'''[TASKS]'''<br><br />
'''CheckBlank'''<br><br />
Defines if a blank check should be performed before erasing a sector.<br />
<br />
'''Erase'''<br><br />
Defines if the sector should be erased before programming.<br />
<br />
'''Program'''<br><br />
Defines if the sector should be programmed.<br />
<br />
'''Verify'''<br><br />
Defines if the sector should be verified after programming.<br />
<br />
'''Secure'''<br><br />
Defines if the device should be secured or protected against read-out after verifying.<br />
<br />
'''[DEVICE]'''<br><br />
'''Algo'''<br><br />
File name of the flash programming algorithm. This file is provided by SEGGER and will typically support a series of devices.<br />
<br />
'''Data'''<br><br />
File name of the data file to program. The Flasher only supports the Flasher .dat file format.<br />
Flasher .dat files can be generated by J-Flash or Universal Flash Loader and offer high performance together with high flexibility.<br />
<br />
'''[BANKx]'''<br><br />
x blocks with configuration data for the flash banks. All three parameters (Base, Size and Sect) are mandatory.<br />
<br />
'''Base'''<br><br />
Base address of the flash bank.<br />
<br />
'''Size'''<br><br />
Total size of the flash bank.<br />
<br />
'''Sect'''<br><br />
Sector size of the flash bank.<br />
<br />
'''[CONFIG]'''<br><br />
This section includes specific configuration data for the flash programming algorithm.<br><br />
There are no general parameters.<br />
<br />
{{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. }}<br />
<br />
==== Preparing using the PC utility ====<br />
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.<br />
<br />
[[File:Universal Flash Loader.png]]<br />
<br />
The Universal Flash Loader Configurator comes with a large list of devices and flash programming algorithms. If you are going to<br />
use a device from one of the supported families which currently is not available in the utility, feel free to contact the support.<br />
<br />
=== Multiple File Support ===<br />
<br />
It is also possible to have multiple data files and config files on Flasher, to make Flasher more easy to use in production environment.<br />
To choose the correct configuration file and data file pair, a <tt>FLASHER.INI</tt> file is used.<br />
This init file contains a <tt>[FILES]</tt> section which describes which configuration file and which data file should be used for programming.<br />
A sample content of a FLASHER.INI file is shown below:<br><br />
<br />
<source><br />
[FILES]<br />
DataFile = "Flasher1.dat"<br />
ConfigFile = "Flasher1.cfg"<br />
</source><br />
<br />
Using this method all configuration files and data files which are used in the production only have to be downloaded once.<br />
From there on a configuration file / data file pair can be switched by simply replacing the <tt>FLASHER.INI</tt> by a new one,<br />
which contains the new descriptions for the configuration file and data file. The <tt>FLASHER.INI</tt> can be replaced in two ways:<br />
<ol><br />
<li>Boot Flasher in file access mode in order to replace the <tt>FLASHER.INI</tt></li><br />
<li><br />
If Flasher is already integrated into the production line, runs in stand-alone mode and can not be booted in other mode:<br />
Use the file I/O commands provided by the ASCII interface of Flasher, to replace the <tt>FLASHER.INI</tt>.<br />
For more information about the file I/O commands, please refer to [[#File I/O commands | File I/O commands]].<br />
</li><br />
</ol><br />
{{Note|1=Flasher supports 8.3 filenames only (8 characters filename, 3 characters file extension). Using longer filenames may result in incorrect operation.}}<br />
<br />
==== Flasher Portable specifics ====<br />
<br />
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><br />
<br />
Which config / data file pair is used for which image selection position is determined by the contents of the FLASHER.INI.<br />
For this, the FLASHER.INI contents in the <tt>[FILES]</tt> section have been extended.<br />
The sample below shows how to enable the user to select between four different images on the Flasher portable via the select / arrow button:<br />
<br />
<source><br />
[FILES]<br />
DataFile = "First.dat"<br />
ConfigFile = "First.cfg"<br />
DataFile1 = "Second.dat"<br />
ConfigFile1 = "Second.cfg"<br />
DataFile2 = "Third.dat"<br />
ConfigFile2 = "Third.cfg"<br />
DataFile3 = "Fourth.dat"<br />
ConfigFile3 = "Fourth.cfg"<br />
</source><br />
<br />
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.<br />
From there on, switching between the files can be done by simply using the selection button of Flasher Portable.<br />
<br />
===== Example =====<br />
<br />
1 Target, 2 Datafiles (e.g. boot loader und application) --> same configuration file (*.CFG) but different data files (*.DAT) should be used.<br><br />
<br />
* Open pre-configured J-Flash project<br />
* File -> Save Flasher config file ... (DEFAULT.CFG)<br />
* Open data file 1 (boot loader)<br />
* File -> Save Flasher data file ... (BOOT.DAT)<br />
* Open data file 2 (application)<br />
* File -> Save Flasher data file ... (APP.DAT)<br />
* Create the a FLASHER.INI file (content see below)<br />
* Connect the Flasher in file access mode to the PC<br />
* Copy DEFAULT.CFG, BOOT.DAT, APP.DAT and FLASHER.INI on the Flasher<br />
<br />
FLASHER.INI content:<br><br />
<br />
<source><br />
[FILES]<br />
DataFile = "BOOT.DAT"<br />
ConfigFile = "DEFAULT.CFG"<br />
DataFile1 = "APP.DAT"<br />
ConfigFile1 = "DEFAULT.CFG"<br />
</source><br />
<br />
==== Flasher Portable PLUS specifics ====<br />
<br />
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><br />
<br />
Which config / data file pair is used for which image selection position is determined by the contents of the FLASHER.INI.<br />
For this, the FLASHER.INI may contain several <tt>[BATCH]</tt> sections.<br />
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:<br />
<br />
<source><br />
[BATCH]<br />
DataFile = "First.dat"<br />
ConfigFile = "First.cfg"<br />
[BATCH1]<br />
DataFile = "Second.dat"<br />
ConfigFile = "Second.cfg"<br />
[BATCH2]<br />
DataFile = "Third.dat"<br />
ConfigFile = "Third.cfg"<br />
[BATCH7]<br />
DataFile = "Proj_8.dat"<br />
ConfigFile = "Proj_8.cfg"<br />
[BATCH15]<br />
DataFile = "Proj_16.dat"<br />
ConfigFile = "Proj_16.cfg"<br />
</source><br />
<br />
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.<br />
From there on, switching between the files can be done by simply using the selection button of Flasher Portable PLUS.<br />
<br />
Please also consider the chapter [[#Batch Programming in stand-alone mode | Batch Programming in stand-alone mode]].<br />
<br />
{{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.}}<br />
{{Note|1=You may have gaps in the list. The missing entries will be skipped when selecting the next configuration.}}<br />
{{Note|1=The <tt>[Files]</tt> section is supported by the Flasher Portable PLUS, too. But the number of configuration is limited to four.}}<br />
<br />
===== Example =====<br />
<br />
1 Target, 2 Datafiles (e.g. boot loader und application) --> same configuration file (*.CFG) but different data files (*.DAT) should be used.<br><br />
<br />
* Open pre-configured J-Flash project<br />
* File -> Save Flasher config file ... (DEFAULT.CFG)<br />
* Open data file 1 (boot loader)<br />
* File -> Save Flasher data file ... (BOOT.DAT)<br />
* Open data file 2 (application)<br />
* File -> Save Flasher data file ... (APP.DAT)<br />
* Create the a FLASHER.INI file (content see below)<br />
* Connect the Flasher in file access mode to the PC<br />
* Copy DEFAULT.CFG, BOOT.DAT, APP.DAT and FLASHER.INI on the Flasher<br />
<br />
FLASHER.INI content:<br><br />
<br />
<source><br />
[BATCH]<br />
DataFile = "BOOT.DAT"<br />
ConfigFile = "DEFAULT.CFG"<br />
DisplayName = "Bootloader"<br />
[BATCH1]<br />
DataFile = "APP.DAT"<br />
ConfigFile = "DEFAULT.CFG"<br />
DisplayName = "Application"<br />
[BATCH2]<br />
DataFile = "BOOT.DAT"<br />
ConfigFile = "DEFAULT.CFG"<br />
DataFile1 = "APP.DAT"<br />
ConfigFile1 = "DEFAULT.CFG"<br />
DisplayName = "BL and App"<br />
</source><br />
<br />
=== Custom labels ===<br />
<br />
Flasher supports to assign custom labels to configurations. This allows to specify easy to remember names for configurations that are stored on the Flasher.<br />
<br />
==== Hardware and software requirements ====<br />
This feature is supported by the following models:<br />
* Flasher Portable PLUS<br />
<br />
This feature is supported since V6.30e of the software package and firmware<br />
<br />
==== Assigning labels ====<br />
The configuration and data file pairs are specified in the <tt>FLASHER.INI</tt> file:<br />
<source><br />
[FILES]<br />
DataFile = "IMAGE0.dat"<br />
ConfigFile = "IMAGE0.cfg"<br />
DataFile1 = "IMAGE1.dat"<br />
ConfigFile1 = "IMAGE1.cfg"<br />
</source><br />
<br />
By default, Flasher will show the names of the configuration and data file:<br />
[[File:FW1_smartwatch_nolabel.png]]<br />
[[File:FW2_smart_meter_nolabel.png]]<br />
<br />
By adding <tt>DisplayName</tt>, <tt>DisplayName1</tt>, ... keys to the <tt>FLASHER.INI</tt>, a custom label can be shown instead:<br />
<source><br />
[FILES]<br />
DisplayName = "FW smartwatch"<br />
DataFile = "IMAGE0.dat"<br />
ConfigFile = "IMAGE0.cfg"<br />
DisplayName1 = "FW smart meter"<br />
DataFile1 = "IMAGE1.dat"<br />
ConfigFile1 = "IMAGE1.cfg"<br />
</source><br />
<br />
The images will now be shown as follows:<br />
[[File:FW1_smartwatch_label.png]]<br />
[[File:FW2_smart_meter_label.png]]<br />
<br />
==== Considerations ====<br />
* 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.<br />
<br />
=== Programming multiple targets ===<br />
<br />
It is possible to program multiple targets which are located in a JTAG chain.<br />
The targets will be programmed each with a configuration and a data file.<br />
The configuration for the desired target must be selected before it can be programmed,<br />
this can be done with the <tt>#SELECT</tt> command.<br />
For more information how to use the <tt>#SELECT</tt> command please refer to Chapter "3.3.5 ''Commands to Flasher''".<br />
<br />
'''Example'''<br><br />
Three devices should be programmed.<br><br />
<br />
JTAG Chain: ''TDI'' --> ''Device2'' --> ''Device1'' --> ''Device0'' --> ''TDO''<br><br />
<br />
Three configurations would be stored on the flasher:<br><br />
<br />
Config 0: Configured to program Device0 (DEVICE0.CFG, DEVICE0.DAT)<br><br />
Config 1: Configured to program Device1 (DEVICE1.CFG, DEVICE1.DAT)<br><br />
Config 2: Configured to program Device2 (DEVICE2.CFG, DEVICE2.DAT)<br><br />
<br />
Selection and programming of the target will be done via the ASCII interface:<br><br />
<br />
<source><br />
#SELECT DEVICE0<br />
#AUTO<br />
#SELECT DEVICE1<br />
#AUTO<br />
#SELECT DEVICE2<br />
#AUTO<br />
</source><br />
<br />
==== Programming multiple targets with J-Flash ====<br />
<br />
Programming multiple targets can also be done via J-Flash using the command line interface.<br />
For this each target must be handled with its own project file.<br />
<br />
'''Example'''<br><br />
<br />
<source><br />
JFlash.exe -openproj"Device0.jflash" -open"Device0.hex" -auto -exit<br />
JFlash.exe -openproj"Device1.jflash" -open"Device1.hex" -auto -exit<br />
JFlash.exe -openproj"Device2.jflash" -open"Device2.hex" -auto -exit<br />
</source><br />
<br />
=== Batch Programming in stand-alone mode ===<br />
<br />
Batch programming allows to execute different stand-alone mode jobs in batch to be executed in immediate succession, without any user interaction in between.<br />
This can be used for example to program multiple targets in a JTAG-Chain or multiple data files to a target.<br><br />
A batch may contains an unlimited number of configurations which consist of a data file (*.DAT) and config file (*.CFG).<br />
For further information regarding config and data files, please refer to [[#Preparing for stand-alone operation manually | Preparing for stand-alone operation manually]].<br><br />
In order to specify the batch jobs, a FLASHER.INI file is used.<br />
This init file contains a [BATCH] section which describes which configuration pairs (*.DAT and *.CFG file) should be used for each batch job.<br />
A sample content of a FLASHER.INI file is shown below:<br><br />
<br />
<source><br />
[BATCH]<br />
DataFile = "Flasher0.dat"<br />
ConfigFile = "Flasher0.cfg"<br />
DataFile1 = "Flasher1.dat"<br />
ConfigFile1 = "Flasher1.cfg"<br />
</source><br />
<br />
[[File:Batch_Jobs.bmp]]<br />
<br />
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.<br />
<br />
<br />
[[File:Batch_Programming.bmp]]<br />
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<br />
currently executed action.<br />
<br />
<br />
[[File:Batch_Result.bmp]]<br />
The result of the programming will be shown on the screen after finishing all jobs.<br />
<br />
<br />
Creating / Replacing of the FLASHER.INI file can done in two ways:<br><br />
<ol><br />
<li>Boot Flasher in file access mode in order to replace the FLASHER.INI</li><br />
<li><br />
If Flasher is already integrated into the production line, runs in stand-alone mode and can not be booted in other mode:<br />
Use the file I/O commands provided by the ASCII interface of Flasher, to replace the FLASHER.INI .<br />
For more information about the file I/O commands, please refer to [[#File I/O commands | File I/O commands]].<br />
In case of an error occurred during execution, the Flasher terminates the entire batch processing.<br />
</li><br />
</ol><br />
{{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.}}<br />
{{Note|1=Flasher supports 8.3 filenames only (8 characters filename, 3 characters file extension). Using longer filenames may result in incorrect operation.}}<br />
<br />
==== Flasher Portable specifics ====<br />
<br />
Flasher Portable allows to choose between four different batches during runtime by using the select/arrow button on the front of Flasher Portable.<br />
Which batch configuration is used for which image selection position is specified in the FLASHER.INI.<br />
For this, the FLASHER.INI contents in the [BATCH] section have been extended.<br />
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><br />
<br />
<source><br />
[BATCH]<br />
DataFile = "Flasher0.dat"<br />
ConfigFile = "Flasher0.cfg"<br />
DataFile1 = "Flasher1.dat"<br />
ConfigFile1 = "Flasher1.cfg"<br />
DataFile2 = "Flasher2.dat"<br />
ConfigFile2 = "Flasher2.cfg"<br />
[BATCH1]<br />
DataFile = "TEST.dat"<br />
ConfigFile = "Test.cfg"<br />
[BATCH2]<br />
DataFile = "VALIDATE.dat"<br />
ConfigFile = "Flasher0.cfg"<br />
</source><br />
<br />
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.<br />
From there on, switching between the batches can be done by simply using the selection button of Flasher Portable.<br />
<br />
<br />
<br />
==== Examples ====<br />
<br />
'''Example 1:''' Programming two Data files to the same target<br><br />
<br />
* Open your J-Flash project.<br />
* Use File -> Save Flasher config file... to save the .CFG file (in this example: STM32F4.CFG).<br />
* Select the first binary and use File -> Save Flasher Data file... to save the first .DAT file (in this example: DATA0.DAT).<br />
* Select the second binary and use File -> Save Flasher Data file... to save the second data file .DAT file (in this example: DATA1.DAT).<br />
* Copy the Files to the Flasher e.g. by using file access mode.<br />
* Create a FLASHER.INI file in the root directory of the Flasher.<br />
* Exemplary content of FLASHER.INI:<br><br />
<source><br />
[BATCH]<br />
DataFile = "DATA0.dat"<br />
ConfigFile = "emPower.cfg"<br />
DataFile1 = "DATA1.dat"<br />
ConfigFile1 = "emPower.cfg"<br />
</source><br />
<br />
<br />
'''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><br />
Example scenario: 2 Devices in a JTAG chain, a STM32F1 and a STM32F4. <br><br />
<br />
* Follow the same as described before and additionally:<br />
* Create one project file per target (and create a .CFG file of each one).<br />
* Make sure each project file is configured correctly, especially the JTAG-Chain position (See UM8003 "J-Flash" for more detailed info).<br />
* Exemplary content of FLASHER.INI:<br><br />
<source><br />
[BATCH]<br />
DataFile = "F1DATA.dat"<br />
ConfigFile = "STM32F1.cfg"<br />
DataFile1 = "F4DATA0.dat"<br />
ConfigFile1 = "STM32F4.cfg"<br />
DataFile2 = "F4DATA1.dat"<br />
ConfigFile2 = "STM32F4.cfg"<br />
</source><br />
<br />
'''Example 3:''' Using multiple Batch sections with Flasher Portable.<br><br />
Example scenario: 2 Devices in a JTAG chain, a STM32F1 and a STM32F4.<br><br />
Selection 1 will program the STM32F1 target.<br><br />
Selection 2 will program the STM32F4 target using "F4DATA0.dat".<br><br />
Selection 3 will program the STM32F4 target using "F4DATA1.dat".<br><br />
Selection 4 will execute 1, 2 and 3 in sequence.<br><br />
* Exemplary content of FLASHER.INI:<br><br />
<source><br />
[BATCH]<br />
DataFile = "F1DATA.dat"<br />
ConfigFile = "STM32F1.cfg"<br />
[BATCH1]<br />
DataFile = "F4DATA0.dat"<br />
ConfigFile = "STM32F4.cfg"<br />
[BATCH2]<br />
DataFile = "F4DATA1.dat"<br />
ConfigFile = "STM32F4.cfg"<br />
[BATCH3]<br />
DataFile = "F1DATA.dat"<br />
ConfigFile = "STM32F1.cfg"<br />
DataFile1 = "F4DATA0.dat"<br />
ConfigFile1 = "STM32F4.cfg"<br />
DataFile2 = "F4DATA1.dat"<br />
ConfigFile2 = "STM32F4.cfg"<br />
</source><br />
<br />
=== Serial number programming ===<br />
<br />
Flasher supports programming of serial numbers. In order to use the serial number programming feature,<br />
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><br />
<br />
In general, Flasher supports two ways of programming a serial number into the target:<br />
<br />
#<br />
#* Programming continuous serial numbers.<br />
#* The serial number is 1-4 bytes in size.<br />
#* The start serial number, increment, serial number size, and address are configured in the J-Flash project.<br />
#<br />
#* Programming custom serial numbers from a serial number list file.<br />
#* The start line within the serial number list file to get the next serial number bytes, line increment, serial number size, and address is configured in the J-Flash project.<br />
#* The serial number list file needs to be specified and created by the user.<br />
<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.}}<br />
<br />
==== Serial number settings ====<br />
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.<br />
This is done by enabling the '''Program serial number''' option as shown in the screenshot and table below:<br />
<br />
[[File:UM08039_SN_Sample_JFlashSettings.png]]<br />
<br />
{| class="seggertable"<br />
|-<br />
!| Setting || Meaning<br />
|-<br />
| <tt>Address</tt> || The address the serial number should be programmed at.<br />
|-<br />
| <tt>Length</tt> ||<br />
The length of the serial number (in bytes) that 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 8 is selected as length, the serial number and its complement are programmed at the given address.<br />
* In case a serial number list file is given, the 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 '''Length''', the remaining bytes are filled with 0s. No complements etc. are added to the serial number.<br />
|-<br />
| <tt>Next SN</tt> ||<br />
* In case no serial number list file is given, '''Next SN''' is the next serial number which should be programmed. The serial number is always stored in flash memory in little-endian format.<br />
* In case a serial number list file is given, '''Next SN''' describes the line of the serial number list file where to read the next serial number bytes from. The Flasher starts counting at line 0, so in order to start serial number programming with the first line of the <tt>SNList.txt</tt>, '''Next SN''' needs to be set to 0.<br />
|-<br />
| <tt>Increment</tt> || Specifies by how much '''Next SN''' is incremented.<br />
|}<br />
<br />
=== Serial number file ===<br />
When selecting '''File -> Download serial number file to Flasher''', J-Flash will create a serial number file named as <tt><JFlashProjectName>_Serial.txt</tt>.<br />
This file is downloaded as <tt>Serial.txt</tt> on the Flasher.<br />
The file is generated based on the serial number settings in the J-Flash project and will contain the value defined by the '''Next SN''' option.<br />
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.<br />
<br />
==== Serial number list file ====<br />
<br />
In order to program custom serial numbers which can not be covered by the standard serial number scheme provided by J-Flash<br />
(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.<br />
<br />
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.<br />
This file is downloaded as <tt>SNList.txt</tt> on the 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<br />
* Each byte of the serial number is described by two hexadecimal digits.<br />
<br />
'''Example'''<br><br />
A 8-byte serial number should be programmed at address 0x08000000.<br><br />
<br />
It should be programmed as follows in the memory:<br><br />
<br />
<tt>0x08000000: 0x01 0x02 0x03 0x04 0x55 0x66 0x77 0x88</tt><br><br />
<br />
The serial number list file should look as follows:<br><br />
<br />
<tt>0102030455667788</tt><br />
<br />
[[File:SN_SNList.gif]]<br />
<br />
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><br />
<br />
Which line Flasher will read at the next programming cycle, is configured via the <tt>Next SN</tt> option in J-Flash.<br />
For more information, please refer to [[#Serial number settings | Serial number settings]].<br />
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><br />
<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.}}<br />
{{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.}}<br />
<br />
==== Programming process ====<br />
<br />
Flasher will increment the serial number in SERIAL.TXT by the value defined in <tt>Increment</tt>, after each successful programming cycle.<br><br />
<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><br />
<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.<br />
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.}}<br />
<br />
==== Downloading serial number files to Flasher ====<br />
<br />
Downloading the serial number files needs to be done explicitly by selecting '''File-> Download serial number file to Flasher'''.<br />
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.<br />
<br />
==== Sample setup ====<br />
<br />
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.<br />
<br />
'''Defining serial number address, length and start value'''<br><br />
In the J-Flash project the following needs to be defined:<br><br />
* <tt>Address</tt> is 0x08001000<br />
* <tt>Next SN</tt> is 1234567<br />
* <tt>Increment</tt> is 1<br />
* <tt>Len</tt> is 4 (bytes)<br />
<br />
[[File:SN_Sample_JFlashSettings.gif]]<br />
<br />
'''Downloading configuration, data and serial number to Flasher.'''<br><br />
After setting up the rest of the configuration (Target interface etc.) and selecting an appropriate data file, the configuration,<br />
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><br />
<br />
[[File:SN_Sample_DownloadToFlasher.gif]]<br />
<br />
After downloading the serial number to Flasher, J-Flash also created the <tt><JFlashProjectName>_Serial.txt</tt>.<br />
<br />
[[File:SN_Sample_SerialFileCreated.gif]]<br />
<br />
Now Flasher is prepared to program the 8-byte serial number.<br />
<br />
=== Patch file support ===<br />
<br />
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.<br />
Before starting programming process in stand-alone mode, Flasher will look for a file named <tt>Patches.txt</tt> being present on the Flasher.<br />
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><br />
<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.<br />
<br />
'''Syntax'''<br><br />
<!-- LG xxxxxxxxx '==' is shown as '=', so instead use '= ='--><br />
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><br />
<br />
<tt><NumPatches>,<Addr>,<NumBytes>:<nowiki><Data></nowiki>,<Addr>,<NumBytes>:<nowiki><Data></nowiki>,<Addr>,</tt><br><br />
<tt><NumBytes>:<nowiki><Data></nowiki>,<Addr>,<NumBytes>:<nowiki><Data></nowiki>\r\n</tt><br><br />
<br />
Find below a table which describes each parameter.<br><br />
{| class="seggertable"<br />
|-<br />
! Parameter !! Description<br />
|-<br />
| <tt><NumPatches></tt> || Describes the number of patches in this patch line. Max. value is 4.<br />
|-<br />
| <tt><Addr></tt> || Describes the address to be patched. Value is expected in hex.<br />
|-<br />
| <tt><NumBytes></tt> || Number of bytes for the current patch. Max. value is 20h (32 in decimal). Value is expected in hex.<br />
|-<br />
| <tt><nowiki><Data></nowiki></tt> || Describes the data to be patched. <nowiki><Data></nowiki> is always expected as 2 hexadecimal characters per byte.<br />
|-<br />
|}<br />
<br />
{{Note|1=All values are expected in hexadecimal format (hex).<br><br />
<nowiki><Data></nowiki> section is always preceded by ":", not ",".}}<br />
<br />
'''Example'''<br><br />
Below is an example patch.<br><br />
<br />
<source><br />
1,18,4:01020304\r\n<br />
</source><br />
<br />
Patching the following data:<br />
<br />
[[File:data_before.png]]<br />
<br />
with the example patch will result in the following data:<br />
<br />
[[File:data_afterwards.png]]<br />
<br />
Please note that as mentioned earlier patching undefined memory locations will be ignored.<br><br />
Applying the example patch to the following data:<br />
<br />
[[File:undefined_mem_before.png]]<br />
<br />
Causes no data to be patched, as can be seen in the following image:<br />
<br />
[[File:undefined_mem_no_token.png]]<br />
<br />
Therefore it is necessary to first write placeholder data to the memory locations which are supposed to be patched.<br><br />
An example for such a placeholder can be seen here:<br />
<br />
[[File:undefined_mem_token.png]]<br />
<br />
Please note that the actual data inside the placeholder does not matter to the Flasher,<br />
because it is overwritten during patching.<br><br />
Applying the example patch will now work as expected:<br />
<br />
[[File:undefined_mem_after.png]]<br />
<br />
'''Single patch via RS232'''<br><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><br />
<br />
Send the <tt>#AUTO PATCH <NumPatches>,<Addr>,<NumBytes>:<nowiki><Data></nowiki></tt><br><br />
<br />
command via Flasher ASCII interface. The parameters have the same function as described in the table above.<br />
<br />
==== Newline encoding ====<br />
<br />
In general, for all patch files, init files etc. Flasher supports both newline encodings:<br><br />
<br />
* Windows: \r\n<br />
* Unix/Mac: \n<br />
<br />
All parser functionality etc. are written to be independent from the host operating system.<br />
<br />
=== Limiting the number of programming cycles ===<br />
<br />
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.<br />
To make use of this feature, a file called <tt>Cntdown.txt</tt> needs to be placed on the Flasher.<br />
This file simply contains a decimal number (32-bit unsigned integer) that describes how many programming cycles can be performed with the current setup.<br />
<br />
[[File:CntdownTxtContent.jpg]]<br />
<br />
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><br />
<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>.}}<br />
<br />
==== Changed fail/error LED indicator behavior ====<br />
<br />
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><br />
<br />
* The red error/fail LED will lit for 1 second<br />
* After this, it will blink/toggle x times @ 5 Hz, indicating the number of programming cycles left. (blinking 5 times for 5 cycles left, ...)<br />
<br />
==== Required Flasher hardware version for Cntdown.txt support ====<br />
<br />
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><br />
<br />
* 1621xxxxx (Flasher ARM V2)<br />
* 1630xxxxx (Flasher ARM V3)<br />
* 4210xxxxx (Flasher PPC V1)<br />
* 4110xxxxx (Flasher RX V1)<br />
<br />
All other models / hardware versions support limiting of programming cycles.<br />
<br />
=== Authorized flashing ===<br />
<br />
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.<br />
without the possibility to read out the Flasher contents via file access mode, FILE I/O functionality (J-Link Commander) or RS232 commands.<br />
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.<br />
<br />
==== Creating / Adding the secure area ====<br />
<br />
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.<br />
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.<br />
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><br />
<br />
[[File:CreateSecArea.jpg]]<br />
<br />
The following secure area related commands are available in J-Link Commander:<br><br />
<br />
* securearea create<br />
* securearea remove<br />
<br />
{{Note|1=When creating or removing the <tt>secure area</tt>, all configuration and data files being stored on the Flasher, are lost.<br />
Please make sure that they are not needed anymore, before adding / removing the security area.}}<br />
<br />
==== Moving files to the secure area ====<br />
<br />
Before moving configuration + data to the <tt>secure area</tt>, proper functionality of the setup should be tested in stand-alone mode.<br />
Once the setup is working as expected, do the following, to move the configuration + data into the <tt>secure area</tt>:<br><br />
<br />
* Start Flasher in file access mode (For more info, please refer to: [[#file access mode | file access mode]])<br />
<br />
[[File:FilesBeforeSecure.png]]<br />
<br />
* Create a folder "<tt>_SECURE</tt>"<br />
* Move all files that shall be moved to the <tt>secure area</tt>, into this folder<br />
<br />
[[File:FilesAfterSecure.png]]<br />
<br />
* 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.<br />
* Now Flasher can be used in stand-alone mode, as normal, but the files cannot be read back by the user / operator.<br />
<br />
==== Considerations to be taken when using the secure area ====<br />
<br />
When using the <tt>secure area</tt>, some things need to be considered:<br><br />
<br />
* All features like multiple file support, patch file support etc. can also be used when operating from the <tt>secure area</tt>.<br />
* 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>.<br />
* 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>.<br />
* 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.<br />
<br />
==== Required Flasher hardware version ====<br />
<br />
Older Flasher models do not support authorized flashing. The Flashers with the following serial number ranges do not support authorized flashing:<br><br />
<br />
* 1621xxxxx (Flasher ARM V2)<br />
* 1630xxxxx (Flasher ARM V3)<br />
* 4210xxxxx (Flasher PPC V1)<br />
* 4110xxxxx (Flasher RX V1)<br />
<br />
All other models / hardware versions support authorized flashing.<br />
<br />
=== Target interfaces ===<br />
<br />
The table below shows the supported target interfaces of the different Flasher models.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! Supported interfaces<br />
|-<br />
| Flasher PRO || JTAG, SWD<br />
|-<br />
| Flasher Compact || JTAG, SWD<br />
|-<br />
| Flasher ARM || JTAG, SWD<br />
|-<br />
| Flasher RX || JTAG<br />
|-<br />
| Flasher PPC || JTAG<br />
|-<br />
|}<br />
<br />
For more information about the target interfaces itself, please refer to:<br><br />
<br />
* ''UM08001, chapter "Working with J-Link and J-Trace", section "JTAG interface"''<br />
* ''UM08001, chapter "Working with J-Link and J-Trace", section "SWD interface"''<br />
<br />
=== Supported architectures ===<br />
<br />
Flasher supports programming of the internal flash of a large number of different microcontrollers.<br />
The number of supported devices is steadily growing. You can always find the latest list of supported devices on our website:<br><br />
<br />
''http://www.segger.com/supported-devices.html''<br />
<br />
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.<br />
Also the existence of the device may have confidential status, so it might not be mentioned as being supported in public releases yet.<br />
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.<br />
<br />
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).<br />
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.<br />
<br />
If a device is not supported, you can always contact us. We will be happy to provide you with an offer.<br />
<br />
==== External flashes ====<br />
<br />
In general our Flashers support programming of external flashes listed below:<br>(Can differ between Flasher models and hardware versions)<br />
<br />
* parallel NOR flash<br />
* SPI / QSPI flash<br>(see: ''[[SPI_support_by_Flasher_models]]'')<br />
* NAND flash<br />
* I<sup>2</sup>C EEPROM/Flash<br />
* FRAM<br />
<br />
If the parallel NOR flash device which is used is not CFI-compliant you have to select the flash device in J-Flash explicitly,<br />
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''.<br />
<br />
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.<br />
The J-Flash software comes with sample projects for ''Open Flashloader''.<br />
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''<br />
{{Note|1=Complete Information about ''Open Flashloaders'' can be found in our Wiki:<br>''[[Open_Flashloader]]''}}<br />
<br />
==== Cores ====<br />
<br />
===== Flasher ARM =====<br />
<br />
Flasher ARM supports and has been tested with the following cores, but should work with any ARM7/9, Cortex-M0/M1/M3/M4 core.<br />
If you experience problems with a particular core, do not hesitate to contact Segger.<br><br />
<br />
* ARM7TDMI (Rev 1)<br />
* ARM7TDMI (Rev 3)<br />
* ARM7TDMI-S (Rev 4)<br />
* ARM920T<br />
* ARM922T<br />
* ARM926EJ-S<br />
* ARM946E-S<br />
* ARM966E-S<br />
* Cortex-M0<br />
* Cortex-M1<br />
* Cortex-M3<br />
* Cortex-M4<br />
<br />
===== Flasher RX =====<br />
<br />
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><br />
<br />
* RX610<br />
* RX621<br />
* RX62N<br />
* RX62T<br />
<br />
===== Flasher PPC =====<br />
<br />
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.<br />
<br />
* e200z0<br />
<br />
===== Flasher PRO/Compact/Portable PLUS =====<br />
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/''.<br />
<br />
=== Programming multiple targets in parallel ===<br />
<br />
To program multiple targets in parallel there are the following possibilities:<br />
* Using a Flasher gang, or<br />
* Using multiple Flashers, each connecting to one CPU.<br />
<br />
Devices for gang programming are:<br />
* 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)].<br />
* 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)].<br />
When using multiple flashers, this can be done with the J-Flash production programming software.<br />
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''<br />
<br />
=== Logfiles and Quality Management ===<br />
<br />
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:<br />
<source lang="c"><br />
SN: 1 - Failed<br />
SN: 1 - Failed<br />
SN: 2 - O.K. (931 ms)<br />
SN: 3 - O.K. (931 ms)<br />
SN: 4 - O.K. (933 ms)<br />
SN: 5 - O.K. (932 ms)<br />
</source><br />
If applicable, the logfile contains more detailed error messages. For example:<br />
<source lang="c"><br />
ERROR: Programming failed @ address 0x00000000 (1)<br />
ERROR: Cannot connect to CPU. Target interface speed too high?<br />
</source><br />
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:<br />
<source lang="c"><br />
Verify error config word area @<br />
config word<br />
config word read back<br />
Verify error flash area @<br />
data from file<br />
data read back<br />
</source><br />
{{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.}}<br />
<br />
== TCP Services ==<br />
This chapter describes the integrated TCP services.<br />
<br />
=== FTP Server ===<br />
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><br />
[[File:FTPServer.png]]<br />
<br />
==== Access data ====<br />
Anonymous access to the FTP server is limited to read-only access to the file system.<br><br />
For write access, special login credentials have to be used:<br><br />
<tt>Login: admin</tt><br><br />
<tt>Password: 1234</tt><br><br />
<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.<br />
It is not meant as a security feature.}}<br />
<br />
=== Web server ===<br />
<br />
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.<br />
For the network, the IP address settings can be changed and a nick name can be assigned to the device.<br><br />
<br />
Additionally, the web interface provides information about the status of the integrated operating system, the IP stack and the target hardware.<br />
<br />
== Remote control ==<br />
This chapter describes how to control the Flasher in standalone mode.<br />
<br />
=== Overview ===<br />
There are 3 ways to control Flasher operation:<br><br />
{| class="seggertable"<br />
! Type of control !! Description<br />
|-<br />
| Button || Programming operation starts when pressing the PROG-button. The LEDs serve as visible indicators.<br />
|-<br />
| Handshake || 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.<br />
|-<br />
| Terminal || Terminal communication via TELNET, RS232 or VCOM with the [[#ASCII command interface]]<br />
|}<br />
<br />
<br />
{{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.}}<br />
<br />
=== Handshake control ===<br />
<br />
Some Flasher models are equipped with additional hardware control functions that are connected to the SUBD9 male connector, normally used as an RS232 interface to the PC.<br />
These Flasher models can therefore be controlled remotely by automated testers without the need for a connection to a PC.<br />
<br />
The handshake control is available for the following Flashers:<br />
* Flasher ARM<br />
* Flasher PRO<br />
* Flasher Compact (via Flasher Hub and Flasher Hub-12 only)<br />
<br />
The following diagrams show the internal remote control circuitry of Flasher:<br><br />
<br />
[[File:FlasherRemotecontrol.png]]<br />
{| class="seggertable"<br />
|-<br />
! Pin No. !! Function !! Description<br />
|-<br />
| 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.<br />
|-<br />
| 4 || BUSY || As soon as the "Auto" function is started, BUSY becomes active, which means that transistor is switched OFF.<br />
|-<br />
| 5 || GND || Common Signal ground.<br />
|-<br />
| 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.<br />
|-<br />
|}<br />
[[File:FlasherRemoteSignal.png]]<br />
<br />
=== ASCII command interface ===<br />
<br />
==== Introduction ====<br />
<br />
Once set up using J-Flash, the Flasher can be driven by any application or just a simple terminal using ASCII commands.<br><br />
<br />
Every known command is acknowledged by the Flasher and then executed. After command execution, Flasher sends an ASCII reply message.<br><br />
<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}}<br />
<br />
==== General command and reply message format ====<br />
<br />
* Any ASCII command has to start with the start delimiter ''#''.<br />
* Any ASCII command has to end with simple carriage return ('\r', ASCII code 13).<br />
* Commands can be sent upper or lower case<br />
<br />
==== General usage ====<br />
<br />
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.<br />
<br />
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).<br />
<br />
==== Settings for ASCII interface via RS232 ====<br />
<br />
Flasher is driven via a RS232 serial port with the following interface settings:<br><br />
<br />
* 9600 baud<br />
* 8 data bits<br />
* no parity<br />
* 1 stop bit<br />
<br />
The baud rate can be changed by using the <tt>#BAUDRATE</tt> command.<br />
<br />
==== Settings for ASCII interface via Telnet ====<br />
<br />
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><br />
<br />
[[File:telnet_connection.gif]]<br />
<br />
==== Settings for ASCII interface via VCOM ====<br />
<br />
The same settings can be used for VCOM as for [[#Settings for ASCII interface via RS232|RS232]].<br />
<br />
{{Note|The performance also depends on the terminal application used on the PC.}}<br />
<br />
==== Commands and replies ====<br />
<br />
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><br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| Commands to the Flasher<br />
|-<br />
| <tt>#BAUDRATE <Baudrate></tt><br />
|-<br />
| <tt>#AUTO</tt><br />
|-<br />
| <tt>#AUTO PATCH</tt><br />
|-<br />
| <tt>#AUTO NOINFO</tt><br />
|-<br />
| <tt>#CANCEL</tt><br />
|-<br />
| <tt>#ERASE</tt><br />
|-<br />
| <tt>#PROGRAM</tt><br />
|-<br />
| <tt>#RESULT</tt><br />
|-<br />
| <tt>#SELECT <Filename></tt><br />
|-<br />
| <tt>#START</tt><br />
|-<br />
| <tt>#STATUS</tt><br />
|-<br />
| <tt>#VERIFY</tt><br />
|-<br />
| <tt>#READ</tt><br />
|-<br />
| <tt>#QUIT</tt><br />
|-<br />
| <tt>#VERBOSE <Level></tt><br />
|-<br />
!colspan="100%"| File I/O commands<br />
|-<br />
| <tt>#FCLOSE</tt><br />
|-<br />
| <tt>#FCRC</tt><br />
|-<br />
| <tt>#FDELETE <Filename></tt><br />
|-<br />
| <tt>#FOPEN <Filename></tt><br />
|-<br />
| <tt>#FREAD <Offset>,<NumBytes></tt><br />
|-<br />
| <tt>#FSIZE</tt><br />
|-<br />
| <tt>#FWRITE <Offset>,<NumBytes>:<nowiki><Data></nowiki></tt><br />
|-<br />
| <tt>#FLIST</tt><br />
|-<br />
| <tt>#MKDIR <Dirname></tt><br />
|-<br />
!colspan="100%"| SecureArea commands<br />
|-<br />
| <tt>#HASSECUREAREA</tt><br />
|-<br />
| <tt>#SECUREAREA <action></tt><br />
|-<br />
!colspan="100%"| Replies from the Flasher<br />
|-<br />
| <tt>#ACK</tt><br />
|-<br />
| <tt>#NACK</tt><br />
|-<br />
| <tt>#OK</tt><br />
|-<br />
| <tt>#OK:<NumBytes>:<nowiki><Data></nowiki></tt><br />
|-<br />
| <tt>#OK:<Size></tt><br />
|-<br />
| <tt>#STATUS:</tt><br />
|-<br />
| <tt>#DONE</tt><br />
|-<br />
| <tt>#ERRxxx</tt><br />
|-<br />
|}<br />
<br />
===== Commands to the Flasher =====<br />
<br />
'''#AUTO'''<br><br />
The <tt>#AUTO</tt> command behaves exactly as the start button or external remote control input.<br><br />
<br />
Usually, the following command sequence will be performed when receiving the <tt>#AUTO</tt> command:<br><br />
<br />
* The Flasher erases the target CPU (if not blank)<br />
* The Flasher programs the target CPU<br />
* The Flasher verifies the target CPU<br />
<br />
Depending on the settings chosen in the '''Production''' tab in J-Flash, this sequence can differ from the one shown above.<br><br />
<br />
Finally, Flasher responds with<br><br />
<br />
* <tt>#OK</tt> if no error occurred<br />
* <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.<br />
<br />
During execution of the <tt>#AUTO</tt> command, Flasher automatically sends "status" messages via RS232 to reflect the state of execution.<br />
Typically during execution of <tt>#AUTO</tt> command, Flasher will reply the following sequence of messages:<br><br />
<br />
<tt>#ACK</tt><br><br />
<tt>#STATUS:INITIALIZING</tt><br><br />
<tt>#STATUS:CONNECTING</tt><br><br />
<tt>#STATUS:UNLOCKING</tt><br><br />
<tt>#STATUS:ERASING</tt><br><br />
<tt>#STATUS:PROGRAMMING</tt><br><br />
<tt>#STATUS:VERIFYING</tt><br><br />
<tt>#OK (Total 13.993s, Erase 0.483s, Prog 9.183s, Verify 2.514s)</tt><br><br />
<br />
'''#AUTO PATCH'''<br><br />
The <tt>#AUTO</tt> PATCH command allows patching of the content of the data to be programmed.<br><br />
<br />
Flasher responds with<br><br />
<br />
* <tt>#OK</tt> if no error occurred<br />
* <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.<br />
<br />
For further information about the usage of the <tt>#AUTO PATCH</tt> command please refer to [[#Patch file support | Patch file support]].<br />
<br />
'''#AUTO NOINFO'''<br><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><br />
<br />
The command ends with <tt>#OK</tt> or <tt>#ERRxxx</tt><br />
<br />
'''#BAUDRATE <Baudrate>'''<br><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><br />
<br />
If this command succeeds, Flasher responds with:<br><br />
<br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<br />
Otherwise it will respond with one of the following error messages:<br><br />
<br />
<tt>#ERR255: Invalid parameters</tt><br><br />
<tt>or</tt><br><br />
<tt>#ERR255: Baudrate is not supported</tt><br><br />
<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.<br />
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.}}<br />
<br />
'''#CANCEL'''<br><br />
This command can be sent to abort a running program. It may take a while until the current program is actually canceled.<br><br />
<br />
Flasher will respond with:<br><br />
<br />
<tt>#ERR007:CANCELED.</tt><br><br />
<br />
'''#ERASE'''<br><br />
This command can be sent to erase all selected target flash sectors.<br><br />
<br />
Flasher will reply the following sequence of messages:<br><br />
<br />
<tt>#ACK</tt><br><br />
<tt>#STATUS:INITIALIZING</tt><br><br />
<tt>#STATUS:CONNECTING</tt><br><br />
<tt>#STATUS:UNLOCKING</tt><br><br />
<tt>#STATUS:ERASING</tt><br><br />
<tt>#OK (Total 0.893s, Erase 0.483s)</tt><br><br />
<br />
'''#PROGRAM'''<br><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.<br />
<br />
'''#RESULT'''<br><br />
This command can be sent any time, even during other command execution. Flasher responds with the last result of the previously executed command.<br />
<br />
'''#SELECT <Filename>'''<br><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.<br />
<tt><Filename></tt> specifies the name of file pair without extensions (.CFG and .DAT) on the Flasher which should be selected. If you are<br />
using the universal flash programming mode, <tt><Filename></tt> specifies the full name of the .UNI file '''including''' the extension.<br />
Flasher saves the selected config and data file in the FLASHER.INI file. So this selection is remembered even between power-cycling Flasher.<br><br />
<br />
This may be verfy helpful in cases where several config and data files are stored on Flasher.<br />
The user can easily switch between these config and data files without connecting Flasher to a host.<br><br />
<br />
If this command succeeds, Flasher responds with:<br><br />
<br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<br />
Find below a sample sequence which shows how to use the <tt>#SELECT</tt> command:<br><br />
<br />
<tt>#SELECT ATSAM7_1 // ATSAM7_1.CFG and ATSAM7_1.DAT is selected</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<tt>#AUTO // Start auto programming</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#STATUS:INITIALIZING</tt><br><br />
<tt>#STATUS:CONNECTING</tt><br><br />
<tt>#STATUS:UNLOCKING</tt><br><br />
<tt>#STATUS:ERASING</tt><br><br />
<tt>#STATUS:PROGRAMMING</tt><br><br />
<tt>#STATUS:VERIFYING</tt><br><br />
<tt>#OK (Total 8.416s, Erase 0.005s, Prog 6.845s, Verify 0.959s)</tt><br><br />
<tt>#SELECT ATSAM7_2 // ATSAM7_2.CFG and ATSAM7_2.DAT is selected</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<tt>#AUTO // Start auto programming</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#STATUS:INITIALIZING</tt><br><br />
<tt>#STATUS:CONNECTING</tt><br><br />
<tt>#STATUS:UNLOCKING</tt><br><br />
<tt>#STATUS:ERASING</tt><br><br />
<tt>#STATUS:PROGRAMMING</tt><br><br />
<tt>#STATUS:VERIFYING</tt><br><br />
<tt>#OK (Total 8.632s, Erase 0.005s, Prog 7.051s, Verify 0.969s)</tt><br><br />
<br />
'''#START'''<br><br />
This command can be sent to start the application using the method configured in the J-Flash project.<br />
<br />
Flasher will reply with the following sequence of messages:<br><br />
<br />
<tt>#ACK</tt><br><br />
<tt>#STATUS:INITIALIZING</tt><br><br />
<tt>#STATUS:CONNECTING</tt><br><br />
<tt>#OK (Total 1.148s)</tt><br><br />
<br />
'''#STATUS'''<br><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]].<br />
<br />
'''#VERIFY'''<br><br />
This command can used to verify the target flash content against the data stored in Flasher.<br />
<br />
'''#READ'''<br><br />
Only available for devices supported by U-Flash.<br><br />
This command can used to read out flash data.<br><br />
More information: [https://wiki.segger.com/Flasher/How_to_read_data_from_a_device_using_U-Flash How to read data using U-Flash]<br />
<br />
'''#QUIT'''<br><br />
This command can be used to terminate the active telnet connection from the server side (Flasher).<br />
The command provides an easy way to terminate the session from an automated script.<br />
It is not necessary to parse stdout and switch to local command mode to disconnect.<br />
Not implemented in the Flasher ATE or Flasher Hub.<br />
<br />
'''#VERBOSE <Level>'''<br><br />
This command can be used to change the verbosity level. <br><br />
* Verbosity level 0: Default. <br><br />
* Verbosity level 1: Provides some additional messages during the programming process.<br />
<br />
===== File I/O commands =====<br />
<br />
The ASCII interface of the Flasher also supports file I/O operations.<br />
<br />
The following file I/O commands are supported:<br><br />
<br />
'''#FCLOSE'''<br><br />
The <tt>#FCLOSE</tt> command closes the file on Flasher which was opened via <tt>#FOPEN</tt>.<br />
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><br />
<br />
A typical sequence when using the <tt>#FCLOSE</tt> command does look like as follows:<br><br />
<br />
<tt>#FCLOSE</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<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><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:No file opened</tt><br />
}}<br />
<br />
'''#FCRC'''<br><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>.<br />
The CRC will be also reported by J-Flash when downloading or saving files via J-Flash.<br><br />
<br />
A typical sequence when using the <tt>#FCRC</tt> command does look like as follows:<br><br />
<br />
<tt>#FCRC flasher.dat</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK:0x75BC855A</tt><br><br />
<br />
'''#FDELETE <Filename>'''<br><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><br />
<br />
A typical sequence when using the <tt>#FDELETE</tt> command does look like as follows:<br><br />
<br />
<tt>#FDELETE flasher.dat</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<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><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:Failed to delete file</tt><br />
}}<br />
<br />
'''#FOPEN <Filename>'''<br><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.<br />
If <tt><Filename></tt> can not be found on Flasher a new one will be created.<br><br />
<br />
A typical sequence using the <tt>#FOPEN</tt> command does look like as follows:<br><br />
<br />
<tt>#FOPEN flasher.dat</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<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><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:A file has already been opened</tt><br />
}}<br />
<br />
'''#FREAD <Offset>,<NumBytes>'''<br><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.<br />
<tt><NumBytes></tt> specifies the number of bytes which should be read.<br><br />
<br />
A typical sequence when using the <tt>#FREAD</tt> command does look like as follows:<br><br />
<br />
<tt>#FREAD 0,4</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK:04:466c6173</tt><br><br />
<br />
If the <tt>#FREAD</tt> command succeeds, Flasher will finally respond with a <tt>#OK:<NumBytes>:<nowiki><Data></nowiki></tt> reply message.<br />
For more information about the Flasher reply messages, please refer to [[#Replies from Flasher | Replies from Flasher]].<br><br />
<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><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:No file opened</tt>}}<br />
<br />
'''#FSIZE'''<br><br />
The <tt>#FSIZE</tt> command is used to get the size of the currently opened file on Flasher.<br><br />
<br />
A typical sequence when using the <tt>#FSIZE</tt> command does look like as follows:<br><br />
<br />
<tt>#FSIZE</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK:10 // file on flasher which is currently open, has a size of 16 bytes</tt><br><br />
<br />
If the <tt>#FSIZE</tt> command succeeds, Flasher will respond with a <tt>#OK:<Size></tt> reply message.<br />
For more information about the Flasher reply messages, please refer to [[#Replies from Flasher | Replies from Flasher]].<br><br />
<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><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:No file opened</tt>}}<br />
<br />
'''#FWRITE <Offset>,<NumBytes>:<nowiki><Data></nowiki>'''<br><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.<br />
<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.<br />
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><br />
<br />
<tt><Offset></tt> and <tt><NumBytes></tt> are expected in hexadecimal format.<br><br />
<br />
<tt>#FWRITE 0,200:<nowiki><Data></nowiki></tt><br><br />
<tt>#FWRITE 200,200:<nowiki><Data></nowiki></tt><br><br />
<br />
The data is expected in hexadecimal format (two hexadecimal characters per byte). The following example illustrates the use of <tt>#FWRITE</tt>:<br />
<br />
<tt>Data to be send: Hello !</tt><br><br />
<tt>ASCII values: 0x48, 0x65, 0x6C, 0x6C, 0x6F, 0x20, 0x21</tt><br><br />
<br />
<tt>#FWRITE 0,7:48656C6C6F2021</tt><br><br />
<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><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:No file opened</tt><br>}}<br />
<br />
'''#FLIST'''<br><br />
The <tt>#LIST</tt> command is used to list all files stored on the Flasher.<br><br />
<br />
A typical sequence using the <tt>#FLIST</tt> command does look like as follows:<br><br />
<br />
<tt>#FLIST</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>FLASHER.INI Size: 60</tt><br><br />
<tt>SERIAL.TXT Size: 3</tt><br><br />
<tt>FLASHER.LOG Size: 207</tt><br><br />
<tt>FOLDER (DIR)</tt><br><br />
<tt>FOLDER\\TEST1.CFG Size: 2048</tt><br><br />
<tt>FOLDER\\TEST1.DAT Size: 12288</tt><br><br />
<tt>#OK</tt><br><br />
<br />
'''#MKDIR <Dirname>'''<br><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><br />
<br />
A typical sequence using the <tt>#MKDIR</tt> command does look like as follows:<br><br />
<br />
<tt>#MKDIR folder</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<br />
{{Note|1=If the directory can not be created because of a bad <tt><Dirname></tt> argument, Flasher will respond with:<br><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:Failed to create directory</tt><br>}}<br />
<br />
===== Secure Area Commands =====<br />
<br />
'''#HASSECUREAREA'''<br><br />
The <tt>#HASSECUREAREA</tt> command checks if the Flasher is configured with a secure area.<br />
<br />
<tt>#RESULT:YES</tt> indicates the secure area is present, <tt>#RESULT:NO</tt> indicates no secure area is present.<br />
<br />
'''#SECUREAREA'''<br><br />
The <tt>#SECUREAREA <action></tt> command allows to create or remove the secure area on the Flasher.<br />
<br />
* the action <tt>CREATE</tt> creates the secure area.<br />
* the action <tt>REMOVE</tt> will remove the secure area.<br />
<br />
A typical sequence using the <tt>#SECUREAREA</tt> command does look like as follows:<br><br />
<br />
<tt>#SECUREAREA CREATE</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#DONE</tt><br><br />
<br />
{{Note|1=When creating or removing the <tt>secure area</tt>, all configuration and data files being stored on the Flasher, are lost.<br />
Please make sure that they are not needed anymore, before adding / removing the security area.}}<br />
<br />
<br />
<br />
===== Replies from Flasher =====<br />
<br />
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.<br />
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.<br />
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><br />
<br />
<tt>#OK (Total 13.993s, Erase 0.483s, Prog 9.183s, Verify 2.514s)</tt><br><br />
<br />
The following reply messages from Flasher are defined:<br><br />
<br />
'''#ACK'''<br><br />
Flasher replies with <tt>#ACK</tt> message on reception of any defined command before the command itself is executed.<br />
<br />
'''#NACK'''<br><br />
Flasher replies with <tt>#NACK</tt>, if an undefined command was received.<br />
<br />
'''#OK'''<br><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.<br />
<br />
'''#OK:<NumBytes>:<nowiki><Data></nowiki>'''<br><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.<br />
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).<br />
<br />
'''#OK:<Size>'''<br><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.<br />
<br />
'''#STATUS:'''<br><br />
The Flasher replies with its current state.<br><br />
<br />
The following status messages are currently defined:<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Message !! Description<br />
|-<br />
| <tt>#STATUS:READY</tt> || Flasher is ready to receive a new command.<br />
|-<br />
| <tt>#STATUS:CONNECTING</tt> || Flasher initializes connection to target CPU.<br />
|-<br />
| <tt>#STATUS:INITIALIZING</tt> || Flasher performs self check and internal init.<br />
|-<br />
| <tt>#STATUS:UNLOCKING</tt> || Unlocking flash sectors.<br />
|-<br />
| <tt>#STATUS:ERASING</tt> || Flasher is erasing the flash of the target device.<br />
|-<br />
| <tt>#STATUS:PROGRAMMING</tt> || Flasher is programming the flash of the target device.<br />
|-<br />
| <tt>#STATUS:VERIFYING</tt> || Flasher verifies the programmed flash contents.<br />
|-<br />
|}<br />
<br />
'''#ERRxxx'''<br><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><br />
<br />
Some error codes may be followed by colon and an additional error text.<br><br />
<br />
For example:<br><br />
<br />
<tt>#ERR007:CANCELED.</tt><br><br />
<br />
The error code numbers are described in the following table:<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Message !! Description<br />
|-<br />
| <tt>#ERR007</tt> || Flasher received <tt>#CANCEL</tt> command and has canceled the current operation.<br />
|-<br />
| <tt>#ERR008</tt> || Flasher is already busy with execution of previous command.<br />
|-<br />
| <tt>#ERR009</tt> || Failed to allocate memory.<br />
|-<br />
| <tt>#ERR010</tt> || Failed to open file.<br />
|-<br />
| <tt>#ERR011</tt> || Failed to read file.<br />
|-<br />
| <tt>#ERR012</tt> || Failed to write file.<br />
|-<br />
| <tt>#ERR013</tt> || Failed to delete file.<br />
|-<br />
| <tt>#ERR255</tt> || Undefined error occurred. This reply is followed by an error string.<br />
|-<br />
|}<br />
<br />
== Performance ==<br />
<br />
The following chapter lists programming performance of common flash devices andmicrocontrollers.<br />
<br />
=== Performance of MCUs with internal flash memory ===<br />
<br />
==== Flasher ARM ====<br />
<br />
The following table lists program and erase performance values of Flasher ARM for different controllers.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Microcontroller !! Size [kByte] !! Erase time [sec] !! Program time [sec] !! Verify time [sec] !! Total time [sec]<br />
|-<br />
| Analog Devices || 62 || 2.943 || 2.286 || 0.563 || 5.792<br />
|-<br />
| Atmel AT91SAM7S64 || 64 || --- || 3.488 || 0.438 || 3.926<br />
|-<br />
| Atmel AT91SAM7S256 || 256 || --- || 7.709 || 1.053 || 8.762<br />
|-<br />
| NXP LPC1768 || 512 || 3.740 || 8.559 || 5.092 || 17.391<br />
|-<br />
| NXP LPC2106 || 120 || 0.448 || 1.204 || 0.634 || 2.286<br />
|-<br />
| NXP LPC2129 || 248 || 0.449 || 2.916 || 1.347 || 4.712<br />
|-<br />
| NXP LPC2138 || 500 || 0.448 || 5.488 || 2.649 || 8.585<br />
|-<br />
| NXP LPC2148 || 500 || 0.448 || 5.632 || 2.721 || 8.801<br />
|-<br />
| NXP LPC2294 || 2048 || 0.808 || 15.976 || 9.669 || 26.453<br />
|-<br />
| NXP LPC2478 || 504 || 0.448 || 5.419 || 2.559 || 8.426<br />
|-<br />
| ST STM32F103ZE || 512 || 0.028 || 18.763 || 3.939 || 22.730<br />
|-<br />
| ST STR711 || 272 || 0.429 || 5.476 || 4.742 || 10.647<br />
|-<br />
| ST STR912 || 544 || 1.167 || 12.907 || 5.236 || 19.310<br />
|-<br />
| TI TMS470R1B1M || 1024 || 2.289 || 8.147 || 5.362 || 15.798<br />
|-<br />
|}<br />
<br />
==== Flasher PRO ====<br />
See Flasher ARM.<br />
<br />
==== Flasher Compact ====<br />
See Flasher ARM.<br />
<br />
==== Flasher RX ====<br />
<br />
The following table lists program and erase performance values of Flasher RX.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Microcontroller !! Size [kByte] !! Erase time [sec] !! Program time [sec] !! Verify time [sec] !! Total time [sec]<br />
|-<br />
| R5F56108 || 2.048 || 9.523 || 11.915 || 3.890 || 25.585<br />
|-<br />
|}<br />
<br />
==== Flasher PPC ====<br />
<br />
The following table lists program and erase performance values of Flasher PPC.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Microcontroller !! Size [kByte] !! Erase time [sec] !! Program time [sec] !! Verify time [sec] !! Total time [sec]<br />
|-<br />
| ST SPC560B50 || 576 || 4.747 || 4.159 || 1.929 || 10.917<br />
|-<br />
|}<br />
<br />
== Hardware ==<br />
<br />
This chapter gives an overview about Flasher specific hardware details,<br />
such as the pinouts and available adapters.<br />
<br />
=== Flasher ARM 20-pin JTAG/SWD Connector ===<br />
<br />
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.<br />
<br />
==== Pinout JTAG ====<br />
<br />
[[File:jtag_port_20pin.jpg]] <!-- LG xxxxxx image has been cropped to fit page --><br />
<br />
The following table lists the Flasher JTAG pinout.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! PIN !! SIGNAL !! TYPE !! Description<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 13 || TDO || Input || JTAG data output from target CPU. Typically connected to TDO of target CPU.<br />
|-<br />
| 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".<br />
|-<br />
| 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.<br />
|-<br />
| 19 || 5V-Target supply || Output || This pin is used to supply power to some eval boards. Typically left open on target hardware.<br />
|-<br />
|}<br />
<br />
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.<br />
<br />
==== Pinout SWD ====<br />
<br />
The 20-pin connector of Flasher is also compatible to ARM's Serial Wire Debug (SWD) interface.<br><br />
<br />
[[File:SWD_Port.jpg]] <!-- LG xxxxxx image has been cropped to fit page --><br />
<br />
The following table lists the J-Link / J-Trace SWD pinout.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! PIN !! SIGNAL !! TYPE !! Description<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 7 || SWDIO || I/O || Single bi-directional data pin.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 13 || SWO || Output || Serial Wire Output trace port. (Optional, not required for SWD communication.)<br />
|-<br />
| 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".<br />
|-<br />
| 17 || Not used || NC || This pin is not connected in J-Link.<br />
|-<br />
| 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.<br />
|-<br />
|}<br />
<br />
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.<br />
<br />
==== Target power supply ====<br />
<br />
Pin 19 of the connector can be used to supply power to the target hardware. Supply voltage is 5V, max. current is 400mA.<br />
The output current is monitored and protected against overload and short-circuit.<br><br />
<br />
Power can be controlled via the J-Link commander. The following commands are available to control power:<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Command !! Explanation<br />
|-<br />
| <tt>power on</tt> || Switch target power on<br />
|-<br />
| <tt>power off</tt> || Switch target power off<br />
|-<br />
| <tt>power on perm</tt> || Set target power supply default to "on"<br />
|-<br />
| <tt>power off perm</tt> || Set target power supply default to "off"<br />
|-<br />
|}<br />
<br />
=== Flasher RX 14-pin connector ===<br />
<br />
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.<br />
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.<br />
<br />
[[File:jtag_port_14pin.wmf]]<br />
<br />
The following table lists the Flasher RX 14-pin JTAG pinout.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Pin !! Signal !! Type !! Description<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 5 || TDO || Input || JTAG data output from target CPU. Typically connected to TDO on target CPU.<br />
|-<br />
| 6 || --- || NC || This pin is not connected to Flasher RX.<br />
|-<br />
| 7 || --- || NC || This pin is not connected to Flasher RX.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 10 || --- || NC || This pin is not connected to Flasher RX.<br />
|-<br />
| 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.<br />
|-<br />
| 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".<br />
|-<br />
|}<br />
<br />
* All pins marked NC are not connected to Flasher RX. Any signal can be applied here; Flasher RX will simply ignore such a signal.<br />
* Pins 2, 12, 14 are GND pins connected to GND in Flasher RX. They should also be connected to GND in the target system.<br />
<br />
==== Target power supply ====<br />
<br />
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.<br />
Power can be controlled via the J-Link commander. The following commands are available to control power:<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Command !! Explanation<br />
|-<br />
| <tt>power on</tt> || Switch target power on<br />
|-<br />
| <tt>power off</tt> || Switch target power off<br />
|-<br />
| <tt>power on perm</tt> || Set target power supply default to "on"<br />
|-<br />
| <tt>power off perm</tt> || Set target power supply default to "off"<br />
|-<br />
|}<br />
<br />
=== Flasher PPC 14-pin connector ===<br />
<br />
Flasher PPC itself has a 20-pin JTAG connector mounted but comes with a 14-pin adapter for PowerPC devices.<br><br />
<br />
[[File:JTAG_PPC_14pin_adapter.wmf]]<br />
<br />
The following table lists the Flasher PPC 14-pin JTAG pinout.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Pin !! Signal !! Type !! Description<br />
|-<br />
| 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.<br />
|-<br />
| 3 || TDO || Input || JTAG data output from target CPU. Typically connected to TDO on target CPU.<br />
|-<br />
| 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.<br />
|-<br />
| 7 || --- || NC || This pin is not connected to Flasher PPC.<br />
|-<br />
| 8 || --- || NC || This pin is not connected to Flasher PPC.<br />
|-<br />
| 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".<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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).<br />
|-<br />
|}<br />
<br />
* All pins marked NC are not connected to Flasher PPC. Any signal can be applied here; Flasher PPC will simply ignore such a signal.<br />
* 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.<br />
<br />
=== Target board design ===<br />
<br />
We strongly advise following the recommendations given by the chip manufacturer. These recommendations are normally in line with the recommendations.<br />
Please refer to the the appropriate tables depending on the core:<br><br />
<br />
* [[#Pinout JTAG | Pinout JTAG]]<br />
* [[#Pinout SWD | Pinout SWD]]<br />
* [[#Flasher RX 14-pin connector | Flasher RX 14-pin connector]]<br />
* [[#Flasher PPC 14-pin connector | Flasher PPC 14-pin connector]]<br />
<br />
In case of doubt you should follow the recommendations given by the semiconductor manufacturer.<br />
<br />
==== Pull-up/pull-down resistors ====<br />
<br />
Unless otherwise specified by developer's manual, pull-ups/pull-downs are recommended to be between 2.2 kOhms and 47 kOhms.<br />
<br />
==== RESET, nTRST ====<br />
<br />
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><br />
<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.<br />
(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.<br />
<br />
=== Adapters ===<br />
<br />
==== JTAG Isolator ====<br />
<br />
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.<br />
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><br />
<br />
[[File:JTAG_Isolator_Port.wmf]]<br />
<br />
===== Pinout =====<br />
<br />
The following table shows the target-side pinout of the J-Link JTAG Isolator.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Pin !! Signal !! Type !! Description<br />
|-<br />
| 1 || VCC || Output || The target side of the isolator draws power over this pin.<br />
|-<br />
| 2 || VCC || Output || The target side of the isolator draws power over this pin.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 13 || TDO || Input || JTAG data output from target CPU. Typically connected to TDO of target CPU.<br />
|-<br />
| 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".<br />
|-<br />
| 17 || N/C || N/C || This pin is not connected on the target side of the isolator.<br />
|-<br />
| 19 || N/C || N/C || This pin is not connected on the target side of the isolator.<br />
|-<br />
|}<br />
<br />
Pins 4, 6, 8, 10, 12, 14, 16, 18, 20 are connected to GND.<br />
<br />
===== Safety =====<br />
This isolator provides '''basic isolation''' only. '''Do not use with hazardous voltages without further protection measures to avoid risk of electrical shock and fire.'''<br />
<br />
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.<br />
<br />
==== J-Link Needle Adapter ====<br />
<br />
To connect to the J-Link OB via programming interface the ''J-Link Needle Adapter'' is recommended.<br><br />
<br />
[[File:J-Link_Needle_Adapter_500x.jpg]]<br />
<br />
Why to choose the J-Link Needle Adapter:<br><br />
<ol><br />
<li>No additional connector required on your PCB</li><br />
<li>Very small footprint</li><br />
<li>High reliability spring pins for secure connections</li><br />
<li>Designed with 3 locating pins, so the adapter can not be connected the wrong way</li><br />
<li>No external power supply required! The J-Link Needle Adapter comes with the option to power the target hardware via J-Link.</li><br />
</ol><br />
These features make the J-Link Needle Adapter the perfect solution for production purposes.<br><br />
<br />
The pinout of the J-Link Needle Adapter is based on the pinout of the needle adapter by Tag-Connect.<br />
Please note, that both pinouts are not identical since the J-Link Needle Adapter comes with a 5V-supply pin.<br><br />
<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><br />
<br />
Moreover, the two "legs" on each side of the connector guarantee a stable and secure contact between pins and the PCB.<br><br />
<br />
[[File:J-Link_Needle_Adapter_Connector_pins_360x.jpg]]<br />
[[File:J-Link_Needle_Adapter_Pinout.jpg]]<br />
<br />
The J-Link Needle Adapter can be connected to J-Link via the ''20-pin 0.1'' JTAG to a 10-pin needle connector''.<br />
<br />
=== How to determine the hardware version ===<br />
<br />
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.<br />
Flasher has the hardware version printed on the back label.<br><br />
<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).<br />
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><br />
<br />
[[File:FlasherARM_version.gif]]<br />
== Support and FAQs ==<br />
<br />
This chapter contains troubleshooting tips together with solutions for common problems which might occur when using Flasher.<br />
There are several steps you can take before contacting support.<br />
Performing these steps can solve many problems and often eliminates the need for assistance.<br />
This chapter also contains a collection of frequently asked questions (FAQs) with answers.<br />
<br />
=== Contacting support ===<br />
<br />
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.<br />
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><br />
<br />
If you need to contact support, send the following information to<br><br />
''support@segger.com''<br><br />
<br />
* A detailed description of the problem<br />
* Flasher serial number<br />
* Information about your target hardware (processor, board, etc.).<br />
* <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]].<br />
<br />
Flasher is sold directly by SEGGER.<br />
<br />
=== Frequently Asked Questions ===<br />
<br />
'''Maximum JTAG speed'''<br />
{|<br />
|-<br />
| '''Q:''' || What is the maximum JTAG speed supported by Flasher?<br />
|-<br />
| '''A:''' || Flasher's maximum supported JTAG speed is 12MHz.<br />
|}<br />
<br />
'''Maximum download speed'''<br />
{|<br />
|-<br />
| '''Q:''' || What is the maximum download speed?<br><br />
|-<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.<br />
|}<br />
== Background information ==<br />
<br />
This chapter provides background information about flash programming in general. It<br />
also provides information about how to replace the firmware of Flasher manually.<br />
<br />
=== Flash programming ===<br />
<br />
Flasher comes with a DLL, which allows - amongst other functionalities - reading and writing RAM, CPU registers, starting and stopping the CPU, and setting breakpoints.<br />
<br />
==== How does flash programming via Flasher work? ====<br />
<br />
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.<br />
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.<br />
Different flash chips have different programming algorithms;the programming algorithm also depends on other things,<br />
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).<br />
The RAM code requires data to be programmed into the flash memory. The data is supplied by downloading it to RAM.<br />
<br />
==== Data download to RAM ====<br />
<br />
The data (or part of it) is downloaded to another part of the RAM of the target system.<br />
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.<br />
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.<br />
This process may have to be repeated until the entire data is programmed into the flash.<br />
<br />
==== Available options for flash programming ====<br />
<br />
In general, there are two possibilities in order to use Flasher for flash programming:<br><br />
<br />
* Using Flasher stand-alone to program the target flash memory (stand-alone mode)<br />
* Using Flasher in combination with J-Flash to program the target flash memory (Flasher in "PC-based mode")<br />
<br />
===== Using Flasher in stand-alone mode =====<br />
<br />
In order to use the Flasher in stand-alone mode, it has to be configured first.<br />
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]].<br />
<br />
===== J-Flash - Complete flash programming solution =====<br />
<br />
J-Flash is a stand-alone Windows application, which can read / write data files and program the flash in almost any ARM system.<br />
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''.<br />
<br />
==== How does the universal flash programming work? ====<br />
<br />
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><br />
<br />
Universal flash programming is available only for stand-alone mode.<br />
== Glossary ==<br />
<br />
This chapter describes important terms used throughout this manual.<br />
<br />
'''Big-endian'''<br><br />
Memory organization where the least significant byte of a word is at a higher address than the most significant byte. See Little-endian.<br />
<br />
'''Cache cleaning'''<br><br />
The process of writing dirty data in a cache to main memory.<br />
<br />
'''Coprocessor'''<br><br />
An additional processor that is used for certain operations, for example, for floating-point math calculations, signal processing, or memory management.<br />
<br />
'''Dirty data'''<br><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.<br />
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.<br />
<br />
'''Halfword'''<br><br />
A 16-bit unit of information.<br />
<br />
'''Host'''<br><br />
A computer which provides data and other services to another computer. Especially, a computer providing debugging services to a target being debugged.<br />
<br />
'''ICache'''<br><br />
Instruction cache.<br />
<br />
'''ID'''<br><br />
Identifier.<br />
<br />
'''IEEE 1149.1'''<br><br />
The IEEE Standard which defines TAP. Commonly (but incorrectly) referred to as JTAG.<br />
<br />
'''Image'''<br><br />
An executable file that has been loaded onto a processor for execution.<br />
<br />
'''Instruction Register'''<br><br />
When referring to a TAP controller, a register that controls the operation of the TAP.<br />
<br />
'''IR'''<br><br />
See Instruction Register.<br />
<br />
'''Joint Test Action Group (JTAG)'''<br><br />
The name of the standards group which created the IEEE 1149.1 specification.<br />
<br />
'''Little-endian'''<br><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.<br />
<br />
'''Memory coherency'''<br><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.<br />
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.<br />
<br />
'''Memory management unit (MMU)'''<br><br />
Hardware that controls caches and access permissions to blocks of memory, and translates virtual to physical addresses.<br />
<br />
'''Memory Protection Unit (MPU)'''<br><br />
Hardware that controls access permissions to blocks of memory. Unlike an MMU, a MPU does not translate virtual addresses to physical addresses.<br />
<br />
'''RESET'''<br><br />
Abbreviation of System Reset. The electronic signal which causes the target system other than the TAP controller to be reset.<br />
This signal is also known as "nSRST" "nSYSRST", "nRST", or "nRESET" in some other manuals. See also nTRST.<br />
<br />
'''nTRST'''<br><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.<br />
<br />
'''Open collector'''<br><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.<br />
<br />
'''Processor Core'''<br><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.<br />
It excludes optional coprocessors, caches, and the memory management unit.<br />
<br />
'''Remapping'''<br><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.<br />
<br />
'''RTOS'''<br><br />
Real Time Operating System.<br />
<br />
'''TAP Controller'''<br><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.<br />
<br />
'''Target'''<br><br />
The actual processor (real silicon or simulated) on which the application program is running.<br />
<br />
'''TCK'''<br><br />
The electronic clock signal which times data on the TAP data lines TMS, TDI, and TDO.<br />
<br />
'''TDI'''<br><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.<br />
<br />
'''TDO'''<br><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.<br />
<br />
'''Test Access Port (TAP)'''<br><br />
The port used to access a device's TAP Controller. Comprises TCK, TMS, TDI, TDO, and nTRST (optional).<br />
<br />
'''Transistor-transistor logic (TTL)'''<br><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.<br />
<br />
'''Word'''<br><br />
A 32-bit unit of information. Contents are taken as being an unsigned integer unless otherwise stated.<br />
== Literature and references ==<br />
This chapter lists documents, which we think may be useful to gain a deeper understanding of technical details.</div>JanBhttps://wiki.segger.com/index.php?title=PSoC_4xxx_series&diff=17137PSoC 4xxx series2023-11-30T09:53:18Z<p>JanB: /* Changing protection - J-Flash / Flasher */</p>
<hr />
<div>This page contains information about the Infineon PSoC 4xxx series.<br />
__TOC__<br />
== Connection behavior ==<br />
The connect sequence of PSoC 4 devices is very time critical and is thus performed from the J-Link/Flasher side directly.<br />
<br />
A locked PSoC 4 device is automatically set to ''open'' if it was in ''protected'' state.<br />
If the device was unlocked, the internal memory is again in erased state.<br />
<br />
== Readout protection ==<br />
The following section explains how to set Infineon PSoC 4 devices in protected state and how to unprotect them.<br />
{{Note|1=<br />
* The Infineon CY8C4xxx and CYBLExxxx series devices provide chip-level protection which allows permanent and non-permanent protection of the device concerning read and write access.<br />
* The sequence, to secure the device consists of multiple read / write accesses to special function registers of the CY8C4xxx and CYBLExxxx series devices.<br />
* PSoC4100/4200 target devices use different addresses for the SYSREQ and SYSARG registers. They are located at 0x40000004 and 0x40000008 instead. For more information please consult the Infineon Programming Specifications user guide.<br />
* The clock of some PSoC4 target devices must be set to 48MHz before calling the locking/unlocking sequence. This can be achieved by using the "Configure Clock" Command. Please refer to the Infineon Programming specification for the related devices for information about which targets do require the sequence.<br />
}}<br />
<br />
=== Changing protection - pseudo code ===<br />
<source lang="c"><br />
//<br />
// Addresses<br />
//<br />
if (PSOC4000) { // PSOC4000: CPUSS base is 0x4010_0000<br />
CPUSS_BASE = 0x40100000;<br />
} else { // Other: CPUSS base is 0x4000_0000<br />
CPUSS_BASE = 0x40000000;<br />
}<br />
CPUSS_SYSREQ = CPUSS_BASE + 0x04;<br />
CPUSS_SYSARG = CPUSS_BASE + 0x08;<br />
//<br />
// Register bits<br />
//<br />
CPUSS_SYSREQ_BIT = (1 << 31);<br />
CPUSS_CMD_SHIFT = 0;<br />
//<br />
// SROM constants<br />
//<br />
SROM_KEY1 = 0xB6;<br />
SROM_KEY2 = 0xD3;<br />
//<br />
// SROM requests<br />
//<br />
SROM_CMD_WRITE_PROTECTION = 0x0D; // Write chip-level (and flash) protection.<br />
SROM_CMD_SET_IMO_48MHz = 0x15; // Set clock to 48 MHz (req. for flash programming)<br />
//<br />
// Chip protection levels<br />
//<br />
CHIP_PROT_OPEN = 0x01; // OPEN (unprotected)<br />
CHIP_PROT_PROTECTED = 0x02; // PROTECTED (chip protected, reversible)<br />
CHIP_PROT_KILL = 0x04; // KILL (chip protected, irreversible)<br />
<br />
int WaitForCmdCompletion(void) {<br />
do {<br />
Status = CPUSS_SYSREQ;<br />
Status &= (SROM_SYSREQ_BIT | SROM_PRIVILEGED_BIT);<br />
} while (Status);<br />
StatusCode = (CPUSS_SYSARG >> 28);<br />
if (StatusCode != SROM_STATUS_SUCCEEDED) {<br />
return -1; // SROM command failed<br />
} else {<br />
return 0; // SROM command succeeded<br />
}<br />
}<br />
<br />
int ChangeProtection(U32 ChipProtLevel) {<br />
if (RequiresIMO48Mhz) {<br />
CmdAndKey = SROM_KEY2 + SROM_CMD_SET_IMO_48MHz;<br />
Params = (SROM_KEY1 << 0) // SROM command key 1<br />
| (CmdAndKey << 8) // SROM command key 2 + Command<br />
;<br />
CPUSS_SYSARG = Params;<br />
CPUSS_SYSREQ = CPUSS_SYSREQ_BIT<br />
| SROM_CMD_SET_IMO_48MHz<br />
;<br />
r = WaitForCmdCompletion();<br />
if (r < 0) {<br />
return -1;<br />
}<br />
}<br />
CmdAndKey = SROM_KEY2 + SROM_CMD_WRITE_PROTECTION;<br />
Params = (SROM_KEY1 << 0) // SROM command key 1<br />
| (CmdAndKey << 8) // SROM command key 2 + Command (See: CHIP_PROT_*)<br />
| (ChipProtLevel << 16) // Chip Protection level to be set<br />
| (0 << 24) // Flash macro (always 0 for chip protection)<br />
;<br />
CPUSS_SYSARG = Params;<br />
CPUSS_SYSREQ = CPUSS_SYSREQ_BIT<br />
| SROM_CMD_WRITE_PROTECTION<br />
;<br />
r = WaitForCmdCompletion();<br />
if (r < 0) {<br />
return -1;<br />
}<br />
return 0;<br />
}<br />
</source><br />
<br />
=== Changing protection - J-Flash / Flasher ===<br />
The sequence to secure the device needs to be added to the exit-steps of the J-Flash project.<br />
The exit steps will be executed at the end of an successful auto-programming process (''Target -> Auto'').<br><br />
Depending on the device family, the IMO (Integrated Main Clock) must be activated at 48 MHz for some devices. In addition, the required SYSARG and SYSREQ registers have a different address for some devices. <br><br />
These addresses must be updated in the sample projects. Otherwise, the lock sequence of the sample projects applies to every device of the CY8C4xxx and CYBLExxxx series from Infineon. <br><br />
The projects can be adapted to customer-specific requirements by reselecting the desired device within the J-Flash project.<br />
Following table shows the devices specifics accordingly:<br><br />
[[File:Infineon_PSoC_ProgrammingSpecifications.png|900px]]<br />
==== Example J-Flash Projects ====<br />
* Device lock sequence: <br>[[File:Infineon_CY8C4147xxx-Sxxx.jflash]] <br>[[File:Wiki-Cypress_CY8C4xxx_CYBLExxxx_ProtectCPU.png|700px]]<br />
* Clock change and device lock sequence: <br>[[File:Infineon_CY8C4147xxx-Sxxx_Clock.jflash]] <br>[[File:Wiki-Cypress_PSoC-BL_ProtectCPU.png|701px]]<br />
{{Note|1=Please consider the notes listed [[#Readout protection|here]].}}<br />
<br />
==== Protection levels ====<br />
For Infineon PSoC4 devices three levels of protection can be set by altering the ''SYSARG chip protection'' step in the examples above.<br />
{| class="seggertable"<br />
! Value !! Meaning<br />
|-<br />
|''0x00'''01'''E0B6'' || Read protection level ''open''. Device is unprotected<br />
|-<br />
|''0x00'''02'''E0B6'' || Read protection level ''protected''. Device is protected. Setting the mode to ''open'' again causes a mass erase.<br />
|-<br />
|''0x00'''04'''E0B6'' || Read protection level ''kill''. Device is protected. The protection level cannot be changed anymore.<br>'''Setting to ''kill'' mode is permanent and makes the device unrecoverable'''.<br />
|}</div>JanBhttps://wiki.segger.com/index.php?title=PSoC_4xxx_series&diff=17134PSoC 4xxx series2023-11-30T09:34:25Z<p>JanB: /* Changing protection - J-Flash / Flasher */</p>
<hr />
<div>This page contains information about the Infineon PSoC 4xxx series.<br />
__TOC__<br />
== Connection behavior ==<br />
The connect sequence of PSoC 4 devices is very time critical and is thus performed from the J-Link/Flasher side directly.<br />
<br />
A locked PSoC 4 device is automatically set to ''open'' if it was in ''protected'' state.<br />
If the device was unlocked, the internal memory is again in erased state.<br />
<br />
== Readout protection ==<br />
The following section explains how to set Infineon PSoC 4 devices in protected state and how to unprotect them.<br />
{{Note|1=<br />
* The Infineon CY8C4xxx and CYBLExxxx series devices provide chip-level protection which allows permanent and non-permanent protection of the device concerning read and write access.<br />
* The sequence, to secure the device consists of multiple read / write accesses to special function registers of the CY8C4xxx and CYBLExxxx series devices.<br />
* PSoC4100/4200 target devices use different addresses for the SYSREQ and SYSARG registers. They are located at 0x40000004 and 0x40000008 instead. For more information please consult the Infineon Programming Specifications user guide.<br />
* The clock of some PSoC4 target devices must be set to 48MHz before calling the locking/unlocking sequence. This can be achieved by using the "Configure Clock" Command. Please refer to the Infineon Programming specification for the related devices for information about which targets do require the sequence.<br />
}}<br />
<br />
=== Changing protection - pseudo code ===<br />
<source lang="c"><br />
//<br />
// Addresses<br />
//<br />
if (PSOC4000) { // PSOC4000: CPUSS base is 0x4010_0000<br />
CPUSS_BASE = 0x40100000;<br />
} else { // Other: CPUSS base is 0x4000_0000<br />
CPUSS_BASE = 0x40000000;<br />
}<br />
CPUSS_SYSREQ = CPUSS_BASE + 0x04;<br />
CPUSS_SYSARG = CPUSS_BASE + 0x08;<br />
//<br />
// Register bits<br />
//<br />
CPUSS_SYSREQ_BIT = (1 << 31);<br />
CPUSS_CMD_SHIFT = 0;<br />
//<br />
// SROM constants<br />
//<br />
SROM_KEY1 = 0xB6;<br />
SROM_KEY2 = 0xD3;<br />
//<br />
// SROM requests<br />
//<br />
SROM_CMD_WRITE_PROTECTION = 0x0D; // Write chip-level (and flash) protection.<br />
SROM_CMD_SET_IMO_48MHz = 0x15; // Set clock to 48 MHz (req. for flash programming)<br />
//<br />
// Chip protection levels<br />
//<br />
CHIP_PROT_OPEN = 0x01; // OPEN (unprotected)<br />
CHIP_PROT_PROTECTED = 0x02; // PROTECTED (chip protected, reversible)<br />
CHIP_PROT_KILL = 0x04; // KILL (chip protected, irreversible)<br />
<br />
int WaitForCmdCompletion(void) {<br />
do {<br />
Status = CPUSS_SYSREQ;<br />
Status &= (SROM_SYSREQ_BIT | SROM_PRIVILEGED_BIT);<br />
} while (Status);<br />
StatusCode = (CPUSS_SYSARG >> 28);<br />
if (StatusCode != SROM_STATUS_SUCCEEDED) {<br />
return -1; // SROM command failed<br />
} else {<br />
return 0; // SROM command succeeded<br />
}<br />
}<br />
<br />
int ChangeProtection(U32 ChipProtLevel) {<br />
if (RequiresIMO48Mhz) {<br />
CmdAndKey = SROM_KEY2 + SROM_CMD_SET_IMO_48MHz;<br />
Params = (SROM_KEY1 << 0) // SROM command key 1<br />
| (CmdAndKey << 8) // SROM command key 2 + Command<br />
;<br />
CPUSS_SYSARG = Params;<br />
CPUSS_SYSREQ = CPUSS_SYSREQ_BIT<br />
| SROM_CMD_SET_IMO_48MHz<br />
;<br />
r = WaitForCmdCompletion();<br />
if (r < 0) {<br />
return -1;<br />
}<br />
}<br />
CmdAndKey = SROM_KEY2 + SROM_CMD_WRITE_PROTECTION;<br />
Params = (SROM_KEY1 << 0) // SROM command key 1<br />
| (CmdAndKey << 8) // SROM command key 2 + Command (See: CHIP_PROT_*)<br />
| (ChipProtLevel << 16) // Chip Protection level to be set<br />
| (0 << 24) // Flash macro (always 0 for chip protection)<br />
;<br />
CPUSS_SYSARG = Params;<br />
CPUSS_SYSREQ = CPUSS_SYSREQ_BIT<br />
| SROM_CMD_WRITE_PROTECTION<br />
;<br />
r = WaitForCmdCompletion();<br />
if (r < 0) {<br />
return -1;<br />
}<br />
return 0;<br />
}<br />
</source><br />
<br />
=== Changing protection - J-Flash / Flasher ===<br />
The sequence to secure the device needs to be added to the exit-steps of the J-Flash project.<br />
The exit steps will be executed at the end of an successful auto-programming process (''Target -> Auto'').<br><br />
Depending of the family some devices needs to activated the IMO (Integrated Main Clock) at 48 MHz. In addition some devices the required registers SYSARG and SYSREQ have another address:<br />
Following table shows the devices specifics accordingly:<br><br />
[[File:Infineon_PSoC_ProgrammingSpecifications.png|700px]]<br />
==== Example J-Flash Projects ====<br />
* Device lock sequence: <br>[[File:Infineon_CY8C4147xxx-Sxxx.jflash]] <br>[[File:Wiki-Cypress_CY8C4xxx_CYBLExxxx_ProtectCPU.png|700px]]<br />
* Clock change and device lock sequence: <br>[[File:Infineon_CY8C4147xxx-Sxxx_Clock.jflash]] <br>[[File:Wiki-Cypress_PSoC-BL_ProtectCPU.png|700px]]<br />
The addresses must be updated, otherwise this security sequence applies to all devices of the CY8C4xxx and CYBLExxxx series from Infineon. <br><br />
The projects can be adapted to customer-specific requirements by reselecting the desired device within the J-Flash project.<br />
{{Note|1=Please consider the notes listed [[#Readout protection|here]].}}<br />
<br />
==== Protection levels ====<br />
For Infineon PSoC4 devices three levels of protection can be set by altering the ''SYSARG chip protection'' step in the examples above.<br />
{| class="seggertable"<br />
! Value !! Meaning<br />
|-<br />
|''0x00'''01'''E0B6'' || Read protection level ''open''. Device is unprotected<br />
|-<br />
|''0x00'''02'''E0B6'' || Read protection level ''protected''. Device is protected. Setting the mode to ''open'' again causes a mass erase.<br />
|-<br />
|''0x00'''04'''E0B6'' || Read protection level ''kill''. Device is protected. The protection level cannot be changed anymore.<br>'''Setting to ''kill'' mode is permanent and makes the device unrecoverable'''.<br />
|}</div>JanBhttps://wiki.segger.com/index.php?title=File:Infineon_CY8C4147xxx-Sxxx_Clock.jflash&diff=17133File:Infineon CY8C4147xxx-Sxxx Clock.jflash2023-11-30T09:32:43Z<p>JanB: Example project for PSoC family: Exit Steps are set to activate the IMO (Integrated Main Clock) and lock the device.</p>
<hr />
<div>== Summary ==<br />
Example project for PSoC family: Exit Steps are set to activate the IMO (Integrated Main Clock) and lock the device.</div>JanBhttps://wiki.segger.com/index.php?title=File:Infineon_CY8C4147xxx-Sxxx.jflash&diff=17132File:Infineon CY8C4147xxx-Sxxx.jflash2023-11-30T09:32:27Z<p>JanB: JanB uploaded a new version of File:Infineon CY8C4147xxx-Sxxx.jflash</p>
<hr />
<div></div>JanBhttps://wiki.segger.com/index.php?title=File:Infineon_PSoC_ProgrammingSpecifications.png&diff=17131File:Infineon PSoC ProgrammingSpecifications.png2023-11-30T09:25:20Z<p>JanB: Programming specifications of the PSoC family.
The lines marked in green are important: The first line describes whether the IMO must be activated in order to lock the device.
The second and third lines contain the addresses of the registers that are u...</p>
<hr />
<div>== Summary ==<br />
Programming specifications of the PSoC family.<br />
The lines marked in green are important: The first line describes whether the IMO must be activated in order to lock the device.<br />
The second and third lines contain the addresses of the registers that are used to lock the device.</div>JanBhttps://wiki.segger.com/index.php?title=File:Wiki-Cypress_PSoC-BL_ProtectCPU.png&diff=17130File:Wiki-Cypress PSoC-BL ProtectCPU.png2023-11-30T08:58:29Z<p>JanB: JanB uploaded a new version of File:Wiki-Cypress PSoC-BL ProtectCPU.png</p>
<hr />
<div></div>JanBhttps://wiki.segger.com/index.php?title=File:Wiki-Cypress_CY8C4xxx_CYBLExxxx_ProtectCPU.png&diff=17129File:Wiki-Cypress CY8C4xxx CYBLExxxx ProtectCPU.png2023-11-30T08:56:56Z<p>JanB: JanB uploaded a new version of File:Wiki-Cypress CY8C4xxx CYBLExxxx ProtectCPU.png</p>
<hr />
<div></div>JanBhttps://wiki.segger.com/index.php?title=File:Wiki-Cypress_CY8C4xxx_CYBLExxxx_ProtectCPU.png&diff=17128File:Wiki-Cypress CY8C4xxx CYBLExxxx ProtectCPU.png2023-11-30T08:55:11Z<p>JanB: JanB uploaded a new version of File:Wiki-Cypress CY8C4xxx CYBLExxxx ProtectCPU.png</p>
<hr />
<div></div>JanBhttps://wiki.segger.com/index.php?title=Flasher/Download_project_to_Flasher&diff=16972Flasher/Download project to Flasher2023-11-13T10:11:03Z<p>JanB: </p>
<hr />
<div>Configure the Flasher for [https://wiki.segger.com/UM08022_Flasher#Operating_modes Stand-Alone Mode]<br />
== U-Flash ==<br />
* "Send to Flasher" Button (equals to "-download" CLI option)<br />
Use the "Configuration Project Name" entry in the Project Settings to set the Name of the files to download.<br><br />
Optionally U-Flash can update the Flasher.INI file to select the latest project downloaded. (equal to Terminal Command [https://wiki.segger.com/UM08022_Flasher#Commands_and_replies "#Select"])<br />
== J-Flash == <br />
* [https://wiki.segger.com/UM08003_JFlash#File_menu_elements Download config & data file to Flasher] (equals to "-download" CLI option)<br />
* [https://wiki.segger.com/UM08003_JFlash#File_menu_elements Save Flasher data file] and [https://wiki.segger.com/UM08003_JFlash#File_menu_elements Save Flasher config file] to computer hard disk. To download the saved files to the Flasher use:<br />
** [https://wiki.segger.com/UM08022_Flasher#File_system File Access Mode (MSD)]<br />
** [https://wiki.segger.com/UM08022_Flasher#FTP_Server FTP Server of Flasher]<br />
** [https://wiki.segger.com/UM08003_JFlash#File_menu_elements Show Files on Flasher]<br />
To set the name on the Flasher of the project which should be downloaded, you can attach the Flasher in File Access Mode to the computer and use the "Save Flasher data file" and "Save Flasher config file" <br />
to directly store the files on the Flasher, which a name you want. (equals to CLI Option: "-savecfg <name> -savedat <name>") <br><br />
Then use the Terminal Command [https://wiki.segger.com/UM08022_Flasher#Commands_and_replies "#Select"] make the project active for programming.</div>JanBhttps://wiki.segger.com/index.php?title=UM08022_Flasher&diff=16971UM08022 Flasher2023-11-13T10:08:40Z<p>JanB: /* Setting up Flasher for stand-alone mode */ Link to FAQ</p>
<hr />
<div><!---<br />
General TBD:<br />
- LG: Right now - EVERYTHING<br />
===========================================<br />
--------------------[more specific, but on multiple locations]<br />
- check if all emphasis (bold, tt, blue, etc ) have made it into the new version<br />
- Add Information -> Additional information<br />
- use of the term free-of-charge utility/tool etc<br />
- check compliant to DocStandards_Rules.txt<br />
- Remove everything regarding to Kickstarter versions? eventually create a chapter Legacy -> Kickstarter version were available for hw version 5-x (200x-200x)...[..]<br />
- 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.<br />
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.<br />
- if week keep the IDE specific stuff in the manual, add Ozone, ES and J-Link Commander were no mentioned.<br />
- IDE specifics move into wiki confirmed by Alex<br />
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)<br />
- check all sections regarding licensing<br />
- Check compliance of J-Link emDocs with typographic conventions described in AboutThisDocument.emDoc. What should be altered? e.g. references<br />
- use uref at all (not blue)?<br />
- search and decide where to use \ref (ref with page number)<br />
- why is \ref (no single "option" \uref is more basic as \ref.....)<br />
- in text, use either \ref or \iref instead of \uref<br />
- in old manual, \H3 started on a new page (not per default, but set manually for api tables etc...)<br />
- move used old images and source files (visio etc) via svn (currently copied)<br />
--------------------[grammar / vocabulary discussion]<br />
- Product names<br />
-- Use of SEGGEPROBE in this document?<br />
- use license over licence<br />
- commandline or command-line?<br />
- toolchain or tool chain?<br />
- crossreference/cross-reference/cross reference?<br />
- overcurrent?<br />
- double words?<br />
- frontend?<br />
- Unit: Kbytes, KBytes, V, mV.... 9V or 9 V? Create rule in Vocabulary<br />
- baudrate or baud rate?<br />
- stackpointer or stack pointer<br />
- check where we should replace abbreviations with the long form (e.h. "milliseconds" instead of "ms")<br />
- config or configuration<br />
- filepointer or file pointer?<br />
--------------------[J-Link dep. specific]<br />
- J-Link command strings or J-Link Command strings or J-Link Command Strings<br />
- J-Link settings file or...<br />
- J-Link control panel or ......<br />
- J-Link script files or...<br />
---><br />
Flasher is a programming tool for microcontrollers with on-chip or external flash memory.<br />
Flasher is designed for programming flash targets with the J-Flash software or stand-alone.<br />
In addition to that Flasher can also be used as a regular J-Link. For more information about J-Link in general,<br />
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].<br />
<br />
<div class="toclimit-2"><br />
__TOC__<br />
</div><br />
<br />
== Flasher overview ==<br />
Flasher connects to a PC using the USB/Ethernet/RS232 interface (what host interfaces are available depends on the Flasher model),<br />
running Windows, Linux & MacOS. In stand-alone mode,<br />
Flasher can be driven by the start/stop button, or via the RS232 interface (handshake control or ASCII interface).<br />
Flasher always has a 20-pin connector, which target interfaces are supported depends on the Flasher model:<br />
* Flasher ARM: JTAG and SWD are supported.<br />
* Flasher RX: JTAG is supported. Flasher comes with additional 14-pin RX adapter<br />
* Flasher PPC: JTAG is supported. Flasher comes with additional 14-pin PPC adapter.<br />
* Flasher PRO: JTAG and SWD are supported.<br />
* Flasher Compact: JTAG and SWD are supported.<br />
<br />
=== Features of Flasher ARM/PPC/RX/PRO ===<br />
* Three boot modes: PC-based mode, stand-alone mode, file access mode<br />
* Stand-alone JTAG/SWD programmer (Once set up, Flasher can be controlled without the use of PC program)<br />
* No power supply required, powered through USB<br />
* Supports internal and external flash devices<br />
* 128 MB memory for storage of target program<br />
* Can be used as J-Link (emulator) with a download speed of up to 720 Kbytes/second<br />
* Data files can updated via USB/Ethernet (using the J-Flash software), via FTP, via RS232 or via the file access mode of Flasher<br />
<br />
{| class="seggertable"<br />
|-<br />
! Flasher model !! Supported cores !! Supported target interfaces !! Flash programming speed (depending on target hardware)<br />
|-<br />
| Flasher ARM || ARM7/ARM9/Cortex-M || JTAG, SWD || between 170 and 300 Kbytes/second<br />
|-<br />
| Flasher RX || Renesas RX610, RX621, RX62N, RX62T || JTAG || between 30-300 Kbytes/second<br />
|-<br />
| Flasher PPC || Power PC e200z0 || JTAG || up to 138 Kbytes/second<br />
|-<br />
| Flasher PRO || ARM7/ARM9/Cortex-M Renesas RX610, RX621, RX62N, RX62T Power PC e200z0 || JTAG, SWD || between 30-300 Kbytes/ second<br />
|-<br />
|}<br />
<br />
==== Features of Flasher Compact ====<br />
<br />
* Three boot modes: PC-based mode, stand-alone mode, file access mode<br />
* Stand-alone JTAG/SWD programmer (Once set up, Flasher can be controlled without the use of PC program)<br />
* No power supply required, powered through USB<br />
* Supports internal and external flash devices<br />
* 128 MB memory for storage of target program<br />
* Can be used as J-Link (emulator) with a download speed of up to 720 Kbytes/second<br />
* Data files can updated via USB/Ethernet (using the J-Flash software) or via the file access mode of Flasher<br />
<br />
{| class="seggertable"<br />
|-<br />
! Flasher model !! Supported cores !! Supported target interfaces !! Flash programming speed (depending on target hardware)<br />
|-<br />
| Flasher ARM || ARM7/ARM9/Cortex-M || JTAG, SWD || between 170 and 300 Kbytes/second<br />
|-<br />
| Flasher RX || Renesas RX610, RX621, RX62N, RX62T || JTAG || between 30-300 Kbytes/second<br />
|-<br />
| Flasher PPC || Power PC e200z0 || JTAG || up to 138 Kbytes/second<br />
|-<br />
| Flasher Compact || ARM7/ARM9/Cortex-M Renesas RX610, RX621, RX62N, RX62T Power PC e200z0 || JTAG, SWD || between 30-300 Kbytes/ second<br />
|-<br />
|}<br />
<br />
==== Features of Flasher Portable/Flasher Portable PLUS ====<br />
<br />
* Stand-alone in-circuit-programmer (Once set up, Flasher can be controlled without the use of a PC program)<br />
* Powered by an internal rechargeable battery (standard batteries for Flasher Portable), no Laptop or external power supply required.<br />
* Multiple firmware images can be stored on Flasher<br />
* 128 MB memory for storage of target program<br />
* Easy selection of image to be programmed, via button<br />
* Supported CPUs: ARM Cortex, Legacy ARM7/9, Renesas RX, Freescale PowerPC<br />
* Supports internal and external flash<br />
* Free software updates<ref name="legitimateOwned" />, 1 year of support<br />
* Data files can be updated via the file access mode functionality or via J-Flash<br />
* Programming speed between 30-300 Kbytes/second (actual speed depends on target hardware)<br />
{{Note|1=Ethernet and RS232 as host interface are not available for Flasher Portable}}<br />
<references><br />
<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.<br />
As a legitimate owner of a SEGGER Flasher, you can always download the latest software free of charge.<br />
Though not planned and not likely, we reserve the right to change this policy.<br />
Note that older models may not be supported by newer versions of the software.<br />
Typically, we support older models with new software at least 3 years after end of life.<br />
</ref><br />
</references><br />
<br />
{| class="seggertable"<br />
|-<br />
! Supported cores !! Supported target interfaces !! Flash programming speed (depending on target hardware)<br />
|-<br />
| ARM7/ARM9/Cortex-M || JTAG, SWD || between 30-300 Kbytes/second<br />
|-<br />
| Renesas RX610, RX621, RX62N, RX62T || JTAG || between 170 and 300 Kbytes/second<br />
|-<br />
| Power PC e200z0 || JTAG || up to 138 Kbytes/second<br />
|-<br />
|}<br />
<br />
==== Working environment ====<br />
<br />
'''General'''<br><br />
The Flasher can operate from a PC with an appropriate software like J-Flash or in stand-alone mode.<br />
<br />
'''Host System'''<br><br />
IBM PC/AT or compatible CPU: 486 (or better) with at least 128MB of RAM,<br />
running Windows, Linux & MacOS. It needs to have a USB, Ethernet or RS232 interface available for communication with Flasher.<br />
<br />
'''Power supply'''<br><br />
Flasher Portable: 3x standard AAA batteries or 5V DC, min. 100 mA via USB connector.<br />
<br />
Flasher Portable PLUS: internal rechargeable 680mAh Li-Ion battery, min. 100 mA via USB connector.<br />
<br />
Other Flashers: 5V DC, min. 100 mA via USB connector.<br />
<br />
'''Installing Flasher PC-software'''<br><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><br />
More information about the package you can find in the similar [[J-Link Software and Documentation Pack]].<br><br />
The package includes U-Flash and J-Flash, the main tools for flashing targets:<br />
* J-Flash : J-Flash User Guide ([https://wiki.segger.com/UM08003_JFlash UM08003_JFlash.pdf]).<br />
* U-Flash : U-Flash User Guide ([https://www.segger.com/downloads/flasher/UM08037.pdf UM08037_UniversalFlashLoader.pdf]).<br />
<br />
=== Specifications ===<br />
<br />
<br />
==== Specifications for Flasher ARM ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Windows, Linux & MacOS<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C<br />
|-<br />
| Storage Temperature || -20 °C ... +60 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
!colspan="100%"| Mechanical<br />
|-<br />
| Size (without cables) || 121mm x 66mm x 30mm<br />
|-<br />
| Weight (without cables) || 119g<br />
|-<br />
!colspan="100%"| Available interfaces<br />
|-<br />
| USB Host interface || USB 2.0, full speed<br />
|-<br />
| Ethernet Host interface || 10/100 MBit<br />
|-<br />
| RS232 Host interface || RS232 9-pin<br />
|-<br />
| Target interface || JTAG 20-pin (14-pin adapter available)<br />
|-<br />
!colspan="100%"| JTAG Interface, Electrical<br />
|-<br />
| Power Supply || USB powered, 100mA for Flasher ARM. 500 mA if target is powered by Flasher ARM<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| Target supply voltage || Supply voltage is 5V, max.<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6 <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Max. JTAG speed || up to 12MHz<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
===== Flasher ARM download speed =====<br />
<br />
The following table lists the Flasher ARM performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! ARM7 memory download<br />
|-<br />
| Flasher ARM || 720 Kbytes/s (12MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
<br />
==== Specifications for Flasher RX ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Windows, Linux & MacOS<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C<br />
|-<br />
| Storage Temperature || -20 °C ... +60 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
!colspan="100%"| Mechanical<br />
|-<br />
| Size (without cables) || 121mm x 66mm x 30mm<br />
|-<br />
| Weight (without cables) || 119g<br />
|-<br />
!colspan="100%"| Available interfaces<br />
|-<br />
| USB Host interface || USB 2.0, full speed<br />
|-<br />
| Ethernet Host interface || 10/100 MBit<br />
|-<br />
| RS232 Host interface || RS232 9-pin<br />
|-<br />
| Target interface || JTAG 20-pin (shipped with 14-pin adapter for Renesas RX)<br />
|-<br />
!colspan="100%"| JTAG Interface, Electrical<br />
|-<br />
| Power Supply || USB powered, 100mA for Flasher RX. 500 mA if target is powered by Flasher RX<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| 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)<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6 <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Max. JTAG speed || up to 12MHz<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
===== Flasher RX download speed =====<br />
<br />
The following table lists the Flasher RX performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! Flasher RX600 series memory download<br />
|-<br />
| Flasher RX || 720 Kbytes/s (12MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
<br />
==== Specifications for Flasher PPC ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Windows, Linux & MacOS<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C<br />
|-<br />
| Storage Temperature || -20 °C ... +60 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
!colspan="100%"| Mechanical<br />
|-<br />
| Size (without cables) || 121mm x 66mm x 30mm<br />
|-<br />
| Weight (without cables) || 119g<br />
|-<br />
!colspan="100%"| Available interfaces<br />
|-<br />
| USB Host interface || USB 2.0, full speed<br />
|-<br />
| Ethernet Host interface || 10/100 MBit<br />
|-<br />
| RS232 Host interface || RS232 9-pin<br />
|-<br />
| Target interface || JTAG 20-pin (shipped with 14-pin adapter for Renesas PPC)<br />
|-<br />
!colspan="100%"| JTAG Interface, Electrical<br />
|-<br />
| Power Supply || USB powered, 100mA for Flasher PPC. 500 mA if target is powered by Flasher PPC<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| Target supply voltage || Supply voltage is 5V, max.<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6 <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Max. JTAG speed || up to 12MHz<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
===== Flasher RX download speed =====<br />
<br />
The following table lists the Flasher PPC performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! Memory download<br />
|-<br />
| Flasher PPC || 530 Kbytes/s (8 MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
<br />
==== Specifications for Flasher PRO ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Windows, Linux & MacOS<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C<br />
|-<br />
| Storage Temperature || -20 °C ... +60 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
!colspan="100%"| Mechanical<br />
|-<br />
| Size (without cables) || 121mm x 66mm x 30mm<br />
|-<br />
| Weight (without cables) || 119g<br />
|-<br />
!colspan="100%"| Available interfaces<br />
|-<br />
| USB Host interface || USB 2.0, full speed<br />
|-<br />
| Ethernet Host interface || 10/100 MBit<br />
|-<br />
| RS232 Host interface || RS232 9-pin<br />
|-<br />
| Target interface || JTAG 20-pin (14-pin adapter available)<br />
|-<br />
!colspan="100%"| JTAG Interface, Electrical<br />
|-<br />
| Power Supply || USB powered, 100mA for Flasher PRO. 500 mA if target is powered by Flasher PRO<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| Target supply voltage || Supply voltage is 5V, max.<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6 <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Max. JTAG speed || up to 12MHz<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
<br />
===== Supported CPU cores =====<br />
<br />
The Flasher PRO supports the following CPU cores:<br />
<br />
'''ARM Cortex'''<br><br />
* Cortex-A5<br />
* Cortex-A8<br />
* Cortex-A9<br />
* Cortex-R4<br />
* Cortex-R5<br />
* Cortex-M0<br />
* Cortex-M0+<br />
* Cortex-M1<br />
* Cortex-M3<br />
* Cortex-M4<br />
<br />
'''ARM (legacy cores)'''<br><br />
* ARM720T<br />
* ARM7TDMI<br />
* ARM7TDMI-S<br />
* ARM920T<br />
* ARM922T<br />
* ARM926EJ-S<br />
* ARM946E-S<br />
* ARM966E-S<br />
* ARM1136JF-S<br />
* ARM1136J-S<br />
* ARM1156T2-S<br />
* ARM1156T2F-S<br />
* ARM1176JZ-S<br />
* ARM1176JZF<br />
* ARM1176JZF-S<br />
<br />
'''Renesas RX'''<br><br />
* RX111<br />
* RX210<br />
* RX220<br />
* RX21A<br />
* RX610<br />
* RX621<br />
* RX62G<br />
* RX62N<br />
* RX62T<br />
* RX630<br />
* RX631<br />
* RX63N<br />
* RX63T<br />
<br />
'''Freescale Power PC'''<br><br />
* e200z0<br />
<br />
===== Supported Target interfaces =====<br />
<br />
The Flasher PRO supports the following target interfaces:<br />
<br />
* JTAG<br />
* SWD<br />
* FINE<br />
* SPD<br />
<br />
===== Flasher PRO download speed =====<br />
<br />
The following table lists the Flasher PRO performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! ARM7 memory download<br />
|-<br />
| Flasher PRO || 720 Kbytes/s (12MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
<br />
==== Specifications for Flasher Compact ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Microsoft Windows (x86/x64)<br>Linux (x86/x64/Arm)<br>macOS (x86/Apple M1)<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C<br />
|-<br />
| Storage Temperature || -20 °C ... +65 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
| Size (without cables) || 70mm x 45mm x 18mm<br />
|-<br />
| Weight (without cables) || 40g<br />
|-<br />
| USB Host interface || USB 2.0 (Hi-Speed); Micro USB<br />
|-<br />
| Target interface || JTAG 20-pin (14-pin adapter available)<br />
|-<br />
| Power Supply || USB powered, 130mA (idle)<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| Target supply voltage || Supply voltage is 5V, max.<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
| Supported target interfaces || SPI, QSPI, 8051 C2, cJTAG, FINE, ICSP, IIC, ISP, JTAG, PDI, SPD, SWD, SWIM, UART, UPDI<br />
|-<br />
| Serial transfer rate between Flasher Compact and target || Up to 50 MHz (Depending on target interface)<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6 <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
===== Supported CPU cores =====<br />
<br />
The Flasher Compact supports the following CPU cores:<br />
'''ARM Cortex'''<br><br />
* Cortex-A5<br />
* Cortex-A8<br />
* Cortex-A9<br />
* Cortex-R4<br />
* Cortex-R5<br />
* Cortex-M0<br />
* Cortex-M0+<br />
* Cortex-M1<br />
* Cortex-M3<br />
* Cortex-M4<br />
<br />
'''ARM (legacy cores)'''<br><br />
* ARM720T<br />
* ARM7TDMI<br />
* ARM7TDMI-S<br />
* ARM920T<br />
* ARM922T<br />
* ARM926EJ-S<br />
* ARM946E-S<br />
* ARM966E-S<br />
* ARM1136JF-S<br />
* ARM1136J-S<br />
* ARM1156T2-S<br />
* ARM1156T2F-S<br />
* ARM1176JZ-S<br />
* ARM1176JZF<br />
* ARM1176JZF-S<br />
<br />
'''Renesas RX'''<br><br />
* RX111<br />
* RX210<br />
* RX220<br />
* RX21A<br />
* RX610<br />
* RX621<br />
* RX62G<br />
* RX62N<br />
* RX62T<br />
* RX630<br />
* RX631<br />
* RX63N<br />
* RX63T<br />
<br />
'''Freescale Power PC'''<br><br />
* e200z0<br />
<br />
===== Flasher Compact download speed =====<br />
<br />
The following table lists the Flasher Compact performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! ARM7 memory download<br />
|-<br />
| Flasher Compact || 720 Kbytes/s (12MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
<br />
==== Specifications for Flasher Portable PLUS ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Windows, Linux & MacOS<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C (normal operation)<br>+5 °C ... +45 °C (battery charging)<br />
|-<br />
| Storage Temperature || -20 °C ... +45 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
| 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)<br />
|-<br />
| Charging via USB || 70 minutes (at 1A charging current)<br />
|-<br />
!colspan="100%"| Mechanical<br />
|-<br />
| Size (without cables) || 126mm x 70mm x 28mm<br />
|-<br />
| Weight (without cables) || 140g<br />
|-<br />
!colspan="100%"| Available interfaces<br />
|-<br />
| USB Host interface || USB 2.0<br />
|-<br />
| Target interface || Standard 20-pin 0.1" connector (Adapters available).<br />
|-<br />
!colspan="100%"| Target Interface, Electrical<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| Target supply voltage || Supply voltage is 4.5V, max. (depends on the current battery voltage).<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6 <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Max. JTAG speed || up to 12MHz<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
===== Supported CPU cores =====<br />
<br />
The Flasher Portable PLUS supports the following CPU cores:<br />
<br />
'''ARM Cortex'''<br><br />
* Cortex-A5<br />
* Cortex-A8<br />
* Cortex-A9<br />
* Cortex-R4<br />
* Cortex-R5<br />
* Cortex-M0<br />
* Cortex-M0+<br />
* Cortex-M1<br />
* Cortex-M3<br />
* Cortex-M4<br />
<br />
'''ARM (legacy cores)'''<br><br />
* ARM720T<br />
* ARM7TDMI<br />
* ARM7TDMI-S<br />
* ARM920T<br />
* ARM922T<br />
* ARM926EJ-S<br />
* ARM946E-S<br />
* ARM966E-S<br />
* ARM1136JF-S<br />
* ARM1136J-S<br />
* ARM1156T2-S<br />
* ARM1156T2F-S<br />
* ARM1176JZ-S<br />
* ARM1176JZF<br />
* ARM1176JZF-S<br />
<br />
'''Renesas RX'''<br><br />
* RX111<br />
* RX210<br />
* RX220<br />
* RX21A<br />
* RX610<br />
* RX621<br />
* RX62G<br />
* RX62N<br />
* RX62T<br />
* RX630<br />
* RX631<br />
* RX63N<br />
* RX63T<br />
<br />
'''Freescale Power PC'''<br><br />
* e200z0<br />
<br />
===== Supported Target interfaces =====<br />
<br />
The Flasher Portable PLUS supports the following target interfaces:<br />
* JTAG<br />
* SWD<br />
* FINE<br />
* SPD<br />
<br />
===== Flasher Portable PLUS download speed =====<br />
<br />
The following table lists the Flasher Portable PLUS performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! ARM7 memory download<br />
|-<br />
| Flasher PRO || 720 Kbytes/s (12MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
<br />
==== Specifications for Flasher Portable ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Windows, Linux & MacOS<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C<br />
|-<br />
| Storage Temperature || -20 °C ... +65 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
| Power Supply || a) USB powered, 100mA for Flasher Portable. 500 mA if target is powered by Flasher Portable<br>b) Batteries powered (3xAAA)<br />
|-<br />
!colspan="100%"| Mechanical<br />
|-<br />
| Size (without cables) || 130mm x 65mm x 25mm<br />
|-<br />
| Weight (without cables) || 120g<br />
|-<br />
!colspan="100%"| Available interfaces<br />
|-<br />
| USB Host interface || USB 2.0<br />
|-<br />
| Target interface || Standard 20-pin 0.1" connector (Adapters available).<br />
|-<br />
!colspan="100%"| Target Interface, Electrical<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| Target supply voltage || Supply voltage is 4.5V, max. (depends on the current battery voltage).<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6V <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Max. JTAG speed || up to 12MHz<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
===== Supported CPU cores =====<br />
<br />
The Flasher Portable supports the following CPU cores:<br />
<br />
'''ARM Cortex'''<br><br />
* Cortex-A5<br />
* Cortex-A8<br />
* Cortex-A9<br />
* Cortex-R4<br />
* Cortex-R5<br />
* Cortex-M0<br />
* Cortex-M0+<br />
* Cortex-M1<br />
* Cortex-M3<br />
* Cortex-M4<br />
<br />
'''ARM (legacy cores)'''<br><br />
* ARM720T<br />
* ARM7TDMI<br />
* ARM7TDMI-S<br />
* ARM920T<br />
* ARM922T<br />
* ARM926EJ-S<br />
* ARM946E-S<br />
* ARM966E-S<br />
* ARM1136JF-S<br />
* ARM1136J-S<br />
* ARM1156T2-S<br />
* ARM1156T2F-S<br />
* ARM1176JZ-S<br />
* ARM1176JZF<br />
* ARM1176JZF-S<br />
<br />
'''Renesas RX'''<br><br />
* RX111<br />
* RX210<br />
* RX220<br />
* RX21A<br />
* RX610<br />
* RX621<br />
* RX62G<br />
* RX62N<br />
* RX62T<br />
* RX630<br />
* RX631<br />
* RX63N<br />
* RX63T<br />
<br />
'''Freescale Power PC'''<br><br />
* e200z0<br />
<br />
===== Supported Target interfaces =====<br />
<br />
The Flasher Portable supports the following target interfaces:<br />
<br />
* JTAG<br />
* SWD<br />
* FINE<br />
* SPD<br />
<br />
===== Flasher Portable download speed =====<br />
<br />
The following table lists the Flasher Portable performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! ARM7 memory download<br />
|-<br />
| Flasher PRO || 720 Kbytes/s (12MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
== Working with Flasher ==<br />
<br />
This chapter describes functionality and how to use Flasher.<br />
<br />
=== Flasher Portable PLUS ===<br />
<br />
The Flasher Portable PLUS is a portable version of SEGGERs Flasher family,<br />
which has been designed to fill the need of an extremely portable, production grade,<br />
Flash programmer used for in-field firmware updates. No need to be tethered to an outlet,<br />
it is powered by an integrated Li-Ion cell (680mAh).<br />
The Flasher Portable PLUS programs flash targets in stand-alone mode or via J-Flash PC software.<br><br />
<br />
Furthermore the Flasher Portable PLUS allows the user to select between eight data images to be programmed.<br />
The images can be easily selected by using the SEL button on the front of the housing.<br />
For more information about support for multiple images, please refer to [[#Multiple File Support | Multiple File Support]].<br><br />
For setup and configuration purposes, the Flasher Portable PLUS connects to a PC via USB interface,<br />
running Windows, Linux & MacOS and has a built-in standard 20-pin J-Link target connector.<br><br />
<br />
{{Note|1=Ethernet and RS232 as host interface are not available for the Flasher Portable PLUS.}}<br />
<br />
==== Housing & Buttons ====<br />
<br />
The Flasher Portable PLUS comes with a display, which is for example used to represent the status of an ongoing flash progress.<br />
Furthermore, there are three buttons which allow the user to control Flasher Portable PLUS.<br />
For a detailed description of the functions, take a look at the table below:<br />
<br />
<!-- LG xxxxxx edit image with labels for buttons? (Is this actually necessary? Buttons are basically self-explanatory...) --><br />
[[File:Flasher_Portable_PLUS.png | 500px]]<br />
<br />
{| class="seggertable"<br />
|-<br />
! Button !! Description<br />
|-<br />
| Program || Start programming process with the currently selected image.<br />
|-<br />
| Select image || Select the image to be programmed next time the Program button is pressed.<br />
|-<br />
| 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.<br />
|-<br />
|}<br />
<br />
==== Configuration ====<br />
<br />
The Flasher Portable PLUS has some configuration options the other Flashers do not have.<br />
{| class="seggertable"<br />
|-<br />
! Option !! Description !! Value range !! Default value<br />
|-<br />
| AutoPowerOffOnIdle || Specifies the time interval after which the Flasher Portable will turn off without any user action || 1 to 3600 || 60<br />
|-<br />
| ShowDatCRCAfterProgramming || Activates displaying the data file CRC after the programming in the pop up message || 0 = inactive, 1 = active || 0<br />
|-<br />
|}<br />
<br />
If the <tt>Flasher.ini</tt> does not contain a <tt>[Config]</tt> section with the configuration option, the default value is used.<br />
<br />
'''Example:'''<br><br />
This sample will show the data file CRC after the programming and the auto power of is set to five minutes (=300 seconds).<br />
<br />
<source lang="c"><br />
[CONFIG]<br />
AutoPowerOffOnIdle = "300"<br />
ShowDatCRCAfterProgramming = "1"<br />
</source><br />
<br />
=== Flasher Portable ===<br />
<br />
The Flasher Portable is a portable version of SEGGERs Flasher family, which has been designed to fill the need of an extremely portable,<br />
production grade, Flash programmer used for in-field firmware updates. No need to be tethered to an outlet,<br />
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><br />
<br />
Furthermore the Flasher Portable allows the user to select between four data images to be programmed.<br />
The images can be easily selected by using the arrow buttons on the front of the housing.<br />
For more information about support for multiple images, please refer to [[#Multiple File Support | Multiple File Support]].<br><br />
For setup and configuration purposes, the Flasher Portable connects to a PC via USB interface,<br />
running Windows, Linux & MacOS and has a built-in standard 20-pin J-Link target connector.<br><br />
<br />
{{Note|1=Ethernet and RS232 as host interface are not available for the Flasher Portable.}}<br />
<br />
==== Housing & Buttons ====<br />
<br />
The Flasher Portable comes with several leds which are for example used to represent the status of an ongoing flash progress.<br />
Furthermore, there are three buttons which allow the user to control Flasher Portable.<br />
For a detailed description of the functions, take a look at the two tables below:<br />
<br />
<!-- LG xxxxxx edit image with labels for buttons?--><br />
[[File:Flasher_Portable_Top_2.png | 500px]]<br />
<br />
{| class="seggertable"<br />
|-<br />
! LED !! Description<br />
|-<br />
| ACTIVE || GREEN. Blinks while the Flasher Portable is busy / performs operations on the target.<br />
|-<br />
| PASS/FAIL || GREEN/RED. Indicates, if the last flashing cycle was successful.<br />
<ul><br />
<li> GREEN: Flashing cycle completed successfully.</li><br />
<li> RED: Flashing cycle completed with error.</li><br />
</ul><br />
|-<br />
| 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]].<br />
|-<br />
| POWER || GREEN: Indicates if Flasher is currently powered. Blinks while Flasher Portable tries to enumerate via USB.<br />
|-<br />
| 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.<br />
|-<br />
|}<br />
<br />
{| class="seggertable"<br />
|-<br />
! Button !! Description<br />
|-<br />
| Program || Start programming process with the currently selected image.<br />
|-<br />
| Select image || Select the image to be programmed next time the <tt>Program</tt> button is pressed.<br />
|-<br />
| 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<br />
|-<br />
|}<br />
<br />
=== File system ===<br />
<br />
The Flasher supports 8.3 filenames only (8 characters filename, 3 characters file extension).<br />
Using longer filenames may result in incorrect operation. Integrated functions,<br />
like the FTP server or the terminal server, will refuse writing files with long filenames.<br />
<br />
=== Setting up the IP interface ===<br />
<br />
Setting up the IP interface<br />
Some of the Flasher models come with an additional Ethernet interface to communicate with the host system.<br />
These Flashers also come with a built-in webserver which allows some basic setup of the emulator,<br />
e.g. configuring a default gateway which allows using it even in large intranets. For more information,<br />
please refer to [[#TCP Services | TCP Services]].<br />
<br />
==== Connecting the first time ====<br />
<br />
When connecting Flasher the first time, it attempts to acquire an IP address via DHCP.<br />
The recommended way for finding out which IP address has been assigned to Flasher is, to use the J-Link Configurator.<br />
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.<br />
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''.<br />
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,<br />
please refer to ''UM08001, J-Link / J-Trace User Guide'', chapter ''Setup'', section ''Setting up the IP interface''.<br />
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]].<br />
<br />
=== Operating modes ===<br />
<br />
All Flashers except the Flasher ATE are able to boot in 3 different modes:<br />
<br />
* PC-based mode<br />
* Stand-alone mode<br />
* File access mode<br />
<br />
{{Note|1=The Flasher ATE only supports the stand-alone mode.}}<br />
<br />
'''Definition PC-based mode'''<br><br />
Flasher is connected to a PC via USB/Ethernet and controlled by a PC application (J-Flash).<br />
If there is an RS232 connection to a PC, does not have any influence on if PC-based mode is entered or not.<br />
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, ...)<br />
<br />
'''Definition Stand-alone mode'''<br><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.<br />
<br />
'''Definition file access mode'''<br><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.<br />
In this mode, Flasher enumerates as a mass storage device (like an USB Stick) at the host PC.<br />
In this mode, configuration + data files can be manually placed on the Flasher and the Flasher logfile can be read out.<br />
If you are using a self-powered Flasher such as the Flasher Portable Plus, the Flasher must be turned off before connecting it.<br />
<br />
==== PC-based mode ====<br />
If you want to use Flasher for the first time you need to install the J-Link software and documentation package.<br />
After installation, connect Flasher to the host PC via USB or Ethernet.<br />
For more information about how to install the J-Link software and documentation package please refer to [[J-Link Software and Documentation Pack]].<br />
<br />
===== Connecting the target system =====<br />
<br />
'''Power-on sequence'''<br><br />
In general, Flasher should be powered on before connecting it with the target device.<br />
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.<br />
Power-on the device after you connected Flasher to it. Flasher will boot in "PC-based mode".<br />
<br />
'''Verifying target device connection with J-Link.exe'''<br><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.<br />
Then start the J-Link command line tool <tt>JLink.exe</tt>,<br />
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.<br />
The screenshot below shows the output of <tt>JLink.exe</tt>.<br />
<br />
[[File:flasher_jlinkmode.gif]]<br />
<br />
===== LED status indicators =====<br />
<br />
In PC-based mode, there are also certain LED status codes defined:<br />
<br />
{| class="seggertable"<br />
|-<br />
! # !! Status of LED !! Meaning<br />
|-<br />
| 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.<br />
|-<br />
| 0 || GREEN<br>constant || Flasher enumeration process is complete and it is ready to be controlled by a PC application.<br />
|-<br />
|}<br />
<br />
==== Stand-alone mode ====<br />
<br />
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]].<br />
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).<br />
In the "stand-alone mode" Flasher can be used as a stand-alone flash programmer.<br><br />
<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]].}}<br />
<br />
===== LED status indicators =====<br />
Progress and result of an operation is indicated by Flasher's LEDs. The behavior is different for J-Link and stand-alone mode.<br />
For a definition of the different modes, please refer to [[#Operating modes | Operating modes]].<br />
The following table describes the behavior of the LEDs in stand-alone mode.<br />
<br />
{| class="seggertable"<br />
|-<br />
! # !! Status of LED !! Meaning<br />
|-<br />
| 0 || GREEN<br>constant || Flasher waits for a start trigger to perform an operation in stand-alone mode.<br />
|-<br />
| 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><br />
|-<br />
| 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.<br />
|-<br />
|}<br />
Older Flasher models have a different behavior.<br />
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:<br />
<br />
* 1621xxxxx (Flasher ARM V2)<br />
* 1630xxxxx (Flasher ARM V3)<br />
* 4210xxxxx (Flasher PPC V1)<br />
* 4110xxxxx (Flasher RX V1)<br />
<br />
{| class="seggertable"<br />
|-<br />
! # !! Status of LED !! Meaning<br />
|-<br />
| 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.<br />
|-<br />
| 1 || GREEN<br>constant || Connect to target and perform init sequence.<br />
|-<br />
| 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><br />
|-<br />
| 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.<br />
|-<br />
|}<br />
<br />
==== File access mode ====<br />
<br />
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".<br />
If you are using a self-powered Flasher such as the Flasher Portable Plus, the Flasher must be turned off before connecting it.<br />
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.<br />
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>.<br />
<br />
[[File:flasher_mode_msd.gif]]<br />
<br />
<tt>FLASHER.CFG</tt> contains the configuration settings for programming the target device and <tt>FLASHER.DAT</tt> contains the data to be programmed.<br />
<tt>FLASHER.LOG</tt> contains all logging information about the commands, performed in stand-alone mode.<br />
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><br />
<br />
Currently, J-Flash does not support to configure Flasher for automated serial number programming.<br><br />
<br />
If you want to configure multiple Flasher for the same target you do not have to use J-Flash all the time.<br />
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".<br />
<br />
=== Setting up Flasher for stand-alone mode ===<br />
{{Note| All Options how to set up the Flasher for stand-alone mode you can find here: https://wiki.segger.com/Flasher/Download_project_to_Flasher}}<br />
<br />
In order to set up Flasher for the stand-alone mode it needs to be configured once using the J-Flash software.<br />
For more information about J-Flash, please refer to the ''J-Flash User Guide''.<br><br />
<br />
After starting J-Flash, open the appropriate J-Flash project for the target Flasher shall be configured for, by selecting '''File''' -> '''Open Project'''.<br />
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><br />
<br />
After the appropriate project has been opened / created, the data file which shall be programmed needs to be loaded, by selecting '''File''' -> '''Open'''.<br />
After this J-Flash should look like in the screenshot below.<br />
<br />
[[File:jflash_projectfile_datafile.gif]]<br />
<br />
Before downloading the configuration (project) and program data (data file) to Flasher, the connection type (USB/IP) needs to be selected in the project.<br />
These settings are also saved on a per-project basis, so this also only needs to be setup once per J-Flash project.<br />
The connection dialog is opened by clicking '''Options''' -> '''Project settings''' -> '''General'''.<br />
<br />
[[File:jflash_connection_dialog.gif]]<br />
<br />
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.<br />
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.<br />
The user then can simply select the Flash he wants to download the configuration to.<br />
<br />
[[File:EmuSelectionDialog.gif]]<br />
<br />
In order to download the configuration and program data to the Flasher, simply select '''File''' -> '''Download config & data file to Flasher'''.<br />
<br />
[[File:jflash_download_to_emul.gif]]<br />
<br />
The J-Flash log window indicates that the download to the emulator was successful.<br />
<br />
[[File:jflash_download_to_emu_succ.gif]]<br />
<br />
From now on, Flasher can be used in stand-alone mode (without host PC interaction) for stand-alone programming.<br />
<br />
==== Preparing for stand-alone operation manually ====<br />
<br />
As an alternative, J-Flash can also be used to save config and data file to a hard drive.<br><br />
<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,<br />
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.<br />
<br />
'''Creating config and data files'''<br><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><br />
<br />
For some devices, additional files (*.PEX) are needed.<br />
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.<br />
<br />
'''About *.PEX files'''<br><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,<br />
the following needs to be taken care of:<br><br />
<br />
For some devices, special connect, reset etc. sequences are necessary which are stored in so-called *.PEX files on the Flasher.<br><br />
<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><br />
<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><br />
The *.PEX files need to be placed in a subdirectory with the same name as the corresponding *.cfg file.<br />
J-Flash creates a directory with the correct name automatically when a config file is created.<br><br />
<br />
Example:<br><br />
<br />
MyConf0 is a project for a device that requires a *.PEX file for connect.<br><br />
MyConf1 is a project for a device that requires no *.PEX file at all.<br />
<br />
[[File:PEX_File_Flasher.png]]<br />
<br />
=== Universal Flash Loader mode ===<br />
<br />
As an alternative to the stand-alone mode, configured via J-Flash, there is the Universal Flash Loader mode.<br />
While the normal stand-alone mode relies on using the debug interface of the device, the Universal Flash Loader<br />
mode uses device or vendor specific programming interfaces and protocols and therefore it is independent of the<br />
CPU core.<br><br />
<br />
The Universal Flash Loader is available for the following Flasher models:<br />
* Flasher PRO<br />
* Flasher Compact<br />
* Flasher Portable PLUS<br />
<br />
For some of the supported devices, SEGGER offers specific adapters.<br />
<br />
==== Preparing manually ====<br />
<br />
The Universal Flash Loader uses an configuration file (*.UNI), a device specific flash programming algorithm (*.PEX) and a data file (*.DAT).<br />
<br />
===== Configuration =====<br />
<br />
The configuration file basically is split into three parts.<br />
The first part, the section [DEVICE], controls the generic behavior of the Universal Flash Loader.<br />
It specifies which protocol driver and data file to use. It allows enabling and configuring target power<br />
and it defines which actions to perform.<br />
The second part consists of one or more [BANKx] sections, which contain information about the memories.<br />
The third part, the section [CONFIG], includes configuration settings for the protocol driver.<br><br />
<br />
An .UNI file might look as follows:<br><br />
<br />
<source lang="c"><br />
[OPTIONS]<br />
TargetPower = "0"<br />
ChipErase = "0"<br />
<br />
[TASKS]<br />
CheckBlank = "1"<br />
Erase = "1"<br />
Program = "1"<br />
Verify = "1"<br />
Secure = "1"<br />
<br />
[DEVICE]<br />
Algo = "RL78.PEX"<br />
Data = "ALL_6k.dat"<br />
<br />
[BANK0]<br />
; Code Flash<br />
Base = "0x00000000"<br />
Size = "0x00004000"<br />
Sect = "0x00000400"<br />
<br />
[BANK1]<br />
; Data Flash<br />
Base = "0x000F1000"<br />
Size = "0x00000800"<br />
Sect = "0x00000400"<br />
<br />
[CONFIG]<br />
BaudRate = "1000000"<br />
ClearConfigOnConnect = "0x00"<br />
Security = "0xFF"<br />
ShieldStart = "0x0000"<br />
ShieldEnd = "0x000F"<br />
</source><br />
<br />
'''[OPTIONS]'''<br><br />
'''TargetPower'''<br><br />
If set to a value >0, power is applied to the target.<br />
The value defines the delay (in ms) after enabling the target power supply and before starting to communicate with the target.<br />
<br />
'''ChipErase'''<br><br />
If set to 1, the chip erase function is called for erasing the chip.<br><br />
{{Note|1=Do not enable this setting if the flash programming algorithm does not support chip erase.}}<br />
<br />
'''[TASKS]'''<br><br />
'''CheckBlank'''<br><br />
Defines if a blank check should be performed before erasing a sector.<br />
<br />
'''Erase'''<br><br />
Defines if the sector should be erased before programming.<br />
<br />
'''Program'''<br><br />
Defines if the sector should be programmed.<br />
<br />
'''Verify'''<br><br />
Defines if the sector should be verified after programming.<br />
<br />
'''Secure'''<br><br />
Defines if the device should be secured or protected against read-out after verifying.<br />
<br />
'''[DEVICE]'''<br><br />
'''Algo'''<br><br />
File name of the flash programming algorithm. This file is provided by SEGGER and will typically support a series of devices.<br />
<br />
'''Data'''<br><br />
File name of the data file to program. The Flasher only supports the Flasher .dat file format.<br />
Flasher .dat files can be generated by J-Flash or Universal Flash Loader and offer high performance together with high flexibility.<br />
<br />
'''[BANKx]'''<br><br />
x blocks with configuration data for the flash banks. All three parameters (Base, Size and Sect) are mandatory.<br />
<br />
'''Base'''<br><br />
Base address of the flash bank.<br />
<br />
'''Size'''<br><br />
Total size of the flash bank.<br />
<br />
'''Sect'''<br><br />
Sector size of the flash bank.<br />
<br />
'''[CONFIG]'''<br><br />
This section includes specific configuration data for the flash programming algorithm.<br><br />
There are no general parameters.<br />
<br />
{{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. }}<br />
<br />
==== Preparing using the PC utility ====<br />
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.<br />
<br />
[[File:Universal Flash Loader.png]]<br />
<br />
The Universal Flash Loader Configurator comes with a large list of devices and flash programming algorithms. If you are going to<br />
use a device from one of the supported families which currently is not available in the utility, feel free to contact the support.<br />
<br />
=== Multiple File Support ===<br />
<br />
It is also possible to have multiple data files and config files on Flasher, to make Flasher more easy to use in production environment.<br />
To choose the correct configuration file and data file pair, a <tt>FLASHER.INI</tt> file is used.<br />
This init file contains a <tt>[FILES]</tt> section which describes which configuration file and which data file should be used for programming.<br />
A sample content of a FLASHER.INI file is shown below:<br><br />
<br />
<source><br />
[FILES]<br />
DataFile = "Flasher1.dat"<br />
ConfigFile = "Flasher1.cfg"<br />
</source><br />
<br />
Using this method all configuration files and data files which are used in the production only have to be downloaded once.<br />
From there on a configuration file / data file pair can be switched by simply replacing the <tt>FLASHER.INI</tt> by a new one,<br />
which contains the new descriptions for the configuration file and data file. The <tt>FLASHER.INI</tt> can be replaced in two ways:<br />
<ol><br />
<li>Boot Flasher in file access mode in order to replace the <tt>FLASHER.INI</tt></li><br />
<li><br />
If Flasher is already integrated into the production line, runs in stand-alone mode and can not be booted in other mode:<br />
Use the file I/O commands provided by the ASCII interface of Flasher, to replace the <tt>FLASHER.INI</tt>.<br />
For more information about the file I/O commands, please refer to [[#File I/O commands | File I/O commands]].<br />
</li><br />
</ol><br />
{{Note|1=Flasher supports 8.3 filenames only (8 characters filename, 3 characters file extension). Using longer filenames may result in incorrect operation.}}<br />
<br />
==== Flasher Portable specifics ====<br />
<br />
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><br />
<br />
Which config / data file pair is used for which image selection position is determined by the contents of the FLASHER.INI.<br />
For this, the FLASHER.INI contents in the <tt>[FILES]</tt> section have been extended.<br />
The sample below shows how to enable the user to select between four different images on the Flasher portable via the select / arrow button:<br />
<br />
<source><br />
[FILES]<br />
DataFile = "First.dat"<br />
ConfigFile = "First.cfg"<br />
DataFile1 = "Second.dat"<br />
ConfigFile1 = "Second.cfg"<br />
DataFile2 = "Third.dat"<br />
ConfigFile2 = "Third.cfg"<br />
DataFile3 = "Fourth.dat"<br />
ConfigFile3 = "Fourth.cfg"<br />
</source><br />
<br />
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.<br />
From there on, switching between the files can be done by simply using the selection button of Flasher Portable.<br />
<br />
===== Example =====<br />
<br />
1 Target, 2 Datafiles (e.g. boot loader und application) --> same configuration file (*.CFG) but different data files (*.DAT) should be used.<br><br />
<br />
* Open pre-configured J-Flash project<br />
* File -> Save Flasher config file ... (DEFAULT.CFG)<br />
* Open data file 1 (boot loader)<br />
* File -> Save Flasher data file ... (BOOT.DAT)<br />
* Open data file 2 (application)<br />
* File -> Save Flasher data file ... (APP.DAT)<br />
* Create the a FLASHER.INI file (content see below)<br />
* Connect the Flasher in file access mode to the PC<br />
* Copy DEFAULT.CFG, BOOT.DAT, APP.DAT and FLASHER.INI on the Flasher<br />
<br />
FLASHER.INI content:<br><br />
<br />
<source><br />
[FILES]<br />
DataFile = "BOOT.DAT"<br />
ConfigFile = "DEFAULT.CFG"<br />
DataFile1 = "APP.DAT"<br />
ConfigFile1 = "DEFAULT.CFG"<br />
</source><br />
<br />
==== Flasher Portable PLUS specifics ====<br />
<br />
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><br />
<br />
Which config / data file pair is used for which image selection position is determined by the contents of the FLASHER.INI.<br />
For this, the FLASHER.INI may contain several <tt>[BATCH]</tt> sections.<br />
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:<br />
<br />
<source><br />
[BATCH]<br />
DataFile = "First.dat"<br />
ConfigFile = "First.cfg"<br />
[BATCH1]<br />
DataFile = "Second.dat"<br />
ConfigFile = "Second.cfg"<br />
[BATCH2]<br />
DataFile = "Third.dat"<br />
ConfigFile = "Third.cfg"<br />
[BATCH7]<br />
DataFile = "Proj_8.dat"<br />
ConfigFile = "Proj_8.cfg"<br />
[BATCH15]<br />
DataFile = "Proj_16.dat"<br />
ConfigFile = "Proj_16.cfg"<br />
</source><br />
<br />
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.<br />
From there on, switching between the files can be done by simply using the selection button of Flasher Portable PLUS.<br />
<br />
Please also consider the chapter [[#Batch Programming in stand-alone mode | Batch Programming in stand-alone mode]].<br />
<br />
{{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.}}<br />
{{Note|1=You may have gaps in the list. The missing entries will be skipped when selecting the next configuration.}}<br />
{{Note|1=The <tt>[Files]</tt> section is supported by the Flasher Portable PLUS, too. But the number of configuration is limited to four.}}<br />
<br />
===== Example =====<br />
<br />
1 Target, 2 Datafiles (e.g. boot loader und application) --> same configuration file (*.CFG) but different data files (*.DAT) should be used.<br><br />
<br />
* Open pre-configured J-Flash project<br />
* File -> Save Flasher config file ... (DEFAULT.CFG)<br />
* Open data file 1 (boot loader)<br />
* File -> Save Flasher data file ... (BOOT.DAT)<br />
* Open data file 2 (application)<br />
* File -> Save Flasher data file ... (APP.DAT)<br />
* Create the a FLASHER.INI file (content see below)<br />
* Connect the Flasher in file access mode to the PC<br />
* Copy DEFAULT.CFG, BOOT.DAT, APP.DAT and FLASHER.INI on the Flasher<br />
<br />
FLASHER.INI content:<br><br />
<br />
<source><br />
[BATCH]<br />
DataFile = "BOOT.DAT"<br />
ConfigFile = "DEFAULT.CFG"<br />
DisplayName = "Bootloader"<br />
[BATCH1]<br />
DataFile = "APP.DAT"<br />
ConfigFile = "DEFAULT.CFG"<br />
DisplayName = "Application"<br />
[BATCH2]<br />
DataFile = "BOOT.DAT"<br />
ConfigFile = "DEFAULT.CFG"<br />
DataFile1 = "APP.DAT"<br />
ConfigFile1 = "DEFAULT.CFG"<br />
DisplayName = "BL and App"<br />
</source><br />
<br />
=== Custom labels ===<br />
<br />
Flasher supports to assign custom labels to configurations. This allows to specify easy to remember names for configurations that are stored on the Flasher.<br />
<br />
==== Hardware and software requirements ====<br />
This feature is supported by the following models:<br />
* Flasher Portable PLUS<br />
<br />
This feature is supported since V6.30e of the software package and firmware<br />
<br />
==== Assigning labels ====<br />
The configuration and data file pairs are specified in the <tt>FLASHER.INI</tt> file:<br />
<source><br />
[FILES]<br />
DataFile = "IMAGE0.dat"<br />
ConfigFile = "IMAGE0.cfg"<br />
DataFile1 = "IMAGE1.dat"<br />
ConfigFile1 = "IMAGE1.cfg"<br />
</source><br />
<br />
By default, Flasher will show the names of the configuration and data file:<br />
[[File:FW1_smartwatch_nolabel.png]]<br />
[[File:FW2_smart_meter_nolabel.png]]<br />
<br />
By adding <tt>DisplayName</tt>, <tt>DisplayName1</tt>, ... keys to the <tt>FLASHER.INI</tt>, a custom label can be shown instead:<br />
<source><br />
[FILES]<br />
DisplayName = "FW smartwatch"<br />
DataFile = "IMAGE0.dat"<br />
ConfigFile = "IMAGE0.cfg"<br />
DisplayName1 = "FW smart meter"<br />
DataFile1 = "IMAGE1.dat"<br />
ConfigFile1 = "IMAGE1.cfg"<br />
</source><br />
<br />
The images will now be shown as follows:<br />
[[File:FW1_smartwatch_label.png]]<br />
[[File:FW2_smart_meter_label.png]]<br />
<br />
==== Considerations ====<br />
* 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.<br />
<br />
=== Programming multiple targets ===<br />
<br />
It is possible to program multiple targets which are located in a JTAG chain.<br />
The targets will be programmed each with a configuration and a data file.<br />
The configuration for the desired target must be selected before it can be programmed,<br />
this can be done with the <tt>#SELECT</tt> command.<br />
For more information how to use the <tt>#SELECT</tt> command please refer to Chapter "3.3.5 ''Commands to Flasher''".<br />
<br />
'''Example'''<br><br />
Three devices should be programmed.<br><br />
<br />
JTAG Chain: ''TDI'' --> ''Device2'' --> ''Device1'' --> ''Device0'' --> ''TDO''<br><br />
<br />
Three configurations would be stored on the flasher:<br><br />
<br />
Config 0: Configured to program Device0 (DEVICE0.CFG, DEVICE0.DAT)<br><br />
Config 1: Configured to program Device1 (DEVICE1.CFG, DEVICE1.DAT)<br><br />
Config 2: Configured to program Device2 (DEVICE2.CFG, DEVICE2.DAT)<br><br />
<br />
Selection and programming of the target will be done via the ASCII interface:<br><br />
<br />
<source><br />
#SELECT DEVICE0<br />
#AUTO<br />
#SELECT DEVICE1<br />
#AUTO<br />
#SELECT DEVICE2<br />
#AUTO<br />
</source><br />
<br />
==== Programming multiple targets with J-Flash ====<br />
<br />
Programming multiple targets can also be done via J-Flash using the command line interface.<br />
For this each target must be handled with its own project file.<br />
<br />
'''Example'''<br><br />
<br />
<source><br />
JFlash.exe -openproj"Device0.jflash" -open"Device0.hex" -auto -exit<br />
JFlash.exe -openproj"Device1.jflash" -open"Device1.hex" -auto -exit<br />
JFlash.exe -openproj"Device2.jflash" -open"Device2.hex" -auto -exit<br />
</source><br />
<br />
=== Batch Programming in stand-alone mode ===<br />
<br />
Batch programming allows to execute different stand-alone mode jobs in batch to be executed in immediate succession, without any user interaction in between.<br />
This can be used for example to program multiple targets in a JTAG-Chain or multiple data files to a target.<br><br />
A batch may contains an unlimited number of configurations which consist of a data file (*.DAT) and config file (*.CFG).<br />
For further information regarding config and data files, please refer to [[#Preparing for stand-alone operation manually | Preparing for stand-alone operation manually]].<br><br />
In order to specify the batch jobs, a FLASHER.INI file is used.<br />
This init file contains a [BATCH] section which describes which configuration pairs (*.DAT and *.CFG file) should be used for each batch job.<br />
A sample content of a FLASHER.INI file is shown below:<br><br />
<br />
<source><br />
[BATCH]<br />
DataFile = "Flasher0.dat"<br />
ConfigFile = "Flasher0.cfg"<br />
DataFile1 = "Flasher1.dat"<br />
ConfigFile1 = "Flasher1.cfg"<br />
</source><br />
<br />
[[File:Batch_Jobs.bmp]]<br />
<br />
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.<br />
<br />
<br />
[[File:Batch_Programming.bmp]]<br />
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<br />
currently executed action.<br />
<br />
<br />
[[File:Batch_Result.bmp]]<br />
The result of the programming will be shown on the screen after finishing all jobs.<br />
<br />
<br />
Creating / Replacing of the FLASHER.INI file can done in two ways:<br><br />
<ol><br />
<li>Boot Flasher in file access mode in order to replace the FLASHER.INI</li><br />
<li><br />
If Flasher is already integrated into the production line, runs in stand-alone mode and can not be booted in other mode:<br />
Use the file I/O commands provided by the ASCII interface of Flasher, to replace the FLASHER.INI .<br />
For more information about the file I/O commands, please refer to [[#File I/O commands | File I/O commands]].<br />
In case of an error occurred during execution, the Flasher terminates the entire batch processing.<br />
</li><br />
</ol><br />
{{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.}}<br />
{{Note|1=Flasher supports 8.3 filenames only (8 characters filename, 3 characters file extension). Using longer filenames may result in incorrect operation.}}<br />
<br />
==== Flasher Portable specifics ====<br />
<br />
Flasher Portable allows to choose between four different batches during runtime by using the select/arrow button on the front of Flasher Portable.<br />
Which batch configuration is used for which image selection position is specified in the FLASHER.INI.<br />
For this, the FLASHER.INI contents in the [BATCH] section have been extended.<br />
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><br />
<br />
<source><br />
[BATCH]<br />
DataFile = "Flasher0.dat"<br />
ConfigFile = "Flasher0.cfg"<br />
DataFile1 = "Flasher1.dat"<br />
ConfigFile1 = "Flasher1.cfg"<br />
DataFile2 = "Flasher2.dat"<br />
ConfigFile2 = "Flasher2.cfg"<br />
[BATCH1]<br />
DataFile = "TEST.dat"<br />
ConfigFile = "Test.cfg"<br />
[BATCH2]<br />
DataFile = "VALIDATE.dat"<br />
ConfigFile = "Flasher0.cfg"<br />
</source><br />
<br />
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.<br />
From there on, switching between the batches can be done by simply using the selection button of Flasher Portable.<br />
<br />
<br />
<br />
==== Examples ====<br />
<br />
'''Example 1:''' Programming two Data files to the same target<br><br />
<br />
* Open your J-Flash project.<br />
* Use File -> Save Flasher config file... to save the .CFG file (in this example: STM32F4.CFG).<br />
* Select the first binary and use File -> Save Flasher Data file... to save the first .DAT file (in this example: DATA0.DAT).<br />
* Select the second binary and use File -> Save Flasher Data file... to save the second data file .DAT file (in this example: DATA1.DAT).<br />
* Copy the Files to the Flasher e.g. by using file access mode.<br />
* Create a FLASHER.INI file in the root directory of the Flasher.<br />
* Exemplary content of FLASHER.INI:<br><br />
<source><br />
[BATCH]<br />
DataFile = "DATA0.dat"<br />
ConfigFile = "emPower.cfg"<br />
DataFile1 = "DATA1.dat"<br />
ConfigFile1 = "emPower.cfg"<br />
</source><br />
<br />
<br />
'''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><br />
Example scenario: 2 Devices in a JTAG chain, a STM32F1 and a STM32F4. <br><br />
<br />
* Follow the same as described before and additionally:<br />
* Create one project file per target (and create a .CFG file of each one).<br />
* Make sure each project file is configured correctly, especially the JTAG-Chain position (See UM8003 "J-Flash" for more detailed info).<br />
* Exemplary content of FLASHER.INI:<br><br />
<source><br />
[BATCH]<br />
DataFile = "F1DATA.dat"<br />
ConfigFile = "STM32F1.cfg"<br />
DataFile1 = "F4DATA0.dat"<br />
ConfigFile1 = "STM32F4.cfg"<br />
DataFile2 = "F4DATA1.dat"<br />
ConfigFile2 = "STM32F4.cfg"<br />
</source><br />
<br />
'''Example 3:''' Using multiple Batch sections with Flasher Portable.<br><br />
Example scenario: 2 Devices in a JTAG chain, a STM32F1 and a STM32F4.<br><br />
Selection 1 will program the STM32F1 target.<br><br />
Selection 2 will program the STM32F4 target using "F4DATA0.dat".<br><br />
Selection 3 will program the STM32F4 target using "F4DATA1.dat".<br><br />
Selection 4 will execute 1, 2 and 3 in sequence.<br><br />
* Exemplary content of FLASHER.INI:<br><br />
<source><br />
[BATCH]<br />
DataFile = "F1DATA.dat"<br />
ConfigFile = "STM32F1.cfg"<br />
[BATCH1]<br />
DataFile = "F4DATA0.dat"<br />
ConfigFile = "STM32F4.cfg"<br />
[BATCH2]<br />
DataFile = "F4DATA1.dat"<br />
ConfigFile = "STM32F4.cfg"<br />
[BATCH3]<br />
DataFile = "F1DATA.dat"<br />
ConfigFile = "STM32F1.cfg"<br />
DataFile1 = "F4DATA0.dat"<br />
ConfigFile1 = "STM32F4.cfg"<br />
DataFile2 = "F4DATA1.dat"<br />
ConfigFile2 = "STM32F4.cfg"<br />
</source><br />
<br />
=== Serial number programming ===<br />
<br />
Flasher supports programming of serial numbers. In order to use the serial number programming feature,<br />
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><br />
<br />
In general, Flasher supports two ways of programming a serial number into the target:<br />
<br />
#<br />
#* Programming continuous serial numbers.<br />
#* The serial number is 1-4 bytes in size.<br />
#* The start serial number, increment, serial number size, and address are configured in the J-Flash project.<br />
#<br />
#* Programming custom serial numbers from a serial number list file.<br />
#* The start line within the serial number list file to get the next serial number bytes, line increment, serial number size, and address is configured in the J-Flash project.<br />
#* The serial number list file needs to be specified and created by the user.<br />
<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.}}<br />
<br />
==== Serial number settings ====<br />
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.<br />
This is done by enabling the '''Program serial number''' option as shown in the screenshot and table below:<br />
<br />
[[File:UM08039_SN_Sample_JFlashSettings.png]]<br />
<br />
{| class="seggertable"<br />
|-<br />
!| Setting || Meaning<br />
|-<br />
| <tt>Address</tt> || The address the serial number should be programmed at.<br />
|-<br />
| <tt>Length</tt> ||<br />
The length of the serial number (in bytes) that 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 8 is selected as length, the serial number and its complement are programmed at the given address.<br />
* In case a serial number list file is given, the 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 '''Length''', the remaining bytes are filled with 0s. No complements etc. are added to the serial number.<br />
|-<br />
| <tt>Next SN</tt> ||<br />
* In case no serial number list file is given, '''Next SN''' is the next serial number which should be programmed. The serial number is always stored in flash memory in little-endian format.<br />
* In case a serial number list file is given, '''Next SN''' describes the line of the serial number list file where to read the next serial number bytes from. The Flasher starts counting at line 0, so in order to start serial number programming with the first line of the <tt>SNList.txt</tt>, '''Next SN''' needs to be set to 0.<br />
|-<br />
| <tt>Increment</tt> || Specifies by how much '''Next SN''' is incremented.<br />
|}<br />
<br />
=== Serial number file ===<br />
When selecting '''File -> Download serial number file to Flasher''', J-Flash will create a serial number file named as <tt><JFlashProjectName>_Serial.txt</tt>.<br />
This file is downloaded as <tt>Serial.txt</tt> on the Flasher.<br />
The file is generated based on the serial number settings in the J-Flash project and will contain the value defined by the '''Next SN''' option.<br />
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.<br />
<br />
==== Serial number list file ====<br />
<br />
In order to program custom serial numbers which can not be covered by the standard serial number scheme provided by J-Flash<br />
(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.<br />
<br />
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.<br />
This file is downloaded as <tt>SNList.txt</tt> on the 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<br />
* Each byte of the serial number is described by two hexadecimal digits.<br />
<br />
'''Example'''<br><br />
A 8-byte serial number should be programmed at address 0x08000000.<br><br />
<br />
It should be programmed as follows in the memory:<br><br />
<br />
<tt>0x08000000: 0x01 0x02 0x03 0x04 0x55 0x66 0x77 0x88</tt><br><br />
<br />
The serial number list file should look as follows:<br><br />
<br />
<tt>0102030455667788</tt><br />
<br />
[[File:SN_SNList.gif]]<br />
<br />
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><br />
<br />
Which line Flasher will read at the next programming cycle, is configured via the <tt>Next SN</tt> option in J-Flash.<br />
For more information, please refer to [[#Serial number settings | Serial number settings]].<br />
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><br />
<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.}}<br />
{{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.}}<br />
<br />
==== Programming process ====<br />
<br />
Flasher will increment the serial number in SERIAL.TXT by the value defined in <tt>Increment</tt>, after each successful programming cycle.<br><br />
<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><br />
<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.<br />
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.}}<br />
<br />
==== Downloading serial number files to Flasher ====<br />
<br />
Downloading the serial number files needs to be done explicitly by selecting '''File-> Download serial number file to Flasher'''.<br />
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.<br />
<br />
==== Sample setup ====<br />
<br />
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.<br />
<br />
'''Defining serial number address, length and start value'''<br><br />
In the J-Flash project the following needs to be defined:<br><br />
* <tt>Address</tt> is 0x08001000<br />
* <tt>Next SN</tt> is 1234567<br />
* <tt>Increment</tt> is 1<br />
* <tt>Len</tt> is 4 (bytes)<br />
<br />
[[File:SN_Sample_JFlashSettings.gif]]<br />
<br />
'''Downloading configuration, data and serial number to Flasher.'''<br><br />
After setting up the rest of the configuration (Target interface etc.) and selecting an appropriate data file, the configuration,<br />
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><br />
<br />
[[File:SN_Sample_DownloadToFlasher.gif]]<br />
<br />
After downloading the serial number to Flasher, J-Flash also created the <tt><JFlashProjectName>_Serial.txt</tt>.<br />
<br />
[[File:SN_Sample_SerialFileCreated.gif]]<br />
<br />
Now Flasher is prepared to program the 8-byte serial number.<br />
<br />
=== Patch file support ===<br />
<br />
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.<br />
Before starting programming process in stand-alone mode, Flasher will look for a file named <tt>Patches.txt</tt> being present on the Flasher.<br />
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><br />
<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.<br />
<br />
'''Syntax'''<br><br />
<!-- LG xxxxxxxxx '==' is shown as '=', so instead use '= ='--><br />
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><br />
<br />
<tt><NumPatches>,<Addr>,<NumBytes>:<nowiki><Data></nowiki>,<Addr>,<NumBytes>:<nowiki><Data></nowiki>,<Addr>,</tt><br><br />
<tt><NumBytes>:<nowiki><Data></nowiki>,<Addr>,<NumBytes>:<nowiki><Data></nowiki>\r\n</tt><br><br />
<br />
Find below a table which describes each parameter.<br><br />
{| class="seggertable"<br />
|-<br />
! Parameter !! Description<br />
|-<br />
| <tt><NumPatches></tt> || Describes the number of patches in this patch line. Max. value is 4.<br />
|-<br />
| <tt><Addr></tt> || Describes the address to be patched. Value is expected in hex.<br />
|-<br />
| <tt><NumBytes></tt> || Number of bytes for the current patch. Max. value is 20h (32 in decimal). Value is expected in hex.<br />
|-<br />
| <tt><nowiki><Data></nowiki></tt> || Describes the data to be patched. <nowiki><Data></nowiki> is always expected as 2 hexadecimal characters per byte.<br />
|-<br />
|}<br />
<br />
{{Note|1=All values are expected in hexadecimal format (hex).<br><br />
<nowiki><Data></nowiki> section is always preceded by ":", not ",".}}<br />
<br />
'''Example'''<br><br />
Below is an example patch.<br><br />
<br />
<source><br />
1,18,4:01020304\r\n<br />
</source><br />
<br />
Patching the following data:<br />
<br />
[[File:data_before.png]]<br />
<br />
with the example patch will result in the following data:<br />
<br />
[[File:data_afterwards.png]]<br />
<br />
Please note that as mentioned earlier patching undefined memory locations will be ignored.<br><br />
Applying the example patch to the following data:<br />
<br />
[[File:undefined_mem_before.png]]<br />
<br />
Causes no data to be patched, as can be seen in the following image:<br />
<br />
[[File:undefined_mem_no_token.png]]<br />
<br />
Therefore it is necessary to first write placeholder data to the memory locations which are supposed to be patched.<br><br />
An example for such a placeholder can be seen here:<br />
<br />
[[File:undefined_mem_token.png]]<br />
<br />
Please note that the actual data inside the placeholder does not matter to the Flasher,<br />
because it is overwritten during patching.<br><br />
Applying the example patch will now work as expected:<br />
<br />
[[File:undefined_mem_after.png]]<br />
<br />
'''Single patch via RS232'''<br><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><br />
<br />
Send the <tt>#AUTO PATCH <NumPatches>,<Addr>,<NumBytes>:<nowiki><Data></nowiki></tt><br><br />
<br />
command via Flasher ASCII interface. The parameters have the same function as described in the table above.<br />
<br />
==== Newline encoding ====<br />
<br />
In general, for all patch files, init files etc. Flasher supports both newline encodings:<br><br />
<br />
* Windows: \r\n<br />
* Unix/Mac: \n<br />
<br />
All parser functionality etc. are written to be independent from the host operating system.<br />
<br />
=== Limiting the number of programming cycles ===<br />
<br />
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.<br />
To make use of this feature, a file called <tt>Cntdown.txt</tt> needs to be placed on the Flasher.<br />
This file simply contains a decimal number (32-bit unsigned integer) that describes how many programming cycles can be performed with the current setup.<br />
<br />
[[File:CntdownTxtContent.jpg]]<br />
<br />
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><br />
<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>.}}<br />
<br />
==== Changed fail/error LED indicator behavior ====<br />
<br />
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><br />
<br />
* The red error/fail LED will lit for 1 second<br />
* After this, it will blink/toggle x times @ 5 Hz, indicating the number of programming cycles left. (blinking 5 times for 5 cycles left, ...)<br />
<br />
==== Required Flasher hardware version for Cntdown.txt support ====<br />
<br />
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><br />
<br />
* 1621xxxxx (Flasher ARM V2)<br />
* 1630xxxxx (Flasher ARM V3)<br />
* 4210xxxxx (Flasher PPC V1)<br />
* 4110xxxxx (Flasher RX V1)<br />
<br />
All other models / hardware versions support limiting of programming cycles.<br />
<br />
=== Authorized flashing ===<br />
<br />
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.<br />
without the possibility to read out the Flasher contents via file access mode, FILE I/O functionality (J-Link Commander) or RS232 commands.<br />
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.<br />
<br />
==== Creating / Adding the secure area ====<br />
<br />
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.<br />
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.<br />
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><br />
<br />
[[File:CreateSecArea.jpg]]<br />
<br />
The following secure area related commands are available in J-Link Commander:<br><br />
<br />
* securearea create<br />
* securearea remove<br />
<br />
{{Note|1=When creating or removing the <tt>secure area</tt>, all configuration and data files being stored on the Flasher, are lost.<br />
Please make sure that they are not needed anymore, before adding / removing the security area.}}<br />
<br />
==== Moving files to the secure area ====<br />
<br />
Before moving configuration + data to the <tt>secure area</tt>, proper functionality of the setup should be tested in stand-alone mode.<br />
Once the setup is working as expected, do the following, to move the configuration + data into the <tt>secure area</tt>:<br><br />
<br />
* Start Flasher in file access mode (For more info, please refer to: [[#file access mode | file access mode]])<br />
<br />
[[File:FilesBeforeSecure.png]]<br />
<br />
* Create a folder "<tt>_SECURE</tt>"<br />
* Move all files that shall be moved to the <tt>secure area</tt>, into this folder<br />
<br />
[[File:FilesAfterSecure.png]]<br />
<br />
* 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.<br />
* Now Flasher can be used in stand-alone mode, as normal, but the files cannot be read back by the user / operator.<br />
<br />
==== Considerations to be taken when using the secure area ====<br />
<br />
When using the <tt>secure area</tt>, some things need to be considered:<br><br />
<br />
* All features like multiple file support, patch file support etc. can also be used when operating from the <tt>secure area</tt>.<br />
* 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>.<br />
* 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>.<br />
* 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.<br />
<br />
==== Required Flasher hardware version ====<br />
<br />
Older Flasher models do not support authorized flashing. The Flashers with the following serial number ranges do not support authorized flashing:<br><br />
<br />
* 1621xxxxx (Flasher ARM V2)<br />
* 1630xxxxx (Flasher ARM V3)<br />
* 4210xxxxx (Flasher PPC V1)<br />
* 4110xxxxx (Flasher RX V1)<br />
<br />
All other models / hardware versions support authorized flashing.<br />
<br />
=== Target interfaces ===<br />
<br />
The table below shows the supported target interfaces of the different Flasher models.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! Supported interfaces<br />
|-<br />
| Flasher PRO || JTAG, SWD<br />
|-<br />
| Flasher Compact || JTAG, SWD<br />
|-<br />
| Flasher ARM || JTAG, SWD<br />
|-<br />
| Flasher RX || JTAG<br />
|-<br />
| Flasher PPC || JTAG<br />
|-<br />
|}<br />
<br />
For more information about the target interfaces itself, please refer to:<br><br />
<br />
* ''UM08001, chapter "Working with J-Link and J-Trace", section "JTAG interface"''<br />
* ''UM08001, chapter "Working with J-Link and J-Trace", section "SWD interface"''<br />
<br />
=== Supported architectures ===<br />
<br />
Flasher supports programming of the internal flash of a large number of different microcontrollers.<br />
The number of supported devices is steadily growing. You can always find the latest list of supported devices on our website:<br><br />
<br />
''http://www.segger.com/supported-devices.html''<br />
<br />
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.<br />
Also the existence of the device may have confidential status, so it might not be mentioned as being supported in public releases yet.<br />
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.<br />
<br />
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).<br />
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.<br />
<br />
If a device is not supported, you can always contact us. We will be happy to provide you with an offer.<br />
<br />
==== External flashes ====<br />
<br />
In general our Flashers support programming of external flashes listed below:<br>(Can differ between Flasher models and hardware versions)<br />
<br />
* parallel NOR flash<br />
* SPI / QSPI flash<br>(see: ''[[SPI_support_by_Flasher_models]]'')<br />
* NAND flash<br />
* I<sup>2</sup>C EEPROM/Flash<br />
* FRAM<br />
<br />
If the parallel NOR flash device which is used is not CFI-compliant you have to select the flash device in J-Flash explicitly,<br />
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''.<br />
<br />
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.<br />
The J-Flash software comes with sample projects for ''Open Flashloader''.<br />
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''<br />
{{Note|1=Complete Information about ''Open Flashloaders'' can be found in our Wiki:<br>''[[Open_Flashloader]]''}}<br />
<br />
==== Cores ====<br />
<br />
===== Flasher ARM =====<br />
<br />
Flasher ARM supports and has been tested with the following cores, but should work with any ARM7/9, Cortex-M0/M1/M3/M4 core.<br />
If you experience problems with a particular core, do not hesitate to contact Segger.<br><br />
<br />
* ARM7TDMI (Rev 1)<br />
* ARM7TDMI (Rev 3)<br />
* ARM7TDMI-S (Rev 4)<br />
* ARM920T<br />
* ARM922T<br />
* ARM926EJ-S<br />
* ARM946E-S<br />
* ARM966E-S<br />
* Cortex-M0<br />
* Cortex-M1<br />
* Cortex-M3<br />
* Cortex-M4<br />
<br />
===== Flasher RX =====<br />
<br />
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><br />
<br />
* RX610<br />
* RX621<br />
* RX62N<br />
* RX62T<br />
<br />
===== Flasher PPC =====<br />
<br />
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.<br />
<br />
* e200z0<br />
<br />
===== Flasher PRO/Compact/Portable PLUS =====<br />
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/''.<br />
<br />
=== Programming multiple targets in parallel ===<br />
<br />
To program multiple targets in parallel there are the following possibilities:<br />
* Using a Flasher gang, or<br />
* Using multiple Flashers, each connecting to one CPU.<br />
<br />
Devices for gang programming are:<br />
* 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)].<br />
* 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)].<br />
When using multiple flashers, this can be done with the J-Flash production programming software.<br />
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''<br />
<br />
=== Logfiles and Quality Management ===<br />
<br />
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:<br />
<source lang="c"><br />
SN: 1 - Failed<br />
SN: 1 - Failed<br />
SN: 2 - O.K. (931 ms)<br />
SN: 3 - O.K. (931 ms)<br />
SN: 4 - O.K. (933 ms)<br />
SN: 5 - O.K. (932 ms)<br />
</source><br />
If applicable, the logfile contains more detailed error messages. For example:<br />
<source lang="c"><br />
ERROR: Programming failed @ address 0x00000000 (1)<br />
ERROR: Cannot connect to CPU. Target interface speed too high?<br />
</source><br />
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:<br />
<source lang="c"><br />
Verify error config word area @<br />
config word<br />
config word read back<br />
Verify error flash area @<br />
data from file<br />
data read back<br />
</source><br />
{{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.}}<br />
<br />
== TCP Services ==<br />
This chapter describes the integrated TCP services.<br />
<br />
=== FTP Server ===<br />
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><br />
[[File:FTPServer.png]]<br />
<br />
==== Access data ====<br />
Anonymous access to the FTP server is limited to read-only access to the file system.<br><br />
For write access, special login credentials have to be used:<br><br />
<tt>Login: admin</tt><br><br />
<tt>Password: 1234</tt><br><br />
<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.<br />
It is not meant as a security feature.}}<br />
<br />
=== Web server ===<br />
<br />
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.<br />
For the network, the IP address settings can be changed and a nick name can be assigned to the device.<br><br />
<br />
Additionally, the web interface provides information about the status of the integrated operating system, the IP stack and the target hardware.<br />
<br />
== Remote control ==<br />
This chapter describes how to control the Flasher in standalone mode.<br />
<br />
=== Overview ===<br />
There are 3 ways to control Flasher operation:<br><br />
{| class="seggertable"<br />
! Type of control !! Description<br />
|-<br />
| Button || Programming operation starts when pressing the PROG-button. The LEDs serve as visible indicators.<br />
|-<br />
| Handshake || 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.<br />
|-<br />
| Terminal || Terminal communication via TELNET, RS232 or VCOM with the [[#ASCII command interface]]<br />
|}<br />
<br />
<br />
{{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.}}<br />
<br />
=== Handshake control ===<br />
<br />
Some Flasher models are equipped with additional hardware control functions that are connected to the SUBD9 male connector, normally used as an RS232 interface to the PC.<br />
These Flasher models can therefore be controlled remotely by automated testers without the need for a connection to a PC.<br />
<br />
The handshake control is available for the following Flashers:<br />
* Flasher ARM<br />
* Flasher PRO<br />
* Flasher Compact (via Flasher Hub and Flasher Hub-12 only)<br />
<br />
The following diagrams show the internal remote control circuitry of Flasher:<br><br />
<br />
[[File:FlasherRemotecontrol.png]]<br />
{| class="seggertable"<br />
|-<br />
! Pin No. !! Function !! Description<br />
|-<br />
| 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.<br />
|-<br />
| 4 || BUSY || As soon as the "Auto" function is started, BUSY becomes active, which means that transistor is switched OFF.<br />
|-<br />
| 5 || GND || Common Signal ground.<br />
|-<br />
| 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.<br />
|-<br />
|}<br />
[[File:FlasherRemoteSignal.png]]<br />
<br />
=== ASCII command interface ===<br />
<br />
==== Introduction ====<br />
<br />
Once set up using J-Flash, the Flasher can be driven by any application or just a simple terminal using ASCII commands.<br><br />
<br />
Every known command is acknowledged by the Flasher and then executed. After command execution, Flasher sends an ASCII reply message.<br><br />
<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}}<br />
<br />
==== General command and reply message format ====<br />
<br />
* Any ASCII command has to start with the start delimiter ''#''.<br />
* Any ASCII command has to end with simple carriage return ('\r', ASCII code 13).<br />
* Commands can be sent upper or lower case<br />
<br />
==== General usage ====<br />
<br />
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.<br />
<br />
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).<br />
<br />
==== Settings for ASCII interface via RS232 ====<br />
<br />
Flasher is driven via a RS232 serial port with the following interface settings:<br><br />
<br />
* 9600 baud<br />
* 8 data bits<br />
* no parity<br />
* 1 stop bit<br />
<br />
The baud rate can be changed by using the <tt>#BAUDRATE</tt> command.<br />
<br />
==== Settings for ASCII interface via Telnet ====<br />
<br />
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><br />
<br />
[[File:telnet_connection.gif]]<br />
<br />
==== Settings for ASCII interface via VCOM ====<br />
<br />
The same settings can be used for VCOM as for [[#Settings for ASCII interface via RS232|RS232]].<br />
<br />
{{Note|The performance also depends on the terminal application used on the PC.}}<br />
<br />
==== Commands and replies ====<br />
<br />
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><br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| Commands to the Flasher<br />
|-<br />
| <tt>#BAUDRATE <Baudrate></tt><br />
|-<br />
| <tt>#AUTO</tt><br />
|-<br />
| <tt>#AUTO PATCH</tt><br />
|-<br />
| <tt>#AUTO NOINFO</tt><br />
|-<br />
| <tt>#CANCEL</tt><br />
|-<br />
| <tt>#ERASE</tt><br />
|-<br />
| <tt>#PROGRAM</tt><br />
|-<br />
| <tt>#RESULT</tt><br />
|-<br />
| <tt>#SELECT <Filename></tt><br />
|-<br />
| <tt>#START</tt><br />
|-<br />
| <tt>#STATUS</tt><br />
|-<br />
| <tt>#VERIFY</tt><br />
|-<br />
| <tt>#QUIT</tt><br />
|-<br />
| <tt>#VERBOSE <Level></tt><br />
|-<br />
!colspan="100%"| File I/O commands<br />
|-<br />
| <tt>#FCLOSE</tt><br />
|-<br />
| <tt>#FCRC</tt><br />
|-<br />
| <tt>#FDELETE <Filename></tt><br />
|-<br />
| <tt>#FOPEN <Filename></tt><br />
|-<br />
| <tt>#FREAD <Offset>,<NumBytes></tt><br />
|-<br />
| <tt>#FSIZE</tt><br />
|-<br />
| <tt>#FWRITE <Offset>,<NumBytes>:<nowiki><Data></nowiki></tt><br />
|-<br />
| <tt>#FLIST</tt><br />
|-<br />
| <tt>#MKDIR <Dirname></tt><br />
|-<br />
!colspan="100%"| SecureArea commands<br />
|-<br />
| <tt>#HASSECUREAREA</tt><br />
|-<br />
| <tt>#SECUREAREA <action></tt><br />
|-<br />
!colspan="100%"| Replies from the Flasher<br />
|-<br />
| <tt>#ACK</tt><br />
|-<br />
| <tt>#NACK</tt><br />
|-<br />
| <tt>#OK</tt><br />
|-<br />
| <tt>#OK:<NumBytes>:<nowiki><Data></nowiki></tt><br />
|-<br />
| <tt>#OK:<Size></tt><br />
|-<br />
| <tt>#STATUS:</tt><br />
|-<br />
| <tt>#DONE</tt><br />
|-<br />
| <tt>#ERRxxx</tt><br />
|-<br />
|}<br />
<br />
===== Commands to the Flasher =====<br />
<br />
'''#AUTO'''<br><br />
The <tt>#AUTO</tt> command behaves exactly as the start button or external remote control input.<br><br />
<br />
Usually, the following command sequence will be performed when receiving the <tt>#AUTO</tt> command:<br><br />
<br />
* The Flasher erases the target CPU (if not blank)<br />
* The Flasher programs the target CPU<br />
* The Flasher verifies the target CPU<br />
<br />
Depending on the settings chosen in the '''Production''' tab in J-Flash, this sequence can differ from the one shown above.<br><br />
<br />
Finally, Flasher responds with<br><br />
<br />
* <tt>#OK</tt> if no error occurred<br />
* <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.<br />
<br />
During execution of the <tt>#AUTO</tt> command, Flasher automatically sends "status" messages via RS232 to reflect the state of execution.<br />
Typically during execution of <tt>#AUTO</tt> command, Flasher will reply the following sequence of messages:<br><br />
<br />
<tt>#ACK</tt><br><br />
<tt>#STATUS:INITIALIZING</tt><br><br />
<tt>#STATUS:CONNECTING</tt><br><br />
<tt>#STATUS:UNLOCKING</tt><br><br />
<tt>#STATUS:ERASING</tt><br><br />
<tt>#STATUS:PROGRAMMING</tt><br><br />
<tt>#STATUS:VERIFYING</tt><br><br />
<tt>#OK (Total 13.993s, Erase 0.483s, Prog 9.183s, Verify 2.514s)</tt><br><br />
<br />
'''#AUTO PATCH'''<br><br />
The <tt>#AUTO</tt> PATCH command allows patching of the content of the data to be programmed.<br><br />
<br />
Flasher responds with<br><br />
<br />
* <tt>#OK</tt> if no error occurred<br />
* <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.<br />
<br />
For further information about the usage of the <tt>#AUTO PATCH</tt> command please refer to [[#Patch file support | Patch file support]].<br />
<br />
'''#AUTO NOINFO'''<br><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><br />
<br />
The command ends with <tt>#OK</tt> or <tt>#ERRxxx</tt><br />
<br />
'''#BAUDRATE <Baudrate>'''<br><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><br />
<br />
If this command succeeds, Flasher responds with:<br><br />
<br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<br />
Otherwise it will respond with one of the following error messages:<br><br />
<br />
<tt>#ERR255: Invalid parameters</tt><br><br />
<tt>or</tt><br><br />
<tt>#ERR255: Baudrate is not supported</tt><br><br />
<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.<br />
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.}}<br />
<br />
'''#CANCEL'''<br><br />
This command can be sent to abort a running program. It may take a while until the current program is actually canceled.<br><br />
<br />
Flasher will respond with:<br><br />
<br />
<tt>#ERR007:CANCELED.</tt><br><br />
<br />
'''#ERASE'''<br><br />
This command can be sent to erase all selected target flash sectors.<br><br />
<br />
Flasher will reply the following sequence of messages:<br><br />
<br />
<tt>#ACK</tt><br><br />
<tt>#STATUS:INITIALIZING</tt><br><br />
<tt>#STATUS:CONNECTING</tt><br><br />
<tt>#STATUS:UNLOCKING</tt><br><br />
<tt>#STATUS:ERASING</tt><br><br />
<tt>#OK (Total 0.893s, Erase 0.483s)</tt><br><br />
<br />
'''#PROGRAM'''<br><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.<br />
<br />
'''#RESULT'''<br><br />
This command can be sent any time, even during other command execution. Flasher responds with the last result of the previously executed command.<br />
<br />
'''#SELECT <Filename>'''<br><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.<br />
<tt><Filename></tt> specifies the name of file pair without extensions (.CFG and .DAT) on the Flasher which should be selected. If you are<br />
using the universal flash programming mode, <tt><Filename></tt> specifies the full name of the .UNI file '''including''' the extension.<br />
Flasher saves the selected config and data file in the FLASHER.INI file. So this selection is remembered even between power-cycling Flasher.<br><br />
<br />
This may be verfy helpful in cases where several config and data files are stored on Flasher.<br />
The user can easily switch between these config and data files without connecting Flasher to a host.<br><br />
<br />
If this command succeeds, Flasher responds with:<br><br />
<br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<br />
Find below a sample sequence which shows how to use the <tt>#SELECT</tt> command:<br><br />
<br />
<tt>#SELECT ATSAM7_1 // ATSAM7_1.CFG and ATSAM7_1.DAT is selected</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<tt>#AUTO // Start auto programming</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#STATUS:INITIALIZING</tt><br><br />
<tt>#STATUS:CONNECTING</tt><br><br />
<tt>#STATUS:UNLOCKING</tt><br><br />
<tt>#STATUS:ERASING</tt><br><br />
<tt>#STATUS:PROGRAMMING</tt><br><br />
<tt>#STATUS:VERIFYING</tt><br><br />
<tt>#OK (Total 8.416s, Erase 0.005s, Prog 6.845s, Verify 0.959s)</tt><br><br />
<tt>#SELECT ATSAM7_2 // ATSAM7_2.CFG and ATSAM7_2.DAT is selected</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<tt>#AUTO // Start auto programming</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#STATUS:INITIALIZING</tt><br><br />
<tt>#STATUS:CONNECTING</tt><br><br />
<tt>#STATUS:UNLOCKING</tt><br><br />
<tt>#STATUS:ERASING</tt><br><br />
<tt>#STATUS:PROGRAMMING</tt><br><br />
<tt>#STATUS:VERIFYING</tt><br><br />
<tt>#OK (Total 8.632s, Erase 0.005s, Prog 7.051s, Verify 0.969s)</tt><br><br />
<br />
'''#START'''<br><br />
This command can be sent to start the application using the method configured in the J-Flash project.<br />
<br />
Flasher will reply with the following sequence of messages:<br><br />
<br />
<tt>#ACK</tt><br><br />
<tt>#STATUS:INITIALIZING</tt><br><br />
<tt>#STATUS:CONNECTING</tt><br><br />
<tt>#OK (Total 1.148s)</tt><br><br />
<br />
'''#STATUS'''<br><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]].<br />
<br />
'''#VERIFY'''<br><br />
This command can used to verify the target flash content against the data stored in Flasher.<br />
<br />
'''#QUIT'''<br><br />
This command can be used to terminate the active telnet connection from the server side (Flasher).<br />
The command provides an easy way to terminate the session from an automated script.<br />
It is not necessary to parse stdout and switch to local command mode to disconnect.<br />
Not implemented in the Flasher ATE or Flasher Hub.<br />
<br />
'''#VERBOSE <Level>'''<br><br />
This command can be used to change the verbosity level. <br><br />
* Verbosity level 0: Default. <br><br />
* Verbosity level 1: Provides some additional messages during the programming process.<br />
<br />
===== File I/O commands =====<br />
<br />
The ASCII interface of the Flasher also supports file I/O operations.<br />
<br />
The following file I/O commands are supported:<br><br />
<br />
'''#FCLOSE'''<br><br />
The <tt>#FCLOSE</tt> command closes the file on Flasher which was opened via <tt>#FOPEN</tt>.<br />
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><br />
<br />
A typical sequence when using the <tt>#FCLOSE</tt> command does look like as follows:<br><br />
<br />
<tt>#FCLOSE</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<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><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:No file opened</tt><br />
}}<br />
<br />
'''#FCRC'''<br><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>.<br />
The CRC will be also reported by J-Flash when downloading or saving files via J-Flash.<br><br />
<br />
A typical sequence when using the <tt>#FCRC</tt> command does look like as follows:<br><br />
<br />
<tt>#FCRC flasher.dat</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK:0x75BC855A</tt><br><br />
<br />
'''#FDELETE <Filename>'''<br><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><br />
<br />
A typical sequence when using the <tt>#FDELETE</tt> command does look like as follows:<br><br />
<br />
<tt>#FDELETE flasher.dat</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<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><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:Failed to delete file</tt><br />
}}<br />
<br />
'''#FOPEN <Filename>'''<br><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.<br />
If <tt><Filename></tt> can not be found on Flasher a new one will be created.<br><br />
<br />
A typical sequence using the <tt>#FOPEN</tt> command does look like as follows:<br><br />
<br />
<tt>#FOPEN flasher.dat</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<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><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:A file has already been opened</tt><br />
}}<br />
<br />
'''#FREAD <Offset>,<NumBytes>'''<br><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.<br />
<tt><NumBytes></tt> specifies the number of bytes which should be read.<br><br />
<br />
A typical sequence when using the <tt>#FREAD</tt> command does look like as follows:<br><br />
<br />
<tt>#FREAD 0,4</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK:04:466c6173</tt><br><br />
<br />
If the <tt>#FREAD</tt> command succeeds, Flasher will finally respond with a <tt>#OK:<NumBytes>:<nowiki><Data></nowiki></tt> reply message.<br />
For more information about the Flasher reply messages, please refer to [[#Replies from Flasher | Replies from Flasher]].<br><br />
<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><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:No file opened</tt>}}<br />
<br />
'''#FSIZE'''<br><br />
The <tt>#FSIZE</tt> command is used to get the size of the currently opened file on Flasher.<br><br />
<br />
A typical sequence when using the <tt>#FSIZE</tt> command does look like as follows:<br><br />
<br />
<tt>#FSIZE</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK:10 // file on flasher which is currently open, has a size of 16 bytes</tt><br><br />
<br />
If the <tt>#FSIZE</tt> command succeeds, Flasher will respond with a <tt>#OK:<Size></tt> reply message.<br />
For more information about the Flasher reply messages, please refer to [[#Replies from Flasher | Replies from Flasher]].<br><br />
<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><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:No file opened</tt>}}<br />
<br />
'''#FWRITE <Offset>,<NumBytes>:<nowiki><Data></nowiki>'''<br><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.<br />
<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.<br />
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><br />
<br />
<tt><Offset></tt> and <tt><NumBytes></tt> are expected in hexadecimal format.<br><br />
<br />
<tt>#FWRITE 0,200:<nowiki><Data></nowiki></tt><br><br />
<tt>#FWRITE 200,200:<nowiki><Data></nowiki></tt><br><br />
<br />
The data is expected in hexadecimal format (two hexadecimal characters per byte). The following example illustrates the use of <tt>#FWRITE</tt>:<br />
<br />
<tt>Data to be send: Hello !</tt><br><br />
<tt>ASCII values: 0x48, 0x65, 0x6C, 0x6C, 0x6F, 0x20, 0x21</tt><br><br />
<br />
<tt>#FWRITE 0,7:48656C6C6F2021</tt><br><br />
<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><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:No file opened</tt><br>}}<br />
<br />
'''#FLIST'''<br><br />
The <tt>#LIST</tt> command is used to list all files stored on the Flasher.<br><br />
<br />
A typical sequence using the <tt>#FLIST</tt> command does look like as follows:<br><br />
<br />
<tt>#FLIST</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>FLASHER.INI Size: 60</tt><br><br />
<tt>SERIAL.TXT Size: 3</tt><br><br />
<tt>FLASHER.LOG Size: 207</tt><br><br />
<tt>FOLDER (DIR)</tt><br><br />
<tt>FOLDER\\TEST1.CFG Size: 2048</tt><br><br />
<tt>FOLDER\\TEST1.DAT Size: 12288</tt><br><br />
<tt>#OK</tt><br><br />
<br />
'''#MKDIR <Dirname>'''<br><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><br />
<br />
A typical sequence using the <tt>#MKDIR</tt> command does look like as follows:<br><br />
<br />
<tt>#MKDIR folder</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<br />
{{Note|1=If the directory can not be created because of a bad <tt><Dirname></tt> argument, Flasher will respond with:<br><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:Failed to create directory</tt><br>}}<br />
<br />
===== Secure Area Commands =====<br />
<br />
'''#HASSECUREAREA'''<br><br />
The <tt>#HASSECUREAREA</tt> command checks if the Flasher is configured with a secure area.<br />
<br />
<tt>#RESULT:YES</tt> indicates the secure area is present, <tt>#RESULT:NO</tt> indicates no secure area is present.<br />
<br />
'''#SECUREAREA'''<br><br />
The <tt>#SECUREAREA <action></tt> command allows to create or remove the secure area on the Flasher.<br />
<br />
* the action <tt>CREATE</tt> creates the secure area.<br />
* the action <tt>REMOVE</tt> will remove the secure area.<br />
<br />
A typical sequence using the <tt>#SECUREAREA</tt> command does look like as follows:<br><br />
<br />
<tt>#SECUREAREA CREATE</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#DONE</tt><br><br />
<br />
{{Note|1=When creating or removing the <tt>secure area</tt>, all configuration and data files being stored on the Flasher, are lost.<br />
Please make sure that they are not needed anymore, before adding / removing the security area.}}<br />
<br />
<br />
<br />
===== Replies from Flasher =====<br />
<br />
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.<br />
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.<br />
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><br />
<br />
<tt>#OK (Total 13.993s, Erase 0.483s, Prog 9.183s, Verify 2.514s)</tt><br><br />
<br />
The following reply messages from Flasher are defined:<br><br />
<br />
'''#ACK'''<br><br />
Flasher replies with <tt>#ACK</tt> message on reception of any defined command before the command itself is executed.<br />
<br />
'''#NACK'''<br><br />
Flasher replies with <tt>#NACK</tt>, if an undefined command was received.<br />
<br />
'''#OK'''<br><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.<br />
<br />
'''#OK:<NumBytes>:<nowiki><Data></nowiki>'''<br><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.<br />
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).<br />
<br />
'''#OK:<Size>'''<br><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.<br />
<br />
'''#STATUS:'''<br><br />
The Flasher replies with its current state.<br><br />
<br />
The following status messages are currently defined:<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Message !! Description<br />
|-<br />
| <tt>#STATUS:READY</tt> || Flasher is ready to receive a new command.<br />
|-<br />
| <tt>#STATUS:CONNECTING</tt> || Flasher initializes connection to target CPU.<br />
|-<br />
| <tt>#STATUS:INITIALIZING</tt> || Flasher performs self check and internal init.<br />
|-<br />
| <tt>#STATUS:UNLOCKING</tt> || Unlocking flash sectors.<br />
|-<br />
| <tt>#STATUS:ERASING</tt> || Flasher is erasing the flash of the target device.<br />
|-<br />
| <tt>#STATUS:PROGRAMMING</tt> || Flasher is programming the flash of the target device.<br />
|-<br />
| <tt>#STATUS:VERIFYING</tt> || Flasher verifies the programmed flash contents.<br />
|-<br />
|}<br />
<br />
'''#ERRxxx'''<br><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><br />
<br />
Some error codes may be followed by colon and an additional error text.<br><br />
<br />
For example:<br><br />
<br />
<tt>#ERR007:CANCELED.</tt><br><br />
<br />
The error code numbers are described in the following table:<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Message !! Description<br />
|-<br />
| <tt>#ERR007</tt> || Flasher received <tt>#CANCEL</tt> command and has canceled the current operation.<br />
|-<br />
| <tt>#ERR008</tt> || Flasher is already busy with execution of previous command.<br />
|-<br />
| <tt>#ERR009</tt> || Failed to allocate memory.<br />
|-<br />
| <tt>#ERR010</tt> || Failed to open file.<br />
|-<br />
| <tt>#ERR011</tt> || Failed to read file.<br />
|-<br />
| <tt>#ERR012</tt> || Failed to write file.<br />
|-<br />
| <tt>#ERR013</tt> || Failed to delete file.<br />
|-<br />
| <tt>#ERR255</tt> || Undefined error occurred. This reply is followed by an error string.<br />
|-<br />
|}<br />
<br />
== Performance ==<br />
<br />
The following chapter lists programming performance of common flash devices andmicrocontrollers.<br />
<br />
=== Performance of MCUs with internal flash memory ===<br />
<br />
==== Flasher ARM ====<br />
<br />
The following table lists program and erase performance values of Flasher ARM for different controllers.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Microcontroller !! Size [kByte] !! Erase time [sec] !! Program time [sec] !! Verify time [sec] !! Total time [sec]<br />
|-<br />
| Analog Devices || 62 || 2.943 || 2.286 || 0.563 || 5.792<br />
|-<br />
| Atmel AT91SAM7S64 || 64 || --- || 3.488 || 0.438 || 3.926<br />
|-<br />
| Atmel AT91SAM7S256 || 256 || --- || 7.709 || 1.053 || 8.762<br />
|-<br />
| NXP LPC1768 || 512 || 3.740 || 8.559 || 5.092 || 17.391<br />
|-<br />
| NXP LPC2106 || 120 || 0.448 || 1.204 || 0.634 || 2.286<br />
|-<br />
| NXP LPC2129 || 248 || 0.449 || 2.916 || 1.347 || 4.712<br />
|-<br />
| NXP LPC2138 || 500 || 0.448 || 5.488 || 2.649 || 8.585<br />
|-<br />
| NXP LPC2148 || 500 || 0.448 || 5.632 || 2.721 || 8.801<br />
|-<br />
| NXP LPC2294 || 2048 || 0.808 || 15.976 || 9.669 || 26.453<br />
|-<br />
| NXP LPC2478 || 504 || 0.448 || 5.419 || 2.559 || 8.426<br />
|-<br />
| ST STM32F103ZE || 512 || 0.028 || 18.763 || 3.939 || 22.730<br />
|-<br />
| ST STR711 || 272 || 0.429 || 5.476 || 4.742 || 10.647<br />
|-<br />
| ST STR912 || 544 || 1.167 || 12.907 || 5.236 || 19.310<br />
|-<br />
| TI TMS470R1B1M || 1024 || 2.289 || 8.147 || 5.362 || 15.798<br />
|-<br />
|}<br />
<br />
==== Flasher PRO ====<br />
See Flasher ARM.<br />
<br />
==== Flasher Compact ====<br />
See Flasher ARM.<br />
<br />
==== Flasher RX ====<br />
<br />
The following table lists program and erase performance values of Flasher RX.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Microcontroller !! Size [kByte] !! Erase time [sec] !! Program time [sec] !! Verify time [sec] !! Total time [sec]<br />
|-<br />
| R5F56108 || 2.048 || 9.523 || 11.915 || 3.890 || 25.585<br />
|-<br />
|}<br />
<br />
==== Flasher PPC ====<br />
<br />
The following table lists program and erase performance values of Flasher PPC.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Microcontroller !! Size [kByte] !! Erase time [sec] !! Program time [sec] !! Verify time [sec] !! Total time [sec]<br />
|-<br />
| ST SPC560B50 || 576 || 4.747 || 4.159 || 1.929 || 10.917<br />
|-<br />
|}<br />
<br />
== Hardware ==<br />
<br />
This chapter gives an overview about Flasher specific hardware details,<br />
such as the pinouts and available adapters.<br />
<br />
=== Flasher ARM 20-pin JTAG/SWD Connector ===<br />
<br />
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.<br />
<br />
==== Pinout JTAG ====<br />
<br />
[[File:jtag_port_20pin.jpg]] <!-- LG xxxxxx image has been cropped to fit page --><br />
<br />
The following table lists the Flasher JTAG pinout.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! PIN !! SIGNAL !! TYPE !! Description<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 13 || TDO || Input || JTAG data output from target CPU. Typically connected to TDO of target CPU.<br />
|-<br />
| 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".<br />
|-<br />
| 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.<br />
|-<br />
| 19 || 5V-Target supply || Output || This pin is used to supply power to some eval boards. Typically left open on target hardware.<br />
|-<br />
|}<br />
<br />
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.<br />
<br />
==== Pinout SWD ====<br />
<br />
The 20-pin connector of Flasher is also compatible to ARM's Serial Wire Debug (SWD) interface.<br><br />
<br />
[[File:SWD_Port.jpg]] <!-- LG xxxxxx image has been cropped to fit page --><br />
<br />
The following table lists the J-Link / J-Trace SWD pinout.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! PIN !! SIGNAL !! TYPE !! Description<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 7 || SWDIO || I/O || Single bi-directional data pin.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 13 || SWO || Output || Serial Wire Output trace port. (Optional, not required for SWD communication.)<br />
|-<br />
| 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".<br />
|-<br />
| 17 || Not used || NC || This pin is not connected in J-Link.<br />
|-<br />
| 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.<br />
|-<br />
|}<br />
<br />
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.<br />
<br />
==== Target power supply ====<br />
<br />
Pin 19 of the connector can be used to supply power to the target hardware. Supply voltage is 5V, max. current is 400mA.<br />
The output current is monitored and protected against overload and short-circuit.<br><br />
<br />
Power can be controlled via the J-Link commander. The following commands are available to control power:<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Command !! Explanation<br />
|-<br />
| <tt>power on</tt> || Switch target power on<br />
|-<br />
| <tt>power off</tt> || Switch target power off<br />
|-<br />
| <tt>power on perm</tt> || Set target power supply default to "on"<br />
|-<br />
| <tt>power off perm</tt> || Set target power supply default to "off"<br />
|-<br />
|}<br />
<br />
=== Flasher RX 14-pin connector ===<br />
<br />
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.<br />
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.<br />
<br />
[[File:jtag_port_14pin.wmf]]<br />
<br />
The following table lists the Flasher RX 14-pin JTAG pinout.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Pin !! Signal !! Type !! Description<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 5 || TDO || Input || JTAG data output from target CPU. Typically connected to TDO on target CPU.<br />
|-<br />
| 6 || --- || NC || This pin is not connected to Flasher RX.<br />
|-<br />
| 7 || --- || NC || This pin is not connected to Flasher RX.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 10 || --- || NC || This pin is not connected to Flasher RX.<br />
|-<br />
| 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.<br />
|-<br />
| 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".<br />
|-<br />
|}<br />
<br />
* All pins marked NC are not connected to Flasher RX. Any signal can be applied here; Flasher RX will simply ignore such a signal.<br />
* Pins 2, 12, 14 are GND pins connected to GND in Flasher RX. They should also be connected to GND in the target system.<br />
<br />
==== Target power supply ====<br />
<br />
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.<br />
Power can be controlled via the J-Link commander. The following commands are available to control power:<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Command !! Explanation<br />
|-<br />
| <tt>power on</tt> || Switch target power on<br />
|-<br />
| <tt>power off</tt> || Switch target power off<br />
|-<br />
| <tt>power on perm</tt> || Set target power supply default to "on"<br />
|-<br />
| <tt>power off perm</tt> || Set target power supply default to "off"<br />
|-<br />
|}<br />
<br />
=== Flasher PPC 14-pin connector ===<br />
<br />
Flasher PPC itself has a 20-pin JTAG connector mounted but comes with a 14-pin adapter for PowerPC devices.<br><br />
<br />
[[File:JTAG_PPC_14pin_adapter.wmf]]<br />
<br />
The following table lists the Flasher PPC 14-pin JTAG pinout.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Pin !! Signal !! Type !! Description<br />
|-<br />
| 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.<br />
|-<br />
| 3 || TDO || Input || JTAG data output from target CPU. Typically connected to TDO on target CPU.<br />
|-<br />
| 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.<br />
|-<br />
| 7 || --- || NC || This pin is not connected to Flasher PPC.<br />
|-<br />
| 8 || --- || NC || This pin is not connected to Flasher PPC.<br />
|-<br />
| 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".<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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).<br />
|-<br />
|}<br />
<br />
* All pins marked NC are not connected to Flasher PPC. Any signal can be applied here; Flasher PPC will simply ignore such a signal.<br />
* 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.<br />
<br />
=== Target board design ===<br />
<br />
We strongly advise following the recommendations given by the chip manufacturer. These recommendations are normally in line with the recommendations.<br />
Please refer to the the appropriate tables depending on the core:<br><br />
<br />
* [[#Pinout JTAG | Pinout JTAG]]<br />
* [[#Pinout SWD | Pinout SWD]]<br />
* [[#Flasher RX 14-pin connector | Flasher RX 14-pin connector]]<br />
* [[#Flasher PPC 14-pin connector | Flasher PPC 14-pin connector]]<br />
<br />
In case of doubt you should follow the recommendations given by the semiconductor manufacturer.<br />
<br />
==== Pull-up/pull-down resistors ====<br />
<br />
Unless otherwise specified by developer's manual, pull-ups/pull-downs are recommended to be between 2.2 kOhms and 47 kOhms.<br />
<br />
==== RESET, nTRST ====<br />
<br />
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><br />
<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.<br />
(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.<br />
<br />
=== Adapters ===<br />
<br />
==== JTAG Isolator ====<br />
<br />
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.<br />
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><br />
<br />
[[File:JTAG_Isolator_Port.wmf]]<br />
<br />
===== Pinout =====<br />
<br />
The following table shows the target-side pinout of the J-Link JTAG Isolator.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Pin !! Signal !! Type !! Description<br />
|-<br />
| 1 || VCC || Output || The target side of the isolator draws power over this pin.<br />
|-<br />
| 2 || VCC || Output || The target side of the isolator draws power over this pin.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 13 || TDO || Input || JTAG data output from target CPU. Typically connected to TDO of target CPU.<br />
|-<br />
| 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".<br />
|-<br />
| 17 || N/C || N/C || This pin is not connected on the target side of the isolator.<br />
|-<br />
| 19 || N/C || N/C || This pin is not connected on the target side of the isolator.<br />
|-<br />
|}<br />
<br />
Pins 4, 6, 8, 10, 12, 14, 16, 18, 20 are connected to GND.<br />
<br />
===== Safety =====<br />
This isolator provides '''basic isolation''' only. '''Do not use with hazardous voltages without further protection measures to avoid risk of electrical shock and fire.'''<br />
<br />
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.<br />
<br />
==== J-Link Needle Adapter ====<br />
<br />
To connect to the J-Link OB via programming interface the ''J-Link Needle Adapter'' is recommended.<br><br />
<br />
[[File:J-Link_Needle_Adapter_500x.jpg]]<br />
<br />
Why to choose the J-Link Needle Adapter:<br><br />
<ol><br />
<li>No additional connector required on your PCB</li><br />
<li>Very small footprint</li><br />
<li>High reliability spring pins for secure connections</li><br />
<li>Designed with 3 locating pins, so the adapter can not be connected the wrong way</li><br />
<li>No external power supply required! The J-Link Needle Adapter comes with the option to power the target hardware via J-Link.</li><br />
</ol><br />
These features make the J-Link Needle Adapter the perfect solution for production purposes.<br><br />
<br />
The pinout of the J-Link Needle Adapter is based on the pinout of the needle adapter by Tag-Connect.<br />
Please note, that both pinouts are not identical since the J-Link Needle Adapter comes with a 5V-supply pin.<br><br />
<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><br />
<br />
Moreover, the two "legs" on each side of the connector guarantee a stable and secure contact between pins and the PCB.<br><br />
<br />
[[File:J-Link_Needle_Adapter_Connector_pins_360x.jpg]]<br />
[[File:J-Link_Needle_Adapter_Pinout.jpg]]<br />
<br />
The J-Link Needle Adapter can be connected to J-Link via the ''20-pin 0.1'' JTAG to a 10-pin needle connector''.<br />
<br />
=== How to determine the hardware version ===<br />
<br />
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.<br />
Flasher has the hardware version printed on the back label.<br><br />
<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).<br />
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><br />
<br />
[[File:FlasherARM_version.gif]]<br />
== Support and FAQs ==<br />
<br />
This chapter contains troubleshooting tips together with solutions for common problems which might occur when using Flasher.<br />
There are several steps you can take before contacting support.<br />
Performing these steps can solve many problems and often eliminates the need for assistance.<br />
This chapter also contains a collection of frequently asked questions (FAQs) with answers.<br />
<br />
=== Contacting support ===<br />
<br />
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.<br />
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><br />
<br />
If you need to contact support, send the following information to<br><br />
''support@segger.com''<br><br />
<br />
* A detailed description of the problem<br />
* Flasher serial number<br />
* Information about your target hardware (processor, board, etc.).<br />
* <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]].<br />
<br />
Flasher is sold directly by SEGGER.<br />
<br />
=== Frequently Asked Questions ===<br />
<br />
'''Maximum JTAG speed'''<br />
{|<br />
|-<br />
| '''Q:''' || What is the maximum JTAG speed supported by Flasher?<br />
|-<br />
| '''A:''' || Flasher's maximum supported JTAG speed is 12MHz.<br />
|}<br />
<br />
'''Maximum download speed'''<br />
{|<br />
|-<br />
| '''Q:''' || What is the maximum download speed?<br><br />
|-<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.<br />
|}<br />
== Background information ==<br />
<br />
This chapter provides background information about flash programming in general. It<br />
also provides information about how to replace the firmware of Flasher manually.<br />
<br />
=== Flash programming ===<br />
<br />
Flasher comes with a DLL, which allows - amongst other functionalities - reading and writing RAM, CPU registers, starting and stopping the CPU, and setting breakpoints.<br />
<br />
==== How does flash programming via Flasher work? ====<br />
<br />
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.<br />
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.<br />
Different flash chips have different programming algorithms;the programming algorithm also depends on other things,<br />
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).<br />
The RAM code requires data to be programmed into the flash memory. The data is supplied by downloading it to RAM.<br />
<br />
==== Data download to RAM ====<br />
<br />
The data (or part of it) is downloaded to another part of the RAM of the target system.<br />
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.<br />
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.<br />
This process may have to be repeated until the entire data is programmed into the flash.<br />
<br />
==== Available options for flash programming ====<br />
<br />
In general, there are two possibilities in order to use Flasher for flash programming:<br><br />
<br />
* Using Flasher stand-alone to program the target flash memory (stand-alone mode)<br />
* Using Flasher in combination with J-Flash to program the target flash memory (Flasher in "PC-based mode")<br />
<br />
===== Using Flasher in stand-alone mode =====<br />
<br />
In order to use the Flasher in stand-alone mode, it has to be configured first.<br />
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]].<br />
<br />
===== J-Flash - Complete flash programming solution =====<br />
<br />
J-Flash is a stand-alone Windows application, which can read / write data files and program the flash in almost any ARM system.<br />
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''.<br />
<br />
==== How does the universal flash programming work? ====<br />
<br />
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><br />
<br />
Universal flash programming is available only for stand-alone mode.<br />
== Glossary ==<br />
<br />
This chapter describes important terms used throughout this manual.<br />
<br />
'''Big-endian'''<br><br />
Memory organization where the least significant byte of a word is at a higher address than the most significant byte. See Little-endian.<br />
<br />
'''Cache cleaning'''<br><br />
The process of writing dirty data in a cache to main memory.<br />
<br />
'''Coprocessor'''<br><br />
An additional processor that is used for certain operations, for example, for floating-point math calculations, signal processing, or memory management.<br />
<br />
'''Dirty data'''<br><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.<br />
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.<br />
<br />
'''Halfword'''<br><br />
A 16-bit unit of information.<br />
<br />
'''Host'''<br><br />
A computer which provides data and other services to another computer. Especially, a computer providing debugging services to a target being debugged.<br />
<br />
'''ICache'''<br><br />
Instruction cache.<br />
<br />
'''ID'''<br><br />
Identifier.<br />
<br />
'''IEEE 1149.1'''<br><br />
The IEEE Standard which defines TAP. Commonly (but incorrectly) referred to as JTAG.<br />
<br />
'''Image'''<br><br />
An executable file that has been loaded onto a processor for execution.<br />
<br />
'''Instruction Register'''<br><br />
When referring to a TAP controller, a register that controls the operation of the TAP.<br />
<br />
'''IR'''<br><br />
See Instruction Register.<br />
<br />
'''Joint Test Action Group (JTAG)'''<br><br />
The name of the standards group which created the IEEE 1149.1 specification.<br />
<br />
'''Little-endian'''<br><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.<br />
<br />
'''Memory coherency'''<br><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.<br />
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.<br />
<br />
'''Memory management unit (MMU)'''<br><br />
Hardware that controls caches and access permissions to blocks of memory, and translates virtual to physical addresses.<br />
<br />
'''Memory Protection Unit (MPU)'''<br><br />
Hardware that controls access permissions to blocks of memory. Unlike an MMU, a MPU does not translate virtual addresses to physical addresses.<br />
<br />
'''RESET'''<br><br />
Abbreviation of System Reset. The electronic signal which causes the target system other than the TAP controller to be reset.<br />
This signal is also known as "nSRST" "nSYSRST", "nRST", or "nRESET" in some other manuals. See also nTRST.<br />
<br />
'''nTRST'''<br><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.<br />
<br />
'''Open collector'''<br><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.<br />
<br />
'''Processor Core'''<br><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.<br />
It excludes optional coprocessors, caches, and the memory management unit.<br />
<br />
'''Remapping'''<br><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.<br />
<br />
'''RTOS'''<br><br />
Real Time Operating System.<br />
<br />
'''TAP Controller'''<br><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.<br />
<br />
'''Target'''<br><br />
The actual processor (real silicon or simulated) on which the application program is running.<br />
<br />
'''TCK'''<br><br />
The electronic clock signal which times data on the TAP data lines TMS, TDI, and TDO.<br />
<br />
'''TDI'''<br><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.<br />
<br />
'''TDO'''<br><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.<br />
<br />
'''Test Access Port (TAP)'''<br><br />
The port used to access a device's TAP Controller. Comprises TCK, TMS, TDI, TDO, and nTRST (optional).<br />
<br />
'''Transistor-transistor logic (TTL)'''<br><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.<br />
<br />
'''Word'''<br><br />
A 32-bit unit of information. Contents are taken as being an unsigned integer unless otherwise stated.<br />
== Literature and references ==<br />
This chapter lists documents, which we think may be useful to gain a deeper understanding of technical details.</div>JanBhttps://wiki.segger.com/index.php?title=Flasher/Download_project_to_Flasher&diff=16970Flasher/Download project to Flasher2023-11-13T10:02:17Z<p>JanB: </p>
<hr />
<div>Configure the Flasher for [https://wiki.segger.com/UM08022_Flasher#Stand-alone_mode| Stand-Alone Mode]<br />
== U-Flash ==<br />
* "Send to Flasher" Button (equals to "-download" CLI option)<br />
Use the "Configuration Project Name" entry in the Project Settings to set the Name of the files to download.<br><br />
Optionally U-Flash can update the Flasher.INI file to select the latest project downloaded. (equal to Terminal Command [https://wiki.segger.com/UM08022_Flasher#Commands_and_replies| "#Select"])<br />
== J-Flash == <br />
* [https://wiki.segger.com/UM08003_JFlash#File_menu_elements| Download config & data file to Flasher] (equals to "-download" CLI option)<br />
* [https://wiki.segger.com/UM08003_JFlash#File_menu_elements| Save Flasher data file] and [https://wiki.segger.com/UM08003_JFlash#File_menu_elements| Save Flasher config file] to computer hard disk. To download the saved files to the Flasher use:<br />
** [https://wiki.segger.com/UM08022_Flasher#File_system| File Access Mode (MSD)]<br />
** [https://wiki.segger.com/UM08022_Flasher#FTP_Server| FTP Server of Flasher]<br />
** [https://wiki.segger.com/UM08003_JFlash#File_menu_elements| Show Files on Flasher]<br />
To set the name on the Flasher of the project which should be downloaded, you can attach the Flasher in File Access Mode to the computer and use the "Save Flasher data file" and "Save Flasher config file" <br />
to directly store the files on the Flasher, which a name you want. (equals to CLI Option: "-savecfg <name> -savedat <name>") <br><br />
Then use the Terminal Command [https://wiki.segger.com/UM08022_Flasher#Commands_and_replies| "#Select"] make the project active for programming.</div>JanBhttps://wiki.segger.com/index.php?title=Flasher/Download_project_to_Flasher&diff=16969Flasher/Download project to Flasher2023-11-13T09:57:34Z<p>JanB: Created page with "== U-Flash == * "Send to Flasher" Button (equals to "-download" CLI option) Use the "Configuration Project Name" entry in the Project Settings to set the Name of the files to..."</p>
<hr />
<div>== U-Flash ==<br />
* "Send to Flasher" Button (equals to "-download" CLI option)<br />
Use the "Configuration Project Name" entry in the Project Settings to set the Name of the files to download.<br><br />
Optionally U-Flash can update the Flasher.INI file to select the latest project downloaded. (equal to Terminal Command [https://wiki.segger.com/UM08022_Flasher#Commands_and_replies| "#Select"])<br />
== J-Flash == <br />
* [https://wiki.segger.com/UM08003_JFlash#File_menu_elements| Download config & data file to Flasher] (equals to "-download" CLI option)<br />
* [https://wiki.segger.com/UM08003_JFlash#File_menu_elements| Save Flasher data file] and [https://wiki.segger.com/UM08003_JFlash#File_menu_elements| Save Flasher config file] to computer hard disk. To download the saved files to the Flasher use:<br />
** [https://wiki.segger.com/UM08022_Flasher#File_system| File Access Mode (MSD)]<br />
** [https://wiki.segger.com/UM08022_Flasher#FTP_Server| FTP Server of Flasher]<br />
** [https://wiki.segger.com/UM08003_JFlash#File_menu_elements| Show Files on Flasher]<br />
To set the name on the Flasher of the project which should be downloaded, you can attach the Flasher in File Access Mode to the computer and use the "Save Flasher data file" and "Save Flasher config file" <br />
to directly store the files on the Flasher, which a name you want. (equals to CLI Option: "-savecfg <name> -savedat <name>") <br><br />
Then use the Terminal Command [https://wiki.segger.com/UM08022_Flasher#Commands_and_replies| "#Select"] make the project active for programming.</div>JanBhttps://wiki.segger.com/index.php?title=Flasher&diff=16968Flasher2023-11-13T09:06:21Z<p>JanB: /* General information */</p>
<hr />
<div>The SEGGER Flasher family is a high performance production programmer.<br />
== Models of Flasher ==<br />
* [[Flasher PRO|Flasher PRO]]:<br />
** [[Flasher PRO V5|Flasher PRO V5]]<br />
** [[Flasher PRO V4|Flasher PRO V4 (Legacy)]] <br />
<br />
* Flasher ARM:<br />
** [[Flasher ARM V5|Flasher ARM V5]]<br />
** [[Flasher ARM V4|Flasher ARM V4 (Legacy)]] <br />
<br />
* [[Flasher Compact V5|Flasher Compact V5]]<br />
<br />
* Flasher Portable Plus:<br />
** [[Flasher Portable PLUS V5|Flasher Portable PLUS V5]]<br />
** [[Flasher Portable PLUS V1|Flasher Portable PLUS V1 (Legacy)]]<br />
<br />
* Gang Programmer:<br />
** [[Flasher_Hub-12| Flasher Hub-12]]<br />
** [[Flasher Hub|Flasher Hub]]<br />
** [[Flasher ATE|Flasher ATE]]<br />
<br />
<br />
* Flasher 5 PRO (Legacy)<br />
* Flasher 5 (Legacy)<br />
* Flasher STM8 (Legacy)<br />
* Flasher ST7 (Legacy)<br />
* Flasher PPC (Legacy)<br />
<br />
== Frequently asked questions (FAQ) ==<br />
Please follow: [[Flasher/FAQ]]<br />
<br />
== General information ==<br />
* [[SPI support by Flasher models]]<br><br />
* [[General_Options:_Voltage_Settings|General Options: Voltage Settings]]<br><br />
* [[Flasher/How_to_read_data_from_a_device_using_U-Flash|How to read data from a device using U-Flash]]<br />
* [[Flasher/Download_project_to_Flasher|Ways to download a project to Flasher (stand-alone mode)]]<br />
<br />
== Manuals ==<br />
* [[UM08022_Flasher|Flasher User Manual (UM08022)]]<br />
* [https://www.segger.com/downloads/flasher/UM05009 Flasher 5 PRO User Manual (UM05009)]<br />
* [https://www.segger.com/downloads/flasher/AN08007 Flasher ATE Getting Started (AN08007)]<br />
* [https://www.segger.com/downloads/flasher/UM08035 Flasher ATE User Manual (UM08035)]<br />
* [[UM08039_Flasher_Hub|Flasher Hub User Manual (UM08039)]]<br />
* [[UM08043_Flasher_Hub-12|Flasher Hub-12 User Manual (UM08043)]]<br />
* [https://www.segger.com/downloads/flasher/UM08032 Flasher Secure User Guide & Reference Manual (UM08032)]<br />
* [[UM08003_JFlash|J-Flash User Manual (UM08003)]]<br />
* [https://www.segger.com/downloads/flasher/UM08042_SeggerUSBHub.pdf SEGGER USB Hub User Manual (UM08042)]<br />
* [https://www.segger.com/downloads/flasher/UM08037.pdf U-Flash User Manual (UM08037)]<br />
<br />
== Target device specifics ==<br />
* [[Flasher/Performance|Performance data]]<br />
* [[STM8 Programming|STM8]]<br />
<br />
== Flasher software tools ==<br />
=== Flasher Device Support Kit (Flasher DSK) ===<br />
*[[Flasher/Flasher DSK - Getting Started|Flasher DSK - Getting Started]]<br />
*[[Flasher/How to create a Device Definition File for U-Flash|How to create a Device Definition File for U-Flash]]<br />
*[[Flasher/Flasher DSK Tools|Flasher DSK Tools]]<br />
*[[Flasher/PCode API Documentation|PCode API Documentation]]<br />
*[[Flasher/Device Definition File|Device Definition File (XML)]]<br />
*[[PCode Compiler|PCode Compiler (PCCU)]]<br />
<br />
=== Flasher supplementary tools ===<br />
Tools to use in conjunction with Flashers to support some common tasks, not covered by standard tools.<br />
* [[FlasherControl|FlasherControl.exe]]<br />
<br />
== Support ==<br />
{{Special:PrefixIndex/{{FULLPAGENAME}}/ |hideredirects=1 |stripprefix=1}}</div>JanBhttps://wiki.segger.com/index.php?title=UM08022_Flasher&diff=16929UM08022 Flasher2023-11-06T12:37:43Z<p>JanB: /* Remote control */ Added VCOM Interface.</p>
<hr />
<div><!---<br />
General TBD:<br />
- LG: Right now - EVERYTHING<br />
===========================================<br />
--------------------[more specific, but on multiple locations]<br />
- check if all emphasis (bold, tt, blue, etc ) have made it into the new version<br />
- Add Information -> Additional information<br />
- use of the term free-of-charge utility/tool etc<br />
- check compliant to DocStandards_Rules.txt<br />
- Remove everything regarding to Kickstarter versions? eventually create a chapter Legacy -> Kickstarter version were available for hw version 5-x (200x-200x)...[..]<br />
- 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.<br />
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.<br />
- if week keep the IDE specific stuff in the manual, add Ozone, ES and J-Link Commander were no mentioned.<br />
- IDE specifics move into wiki confirmed by Alex<br />
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)<br />
- check all sections regarding licensing<br />
- Check compliance of J-Link emDocs with typographic conventions described in AboutThisDocument.emDoc. What should be altered? e.g. references<br />
- use uref at all (not blue)?<br />
- search and decide where to use \ref (ref with page number)<br />
- why is \ref (no single "option" \uref is more basic as \ref.....)<br />
- in text, use either \ref or \iref instead of \uref<br />
- in old manual, \H3 started on a new page (not per default, but set manually for api tables etc...)<br />
- move used old images and source files (visio etc) via svn (currently copied)<br />
--------------------[grammar / vocabulary discussion]<br />
- Product names<br />
-- Use of SEGGEPROBE in this document?<br />
- use license over licence<br />
- commandline or command-line?<br />
- toolchain or tool chain?<br />
- crossreference/cross-reference/cross reference?<br />
- overcurrent?<br />
- double words?<br />
- frontend?<br />
- Unit: Kbytes, KBytes, V, mV.... 9V or 9 V? Create rule in Vocabulary<br />
- baudrate or baud rate?<br />
- stackpointer or stack pointer<br />
- check where we should replace abbreviations with the long form (e.h. "milliseconds" instead of "ms")<br />
- config or configuration<br />
- filepointer or file pointer?<br />
--------------------[J-Link dep. specific]<br />
- J-Link command strings or J-Link Command strings or J-Link Command Strings<br />
- J-Link settings file or...<br />
- J-Link control panel or ......<br />
- J-Link script files or...<br />
---><br />
Flasher is a programming tool for microcontrollers with on-chip or external flash memory.<br />
Flasher is designed for programming flash targets with the J-Flash software or stand-alone.<br />
In addition to that Flasher can also be used as a regular J-Link. For more information about J-Link in general,<br />
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].<br />
<br />
<div class="toclimit-2"><br />
__TOC__<br />
</div><br />
<br />
== Flasher overview ==<br />
Flasher connects to a PC using the USB/Ethernet/RS232 interface (what host interfaces are available depends on the Flasher model),<br />
running Windows, Linux & MacOS. In stand-alone mode,<br />
Flasher can be driven by the start/stop button, or via the RS232 interface (handshake control or ASCII interface).<br />
Flasher always has a 20-pin connector, which target interfaces are supported depends on the Flasher model:<br />
* Flasher ARM: JTAG and SWD are supported.<br />
* Flasher RX: JTAG is supported. Flasher comes with additional 14-pin RX adapter<br />
* Flasher PPC: JTAG is supported. Flasher comes with additional 14-pin PPC adapter.<br />
* Flasher PRO: JTAG and SWD are supported.<br />
* Flasher Compact: JTAG and SWD are supported.<br />
<br />
=== Features of Flasher ARM/PPC/RX/PRO ===<br />
* Three boot modes: PC-based mode, stand-alone mode, file access mode<br />
* Stand-alone JTAG/SWD programmer (Once set up, Flasher can be controlled without the use of PC program)<br />
* No power supply required, powered through USB<br />
* Supports internal and external flash devices<br />
* 128 MB memory for storage of target program<br />
* Can be used as J-Link (emulator) with a download speed of up to 720 Kbytes/second<br />
* Data files can updated via USB/Ethernet (using the J-Flash software), via FTP, via RS232 or via the file access mode of Flasher<br />
<br />
{| class="seggertable"<br />
|-<br />
! Flasher model !! Supported cores !! Supported target interfaces !! Flash programming speed (depending on target hardware)<br />
|-<br />
| Flasher ARM || ARM7/ARM9/Cortex-M || JTAG, SWD || between 170 and 300 Kbytes/second<br />
|-<br />
| Flasher RX || Renesas RX610, RX621, RX62N, RX62T || JTAG || between 30-300 Kbytes/second<br />
|-<br />
| Flasher PPC || Power PC e200z0 || JTAG || up to 138 Kbytes/second<br />
|-<br />
| Flasher PRO || ARM7/ARM9/Cortex-M Renesas RX610, RX621, RX62N, RX62T Power PC e200z0 || JTAG, SWD || between 30-300 Kbytes/ second<br />
|-<br />
|}<br />
<br />
==== Features of Flasher Compact ====<br />
<br />
* Three boot modes: PC-based mode, stand-alone mode, file access mode<br />
* Stand-alone JTAG/SWD programmer (Once set up, Flasher can be controlled without the use of PC program)<br />
* No power supply required, powered through USB<br />
* Supports internal and external flash devices<br />
* 128 MB memory for storage of target program<br />
* Can be used as J-Link (emulator) with a download speed of up to 720 Kbytes/second<br />
* Data files can updated via USB/Ethernet (using the J-Flash software) or via the file access mode of Flasher<br />
<br />
{| class="seggertable"<br />
|-<br />
! Flasher model !! Supported cores !! Supported target interfaces !! Flash programming speed (depending on target hardware)<br />
|-<br />
| Flasher ARM || ARM7/ARM9/Cortex-M || JTAG, SWD || between 170 and 300 Kbytes/second<br />
|-<br />
| Flasher RX || Renesas RX610, RX621, RX62N, RX62T || JTAG || between 30-300 Kbytes/second<br />
|-<br />
| Flasher PPC || Power PC e200z0 || JTAG || up to 138 Kbytes/second<br />
|-<br />
| Flasher Compact || ARM7/ARM9/Cortex-M Renesas RX610, RX621, RX62N, RX62T Power PC e200z0 || JTAG, SWD || between 30-300 Kbytes/ second<br />
|-<br />
|}<br />
<br />
==== Features of Flasher Portable/Flasher Portable PLUS ====<br />
<br />
* Stand-alone in-circuit-programmer (Once set up, Flasher can be controlled without the use of a PC program)<br />
* Powered by an internal rechargeable battery (standard batteries for Flasher Portable), no Laptop or external power supply required.<br />
* Multiple firmware images can be stored on Flasher<br />
* 128 MB memory for storage of target program<br />
* Easy selection of image to be programmed, via button<br />
* Supported CPUs: ARM Cortex, Legacy ARM7/9, Renesas RX, Freescale PowerPC<br />
* Supports internal and external flash<br />
* Free software updates<ref name="legitimateOwned" />, 1 year of support<br />
* Data files can be updated via the file access mode functionality or via J-Flash<br />
* Programming speed between 30-300 Kbytes/second (actual speed depends on target hardware)<br />
{{Note|1=Ethernet and RS232 as host interface are not available for Flasher Portable}}<br />
<references><br />
<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.<br />
As a legitimate owner of a SEGGER Flasher, you can always download the latest software free of charge.<br />
Though not planned and not likely, we reserve the right to change this policy.<br />
Note that older models may not be supported by newer versions of the software.<br />
Typically, we support older models with new software at least 3 years after end of life.<br />
</ref><br />
</references><br />
<br />
{| class="seggertable"<br />
|-<br />
! Supported cores !! Supported target interfaces !! Flash programming speed (depending on target hardware)<br />
|-<br />
| ARM7/ARM9/Cortex-M || JTAG, SWD || between 30-300 Kbytes/second<br />
|-<br />
| Renesas RX610, RX621, RX62N, RX62T || JTAG || between 170 and 300 Kbytes/second<br />
|-<br />
| Power PC e200z0 || JTAG || up to 138 Kbytes/second<br />
|-<br />
|}<br />
<br />
==== Working environment ====<br />
<br />
'''General'''<br><br />
The Flasher can operate from a PC with an appropriate software like J-Flash or in stand-alone mode.<br />
<br />
'''Host System'''<br><br />
IBM PC/AT or compatible CPU: 486 (or better) with at least 128MB of RAM,<br />
running Windows, Linux & MacOS. It needs to have a USB, Ethernet or RS232 interface available for communication with Flasher.<br />
<br />
'''Power supply'''<br><br />
Flasher Portable: 3x standard AAA batteries or 5V DC, min. 100 mA via USB connector.<br />
<br />
Flasher Portable PLUS: internal rechargeable 680mAh Li-Ion battery, min. 100 mA via USB connector.<br />
<br />
Other Flashers: 5V DC, min. 100 mA via USB connector.<br />
<br />
'''Installing Flasher PC-software'''<br><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><br />
More information about the package you can find in the similar [[J-Link Software and Documentation Pack]].<br><br />
The package includes U-Flash and J-Flash, the main tools for flashing targets:<br />
* J-Flash : J-Flash User Guide ([https://wiki.segger.com/UM08003_JFlash UM08003_JFlash.pdf]).<br />
* U-Flash : U-Flash User Guide ([https://www.segger.com/downloads/flasher/UM08037.pdf UM08037_UniversalFlashLoader.pdf]).<br />
<br />
=== Specifications ===<br />
<br />
<br />
==== Specifications for Flasher ARM ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Windows, Linux & MacOS<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C<br />
|-<br />
| Storage Temperature || -20 °C ... +60 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
!colspan="100%"| Mechanical<br />
|-<br />
| Size (without cables) || 121mm x 66mm x 30mm<br />
|-<br />
| Weight (without cables) || 119g<br />
|-<br />
!colspan="100%"| Available interfaces<br />
|-<br />
| USB Host interface || USB 2.0, full speed<br />
|-<br />
| Ethernet Host interface || 10/100 MBit<br />
|-<br />
| RS232 Host interface || RS232 9-pin<br />
|-<br />
| Target interface || JTAG 20-pin (14-pin adapter available)<br />
|-<br />
!colspan="100%"| JTAG Interface, Electrical<br />
|-<br />
| Power Supply || USB powered, 100mA for Flasher ARM. 500 mA if target is powered by Flasher ARM<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| Target supply voltage || Supply voltage is 5V, max.<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6 <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Max. JTAG speed || up to 12MHz<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
===== Flasher ARM download speed =====<br />
<br />
The following table lists the Flasher ARM performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! ARM7 memory download<br />
|-<br />
| Flasher ARM || 720 Kbytes/s (12MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
<br />
==== Specifications for Flasher RX ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Windows, Linux & MacOS<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C<br />
|-<br />
| Storage Temperature || -20 °C ... +60 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
!colspan="100%"| Mechanical<br />
|-<br />
| Size (without cables) || 121mm x 66mm x 30mm<br />
|-<br />
| Weight (without cables) || 119g<br />
|-<br />
!colspan="100%"| Available interfaces<br />
|-<br />
| USB Host interface || USB 2.0, full speed<br />
|-<br />
| Ethernet Host interface || 10/100 MBit<br />
|-<br />
| RS232 Host interface || RS232 9-pin<br />
|-<br />
| Target interface || JTAG 20-pin (shipped with 14-pin adapter for Renesas RX)<br />
|-<br />
!colspan="100%"| JTAG Interface, Electrical<br />
|-<br />
| Power Supply || USB powered, 100mA for Flasher RX. 500 mA if target is powered by Flasher RX<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| 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)<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6 <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Max. JTAG speed || up to 12MHz<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
===== Flasher RX download speed =====<br />
<br />
The following table lists the Flasher RX performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! Flasher RX600 series memory download<br />
|-<br />
| Flasher RX || 720 Kbytes/s (12MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
<br />
==== Specifications for Flasher PPC ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Windows, Linux & MacOS<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C<br />
|-<br />
| Storage Temperature || -20 °C ... +60 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
!colspan="100%"| Mechanical<br />
|-<br />
| Size (without cables) || 121mm x 66mm x 30mm<br />
|-<br />
| Weight (without cables) || 119g<br />
|-<br />
!colspan="100%"| Available interfaces<br />
|-<br />
| USB Host interface || USB 2.0, full speed<br />
|-<br />
| Ethernet Host interface || 10/100 MBit<br />
|-<br />
| RS232 Host interface || RS232 9-pin<br />
|-<br />
| Target interface || JTAG 20-pin (shipped with 14-pin adapter for Renesas PPC)<br />
|-<br />
!colspan="100%"| JTAG Interface, Electrical<br />
|-<br />
| Power Supply || USB powered, 100mA for Flasher PPC. 500 mA if target is powered by Flasher PPC<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| Target supply voltage || Supply voltage is 5V, max.<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6 <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Max. JTAG speed || up to 12MHz<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
===== Flasher RX download speed =====<br />
<br />
The following table lists the Flasher PPC performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! Memory download<br />
|-<br />
| Flasher PPC || 530 Kbytes/s (8 MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
<br />
==== Specifications for Flasher PRO ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Windows, Linux & MacOS<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C<br />
|-<br />
| Storage Temperature || -20 °C ... +60 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
!colspan="100%"| Mechanical<br />
|-<br />
| Size (without cables) || 121mm x 66mm x 30mm<br />
|-<br />
| Weight (without cables) || 119g<br />
|-<br />
!colspan="100%"| Available interfaces<br />
|-<br />
| USB Host interface || USB 2.0, full speed<br />
|-<br />
| Ethernet Host interface || 10/100 MBit<br />
|-<br />
| RS232 Host interface || RS232 9-pin<br />
|-<br />
| Target interface || JTAG 20-pin (14-pin adapter available)<br />
|-<br />
!colspan="100%"| JTAG Interface, Electrical<br />
|-<br />
| Power Supply || USB powered, 100mA for Flasher PRO. 500 mA if target is powered by Flasher PRO<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| Target supply voltage || Supply voltage is 5V, max.<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6 <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Max. JTAG speed || up to 12MHz<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
<br />
===== Supported CPU cores =====<br />
<br />
The Flasher PRO supports the following CPU cores:<br />
<br />
'''ARM Cortex'''<br><br />
* Cortex-A5<br />
* Cortex-A8<br />
* Cortex-A9<br />
* Cortex-R4<br />
* Cortex-R5<br />
* Cortex-M0<br />
* Cortex-M0+<br />
* Cortex-M1<br />
* Cortex-M3<br />
* Cortex-M4<br />
<br />
'''ARM (legacy cores)'''<br><br />
* ARM720T<br />
* ARM7TDMI<br />
* ARM7TDMI-S<br />
* ARM920T<br />
* ARM922T<br />
* ARM926EJ-S<br />
* ARM946E-S<br />
* ARM966E-S<br />
* ARM1136JF-S<br />
* ARM1136J-S<br />
* ARM1156T2-S<br />
* ARM1156T2F-S<br />
* ARM1176JZ-S<br />
* ARM1176JZF<br />
* ARM1176JZF-S<br />
<br />
'''Renesas RX'''<br><br />
* RX111<br />
* RX210<br />
* RX220<br />
* RX21A<br />
* RX610<br />
* RX621<br />
* RX62G<br />
* RX62N<br />
* RX62T<br />
* RX630<br />
* RX631<br />
* RX63N<br />
* RX63T<br />
<br />
'''Freescale Power PC'''<br><br />
* e200z0<br />
<br />
===== Supported Target interfaces =====<br />
<br />
The Flasher PRO supports the following target interfaces:<br />
<br />
* JTAG<br />
* SWD<br />
* FINE<br />
* SPD<br />
<br />
===== Flasher PRO download speed =====<br />
<br />
The following table lists the Flasher PRO performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! ARM7 memory download<br />
|-<br />
| Flasher PRO || 720 Kbytes/s (12MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
<br />
==== Specifications for Flasher Compact ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Microsoft Windows (x86/x64)<br>Linux (x86/x64/Arm)<br>macOS (x86/Apple M1)<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C<br />
|-<br />
| Storage Temperature || -20 °C ... +65 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
| Size (without cables) || 70mm x 45mm x 18mm<br />
|-<br />
| Weight (without cables) || 40g<br />
|-<br />
| USB Host interface || USB 2.0 (Hi-Speed); Micro USB<br />
|-<br />
| Target interface || JTAG 20-pin (14-pin adapter available)<br />
|-<br />
| Power Supply || USB powered, 130mA (idle)<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| Target supply voltage || Supply voltage is 5V, max.<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
| Supported target interfaces || SPI, QSPI, 8051 C2, cJTAG, FINE, ICSP, IIC, ISP, JTAG, PDI, SPD, SWD, SWIM, UART, UPDI<br />
|-<br />
| Serial transfer rate between Flasher Compact and target || Up to 50 MHz (Depending on target interface)<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6 <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
===== Supported CPU cores =====<br />
<br />
The Flasher Compact supports the following CPU cores:<br />
'''ARM Cortex'''<br><br />
* Cortex-A5<br />
* Cortex-A8<br />
* Cortex-A9<br />
* Cortex-R4<br />
* Cortex-R5<br />
* Cortex-M0<br />
* Cortex-M0+<br />
* Cortex-M1<br />
* Cortex-M3<br />
* Cortex-M4<br />
<br />
'''ARM (legacy cores)'''<br><br />
* ARM720T<br />
* ARM7TDMI<br />
* ARM7TDMI-S<br />
* ARM920T<br />
* ARM922T<br />
* ARM926EJ-S<br />
* ARM946E-S<br />
* ARM966E-S<br />
* ARM1136JF-S<br />
* ARM1136J-S<br />
* ARM1156T2-S<br />
* ARM1156T2F-S<br />
* ARM1176JZ-S<br />
* ARM1176JZF<br />
* ARM1176JZF-S<br />
<br />
'''Renesas RX'''<br><br />
* RX111<br />
* RX210<br />
* RX220<br />
* RX21A<br />
* RX610<br />
* RX621<br />
* RX62G<br />
* RX62N<br />
* RX62T<br />
* RX630<br />
* RX631<br />
* RX63N<br />
* RX63T<br />
<br />
'''Freescale Power PC'''<br><br />
* e200z0<br />
<br />
===== Flasher Compact download speed =====<br />
<br />
The following table lists the Flasher Compact performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! ARM7 memory download<br />
|-<br />
| Flasher Compact || 720 Kbytes/s (12MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
<br />
==== Specifications for Flasher Portable PLUS ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Windows, Linux & MacOS<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C (normal operation)<br>+5 °C ... +45 °C (battery charging)<br />
|-<br />
| Storage Temperature || -20 °C ... +45 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
| 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)<br />
|-<br />
| Charging via USB || 70 minutes (at 1A charging current)<br />
|-<br />
!colspan="100%"| Mechanical<br />
|-<br />
| Size (without cables) || 126mm x 70mm x 28mm<br />
|-<br />
| Weight (without cables) || 140g<br />
|-<br />
!colspan="100%"| Available interfaces<br />
|-<br />
| USB Host interface || USB 2.0<br />
|-<br />
| Target interface || Standard 20-pin 0.1" connector (Adapters available).<br />
|-<br />
!colspan="100%"| Target Interface, Electrical<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| Target supply voltage || Supply voltage is 4.5V, max. (depends on the current battery voltage).<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6 <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Max. JTAG speed || up to 12MHz<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
===== Supported CPU cores =====<br />
<br />
The Flasher Portable PLUS supports the following CPU cores:<br />
<br />
'''ARM Cortex'''<br><br />
* Cortex-A5<br />
* Cortex-A8<br />
* Cortex-A9<br />
* Cortex-R4<br />
* Cortex-R5<br />
* Cortex-M0<br />
* Cortex-M0+<br />
* Cortex-M1<br />
* Cortex-M3<br />
* Cortex-M4<br />
<br />
'''ARM (legacy cores)'''<br><br />
* ARM720T<br />
* ARM7TDMI<br />
* ARM7TDMI-S<br />
* ARM920T<br />
* ARM922T<br />
* ARM926EJ-S<br />
* ARM946E-S<br />
* ARM966E-S<br />
* ARM1136JF-S<br />
* ARM1136J-S<br />
* ARM1156T2-S<br />
* ARM1156T2F-S<br />
* ARM1176JZ-S<br />
* ARM1176JZF<br />
* ARM1176JZF-S<br />
<br />
'''Renesas RX'''<br><br />
* RX111<br />
* RX210<br />
* RX220<br />
* RX21A<br />
* RX610<br />
* RX621<br />
* RX62G<br />
* RX62N<br />
* RX62T<br />
* RX630<br />
* RX631<br />
* RX63N<br />
* RX63T<br />
<br />
'''Freescale Power PC'''<br><br />
* e200z0<br />
<br />
===== Supported Target interfaces =====<br />
<br />
The Flasher Portable PLUS supports the following target interfaces:<br />
* JTAG<br />
* SWD<br />
* FINE<br />
* SPD<br />
<br />
===== Flasher Portable PLUS download speed =====<br />
<br />
The following table lists the Flasher Portable PLUS performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! ARM7 memory download<br />
|-<br />
| Flasher PRO || 720 Kbytes/s (12MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
<br />
==== Specifications for Flasher Portable ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Windows, Linux & MacOS<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C<br />
|-<br />
| Storage Temperature || -20 °C ... +65 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
| Power Supply || a) USB powered, 100mA for Flasher Portable. 500 mA if target is powered by Flasher Portable<br>b) Batteries powered (3xAAA)<br />
|-<br />
!colspan="100%"| Mechanical<br />
|-<br />
| Size (without cables) || 130mm x 65mm x 25mm<br />
|-<br />
| Weight (without cables) || 120g<br />
|-<br />
!colspan="100%"| Available interfaces<br />
|-<br />
| USB Host interface || USB 2.0<br />
|-<br />
| Target interface || Standard 20-pin 0.1" connector (Adapters available).<br />
|-<br />
!colspan="100%"| Target Interface, Electrical<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| Target supply voltage || Supply voltage is 4.5V, max. (depends on the current battery voltage).<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6V <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Max. JTAG speed || up to 12MHz<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
===== Supported CPU cores =====<br />
<br />
The Flasher Portable supports the following CPU cores:<br />
<br />
'''ARM Cortex'''<br><br />
* Cortex-A5<br />
* Cortex-A8<br />
* Cortex-A9<br />
* Cortex-R4<br />
* Cortex-R5<br />
* Cortex-M0<br />
* Cortex-M0+<br />
* Cortex-M1<br />
* Cortex-M3<br />
* Cortex-M4<br />
<br />
'''ARM (legacy cores)'''<br><br />
* ARM720T<br />
* ARM7TDMI<br />
* ARM7TDMI-S<br />
* ARM920T<br />
* ARM922T<br />
* ARM926EJ-S<br />
* ARM946E-S<br />
* ARM966E-S<br />
* ARM1136JF-S<br />
* ARM1136J-S<br />
* ARM1156T2-S<br />
* ARM1156T2F-S<br />
* ARM1176JZ-S<br />
* ARM1176JZF<br />
* ARM1176JZF-S<br />
<br />
'''Renesas RX'''<br><br />
* RX111<br />
* RX210<br />
* RX220<br />
* RX21A<br />
* RX610<br />
* RX621<br />
* RX62G<br />
* RX62N<br />
* RX62T<br />
* RX630<br />
* RX631<br />
* RX63N<br />
* RX63T<br />
<br />
'''Freescale Power PC'''<br><br />
* e200z0<br />
<br />
===== Supported Target interfaces =====<br />
<br />
The Flasher Portable supports the following target interfaces:<br />
<br />
* JTAG<br />
* SWD<br />
* FINE<br />
* SPD<br />
<br />
===== Flasher Portable download speed =====<br />
<br />
The following table lists the Flasher Portable performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! ARM7 memory download<br />
|-<br />
| Flasher PRO || 720 Kbytes/s (12MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
== Working with Flasher ==<br />
<br />
This chapter describes functionality and how to use Flasher.<br />
<br />
=== Flasher Portable PLUS ===<br />
<br />
The Flasher Portable PLUS is a portable version of SEGGERs Flasher family,<br />
which has been designed to fill the need of an extremely portable, production grade,<br />
Flash programmer used for in-field firmware updates. No need to be tethered to an outlet,<br />
it is powered by an integrated Li-Ion cell (680mAh).<br />
The Flasher Portable PLUS programs flash targets in stand-alone mode or via J-Flash PC software.<br><br />
<br />
Furthermore the Flasher Portable PLUS allows the user to select between eight data images to be programmed.<br />
The images can be easily selected by using the SEL button on the front of the housing.<br />
For more information about support for multiple images, please refer to [[#Multiple File Support | Multiple File Support]].<br><br />
For setup and configuration purposes, the Flasher Portable PLUS connects to a PC via USB interface,<br />
running Windows, Linux & MacOS and has a built-in standard 20-pin J-Link target connector.<br><br />
<br />
{{Note|1=Ethernet and RS232 as host interface are not available for the Flasher Portable PLUS.}}<br />
<br />
==== Housing & Buttons ====<br />
<br />
The Flasher Portable PLUS comes with a display, which is for example used to represent the status of an ongoing flash progress.<br />
Furthermore, there are three buttons which allow the user to control Flasher Portable PLUS.<br />
For a detailed description of the functions, take a look at the table below:<br />
<br />
<!-- LG xxxxxx edit image with labels for buttons? (Is this actually necessary? Buttons are basically self-explanatory...) --><br />
[[File:Flasher_Portable_PLUS.png | 500px]]<br />
<br />
{| class="seggertable"<br />
|-<br />
! Button !! Description<br />
|-<br />
| Program || Start programming process with the currently selected image.<br />
|-<br />
| Select image || Select the image to be programmed next time the Program button is pressed.<br />
|-<br />
| 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.<br />
|-<br />
|}<br />
<br />
==== Configuration ====<br />
<br />
The Flasher Portable PLUS has some configuration options the other Flashers do not have.<br />
{| class="seggertable"<br />
|-<br />
! Option !! Description !! Value range !! Default value<br />
|-<br />
| AutoPowerOffOnIdle || Specifies the time interval after which the Flasher Portable will turn off without any user action || 1 to 3600 || 60<br />
|-<br />
| ShowDatCRCAfterProgramming || Activates displaying the data file CRC after the programming in the pop up message || 0 = inactive, 1 = active || 0<br />
|-<br />
|}<br />
<br />
If the <tt>Flasher.ini</tt> does not contain a <tt>[Config]</tt> section with the configuration option, the default value is used.<br />
<br />
'''Example:'''<br><br />
This sample will show the data file CRC after the programming and the auto power of is set to five minutes (=300 seconds).<br />
<br />
<source lang="c"><br />
[CONFIG]<br />
AutoPowerOffOnIdle = "300"<br />
ShowDatCRCAfterProgramming = "1"<br />
</source><br />
<br />
=== Flasher Portable ===<br />
<br />
The Flasher Portable is a portable version of SEGGERs Flasher family, which has been designed to fill the need of an extremely portable,<br />
production grade, Flash programmer used for in-field firmware updates. No need to be tethered to an outlet,<br />
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><br />
<br />
Furthermore the Flasher Portable allows the user to select between four data images to be programmed.<br />
The images can be easily selected by using the arrow buttons on the front of the housing.<br />
For more information about support for multiple images, please refer to [[#Multiple File Support | Multiple File Support]].<br><br />
For setup and configuration purposes, the Flasher Portable connects to a PC via USB interface,<br />
running Windows, Linux & MacOS and has a built-in standard 20-pin J-Link target connector.<br><br />
<br />
{{Note|1=Ethernet and RS232 as host interface are not available for the Flasher Portable.}}<br />
<br />
==== Housing & Buttons ====<br />
<br />
The Flasher Portable comes with several leds which are for example used to represent the status of an ongoing flash progress.<br />
Furthermore, there are three buttons which allow the user to control Flasher Portable.<br />
For a detailed description of the functions, take a look at the two tables below:<br />
<br />
<!-- LG xxxxxx edit image with labels for buttons?--><br />
[[File:Flasher_Portable_Top_2.png | 500px]]<br />
<br />
{| class="seggertable"<br />
|-<br />
! LED !! Description<br />
|-<br />
| ACTIVE || GREEN. Blinks while the Flasher Portable is busy / performs operations on the target.<br />
|-<br />
| PASS/FAIL || GREEN/RED. Indicates, if the last flashing cycle was successful.<br />
<ul><br />
<li> GREEN: Flashing cycle completed successfully.</li><br />
<li> RED: Flashing cycle completed with error.</li><br />
</ul><br />
|-<br />
| 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]].<br />
|-<br />
| POWER || GREEN: Indicates if Flasher is currently powered. Blinks while Flasher Portable tries to enumerate via USB.<br />
|-<br />
| 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.<br />
|-<br />
|}<br />
<br />
{| class="seggertable"<br />
|-<br />
! Button !! Description<br />
|-<br />
| Program || Start programming process with the currently selected image.<br />
|-<br />
| Select image || Select the image to be programmed next time the <tt>Program</tt> button is pressed.<br />
|-<br />
| 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<br />
|-<br />
|}<br />
<br />
=== File system ===<br />
<br />
The Flasher supports 8.3 filenames only (8 characters filename, 3 characters file extension).<br />
Using longer filenames may result in incorrect operation. Integrated functions,<br />
like the FTP server or the terminal server, will refuse writing files with long filenames.<br />
<br />
=== Setting up the IP interface ===<br />
<br />
Setting up the IP interface<br />
Some of the Flasher models come with an additional Ethernet interface to communicate with the host system.<br />
These Flashers also come with a built-in webserver which allows some basic setup of the emulator,<br />
e.g. configuring a default gateway which allows using it even in large intranets. For more information,<br />
please refer to [[#TCP Services | TCP Services]].<br />
<br />
==== Connecting the first time ====<br />
<br />
When connecting Flasher the first time, it attempts to acquire an IP address via DHCP.<br />
The recommended way for finding out which IP address has been assigned to Flasher is, to use the J-Link Configurator.<br />
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.<br />
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''.<br />
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,<br />
please refer to ''UM08001, J-Link / J-Trace User Guide'', chapter ''Setup'', section ''Setting up the IP interface''.<br />
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]].<br />
<br />
=== Operating modes ===<br />
<br />
All Flashers except the Flasher ATE are able to boot in 3 different modes:<br />
<br />
* PC-based mode<br />
* Stand-alone mode<br />
* File access mode<br />
<br />
{{Note|1=The Flasher ATE only supports the stand-alone mode.}}<br />
<br />
'''Definition PC-based mode'''<br><br />
Flasher is connected to a PC via USB/Ethernet and controlled by a PC application (J-Flash).<br />
If there is an RS232 connection to a PC, does not have any influence on if PC-based mode is entered or not.<br />
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, ...)<br />
<br />
'''Definition Stand-alone mode'''<br><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.<br />
<br />
'''Definition file access mode'''<br><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.<br />
In this mode, Flasher enumerates as a mass storage device (like an USB Stick) at the host PC.<br />
In this mode, configuration + data files can be manually placed on the Flasher and the Flasher logfile can be read out.<br />
If you are using a self-powered Flasher such as the Flasher Portable Plus, the Flasher must be turned off before connecting it.<br />
<br />
==== PC-based mode ====<br />
If you want to use Flasher for the first time you need to install the J-Link software and documentation package.<br />
After installation, connect Flasher to the host PC via USB or Ethernet.<br />
For more information about how to install the J-Link software and documentation package please refer to [[J-Link Software and Documentation Pack]].<br />
<br />
===== Connecting the target system =====<br />
<br />
'''Power-on sequence'''<br><br />
In general, Flasher should be powered on before connecting it with the target device.<br />
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.<br />
Power-on the device after you connected Flasher to it. Flasher will boot in "PC-based mode".<br />
<br />
'''Verifying target device connection with J-Link.exe'''<br><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.<br />
Then start the J-Link command line tool <tt>JLink.exe</tt>,<br />
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.<br />
The screenshot below shows the output of <tt>JLink.exe</tt>.<br />
<br />
[[File:flasher_jlinkmode.gif]]<br />
<br />
===== LED status indicators =====<br />
<br />
In PC-based mode, there are also certain LED status codes defined:<br />
<br />
{| class="seggertable"<br />
|-<br />
! # !! Status of LED !! Meaning<br />
|-<br />
| 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.<br />
|-<br />
| 0 || GREEN<br>constant || Flasher enumeration process is complete and it is ready to be controlled by a PC application.<br />
|-<br />
|}<br />
<br />
==== Stand-alone mode ====<br />
<br />
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]].<br />
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).<br />
In the "stand-alone mode" Flasher can be used as a stand-alone flash programmer.<br><br />
<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]].}}<br />
<br />
===== LED status indicators =====<br />
Progress and result of an operation is indicated by Flasher's LEDs. The behavior is different for J-Link and stand-alone mode.<br />
For a definition of the different modes, please refer to [[#Operating modes | Operating modes]].<br />
The following table describes the behavior of the LEDs in stand-alone mode.<br />
<br />
{| class="seggertable"<br />
|-<br />
! # !! Status of LED !! Meaning<br />
|-<br />
| 0 || GREEN<br>constant || Flasher waits for a start trigger to perform an operation in stand-alone mode.<br />
|-<br />
| 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><br />
|-<br />
| 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.<br />
|-<br />
|}<br />
Older Flasher models have a different behavior.<br />
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:<br />
<br />
* 1621xxxxx (Flasher ARM V2)<br />
* 1630xxxxx (Flasher ARM V3)<br />
* 4210xxxxx (Flasher PPC V1)<br />
* 4110xxxxx (Flasher RX V1)<br />
<br />
{| class="seggertable"<br />
|-<br />
! # !! Status of LED !! Meaning<br />
|-<br />
| 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.<br />
|-<br />
| 1 || GREEN<br>constant || Connect to target and perform init sequence.<br />
|-<br />
| 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><br />
|-<br />
| 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.<br />
|-<br />
|}<br />
<br />
==== File access mode ====<br />
<br />
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".<br />
If you are using a self-powered Flasher such as the Flasher Portable Plus, the Flasher must be turned off before connecting it.<br />
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.<br />
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>.<br />
<br />
[[File:flasher_mode_msd.gif]]<br />
<br />
<tt>FLASHER.CFG</tt> contains the configuration settings for programming the target device and <tt>FLASHER.DAT</tt> contains the data to be programmed.<br />
<tt>FLASHER.LOG</tt> contains all logging information about the commands, performed in stand-alone mode.<br />
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><br />
<br />
Currently, J-Flash does not support to configure Flasher for automated serial number programming.<br><br />
<br />
If you want to configure multiple Flasher for the same target you do not have to use J-Flash all the time.<br />
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".<br />
<br />
=== Setting up Flasher for stand-alone mode ===<br />
<br />
In order to set up Flasher for the stand-alone mode it needs to be configured once using the J-Flash software.<br />
For more information about J-Flash, please refer to the ''J-Flash User Guide''.<br><br />
<br />
After starting J-Flash, open the appropriate J-Flash project for the target Flasher shall be configured for, by selecting '''File''' -> '''Open Project'''.<br />
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><br />
<br />
After the appropriate project has been opened / created, the data file which shall be programmed needs to be loaded, by selecting '''File''' -> '''Open'''.<br />
After this J-Flash should look like in the screenshot below.<br />
<br />
[[File:jflash_projectfile_datafile.gif]]<br />
<br />
Before downloading the configuration (project) and program data (data file) to Flasher, the connection type (USB/IP) needs to be selected in the project.<br />
These settings are also saved on a per-project basis, so this also only needs to be setup once per J-Flash project.<br />
The connection dialog is opened by clicking '''Options''' -> '''Project settings''' -> '''General'''.<br />
<br />
[[File:jflash_connection_dialog.gif]]<br />
<br />
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.<br />
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.<br />
The user then can simply select the Flash he wants to download the configuration to.<br />
<br />
[[File:EmuSelectionDialog.gif]]<br />
<br />
In order to download the configuration and program data to the Flasher, simply select '''File''' -> '''Download config & data file to Flasher'''.<br />
<br />
[[File:jflash_download_to_emul.gif]]<br />
<br />
The J-Flash log window indicates that the download to the emulator was successful.<br />
<br />
[[File:jflash_download_to_emu_succ.gif]]<br />
<br />
From now on, Flasher can be used in stand-alone mode (without host PC interaction) for stand-alone programming.<br />
<br />
==== Preparing for stand-alone operation manually ====<br />
<br />
As an alternative, J-Flash can also be used to save config and data file to a hard drive.<br><br />
<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,<br />
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.<br />
<br />
'''Creating config and data files'''<br><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><br />
<br />
For some devices, additional files (*.PEX) are needed.<br />
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.<br />
<br />
'''About *.PEX files'''<br><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,<br />
the following needs to be taken care of:<br><br />
<br />
For some devices, special connect, reset etc. sequences are necessary which are stored in so-called *.PEX files on the Flasher.<br><br />
<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><br />
<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><br />
The *.PEX files need to be placed in a subdirectory with the same name as the corresponding *.cfg file.<br />
J-Flash creates a directory with the correct name automatically when a config file is created.<br><br />
<br />
Example:<br><br />
<br />
MyConf0 is a project for a device that requires a *.PEX file for connect.<br><br />
MyConf1 is a project for a device that requires no *.PEX file at all.<br />
<br />
[[File:PEX_File_Flasher.png]]<br />
<br />
=== Universal Flash Loader mode ===<br />
<br />
As an alternative to the stand-alone mode, configured via J-Flash, there is the Universal Flash Loader mode.<br />
While the normal stand-alone mode relies on using the debug interface of the device, the Universal Flash Loader<br />
mode uses device or vendor specific programming interfaces and protocols and therefore it is independent of the<br />
CPU core.<br><br />
<br />
The Universal Flash Loader is available for the following Flasher models:<br />
* Flasher PRO<br />
* Flasher Compact<br />
* Flasher Portable PLUS<br />
<br />
For some of the supported devices, SEGGER offers specific adapters.<br />
<br />
==== Preparing manually ====<br />
<br />
The Universal Flash Loader uses an configuration file (*.UNI), a device specific flash programming algorithm (*.PEX) and a data file (*.DAT).<br />
<br />
===== Configuration =====<br />
<br />
The configuration file basically is split into three parts.<br />
The first part, the section [DEVICE], controls the generic behavior of the Universal Flash Loader.<br />
It specifies which protocol driver and data file to use. It allows enabling and configuring target power<br />
and it defines which actions to perform.<br />
The second part consists of one or more [BANKx] sections, which contain information about the memories.<br />
The third part, the section [CONFIG], includes configuration settings for the protocol driver.<br><br />
<br />
An .UNI file might look as follows:<br><br />
<br />
<source lang="c"><br />
[OPTIONS]<br />
TargetPower = "0"<br />
ChipErase = "0"<br />
<br />
[TASKS]<br />
CheckBlank = "1"<br />
Erase = "1"<br />
Program = "1"<br />
Verify = "1"<br />
Secure = "1"<br />
<br />
[DEVICE]<br />
Algo = "RL78.PEX"<br />
Data = "ALL_6k.dat"<br />
<br />
[BANK0]<br />
; Code Flash<br />
Base = "0x00000000"<br />
Size = "0x00004000"<br />
Sect = "0x00000400"<br />
<br />
[BANK1]<br />
; Data Flash<br />
Base = "0x000F1000"<br />
Size = "0x00000800"<br />
Sect = "0x00000400"<br />
<br />
[CONFIG]<br />
BaudRate = "1000000"<br />
ClearConfigOnConnect = "0x00"<br />
Security = "0xFF"<br />
ShieldStart = "0x0000"<br />
ShieldEnd = "0x000F"<br />
</source><br />
<br />
'''[OPTIONS]'''<br><br />
'''TargetPower'''<br><br />
If set to a value >0, power is applied to the target.<br />
The value defines the delay (in ms) after enabling the target power supply and before starting to communicate with the target.<br />
<br />
'''ChipErase'''<br><br />
If set to 1, the chip erase function is called for erasing the chip.<br><br />
{{Note|1=Do not enable this setting if the flash programming algorithm does not support chip erase.}}<br />
<br />
'''[TASKS]'''<br><br />
'''CheckBlank'''<br><br />
Defines if a blank check should be performed before erasing a sector.<br />
<br />
'''Erase'''<br><br />
Defines if the sector should be erased before programming.<br />
<br />
'''Program'''<br><br />
Defines if the sector should be programmed.<br />
<br />
'''Verify'''<br><br />
Defines if the sector should be verified after programming.<br />
<br />
'''Secure'''<br><br />
Defines if the device should be secured or protected against read-out after verifying.<br />
<br />
'''[DEVICE]'''<br><br />
'''Algo'''<br><br />
File name of the flash programming algorithm. This file is provided by SEGGER and will typically support a series of devices.<br />
<br />
'''Data'''<br><br />
File name of the data file to program. The Flasher only supports the Flasher .dat file format.<br />
Flasher .dat files can be generated by J-Flash or Universal Flash Loader and offer high performance together with high flexibility.<br />
<br />
'''[BANKx]'''<br><br />
x blocks with configuration data for the flash banks. All three parameters (Base, Size and Sect) are mandatory.<br />
<br />
'''Base'''<br><br />
Base address of the flash bank.<br />
<br />
'''Size'''<br><br />
Total size of the flash bank.<br />
<br />
'''Sect'''<br><br />
Sector size of the flash bank.<br />
<br />
'''[CONFIG]'''<br><br />
This section includes specific configuration data for the flash programming algorithm.<br><br />
There are no general parameters.<br />
<br />
{{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. }}<br />
<br />
==== Preparing using the PC utility ====<br />
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.<br />
<br />
[[File:Universal Flash Loader.png]]<br />
<br />
The Universal Flash Loader Configurator comes with a large list of devices and flash programming algorithms. If you are going to<br />
use a device from one of the supported families which currently is not available in the utility, feel free to contact the support.<br />
<br />
=== Multiple File Support ===<br />
<br />
It is also possible to have multiple data files and config files on Flasher, to make Flasher more easy to use in production environment.<br />
To choose the correct configuration file and data file pair, a <tt>FLASHER.INI</tt> file is used.<br />
This init file contains a <tt>[FILES]</tt> section which describes which configuration file and which data file should be used for programming.<br />
A sample content of a FLASHER.INI file is shown below:<br><br />
<br />
<source><br />
[FILES]<br />
DataFile = "Flasher1.dat"<br />
ConfigFile = "Flasher1.cfg"<br />
</source><br />
<br />
Using this method all configuration files and data files which are used in the production only have to be downloaded once.<br />
From there on a configuration file / data file pair can be switched by simply replacing the <tt>FLASHER.INI</tt> by a new one,<br />
which contains the new descriptions for the configuration file and data file. The <tt>FLASHER.INI</tt> can be replaced in two ways:<br />
<ol><br />
<li>Boot Flasher in file access mode in order to replace the <tt>FLASHER.INI</tt></li><br />
<li><br />
If Flasher is already integrated into the production line, runs in stand-alone mode and can not be booted in other mode:<br />
Use the file I/O commands provided by the ASCII interface of Flasher, to replace the <tt>FLASHER.INI</tt>.<br />
For more information about the file I/O commands, please refer to [[#File I/O commands | File I/O commands]].<br />
</li><br />
</ol><br />
{{Note|1=Flasher supports 8.3 filenames only (8 characters filename, 3 characters file extension). Using longer filenames may result in incorrect operation.}}<br />
<br />
==== Flasher Portable specifics ====<br />
<br />
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><br />
<br />
Which config / data file pair is used for which image selection position is determined by the contents of the FLASHER.INI.<br />
For this, the FLASHER.INI contents in the <tt>[FILES]</tt> section have been extended.<br />
The sample below shows how to enable the user to select between four different images on the Flasher portable via the select / arrow button:<br />
<br />
<source><br />
[FILES]<br />
DataFile = "First.dat"<br />
ConfigFile = "First.cfg"<br />
DataFile1 = "Second.dat"<br />
ConfigFile1 = "Second.cfg"<br />
DataFile2 = "Third.dat"<br />
ConfigFile2 = "Third.cfg"<br />
DataFile3 = "Fourth.dat"<br />
ConfigFile3 = "Fourth.cfg"<br />
</source><br />
<br />
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.<br />
From there on, switching between the files can be done by simply using the selection button of Flasher Portable.<br />
<br />
===== Example =====<br />
<br />
1 Target, 2 Datafiles (e.g. boot loader und application) --> same configuration file (*.CFG) but different data files (*.DAT) should be used.<br><br />
<br />
* Open pre-configured J-Flash project<br />
* File -> Save Flasher config file ... (DEFAULT.CFG)<br />
* Open data file 1 (boot loader)<br />
* File -> Save Flasher data file ... (BOOT.DAT)<br />
* Open data file 2 (application)<br />
* File -> Save Flasher data file ... (APP.DAT)<br />
* Create the a FLASHER.INI file (content see below)<br />
* Connect the Flasher in file access mode to the PC<br />
* Copy DEFAULT.CFG, BOOT.DAT, APP.DAT and FLASHER.INI on the Flasher<br />
<br />
FLASHER.INI content:<br><br />
<br />
<source><br />
[FILES]<br />
DataFile = "BOOT.DAT"<br />
ConfigFile = "DEFAULT.CFG"<br />
DataFile1 = "APP.DAT"<br />
ConfigFile1 = "DEFAULT.CFG"<br />
</source><br />
<br />
==== Flasher Portable PLUS specifics ====<br />
<br />
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><br />
<br />
Which config / data file pair is used for which image selection position is determined by the contents of the FLASHER.INI.<br />
For this, the FLASHER.INI may contain several <tt>[BATCH]</tt> sections.<br />
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:<br />
<br />
<source><br />
[BATCH]<br />
DataFile = "First.dat"<br />
ConfigFile = "First.cfg"<br />
[BATCH1]<br />
DataFile = "Second.dat"<br />
ConfigFile = "Second.cfg"<br />
[BATCH2]<br />
DataFile = "Third.dat"<br />
ConfigFile = "Third.cfg"<br />
[BATCH7]<br />
DataFile = "Proj_8.dat"<br />
ConfigFile = "Proj_8.cfg"<br />
[BATCH15]<br />
DataFile = "Proj_16.dat"<br />
ConfigFile = "Proj_16.cfg"<br />
</source><br />
<br />
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.<br />
From there on, switching between the files can be done by simply using the selection button of Flasher Portable PLUS.<br />
<br />
Please also consider the chapter [[#Batch Programming in stand-alone mode | Batch Programming in stand-alone mode]].<br />
<br />
{{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.}}<br />
{{Note|1=You may have gaps in the list. The missing entries will be skipped when selecting the next configuration.}}<br />
{{Note|1=The <tt>[Files]</tt> section is supported by the Flasher Portable PLUS, too. But the number of configuration is limited to four.}}<br />
<br />
===== Example =====<br />
<br />
1 Target, 2 Datafiles (e.g. boot loader und application) --> same configuration file (*.CFG) but different data files (*.DAT) should be used.<br><br />
<br />
* Open pre-configured J-Flash project<br />
* File -> Save Flasher config file ... (DEFAULT.CFG)<br />
* Open data file 1 (boot loader)<br />
* File -> Save Flasher data file ... (BOOT.DAT)<br />
* Open data file 2 (application)<br />
* File -> Save Flasher data file ... (APP.DAT)<br />
* Create the a FLASHER.INI file (content see below)<br />
* Connect the Flasher in file access mode to the PC<br />
* Copy DEFAULT.CFG, BOOT.DAT, APP.DAT and FLASHER.INI on the Flasher<br />
<br />
FLASHER.INI content:<br><br />
<br />
<source><br />
[BATCH]<br />
DataFile = "BOOT.DAT"<br />
ConfigFile = "DEFAULT.CFG"<br />
DisplayName = "Bootloader"<br />
[BATCH1]<br />
DataFile = "APP.DAT"<br />
ConfigFile = "DEFAULT.CFG"<br />
DisplayName = "Application"<br />
[BATCH2]<br />
DataFile = "BOOT.DAT"<br />
ConfigFile = "DEFAULT.CFG"<br />
DataFile1 = "APP.DAT"<br />
ConfigFile1 = "DEFAULT.CFG"<br />
DisplayName = "BL and App"<br />
</source><br />
<br />
=== Custom labels ===<br />
<br />
Flasher supports to assign custom labels to configurations. This allows to specify easy to remember names for configurations that are stored on the Flasher.<br />
<br />
==== Hardware and software requirements ====<br />
This feature is supported by the following models:<br />
* Flasher Portable PLUS<br />
<br />
This feature is supported since V6.30e of the software package and firmware<br />
<br />
==== Assigning labels ====<br />
The configuration and data file pairs are specified in the <tt>FLASHER.INI</tt> file:<br />
<source><br />
[FILES]<br />
DataFile = "IMAGE0.dat"<br />
ConfigFile = "IMAGE0.cfg"<br />
DataFile1 = "IMAGE1.dat"<br />
ConfigFile1 = "IMAGE1.cfg"<br />
</source><br />
<br />
By default, Flasher will show the names of the configuration and data file:<br />
[[File:FW1_smartwatch_nolabel.png]]<br />
[[File:FW2_smart_meter_nolabel.png]]<br />
<br />
By adding <tt>DisplayName</tt>, <tt>DisplayName1</tt>, ... keys to the <tt>FLASHER.INI</tt>, a custom label can be shown instead:<br />
<source><br />
[FILES]<br />
DisplayName = "FW smartwatch"<br />
DataFile = "IMAGE0.dat"<br />
ConfigFile = "IMAGE0.cfg"<br />
DisplayName1 = "FW smart meter"<br />
DataFile1 = "IMAGE1.dat"<br />
ConfigFile1 = "IMAGE1.cfg"<br />
</source><br />
<br />
The images will now be shown as follows:<br />
[[File:FW1_smartwatch_label.png]]<br />
[[File:FW2_smart_meter_label.png]]<br />
<br />
==== Considerations ====<br />
* 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.<br />
<br />
=== Programming multiple targets ===<br />
<br />
It is possible to program multiple targets which are located in a JTAG chain.<br />
The targets will be programmed each with a configuration and a data file.<br />
The configuration for the desired target must be selected before it can be programmed,<br />
this can be done with the <tt>#SELECT</tt> command.<br />
For more information how to use the <tt>#SELECT</tt> command please refer to Chapter "3.3.5 ''Commands to Flasher''".<br />
<br />
'''Example'''<br><br />
Three devices should be programmed.<br><br />
<br />
JTAG Chain: ''TDI'' --> ''Device2'' --> ''Device1'' --> ''Device0'' --> ''TDO''<br><br />
<br />
Three configurations would be stored on the flasher:<br><br />
<br />
Config 0: Configured to program Device0 (DEVICE0.CFG, DEVICE0.DAT)<br><br />
Config 1: Configured to program Device1 (DEVICE1.CFG, DEVICE1.DAT)<br><br />
Config 2: Configured to program Device2 (DEVICE2.CFG, DEVICE2.DAT)<br><br />
<br />
Selection and programming of the target will be done via the ASCII interface:<br><br />
<br />
<source><br />
#SELECT DEVICE0<br />
#AUTO<br />
#SELECT DEVICE1<br />
#AUTO<br />
#SELECT DEVICE2<br />
#AUTO<br />
</source><br />
<br />
==== Programming multiple targets with J-Flash ====<br />
<br />
Programming multiple targets can also be done via J-Flash using the command line interface.<br />
For this each target must be handled with its own project file.<br />
<br />
'''Example'''<br><br />
<br />
<source><br />
JFlash.exe -openproj"Device0.jflash" -open"Device0.hex" -auto -exit<br />
JFlash.exe -openproj"Device1.jflash" -open"Device1.hex" -auto -exit<br />
JFlash.exe -openproj"Device2.jflash" -open"Device2.hex" -auto -exit<br />
</source><br />
<br />
=== Batch Programming in stand-alone mode ===<br />
<br />
Batch programming allows to execute different stand-alone mode jobs in batch to be executed in immediate succession, without any user interaction in between.<br />
This can be used for example to program multiple targets in a JTAG-Chain or multiple data files to a target.<br><br />
A batch may contains an unlimited number of configurations which consist of a data file (*.DAT) and config file (*.CFG).<br />
For further information regarding config and data files, please refer to [[#Preparing for stand-alone operation manually | Preparing for stand-alone operation manually]].<br><br />
In order to specify the batch jobs, a FLASHER.INI file is used.<br />
This init file contains a [BATCH] section which describes which configuration pairs (*.DAT and *.CFG file) should be used for each batch job.<br />
A sample content of a FLASHER.INI file is shown below:<br><br />
<br />
<source><br />
[BATCH]<br />
DataFile = "Flasher0.dat"<br />
ConfigFile = "Flasher0.cfg"<br />
DataFile1 = "Flasher1.dat"<br />
ConfigFile1 = "Flasher1.cfg"<br />
</source><br />
<br />
[[File:Batch_Jobs.bmp]]<br />
<br />
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.<br />
<br />
<br />
[[File:Batch_Programming.bmp]]<br />
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<br />
currently executed action.<br />
<br />
<br />
[[File:Batch_Result.bmp]]<br />
The result of the programming will be shown on the screen after finishing all jobs.<br />
<br />
<br />
Creating / Replacing of the FLASHER.INI file can done in two ways:<br><br />
<ol><br />
<li>Boot Flasher in file access mode in order to replace the FLASHER.INI</li><br />
<li><br />
If Flasher is already integrated into the production line, runs in stand-alone mode and can not be booted in other mode:<br />
Use the file I/O commands provided by the ASCII interface of Flasher, to replace the FLASHER.INI .<br />
For more information about the file I/O commands, please refer to [[#File I/O commands | File I/O commands]].<br />
In case of an error occurred during execution, the Flasher terminates the entire batch processing.<br />
</li><br />
</ol><br />
{{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.}}<br />
{{Note|1=Flasher supports 8.3 filenames only (8 characters filename, 3 characters file extension). Using longer filenames may result in incorrect operation.}}<br />
<br />
==== Flasher Portable specifics ====<br />
<br />
Flasher Portable allows to choose between four different batches during runtime by using the select/arrow button on the front of Flasher Portable.<br />
Which batch configuration is used for which image selection position is specified in the FLASHER.INI.<br />
For this, the FLASHER.INI contents in the [BATCH] section have been extended.<br />
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><br />
<br />
<source><br />
[BATCH]<br />
DataFile = "Flasher0.dat"<br />
ConfigFile = "Flasher0.cfg"<br />
DataFile1 = "Flasher1.dat"<br />
ConfigFile1 = "Flasher1.cfg"<br />
DataFile2 = "Flasher2.dat"<br />
ConfigFile2 = "Flasher2.cfg"<br />
[BATCH1]<br />
DataFile = "TEST.dat"<br />
ConfigFile = "Test.cfg"<br />
[BATCH2]<br />
DataFile = "VALIDATE.dat"<br />
ConfigFile = "Flasher0.cfg"<br />
</source><br />
<br />
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.<br />
From there on, switching between the batches can be done by simply using the selection button of Flasher Portable.<br />
<br />
<br />
<br />
==== Examples ====<br />
<br />
'''Example 1:''' Programming two Data files to the same target<br><br />
<br />
* Open your J-Flash project.<br />
* Use File -> Save Flasher config file... to save the .CFG file (in this example: STM32F4.CFG).<br />
* Select the first binary and use File -> Save Flasher Data file... to save the first .DAT file (in this example: DATA0.DAT).<br />
* Select the second binary and use File -> Save Flasher Data file... to save the second data file .DAT file (in this example: DATA1.DAT).<br />
* Copy the Files to the Flasher e.g. by using file access mode.<br />
* Create a FLASHER.INI file in the root directory of the Flasher.<br />
* Exemplary content of FLASHER.INI:<br><br />
<source><br />
[BATCH]<br />
DataFile = "DATA0.dat"<br />
ConfigFile = "emPower.cfg"<br />
DataFile1 = "DATA1.dat"<br />
ConfigFile1 = "emPower.cfg"<br />
</source><br />
<br />
<br />
'''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><br />
Example scenario: 2 Devices in a JTAG chain, a STM32F1 and a STM32F4. <br><br />
<br />
* Follow the same as described before and additionally:<br />
* Create one project file per target (and create a .CFG file of each one).<br />
* Make sure each project file is configured correctly, especially the JTAG-Chain position (See UM8003 "J-Flash" for more detailed info).<br />
* Exemplary content of FLASHER.INI:<br><br />
<source><br />
[BATCH]<br />
DataFile = "F1DATA.dat"<br />
ConfigFile = "STM32F1.cfg"<br />
DataFile1 = "F4DATA0.dat"<br />
ConfigFile1 = "STM32F4.cfg"<br />
DataFile2 = "F4DATA1.dat"<br />
ConfigFile2 = "STM32F4.cfg"<br />
</source><br />
<br />
'''Example 3:''' Using multiple Batch sections with Flasher Portable.<br><br />
Example scenario: 2 Devices in a JTAG chain, a STM32F1 and a STM32F4.<br><br />
Selection 1 will program the STM32F1 target.<br><br />
Selection 2 will program the STM32F4 target using "F4DATA0.dat".<br><br />
Selection 3 will program the STM32F4 target using "F4DATA1.dat".<br><br />
Selection 4 will execute 1, 2 and 3 in sequence.<br><br />
* Exemplary content of FLASHER.INI:<br><br />
<source><br />
[BATCH]<br />
DataFile = "F1DATA.dat"<br />
ConfigFile = "STM32F1.cfg"<br />
[BATCH1]<br />
DataFile = "F4DATA0.dat"<br />
ConfigFile = "STM32F4.cfg"<br />
[BATCH2]<br />
DataFile = "F4DATA1.dat"<br />
ConfigFile = "STM32F4.cfg"<br />
[BATCH3]<br />
DataFile = "F1DATA.dat"<br />
ConfigFile = "STM32F1.cfg"<br />
DataFile1 = "F4DATA0.dat"<br />
ConfigFile1 = "STM32F4.cfg"<br />
DataFile2 = "F4DATA1.dat"<br />
ConfigFile2 = "STM32F4.cfg"<br />
</source><br />
<br />
=== Serial number programming ===<br />
<br />
Flasher supports programming of serial numbers. In order to use the serial number programming feature,<br />
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><br />
<br />
In general, Flasher supports two ways of programming a serial number into the target:<br />
<br />
#<br />
#* Programming continuous serial numbers.<br />
#* The serial number is 1-4 bytes in size.<br />
#* The start serial number, increment, serial number size, and address are configured in the J-Flash project.<br />
#<br />
#* Programming custom serial numbers from a serial number list file.<br />
#* The start line within the serial number list file to get the next serial number bytes, line increment, serial number size, and address is configured in the J-Flash project.<br />
#* The serial number list file needs to be specified and created by the user.<br />
<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.}}<br />
<br />
==== Serial number settings ====<br />
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.<br />
This is done by enabling the '''Program serial number''' option as shown in the screenshot and table below:<br />
<br />
[[File:UM08039_SN_Sample_JFlashSettings.png]]<br />
<br />
{| class="seggertable"<br />
|-<br />
!| Setting || Meaning<br />
|-<br />
| <tt>Address</tt> || The address the serial number should be programmed at.<br />
|-<br />
| <tt>Length</tt> ||<br />
The length of the serial number (in bytes) that 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 8 is selected as length, the serial number and its complement are programmed at the given address.<br />
* In case a serial number list file is given, the 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 '''Length''', the remaining bytes are filled with 0s. No complements etc. are added to the serial number.<br />
|-<br />
| <tt>Next SN</tt> ||<br />
* In case no serial number list file is given, '''Next SN''' is the next serial number which should be programmed. The serial number is always stored in flash memory in little-endian format.<br />
* In case a serial number list file is given, '''Next SN''' describes the line of the serial number list file where to read the next serial number bytes from. The Flasher starts counting at line 0, so in order to start serial number programming with the first line of the <tt>SNList.txt</tt>, '''Next SN''' needs to be set to 0.<br />
|-<br />
| <tt>Increment</tt> || Specifies by how much '''Next SN''' is incremented.<br />
|}<br />
<br />
=== Serial number file ===<br />
When selecting '''File -> Download serial number file to Flasher''', J-Flash will create a serial number file named as <tt><JFlashProjectName>_Serial.txt</tt>.<br />
This file is downloaded as <tt>Serial.txt</tt> on the Flasher.<br />
The file is generated based on the serial number settings in the J-Flash project and will contain the value defined by the '''Next SN''' option.<br />
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.<br />
<br />
==== Serial number list file ====<br />
<br />
In order to program custom serial numbers which can not be covered by the standard serial number scheme provided by J-Flash<br />
(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.<br />
<br />
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.<br />
This file is downloaded as <tt>SNList.txt</tt> on the 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<br />
* Each byte of the serial number is described by two hexadecimal digits.<br />
<br />
'''Example'''<br><br />
A 8-byte serial number should be programmed at address 0x08000000.<br><br />
<br />
It should be programmed as follows in the memory:<br><br />
<br />
<tt>0x08000000: 0x01 0x02 0x03 0x04 0x55 0x66 0x77 0x88</tt><br><br />
<br />
The serial number list file should look as follows:<br><br />
<br />
<tt>0102030455667788</tt><br />
<br />
[[File:SN_SNList.gif]]<br />
<br />
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><br />
<br />
Which line Flasher will read at the next programming cycle, is configured via the <tt>Next SN</tt> option in J-Flash.<br />
For more information, please refer to [[#Serial number settings | Serial number settings]].<br />
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><br />
<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.}}<br />
{{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.}}<br />
<br />
==== Programming process ====<br />
<br />
Flasher will increment the serial number in SERIAL.TXT by the value defined in <tt>Increment</tt>, after each successful programming cycle.<br><br />
<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><br />
<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.<br />
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.}}<br />
<br />
==== Downloading serial number files to Flasher ====<br />
<br />
Downloading the serial number files needs to be done explicitly by selecting '''File-> Download serial number file to Flasher'''.<br />
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.<br />
<br />
==== Sample setup ====<br />
<br />
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.<br />
<br />
'''Defining serial number address, length and start value'''<br><br />
In the J-Flash project the following needs to be defined:<br><br />
* <tt>Address</tt> is 0x08001000<br />
* <tt>Next SN</tt> is 1234567<br />
* <tt>Increment</tt> is 1<br />
* <tt>Len</tt> is 4 (bytes)<br />
<br />
[[File:SN_Sample_JFlashSettings.gif]]<br />
<br />
'''Downloading configuration, data and serial number to Flasher.'''<br><br />
After setting up the rest of the configuration (Target interface etc.) and selecting an appropriate data file, the configuration,<br />
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><br />
<br />
[[File:SN_Sample_DownloadToFlasher.gif]]<br />
<br />
After downloading the serial number to Flasher, J-Flash also created the <tt><JFlashProjectName>_Serial.txt</tt>.<br />
<br />
[[File:SN_Sample_SerialFileCreated.gif]]<br />
<br />
Now Flasher is prepared to program the 8-byte serial number.<br />
<br />
=== Patch file support ===<br />
<br />
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.<br />
Before starting programming process in stand-alone mode, Flasher will look for a file named <tt>Patches.txt</tt> being present on the Flasher.<br />
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><br />
<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.<br />
<br />
'''Syntax'''<br><br />
<!-- LG xxxxxxxxx '==' is shown as '=', so instead use '= ='--><br />
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><br />
<br />
<tt><NumPatches>,<Addr>,<NumBytes>:<nowiki><Data></nowiki>,<Addr>,<NumBytes>:<nowiki><Data></nowiki>,<Addr>,</tt><br><br />
<tt><NumBytes>:<nowiki><Data></nowiki>,<Addr>,<NumBytes>:<nowiki><Data></nowiki>\r\n</tt><br><br />
<br />
Find below a table which describes each parameter.<br><br />
{| class="seggertable"<br />
|-<br />
! Parameter !! Description<br />
|-<br />
| <tt><NumPatches></tt> || Describes the number of patches in this patch line. Max. value is 4.<br />
|-<br />
| <tt><Addr></tt> || Describes the address to be patched. Value is expected in hex.<br />
|-<br />
| <tt><NumBytes></tt> || Number of bytes for the current patch. Max. value is 20h (32 in decimal). Value is expected in hex.<br />
|-<br />
| <tt><nowiki><Data></nowiki></tt> || Describes the data to be patched. <nowiki><Data></nowiki> is always expected as 2 hexadecimal characters per byte.<br />
|-<br />
|}<br />
<br />
{{Note|1=All values are expected in hexadecimal format (hex).<br><br />
<nowiki><Data></nowiki> section is always preceded by ":", not ",".}}<br />
<br />
'''Example'''<br><br />
Below is an example patch.<br><br />
<br />
<source><br />
1,18,4:01020304\r\n<br />
</source><br />
<br />
Patching the following data:<br />
<br />
[[File:data_before.png]]<br />
<br />
with the example patch will result in the following data:<br />
<br />
[[File:data_afterwards.png]]<br />
<br />
Please note that as mentioned earlier patching undefined memory locations will be ignored.<br><br />
Applying the example patch to the following data:<br />
<br />
[[File:undefined_mem_before.png]]<br />
<br />
Causes no data to be patched, as can be seen in the following image:<br />
<br />
[[File:undefined_mem_no_token.png]]<br />
<br />
Therefore it is necessary to first write placeholder data to the memory locations which are supposed to be patched.<br><br />
An example for such a placeholder can be seen here:<br />
<br />
[[File:undefined_mem_token.png]]<br />
<br />
Please note that the actual data inside the placeholder does not matter to the Flasher,<br />
because it is overwritten during patching.<br><br />
Applying the example patch will now work as expected:<br />
<br />
[[File:undefined_mem_after.png]]<br />
<br />
'''Single patch via RS232'''<br><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><br />
<br />
Send the <tt>#AUTO PATCH <NumPatches>,<Addr>,<NumBytes>:<nowiki><Data></nowiki></tt><br><br />
<br />
command via Flasher ASCII interface. The parameters have the same function as described in the table above.<br />
<br />
==== Newline encoding ====<br />
<br />
In general, for all patch files, init files etc. Flasher supports both newline encodings:<br><br />
<br />
* Windows: \r\n<br />
* Unix/Mac: \n<br />
<br />
All parser functionality etc. are written to be independent from the host operating system.<br />
<br />
=== Limiting the number of programming cycles ===<br />
<br />
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.<br />
To make use of this feature, a file called <tt>Cntdown.txt</tt> needs to be placed on the Flasher.<br />
This file simply contains a decimal number (32-bit unsigned integer) that describes how many programming cycles can be performed with the current setup.<br />
<br />
[[File:CntdownTxtContent.jpg]]<br />
<br />
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><br />
<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>.}}<br />
<br />
==== Changed fail/error LED indicator behavior ====<br />
<br />
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><br />
<br />
* The red error/fail LED will lit for 1 second<br />
* After this, it will blink/toggle x times @ 5 Hz, indicating the number of programming cycles left. (blinking 5 times for 5 cycles left, ...)<br />
<br />
==== Required Flasher hardware version for Cntdown.txt support ====<br />
<br />
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><br />
<br />
* 1621xxxxx (Flasher ARM V2)<br />
* 1630xxxxx (Flasher ARM V3)<br />
* 4210xxxxx (Flasher PPC V1)<br />
* 4110xxxxx (Flasher RX V1)<br />
<br />
All other models / hardware versions support limiting of programming cycles.<br />
<br />
=== Authorized flashing ===<br />
<br />
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.<br />
without the possibility to read out the Flasher contents via file access mode, FILE I/O functionality (J-Link Commander) or RS232 commands.<br />
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.<br />
<br />
==== Creating / Adding the secure area ====<br />
<br />
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.<br />
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.<br />
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><br />
<br />
[[File:CreateSecArea.jpg]]<br />
<br />
The following secure area related commands are available in J-Link Commander:<br><br />
<br />
* securearea create<br />
* securearea remove<br />
<br />
{{Note|1=When creating or removing the <tt>secure area</tt>, all configuration and data files being stored on the Flasher, are lost.<br />
Please make sure that they are not needed anymore, before adding / removing the security area.}}<br />
<br />
==== Moving files to the secure area ====<br />
<br />
Before moving configuration + data to the <tt>secure area</tt>, proper functionality of the setup should be tested in stand-alone mode.<br />
Once the setup is working as expected, do the following, to move the configuration + data into the <tt>secure area</tt>:<br><br />
<br />
* Start Flasher in file access mode (For more info, please refer to: [[#file access mode | file access mode]])<br />
<br />
[[File:FilesBeforeSecure.png]]<br />
<br />
* Create a folder "<tt>_SECURE</tt>"<br />
* Move all files that shall be moved to the <tt>secure area</tt>, into this folder<br />
<br />
[[File:FilesAfterSecure.png]]<br />
<br />
* 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.<br />
* Now Flasher can be used in stand-alone mode, as normal, but the files cannot be read back by the user / operator.<br />
<br />
==== Considerations to be taken when using the secure area ====<br />
<br />
When using the <tt>secure area</tt>, some things need to be considered:<br><br />
<br />
* All features like multiple file support, patch file support etc. can also be used when operating from the <tt>secure area</tt>.<br />
* 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>.<br />
* 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>.<br />
* 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.<br />
<br />
==== Required Flasher hardware version ====<br />
<br />
Older Flasher models do not support authorized flashing. The Flashers with the following serial number ranges do not support authorized flashing:<br><br />
<br />
* 1621xxxxx (Flasher ARM V2)<br />
* 1630xxxxx (Flasher ARM V3)<br />
* 4210xxxxx (Flasher PPC V1)<br />
* 4110xxxxx (Flasher RX V1)<br />
<br />
All other models / hardware versions support authorized flashing.<br />
<br />
=== Target interfaces ===<br />
<br />
The table below shows the supported target interfaces of the different Flasher models.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! Supported interfaces<br />
|-<br />
| Flasher PRO || JTAG, SWD<br />
|-<br />
| Flasher Compact || JTAG, SWD<br />
|-<br />
| Flasher ARM || JTAG, SWD<br />
|-<br />
| Flasher RX || JTAG<br />
|-<br />
| Flasher PPC || JTAG<br />
|-<br />
|}<br />
<br />
For more information about the target interfaces itself, please refer to:<br><br />
<br />
* ''UM08001, chapter "Working with J-Link and J-Trace", section "JTAG interface"''<br />
* ''UM08001, chapter "Working with J-Link and J-Trace", section "SWD interface"''<br />
<br />
=== Supported architectures ===<br />
<br />
Flasher supports programming of the internal flash of a large number of different microcontrollers.<br />
The number of supported devices is steadily growing. You can always find the latest list of supported devices on our website:<br><br />
<br />
''http://www.segger.com/supported-devices.html''<br />
<br />
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.<br />
Also the existence of the device may have confidential status, so it might not be mentioned as being supported in public releases yet.<br />
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.<br />
<br />
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).<br />
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.<br />
<br />
If a device is not supported, you can always contact us. We will be happy to provide you with an offer.<br />
<br />
==== External flashes ====<br />
<br />
In general our Flashers support programming of external flashes listed below:<br>(Can differ between Flasher models and hardware versions)<br />
<br />
* parallel NOR flash<br />
* SPI / QSPI flash<br>(see: ''[[SPI_support_by_Flasher_models]]'')<br />
* NAND flash<br />
* I<sup>2</sup>C EEPROM/Flash<br />
* FRAM<br />
<br />
If the parallel NOR flash device which is used is not CFI-compliant you have to select the flash device in J-Flash explicitly,<br />
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''.<br />
<br />
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.<br />
The J-Flash software comes with sample projects for ''Open Flashloader''.<br />
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''<br />
{{Note|1=Complete Information about ''Open Flashloaders'' can be found in our Wiki:<br>''[[Open_Flashloader]]''}}<br />
<br />
==== Cores ====<br />
<br />
===== Flasher ARM =====<br />
<br />
Flasher ARM supports and has been tested with the following cores, but should work with any ARM7/9, Cortex-M0/M1/M3/M4 core.<br />
If you experience problems with a particular core, do not hesitate to contact Segger.<br><br />
<br />
* ARM7TDMI (Rev 1)<br />
* ARM7TDMI (Rev 3)<br />
* ARM7TDMI-S (Rev 4)<br />
* ARM920T<br />
* ARM922T<br />
* ARM926EJ-S<br />
* ARM946E-S<br />
* ARM966E-S<br />
* Cortex-M0<br />
* Cortex-M1<br />
* Cortex-M3<br />
* Cortex-M4<br />
<br />
===== Flasher RX =====<br />
<br />
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><br />
<br />
* RX610<br />
* RX621<br />
* RX62N<br />
* RX62T<br />
<br />
===== Flasher PPC =====<br />
<br />
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.<br />
<br />
* e200z0<br />
<br />
===== Flasher PRO/Compact/Portable PLUS =====<br />
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/''.<br />
<br />
=== Programming multiple targets in parallel ===<br />
<br />
To program multiple targets in parallel there are the following possibilities:<br />
* Using a Flasher gang, or<br />
* Using multiple Flashers, each connecting to one CPU.<br />
<br />
Devices for gang programming are:<br />
* 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)].<br />
* 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)].<br />
When using multiple flashers, this can be done with the J-Flash production programming software.<br />
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''<br />
<br />
=== Logfiles and Quality Management ===<br />
<br />
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:<br />
<source lang="c"><br />
SN: 1 - Failed<br />
SN: 1 - Failed<br />
SN: 2 - O.K. (931 ms)<br />
SN: 3 - O.K. (931 ms)<br />
SN: 4 - O.K. (933 ms)<br />
SN: 5 - O.K. (932 ms)<br />
</source><br />
If applicable, the logfile contains more detailed error messages. For example:<br />
<source lang="c"><br />
ERROR: Programming failed @ address 0x00000000 (1)<br />
ERROR: Cannot connect to CPU. Target interface speed too high?<br />
</source><br />
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:<br />
<source lang="c"><br />
Verify error config word area @<br />
config word<br />
config word read back<br />
Verify error flash area @<br />
data from file<br />
data read back<br />
</source><br />
{{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.}}<br />
<br />
== TCP Services ==<br />
This chapter describes the integrated TCP services.<br />
<br />
=== FTP Server ===<br />
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><br />
[[File:FTPServer.png]]<br />
<br />
==== Access data ====<br />
Anonymous access to the FTP server is limited to read-only access to the file system.<br><br />
For write access, special login credentials have to be used:<br><br />
<tt>Login: admin</tt><br><br />
<tt>Password: 1234</tt><br><br />
<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.<br />
It is not meant as a security feature.}}<br />
<br />
=== Web server ===<br />
<br />
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.<br />
For the network, the IP address settings can be changed and a nick name can be assigned to the device.<br><br />
<br />
Additionally, the web interface provides information about the status of the integrated operating system, the IP stack and the target hardware.<br />
<br />
== Remote control ==<br />
This chapter describes how to control the Flasher in standalone mode.<br />
<br />
=== Overview ===<br />
There are 3 ways to control Flasher operation:<br><br />
{| class="seggertable"<br />
! Type of control !! Description<br />
|-<br />
| Button || Programming operation starts when pressing the PROG-button. The LEDs serve as visible indicators.<br />
|-<br />
| Handshake || 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.<br />
|-<br />
| Terminal || Terminal communication via TELNET, RS232 or VCOM with the [[#ASCII command interface]]<br />
|}<br />
<br />
<br />
{{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.}}<br />
<br />
=== Handshake control ===<br />
<br />
Some Flasher models are equipped with additional hardware control functions that are connected to the SUBD9 male connector, normally used as an RS232 interface to the PC.<br />
These Flasher models can therefore be controlled remotely by automated testers without the need for a connection to a PC.<br />
<br />
The handshake control is available for the following Flashers:<br />
* Flasher ARM<br />
* Flasher PRO<br />
* Flasher Compact (via Flasher Hub and Flasher Hub-12 only)<br />
<br />
The following diagrams show the internal remote control circuitry of Flasher:<br><br />
<br />
[[File:FlasherRemotecontrol.png]]<br />
{| class="seggertable"<br />
|-<br />
! Pin No. !! Function !! Description<br />
|-<br />
| 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.<br />
|-<br />
| 4 || BUSY || As soon as the "Auto" function is started, BUSY becomes active, which means that transistor is switched OFF.<br />
|-<br />
| 5 || GND || Common Signal ground.<br />
|-<br />
| 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.<br />
|-<br />
|}<br />
[[File:FlasherRemoteSignal.png]]<br />
<br />
=== ASCII command interface ===<br />
<br />
==== Introduction ====<br />
<br />
Once set up using J-Flash, the Flasher can be driven by any application or just a simple terminal using ASCII commands.<br><br />
<br />
Every known command is acknowledged by the Flasher and then executed. After command execution, Flasher sends an ASCII reply message.<br><br />
<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}}<br />
<br />
==== General command and reply message format ====<br />
<br />
* Any ASCII command has to start with the start delimiter ''#''.<br />
* Any ASCII command has to end with simple carriage return ('\r', ASCII code 13).<br />
* Commands can be sent upper or lower case<br />
<br />
==== General usage ====<br />
<br />
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.<br />
<br />
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).<br />
<br />
==== Settings for ASCII interface via RS232 ====<br />
<br />
Flasher is driven via a RS232 serial port with the following interface settings:<br><br />
<br />
* 9600 baud<br />
* 8 data bits<br />
* no parity<br />
* 1 stop bit<br />
<br />
The baud rate can be changed by using the <tt>#BAUDRATE</tt> command.<br />
<br />
==== Settings for ASCII interface via Telnet ====<br />
<br />
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><br />
<br />
[[File:telnet_connection.gif]]<br />
<br />
==== Settings for ASCII interface via VCOM ====<br />
<br />
The same settings can be used for VCOM as for [[#Settings for ASCII interface via RS232|RS232]].<br />
<br />
{{Note|The performance also depends on the terminal application used on the PC.}}<br />
<br />
==== Commands and replies ====<br />
<br />
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><br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| Commands to the Flasher<br />
|-<br />
| <tt>#BAUDRATE <Baudrate></tt><br />
|-<br />
| <tt>#AUTO</tt><br />
|-<br />
| <tt>#AUTO PATCH</tt><br />
|-<br />
| <tt>#AUTO NOINFO</tt><br />
|-<br />
| <tt>#CANCEL</tt><br />
|-<br />
| <tt>#ERASE</tt><br />
|-<br />
| <tt>#PROGRAM</tt><br />
|-<br />
| <tt>#RESULT</tt><br />
|-<br />
| <tt>#SELECT <Filename></tt><br />
|-<br />
| <tt>#START</tt><br />
|-<br />
| <tt>#STATUS</tt><br />
|-<br />
| <tt>#VERIFY</tt><br />
|-<br />
| <tt>#QUIT</tt><br />
|-<br />
| <tt>#VERBOSE <Level></tt><br />
|-<br />
!colspan="100%"| File I/O commands<br />
|-<br />
| <tt>#FCLOSE</tt><br />
|-<br />
| <tt>#FCRC</tt><br />
|-<br />
| <tt>#FDELETE <Filename></tt><br />
|-<br />
| <tt>#FOPEN <Filename></tt><br />
|-<br />
| <tt>#FREAD <Offset>,<NumBytes></tt><br />
|-<br />
| <tt>#FSIZE</tt><br />
|-<br />
| <tt>#FWRITE <Offset>,<NumBytes>:<nowiki><Data></nowiki></tt><br />
|-<br />
| <tt>#FLIST</tt><br />
|-<br />
| <tt>#MKDIR <Dirname></tt><br />
|-<br />
!colspan="100%"| SecureArea commands<br />
|-<br />
| <tt>#HASSECUREAREA</tt><br />
|-<br />
| <tt>#SECUREAREA <action></tt><br />
|-<br />
!colspan="100%"| Replies from the Flasher<br />
|-<br />
| <tt>#ACK</tt><br />
|-<br />
| <tt>#NACK</tt><br />
|-<br />
| <tt>#OK</tt><br />
|-<br />
| <tt>#OK:<NumBytes>:<nowiki><Data></nowiki></tt><br />
|-<br />
| <tt>#OK:<Size></tt><br />
|-<br />
| <tt>#STATUS:</tt><br />
|-<br />
| <tt>#DONE</tt><br />
|-<br />
| <tt>#ERRxxx</tt><br />
|-<br />
|}<br />
<br />
===== Commands to the Flasher =====<br />
<br />
'''#AUTO'''<br><br />
The <tt>#AUTO</tt> command behaves exactly as the start button or external remote control input.<br><br />
<br />
Usually, the following command sequence will be performed when receiving the <tt>#AUTO</tt> command:<br><br />
<br />
* The Flasher erases the target CPU (if not blank)<br />
* The Flasher programs the target CPU<br />
* The Flasher verifies the target CPU<br />
<br />
Depending on the settings chosen in the '''Production''' tab in J-Flash, this sequence can differ from the one shown above.<br><br />
<br />
Finally, Flasher responds with<br><br />
<br />
* <tt>#OK</tt> if no error occurred<br />
* <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.<br />
<br />
During execution of the <tt>#AUTO</tt> command, Flasher automatically sends "status" messages via RS232 to reflect the state of execution.<br />
Typically during execution of <tt>#AUTO</tt> command, Flasher will reply the following sequence of messages:<br><br />
<br />
<tt>#ACK</tt><br><br />
<tt>#STATUS:INITIALIZING</tt><br><br />
<tt>#STATUS:CONNECTING</tt><br><br />
<tt>#STATUS:UNLOCKING</tt><br><br />
<tt>#STATUS:ERASING</tt><br><br />
<tt>#STATUS:PROGRAMMING</tt><br><br />
<tt>#STATUS:VERIFYING</tt><br><br />
<tt>#OK (Total 13.993s, Erase 0.483s, Prog 9.183s, Verify 2.514s)</tt><br><br />
<br />
'''#AUTO PATCH'''<br><br />
The <tt>#AUTO</tt> PATCH command allows patching of the content of the data to be programmed.<br><br />
<br />
Flasher responds with<br><br />
<br />
* <tt>#OK</tt> if no error occurred<br />
* <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.<br />
<br />
For further information about the usage of the <tt>#AUTO PATCH</tt> command please refer to [[#Patch file support | Patch file support]].<br />
<br />
'''#AUTO NOINFO'''<br><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><br />
<br />
The command ends with <tt>#OK</tt> or <tt>#ERRxxx</tt><br />
<br />
'''#BAUDRATE <Baudrate>'''<br><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><br />
<br />
If this command succeeds, Flasher responds with:<br><br />
<br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<br />
Otherwise it will respond with one of the following error messages:<br><br />
<br />
<tt>#ERR255: Invalid parameters</tt><br><br />
<tt>or</tt><br><br />
<tt>#ERR255: Baudrate is not supported</tt><br><br />
<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.<br />
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.}}<br />
<br />
'''#CANCEL'''<br><br />
This command can be sent to abort a running program. It may take a while until the current program is actually canceled.<br><br />
<br />
Flasher will respond with:<br><br />
<br />
<tt>#ERR007:CANCELED.</tt><br><br />
<br />
'''#ERASE'''<br><br />
This command can be sent to erase all selected target flash sectors.<br><br />
<br />
Flasher will reply the following sequence of messages:<br><br />
<br />
<tt>#ACK</tt><br><br />
<tt>#STATUS:INITIALIZING</tt><br><br />
<tt>#STATUS:CONNECTING</tt><br><br />
<tt>#STATUS:UNLOCKING</tt><br><br />
<tt>#STATUS:ERASING</tt><br><br />
<tt>#OK (Total 0.893s, Erase 0.483s)</tt><br><br />
<br />
'''#PROGRAM'''<br><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.<br />
<br />
'''#RESULT'''<br><br />
This command can be sent any time, even during other command execution. Flasher responds with the last result of the previously executed command.<br />
<br />
'''#SELECT <Filename>'''<br><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.<br />
<tt><Filename></tt> specifies the name of file pair without extensions (.CFG and .DAT) on the Flasher which should be selected. If you are<br />
using the universal flash programming mode, <tt><Filename></tt> specifies the full name of the .UNI file '''including''' the extension.<br />
Flasher saves the selected config and data file in the FLASHER.INI file. So this selection is remembered even between power-cycling Flasher.<br><br />
<br />
This may be verfy helpful in cases where several config and data files are stored on Flasher.<br />
The user can easily switch between these config and data files without connecting Flasher to a host.<br><br />
<br />
If this command succeeds, Flasher responds with:<br><br />
<br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<br />
Find below a sample sequence which shows how to use the <tt>#SELECT</tt> command:<br><br />
<br />
<tt>#SELECT ATSAM7_1 // ATSAM7_1.CFG and ATSAM7_1.DAT is selected</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<tt>#AUTO // Start auto programming</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#STATUS:INITIALIZING</tt><br><br />
<tt>#STATUS:CONNECTING</tt><br><br />
<tt>#STATUS:UNLOCKING</tt><br><br />
<tt>#STATUS:ERASING</tt><br><br />
<tt>#STATUS:PROGRAMMING</tt><br><br />
<tt>#STATUS:VERIFYING</tt><br><br />
<tt>#OK (Total 8.416s, Erase 0.005s, Prog 6.845s, Verify 0.959s)</tt><br><br />
<tt>#SELECT ATSAM7_2 // ATSAM7_2.CFG and ATSAM7_2.DAT is selected</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<tt>#AUTO // Start auto programming</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#STATUS:INITIALIZING</tt><br><br />
<tt>#STATUS:CONNECTING</tt><br><br />
<tt>#STATUS:UNLOCKING</tt><br><br />
<tt>#STATUS:ERASING</tt><br><br />
<tt>#STATUS:PROGRAMMING</tt><br><br />
<tt>#STATUS:VERIFYING</tt><br><br />
<tt>#OK (Total 8.632s, Erase 0.005s, Prog 7.051s, Verify 0.969s)</tt><br><br />
<br />
'''#START'''<br><br />
This command can be sent to start the application using the method configured in the J-Flash project.<br />
<br />
Flasher will reply with the following sequence of messages:<br><br />
<br />
<tt>#ACK</tt><br><br />
<tt>#STATUS:INITIALIZING</tt><br><br />
<tt>#STATUS:CONNECTING</tt><br><br />
<tt>#OK (Total 1.148s)</tt><br><br />
<br />
'''#STATUS'''<br><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]].<br />
<br />
'''#VERIFY'''<br><br />
This command can used to verify the target flash content against the data stored in Flasher.<br />
<br />
'''#QUIT'''<br><br />
This command can be used to terminate the active telnet connection from the server side (Flasher).<br />
The command provides an easy way to terminate the session from an automated script.<br />
It is not necessary to parse stdout and switch to local command mode to disconnect.<br />
Not implemented in the Flasher ATE or Flasher Hub.<br />
<br />
'''#VERBOSE <Level>'''<br><br />
This command can be used to change the verbosity level. <br><br />
* Verbosity level 0: Default. <br><br />
* Verbosity level 1: Provides some additional messages during the programming process.<br />
<br />
===== File I/O commands =====<br />
<br />
The ASCII interface of the Flasher also supports file I/O operations.<br />
<br />
The following file I/O commands are supported:<br><br />
<br />
'''#FCLOSE'''<br><br />
The <tt>#FCLOSE</tt> command closes the file on Flasher which was opened via <tt>#FOPEN</tt>.<br />
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><br />
<br />
A typical sequence when using the <tt>#FCLOSE</tt> command does look like as follows:<br><br />
<br />
<tt>#FCLOSE</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<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><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:No file opened</tt><br />
}}<br />
<br />
'''#FCRC'''<br><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>.<br />
The CRC will be also reported by J-Flash when downloading or saving files via J-Flash.<br><br />
<br />
A typical sequence when using the <tt>#FCRC</tt> command does look like as follows:<br><br />
<br />
<tt>#FCRC flasher.dat</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK:0x75BC855A</tt><br><br />
<br />
'''#FDELETE <Filename>'''<br><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><br />
<br />
A typical sequence when using the <tt>#FDELETE</tt> command does look like as follows:<br><br />
<br />
<tt>#FDELETE flasher.dat</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<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><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:Failed to delete file</tt><br />
}}<br />
<br />
'''#FOPEN <Filename>'''<br><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.<br />
If <tt><Filename></tt> can not be found on Flasher a new one will be created.<br><br />
<br />
A typical sequence using the <tt>#FOPEN</tt> command does look like as follows:<br><br />
<br />
<tt>#FOPEN flasher.dat</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<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><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:A file has already been opened</tt><br />
}}<br />
<br />
'''#FREAD <Offset>,<NumBytes>'''<br><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.<br />
<tt><NumBytes></tt> specifies the number of bytes which should be read.<br><br />
<br />
A typical sequence when using the <tt>#FREAD</tt> command does look like as follows:<br><br />
<br />
<tt>#FREAD 0,4</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK:04:466c6173</tt><br><br />
<br />
If the <tt>#FREAD</tt> command succeeds, Flasher will finally respond with a <tt>#OK:<NumBytes>:<nowiki><Data></nowiki></tt> reply message.<br />
For more information about the Flasher reply messages, please refer to [[#Replies from Flasher | Replies from Flasher]].<br><br />
<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><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:No file opened</tt>}}<br />
<br />
'''#FSIZE'''<br><br />
The <tt>#FSIZE</tt> command is used to get the size of the currently opened file on Flasher.<br><br />
<br />
A typical sequence when using the <tt>#FSIZE</tt> command does look like as follows:<br><br />
<br />
<tt>#FSIZE</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK:10 // file on flasher which is currently open, has a size of 16 bytes</tt><br><br />
<br />
If the <tt>#FSIZE</tt> command succeeds, Flasher will respond with a <tt>#OK:<Size></tt> reply message.<br />
For more information about the Flasher reply messages, please refer to [[#Replies from Flasher | Replies from Flasher]].<br><br />
<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><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:No file opened</tt>}}<br />
<br />
'''#FWRITE <Offset>,<NumBytes>:<nowiki><Data></nowiki>'''<br><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.<br />
<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.<br />
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><br />
<br />
<tt><Offset></tt> and <tt><NumBytes></tt> are expected in hexadecimal format.<br><br />
<br />
<tt>#FWRITE 0,200:<nowiki><Data></nowiki></tt><br><br />
<tt>#FWRITE 200,200:<nowiki><Data></nowiki></tt><br><br />
<br />
The data is expected in hexadecimal format (two hexadecimal characters per byte). The following example illustrates the use of <tt>#FWRITE</tt>:<br />
<br />
<tt>Data to be send: Hello !</tt><br><br />
<tt>ASCII values: 0x48, 0x65, 0x6C, 0x6C, 0x6F, 0x20, 0x21</tt><br><br />
<br />
<tt>#FWRITE 0,7:48656C6C6F2021</tt><br><br />
<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><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:No file opened</tt><br>}}<br />
<br />
'''#FLIST'''<br><br />
The <tt>#LIST</tt> command is used to list all files stored on the Flasher.<br><br />
<br />
A typical sequence using the <tt>#FLIST</tt> command does look like as follows:<br><br />
<br />
<tt>#FLIST</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>FLASHER.INI Size: 60</tt><br><br />
<tt>SERIAL.TXT Size: 3</tt><br><br />
<tt>FLASHER.LOG Size: 207</tt><br><br />
<tt>FOLDER (DIR)</tt><br><br />
<tt>FOLDER\\TEST1.CFG Size: 2048</tt><br><br />
<tt>FOLDER\\TEST1.DAT Size: 12288</tt><br><br />
<tt>#OK</tt><br><br />
<br />
'''#MKDIR <Dirname>'''<br><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><br />
<br />
A typical sequence using the <tt>#MKDIR</tt> command does look like as follows:<br><br />
<br />
<tt>#MKDIR folder</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<br />
{{Note|1=If the directory can not be created because of a bad <tt><Dirname></tt> argument, Flasher will respond with:<br><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:Failed to create directory</tt><br>}}<br />
<br />
===== Secure Area Commands =====<br />
<br />
'''#HASSECUREAREA'''<br><br />
The <tt>#HASSECUREAREA</tt> command checks if the Flasher is configured with a secure area.<br />
<br />
<tt>#RESULT:YES</tt> indicates the secure area is present, <tt>#RESULT:NO</tt> indicates no secure area is present.<br />
<br />
'''#SECUREAREA'''<br><br />
The <tt>#SECUREAREA <action></tt> command allows to create or remove the secure area on the Flasher.<br />
<br />
* the action <tt>CREATE</tt> creates the secure area.<br />
* the action <tt>REMOVE</tt> will remove the secure area.<br />
<br />
A typical sequence using the <tt>#SECUREAREA</tt> command does look like as follows:<br><br />
<br />
<tt>#SECUREAREA CREATE</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#DONE</tt><br><br />
<br />
{{Note|1=When creating or removing the <tt>secure area</tt>, all configuration and data files being stored on the Flasher, are lost.<br />
Please make sure that they are not needed anymore, before adding / removing the security area.}}<br />
<br />
<br />
<br />
===== Replies from Flasher =====<br />
<br />
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.<br />
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.<br />
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><br />
<br />
<tt>#OK (Total 13.993s, Erase 0.483s, Prog 9.183s, Verify 2.514s)</tt><br><br />
<br />
The following reply messages from Flasher are defined:<br><br />
<br />
'''#ACK'''<br><br />
Flasher replies with <tt>#ACK</tt> message on reception of any defined command before the command itself is executed.<br />
<br />
'''#NACK'''<br><br />
Flasher replies with <tt>#NACK</tt>, if an undefined command was received.<br />
<br />
'''#OK'''<br><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.<br />
<br />
'''#OK:<NumBytes>:<nowiki><Data></nowiki>'''<br><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.<br />
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).<br />
<br />
'''#OK:<Size>'''<br><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.<br />
<br />
'''#STATUS:'''<br><br />
The Flasher replies with its current state.<br><br />
<br />
The following status messages are currently defined:<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Message !! Description<br />
|-<br />
| <tt>#STATUS:READY</tt> || Flasher is ready to receive a new command.<br />
|-<br />
| <tt>#STATUS:CONNECTING</tt> || Flasher initializes connection to target CPU.<br />
|-<br />
| <tt>#STATUS:INITIALIZING</tt> || Flasher performs self check and internal init.<br />
|-<br />
| <tt>#STATUS:UNLOCKING</tt> || Unlocking flash sectors.<br />
|-<br />
| <tt>#STATUS:ERASING</tt> || Flasher is erasing the flash of the target device.<br />
|-<br />
| <tt>#STATUS:PROGRAMMING</tt> || Flasher is programming the flash of the target device.<br />
|-<br />
| <tt>#STATUS:VERIFYING</tt> || Flasher verifies the programmed flash contents.<br />
|-<br />
|}<br />
<br />
'''#ERRxxx'''<br><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><br />
<br />
Some error codes may be followed by colon and an additional error text.<br><br />
<br />
For example:<br><br />
<br />
<tt>#ERR007:CANCELED.</tt><br><br />
<br />
The error code numbers are described in the following table:<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Message !! Description<br />
|-<br />
| <tt>#ERR007</tt> || Flasher received <tt>#CANCEL</tt> command and has canceled the current operation.<br />
|-<br />
| <tt>#ERR008</tt> || Flasher is already busy with execution of previous command.<br />
|-<br />
| <tt>#ERR009</tt> || Failed to allocate memory.<br />
|-<br />
| <tt>#ERR010</tt> || Failed to open file.<br />
|-<br />
| <tt>#ERR011</tt> || Failed to read file.<br />
|-<br />
| <tt>#ERR012</tt> || Failed to write file.<br />
|-<br />
| <tt>#ERR013</tt> || Failed to delete file.<br />
|-<br />
| <tt>#ERR255</tt> || Undefined error occurred. This reply is followed by an error string.<br />
|-<br />
|}<br />
<br />
== Performance ==<br />
<br />
The following chapter lists programming performance of common flash devices andmicrocontrollers.<br />
<br />
=== Performance of MCUs with internal flash memory ===<br />
<br />
==== Flasher ARM ====<br />
<br />
The following table lists program and erase performance values of Flasher ARM for different controllers.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Microcontroller !! Size [kByte] !! Erase time [sec] !! Program time [sec] !! Verify time [sec] !! Total time [sec]<br />
|-<br />
| Analog Devices || 62 || 2.943 || 2.286 || 0.563 || 5.792<br />
|-<br />
| Atmel AT91SAM7S64 || 64 || --- || 3.488 || 0.438 || 3.926<br />
|-<br />
| Atmel AT91SAM7S256 || 256 || --- || 7.709 || 1.053 || 8.762<br />
|-<br />
| NXP LPC1768 || 512 || 3.740 || 8.559 || 5.092 || 17.391<br />
|-<br />
| NXP LPC2106 || 120 || 0.448 || 1.204 || 0.634 || 2.286<br />
|-<br />
| NXP LPC2129 || 248 || 0.449 || 2.916 || 1.347 || 4.712<br />
|-<br />
| NXP LPC2138 || 500 || 0.448 || 5.488 || 2.649 || 8.585<br />
|-<br />
| NXP LPC2148 || 500 || 0.448 || 5.632 || 2.721 || 8.801<br />
|-<br />
| NXP LPC2294 || 2048 || 0.808 || 15.976 || 9.669 || 26.453<br />
|-<br />
| NXP LPC2478 || 504 || 0.448 || 5.419 || 2.559 || 8.426<br />
|-<br />
| ST STM32F103ZE || 512 || 0.028 || 18.763 || 3.939 || 22.730<br />
|-<br />
| ST STR711 || 272 || 0.429 || 5.476 || 4.742 || 10.647<br />
|-<br />
| ST STR912 || 544 || 1.167 || 12.907 || 5.236 || 19.310<br />
|-<br />
| TI TMS470R1B1M || 1024 || 2.289 || 8.147 || 5.362 || 15.798<br />
|-<br />
|}<br />
<br />
==== Flasher PRO ====<br />
See Flasher ARM.<br />
<br />
==== Flasher Compact ====<br />
See Flasher ARM.<br />
<br />
==== Flasher RX ====<br />
<br />
The following table lists program and erase performance values of Flasher RX.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Microcontroller !! Size [kByte] !! Erase time [sec] !! Program time [sec] !! Verify time [sec] !! Total time [sec]<br />
|-<br />
| R5F56108 || 2.048 || 9.523 || 11.915 || 3.890 || 25.585<br />
|-<br />
|}<br />
<br />
==== Flasher PPC ====<br />
<br />
The following table lists program and erase performance values of Flasher PPC.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Microcontroller !! Size [kByte] !! Erase time [sec] !! Program time [sec] !! Verify time [sec] !! Total time [sec]<br />
|-<br />
| ST SPC560B50 || 576 || 4.747 || 4.159 || 1.929 || 10.917<br />
|-<br />
|}<br />
<br />
== Hardware ==<br />
<br />
This chapter gives an overview about Flasher specific hardware details,<br />
such as the pinouts and available adapters.<br />
<br />
=== Flasher ARM 20-pin JTAG/SWD Connector ===<br />
<br />
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.<br />
<br />
==== Pinout JTAG ====<br />
<br />
[[File:jtag_port_20pin.jpg]] <!-- LG xxxxxx image has been cropped to fit page --><br />
<br />
The following table lists the Flasher JTAG pinout.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! PIN !! SIGNAL !! TYPE !! Description<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 13 || TDO || Input || JTAG data output from target CPU. Typically connected to TDO of target CPU.<br />
|-<br />
| 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".<br />
|-<br />
| 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.<br />
|-<br />
| 19 || 5V-Target supply || Output || This pin is used to supply power to some eval boards. Typically left open on target hardware.<br />
|-<br />
|}<br />
<br />
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.<br />
<br />
==== Pinout SWD ====<br />
<br />
The 20-pin connector of Flasher is also compatible to ARM's Serial Wire Debug (SWD) interface.<br><br />
<br />
[[File:SWD_Port.jpg]] <!-- LG xxxxxx image has been cropped to fit page --><br />
<br />
The following table lists the J-Link / J-Trace SWD pinout.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! PIN !! SIGNAL !! TYPE !! Description<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 7 || SWDIO || I/O || Single bi-directional data pin.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 13 || SWO || Output || Serial Wire Output trace port. (Optional, not required for SWD communication.)<br />
|-<br />
| 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".<br />
|-<br />
| 17 || Not used || NC || This pin is not connected in J-Link.<br />
|-<br />
| 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.<br />
|-<br />
|}<br />
<br />
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.<br />
<br />
==== Target power supply ====<br />
<br />
Pin 19 of the connector can be used to supply power to the target hardware. Supply voltage is 5V, max. current is 400mA.<br />
The output current is monitored and protected against overload and short-circuit.<br><br />
<br />
Power can be controlled via the J-Link commander. The following commands are available to control power:<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Command !! Explanation<br />
|-<br />
| <tt>power on</tt> || Switch target power on<br />
|-<br />
| <tt>power off</tt> || Switch target power off<br />
|-<br />
| <tt>power on perm</tt> || Set target power supply default to "on"<br />
|-<br />
| <tt>power off perm</tt> || Set target power supply default to "off"<br />
|-<br />
|}<br />
<br />
=== Flasher RX 14-pin connector ===<br />
<br />
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.<br />
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.<br />
<br />
[[File:jtag_port_14pin.wmf]]<br />
<br />
The following table lists the Flasher RX 14-pin JTAG pinout.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Pin !! Signal !! Type !! Description<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 5 || TDO || Input || JTAG data output from target CPU. Typically connected to TDO on target CPU.<br />
|-<br />
| 6 || --- || NC || This pin is not connected to Flasher RX.<br />
|-<br />
| 7 || --- || NC || This pin is not connected to Flasher RX.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 10 || --- || NC || This pin is not connected to Flasher RX.<br />
|-<br />
| 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.<br />
|-<br />
| 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".<br />
|-<br />
|}<br />
<br />
* All pins marked NC are not connected to Flasher RX. Any signal can be applied here; Flasher RX will simply ignore such a signal.<br />
* Pins 2, 12, 14 are GND pins connected to GND in Flasher RX. They should also be connected to GND in the target system.<br />
<br />
==== Target power supply ====<br />
<br />
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.<br />
Power can be controlled via the J-Link commander. The following commands are available to control power:<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Command !! Explanation<br />
|-<br />
| <tt>power on</tt> || Switch target power on<br />
|-<br />
| <tt>power off</tt> || Switch target power off<br />
|-<br />
| <tt>power on perm</tt> || Set target power supply default to "on"<br />
|-<br />
| <tt>power off perm</tt> || Set target power supply default to "off"<br />
|-<br />
|}<br />
<br />
=== Flasher PPC 14-pin connector ===<br />
<br />
Flasher PPC itself has a 20-pin JTAG connector mounted but comes with a 14-pin adapter for PowerPC devices.<br><br />
<br />
[[File:JTAG_PPC_14pin_adapter.wmf]]<br />
<br />
The following table lists the Flasher PPC 14-pin JTAG pinout.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Pin !! Signal !! Type !! Description<br />
|-<br />
| 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.<br />
|-<br />
| 3 || TDO || Input || JTAG data output from target CPU. Typically connected to TDO on target CPU.<br />
|-<br />
| 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.<br />
|-<br />
| 7 || --- || NC || This pin is not connected to Flasher PPC.<br />
|-<br />
| 8 || --- || NC || This pin is not connected to Flasher PPC.<br />
|-<br />
| 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".<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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).<br />
|-<br />
|}<br />
<br />
* All pins marked NC are not connected to Flasher PPC. Any signal can be applied here; Flasher PPC will simply ignore such a signal.<br />
* 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.<br />
<br />
=== Target board design ===<br />
<br />
We strongly advise following the recommendations given by the chip manufacturer. These recommendations are normally in line with the recommendations.<br />
Please refer to the the appropriate tables depending on the core:<br><br />
<br />
* [[#Pinout JTAG | Pinout JTAG]]<br />
* [[#Pinout SWD | Pinout SWD]]<br />
* [[#Flasher RX 14-pin connector | Flasher RX 14-pin connector]]<br />
* [[#Flasher PPC 14-pin connector | Flasher PPC 14-pin connector]]<br />
<br />
In case of doubt you should follow the recommendations given by the semiconductor manufacturer.<br />
<br />
==== Pull-up/pull-down resistors ====<br />
<br />
Unless otherwise specified by developer's manual, pull-ups/pull-downs are recommended to be between 2.2 kOhms and 47 kOhms.<br />
<br />
==== RESET, nTRST ====<br />
<br />
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><br />
<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.<br />
(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.<br />
<br />
=== Adapters ===<br />
<br />
==== JTAG Isolator ====<br />
<br />
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.<br />
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><br />
<br />
[[File:JTAG_Isolator_Port.wmf]]<br />
<br />
===== Pinout =====<br />
<br />
The following table shows the target-side pinout of the J-Link JTAG Isolator.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Pin !! Signal !! Type !! Description<br />
|-<br />
| 1 || VCC || Output || The target side of the isolator draws power over this pin.<br />
|-<br />
| 2 || VCC || Output || The target side of the isolator draws power over this pin.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 13 || TDO || Input || JTAG data output from target CPU. Typically connected to TDO of target CPU.<br />
|-<br />
| 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".<br />
|-<br />
| 17 || N/C || N/C || This pin is not connected on the target side of the isolator.<br />
|-<br />
| 19 || N/C || N/C || This pin is not connected on the target side of the isolator.<br />
|-<br />
|}<br />
<br />
Pins 4, 6, 8, 10, 12, 14, 16, 18, 20 are connected to GND.<br />
<br />
===== Safety =====<br />
This isolator provides '''basic isolation''' only. '''Do not use with hazardous voltages without further protection measures to avoid risk of electrical shock and fire.'''<br />
<br />
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.<br />
<br />
==== J-Link Needle Adapter ====<br />
<br />
To connect to the J-Link OB via programming interface the ''J-Link Needle Adapter'' is recommended.<br><br />
<br />
[[File:J-Link_Needle_Adapter_500x.jpg]]<br />
<br />
Why to choose the J-Link Needle Adapter:<br><br />
<ol><br />
<li>No additional connector required on your PCB</li><br />
<li>Very small footprint</li><br />
<li>High reliability spring pins for secure connections</li><br />
<li>Designed with 3 locating pins, so the adapter can not be connected the wrong way</li><br />
<li>No external power supply required! The J-Link Needle Adapter comes with the option to power the target hardware via J-Link.</li><br />
</ol><br />
These features make the J-Link Needle Adapter the perfect solution for production purposes.<br><br />
<br />
The pinout of the J-Link Needle Adapter is based on the pinout of the needle adapter by Tag-Connect.<br />
Please note, that both pinouts are not identical since the J-Link Needle Adapter comes with a 5V-supply pin.<br><br />
<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><br />
<br />
Moreover, the two "legs" on each side of the connector guarantee a stable and secure contact between pins and the PCB.<br><br />
<br />
[[File:J-Link_Needle_Adapter_Connector_pins_360x.jpg]]<br />
[[File:J-Link_Needle_Adapter_Pinout.jpg]]<br />
<br />
The J-Link Needle Adapter can be connected to J-Link via the ''20-pin 0.1'' JTAG to a 10-pin needle connector''.<br />
<br />
=== How to determine the hardware version ===<br />
<br />
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.<br />
Flasher has the hardware version printed on the back label.<br><br />
<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).<br />
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><br />
<br />
[[File:FlasherARM_version.gif]]<br />
== Support and FAQs ==<br />
<br />
This chapter contains troubleshooting tips together with solutions for common problems which might occur when using Flasher.<br />
There are several steps you can take before contacting support.<br />
Performing these steps can solve many problems and often eliminates the need for assistance.<br />
This chapter also contains a collection of frequently asked questions (FAQs) with answers.<br />
<br />
=== Contacting support ===<br />
<br />
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.<br />
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><br />
<br />
If you need to contact support, send the following information to<br><br />
''support@segger.com''<br><br />
<br />
* A detailed description of the problem<br />
* Flasher serial number<br />
* Information about your target hardware (processor, board, etc.).<br />
* <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]].<br />
<br />
Flasher is sold directly by SEGGER.<br />
<br />
=== Frequently Asked Questions ===<br />
<br />
'''Maximum JTAG speed'''<br />
{|<br />
|-<br />
| '''Q:''' || What is the maximum JTAG speed supported by Flasher?<br />
|-<br />
| '''A:''' || Flasher's maximum supported JTAG speed is 12MHz.<br />
|}<br />
<br />
'''Maximum download speed'''<br />
{|<br />
|-<br />
| '''Q:''' || What is the maximum download speed?<br><br />
|-<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.<br />
|}<br />
== Background information ==<br />
<br />
This chapter provides background information about flash programming in general. It<br />
also provides information about how to replace the firmware of Flasher manually.<br />
<br />
=== Flash programming ===<br />
<br />
Flasher comes with a DLL, which allows - amongst other functionalities - reading and writing RAM, CPU registers, starting and stopping the CPU, and setting breakpoints.<br />
<br />
==== How does flash programming via Flasher work? ====<br />
<br />
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.<br />
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.<br />
Different flash chips have different programming algorithms;the programming algorithm also depends on other things,<br />
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).<br />
The RAM code requires data to be programmed into the flash memory. The data is supplied by downloading it to RAM.<br />
<br />
==== Data download to RAM ====<br />
<br />
The data (or part of it) is downloaded to another part of the RAM of the target system.<br />
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.<br />
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.<br />
This process may have to be repeated until the entire data is programmed into the flash.<br />
<br />
==== Available options for flash programming ====<br />
<br />
In general, there are two possibilities in order to use Flasher for flash programming:<br><br />
<br />
* Using Flasher stand-alone to program the target flash memory (stand-alone mode)<br />
* Using Flasher in combination with J-Flash to program the target flash memory (Flasher in "PC-based mode")<br />
<br />
===== Using Flasher in stand-alone mode =====<br />
<br />
In order to use the Flasher in stand-alone mode, it has to be configured first.<br />
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]].<br />
<br />
===== J-Flash - Complete flash programming solution =====<br />
<br />
J-Flash is a stand-alone Windows application, which can read / write data files and program the flash in almost any ARM system.<br />
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''.<br />
<br />
==== How does the universal flash programming work? ====<br />
<br />
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><br />
<br />
Universal flash programming is available only for stand-alone mode.<br />
== Glossary ==<br />
<br />
This chapter describes important terms used throughout this manual.<br />
<br />
'''Big-endian'''<br><br />
Memory organization where the least significant byte of a word is at a higher address than the most significant byte. See Little-endian.<br />
<br />
'''Cache cleaning'''<br><br />
The process of writing dirty data in a cache to main memory.<br />
<br />
'''Coprocessor'''<br><br />
An additional processor that is used for certain operations, for example, for floating-point math calculations, signal processing, or memory management.<br />
<br />
'''Dirty data'''<br><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.<br />
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.<br />
<br />
'''Halfword'''<br><br />
A 16-bit unit of information.<br />
<br />
'''Host'''<br><br />
A computer which provides data and other services to another computer. Especially, a computer providing debugging services to a target being debugged.<br />
<br />
'''ICache'''<br><br />
Instruction cache.<br />
<br />
'''ID'''<br><br />
Identifier.<br />
<br />
'''IEEE 1149.1'''<br><br />
The IEEE Standard which defines TAP. Commonly (but incorrectly) referred to as JTAG.<br />
<br />
'''Image'''<br><br />
An executable file that has been loaded onto a processor for execution.<br />
<br />
'''Instruction Register'''<br><br />
When referring to a TAP controller, a register that controls the operation of the TAP.<br />
<br />
'''IR'''<br><br />
See Instruction Register.<br />
<br />
'''Joint Test Action Group (JTAG)'''<br><br />
The name of the standards group which created the IEEE 1149.1 specification.<br />
<br />
'''Little-endian'''<br><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.<br />
<br />
'''Memory coherency'''<br><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.<br />
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.<br />
<br />
'''Memory management unit (MMU)'''<br><br />
Hardware that controls caches and access permissions to blocks of memory, and translates virtual to physical addresses.<br />
<br />
'''Memory Protection Unit (MPU)'''<br><br />
Hardware that controls access permissions to blocks of memory. Unlike an MMU, a MPU does not translate virtual addresses to physical addresses.<br />
<br />
'''RESET'''<br><br />
Abbreviation of System Reset. The electronic signal which causes the target system other than the TAP controller to be reset.<br />
This signal is also known as "nSRST" "nSYSRST", "nRST", or "nRESET" in some other manuals. See also nTRST.<br />
<br />
'''nTRST'''<br><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.<br />
<br />
'''Open collector'''<br><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.<br />
<br />
'''Processor Core'''<br><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.<br />
It excludes optional coprocessors, caches, and the memory management unit.<br />
<br />
'''Remapping'''<br><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.<br />
<br />
'''RTOS'''<br><br />
Real Time Operating System.<br />
<br />
'''TAP Controller'''<br><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.<br />
<br />
'''Target'''<br><br />
The actual processor (real silicon or simulated) on which the application program is running.<br />
<br />
'''TCK'''<br><br />
The electronic clock signal which times data on the TAP data lines TMS, TDI, and TDO.<br />
<br />
'''TDI'''<br><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.<br />
<br />
'''TDO'''<br><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.<br />
<br />
'''Test Access Port (TAP)'''<br><br />
The port used to access a device's TAP Controller. Comprises TCK, TMS, TDI, TDO, and nTRST (optional).<br />
<br />
'''Transistor-transistor logic (TTL)'''<br><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.<br />
<br />
'''Word'''<br><br />
A 32-bit unit of information. Contents are taken as being an unsigned integer unless otherwise stated.<br />
== Literature and references ==<br />
This chapter lists documents, which we think may be useful to gain a deeper understanding of technical details.</div>JanBhttps://wiki.segger.com/index.php?title=Flasher/Differences_between_Flasher_ATE,_Flasher_Hub_and_Flasher_Hub-12&diff=16848Flasher/Differences between Flasher ATE, Flasher Hub and Flasher Hub-122023-10-30T07:35:45Z<p>JanB: </p>
<hr />
<div>= Direct Comparsion =<br />
<br />
{| class="wikitable"<br />
|-<br />
! colspan=2 | !! Flasher ATE !! Flasher Hub !! Flasher Hub-12<br />
|-<br />
! colspan=2 | Host Interfaces<br />
| Ethernet (10/100MBit)<br/>USB2.0 (High-Speed), USB Type B<br/>RS232 9-pin<br/><br />
| Ethernet (10/100/1000MBit)<br/><br />
| Ethernet (10/100MBit)<br/>USB2.0 (High-Speed), USB Type B<br/>RS232 9-pin<br/><br />
|-<br />
! colspan=2 | Maximal direct parallel programming channels (with chaining)<br />
| 10 (n/a) <br />
| 24 (n/a) <br />
| 12 (48)<br />
|- <br />
! colspan="2" | Internal system connection<br />
| Internal proprietary bus, daisy chained<br />
| USB Type A to USB-micro, USB 2.0<br />
| USB Type C to USB-micro, USB 2.0<br />
|-<br />
! colspan=2 | System power supply<br />
| Connection terminals/USB-B<br/>5V/3A max.<br />
| USB-C<br>5V/1.5A min.<br />
| Connection terminals<br>12..30V/60W<br />
|-<br />
! colspan=2 | Target power supply (selectable)<br />
| none<br/>5V/100mA (internal system power)<br>1.5&hellip;15V/400 mA (externally supplied power)<br />
| none<br>5V/400mA max. (USB power)<br />
| none<br>5V/400mA max. (USB power)<br />
|-<br />
! colspan=2 | Form factor<br />
| <dl><dt>Main Module (naked PCB)</dt><dd>108 mm x 56 mm x 20 mm<br>delivered with acrylic mounting plate for 10 Modules</dd><br />
<dt>Programming Module (naked PCB)</dt><dd>108 mm x 35 mm x 20 mm</dd></dl><br />
| <dl><dt>Hub (housing)</dt><dd>60 mm x 32 mm x 95 mm (without mounting brackets)</dd><br />
<dt>Flasher Compact (housing)<ref name="housing">If space is limited, it is possible to remove the Flasher Compact without the housing. The bare PCB provides mounting holes.</ref></dt><dd>70 mm x 45 mm x 18 mm</dd></dl><br />
| <dl><dt>Hub (housing)</dt><dd>170 mm x 172 mm x 35 mm</dd><br />
<dt>Flasher Compact (housing)<ref name="housing"/></dt><dd>70 mm x 45 mm x 18 mm</dd></dl><br />
|-<br />
! rowspan="3" |Components needed for <br />
! minimal setup<br>1 channel <br />
| 1x Main Module <br/> 1x Programming Module <br />
| 1x Flasher Hub <br/> 1x Flasher Compact <br/> 1x USB-A to USB-micro cable <br />
| 1x Flasher Hub-12 <br/> 1x Flasher Compact <br/> 1x USB-C to USB-micro cable<br />
|-<br />
! 4 channels<br />
| 1x Main Module <br/> 4x Programming Module <br />
| 1x Flasher Hub<ref>It is not recommended to directly connect Flasher to Hub, please always use a powered USB-Hub.</ref> <br/> 4x Flasher Compact<br/> 4x USB-A to USB-micro cable<br />
| 1x Flasher Hub-12 <br/> 4x Flasher Compact <br/> 4x USB-C to USB-micro cable<br />
|-<br />
! maximal setup<br />
| 1x Main Module <br/> 10x Programming Module <br />
| 1x Flasher Hub <br/> 24x Flasher Compact <br/> 24x USB-A to USB-micro cable <br/> 4x 7-port USB-2.0-Hubs<ref> Due to a hardware limitation of the USB host controller IC, the number of enumerable device endpoints is limited to 31. Some USB hubs (especially USB-3) occupy up to 3 device endpoints. Therefore, it may be a challenge to connect all 24 flashers and the fail-save USB drive. If you have such problems, please contact SEGGER. We also offer USB hubs that avoid these problems: [https://www.segger.com/products/production/flasher/accessories/segger-usb-hub/ Segger USB Hub]</ref><br />
| 1x Flasher Hub-12 <br/> 12x Flasher Compact <br/> 12x USB-C to USB-micro cable<br />
|-<br />
! colspan="2" | Use cases<br />
| <br />
<ul><br />
<li>For panels with up to 10 devices<li><br />
<li>For space restricted setups / ICT.</li><br />
</ul><br />
|<br />
<ul><br />
<li>For panels with up to 24 devices<li><br />
<li>For maximum speed (for minimum signal line length as closely as possible at needle connectors).</li><br />
<li>For minimizing number of USB connection to the fixture module</li><br />
<li>When space in ICT is not critical</li><br />
<li>For space distributed programming stations.</li></ul><br />
|<br />
<ul><br />
<li>For panels with up to 48 devices<li><br />
<li>For maximum speed (for minimum signal line length as closely as possible at needle connectors).</li><br />
<li>When space in ICT is not critical</li><br />
<li>For space distributed programming stations</li></ul><br />
|}</div>JanBhttps://wiki.segger.com/index.php?title=Flasher/Differences_between_Flasher_ATE,_Flasher_Hub_and_Flasher_Hub-12&diff=16847Flasher/Differences between Flasher ATE, Flasher Hub and Flasher Hub-122023-10-30T07:33:32Z<p>JanB: Fixed USB types of Flasher Hub-12</p>
<hr />
<div>= Direct Comparsion =<br />
<br />
{| class="wikitable"<br />
|-<br />
! colspan=2 | !! Flasher ATE !! Flasher Hub !! Flasher Hub-12<br />
|-<br />
! colspan=2 | Host Interfaces<br />
| Ethernet (10/100MBit)<br/>USB2.0 (High-Speed), USB Type B<br/>RS232 9-pin<br/><br />
| Ethernet (10/100/1000MBit)<br/><br />
| Ethernet (10/100MBit)<br/>USB2.0 (High-Speed), USB Type C<br/>RS232 9-pin<br/><br />
|-<br />
! colspan=2 | Maximal direct parallel programming channels (with chaining)<br />
| 10 (n/a) <br />
| 24 (n/a) <br />
| 12 (48)<br />
|- <br />
! colspan="2" | Internal system connection<br />
| Internal proprietary bus, daisy chained<br />
| USB Type A to USB-micro, USB 2.0<br />
| USB Type C to USB-micro, USB 2.0<br />
|-<br />
! colspan=2 | System power supply<br />
| Connection terminals/USB-B<br/>5V/3A max.<br />
| USB-C<br>5V/1.5A min.<br />
| Connection terminals<br>12..30V/60W<br />
|-<br />
! colspan=2 | Target power supply (selectable)<br />
| none<br/>5V/100mA (internal system power)<br>1.5&hellip;15V/400 mA (externally supplied power)<br />
| none<br>5V/400mA max. (USB power)<br />
| none<br>5V/400mA max. (USB power)<br />
|-<br />
! colspan=2 | Form factor<br />
| <dl><dt>Main Module (naked PCB)</dt><dd>108 mm x 56 mm x 20 mm<br>delivered with acrylic mounting plate for 10 Modules</dd><br />
<dt>Programming Module (naked PCB)</dt><dd>108 mm x 35 mm x 20 mm</dd></dl><br />
| <dl><dt>Hub (housing)</dt><dd>60 mm x 32 mm x 95 mm (without mounting brackets)</dd><br />
<dt>Flasher Compact (housing)<ref name="housing">If space is limited, it is possible to remove the Flasher Compact without the housing. The bare PCB provides mounting holes.</ref></dt><dd>70 mm x 45 mm x 18 mm</dd></dl><br />
| <dl><dt>Hub (housing)</dt><dd>170 mm x 172 mm x 35 mm</dd><br />
<dt>Flasher Compact (housing)<ref name="housing"/></dt><dd>70 mm x 45 mm x 18 mm</dd></dl><br />
|-<br />
! rowspan="3" |Components needed for <br />
! minimal setup<br>1 channel <br />
| 1x Main Module <br/> 1x Programming Module <br />
| 1x Flasher Hub <br/> 1x Flasher Compact <br/> 1x USB-A to USB-micro cable <br />
| 1x Flasher Hub-12 <br/> 1x Flasher Compact <br/> 1x USB-C to USB-micro cable<br />
|-<br />
! 4 channels<br />
| 1x Main Module <br/> 4x Programming Module <br />
| 1x Flasher Hub<ref>It is not recommended to directly connect Flasher to Hub, please always use a powered USB-Hub.</ref> <br/> 4x Flasher Compact<br/> 4x USB-A to USB-micro cable<br />
| 1x Flasher Hub-12 <br/> 4x Flasher Compact <br/> 4x USB-C to USB-micro cable<br />
|-<br />
! maximal setup<br />
| 1x Main Module <br/> 10x Programming Module <br />
| 1x Flasher Hub <br/> 24x Flasher Compact <br/> 24x USB-A to USB-micro cable <br/> 4x 7-port USB-2.0-Hubs<ref> Due to a hardware limitation of the USB host controller IC, the number of enumerable device endpoints is limited to 31. Some USB hubs (especially USB-3) occupy up to 3 device endpoints. Therefore, it may be a challenge to connect all 24 flashers and the fail-save USB drive. If you have such problems, please contact SEGGER. We also offer USB hubs that avoid these problems: [https://www.segger.com/products/production/flasher/accessories/segger-usb-hub/ Segger USB Hub]</ref><br />
| 1x Flasher Hub-12 <br/> 12x Flasher Compact <br/> 12x USB-C to USB-micro cable<br />
|-<br />
! colspan="2" | Use cases<br />
| <br />
<ul><br />
<li>For panels with up to 10 devices<li><br />
<li>For space restricted setups / ICT.</li><br />
</ul><br />
|<br />
<ul><br />
<li>For panels with up to 24 devices<li><br />
<li>For maximum speed (for minimum signal line length as closely as possible at needle connectors).</li><br />
<li>For minimizing number of USB connection to the fixture module</li><br />
<li>When space in ICT is not critical</li><br />
<li>For space distributed programming stations.</li></ul><br />
|<br />
<ul><br />
<li>For panels with up to 48 devices<li><br />
<li>For maximum speed (for minimum signal line length as closely as possible at needle connectors).</li><br />
<li>When space in ICT is not critical</li><br />
<li>For space distributed programming stations</li></ul><br />
|}</div>JanBhttps://wiki.segger.com/index.php?title=Flasher/Differences_between_Flasher_ATE,_Flasher_Hub_and_Flasher_Hub-12&diff=16846Flasher/Differences between Flasher ATE, Flasher Hub and Flasher Hub-122023-10-30T07:29:57Z<p>JanB: /* Direct Comparsion */ USB cables names of Flasher Hub-12 corrected</p>
<hr />
<div>= Direct Comparsion =<br />
<br />
{| class="wikitable"<br />
|-<br />
! colspan=2 | !! Flasher ATE !! Flasher Hub !! Flasher Hub-12<br />
|-<br />
! colspan=2 | Host Interfaces<br />
| Ethernet (10/100MBit)<br/>USB2.0 (High-Speed), USB Type B<br/>RS232 9-pin<br/><br />
| Ethernet (10/100/1000MBit)<br/><br />
| Ethernet (10/100MBit)<br/>USB2.0 (High-Speed), USB Type C<br/>RS232 9-pin<br/><br />
|-<br />
! colspan=2 | Maximal direct parallel programming channels (with chaining)<br />
| 10 (n/a) <br />
| 24 (n/a) <br />
| 12 (48)<br />
|- <br />
! colspan="2" | Internal system connection<br />
| Internal proprietary bus, daisy chained<br />
| USB Type A to USB-micro, USB 2.0<br />
| USB Type A to USB-micro, USB 2.0<br />
|-<br />
! colspan=2 | System power supply<br />
| Connection terminals/USB-B<br/>5V/3A max.<br />
| USB-C<br>5V/1.5A min.<br />
| Connection terminals<br>12..30V/60W<br />
|-<br />
! colspan=2 | Target power supply (selectable)<br />
| none<br/>5V/100mA (internal system power)<br>1.5&hellip;15V/400 mA (externally supplied power)<br />
| none<br>5V/400mA max. (USB power)<br />
| none<br>5V/400mA max. (USB power)<br />
|-<br />
! colspan=2 | Form factor<br />
| <dl><dt>Main Module (naked PCB)</dt><dd>108 mm x 56 mm x 20 mm<br>delivered with acrylic mounting plate for 10 Modules</dd><br />
<dt>Programming Module (naked PCB)</dt><dd>108 mm x 35 mm x 20 mm</dd></dl><br />
| <dl><dt>Hub (housing)</dt><dd>60 mm x 32 mm x 95 mm (without mounting brackets)</dd><br />
<dt>Flasher Compact (housing)<ref name="housing">If space is limited, it is possible to remove the Flasher Compact without the housing. The bare PCB provides mounting holes.</ref></dt><dd>70 mm x 45 mm x 18 mm</dd></dl><br />
| <dl><dt>Hub (housing)</dt><dd>170 mm x 172 mm x 35 mm</dd><br />
<dt>Flasher Compact (housing)<ref name="housing"/></dt><dd>70 mm x 45 mm x 18 mm</dd></dl><br />
|-<br />
! rowspan="3" |Components needed for <br />
! minimal setup<br>1 channel <br />
| 1x Main Module <br/> 1x Programming Module <br />
| 1x Flasher Hub <br/> 1x Flasher Compact <br/> 1x USB-A to USB-micro cable <br />
| 1x Flasher Hub-12 <br/> 1x Flasher Compact <br/> 1x USB-C to USB-micro cable<br />
|-<br />
! 4 channels<br />
| 1x Main Module <br/> 4x Programming Module <br />
| 1x Flasher Hub<ref>It is not recommended to directly connect Flasher to Hub, please always use a powered USB-Hub.</ref> <br/> 4x Flasher Compact<br/> 4x USB-A to USB-micro cable<br />
| 1x Flasher Hub-12 <br/> 4x Flasher Compact <br/> 4x USB-C to USB-micro cable<br />
|-<br />
! maximal setup<br />
| 1x Main Module <br/> 10x Programming Module <br />
| 1x Flasher Hub <br/> 24x Flasher Compact <br/> 24x USB-A to USB-micro cable <br/> 4x 7-port USB-2.0-Hubs<ref> Due to a hardware limitation of the USB host controller IC, the number of enumerable device endpoints is limited to 31. Some USB hubs (especially USB-3) occupy up to 3 device endpoints. Therefore, it may be a challenge to connect all 24 flashers and the fail-save USB drive. If you have such problems, please contact SEGGER. We also offer USB hubs that avoid these problems: [https://www.segger.com/products/production/flasher/accessories/segger-usb-hub/ Segger USB Hub]</ref><br />
| 1x Flasher Hub-12 <br/> 12x Flasher Compact <br/> 12x USB-C to USB-micro cable<br />
|-<br />
! colspan="2" | Use cases<br />
| <br />
<ul><br />
<li>For panels with up to 10 devices<li><br />
<li>For space restricted setups / ICT.</li><br />
</ul><br />
|<br />
<ul><br />
<li>For panels with up to 24 devices<li><br />
<li>For maximum speed (for minimum signal line length as closely as possible at needle connectors).</li><br />
<li>For minimizing number of USB connection to the fixture module</li><br />
<li>When space in ICT is not critical</li><br />
<li>For space distributed programming stations.</li></ul><br />
|<br />
<ul><br />
<li>For panels with up to 48 devices<li><br />
<li>For maximum speed (for minimum signal line length as closely as possible at needle connectors).</li><br />
<li>When space in ICT is not critical</li><br />
<li>For space distributed programming stations</li></ul><br />
|}</div>JanBhttps://wiki.segger.com/index.php?title=UM08022_Flasher&diff=16296UM08022 Flasher2023-09-14T13:10:44Z<p>JanB: /* Working environment */</p>
<hr />
<div><!---<br />
General TBD:<br />
- LG: Right now - EVERYTHING<br />
===========================================<br />
--------------------[more specific, but on multiple locations]<br />
- check if all emphasis (bold, tt, blue, etc ) have made it into the new version<br />
- Add Information -> Additional information<br />
- use of the term free-of-charge utility/tool etc<br />
- check compliant to DocStandards_Rules.txt<br />
- Remove everything regarding to Kickstarter versions? eventually create a chapter Legacy -> Kickstarter version were available for hw version 5-x (200x-200x)...[..]<br />
- 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.<br />
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.<br />
- if week keep the IDE specific stuff in the manual, add Ozone, ES and J-Link Commander were no mentioned.<br />
- IDE specifics move into wiki confirmed by Alex<br />
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)<br />
- check all sections regarding licensing<br />
- Check compliance of J-Link emDocs with typographic conventions described in AboutThisDocument.emDoc. What should be altered? e.g. references<br />
- use uref at all (not blue)?<br />
- search and decide where to use \ref (ref with page number)<br />
- why is \ref (no single "option" \uref is more basic as \ref.....)<br />
- in text, use either \ref or \iref instead of \uref<br />
- in old manual, \H3 started on a new page (not per default, but set manually for api tables etc...)<br />
- move used old images and source files (visio etc) via svn (currently copied)<br />
--------------------[grammar / vocabulary discussion]<br />
- Product names<br />
-- Use of SEGGEPROBE in this document?<br />
- use license over licence<br />
- commandline or command-line?<br />
- toolchain or tool chain?<br />
- crossreference/cross-reference/cross reference?<br />
- overcurrent?<br />
- double words?<br />
- frontend?<br />
- Unit: Kbytes, KBytes, V, mV.... 9V or 9 V? Create rule in Vocabulary<br />
- baudrate or baud rate?<br />
- stackpointer or stack pointer<br />
- check where we should replace abbreviations with the long form (e.h. "milliseconds" instead of "ms")<br />
- config or configuration<br />
- filepointer or file pointer?<br />
--------------------[J-Link dep. specific]<br />
- J-Link command strings or J-Link Command strings or J-Link Command Strings<br />
- J-Link settings file or...<br />
- J-Link control panel or ......<br />
- J-Link script files or...<br />
---><br />
Flasher is a programming tool for microcontrollers with on-chip or external flash memory.<br />
Flasher is designed for programming flash targets with the J-Flash software or stand-alone.<br />
In addition to that Flasher can also be used as a regular J-Link. For more information about J-Link in general,<br />
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].<br />
<br />
<div class="toclimit-2"><br />
__TOC__<br />
</div><br />
<br />
== Flasher overview ==<br />
Flasher connects to a PC using the USB/Ethernet/RS232 interface (what host interfaces are available depends on the Flasher model),<br />
running Windows, Linux & MacOS. In stand-alone mode,<br />
Flasher can be driven by the start/stop button, or via the RS232 interface (handshake control or ASCII interface).<br />
Flasher always has a 20-pin connector, which target interfaces are supported depends on the Flasher model:<br />
* Flasher ARM: JTAG and SWD are supported.<br />
* Flasher RX: JTAG is supported. Flasher comes with additional 14-pin RX adapter<br />
* Flasher PPC: JTAG is supported. Flasher comes with additional 14-pin PPC adapter.<br />
* Flasher PRO: JTAG and SWD are supported.<br />
* Flasher Compact: JTAG and SWD are supported.<br />
<br />
=== Features of Flasher ARM/PPC/RX/PRO ===<br />
* Three boot modes: PC-based mode, stand-alone mode, file access mode<br />
* Stand-alone JTAG/SWD programmer (Once set up, Flasher can be controlled without the use of PC program)<br />
* No power supply required, powered through USB<br />
* Supports internal and external flash devices<br />
* 128 MB memory for storage of target program<br />
* Can be used as J-Link (emulator) with a download speed of up to 720 Kbytes/second<br />
* Data files can updated via USB/Ethernet (using the J-Flash software), via FTP, via RS232 or via the file access mode of Flasher<br />
<br />
{| class="seggertable"<br />
|-<br />
! Flasher model !! Supported cores !! Supported target interfaces !! Flash programming speed (depending on target hardware)<br />
|-<br />
| Flasher ARM || ARM7/ARM9/Cortex-M || JTAG, SWD || between 170 and 300 Kbytes/second<br />
|-<br />
| Flasher RX || Renesas RX610, RX621, RX62N, RX62T || JTAG || between 30-300 Kbytes/second<br />
|-<br />
| Flasher PPC || Power PC e200z0 || JTAG || up to 138 Kbytes/second<br />
|-<br />
| Flasher PRO || ARM7/ARM9/Cortex-M Renesas RX610, RX621, RX62N, RX62T Power PC e200z0 || JTAG, SWD || between 30-300 Kbytes/ second<br />
|-<br />
|}<br />
<br />
==== Features of Flasher Compact ====<br />
<br />
* Three boot modes: PC-based mode, stand-alone mode, file access mode<br />
* Stand-alone JTAG/SWD programmer (Once set up, Flasher can be controlled without the use of PC program)<br />
* No power supply required, powered through USB<br />
* Supports internal and external flash devices<br />
* 128 MB memory for storage of target program<br />
* Can be used as J-Link (emulator) with a download speed of up to 720 Kbytes/second<br />
* Data files can updated via USB/Ethernet (using the J-Flash software) or via the file access mode of Flasher<br />
<br />
{| class="seggertable"<br />
|-<br />
! Flasher model !! Supported cores !! Supported target interfaces !! Flash programming speed (depending on target hardware)<br />
|-<br />
| Flasher ARM || ARM7/ARM9/Cortex-M || JTAG, SWD || between 170 and 300 Kbytes/second<br />
|-<br />
| Flasher RX || Renesas RX610, RX621, RX62N, RX62T || JTAG || between 30-300 Kbytes/second<br />
|-<br />
| Flasher PPC || Power PC e200z0 || JTAG || up to 138 Kbytes/second<br />
|-<br />
| Flasher Compact || ARM7/ARM9/Cortex-M Renesas RX610, RX621, RX62N, RX62T Power PC e200z0 || JTAG, SWD || between 30-300 Kbytes/ second<br />
|-<br />
|}<br />
<br />
==== Features of Flasher Portable/Flasher Portable PLUS ====<br />
<br />
* Stand-alone in-circuit-programmer (Once set up, Flasher can be controlled without the use of a PC program)<br />
* Powered by an internal rechargeable battery (standard batteries for Flasher Portable), no Laptop or external power supply required.<br />
* Multiple firmware images can be stored on Flasher<br />
* 128 MB memory for storage of target program<br />
* Easy selection of image to be programmed, via button<br />
* Supported CPUs: ARM Cortex, Legacy ARM7/9, Renesas RX, Freescale PowerPC<br />
* Supports internal and external flash<br />
* Free software updates<ref name="legitimateOwned" />, 1 year of support<br />
* Data files can be updated via the file access mode functionality or via J-Flash<br />
* Programming speed between 30-300 Kbytes/second (actual speed depends on target hardware)<br />
{{Note|1=Ethernet and RS232 as host interface are not available for Flasher Portable}}<br />
<references><br />
<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.<br />
As a legitimate owner of a SEGGER Flasher, you can always download the latest software free of charge.<br />
Though not planned and not likely, we reserve the right to change this policy.<br />
Note that older models may not be supported by newer versions of the software.<br />
Typically, we support older models with new software at least 3 years after end of life.<br />
</ref><br />
</references><br />
<br />
{| class="seggertable"<br />
|-<br />
! Supported cores !! Supported target interfaces !! Flash programming speed (depending on target hardware)<br />
|-<br />
| ARM7/ARM9/Cortex-M || JTAG, SWD || between 30-300 Kbytes/second<br />
|-<br />
| Renesas RX610, RX621, RX62N, RX62T || JTAG || between 170 and 300 Kbytes/second<br />
|-<br />
| Power PC e200z0 || JTAG || up to 138 Kbytes/second<br />
|-<br />
|}<br />
<br />
==== Working environment ====<br />
<br />
'''General'''<br><br />
The Flasher can operate from a PC with an appropriate software like J-Flash or in stand-alone mode.<br />
<br />
'''Host System'''<br><br />
IBM PC/AT or compatible CPU: 486 (or better) with at least 128MB of RAM,<br />
running Windows, Linux & MacOS. It needs to have a USB, Ethernet or RS232 interface available for communication with Flasher.<br />
<br />
'''Power supply'''<br><br />
Flasher Portable: 3x standard AAA batteries or 5V DC, min. 100 mA via USB connector.<br />
<br />
Flasher Portable PLUS: internal rechargeable 680mAh Li-Ion battery, min. 100 mA via USB connector.<br />
<br />
Other Flashers: 5V DC, min. 100 mA via USB connector.<br />
<br />
'''Installing Flasher PC-software'''<br><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><br />
More information about the package you can find in the similar [[J-Link Software and Documentation Pack]].<br><br />
The package includes U-Flash and J-Flash, the main tools for flashing targets:<br />
* J-Flash : J-Flash User Guide ([https://wiki.segger.com/UM08003_JFlash UM08003_JFlash.pdf]).<br />
* U-Flash : U-Flash User Guide ([https://www.segger.com/downloads/flasher/UM08037.pdf UM08037_UniversalFlashLoader.pdf]).<br />
<br />
=== Specifications ===<br />
<br />
<br />
==== Specifications for Flasher ARM ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Windows, Linux & MacOS<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C<br />
|-<br />
| Storage Temperature || -20 °C ... +60 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
!colspan="100%"| Mechanical<br />
|-<br />
| Size (without cables) || 121mm x 66mm x 30mm<br />
|-<br />
| Weight (without cables) || 119g<br />
|-<br />
!colspan="100%"| Available interfaces<br />
|-<br />
| USB Host interface || USB 2.0, full speed<br />
|-<br />
| Ethernet Host interface || 10/100 MBit<br />
|-<br />
| RS232 Host interface || RS232 9-pin<br />
|-<br />
| Target interface || JTAG 20-pin (14-pin adapter available)<br />
|-<br />
!colspan="100%"| JTAG Interface, Electrical<br />
|-<br />
| Power Supply || USB powered, 100mA for Flasher ARM. 500 mA if target is powered by Flasher ARM<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| Target supply voltage || Supply voltage is 5V, max.<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6 <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Max. JTAG speed || up to 12MHz<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
===== Flasher ARM download speed =====<br />
<br />
The following table lists the Flasher ARM performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! ARM7 memory download<br />
|-<br />
| Flasher ARM || 720 Kbytes/s (12MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
<br />
==== Specifications for Flasher RX ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Windows, Linux & MacOS<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C<br />
|-<br />
| Storage Temperature || -20 °C ... +60 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
!colspan="100%"| Mechanical<br />
|-<br />
| Size (without cables) || 121mm x 66mm x 30mm<br />
|-<br />
| Weight (without cables) || 119g<br />
|-<br />
!colspan="100%"| Available interfaces<br />
|-<br />
| USB Host interface || USB 2.0, full speed<br />
|-<br />
| Ethernet Host interface || 10/100 MBit<br />
|-<br />
| RS232 Host interface || RS232 9-pin<br />
|-<br />
| Target interface || JTAG 20-pin (shipped with 14-pin adapter for Renesas RX)<br />
|-<br />
!colspan="100%"| JTAG Interface, Electrical<br />
|-<br />
| Power Supply || USB powered, 100mA for Flasher RX. 500 mA if target is powered by Flasher RX<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| 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)<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6 <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Max. JTAG speed || up to 12MHz<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
===== Flasher RX download speed =====<br />
<br />
The following table lists the Flasher RX performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! Flasher RX600 series memory download<br />
|-<br />
| Flasher RX || 720 Kbytes/s (12MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
<br />
==== Specifications for Flasher PPC ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Windows, Linux & MacOS<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C<br />
|-<br />
| Storage Temperature || -20 °C ... +60 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
!colspan="100%"| Mechanical<br />
|-<br />
| Size (without cables) || 121mm x 66mm x 30mm<br />
|-<br />
| Weight (without cables) || 119g<br />
|-<br />
!colspan="100%"| Available interfaces<br />
|-<br />
| USB Host interface || USB 2.0, full speed<br />
|-<br />
| Ethernet Host interface || 10/100 MBit<br />
|-<br />
| RS232 Host interface || RS232 9-pin<br />
|-<br />
| Target interface || JTAG 20-pin (shipped with 14-pin adapter for Renesas PPC)<br />
|-<br />
!colspan="100%"| JTAG Interface, Electrical<br />
|-<br />
| Power Supply || USB powered, 100mA for Flasher PPC. 500 mA if target is powered by Flasher PPC<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| Target supply voltage || Supply voltage is 5V, max.<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6 <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Max. JTAG speed || up to 12MHz<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
===== Flasher RX download speed =====<br />
<br />
The following table lists the Flasher PPC performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! Memory download<br />
|-<br />
| Flasher PPC || 530 Kbytes/s (8 MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
<br />
==== Specifications for Flasher PRO ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Windows, Linux & MacOS<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C<br />
|-<br />
| Storage Temperature || -20 °C ... +60 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
!colspan="100%"| Mechanical<br />
|-<br />
| Size (without cables) || 121mm x 66mm x 30mm<br />
|-<br />
| Weight (without cables) || 119g<br />
|-<br />
!colspan="100%"| Available interfaces<br />
|-<br />
| USB Host interface || USB 2.0, full speed<br />
|-<br />
| Ethernet Host interface || 10/100 MBit<br />
|-<br />
| RS232 Host interface || RS232 9-pin<br />
|-<br />
| Target interface || JTAG 20-pin (14-pin adapter available)<br />
|-<br />
!colspan="100%"| JTAG Interface, Electrical<br />
|-<br />
| Power Supply || USB powered, 100mA for Flasher PRO. 500 mA if target is powered by Flasher PRO<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| Target supply voltage || Supply voltage is 5V, max.<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6 <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Max. JTAG speed || up to 12MHz<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
<br />
===== Supported CPU cores =====<br />
<br />
The Flasher PRO supports the following CPU cores:<br />
<br />
'''ARM Cortex'''<br><br />
* Cortex-A5<br />
* Cortex-A8<br />
* Cortex-A9<br />
* Cortex-R4<br />
* Cortex-R5<br />
* Cortex-M0<br />
* Cortex-M0+<br />
* Cortex-M1<br />
* Cortex-M3<br />
* Cortex-M4<br />
<br />
'''ARM (legacy cores)'''<br><br />
* ARM720T<br />
* ARM7TDMI<br />
* ARM7TDMI-S<br />
* ARM920T<br />
* ARM922T<br />
* ARM926EJ-S<br />
* ARM946E-S<br />
* ARM966E-S<br />
* ARM1136JF-S<br />
* ARM1136J-S<br />
* ARM1156T2-S<br />
* ARM1156T2F-S<br />
* ARM1176JZ-S<br />
* ARM1176JZF<br />
* ARM1176JZF-S<br />
<br />
'''Renesas RX'''<br><br />
* RX111<br />
* RX210<br />
* RX220<br />
* RX21A<br />
* RX610<br />
* RX621<br />
* RX62G<br />
* RX62N<br />
* RX62T<br />
* RX630<br />
* RX631<br />
* RX63N<br />
* RX63T<br />
<br />
'''Freescale Power PC'''<br><br />
* e200z0<br />
<br />
===== Supported Target interfaces =====<br />
<br />
The Flasher PRO supports the following target interfaces:<br />
<br />
* JTAG<br />
* SWD<br />
* FINE<br />
* SPD<br />
<br />
===== Flasher PRO download speed =====<br />
<br />
The following table lists the Flasher PRO performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! ARM7 memory download<br />
|-<br />
| Flasher PRO || 720 Kbytes/s (12MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
<br />
==== Specifications for Flasher Compact ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Microsoft Windows (x86/x64)<br>Linux (x86/x64/Arm)<br>macOS (x86/Apple M1)<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C<br />
|-<br />
| Storage Temperature || -20 °C ... +65 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
| Size (without cables) || 70mm x 45mm x 18mm<br />
|-<br />
| Weight (without cables) || 40g<br />
|-<br />
| USB Host interface || USB 2.0 (Hi-Speed); Micro USB<br />
|-<br />
| Target interface || JTAG 20-pin (14-pin adapter available)<br />
|-<br />
| Power Supply || USB powered, 130mA (idle)<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| Target supply voltage || Supply voltage is 5V, max.<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
| Supported target interfaces || SPI, QSPI, 8051 C2, cJTAG, FINE, ICSP, IIC, ISP, JTAG, PDI, SPD, SWD, SWIM, UART, UPDI<br />
|-<br />
| Serial transfer rate between Flasher Compact and target || Up to 50 MHz (Depending on target interface)<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6 <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
===== Supported CPU cores =====<br />
<br />
The Flasher Compact supports the following CPU cores:<br />
'''ARM Cortex'''<br><br />
* Cortex-A5<br />
* Cortex-A8<br />
* Cortex-A9<br />
* Cortex-R4<br />
* Cortex-R5<br />
* Cortex-M0<br />
* Cortex-M0+<br />
* Cortex-M1<br />
* Cortex-M3<br />
* Cortex-M4<br />
<br />
'''ARM (legacy cores)'''<br><br />
* ARM720T<br />
* ARM7TDMI<br />
* ARM7TDMI-S<br />
* ARM920T<br />
* ARM922T<br />
* ARM926EJ-S<br />
* ARM946E-S<br />
* ARM966E-S<br />
* ARM1136JF-S<br />
* ARM1136J-S<br />
* ARM1156T2-S<br />
* ARM1156T2F-S<br />
* ARM1176JZ-S<br />
* ARM1176JZF<br />
* ARM1176JZF-S<br />
<br />
'''Renesas RX'''<br><br />
* RX111<br />
* RX210<br />
* RX220<br />
* RX21A<br />
* RX610<br />
* RX621<br />
* RX62G<br />
* RX62N<br />
* RX62T<br />
* RX630<br />
* RX631<br />
* RX63N<br />
* RX63T<br />
<br />
'''Freescale Power PC'''<br><br />
* e200z0<br />
<br />
===== Flasher Compact download speed =====<br />
<br />
The following table lists the Flasher Compact performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! ARM7 memory download<br />
|-<br />
| Flasher Compact || 720 Kbytes/s (12MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
<br />
==== Specifications for Flasher Portable PLUS ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Windows, Linux & MacOS<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C (normal operation)<br>+5 °C ... +45 °C (battery charging)<br />
|-<br />
| Storage Temperature || -20 °C ... +45 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
| 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)<br />
|-<br />
| Charging via USB || 70 minutes (at 1A charging current)<br />
|-<br />
!colspan="100%"| Mechanical<br />
|-<br />
| Size (without cables) || 126mm x 70mm x 28mm<br />
|-<br />
| Weight (without cables) || 140g<br />
|-<br />
!colspan="100%"| Available interfaces<br />
|-<br />
| USB Host interface || USB 2.0<br />
|-<br />
| Target interface || Standard 20-pin 0.1" connector (Adapters available).<br />
|-<br />
!colspan="100%"| Target Interface, Electrical<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| Target supply voltage || Supply voltage is 4.5V, max. (depends on the current battery voltage).<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6 <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Max. JTAG speed || up to 12MHz<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
===== Supported CPU cores =====<br />
<br />
The Flasher Portable PLUS supports the following CPU cores:<br />
<br />
'''ARM Cortex'''<br><br />
* Cortex-A5<br />
* Cortex-A8<br />
* Cortex-A9<br />
* Cortex-R4<br />
* Cortex-R5<br />
* Cortex-M0<br />
* Cortex-M0+<br />
* Cortex-M1<br />
* Cortex-M3<br />
* Cortex-M4<br />
<br />
'''ARM (legacy cores)'''<br><br />
* ARM720T<br />
* ARM7TDMI<br />
* ARM7TDMI-S<br />
* ARM920T<br />
* ARM922T<br />
* ARM926EJ-S<br />
* ARM946E-S<br />
* ARM966E-S<br />
* ARM1136JF-S<br />
* ARM1136J-S<br />
* ARM1156T2-S<br />
* ARM1156T2F-S<br />
* ARM1176JZ-S<br />
* ARM1176JZF<br />
* ARM1176JZF-S<br />
<br />
'''Renesas RX'''<br><br />
* RX111<br />
* RX210<br />
* RX220<br />
* RX21A<br />
* RX610<br />
* RX621<br />
* RX62G<br />
* RX62N<br />
* RX62T<br />
* RX630<br />
* RX631<br />
* RX63N<br />
* RX63T<br />
<br />
'''Freescale Power PC'''<br><br />
* e200z0<br />
<br />
===== Supported Target interfaces =====<br />
<br />
The Flasher Portable PLUS supports the following target interfaces:<br />
* JTAG<br />
* SWD<br />
* FINE<br />
* SPD<br />
<br />
===== Flasher Portable PLUS download speed =====<br />
<br />
The following table lists the Flasher Portable PLUS performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! ARM7 memory download<br />
|-<br />
| Flasher PRO || 720 Kbytes/s (12MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
<br />
==== Specifications for Flasher Portable ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Windows, Linux & MacOS<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C<br />
|-<br />
| Storage Temperature || -20 °C ... +65 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
| Power Supply || a) USB powered, 100mA for Flasher Portable. 500 mA if target is powered by Flasher Portable<br>b) Batteries powered (3xAAA)<br />
|-<br />
!colspan="100%"| Mechanical<br />
|-<br />
| Size (without cables) || 130mm x 65mm x 25mm<br />
|-<br />
| Weight (without cables) || 120g<br />
|-<br />
!colspan="100%"| Available interfaces<br />
|-<br />
| USB Host interface || USB 2.0<br />
|-<br />
| Target interface || Standard 20-pin 0.1" connector (Adapters available).<br />
|-<br />
!colspan="100%"| Target Interface, Electrical<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| Target supply voltage || Supply voltage is 4.5V, max. (depends on the current battery voltage).<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6V <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Max. JTAG speed || up to 12MHz<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
===== Supported CPU cores =====<br />
<br />
The Flasher Portable supports the following CPU cores:<br />
<br />
'''ARM Cortex'''<br><br />
* Cortex-A5<br />
* Cortex-A8<br />
* Cortex-A9<br />
* Cortex-R4<br />
* Cortex-R5<br />
* Cortex-M0<br />
* Cortex-M0+<br />
* Cortex-M1<br />
* Cortex-M3<br />
* Cortex-M4<br />
<br />
'''ARM (legacy cores)'''<br><br />
* ARM720T<br />
* ARM7TDMI<br />
* ARM7TDMI-S<br />
* ARM920T<br />
* ARM922T<br />
* ARM926EJ-S<br />
* ARM946E-S<br />
* ARM966E-S<br />
* ARM1136JF-S<br />
* ARM1136J-S<br />
* ARM1156T2-S<br />
* ARM1156T2F-S<br />
* ARM1176JZ-S<br />
* ARM1176JZF<br />
* ARM1176JZF-S<br />
<br />
'''Renesas RX'''<br><br />
* RX111<br />
* RX210<br />
* RX220<br />
* RX21A<br />
* RX610<br />
* RX621<br />
* RX62G<br />
* RX62N<br />
* RX62T<br />
* RX630<br />
* RX631<br />
* RX63N<br />
* RX63T<br />
<br />
'''Freescale Power PC'''<br><br />
* e200z0<br />
<br />
===== Supported Target interfaces =====<br />
<br />
The Flasher Portable supports the following target interfaces:<br />
<br />
* JTAG<br />
* SWD<br />
* FINE<br />
* SPD<br />
<br />
===== Flasher Portable download speed =====<br />
<br />
The following table lists the Flasher Portable performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! ARM7 memory download<br />
|-<br />
| Flasher PRO || 720 Kbytes/s (12MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
== Working with Flasher ==<br />
<br />
This chapter describes functionality and how to use Flasher.<br />
<br />
=== Flasher Portable PLUS ===<br />
<br />
The Flasher Portable PLUS is a portable version of SEGGERs Flasher family,<br />
which has been designed to fill the need of an extremely portable, production grade,<br />
Flash programmer used for in-field firmware updates. No need to be tethered to an outlet,<br />
it is powered by an integrated Li-Ion cell (680mAh).<br />
The Flasher Portable PLUS programs flash targets in stand-alone mode or via J-Flash PC software.<br><br />
<br />
Furthermore the Flasher Portable PLUS allows the user to select between eight data images to be programmed.<br />
The images can be easily selected by using the SEL button on the front of the housing.<br />
For more information about support for multiple images, please refer to [[#Multiple File Support | Multiple File Support]].<br><br />
For setup and configuration purposes, the Flasher Portable PLUS connects to a PC via USB interface,<br />
running Windows, Linux & MacOS and has a built-in standard 20-pin J-Link target connector.<br><br />
<br />
{{Note|1=Ethernet and RS232 as host interface are not available for the Flasher Portable PLUS.}}<br />
<br />
==== Housing & Buttons ====<br />
<br />
The Flasher Portable PLUS comes with a display, which is for example used to represent the status of an ongoing flash progress.<br />
Furthermore, there are three buttons which allow the user to control Flasher Portable PLUS.<br />
For a detailed description of the functions, take a look at the table below:<br />
<br />
<!-- LG xxxxxx edit image with labels for buttons? (Is this actually necessary? Buttons are basically self-explanatory...) --><br />
[[File:Flasher_Portable_PLUS.png | 500px]]<br />
<br />
{| class="seggertable"<br />
|-<br />
! Button !! Description<br />
|-<br />
| Program || Start programming process with the currently selected image.<br />
|-<br />
| Select image || Select the image to be programmed next time the Program button is pressed.<br />
|-<br />
| 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.<br />
|-<br />
|}<br />
<br />
==== Configuration ====<br />
<br />
The Flasher Portable PLUS has some configuration options the other Flashers do not have.<br />
{| class="seggertable"<br />
|-<br />
! Option !! Description !! Value range !! Default value<br />
|-<br />
| AutoPowerOffOnIdle || Specifies the time interval after which the Flasher Portable will turn off without any user action || 1 to 3600 || 60<br />
|-<br />
| ShowDatCRCAfterProgramming || Activates displaying the data file CRC after the programming in the pop up message || 0 = inactive, 1 = active || 0<br />
|-<br />
|}<br />
<br />
If the <tt>Flasher.ini</tt> does not contain a <tt>[Config]</tt> section with the configuration option, the default value is used.<br />
<br />
'''Example:'''<br><br />
This sample will show the data file CRC after the programming and the auto power of is set to five minutes (=300 seconds).<br />
<br />
<source lang="c"><br />
[CONFIG]<br />
AutoPowerOffOnIdle = "300"<br />
ShowDatCRCAfterProgramming = "1"<br />
</source><br />
<br />
=== Flasher Portable ===<br />
<br />
The Flasher Portable is a portable version of SEGGERs Flasher family, which has been designed to fill the need of an extremely portable,<br />
production grade, Flash programmer used for in-field firmware updates. No need to be tethered to an outlet,<br />
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><br />
<br />
Furthermore the Flasher Portable allows the user to select between four data images to be programmed.<br />
The images can be easily selected by using the arrow buttons on the front of the housing.<br />
For more information about support for multiple images, please refer to [[#Multiple File Support | Multiple File Support]].<br><br />
For setup and configuration purposes, the Flasher Portable connects to a PC via USB interface,<br />
running Windows, Linux & MacOS and has a built-in standard 20-pin J-Link target connector.<br><br />
<br />
{{Note|1=Ethernet and RS232 as host interface are not available for the Flasher Portable.}}<br />
<br />
==== Housing & Buttons ====<br />
<br />
The Flasher Portable comes with several leds which are for example used to represent the status of an ongoing flash progress.<br />
Furthermore, there are three buttons which allow the user to control Flasher Portable.<br />
For a detailed description of the functions, take a look at the two tables below:<br />
<br />
<!-- LG xxxxxx edit image with labels for buttons?--><br />
[[File:Flasher_Portable_Top_2.png | 500px]]<br />
<br />
{| class="seggertable"<br />
|-<br />
! LED !! Description<br />
|-<br />
| ACTIVE || GREEN. Blinks while the Flasher Portable is busy / performs operations on the target.<br />
|-<br />
| PASS/FAIL || GREEN/RED. Indicates, if the last flashing cycle was successful.<br />
<ul><br />
<li> GREEN: Flashing cycle completed successfully.</li><br />
<li> RED: Flashing cycle completed with error.</li><br />
</ul><br />
|-<br />
| 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]].<br />
|-<br />
| POWER || GREEN: Indicates if Flasher is currently powered. Blinks while Flasher Portable tries to enumerate via USB.<br />
|-<br />
| 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.<br />
|-<br />
|}<br />
<br />
{| class="seggertable"<br />
|-<br />
! Button !! Description<br />
|-<br />
| Program || Start programming process with the currently selected image.<br />
|-<br />
| Select image || Select the image to be programmed next time the <tt>Program</tt> button is pressed.<br />
|-<br />
| 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<br />
|-<br />
|}<br />
<br />
=== File system ===<br />
<br />
The Flasher supports 8.3 filenames only (8 characters filename, 3 characters file extension).<br />
Using longer filenames may result in incorrect operation. Integrated functions,<br />
like the FTP server or the terminal server, will refuse writing files with long filenames.<br />
<br />
=== Setting up the IP interface ===<br />
<br />
Setting up the IP interface<br />
Some of the Flasher models come with an additional Ethernet interface to communicate with the host system.<br />
These Flashers also come with a built-in webserver which allows some basic setup of the emulator,<br />
e.g. configuring a default gateway which allows using it even in large intranets. For more information,<br />
please refer to [[#TCP Services | TCP Services]].<br />
<br />
==== Connecting the first time ====<br />
<br />
When connecting Flasher the first time, it attempts to acquire an IP address via DHCP.<br />
The recommended way for finding out which IP address has been assigned to Flasher is, to use the J-Link Configurator.<br />
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.<br />
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''.<br />
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,<br />
please refer to ''UM08001, J-Link / J-Trace User Guide'', chapter ''Setup'', section ''Setting up the IP interface''.<br />
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]].<br />
<br />
=== Operating modes ===<br />
<br />
All Flashers except the Flasher ATE are able to boot in 3 different modes:<br />
<br />
* PC-based mode<br />
* Stand-alone mode<br />
* File access mode<br />
<br />
{{Note|1=The Flasher ATE only supports the stand-alone mode.}}<br />
<br />
'''Definition PC-based mode'''<br><br />
Flasher is connected to a PC via USB/Ethernet and controlled by a PC application (J-Flash).<br />
If there is an RS232 connection to a PC, does not have any influence on if PC-based mode is entered or not.<br />
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, ...)<br />
<br />
'''Definition Stand-alone mode'''<br><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.<br />
<br />
'''Definition file access mode'''<br><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.<br />
In this mode, Flasher enumerates as a mass storage device (like an USB Stick) at the host PC.<br />
In this mode, configuration + data files can be manually placed on the Flasher and the Flasher logfile can be read out.<br />
If you are using a self-powered Flasher such as the Flasher Portable Plus, the Flasher must be turned off before connecting it.<br />
<br />
==== PC-based mode ====<br />
If you want to use Flasher for the first time you need to install the J-Link software and documentation package.<br />
After installation, connect Flasher to the host PC via USB or Ethernet.<br />
For more information about how to install the J-Link software and documentation package please refer to [[J-Link Software and Documentation Pack]].<br />
<br />
===== Connecting the target system =====<br />
<br />
'''Power-on sequence'''<br><br />
In general, Flasher should be powered on before connecting it with the target device.<br />
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.<br />
Power-on the device after you connected Flasher to it. Flasher will boot in "PC-based mode".<br />
<br />
'''Verifying target device connection with J-Link.exe'''<br><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.<br />
Then start the J-Link command line tool <tt>JLink.exe</tt>,<br />
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.<br />
The screenshot below shows the output of <tt>JLink.exe</tt>.<br />
<br />
[[File:flasher_jlinkmode.gif]]<br />
<br />
===== LED status indicators =====<br />
<br />
In PC-based mode, there are also certain LED status codes defined:<br />
<br />
{| class="seggertable"<br />
|-<br />
! # !! Status of LED !! Meaning<br />
|-<br />
| 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.<br />
|-<br />
| 0 || GREEN<br>constant || Flasher enumeration process is complete and it is ready to be controlled by a PC application.<br />
|-<br />
|}<br />
<br />
==== Stand-alone mode ====<br />
<br />
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]].<br />
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).<br />
In the "stand-alone mode" Flasher can be used as a stand-alone flash programmer.<br><br />
<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]].}}<br />
<br />
===== LED status indicators =====<br />
Progress and result of an operation is indicated by Flasher's LEDs. The behavior is different for J-Link and stand-alone mode.<br />
For a definition of the different modes, please refer to [[#Operating modes | Operating modes]].<br />
The following table describes the behavior of the LEDs in stand-alone mode.<br />
<br />
{| class="seggertable"<br />
|-<br />
! # !! Status of LED !! Meaning<br />
|-<br />
| 0 || GREEN<br>constant || Flasher waits for a start trigger to perform an operation in stand-alone mode.<br />
|-<br />
| 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><br />
|-<br />
| 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.<br />
|-<br />
|}<br />
Older Flasher models have a different behavior.<br />
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:<br />
<br />
* 1621xxxxx (Flasher ARM V2)<br />
* 1630xxxxx (Flasher ARM V3)<br />
* 4210xxxxx (Flasher PPC V1)<br />
* 4110xxxxx (Flasher RX V1)<br />
<br />
{| class="seggertable"<br />
|-<br />
! # !! Status of LED !! Meaning<br />
|-<br />
| 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.<br />
|-<br />
| 1 || GREEN<br>constant || Connect to target and perform init sequence.<br />
|-<br />
| 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><br />
|-<br />
| 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.<br />
|-<br />
|}<br />
<br />
==== File access mode ====<br />
<br />
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".<br />
If you are using a self-powered Flasher such as the Flasher Portable Plus, the Flasher must be turned off before connecting it.<br />
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.<br />
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>.<br />
<br />
[[File:flasher_mode_msd.gif]]<br />
<br />
<tt>FLASHER.CFG</tt> contains the configuration settings for programming the target device and <tt>FLASHER.DAT</tt> contains the data to be programmed.<br />
<tt>FLASHER.LOG</tt> contains all logging information about the commands, performed in stand-alone mode.<br />
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><br />
<br />
Currently, J-Flash does not support to configure Flasher for automated serial number programming.<br><br />
<br />
If you want to configure multiple Flasher for the same target you do not have to use J-Flash all the time.<br />
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".<br />
<br />
=== Setting up Flasher for stand-alone mode ===<br />
<br />
In order to set up Flasher for the stand-alone mode it needs to be configured once using the J-Flash software.<br />
For more information about J-Flash, please refer to the ''J-Flash User Guide''.<br><br />
<br />
After starting J-Flash, open the appropriate J-Flash project for the target Flasher shall be configured for, by selecting '''File''' -> '''Open Project'''.<br />
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><br />
<br />
After the appropriate project has been opened / created, the data file which shall be programmed needs to be loaded, by selecting '''File''' -> '''Open'''.<br />
After this J-Flash should look like in the screenshot below.<br />
<br />
[[File:jflash_projectfile_datafile.gif]]<br />
<br />
Before downloading the configuration (project) and program data (data file) to Flasher, the connection type (USB/IP) needs to be selected in the project.<br />
These settings are also saved on a per-project basis, so this also only needs to be setup once per J-Flash project.<br />
The connection dialog is opened by clicking '''Options''' -> '''Project settings''' -> '''General'''.<br />
<br />
[[File:jflash_connection_dialog.gif]]<br />
<br />
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.<br />
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.<br />
The user then can simply select the Flash he wants to download the configuration to.<br />
<br />
[[File:EmuSelectionDialog.gif]]<br />
<br />
In order to download the configuration and program data to the Flasher, simply select '''File''' -> '''Download config & data file to Flasher'''.<br />
<br />
[[File:jflash_download_to_emul.gif]]<br />
<br />
The J-Flash log window indicates that the download to the emulator was successful.<br />
<br />
[[File:jflash_download_to_emu_succ.gif]]<br />
<br />
From now on, Flasher can be used in stand-alone mode (without host PC interaction) for stand-alone programming.<br />
<br />
==== Preparing for stand-alone operation manually ====<br />
<br />
As an alternative, J-Flash can also be used to save config and data file to a hard drive.<br><br />
<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,<br />
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.<br />
<br />
'''Creating config and data files'''<br><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><br />
<br />
For some devices, additional files (*.PEX) are needed.<br />
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.<br />
<br />
'''About *.PEX files'''<br><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,<br />
the following needs to be taken care of:<br><br />
<br />
For some devices, special connect, reset etc. sequences are necessary which are stored in so-called *.PEX files on the Flasher.<br><br />
<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><br />
<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><br />
The *.PEX files need to be placed in a subdirectory with the same name as the corresponding *.cfg file.<br />
J-Flash creates a directory with the correct name automatically when a config file is created.<br><br />
<br />
Example:<br><br />
<br />
MyConf0 is a project for a device that requires a *.PEX file for connect.<br><br />
MyConf1 is a project for a device that requires no *.PEX file at all.<br />
<br />
[[File:PEX_File_Flasher.png]]<br />
<br />
=== Universal Flash Loader mode ===<br />
<br />
As an alternative to the stand-alone mode, configured via J-Flash, there is the Universal Flash Loader mode.<br />
While the normal stand-alone mode relies on using the debug interface of the device, the Universal Flash Loader<br />
mode uses device or vendor specific programming interfaces and protocols and therefore it is independent of the<br />
CPU core.<br><br />
<br />
The Universal Flash Loader is available for the following Flasher models:<br />
* Flasher PRO<br />
* Flasher Compact<br />
* Flasher Portable PLUS<br />
<br />
For some of the supported devices, SEGGER offers specific adapters.<br />
<br />
==== Preparing manually ====<br />
<br />
The Universal Flash Loader uses an configuration file (*.UNI), a device specific flash programming algorithm (*.PEX) and a data file (*.DAT).<br />
<br />
===== Configuration =====<br />
<br />
The configuration file basically is split into three parts.<br />
The first part, the section [DEVICE], controls the generic behavior of the Universal Flash Loader.<br />
It specifies which protocol driver and data file to use. It allows enabling and configuring target power<br />
and it defines which actions to perform.<br />
The second part consists of one or more [BANKx] sections, which contain information about the memories.<br />
The third part, the section [CONFIG], includes configuration settings for the protocol driver.<br><br />
<br />
An .UNI file might look as follows:<br><br />
<br />
<source lang="c"><br />
[OPTIONS]<br />
TargetPower = "0"<br />
ChipErase = "0"<br />
<br />
[TASKS]<br />
CheckBlank = "1"<br />
Erase = "1"<br />
Program = "1"<br />
Verify = "1"<br />
Secure = "1"<br />
<br />
[DEVICE]<br />
Algo = "RL78.PEX"<br />
Data = "ALL_6k.dat"<br />
<br />
[BANK0]<br />
; Code Flash<br />
Base = "0x00000000"<br />
Size = "0x00004000"<br />
Sect = "0x00000400"<br />
<br />
[BANK1]<br />
; Data Flash<br />
Base = "0x000F1000"<br />
Size = "0x00000800"<br />
Sect = "0x00000400"<br />
<br />
[CONFIG]<br />
BaudRate = "1000000"<br />
ClearConfigOnConnect = "0x00"<br />
Security = "0xFF"<br />
ShieldStart = "0x0000"<br />
ShieldEnd = "0x000F"<br />
</source><br />
<br />
'''[OPTIONS]'''<br><br />
'''TargetPower'''<br><br />
If set to a value >0, power is applied to the target.<br />
The value defines the delay (in ms) after enabling the target power supply and before starting to communicate with the target.<br />
<br />
'''ChipErase'''<br><br />
If set to 1, the chip erase function is called for erasing the chip.<br><br />
{{Note|1=Do not enable this setting if the flash programming algorithm does not support chip erase.}}<br />
<br />
'''[TASKS]'''<br><br />
'''CheckBlank'''<br><br />
Defines if a blank check should be performed before erasing a sector.<br />
<br />
'''Erase'''<br><br />
Defines if the sector should be erased before programming.<br />
<br />
'''Program'''<br><br />
Defines if the sector should be programmed.<br />
<br />
'''Verify'''<br><br />
Defines if the sector should be verified after programming.<br />
<br />
'''Secure'''<br><br />
Defines if the device should be secured or protected against read-out after verifying.<br />
<br />
'''[DEVICE]'''<br><br />
'''Algo'''<br><br />
File name of the flash programming algorithm. This file is provided by SEGGER and will typically support a series of devices.<br />
<br />
'''Data'''<br><br />
File name of the data file to program. The Flasher only supports the Flasher .dat file format.<br />
Flasher .dat files can be generated by J-Flash or Universal Flash Loader and offer high performance together with high flexibility.<br />
<br />
'''[BANKx]'''<br><br />
x blocks with configuration data for the flash banks. All three parameters (Base, Size and Sect) are mandatory.<br />
<br />
'''Base'''<br><br />
Base address of the flash bank.<br />
<br />
'''Size'''<br><br />
Total size of the flash bank.<br />
<br />
'''Sect'''<br><br />
Sector size of the flash bank.<br />
<br />
'''[CONFIG]'''<br><br />
This section includes specific configuration data for the flash programming algorithm.<br><br />
There are no general parameters.<br />
<br />
{{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. }}<br />
<br />
==== Preparing using the PC utility ====<br />
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.<br />
<br />
[[File:Universal Flash Loader.png]]<br />
<br />
The Universal Flash Loader Configurator comes with a large list of devices and flash programming algorithms. If you are going to<br />
use a device from one of the supported families which currently is not available in the utility, feel free to contact the support.<br />
<br />
=== Multiple File Support ===<br />
<br />
It is also possible to have multiple data files and config files on Flasher, to make Flasher more easy to use in production environment.<br />
To choose the correct configuration file and data file pair, a <tt>FLASHER.INI</tt> file is used.<br />
This init file contains a <tt>[FILES]</tt> section which describes which configuration file and which data file should be used for programming.<br />
A sample content of a FLASHER.INI file is shown below:<br><br />
<br />
<source><br />
[FILES]<br />
DataFile = "Flasher1.dat"<br />
ConfigFile = "Flasher1.cfg"<br />
</source><br />
<br />
Using this method all configuration files and data files which are used in the production only have to be downloaded once.<br />
From there on a configuration file / data file pair can be switched by simply replacing the <tt>FLASHER.INI</tt> by a new one,<br />
which contains the new descriptions for the configuration file and data file. The <tt>FLASHER.INI</tt> can be replaced in two ways:<br />
<ol><br />
<li>Boot Flasher in file access mode in order to replace the <tt>FLASHER.INI</tt></li><br />
<li><br />
If Flasher is already integrated into the production line, runs in stand-alone mode and can not be booted in other mode:<br />
Use the file I/O commands provided by the ASCII interface of Flasher, to replace the <tt>FLASHER.INI</tt>.<br />
For more information about the file I/O commands, please refer to [[#File I/O commands | File I/O commands]].<br />
</li><br />
</ol><br />
{{Note|1=Flasher supports 8.3 filenames only (8 characters filename, 3 characters file extension). Using longer filenames may result in incorrect operation.}}<br />
<br />
==== Flasher Portable specifics ====<br />
<br />
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><br />
<br />
Which config / data file pair is used for which image selection position is determined by the contents of the FLASHER.INI.<br />
For this, the FLASHER.INI contents in the <tt>[FILES]</tt> section have been extended.<br />
The sample below shows how to enable the user to select between four different images on the Flasher portable via the select / arrow button:<br />
<br />
<source><br />
[FILES]<br />
DataFile = "First.dat"<br />
ConfigFile = "First.cfg"<br />
DataFile1 = "Second.dat"<br />
ConfigFile1 = "Second.cfg"<br />
DataFile2 = "Third.dat"<br />
ConfigFile2 = "Third.cfg"<br />
DataFile3 = "Fourth.dat"<br />
ConfigFile3 = "Fourth.cfg"<br />
</source><br />
<br />
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.<br />
From there on, switching between the files can be done by simply using the selection button of Flasher Portable.<br />
<br />
===== Example =====<br />
<br />
1 Target, 2 Datafiles (e.g. boot loader und application) --> same configuration file (*.CFG) but different data files (*.DAT) should be used.<br><br />
<br />
* Open pre-configured J-Flash project<br />
* File -> Save Flasher config file ... (DEFAULT.CFG)<br />
* Open data file 1 (boot loader)<br />
* File -> Save Flasher data file ... (BOOT.DAT)<br />
* Open data file 2 (application)<br />
* File -> Save Flasher data file ... (APP.DAT)<br />
* Create the a FLASHER.INI file (content see below)<br />
* Connect the Flasher in file access mode to the PC<br />
* Copy DEFAULT.CFG, BOOT.DAT, APP.DAT and FLASHER.INI on the Flasher<br />
<br />
FLASHER.INI content:<br><br />
<br />
<source><br />
[FILES]<br />
DataFile = "BOOT.DAT"<br />
ConfigFile = "DEFAULT.CFG"<br />
DataFile1 = "APP.DAT"<br />
ConfigFile1 = "DEFAULT.CFG"<br />
</source><br />
<br />
==== Flasher Portable PLUS specifics ====<br />
<br />
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><br />
<br />
Which config / data file pair is used for which image selection position is determined by the contents of the FLASHER.INI.<br />
For this, the FLASHER.INI may contain several <tt>[BATCH]</tt> sections.<br />
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:<br />
<br />
<source><br />
[BATCH]<br />
DataFile = "First.dat"<br />
ConfigFile = "First.cfg"<br />
[BATCH1]<br />
DataFile = "Second.dat"<br />
ConfigFile = "Second.cfg"<br />
[BATCH2]<br />
DataFile = "Third.dat"<br />
ConfigFile = "Third.cfg"<br />
[BATCH7]<br />
DataFile = "Proj_8.dat"<br />
ConfigFile = "Proj_8.cfg"<br />
[BATCH15]<br />
DataFile = "Proj_16.dat"<br />
ConfigFile = "Proj_16.cfg"<br />
</source><br />
<br />
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.<br />
From there on, switching between the files can be done by simply using the selection button of Flasher Portable PLUS.<br />
<br />
Please also consider the chapter [[#Batch Programming in stand-alone mode | Batch Programming in stand-alone mode]].<br />
<br />
{{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.}}<br />
{{Note|1=You may have gaps in the list. The missing entries will be skipped when selecting the next configuration.}}<br />
{{Note|1=The <tt>[Files]</tt> section is supported by the Flasher Portable PLUS, too. But the number of configuration is limited to four.}}<br />
<br />
===== Example =====<br />
<br />
1 Target, 2 Datafiles (e.g. boot loader und application) --> same configuration file (*.CFG) but different data files (*.DAT) should be used.<br><br />
<br />
* Open pre-configured J-Flash project<br />
* File -> Save Flasher config file ... (DEFAULT.CFG)<br />
* Open data file 1 (boot loader)<br />
* File -> Save Flasher data file ... (BOOT.DAT)<br />
* Open data file 2 (application)<br />
* File -> Save Flasher data file ... (APP.DAT)<br />
* Create the a FLASHER.INI file (content see below)<br />
* Connect the Flasher in file access mode to the PC<br />
* Copy DEFAULT.CFG, BOOT.DAT, APP.DAT and FLASHER.INI on the Flasher<br />
<br />
FLASHER.INI content:<br><br />
<br />
<source><br />
[BATCH]<br />
DataFile = "BOOT.DAT"<br />
ConfigFile = "DEFAULT.CFG"<br />
DisplayName = "Bootloader"<br />
[BATCH1]<br />
DataFile = "APP.DAT"<br />
ConfigFile = "DEFAULT.CFG"<br />
DisplayName = "Application"<br />
[BATCH2]<br />
DataFile = "BOOT.DAT"<br />
ConfigFile = "DEFAULT.CFG"<br />
DataFile1 = "APP.DAT"<br />
ConfigFile1 = "DEFAULT.CFG"<br />
DisplayName = "BL and App"<br />
</source><br />
<br />
=== Custom labels ===<br />
<br />
Flasher supports to assign custom labels to configurations. This allows to specify easy to remember names for configurations that are stored on the Flasher.<br />
<br />
==== Hardware and software requirements ====<br />
This feature is supported by the following models:<br />
* Flasher Portable PLUS<br />
<br />
This feature is supported since V6.30e of the software package and firmware<br />
<br />
==== Assigning labels ====<br />
The configuration and data file pairs are specified in the <tt>FLASHER.INI</tt> file:<br />
<source><br />
[FILES]<br />
DataFile = "IMAGE0.dat"<br />
ConfigFile = "IMAGE0.cfg"<br />
DataFile1 = "IMAGE1.dat"<br />
ConfigFile1 = "IMAGE1.cfg"<br />
</source><br />
<br />
By default, Flasher will show the names of the configuration and data file:<br />
[[File:FW1_smartwatch_nolabel.png]]<br />
[[File:FW2_smart_meter_nolabel.png]]<br />
<br />
By adding <tt>DisplayName</tt>, <tt>DisplayName1</tt>, ... keys to the <tt>FLASHER.INI</tt>, a custom label can be shown instead:<br />
<source><br />
[FILES]<br />
DisplayName = "FW smartwatch"<br />
DataFile = "IMAGE0.dat"<br />
ConfigFile = "IMAGE0.cfg"<br />
DisplayName1 = "FW smart meter"<br />
DataFile1 = "IMAGE1.dat"<br />
ConfigFile1 = "IMAGE1.cfg"<br />
</source><br />
<br />
The images will now be shown as follows:<br />
[[File:FW1_smartwatch_label.png]]<br />
[[File:FW2_smart_meter_label.png]]<br />
<br />
==== Considerations ====<br />
* 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.<br />
<br />
=== Programming multiple targets ===<br />
<br />
It is possible to program multiple targets which are located in a JTAG chain.<br />
The targets will be programmed each with a configuration and a data file.<br />
The configuration for the desired target must be selected before it can be programmed,<br />
this can be done with the <tt>#SELECT</tt> command.<br />
For more information how to use the <tt>#SELECT</tt> command please refer to Chapter "3.3.5 ''Commands to Flasher''".<br />
<br />
'''Example'''<br><br />
Three devices should be programmed.<br><br />
<br />
JTAG Chain: ''TDI'' --> ''Device2'' --> ''Device1'' --> ''Device0'' --> ''TDO''<br><br />
<br />
Three configurations would be stored on the flasher:<br><br />
<br />
Config 0: Configured to program Device0 (DEVICE0.CFG, DEVICE0.DAT)<br><br />
Config 1: Configured to program Device1 (DEVICE1.CFG, DEVICE1.DAT)<br><br />
Config 2: Configured to program Device2 (DEVICE2.CFG, DEVICE2.DAT)<br><br />
<br />
Selection and programming of the target will be done via the ASCII interface:<br><br />
<br />
<source><br />
#SELECT DEVICE0<br />
#AUTO<br />
#SELECT DEVICE1<br />
#AUTO<br />
#SELECT DEVICE2<br />
#AUTO<br />
</source><br />
<br />
==== Programming multiple targets with J-Flash ====<br />
<br />
Programming multiple targets can also be done via J-Flash using the command line interface.<br />
For this each target must be handled with its own project file.<br />
<br />
'''Example'''<br><br />
<br />
<source><br />
JFlash.exe -openproj"Device0.jflash" -open"Device0.hex" -auto -exit<br />
JFlash.exe -openproj"Device1.jflash" -open"Device1.hex" -auto -exit<br />
JFlash.exe -openproj"Device2.jflash" -open"Device2.hex" -auto -exit<br />
</source><br />
<br />
=== Batch Programming in stand-alone mode ===<br />
<br />
Batch programming allows to execute different stand-alone mode jobs in batch to be executed in immediate succession, without any user interaction in between.<br />
This can be used for example to program multiple targets in a JTAG-Chain or multiple data files to a target.<br><br />
A batch may contains an unlimited number of configurations which consist of a data file (*.DAT) and config file (*.CFG).<br />
For further information regarding config and data files, please refer to [[#Preparing for stand-alone operation manually | Preparing for stand-alone operation manually]].<br><br />
In order to specify the batch jobs, a FLASHER.INI file is used.<br />
This init file contains a [BATCH] section which describes which configuration pairs (*.DAT and *.CFG file) should be used for each batch job.<br />
A sample content of a FLASHER.INI file is shown below:<br><br />
<br />
<source><br />
[BATCH]<br />
DataFile = "Flasher0.dat"<br />
ConfigFile = "Flasher0.cfg"<br />
DataFile1 = "Flasher1.dat"<br />
ConfigFile1 = "Flasher1.cfg"<br />
</source><br />
<br />
[[File:Batch_Jobs.bmp]]<br />
<br />
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.<br />
<br />
<br />
[[File:Batch_Programming.bmp]]<br />
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<br />
currently executed action.<br />
<br />
<br />
[[File:Batch_Result.bmp]]<br />
The result of the programming will be shown on the screen after finishing all jobs.<br />
<br />
<br />
Creating / Replacing of the FLASHER.INI file can done in two ways:<br><br />
<ol><br />
<li>Boot Flasher in file access mode in order to replace the FLASHER.INI</li><br />
<li><br />
If Flasher is already integrated into the production line, runs in stand-alone mode and can not be booted in other mode:<br />
Use the file I/O commands provided by the ASCII interface of Flasher, to replace the FLASHER.INI .<br />
For more information about the file I/O commands, please refer to [[#File I/O commands | File I/O commands]].<br />
In case of an error occurred during execution, the Flasher terminates the entire batch processing.<br />
</li><br />
</ol><br />
{{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.}}<br />
{{Note|1=Flasher supports 8.3 filenames only (8 characters filename, 3 characters file extension). Using longer filenames may result in incorrect operation.}}<br />
<br />
==== Flasher Portable specifics ====<br />
<br />
Flasher Portable allows to choose between four different batches during runtime by using the select/arrow button on the front of Flasher Portable.<br />
Which batch configuration is used for which image selection position is specified in the FLASHER.INI.<br />
For this, the FLASHER.INI contents in the [BATCH] section have been extended.<br />
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><br />
<br />
<source><br />
[BATCH]<br />
DataFile = "Flasher0.dat"<br />
ConfigFile = "Flasher0.cfg"<br />
DataFile1 = "Flasher1.dat"<br />
ConfigFile1 = "Flasher1.cfg"<br />
DataFile2 = "Flasher2.dat"<br />
ConfigFile2 = "Flasher2.cfg"<br />
[BATCH1]<br />
DataFile = "TEST.dat"<br />
ConfigFile = "Test.cfg"<br />
[BATCH2]<br />
DataFile = "VALIDATE.dat"<br />
ConfigFile = "Flasher0.cfg"<br />
</source><br />
<br />
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.<br />
From there on, switching between the batches can be done by simply using the selection button of Flasher Portable.<br />
<br />
<br />
<br />
==== Examples ====<br />
<br />
'''Example 1:''' Programming two Data files to the same target<br><br />
<br />
* Open your J-Flash project.<br />
* Use File -> Save Flasher config file... to save the .CFG file (in this example: STM32F4.CFG).<br />
* Select the first binary and use File -> Save Flasher Data file... to save the first .DAT file (in this example: DATA0.DAT).<br />
* Select the second binary and use File -> Save Flasher Data file... to save the second data file .DAT file (in this example: DATA1.DAT).<br />
* Copy the Files to the Flasher e.g. by using file access mode.<br />
* Create a FLASHER.INI file in the root directory of the Flasher.<br />
* Exemplary content of FLASHER.INI:<br><br />
<source><br />
[BATCH]<br />
DataFile = "DATA0.dat"<br />
ConfigFile = "emPower.cfg"<br />
DataFile1 = "DATA1.dat"<br />
ConfigFile1 = "emPower.cfg"<br />
</source><br />
<br />
<br />
'''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><br />
Example scenario: 2 Devices in a JTAG chain, a STM32F1 and a STM32F4. <br><br />
<br />
* Follow the same as described before and additionally:<br />
* Create one project file per target (and create a .CFG file of each one).<br />
* Make sure each project file is configured correctly, especially the JTAG-Chain position (See UM8003 "J-Flash" for more detailed info).<br />
* Exemplary content of FLASHER.INI:<br><br />
<source><br />
[BATCH]<br />
DataFile = "F1DATA.dat"<br />
ConfigFile = "STM32F1.cfg"<br />
DataFile1 = "F4DATA0.dat"<br />
ConfigFile1 = "STM32F4.cfg"<br />
DataFile2 = "F4DATA1.dat"<br />
ConfigFile2 = "STM32F4.cfg"<br />
</source><br />
<br />
'''Example 3:''' Using multiple Batch sections with Flasher Portable.<br><br />
Example scenario: 2 Devices in a JTAG chain, a STM32F1 and a STM32F4.<br><br />
Selection 1 will program the STM32F1 target.<br><br />
Selection 2 will program the STM32F4 target using "F4DATA0.dat".<br><br />
Selection 3 will program the STM32F4 target using "F4DATA1.dat".<br><br />
Selection 4 will execute 1, 2 and 3 in sequence.<br><br />
* Exemplary content of FLASHER.INI:<br><br />
<source><br />
[BATCH]<br />
DataFile = "F1DATA.dat"<br />
ConfigFile = "STM32F1.cfg"<br />
[BATCH1]<br />
DataFile = "F4DATA0.dat"<br />
ConfigFile = "STM32F4.cfg"<br />
[BATCH2]<br />
DataFile = "F4DATA1.dat"<br />
ConfigFile = "STM32F4.cfg"<br />
[BATCH3]<br />
DataFile = "F1DATA.dat"<br />
ConfigFile = "STM32F1.cfg"<br />
DataFile1 = "F4DATA0.dat"<br />
ConfigFile1 = "STM32F4.cfg"<br />
DataFile2 = "F4DATA1.dat"<br />
ConfigFile2 = "STM32F4.cfg"<br />
</source><br />
<br />
=== Serial number programming ===<br />
<br />
Flasher supports programming of serial numbers. In order to use the serial number programming feature,<br />
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><br />
<br />
In general, Flasher supports two ways of programming a serial number into the target:<br><br />
<ol><br />
<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><br />
<li><br />
Programming custom serial numbers from a serial number list file.<br />
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.<br />
Serial number list file needs to be specified and created by user.<br />
</li><br />
</ol><br />
In the following some generic information how to setup Flasher & the J-Flash project for serial number programming are given.<br><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.}}<br />
{{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.}}<br />
<br />
==== Serial number settings ====<br />
<br />
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.<br />
This is done by enabling the '''Program serial number''' option as shown in the screenshot and table below:<br><br />
<br />
[[File:SN_Sample_JFlashSettings.gif]]<br />
<br />
{| class="seggertable"<br />
|-<br />
! Setting !! Meaning<br />
|-<br />
| <tt>Address</tt> || The address the serial number should be programmed at.<br />
|-<br />
| <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.<br />
|-<br />
| <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.<br />
|-<br />
| <tt>Increment</tt> || Specifies how much <tt>Next SN</tt> is incremented.<br />
|-<br />
|}<br />
<br />
==== Serial number file ====<br />
<br />
When selecting '''File -> Download serial number file to Flasher''', J-Flash will create a Serial number file named as <tt><JFlashProjectName>_Serial.txt</tt>.<br />
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.<br />
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.<br />
<br />
==== Serial number list file ====<br />
<br />
In order to program custom serial numbers which can not be covered by the standard serial number scheme provided by J-Flash<br />
(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.<br />
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.<br />
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><br />
* One serial number per line<br />
* Each byte of the serial number is described by two hexadecimal digits.<br />
<br />
'''Example'''<br><br />
A 8-byte serial number should be programmed at address 0x08000000.<br><br />
<br />
It should be programmed as follows in the memory:<br><br />
<br />
<tt>0x08000000: 0x01 0x02 0x03 0x04 0x55 0x66 0x77 0x88</tt><br><br />
<br />
The serial number list file should look as follows:<br><br />
<br />
<tt>0102030455667788</tt><br />
<br />
[[File:SN_SNList.gif]]<br />
<br />
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><br />
<br />
Which line Flasher will read at the next programming cycle, is configured via the <tt>Next SN</tt> option in J-Flash.<br />
For more information, please refer to [[#Serial number settings | Serial number settings]].<br />
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><br />
<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.}}<br />
{{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.}}<br />
<br />
==== Programming process ====<br />
<br />
Flasher will increment the serial number in SERIAL.TXT by the value defined in <tt>Increment</tt>, after each successful programming cycle.<br><br />
<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><br />
<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.<br />
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.}}<br />
<br />
==== Downloading serial number files to Flasher ====<br />
<br />
Downloading the serial number files needs to be done explicitly by selecting '''File-> Download serial number file to Flasher'''.<br />
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.<br />
<br />
==== Sample setup ====<br />
<br />
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.<br />
<br />
'''Defining serial number address, length and start value'''<br><br />
In the J-Flash project the following needs to be defined:<br><br />
* <tt>Address</tt> is 0x08001000<br />
* <tt>Next SN</tt> is 1234567<br />
* <tt>Increment</tt> is 1<br />
* <tt>Len</tt> is 4 (bytes)<br />
<br />
[[File:SN_Sample_JFlashSettings.gif]]<br />
<br />
'''Downloading configuration, data and serial number to Flasher.'''<br><br />
After setting up the rest of the configuration (Target interface etc.) and selecting an appropriate data file, the configuration,<br />
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><br />
<br />
[[File:SN_Sample_DownloadToFlasher.gif]]<br />
<br />
After downloading the serial number to Flasher, J-Flash also created the <tt><JFlashProjectName>_Serial.txt</tt>.<br />
<br />
[[File:SN_Sample_SerialFileCreated.gif]]<br />
<br />
Now Flasher is prepared to program the 8-byte serial number.<br />
<br />
=== Patch file support ===<br />
<br />
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.<br />
Before starting programming process in stand-alone mode, Flasher will look for a file named <tt>Patches.txt</tt> being present on the Flasher.<br />
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><br />
<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.<br />
<br />
'''Syntax'''<br><br />
<!-- LG xxxxxxxxx '==' is shown as '=', so instead use '= ='--><br />
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><br />
<br />
<tt><NumPatches>,<Addr>,<NumBytes>:<nowiki><Data></nowiki>,<Addr>,<NumBytes>:<nowiki><Data></nowiki>,<Addr>,</tt><br><br />
<tt><NumBytes>:<nowiki><Data></nowiki>,<Addr>,<NumBytes>:<nowiki><Data></nowiki>\r\n</tt><br><br />
<br />
Find below a table which describes each parameter.<br><br />
{| class="seggertable"<br />
|-<br />
! Parameter !! Description<br />
|-<br />
| <tt><NumPatches></tt> || Describes the number of patches in this patch line. Max. value is 4.<br />
|-<br />
| <tt><Addr></tt> || Describes the address to be patched. Value is expected in hex.<br />
|-<br />
| <tt><NumBytes></tt> || Number of bytes for the current patch. Max. value is 20h (32 in decimal). Value is expected in hex.<br />
|-<br />
| <tt><nowiki><Data></nowiki></tt> || Describes the data to be patched. <nowiki><Data></nowiki> is always expected as 2 hexadecimal characters per byte.<br />
|-<br />
|}<br />
<br />
{{Note|1=All values are expected in hexadecimal format (hex).<br><br />
<nowiki><Data></nowiki> section is always preceded by ":", not ",".}}<br />
<br />
'''Example'''<br><br />
Below is an example patch.<br><br />
<br />
<source><br />
1,18,4:01020304\r\n<br />
</source><br />
<br />
Patching the following data:<br />
<br />
[[File:data_before.png]]<br />
<br />
with the example patch will result in the following data:<br />
<br />
[[File:data_afterwards.png]]<br />
<br />
Please note that as mentioned earlier patching undefined memory locations will be ignored.<br><br />
Applying the example patch to the following data:<br />
<br />
[[File:undefined_mem_before.png]]<br />
<br />
Causes no data to be patched, as can be seen in the following image:<br />
<br />
[[File:undefined_mem_no_token.png]]<br />
<br />
Therefore it is necessary to first write placeholder data to the memory locations which are supposed to be patched.<br><br />
An example for such a placeholder can be seen here:<br />
<br />
[[File:undefined_mem_token.png]]<br />
<br />
Please note that the actual data inside the placeholder does not matter to the Flasher,<br />
because it is overwritten during patching.<br><br />
Applying the example patch will now work as expected:<br />
<br />
[[File:undefined_mem_after.png]]<br />
<br />
'''Single patch via RS232'''<br><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><br />
<br />
Send the <tt>#AUTO PATCH <NumPatches>,<Addr>,<NumBytes>:<nowiki><Data></nowiki></tt><br><br />
<br />
command via Flasher ASCII interface. The parameters have the same function as described in the table above.<br />
<br />
==== Newline encoding ====<br />
<br />
In general, for all patch files, init files etc. Flasher supports both newline encodings:<br><br />
<br />
* Windows: \r\n<br />
* Unix/Mac: \n<br />
<br />
All parser functionality etc. are written to be independent from the host operating system.<br />
<br />
=== Limiting the number of programming cycles ===<br />
<br />
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.<br />
To make use of this feature, a file called <tt>Cntdown.txt</tt> needs to be placed on the Flasher.<br />
This file simply contains a decimal number (32-bit unsigned integer) that describes how many programming cycles can be performed with the current setup.<br />
<br />
[[File:CntdownTxtContent.jpg]]<br />
<br />
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><br />
<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>.}}<br />
<br />
==== Changed fail/error LED indicator behavior ====<br />
<br />
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><br />
<br />
* The red error/fail LED will lit for 1 second<br />
* After this, it will blink/toggle x times @ 5 Hz, indicating the number of programming cycles left. (blinking 5 times for 5 cycles left, ...)<br />
<br />
==== Required Flasher hardware version for Cntdown.txt support ====<br />
<br />
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><br />
<br />
* 1621xxxxx (Flasher ARM V2)<br />
* 1630xxxxx (Flasher ARM V3)<br />
* 4210xxxxx (Flasher PPC V1)<br />
* 4110xxxxx (Flasher RX V1)<br />
<br />
All other models / hardware versions support limiting of programming cycles.<br />
<br />
=== Authorized flashing ===<br />
<br />
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.<br />
without the possibility to read out the Flasher contents via file access mode, FILE I/O functionality (J-Link Commander) or RS232 commands.<br />
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.<br />
<br />
==== Creating / Adding the secure area ====<br />
<br />
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.<br />
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.<br />
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><br />
<br />
[[File:CreateSecArea.jpg]]<br />
<br />
The following secure area related commands are available in J-Link Commander:<br><br />
<br />
* securearea create<br />
* securearea remove<br />
<br />
{{Note|1=When creating or removing the <tt>secure area</tt>, all configuration and data files being stored on the Flasher, are lost.<br />
Please make sure that they are not needed anymore, before adding / removing the security area.}}<br />
<br />
==== Moving files to the secure area ====<br />
<br />
Before moving configuration + data to the <tt>secure area</tt>, proper functionality of the setup should be tested in stand-alone mode.<br />
Once the setup is working as expected, do the following, to move the configuration + data into the <tt>secure area</tt>:<br><br />
<br />
* Start Flasher in file access mode (For more info, please refer to: [[#file access mode | file access mode]])<br />
<br />
[[File:FilesBeforeSecure.png]]<br />
<br />
* Create a folder "<tt>_SECURE</tt>"<br />
* Move all files that shall be moved to the <tt>secure area</tt>, into this folder<br />
<br />
[[File:FilesAfterSecure.png]]<br />
<br />
* 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.<br />
* Now Flasher can be used in stand-alone mode, as normal, but the files cannot be read back by the user / operator.<br />
<br />
==== Considerations to be taken when using the secure area ====<br />
<br />
When using the <tt>secure area</tt>, some things need to be considered:<br><br />
<br />
* All features like multiple file support, patch file support etc. can also be used when operating from the <tt>secure area</tt>.<br />
* 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>.<br />
* 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>.<br />
* 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.<br />
<br />
==== Required Flasher hardware version ====<br />
<br />
Older Flasher models do not support authorized flashing. The Flashers with the following serial number ranges do not support authorized flashing:<br><br />
<br />
* 1621xxxxx (Flasher ARM V2)<br />
* 1630xxxxx (Flasher ARM V3)<br />
* 4210xxxxx (Flasher PPC V1)<br />
* 4110xxxxx (Flasher RX V1)<br />
<br />
All other models / hardware versions support authorized flashing.<br />
<br />
=== Target interfaces ===<br />
<br />
The table below shows the supported target interfaces of the different Flasher models.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! Supported interfaces<br />
|-<br />
| Flasher PRO || JTAG, SWD<br />
|-<br />
| Flasher Compact || JTAG, SWD<br />
|-<br />
| Flasher ARM || JTAG, SWD<br />
|-<br />
| Flasher RX || JTAG<br />
|-<br />
| Flasher PPC || JTAG<br />
|-<br />
|}<br />
<br />
For more information about the target interfaces itself, please refer to:<br><br />
<br />
* ''UM08001, chapter "Working with J-Link and J-Trace", section "JTAG interface"''<br />
* ''UM08001, chapter "Working with J-Link and J-Trace", section "SWD interface"''<br />
<br />
=== Supported architectures ===<br />
<br />
Flasher supports programming of the internal flash of a large number of different microcontrollers.<br />
The number of supported devices is steadily growing. You can always find the latest list of supported devices on our website:<br><br />
<br />
''http://www.segger.com/supported-devices.html''<br />
<br />
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.<br />
Also the existence of the device may have confidential status, so it might not be mentioned as being supported in public releases yet.<br />
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.<br />
<br />
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).<br />
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.<br />
<br />
If a device is not supported, you can always contact us. We will be happy to provide you with an offer.<br />
<br />
==== External flashes ====<br />
<br />
In general our Flashers support programming of external flashes listed below:<br>(Can differ between Flasher models and hardware versions)<br />
<br />
* parallel NOR flash<br />
* SPI / QSPI flash<br>(see: ''[[SPI_support_by_Flasher_models]]'')<br />
* NAND flash<br />
* I<sup>2</sup>C EEPROM/Flash<br />
* FRAM<br />
<br />
If the parallel NOR flash device which is used is not CFI-compliant you have to select the flash device in J-Flash explicitly,<br />
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''.<br />
<br />
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.<br />
The J-Flash software comes with sample projects for ''Open Flashloader''.<br />
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''<br />
{{Note|1=Complete Information about ''Open Flashloaders'' can be found in our Wiki:<br>''[[Open_Flashloader]]''}}<br />
<br />
==== Cores ====<br />
<br />
===== Flasher ARM =====<br />
<br />
Flasher ARM supports and has been tested with the following cores, but should work with any ARM7/9, Cortex-M0/M1/M3/M4 core.<br />
If you experience problems with a particular core, do not hesitate to contact Segger.<br><br />
<br />
* ARM7TDMI (Rev 1)<br />
* ARM7TDMI (Rev 3)<br />
* ARM7TDMI-S (Rev 4)<br />
* ARM920T<br />
* ARM922T<br />
* ARM926EJ-S<br />
* ARM946E-S<br />
* ARM966E-S<br />
* Cortex-M0<br />
* Cortex-M1<br />
* Cortex-M3<br />
* Cortex-M4<br />
<br />
===== Flasher RX =====<br />
<br />
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><br />
<br />
* RX610<br />
* RX621<br />
* RX62N<br />
* RX62T<br />
<br />
===== Flasher PPC =====<br />
<br />
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.<br />
<br />
* e200z0<br />
<br />
===== Flasher PRO/Compact/Portable PLUS =====<br />
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/''.<br />
<br />
=== Programming multiple targets in parallel ===<br />
<br />
To program multiple targets in parallel there are the following possibilities:<br />
* Using a Flasher gang, or<br />
* Using multiple Flashers, each connecting to one CPU.<br />
<br />
Devices for gang programming are:<br />
* 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)].<br />
* 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)].<br />
When using multiple flashers, this can be done with the J-Flash production programming software.<br />
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''<br />
<br />
=== Logfiles and Quality Management ===<br />
<br />
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:<br />
<source lang="c"><br />
SN: 1 - Failed<br />
SN: 1 - Failed<br />
SN: 2 - O.K. (931 ms)<br />
SN: 3 - O.K. (931 ms)<br />
SN: 4 - O.K. (933 ms)<br />
SN: 5 - O.K. (932 ms)<br />
</source><br />
If applicable, the logfile contains more detailed error messages. For example:<br />
<source lang="c"><br />
ERROR: Programming failed @ address 0x00000000 (1)<br />
ERROR: Cannot connect to CPU. Target interface speed too high?<br />
</source><br />
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:<br />
<source lang="c"><br />
Verify error config word area @<br />
config word<br />
config word read back<br />
Verify error flash area @<br />
data from file<br />
data read back<br />
</source><br />
{{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.}}<br />
<br />
== TCP Services ==<br />
This chapter describes the integrated TCP services.<br />
<br />
=== FTP Server ===<br />
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><br />
[[File:FTPServer.png]]<br />
<br />
==== Access data ====<br />
Anonymous access to the FTP server is limited to read-only access to the file system.<br><br />
For write access, special login credentials have to be used:<br><br />
<tt>Login: admin</tt><br><br />
<tt>Password: 1234</tt><br><br />
<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.<br />
It is not meant as a security feature.}}<br />
<br />
=== Web server ===<br />
<br />
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.<br />
For the network, the IP address settings can be changed and a nick name can be assigned to the device.<br><br />
<br />
Additionally, the web interface provides information about the status of the integrated operating system, the IP stack and the target hardware.<br />
<br />
== Remote control ==<br />
This chapter describes how to control Flasher via the 9-pin serial interface connector or via the integrated Telnet interface.<br />
<br />
=== Overview ===<br />
There are 3 ways to control Flasher operation:<br><br />
<br />
* Manual: Programming operation starts when pressing the button. The LEDs serve as visible indicators.<br />
* 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.<br />
* Terminal communication via RS232.<br />
* Terminal communication via Telnet.<br />
<br />
{{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.}}<br />
<br />
=== Handshake control ===<br />
<br />
Some Flasher models can be remote controlled by automated testers without the need of a connection to a PC.<br />
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><br />
<br />
The handshake control is available for the following Flashers:<br />
* Flasher ARM<br />
* Flasher PRO<br />
* Flasher Compact (via Flasher Hub only)<br />
<br />
The following diagrams show the internal remote control circuitry of Flasher:<br><br />
<br />
[[File:FlasherRemotecontrol.jpg]]<br />
{| class="seggertable"<br />
|-<br />
! Pin No. !! Function !! Description<br />
|-<br />
| 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.<br />
|-<br />
| 4 || BUSY || As soon as the "Auto" function is started, BUSY becomes active, which means that transistor is switched OFF.<br />
|-<br />
| 5 || GND || Common Signal ground.<br />
|-<br />
| 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.<br />
|-<br />
|}<br />
<br />
=== ASCII command interface ===<br />
<br />
==== Introduction ====<br />
<br />
Once set up using J-Flash, the Flasher can be driven by any application or just a simple terminal using ASCII commands.<br><br />
<br />
Every known command is acknowledged by the Flasher and then executed. After command execution, Flasher sends an ASCII reply message.<br><br />
<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}}<br />
<br />
==== General command and reply message format ====<br />
<br />
* Any ASCII command has to start with the start delimiter ''#''.<br />
* Any ASCII command has to end with simple carriage return ('\r', ASCII code 13).<br />
* Commands can be sent upper or lower case<br />
<br />
==== General usage ====<br />
<br />
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.<br />
<br />
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).<br />
<br />
==== Settings for ASCII interface via RS232 ====<br />
<br />
Flasher is driven via a RS232 serial port with the following interface settings:<br><br />
<br />
* 9600 baud<br />
* 8 data bits<br />
* no parity<br />
* 1 stop bit<br />
<br />
The baud rate can be changed by using the <tt>#BAUDRATE</tt> command.<br />
<br />
==== Settings for ASCII interface via Telnet ====<br />
<br />
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><br />
<br />
[[File:telnet_connection.gif]]<br />
<br />
==== Commands and replies ====<br />
<br />
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><br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| Commands to the Flasher<br />
|-<br />
| <tt>#BAUDRATE <Baudrate></tt><br />
|-<br />
| <tt>#AUTO</tt><br />
|-<br />
| <tt>#AUTO PATCH</tt><br />
|-<br />
| <tt>#AUTO NOINFO</tt><br />
|-<br />
| <tt>#CANCEL</tt><br />
|-<br />
| <tt>#ERASE</tt><br />
|-<br />
| <tt>#PROGRAM</tt><br />
|-<br />
| <tt>#RESULT</tt><br />
|-<br />
| <tt>#SELECT <Filename></tt><br />
|-<br />
| <tt>#START</tt><br />
|-<br />
| <tt>#STATUS</tt><br />
|-<br />
| <tt>#VERIFY</tt><br />
|-<br />
| <tt>#QUIT</tt><br />
|-<br />
| <tt>#VERBOSE <Level></tt><br />
|-<br />
!colspan="100%"| File I/O commands<br />
|-<br />
| <tt>#FCLOSE</tt><br />
|-<br />
| <tt>#FCRC</tt><br />
|-<br />
| <tt>#FDELETE <Filename></tt><br />
|-<br />
| <tt>#FOPEN <Filename></tt><br />
|-<br />
| <tt>#FREAD <Offset>,<NumBytes></tt><br />
|-<br />
| <tt>#FSIZE</tt><br />
|-<br />
| <tt>#FWRITE <Offset>,<NumBytes>:<nowiki><Data></nowiki></tt><br />
|-<br />
| <tt>#FLIST</tt><br />
|-<br />
| <tt>#MKDIR <Dirname></tt><br />
|-<br />
!colspan="100%"| SecureArea commands<br />
|-<br />
| <tt>#HASSECUREAREA</tt><br />
|-<br />
| <tt>#SECUREAREA <action></tt><br />
|-<br />
!colspan="100%"| Replies from the Flasher<br />
|-<br />
| <tt>#ACK</tt><br />
|-<br />
| <tt>#NACK</tt><br />
|-<br />
| <tt>#OK</tt><br />
|-<br />
| <tt>#OK:<NumBytes>:<nowiki><Data></nowiki></tt><br />
|-<br />
| <tt>#OK:<Size></tt><br />
|-<br />
| <tt>#STATUS:</tt><br />
|-<br />
| <tt>#DONE</tt><br />
|-<br />
| <tt>#ERRxxx</tt><br />
|-<br />
|}<br />
<br />
===== Commands to the Flasher =====<br />
<br />
'''#AUTO'''<br><br />
The <tt>#AUTO</tt> command behaves exactly as the start button or external remote control input.<br><br />
<br />
Usually, the following command sequence will be performed when receiving the <tt>#AUTO</tt> command:<br><br />
<br />
* The Flasher erases the target CPU (if not blank)<br />
* The Flasher programs the target CPU<br />
* The Flasher verifies the target CPU<br />
<br />
Depending on the settings chosen in the '''Production''' tab in J-Flash, this sequence can differ from the one shown above.<br><br />
<br />
Finally, Flasher responds with<br><br />
<br />
* <tt>#OK</tt> if no error occurred<br />
* <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.<br />
<br />
During execution of the <tt>#AUTO</tt> command, Flasher automatically sends "status" messages via RS232 to reflect the state of execution.<br />
Typically during execution of <tt>#AUTO</tt> command, Flasher will reply the following sequence of messages:<br><br />
<br />
<tt>#ACK</tt><br><br />
<tt>#STATUS:INITIALIZING</tt><br><br />
<tt>#STATUS:CONNECTING</tt><br><br />
<tt>#STATUS:UNLOCKING</tt><br><br />
<tt>#STATUS:ERASING</tt><br><br />
<tt>#STATUS:PROGRAMMING</tt><br><br />
<tt>#STATUS:VERIFYING</tt><br><br />
<tt>#OK (Total 13.993s, Erase 0.483s, Prog 9.183s, Verify 2.514s)</tt><br><br />
<br />
'''#AUTO PATCH'''<br><br />
The <tt>#AUTO</tt> PATCH command allows patching of the content of the data to be programmed.<br><br />
<br />
Flasher responds with<br><br />
<br />
* <tt>#OK</tt> if no error occurred<br />
* <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.<br />
<br />
For further information about the usage of the <tt>#AUTO PATCH</tt> command please refer to [[#Patch file support | Patch file support]].<br />
<br />
'''#AUTO NOINFO'''<br><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><br />
<br />
The command ends with <tt>#OK</tt> or <tt>#ERRxxx</tt><br />
<br />
'''#BAUDRATE <Baudrate>'''<br><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><br />
<br />
If this command succeeds, Flasher responds with:<br><br />
<br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<br />
Otherwise it will respond with one of the following error messages:<br><br />
<br />
<tt>#ERR255: Invalid parameters</tt><br><br />
<tt>or</tt><br><br />
<tt>#ERR255: Baudrate is not supported</tt><br><br />
<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.<br />
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.}}<br />
<br />
'''#CANCEL'''<br><br />
This command can be sent to abort a running program. It may take a while until the current program is actually canceled.<br><br />
<br />
Flasher will respond with:<br><br />
<br />
<tt>#ERR007:CANCELED.</tt><br><br />
<br />
'''#ERASE'''<br><br />
This command can be sent to erase all selected target flash sectors.<br><br />
<br />
Flasher will reply the following sequence of messages:<br><br />
<br />
<tt>#ACK</tt><br><br />
<tt>#STATUS:INITIALIZING</tt><br><br />
<tt>#STATUS:CONNECTING</tt><br><br />
<tt>#STATUS:UNLOCKING</tt><br><br />
<tt>#STATUS:ERASING</tt><br><br />
<tt>#OK (Total 0.893s, Erase 0.483s)</tt><br><br />
<br />
'''#PROGRAM'''<br><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.<br />
<br />
'''#RESULT'''<br><br />
This command can be sent any time, even during other command execution. Flasher responds with the last result of the previously executed command.<br />
<br />
'''#SELECT <Filename>'''<br><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.<br />
<tt><Filename></tt> specifies the name of file pair without extensions (.CFG and .DAT) on the Flasher which should be selected. If you are<br />
using the universal flash programming mode, <tt><Filename></tt> specifies the full name of the .UNI file '''including''' the extension.<br />
Flasher saves the selected config and data file in the FLASHER.INI file. So this selection is remembered even between power-cycling Flasher.<br><br />
<br />
This may be verfy helpful in cases where several config and data files are stored on Flasher.<br />
The user can easily switch between these config and data files without connecting Flasher to a host.<br><br />
<br />
If this command succeeds, Flasher responds with:<br><br />
<br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<br />
Find below a sample sequence which shows how to use the <tt>#SELECT</tt> command:<br><br />
<br />
<tt>#SELECT ATSAM7_1 // ATSAM7_1.CFG and ATSAM7_1.DAT is selected</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<tt>#AUTO // Start auto programming</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#STATUS:INITIALIZING</tt><br><br />
<tt>#STATUS:CONNECTING</tt><br><br />
<tt>#STATUS:UNLOCKING</tt><br><br />
<tt>#STATUS:ERASING</tt><br><br />
<tt>#STATUS:PROGRAMMING</tt><br><br />
<tt>#STATUS:VERIFYING</tt><br><br />
<tt>#OK (Total 8.416s, Erase 0.005s, Prog 6.845s, Verify 0.959s)</tt><br><br />
<tt>#SELECT ATSAM7_2 // ATSAM7_2.CFG and ATSAM7_2.DAT is selected</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<tt>#AUTO // Start auto programming</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#STATUS:INITIALIZING</tt><br><br />
<tt>#STATUS:CONNECTING</tt><br><br />
<tt>#STATUS:UNLOCKING</tt><br><br />
<tt>#STATUS:ERASING</tt><br><br />
<tt>#STATUS:PROGRAMMING</tt><br><br />
<tt>#STATUS:VERIFYING</tt><br><br />
<tt>#OK (Total 8.632s, Erase 0.005s, Prog 7.051s, Verify 0.969s)</tt><br><br />
<br />
'''#START'''<br><br />
This command can be sent to start the application using the method configured in the J-Flash project.<br />
<br />
Flasher will reply with the following sequence of messages:<br><br />
<br />
<tt>#ACK</tt><br><br />
<tt>#STATUS:INITIALIZING</tt><br><br />
<tt>#STATUS:CONNECTING</tt><br><br />
<tt>#OK (Total 1.148s)</tt><br><br />
<br />
'''#STATUS'''<br><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]].<br />
<br />
'''#VERIFY'''<br><br />
This command can used to verify the target flash content against the data stored in Flasher.<br />
<br />
'''#QUIT'''<br><br />
This command can be used to terminate the active telnet connection from the server side (Flasher).<br />
The command provides an easy way to terminate the session from an automated script.<br />
It is not necessary to parse stdout and switch to local command mode to disconnect.<br />
Not implemented in the Flasher ATE or Flasher Hub.<br />
<br />
'''#VERBOSE <Level>'''<br><br />
This command can be used to change the verbosity level. <br><br />
* Verbosity level 0: Default. <br><br />
* Verbosity level 1: Provides some additional messages during the programming process.<br />
<br />
===== File I/O commands =====<br />
<br />
The ASCII interface of the Flasher also supports file I/O operations.<br />
<br />
The following file I/O commands are supported:<br><br />
<br />
'''#FCLOSE'''<br><br />
The <tt>#FCLOSE</tt> command closes the file on Flasher which was opened via <tt>#FOPEN</tt>.<br />
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><br />
<br />
A typical sequence when using the <tt>#FCLOSE</tt> command does look like as follows:<br><br />
<br />
<tt>#FCLOSE</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<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><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:No file opened</tt><br />
}}<br />
<br />
'''#FCRC'''<br><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>.<br />
The CRC will be also reported by J-Flash when downloading or saving files via J-Flash.<br><br />
<br />
A typical sequence when using the <tt>#FCRC</tt> command does look like as follows:<br><br />
<br />
<tt>#FCRC flasher.dat</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK:0x75BC855A</tt><br><br />
<br />
'''#FDELETE <Filename>'''<br><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><br />
<br />
A typical sequence when using the <tt>#FDELETE</tt> command does look like as follows:<br><br />
<br />
<tt>#FDELETE flasher.dat</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<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><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:Failed to delete file</tt><br />
}}<br />
<br />
'''#FOPEN <Filename>'''<br><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.<br />
If <tt><Filename></tt> can not be found on Flasher a new one will be created.<br><br />
<br />
A typical sequence using the <tt>#FOPEN</tt> command does look like as follows:<br><br />
<br />
<tt>#FOPEN flasher.dat</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<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><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:A file has already been opened</tt><br />
}}<br />
<br />
'''#FREAD <Offset>,<NumBytes>'''<br><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.<br />
<tt><NumBytes></tt> specifies the number of bytes which should be read.<br><br />
<br />
A typical sequence when using the <tt>#FREAD</tt> command does look like as follows:<br><br />
<br />
<tt>#FREAD 0,4</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK:04:466c6173</tt><br><br />
<br />
If the <tt>#FREAD</tt> command succeeds, Flasher will finally respond with a <tt>#OK:<NumBytes>:<nowiki><Data></nowiki></tt> reply message.<br />
For more information about the Flasher reply messages, please refer to [[#Replies from Flasher | Replies from Flasher]].<br><br />
<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><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:No file opened</tt>}}<br />
<br />
'''#FSIZE'''<br><br />
The <tt>#FSIZE</tt> command is used to get the size of the currently opened file on Flasher.<br><br />
<br />
A typical sequence when using the <tt>#FSIZE</tt> command does look like as follows:<br><br />
<br />
<tt>#FSIZE</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK:10 // file on flasher which is currently open, has a size of 16 bytes</tt><br><br />
<br />
If the <tt>#FSIZE</tt> command succeeds, Flasher will respond with a <tt>#OK:<Size></tt> reply message.<br />
For more information about the Flasher reply messages, please refer to [[#Replies from Flasher | Replies from Flasher]].<br><br />
<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><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:No file opened</tt>}}<br />
<br />
'''#FWRITE <Offset>,<NumBytes>:<nowiki><Data></nowiki>'''<br><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.<br />
<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.<br />
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><br />
<br />
<tt><Offset></tt> and <tt><NumBytes></tt> are expected in hexadecimal format.<br><br />
<br />
<tt>#FWRITE 0,200:<nowiki><Data></nowiki></tt><br><br />
<tt>#FWRITE 200,200:<nowiki><Data></nowiki></tt><br><br />
<br />
The data is expected in hexadecimal format (two hexadecimal characters per byte). The following example illustrates the use of <tt>#FWRITE</tt>:<br />
<br />
<tt>Data to be send: Hello !</tt><br><br />
<tt>ASCII values: 0x48, 0x65, 0x6C, 0x6C, 0x6F, 0x20, 0x21</tt><br><br />
<br />
<tt>#FWRITE 0,7:48656C6C6F2021</tt><br><br />
<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><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:No file opened</tt><br>}}<br />
<br />
'''#FLIST'''<br><br />
The <tt>#LIST</tt> command is used to list all files stored on the Flasher.<br><br />
<br />
A typical sequence using the <tt>#FLIST</tt> command does look like as follows:<br><br />
<br />
<tt>#FLIST</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>FLASHER.INI Size: 60</tt><br><br />
<tt>SERIAL.TXT Size: 3</tt><br><br />
<tt>FLASHER.LOG Size: 207</tt><br><br />
<tt>FOLDER (DIR)</tt><br><br />
<tt>FOLDER\\TEST1.CFG Size: 2048</tt><br><br />
<tt>FOLDER\\TEST1.DAT Size: 12288</tt><br><br />
<tt>#OK</tt><br><br />
<br />
'''#MKDIR <Dirname>'''<br><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><br />
<br />
A typical sequence using the <tt>#MKDIR</tt> command does look like as follows:<br><br />
<br />
<tt>#MKDIR folder</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<br />
{{Note|1=If the directory can not be created because of a bad <tt><Dirname></tt> argument, Flasher will respond with:<br><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:Failed to create directory</tt><br>}}<br />
<br />
===== Secure Area Commands =====<br />
<br />
'''#HASSECUREAREA'''<br><br />
The <tt>#HASSECUREAREA</tt> command checks if the Flasher is configured with a secure area.<br />
<br />
<tt>#RESULT:YES</tt> indicates the secure area is present, <tt>#RESULT:NO</tt> indicates no secure area is present.<br />
<br />
'''#SECUREAREA'''<br><br />
The <tt>#SECUREAREA <action></tt> command allows to create or remove the secure area on the Flasher.<br />
<br />
* the action <tt>CREATE</tt> creates the secure area.<br />
* the action <tt>REMOVE</tt> will remove the secure area.<br />
<br />
A typical sequence using the <tt>#SECUREAREA</tt> command does look like as follows:<br><br />
<br />
<tt>#SECUREAREA CREATE</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#DONE</tt><br><br />
<br />
{{Note|1=When creating or removing the <tt>secure area</tt>, all configuration and data files being stored on the Flasher, are lost.<br />
Please make sure that they are not needed anymore, before adding / removing the security area.}}<br />
<br />
<br />
<br />
===== Replies from Flasher =====<br />
<br />
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.<br />
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.<br />
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><br />
<br />
<tt>#OK (Total 13.993s, Erase 0.483s, Prog 9.183s, Verify 2.514s)</tt><br><br />
<br />
The following reply messages from Flasher are defined:<br><br />
<br />
'''#ACK'''<br><br />
Flasher replies with <tt>#ACK</tt> message on reception of any defined command before the command itself is executed.<br />
<br />
'''#NACK'''<br><br />
Flasher replies with <tt>#NACK</tt>, if an undefined command was received.<br />
<br />
'''#OK'''<br><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.<br />
<br />
'''#OK:<NumBytes>:<nowiki><Data></nowiki>'''<br><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.<br />
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).<br />
<br />
'''#OK:<Size>'''<br><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.<br />
<br />
'''#STATUS:'''<br><br />
The Flasher replies with its current state.<br><br />
<br />
The following status messages are currently defined:<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Message !! Description<br />
|-<br />
| <tt>#STATUS:READY</tt> || Flasher is ready to receive a new command.<br />
|-<br />
| <tt>#STATUS:CONNECTING</tt> || Flasher initializes connection to target CPU.<br />
|-<br />
| <tt>#STATUS:INITIALIZING</tt> || Flasher performs self check and internal init.<br />
|-<br />
| <tt>#STATUS:UNLOCKING</tt> || Unlocking flash sectors.<br />
|-<br />
| <tt>#STATUS:ERASING</tt> || Flasher is erasing the flash of the target device.<br />
|-<br />
| <tt>#STATUS:PROGRAMMING</tt> || Flasher is programming the flash of the target device.<br />
|-<br />
| <tt>#STATUS:VERIFYING</tt> || Flasher verifies the programmed flash contents.<br />
|-<br />
|}<br />
<br />
'''#ERRxxx'''<br><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><br />
<br />
Some error codes may be followed by colon and an additional error text.<br><br />
<br />
For example:<br><br />
<br />
<tt>#ERR007:CANCELED.</tt><br><br />
<br />
The error code numbers are described in the following table:<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Message !! Description<br />
|-<br />
| <tt>#ERR007</tt> || Flasher received <tt>#CANCEL</tt> command and has canceled the current operation.<br />
|-<br />
| <tt>#ERR008</tt> || Flasher is already busy with execution of previous command.<br />
|-<br />
| <tt>#ERR009</tt> || Failed to allocate memory.<br />
|-<br />
| <tt>#ERR010</tt> || Failed to open file.<br />
|-<br />
| <tt>#ERR011</tt> || Failed to read file.<br />
|-<br />
| <tt>#ERR012</tt> || Failed to write file.<br />
|-<br />
| <tt>#ERR013</tt> || Failed to delete file.<br />
|-<br />
| <tt>#ERR255</tt> || Undefined error occurred. This reply is followed by an error string.<br />
|-<br />
|}<br />
<br />
== Performance ==<br />
<br />
The following chapter lists programming performance of common flash devices andmicrocontrollers.<br />
<br />
=== Performance of MCUs with internal flash memory ===<br />
<br />
==== Flasher ARM ====<br />
<br />
The following table lists program and erase performance values of Flasher ARM for different controllers.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Microcontroller !! Size [kByte] !! Erase time [sec] !! Program time [sec] !! Verify time [sec] !! Total time [sec]<br />
|-<br />
| Analog Devices || 62 || 2.943 || 2.286 || 0.563 || 5.792<br />
|-<br />
| Atmel AT91SAM7S64 || 64 || --- || 3.488 || 0.438 || 3.926<br />
|-<br />
| Atmel AT91SAM7S256 || 256 || --- || 7.709 || 1.053 || 8.762<br />
|-<br />
| NXP LPC1768 || 512 || 3.740 || 8.559 || 5.092 || 17.391<br />
|-<br />
| NXP LPC2106 || 120 || 0.448 || 1.204 || 0.634 || 2.286<br />
|-<br />
| NXP LPC2129 || 248 || 0.449 || 2.916 || 1.347 || 4.712<br />
|-<br />
| NXP LPC2138 || 500 || 0.448 || 5.488 || 2.649 || 8.585<br />
|-<br />
| NXP LPC2148 || 500 || 0.448 || 5.632 || 2.721 || 8.801<br />
|-<br />
| NXP LPC2294 || 2048 || 0.808 || 15.976 || 9.669 || 26.453<br />
|-<br />
| NXP LPC2478 || 504 || 0.448 || 5.419 || 2.559 || 8.426<br />
|-<br />
| ST STM32F103ZE || 512 || 0.028 || 18.763 || 3.939 || 22.730<br />
|-<br />
| ST STR711 || 272 || 0.429 || 5.476 || 4.742 || 10.647<br />
|-<br />
| ST STR912 || 544 || 1.167 || 12.907 || 5.236 || 19.310<br />
|-<br />
| TI TMS470R1B1M || 1024 || 2.289 || 8.147 || 5.362 || 15.798<br />
|-<br />
|}<br />
<br />
==== Flasher PRO ====<br />
See Flasher ARM.<br />
<br />
==== Flasher Compact ====<br />
See Flasher ARM.<br />
<br />
==== Flasher RX ====<br />
<br />
The following table lists program and erase performance values of Flasher RX.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Microcontroller !! Size [kByte] !! Erase time [sec] !! Program time [sec] !! Verify time [sec] !! Total time [sec]<br />
|-<br />
| R5F56108 || 2.048 || 9.523 || 11.915 || 3.890 || 25.585<br />
|-<br />
|}<br />
<br />
==== Flasher PPC ====<br />
<br />
The following table lists program and erase performance values of Flasher PPC.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Microcontroller !! Size [kByte] !! Erase time [sec] !! Program time [sec] !! Verify time [sec] !! Total time [sec]<br />
|-<br />
| ST SPC560B50 || 576 || 4.747 || 4.159 || 1.929 || 10.917<br />
|-<br />
|}<br />
<br />
== Hardware ==<br />
<br />
This chapter gives an overview about Flasher specific hardware details,<br />
such as the pinouts and available adapters.<br />
<br />
=== Flasher ARM 20-pin JTAG/SWD Connector ===<br />
<br />
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.<br />
<br />
==== Pinout JTAG ====<br />
<br />
[[File:jtag_port_20pin.jpg]] <!-- LG xxxxxx image has been cropped to fit page --><br />
<br />
The following table lists the Flasher JTAG pinout.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! PIN !! SIGNAL !! TYPE !! Description<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 13 || TDO || Input || JTAG data output from target CPU. Typically connected to TDO of target CPU.<br />
|-<br />
| 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".<br />
|-<br />
| 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.<br />
|-<br />
| 19 || 5V-Target supply || Output || This pin is used to supply power to some eval boards. Typically left open on target hardware.<br />
|-<br />
|}<br />
<br />
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.<br />
<br />
==== Pinout SWD ====<br />
<br />
The 20-pin connector of Flasher is also compatible to ARM's Serial Wire Debug (SWD) interface.<br><br />
<br />
[[File:SWD_Port.jpg]] <!-- LG xxxxxx image has been cropped to fit page --><br />
<br />
The following table lists the J-Link / J-Trace SWD pinout.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! PIN !! SIGNAL !! TYPE !! Description<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 7 || SWDIO || I/O || Single bi-directional data pin.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 13 || SWO || Output || Serial Wire Output trace port. (Optional, not required for SWD communication.)<br />
|-<br />
| 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".<br />
|-<br />
| 17 || Not used || NC || This pin is not connected in J-Link.<br />
|-<br />
| 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.<br />
|-<br />
|}<br />
<br />
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.<br />
<br />
==== Target power supply ====<br />
<br />
Pin 19 of the connector can be used to supply power to the target hardware. Supply voltage is 5V, max. current is 400mA.<br />
The output current is monitored and protected against overload and short-circuit.<br><br />
<br />
Power can be controlled via the J-Link commander. The following commands are available to control power:<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Command !! Explanation<br />
|-<br />
| <tt>power on</tt> || Switch target power on<br />
|-<br />
| <tt>power off</tt> || Switch target power off<br />
|-<br />
| <tt>power on perm</tt> || Set target power supply default to "on"<br />
|-<br />
| <tt>power off perm</tt> || Set target power supply default to "off"<br />
|-<br />
|}<br />
<br />
=== Flasher RX 14-pin connector ===<br />
<br />
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.<br />
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.<br />
<br />
[[File:jtag_port_14pin.wmf]]<br />
<br />
The following table lists the Flasher RX 14-pin JTAG pinout.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Pin !! Signal !! Type !! Description<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 5 || TDO || Input || JTAG data output from target CPU. Typically connected to TDO on target CPU.<br />
|-<br />
| 6 || --- || NC || This pin is not connected to Flasher RX.<br />
|-<br />
| 7 || --- || NC || This pin is not connected to Flasher RX.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 10 || --- || NC || This pin is not connected to Flasher RX.<br />
|-<br />
| 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.<br />
|-<br />
| 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".<br />
|-<br />
|}<br />
<br />
* All pins marked NC are not connected to Flasher RX. Any signal can be applied here; Flasher RX will simply ignore such a signal.<br />
* Pins 2, 12, 14 are GND pins connected to GND in Flasher RX. They should also be connected to GND in the target system.<br />
<br />
==== Target power supply ====<br />
<br />
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.<br />
Power can be controlled via the J-Link commander. The following commands are available to control power:<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Command !! Explanation<br />
|-<br />
| <tt>power on</tt> || Switch target power on<br />
|-<br />
| <tt>power off</tt> || Switch target power off<br />
|-<br />
| <tt>power on perm</tt> || Set target power supply default to "on"<br />
|-<br />
| <tt>power off perm</tt> || Set target power supply default to "off"<br />
|-<br />
|}<br />
<br />
=== Flasher PPC 14-pin connector ===<br />
<br />
Flasher PPC itself has a 20-pin JTAG connector mounted but comes with a 14-pin adapter for PowerPC devices.<br><br />
<br />
[[File:JTAG_PPC_14pin_adapter.wmf]]<br />
<br />
The following table lists the Flasher PPC 14-pin JTAG pinout.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Pin !! Signal !! Type !! Description<br />
|-<br />
| 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.<br />
|-<br />
| 3 || TDO || Input || JTAG data output from target CPU. Typically connected to TDO on target CPU.<br />
|-<br />
| 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.<br />
|-<br />
| 7 || --- || NC || This pin is not connected to Flasher PPC.<br />
|-<br />
| 8 || --- || NC || This pin is not connected to Flasher PPC.<br />
|-<br />
| 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".<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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).<br />
|-<br />
|}<br />
<br />
* All pins marked NC are not connected to Flasher PPC. Any signal can be applied here; Flasher PPC will simply ignore such a signal.<br />
* 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.<br />
<br />
=== Target board design ===<br />
<br />
We strongly advise following the recommendations given by the chip manufacturer. These recommendations are normally in line with the recommendations.<br />
Please refer to the the appropriate tables depending on the core:<br><br />
<br />
* [[#Pinout JTAG | Pinout JTAG]]<br />
* [[#Pinout SWD | Pinout SWD]]<br />
* [[#Flasher RX 14-pin connector | Flasher RX 14-pin connector]]<br />
* [[#Flasher PPC 14-pin connector | Flasher PPC 14-pin connector]]<br />
<br />
In case of doubt you should follow the recommendations given by the semiconductor manufacturer.<br />
<br />
==== Pull-up/pull-down resistors ====<br />
<br />
Unless otherwise specified by developer's manual, pull-ups/pull-downs are recommended to be between 2.2 kOhms and 47 kOhms.<br />
<br />
==== RESET, nTRST ====<br />
<br />
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><br />
<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.<br />
(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.<br />
<br />
=== Adapters ===<br />
<br />
==== JTAG Isolator ====<br />
<br />
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.<br />
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><br />
<br />
[[File:JTAG_Isolator_Port.wmf]]<br />
<br />
===== Pinout =====<br />
<br />
The following table shows the target-side pinout of the J-Link JTAG Isolator.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Pin !! Signal !! Type !! Description<br />
|-<br />
| 1 || VCC || Output || The target side of the isolator draws power over this pin.<br />
|-<br />
| 2 || VCC || Output || The target side of the isolator draws power over this pin.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 13 || TDO || Input || JTAG data output from target CPU. Typically connected to TDO of target CPU.<br />
|-<br />
| 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".<br />
|-<br />
| 17 || N/C || N/C || This pin is not connected on the target side of the isolator.<br />
|-<br />
| 19 || N/C || N/C || This pin is not connected on the target side of the isolator.<br />
|-<br />
|}<br />
<br />
Pins 4, 6, 8, 10, 12, 14, 16, 18, 20 are connected to GND.<br />
<br />
===== Safety =====<br />
This isolator provides '''basic isolation''' only. '''Do not use with hazardous voltages without further protection measures to avoid risk of electrical shock and fire.'''<br />
<br />
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.<br />
<br />
==== J-Link Needle Adapter ====<br />
<br />
To connect to the J-Link OB via programming interface the ''J-Link Needle Adapter'' is recommended.<br><br />
<br />
[[File:J-Link_Needle_Adapter_500x.jpg]]<br />
<br />
Why to choose the J-Link Needle Adapter:<br><br />
<ol><br />
<li>No additional connector required on your PCB</li><br />
<li>Very small footprint</li><br />
<li>High reliability spring pins for secure connections</li><br />
<li>Designed with 3 locating pins, so the adapter can not be connected the wrong way</li><br />
<li>No external power supply required! The J-Link Needle Adapter comes with the option to power the target hardware via J-Link.</li><br />
</ol><br />
These features make the J-Link Needle Adapter the perfect solution for production purposes.<br><br />
<br />
The pinout of the J-Link Needle Adapter is based on the pinout of the needle adapter by Tag-Connect.<br />
Please note, that both pinouts are not identical since the J-Link Needle Adapter comes with a 5V-supply pin.<br><br />
<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><br />
<br />
Moreover, the two "legs" on each side of the connector guarantee a stable and secure contact between pins and the PCB.<br><br />
<br />
[[File:J-Link_Needle_Adapter_Connector_pins_360x.jpg]]<br />
[[File:J-Link_Needle_Adapter_Pinout.jpg]]<br />
<br />
The J-Link Needle Adapter can be connected to J-Link via the ''20-pin 0.1'' JTAG to a 10-pin needle connector''.<br />
<br />
=== How to determine the hardware version ===<br />
<br />
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.<br />
Flasher has the hardware version printed on the back label.<br><br />
<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).<br />
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><br />
<br />
[[File:FlasherARM_version.gif]]<br />
== Support and FAQs ==<br />
<br />
This chapter contains troubleshooting tips together with solutions for common problems which might occur when using Flasher.<br />
There are several steps you can take before contacting support.<br />
Performing these steps can solve many problems and often eliminates the need for assistance.<br />
This chapter also contains a collection of frequently asked questions (FAQs) with answers.<br />
<br />
=== Contacting support ===<br />
<br />
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.<br />
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><br />
<br />
If you need to contact support, send the following information to<br><br />
''support@segger.com''<br><br />
<br />
* A detailed description of the problem<br />
* Flasher serial number<br />
* Information about your target hardware (processor, board, etc.).<br />
* <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]].<br />
<br />
Flasher is sold directly by SEGGER.<br />
<br />
=== Frequently Asked Questions ===<br />
<br />
'''Maximum JTAG speed'''<br />
{|<br />
|-<br />
| '''Q:''' || What is the maximum JTAG speed supported by Flasher?<br />
|-<br />
| '''A:''' || Flasher's maximum supported JTAG speed is 12MHz.<br />
|}<br />
<br />
'''Maximum download speed'''<br />
{|<br />
|-<br />
| '''Q:''' || What is the maximum download speed?<br><br />
|-<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.<br />
|}<br />
== Background information ==<br />
<br />
This chapter provides background information about flash programming in general. It<br />
also provides information about how to replace the firmware of Flasher manually.<br />
<br />
=== Flash programming ===<br />
<br />
Flasher comes with a DLL, which allows - amongst other functionalities - reading and writing RAM, CPU registers, starting and stopping the CPU, and setting breakpoints.<br />
<br />
==== How does flash programming via Flasher work? ====<br />
<br />
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.<br />
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.<br />
Different flash chips have different programming algorithms;the programming algorithm also depends on other things,<br />
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).<br />
The RAM code requires data to be programmed into the flash memory. The data is supplied by downloading it to RAM.<br />
<br />
==== Data download to RAM ====<br />
<br />
The data (or part of it) is downloaded to another part of the RAM of the target system.<br />
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.<br />
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.<br />
This process may have to be repeated until the entire data is programmed into the flash.<br />
<br />
==== Available options for flash programming ====<br />
<br />
In general, there are two possibilities in order to use Flasher for flash programming:<br><br />
<br />
* Using Flasher stand-alone to program the target flash memory (stand-alone mode)<br />
* Using Flasher in combination with J-Flash to program the target flash memory (Flasher in "PC-based mode")<br />
<br />
===== Using Flasher in stand-alone mode =====<br />
<br />
In order to use the Flasher in stand-alone mode, it has to be configured first.<br />
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]].<br />
<br />
===== J-Flash - Complete flash programming solution =====<br />
<br />
J-Flash is a stand-alone Windows application, which can read / write data files and program the flash in almost any ARM system.<br />
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''.<br />
<br />
==== How does the universal flash programming work? ====<br />
<br />
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><br />
<br />
Universal flash programming is available only for stand-alone mode.<br />
== Glossary ==<br />
<br />
This chapter describes important terms used throughout this manual.<br />
<br />
'''Big-endian'''<br><br />
Memory organization where the least significant byte of a word is at a higher address than the most significant byte. See Little-endian.<br />
<br />
'''Cache cleaning'''<br><br />
The process of writing dirty data in a cache to main memory.<br />
<br />
'''Coprocessor'''<br><br />
An additional processor that is used for certain operations, for example, for floating-point math calculations, signal processing, or memory management.<br />
<br />
'''Dirty data'''<br><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.<br />
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.<br />
<br />
'''Halfword'''<br><br />
A 16-bit unit of information.<br />
<br />
'''Host'''<br><br />
A computer which provides data and other services to another computer. Especially, a computer providing debugging services to a target being debugged.<br />
<br />
'''ICache'''<br><br />
Instruction cache.<br />
<br />
'''ID'''<br><br />
Identifier.<br />
<br />
'''IEEE 1149.1'''<br><br />
The IEEE Standard which defines TAP. Commonly (but incorrectly) referred to as JTAG.<br />
<br />
'''Image'''<br><br />
An executable file that has been loaded onto a processor for execution.<br />
<br />
'''Instruction Register'''<br><br />
When referring to a TAP controller, a register that controls the operation of the TAP.<br />
<br />
'''IR'''<br><br />
See Instruction Register.<br />
<br />
'''Joint Test Action Group (JTAG)'''<br><br />
The name of the standards group which created the IEEE 1149.1 specification.<br />
<br />
'''Little-endian'''<br><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.<br />
<br />
'''Memory coherency'''<br><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.<br />
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.<br />
<br />
'''Memory management unit (MMU)'''<br><br />
Hardware that controls caches and access permissions to blocks of memory, and translates virtual to physical addresses.<br />
<br />
'''Memory Protection Unit (MPU)'''<br><br />
Hardware that controls access permissions to blocks of memory. Unlike an MMU, a MPU does not translate virtual addresses to physical addresses.<br />
<br />
'''RESET'''<br><br />
Abbreviation of System Reset. The electronic signal which causes the target system other than the TAP controller to be reset.<br />
This signal is also known as "nSRST" "nSYSRST", "nRST", or "nRESET" in some other manuals. See also nTRST.<br />
<br />
'''nTRST'''<br><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.<br />
<br />
'''Open collector'''<br><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.<br />
<br />
'''Processor Core'''<br><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.<br />
It excludes optional coprocessors, caches, and the memory management unit.<br />
<br />
'''Remapping'''<br><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.<br />
<br />
'''RTOS'''<br><br />
Real Time Operating System.<br />
<br />
'''TAP Controller'''<br><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.<br />
<br />
'''Target'''<br><br />
The actual processor (real silicon or simulated) on which the application program is running.<br />
<br />
'''TCK'''<br><br />
The electronic clock signal which times data on the TAP data lines TMS, TDI, and TDO.<br />
<br />
'''TDI'''<br><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.<br />
<br />
'''TDO'''<br><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.<br />
<br />
'''Test Access Port (TAP)'''<br><br />
The port used to access a device's TAP Controller. Comprises TCK, TMS, TDI, TDO, and nTRST (optional).<br />
<br />
'''Transistor-transistor logic (TTL)'''<br><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.<br />
<br />
'''Word'''<br><br />
A 32-bit unit of information. Contents are taken as being an unsigned integer unless otherwise stated.<br />
== Literature and references ==<br />
This chapter lists documents, which we think may be useful to gain a deeper understanding of technical details.</div>JanBhttps://wiki.segger.com/index.php?title=UM08022_Flasher&diff=16295UM08022 Flasher2023-09-14T12:58:17Z<p>JanB: /* Programming multiple targets in parallel */</p>
<hr />
<div><!---<br />
General TBD:<br />
- LG: Right now - EVERYTHING<br />
===========================================<br />
--------------------[more specific, but on multiple locations]<br />
- check if all emphasis (bold, tt, blue, etc ) have made it into the new version<br />
- Add Information -> Additional information<br />
- use of the term free-of-charge utility/tool etc<br />
- check compliant to DocStandards_Rules.txt<br />
- Remove everything regarding to Kickstarter versions? eventually create a chapter Legacy -> Kickstarter version were available for hw version 5-x (200x-200x)...[..]<br />
- 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.<br />
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.<br />
- if week keep the IDE specific stuff in the manual, add Ozone, ES and J-Link Commander were no mentioned.<br />
- IDE specifics move into wiki confirmed by Alex<br />
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)<br />
- check all sections regarding licensing<br />
- Check compliance of J-Link emDocs with typographic conventions described in AboutThisDocument.emDoc. What should be altered? e.g. references<br />
- use uref at all (not blue)?<br />
- search and decide where to use \ref (ref with page number)<br />
- why is \ref (no single "option" \uref is more basic as \ref.....)<br />
- in text, use either \ref or \iref instead of \uref<br />
- in old manual, \H3 started on a new page (not per default, but set manually for api tables etc...)<br />
- move used old images and source files (visio etc) via svn (currently copied)<br />
--------------------[grammar / vocabulary discussion]<br />
- Product names<br />
-- Use of SEGGEPROBE in this document?<br />
- use license over licence<br />
- commandline or command-line?<br />
- toolchain or tool chain?<br />
- crossreference/cross-reference/cross reference?<br />
- overcurrent?<br />
- double words?<br />
- frontend?<br />
- Unit: Kbytes, KBytes, V, mV.... 9V or 9 V? Create rule in Vocabulary<br />
- baudrate or baud rate?<br />
- stackpointer or stack pointer<br />
- check where we should replace abbreviations with the long form (e.h. "milliseconds" instead of "ms")<br />
- config or configuration<br />
- filepointer or file pointer?<br />
--------------------[J-Link dep. specific]<br />
- J-Link command strings or J-Link Command strings or J-Link Command Strings<br />
- J-Link settings file or...<br />
- J-Link control panel or ......<br />
- J-Link script files or...<br />
---><br />
Flasher is a programming tool for microcontrollers with on-chip or external flash memory.<br />
Flasher is designed for programming flash targets with the J-Flash software or stand-alone.<br />
In addition to that Flasher can also be used as a regular J-Link. For more information about J-Link in general,<br />
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].<br />
<br />
<div class="toclimit-2"><br />
__TOC__<br />
</div><br />
<br />
== Flasher overview ==<br />
Flasher connects to a PC using the USB/Ethernet/RS232 interface (what host interfaces are available depends on the Flasher model),<br />
running Windows, Linux & MacOS. In stand-alone mode,<br />
Flasher can be driven by the start/stop button, or via the RS232 interface (handshake control or ASCII interface).<br />
Flasher always has a 20-pin connector, which target interfaces are supported depends on the Flasher model:<br />
* Flasher ARM: JTAG and SWD are supported.<br />
* Flasher RX: JTAG is supported. Flasher comes with additional 14-pin RX adapter<br />
* Flasher PPC: JTAG is supported. Flasher comes with additional 14-pin PPC adapter.<br />
* Flasher PRO: JTAG and SWD are supported.<br />
* Flasher Compact: JTAG and SWD are supported.<br />
<br />
=== Features of Flasher ARM/PPC/RX/PRO ===<br />
* Three boot modes: PC-based mode, stand-alone mode, file access mode<br />
* Stand-alone JTAG/SWD programmer (Once set up, Flasher can be controlled without the use of PC program)<br />
* No power supply required, powered through USB<br />
* Supports internal and external flash devices<br />
* 128 MB memory for storage of target program<br />
* Can be used as J-Link (emulator) with a download speed of up to 720 Kbytes/second<br />
* Data files can updated via USB/Ethernet (using the J-Flash software), via FTP, via RS232 or via the file access mode of Flasher<br />
<br />
{| class="seggertable"<br />
|-<br />
! Flasher model !! Supported cores !! Supported target interfaces !! Flash programming speed (depending on target hardware)<br />
|-<br />
| Flasher ARM || ARM7/ARM9/Cortex-M || JTAG, SWD || between 170 and 300 Kbytes/second<br />
|-<br />
| Flasher RX || Renesas RX610, RX621, RX62N, RX62T || JTAG || between 30-300 Kbytes/second<br />
|-<br />
| Flasher PPC || Power PC e200z0 || JTAG || up to 138 Kbytes/second<br />
|-<br />
| Flasher PRO || ARM7/ARM9/Cortex-M Renesas RX610, RX621, RX62N, RX62T Power PC e200z0 || JTAG, SWD || between 30-300 Kbytes/ second<br />
|-<br />
|}<br />
<br />
==== Features of Flasher Compact ====<br />
<br />
* Three boot modes: PC-based mode, stand-alone mode, file access mode<br />
* Stand-alone JTAG/SWD programmer (Once set up, Flasher can be controlled without the use of PC program)<br />
* No power supply required, powered through USB<br />
* Supports internal and external flash devices<br />
* 128 MB memory for storage of target program<br />
* Can be used as J-Link (emulator) with a download speed of up to 720 Kbytes/second<br />
* Data files can updated via USB/Ethernet (using the J-Flash software) or via the file access mode of Flasher<br />
<br />
{| class="seggertable"<br />
|-<br />
! Flasher model !! Supported cores !! Supported target interfaces !! Flash programming speed (depending on target hardware)<br />
|-<br />
| Flasher ARM || ARM7/ARM9/Cortex-M || JTAG, SWD || between 170 and 300 Kbytes/second<br />
|-<br />
| Flasher RX || Renesas RX610, RX621, RX62N, RX62T || JTAG || between 30-300 Kbytes/second<br />
|-<br />
| Flasher PPC || Power PC e200z0 || JTAG || up to 138 Kbytes/second<br />
|-<br />
| Flasher Compact || ARM7/ARM9/Cortex-M Renesas RX610, RX621, RX62N, RX62T Power PC e200z0 || JTAG, SWD || between 30-300 Kbytes/ second<br />
|-<br />
|}<br />
<br />
==== Features of Flasher Portable/Flasher Portable PLUS ====<br />
<br />
* Stand-alone in-circuit-programmer (Once set up, Flasher can be controlled without the use of a PC program)<br />
* Powered by an internal rechargeable battery (standard batteries for Flasher Portable), no Laptop or external power supply required.<br />
* Multiple firmware images can be stored on Flasher<br />
* 128 MB memory for storage of target program<br />
* Easy selection of image to be programmed, via button<br />
* Supported CPUs: ARM Cortex, Legacy ARM7/9, Renesas RX, Freescale PowerPC<br />
* Supports internal and external flash<br />
* Free software updates<ref name="legitimateOwned" />, 1 year of support<br />
* Data files can be updated via the file access mode functionality or via J-Flash<br />
* Programming speed between 30-300 Kbytes/second (actual speed depends on target hardware)<br />
{{Note|1=Ethernet and RS232 as host interface are not available for Flasher Portable}}<br />
<references><br />
<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.<br />
As a legitimate owner of a SEGGER Flasher, you can always download the latest software free of charge.<br />
Though not planned and not likely, we reserve the right to change this policy.<br />
Note that older models may not be supported by newer versions of the software.<br />
Typically, we support older models with new software at least 3 years after end of life.<br />
</ref><br />
</references><br />
<br />
{| class="seggertable"<br />
|-<br />
! Supported cores !! Supported target interfaces !! Flash programming speed (depending on target hardware)<br />
|-<br />
| ARM7/ARM9/Cortex-M || JTAG, SWD || between 30-300 Kbytes/second<br />
|-<br />
| Renesas RX610, RX621, RX62N, RX62T || JTAG || between 170 and 300 Kbytes/second<br />
|-<br />
| Power PC e200z0 || JTAG || up to 138 Kbytes/second<br />
|-<br />
|}<br />
<br />
==== Working environment ====<br />
<br />
'''General'''<br><br />
The Flasher can operate from a PC with an appropriate software like J-Flash or in stand-alone mode.<br />
<br />
'''Host System'''<br><br />
IBM PC/AT or compatible CPU: 486 (or better) with at least 128MB of RAM,<br />
running Windows, Linux & MacOS. It needs to have a USB, Ethernet or RS232 interface available for communication with Flasher.<br />
<br />
'''Power supply'''<br><br />
Flasher Portable: 3x standard AAA batteries or 5V DC, min. 100 mA via USB connector.<br />
<br />
Flasher Portable PLUS: internal rechargeable 680mAh Li-Ion battery, min. 100 mA via USB connector.<br />
<br />
Other Flashers: 5V DC, min. 100 mA via USB connector.<br />
<br />
'''Installing Flasher PC-software (J-Flash)'''<br><br />
The latest version of the J-Flash software, which is part of the [[J-Link Software and Documentation Pack]].<br />
For more information about using J-Flash please refer to <tt>UM08003_JFlashARM.pdf</tt> (J-Flash user guide) which is also available for download on our website.<br />
<br />
=== Specifications ===<br />
<br />
<br />
==== Specifications for Flasher ARM ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Windows, Linux & MacOS<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C<br />
|-<br />
| Storage Temperature || -20 °C ... +60 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
!colspan="100%"| Mechanical<br />
|-<br />
| Size (without cables) || 121mm x 66mm x 30mm<br />
|-<br />
| Weight (without cables) || 119g<br />
|-<br />
!colspan="100%"| Available interfaces<br />
|-<br />
| USB Host interface || USB 2.0, full speed<br />
|-<br />
| Ethernet Host interface || 10/100 MBit<br />
|-<br />
| RS232 Host interface || RS232 9-pin<br />
|-<br />
| Target interface || JTAG 20-pin (14-pin adapter available)<br />
|-<br />
!colspan="100%"| JTAG Interface, Electrical<br />
|-<br />
| Power Supply || USB powered, 100mA for Flasher ARM. 500 mA if target is powered by Flasher ARM<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| Target supply voltage || Supply voltage is 5V, max.<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6 <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Max. JTAG speed || up to 12MHz<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
===== Flasher ARM download speed =====<br />
<br />
The following table lists the Flasher ARM performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! ARM7 memory download<br />
|-<br />
| Flasher ARM || 720 Kbytes/s (12MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
<br />
==== Specifications for Flasher RX ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Windows, Linux & MacOS<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C<br />
|-<br />
| Storage Temperature || -20 °C ... +60 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
!colspan="100%"| Mechanical<br />
|-<br />
| Size (without cables) || 121mm x 66mm x 30mm<br />
|-<br />
| Weight (without cables) || 119g<br />
|-<br />
!colspan="100%"| Available interfaces<br />
|-<br />
| USB Host interface || USB 2.0, full speed<br />
|-<br />
| Ethernet Host interface || 10/100 MBit<br />
|-<br />
| RS232 Host interface || RS232 9-pin<br />
|-<br />
| Target interface || JTAG 20-pin (shipped with 14-pin adapter for Renesas RX)<br />
|-<br />
!colspan="100%"| JTAG Interface, Electrical<br />
|-<br />
| Power Supply || USB powered, 100mA for Flasher RX. 500 mA if target is powered by Flasher RX<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| 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)<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6 <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Max. JTAG speed || up to 12MHz<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
===== Flasher RX download speed =====<br />
<br />
The following table lists the Flasher RX performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! Flasher RX600 series memory download<br />
|-<br />
| Flasher RX || 720 Kbytes/s (12MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
<br />
==== Specifications for Flasher PPC ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Windows, Linux & MacOS<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C<br />
|-<br />
| Storage Temperature || -20 °C ... +60 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
!colspan="100%"| Mechanical<br />
|-<br />
| Size (without cables) || 121mm x 66mm x 30mm<br />
|-<br />
| Weight (without cables) || 119g<br />
|-<br />
!colspan="100%"| Available interfaces<br />
|-<br />
| USB Host interface || USB 2.0, full speed<br />
|-<br />
| Ethernet Host interface || 10/100 MBit<br />
|-<br />
| RS232 Host interface || RS232 9-pin<br />
|-<br />
| Target interface || JTAG 20-pin (shipped with 14-pin adapter for Renesas PPC)<br />
|-<br />
!colspan="100%"| JTAG Interface, Electrical<br />
|-<br />
| Power Supply || USB powered, 100mA for Flasher PPC. 500 mA if target is powered by Flasher PPC<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| Target supply voltage || Supply voltage is 5V, max.<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6 <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Max. JTAG speed || up to 12MHz<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
===== Flasher RX download speed =====<br />
<br />
The following table lists the Flasher PPC performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! Memory download<br />
|-<br />
| Flasher PPC || 530 Kbytes/s (8 MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
<br />
==== Specifications for Flasher PRO ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Windows, Linux & MacOS<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C<br />
|-<br />
| Storage Temperature || -20 °C ... +60 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
!colspan="100%"| Mechanical<br />
|-<br />
| Size (without cables) || 121mm x 66mm x 30mm<br />
|-<br />
| Weight (without cables) || 119g<br />
|-<br />
!colspan="100%"| Available interfaces<br />
|-<br />
| USB Host interface || USB 2.0, full speed<br />
|-<br />
| Ethernet Host interface || 10/100 MBit<br />
|-<br />
| RS232 Host interface || RS232 9-pin<br />
|-<br />
| Target interface || JTAG 20-pin (14-pin adapter available)<br />
|-<br />
!colspan="100%"| JTAG Interface, Electrical<br />
|-<br />
| Power Supply || USB powered, 100mA for Flasher PRO. 500 mA if target is powered by Flasher PRO<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| Target supply voltage || Supply voltage is 5V, max.<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6 <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Max. JTAG speed || up to 12MHz<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
<br />
===== Supported CPU cores =====<br />
<br />
The Flasher PRO supports the following CPU cores:<br />
<br />
'''ARM Cortex'''<br><br />
* Cortex-A5<br />
* Cortex-A8<br />
* Cortex-A9<br />
* Cortex-R4<br />
* Cortex-R5<br />
* Cortex-M0<br />
* Cortex-M0+<br />
* Cortex-M1<br />
* Cortex-M3<br />
* Cortex-M4<br />
<br />
'''ARM (legacy cores)'''<br><br />
* ARM720T<br />
* ARM7TDMI<br />
* ARM7TDMI-S<br />
* ARM920T<br />
* ARM922T<br />
* ARM926EJ-S<br />
* ARM946E-S<br />
* ARM966E-S<br />
* ARM1136JF-S<br />
* ARM1136J-S<br />
* ARM1156T2-S<br />
* ARM1156T2F-S<br />
* ARM1176JZ-S<br />
* ARM1176JZF<br />
* ARM1176JZF-S<br />
<br />
'''Renesas RX'''<br><br />
* RX111<br />
* RX210<br />
* RX220<br />
* RX21A<br />
* RX610<br />
* RX621<br />
* RX62G<br />
* RX62N<br />
* RX62T<br />
* RX630<br />
* RX631<br />
* RX63N<br />
* RX63T<br />
<br />
'''Freescale Power PC'''<br><br />
* e200z0<br />
<br />
===== Supported Target interfaces =====<br />
<br />
The Flasher PRO supports the following target interfaces:<br />
<br />
* JTAG<br />
* SWD<br />
* FINE<br />
* SPD<br />
<br />
===== Flasher PRO download speed =====<br />
<br />
The following table lists the Flasher PRO performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! ARM7 memory download<br />
|-<br />
| Flasher PRO || 720 Kbytes/s (12MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
<br />
==== Specifications for Flasher Compact ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Microsoft Windows (x86/x64)<br>Linux (x86/x64/Arm)<br>macOS (x86/Apple M1)<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C<br />
|-<br />
| Storage Temperature || -20 °C ... +65 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
| Size (without cables) || 70mm x 45mm x 18mm<br />
|-<br />
| Weight (without cables) || 40g<br />
|-<br />
| USB Host interface || USB 2.0 (Hi-Speed); Micro USB<br />
|-<br />
| Target interface || JTAG 20-pin (14-pin adapter available)<br />
|-<br />
| Power Supply || USB powered, 130mA (idle)<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| Target supply voltage || Supply voltage is 5V, max.<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
| Supported target interfaces || SPI, QSPI, 8051 C2, cJTAG, FINE, ICSP, IIC, ISP, JTAG, PDI, SPD, SWD, SWIM, UART, UPDI<br />
|-<br />
| Serial transfer rate between Flasher Compact and target || Up to 50 MHz (Depending on target interface)<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6 <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
===== Supported CPU cores =====<br />
<br />
The Flasher Compact supports the following CPU cores:<br />
'''ARM Cortex'''<br><br />
* Cortex-A5<br />
* Cortex-A8<br />
* Cortex-A9<br />
* Cortex-R4<br />
* Cortex-R5<br />
* Cortex-M0<br />
* Cortex-M0+<br />
* Cortex-M1<br />
* Cortex-M3<br />
* Cortex-M4<br />
<br />
'''ARM (legacy cores)'''<br><br />
* ARM720T<br />
* ARM7TDMI<br />
* ARM7TDMI-S<br />
* ARM920T<br />
* ARM922T<br />
* ARM926EJ-S<br />
* ARM946E-S<br />
* ARM966E-S<br />
* ARM1136JF-S<br />
* ARM1136J-S<br />
* ARM1156T2-S<br />
* ARM1156T2F-S<br />
* ARM1176JZ-S<br />
* ARM1176JZF<br />
* ARM1176JZF-S<br />
<br />
'''Renesas RX'''<br><br />
* RX111<br />
* RX210<br />
* RX220<br />
* RX21A<br />
* RX610<br />
* RX621<br />
* RX62G<br />
* RX62N<br />
* RX62T<br />
* RX630<br />
* RX631<br />
* RX63N<br />
* RX63T<br />
<br />
'''Freescale Power PC'''<br><br />
* e200z0<br />
<br />
===== Flasher Compact download speed =====<br />
<br />
The following table lists the Flasher Compact performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! ARM7 memory download<br />
|-<br />
| Flasher Compact || 720 Kbytes/s (12MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
<br />
==== Specifications for Flasher Portable PLUS ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Windows, Linux & MacOS<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C (normal operation)<br>+5 °C ... +45 °C (battery charging)<br />
|-<br />
| Storage Temperature || -20 °C ... +45 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
| 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)<br />
|-<br />
| Charging via USB || 70 minutes (at 1A charging current)<br />
|-<br />
!colspan="100%"| Mechanical<br />
|-<br />
| Size (without cables) || 126mm x 70mm x 28mm<br />
|-<br />
| Weight (without cables) || 140g<br />
|-<br />
!colspan="100%"| Available interfaces<br />
|-<br />
| USB Host interface || USB 2.0<br />
|-<br />
| Target interface || Standard 20-pin 0.1" connector (Adapters available).<br />
|-<br />
!colspan="100%"| Target Interface, Electrical<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| Target supply voltage || Supply voltage is 4.5V, max. (depends on the current battery voltage).<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6 <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Max. JTAG speed || up to 12MHz<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
===== Supported CPU cores =====<br />
<br />
The Flasher Portable PLUS supports the following CPU cores:<br />
<br />
'''ARM Cortex'''<br><br />
* Cortex-A5<br />
* Cortex-A8<br />
* Cortex-A9<br />
* Cortex-R4<br />
* Cortex-R5<br />
* Cortex-M0<br />
* Cortex-M0+<br />
* Cortex-M1<br />
* Cortex-M3<br />
* Cortex-M4<br />
<br />
'''ARM (legacy cores)'''<br><br />
* ARM720T<br />
* ARM7TDMI<br />
* ARM7TDMI-S<br />
* ARM920T<br />
* ARM922T<br />
* ARM926EJ-S<br />
* ARM946E-S<br />
* ARM966E-S<br />
* ARM1136JF-S<br />
* ARM1136J-S<br />
* ARM1156T2-S<br />
* ARM1156T2F-S<br />
* ARM1176JZ-S<br />
* ARM1176JZF<br />
* ARM1176JZF-S<br />
<br />
'''Renesas RX'''<br><br />
* RX111<br />
* RX210<br />
* RX220<br />
* RX21A<br />
* RX610<br />
* RX621<br />
* RX62G<br />
* RX62N<br />
* RX62T<br />
* RX630<br />
* RX631<br />
* RX63N<br />
* RX63T<br />
<br />
'''Freescale Power PC'''<br><br />
* e200z0<br />
<br />
===== Supported Target interfaces =====<br />
<br />
The Flasher Portable PLUS supports the following target interfaces:<br />
* JTAG<br />
* SWD<br />
* FINE<br />
* SPD<br />
<br />
===== Flasher Portable PLUS download speed =====<br />
<br />
The following table lists the Flasher Portable PLUS performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! ARM7 memory download<br />
|-<br />
| Flasher PRO || 720 Kbytes/s (12MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
<br />
==== Specifications for Flasher Portable ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Windows, Linux & MacOS<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C<br />
|-<br />
| Storage Temperature || -20 °C ... +65 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
| Power Supply || a) USB powered, 100mA for Flasher Portable. 500 mA if target is powered by Flasher Portable<br>b) Batteries powered (3xAAA)<br />
|-<br />
!colspan="100%"| Mechanical<br />
|-<br />
| Size (without cables) || 130mm x 65mm x 25mm<br />
|-<br />
| Weight (without cables) || 120g<br />
|-<br />
!colspan="100%"| Available interfaces<br />
|-<br />
| USB Host interface || USB 2.0<br />
|-<br />
| Target interface || Standard 20-pin 0.1" connector (Adapters available).<br />
|-<br />
!colspan="100%"| Target Interface, Electrical<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| Target supply voltage || Supply voltage is 4.5V, max. (depends on the current battery voltage).<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6V <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Max. JTAG speed || up to 12MHz<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
===== Supported CPU cores =====<br />
<br />
The Flasher Portable supports the following CPU cores:<br />
<br />
'''ARM Cortex'''<br><br />
* Cortex-A5<br />
* Cortex-A8<br />
* Cortex-A9<br />
* Cortex-R4<br />
* Cortex-R5<br />
* Cortex-M0<br />
* Cortex-M0+<br />
* Cortex-M1<br />
* Cortex-M3<br />
* Cortex-M4<br />
<br />
'''ARM (legacy cores)'''<br><br />
* ARM720T<br />
* ARM7TDMI<br />
* ARM7TDMI-S<br />
* ARM920T<br />
* ARM922T<br />
* ARM926EJ-S<br />
* ARM946E-S<br />
* ARM966E-S<br />
* ARM1136JF-S<br />
* ARM1136J-S<br />
* ARM1156T2-S<br />
* ARM1156T2F-S<br />
* ARM1176JZ-S<br />
* ARM1176JZF<br />
* ARM1176JZF-S<br />
<br />
'''Renesas RX'''<br><br />
* RX111<br />
* RX210<br />
* RX220<br />
* RX21A<br />
* RX610<br />
* RX621<br />
* RX62G<br />
* RX62N<br />
* RX62T<br />
* RX630<br />
* RX631<br />
* RX63N<br />
* RX63T<br />
<br />
'''Freescale Power PC'''<br><br />
* e200z0<br />
<br />
===== Supported Target interfaces =====<br />
<br />
The Flasher Portable supports the following target interfaces:<br />
<br />
* JTAG<br />
* SWD<br />
* FINE<br />
* SPD<br />
<br />
===== Flasher Portable download speed =====<br />
<br />
The following table lists the Flasher Portable performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! ARM7 memory download<br />
|-<br />
| Flasher PRO || 720 Kbytes/s (12MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
== Working with Flasher ==<br />
<br />
This chapter describes functionality and how to use Flasher.<br />
<br />
=== Flasher Portable PLUS ===<br />
<br />
The Flasher Portable PLUS is a portable version of SEGGERs Flasher family,<br />
which has been designed to fill the need of an extremely portable, production grade,<br />
Flash programmer used for in-field firmware updates. No need to be tethered to an outlet,<br />
it is powered by an integrated Li-Ion cell (680mAh).<br />
The Flasher Portable PLUS programs flash targets in stand-alone mode or via J-Flash PC software.<br><br />
<br />
Furthermore the Flasher Portable PLUS allows the user to select between eight data images to be programmed.<br />
The images can be easily selected by using the SEL button on the front of the housing.<br />
For more information about support for multiple images, please refer to [[#Multiple File Support | Multiple File Support]].<br><br />
For setup and configuration purposes, the Flasher Portable PLUS connects to a PC via USB interface,<br />
running Windows, Linux & MacOS and has a built-in standard 20-pin J-Link target connector.<br><br />
<br />
{{Note|1=Ethernet and RS232 as host interface are not available for the Flasher Portable PLUS.}}<br />
<br />
==== Housing & Buttons ====<br />
<br />
The Flasher Portable PLUS comes with a display, which is for example used to represent the status of an ongoing flash progress.<br />
Furthermore, there are three buttons which allow the user to control Flasher Portable PLUS.<br />
For a detailed description of the functions, take a look at the table below:<br />
<br />
<!-- LG xxxxxx edit image with labels for buttons? (Is this actually necessary? Buttons are basically self-explanatory...) --><br />
[[File:Flasher_Portable_PLUS.png | 500px]]<br />
<br />
{| class="seggertable"<br />
|-<br />
! Button !! Description<br />
|-<br />
| Program || Start programming process with the currently selected image.<br />
|-<br />
| Select image || Select the image to be programmed next time the Program button is pressed.<br />
|-<br />
| 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.<br />
|-<br />
|}<br />
<br />
==== Configuration ====<br />
<br />
The Flasher Portable PLUS has some configuration options the other Flashers do not have.<br />
{| class="seggertable"<br />
|-<br />
! Option !! Description !! Value range !! Default value<br />
|-<br />
| AutoPowerOffOnIdle || Specifies the time interval after which the Flasher Portable will turn off without any user action || 1 to 3600 || 60<br />
|-<br />
| ShowDatCRCAfterProgramming || Activates displaying the data file CRC after the programming in the pop up message || 0 = inactive, 1 = active || 0<br />
|-<br />
|}<br />
<br />
If the <tt>Flasher.ini</tt> does not contain a <tt>[Config]</tt> section with the configuration option, the default value is used.<br />
<br />
'''Example:'''<br><br />
This sample will show the data file CRC after the programming and the auto power of is set to five minutes (=300 seconds).<br />
<br />
<source lang="c"><br />
[CONFIG]<br />
AutoPowerOffOnIdle = "300"<br />
ShowDatCRCAfterProgramming = "1"<br />
</source><br />
<br />
=== Flasher Portable ===<br />
<br />
The Flasher Portable is a portable version of SEGGERs Flasher family, which has been designed to fill the need of an extremely portable,<br />
production grade, Flash programmer used for in-field firmware updates. No need to be tethered to an outlet,<br />
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><br />
<br />
Furthermore the Flasher Portable allows the user to select between four data images to be programmed.<br />
The images can be easily selected by using the arrow buttons on the front of the housing.<br />
For more information about support for multiple images, please refer to [[#Multiple File Support | Multiple File Support]].<br><br />
For setup and configuration purposes, the Flasher Portable connects to a PC via USB interface,<br />
running Windows, Linux & MacOS and has a built-in standard 20-pin J-Link target connector.<br><br />
<br />
{{Note|1=Ethernet and RS232 as host interface are not available for the Flasher Portable.}}<br />
<br />
==== Housing & Buttons ====<br />
<br />
The Flasher Portable comes with several leds which are for example used to represent the status of an ongoing flash progress.<br />
Furthermore, there are three buttons which allow the user to control Flasher Portable.<br />
For a detailed description of the functions, take a look at the two tables below:<br />
<br />
<!-- LG xxxxxx edit image with labels for buttons?--><br />
[[File:Flasher_Portable_Top_2.png | 500px]]<br />
<br />
{| class="seggertable"<br />
|-<br />
! LED !! Description<br />
|-<br />
| ACTIVE || GREEN. Blinks while the Flasher Portable is busy / performs operations on the target.<br />
|-<br />
| PASS/FAIL || GREEN/RED. Indicates, if the last flashing cycle was successful.<br />
<ul><br />
<li> GREEN: Flashing cycle completed successfully.</li><br />
<li> RED: Flashing cycle completed with error.</li><br />
</ul><br />
|-<br />
| 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]].<br />
|-<br />
| POWER || GREEN: Indicates if Flasher is currently powered. Blinks while Flasher Portable tries to enumerate via USB.<br />
|-<br />
| 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.<br />
|-<br />
|}<br />
<br />
{| class="seggertable"<br />
|-<br />
! Button !! Description<br />
|-<br />
| Program || Start programming process with the currently selected image.<br />
|-<br />
| Select image || Select the image to be programmed next time the <tt>Program</tt> button is pressed.<br />
|-<br />
| 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<br />
|-<br />
|}<br />
<br />
=== File system ===<br />
<br />
The Flasher supports 8.3 filenames only (8 characters filename, 3 characters file extension).<br />
Using longer filenames may result in incorrect operation. Integrated functions,<br />
like the FTP server or the terminal server, will refuse writing files with long filenames.<br />
<br />
=== Setting up the IP interface ===<br />
<br />
Setting up the IP interface<br />
Some of the Flasher models come with an additional Ethernet interface to communicate with the host system.<br />
These Flashers also come with a built-in webserver which allows some basic setup of the emulator,<br />
e.g. configuring a default gateway which allows using it even in large intranets. For more information,<br />
please refer to [[#TCP Services | TCP Services]].<br />
<br />
==== Connecting the first time ====<br />
<br />
When connecting Flasher the first time, it attempts to acquire an IP address via DHCP.<br />
The recommended way for finding out which IP address has been assigned to Flasher is, to use the J-Link Configurator.<br />
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.<br />
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''.<br />
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,<br />
please refer to ''UM08001, J-Link / J-Trace User Guide'', chapter ''Setup'', section ''Setting up the IP interface''.<br />
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]].<br />
<br />
=== Operating modes ===<br />
<br />
All Flashers except the Flasher ATE are able to boot in 3 different modes:<br />
<br />
* PC-based mode<br />
* Stand-alone mode<br />
* File access mode<br />
<br />
{{Note|1=The Flasher ATE only supports the stand-alone mode.}}<br />
<br />
'''Definition PC-based mode'''<br><br />
Flasher is connected to a PC via USB/Ethernet and controlled by a PC application (J-Flash).<br />
If there is an RS232 connection to a PC, does not have any influence on if PC-based mode is entered or not.<br />
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, ...)<br />
<br />
'''Definition Stand-alone mode'''<br><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.<br />
<br />
'''Definition file access mode'''<br><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.<br />
In this mode, Flasher enumerates as a mass storage device (like an USB Stick) at the host PC.<br />
In this mode, configuration + data files can be manually placed on the Flasher and the Flasher logfile can be read out.<br />
If you are using a self-powered Flasher such as the Flasher Portable Plus, the Flasher must be turned off before connecting it.<br />
<br />
==== PC-based mode ====<br />
If you want to use Flasher for the first time you need to install the J-Link software and documentation package.<br />
After installation, connect Flasher to the host PC via USB or Ethernet.<br />
For more information about how to install the J-Link software and documentation package please refer to [[J-Link Software and Documentation Pack]].<br />
<br />
===== Connecting the target system =====<br />
<br />
'''Power-on sequence'''<br><br />
In general, Flasher should be powered on before connecting it with the target device.<br />
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.<br />
Power-on the device after you connected Flasher to it. Flasher will boot in "PC-based mode".<br />
<br />
'''Verifying target device connection with J-Link.exe'''<br><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.<br />
Then start the J-Link command line tool <tt>JLink.exe</tt>,<br />
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.<br />
The screenshot below shows the output of <tt>JLink.exe</tt>.<br />
<br />
[[File:flasher_jlinkmode.gif]]<br />
<br />
===== LED status indicators =====<br />
<br />
In PC-based mode, there are also certain LED status codes defined:<br />
<br />
{| class="seggertable"<br />
|-<br />
! # !! Status of LED !! Meaning<br />
|-<br />
| 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.<br />
|-<br />
| 0 || GREEN<br>constant || Flasher enumeration process is complete and it is ready to be controlled by a PC application.<br />
|-<br />
|}<br />
<br />
==== Stand-alone mode ====<br />
<br />
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]].<br />
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).<br />
In the "stand-alone mode" Flasher can be used as a stand-alone flash programmer.<br><br />
<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]].}}<br />
<br />
===== LED status indicators =====<br />
Progress and result of an operation is indicated by Flasher's LEDs. The behavior is different for J-Link and stand-alone mode.<br />
For a definition of the different modes, please refer to [[#Operating modes | Operating modes]].<br />
The following table describes the behavior of the LEDs in stand-alone mode.<br />
<br />
{| class="seggertable"<br />
|-<br />
! # !! Status of LED !! Meaning<br />
|-<br />
| 0 || GREEN<br>constant || Flasher waits for a start trigger to perform an operation in stand-alone mode.<br />
|-<br />
| 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><br />
|-<br />
| 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.<br />
|-<br />
|}<br />
Older Flasher models have a different behavior.<br />
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:<br />
<br />
* 1621xxxxx (Flasher ARM V2)<br />
* 1630xxxxx (Flasher ARM V3)<br />
* 4210xxxxx (Flasher PPC V1)<br />
* 4110xxxxx (Flasher RX V1)<br />
<br />
{| class="seggertable"<br />
|-<br />
! # !! Status of LED !! Meaning<br />
|-<br />
| 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.<br />
|-<br />
| 1 || GREEN<br>constant || Connect to target and perform init sequence.<br />
|-<br />
| 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><br />
|-<br />
| 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.<br />
|-<br />
|}<br />
<br />
==== File access mode ====<br />
<br />
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".<br />
If you are using a self-powered Flasher such as the Flasher Portable Plus, the Flasher must be turned off before connecting it.<br />
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.<br />
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>.<br />
<br />
[[File:flasher_mode_msd.gif]]<br />
<br />
<tt>FLASHER.CFG</tt> contains the configuration settings for programming the target device and <tt>FLASHER.DAT</tt> contains the data to be programmed.<br />
<tt>FLASHER.LOG</tt> contains all logging information about the commands, performed in stand-alone mode.<br />
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><br />
<br />
Currently, J-Flash does not support to configure Flasher for automated serial number programming.<br><br />
<br />
If you want to configure multiple Flasher for the same target you do not have to use J-Flash all the time.<br />
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".<br />
<br />
=== Setting up Flasher for stand-alone mode ===<br />
<br />
In order to set up Flasher for the stand-alone mode it needs to be configured once using the J-Flash software.<br />
For more information about J-Flash, please refer to the ''J-Flash User Guide''.<br><br />
<br />
After starting J-Flash, open the appropriate J-Flash project for the target Flasher shall be configured for, by selecting '''File''' -> '''Open Project'''.<br />
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><br />
<br />
After the appropriate project has been opened / created, the data file which shall be programmed needs to be loaded, by selecting '''File''' -> '''Open'''.<br />
After this J-Flash should look like in the screenshot below.<br />
<br />
[[File:jflash_projectfile_datafile.gif]]<br />
<br />
Before downloading the configuration (project) and program data (data file) to Flasher, the connection type (USB/IP) needs to be selected in the project.<br />
These settings are also saved on a per-project basis, so this also only needs to be setup once per J-Flash project.<br />
The connection dialog is opened by clicking '''Options''' -> '''Project settings''' -> '''General'''.<br />
<br />
[[File:jflash_connection_dialog.gif]]<br />
<br />
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.<br />
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.<br />
The user then can simply select the Flash he wants to download the configuration to.<br />
<br />
[[File:EmuSelectionDialog.gif]]<br />
<br />
In order to download the configuration and program data to the Flasher, simply select '''File''' -> '''Download config & data file to Flasher'''.<br />
<br />
[[File:jflash_download_to_emul.gif]]<br />
<br />
The J-Flash log window indicates that the download to the emulator was successful.<br />
<br />
[[File:jflash_download_to_emu_succ.gif]]<br />
<br />
From now on, Flasher can be used in stand-alone mode (without host PC interaction) for stand-alone programming.<br />
<br />
==== Preparing for stand-alone operation manually ====<br />
<br />
As an alternative, J-Flash can also be used to save config and data file to a hard drive.<br><br />
<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,<br />
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.<br />
<br />
'''Creating config and data files'''<br><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><br />
<br />
For some devices, additional files (*.PEX) are needed.<br />
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.<br />
<br />
'''About *.PEX files'''<br><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,<br />
the following needs to be taken care of:<br><br />
<br />
For some devices, special connect, reset etc. sequences are necessary which are stored in so-called *.PEX files on the Flasher.<br><br />
<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><br />
<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><br />
The *.PEX files need to be placed in a subdirectory with the same name as the corresponding *.cfg file.<br />
J-Flash creates a directory with the correct name automatically when a config file is created.<br><br />
<br />
Example:<br><br />
<br />
MyConf0 is a project for a device that requires a *.PEX file for connect.<br><br />
MyConf1 is a project for a device that requires no *.PEX file at all.<br />
<br />
[[File:PEX_File_Flasher.png]]<br />
<br />
=== Universal Flash Loader mode ===<br />
<br />
As an alternative to the stand-alone mode, configured via J-Flash, there is the Universal Flash Loader mode.<br />
While the normal stand-alone mode relies on using the debug interface of the device, the Universal Flash Loader<br />
mode uses device or vendor specific programming interfaces and protocols and therefore it is independent of the<br />
CPU core.<br><br />
<br />
The Universal Flash Loader is available for the following Flasher models:<br />
* Flasher PRO<br />
* Flasher Compact<br />
* Flasher Portable PLUS<br />
<br />
For some of the supported devices, SEGGER offers specific adapters.<br />
<br />
==== Preparing manually ====<br />
<br />
The Universal Flash Loader uses an configuration file (*.UNI), a device specific flash programming algorithm (*.PEX) and a data file (*.DAT).<br />
<br />
===== Configuration =====<br />
<br />
The configuration file basically is split into three parts.<br />
The first part, the section [DEVICE], controls the generic behavior of the Universal Flash Loader.<br />
It specifies which protocol driver and data file to use. It allows enabling and configuring target power<br />
and it defines which actions to perform.<br />
The second part consists of one or more [BANKx] sections, which contain information about the memories.<br />
The third part, the section [CONFIG], includes configuration settings for the protocol driver.<br><br />
<br />
An .UNI file might look as follows:<br><br />
<br />
<source lang="c"><br />
[OPTIONS]<br />
TargetPower = "0"<br />
ChipErase = "0"<br />
<br />
[TASKS]<br />
CheckBlank = "1"<br />
Erase = "1"<br />
Program = "1"<br />
Verify = "1"<br />
Secure = "1"<br />
<br />
[DEVICE]<br />
Algo = "RL78.PEX"<br />
Data = "ALL_6k.dat"<br />
<br />
[BANK0]<br />
; Code Flash<br />
Base = "0x00000000"<br />
Size = "0x00004000"<br />
Sect = "0x00000400"<br />
<br />
[BANK1]<br />
; Data Flash<br />
Base = "0x000F1000"<br />
Size = "0x00000800"<br />
Sect = "0x00000400"<br />
<br />
[CONFIG]<br />
BaudRate = "1000000"<br />
ClearConfigOnConnect = "0x00"<br />
Security = "0xFF"<br />
ShieldStart = "0x0000"<br />
ShieldEnd = "0x000F"<br />
</source><br />
<br />
'''[OPTIONS]'''<br><br />
'''TargetPower'''<br><br />
If set to a value >0, power is applied to the target.<br />
The value defines the delay (in ms) after enabling the target power supply and before starting to communicate with the target.<br />
<br />
'''ChipErase'''<br><br />
If set to 1, the chip erase function is called for erasing the chip.<br><br />
{{Note|1=Do not enable this setting if the flash programming algorithm does not support chip erase.}}<br />
<br />
'''[TASKS]'''<br><br />
'''CheckBlank'''<br><br />
Defines if a blank check should be performed before erasing a sector.<br />
<br />
'''Erase'''<br><br />
Defines if the sector should be erased before programming.<br />
<br />
'''Program'''<br><br />
Defines if the sector should be programmed.<br />
<br />
'''Verify'''<br><br />
Defines if the sector should be verified after programming.<br />
<br />
'''Secure'''<br><br />
Defines if the device should be secured or protected against read-out after verifying.<br />
<br />
'''[DEVICE]'''<br><br />
'''Algo'''<br><br />
File name of the flash programming algorithm. This file is provided by SEGGER and will typically support a series of devices.<br />
<br />
'''Data'''<br><br />
File name of the data file to program. The Flasher only supports the Flasher .dat file format.<br />
Flasher .dat files can be generated by J-Flash or Universal Flash Loader and offer high performance together with high flexibility.<br />
<br />
'''[BANKx]'''<br><br />
x blocks with configuration data for the flash banks. All three parameters (Base, Size and Sect) are mandatory.<br />
<br />
'''Base'''<br><br />
Base address of the flash bank.<br />
<br />
'''Size'''<br><br />
Total size of the flash bank.<br />
<br />
'''Sect'''<br><br />
Sector size of the flash bank.<br />
<br />
'''[CONFIG]'''<br><br />
This section includes specific configuration data for the flash programming algorithm.<br><br />
There are no general parameters.<br />
<br />
{{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. }}<br />
<br />
==== Preparing using the PC utility ====<br />
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.<br />
<br />
[[File:Universal Flash Loader.png]]<br />
<br />
The Universal Flash Loader Configurator comes with a large list of devices and flash programming algorithms. If you are going to<br />
use a device from one of the supported families which currently is not available in the utility, feel free to contact the support.<br />
<br />
=== Multiple File Support ===<br />
<br />
It is also possible to have multiple data files and config files on Flasher, to make Flasher more easy to use in production environment.<br />
To choose the correct configuration file and data file pair, a <tt>FLASHER.INI</tt> file is used.<br />
This init file contains a <tt>[FILES]</tt> section which describes which configuration file and which data file should be used for programming.<br />
A sample content of a FLASHER.INI file is shown below:<br><br />
<br />
<source><br />
[FILES]<br />
DataFile = "Flasher1.dat"<br />
ConfigFile = "Flasher1.cfg"<br />
</source><br />
<br />
Using this method all configuration files and data files which are used in the production only have to be downloaded once.<br />
From there on a configuration file / data file pair can be switched by simply replacing the <tt>FLASHER.INI</tt> by a new one,<br />
which contains the new descriptions for the configuration file and data file. The <tt>FLASHER.INI</tt> can be replaced in two ways:<br />
<ol><br />
<li>Boot Flasher in file access mode in order to replace the <tt>FLASHER.INI</tt></li><br />
<li><br />
If Flasher is already integrated into the production line, runs in stand-alone mode and can not be booted in other mode:<br />
Use the file I/O commands provided by the ASCII interface of Flasher, to replace the <tt>FLASHER.INI</tt>.<br />
For more information about the file I/O commands, please refer to [[#File I/O commands | File I/O commands]].<br />
</li><br />
</ol><br />
{{Note|1=Flasher supports 8.3 filenames only (8 characters filename, 3 characters file extension). Using longer filenames may result in incorrect operation.}}<br />
<br />
==== Flasher Portable specifics ====<br />
<br />
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><br />
<br />
Which config / data file pair is used for which image selection position is determined by the contents of the FLASHER.INI.<br />
For this, the FLASHER.INI contents in the <tt>[FILES]</tt> section have been extended.<br />
The sample below shows how to enable the user to select between four different images on the Flasher portable via the select / arrow button:<br />
<br />
<source><br />
[FILES]<br />
DataFile = "First.dat"<br />
ConfigFile = "First.cfg"<br />
DataFile1 = "Second.dat"<br />
ConfigFile1 = "Second.cfg"<br />
DataFile2 = "Third.dat"<br />
ConfigFile2 = "Third.cfg"<br />
DataFile3 = "Fourth.dat"<br />
ConfigFile3 = "Fourth.cfg"<br />
</source><br />
<br />
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.<br />
From there on, switching between the files can be done by simply using the selection button of Flasher Portable.<br />
<br />
===== Example =====<br />
<br />
1 Target, 2 Datafiles (e.g. boot loader und application) --> same configuration file (*.CFG) but different data files (*.DAT) should be used.<br><br />
<br />
* Open pre-configured J-Flash project<br />
* File -> Save Flasher config file ... (DEFAULT.CFG)<br />
* Open data file 1 (boot loader)<br />
* File -> Save Flasher data file ... (BOOT.DAT)<br />
* Open data file 2 (application)<br />
* File -> Save Flasher data file ... (APP.DAT)<br />
* Create the a FLASHER.INI file (content see below)<br />
* Connect the Flasher in file access mode to the PC<br />
* Copy DEFAULT.CFG, BOOT.DAT, APP.DAT and FLASHER.INI on the Flasher<br />
<br />
FLASHER.INI content:<br><br />
<br />
<source><br />
[FILES]<br />
DataFile = "BOOT.DAT"<br />
ConfigFile = "DEFAULT.CFG"<br />
DataFile1 = "APP.DAT"<br />
ConfigFile1 = "DEFAULT.CFG"<br />
</source><br />
<br />
==== Flasher Portable PLUS specifics ====<br />
<br />
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><br />
<br />
Which config / data file pair is used for which image selection position is determined by the contents of the FLASHER.INI.<br />
For this, the FLASHER.INI may contain several <tt>[BATCH]</tt> sections.<br />
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:<br />
<br />
<source><br />
[BATCH]<br />
DataFile = "First.dat"<br />
ConfigFile = "First.cfg"<br />
[BATCH1]<br />
DataFile = "Second.dat"<br />
ConfigFile = "Second.cfg"<br />
[BATCH2]<br />
DataFile = "Third.dat"<br />
ConfigFile = "Third.cfg"<br />
[BATCH7]<br />
DataFile = "Proj_8.dat"<br />
ConfigFile = "Proj_8.cfg"<br />
[BATCH15]<br />
DataFile = "Proj_16.dat"<br />
ConfigFile = "Proj_16.cfg"<br />
</source><br />
<br />
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.<br />
From there on, switching between the files can be done by simply using the selection button of Flasher Portable PLUS.<br />
<br />
Please also consider the chapter [[#Batch Programming in stand-alone mode | Batch Programming in stand-alone mode]].<br />
<br />
{{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.}}<br />
{{Note|1=You may have gaps in the list. The missing entries will be skipped when selecting the next configuration.}}<br />
{{Note|1=The <tt>[Files]</tt> section is supported by the Flasher Portable PLUS, too. But the number of configuration is limited to four.}}<br />
<br />
===== Example =====<br />
<br />
1 Target, 2 Datafiles (e.g. boot loader und application) --> same configuration file (*.CFG) but different data files (*.DAT) should be used.<br><br />
<br />
* Open pre-configured J-Flash project<br />
* File -> Save Flasher config file ... (DEFAULT.CFG)<br />
* Open data file 1 (boot loader)<br />
* File -> Save Flasher data file ... (BOOT.DAT)<br />
* Open data file 2 (application)<br />
* File -> Save Flasher data file ... (APP.DAT)<br />
* Create the a FLASHER.INI file (content see below)<br />
* Connect the Flasher in file access mode to the PC<br />
* Copy DEFAULT.CFG, BOOT.DAT, APP.DAT and FLASHER.INI on the Flasher<br />
<br />
FLASHER.INI content:<br><br />
<br />
<source><br />
[BATCH]<br />
DataFile = "BOOT.DAT"<br />
ConfigFile = "DEFAULT.CFG"<br />
DisplayName = "Bootloader"<br />
[BATCH1]<br />
DataFile = "APP.DAT"<br />
ConfigFile = "DEFAULT.CFG"<br />
DisplayName = "Application"<br />
[BATCH2]<br />
DataFile = "BOOT.DAT"<br />
ConfigFile = "DEFAULT.CFG"<br />
DataFile1 = "APP.DAT"<br />
ConfigFile1 = "DEFAULT.CFG"<br />
DisplayName = "BL and App"<br />
</source><br />
<br />
=== Custom labels ===<br />
<br />
Flasher supports to assign custom labels to configurations. This allows to specify easy to remember names for configurations that are stored on the Flasher.<br />
<br />
==== Hardware and software requirements ====<br />
This feature is supported by the following models:<br />
* Flasher Portable PLUS<br />
<br />
This feature is supported since V6.30e of the software package and firmware<br />
<br />
==== Assigning labels ====<br />
The configuration and data file pairs are specified in the <tt>FLASHER.INI</tt> file:<br />
<source><br />
[FILES]<br />
DataFile = "IMAGE0.dat"<br />
ConfigFile = "IMAGE0.cfg"<br />
DataFile1 = "IMAGE1.dat"<br />
ConfigFile1 = "IMAGE1.cfg"<br />
</source><br />
<br />
By default, Flasher will show the names of the configuration and data file:<br />
[[File:FW1_smartwatch_nolabel.png]]<br />
[[File:FW2_smart_meter_nolabel.png]]<br />
<br />
By adding <tt>DisplayName</tt>, <tt>DisplayName1</tt>, ... keys to the <tt>FLASHER.INI</tt>, a custom label can be shown instead:<br />
<source><br />
[FILES]<br />
DisplayName = "FW smartwatch"<br />
DataFile = "IMAGE0.dat"<br />
ConfigFile = "IMAGE0.cfg"<br />
DisplayName1 = "FW smart meter"<br />
DataFile1 = "IMAGE1.dat"<br />
ConfigFile1 = "IMAGE1.cfg"<br />
</source><br />
<br />
The images will now be shown as follows:<br />
[[File:FW1_smartwatch_label.png]]<br />
[[File:FW2_smart_meter_label.png]]<br />
<br />
==== Considerations ====<br />
* 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.<br />
<br />
=== Programming multiple targets ===<br />
<br />
It is possible to program multiple targets which are located in a JTAG chain.<br />
The targets will be programmed each with a configuration and a data file.<br />
The configuration for the desired target must be selected before it can be programmed,<br />
this can be done with the <tt>#SELECT</tt> command.<br />
For more information how to use the <tt>#SELECT</tt> command please refer to Chapter "3.3.5 ''Commands to Flasher''".<br />
<br />
'''Example'''<br><br />
Three devices should be programmed.<br><br />
<br />
JTAG Chain: ''TDI'' --> ''Device2'' --> ''Device1'' --> ''Device0'' --> ''TDO''<br><br />
<br />
Three configurations would be stored on the flasher:<br><br />
<br />
Config 0: Configured to program Device0 (DEVICE0.CFG, DEVICE0.DAT)<br><br />
Config 1: Configured to program Device1 (DEVICE1.CFG, DEVICE1.DAT)<br><br />
Config 2: Configured to program Device2 (DEVICE2.CFG, DEVICE2.DAT)<br><br />
<br />
Selection and programming of the target will be done via the ASCII interface:<br><br />
<br />
<source><br />
#SELECT DEVICE0<br />
#AUTO<br />
#SELECT DEVICE1<br />
#AUTO<br />
#SELECT DEVICE2<br />
#AUTO<br />
</source><br />
<br />
==== Programming multiple targets with J-Flash ====<br />
<br />
Programming multiple targets can also be done via J-Flash using the command line interface.<br />
For this each target must be handled with its own project file.<br />
<br />
'''Example'''<br><br />
<br />
<source><br />
JFlash.exe -openproj"Device0.jflash" -open"Device0.hex" -auto -exit<br />
JFlash.exe -openproj"Device1.jflash" -open"Device1.hex" -auto -exit<br />
JFlash.exe -openproj"Device2.jflash" -open"Device2.hex" -auto -exit<br />
</source><br />
<br />
=== Batch Programming in stand-alone mode ===<br />
<br />
Batch programming allows to execute different stand-alone mode jobs in batch to be executed in immediate succession, without any user interaction in between.<br />
This can be used for example to program multiple targets in a JTAG-Chain or multiple data files to a target.<br><br />
A batch may contains an unlimited number of configurations which consist of a data file (*.DAT) and config file (*.CFG).<br />
For further information regarding config and data files, please refer to [[#Preparing for stand-alone operation manually | Preparing for stand-alone operation manually]].<br><br />
In order to specify the batch jobs, a FLASHER.INI file is used.<br />
This init file contains a [BATCH] section which describes which configuration pairs (*.DAT and *.CFG file) should be used for each batch job.<br />
A sample content of a FLASHER.INI file is shown below:<br><br />
<br />
<source><br />
[BATCH]<br />
DataFile = "Flasher0.dat"<br />
ConfigFile = "Flasher0.cfg"<br />
DataFile1 = "Flasher1.dat"<br />
ConfigFile1 = "Flasher1.cfg"<br />
</source><br />
<br />
[[File:Batch_Jobs.bmp]]<br />
<br />
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.<br />
<br />
<br />
[[File:Batch_Programming.bmp]]<br />
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<br />
currently executed action.<br />
<br />
<br />
[[File:Batch_Result.bmp]]<br />
The result of the programming will be shown on the screen after finishing all jobs.<br />
<br />
<br />
Creating / Replacing of the FLASHER.INI file can done in two ways:<br><br />
<ol><br />
<li>Boot Flasher in file access mode in order to replace the FLASHER.INI</li><br />
<li><br />
If Flasher is already integrated into the production line, runs in stand-alone mode and can not be booted in other mode:<br />
Use the file I/O commands provided by the ASCII interface of Flasher, to replace the FLASHER.INI .<br />
For more information about the file I/O commands, please refer to [[#File I/O commands | File I/O commands]].<br />
In case of an error occurred during execution, the Flasher terminates the entire batch processing.<br />
</li><br />
</ol><br />
{{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.}}<br />
{{Note|1=Flasher supports 8.3 filenames only (8 characters filename, 3 characters file extension). Using longer filenames may result in incorrect operation.}}<br />
<br />
==== Flasher Portable specifics ====<br />
<br />
Flasher Portable allows to choose between four different batches during runtime by using the select/arrow button on the front of Flasher Portable.<br />
Which batch configuration is used for which image selection position is specified in the FLASHER.INI.<br />
For this, the FLASHER.INI contents in the [BATCH] section have been extended.<br />
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><br />
<br />
<source><br />
[BATCH]<br />
DataFile = "Flasher0.dat"<br />
ConfigFile = "Flasher0.cfg"<br />
DataFile1 = "Flasher1.dat"<br />
ConfigFile1 = "Flasher1.cfg"<br />
DataFile2 = "Flasher2.dat"<br />
ConfigFile2 = "Flasher2.cfg"<br />
[BATCH1]<br />
DataFile = "TEST.dat"<br />
ConfigFile = "Test.cfg"<br />
[BATCH2]<br />
DataFile = "VALIDATE.dat"<br />
ConfigFile = "Flasher0.cfg"<br />
</source><br />
<br />
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.<br />
From there on, switching between the batches can be done by simply using the selection button of Flasher Portable.<br />
<br />
<br />
<br />
==== Examples ====<br />
<br />
'''Example 1:''' Programming two Data files to the same target<br><br />
<br />
* Open your J-Flash project.<br />
* Use File -> Save Flasher config file... to save the .CFG file (in this example: STM32F4.CFG).<br />
* Select the first binary and use File -> Save Flasher Data file... to save the first .DAT file (in this example: DATA0.DAT).<br />
* Select the second binary and use File -> Save Flasher Data file... to save the second data file .DAT file (in this example: DATA1.DAT).<br />
* Copy the Files to the Flasher e.g. by using file access mode.<br />
* Create a FLASHER.INI file in the root directory of the Flasher.<br />
* Exemplary content of FLASHER.INI:<br><br />
<source><br />
[BATCH]<br />
DataFile = "DATA0.dat"<br />
ConfigFile = "emPower.cfg"<br />
DataFile1 = "DATA1.dat"<br />
ConfigFile1 = "emPower.cfg"<br />
</source><br />
<br />
<br />
'''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><br />
Example scenario: 2 Devices in a JTAG chain, a STM32F1 and a STM32F4. <br><br />
<br />
* Follow the same as described before and additionally:<br />
* Create one project file per target (and create a .CFG file of each one).<br />
* Make sure each project file is configured correctly, especially the JTAG-Chain position (See UM8003 "J-Flash" for more detailed info).<br />
* Exemplary content of FLASHER.INI:<br><br />
<source><br />
[BATCH]<br />
DataFile = "F1DATA.dat"<br />
ConfigFile = "STM32F1.cfg"<br />
DataFile1 = "F4DATA0.dat"<br />
ConfigFile1 = "STM32F4.cfg"<br />
DataFile2 = "F4DATA1.dat"<br />
ConfigFile2 = "STM32F4.cfg"<br />
</source><br />
<br />
'''Example 3:''' Using multiple Batch sections with Flasher Portable.<br><br />
Example scenario: 2 Devices in a JTAG chain, a STM32F1 and a STM32F4.<br><br />
Selection 1 will program the STM32F1 target.<br><br />
Selection 2 will program the STM32F4 target using "F4DATA0.dat".<br><br />
Selection 3 will program the STM32F4 target using "F4DATA1.dat".<br><br />
Selection 4 will execute 1, 2 and 3 in sequence.<br><br />
* Exemplary content of FLASHER.INI:<br><br />
<source><br />
[BATCH]<br />
DataFile = "F1DATA.dat"<br />
ConfigFile = "STM32F1.cfg"<br />
[BATCH1]<br />
DataFile = "F4DATA0.dat"<br />
ConfigFile = "STM32F4.cfg"<br />
[BATCH2]<br />
DataFile = "F4DATA1.dat"<br />
ConfigFile = "STM32F4.cfg"<br />
[BATCH3]<br />
DataFile = "F1DATA.dat"<br />
ConfigFile = "STM32F1.cfg"<br />
DataFile1 = "F4DATA0.dat"<br />
ConfigFile1 = "STM32F4.cfg"<br />
DataFile2 = "F4DATA1.dat"<br />
ConfigFile2 = "STM32F4.cfg"<br />
</source><br />
<br />
=== Serial number programming ===<br />
<br />
Flasher supports programming of serial numbers. In order to use the serial number programming feature,<br />
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><br />
<br />
In general, Flasher supports two ways of programming a serial number into the target:<br><br />
<ol><br />
<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><br />
<li><br />
Programming custom serial numbers from a serial number list file.<br />
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.<br />
Serial number list file needs to be specified and created by user.<br />
</li><br />
</ol><br />
In the following some generic information how to setup Flasher & the J-Flash project for serial number programming are given.<br><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.}}<br />
{{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.}}<br />
<br />
==== Serial number settings ====<br />
<br />
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.<br />
This is done by enabling the '''Program serial number''' option as shown in the screenshot and table below:<br><br />
<br />
[[File:SN_Sample_JFlashSettings.gif]]<br />
<br />
{| class="seggertable"<br />
|-<br />
! Setting !! Meaning<br />
|-<br />
| <tt>Address</tt> || The address the serial number should be programmed at.<br />
|-<br />
| <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.<br />
|-<br />
| <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.<br />
|-<br />
| <tt>Increment</tt> || Specifies how much <tt>Next SN</tt> is incremented.<br />
|-<br />
|}<br />
<br />
==== Serial number file ====<br />
<br />
When selecting '''File -> Download serial number file to Flasher''', J-Flash will create a Serial number file named as <tt><JFlashProjectName>_Serial.txt</tt>.<br />
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.<br />
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.<br />
<br />
==== Serial number list file ====<br />
<br />
In order to program custom serial numbers which can not be covered by the standard serial number scheme provided by J-Flash<br />
(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.<br />
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.<br />
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><br />
* One serial number per line<br />
* Each byte of the serial number is described by two hexadecimal digits.<br />
<br />
'''Example'''<br><br />
A 8-byte serial number should be programmed at address 0x08000000.<br><br />
<br />
It should be programmed as follows in the memory:<br><br />
<br />
<tt>0x08000000: 0x01 0x02 0x03 0x04 0x55 0x66 0x77 0x88</tt><br><br />
<br />
The serial number list file should look as follows:<br><br />
<br />
<tt>0102030455667788</tt><br />
<br />
[[File:SN_SNList.gif]]<br />
<br />
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><br />
<br />
Which line Flasher will read at the next programming cycle, is configured via the <tt>Next SN</tt> option in J-Flash.<br />
For more information, please refer to [[#Serial number settings | Serial number settings]].<br />
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><br />
<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.}}<br />
{{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.}}<br />
<br />
==== Programming process ====<br />
<br />
Flasher will increment the serial number in SERIAL.TXT by the value defined in <tt>Increment</tt>, after each successful programming cycle.<br><br />
<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><br />
<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.<br />
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.}}<br />
<br />
==== Downloading serial number files to Flasher ====<br />
<br />
Downloading the serial number files needs to be done explicitly by selecting '''File-> Download serial number file to Flasher'''.<br />
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.<br />
<br />
==== Sample setup ====<br />
<br />
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.<br />
<br />
'''Defining serial number address, length and start value'''<br><br />
In the J-Flash project the following needs to be defined:<br><br />
* <tt>Address</tt> is 0x08001000<br />
* <tt>Next SN</tt> is 1234567<br />
* <tt>Increment</tt> is 1<br />
* <tt>Len</tt> is 4 (bytes)<br />
<br />
[[File:SN_Sample_JFlashSettings.gif]]<br />
<br />
'''Downloading configuration, data and serial number to Flasher.'''<br><br />
After setting up the rest of the configuration (Target interface etc.) and selecting an appropriate data file, the configuration,<br />
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><br />
<br />
[[File:SN_Sample_DownloadToFlasher.gif]]<br />
<br />
After downloading the serial number to Flasher, J-Flash also created the <tt><JFlashProjectName>_Serial.txt</tt>.<br />
<br />
[[File:SN_Sample_SerialFileCreated.gif]]<br />
<br />
Now Flasher is prepared to program the 8-byte serial number.<br />
<br />
=== Patch file support ===<br />
<br />
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.<br />
Before starting programming process in stand-alone mode, Flasher will look for a file named <tt>Patches.txt</tt> being present on the Flasher.<br />
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><br />
<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.<br />
<br />
'''Syntax'''<br><br />
<!-- LG xxxxxxxxx '==' is shown as '=', so instead use '= ='--><br />
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><br />
<br />
<tt><NumPatches>,<Addr>,<NumBytes>:<nowiki><Data></nowiki>,<Addr>,<NumBytes>:<nowiki><Data></nowiki>,<Addr>,</tt><br><br />
<tt><NumBytes>:<nowiki><Data></nowiki>,<Addr>,<NumBytes>:<nowiki><Data></nowiki>\r\n</tt><br><br />
<br />
Find below a table which describes each parameter.<br><br />
{| class="seggertable"<br />
|-<br />
! Parameter !! Description<br />
|-<br />
| <tt><NumPatches></tt> || Describes the number of patches in this patch line. Max. value is 4.<br />
|-<br />
| <tt><Addr></tt> || Describes the address to be patched. Value is expected in hex.<br />
|-<br />
| <tt><NumBytes></tt> || Number of bytes for the current patch. Max. value is 20h (32 in decimal). Value is expected in hex.<br />
|-<br />
| <tt><nowiki><Data></nowiki></tt> || Describes the data to be patched. <nowiki><Data></nowiki> is always expected as 2 hexadecimal characters per byte.<br />
|-<br />
|}<br />
<br />
{{Note|1=All values are expected in hexadecimal format (hex).<br><br />
<nowiki><Data></nowiki> section is always preceded by ":", not ",".}}<br />
<br />
'''Example'''<br><br />
Below is an example patch.<br><br />
<br />
<source><br />
1,18,4:01020304\r\n<br />
</source><br />
<br />
Patching the following data:<br />
<br />
[[File:data_before.png]]<br />
<br />
with the example patch will result in the following data:<br />
<br />
[[File:data_afterwards.png]]<br />
<br />
Please note that as mentioned earlier patching undefined memory locations will be ignored.<br><br />
Applying the example patch to the following data:<br />
<br />
[[File:undefined_mem_before.png]]<br />
<br />
Causes no data to be patched, as can be seen in the following image:<br />
<br />
[[File:undefined_mem_no_token.png]]<br />
<br />
Therefore it is necessary to first write placeholder data to the memory locations which are supposed to be patched.<br><br />
An example for such a placeholder can be seen here:<br />
<br />
[[File:undefined_mem_token.png]]<br />
<br />
Please note that the actual data inside the placeholder does not matter to the Flasher,<br />
because it is overwritten during patching.<br><br />
Applying the example patch will now work as expected:<br />
<br />
[[File:undefined_mem_after.png]]<br />
<br />
'''Single patch via RS232'''<br><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><br />
<br />
Send the <tt>#AUTO PATCH <NumPatches>,<Addr>,<NumBytes>:<nowiki><Data></nowiki></tt><br><br />
<br />
command via Flasher ASCII interface. The parameters have the same function as described in the table above.<br />
<br />
==== Newline encoding ====<br />
<br />
In general, for all patch files, init files etc. Flasher supports both newline encodings:<br><br />
<br />
* Windows: \r\n<br />
* Unix/Mac: \n<br />
<br />
All parser functionality etc. are written to be independent from the host operating system.<br />
<br />
=== Limiting the number of programming cycles ===<br />
<br />
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.<br />
To make use of this feature, a file called <tt>Cntdown.txt</tt> needs to be placed on the Flasher.<br />
This file simply contains a decimal number (32-bit unsigned integer) that describes how many programming cycles can be performed with the current setup.<br />
<br />
[[File:CntdownTxtContent.jpg]]<br />
<br />
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><br />
<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>.}}<br />
<br />
==== Changed fail/error LED indicator behavior ====<br />
<br />
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><br />
<br />
* The red error/fail LED will lit for 1 second<br />
* After this, it will blink/toggle x times @ 5 Hz, indicating the number of programming cycles left. (blinking 5 times for 5 cycles left, ...)<br />
<br />
==== Required Flasher hardware version for Cntdown.txt support ====<br />
<br />
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><br />
<br />
* 1621xxxxx (Flasher ARM V2)<br />
* 1630xxxxx (Flasher ARM V3)<br />
* 4210xxxxx (Flasher PPC V1)<br />
* 4110xxxxx (Flasher RX V1)<br />
<br />
All other models / hardware versions support limiting of programming cycles.<br />
<br />
=== Authorized flashing ===<br />
<br />
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.<br />
without the possibility to read out the Flasher contents via file access mode, FILE I/O functionality (J-Link Commander) or RS232 commands.<br />
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.<br />
<br />
==== Creating / Adding the secure area ====<br />
<br />
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.<br />
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.<br />
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><br />
<br />
[[File:CreateSecArea.jpg]]<br />
<br />
The following secure area related commands are available in J-Link Commander:<br><br />
<br />
* securearea create<br />
* securearea remove<br />
<br />
{{Note|1=When creating or removing the <tt>secure area</tt>, all configuration and data files being stored on the Flasher, are lost.<br />
Please make sure that they are not needed anymore, before adding / removing the security area.}}<br />
<br />
==== Moving files to the secure area ====<br />
<br />
Before moving configuration + data to the <tt>secure area</tt>, proper functionality of the setup should be tested in stand-alone mode.<br />
Once the setup is working as expected, do the following, to move the configuration + data into the <tt>secure area</tt>:<br><br />
<br />
* Start Flasher in file access mode (For more info, please refer to: [[#file access mode | file access mode]])<br />
<br />
[[File:FilesBeforeSecure.png]]<br />
<br />
* Create a folder "<tt>_SECURE</tt>"<br />
* Move all files that shall be moved to the <tt>secure area</tt>, into this folder<br />
<br />
[[File:FilesAfterSecure.png]]<br />
<br />
* 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.<br />
* Now Flasher can be used in stand-alone mode, as normal, but the files cannot be read back by the user / operator.<br />
<br />
==== Considerations to be taken when using the secure area ====<br />
<br />
When using the <tt>secure area</tt>, some things need to be considered:<br><br />
<br />
* All features like multiple file support, patch file support etc. can also be used when operating from the <tt>secure area</tt>.<br />
* 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>.<br />
* 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>.<br />
* 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.<br />
<br />
==== Required Flasher hardware version ====<br />
<br />
Older Flasher models do not support authorized flashing. The Flashers with the following serial number ranges do not support authorized flashing:<br><br />
<br />
* 1621xxxxx (Flasher ARM V2)<br />
* 1630xxxxx (Flasher ARM V3)<br />
* 4210xxxxx (Flasher PPC V1)<br />
* 4110xxxxx (Flasher RX V1)<br />
<br />
All other models / hardware versions support authorized flashing.<br />
<br />
=== Target interfaces ===<br />
<br />
The table below shows the supported target interfaces of the different Flasher models.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! Supported interfaces<br />
|-<br />
| Flasher PRO || JTAG, SWD<br />
|-<br />
| Flasher Compact || JTAG, SWD<br />
|-<br />
| Flasher ARM || JTAG, SWD<br />
|-<br />
| Flasher RX || JTAG<br />
|-<br />
| Flasher PPC || JTAG<br />
|-<br />
|}<br />
<br />
For more information about the target interfaces itself, please refer to:<br><br />
<br />
* ''UM08001, chapter "Working with J-Link and J-Trace", section "JTAG interface"''<br />
* ''UM08001, chapter "Working with J-Link and J-Trace", section "SWD interface"''<br />
<br />
=== Supported architectures ===<br />
<br />
Flasher supports programming of the internal flash of a large number of different microcontrollers.<br />
The number of supported devices is steadily growing. You can always find the latest list of supported devices on our website:<br><br />
<br />
''http://www.segger.com/supported-devices.html''<br />
<br />
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.<br />
Also the existence of the device may have confidential status, so it might not be mentioned as being supported in public releases yet.<br />
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.<br />
<br />
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).<br />
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.<br />
<br />
If a device is not supported, you can always contact us. We will be happy to provide you with an offer.<br />
<br />
==== External flashes ====<br />
<br />
In general our Flashers support programming of external flashes listed below:<br>(Can differ between Flasher models and hardware versions)<br />
<br />
* parallel NOR flash<br />
* SPI / QSPI flash<br>(see: ''[[SPI_support_by_Flasher_models]]'')<br />
* NAND flash<br />
* I<sup>2</sup>C EEPROM/Flash<br />
* FRAM<br />
<br />
If the parallel NOR flash device which is used is not CFI-compliant you have to select the flash device in J-Flash explicitly,<br />
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''.<br />
<br />
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.<br />
The J-Flash software comes with sample projects for ''Open Flashloader''.<br />
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''<br />
{{Note|1=Complete Information about ''Open Flashloaders'' can be found in our Wiki:<br>''[[Open_Flashloader]]''}}<br />
<br />
==== Cores ====<br />
<br />
===== Flasher ARM =====<br />
<br />
Flasher ARM supports and has been tested with the following cores, but should work with any ARM7/9, Cortex-M0/M1/M3/M4 core.<br />
If you experience problems with a particular core, do not hesitate to contact Segger.<br><br />
<br />
* ARM7TDMI (Rev 1)<br />
* ARM7TDMI (Rev 3)<br />
* ARM7TDMI-S (Rev 4)<br />
* ARM920T<br />
* ARM922T<br />
* ARM926EJ-S<br />
* ARM946E-S<br />
* ARM966E-S<br />
* Cortex-M0<br />
* Cortex-M1<br />
* Cortex-M3<br />
* Cortex-M4<br />
<br />
===== Flasher RX =====<br />
<br />
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><br />
<br />
* RX610<br />
* RX621<br />
* RX62N<br />
* RX62T<br />
<br />
===== Flasher PPC =====<br />
<br />
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.<br />
<br />
* e200z0<br />
<br />
===== Flasher PRO/Compact/Portable PLUS =====<br />
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/''.<br />
<br />
=== Programming multiple targets in parallel ===<br />
<br />
To program multiple targets in parallel there are the following possibilities:<br />
* Using a Flasher gang, or<br />
* Using multiple Flashers, each connecting to one CPU.<br />
<br />
Devices for gang programming are:<br />
* 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)].<br />
* 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)].<br />
When using multiple flashers, this can be done with the J-Flash production programming software.<br />
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''<br />
<br />
=== Logfiles and Quality Management ===<br />
<br />
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:<br />
<source lang="c"><br />
SN: 1 - Failed<br />
SN: 1 - Failed<br />
SN: 2 - O.K. (931 ms)<br />
SN: 3 - O.K. (931 ms)<br />
SN: 4 - O.K. (933 ms)<br />
SN: 5 - O.K. (932 ms)<br />
</source><br />
If applicable, the logfile contains more detailed error messages. For example:<br />
<source lang="c"><br />
ERROR: Programming failed @ address 0x00000000 (1)<br />
ERROR: Cannot connect to CPU. Target interface speed too high?<br />
</source><br />
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:<br />
<source lang="c"><br />
Verify error config word area @<br />
config word<br />
config word read back<br />
Verify error flash area @<br />
data from file<br />
data read back<br />
</source><br />
{{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.}}<br />
<br />
== TCP Services ==<br />
This chapter describes the integrated TCP services.<br />
<br />
=== FTP Server ===<br />
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><br />
[[File:FTPServer.png]]<br />
<br />
==== Access data ====<br />
Anonymous access to the FTP server is limited to read-only access to the file system.<br><br />
For write access, special login credentials have to be used:<br><br />
<tt>Login: admin</tt><br><br />
<tt>Password: 1234</tt><br><br />
<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.<br />
It is not meant as a security feature.}}<br />
<br />
=== Web server ===<br />
<br />
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.<br />
For the network, the IP address settings can be changed and a nick name can be assigned to the device.<br><br />
<br />
Additionally, the web interface provides information about the status of the integrated operating system, the IP stack and the target hardware.<br />
<br />
== Remote control ==<br />
This chapter describes how to control Flasher via the 9-pin serial interface connector or via the integrated Telnet interface.<br />
<br />
=== Overview ===<br />
There are 3 ways to control Flasher operation:<br><br />
<br />
* Manual: Programming operation starts when pressing the button. The LEDs serve as visible indicators.<br />
* 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.<br />
* Terminal communication via RS232.<br />
* Terminal communication via Telnet.<br />
<br />
{{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.}}<br />
<br />
=== Handshake control ===<br />
<br />
Some Flasher models can be remote controlled by automated testers without the need of a connection to a PC.<br />
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><br />
<br />
The handshake control is available for the following Flashers:<br />
* Flasher ARM<br />
* Flasher PRO<br />
* Flasher Compact (via Flasher Hub only)<br />
<br />
The following diagrams show the internal remote control circuitry of Flasher:<br><br />
<br />
[[File:FlasherRemotecontrol.jpg]]<br />
{| class="seggertable"<br />
|-<br />
! Pin No. !! Function !! Description<br />
|-<br />
| 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.<br />
|-<br />
| 4 || BUSY || As soon as the "Auto" function is started, BUSY becomes active, which means that transistor is switched OFF.<br />
|-<br />
| 5 || GND || Common Signal ground.<br />
|-<br />
| 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.<br />
|-<br />
|}<br />
<br />
=== ASCII command interface ===<br />
<br />
==== Introduction ====<br />
<br />
Once set up using J-Flash, the Flasher can be driven by any application or just a simple terminal using ASCII commands.<br><br />
<br />
Every known command is acknowledged by the Flasher and then executed. After command execution, Flasher sends an ASCII reply message.<br><br />
<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}}<br />
<br />
==== General command and reply message format ====<br />
<br />
* Any ASCII command has to start with the start delimiter ''#''.<br />
* Any ASCII command has to end with simple carriage return ('\r', ASCII code 13).<br />
* Commands can be sent upper or lower case<br />
<br />
==== General usage ====<br />
<br />
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.<br />
<br />
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).<br />
<br />
==== Settings for ASCII interface via RS232 ====<br />
<br />
Flasher is driven via a RS232 serial port with the following interface settings:<br><br />
<br />
* 9600 baud<br />
* 8 data bits<br />
* no parity<br />
* 1 stop bit<br />
<br />
The baud rate can be changed by using the <tt>#BAUDRATE</tt> command.<br />
<br />
==== Settings for ASCII interface via Telnet ====<br />
<br />
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><br />
<br />
[[File:telnet_connection.gif]]<br />
<br />
==== Commands and replies ====<br />
<br />
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><br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| Commands to the Flasher<br />
|-<br />
| <tt>#BAUDRATE <Baudrate></tt><br />
|-<br />
| <tt>#AUTO</tt><br />
|-<br />
| <tt>#AUTO PATCH</tt><br />
|-<br />
| <tt>#AUTO NOINFO</tt><br />
|-<br />
| <tt>#CANCEL</tt><br />
|-<br />
| <tt>#ERASE</tt><br />
|-<br />
| <tt>#PROGRAM</tt><br />
|-<br />
| <tt>#RESULT</tt><br />
|-<br />
| <tt>#SELECT <Filename></tt><br />
|-<br />
| <tt>#START</tt><br />
|-<br />
| <tt>#STATUS</tt><br />
|-<br />
| <tt>#VERIFY</tt><br />
|-<br />
| <tt>#QUIT</tt><br />
|-<br />
| <tt>#VERBOSE <Level></tt><br />
|-<br />
!colspan="100%"| File I/O commands<br />
|-<br />
| <tt>#FCLOSE</tt><br />
|-<br />
| <tt>#FCRC</tt><br />
|-<br />
| <tt>#FDELETE <Filename></tt><br />
|-<br />
| <tt>#FOPEN <Filename></tt><br />
|-<br />
| <tt>#FREAD <Offset>,<NumBytes></tt><br />
|-<br />
| <tt>#FSIZE</tt><br />
|-<br />
| <tt>#FWRITE <Offset>,<NumBytes>:<nowiki><Data></nowiki></tt><br />
|-<br />
| <tt>#FLIST</tt><br />
|-<br />
| <tt>#MKDIR <Dirname></tt><br />
|-<br />
!colspan="100%"| SecureArea commands<br />
|-<br />
| <tt>#HASSECUREAREA</tt><br />
|-<br />
| <tt>#SECUREAREA <action></tt><br />
|-<br />
!colspan="100%"| Replies from the Flasher<br />
|-<br />
| <tt>#ACK</tt><br />
|-<br />
| <tt>#NACK</tt><br />
|-<br />
| <tt>#OK</tt><br />
|-<br />
| <tt>#OK:<NumBytes>:<nowiki><Data></nowiki></tt><br />
|-<br />
| <tt>#OK:<Size></tt><br />
|-<br />
| <tt>#STATUS:</tt><br />
|-<br />
| <tt>#DONE</tt><br />
|-<br />
| <tt>#ERRxxx</tt><br />
|-<br />
|}<br />
<br />
===== Commands to the Flasher =====<br />
<br />
'''#AUTO'''<br><br />
The <tt>#AUTO</tt> command behaves exactly as the start button or external remote control input.<br><br />
<br />
Usually, the following command sequence will be performed when receiving the <tt>#AUTO</tt> command:<br><br />
<br />
* The Flasher erases the target CPU (if not blank)<br />
* The Flasher programs the target CPU<br />
* The Flasher verifies the target CPU<br />
<br />
Depending on the settings chosen in the '''Production''' tab in J-Flash, this sequence can differ from the one shown above.<br><br />
<br />
Finally, Flasher responds with<br><br />
<br />
* <tt>#OK</tt> if no error occurred<br />
* <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.<br />
<br />
During execution of the <tt>#AUTO</tt> command, Flasher automatically sends "status" messages via RS232 to reflect the state of execution.<br />
Typically during execution of <tt>#AUTO</tt> command, Flasher will reply the following sequence of messages:<br><br />
<br />
<tt>#ACK</tt><br><br />
<tt>#STATUS:INITIALIZING</tt><br><br />
<tt>#STATUS:CONNECTING</tt><br><br />
<tt>#STATUS:UNLOCKING</tt><br><br />
<tt>#STATUS:ERASING</tt><br><br />
<tt>#STATUS:PROGRAMMING</tt><br><br />
<tt>#STATUS:VERIFYING</tt><br><br />
<tt>#OK (Total 13.993s, Erase 0.483s, Prog 9.183s, Verify 2.514s)</tt><br><br />
<br />
'''#AUTO PATCH'''<br><br />
The <tt>#AUTO</tt> PATCH command allows patching of the content of the data to be programmed.<br><br />
<br />
Flasher responds with<br><br />
<br />
* <tt>#OK</tt> if no error occurred<br />
* <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.<br />
<br />
For further information about the usage of the <tt>#AUTO PATCH</tt> command please refer to [[#Patch file support | Patch file support]].<br />
<br />
'''#AUTO NOINFO'''<br><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><br />
<br />
The command ends with <tt>#OK</tt> or <tt>#ERRxxx</tt><br />
<br />
'''#BAUDRATE <Baudrate>'''<br><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><br />
<br />
If this command succeeds, Flasher responds with:<br><br />
<br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<br />
Otherwise it will respond with one of the following error messages:<br><br />
<br />
<tt>#ERR255: Invalid parameters</tt><br><br />
<tt>or</tt><br><br />
<tt>#ERR255: Baudrate is not supported</tt><br><br />
<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.<br />
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.}}<br />
<br />
'''#CANCEL'''<br><br />
This command can be sent to abort a running program. It may take a while until the current program is actually canceled.<br><br />
<br />
Flasher will respond with:<br><br />
<br />
<tt>#ERR007:CANCELED.</tt><br><br />
<br />
'''#ERASE'''<br><br />
This command can be sent to erase all selected target flash sectors.<br><br />
<br />
Flasher will reply the following sequence of messages:<br><br />
<br />
<tt>#ACK</tt><br><br />
<tt>#STATUS:INITIALIZING</tt><br><br />
<tt>#STATUS:CONNECTING</tt><br><br />
<tt>#STATUS:UNLOCKING</tt><br><br />
<tt>#STATUS:ERASING</tt><br><br />
<tt>#OK (Total 0.893s, Erase 0.483s)</tt><br><br />
<br />
'''#PROGRAM'''<br><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.<br />
<br />
'''#RESULT'''<br><br />
This command can be sent any time, even during other command execution. Flasher responds with the last result of the previously executed command.<br />
<br />
'''#SELECT <Filename>'''<br><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.<br />
<tt><Filename></tt> specifies the name of file pair without extensions (.CFG and .DAT) on the Flasher which should be selected. If you are<br />
using the universal flash programming mode, <tt><Filename></tt> specifies the full name of the .UNI file '''including''' the extension.<br />
Flasher saves the selected config and data file in the FLASHER.INI file. So this selection is remembered even between power-cycling Flasher.<br><br />
<br />
This may be verfy helpful in cases where several config and data files are stored on Flasher.<br />
The user can easily switch between these config and data files without connecting Flasher to a host.<br><br />
<br />
If this command succeeds, Flasher responds with:<br><br />
<br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<br />
Find below a sample sequence which shows how to use the <tt>#SELECT</tt> command:<br><br />
<br />
<tt>#SELECT ATSAM7_1 // ATSAM7_1.CFG and ATSAM7_1.DAT is selected</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<tt>#AUTO // Start auto programming</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#STATUS:INITIALIZING</tt><br><br />
<tt>#STATUS:CONNECTING</tt><br><br />
<tt>#STATUS:UNLOCKING</tt><br><br />
<tt>#STATUS:ERASING</tt><br><br />
<tt>#STATUS:PROGRAMMING</tt><br><br />
<tt>#STATUS:VERIFYING</tt><br><br />
<tt>#OK (Total 8.416s, Erase 0.005s, Prog 6.845s, Verify 0.959s)</tt><br><br />
<tt>#SELECT ATSAM7_2 // ATSAM7_2.CFG and ATSAM7_2.DAT is selected</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<tt>#AUTO // Start auto programming</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#STATUS:INITIALIZING</tt><br><br />
<tt>#STATUS:CONNECTING</tt><br><br />
<tt>#STATUS:UNLOCKING</tt><br><br />
<tt>#STATUS:ERASING</tt><br><br />
<tt>#STATUS:PROGRAMMING</tt><br><br />
<tt>#STATUS:VERIFYING</tt><br><br />
<tt>#OK (Total 8.632s, Erase 0.005s, Prog 7.051s, Verify 0.969s)</tt><br><br />
<br />
'''#START'''<br><br />
This command can be sent to start the application using the method configured in the J-Flash project.<br />
<br />
Flasher will reply with the following sequence of messages:<br><br />
<br />
<tt>#ACK</tt><br><br />
<tt>#STATUS:INITIALIZING</tt><br><br />
<tt>#STATUS:CONNECTING</tt><br><br />
<tt>#OK (Total 1.148s)</tt><br><br />
<br />
'''#STATUS'''<br><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]].<br />
<br />
'''#VERIFY'''<br><br />
This command can used to verify the target flash content against the data stored in Flasher.<br />
<br />
'''#QUIT'''<br><br />
This command can be used to terminate the active telnet connection from the server side (Flasher).<br />
The command provides an easy way to terminate the session from an automated script.<br />
It is not necessary to parse stdout and switch to local command mode to disconnect.<br />
Not implemented in the Flasher ATE or Flasher Hub.<br />
<br />
'''#VERBOSE <Level>'''<br><br />
This command can be used to change the verbosity level. <br><br />
* Verbosity level 0: Default. <br><br />
* Verbosity level 1: Provides some additional messages during the programming process.<br />
<br />
===== File I/O commands =====<br />
<br />
The ASCII interface of the Flasher also supports file I/O operations.<br />
<br />
The following file I/O commands are supported:<br><br />
<br />
'''#FCLOSE'''<br><br />
The <tt>#FCLOSE</tt> command closes the file on Flasher which was opened via <tt>#FOPEN</tt>.<br />
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><br />
<br />
A typical sequence when using the <tt>#FCLOSE</tt> command does look like as follows:<br><br />
<br />
<tt>#FCLOSE</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<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><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:No file opened</tt><br />
}}<br />
<br />
'''#FCRC'''<br><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>.<br />
The CRC will be also reported by J-Flash when downloading or saving files via J-Flash.<br><br />
<br />
A typical sequence when using the <tt>#FCRC</tt> command does look like as follows:<br><br />
<br />
<tt>#FCRC flasher.dat</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK:0x75BC855A</tt><br><br />
<br />
'''#FDELETE <Filename>'''<br><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><br />
<br />
A typical sequence when using the <tt>#FDELETE</tt> command does look like as follows:<br><br />
<br />
<tt>#FDELETE flasher.dat</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<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><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:Failed to delete file</tt><br />
}}<br />
<br />
'''#FOPEN <Filename>'''<br><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.<br />
If <tt><Filename></tt> can not be found on Flasher a new one will be created.<br><br />
<br />
A typical sequence using the <tt>#FOPEN</tt> command does look like as follows:<br><br />
<br />
<tt>#FOPEN flasher.dat</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<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><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:A file has already been opened</tt><br />
}}<br />
<br />
'''#FREAD <Offset>,<NumBytes>'''<br><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.<br />
<tt><NumBytes></tt> specifies the number of bytes which should be read.<br><br />
<br />
A typical sequence when using the <tt>#FREAD</tt> command does look like as follows:<br><br />
<br />
<tt>#FREAD 0,4</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK:04:466c6173</tt><br><br />
<br />
If the <tt>#FREAD</tt> command succeeds, Flasher will finally respond with a <tt>#OK:<NumBytes>:<nowiki><Data></nowiki></tt> reply message.<br />
For more information about the Flasher reply messages, please refer to [[#Replies from Flasher | Replies from Flasher]].<br><br />
<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><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:No file opened</tt>}}<br />
<br />
'''#FSIZE'''<br><br />
The <tt>#FSIZE</tt> command is used to get the size of the currently opened file on Flasher.<br><br />
<br />
A typical sequence when using the <tt>#FSIZE</tt> command does look like as follows:<br><br />
<br />
<tt>#FSIZE</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK:10 // file on flasher which is currently open, has a size of 16 bytes</tt><br><br />
<br />
If the <tt>#FSIZE</tt> command succeeds, Flasher will respond with a <tt>#OK:<Size></tt> reply message.<br />
For more information about the Flasher reply messages, please refer to [[#Replies from Flasher | Replies from Flasher]].<br><br />
<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><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:No file opened</tt>}}<br />
<br />
'''#FWRITE <Offset>,<NumBytes>:<nowiki><Data></nowiki>'''<br><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.<br />
<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.<br />
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><br />
<br />
<tt><Offset></tt> and <tt><NumBytes></tt> are expected in hexadecimal format.<br><br />
<br />
<tt>#FWRITE 0,200:<nowiki><Data></nowiki></tt><br><br />
<tt>#FWRITE 200,200:<nowiki><Data></nowiki></tt><br><br />
<br />
The data is expected in hexadecimal format (two hexadecimal characters per byte). The following example illustrates the use of <tt>#FWRITE</tt>:<br />
<br />
<tt>Data to be send: Hello !</tt><br><br />
<tt>ASCII values: 0x48, 0x65, 0x6C, 0x6C, 0x6F, 0x20, 0x21</tt><br><br />
<br />
<tt>#FWRITE 0,7:48656C6C6F2021</tt><br><br />
<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><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:No file opened</tt><br>}}<br />
<br />
'''#FLIST'''<br><br />
The <tt>#LIST</tt> command is used to list all files stored on the Flasher.<br><br />
<br />
A typical sequence using the <tt>#FLIST</tt> command does look like as follows:<br><br />
<br />
<tt>#FLIST</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>FLASHER.INI Size: 60</tt><br><br />
<tt>SERIAL.TXT Size: 3</tt><br><br />
<tt>FLASHER.LOG Size: 207</tt><br><br />
<tt>FOLDER (DIR)</tt><br><br />
<tt>FOLDER\\TEST1.CFG Size: 2048</tt><br><br />
<tt>FOLDER\\TEST1.DAT Size: 12288</tt><br><br />
<tt>#OK</tt><br><br />
<br />
'''#MKDIR <Dirname>'''<br><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><br />
<br />
A typical sequence using the <tt>#MKDIR</tt> command does look like as follows:<br><br />
<br />
<tt>#MKDIR folder</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<br />
{{Note|1=If the directory can not be created because of a bad <tt><Dirname></tt> argument, Flasher will respond with:<br><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:Failed to create directory</tt><br>}}<br />
<br />
===== Secure Area Commands =====<br />
<br />
'''#HASSECUREAREA'''<br><br />
The <tt>#HASSECUREAREA</tt> command checks if the Flasher is configured with a secure area.<br />
<br />
<tt>#RESULT:YES</tt> indicates the secure area is present, <tt>#RESULT:NO</tt> indicates no secure area is present.<br />
<br />
'''#SECUREAREA'''<br><br />
The <tt>#SECUREAREA <action></tt> command allows to create or remove the secure area on the Flasher.<br />
<br />
* the action <tt>CREATE</tt> creates the secure area.<br />
* the action <tt>REMOVE</tt> will remove the secure area.<br />
<br />
A typical sequence using the <tt>#SECUREAREA</tt> command does look like as follows:<br><br />
<br />
<tt>#SECUREAREA CREATE</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#DONE</tt><br><br />
<br />
{{Note|1=When creating or removing the <tt>secure area</tt>, all configuration and data files being stored on the Flasher, are lost.<br />
Please make sure that they are not needed anymore, before adding / removing the security area.}}<br />
<br />
<br />
<br />
===== Replies from Flasher =====<br />
<br />
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.<br />
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.<br />
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><br />
<br />
<tt>#OK (Total 13.993s, Erase 0.483s, Prog 9.183s, Verify 2.514s)</tt><br><br />
<br />
The following reply messages from Flasher are defined:<br><br />
<br />
'''#ACK'''<br><br />
Flasher replies with <tt>#ACK</tt> message on reception of any defined command before the command itself is executed.<br />
<br />
'''#NACK'''<br><br />
Flasher replies with <tt>#NACK</tt>, if an undefined command was received.<br />
<br />
'''#OK'''<br><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.<br />
<br />
'''#OK:<NumBytes>:<nowiki><Data></nowiki>'''<br><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.<br />
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).<br />
<br />
'''#OK:<Size>'''<br><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.<br />
<br />
'''#STATUS:'''<br><br />
The Flasher replies with its current state.<br><br />
<br />
The following status messages are currently defined:<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Message !! Description<br />
|-<br />
| <tt>#STATUS:READY</tt> || Flasher is ready to receive a new command.<br />
|-<br />
| <tt>#STATUS:CONNECTING</tt> || Flasher initializes connection to target CPU.<br />
|-<br />
| <tt>#STATUS:INITIALIZING</tt> || Flasher performs self check and internal init.<br />
|-<br />
| <tt>#STATUS:UNLOCKING</tt> || Unlocking flash sectors.<br />
|-<br />
| <tt>#STATUS:ERASING</tt> || Flasher is erasing the flash of the target device.<br />
|-<br />
| <tt>#STATUS:PROGRAMMING</tt> || Flasher is programming the flash of the target device.<br />
|-<br />
| <tt>#STATUS:VERIFYING</tt> || Flasher verifies the programmed flash contents.<br />
|-<br />
|}<br />
<br />
'''#ERRxxx'''<br><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><br />
<br />
Some error codes may be followed by colon and an additional error text.<br><br />
<br />
For example:<br><br />
<br />
<tt>#ERR007:CANCELED.</tt><br><br />
<br />
The error code numbers are described in the following table:<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Message !! Description<br />
|-<br />
| <tt>#ERR007</tt> || Flasher received <tt>#CANCEL</tt> command and has canceled the current operation.<br />
|-<br />
| <tt>#ERR008</tt> || Flasher is already busy with execution of previous command.<br />
|-<br />
| <tt>#ERR009</tt> || Failed to allocate memory.<br />
|-<br />
| <tt>#ERR010</tt> || Failed to open file.<br />
|-<br />
| <tt>#ERR011</tt> || Failed to read file.<br />
|-<br />
| <tt>#ERR012</tt> || Failed to write file.<br />
|-<br />
| <tt>#ERR013</tt> || Failed to delete file.<br />
|-<br />
| <tt>#ERR255</tt> || Undefined error occurred. This reply is followed by an error string.<br />
|-<br />
|}<br />
<br />
== Performance ==<br />
<br />
The following chapter lists programming performance of common flash devices andmicrocontrollers.<br />
<br />
=== Performance of MCUs with internal flash memory ===<br />
<br />
==== Flasher ARM ====<br />
<br />
The following table lists program and erase performance values of Flasher ARM for different controllers.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Microcontroller !! Size [kByte] !! Erase time [sec] !! Program time [sec] !! Verify time [sec] !! Total time [sec]<br />
|-<br />
| Analog Devices || 62 || 2.943 || 2.286 || 0.563 || 5.792<br />
|-<br />
| Atmel AT91SAM7S64 || 64 || --- || 3.488 || 0.438 || 3.926<br />
|-<br />
| Atmel AT91SAM7S256 || 256 || --- || 7.709 || 1.053 || 8.762<br />
|-<br />
| NXP LPC1768 || 512 || 3.740 || 8.559 || 5.092 || 17.391<br />
|-<br />
| NXP LPC2106 || 120 || 0.448 || 1.204 || 0.634 || 2.286<br />
|-<br />
| NXP LPC2129 || 248 || 0.449 || 2.916 || 1.347 || 4.712<br />
|-<br />
| NXP LPC2138 || 500 || 0.448 || 5.488 || 2.649 || 8.585<br />
|-<br />
| NXP LPC2148 || 500 || 0.448 || 5.632 || 2.721 || 8.801<br />
|-<br />
| NXP LPC2294 || 2048 || 0.808 || 15.976 || 9.669 || 26.453<br />
|-<br />
| NXP LPC2478 || 504 || 0.448 || 5.419 || 2.559 || 8.426<br />
|-<br />
| ST STM32F103ZE || 512 || 0.028 || 18.763 || 3.939 || 22.730<br />
|-<br />
| ST STR711 || 272 || 0.429 || 5.476 || 4.742 || 10.647<br />
|-<br />
| ST STR912 || 544 || 1.167 || 12.907 || 5.236 || 19.310<br />
|-<br />
| TI TMS470R1B1M || 1024 || 2.289 || 8.147 || 5.362 || 15.798<br />
|-<br />
|}<br />
<br />
==== Flasher PRO ====<br />
See Flasher ARM.<br />
<br />
==== Flasher Compact ====<br />
See Flasher ARM.<br />
<br />
==== Flasher RX ====<br />
<br />
The following table lists program and erase performance values of Flasher RX.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Microcontroller !! Size [kByte] !! Erase time [sec] !! Program time [sec] !! Verify time [sec] !! Total time [sec]<br />
|-<br />
| R5F56108 || 2.048 || 9.523 || 11.915 || 3.890 || 25.585<br />
|-<br />
|}<br />
<br />
==== Flasher PPC ====<br />
<br />
The following table lists program and erase performance values of Flasher PPC.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Microcontroller !! Size [kByte] !! Erase time [sec] !! Program time [sec] !! Verify time [sec] !! Total time [sec]<br />
|-<br />
| ST SPC560B50 || 576 || 4.747 || 4.159 || 1.929 || 10.917<br />
|-<br />
|}<br />
<br />
== Hardware ==<br />
<br />
This chapter gives an overview about Flasher specific hardware details,<br />
such as the pinouts and available adapters.<br />
<br />
=== Flasher ARM 20-pin JTAG/SWD Connector ===<br />
<br />
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.<br />
<br />
==== Pinout JTAG ====<br />
<br />
[[File:jtag_port_20pin.jpg]] <!-- LG xxxxxx image has been cropped to fit page --><br />
<br />
The following table lists the Flasher JTAG pinout.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! PIN !! SIGNAL !! TYPE !! Description<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 13 || TDO || Input || JTAG data output from target CPU. Typically connected to TDO of target CPU.<br />
|-<br />
| 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".<br />
|-<br />
| 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.<br />
|-<br />
| 19 || 5V-Target supply || Output || This pin is used to supply power to some eval boards. Typically left open on target hardware.<br />
|-<br />
|}<br />
<br />
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.<br />
<br />
==== Pinout SWD ====<br />
<br />
The 20-pin connector of Flasher is also compatible to ARM's Serial Wire Debug (SWD) interface.<br><br />
<br />
[[File:SWD_Port.jpg]] <!-- LG xxxxxx image has been cropped to fit page --><br />
<br />
The following table lists the J-Link / J-Trace SWD pinout.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! PIN !! SIGNAL !! TYPE !! Description<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 7 || SWDIO || I/O || Single bi-directional data pin.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 13 || SWO || Output || Serial Wire Output trace port. (Optional, not required for SWD communication.)<br />
|-<br />
| 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".<br />
|-<br />
| 17 || Not used || NC || This pin is not connected in J-Link.<br />
|-<br />
| 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.<br />
|-<br />
|}<br />
<br />
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.<br />
<br />
==== Target power supply ====<br />
<br />
Pin 19 of the connector can be used to supply power to the target hardware. Supply voltage is 5V, max. current is 400mA.<br />
The output current is monitored and protected against overload and short-circuit.<br><br />
<br />
Power can be controlled via the J-Link commander. The following commands are available to control power:<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Command !! Explanation<br />
|-<br />
| <tt>power on</tt> || Switch target power on<br />
|-<br />
| <tt>power off</tt> || Switch target power off<br />
|-<br />
| <tt>power on perm</tt> || Set target power supply default to "on"<br />
|-<br />
| <tt>power off perm</tt> || Set target power supply default to "off"<br />
|-<br />
|}<br />
<br />
=== Flasher RX 14-pin connector ===<br />
<br />
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.<br />
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.<br />
<br />
[[File:jtag_port_14pin.wmf]]<br />
<br />
The following table lists the Flasher RX 14-pin JTAG pinout.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Pin !! Signal !! Type !! Description<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 5 || TDO || Input || JTAG data output from target CPU. Typically connected to TDO on target CPU.<br />
|-<br />
| 6 || --- || NC || This pin is not connected to Flasher RX.<br />
|-<br />
| 7 || --- || NC || This pin is not connected to Flasher RX.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 10 || --- || NC || This pin is not connected to Flasher RX.<br />
|-<br />
| 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.<br />
|-<br />
| 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".<br />
|-<br />
|}<br />
<br />
* All pins marked NC are not connected to Flasher RX. Any signal can be applied here; Flasher RX will simply ignore such a signal.<br />
* Pins 2, 12, 14 are GND pins connected to GND in Flasher RX. They should also be connected to GND in the target system.<br />
<br />
==== Target power supply ====<br />
<br />
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.<br />
Power can be controlled via the J-Link commander. The following commands are available to control power:<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Command !! Explanation<br />
|-<br />
| <tt>power on</tt> || Switch target power on<br />
|-<br />
| <tt>power off</tt> || Switch target power off<br />
|-<br />
| <tt>power on perm</tt> || Set target power supply default to "on"<br />
|-<br />
| <tt>power off perm</tt> || Set target power supply default to "off"<br />
|-<br />
|}<br />
<br />
=== Flasher PPC 14-pin connector ===<br />
<br />
Flasher PPC itself has a 20-pin JTAG connector mounted but comes with a 14-pin adapter for PowerPC devices.<br><br />
<br />
[[File:JTAG_PPC_14pin_adapter.wmf]]<br />
<br />
The following table lists the Flasher PPC 14-pin JTAG pinout.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Pin !! Signal !! Type !! Description<br />
|-<br />
| 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.<br />
|-<br />
| 3 || TDO || Input || JTAG data output from target CPU. Typically connected to TDO on target CPU.<br />
|-<br />
| 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.<br />
|-<br />
| 7 || --- || NC || This pin is not connected to Flasher PPC.<br />
|-<br />
| 8 || --- || NC || This pin is not connected to Flasher PPC.<br />
|-<br />
| 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".<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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).<br />
|-<br />
|}<br />
<br />
* All pins marked NC are not connected to Flasher PPC. Any signal can be applied here; Flasher PPC will simply ignore such a signal.<br />
* 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.<br />
<br />
=== Target board design ===<br />
<br />
We strongly advise following the recommendations given by the chip manufacturer. These recommendations are normally in line with the recommendations.<br />
Please refer to the the appropriate tables depending on the core:<br><br />
<br />
* [[#Pinout JTAG | Pinout JTAG]]<br />
* [[#Pinout SWD | Pinout SWD]]<br />
* [[#Flasher RX 14-pin connector | Flasher RX 14-pin connector]]<br />
* [[#Flasher PPC 14-pin connector | Flasher PPC 14-pin connector]]<br />
<br />
In case of doubt you should follow the recommendations given by the semiconductor manufacturer.<br />
<br />
==== Pull-up/pull-down resistors ====<br />
<br />
Unless otherwise specified by developer's manual, pull-ups/pull-downs are recommended to be between 2.2 kOhms and 47 kOhms.<br />
<br />
==== RESET, nTRST ====<br />
<br />
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><br />
<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.<br />
(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.<br />
<br />
=== Adapters ===<br />
<br />
==== JTAG Isolator ====<br />
<br />
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.<br />
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><br />
<br />
[[File:JTAG_Isolator_Port.wmf]]<br />
<br />
===== Pinout =====<br />
<br />
The following table shows the target-side pinout of the J-Link JTAG Isolator.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Pin !! Signal !! Type !! Description<br />
|-<br />
| 1 || VCC || Output || The target side of the isolator draws power over this pin.<br />
|-<br />
| 2 || VCC || Output || The target side of the isolator draws power over this pin.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 13 || TDO || Input || JTAG data output from target CPU. Typically connected to TDO of target CPU.<br />
|-<br />
| 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".<br />
|-<br />
| 17 || N/C || N/C || This pin is not connected on the target side of the isolator.<br />
|-<br />
| 19 || N/C || N/C || This pin is not connected on the target side of the isolator.<br />
|-<br />
|}<br />
<br />
Pins 4, 6, 8, 10, 12, 14, 16, 18, 20 are connected to GND.<br />
<br />
===== Safety =====<br />
This isolator provides '''basic isolation''' only. '''Do not use with hazardous voltages without further protection measures to avoid risk of electrical shock and fire.'''<br />
<br />
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.<br />
<br />
==== J-Link Needle Adapter ====<br />
<br />
To connect to the J-Link OB via programming interface the ''J-Link Needle Adapter'' is recommended.<br><br />
<br />
[[File:J-Link_Needle_Adapter_500x.jpg]]<br />
<br />
Why to choose the J-Link Needle Adapter:<br><br />
<ol><br />
<li>No additional connector required on your PCB</li><br />
<li>Very small footprint</li><br />
<li>High reliability spring pins for secure connections</li><br />
<li>Designed with 3 locating pins, so the adapter can not be connected the wrong way</li><br />
<li>No external power supply required! The J-Link Needle Adapter comes with the option to power the target hardware via J-Link.</li><br />
</ol><br />
These features make the J-Link Needle Adapter the perfect solution for production purposes.<br><br />
<br />
The pinout of the J-Link Needle Adapter is based on the pinout of the needle adapter by Tag-Connect.<br />
Please note, that both pinouts are not identical since the J-Link Needle Adapter comes with a 5V-supply pin.<br><br />
<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><br />
<br />
Moreover, the two "legs" on each side of the connector guarantee a stable and secure contact between pins and the PCB.<br><br />
<br />
[[File:J-Link_Needle_Adapter_Connector_pins_360x.jpg]]<br />
[[File:J-Link_Needle_Adapter_Pinout.jpg]]<br />
<br />
The J-Link Needle Adapter can be connected to J-Link via the ''20-pin 0.1'' JTAG to a 10-pin needle connector''.<br />
<br />
=== How to determine the hardware version ===<br />
<br />
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.<br />
Flasher has the hardware version printed on the back label.<br><br />
<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).<br />
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><br />
<br />
[[File:FlasherARM_version.gif]]<br />
== Support and FAQs ==<br />
<br />
This chapter contains troubleshooting tips together with solutions for common problems which might occur when using Flasher.<br />
There are several steps you can take before contacting support.<br />
Performing these steps can solve many problems and often eliminates the need for assistance.<br />
This chapter also contains a collection of frequently asked questions (FAQs) with answers.<br />
<br />
=== Contacting support ===<br />
<br />
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.<br />
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><br />
<br />
If you need to contact support, send the following information to<br><br />
''support@segger.com''<br><br />
<br />
* A detailed description of the problem<br />
* Flasher serial number<br />
* Information about your target hardware (processor, board, etc.).<br />
* <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]].<br />
<br />
Flasher is sold directly by SEGGER.<br />
<br />
=== Frequently Asked Questions ===<br />
<br />
'''Maximum JTAG speed'''<br />
{|<br />
|-<br />
| '''Q:''' || What is the maximum JTAG speed supported by Flasher?<br />
|-<br />
| '''A:''' || Flasher's maximum supported JTAG speed is 12MHz.<br />
|}<br />
<br />
'''Maximum download speed'''<br />
{|<br />
|-<br />
| '''Q:''' || What is the maximum download speed?<br><br />
|-<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.<br />
|}<br />
== Background information ==<br />
<br />
This chapter provides background information about flash programming in general. It<br />
also provides information about how to replace the firmware of Flasher manually.<br />
<br />
=== Flash programming ===<br />
<br />
Flasher comes with a DLL, which allows - amongst other functionalities - reading and writing RAM, CPU registers, starting and stopping the CPU, and setting breakpoints.<br />
<br />
==== How does flash programming via Flasher work? ====<br />
<br />
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.<br />
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.<br />
Different flash chips have different programming algorithms;the programming algorithm also depends on other things,<br />
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).<br />
The RAM code requires data to be programmed into the flash memory. The data is supplied by downloading it to RAM.<br />
<br />
==== Data download to RAM ====<br />
<br />
The data (or part of it) is downloaded to another part of the RAM of the target system.<br />
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.<br />
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.<br />
This process may have to be repeated until the entire data is programmed into the flash.<br />
<br />
==== Available options for flash programming ====<br />
<br />
In general, there are two possibilities in order to use Flasher for flash programming:<br><br />
<br />
* Using Flasher stand-alone to program the target flash memory (stand-alone mode)<br />
* Using Flasher in combination with J-Flash to program the target flash memory (Flasher in "PC-based mode")<br />
<br />
===== Using Flasher in stand-alone mode =====<br />
<br />
In order to use the Flasher in stand-alone mode, it has to be configured first.<br />
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]].<br />
<br />
===== J-Flash - Complete flash programming solution =====<br />
<br />
J-Flash is a stand-alone Windows application, which can read / write data files and program the flash in almost any ARM system.<br />
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''.<br />
<br />
==== How does the universal flash programming work? ====<br />
<br />
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><br />
<br />
Universal flash programming is available only for stand-alone mode.<br />
== Glossary ==<br />
<br />
This chapter describes important terms used throughout this manual.<br />
<br />
'''Big-endian'''<br><br />
Memory organization where the least significant byte of a word is at a higher address than the most significant byte. See Little-endian.<br />
<br />
'''Cache cleaning'''<br><br />
The process of writing dirty data in a cache to main memory.<br />
<br />
'''Coprocessor'''<br><br />
An additional processor that is used for certain operations, for example, for floating-point math calculations, signal processing, or memory management.<br />
<br />
'''Dirty data'''<br><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.<br />
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.<br />
<br />
'''Halfword'''<br><br />
A 16-bit unit of information.<br />
<br />
'''Host'''<br><br />
A computer which provides data and other services to another computer. Especially, a computer providing debugging services to a target being debugged.<br />
<br />
'''ICache'''<br><br />
Instruction cache.<br />
<br />
'''ID'''<br><br />
Identifier.<br />
<br />
'''IEEE 1149.1'''<br><br />
The IEEE Standard which defines TAP. Commonly (but incorrectly) referred to as JTAG.<br />
<br />
'''Image'''<br><br />
An executable file that has been loaded onto a processor for execution.<br />
<br />
'''Instruction Register'''<br><br />
When referring to a TAP controller, a register that controls the operation of the TAP.<br />
<br />
'''IR'''<br><br />
See Instruction Register.<br />
<br />
'''Joint Test Action Group (JTAG)'''<br><br />
The name of the standards group which created the IEEE 1149.1 specification.<br />
<br />
'''Little-endian'''<br><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.<br />
<br />
'''Memory coherency'''<br><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.<br />
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.<br />
<br />
'''Memory management unit (MMU)'''<br><br />
Hardware that controls caches and access permissions to blocks of memory, and translates virtual to physical addresses.<br />
<br />
'''Memory Protection Unit (MPU)'''<br><br />
Hardware that controls access permissions to blocks of memory. Unlike an MMU, a MPU does not translate virtual addresses to physical addresses.<br />
<br />
'''RESET'''<br><br />
Abbreviation of System Reset. The electronic signal which causes the target system other than the TAP controller to be reset.<br />
This signal is also known as "nSRST" "nSYSRST", "nRST", or "nRESET" in some other manuals. See also nTRST.<br />
<br />
'''nTRST'''<br><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.<br />
<br />
'''Open collector'''<br><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.<br />
<br />
'''Processor Core'''<br><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.<br />
It excludes optional coprocessors, caches, and the memory management unit.<br />
<br />
'''Remapping'''<br><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.<br />
<br />
'''RTOS'''<br><br />
Real Time Operating System.<br />
<br />
'''TAP Controller'''<br><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.<br />
<br />
'''Target'''<br><br />
The actual processor (real silicon or simulated) on which the application program is running.<br />
<br />
'''TCK'''<br><br />
The electronic clock signal which times data on the TAP data lines TMS, TDI, and TDO.<br />
<br />
'''TDI'''<br><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.<br />
<br />
'''TDO'''<br><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.<br />
<br />
'''Test Access Port (TAP)'''<br><br />
The port used to access a device's TAP Controller. Comprises TCK, TMS, TDI, TDO, and nTRST (optional).<br />
<br />
'''Transistor-transistor logic (TTL)'''<br><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.<br />
<br />
'''Word'''<br><br />
A 32-bit unit of information. Contents are taken as being an unsigned integer unless otherwise stated.<br />
== Literature and references ==<br />
This chapter lists documents, which we think may be useful to gain a deeper understanding of technical details.</div>JanBhttps://wiki.segger.com/index.php?title=UM08022_Flasher&diff=16294UM08022 Flasher2023-09-14T12:57:14Z<p>JanB: /* Programming multiple targets in parallel */</p>
<hr />
<div><!---<br />
General TBD:<br />
- LG: Right now - EVERYTHING<br />
===========================================<br />
--------------------[more specific, but on multiple locations]<br />
- check if all emphasis (bold, tt, blue, etc ) have made it into the new version<br />
- Add Information -> Additional information<br />
- use of the term free-of-charge utility/tool etc<br />
- check compliant to DocStandards_Rules.txt<br />
- Remove everything regarding to Kickstarter versions? eventually create a chapter Legacy -> Kickstarter version were available for hw version 5-x (200x-200x)...[..]<br />
- 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.<br />
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.<br />
- if week keep the IDE specific stuff in the manual, add Ozone, ES and J-Link Commander were no mentioned.<br />
- IDE specifics move into wiki confirmed by Alex<br />
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)<br />
- check all sections regarding licensing<br />
- Check compliance of J-Link emDocs with typographic conventions described in AboutThisDocument.emDoc. What should be altered? e.g. references<br />
- use uref at all (not blue)?<br />
- search and decide where to use \ref (ref with page number)<br />
- why is \ref (no single "option" \uref is more basic as \ref.....)<br />
- in text, use either \ref or \iref instead of \uref<br />
- in old manual, \H3 started on a new page (not per default, but set manually for api tables etc...)<br />
- move used old images and source files (visio etc) via svn (currently copied)<br />
--------------------[grammar / vocabulary discussion]<br />
- Product names<br />
-- Use of SEGGEPROBE in this document?<br />
- use license over licence<br />
- commandline or command-line?<br />
- toolchain or tool chain?<br />
- crossreference/cross-reference/cross reference?<br />
- overcurrent?<br />
- double words?<br />
- frontend?<br />
- Unit: Kbytes, KBytes, V, mV.... 9V or 9 V? Create rule in Vocabulary<br />
- baudrate or baud rate?<br />
- stackpointer or stack pointer<br />
- check where we should replace abbreviations with the long form (e.h. "milliseconds" instead of "ms")<br />
- config or configuration<br />
- filepointer or file pointer?<br />
--------------------[J-Link dep. specific]<br />
- J-Link command strings or J-Link Command strings or J-Link Command Strings<br />
- J-Link settings file or...<br />
- J-Link control panel or ......<br />
- J-Link script files or...<br />
---><br />
Flasher is a programming tool for microcontrollers with on-chip or external flash memory.<br />
Flasher is designed for programming flash targets with the J-Flash software or stand-alone.<br />
In addition to that Flasher can also be used as a regular J-Link. For more information about J-Link in general,<br />
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].<br />
<br />
<div class="toclimit-2"><br />
__TOC__<br />
</div><br />
<br />
== Flasher overview ==<br />
Flasher connects to a PC using the USB/Ethernet/RS232 interface (what host interfaces are available depends on the Flasher model),<br />
running Windows, Linux & MacOS. In stand-alone mode,<br />
Flasher can be driven by the start/stop button, or via the RS232 interface (handshake control or ASCII interface).<br />
Flasher always has a 20-pin connector, which target interfaces are supported depends on the Flasher model:<br />
* Flasher ARM: JTAG and SWD are supported.<br />
* Flasher RX: JTAG is supported. Flasher comes with additional 14-pin RX adapter<br />
* Flasher PPC: JTAG is supported. Flasher comes with additional 14-pin PPC adapter.<br />
* Flasher PRO: JTAG and SWD are supported.<br />
* Flasher Compact: JTAG and SWD are supported.<br />
<br />
=== Features of Flasher ARM/PPC/RX/PRO ===<br />
* Three boot modes: PC-based mode, stand-alone mode, file access mode<br />
* Stand-alone JTAG/SWD programmer (Once set up, Flasher can be controlled without the use of PC program)<br />
* No power supply required, powered through USB<br />
* Supports internal and external flash devices<br />
* 128 MB memory for storage of target program<br />
* Can be used as J-Link (emulator) with a download speed of up to 720 Kbytes/second<br />
* Data files can updated via USB/Ethernet (using the J-Flash software), via FTP, via RS232 or via the file access mode of Flasher<br />
<br />
{| class="seggertable"<br />
|-<br />
! Flasher model !! Supported cores !! Supported target interfaces !! Flash programming speed (depending on target hardware)<br />
|-<br />
| Flasher ARM || ARM7/ARM9/Cortex-M || JTAG, SWD || between 170 and 300 Kbytes/second<br />
|-<br />
| Flasher RX || Renesas RX610, RX621, RX62N, RX62T || JTAG || between 30-300 Kbytes/second<br />
|-<br />
| Flasher PPC || Power PC e200z0 || JTAG || up to 138 Kbytes/second<br />
|-<br />
| Flasher PRO || ARM7/ARM9/Cortex-M Renesas RX610, RX621, RX62N, RX62T Power PC e200z0 || JTAG, SWD || between 30-300 Kbytes/ second<br />
|-<br />
|}<br />
<br />
==== Features of Flasher Compact ====<br />
<br />
* Three boot modes: PC-based mode, stand-alone mode, file access mode<br />
* Stand-alone JTAG/SWD programmer (Once set up, Flasher can be controlled without the use of PC program)<br />
* No power supply required, powered through USB<br />
* Supports internal and external flash devices<br />
* 128 MB memory for storage of target program<br />
* Can be used as J-Link (emulator) with a download speed of up to 720 Kbytes/second<br />
* Data files can updated via USB/Ethernet (using the J-Flash software) or via the file access mode of Flasher<br />
<br />
{| class="seggertable"<br />
|-<br />
! Flasher model !! Supported cores !! Supported target interfaces !! Flash programming speed (depending on target hardware)<br />
|-<br />
| Flasher ARM || ARM7/ARM9/Cortex-M || JTAG, SWD || between 170 and 300 Kbytes/second<br />
|-<br />
| Flasher RX || Renesas RX610, RX621, RX62N, RX62T || JTAG || between 30-300 Kbytes/second<br />
|-<br />
| Flasher PPC || Power PC e200z0 || JTAG || up to 138 Kbytes/second<br />
|-<br />
| Flasher Compact || ARM7/ARM9/Cortex-M Renesas RX610, RX621, RX62N, RX62T Power PC e200z0 || JTAG, SWD || between 30-300 Kbytes/ second<br />
|-<br />
|}<br />
<br />
==== Features of Flasher Portable/Flasher Portable PLUS ====<br />
<br />
* Stand-alone in-circuit-programmer (Once set up, Flasher can be controlled without the use of a PC program)<br />
* Powered by an internal rechargeable battery (standard batteries for Flasher Portable), no Laptop or external power supply required.<br />
* Multiple firmware images can be stored on Flasher<br />
* 128 MB memory for storage of target program<br />
* Easy selection of image to be programmed, via button<br />
* Supported CPUs: ARM Cortex, Legacy ARM7/9, Renesas RX, Freescale PowerPC<br />
* Supports internal and external flash<br />
* Free software updates<ref name="legitimateOwned" />, 1 year of support<br />
* Data files can be updated via the file access mode functionality or via J-Flash<br />
* Programming speed between 30-300 Kbytes/second (actual speed depends on target hardware)<br />
{{Note|1=Ethernet and RS232 as host interface are not available for Flasher Portable}}<br />
<references><br />
<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.<br />
As a legitimate owner of a SEGGER Flasher, you can always download the latest software free of charge.<br />
Though not planned and not likely, we reserve the right to change this policy.<br />
Note that older models may not be supported by newer versions of the software.<br />
Typically, we support older models with new software at least 3 years after end of life.<br />
</ref><br />
</references><br />
<br />
{| class="seggertable"<br />
|-<br />
! Supported cores !! Supported target interfaces !! Flash programming speed (depending on target hardware)<br />
|-<br />
| ARM7/ARM9/Cortex-M || JTAG, SWD || between 30-300 Kbytes/second<br />
|-<br />
| Renesas RX610, RX621, RX62N, RX62T || JTAG || between 170 and 300 Kbytes/second<br />
|-<br />
| Power PC e200z0 || JTAG || up to 138 Kbytes/second<br />
|-<br />
|}<br />
<br />
==== Working environment ====<br />
<br />
'''General'''<br><br />
The Flasher can operate from a PC with an appropriate software like J-Flash or in stand-alone mode.<br />
<br />
'''Host System'''<br><br />
IBM PC/AT or compatible CPU: 486 (or better) with at least 128MB of RAM,<br />
running Windows, Linux & MacOS. It needs to have a USB, Ethernet or RS232 interface available for communication with Flasher.<br />
<br />
'''Power supply'''<br><br />
Flasher Portable: 3x standard AAA batteries or 5V DC, min. 100 mA via USB connector.<br />
<br />
Flasher Portable PLUS: internal rechargeable 680mAh Li-Ion battery, min. 100 mA via USB connector.<br />
<br />
Other Flashers: 5V DC, min. 100 mA via USB connector.<br />
<br />
'''Installing Flasher PC-software (J-Flash)'''<br><br />
The latest version of the J-Flash software, which is part of the [[J-Link Software and Documentation Pack]].<br />
For more information about using J-Flash please refer to <tt>UM08003_JFlashARM.pdf</tt> (J-Flash user guide) which is also available for download on our website.<br />
<br />
=== Specifications ===<br />
<br />
<br />
==== Specifications for Flasher ARM ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Windows, Linux & MacOS<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C<br />
|-<br />
| Storage Temperature || -20 °C ... +60 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
!colspan="100%"| Mechanical<br />
|-<br />
| Size (without cables) || 121mm x 66mm x 30mm<br />
|-<br />
| Weight (without cables) || 119g<br />
|-<br />
!colspan="100%"| Available interfaces<br />
|-<br />
| USB Host interface || USB 2.0, full speed<br />
|-<br />
| Ethernet Host interface || 10/100 MBit<br />
|-<br />
| RS232 Host interface || RS232 9-pin<br />
|-<br />
| Target interface || JTAG 20-pin (14-pin adapter available)<br />
|-<br />
!colspan="100%"| JTAG Interface, Electrical<br />
|-<br />
| Power Supply || USB powered, 100mA for Flasher ARM. 500 mA if target is powered by Flasher ARM<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| Target supply voltage || Supply voltage is 5V, max.<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6 <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Max. JTAG speed || up to 12MHz<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
===== Flasher ARM download speed =====<br />
<br />
The following table lists the Flasher ARM performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! ARM7 memory download<br />
|-<br />
| Flasher ARM || 720 Kbytes/s (12MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
<br />
==== Specifications for Flasher RX ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Windows, Linux & MacOS<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C<br />
|-<br />
| Storage Temperature || -20 °C ... +60 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
!colspan="100%"| Mechanical<br />
|-<br />
| Size (without cables) || 121mm x 66mm x 30mm<br />
|-<br />
| Weight (without cables) || 119g<br />
|-<br />
!colspan="100%"| Available interfaces<br />
|-<br />
| USB Host interface || USB 2.0, full speed<br />
|-<br />
| Ethernet Host interface || 10/100 MBit<br />
|-<br />
| RS232 Host interface || RS232 9-pin<br />
|-<br />
| Target interface || JTAG 20-pin (shipped with 14-pin adapter for Renesas RX)<br />
|-<br />
!colspan="100%"| JTAG Interface, Electrical<br />
|-<br />
| Power Supply || USB powered, 100mA for Flasher RX. 500 mA if target is powered by Flasher RX<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| 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)<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6 <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Max. JTAG speed || up to 12MHz<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
===== Flasher RX download speed =====<br />
<br />
The following table lists the Flasher RX performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! Flasher RX600 series memory download<br />
|-<br />
| Flasher RX || 720 Kbytes/s (12MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
<br />
==== Specifications for Flasher PPC ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Windows, Linux & MacOS<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C<br />
|-<br />
| Storage Temperature || -20 °C ... +60 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
!colspan="100%"| Mechanical<br />
|-<br />
| Size (without cables) || 121mm x 66mm x 30mm<br />
|-<br />
| Weight (without cables) || 119g<br />
|-<br />
!colspan="100%"| Available interfaces<br />
|-<br />
| USB Host interface || USB 2.0, full speed<br />
|-<br />
| Ethernet Host interface || 10/100 MBit<br />
|-<br />
| RS232 Host interface || RS232 9-pin<br />
|-<br />
| Target interface || JTAG 20-pin (shipped with 14-pin adapter for Renesas PPC)<br />
|-<br />
!colspan="100%"| JTAG Interface, Electrical<br />
|-<br />
| Power Supply || USB powered, 100mA for Flasher PPC. 500 mA if target is powered by Flasher PPC<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| Target supply voltage || Supply voltage is 5V, max.<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6 <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Max. JTAG speed || up to 12MHz<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
===== Flasher RX download speed =====<br />
<br />
The following table lists the Flasher PPC performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! Memory download<br />
|-<br />
| Flasher PPC || 530 Kbytes/s (8 MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
<br />
==== Specifications for Flasher PRO ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Windows, Linux & MacOS<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C<br />
|-<br />
| Storage Temperature || -20 °C ... +60 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
!colspan="100%"| Mechanical<br />
|-<br />
| Size (without cables) || 121mm x 66mm x 30mm<br />
|-<br />
| Weight (without cables) || 119g<br />
|-<br />
!colspan="100%"| Available interfaces<br />
|-<br />
| USB Host interface || USB 2.0, full speed<br />
|-<br />
| Ethernet Host interface || 10/100 MBit<br />
|-<br />
| RS232 Host interface || RS232 9-pin<br />
|-<br />
| Target interface || JTAG 20-pin (14-pin adapter available)<br />
|-<br />
!colspan="100%"| JTAG Interface, Electrical<br />
|-<br />
| Power Supply || USB powered, 100mA for Flasher PRO. 500 mA if target is powered by Flasher PRO<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| Target supply voltage || Supply voltage is 5V, max.<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6 <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Max. JTAG speed || up to 12MHz<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
<br />
===== Supported CPU cores =====<br />
<br />
The Flasher PRO supports the following CPU cores:<br />
<br />
'''ARM Cortex'''<br><br />
* Cortex-A5<br />
* Cortex-A8<br />
* Cortex-A9<br />
* Cortex-R4<br />
* Cortex-R5<br />
* Cortex-M0<br />
* Cortex-M0+<br />
* Cortex-M1<br />
* Cortex-M3<br />
* Cortex-M4<br />
<br />
'''ARM (legacy cores)'''<br><br />
* ARM720T<br />
* ARM7TDMI<br />
* ARM7TDMI-S<br />
* ARM920T<br />
* ARM922T<br />
* ARM926EJ-S<br />
* ARM946E-S<br />
* ARM966E-S<br />
* ARM1136JF-S<br />
* ARM1136J-S<br />
* ARM1156T2-S<br />
* ARM1156T2F-S<br />
* ARM1176JZ-S<br />
* ARM1176JZF<br />
* ARM1176JZF-S<br />
<br />
'''Renesas RX'''<br><br />
* RX111<br />
* RX210<br />
* RX220<br />
* RX21A<br />
* RX610<br />
* RX621<br />
* RX62G<br />
* RX62N<br />
* RX62T<br />
* RX630<br />
* RX631<br />
* RX63N<br />
* RX63T<br />
<br />
'''Freescale Power PC'''<br><br />
* e200z0<br />
<br />
===== Supported Target interfaces =====<br />
<br />
The Flasher PRO supports the following target interfaces:<br />
<br />
* JTAG<br />
* SWD<br />
* FINE<br />
* SPD<br />
<br />
===== Flasher PRO download speed =====<br />
<br />
The following table lists the Flasher PRO performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! ARM7 memory download<br />
|-<br />
| Flasher PRO || 720 Kbytes/s (12MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
<br />
==== Specifications for Flasher Compact ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Microsoft Windows (x86/x64)<br>Linux (x86/x64/Arm)<br>macOS (x86/Apple M1)<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C<br />
|-<br />
| Storage Temperature || -20 °C ... +65 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
| Size (without cables) || 70mm x 45mm x 18mm<br />
|-<br />
| Weight (without cables) || 40g<br />
|-<br />
| USB Host interface || USB 2.0 (Hi-Speed); Micro USB<br />
|-<br />
| Target interface || JTAG 20-pin (14-pin adapter available)<br />
|-<br />
| Power Supply || USB powered, 130mA (idle)<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| Target supply voltage || Supply voltage is 5V, max.<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
| Supported target interfaces || SPI, QSPI, 8051 C2, cJTAG, FINE, ICSP, IIC, ISP, JTAG, PDI, SPD, SWD, SWIM, UART, UPDI<br />
|-<br />
| Serial transfer rate between Flasher Compact and target || Up to 50 MHz (Depending on target interface)<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6 <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
===== Supported CPU cores =====<br />
<br />
The Flasher Compact supports the following CPU cores:<br />
'''ARM Cortex'''<br><br />
* Cortex-A5<br />
* Cortex-A8<br />
* Cortex-A9<br />
* Cortex-R4<br />
* Cortex-R5<br />
* Cortex-M0<br />
* Cortex-M0+<br />
* Cortex-M1<br />
* Cortex-M3<br />
* Cortex-M4<br />
<br />
'''ARM (legacy cores)'''<br><br />
* ARM720T<br />
* ARM7TDMI<br />
* ARM7TDMI-S<br />
* ARM920T<br />
* ARM922T<br />
* ARM926EJ-S<br />
* ARM946E-S<br />
* ARM966E-S<br />
* ARM1136JF-S<br />
* ARM1136J-S<br />
* ARM1156T2-S<br />
* ARM1156T2F-S<br />
* ARM1176JZ-S<br />
* ARM1176JZF<br />
* ARM1176JZF-S<br />
<br />
'''Renesas RX'''<br><br />
* RX111<br />
* RX210<br />
* RX220<br />
* RX21A<br />
* RX610<br />
* RX621<br />
* RX62G<br />
* RX62N<br />
* RX62T<br />
* RX630<br />
* RX631<br />
* RX63N<br />
* RX63T<br />
<br />
'''Freescale Power PC'''<br><br />
* e200z0<br />
<br />
===== Flasher Compact download speed =====<br />
<br />
The following table lists the Flasher Compact performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! ARM7 memory download<br />
|-<br />
| Flasher Compact || 720 Kbytes/s (12MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
<br />
==== Specifications for Flasher Portable PLUS ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Windows, Linux & MacOS<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C (normal operation)<br>+5 °C ... +45 °C (battery charging)<br />
|-<br />
| Storage Temperature || -20 °C ... +45 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
| 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)<br />
|-<br />
| Charging via USB || 70 minutes (at 1A charging current)<br />
|-<br />
!colspan="100%"| Mechanical<br />
|-<br />
| Size (without cables) || 126mm x 70mm x 28mm<br />
|-<br />
| Weight (without cables) || 140g<br />
|-<br />
!colspan="100%"| Available interfaces<br />
|-<br />
| USB Host interface || USB 2.0<br />
|-<br />
| Target interface || Standard 20-pin 0.1" connector (Adapters available).<br />
|-<br />
!colspan="100%"| Target Interface, Electrical<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| Target supply voltage || Supply voltage is 4.5V, max. (depends on the current battery voltage).<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6 <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Max. JTAG speed || up to 12MHz<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
===== Supported CPU cores =====<br />
<br />
The Flasher Portable PLUS supports the following CPU cores:<br />
<br />
'''ARM Cortex'''<br><br />
* Cortex-A5<br />
* Cortex-A8<br />
* Cortex-A9<br />
* Cortex-R4<br />
* Cortex-R5<br />
* Cortex-M0<br />
* Cortex-M0+<br />
* Cortex-M1<br />
* Cortex-M3<br />
* Cortex-M4<br />
<br />
'''ARM (legacy cores)'''<br><br />
* ARM720T<br />
* ARM7TDMI<br />
* ARM7TDMI-S<br />
* ARM920T<br />
* ARM922T<br />
* ARM926EJ-S<br />
* ARM946E-S<br />
* ARM966E-S<br />
* ARM1136JF-S<br />
* ARM1136J-S<br />
* ARM1156T2-S<br />
* ARM1156T2F-S<br />
* ARM1176JZ-S<br />
* ARM1176JZF<br />
* ARM1176JZF-S<br />
<br />
'''Renesas RX'''<br><br />
* RX111<br />
* RX210<br />
* RX220<br />
* RX21A<br />
* RX610<br />
* RX621<br />
* RX62G<br />
* RX62N<br />
* RX62T<br />
* RX630<br />
* RX631<br />
* RX63N<br />
* RX63T<br />
<br />
'''Freescale Power PC'''<br><br />
* e200z0<br />
<br />
===== Supported Target interfaces =====<br />
<br />
The Flasher Portable PLUS supports the following target interfaces:<br />
* JTAG<br />
* SWD<br />
* FINE<br />
* SPD<br />
<br />
===== Flasher Portable PLUS download speed =====<br />
<br />
The following table lists the Flasher Portable PLUS performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! ARM7 memory download<br />
|-<br />
| Flasher PRO || 720 Kbytes/s (12MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
<br />
==== Specifications for Flasher Portable ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Windows, Linux & MacOS<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C<br />
|-<br />
| Storage Temperature || -20 °C ... +65 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
| Power Supply || a) USB powered, 100mA for Flasher Portable. 500 mA if target is powered by Flasher Portable<br>b) Batteries powered (3xAAA)<br />
|-<br />
!colspan="100%"| Mechanical<br />
|-<br />
| Size (without cables) || 130mm x 65mm x 25mm<br />
|-<br />
| Weight (without cables) || 120g<br />
|-<br />
!colspan="100%"| Available interfaces<br />
|-<br />
| USB Host interface || USB 2.0<br />
|-<br />
| Target interface || Standard 20-pin 0.1" connector (Adapters available).<br />
|-<br />
!colspan="100%"| Target Interface, Electrical<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| Target supply voltage || Supply voltage is 4.5V, max. (depends on the current battery voltage).<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6V <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Max. JTAG speed || up to 12MHz<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
===== Supported CPU cores =====<br />
<br />
The Flasher Portable supports the following CPU cores:<br />
<br />
'''ARM Cortex'''<br><br />
* Cortex-A5<br />
* Cortex-A8<br />
* Cortex-A9<br />
* Cortex-R4<br />
* Cortex-R5<br />
* Cortex-M0<br />
* Cortex-M0+<br />
* Cortex-M1<br />
* Cortex-M3<br />
* Cortex-M4<br />
<br />
'''ARM (legacy cores)'''<br><br />
* ARM720T<br />
* ARM7TDMI<br />
* ARM7TDMI-S<br />
* ARM920T<br />
* ARM922T<br />
* ARM926EJ-S<br />
* ARM946E-S<br />
* ARM966E-S<br />
* ARM1136JF-S<br />
* ARM1136J-S<br />
* ARM1156T2-S<br />
* ARM1156T2F-S<br />
* ARM1176JZ-S<br />
* ARM1176JZF<br />
* ARM1176JZF-S<br />
<br />
'''Renesas RX'''<br><br />
* RX111<br />
* RX210<br />
* RX220<br />
* RX21A<br />
* RX610<br />
* RX621<br />
* RX62G<br />
* RX62N<br />
* RX62T<br />
* RX630<br />
* RX631<br />
* RX63N<br />
* RX63T<br />
<br />
'''Freescale Power PC'''<br><br />
* e200z0<br />
<br />
===== Supported Target interfaces =====<br />
<br />
The Flasher Portable supports the following target interfaces:<br />
<br />
* JTAG<br />
* SWD<br />
* FINE<br />
* SPD<br />
<br />
===== Flasher Portable download speed =====<br />
<br />
The following table lists the Flasher Portable performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! ARM7 memory download<br />
|-<br />
| Flasher PRO || 720 Kbytes/s (12MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
== Working with Flasher ==<br />
<br />
This chapter describes functionality and how to use Flasher.<br />
<br />
=== Flasher Portable PLUS ===<br />
<br />
The Flasher Portable PLUS is a portable version of SEGGERs Flasher family,<br />
which has been designed to fill the need of an extremely portable, production grade,<br />
Flash programmer used for in-field firmware updates. No need to be tethered to an outlet,<br />
it is powered by an integrated Li-Ion cell (680mAh).<br />
The Flasher Portable PLUS programs flash targets in stand-alone mode or via J-Flash PC software.<br><br />
<br />
Furthermore the Flasher Portable PLUS allows the user to select between eight data images to be programmed.<br />
The images can be easily selected by using the SEL button on the front of the housing.<br />
For more information about support for multiple images, please refer to [[#Multiple File Support | Multiple File Support]].<br><br />
For setup and configuration purposes, the Flasher Portable PLUS connects to a PC via USB interface,<br />
running Windows, Linux & MacOS and has a built-in standard 20-pin J-Link target connector.<br><br />
<br />
{{Note|1=Ethernet and RS232 as host interface are not available for the Flasher Portable PLUS.}}<br />
<br />
==== Housing & Buttons ====<br />
<br />
The Flasher Portable PLUS comes with a display, which is for example used to represent the status of an ongoing flash progress.<br />
Furthermore, there are three buttons which allow the user to control Flasher Portable PLUS.<br />
For a detailed description of the functions, take a look at the table below:<br />
<br />
<!-- LG xxxxxx edit image with labels for buttons? (Is this actually necessary? Buttons are basically self-explanatory...) --><br />
[[File:Flasher_Portable_PLUS.png | 500px]]<br />
<br />
{| class="seggertable"<br />
|-<br />
! Button !! Description<br />
|-<br />
| Program || Start programming process with the currently selected image.<br />
|-<br />
| Select image || Select the image to be programmed next time the Program button is pressed.<br />
|-<br />
| 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.<br />
|-<br />
|}<br />
<br />
==== Configuration ====<br />
<br />
The Flasher Portable PLUS has some configuration options the other Flashers do not have.<br />
{| class="seggertable"<br />
|-<br />
! Option !! Description !! Value range !! Default value<br />
|-<br />
| AutoPowerOffOnIdle || Specifies the time interval after which the Flasher Portable will turn off without any user action || 1 to 3600 || 60<br />
|-<br />
| ShowDatCRCAfterProgramming || Activates displaying the data file CRC after the programming in the pop up message || 0 = inactive, 1 = active || 0<br />
|-<br />
|}<br />
<br />
If the <tt>Flasher.ini</tt> does not contain a <tt>[Config]</tt> section with the configuration option, the default value is used.<br />
<br />
'''Example:'''<br><br />
This sample will show the data file CRC after the programming and the auto power of is set to five minutes (=300 seconds).<br />
<br />
<source lang="c"><br />
[CONFIG]<br />
AutoPowerOffOnIdle = "300"<br />
ShowDatCRCAfterProgramming = "1"<br />
</source><br />
<br />
=== Flasher Portable ===<br />
<br />
The Flasher Portable is a portable version of SEGGERs Flasher family, which has been designed to fill the need of an extremely portable,<br />
production grade, Flash programmer used for in-field firmware updates. No need to be tethered to an outlet,<br />
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><br />
<br />
Furthermore the Flasher Portable allows the user to select between four data images to be programmed.<br />
The images can be easily selected by using the arrow buttons on the front of the housing.<br />
For more information about support for multiple images, please refer to [[#Multiple File Support | Multiple File Support]].<br><br />
For setup and configuration purposes, the Flasher Portable connects to a PC via USB interface,<br />
running Windows, Linux & MacOS and has a built-in standard 20-pin J-Link target connector.<br><br />
<br />
{{Note|1=Ethernet and RS232 as host interface are not available for the Flasher Portable.}}<br />
<br />
==== Housing & Buttons ====<br />
<br />
The Flasher Portable comes with several leds which are for example used to represent the status of an ongoing flash progress.<br />
Furthermore, there are three buttons which allow the user to control Flasher Portable.<br />
For a detailed description of the functions, take a look at the two tables below:<br />
<br />
<!-- LG xxxxxx edit image with labels for buttons?--><br />
[[File:Flasher_Portable_Top_2.png | 500px]]<br />
<br />
{| class="seggertable"<br />
|-<br />
! LED !! Description<br />
|-<br />
| ACTIVE || GREEN. Blinks while the Flasher Portable is busy / performs operations on the target.<br />
|-<br />
| PASS/FAIL || GREEN/RED. Indicates, if the last flashing cycle was successful.<br />
<ul><br />
<li> GREEN: Flashing cycle completed successfully.</li><br />
<li> RED: Flashing cycle completed with error.</li><br />
</ul><br />
|-<br />
| 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]].<br />
|-<br />
| POWER || GREEN: Indicates if Flasher is currently powered. Blinks while Flasher Portable tries to enumerate via USB.<br />
|-<br />
| 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.<br />
|-<br />
|}<br />
<br />
{| class="seggertable"<br />
|-<br />
! Button !! Description<br />
|-<br />
| Program || Start programming process with the currently selected image.<br />
|-<br />
| Select image || Select the image to be programmed next time the <tt>Program</tt> button is pressed.<br />
|-<br />
| 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<br />
|-<br />
|}<br />
<br />
=== File system ===<br />
<br />
The Flasher supports 8.3 filenames only (8 characters filename, 3 characters file extension).<br />
Using longer filenames may result in incorrect operation. Integrated functions,<br />
like the FTP server or the terminal server, will refuse writing files with long filenames.<br />
<br />
=== Setting up the IP interface ===<br />
<br />
Setting up the IP interface<br />
Some of the Flasher models come with an additional Ethernet interface to communicate with the host system.<br />
These Flashers also come with a built-in webserver which allows some basic setup of the emulator,<br />
e.g. configuring a default gateway which allows using it even in large intranets. For more information,<br />
please refer to [[#TCP Services | TCP Services]].<br />
<br />
==== Connecting the first time ====<br />
<br />
When connecting Flasher the first time, it attempts to acquire an IP address via DHCP.<br />
The recommended way for finding out which IP address has been assigned to Flasher is, to use the J-Link Configurator.<br />
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.<br />
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''.<br />
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,<br />
please refer to ''UM08001, J-Link / J-Trace User Guide'', chapter ''Setup'', section ''Setting up the IP interface''.<br />
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]].<br />
<br />
=== Operating modes ===<br />
<br />
All Flashers except the Flasher ATE are able to boot in 3 different modes:<br />
<br />
* PC-based mode<br />
* Stand-alone mode<br />
* File access mode<br />
<br />
{{Note|1=The Flasher ATE only supports the stand-alone mode.}}<br />
<br />
'''Definition PC-based mode'''<br><br />
Flasher is connected to a PC via USB/Ethernet and controlled by a PC application (J-Flash).<br />
If there is an RS232 connection to a PC, does not have any influence on if PC-based mode is entered or not.<br />
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, ...)<br />
<br />
'''Definition Stand-alone mode'''<br><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.<br />
<br />
'''Definition file access mode'''<br><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.<br />
In this mode, Flasher enumerates as a mass storage device (like an USB Stick) at the host PC.<br />
In this mode, configuration + data files can be manually placed on the Flasher and the Flasher logfile can be read out.<br />
If you are using a self-powered Flasher such as the Flasher Portable Plus, the Flasher must be turned off before connecting it.<br />
<br />
==== PC-based mode ====<br />
If you want to use Flasher for the first time you need to install the J-Link software and documentation package.<br />
After installation, connect Flasher to the host PC via USB or Ethernet.<br />
For more information about how to install the J-Link software and documentation package please refer to [[J-Link Software and Documentation Pack]].<br />
<br />
===== Connecting the target system =====<br />
<br />
'''Power-on sequence'''<br><br />
In general, Flasher should be powered on before connecting it with the target device.<br />
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.<br />
Power-on the device after you connected Flasher to it. Flasher will boot in "PC-based mode".<br />
<br />
'''Verifying target device connection with J-Link.exe'''<br><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.<br />
Then start the J-Link command line tool <tt>JLink.exe</tt>,<br />
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.<br />
The screenshot below shows the output of <tt>JLink.exe</tt>.<br />
<br />
[[File:flasher_jlinkmode.gif]]<br />
<br />
===== LED status indicators =====<br />
<br />
In PC-based mode, there are also certain LED status codes defined:<br />
<br />
{| class="seggertable"<br />
|-<br />
! # !! Status of LED !! Meaning<br />
|-<br />
| 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.<br />
|-<br />
| 0 || GREEN<br>constant || Flasher enumeration process is complete and it is ready to be controlled by a PC application.<br />
|-<br />
|}<br />
<br />
==== Stand-alone mode ====<br />
<br />
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]].<br />
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).<br />
In the "stand-alone mode" Flasher can be used as a stand-alone flash programmer.<br><br />
<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]].}}<br />
<br />
===== LED status indicators =====<br />
Progress and result of an operation is indicated by Flasher's LEDs. The behavior is different for J-Link and stand-alone mode.<br />
For a definition of the different modes, please refer to [[#Operating modes | Operating modes]].<br />
The following table describes the behavior of the LEDs in stand-alone mode.<br />
<br />
{| class="seggertable"<br />
|-<br />
! # !! Status of LED !! Meaning<br />
|-<br />
| 0 || GREEN<br>constant || Flasher waits for a start trigger to perform an operation in stand-alone mode.<br />
|-<br />
| 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><br />
|-<br />
| 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.<br />
|-<br />
|}<br />
Older Flasher models have a different behavior.<br />
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:<br />
<br />
* 1621xxxxx (Flasher ARM V2)<br />
* 1630xxxxx (Flasher ARM V3)<br />
* 4210xxxxx (Flasher PPC V1)<br />
* 4110xxxxx (Flasher RX V1)<br />
<br />
{| class="seggertable"<br />
|-<br />
! # !! Status of LED !! Meaning<br />
|-<br />
| 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.<br />
|-<br />
| 1 || GREEN<br>constant || Connect to target and perform init sequence.<br />
|-<br />
| 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><br />
|-<br />
| 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.<br />
|-<br />
|}<br />
<br />
==== File access mode ====<br />
<br />
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".<br />
If you are using a self-powered Flasher such as the Flasher Portable Plus, the Flasher must be turned off before connecting it.<br />
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.<br />
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>.<br />
<br />
[[File:flasher_mode_msd.gif]]<br />
<br />
<tt>FLASHER.CFG</tt> contains the configuration settings for programming the target device and <tt>FLASHER.DAT</tt> contains the data to be programmed.<br />
<tt>FLASHER.LOG</tt> contains all logging information about the commands, performed in stand-alone mode.<br />
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><br />
<br />
Currently, J-Flash does not support to configure Flasher for automated serial number programming.<br><br />
<br />
If you want to configure multiple Flasher for the same target you do not have to use J-Flash all the time.<br />
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".<br />
<br />
=== Setting up Flasher for stand-alone mode ===<br />
<br />
In order to set up Flasher for the stand-alone mode it needs to be configured once using the J-Flash software.<br />
For more information about J-Flash, please refer to the ''J-Flash User Guide''.<br><br />
<br />
After starting J-Flash, open the appropriate J-Flash project for the target Flasher shall be configured for, by selecting '''File''' -> '''Open Project'''.<br />
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><br />
<br />
After the appropriate project has been opened / created, the data file which shall be programmed needs to be loaded, by selecting '''File''' -> '''Open'''.<br />
After this J-Flash should look like in the screenshot below.<br />
<br />
[[File:jflash_projectfile_datafile.gif]]<br />
<br />
Before downloading the configuration (project) and program data (data file) to Flasher, the connection type (USB/IP) needs to be selected in the project.<br />
These settings are also saved on a per-project basis, so this also only needs to be setup once per J-Flash project.<br />
The connection dialog is opened by clicking '''Options''' -> '''Project settings''' -> '''General'''.<br />
<br />
[[File:jflash_connection_dialog.gif]]<br />
<br />
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.<br />
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.<br />
The user then can simply select the Flash he wants to download the configuration to.<br />
<br />
[[File:EmuSelectionDialog.gif]]<br />
<br />
In order to download the configuration and program data to the Flasher, simply select '''File''' -> '''Download config & data file to Flasher'''.<br />
<br />
[[File:jflash_download_to_emul.gif]]<br />
<br />
The J-Flash log window indicates that the download to the emulator was successful.<br />
<br />
[[File:jflash_download_to_emu_succ.gif]]<br />
<br />
From now on, Flasher can be used in stand-alone mode (without host PC interaction) for stand-alone programming.<br />
<br />
==== Preparing for stand-alone operation manually ====<br />
<br />
As an alternative, J-Flash can also be used to save config and data file to a hard drive.<br><br />
<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,<br />
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.<br />
<br />
'''Creating config and data files'''<br><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><br />
<br />
For some devices, additional files (*.PEX) are needed.<br />
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.<br />
<br />
'''About *.PEX files'''<br><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,<br />
the following needs to be taken care of:<br><br />
<br />
For some devices, special connect, reset etc. sequences are necessary which are stored in so-called *.PEX files on the Flasher.<br><br />
<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><br />
<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><br />
The *.PEX files need to be placed in a subdirectory with the same name as the corresponding *.cfg file.<br />
J-Flash creates a directory with the correct name automatically when a config file is created.<br><br />
<br />
Example:<br><br />
<br />
MyConf0 is a project for a device that requires a *.PEX file for connect.<br><br />
MyConf1 is a project for a device that requires no *.PEX file at all.<br />
<br />
[[File:PEX_File_Flasher.png]]<br />
<br />
=== Universal Flash Loader mode ===<br />
<br />
As an alternative to the stand-alone mode, configured via J-Flash, there is the Universal Flash Loader mode.<br />
While the normal stand-alone mode relies on using the debug interface of the device, the Universal Flash Loader<br />
mode uses device or vendor specific programming interfaces and protocols and therefore it is independent of the<br />
CPU core.<br><br />
<br />
The Universal Flash Loader is available for the following Flasher models:<br />
* Flasher PRO<br />
* Flasher Compact<br />
* Flasher Portable PLUS<br />
<br />
For some of the supported devices, SEGGER offers specific adapters.<br />
<br />
==== Preparing manually ====<br />
<br />
The Universal Flash Loader uses an configuration file (*.UNI), a device specific flash programming algorithm (*.PEX) and a data file (*.DAT).<br />
<br />
===== Configuration =====<br />
<br />
The configuration file basically is split into three parts.<br />
The first part, the section [DEVICE], controls the generic behavior of the Universal Flash Loader.<br />
It specifies which protocol driver and data file to use. It allows enabling and configuring target power<br />
and it defines which actions to perform.<br />
The second part consists of one or more [BANKx] sections, which contain information about the memories.<br />
The third part, the section [CONFIG], includes configuration settings for the protocol driver.<br><br />
<br />
An .UNI file might look as follows:<br><br />
<br />
<source lang="c"><br />
[OPTIONS]<br />
TargetPower = "0"<br />
ChipErase = "0"<br />
<br />
[TASKS]<br />
CheckBlank = "1"<br />
Erase = "1"<br />
Program = "1"<br />
Verify = "1"<br />
Secure = "1"<br />
<br />
[DEVICE]<br />
Algo = "RL78.PEX"<br />
Data = "ALL_6k.dat"<br />
<br />
[BANK0]<br />
; Code Flash<br />
Base = "0x00000000"<br />
Size = "0x00004000"<br />
Sect = "0x00000400"<br />
<br />
[BANK1]<br />
; Data Flash<br />
Base = "0x000F1000"<br />
Size = "0x00000800"<br />
Sect = "0x00000400"<br />
<br />
[CONFIG]<br />
BaudRate = "1000000"<br />
ClearConfigOnConnect = "0x00"<br />
Security = "0xFF"<br />
ShieldStart = "0x0000"<br />
ShieldEnd = "0x000F"<br />
</source><br />
<br />
'''[OPTIONS]'''<br><br />
'''TargetPower'''<br><br />
If set to a value >0, power is applied to the target.<br />
The value defines the delay (in ms) after enabling the target power supply and before starting to communicate with the target.<br />
<br />
'''ChipErase'''<br><br />
If set to 1, the chip erase function is called for erasing the chip.<br><br />
{{Note|1=Do not enable this setting if the flash programming algorithm does not support chip erase.}}<br />
<br />
'''[TASKS]'''<br><br />
'''CheckBlank'''<br><br />
Defines if a blank check should be performed before erasing a sector.<br />
<br />
'''Erase'''<br><br />
Defines if the sector should be erased before programming.<br />
<br />
'''Program'''<br><br />
Defines if the sector should be programmed.<br />
<br />
'''Verify'''<br><br />
Defines if the sector should be verified after programming.<br />
<br />
'''Secure'''<br><br />
Defines if the device should be secured or protected against read-out after verifying.<br />
<br />
'''[DEVICE]'''<br><br />
'''Algo'''<br><br />
File name of the flash programming algorithm. This file is provided by SEGGER and will typically support a series of devices.<br />
<br />
'''Data'''<br><br />
File name of the data file to program. The Flasher only supports the Flasher .dat file format.<br />
Flasher .dat files can be generated by J-Flash or Universal Flash Loader and offer high performance together with high flexibility.<br />
<br />
'''[BANKx]'''<br><br />
x blocks with configuration data for the flash banks. All three parameters (Base, Size and Sect) are mandatory.<br />
<br />
'''Base'''<br><br />
Base address of the flash bank.<br />
<br />
'''Size'''<br><br />
Total size of the flash bank.<br />
<br />
'''Sect'''<br><br />
Sector size of the flash bank.<br />
<br />
'''[CONFIG]'''<br><br />
This section includes specific configuration data for the flash programming algorithm.<br><br />
There are no general parameters.<br />
<br />
{{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. }}<br />
<br />
==== Preparing using the PC utility ====<br />
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.<br />
<br />
[[File:Universal Flash Loader.png]]<br />
<br />
The Universal Flash Loader Configurator comes with a large list of devices and flash programming algorithms. If you are going to<br />
use a device from one of the supported families which currently is not available in the utility, feel free to contact the support.<br />
<br />
=== Multiple File Support ===<br />
<br />
It is also possible to have multiple data files and config files on Flasher, to make Flasher more easy to use in production environment.<br />
To choose the correct configuration file and data file pair, a <tt>FLASHER.INI</tt> file is used.<br />
This init file contains a <tt>[FILES]</tt> section which describes which configuration file and which data file should be used for programming.<br />
A sample content of a FLASHER.INI file is shown below:<br><br />
<br />
<source><br />
[FILES]<br />
DataFile = "Flasher1.dat"<br />
ConfigFile = "Flasher1.cfg"<br />
</source><br />
<br />
Using this method all configuration files and data files which are used in the production only have to be downloaded once.<br />
From there on a configuration file / data file pair can be switched by simply replacing the <tt>FLASHER.INI</tt> by a new one,<br />
which contains the new descriptions for the configuration file and data file. The <tt>FLASHER.INI</tt> can be replaced in two ways:<br />
<ol><br />
<li>Boot Flasher in file access mode in order to replace the <tt>FLASHER.INI</tt></li><br />
<li><br />
If Flasher is already integrated into the production line, runs in stand-alone mode and can not be booted in other mode:<br />
Use the file I/O commands provided by the ASCII interface of Flasher, to replace the <tt>FLASHER.INI</tt>.<br />
For more information about the file I/O commands, please refer to [[#File I/O commands | File I/O commands]].<br />
</li><br />
</ol><br />
{{Note|1=Flasher supports 8.3 filenames only (8 characters filename, 3 characters file extension). Using longer filenames may result in incorrect operation.}}<br />
<br />
==== Flasher Portable specifics ====<br />
<br />
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><br />
<br />
Which config / data file pair is used for which image selection position is determined by the contents of the FLASHER.INI.<br />
For this, the FLASHER.INI contents in the <tt>[FILES]</tt> section have been extended.<br />
The sample below shows how to enable the user to select between four different images on the Flasher portable via the select / arrow button:<br />
<br />
<source><br />
[FILES]<br />
DataFile = "First.dat"<br />
ConfigFile = "First.cfg"<br />
DataFile1 = "Second.dat"<br />
ConfigFile1 = "Second.cfg"<br />
DataFile2 = "Third.dat"<br />
ConfigFile2 = "Third.cfg"<br />
DataFile3 = "Fourth.dat"<br />
ConfigFile3 = "Fourth.cfg"<br />
</source><br />
<br />
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.<br />
From there on, switching between the files can be done by simply using the selection button of Flasher Portable.<br />
<br />
===== Example =====<br />
<br />
1 Target, 2 Datafiles (e.g. boot loader und application) --> same configuration file (*.CFG) but different data files (*.DAT) should be used.<br><br />
<br />
* Open pre-configured J-Flash project<br />
* File -> Save Flasher config file ... (DEFAULT.CFG)<br />
* Open data file 1 (boot loader)<br />
* File -> Save Flasher data file ... (BOOT.DAT)<br />
* Open data file 2 (application)<br />
* File -> Save Flasher data file ... (APP.DAT)<br />
* Create the a FLASHER.INI file (content see below)<br />
* Connect the Flasher in file access mode to the PC<br />
* Copy DEFAULT.CFG, BOOT.DAT, APP.DAT and FLASHER.INI on the Flasher<br />
<br />
FLASHER.INI content:<br><br />
<br />
<source><br />
[FILES]<br />
DataFile = "BOOT.DAT"<br />
ConfigFile = "DEFAULT.CFG"<br />
DataFile1 = "APP.DAT"<br />
ConfigFile1 = "DEFAULT.CFG"<br />
</source><br />
<br />
==== Flasher Portable PLUS specifics ====<br />
<br />
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><br />
<br />
Which config / data file pair is used for which image selection position is determined by the contents of the FLASHER.INI.<br />
For this, the FLASHER.INI may contain several <tt>[BATCH]</tt> sections.<br />
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:<br />
<br />
<source><br />
[BATCH]<br />
DataFile = "First.dat"<br />
ConfigFile = "First.cfg"<br />
[BATCH1]<br />
DataFile = "Second.dat"<br />
ConfigFile = "Second.cfg"<br />
[BATCH2]<br />
DataFile = "Third.dat"<br />
ConfigFile = "Third.cfg"<br />
[BATCH7]<br />
DataFile = "Proj_8.dat"<br />
ConfigFile = "Proj_8.cfg"<br />
[BATCH15]<br />
DataFile = "Proj_16.dat"<br />
ConfigFile = "Proj_16.cfg"<br />
</source><br />
<br />
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.<br />
From there on, switching between the files can be done by simply using the selection button of Flasher Portable PLUS.<br />
<br />
Please also consider the chapter [[#Batch Programming in stand-alone mode | Batch Programming in stand-alone mode]].<br />
<br />
{{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.}}<br />
{{Note|1=You may have gaps in the list. The missing entries will be skipped when selecting the next configuration.}}<br />
{{Note|1=The <tt>[Files]</tt> section is supported by the Flasher Portable PLUS, too. But the number of configuration is limited to four.}}<br />
<br />
===== Example =====<br />
<br />
1 Target, 2 Datafiles (e.g. boot loader und application) --> same configuration file (*.CFG) but different data files (*.DAT) should be used.<br><br />
<br />
* Open pre-configured J-Flash project<br />
* File -> Save Flasher config file ... (DEFAULT.CFG)<br />
* Open data file 1 (boot loader)<br />
* File -> Save Flasher data file ... (BOOT.DAT)<br />
* Open data file 2 (application)<br />
* File -> Save Flasher data file ... (APP.DAT)<br />
* Create the a FLASHER.INI file (content see below)<br />
* Connect the Flasher in file access mode to the PC<br />
* Copy DEFAULT.CFG, BOOT.DAT, APP.DAT and FLASHER.INI on the Flasher<br />
<br />
FLASHER.INI content:<br><br />
<br />
<source><br />
[BATCH]<br />
DataFile = "BOOT.DAT"<br />
ConfigFile = "DEFAULT.CFG"<br />
DisplayName = "Bootloader"<br />
[BATCH1]<br />
DataFile = "APP.DAT"<br />
ConfigFile = "DEFAULT.CFG"<br />
DisplayName = "Application"<br />
[BATCH2]<br />
DataFile = "BOOT.DAT"<br />
ConfigFile = "DEFAULT.CFG"<br />
DataFile1 = "APP.DAT"<br />
ConfigFile1 = "DEFAULT.CFG"<br />
DisplayName = "BL and App"<br />
</source><br />
<br />
=== Custom labels ===<br />
<br />
Flasher supports to assign custom labels to configurations. This allows to specify easy to remember names for configurations that are stored on the Flasher.<br />
<br />
==== Hardware and software requirements ====<br />
This feature is supported by the following models:<br />
* Flasher Portable PLUS<br />
<br />
This feature is supported since V6.30e of the software package and firmware<br />
<br />
==== Assigning labels ====<br />
The configuration and data file pairs are specified in the <tt>FLASHER.INI</tt> file:<br />
<source><br />
[FILES]<br />
DataFile = "IMAGE0.dat"<br />
ConfigFile = "IMAGE0.cfg"<br />
DataFile1 = "IMAGE1.dat"<br />
ConfigFile1 = "IMAGE1.cfg"<br />
</source><br />
<br />
By default, Flasher will show the names of the configuration and data file:<br />
[[File:FW1_smartwatch_nolabel.png]]<br />
[[File:FW2_smart_meter_nolabel.png]]<br />
<br />
By adding <tt>DisplayName</tt>, <tt>DisplayName1</tt>, ... keys to the <tt>FLASHER.INI</tt>, a custom label can be shown instead:<br />
<source><br />
[FILES]<br />
DisplayName = "FW smartwatch"<br />
DataFile = "IMAGE0.dat"<br />
ConfigFile = "IMAGE0.cfg"<br />
DisplayName1 = "FW smart meter"<br />
DataFile1 = "IMAGE1.dat"<br />
ConfigFile1 = "IMAGE1.cfg"<br />
</source><br />
<br />
The images will now be shown as follows:<br />
[[File:FW1_smartwatch_label.png]]<br />
[[File:FW2_smart_meter_label.png]]<br />
<br />
==== Considerations ====<br />
* 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.<br />
<br />
=== Programming multiple targets ===<br />
<br />
It is possible to program multiple targets which are located in a JTAG chain.<br />
The targets will be programmed each with a configuration and a data file.<br />
The configuration for the desired target must be selected before it can be programmed,<br />
this can be done with the <tt>#SELECT</tt> command.<br />
For more information how to use the <tt>#SELECT</tt> command please refer to Chapter "3.3.5 ''Commands to Flasher''".<br />
<br />
'''Example'''<br><br />
Three devices should be programmed.<br><br />
<br />
JTAG Chain: ''TDI'' --> ''Device2'' --> ''Device1'' --> ''Device0'' --> ''TDO''<br><br />
<br />
Three configurations would be stored on the flasher:<br><br />
<br />
Config 0: Configured to program Device0 (DEVICE0.CFG, DEVICE0.DAT)<br><br />
Config 1: Configured to program Device1 (DEVICE1.CFG, DEVICE1.DAT)<br><br />
Config 2: Configured to program Device2 (DEVICE2.CFG, DEVICE2.DAT)<br><br />
<br />
Selection and programming of the target will be done via the ASCII interface:<br><br />
<br />
<source><br />
#SELECT DEVICE0<br />
#AUTO<br />
#SELECT DEVICE1<br />
#AUTO<br />
#SELECT DEVICE2<br />
#AUTO<br />
</source><br />
<br />
==== Programming multiple targets with J-Flash ====<br />
<br />
Programming multiple targets can also be done via J-Flash using the command line interface.<br />
For this each target must be handled with its own project file.<br />
<br />
'''Example'''<br><br />
<br />
<source><br />
JFlash.exe -openproj"Device0.jflash" -open"Device0.hex" -auto -exit<br />
JFlash.exe -openproj"Device1.jflash" -open"Device1.hex" -auto -exit<br />
JFlash.exe -openproj"Device2.jflash" -open"Device2.hex" -auto -exit<br />
</source><br />
<br />
=== Batch Programming in stand-alone mode ===<br />
<br />
Batch programming allows to execute different stand-alone mode jobs in batch to be executed in immediate succession, without any user interaction in between.<br />
This can be used for example to program multiple targets in a JTAG-Chain or multiple data files to a target.<br><br />
A batch may contains an unlimited number of configurations which consist of a data file (*.DAT) and config file (*.CFG).<br />
For further information regarding config and data files, please refer to [[#Preparing for stand-alone operation manually | Preparing for stand-alone operation manually]].<br><br />
In order to specify the batch jobs, a FLASHER.INI file is used.<br />
This init file contains a [BATCH] section which describes which configuration pairs (*.DAT and *.CFG file) should be used for each batch job.<br />
A sample content of a FLASHER.INI file is shown below:<br><br />
<br />
<source><br />
[BATCH]<br />
DataFile = "Flasher0.dat"<br />
ConfigFile = "Flasher0.cfg"<br />
DataFile1 = "Flasher1.dat"<br />
ConfigFile1 = "Flasher1.cfg"<br />
</source><br />
<br />
[[File:Batch_Jobs.bmp]]<br />
<br />
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.<br />
<br />
<br />
[[File:Batch_Programming.bmp]]<br />
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<br />
currently executed action.<br />
<br />
<br />
[[File:Batch_Result.bmp]]<br />
The result of the programming will be shown on the screen after finishing all jobs.<br />
<br />
<br />
Creating / Replacing of the FLASHER.INI file can done in two ways:<br><br />
<ol><br />
<li>Boot Flasher in file access mode in order to replace the FLASHER.INI</li><br />
<li><br />
If Flasher is already integrated into the production line, runs in stand-alone mode and can not be booted in other mode:<br />
Use the file I/O commands provided by the ASCII interface of Flasher, to replace the FLASHER.INI .<br />
For more information about the file I/O commands, please refer to [[#File I/O commands | File I/O commands]].<br />
In case of an error occurred during execution, the Flasher terminates the entire batch processing.<br />
</li><br />
</ol><br />
{{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.}}<br />
{{Note|1=Flasher supports 8.3 filenames only (8 characters filename, 3 characters file extension). Using longer filenames may result in incorrect operation.}}<br />
<br />
==== Flasher Portable specifics ====<br />
<br />
Flasher Portable allows to choose between four different batches during runtime by using the select/arrow button on the front of Flasher Portable.<br />
Which batch configuration is used for which image selection position is specified in the FLASHER.INI.<br />
For this, the FLASHER.INI contents in the [BATCH] section have been extended.<br />
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><br />
<br />
<source><br />
[BATCH]<br />
DataFile = "Flasher0.dat"<br />
ConfigFile = "Flasher0.cfg"<br />
DataFile1 = "Flasher1.dat"<br />
ConfigFile1 = "Flasher1.cfg"<br />
DataFile2 = "Flasher2.dat"<br />
ConfigFile2 = "Flasher2.cfg"<br />
[BATCH1]<br />
DataFile = "TEST.dat"<br />
ConfigFile = "Test.cfg"<br />
[BATCH2]<br />
DataFile = "VALIDATE.dat"<br />
ConfigFile = "Flasher0.cfg"<br />
</source><br />
<br />
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.<br />
From there on, switching between the batches can be done by simply using the selection button of Flasher Portable.<br />
<br />
<br />
<br />
==== Examples ====<br />
<br />
'''Example 1:''' Programming two Data files to the same target<br><br />
<br />
* Open your J-Flash project.<br />
* Use File -> Save Flasher config file... to save the .CFG file (in this example: STM32F4.CFG).<br />
* Select the first binary and use File -> Save Flasher Data file... to save the first .DAT file (in this example: DATA0.DAT).<br />
* Select the second binary and use File -> Save Flasher Data file... to save the second data file .DAT file (in this example: DATA1.DAT).<br />
* Copy the Files to the Flasher e.g. by using file access mode.<br />
* Create a FLASHER.INI file in the root directory of the Flasher.<br />
* Exemplary content of FLASHER.INI:<br><br />
<source><br />
[BATCH]<br />
DataFile = "DATA0.dat"<br />
ConfigFile = "emPower.cfg"<br />
DataFile1 = "DATA1.dat"<br />
ConfigFile1 = "emPower.cfg"<br />
</source><br />
<br />
<br />
'''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><br />
Example scenario: 2 Devices in a JTAG chain, a STM32F1 and a STM32F4. <br><br />
<br />
* Follow the same as described before and additionally:<br />
* Create one project file per target (and create a .CFG file of each one).<br />
* Make sure each project file is configured correctly, especially the JTAG-Chain position (See UM8003 "J-Flash" for more detailed info).<br />
* Exemplary content of FLASHER.INI:<br><br />
<source><br />
[BATCH]<br />
DataFile = "F1DATA.dat"<br />
ConfigFile = "STM32F1.cfg"<br />
DataFile1 = "F4DATA0.dat"<br />
ConfigFile1 = "STM32F4.cfg"<br />
DataFile2 = "F4DATA1.dat"<br />
ConfigFile2 = "STM32F4.cfg"<br />
</source><br />
<br />
'''Example 3:''' Using multiple Batch sections with Flasher Portable.<br><br />
Example scenario: 2 Devices in a JTAG chain, a STM32F1 and a STM32F4.<br><br />
Selection 1 will program the STM32F1 target.<br><br />
Selection 2 will program the STM32F4 target using "F4DATA0.dat".<br><br />
Selection 3 will program the STM32F4 target using "F4DATA1.dat".<br><br />
Selection 4 will execute 1, 2 and 3 in sequence.<br><br />
* Exemplary content of FLASHER.INI:<br><br />
<source><br />
[BATCH]<br />
DataFile = "F1DATA.dat"<br />
ConfigFile = "STM32F1.cfg"<br />
[BATCH1]<br />
DataFile = "F4DATA0.dat"<br />
ConfigFile = "STM32F4.cfg"<br />
[BATCH2]<br />
DataFile = "F4DATA1.dat"<br />
ConfigFile = "STM32F4.cfg"<br />
[BATCH3]<br />
DataFile = "F1DATA.dat"<br />
ConfigFile = "STM32F1.cfg"<br />
DataFile1 = "F4DATA0.dat"<br />
ConfigFile1 = "STM32F4.cfg"<br />
DataFile2 = "F4DATA1.dat"<br />
ConfigFile2 = "STM32F4.cfg"<br />
</source><br />
<br />
=== Serial number programming ===<br />
<br />
Flasher supports programming of serial numbers. In order to use the serial number programming feature,<br />
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><br />
<br />
In general, Flasher supports two ways of programming a serial number into the target:<br><br />
<ol><br />
<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><br />
<li><br />
Programming custom serial numbers from a serial number list file.<br />
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.<br />
Serial number list file needs to be specified and created by user.<br />
</li><br />
</ol><br />
In the following some generic information how to setup Flasher & the J-Flash project for serial number programming are given.<br><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.}}<br />
{{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.}}<br />
<br />
==== Serial number settings ====<br />
<br />
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.<br />
This is done by enabling the '''Program serial number''' option as shown in the screenshot and table below:<br><br />
<br />
[[File:SN_Sample_JFlashSettings.gif]]<br />
<br />
{| class="seggertable"<br />
|-<br />
! Setting !! Meaning<br />
|-<br />
| <tt>Address</tt> || The address the serial number should be programmed at.<br />
|-<br />
| <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.<br />
|-<br />
| <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.<br />
|-<br />
| <tt>Increment</tt> || Specifies how much <tt>Next SN</tt> is incremented.<br />
|-<br />
|}<br />
<br />
==== Serial number file ====<br />
<br />
When selecting '''File -> Download serial number file to Flasher''', J-Flash will create a Serial number file named as <tt><JFlashProjectName>_Serial.txt</tt>.<br />
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.<br />
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.<br />
<br />
==== Serial number list file ====<br />
<br />
In order to program custom serial numbers which can not be covered by the standard serial number scheme provided by J-Flash<br />
(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.<br />
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.<br />
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><br />
* One serial number per line<br />
* Each byte of the serial number is described by two hexadecimal digits.<br />
<br />
'''Example'''<br><br />
A 8-byte serial number should be programmed at address 0x08000000.<br><br />
<br />
It should be programmed as follows in the memory:<br><br />
<br />
<tt>0x08000000: 0x01 0x02 0x03 0x04 0x55 0x66 0x77 0x88</tt><br><br />
<br />
The serial number list file should look as follows:<br><br />
<br />
<tt>0102030455667788</tt><br />
<br />
[[File:SN_SNList.gif]]<br />
<br />
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><br />
<br />
Which line Flasher will read at the next programming cycle, is configured via the <tt>Next SN</tt> option in J-Flash.<br />
For more information, please refer to [[#Serial number settings | Serial number settings]].<br />
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><br />
<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.}}<br />
{{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.}}<br />
<br />
==== Programming process ====<br />
<br />
Flasher will increment the serial number in SERIAL.TXT by the value defined in <tt>Increment</tt>, after each successful programming cycle.<br><br />
<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><br />
<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.<br />
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.}}<br />
<br />
==== Downloading serial number files to Flasher ====<br />
<br />
Downloading the serial number files needs to be done explicitly by selecting '''File-> Download serial number file to Flasher'''.<br />
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.<br />
<br />
==== Sample setup ====<br />
<br />
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.<br />
<br />
'''Defining serial number address, length and start value'''<br><br />
In the J-Flash project the following needs to be defined:<br><br />
* <tt>Address</tt> is 0x08001000<br />
* <tt>Next SN</tt> is 1234567<br />
* <tt>Increment</tt> is 1<br />
* <tt>Len</tt> is 4 (bytes)<br />
<br />
[[File:SN_Sample_JFlashSettings.gif]]<br />
<br />
'''Downloading configuration, data and serial number to Flasher.'''<br><br />
After setting up the rest of the configuration (Target interface etc.) and selecting an appropriate data file, the configuration,<br />
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><br />
<br />
[[File:SN_Sample_DownloadToFlasher.gif]]<br />
<br />
After downloading the serial number to Flasher, J-Flash also created the <tt><JFlashProjectName>_Serial.txt</tt>.<br />
<br />
[[File:SN_Sample_SerialFileCreated.gif]]<br />
<br />
Now Flasher is prepared to program the 8-byte serial number.<br />
<br />
=== Patch file support ===<br />
<br />
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.<br />
Before starting programming process in stand-alone mode, Flasher will look for a file named <tt>Patches.txt</tt> being present on the Flasher.<br />
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><br />
<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.<br />
<br />
'''Syntax'''<br><br />
<!-- LG xxxxxxxxx '==' is shown as '=', so instead use '= ='--><br />
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><br />
<br />
<tt><NumPatches>,<Addr>,<NumBytes>:<nowiki><Data></nowiki>,<Addr>,<NumBytes>:<nowiki><Data></nowiki>,<Addr>,</tt><br><br />
<tt><NumBytes>:<nowiki><Data></nowiki>,<Addr>,<NumBytes>:<nowiki><Data></nowiki>\r\n</tt><br><br />
<br />
Find below a table which describes each parameter.<br><br />
{| class="seggertable"<br />
|-<br />
! Parameter !! Description<br />
|-<br />
| <tt><NumPatches></tt> || Describes the number of patches in this patch line. Max. value is 4.<br />
|-<br />
| <tt><Addr></tt> || Describes the address to be patched. Value is expected in hex.<br />
|-<br />
| <tt><NumBytes></tt> || Number of bytes for the current patch. Max. value is 20h (32 in decimal). Value is expected in hex.<br />
|-<br />
| <tt><nowiki><Data></nowiki></tt> || Describes the data to be patched. <nowiki><Data></nowiki> is always expected as 2 hexadecimal characters per byte.<br />
|-<br />
|}<br />
<br />
{{Note|1=All values are expected in hexadecimal format (hex).<br><br />
<nowiki><Data></nowiki> section is always preceded by ":", not ",".}}<br />
<br />
'''Example'''<br><br />
Below is an example patch.<br><br />
<br />
<source><br />
1,18,4:01020304\r\n<br />
</source><br />
<br />
Patching the following data:<br />
<br />
[[File:data_before.png]]<br />
<br />
with the example patch will result in the following data:<br />
<br />
[[File:data_afterwards.png]]<br />
<br />
Please note that as mentioned earlier patching undefined memory locations will be ignored.<br><br />
Applying the example patch to the following data:<br />
<br />
[[File:undefined_mem_before.png]]<br />
<br />
Causes no data to be patched, as can be seen in the following image:<br />
<br />
[[File:undefined_mem_no_token.png]]<br />
<br />
Therefore it is necessary to first write placeholder data to the memory locations which are supposed to be patched.<br><br />
An example for such a placeholder can be seen here:<br />
<br />
[[File:undefined_mem_token.png]]<br />
<br />
Please note that the actual data inside the placeholder does not matter to the Flasher,<br />
because it is overwritten during patching.<br><br />
Applying the example patch will now work as expected:<br />
<br />
[[File:undefined_mem_after.png]]<br />
<br />
'''Single patch via RS232'''<br><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><br />
<br />
Send the <tt>#AUTO PATCH <NumPatches>,<Addr>,<NumBytes>:<nowiki><Data></nowiki></tt><br><br />
<br />
command via Flasher ASCII interface. The parameters have the same function as described in the table above.<br />
<br />
==== Newline encoding ====<br />
<br />
In general, for all patch files, init files etc. Flasher supports both newline encodings:<br><br />
<br />
* Windows: \r\n<br />
* Unix/Mac: \n<br />
<br />
All parser functionality etc. are written to be independent from the host operating system.<br />
<br />
=== Limiting the number of programming cycles ===<br />
<br />
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.<br />
To make use of this feature, a file called <tt>Cntdown.txt</tt> needs to be placed on the Flasher.<br />
This file simply contains a decimal number (32-bit unsigned integer) that describes how many programming cycles can be performed with the current setup.<br />
<br />
[[File:CntdownTxtContent.jpg]]<br />
<br />
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><br />
<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>.}}<br />
<br />
==== Changed fail/error LED indicator behavior ====<br />
<br />
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><br />
<br />
* The red error/fail LED will lit for 1 second<br />
* After this, it will blink/toggle x times @ 5 Hz, indicating the number of programming cycles left. (blinking 5 times for 5 cycles left, ...)<br />
<br />
==== Required Flasher hardware version for Cntdown.txt support ====<br />
<br />
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><br />
<br />
* 1621xxxxx (Flasher ARM V2)<br />
* 1630xxxxx (Flasher ARM V3)<br />
* 4210xxxxx (Flasher PPC V1)<br />
* 4110xxxxx (Flasher RX V1)<br />
<br />
All other models / hardware versions support limiting of programming cycles.<br />
<br />
=== Authorized flashing ===<br />
<br />
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.<br />
without the possibility to read out the Flasher contents via file access mode, FILE I/O functionality (J-Link Commander) or RS232 commands.<br />
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.<br />
<br />
==== Creating / Adding the secure area ====<br />
<br />
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.<br />
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.<br />
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><br />
<br />
[[File:CreateSecArea.jpg]]<br />
<br />
The following secure area related commands are available in J-Link Commander:<br><br />
<br />
* securearea create<br />
* securearea remove<br />
<br />
{{Note|1=When creating or removing the <tt>secure area</tt>, all configuration and data files being stored on the Flasher, are lost.<br />
Please make sure that they are not needed anymore, before adding / removing the security area.}}<br />
<br />
==== Moving files to the secure area ====<br />
<br />
Before moving configuration + data to the <tt>secure area</tt>, proper functionality of the setup should be tested in stand-alone mode.<br />
Once the setup is working as expected, do the following, to move the configuration + data into the <tt>secure area</tt>:<br><br />
<br />
* Start Flasher in file access mode (For more info, please refer to: [[#file access mode | file access mode]])<br />
<br />
[[File:FilesBeforeSecure.png]]<br />
<br />
* Create a folder "<tt>_SECURE</tt>"<br />
* Move all files that shall be moved to the <tt>secure area</tt>, into this folder<br />
<br />
[[File:FilesAfterSecure.png]]<br />
<br />
* 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.<br />
* Now Flasher can be used in stand-alone mode, as normal, but the files cannot be read back by the user / operator.<br />
<br />
==== Considerations to be taken when using the secure area ====<br />
<br />
When using the <tt>secure area</tt>, some things need to be considered:<br><br />
<br />
* All features like multiple file support, patch file support etc. can also be used when operating from the <tt>secure area</tt>.<br />
* 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>.<br />
* 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>.<br />
* 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.<br />
<br />
==== Required Flasher hardware version ====<br />
<br />
Older Flasher models do not support authorized flashing. The Flashers with the following serial number ranges do not support authorized flashing:<br><br />
<br />
* 1621xxxxx (Flasher ARM V2)<br />
* 1630xxxxx (Flasher ARM V3)<br />
* 4210xxxxx (Flasher PPC V1)<br />
* 4110xxxxx (Flasher RX V1)<br />
<br />
All other models / hardware versions support authorized flashing.<br />
<br />
=== Target interfaces ===<br />
<br />
The table below shows the supported target interfaces of the different Flasher models.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! Supported interfaces<br />
|-<br />
| Flasher PRO || JTAG, SWD<br />
|-<br />
| Flasher Compact || JTAG, SWD<br />
|-<br />
| Flasher ARM || JTAG, SWD<br />
|-<br />
| Flasher RX || JTAG<br />
|-<br />
| Flasher PPC || JTAG<br />
|-<br />
|}<br />
<br />
For more information about the target interfaces itself, please refer to:<br><br />
<br />
* ''UM08001, chapter "Working with J-Link and J-Trace", section "JTAG interface"''<br />
* ''UM08001, chapter "Working with J-Link and J-Trace", section "SWD interface"''<br />
<br />
=== Supported architectures ===<br />
<br />
Flasher supports programming of the internal flash of a large number of different microcontrollers.<br />
The number of supported devices is steadily growing. You can always find the latest list of supported devices on our website:<br><br />
<br />
''http://www.segger.com/supported-devices.html''<br />
<br />
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.<br />
Also the existence of the device may have confidential status, so it might not be mentioned as being supported in public releases yet.<br />
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.<br />
<br />
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).<br />
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.<br />
<br />
If a device is not supported, you can always contact us. We will be happy to provide you with an offer.<br />
<br />
==== External flashes ====<br />
<br />
In general our Flashers support programming of external flashes listed below:<br>(Can differ between Flasher models and hardware versions)<br />
<br />
* parallel NOR flash<br />
* SPI / QSPI flash<br>(see: ''[[SPI_support_by_Flasher_models]]'')<br />
* NAND flash<br />
* I<sup>2</sup>C EEPROM/Flash<br />
* FRAM<br />
<br />
If the parallel NOR flash device which is used is not CFI-compliant you have to select the flash device in J-Flash explicitly,<br />
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''.<br />
<br />
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.<br />
The J-Flash software comes with sample projects for ''Open Flashloader''.<br />
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''<br />
{{Note|1=Complete Information about ''Open Flashloaders'' can be found in our Wiki:<br>''[[Open_Flashloader]]''}}<br />
<br />
==== Cores ====<br />
<br />
===== Flasher ARM =====<br />
<br />
Flasher ARM supports and has been tested with the following cores, but should work with any ARM7/9, Cortex-M0/M1/M3/M4 core.<br />
If you experience problems with a particular core, do not hesitate to contact Segger.<br><br />
<br />
* ARM7TDMI (Rev 1)<br />
* ARM7TDMI (Rev 3)<br />
* ARM7TDMI-S (Rev 4)<br />
* ARM920T<br />
* ARM922T<br />
* ARM926EJ-S<br />
* ARM946E-S<br />
* ARM966E-S<br />
* Cortex-M0<br />
* Cortex-M1<br />
* Cortex-M3<br />
* Cortex-M4<br />
<br />
===== Flasher RX =====<br />
<br />
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><br />
<br />
* RX610<br />
* RX621<br />
* RX62N<br />
* RX62T<br />
<br />
===== Flasher PPC =====<br />
<br />
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.<br />
<br />
* e200z0<br />
<br />
===== Flasher PRO/Compact/Portable PLUS =====<br />
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/''.<br />
<br />
=== Programming multiple targets in parallel ===<br />
<br />
To program multiple targets in parallel there are the following possibilities:<br />
* Using a Flasher gang, or<br />
* Using multiple Flashers, each connecting to one CPU.<br />
<br />
Devices for gang programming are:<br />
* 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)].<br />
* 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)].<br />
When using multiple flashers, this can be done with the J-Flash production programming software.<br />
For further information, please refer to Chapter "''Command Line Interface''" Sub-chapter "''Programming multiple targets in parallel''" of the J-Flash User Guide (UM08003_JFlash.pdf) which is part of the Flasher Software and Documentation package. ''https://www.segger.com/downloads/flasher/#FlasherSoftwareAndDocumentationPack''<br />
<br />
=== Logfiles and Quality Management ===<br />
<br />
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:<br />
<source lang="c"><br />
SN: 1 - Failed<br />
SN: 1 - Failed<br />
SN: 2 - O.K. (931 ms)<br />
SN: 3 - O.K. (931 ms)<br />
SN: 4 - O.K. (933 ms)<br />
SN: 5 - O.K. (932 ms)<br />
</source><br />
If applicable, the logfile contains more detailed error messages. For example:<br />
<source lang="c"><br />
ERROR: Programming failed @ address 0x00000000 (1)<br />
ERROR: Cannot connect to CPU. Target interface speed too high?<br />
</source><br />
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:<br />
<source lang="c"><br />
Verify error config word area @<br />
config word<br />
config word read back<br />
Verify error flash area @<br />
data from file<br />
data read back<br />
</source><br />
{{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.}}<br />
<br />
== TCP Services ==<br />
This chapter describes the integrated TCP services.<br />
<br />
=== FTP Server ===<br />
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><br />
[[File:FTPServer.png]]<br />
<br />
==== Access data ====<br />
Anonymous access to the FTP server is limited to read-only access to the file system.<br><br />
For write access, special login credentials have to be used:<br><br />
<tt>Login: admin</tt><br><br />
<tt>Password: 1234</tt><br><br />
<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.<br />
It is not meant as a security feature.}}<br />
<br />
=== Web server ===<br />
<br />
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.<br />
For the network, the IP address settings can be changed and a nick name can be assigned to the device.<br><br />
<br />
Additionally, the web interface provides information about the status of the integrated operating system, the IP stack and the target hardware.<br />
<br />
== Remote control ==<br />
This chapter describes how to control Flasher via the 9-pin serial interface connector or via the integrated Telnet interface.<br />
<br />
=== Overview ===<br />
There are 3 ways to control Flasher operation:<br><br />
<br />
* Manual: Programming operation starts when pressing the button. The LEDs serve as visible indicators.<br />
* 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.<br />
* Terminal communication via RS232.<br />
* Terminal communication via Telnet.<br />
<br />
{{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.}}<br />
<br />
=== Handshake control ===<br />
<br />
Some Flasher models can be remote controlled by automated testers without the need of a connection to a PC.<br />
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><br />
<br />
The handshake control is available for the following Flashers:<br />
* Flasher ARM<br />
* Flasher PRO<br />
* Flasher Compact (via Flasher Hub only)<br />
<br />
The following diagrams show the internal remote control circuitry of Flasher:<br><br />
<br />
[[File:FlasherRemotecontrol.jpg]]<br />
{| class="seggertable"<br />
|-<br />
! Pin No. !! Function !! Description<br />
|-<br />
| 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.<br />
|-<br />
| 4 || BUSY || As soon as the "Auto" function is started, BUSY becomes active, which means that transistor is switched OFF.<br />
|-<br />
| 5 || GND || Common Signal ground.<br />
|-<br />
| 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.<br />
|-<br />
|}<br />
<br />
=== ASCII command interface ===<br />
<br />
==== Introduction ====<br />
<br />
Once set up using J-Flash, the Flasher can be driven by any application or just a simple terminal using ASCII commands.<br><br />
<br />
Every known command is acknowledged by the Flasher and then executed. After command execution, Flasher sends an ASCII reply message.<br><br />
<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}}<br />
<br />
==== General command and reply message format ====<br />
<br />
* Any ASCII command has to start with the start delimiter ''#''.<br />
* Any ASCII command has to end with simple carriage return ('\r', ASCII code 13).<br />
* Commands can be sent upper or lower case<br />
<br />
==== General usage ====<br />
<br />
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.<br />
<br />
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).<br />
<br />
==== Settings for ASCII interface via RS232 ====<br />
<br />
Flasher is driven via a RS232 serial port with the following interface settings:<br><br />
<br />
* 9600 baud<br />
* 8 data bits<br />
* no parity<br />
* 1 stop bit<br />
<br />
The baud rate can be changed by using the <tt>#BAUDRATE</tt> command.<br />
<br />
==== Settings for ASCII interface via Telnet ====<br />
<br />
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><br />
<br />
[[File:telnet_connection.gif]]<br />
<br />
==== Commands and replies ====<br />
<br />
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><br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| Commands to the Flasher<br />
|-<br />
| <tt>#BAUDRATE <Baudrate></tt><br />
|-<br />
| <tt>#AUTO</tt><br />
|-<br />
| <tt>#AUTO PATCH</tt><br />
|-<br />
| <tt>#AUTO NOINFO</tt><br />
|-<br />
| <tt>#CANCEL</tt><br />
|-<br />
| <tt>#ERASE</tt><br />
|-<br />
| <tt>#PROGRAM</tt><br />
|-<br />
| <tt>#RESULT</tt><br />
|-<br />
| <tt>#SELECT <Filename></tt><br />
|-<br />
| <tt>#START</tt><br />
|-<br />
| <tt>#STATUS</tt><br />
|-<br />
| <tt>#VERIFY</tt><br />
|-<br />
| <tt>#QUIT</tt><br />
|-<br />
| <tt>#VERBOSE <Level></tt><br />
|-<br />
!colspan="100%"| File I/O commands<br />
|-<br />
| <tt>#FCLOSE</tt><br />
|-<br />
| <tt>#FCRC</tt><br />
|-<br />
| <tt>#FDELETE <Filename></tt><br />
|-<br />
| <tt>#FOPEN <Filename></tt><br />
|-<br />
| <tt>#FREAD <Offset>,<NumBytes></tt><br />
|-<br />
| <tt>#FSIZE</tt><br />
|-<br />
| <tt>#FWRITE <Offset>,<NumBytes>:<nowiki><Data></nowiki></tt><br />
|-<br />
| <tt>#FLIST</tt><br />
|-<br />
| <tt>#MKDIR <Dirname></tt><br />
|-<br />
!colspan="100%"| SecureArea commands<br />
|-<br />
| <tt>#HASSECUREAREA</tt><br />
|-<br />
| <tt>#SECUREAREA <action></tt><br />
|-<br />
!colspan="100%"| Replies from the Flasher<br />
|-<br />
| <tt>#ACK</tt><br />
|-<br />
| <tt>#NACK</tt><br />
|-<br />
| <tt>#OK</tt><br />
|-<br />
| <tt>#OK:<NumBytes>:<nowiki><Data></nowiki></tt><br />
|-<br />
| <tt>#OK:<Size></tt><br />
|-<br />
| <tt>#STATUS:</tt><br />
|-<br />
| <tt>#DONE</tt><br />
|-<br />
| <tt>#ERRxxx</tt><br />
|-<br />
|}<br />
<br />
===== Commands to the Flasher =====<br />
<br />
'''#AUTO'''<br><br />
The <tt>#AUTO</tt> command behaves exactly as the start button or external remote control input.<br><br />
<br />
Usually, the following command sequence will be performed when receiving the <tt>#AUTO</tt> command:<br><br />
<br />
* The Flasher erases the target CPU (if not blank)<br />
* The Flasher programs the target CPU<br />
* The Flasher verifies the target CPU<br />
<br />
Depending on the settings chosen in the '''Production''' tab in J-Flash, this sequence can differ from the one shown above.<br><br />
<br />
Finally, Flasher responds with<br><br />
<br />
* <tt>#OK</tt> if no error occurred<br />
* <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.<br />
<br />
During execution of the <tt>#AUTO</tt> command, Flasher automatically sends "status" messages via RS232 to reflect the state of execution.<br />
Typically during execution of <tt>#AUTO</tt> command, Flasher will reply the following sequence of messages:<br><br />
<br />
<tt>#ACK</tt><br><br />
<tt>#STATUS:INITIALIZING</tt><br><br />
<tt>#STATUS:CONNECTING</tt><br><br />
<tt>#STATUS:UNLOCKING</tt><br><br />
<tt>#STATUS:ERASING</tt><br><br />
<tt>#STATUS:PROGRAMMING</tt><br><br />
<tt>#STATUS:VERIFYING</tt><br><br />
<tt>#OK (Total 13.993s, Erase 0.483s, Prog 9.183s, Verify 2.514s)</tt><br><br />
<br />
'''#AUTO PATCH'''<br><br />
The <tt>#AUTO</tt> PATCH command allows patching of the content of the data to be programmed.<br><br />
<br />
Flasher responds with<br><br />
<br />
* <tt>#OK</tt> if no error occurred<br />
* <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.<br />
<br />
For further information about the usage of the <tt>#AUTO PATCH</tt> command please refer to [[#Patch file support | Patch file support]].<br />
<br />
'''#AUTO NOINFO'''<br><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><br />
<br />
The command ends with <tt>#OK</tt> or <tt>#ERRxxx</tt><br />
<br />
'''#BAUDRATE <Baudrate>'''<br><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><br />
<br />
If this command succeeds, Flasher responds with:<br><br />
<br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<br />
Otherwise it will respond with one of the following error messages:<br><br />
<br />
<tt>#ERR255: Invalid parameters</tt><br><br />
<tt>or</tt><br><br />
<tt>#ERR255: Baudrate is not supported</tt><br><br />
<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.<br />
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.}}<br />
<br />
'''#CANCEL'''<br><br />
This command can be sent to abort a running program. It may take a while until the current program is actually canceled.<br><br />
<br />
Flasher will respond with:<br><br />
<br />
<tt>#ERR007:CANCELED.</tt><br><br />
<br />
'''#ERASE'''<br><br />
This command can be sent to erase all selected target flash sectors.<br><br />
<br />
Flasher will reply the following sequence of messages:<br><br />
<br />
<tt>#ACK</tt><br><br />
<tt>#STATUS:INITIALIZING</tt><br><br />
<tt>#STATUS:CONNECTING</tt><br><br />
<tt>#STATUS:UNLOCKING</tt><br><br />
<tt>#STATUS:ERASING</tt><br><br />
<tt>#OK (Total 0.893s, Erase 0.483s)</tt><br><br />
<br />
'''#PROGRAM'''<br><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.<br />
<br />
'''#RESULT'''<br><br />
This command can be sent any time, even during other command execution. Flasher responds with the last result of the previously executed command.<br />
<br />
'''#SELECT <Filename>'''<br><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.<br />
<tt><Filename></tt> specifies the name of file pair without extensions (.CFG and .DAT) on the Flasher which should be selected. If you are<br />
using the universal flash programming mode, <tt><Filename></tt> specifies the full name of the .UNI file '''including''' the extension.<br />
Flasher saves the selected config and data file in the FLASHER.INI file. So this selection is remembered even between power-cycling Flasher.<br><br />
<br />
This may be verfy helpful in cases where several config and data files are stored on Flasher.<br />
The user can easily switch between these config and data files without connecting Flasher to a host.<br><br />
<br />
If this command succeeds, Flasher responds with:<br><br />
<br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<br />
Find below a sample sequence which shows how to use the <tt>#SELECT</tt> command:<br><br />
<br />
<tt>#SELECT ATSAM7_1 // ATSAM7_1.CFG and ATSAM7_1.DAT is selected</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<tt>#AUTO // Start auto programming</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#STATUS:INITIALIZING</tt><br><br />
<tt>#STATUS:CONNECTING</tt><br><br />
<tt>#STATUS:UNLOCKING</tt><br><br />
<tt>#STATUS:ERASING</tt><br><br />
<tt>#STATUS:PROGRAMMING</tt><br><br />
<tt>#STATUS:VERIFYING</tt><br><br />
<tt>#OK (Total 8.416s, Erase 0.005s, Prog 6.845s, Verify 0.959s)</tt><br><br />
<tt>#SELECT ATSAM7_2 // ATSAM7_2.CFG and ATSAM7_2.DAT is selected</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<tt>#AUTO // Start auto programming</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#STATUS:INITIALIZING</tt><br><br />
<tt>#STATUS:CONNECTING</tt><br><br />
<tt>#STATUS:UNLOCKING</tt><br><br />
<tt>#STATUS:ERASING</tt><br><br />
<tt>#STATUS:PROGRAMMING</tt><br><br />
<tt>#STATUS:VERIFYING</tt><br><br />
<tt>#OK (Total 8.632s, Erase 0.005s, Prog 7.051s, Verify 0.969s)</tt><br><br />
<br />
'''#START'''<br><br />
This command can be sent to start the application using the method configured in the J-Flash project.<br />
<br />
Flasher will reply with the following sequence of messages:<br><br />
<br />
<tt>#ACK</tt><br><br />
<tt>#STATUS:INITIALIZING</tt><br><br />
<tt>#STATUS:CONNECTING</tt><br><br />
<tt>#OK (Total 1.148s)</tt><br><br />
<br />
'''#STATUS'''<br><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]].<br />
<br />
'''#VERIFY'''<br><br />
This command can used to verify the target flash content against the data stored in Flasher.<br />
<br />
'''#QUIT'''<br><br />
This command can be used to terminate the active telnet connection from the server side (Flasher).<br />
The command provides an easy way to terminate the session from an automated script.<br />
It is not necessary to parse stdout and switch to local command mode to disconnect.<br />
Not implemented in the Flasher ATE or Flasher Hub.<br />
<br />
'''#VERBOSE <Level>'''<br><br />
This command can be used to change the verbosity level. <br><br />
* Verbosity level 0: Default. <br><br />
* Verbosity level 1: Provides some additional messages during the programming process.<br />
<br />
===== File I/O commands =====<br />
<br />
The ASCII interface of the Flasher also supports file I/O operations.<br />
<br />
The following file I/O commands are supported:<br><br />
<br />
'''#FCLOSE'''<br><br />
The <tt>#FCLOSE</tt> command closes the file on Flasher which was opened via <tt>#FOPEN</tt>.<br />
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><br />
<br />
A typical sequence when using the <tt>#FCLOSE</tt> command does look like as follows:<br><br />
<br />
<tt>#FCLOSE</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<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><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:No file opened</tt><br />
}}<br />
<br />
'''#FCRC'''<br><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>.<br />
The CRC will be also reported by J-Flash when downloading or saving files via J-Flash.<br><br />
<br />
A typical sequence when using the <tt>#FCRC</tt> command does look like as follows:<br><br />
<br />
<tt>#FCRC flasher.dat</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK:0x75BC855A</tt><br><br />
<br />
'''#FDELETE <Filename>'''<br><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><br />
<br />
A typical sequence when using the <tt>#FDELETE</tt> command does look like as follows:<br><br />
<br />
<tt>#FDELETE flasher.dat</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<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><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:Failed to delete file</tt><br />
}}<br />
<br />
'''#FOPEN <Filename>'''<br><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.<br />
If <tt><Filename></tt> can not be found on Flasher a new one will be created.<br><br />
<br />
A typical sequence using the <tt>#FOPEN</tt> command does look like as follows:<br><br />
<br />
<tt>#FOPEN flasher.dat</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<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><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:A file has already been opened</tt><br />
}}<br />
<br />
'''#FREAD <Offset>,<NumBytes>'''<br><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.<br />
<tt><NumBytes></tt> specifies the number of bytes which should be read.<br><br />
<br />
A typical sequence when using the <tt>#FREAD</tt> command does look like as follows:<br><br />
<br />
<tt>#FREAD 0,4</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK:04:466c6173</tt><br><br />
<br />
If the <tt>#FREAD</tt> command succeeds, Flasher will finally respond with a <tt>#OK:<NumBytes>:<nowiki><Data></nowiki></tt> reply message.<br />
For more information about the Flasher reply messages, please refer to [[#Replies from Flasher | Replies from Flasher]].<br><br />
<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><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:No file opened</tt>}}<br />
<br />
'''#FSIZE'''<br><br />
The <tt>#FSIZE</tt> command is used to get the size of the currently opened file on Flasher.<br><br />
<br />
A typical sequence when using the <tt>#FSIZE</tt> command does look like as follows:<br><br />
<br />
<tt>#FSIZE</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK:10 // file on flasher which is currently open, has a size of 16 bytes</tt><br><br />
<br />
If the <tt>#FSIZE</tt> command succeeds, Flasher will respond with a <tt>#OK:<Size></tt> reply message.<br />
For more information about the Flasher reply messages, please refer to [[#Replies from Flasher | Replies from Flasher]].<br><br />
<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><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:No file opened</tt>}}<br />
<br />
'''#FWRITE <Offset>,<NumBytes>:<nowiki><Data></nowiki>'''<br><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.<br />
<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.<br />
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><br />
<br />
<tt><Offset></tt> and <tt><NumBytes></tt> are expected in hexadecimal format.<br><br />
<br />
<tt>#FWRITE 0,200:<nowiki><Data></nowiki></tt><br><br />
<tt>#FWRITE 200,200:<nowiki><Data></nowiki></tt><br><br />
<br />
The data is expected in hexadecimal format (two hexadecimal characters per byte). The following example illustrates the use of <tt>#FWRITE</tt>:<br />
<br />
<tt>Data to be send: Hello !</tt><br><br />
<tt>ASCII values: 0x48, 0x65, 0x6C, 0x6C, 0x6F, 0x20, 0x21</tt><br><br />
<br />
<tt>#FWRITE 0,7:48656C6C6F2021</tt><br><br />
<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><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:No file opened</tt><br>}}<br />
<br />
'''#FLIST'''<br><br />
The <tt>#LIST</tt> command is used to list all files stored on the Flasher.<br><br />
<br />
A typical sequence using the <tt>#FLIST</tt> command does look like as follows:<br><br />
<br />
<tt>#FLIST</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>FLASHER.INI Size: 60</tt><br><br />
<tt>SERIAL.TXT Size: 3</tt><br><br />
<tt>FLASHER.LOG Size: 207</tt><br><br />
<tt>FOLDER (DIR)</tt><br><br />
<tt>FOLDER\\TEST1.CFG Size: 2048</tt><br><br />
<tt>FOLDER\\TEST1.DAT Size: 12288</tt><br><br />
<tt>#OK</tt><br><br />
<br />
'''#MKDIR <Dirname>'''<br><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><br />
<br />
A typical sequence using the <tt>#MKDIR</tt> command does look like as follows:<br><br />
<br />
<tt>#MKDIR folder</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<br />
{{Note|1=If the directory can not be created because of a bad <tt><Dirname></tt> argument, Flasher will respond with:<br><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:Failed to create directory</tt><br>}}<br />
<br />
===== Secure Area Commands =====<br />
<br />
'''#HASSECUREAREA'''<br><br />
The <tt>#HASSECUREAREA</tt> command checks if the Flasher is configured with a secure area.<br />
<br />
<tt>#RESULT:YES</tt> indicates the secure area is present, <tt>#RESULT:NO</tt> indicates no secure area is present.<br />
<br />
'''#SECUREAREA'''<br><br />
The <tt>#SECUREAREA <action></tt> command allows to create or remove the secure area on the Flasher.<br />
<br />
* the action <tt>CREATE</tt> creates the secure area.<br />
* the action <tt>REMOVE</tt> will remove the secure area.<br />
<br />
A typical sequence using the <tt>#SECUREAREA</tt> command does look like as follows:<br><br />
<br />
<tt>#SECUREAREA CREATE</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#DONE</tt><br><br />
<br />
{{Note|1=When creating or removing the <tt>secure area</tt>, all configuration and data files being stored on the Flasher, are lost.<br />
Please make sure that they are not needed anymore, before adding / removing the security area.}}<br />
<br />
<br />
<br />
===== Replies from Flasher =====<br />
<br />
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.<br />
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.<br />
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><br />
<br />
<tt>#OK (Total 13.993s, Erase 0.483s, Prog 9.183s, Verify 2.514s)</tt><br><br />
<br />
The following reply messages from Flasher are defined:<br><br />
<br />
'''#ACK'''<br><br />
Flasher replies with <tt>#ACK</tt> message on reception of any defined command before the command itself is executed.<br />
<br />
'''#NACK'''<br><br />
Flasher replies with <tt>#NACK</tt>, if an undefined command was received.<br />
<br />
'''#OK'''<br><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.<br />
<br />
'''#OK:<NumBytes>:<nowiki><Data></nowiki>'''<br><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.<br />
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).<br />
<br />
'''#OK:<Size>'''<br><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.<br />
<br />
'''#STATUS:'''<br><br />
The Flasher replies with its current state.<br><br />
<br />
The following status messages are currently defined:<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Message !! Description<br />
|-<br />
| <tt>#STATUS:READY</tt> || Flasher is ready to receive a new command.<br />
|-<br />
| <tt>#STATUS:CONNECTING</tt> || Flasher initializes connection to target CPU.<br />
|-<br />
| <tt>#STATUS:INITIALIZING</tt> || Flasher performs self check and internal init.<br />
|-<br />
| <tt>#STATUS:UNLOCKING</tt> || Unlocking flash sectors.<br />
|-<br />
| <tt>#STATUS:ERASING</tt> || Flasher is erasing the flash of the target device.<br />
|-<br />
| <tt>#STATUS:PROGRAMMING</tt> || Flasher is programming the flash of the target device.<br />
|-<br />
| <tt>#STATUS:VERIFYING</tt> || Flasher verifies the programmed flash contents.<br />
|-<br />
|}<br />
<br />
'''#ERRxxx'''<br><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><br />
<br />
Some error codes may be followed by colon and an additional error text.<br><br />
<br />
For example:<br><br />
<br />
<tt>#ERR007:CANCELED.</tt><br><br />
<br />
The error code numbers are described in the following table:<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Message !! Description<br />
|-<br />
| <tt>#ERR007</tt> || Flasher received <tt>#CANCEL</tt> command and has canceled the current operation.<br />
|-<br />
| <tt>#ERR008</tt> || Flasher is already busy with execution of previous command.<br />
|-<br />
| <tt>#ERR009</tt> || Failed to allocate memory.<br />
|-<br />
| <tt>#ERR010</tt> || Failed to open file.<br />
|-<br />
| <tt>#ERR011</tt> || Failed to read file.<br />
|-<br />
| <tt>#ERR012</tt> || Failed to write file.<br />
|-<br />
| <tt>#ERR013</tt> || Failed to delete file.<br />
|-<br />
| <tt>#ERR255</tt> || Undefined error occurred. This reply is followed by an error string.<br />
|-<br />
|}<br />
<br />
== Performance ==<br />
<br />
The following chapter lists programming performance of common flash devices andmicrocontrollers.<br />
<br />
=== Performance of MCUs with internal flash memory ===<br />
<br />
==== Flasher ARM ====<br />
<br />
The following table lists program and erase performance values of Flasher ARM for different controllers.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Microcontroller !! Size [kByte] !! Erase time [sec] !! Program time [sec] !! Verify time [sec] !! Total time [sec]<br />
|-<br />
| Analog Devices || 62 || 2.943 || 2.286 || 0.563 || 5.792<br />
|-<br />
| Atmel AT91SAM7S64 || 64 || --- || 3.488 || 0.438 || 3.926<br />
|-<br />
| Atmel AT91SAM7S256 || 256 || --- || 7.709 || 1.053 || 8.762<br />
|-<br />
| NXP LPC1768 || 512 || 3.740 || 8.559 || 5.092 || 17.391<br />
|-<br />
| NXP LPC2106 || 120 || 0.448 || 1.204 || 0.634 || 2.286<br />
|-<br />
| NXP LPC2129 || 248 || 0.449 || 2.916 || 1.347 || 4.712<br />
|-<br />
| NXP LPC2138 || 500 || 0.448 || 5.488 || 2.649 || 8.585<br />
|-<br />
| NXP LPC2148 || 500 || 0.448 || 5.632 || 2.721 || 8.801<br />
|-<br />
| NXP LPC2294 || 2048 || 0.808 || 15.976 || 9.669 || 26.453<br />
|-<br />
| NXP LPC2478 || 504 || 0.448 || 5.419 || 2.559 || 8.426<br />
|-<br />
| ST STM32F103ZE || 512 || 0.028 || 18.763 || 3.939 || 22.730<br />
|-<br />
| ST STR711 || 272 || 0.429 || 5.476 || 4.742 || 10.647<br />
|-<br />
| ST STR912 || 544 || 1.167 || 12.907 || 5.236 || 19.310<br />
|-<br />
| TI TMS470R1B1M || 1024 || 2.289 || 8.147 || 5.362 || 15.798<br />
|-<br />
|}<br />
<br />
==== Flasher PRO ====<br />
See Flasher ARM.<br />
<br />
==== Flasher Compact ====<br />
See Flasher ARM.<br />
<br />
==== Flasher RX ====<br />
<br />
The following table lists program and erase performance values of Flasher RX.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Microcontroller !! Size [kByte] !! Erase time [sec] !! Program time [sec] !! Verify time [sec] !! Total time [sec]<br />
|-<br />
| R5F56108 || 2.048 || 9.523 || 11.915 || 3.890 || 25.585<br />
|-<br />
|}<br />
<br />
==== Flasher PPC ====<br />
<br />
The following table lists program and erase performance values of Flasher PPC.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Microcontroller !! Size [kByte] !! Erase time [sec] !! Program time [sec] !! Verify time [sec] !! Total time [sec]<br />
|-<br />
| ST SPC560B50 || 576 || 4.747 || 4.159 || 1.929 || 10.917<br />
|-<br />
|}<br />
<br />
== Hardware ==<br />
<br />
This chapter gives an overview about Flasher specific hardware details,<br />
such as the pinouts and available adapters.<br />
<br />
=== Flasher ARM 20-pin JTAG/SWD Connector ===<br />
<br />
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.<br />
<br />
==== Pinout JTAG ====<br />
<br />
[[File:jtag_port_20pin.jpg]] <!-- LG xxxxxx image has been cropped to fit page --><br />
<br />
The following table lists the Flasher JTAG pinout.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! PIN !! SIGNAL !! TYPE !! Description<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 13 || TDO || Input || JTAG data output from target CPU. Typically connected to TDO of target CPU.<br />
|-<br />
| 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".<br />
|-<br />
| 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.<br />
|-<br />
| 19 || 5V-Target supply || Output || This pin is used to supply power to some eval boards. Typically left open on target hardware.<br />
|-<br />
|}<br />
<br />
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.<br />
<br />
==== Pinout SWD ====<br />
<br />
The 20-pin connector of Flasher is also compatible to ARM's Serial Wire Debug (SWD) interface.<br><br />
<br />
[[File:SWD_Port.jpg]] <!-- LG xxxxxx image has been cropped to fit page --><br />
<br />
The following table lists the J-Link / J-Trace SWD pinout.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! PIN !! SIGNAL !! TYPE !! Description<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 7 || SWDIO || I/O || Single bi-directional data pin.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 13 || SWO || Output || Serial Wire Output trace port. (Optional, not required for SWD communication.)<br />
|-<br />
| 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".<br />
|-<br />
| 17 || Not used || NC || This pin is not connected in J-Link.<br />
|-<br />
| 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.<br />
|-<br />
|}<br />
<br />
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.<br />
<br />
==== Target power supply ====<br />
<br />
Pin 19 of the connector can be used to supply power to the target hardware. Supply voltage is 5V, max. current is 400mA.<br />
The output current is monitored and protected against overload and short-circuit.<br><br />
<br />
Power can be controlled via the J-Link commander. The following commands are available to control power:<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Command !! Explanation<br />
|-<br />
| <tt>power on</tt> || Switch target power on<br />
|-<br />
| <tt>power off</tt> || Switch target power off<br />
|-<br />
| <tt>power on perm</tt> || Set target power supply default to "on"<br />
|-<br />
| <tt>power off perm</tt> || Set target power supply default to "off"<br />
|-<br />
|}<br />
<br />
=== Flasher RX 14-pin connector ===<br />
<br />
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.<br />
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.<br />
<br />
[[File:jtag_port_14pin.wmf]]<br />
<br />
The following table lists the Flasher RX 14-pin JTAG pinout.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Pin !! Signal !! Type !! Description<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 5 || TDO || Input || JTAG data output from target CPU. Typically connected to TDO on target CPU.<br />
|-<br />
| 6 || --- || NC || This pin is not connected to Flasher RX.<br />
|-<br />
| 7 || --- || NC || This pin is not connected to Flasher RX.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 10 || --- || NC || This pin is not connected to Flasher RX.<br />
|-<br />
| 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.<br />
|-<br />
| 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".<br />
|-<br />
|}<br />
<br />
* All pins marked NC are not connected to Flasher RX. Any signal can be applied here; Flasher RX will simply ignore such a signal.<br />
* Pins 2, 12, 14 are GND pins connected to GND in Flasher RX. They should also be connected to GND in the target system.<br />
<br />
==== Target power supply ====<br />
<br />
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.<br />
Power can be controlled via the J-Link commander. The following commands are available to control power:<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Command !! Explanation<br />
|-<br />
| <tt>power on</tt> || Switch target power on<br />
|-<br />
| <tt>power off</tt> || Switch target power off<br />
|-<br />
| <tt>power on perm</tt> || Set target power supply default to "on"<br />
|-<br />
| <tt>power off perm</tt> || Set target power supply default to "off"<br />
|-<br />
|}<br />
<br />
=== Flasher PPC 14-pin connector ===<br />
<br />
Flasher PPC itself has a 20-pin JTAG connector mounted but comes with a 14-pin adapter for PowerPC devices.<br><br />
<br />
[[File:JTAG_PPC_14pin_adapter.wmf]]<br />
<br />
The following table lists the Flasher PPC 14-pin JTAG pinout.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Pin !! Signal !! Type !! Description<br />
|-<br />
| 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.<br />
|-<br />
| 3 || TDO || Input || JTAG data output from target CPU. Typically connected to TDO on target CPU.<br />
|-<br />
| 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.<br />
|-<br />
| 7 || --- || NC || This pin is not connected to Flasher PPC.<br />
|-<br />
| 8 || --- || NC || This pin is not connected to Flasher PPC.<br />
|-<br />
| 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".<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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).<br />
|-<br />
|}<br />
<br />
* All pins marked NC are not connected to Flasher PPC. Any signal can be applied here; Flasher PPC will simply ignore such a signal.<br />
* 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.<br />
<br />
=== Target board design ===<br />
<br />
We strongly advise following the recommendations given by the chip manufacturer. These recommendations are normally in line with the recommendations.<br />
Please refer to the the appropriate tables depending on the core:<br><br />
<br />
* [[#Pinout JTAG | Pinout JTAG]]<br />
* [[#Pinout SWD | Pinout SWD]]<br />
* [[#Flasher RX 14-pin connector | Flasher RX 14-pin connector]]<br />
* [[#Flasher PPC 14-pin connector | Flasher PPC 14-pin connector]]<br />
<br />
In case of doubt you should follow the recommendations given by the semiconductor manufacturer.<br />
<br />
==== Pull-up/pull-down resistors ====<br />
<br />
Unless otherwise specified by developer's manual, pull-ups/pull-downs are recommended to be between 2.2 kOhms and 47 kOhms.<br />
<br />
==== RESET, nTRST ====<br />
<br />
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><br />
<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.<br />
(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.<br />
<br />
=== Adapters ===<br />
<br />
==== JTAG Isolator ====<br />
<br />
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.<br />
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><br />
<br />
[[File:JTAG_Isolator_Port.wmf]]<br />
<br />
===== Pinout =====<br />
<br />
The following table shows the target-side pinout of the J-Link JTAG Isolator.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Pin !! Signal !! Type !! Description<br />
|-<br />
| 1 || VCC || Output || The target side of the isolator draws power over this pin.<br />
|-<br />
| 2 || VCC || Output || The target side of the isolator draws power over this pin.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 13 || TDO || Input || JTAG data output from target CPU. Typically connected to TDO of target CPU.<br />
|-<br />
| 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".<br />
|-<br />
| 17 || N/C || N/C || This pin is not connected on the target side of the isolator.<br />
|-<br />
| 19 || N/C || N/C || This pin is not connected on the target side of the isolator.<br />
|-<br />
|}<br />
<br />
Pins 4, 6, 8, 10, 12, 14, 16, 18, 20 are connected to GND.<br />
<br />
===== Safety =====<br />
This isolator provides '''basic isolation''' only. '''Do not use with hazardous voltages without further protection measures to avoid risk of electrical shock and fire.'''<br />
<br />
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.<br />
<br />
==== J-Link Needle Adapter ====<br />
<br />
To connect to the J-Link OB via programming interface the ''J-Link Needle Adapter'' is recommended.<br><br />
<br />
[[File:J-Link_Needle_Adapter_500x.jpg]]<br />
<br />
Why to choose the J-Link Needle Adapter:<br><br />
<ol><br />
<li>No additional connector required on your PCB</li><br />
<li>Very small footprint</li><br />
<li>High reliability spring pins for secure connections</li><br />
<li>Designed with 3 locating pins, so the adapter can not be connected the wrong way</li><br />
<li>No external power supply required! The J-Link Needle Adapter comes with the option to power the target hardware via J-Link.</li><br />
</ol><br />
These features make the J-Link Needle Adapter the perfect solution for production purposes.<br><br />
<br />
The pinout of the J-Link Needle Adapter is based on the pinout of the needle adapter by Tag-Connect.<br />
Please note, that both pinouts are not identical since the J-Link Needle Adapter comes with a 5V-supply pin.<br><br />
<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><br />
<br />
Moreover, the two "legs" on each side of the connector guarantee a stable and secure contact between pins and the PCB.<br><br />
<br />
[[File:J-Link_Needle_Adapter_Connector_pins_360x.jpg]]<br />
[[File:J-Link_Needle_Adapter_Pinout.jpg]]<br />
<br />
The J-Link Needle Adapter can be connected to J-Link via the ''20-pin 0.1'' JTAG to a 10-pin needle connector''.<br />
<br />
=== How to determine the hardware version ===<br />
<br />
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.<br />
Flasher has the hardware version printed on the back label.<br><br />
<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).<br />
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><br />
<br />
[[File:FlasherARM_version.gif]]<br />
== Support and FAQs ==<br />
<br />
This chapter contains troubleshooting tips together with solutions for common problems which might occur when using Flasher.<br />
There are several steps you can take before contacting support.<br />
Performing these steps can solve many problems and often eliminates the need for assistance.<br />
This chapter also contains a collection of frequently asked questions (FAQs) with answers.<br />
<br />
=== Contacting support ===<br />
<br />
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.<br />
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><br />
<br />
If you need to contact support, send the following information to<br><br />
''support@segger.com''<br><br />
<br />
* A detailed description of the problem<br />
* Flasher serial number<br />
* Information about your target hardware (processor, board, etc.).<br />
* <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]].<br />
<br />
Flasher is sold directly by SEGGER.<br />
<br />
=== Frequently Asked Questions ===<br />
<br />
'''Maximum JTAG speed'''<br />
{|<br />
|-<br />
| '''Q:''' || What is the maximum JTAG speed supported by Flasher?<br />
|-<br />
| '''A:''' || Flasher's maximum supported JTAG speed is 12MHz.<br />
|}<br />
<br />
'''Maximum download speed'''<br />
{|<br />
|-<br />
| '''Q:''' || What is the maximum download speed?<br><br />
|-<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.<br />
|}<br />
== Background information ==<br />
<br />
This chapter provides background information about flash programming in general. It<br />
also provides information about how to replace the firmware of Flasher manually.<br />
<br />
=== Flash programming ===<br />
<br />
Flasher comes with a DLL, which allows - amongst other functionalities - reading and writing RAM, CPU registers, starting and stopping the CPU, and setting breakpoints.<br />
<br />
==== How does flash programming via Flasher work? ====<br />
<br />
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.<br />
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.<br />
Different flash chips have different programming algorithms;the programming algorithm also depends on other things,<br />
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).<br />
The RAM code requires data to be programmed into the flash memory. The data is supplied by downloading it to RAM.<br />
<br />
==== Data download to RAM ====<br />
<br />
The data (or part of it) is downloaded to another part of the RAM of the target system.<br />
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.<br />
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.<br />
This process may have to be repeated until the entire data is programmed into the flash.<br />
<br />
==== Available options for flash programming ====<br />
<br />
In general, there are two possibilities in order to use Flasher for flash programming:<br><br />
<br />
* Using Flasher stand-alone to program the target flash memory (stand-alone mode)<br />
* Using Flasher in combination with J-Flash to program the target flash memory (Flasher in "PC-based mode")<br />
<br />
===== Using Flasher in stand-alone mode =====<br />
<br />
In order to use the Flasher in stand-alone mode, it has to be configured first.<br />
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]].<br />
<br />
===== J-Flash - Complete flash programming solution =====<br />
<br />
J-Flash is a stand-alone Windows application, which can read / write data files and program the flash in almost any ARM system.<br />
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''.<br />
<br />
==== How does the universal flash programming work? ====<br />
<br />
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><br />
<br />
Universal flash programming is available only for stand-alone mode.<br />
== Glossary ==<br />
<br />
This chapter describes important terms used throughout this manual.<br />
<br />
'''Big-endian'''<br><br />
Memory organization where the least significant byte of a word is at a higher address than the most significant byte. See Little-endian.<br />
<br />
'''Cache cleaning'''<br><br />
The process of writing dirty data in a cache to main memory.<br />
<br />
'''Coprocessor'''<br><br />
An additional processor that is used for certain operations, for example, for floating-point math calculations, signal processing, or memory management.<br />
<br />
'''Dirty data'''<br><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.<br />
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.<br />
<br />
'''Halfword'''<br><br />
A 16-bit unit of information.<br />
<br />
'''Host'''<br><br />
A computer which provides data and other services to another computer. Especially, a computer providing debugging services to a target being debugged.<br />
<br />
'''ICache'''<br><br />
Instruction cache.<br />
<br />
'''ID'''<br><br />
Identifier.<br />
<br />
'''IEEE 1149.1'''<br><br />
The IEEE Standard which defines TAP. Commonly (but incorrectly) referred to as JTAG.<br />
<br />
'''Image'''<br><br />
An executable file that has been loaded onto a processor for execution.<br />
<br />
'''Instruction Register'''<br><br />
When referring to a TAP controller, a register that controls the operation of the TAP.<br />
<br />
'''IR'''<br><br />
See Instruction Register.<br />
<br />
'''Joint Test Action Group (JTAG)'''<br><br />
The name of the standards group which created the IEEE 1149.1 specification.<br />
<br />
'''Little-endian'''<br><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.<br />
<br />
'''Memory coherency'''<br><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.<br />
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.<br />
<br />
'''Memory management unit (MMU)'''<br><br />
Hardware that controls caches and access permissions to blocks of memory, and translates virtual to physical addresses.<br />
<br />
'''Memory Protection Unit (MPU)'''<br><br />
Hardware that controls access permissions to blocks of memory. Unlike an MMU, a MPU does not translate virtual addresses to physical addresses.<br />
<br />
'''RESET'''<br><br />
Abbreviation of System Reset. The electronic signal which causes the target system other than the TAP controller to be reset.<br />
This signal is also known as "nSRST" "nSYSRST", "nRST", or "nRESET" in some other manuals. See also nTRST.<br />
<br />
'''nTRST'''<br><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.<br />
<br />
'''Open collector'''<br><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.<br />
<br />
'''Processor Core'''<br><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.<br />
It excludes optional coprocessors, caches, and the memory management unit.<br />
<br />
'''Remapping'''<br><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.<br />
<br />
'''RTOS'''<br><br />
Real Time Operating System.<br />
<br />
'''TAP Controller'''<br><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.<br />
<br />
'''Target'''<br><br />
The actual processor (real silicon or simulated) on which the application program is running.<br />
<br />
'''TCK'''<br><br />
The electronic clock signal which times data on the TAP data lines TMS, TDI, and TDO.<br />
<br />
'''TDI'''<br><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.<br />
<br />
'''TDO'''<br><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.<br />
<br />
'''Test Access Port (TAP)'''<br><br />
The port used to access a device's TAP Controller. Comprises TCK, TMS, TDI, TDO, and nTRST (optional).<br />
<br />
'''Transistor-transistor logic (TTL)'''<br><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.<br />
<br />
'''Word'''<br><br />
A 32-bit unit of information. Contents are taken as being an unsigned integer unless otherwise stated.<br />
== Literature and references ==<br />
This chapter lists documents, which we think may be useful to gain a deeper understanding of technical details.</div>JanBhttps://wiki.segger.com/index.php?title=UM08022_Flasher&diff=16293UM08022 Flasher2023-09-14T12:56:10Z<p>JanB: /* Programming multiple targets in parallel */</p>
<hr />
<div><!---<br />
General TBD:<br />
- LG: Right now - EVERYTHING<br />
===========================================<br />
--------------------[more specific, but on multiple locations]<br />
- check if all emphasis (bold, tt, blue, etc ) have made it into the new version<br />
- Add Information -> Additional information<br />
- use of the term free-of-charge utility/tool etc<br />
- check compliant to DocStandards_Rules.txt<br />
- Remove everything regarding to Kickstarter versions? eventually create a chapter Legacy -> Kickstarter version were available for hw version 5-x (200x-200x)...[..]<br />
- 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.<br />
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.<br />
- if week keep the IDE specific stuff in the manual, add Ozone, ES and J-Link Commander were no mentioned.<br />
- IDE specifics move into wiki confirmed by Alex<br />
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)<br />
- check all sections regarding licensing<br />
- Check compliance of J-Link emDocs with typographic conventions described in AboutThisDocument.emDoc. What should be altered? e.g. references<br />
- use uref at all (not blue)?<br />
- search and decide where to use \ref (ref with page number)<br />
- why is \ref (no single "option" \uref is more basic as \ref.....)<br />
- in text, use either \ref or \iref instead of \uref<br />
- in old manual, \H3 started on a new page (not per default, but set manually for api tables etc...)<br />
- move used old images and source files (visio etc) via svn (currently copied)<br />
--------------------[grammar / vocabulary discussion]<br />
- Product names<br />
-- Use of SEGGEPROBE in this document?<br />
- use license over licence<br />
- commandline or command-line?<br />
- toolchain or tool chain?<br />
- crossreference/cross-reference/cross reference?<br />
- overcurrent?<br />
- double words?<br />
- frontend?<br />
- Unit: Kbytes, KBytes, V, mV.... 9V or 9 V? Create rule in Vocabulary<br />
- baudrate or baud rate?<br />
- stackpointer or stack pointer<br />
- check where we should replace abbreviations with the long form (e.h. "milliseconds" instead of "ms")<br />
- config or configuration<br />
- filepointer or file pointer?<br />
--------------------[J-Link dep. specific]<br />
- J-Link command strings or J-Link Command strings or J-Link Command Strings<br />
- J-Link settings file or...<br />
- J-Link control panel or ......<br />
- J-Link script files or...<br />
---><br />
Flasher is a programming tool for microcontrollers with on-chip or external flash memory.<br />
Flasher is designed for programming flash targets with the J-Flash software or stand-alone.<br />
In addition to that Flasher can also be used as a regular J-Link. For more information about J-Link in general,<br />
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].<br />
<br />
<div class="toclimit-2"><br />
__TOC__<br />
</div><br />
<br />
== Flasher overview ==<br />
Flasher connects to a PC using the USB/Ethernet/RS232 interface (what host interfaces are available depends on the Flasher model),<br />
running Windows, Linux & MacOS. In stand-alone mode,<br />
Flasher can be driven by the start/stop button, or via the RS232 interface (handshake control or ASCII interface).<br />
Flasher always has a 20-pin connector, which target interfaces are supported depends on the Flasher model:<br />
* Flasher ARM: JTAG and SWD are supported.<br />
* Flasher RX: JTAG is supported. Flasher comes with additional 14-pin RX adapter<br />
* Flasher PPC: JTAG is supported. Flasher comes with additional 14-pin PPC adapter.<br />
* Flasher PRO: JTAG and SWD are supported.<br />
* Flasher Compact: JTAG and SWD are supported.<br />
<br />
=== Features of Flasher ARM/PPC/RX/PRO ===<br />
* Three boot modes: PC-based mode, stand-alone mode, file access mode<br />
* Stand-alone JTAG/SWD programmer (Once set up, Flasher can be controlled without the use of PC program)<br />
* No power supply required, powered through USB<br />
* Supports internal and external flash devices<br />
* 128 MB memory for storage of target program<br />
* Can be used as J-Link (emulator) with a download speed of up to 720 Kbytes/second<br />
* Data files can updated via USB/Ethernet (using the J-Flash software), via FTP, via RS232 or via the file access mode of Flasher<br />
<br />
{| class="seggertable"<br />
|-<br />
! Flasher model !! Supported cores !! Supported target interfaces !! Flash programming speed (depending on target hardware)<br />
|-<br />
| Flasher ARM || ARM7/ARM9/Cortex-M || JTAG, SWD || between 170 and 300 Kbytes/second<br />
|-<br />
| Flasher RX || Renesas RX610, RX621, RX62N, RX62T || JTAG || between 30-300 Kbytes/second<br />
|-<br />
| Flasher PPC || Power PC e200z0 || JTAG || up to 138 Kbytes/second<br />
|-<br />
| Flasher PRO || ARM7/ARM9/Cortex-M Renesas RX610, RX621, RX62N, RX62T Power PC e200z0 || JTAG, SWD || between 30-300 Kbytes/ second<br />
|-<br />
|}<br />
<br />
==== Features of Flasher Compact ====<br />
<br />
* Three boot modes: PC-based mode, stand-alone mode, file access mode<br />
* Stand-alone JTAG/SWD programmer (Once set up, Flasher can be controlled without the use of PC program)<br />
* No power supply required, powered through USB<br />
* Supports internal and external flash devices<br />
* 128 MB memory for storage of target program<br />
* Can be used as J-Link (emulator) with a download speed of up to 720 Kbytes/second<br />
* Data files can updated via USB/Ethernet (using the J-Flash software) or via the file access mode of Flasher<br />
<br />
{| class="seggertable"<br />
|-<br />
! Flasher model !! Supported cores !! Supported target interfaces !! Flash programming speed (depending on target hardware)<br />
|-<br />
| Flasher ARM || ARM7/ARM9/Cortex-M || JTAG, SWD || between 170 and 300 Kbytes/second<br />
|-<br />
| Flasher RX || Renesas RX610, RX621, RX62N, RX62T || JTAG || between 30-300 Kbytes/second<br />
|-<br />
| Flasher PPC || Power PC e200z0 || JTAG || up to 138 Kbytes/second<br />
|-<br />
| Flasher Compact || ARM7/ARM9/Cortex-M Renesas RX610, RX621, RX62N, RX62T Power PC e200z0 || JTAG, SWD || between 30-300 Kbytes/ second<br />
|-<br />
|}<br />
<br />
==== Features of Flasher Portable/Flasher Portable PLUS ====<br />
<br />
* Stand-alone in-circuit-programmer (Once set up, Flasher can be controlled without the use of a PC program)<br />
* Powered by an internal rechargeable battery (standard batteries for Flasher Portable), no Laptop or external power supply required.<br />
* Multiple firmware images can be stored on Flasher<br />
* 128 MB memory for storage of target program<br />
* Easy selection of image to be programmed, via button<br />
* Supported CPUs: ARM Cortex, Legacy ARM7/9, Renesas RX, Freescale PowerPC<br />
* Supports internal and external flash<br />
* Free software updates<ref name="legitimateOwned" />, 1 year of support<br />
* Data files can be updated via the file access mode functionality or via J-Flash<br />
* Programming speed between 30-300 Kbytes/second (actual speed depends on target hardware)<br />
{{Note|1=Ethernet and RS232 as host interface are not available for Flasher Portable}}<br />
<references><br />
<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.<br />
As a legitimate owner of a SEGGER Flasher, you can always download the latest software free of charge.<br />
Though not planned and not likely, we reserve the right to change this policy.<br />
Note that older models may not be supported by newer versions of the software.<br />
Typically, we support older models with new software at least 3 years after end of life.<br />
</ref><br />
</references><br />
<br />
{| class="seggertable"<br />
|-<br />
! Supported cores !! Supported target interfaces !! Flash programming speed (depending on target hardware)<br />
|-<br />
| ARM7/ARM9/Cortex-M || JTAG, SWD || between 30-300 Kbytes/second<br />
|-<br />
| Renesas RX610, RX621, RX62N, RX62T || JTAG || between 170 and 300 Kbytes/second<br />
|-<br />
| Power PC e200z0 || JTAG || up to 138 Kbytes/second<br />
|-<br />
|}<br />
<br />
==== Working environment ====<br />
<br />
'''General'''<br><br />
The Flasher can operate from a PC with an appropriate software like J-Flash or in stand-alone mode.<br />
<br />
'''Host System'''<br><br />
IBM PC/AT or compatible CPU: 486 (or better) with at least 128MB of RAM,<br />
running Windows, Linux & MacOS. It needs to have a USB, Ethernet or RS232 interface available for communication with Flasher.<br />
<br />
'''Power supply'''<br><br />
Flasher Portable: 3x standard AAA batteries or 5V DC, min. 100 mA via USB connector.<br />
<br />
Flasher Portable PLUS: internal rechargeable 680mAh Li-Ion battery, min. 100 mA via USB connector.<br />
<br />
Other Flashers: 5V DC, min. 100 mA via USB connector.<br />
<br />
'''Installing Flasher PC-software (J-Flash)'''<br><br />
The latest version of the J-Flash software, which is part of the [[J-Link Software and Documentation Pack]].<br />
For more information about using J-Flash please refer to <tt>UM08003_JFlashARM.pdf</tt> (J-Flash user guide) which is also available for download on our website.<br />
<br />
=== Specifications ===<br />
<br />
<br />
==== Specifications for Flasher ARM ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Windows, Linux & MacOS<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C<br />
|-<br />
| Storage Temperature || -20 °C ... +60 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
!colspan="100%"| Mechanical<br />
|-<br />
| Size (without cables) || 121mm x 66mm x 30mm<br />
|-<br />
| Weight (without cables) || 119g<br />
|-<br />
!colspan="100%"| Available interfaces<br />
|-<br />
| USB Host interface || USB 2.0, full speed<br />
|-<br />
| Ethernet Host interface || 10/100 MBit<br />
|-<br />
| RS232 Host interface || RS232 9-pin<br />
|-<br />
| Target interface || JTAG 20-pin (14-pin adapter available)<br />
|-<br />
!colspan="100%"| JTAG Interface, Electrical<br />
|-<br />
| Power Supply || USB powered, 100mA for Flasher ARM. 500 mA if target is powered by Flasher ARM<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| Target supply voltage || Supply voltage is 5V, max.<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6 <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Max. JTAG speed || up to 12MHz<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
===== Flasher ARM download speed =====<br />
<br />
The following table lists the Flasher ARM performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! ARM7 memory download<br />
|-<br />
| Flasher ARM || 720 Kbytes/s (12MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
<br />
==== Specifications for Flasher RX ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Windows, Linux & MacOS<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C<br />
|-<br />
| Storage Temperature || -20 °C ... +60 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
!colspan="100%"| Mechanical<br />
|-<br />
| Size (without cables) || 121mm x 66mm x 30mm<br />
|-<br />
| Weight (without cables) || 119g<br />
|-<br />
!colspan="100%"| Available interfaces<br />
|-<br />
| USB Host interface || USB 2.0, full speed<br />
|-<br />
| Ethernet Host interface || 10/100 MBit<br />
|-<br />
| RS232 Host interface || RS232 9-pin<br />
|-<br />
| Target interface || JTAG 20-pin (shipped with 14-pin adapter for Renesas RX)<br />
|-<br />
!colspan="100%"| JTAG Interface, Electrical<br />
|-<br />
| Power Supply || USB powered, 100mA for Flasher RX. 500 mA if target is powered by Flasher RX<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| 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)<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6 <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Max. JTAG speed || up to 12MHz<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
===== Flasher RX download speed =====<br />
<br />
The following table lists the Flasher RX performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! Flasher RX600 series memory download<br />
|-<br />
| Flasher RX || 720 Kbytes/s (12MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
<br />
==== Specifications for Flasher PPC ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Windows, Linux & MacOS<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C<br />
|-<br />
| Storage Temperature || -20 °C ... +60 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
!colspan="100%"| Mechanical<br />
|-<br />
| Size (without cables) || 121mm x 66mm x 30mm<br />
|-<br />
| Weight (without cables) || 119g<br />
|-<br />
!colspan="100%"| Available interfaces<br />
|-<br />
| USB Host interface || USB 2.0, full speed<br />
|-<br />
| Ethernet Host interface || 10/100 MBit<br />
|-<br />
| RS232 Host interface || RS232 9-pin<br />
|-<br />
| Target interface || JTAG 20-pin (shipped with 14-pin adapter for Renesas PPC)<br />
|-<br />
!colspan="100%"| JTAG Interface, Electrical<br />
|-<br />
| Power Supply || USB powered, 100mA for Flasher PPC. 500 mA if target is powered by Flasher PPC<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| Target supply voltage || Supply voltage is 5V, max.<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6 <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Max. JTAG speed || up to 12MHz<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
===== Flasher RX download speed =====<br />
<br />
The following table lists the Flasher PPC performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! Memory download<br />
|-<br />
| Flasher PPC || 530 Kbytes/s (8 MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
<br />
==== Specifications for Flasher PRO ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Windows, Linux & MacOS<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C<br />
|-<br />
| Storage Temperature || -20 °C ... +60 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
!colspan="100%"| Mechanical<br />
|-<br />
| Size (without cables) || 121mm x 66mm x 30mm<br />
|-<br />
| Weight (without cables) || 119g<br />
|-<br />
!colspan="100%"| Available interfaces<br />
|-<br />
| USB Host interface || USB 2.0, full speed<br />
|-<br />
| Ethernet Host interface || 10/100 MBit<br />
|-<br />
| RS232 Host interface || RS232 9-pin<br />
|-<br />
| Target interface || JTAG 20-pin (14-pin adapter available)<br />
|-<br />
!colspan="100%"| JTAG Interface, Electrical<br />
|-<br />
| Power Supply || USB powered, 100mA for Flasher PRO. 500 mA if target is powered by Flasher PRO<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| Target supply voltage || Supply voltage is 5V, max.<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6 <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Max. JTAG speed || up to 12MHz<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
<br />
===== Supported CPU cores =====<br />
<br />
The Flasher PRO supports the following CPU cores:<br />
<br />
'''ARM Cortex'''<br><br />
* Cortex-A5<br />
* Cortex-A8<br />
* Cortex-A9<br />
* Cortex-R4<br />
* Cortex-R5<br />
* Cortex-M0<br />
* Cortex-M0+<br />
* Cortex-M1<br />
* Cortex-M3<br />
* Cortex-M4<br />
<br />
'''ARM (legacy cores)'''<br><br />
* ARM720T<br />
* ARM7TDMI<br />
* ARM7TDMI-S<br />
* ARM920T<br />
* ARM922T<br />
* ARM926EJ-S<br />
* ARM946E-S<br />
* ARM966E-S<br />
* ARM1136JF-S<br />
* ARM1136J-S<br />
* ARM1156T2-S<br />
* ARM1156T2F-S<br />
* ARM1176JZ-S<br />
* ARM1176JZF<br />
* ARM1176JZF-S<br />
<br />
'''Renesas RX'''<br><br />
* RX111<br />
* RX210<br />
* RX220<br />
* RX21A<br />
* RX610<br />
* RX621<br />
* RX62G<br />
* RX62N<br />
* RX62T<br />
* RX630<br />
* RX631<br />
* RX63N<br />
* RX63T<br />
<br />
'''Freescale Power PC'''<br><br />
* e200z0<br />
<br />
===== Supported Target interfaces =====<br />
<br />
The Flasher PRO supports the following target interfaces:<br />
<br />
* JTAG<br />
* SWD<br />
* FINE<br />
* SPD<br />
<br />
===== Flasher PRO download speed =====<br />
<br />
The following table lists the Flasher PRO performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! ARM7 memory download<br />
|-<br />
| Flasher PRO || 720 Kbytes/s (12MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
<br />
==== Specifications for Flasher Compact ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Microsoft Windows (x86/x64)<br>Linux (x86/x64/Arm)<br>macOS (x86/Apple M1)<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C<br />
|-<br />
| Storage Temperature || -20 °C ... +65 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
| Size (without cables) || 70mm x 45mm x 18mm<br />
|-<br />
| Weight (without cables) || 40g<br />
|-<br />
| USB Host interface || USB 2.0 (Hi-Speed); Micro USB<br />
|-<br />
| Target interface || JTAG 20-pin (14-pin adapter available)<br />
|-<br />
| Power Supply || USB powered, 130mA (idle)<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| Target supply voltage || Supply voltage is 5V, max.<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
| Supported target interfaces || SPI, QSPI, 8051 C2, cJTAG, FINE, ICSP, IIC, ISP, JTAG, PDI, SPD, SWD, SWIM, UART, UPDI<br />
|-<br />
| Serial transfer rate between Flasher Compact and target || Up to 50 MHz (Depending on target interface)<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6 <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
===== Supported CPU cores =====<br />
<br />
The Flasher Compact supports the following CPU cores:<br />
'''ARM Cortex'''<br><br />
* Cortex-A5<br />
* Cortex-A8<br />
* Cortex-A9<br />
* Cortex-R4<br />
* Cortex-R5<br />
* Cortex-M0<br />
* Cortex-M0+<br />
* Cortex-M1<br />
* Cortex-M3<br />
* Cortex-M4<br />
<br />
'''ARM (legacy cores)'''<br><br />
* ARM720T<br />
* ARM7TDMI<br />
* ARM7TDMI-S<br />
* ARM920T<br />
* ARM922T<br />
* ARM926EJ-S<br />
* ARM946E-S<br />
* ARM966E-S<br />
* ARM1136JF-S<br />
* ARM1136J-S<br />
* ARM1156T2-S<br />
* ARM1156T2F-S<br />
* ARM1176JZ-S<br />
* ARM1176JZF<br />
* ARM1176JZF-S<br />
<br />
'''Renesas RX'''<br><br />
* RX111<br />
* RX210<br />
* RX220<br />
* RX21A<br />
* RX610<br />
* RX621<br />
* RX62G<br />
* RX62N<br />
* RX62T<br />
* RX630<br />
* RX631<br />
* RX63N<br />
* RX63T<br />
<br />
'''Freescale Power PC'''<br><br />
* e200z0<br />
<br />
===== Flasher Compact download speed =====<br />
<br />
The following table lists the Flasher Compact performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! ARM7 memory download<br />
|-<br />
| Flasher Compact || 720 Kbytes/s (12MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
<br />
==== Specifications for Flasher Portable PLUS ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Windows, Linux & MacOS<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C (normal operation)<br>+5 °C ... +45 °C (battery charging)<br />
|-<br />
| Storage Temperature || -20 °C ... +45 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
| 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)<br />
|-<br />
| Charging via USB || 70 minutes (at 1A charging current)<br />
|-<br />
!colspan="100%"| Mechanical<br />
|-<br />
| Size (without cables) || 126mm x 70mm x 28mm<br />
|-<br />
| Weight (without cables) || 140g<br />
|-<br />
!colspan="100%"| Available interfaces<br />
|-<br />
| USB Host interface || USB 2.0<br />
|-<br />
| Target interface || Standard 20-pin 0.1" connector (Adapters available).<br />
|-<br />
!colspan="100%"| Target Interface, Electrical<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| Target supply voltage || Supply voltage is 4.5V, max. (depends on the current battery voltage).<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6 <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Max. JTAG speed || up to 12MHz<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
===== Supported CPU cores =====<br />
<br />
The Flasher Portable PLUS supports the following CPU cores:<br />
<br />
'''ARM Cortex'''<br><br />
* Cortex-A5<br />
* Cortex-A8<br />
* Cortex-A9<br />
* Cortex-R4<br />
* Cortex-R5<br />
* Cortex-M0<br />
* Cortex-M0+<br />
* Cortex-M1<br />
* Cortex-M3<br />
* Cortex-M4<br />
<br />
'''ARM (legacy cores)'''<br><br />
* ARM720T<br />
* ARM7TDMI<br />
* ARM7TDMI-S<br />
* ARM920T<br />
* ARM922T<br />
* ARM926EJ-S<br />
* ARM946E-S<br />
* ARM966E-S<br />
* ARM1136JF-S<br />
* ARM1136J-S<br />
* ARM1156T2-S<br />
* ARM1156T2F-S<br />
* ARM1176JZ-S<br />
* ARM1176JZF<br />
* ARM1176JZF-S<br />
<br />
'''Renesas RX'''<br><br />
* RX111<br />
* RX210<br />
* RX220<br />
* RX21A<br />
* RX610<br />
* RX621<br />
* RX62G<br />
* RX62N<br />
* RX62T<br />
* RX630<br />
* RX631<br />
* RX63N<br />
* RX63T<br />
<br />
'''Freescale Power PC'''<br><br />
* e200z0<br />
<br />
===== Supported Target interfaces =====<br />
<br />
The Flasher Portable PLUS supports the following target interfaces:<br />
* JTAG<br />
* SWD<br />
* FINE<br />
* SPD<br />
<br />
===== Flasher Portable PLUS download speed =====<br />
<br />
The following table lists the Flasher Portable PLUS performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! ARM7 memory download<br />
|-<br />
| Flasher PRO || 720 Kbytes/s (12MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
<br />
==== Specifications for Flasher Portable ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Windows, Linux & MacOS<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C<br />
|-<br />
| Storage Temperature || -20 °C ... +65 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
| Power Supply || a) USB powered, 100mA for Flasher Portable. 500 mA if target is powered by Flasher Portable<br>b) Batteries powered (3xAAA)<br />
|-<br />
!colspan="100%"| Mechanical<br />
|-<br />
| Size (without cables) || 130mm x 65mm x 25mm<br />
|-<br />
| Weight (without cables) || 120g<br />
|-<br />
!colspan="100%"| Available interfaces<br />
|-<br />
| USB Host interface || USB 2.0<br />
|-<br />
| Target interface || Standard 20-pin 0.1" connector (Adapters available).<br />
|-<br />
!colspan="100%"| Target Interface, Electrical<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| Target supply voltage || Supply voltage is 4.5V, max. (depends on the current battery voltage).<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6V <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Max. JTAG speed || up to 12MHz<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
===== Supported CPU cores =====<br />
<br />
The Flasher Portable supports the following CPU cores:<br />
<br />
'''ARM Cortex'''<br><br />
* Cortex-A5<br />
* Cortex-A8<br />
* Cortex-A9<br />
* Cortex-R4<br />
* Cortex-R5<br />
* Cortex-M0<br />
* Cortex-M0+<br />
* Cortex-M1<br />
* Cortex-M3<br />
* Cortex-M4<br />
<br />
'''ARM (legacy cores)'''<br><br />
* ARM720T<br />
* ARM7TDMI<br />
* ARM7TDMI-S<br />
* ARM920T<br />
* ARM922T<br />
* ARM926EJ-S<br />
* ARM946E-S<br />
* ARM966E-S<br />
* ARM1136JF-S<br />
* ARM1136J-S<br />
* ARM1156T2-S<br />
* ARM1156T2F-S<br />
* ARM1176JZ-S<br />
* ARM1176JZF<br />
* ARM1176JZF-S<br />
<br />
'''Renesas RX'''<br><br />
* RX111<br />
* RX210<br />
* RX220<br />
* RX21A<br />
* RX610<br />
* RX621<br />
* RX62G<br />
* RX62N<br />
* RX62T<br />
* RX630<br />
* RX631<br />
* RX63N<br />
* RX63T<br />
<br />
'''Freescale Power PC'''<br><br />
* e200z0<br />
<br />
===== Supported Target interfaces =====<br />
<br />
The Flasher Portable supports the following target interfaces:<br />
<br />
* JTAG<br />
* SWD<br />
* FINE<br />
* SPD<br />
<br />
===== Flasher Portable download speed =====<br />
<br />
The following table lists the Flasher Portable performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! ARM7 memory download<br />
|-<br />
| Flasher PRO || 720 Kbytes/s (12MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
== Working with Flasher ==<br />
<br />
This chapter describes functionality and how to use Flasher.<br />
<br />
=== Flasher Portable PLUS ===<br />
<br />
The Flasher Portable PLUS is a portable version of SEGGERs Flasher family,<br />
which has been designed to fill the need of an extremely portable, production grade,<br />
Flash programmer used for in-field firmware updates. No need to be tethered to an outlet,<br />
it is powered by an integrated Li-Ion cell (680mAh).<br />
The Flasher Portable PLUS programs flash targets in stand-alone mode or via J-Flash PC software.<br><br />
<br />
Furthermore the Flasher Portable PLUS allows the user to select between eight data images to be programmed.<br />
The images can be easily selected by using the SEL button on the front of the housing.<br />
For more information about support for multiple images, please refer to [[#Multiple File Support | Multiple File Support]].<br><br />
For setup and configuration purposes, the Flasher Portable PLUS connects to a PC via USB interface,<br />
running Windows, Linux & MacOS and has a built-in standard 20-pin J-Link target connector.<br><br />
<br />
{{Note|1=Ethernet and RS232 as host interface are not available for the Flasher Portable PLUS.}}<br />
<br />
==== Housing & Buttons ====<br />
<br />
The Flasher Portable PLUS comes with a display, which is for example used to represent the status of an ongoing flash progress.<br />
Furthermore, there are three buttons which allow the user to control Flasher Portable PLUS.<br />
For a detailed description of the functions, take a look at the table below:<br />
<br />
<!-- LG xxxxxx edit image with labels for buttons? (Is this actually necessary? Buttons are basically self-explanatory...) --><br />
[[File:Flasher_Portable_PLUS.png | 500px]]<br />
<br />
{| class="seggertable"<br />
|-<br />
! Button !! Description<br />
|-<br />
| Program || Start programming process with the currently selected image.<br />
|-<br />
| Select image || Select the image to be programmed next time the Program button is pressed.<br />
|-<br />
| 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.<br />
|-<br />
|}<br />
<br />
==== Configuration ====<br />
<br />
The Flasher Portable PLUS has some configuration options the other Flashers do not have.<br />
{| class="seggertable"<br />
|-<br />
! Option !! Description !! Value range !! Default value<br />
|-<br />
| AutoPowerOffOnIdle || Specifies the time interval after which the Flasher Portable will turn off without any user action || 1 to 3600 || 60<br />
|-<br />
| ShowDatCRCAfterProgramming || Activates displaying the data file CRC after the programming in the pop up message || 0 = inactive, 1 = active || 0<br />
|-<br />
|}<br />
<br />
If the <tt>Flasher.ini</tt> does not contain a <tt>[Config]</tt> section with the configuration option, the default value is used.<br />
<br />
'''Example:'''<br><br />
This sample will show the data file CRC after the programming and the auto power of is set to five minutes (=300 seconds).<br />
<br />
<source lang="c"><br />
[CONFIG]<br />
AutoPowerOffOnIdle = "300"<br />
ShowDatCRCAfterProgramming = "1"<br />
</source><br />
<br />
=== Flasher Portable ===<br />
<br />
The Flasher Portable is a portable version of SEGGERs Flasher family, which has been designed to fill the need of an extremely portable,<br />
production grade, Flash programmer used for in-field firmware updates. No need to be tethered to an outlet,<br />
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><br />
<br />
Furthermore the Flasher Portable allows the user to select between four data images to be programmed.<br />
The images can be easily selected by using the arrow buttons on the front of the housing.<br />
For more information about support for multiple images, please refer to [[#Multiple File Support | Multiple File Support]].<br><br />
For setup and configuration purposes, the Flasher Portable connects to a PC via USB interface,<br />
running Windows, Linux & MacOS and has a built-in standard 20-pin J-Link target connector.<br><br />
<br />
{{Note|1=Ethernet and RS232 as host interface are not available for the Flasher Portable.}}<br />
<br />
==== Housing & Buttons ====<br />
<br />
The Flasher Portable comes with several leds which are for example used to represent the status of an ongoing flash progress.<br />
Furthermore, there are three buttons which allow the user to control Flasher Portable.<br />
For a detailed description of the functions, take a look at the two tables below:<br />
<br />
<!-- LG xxxxxx edit image with labels for buttons?--><br />
[[File:Flasher_Portable_Top_2.png | 500px]]<br />
<br />
{| class="seggertable"<br />
|-<br />
! LED !! Description<br />
|-<br />
| ACTIVE || GREEN. Blinks while the Flasher Portable is busy / performs operations on the target.<br />
|-<br />
| PASS/FAIL || GREEN/RED. Indicates, if the last flashing cycle was successful.<br />
<ul><br />
<li> GREEN: Flashing cycle completed successfully.</li><br />
<li> RED: Flashing cycle completed with error.</li><br />
</ul><br />
|-<br />
| 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]].<br />
|-<br />
| POWER || GREEN: Indicates if Flasher is currently powered. Blinks while Flasher Portable tries to enumerate via USB.<br />
|-<br />
| 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.<br />
|-<br />
|}<br />
<br />
{| class="seggertable"<br />
|-<br />
! Button !! Description<br />
|-<br />
| Program || Start programming process with the currently selected image.<br />
|-<br />
| Select image || Select the image to be programmed next time the <tt>Program</tt> button is pressed.<br />
|-<br />
| 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<br />
|-<br />
|}<br />
<br />
=== File system ===<br />
<br />
The Flasher supports 8.3 filenames only (8 characters filename, 3 characters file extension).<br />
Using longer filenames may result in incorrect operation. Integrated functions,<br />
like the FTP server or the terminal server, will refuse writing files with long filenames.<br />
<br />
=== Setting up the IP interface ===<br />
<br />
Setting up the IP interface<br />
Some of the Flasher models come with an additional Ethernet interface to communicate with the host system.<br />
These Flashers also come with a built-in webserver which allows some basic setup of the emulator,<br />
e.g. configuring a default gateway which allows using it even in large intranets. For more information,<br />
please refer to [[#TCP Services | TCP Services]].<br />
<br />
==== Connecting the first time ====<br />
<br />
When connecting Flasher the first time, it attempts to acquire an IP address via DHCP.<br />
The recommended way for finding out which IP address has been assigned to Flasher is, to use the J-Link Configurator.<br />
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.<br />
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''.<br />
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,<br />
please refer to ''UM08001, J-Link / J-Trace User Guide'', chapter ''Setup'', section ''Setting up the IP interface''.<br />
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]].<br />
<br />
=== Operating modes ===<br />
<br />
All Flashers except the Flasher ATE are able to boot in 3 different modes:<br />
<br />
* PC-based mode<br />
* Stand-alone mode<br />
* File access mode<br />
<br />
{{Note|1=The Flasher ATE only supports the stand-alone mode.}}<br />
<br />
'''Definition PC-based mode'''<br><br />
Flasher is connected to a PC via USB/Ethernet and controlled by a PC application (J-Flash).<br />
If there is an RS232 connection to a PC, does not have any influence on if PC-based mode is entered or not.<br />
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, ...)<br />
<br />
'''Definition Stand-alone mode'''<br><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.<br />
<br />
'''Definition file access mode'''<br><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.<br />
In this mode, Flasher enumerates as a mass storage device (like an USB Stick) at the host PC.<br />
In this mode, configuration + data files can be manually placed on the Flasher and the Flasher logfile can be read out.<br />
If you are using a self-powered Flasher such as the Flasher Portable Plus, the Flasher must be turned off before connecting it.<br />
<br />
==== PC-based mode ====<br />
If you want to use Flasher for the first time you need to install the J-Link software and documentation package.<br />
After installation, connect Flasher to the host PC via USB or Ethernet.<br />
For more information about how to install the J-Link software and documentation package please refer to [[J-Link Software and Documentation Pack]].<br />
<br />
===== Connecting the target system =====<br />
<br />
'''Power-on sequence'''<br><br />
In general, Flasher should be powered on before connecting it with the target device.<br />
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.<br />
Power-on the device after you connected Flasher to it. Flasher will boot in "PC-based mode".<br />
<br />
'''Verifying target device connection with J-Link.exe'''<br><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.<br />
Then start the J-Link command line tool <tt>JLink.exe</tt>,<br />
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.<br />
The screenshot below shows the output of <tt>JLink.exe</tt>.<br />
<br />
[[File:flasher_jlinkmode.gif]]<br />
<br />
===== LED status indicators =====<br />
<br />
In PC-based mode, there are also certain LED status codes defined:<br />
<br />
{| class="seggertable"<br />
|-<br />
! # !! Status of LED !! Meaning<br />
|-<br />
| 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.<br />
|-<br />
| 0 || GREEN<br>constant || Flasher enumeration process is complete and it is ready to be controlled by a PC application.<br />
|-<br />
|}<br />
<br />
==== Stand-alone mode ====<br />
<br />
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]].<br />
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).<br />
In the "stand-alone mode" Flasher can be used as a stand-alone flash programmer.<br><br />
<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]].}}<br />
<br />
===== LED status indicators =====<br />
Progress and result of an operation is indicated by Flasher's LEDs. The behavior is different for J-Link and stand-alone mode.<br />
For a definition of the different modes, please refer to [[#Operating modes | Operating modes]].<br />
The following table describes the behavior of the LEDs in stand-alone mode.<br />
<br />
{| class="seggertable"<br />
|-<br />
! # !! Status of LED !! Meaning<br />
|-<br />
| 0 || GREEN<br>constant || Flasher waits for a start trigger to perform an operation in stand-alone mode.<br />
|-<br />
| 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><br />
|-<br />
| 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.<br />
|-<br />
|}<br />
Older Flasher models have a different behavior.<br />
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:<br />
<br />
* 1621xxxxx (Flasher ARM V2)<br />
* 1630xxxxx (Flasher ARM V3)<br />
* 4210xxxxx (Flasher PPC V1)<br />
* 4110xxxxx (Flasher RX V1)<br />
<br />
{| class="seggertable"<br />
|-<br />
! # !! Status of LED !! Meaning<br />
|-<br />
| 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.<br />
|-<br />
| 1 || GREEN<br>constant || Connect to target and perform init sequence.<br />
|-<br />
| 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><br />
|-<br />
| 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.<br />
|-<br />
|}<br />
<br />
==== File access mode ====<br />
<br />
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".<br />
If you are using a self-powered Flasher such as the Flasher Portable Plus, the Flasher must be turned off before connecting it.<br />
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.<br />
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>.<br />
<br />
[[File:flasher_mode_msd.gif]]<br />
<br />
<tt>FLASHER.CFG</tt> contains the configuration settings for programming the target device and <tt>FLASHER.DAT</tt> contains the data to be programmed.<br />
<tt>FLASHER.LOG</tt> contains all logging information about the commands, performed in stand-alone mode.<br />
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><br />
<br />
Currently, J-Flash does not support to configure Flasher for automated serial number programming.<br><br />
<br />
If you want to configure multiple Flasher for the same target you do not have to use J-Flash all the time.<br />
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".<br />
<br />
=== Setting up Flasher for stand-alone mode ===<br />
<br />
In order to set up Flasher for the stand-alone mode it needs to be configured once using the J-Flash software.<br />
For more information about J-Flash, please refer to the ''J-Flash User Guide''.<br><br />
<br />
After starting J-Flash, open the appropriate J-Flash project for the target Flasher shall be configured for, by selecting '''File''' -> '''Open Project'''.<br />
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><br />
<br />
After the appropriate project has been opened / created, the data file which shall be programmed needs to be loaded, by selecting '''File''' -> '''Open'''.<br />
After this J-Flash should look like in the screenshot below.<br />
<br />
[[File:jflash_projectfile_datafile.gif]]<br />
<br />
Before downloading the configuration (project) and program data (data file) to Flasher, the connection type (USB/IP) needs to be selected in the project.<br />
These settings are also saved on a per-project basis, so this also only needs to be setup once per J-Flash project.<br />
The connection dialog is opened by clicking '''Options''' -> '''Project settings''' -> '''General'''.<br />
<br />
[[File:jflash_connection_dialog.gif]]<br />
<br />
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.<br />
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.<br />
The user then can simply select the Flash he wants to download the configuration to.<br />
<br />
[[File:EmuSelectionDialog.gif]]<br />
<br />
In order to download the configuration and program data to the Flasher, simply select '''File''' -> '''Download config & data file to Flasher'''.<br />
<br />
[[File:jflash_download_to_emul.gif]]<br />
<br />
The J-Flash log window indicates that the download to the emulator was successful.<br />
<br />
[[File:jflash_download_to_emu_succ.gif]]<br />
<br />
From now on, Flasher can be used in stand-alone mode (without host PC interaction) for stand-alone programming.<br />
<br />
==== Preparing for stand-alone operation manually ====<br />
<br />
As an alternative, J-Flash can also be used to save config and data file to a hard drive.<br><br />
<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,<br />
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.<br />
<br />
'''Creating config and data files'''<br><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><br />
<br />
For some devices, additional files (*.PEX) are needed.<br />
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.<br />
<br />
'''About *.PEX files'''<br><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,<br />
the following needs to be taken care of:<br><br />
<br />
For some devices, special connect, reset etc. sequences are necessary which are stored in so-called *.PEX files on the Flasher.<br><br />
<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><br />
<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><br />
The *.PEX files need to be placed in a subdirectory with the same name as the corresponding *.cfg file.<br />
J-Flash creates a directory with the correct name automatically when a config file is created.<br><br />
<br />
Example:<br><br />
<br />
MyConf0 is a project for a device that requires a *.PEX file for connect.<br><br />
MyConf1 is a project for a device that requires no *.PEX file at all.<br />
<br />
[[File:PEX_File_Flasher.png]]<br />
<br />
=== Universal Flash Loader mode ===<br />
<br />
As an alternative to the stand-alone mode, configured via J-Flash, there is the Universal Flash Loader mode.<br />
While the normal stand-alone mode relies on using the debug interface of the device, the Universal Flash Loader<br />
mode uses device or vendor specific programming interfaces and protocols and therefore it is independent of the<br />
CPU core.<br><br />
<br />
The Universal Flash Loader is available for the following Flasher models:<br />
* Flasher PRO<br />
* Flasher Compact<br />
* Flasher Portable PLUS<br />
<br />
For some of the supported devices, SEGGER offers specific adapters.<br />
<br />
==== Preparing manually ====<br />
<br />
The Universal Flash Loader uses an configuration file (*.UNI), a device specific flash programming algorithm (*.PEX) and a data file (*.DAT).<br />
<br />
===== Configuration =====<br />
<br />
The configuration file basically is split into three parts.<br />
The first part, the section [DEVICE], controls the generic behavior of the Universal Flash Loader.<br />
It specifies which protocol driver and data file to use. It allows enabling and configuring target power<br />
and it defines which actions to perform.<br />
The second part consists of one or more [BANKx] sections, which contain information about the memories.<br />
The third part, the section [CONFIG], includes configuration settings for the protocol driver.<br><br />
<br />
An .UNI file might look as follows:<br><br />
<br />
<source lang="c"><br />
[OPTIONS]<br />
TargetPower = "0"<br />
ChipErase = "0"<br />
<br />
[TASKS]<br />
CheckBlank = "1"<br />
Erase = "1"<br />
Program = "1"<br />
Verify = "1"<br />
Secure = "1"<br />
<br />
[DEVICE]<br />
Algo = "RL78.PEX"<br />
Data = "ALL_6k.dat"<br />
<br />
[BANK0]<br />
; Code Flash<br />
Base = "0x00000000"<br />
Size = "0x00004000"<br />
Sect = "0x00000400"<br />
<br />
[BANK1]<br />
; Data Flash<br />
Base = "0x000F1000"<br />
Size = "0x00000800"<br />
Sect = "0x00000400"<br />
<br />
[CONFIG]<br />
BaudRate = "1000000"<br />
ClearConfigOnConnect = "0x00"<br />
Security = "0xFF"<br />
ShieldStart = "0x0000"<br />
ShieldEnd = "0x000F"<br />
</source><br />
<br />
'''[OPTIONS]'''<br><br />
'''TargetPower'''<br><br />
If set to a value >0, power is applied to the target.<br />
The value defines the delay (in ms) after enabling the target power supply and before starting to communicate with the target.<br />
<br />
'''ChipErase'''<br><br />
If set to 1, the chip erase function is called for erasing the chip.<br><br />
{{Note|1=Do not enable this setting if the flash programming algorithm does not support chip erase.}}<br />
<br />
'''[TASKS]'''<br><br />
'''CheckBlank'''<br><br />
Defines if a blank check should be performed before erasing a sector.<br />
<br />
'''Erase'''<br><br />
Defines if the sector should be erased before programming.<br />
<br />
'''Program'''<br><br />
Defines if the sector should be programmed.<br />
<br />
'''Verify'''<br><br />
Defines if the sector should be verified after programming.<br />
<br />
'''Secure'''<br><br />
Defines if the device should be secured or protected against read-out after verifying.<br />
<br />
'''[DEVICE]'''<br><br />
'''Algo'''<br><br />
File name of the flash programming algorithm. This file is provided by SEGGER and will typically support a series of devices.<br />
<br />
'''Data'''<br><br />
File name of the data file to program. The Flasher only supports the Flasher .dat file format.<br />
Flasher .dat files can be generated by J-Flash or Universal Flash Loader and offer high performance together with high flexibility.<br />
<br />
'''[BANKx]'''<br><br />
x blocks with configuration data for the flash banks. All three parameters (Base, Size and Sect) are mandatory.<br />
<br />
'''Base'''<br><br />
Base address of the flash bank.<br />
<br />
'''Size'''<br><br />
Total size of the flash bank.<br />
<br />
'''Sect'''<br><br />
Sector size of the flash bank.<br />
<br />
'''[CONFIG]'''<br><br />
This section includes specific configuration data for the flash programming algorithm.<br><br />
There are no general parameters.<br />
<br />
{{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. }}<br />
<br />
==== Preparing using the PC utility ====<br />
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.<br />
<br />
[[File:Universal Flash Loader.png]]<br />
<br />
The Universal Flash Loader Configurator comes with a large list of devices and flash programming algorithms. If you are going to<br />
use a device from one of the supported families which currently is not available in the utility, feel free to contact the support.<br />
<br />
=== Multiple File Support ===<br />
<br />
It is also possible to have multiple data files and config files on Flasher, to make Flasher more easy to use in production environment.<br />
To choose the correct configuration file and data file pair, a <tt>FLASHER.INI</tt> file is used.<br />
This init file contains a <tt>[FILES]</tt> section which describes which configuration file and which data file should be used for programming.<br />
A sample content of a FLASHER.INI file is shown below:<br><br />
<br />
<source><br />
[FILES]<br />
DataFile = "Flasher1.dat"<br />
ConfigFile = "Flasher1.cfg"<br />
</source><br />
<br />
Using this method all configuration files and data files which are used in the production only have to be downloaded once.<br />
From there on a configuration file / data file pair can be switched by simply replacing the <tt>FLASHER.INI</tt> by a new one,<br />
which contains the new descriptions for the configuration file and data file. The <tt>FLASHER.INI</tt> can be replaced in two ways:<br />
<ol><br />
<li>Boot Flasher in file access mode in order to replace the <tt>FLASHER.INI</tt></li><br />
<li><br />
If Flasher is already integrated into the production line, runs in stand-alone mode and can not be booted in other mode:<br />
Use the file I/O commands provided by the ASCII interface of Flasher, to replace the <tt>FLASHER.INI</tt>.<br />
For more information about the file I/O commands, please refer to [[#File I/O commands | File I/O commands]].<br />
</li><br />
</ol><br />
{{Note|1=Flasher supports 8.3 filenames only (8 characters filename, 3 characters file extension). Using longer filenames may result in incorrect operation.}}<br />
<br />
==== Flasher Portable specifics ====<br />
<br />
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><br />
<br />
Which config / data file pair is used for which image selection position is determined by the contents of the FLASHER.INI.<br />
For this, the FLASHER.INI contents in the <tt>[FILES]</tt> section have been extended.<br />
The sample below shows how to enable the user to select between four different images on the Flasher portable via the select / arrow button:<br />
<br />
<source><br />
[FILES]<br />
DataFile = "First.dat"<br />
ConfigFile = "First.cfg"<br />
DataFile1 = "Second.dat"<br />
ConfigFile1 = "Second.cfg"<br />
DataFile2 = "Third.dat"<br />
ConfigFile2 = "Third.cfg"<br />
DataFile3 = "Fourth.dat"<br />
ConfigFile3 = "Fourth.cfg"<br />
</source><br />
<br />
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.<br />
From there on, switching between the files can be done by simply using the selection button of Flasher Portable.<br />
<br />
===== Example =====<br />
<br />
1 Target, 2 Datafiles (e.g. boot loader und application) --> same configuration file (*.CFG) but different data files (*.DAT) should be used.<br><br />
<br />
* Open pre-configured J-Flash project<br />
* File -> Save Flasher config file ... (DEFAULT.CFG)<br />
* Open data file 1 (boot loader)<br />
* File -> Save Flasher data file ... (BOOT.DAT)<br />
* Open data file 2 (application)<br />
* File -> Save Flasher data file ... (APP.DAT)<br />
* Create the a FLASHER.INI file (content see below)<br />
* Connect the Flasher in file access mode to the PC<br />
* Copy DEFAULT.CFG, BOOT.DAT, APP.DAT and FLASHER.INI on the Flasher<br />
<br />
FLASHER.INI content:<br><br />
<br />
<source><br />
[FILES]<br />
DataFile = "BOOT.DAT"<br />
ConfigFile = "DEFAULT.CFG"<br />
DataFile1 = "APP.DAT"<br />
ConfigFile1 = "DEFAULT.CFG"<br />
</source><br />
<br />
==== Flasher Portable PLUS specifics ====<br />
<br />
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><br />
<br />
Which config / data file pair is used for which image selection position is determined by the contents of the FLASHER.INI.<br />
For this, the FLASHER.INI may contain several <tt>[BATCH]</tt> sections.<br />
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:<br />
<br />
<source><br />
[BATCH]<br />
DataFile = "First.dat"<br />
ConfigFile = "First.cfg"<br />
[BATCH1]<br />
DataFile = "Second.dat"<br />
ConfigFile = "Second.cfg"<br />
[BATCH2]<br />
DataFile = "Third.dat"<br />
ConfigFile = "Third.cfg"<br />
[BATCH7]<br />
DataFile = "Proj_8.dat"<br />
ConfigFile = "Proj_8.cfg"<br />
[BATCH15]<br />
DataFile = "Proj_16.dat"<br />
ConfigFile = "Proj_16.cfg"<br />
</source><br />
<br />
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.<br />
From there on, switching between the files can be done by simply using the selection button of Flasher Portable PLUS.<br />
<br />
Please also consider the chapter [[#Batch Programming in stand-alone mode | Batch Programming in stand-alone mode]].<br />
<br />
{{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.}}<br />
{{Note|1=You may have gaps in the list. The missing entries will be skipped when selecting the next configuration.}}<br />
{{Note|1=The <tt>[Files]</tt> section is supported by the Flasher Portable PLUS, too. But the number of configuration is limited to four.}}<br />
<br />
===== Example =====<br />
<br />
1 Target, 2 Datafiles (e.g. boot loader und application) --> same configuration file (*.CFG) but different data files (*.DAT) should be used.<br><br />
<br />
* Open pre-configured J-Flash project<br />
* File -> Save Flasher config file ... (DEFAULT.CFG)<br />
* Open data file 1 (boot loader)<br />
* File -> Save Flasher data file ... (BOOT.DAT)<br />
* Open data file 2 (application)<br />
* File -> Save Flasher data file ... (APP.DAT)<br />
* Create the a FLASHER.INI file (content see below)<br />
* Connect the Flasher in file access mode to the PC<br />
* Copy DEFAULT.CFG, BOOT.DAT, APP.DAT and FLASHER.INI on the Flasher<br />
<br />
FLASHER.INI content:<br><br />
<br />
<source><br />
[BATCH]<br />
DataFile = "BOOT.DAT"<br />
ConfigFile = "DEFAULT.CFG"<br />
DisplayName = "Bootloader"<br />
[BATCH1]<br />
DataFile = "APP.DAT"<br />
ConfigFile = "DEFAULT.CFG"<br />
DisplayName = "Application"<br />
[BATCH2]<br />
DataFile = "BOOT.DAT"<br />
ConfigFile = "DEFAULT.CFG"<br />
DataFile1 = "APP.DAT"<br />
ConfigFile1 = "DEFAULT.CFG"<br />
DisplayName = "BL and App"<br />
</source><br />
<br />
=== Custom labels ===<br />
<br />
Flasher supports to assign custom labels to configurations. This allows to specify easy to remember names for configurations that are stored on the Flasher.<br />
<br />
==== Hardware and software requirements ====<br />
This feature is supported by the following models:<br />
* Flasher Portable PLUS<br />
<br />
This feature is supported since V6.30e of the software package and firmware<br />
<br />
==== Assigning labels ====<br />
The configuration and data file pairs are specified in the <tt>FLASHER.INI</tt> file:<br />
<source><br />
[FILES]<br />
DataFile = "IMAGE0.dat"<br />
ConfigFile = "IMAGE0.cfg"<br />
DataFile1 = "IMAGE1.dat"<br />
ConfigFile1 = "IMAGE1.cfg"<br />
</source><br />
<br />
By default, Flasher will show the names of the configuration and data file:<br />
[[File:FW1_smartwatch_nolabel.png]]<br />
[[File:FW2_smart_meter_nolabel.png]]<br />
<br />
By adding <tt>DisplayName</tt>, <tt>DisplayName1</tt>, ... keys to the <tt>FLASHER.INI</tt>, a custom label can be shown instead:<br />
<source><br />
[FILES]<br />
DisplayName = "FW smartwatch"<br />
DataFile = "IMAGE0.dat"<br />
ConfigFile = "IMAGE0.cfg"<br />
DisplayName1 = "FW smart meter"<br />
DataFile1 = "IMAGE1.dat"<br />
ConfigFile1 = "IMAGE1.cfg"<br />
</source><br />
<br />
The images will now be shown as follows:<br />
[[File:FW1_smartwatch_label.png]]<br />
[[File:FW2_smart_meter_label.png]]<br />
<br />
==== Considerations ====<br />
* 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.<br />
<br />
=== Programming multiple targets ===<br />
<br />
It is possible to program multiple targets which are located in a JTAG chain.<br />
The targets will be programmed each with a configuration and a data file.<br />
The configuration for the desired target must be selected before it can be programmed,<br />
this can be done with the <tt>#SELECT</tt> command.<br />
For more information how to use the <tt>#SELECT</tt> command please refer to Chapter "3.3.5 ''Commands to Flasher''".<br />
<br />
'''Example'''<br><br />
Three devices should be programmed.<br><br />
<br />
JTAG Chain: ''TDI'' --> ''Device2'' --> ''Device1'' --> ''Device0'' --> ''TDO''<br><br />
<br />
Three configurations would be stored on the flasher:<br><br />
<br />
Config 0: Configured to program Device0 (DEVICE0.CFG, DEVICE0.DAT)<br><br />
Config 1: Configured to program Device1 (DEVICE1.CFG, DEVICE1.DAT)<br><br />
Config 2: Configured to program Device2 (DEVICE2.CFG, DEVICE2.DAT)<br><br />
<br />
Selection and programming of the target will be done via the ASCII interface:<br><br />
<br />
<source><br />
#SELECT DEVICE0<br />
#AUTO<br />
#SELECT DEVICE1<br />
#AUTO<br />
#SELECT DEVICE2<br />
#AUTO<br />
</source><br />
<br />
==== Programming multiple targets with J-Flash ====<br />
<br />
Programming multiple targets can also be done via J-Flash using the command line interface.<br />
For this each target must be handled with its own project file.<br />
<br />
'''Example'''<br><br />
<br />
<source><br />
JFlash.exe -openproj"Device0.jflash" -open"Device0.hex" -auto -exit<br />
JFlash.exe -openproj"Device1.jflash" -open"Device1.hex" -auto -exit<br />
JFlash.exe -openproj"Device2.jflash" -open"Device2.hex" -auto -exit<br />
</source><br />
<br />
=== Batch Programming in stand-alone mode ===<br />
<br />
Batch programming allows to execute different stand-alone mode jobs in batch to be executed in immediate succession, without any user interaction in between.<br />
This can be used for example to program multiple targets in a JTAG-Chain or multiple data files to a target.<br><br />
A batch may contains an unlimited number of configurations which consist of a data file (*.DAT) and config file (*.CFG).<br />
For further information regarding config and data files, please refer to [[#Preparing for stand-alone operation manually | Preparing for stand-alone operation manually]].<br><br />
In order to specify the batch jobs, a FLASHER.INI file is used.<br />
This init file contains a [BATCH] section which describes which configuration pairs (*.DAT and *.CFG file) should be used for each batch job.<br />
A sample content of a FLASHER.INI file is shown below:<br><br />
<br />
<source><br />
[BATCH]<br />
DataFile = "Flasher0.dat"<br />
ConfigFile = "Flasher0.cfg"<br />
DataFile1 = "Flasher1.dat"<br />
ConfigFile1 = "Flasher1.cfg"<br />
</source><br />
<br />
[[File:Batch_Jobs.bmp]]<br />
<br />
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.<br />
<br />
<br />
[[File:Batch_Programming.bmp]]<br />
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<br />
currently executed action.<br />
<br />
<br />
[[File:Batch_Result.bmp]]<br />
The result of the programming will be shown on the screen after finishing all jobs.<br />
<br />
<br />
Creating / Replacing of the FLASHER.INI file can done in two ways:<br><br />
<ol><br />
<li>Boot Flasher in file access mode in order to replace the FLASHER.INI</li><br />
<li><br />
If Flasher is already integrated into the production line, runs in stand-alone mode and can not be booted in other mode:<br />
Use the file I/O commands provided by the ASCII interface of Flasher, to replace the FLASHER.INI .<br />
For more information about the file I/O commands, please refer to [[#File I/O commands | File I/O commands]].<br />
In case of an error occurred during execution, the Flasher terminates the entire batch processing.<br />
</li><br />
</ol><br />
{{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.}}<br />
{{Note|1=Flasher supports 8.3 filenames only (8 characters filename, 3 characters file extension). Using longer filenames may result in incorrect operation.}}<br />
<br />
==== Flasher Portable specifics ====<br />
<br />
Flasher Portable allows to choose between four different batches during runtime by using the select/arrow button on the front of Flasher Portable.<br />
Which batch configuration is used for which image selection position is specified in the FLASHER.INI.<br />
For this, the FLASHER.INI contents in the [BATCH] section have been extended.<br />
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><br />
<br />
<source><br />
[BATCH]<br />
DataFile = "Flasher0.dat"<br />
ConfigFile = "Flasher0.cfg"<br />
DataFile1 = "Flasher1.dat"<br />
ConfigFile1 = "Flasher1.cfg"<br />
DataFile2 = "Flasher2.dat"<br />
ConfigFile2 = "Flasher2.cfg"<br />
[BATCH1]<br />
DataFile = "TEST.dat"<br />
ConfigFile = "Test.cfg"<br />
[BATCH2]<br />
DataFile = "VALIDATE.dat"<br />
ConfigFile = "Flasher0.cfg"<br />
</source><br />
<br />
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.<br />
From there on, switching between the batches can be done by simply using the selection button of Flasher Portable.<br />
<br />
<br />
<br />
==== Examples ====<br />
<br />
'''Example 1:''' Programming two Data files to the same target<br><br />
<br />
* Open your J-Flash project.<br />
* Use File -> Save Flasher config file... to save the .CFG file (in this example: STM32F4.CFG).<br />
* Select the first binary and use File -> Save Flasher Data file... to save the first .DAT file (in this example: DATA0.DAT).<br />
* Select the second binary and use File -> Save Flasher Data file... to save the second data file .DAT file (in this example: DATA1.DAT).<br />
* Copy the Files to the Flasher e.g. by using file access mode.<br />
* Create a FLASHER.INI file in the root directory of the Flasher.<br />
* Exemplary content of FLASHER.INI:<br><br />
<source><br />
[BATCH]<br />
DataFile = "DATA0.dat"<br />
ConfigFile = "emPower.cfg"<br />
DataFile1 = "DATA1.dat"<br />
ConfigFile1 = "emPower.cfg"<br />
</source><br />
<br />
<br />
'''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><br />
Example scenario: 2 Devices in a JTAG chain, a STM32F1 and a STM32F4. <br><br />
<br />
* Follow the same as described before and additionally:<br />
* Create one project file per target (and create a .CFG file of each one).<br />
* Make sure each project file is configured correctly, especially the JTAG-Chain position (See UM8003 "J-Flash" for more detailed info).<br />
* Exemplary content of FLASHER.INI:<br><br />
<source><br />
[BATCH]<br />
DataFile = "F1DATA.dat"<br />
ConfigFile = "STM32F1.cfg"<br />
DataFile1 = "F4DATA0.dat"<br />
ConfigFile1 = "STM32F4.cfg"<br />
DataFile2 = "F4DATA1.dat"<br />
ConfigFile2 = "STM32F4.cfg"<br />
</source><br />
<br />
'''Example 3:''' Using multiple Batch sections with Flasher Portable.<br><br />
Example scenario: 2 Devices in a JTAG chain, a STM32F1 and a STM32F4.<br><br />
Selection 1 will program the STM32F1 target.<br><br />
Selection 2 will program the STM32F4 target using "F4DATA0.dat".<br><br />
Selection 3 will program the STM32F4 target using "F4DATA1.dat".<br><br />
Selection 4 will execute 1, 2 and 3 in sequence.<br><br />
* Exemplary content of FLASHER.INI:<br><br />
<source><br />
[BATCH]<br />
DataFile = "F1DATA.dat"<br />
ConfigFile = "STM32F1.cfg"<br />
[BATCH1]<br />
DataFile = "F4DATA0.dat"<br />
ConfigFile = "STM32F4.cfg"<br />
[BATCH2]<br />
DataFile = "F4DATA1.dat"<br />
ConfigFile = "STM32F4.cfg"<br />
[BATCH3]<br />
DataFile = "F1DATA.dat"<br />
ConfigFile = "STM32F1.cfg"<br />
DataFile1 = "F4DATA0.dat"<br />
ConfigFile1 = "STM32F4.cfg"<br />
DataFile2 = "F4DATA1.dat"<br />
ConfigFile2 = "STM32F4.cfg"<br />
</source><br />
<br />
=== Serial number programming ===<br />
<br />
Flasher supports programming of serial numbers. In order to use the serial number programming feature,<br />
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><br />
<br />
In general, Flasher supports two ways of programming a serial number into the target:<br><br />
<ol><br />
<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><br />
<li><br />
Programming custom serial numbers from a serial number list file.<br />
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.<br />
Serial number list file needs to be specified and created by user.<br />
</li><br />
</ol><br />
In the following some generic information how to setup Flasher & the J-Flash project for serial number programming are given.<br><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.}}<br />
{{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.}}<br />
<br />
==== Serial number settings ====<br />
<br />
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.<br />
This is done by enabling the '''Program serial number''' option as shown in the screenshot and table below:<br><br />
<br />
[[File:SN_Sample_JFlashSettings.gif]]<br />
<br />
{| class="seggertable"<br />
|-<br />
! Setting !! Meaning<br />
|-<br />
| <tt>Address</tt> || The address the serial number should be programmed at.<br />
|-<br />
| <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.<br />
|-<br />
| <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.<br />
|-<br />
| <tt>Increment</tt> || Specifies how much <tt>Next SN</tt> is incremented.<br />
|-<br />
|}<br />
<br />
==== Serial number file ====<br />
<br />
When selecting '''File -> Download serial number file to Flasher''', J-Flash will create a Serial number file named as <tt><JFlashProjectName>_Serial.txt</tt>.<br />
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.<br />
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.<br />
<br />
==== Serial number list file ====<br />
<br />
In order to program custom serial numbers which can not be covered by the standard serial number scheme provided by J-Flash<br />
(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.<br />
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.<br />
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><br />
* One serial number per line<br />
* Each byte of the serial number is described by two hexadecimal digits.<br />
<br />
'''Example'''<br><br />
A 8-byte serial number should be programmed at address 0x08000000.<br><br />
<br />
It should be programmed as follows in the memory:<br><br />
<br />
<tt>0x08000000: 0x01 0x02 0x03 0x04 0x55 0x66 0x77 0x88</tt><br><br />
<br />
The serial number list file should look as follows:<br><br />
<br />
<tt>0102030455667788</tt><br />
<br />
[[File:SN_SNList.gif]]<br />
<br />
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><br />
<br />
Which line Flasher will read at the next programming cycle, is configured via the <tt>Next SN</tt> option in J-Flash.<br />
For more information, please refer to [[#Serial number settings | Serial number settings]].<br />
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><br />
<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.}}<br />
{{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.}}<br />
<br />
==== Programming process ====<br />
<br />
Flasher will increment the serial number in SERIAL.TXT by the value defined in <tt>Increment</tt>, after each successful programming cycle.<br><br />
<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><br />
<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.<br />
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.}}<br />
<br />
==== Downloading serial number files to Flasher ====<br />
<br />
Downloading the serial number files needs to be done explicitly by selecting '''File-> Download serial number file to Flasher'''.<br />
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.<br />
<br />
==== Sample setup ====<br />
<br />
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.<br />
<br />
'''Defining serial number address, length and start value'''<br><br />
In the J-Flash project the following needs to be defined:<br><br />
* <tt>Address</tt> is 0x08001000<br />
* <tt>Next SN</tt> is 1234567<br />
* <tt>Increment</tt> is 1<br />
* <tt>Len</tt> is 4 (bytes)<br />
<br />
[[File:SN_Sample_JFlashSettings.gif]]<br />
<br />
'''Downloading configuration, data and serial number to Flasher.'''<br><br />
After setting up the rest of the configuration (Target interface etc.) and selecting an appropriate data file, the configuration,<br />
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><br />
<br />
[[File:SN_Sample_DownloadToFlasher.gif]]<br />
<br />
After downloading the serial number to Flasher, J-Flash also created the <tt><JFlashProjectName>_Serial.txt</tt>.<br />
<br />
[[File:SN_Sample_SerialFileCreated.gif]]<br />
<br />
Now Flasher is prepared to program the 8-byte serial number.<br />
<br />
=== Patch file support ===<br />
<br />
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.<br />
Before starting programming process in stand-alone mode, Flasher will look for a file named <tt>Patches.txt</tt> being present on the Flasher.<br />
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><br />
<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.<br />
<br />
'''Syntax'''<br><br />
<!-- LG xxxxxxxxx '==' is shown as '=', so instead use '= ='--><br />
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><br />
<br />
<tt><NumPatches>,<Addr>,<NumBytes>:<nowiki><Data></nowiki>,<Addr>,<NumBytes>:<nowiki><Data></nowiki>,<Addr>,</tt><br><br />
<tt><NumBytes>:<nowiki><Data></nowiki>,<Addr>,<NumBytes>:<nowiki><Data></nowiki>\r\n</tt><br><br />
<br />
Find below a table which describes each parameter.<br><br />
{| class="seggertable"<br />
|-<br />
! Parameter !! Description<br />
|-<br />
| <tt><NumPatches></tt> || Describes the number of patches in this patch line. Max. value is 4.<br />
|-<br />
| <tt><Addr></tt> || Describes the address to be patched. Value is expected in hex.<br />
|-<br />
| <tt><NumBytes></tt> || Number of bytes for the current patch. Max. value is 20h (32 in decimal). Value is expected in hex.<br />
|-<br />
| <tt><nowiki><Data></nowiki></tt> || Describes the data to be patched. <nowiki><Data></nowiki> is always expected as 2 hexadecimal characters per byte.<br />
|-<br />
|}<br />
<br />
{{Note|1=All values are expected in hexadecimal format (hex).<br><br />
<nowiki><Data></nowiki> section is always preceded by ":", not ",".}}<br />
<br />
'''Example'''<br><br />
Below is an example patch.<br><br />
<br />
<source><br />
1,18,4:01020304\r\n<br />
</source><br />
<br />
Patching the following data:<br />
<br />
[[File:data_before.png]]<br />
<br />
with the example patch will result in the following data:<br />
<br />
[[File:data_afterwards.png]]<br />
<br />
Please note that as mentioned earlier patching undefined memory locations will be ignored.<br><br />
Applying the example patch to the following data:<br />
<br />
[[File:undefined_mem_before.png]]<br />
<br />
Causes no data to be patched, as can be seen in the following image:<br />
<br />
[[File:undefined_mem_no_token.png]]<br />
<br />
Therefore it is necessary to first write placeholder data to the memory locations which are supposed to be patched.<br><br />
An example for such a placeholder can be seen here:<br />
<br />
[[File:undefined_mem_token.png]]<br />
<br />
Please note that the actual data inside the placeholder does not matter to the Flasher,<br />
because it is overwritten during patching.<br><br />
Applying the example patch will now work as expected:<br />
<br />
[[File:undefined_mem_after.png]]<br />
<br />
'''Single patch via RS232'''<br><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><br />
<br />
Send the <tt>#AUTO PATCH <NumPatches>,<Addr>,<NumBytes>:<nowiki><Data></nowiki></tt><br><br />
<br />
command via Flasher ASCII interface. The parameters have the same function as described in the table above.<br />
<br />
==== Newline encoding ====<br />
<br />
In general, for all patch files, init files etc. Flasher supports both newline encodings:<br><br />
<br />
* Windows: \r\n<br />
* Unix/Mac: \n<br />
<br />
All parser functionality etc. are written to be independent from the host operating system.<br />
<br />
=== Limiting the number of programming cycles ===<br />
<br />
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.<br />
To make use of this feature, a file called <tt>Cntdown.txt</tt> needs to be placed on the Flasher.<br />
This file simply contains a decimal number (32-bit unsigned integer) that describes how many programming cycles can be performed with the current setup.<br />
<br />
[[File:CntdownTxtContent.jpg]]<br />
<br />
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><br />
<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>.}}<br />
<br />
==== Changed fail/error LED indicator behavior ====<br />
<br />
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><br />
<br />
* The red error/fail LED will lit for 1 second<br />
* After this, it will blink/toggle x times @ 5 Hz, indicating the number of programming cycles left. (blinking 5 times for 5 cycles left, ...)<br />
<br />
==== Required Flasher hardware version for Cntdown.txt support ====<br />
<br />
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><br />
<br />
* 1621xxxxx (Flasher ARM V2)<br />
* 1630xxxxx (Flasher ARM V3)<br />
* 4210xxxxx (Flasher PPC V1)<br />
* 4110xxxxx (Flasher RX V1)<br />
<br />
All other models / hardware versions support limiting of programming cycles.<br />
<br />
=== Authorized flashing ===<br />
<br />
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.<br />
without the possibility to read out the Flasher contents via file access mode, FILE I/O functionality (J-Link Commander) or RS232 commands.<br />
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.<br />
<br />
==== Creating / Adding the secure area ====<br />
<br />
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.<br />
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.<br />
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><br />
<br />
[[File:CreateSecArea.jpg]]<br />
<br />
The following secure area related commands are available in J-Link Commander:<br><br />
<br />
* securearea create<br />
* securearea remove<br />
<br />
{{Note|1=When creating or removing the <tt>secure area</tt>, all configuration and data files being stored on the Flasher, are lost.<br />
Please make sure that they are not needed anymore, before adding / removing the security area.}}<br />
<br />
==== Moving files to the secure area ====<br />
<br />
Before moving configuration + data to the <tt>secure area</tt>, proper functionality of the setup should be tested in stand-alone mode.<br />
Once the setup is working as expected, do the following, to move the configuration + data into the <tt>secure area</tt>:<br><br />
<br />
* Start Flasher in file access mode (For more info, please refer to: [[#file access mode | file access mode]])<br />
<br />
[[File:FilesBeforeSecure.png]]<br />
<br />
* Create a folder "<tt>_SECURE</tt>"<br />
* Move all files that shall be moved to the <tt>secure area</tt>, into this folder<br />
<br />
[[File:FilesAfterSecure.png]]<br />
<br />
* 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.<br />
* Now Flasher can be used in stand-alone mode, as normal, but the files cannot be read back by the user / operator.<br />
<br />
==== Considerations to be taken when using the secure area ====<br />
<br />
When using the <tt>secure area</tt>, some things need to be considered:<br><br />
<br />
* All features like multiple file support, patch file support etc. can also be used when operating from the <tt>secure area</tt>.<br />
* 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>.<br />
* 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>.<br />
* 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.<br />
<br />
==== Required Flasher hardware version ====<br />
<br />
Older Flasher models do not support authorized flashing. The Flashers with the following serial number ranges do not support authorized flashing:<br><br />
<br />
* 1621xxxxx (Flasher ARM V2)<br />
* 1630xxxxx (Flasher ARM V3)<br />
* 4210xxxxx (Flasher PPC V1)<br />
* 4110xxxxx (Flasher RX V1)<br />
<br />
All other models / hardware versions support authorized flashing.<br />
<br />
=== Target interfaces ===<br />
<br />
The table below shows the supported target interfaces of the different Flasher models.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! Supported interfaces<br />
|-<br />
| Flasher PRO || JTAG, SWD<br />
|-<br />
| Flasher Compact || JTAG, SWD<br />
|-<br />
| Flasher ARM || JTAG, SWD<br />
|-<br />
| Flasher RX || JTAG<br />
|-<br />
| Flasher PPC || JTAG<br />
|-<br />
|}<br />
<br />
For more information about the target interfaces itself, please refer to:<br><br />
<br />
* ''UM08001, chapter "Working with J-Link and J-Trace", section "JTAG interface"''<br />
* ''UM08001, chapter "Working with J-Link and J-Trace", section "SWD interface"''<br />
<br />
=== Supported architectures ===<br />
<br />
Flasher supports programming of the internal flash of a large number of different microcontrollers.<br />
The number of supported devices is steadily growing. You can always find the latest list of supported devices on our website:<br><br />
<br />
''http://www.segger.com/supported-devices.html''<br />
<br />
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.<br />
Also the existence of the device may have confidential status, so it might not be mentioned as being supported in public releases yet.<br />
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.<br />
<br />
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).<br />
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.<br />
<br />
If a device is not supported, you can always contact us. We will be happy to provide you with an offer.<br />
<br />
==== External flashes ====<br />
<br />
In general our Flashers support programming of external flashes listed below:<br>(Can differ between Flasher models and hardware versions)<br />
<br />
* parallel NOR flash<br />
* SPI / QSPI flash<br>(see: ''[[SPI_support_by_Flasher_models]]'')<br />
* NAND flash<br />
* I<sup>2</sup>C EEPROM/Flash<br />
* FRAM<br />
<br />
If the parallel NOR flash device which is used is not CFI-compliant you have to select the flash device in J-Flash explicitly,<br />
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''.<br />
<br />
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.<br />
The J-Flash software comes with sample projects for ''Open Flashloader''.<br />
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''<br />
{{Note|1=Complete Information about ''Open Flashloaders'' can be found in our Wiki:<br>''[[Open_Flashloader]]''}}<br />
<br />
==== Cores ====<br />
<br />
===== Flasher ARM =====<br />
<br />
Flasher ARM supports and has been tested with the following cores, but should work with any ARM7/9, Cortex-M0/M1/M3/M4 core.<br />
If you experience problems with a particular core, do not hesitate to contact Segger.<br><br />
<br />
* ARM7TDMI (Rev 1)<br />
* ARM7TDMI (Rev 3)<br />
* ARM7TDMI-S (Rev 4)<br />
* ARM920T<br />
* ARM922T<br />
* ARM926EJ-S<br />
* ARM946E-S<br />
* ARM966E-S<br />
* Cortex-M0<br />
* Cortex-M1<br />
* Cortex-M3<br />
* Cortex-M4<br />
<br />
===== Flasher RX =====<br />
<br />
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><br />
<br />
* RX610<br />
* RX621<br />
* RX62N<br />
* RX62T<br />
<br />
===== Flasher PPC =====<br />
<br />
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.<br />
<br />
* e200z0<br />
<br />
===== Flasher PRO/Compact/Portable PLUS =====<br />
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/''.<br />
<br />
=== Programming multiple targets in parallel ===<br />
<br />
To program multiple targets in parallel there are the following possibilities:<br />
* Using a Flasher gang, or<br />
* Using multiple Flashers, each connecting to one CPU.<br />
<br />
Devices for gang programming are:<br />
* Flasher ATE; suitable for programming up to 10 targets in parallel. Refer [https://www.segger.com/downloads/flasher/UM08035Flasher ATE user manual (UM08035_FlasherATE.pdf)].<br />
* Flasher Hub in conjunction with up to 24 Flasher (Compact). Refer [https://www.segger.com/downloads/flasher/UM08039Flasher Hub user manual (UM08039_FlasherHUB.pdf)].<br />
<br />
When using multiple flashers, this can be done with the J-Flash production programming software.<br />
For further information, please refer to Chapter "''Command Line Interface''" Sub-chapter "''Programming multiple targets in parallel''" of the J-Flash User Guide (UM08003_JFlash.pdf) which is part of the Flasher Software and Documentation package. ''https://www.segger.com/downloads/flasher/#FlasherSoftwareAndDocumentationPack''<br />
<br />
=== Logfiles and Quality Management ===<br />
<br />
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:<br />
<source lang="c"><br />
SN: 1 - Failed<br />
SN: 1 - Failed<br />
SN: 2 - O.K. (931 ms)<br />
SN: 3 - O.K. (931 ms)<br />
SN: 4 - O.K. (933 ms)<br />
SN: 5 - O.K. (932 ms)<br />
</source><br />
If applicable, the logfile contains more detailed error messages. For example:<br />
<source lang="c"><br />
ERROR: Programming failed @ address 0x00000000 (1)<br />
ERROR: Cannot connect to CPU. Target interface speed too high?<br />
</source><br />
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:<br />
<source lang="c"><br />
Verify error config word area @<br />
config word<br />
config word read back<br />
Verify error flash area @<br />
data from file<br />
data read back<br />
</source><br />
{{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.}}<br />
<br />
== TCP Services ==<br />
This chapter describes the integrated TCP services.<br />
<br />
=== FTP Server ===<br />
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><br />
[[File:FTPServer.png]]<br />
<br />
==== Access data ====<br />
Anonymous access to the FTP server is limited to read-only access to the file system.<br><br />
For write access, special login credentials have to be used:<br><br />
<tt>Login: admin</tt><br><br />
<tt>Password: 1234</tt><br><br />
<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.<br />
It is not meant as a security feature.}}<br />
<br />
=== Web server ===<br />
<br />
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.<br />
For the network, the IP address settings can be changed and a nick name can be assigned to the device.<br><br />
<br />
Additionally, the web interface provides information about the status of the integrated operating system, the IP stack and the target hardware.<br />
<br />
== Remote control ==<br />
This chapter describes how to control Flasher via the 9-pin serial interface connector or via the integrated Telnet interface.<br />
<br />
=== Overview ===<br />
There are 3 ways to control Flasher operation:<br><br />
<br />
* Manual: Programming operation starts when pressing the button. The LEDs serve as visible indicators.<br />
* 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.<br />
* Terminal communication via RS232.<br />
* Terminal communication via Telnet.<br />
<br />
{{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.}}<br />
<br />
=== Handshake control ===<br />
<br />
Some Flasher models can be remote controlled by automated testers without the need of a connection to a PC.<br />
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><br />
<br />
The handshake control is available for the following Flashers:<br />
* Flasher ARM<br />
* Flasher PRO<br />
* Flasher Compact (via Flasher Hub only)<br />
<br />
The following diagrams show the internal remote control circuitry of Flasher:<br><br />
<br />
[[File:FlasherRemotecontrol.jpg]]<br />
{| class="seggertable"<br />
|-<br />
! Pin No. !! Function !! Description<br />
|-<br />
| 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.<br />
|-<br />
| 4 || BUSY || As soon as the "Auto" function is started, BUSY becomes active, which means that transistor is switched OFF.<br />
|-<br />
| 5 || GND || Common Signal ground.<br />
|-<br />
| 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.<br />
|-<br />
|}<br />
<br />
=== ASCII command interface ===<br />
<br />
==== Introduction ====<br />
<br />
Once set up using J-Flash, the Flasher can be driven by any application or just a simple terminal using ASCII commands.<br><br />
<br />
Every known command is acknowledged by the Flasher and then executed. After command execution, Flasher sends an ASCII reply message.<br><br />
<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}}<br />
<br />
==== General command and reply message format ====<br />
<br />
* Any ASCII command has to start with the start delimiter ''#''.<br />
* Any ASCII command has to end with simple carriage return ('\r', ASCII code 13).<br />
* Commands can be sent upper or lower case<br />
<br />
==== General usage ====<br />
<br />
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.<br />
<br />
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).<br />
<br />
==== Settings for ASCII interface via RS232 ====<br />
<br />
Flasher is driven via a RS232 serial port with the following interface settings:<br><br />
<br />
* 9600 baud<br />
* 8 data bits<br />
* no parity<br />
* 1 stop bit<br />
<br />
The baud rate can be changed by using the <tt>#BAUDRATE</tt> command.<br />
<br />
==== Settings for ASCII interface via Telnet ====<br />
<br />
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><br />
<br />
[[File:telnet_connection.gif]]<br />
<br />
==== Commands and replies ====<br />
<br />
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><br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| Commands to the Flasher<br />
|-<br />
| <tt>#BAUDRATE <Baudrate></tt><br />
|-<br />
| <tt>#AUTO</tt><br />
|-<br />
| <tt>#AUTO PATCH</tt><br />
|-<br />
| <tt>#AUTO NOINFO</tt><br />
|-<br />
| <tt>#CANCEL</tt><br />
|-<br />
| <tt>#ERASE</tt><br />
|-<br />
| <tt>#PROGRAM</tt><br />
|-<br />
| <tt>#RESULT</tt><br />
|-<br />
| <tt>#SELECT <Filename></tt><br />
|-<br />
| <tt>#START</tt><br />
|-<br />
| <tt>#STATUS</tt><br />
|-<br />
| <tt>#VERIFY</tt><br />
|-<br />
| <tt>#QUIT</tt><br />
|-<br />
| <tt>#VERBOSE <Level></tt><br />
|-<br />
!colspan="100%"| File I/O commands<br />
|-<br />
| <tt>#FCLOSE</tt><br />
|-<br />
| <tt>#FCRC</tt><br />
|-<br />
| <tt>#FDELETE <Filename></tt><br />
|-<br />
| <tt>#FOPEN <Filename></tt><br />
|-<br />
| <tt>#FREAD <Offset>,<NumBytes></tt><br />
|-<br />
| <tt>#FSIZE</tt><br />
|-<br />
| <tt>#FWRITE <Offset>,<NumBytes>:<nowiki><Data></nowiki></tt><br />
|-<br />
| <tt>#FLIST</tt><br />
|-<br />
| <tt>#MKDIR <Dirname></tt><br />
|-<br />
!colspan="100%"| SecureArea commands<br />
|-<br />
| <tt>#HASSECUREAREA</tt><br />
|-<br />
| <tt>#SECUREAREA <action></tt><br />
|-<br />
!colspan="100%"| Replies from the Flasher<br />
|-<br />
| <tt>#ACK</tt><br />
|-<br />
| <tt>#NACK</tt><br />
|-<br />
| <tt>#OK</tt><br />
|-<br />
| <tt>#OK:<NumBytes>:<nowiki><Data></nowiki></tt><br />
|-<br />
| <tt>#OK:<Size></tt><br />
|-<br />
| <tt>#STATUS:</tt><br />
|-<br />
| <tt>#DONE</tt><br />
|-<br />
| <tt>#ERRxxx</tt><br />
|-<br />
|}<br />
<br />
===== Commands to the Flasher =====<br />
<br />
'''#AUTO'''<br><br />
The <tt>#AUTO</tt> command behaves exactly as the start button or external remote control input.<br><br />
<br />
Usually, the following command sequence will be performed when receiving the <tt>#AUTO</tt> command:<br><br />
<br />
* The Flasher erases the target CPU (if not blank)<br />
* The Flasher programs the target CPU<br />
* The Flasher verifies the target CPU<br />
<br />
Depending on the settings chosen in the '''Production''' tab in J-Flash, this sequence can differ from the one shown above.<br><br />
<br />
Finally, Flasher responds with<br><br />
<br />
* <tt>#OK</tt> if no error occurred<br />
* <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.<br />
<br />
During execution of the <tt>#AUTO</tt> command, Flasher automatically sends "status" messages via RS232 to reflect the state of execution.<br />
Typically during execution of <tt>#AUTO</tt> command, Flasher will reply the following sequence of messages:<br><br />
<br />
<tt>#ACK</tt><br><br />
<tt>#STATUS:INITIALIZING</tt><br><br />
<tt>#STATUS:CONNECTING</tt><br><br />
<tt>#STATUS:UNLOCKING</tt><br><br />
<tt>#STATUS:ERASING</tt><br><br />
<tt>#STATUS:PROGRAMMING</tt><br><br />
<tt>#STATUS:VERIFYING</tt><br><br />
<tt>#OK (Total 13.993s, Erase 0.483s, Prog 9.183s, Verify 2.514s)</tt><br><br />
<br />
'''#AUTO PATCH'''<br><br />
The <tt>#AUTO</tt> PATCH command allows patching of the content of the data to be programmed.<br><br />
<br />
Flasher responds with<br><br />
<br />
* <tt>#OK</tt> if no error occurred<br />
* <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.<br />
<br />
For further information about the usage of the <tt>#AUTO PATCH</tt> command please refer to [[#Patch file support | Patch file support]].<br />
<br />
'''#AUTO NOINFO'''<br><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><br />
<br />
The command ends with <tt>#OK</tt> or <tt>#ERRxxx</tt><br />
<br />
'''#BAUDRATE <Baudrate>'''<br><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><br />
<br />
If this command succeeds, Flasher responds with:<br><br />
<br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<br />
Otherwise it will respond with one of the following error messages:<br><br />
<br />
<tt>#ERR255: Invalid parameters</tt><br><br />
<tt>or</tt><br><br />
<tt>#ERR255: Baudrate is not supported</tt><br><br />
<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.<br />
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.}}<br />
<br />
'''#CANCEL'''<br><br />
This command can be sent to abort a running program. It may take a while until the current program is actually canceled.<br><br />
<br />
Flasher will respond with:<br><br />
<br />
<tt>#ERR007:CANCELED.</tt><br><br />
<br />
'''#ERASE'''<br><br />
This command can be sent to erase all selected target flash sectors.<br><br />
<br />
Flasher will reply the following sequence of messages:<br><br />
<br />
<tt>#ACK</tt><br><br />
<tt>#STATUS:INITIALIZING</tt><br><br />
<tt>#STATUS:CONNECTING</tt><br><br />
<tt>#STATUS:UNLOCKING</tt><br><br />
<tt>#STATUS:ERASING</tt><br><br />
<tt>#OK (Total 0.893s, Erase 0.483s)</tt><br><br />
<br />
'''#PROGRAM'''<br><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.<br />
<br />
'''#RESULT'''<br><br />
This command can be sent any time, even during other command execution. Flasher responds with the last result of the previously executed command.<br />
<br />
'''#SELECT <Filename>'''<br><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.<br />
<tt><Filename></tt> specifies the name of file pair without extensions (.CFG and .DAT) on the Flasher which should be selected. If you are<br />
using the universal flash programming mode, <tt><Filename></tt> specifies the full name of the .UNI file '''including''' the extension.<br />
Flasher saves the selected config and data file in the FLASHER.INI file. So this selection is remembered even between power-cycling Flasher.<br><br />
<br />
This may be verfy helpful in cases where several config and data files are stored on Flasher.<br />
The user can easily switch between these config and data files without connecting Flasher to a host.<br><br />
<br />
If this command succeeds, Flasher responds with:<br><br />
<br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<br />
Find below a sample sequence which shows how to use the <tt>#SELECT</tt> command:<br><br />
<br />
<tt>#SELECT ATSAM7_1 // ATSAM7_1.CFG and ATSAM7_1.DAT is selected</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<tt>#AUTO // Start auto programming</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#STATUS:INITIALIZING</tt><br><br />
<tt>#STATUS:CONNECTING</tt><br><br />
<tt>#STATUS:UNLOCKING</tt><br><br />
<tt>#STATUS:ERASING</tt><br><br />
<tt>#STATUS:PROGRAMMING</tt><br><br />
<tt>#STATUS:VERIFYING</tt><br><br />
<tt>#OK (Total 8.416s, Erase 0.005s, Prog 6.845s, Verify 0.959s)</tt><br><br />
<tt>#SELECT ATSAM7_2 // ATSAM7_2.CFG and ATSAM7_2.DAT is selected</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<tt>#AUTO // Start auto programming</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#STATUS:INITIALIZING</tt><br><br />
<tt>#STATUS:CONNECTING</tt><br><br />
<tt>#STATUS:UNLOCKING</tt><br><br />
<tt>#STATUS:ERASING</tt><br><br />
<tt>#STATUS:PROGRAMMING</tt><br><br />
<tt>#STATUS:VERIFYING</tt><br><br />
<tt>#OK (Total 8.632s, Erase 0.005s, Prog 7.051s, Verify 0.969s)</tt><br><br />
<br />
'''#START'''<br><br />
This command can be sent to start the application using the method configured in the J-Flash project.<br />
<br />
Flasher will reply with the following sequence of messages:<br><br />
<br />
<tt>#ACK</tt><br><br />
<tt>#STATUS:INITIALIZING</tt><br><br />
<tt>#STATUS:CONNECTING</tt><br><br />
<tt>#OK (Total 1.148s)</tt><br><br />
<br />
'''#STATUS'''<br><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]].<br />
<br />
'''#VERIFY'''<br><br />
This command can used to verify the target flash content against the data stored in Flasher.<br />
<br />
'''#QUIT'''<br><br />
This command can be used to terminate the active telnet connection from the server side (Flasher).<br />
The command provides an easy way to terminate the session from an automated script.<br />
It is not necessary to parse stdout and switch to local command mode to disconnect.<br />
Not implemented in the Flasher ATE or Flasher Hub.<br />
<br />
'''#VERBOSE <Level>'''<br><br />
This command can be used to change the verbosity level. <br><br />
* Verbosity level 0: Default. <br><br />
* Verbosity level 1: Provides some additional messages during the programming process.<br />
<br />
===== File I/O commands =====<br />
<br />
The ASCII interface of the Flasher also supports file I/O operations.<br />
<br />
The following file I/O commands are supported:<br><br />
<br />
'''#FCLOSE'''<br><br />
The <tt>#FCLOSE</tt> command closes the file on Flasher which was opened via <tt>#FOPEN</tt>.<br />
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><br />
<br />
A typical sequence when using the <tt>#FCLOSE</tt> command does look like as follows:<br><br />
<br />
<tt>#FCLOSE</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<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><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:No file opened</tt><br />
}}<br />
<br />
'''#FCRC'''<br><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>.<br />
The CRC will be also reported by J-Flash when downloading or saving files via J-Flash.<br><br />
<br />
A typical sequence when using the <tt>#FCRC</tt> command does look like as follows:<br><br />
<br />
<tt>#FCRC flasher.dat</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK:0x75BC855A</tt><br><br />
<br />
'''#FDELETE <Filename>'''<br><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><br />
<br />
A typical sequence when using the <tt>#FDELETE</tt> command does look like as follows:<br><br />
<br />
<tt>#FDELETE flasher.dat</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<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><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:Failed to delete file</tt><br />
}}<br />
<br />
'''#FOPEN <Filename>'''<br><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.<br />
If <tt><Filename></tt> can not be found on Flasher a new one will be created.<br><br />
<br />
A typical sequence using the <tt>#FOPEN</tt> command does look like as follows:<br><br />
<br />
<tt>#FOPEN flasher.dat</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<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><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:A file has already been opened</tt><br />
}}<br />
<br />
'''#FREAD <Offset>,<NumBytes>'''<br><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.<br />
<tt><NumBytes></tt> specifies the number of bytes which should be read.<br><br />
<br />
A typical sequence when using the <tt>#FREAD</tt> command does look like as follows:<br><br />
<br />
<tt>#FREAD 0,4</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK:04:466c6173</tt><br><br />
<br />
If the <tt>#FREAD</tt> command succeeds, Flasher will finally respond with a <tt>#OK:<NumBytes>:<nowiki><Data></nowiki></tt> reply message.<br />
For more information about the Flasher reply messages, please refer to [[#Replies from Flasher | Replies from Flasher]].<br><br />
<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><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:No file opened</tt>}}<br />
<br />
'''#FSIZE'''<br><br />
The <tt>#FSIZE</tt> command is used to get the size of the currently opened file on Flasher.<br><br />
<br />
A typical sequence when using the <tt>#FSIZE</tt> command does look like as follows:<br><br />
<br />
<tt>#FSIZE</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK:10 // file on flasher which is currently open, has a size of 16 bytes</tt><br><br />
<br />
If the <tt>#FSIZE</tt> command succeeds, Flasher will respond with a <tt>#OK:<Size></tt> reply message.<br />
For more information about the Flasher reply messages, please refer to [[#Replies from Flasher | Replies from Flasher]].<br><br />
<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><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:No file opened</tt>}}<br />
<br />
'''#FWRITE <Offset>,<NumBytes>:<nowiki><Data></nowiki>'''<br><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.<br />
<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.<br />
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><br />
<br />
<tt><Offset></tt> and <tt><NumBytes></tt> are expected in hexadecimal format.<br><br />
<br />
<tt>#FWRITE 0,200:<nowiki><Data></nowiki></tt><br><br />
<tt>#FWRITE 200,200:<nowiki><Data></nowiki></tt><br><br />
<br />
The data is expected in hexadecimal format (two hexadecimal characters per byte). The following example illustrates the use of <tt>#FWRITE</tt>:<br />
<br />
<tt>Data to be send: Hello !</tt><br><br />
<tt>ASCII values: 0x48, 0x65, 0x6C, 0x6C, 0x6F, 0x20, 0x21</tt><br><br />
<br />
<tt>#FWRITE 0,7:48656C6C6F2021</tt><br><br />
<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><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:No file opened</tt><br>}}<br />
<br />
'''#FLIST'''<br><br />
The <tt>#LIST</tt> command is used to list all files stored on the Flasher.<br><br />
<br />
A typical sequence using the <tt>#FLIST</tt> command does look like as follows:<br><br />
<br />
<tt>#FLIST</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>FLASHER.INI Size: 60</tt><br><br />
<tt>SERIAL.TXT Size: 3</tt><br><br />
<tt>FLASHER.LOG Size: 207</tt><br><br />
<tt>FOLDER (DIR)</tt><br><br />
<tt>FOLDER\\TEST1.CFG Size: 2048</tt><br><br />
<tt>FOLDER\\TEST1.DAT Size: 12288</tt><br><br />
<tt>#OK</tt><br><br />
<br />
'''#MKDIR <Dirname>'''<br><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><br />
<br />
A typical sequence using the <tt>#MKDIR</tt> command does look like as follows:<br><br />
<br />
<tt>#MKDIR folder</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<br />
{{Note|1=If the directory can not be created because of a bad <tt><Dirname></tt> argument, Flasher will respond with:<br><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:Failed to create directory</tt><br>}}<br />
<br />
===== Secure Area Commands =====<br />
<br />
'''#HASSECUREAREA'''<br><br />
The <tt>#HASSECUREAREA</tt> command checks if the Flasher is configured with a secure area.<br />
<br />
<tt>#RESULT:YES</tt> indicates the secure area is present, <tt>#RESULT:NO</tt> indicates no secure area is present.<br />
<br />
'''#SECUREAREA'''<br><br />
The <tt>#SECUREAREA <action></tt> command allows to create or remove the secure area on the Flasher.<br />
<br />
* the action <tt>CREATE</tt> creates the secure area.<br />
* the action <tt>REMOVE</tt> will remove the secure area.<br />
<br />
A typical sequence using the <tt>#SECUREAREA</tt> command does look like as follows:<br><br />
<br />
<tt>#SECUREAREA CREATE</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#DONE</tt><br><br />
<br />
{{Note|1=When creating or removing the <tt>secure area</tt>, all configuration and data files being stored on the Flasher, are lost.<br />
Please make sure that they are not needed anymore, before adding / removing the security area.}}<br />
<br />
<br />
<br />
===== Replies from Flasher =====<br />
<br />
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.<br />
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.<br />
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><br />
<br />
<tt>#OK (Total 13.993s, Erase 0.483s, Prog 9.183s, Verify 2.514s)</tt><br><br />
<br />
The following reply messages from Flasher are defined:<br><br />
<br />
'''#ACK'''<br><br />
Flasher replies with <tt>#ACK</tt> message on reception of any defined command before the command itself is executed.<br />
<br />
'''#NACK'''<br><br />
Flasher replies with <tt>#NACK</tt>, if an undefined command was received.<br />
<br />
'''#OK'''<br><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.<br />
<br />
'''#OK:<NumBytes>:<nowiki><Data></nowiki>'''<br><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.<br />
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).<br />
<br />
'''#OK:<Size>'''<br><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.<br />
<br />
'''#STATUS:'''<br><br />
The Flasher replies with its current state.<br><br />
<br />
The following status messages are currently defined:<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Message !! Description<br />
|-<br />
| <tt>#STATUS:READY</tt> || Flasher is ready to receive a new command.<br />
|-<br />
| <tt>#STATUS:CONNECTING</tt> || Flasher initializes connection to target CPU.<br />
|-<br />
| <tt>#STATUS:INITIALIZING</tt> || Flasher performs self check and internal init.<br />
|-<br />
| <tt>#STATUS:UNLOCKING</tt> || Unlocking flash sectors.<br />
|-<br />
| <tt>#STATUS:ERASING</tt> || Flasher is erasing the flash of the target device.<br />
|-<br />
| <tt>#STATUS:PROGRAMMING</tt> || Flasher is programming the flash of the target device.<br />
|-<br />
| <tt>#STATUS:VERIFYING</tt> || Flasher verifies the programmed flash contents.<br />
|-<br />
|}<br />
<br />
'''#ERRxxx'''<br><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><br />
<br />
Some error codes may be followed by colon and an additional error text.<br><br />
<br />
For example:<br><br />
<br />
<tt>#ERR007:CANCELED.</tt><br><br />
<br />
The error code numbers are described in the following table:<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Message !! Description<br />
|-<br />
| <tt>#ERR007</tt> || Flasher received <tt>#CANCEL</tt> command and has canceled the current operation.<br />
|-<br />
| <tt>#ERR008</tt> || Flasher is already busy with execution of previous command.<br />
|-<br />
| <tt>#ERR009</tt> || Failed to allocate memory.<br />
|-<br />
| <tt>#ERR010</tt> || Failed to open file.<br />
|-<br />
| <tt>#ERR011</tt> || Failed to read file.<br />
|-<br />
| <tt>#ERR012</tt> || Failed to write file.<br />
|-<br />
| <tt>#ERR013</tt> || Failed to delete file.<br />
|-<br />
| <tt>#ERR255</tt> || Undefined error occurred. This reply is followed by an error string.<br />
|-<br />
|}<br />
<br />
== Performance ==<br />
<br />
The following chapter lists programming performance of common flash devices andmicrocontrollers.<br />
<br />
=== Performance of MCUs with internal flash memory ===<br />
<br />
==== Flasher ARM ====<br />
<br />
The following table lists program and erase performance values of Flasher ARM for different controllers.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Microcontroller !! Size [kByte] !! Erase time [sec] !! Program time [sec] !! Verify time [sec] !! Total time [sec]<br />
|-<br />
| Analog Devices || 62 || 2.943 || 2.286 || 0.563 || 5.792<br />
|-<br />
| Atmel AT91SAM7S64 || 64 || --- || 3.488 || 0.438 || 3.926<br />
|-<br />
| Atmel AT91SAM7S256 || 256 || --- || 7.709 || 1.053 || 8.762<br />
|-<br />
| NXP LPC1768 || 512 || 3.740 || 8.559 || 5.092 || 17.391<br />
|-<br />
| NXP LPC2106 || 120 || 0.448 || 1.204 || 0.634 || 2.286<br />
|-<br />
| NXP LPC2129 || 248 || 0.449 || 2.916 || 1.347 || 4.712<br />
|-<br />
| NXP LPC2138 || 500 || 0.448 || 5.488 || 2.649 || 8.585<br />
|-<br />
| NXP LPC2148 || 500 || 0.448 || 5.632 || 2.721 || 8.801<br />
|-<br />
| NXP LPC2294 || 2048 || 0.808 || 15.976 || 9.669 || 26.453<br />
|-<br />
| NXP LPC2478 || 504 || 0.448 || 5.419 || 2.559 || 8.426<br />
|-<br />
| ST STM32F103ZE || 512 || 0.028 || 18.763 || 3.939 || 22.730<br />
|-<br />
| ST STR711 || 272 || 0.429 || 5.476 || 4.742 || 10.647<br />
|-<br />
| ST STR912 || 544 || 1.167 || 12.907 || 5.236 || 19.310<br />
|-<br />
| TI TMS470R1B1M || 1024 || 2.289 || 8.147 || 5.362 || 15.798<br />
|-<br />
|}<br />
<br />
==== Flasher PRO ====<br />
See Flasher ARM.<br />
<br />
==== Flasher Compact ====<br />
See Flasher ARM.<br />
<br />
==== Flasher RX ====<br />
<br />
The following table lists program and erase performance values of Flasher RX.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Microcontroller !! Size [kByte] !! Erase time [sec] !! Program time [sec] !! Verify time [sec] !! Total time [sec]<br />
|-<br />
| R5F56108 || 2.048 || 9.523 || 11.915 || 3.890 || 25.585<br />
|-<br />
|}<br />
<br />
==== Flasher PPC ====<br />
<br />
The following table lists program and erase performance values of Flasher PPC.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Microcontroller !! Size [kByte] !! Erase time [sec] !! Program time [sec] !! Verify time [sec] !! Total time [sec]<br />
|-<br />
| ST SPC560B50 || 576 || 4.747 || 4.159 || 1.929 || 10.917<br />
|-<br />
|}<br />
<br />
== Hardware ==<br />
<br />
This chapter gives an overview about Flasher specific hardware details,<br />
such as the pinouts and available adapters.<br />
<br />
=== Flasher ARM 20-pin JTAG/SWD Connector ===<br />
<br />
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.<br />
<br />
==== Pinout JTAG ====<br />
<br />
[[File:jtag_port_20pin.jpg]] <!-- LG xxxxxx image has been cropped to fit page --><br />
<br />
The following table lists the Flasher JTAG pinout.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! PIN !! SIGNAL !! TYPE !! Description<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 13 || TDO || Input || JTAG data output from target CPU. Typically connected to TDO of target CPU.<br />
|-<br />
| 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".<br />
|-<br />
| 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.<br />
|-<br />
| 19 || 5V-Target supply || Output || This pin is used to supply power to some eval boards. Typically left open on target hardware.<br />
|-<br />
|}<br />
<br />
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.<br />
<br />
==== Pinout SWD ====<br />
<br />
The 20-pin connector of Flasher is also compatible to ARM's Serial Wire Debug (SWD) interface.<br><br />
<br />
[[File:SWD_Port.jpg]] <!-- LG xxxxxx image has been cropped to fit page --><br />
<br />
The following table lists the J-Link / J-Trace SWD pinout.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! PIN !! SIGNAL !! TYPE !! Description<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 7 || SWDIO || I/O || Single bi-directional data pin.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 13 || SWO || Output || Serial Wire Output trace port. (Optional, not required for SWD communication.)<br />
|-<br />
| 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".<br />
|-<br />
| 17 || Not used || NC || This pin is not connected in J-Link.<br />
|-<br />
| 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.<br />
|-<br />
|}<br />
<br />
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.<br />
<br />
==== Target power supply ====<br />
<br />
Pin 19 of the connector can be used to supply power to the target hardware. Supply voltage is 5V, max. current is 400mA.<br />
The output current is monitored and protected against overload and short-circuit.<br><br />
<br />
Power can be controlled via the J-Link commander. The following commands are available to control power:<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Command !! Explanation<br />
|-<br />
| <tt>power on</tt> || Switch target power on<br />
|-<br />
| <tt>power off</tt> || Switch target power off<br />
|-<br />
| <tt>power on perm</tt> || Set target power supply default to "on"<br />
|-<br />
| <tt>power off perm</tt> || Set target power supply default to "off"<br />
|-<br />
|}<br />
<br />
=== Flasher RX 14-pin connector ===<br />
<br />
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.<br />
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.<br />
<br />
[[File:jtag_port_14pin.wmf]]<br />
<br />
The following table lists the Flasher RX 14-pin JTAG pinout.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Pin !! Signal !! Type !! Description<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 5 || TDO || Input || JTAG data output from target CPU. Typically connected to TDO on target CPU.<br />
|-<br />
| 6 || --- || NC || This pin is not connected to Flasher RX.<br />
|-<br />
| 7 || --- || NC || This pin is not connected to Flasher RX.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 10 || --- || NC || This pin is not connected to Flasher RX.<br />
|-<br />
| 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.<br />
|-<br />
| 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".<br />
|-<br />
|}<br />
<br />
* All pins marked NC are not connected to Flasher RX. Any signal can be applied here; Flasher RX will simply ignore such a signal.<br />
* Pins 2, 12, 14 are GND pins connected to GND in Flasher RX. They should also be connected to GND in the target system.<br />
<br />
==== Target power supply ====<br />
<br />
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.<br />
Power can be controlled via the J-Link commander. The following commands are available to control power:<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Command !! Explanation<br />
|-<br />
| <tt>power on</tt> || Switch target power on<br />
|-<br />
| <tt>power off</tt> || Switch target power off<br />
|-<br />
| <tt>power on perm</tt> || Set target power supply default to "on"<br />
|-<br />
| <tt>power off perm</tt> || Set target power supply default to "off"<br />
|-<br />
|}<br />
<br />
=== Flasher PPC 14-pin connector ===<br />
<br />
Flasher PPC itself has a 20-pin JTAG connector mounted but comes with a 14-pin adapter for PowerPC devices.<br><br />
<br />
[[File:JTAG_PPC_14pin_adapter.wmf]]<br />
<br />
The following table lists the Flasher PPC 14-pin JTAG pinout.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Pin !! Signal !! Type !! Description<br />
|-<br />
| 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.<br />
|-<br />
| 3 || TDO || Input || JTAG data output from target CPU. Typically connected to TDO on target CPU.<br />
|-<br />
| 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.<br />
|-<br />
| 7 || --- || NC || This pin is not connected to Flasher PPC.<br />
|-<br />
| 8 || --- || NC || This pin is not connected to Flasher PPC.<br />
|-<br />
| 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".<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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).<br />
|-<br />
|}<br />
<br />
* All pins marked NC are not connected to Flasher PPC. Any signal can be applied here; Flasher PPC will simply ignore such a signal.<br />
* 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.<br />
<br />
=== Target board design ===<br />
<br />
We strongly advise following the recommendations given by the chip manufacturer. These recommendations are normally in line with the recommendations.<br />
Please refer to the the appropriate tables depending on the core:<br><br />
<br />
* [[#Pinout JTAG | Pinout JTAG]]<br />
* [[#Pinout SWD | Pinout SWD]]<br />
* [[#Flasher RX 14-pin connector | Flasher RX 14-pin connector]]<br />
* [[#Flasher PPC 14-pin connector | Flasher PPC 14-pin connector]]<br />
<br />
In case of doubt you should follow the recommendations given by the semiconductor manufacturer.<br />
<br />
==== Pull-up/pull-down resistors ====<br />
<br />
Unless otherwise specified by developer's manual, pull-ups/pull-downs are recommended to be between 2.2 kOhms and 47 kOhms.<br />
<br />
==== RESET, nTRST ====<br />
<br />
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><br />
<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.<br />
(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.<br />
<br />
=== Adapters ===<br />
<br />
==== JTAG Isolator ====<br />
<br />
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.<br />
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><br />
<br />
[[File:JTAG_Isolator_Port.wmf]]<br />
<br />
===== Pinout =====<br />
<br />
The following table shows the target-side pinout of the J-Link JTAG Isolator.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Pin !! Signal !! Type !! Description<br />
|-<br />
| 1 || VCC || Output || The target side of the isolator draws power over this pin.<br />
|-<br />
| 2 || VCC || Output || The target side of the isolator draws power over this pin.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 13 || TDO || Input || JTAG data output from target CPU. Typically connected to TDO of target CPU.<br />
|-<br />
| 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".<br />
|-<br />
| 17 || N/C || N/C || This pin is not connected on the target side of the isolator.<br />
|-<br />
| 19 || N/C || N/C || This pin is not connected on the target side of the isolator.<br />
|-<br />
|}<br />
<br />
Pins 4, 6, 8, 10, 12, 14, 16, 18, 20 are connected to GND.<br />
<br />
===== Safety =====<br />
This isolator provides '''basic isolation''' only. '''Do not use with hazardous voltages without further protection measures to avoid risk of electrical shock and fire.'''<br />
<br />
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.<br />
<br />
==== J-Link Needle Adapter ====<br />
<br />
To connect to the J-Link OB via programming interface the ''J-Link Needle Adapter'' is recommended.<br><br />
<br />
[[File:J-Link_Needle_Adapter_500x.jpg]]<br />
<br />
Why to choose the J-Link Needle Adapter:<br><br />
<ol><br />
<li>No additional connector required on your PCB</li><br />
<li>Very small footprint</li><br />
<li>High reliability spring pins for secure connections</li><br />
<li>Designed with 3 locating pins, so the adapter can not be connected the wrong way</li><br />
<li>No external power supply required! The J-Link Needle Adapter comes with the option to power the target hardware via J-Link.</li><br />
</ol><br />
These features make the J-Link Needle Adapter the perfect solution for production purposes.<br><br />
<br />
The pinout of the J-Link Needle Adapter is based on the pinout of the needle adapter by Tag-Connect.<br />
Please note, that both pinouts are not identical since the J-Link Needle Adapter comes with a 5V-supply pin.<br><br />
<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><br />
<br />
Moreover, the two "legs" on each side of the connector guarantee a stable and secure contact between pins and the PCB.<br><br />
<br />
[[File:J-Link_Needle_Adapter_Connector_pins_360x.jpg]]<br />
[[File:J-Link_Needle_Adapter_Pinout.jpg]]<br />
<br />
The J-Link Needle Adapter can be connected to J-Link via the ''20-pin 0.1'' JTAG to a 10-pin needle connector''.<br />
<br />
=== How to determine the hardware version ===<br />
<br />
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.<br />
Flasher has the hardware version printed on the back label.<br><br />
<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).<br />
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><br />
<br />
[[File:FlasherARM_version.gif]]<br />
== Support and FAQs ==<br />
<br />
This chapter contains troubleshooting tips together with solutions for common problems which might occur when using Flasher.<br />
There are several steps you can take before contacting support.<br />
Performing these steps can solve many problems and often eliminates the need for assistance.<br />
This chapter also contains a collection of frequently asked questions (FAQs) with answers.<br />
<br />
=== Contacting support ===<br />
<br />
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.<br />
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><br />
<br />
If you need to contact support, send the following information to<br><br />
''support@segger.com''<br><br />
<br />
* A detailed description of the problem<br />
* Flasher serial number<br />
* Information about your target hardware (processor, board, etc.).<br />
* <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]].<br />
<br />
Flasher is sold directly by SEGGER.<br />
<br />
=== Frequently Asked Questions ===<br />
<br />
'''Maximum JTAG speed'''<br />
{|<br />
|-<br />
| '''Q:''' || What is the maximum JTAG speed supported by Flasher?<br />
|-<br />
| '''A:''' || Flasher's maximum supported JTAG speed is 12MHz.<br />
|}<br />
<br />
'''Maximum download speed'''<br />
{|<br />
|-<br />
| '''Q:''' || What is the maximum download speed?<br><br />
|-<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.<br />
|}<br />
== Background information ==<br />
<br />
This chapter provides background information about flash programming in general. It<br />
also provides information about how to replace the firmware of Flasher manually.<br />
<br />
=== Flash programming ===<br />
<br />
Flasher comes with a DLL, which allows - amongst other functionalities - reading and writing RAM, CPU registers, starting and stopping the CPU, and setting breakpoints.<br />
<br />
==== How does flash programming via Flasher work? ====<br />
<br />
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.<br />
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.<br />
Different flash chips have different programming algorithms;the programming algorithm also depends on other things,<br />
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).<br />
The RAM code requires data to be programmed into the flash memory. The data is supplied by downloading it to RAM.<br />
<br />
==== Data download to RAM ====<br />
<br />
The data (or part of it) is downloaded to another part of the RAM of the target system.<br />
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.<br />
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.<br />
This process may have to be repeated until the entire data is programmed into the flash.<br />
<br />
==== Available options for flash programming ====<br />
<br />
In general, there are two possibilities in order to use Flasher for flash programming:<br><br />
<br />
* Using Flasher stand-alone to program the target flash memory (stand-alone mode)<br />
* Using Flasher in combination with J-Flash to program the target flash memory (Flasher in "PC-based mode")<br />
<br />
===== Using Flasher in stand-alone mode =====<br />
<br />
In order to use the Flasher in stand-alone mode, it has to be configured first.<br />
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]].<br />
<br />
===== J-Flash - Complete flash programming solution =====<br />
<br />
J-Flash is a stand-alone Windows application, which can read / write data files and program the flash in almost any ARM system.<br />
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''.<br />
<br />
==== How does the universal flash programming work? ====<br />
<br />
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><br />
<br />
Universal flash programming is available only for stand-alone mode.<br />
== Glossary ==<br />
<br />
This chapter describes important terms used throughout this manual.<br />
<br />
'''Big-endian'''<br><br />
Memory organization where the least significant byte of a word is at a higher address than the most significant byte. See Little-endian.<br />
<br />
'''Cache cleaning'''<br><br />
The process of writing dirty data in a cache to main memory.<br />
<br />
'''Coprocessor'''<br><br />
An additional processor that is used for certain operations, for example, for floating-point math calculations, signal processing, or memory management.<br />
<br />
'''Dirty data'''<br><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.<br />
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.<br />
<br />
'''Halfword'''<br><br />
A 16-bit unit of information.<br />
<br />
'''Host'''<br><br />
A computer which provides data and other services to another computer. Especially, a computer providing debugging services to a target being debugged.<br />
<br />
'''ICache'''<br><br />
Instruction cache.<br />
<br />
'''ID'''<br><br />
Identifier.<br />
<br />
'''IEEE 1149.1'''<br><br />
The IEEE Standard which defines TAP. Commonly (but incorrectly) referred to as JTAG.<br />
<br />
'''Image'''<br><br />
An executable file that has been loaded onto a processor for execution.<br />
<br />
'''Instruction Register'''<br><br />
When referring to a TAP controller, a register that controls the operation of the TAP.<br />
<br />
'''IR'''<br><br />
See Instruction Register.<br />
<br />
'''Joint Test Action Group (JTAG)'''<br><br />
The name of the standards group which created the IEEE 1149.1 specification.<br />
<br />
'''Little-endian'''<br><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.<br />
<br />
'''Memory coherency'''<br><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.<br />
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.<br />
<br />
'''Memory management unit (MMU)'''<br><br />
Hardware that controls caches and access permissions to blocks of memory, and translates virtual to physical addresses.<br />
<br />
'''Memory Protection Unit (MPU)'''<br><br />
Hardware that controls access permissions to blocks of memory. Unlike an MMU, a MPU does not translate virtual addresses to physical addresses.<br />
<br />
'''RESET'''<br><br />
Abbreviation of System Reset. The electronic signal which causes the target system other than the TAP controller to be reset.<br />
This signal is also known as "nSRST" "nSYSRST", "nRST", or "nRESET" in some other manuals. See also nTRST.<br />
<br />
'''nTRST'''<br><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.<br />
<br />
'''Open collector'''<br><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.<br />
<br />
'''Processor Core'''<br><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.<br />
It excludes optional coprocessors, caches, and the memory management unit.<br />
<br />
'''Remapping'''<br><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.<br />
<br />
'''RTOS'''<br><br />
Real Time Operating System.<br />
<br />
'''TAP Controller'''<br><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.<br />
<br />
'''Target'''<br><br />
The actual processor (real silicon or simulated) on which the application program is running.<br />
<br />
'''TCK'''<br><br />
The electronic clock signal which times data on the TAP data lines TMS, TDI, and TDO.<br />
<br />
'''TDI'''<br><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.<br />
<br />
'''TDO'''<br><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.<br />
<br />
'''Test Access Port (TAP)'''<br><br />
The port used to access a device's TAP Controller. Comprises TCK, TMS, TDI, TDO, and nTRST (optional).<br />
<br />
'''Transistor-transistor logic (TTL)'''<br><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.<br />
<br />
'''Word'''<br><br />
A 32-bit unit of information. Contents are taken as being an unsigned integer unless otherwise stated.<br />
== Literature and references ==<br />
This chapter lists documents, which we think may be useful to gain a deeper understanding of technical details.</div>JanBhttps://wiki.segger.com/index.php?title=UM08022_Flasher&diff=16292UM08022 Flasher2023-09-14T12:54:52Z<p>JanB: /* Programming multiple targets in parallel */</p>
<hr />
<div><!---<br />
General TBD:<br />
- LG: Right now - EVERYTHING<br />
===========================================<br />
--------------------[more specific, but on multiple locations]<br />
- check if all emphasis (bold, tt, blue, etc ) have made it into the new version<br />
- Add Information -> Additional information<br />
- use of the term free-of-charge utility/tool etc<br />
- check compliant to DocStandards_Rules.txt<br />
- Remove everything regarding to Kickstarter versions? eventually create a chapter Legacy -> Kickstarter version were available for hw version 5-x (200x-200x)...[..]<br />
- 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.<br />
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.<br />
- if week keep the IDE specific stuff in the manual, add Ozone, ES and J-Link Commander were no mentioned.<br />
- IDE specifics move into wiki confirmed by Alex<br />
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)<br />
- check all sections regarding licensing<br />
- Check compliance of J-Link emDocs with typographic conventions described in AboutThisDocument.emDoc. What should be altered? e.g. references<br />
- use uref at all (not blue)?<br />
- search and decide where to use \ref (ref with page number)<br />
- why is \ref (no single "option" \uref is more basic as \ref.....)<br />
- in text, use either \ref or \iref instead of \uref<br />
- in old manual, \H3 started on a new page (not per default, but set manually for api tables etc...)<br />
- move used old images and source files (visio etc) via svn (currently copied)<br />
--------------------[grammar / vocabulary discussion]<br />
- Product names<br />
-- Use of SEGGEPROBE in this document?<br />
- use license over licence<br />
- commandline or command-line?<br />
- toolchain or tool chain?<br />
- crossreference/cross-reference/cross reference?<br />
- overcurrent?<br />
- double words?<br />
- frontend?<br />
- Unit: Kbytes, KBytes, V, mV.... 9V or 9 V? Create rule in Vocabulary<br />
- baudrate or baud rate?<br />
- stackpointer or stack pointer<br />
- check where we should replace abbreviations with the long form (e.h. "milliseconds" instead of "ms")<br />
- config or configuration<br />
- filepointer or file pointer?<br />
--------------------[J-Link dep. specific]<br />
- J-Link command strings or J-Link Command strings or J-Link Command Strings<br />
- J-Link settings file or...<br />
- J-Link control panel or ......<br />
- J-Link script files or...<br />
---><br />
Flasher is a programming tool for microcontrollers with on-chip or external flash memory.<br />
Flasher is designed for programming flash targets with the J-Flash software or stand-alone.<br />
In addition to that Flasher can also be used as a regular J-Link. For more information about J-Link in general,<br />
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].<br />
<br />
<div class="toclimit-2"><br />
__TOC__<br />
</div><br />
<br />
== Flasher overview ==<br />
Flasher connects to a PC using the USB/Ethernet/RS232 interface (what host interfaces are available depends on the Flasher model),<br />
running Windows, Linux & MacOS. In stand-alone mode,<br />
Flasher can be driven by the start/stop button, or via the RS232 interface (handshake control or ASCII interface).<br />
Flasher always has a 20-pin connector, which target interfaces are supported depends on the Flasher model:<br />
* Flasher ARM: JTAG and SWD are supported.<br />
* Flasher RX: JTAG is supported. Flasher comes with additional 14-pin RX adapter<br />
* Flasher PPC: JTAG is supported. Flasher comes with additional 14-pin PPC adapter.<br />
* Flasher PRO: JTAG and SWD are supported.<br />
* Flasher Compact: JTAG and SWD are supported.<br />
<br />
=== Features of Flasher ARM/PPC/RX/PRO ===<br />
* Three boot modes: PC-based mode, stand-alone mode, file access mode<br />
* Stand-alone JTAG/SWD programmer (Once set up, Flasher can be controlled without the use of PC program)<br />
* No power supply required, powered through USB<br />
* Supports internal and external flash devices<br />
* 128 MB memory for storage of target program<br />
* Can be used as J-Link (emulator) with a download speed of up to 720 Kbytes/second<br />
* Data files can updated via USB/Ethernet (using the J-Flash software), via FTP, via RS232 or via the file access mode of Flasher<br />
<br />
{| class="seggertable"<br />
|-<br />
! Flasher model !! Supported cores !! Supported target interfaces !! Flash programming speed (depending on target hardware)<br />
|-<br />
| Flasher ARM || ARM7/ARM9/Cortex-M || JTAG, SWD || between 170 and 300 Kbytes/second<br />
|-<br />
| Flasher RX || Renesas RX610, RX621, RX62N, RX62T || JTAG || between 30-300 Kbytes/second<br />
|-<br />
| Flasher PPC || Power PC e200z0 || JTAG || up to 138 Kbytes/second<br />
|-<br />
| Flasher PRO || ARM7/ARM9/Cortex-M Renesas RX610, RX621, RX62N, RX62T Power PC e200z0 || JTAG, SWD || between 30-300 Kbytes/ second<br />
|-<br />
|}<br />
<br />
==== Features of Flasher Compact ====<br />
<br />
* Three boot modes: PC-based mode, stand-alone mode, file access mode<br />
* Stand-alone JTAG/SWD programmer (Once set up, Flasher can be controlled without the use of PC program)<br />
* No power supply required, powered through USB<br />
* Supports internal and external flash devices<br />
* 128 MB memory for storage of target program<br />
* Can be used as J-Link (emulator) with a download speed of up to 720 Kbytes/second<br />
* Data files can updated via USB/Ethernet (using the J-Flash software) or via the file access mode of Flasher<br />
<br />
{| class="seggertable"<br />
|-<br />
! Flasher model !! Supported cores !! Supported target interfaces !! Flash programming speed (depending on target hardware)<br />
|-<br />
| Flasher ARM || ARM7/ARM9/Cortex-M || JTAG, SWD || between 170 and 300 Kbytes/second<br />
|-<br />
| Flasher RX || Renesas RX610, RX621, RX62N, RX62T || JTAG || between 30-300 Kbytes/second<br />
|-<br />
| Flasher PPC || Power PC e200z0 || JTAG || up to 138 Kbytes/second<br />
|-<br />
| Flasher Compact || ARM7/ARM9/Cortex-M Renesas RX610, RX621, RX62N, RX62T Power PC e200z0 || JTAG, SWD || between 30-300 Kbytes/ second<br />
|-<br />
|}<br />
<br />
==== Features of Flasher Portable/Flasher Portable PLUS ====<br />
<br />
* Stand-alone in-circuit-programmer (Once set up, Flasher can be controlled without the use of a PC program)<br />
* Powered by an internal rechargeable battery (standard batteries for Flasher Portable), no Laptop or external power supply required.<br />
* Multiple firmware images can be stored on Flasher<br />
* 128 MB memory for storage of target program<br />
* Easy selection of image to be programmed, via button<br />
* Supported CPUs: ARM Cortex, Legacy ARM7/9, Renesas RX, Freescale PowerPC<br />
* Supports internal and external flash<br />
* Free software updates<ref name="legitimateOwned" />, 1 year of support<br />
* Data files can be updated via the file access mode functionality or via J-Flash<br />
* Programming speed between 30-300 Kbytes/second (actual speed depends on target hardware)<br />
{{Note|1=Ethernet and RS232 as host interface are not available for Flasher Portable}}<br />
<references><br />
<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.<br />
As a legitimate owner of a SEGGER Flasher, you can always download the latest software free of charge.<br />
Though not planned and not likely, we reserve the right to change this policy.<br />
Note that older models may not be supported by newer versions of the software.<br />
Typically, we support older models with new software at least 3 years after end of life.<br />
</ref><br />
</references><br />
<br />
{| class="seggertable"<br />
|-<br />
! Supported cores !! Supported target interfaces !! Flash programming speed (depending on target hardware)<br />
|-<br />
| ARM7/ARM9/Cortex-M || JTAG, SWD || between 30-300 Kbytes/second<br />
|-<br />
| Renesas RX610, RX621, RX62N, RX62T || JTAG || between 170 and 300 Kbytes/second<br />
|-<br />
| Power PC e200z0 || JTAG || up to 138 Kbytes/second<br />
|-<br />
|}<br />
<br />
==== Working environment ====<br />
<br />
'''General'''<br><br />
The Flasher can operate from a PC with an appropriate software like J-Flash or in stand-alone mode.<br />
<br />
'''Host System'''<br><br />
IBM PC/AT or compatible CPU: 486 (or better) with at least 128MB of RAM,<br />
running Windows, Linux & MacOS. It needs to have a USB, Ethernet or RS232 interface available for communication with Flasher.<br />
<br />
'''Power supply'''<br><br />
Flasher Portable: 3x standard AAA batteries or 5V DC, min. 100 mA via USB connector.<br />
<br />
Flasher Portable PLUS: internal rechargeable 680mAh Li-Ion battery, min. 100 mA via USB connector.<br />
<br />
Other Flashers: 5V DC, min. 100 mA via USB connector.<br />
<br />
'''Installing Flasher PC-software (J-Flash)'''<br><br />
The latest version of the J-Flash software, which is part of the [[J-Link Software and Documentation Pack]].<br />
For more information about using J-Flash please refer to <tt>UM08003_JFlashARM.pdf</tt> (J-Flash user guide) which is also available for download on our website.<br />
<br />
=== Specifications ===<br />
<br />
<br />
==== Specifications for Flasher ARM ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Windows, Linux & MacOS<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C<br />
|-<br />
| Storage Temperature || -20 °C ... +60 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
!colspan="100%"| Mechanical<br />
|-<br />
| Size (without cables) || 121mm x 66mm x 30mm<br />
|-<br />
| Weight (without cables) || 119g<br />
|-<br />
!colspan="100%"| Available interfaces<br />
|-<br />
| USB Host interface || USB 2.0, full speed<br />
|-<br />
| Ethernet Host interface || 10/100 MBit<br />
|-<br />
| RS232 Host interface || RS232 9-pin<br />
|-<br />
| Target interface || JTAG 20-pin (14-pin adapter available)<br />
|-<br />
!colspan="100%"| JTAG Interface, Electrical<br />
|-<br />
| Power Supply || USB powered, 100mA for Flasher ARM. 500 mA if target is powered by Flasher ARM<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| Target supply voltage || Supply voltage is 5V, max.<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6 <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Max. JTAG speed || up to 12MHz<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
===== Flasher ARM download speed =====<br />
<br />
The following table lists the Flasher ARM performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! ARM7 memory download<br />
|-<br />
| Flasher ARM || 720 Kbytes/s (12MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
<br />
==== Specifications for Flasher RX ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Windows, Linux & MacOS<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C<br />
|-<br />
| Storage Temperature || -20 °C ... +60 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
!colspan="100%"| Mechanical<br />
|-<br />
| Size (without cables) || 121mm x 66mm x 30mm<br />
|-<br />
| Weight (without cables) || 119g<br />
|-<br />
!colspan="100%"| Available interfaces<br />
|-<br />
| USB Host interface || USB 2.0, full speed<br />
|-<br />
| Ethernet Host interface || 10/100 MBit<br />
|-<br />
| RS232 Host interface || RS232 9-pin<br />
|-<br />
| Target interface || JTAG 20-pin (shipped with 14-pin adapter for Renesas RX)<br />
|-<br />
!colspan="100%"| JTAG Interface, Electrical<br />
|-<br />
| Power Supply || USB powered, 100mA for Flasher RX. 500 mA if target is powered by Flasher RX<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| 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)<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6 <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Max. JTAG speed || up to 12MHz<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
===== Flasher RX download speed =====<br />
<br />
The following table lists the Flasher RX performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! Flasher RX600 series memory download<br />
|-<br />
| Flasher RX || 720 Kbytes/s (12MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
<br />
==== Specifications for Flasher PPC ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Windows, Linux & MacOS<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C<br />
|-<br />
| Storage Temperature || -20 °C ... +60 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
!colspan="100%"| Mechanical<br />
|-<br />
| Size (without cables) || 121mm x 66mm x 30mm<br />
|-<br />
| Weight (without cables) || 119g<br />
|-<br />
!colspan="100%"| Available interfaces<br />
|-<br />
| USB Host interface || USB 2.0, full speed<br />
|-<br />
| Ethernet Host interface || 10/100 MBit<br />
|-<br />
| RS232 Host interface || RS232 9-pin<br />
|-<br />
| Target interface || JTAG 20-pin (shipped with 14-pin adapter for Renesas PPC)<br />
|-<br />
!colspan="100%"| JTAG Interface, Electrical<br />
|-<br />
| Power Supply || USB powered, 100mA for Flasher PPC. 500 mA if target is powered by Flasher PPC<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| Target supply voltage || Supply voltage is 5V, max.<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6 <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Max. JTAG speed || up to 12MHz<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
===== Flasher RX download speed =====<br />
<br />
The following table lists the Flasher PPC performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! Memory download<br />
|-<br />
| Flasher PPC || 530 Kbytes/s (8 MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
<br />
==== Specifications for Flasher PRO ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Windows, Linux & MacOS<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C<br />
|-<br />
| Storage Temperature || -20 °C ... +60 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
!colspan="100%"| Mechanical<br />
|-<br />
| Size (without cables) || 121mm x 66mm x 30mm<br />
|-<br />
| Weight (without cables) || 119g<br />
|-<br />
!colspan="100%"| Available interfaces<br />
|-<br />
| USB Host interface || USB 2.0, full speed<br />
|-<br />
| Ethernet Host interface || 10/100 MBit<br />
|-<br />
| RS232 Host interface || RS232 9-pin<br />
|-<br />
| Target interface || JTAG 20-pin (14-pin adapter available)<br />
|-<br />
!colspan="100%"| JTAG Interface, Electrical<br />
|-<br />
| Power Supply || USB powered, 100mA for Flasher PRO. 500 mA if target is powered by Flasher PRO<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| Target supply voltage || Supply voltage is 5V, max.<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6 <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Max. JTAG speed || up to 12MHz<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
<br />
===== Supported CPU cores =====<br />
<br />
The Flasher PRO supports the following CPU cores:<br />
<br />
'''ARM Cortex'''<br><br />
* Cortex-A5<br />
* Cortex-A8<br />
* Cortex-A9<br />
* Cortex-R4<br />
* Cortex-R5<br />
* Cortex-M0<br />
* Cortex-M0+<br />
* Cortex-M1<br />
* Cortex-M3<br />
* Cortex-M4<br />
<br />
'''ARM (legacy cores)'''<br><br />
* ARM720T<br />
* ARM7TDMI<br />
* ARM7TDMI-S<br />
* ARM920T<br />
* ARM922T<br />
* ARM926EJ-S<br />
* ARM946E-S<br />
* ARM966E-S<br />
* ARM1136JF-S<br />
* ARM1136J-S<br />
* ARM1156T2-S<br />
* ARM1156T2F-S<br />
* ARM1176JZ-S<br />
* ARM1176JZF<br />
* ARM1176JZF-S<br />
<br />
'''Renesas RX'''<br><br />
* RX111<br />
* RX210<br />
* RX220<br />
* RX21A<br />
* RX610<br />
* RX621<br />
* RX62G<br />
* RX62N<br />
* RX62T<br />
* RX630<br />
* RX631<br />
* RX63N<br />
* RX63T<br />
<br />
'''Freescale Power PC'''<br><br />
* e200z0<br />
<br />
===== Supported Target interfaces =====<br />
<br />
The Flasher PRO supports the following target interfaces:<br />
<br />
* JTAG<br />
* SWD<br />
* FINE<br />
* SPD<br />
<br />
===== Flasher PRO download speed =====<br />
<br />
The following table lists the Flasher PRO performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! ARM7 memory download<br />
|-<br />
| Flasher PRO || 720 Kbytes/s (12MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
<br />
==== Specifications for Flasher Compact ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Microsoft Windows (x86/x64)<br>Linux (x86/x64/Arm)<br>macOS (x86/Apple M1)<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C<br />
|-<br />
| Storage Temperature || -20 °C ... +65 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
| Size (without cables) || 70mm x 45mm x 18mm<br />
|-<br />
| Weight (without cables) || 40g<br />
|-<br />
| USB Host interface || USB 2.0 (Hi-Speed); Micro USB<br />
|-<br />
| Target interface || JTAG 20-pin (14-pin adapter available)<br />
|-<br />
| Power Supply || USB powered, 130mA (idle)<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| Target supply voltage || Supply voltage is 5V, max.<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
| Supported target interfaces || SPI, QSPI, 8051 C2, cJTAG, FINE, ICSP, IIC, ISP, JTAG, PDI, SPD, SWD, SWIM, UART, UPDI<br />
|-<br />
| Serial transfer rate between Flasher Compact and target || Up to 50 MHz (Depending on target interface)<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6 <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
===== Supported CPU cores =====<br />
<br />
The Flasher Compact supports the following CPU cores:<br />
'''ARM Cortex'''<br><br />
* Cortex-A5<br />
* Cortex-A8<br />
* Cortex-A9<br />
* Cortex-R4<br />
* Cortex-R5<br />
* Cortex-M0<br />
* Cortex-M0+<br />
* Cortex-M1<br />
* Cortex-M3<br />
* Cortex-M4<br />
<br />
'''ARM (legacy cores)'''<br><br />
* ARM720T<br />
* ARM7TDMI<br />
* ARM7TDMI-S<br />
* ARM920T<br />
* ARM922T<br />
* ARM926EJ-S<br />
* ARM946E-S<br />
* ARM966E-S<br />
* ARM1136JF-S<br />
* ARM1136J-S<br />
* ARM1156T2-S<br />
* ARM1156T2F-S<br />
* ARM1176JZ-S<br />
* ARM1176JZF<br />
* ARM1176JZF-S<br />
<br />
'''Renesas RX'''<br><br />
* RX111<br />
* RX210<br />
* RX220<br />
* RX21A<br />
* RX610<br />
* RX621<br />
* RX62G<br />
* RX62N<br />
* RX62T<br />
* RX630<br />
* RX631<br />
* RX63N<br />
* RX63T<br />
<br />
'''Freescale Power PC'''<br><br />
* e200z0<br />
<br />
===== Flasher Compact download speed =====<br />
<br />
The following table lists the Flasher Compact performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! ARM7 memory download<br />
|-<br />
| Flasher Compact || 720 Kbytes/s (12MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
<br />
==== Specifications for Flasher Portable PLUS ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Windows, Linux & MacOS<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C (normal operation)<br>+5 °C ... +45 °C (battery charging)<br />
|-<br />
| Storage Temperature || -20 °C ... +45 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
| 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)<br />
|-<br />
| Charging via USB || 70 minutes (at 1A charging current)<br />
|-<br />
!colspan="100%"| Mechanical<br />
|-<br />
| Size (without cables) || 126mm x 70mm x 28mm<br />
|-<br />
| Weight (without cables) || 140g<br />
|-<br />
!colspan="100%"| Available interfaces<br />
|-<br />
| USB Host interface || USB 2.0<br />
|-<br />
| Target interface || Standard 20-pin 0.1" connector (Adapters available).<br />
|-<br />
!colspan="100%"| Target Interface, Electrical<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| Target supply voltage || Supply voltage is 4.5V, max. (depends on the current battery voltage).<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6 <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Max. JTAG speed || up to 12MHz<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
===== Supported CPU cores =====<br />
<br />
The Flasher Portable PLUS supports the following CPU cores:<br />
<br />
'''ARM Cortex'''<br><br />
* Cortex-A5<br />
* Cortex-A8<br />
* Cortex-A9<br />
* Cortex-R4<br />
* Cortex-R5<br />
* Cortex-M0<br />
* Cortex-M0+<br />
* Cortex-M1<br />
* Cortex-M3<br />
* Cortex-M4<br />
<br />
'''ARM (legacy cores)'''<br><br />
* ARM720T<br />
* ARM7TDMI<br />
* ARM7TDMI-S<br />
* ARM920T<br />
* ARM922T<br />
* ARM926EJ-S<br />
* ARM946E-S<br />
* ARM966E-S<br />
* ARM1136JF-S<br />
* ARM1136J-S<br />
* ARM1156T2-S<br />
* ARM1156T2F-S<br />
* ARM1176JZ-S<br />
* ARM1176JZF<br />
* ARM1176JZF-S<br />
<br />
'''Renesas RX'''<br><br />
* RX111<br />
* RX210<br />
* RX220<br />
* RX21A<br />
* RX610<br />
* RX621<br />
* RX62G<br />
* RX62N<br />
* RX62T<br />
* RX630<br />
* RX631<br />
* RX63N<br />
* RX63T<br />
<br />
'''Freescale Power PC'''<br><br />
* e200z0<br />
<br />
===== Supported Target interfaces =====<br />
<br />
The Flasher Portable PLUS supports the following target interfaces:<br />
* JTAG<br />
* SWD<br />
* FINE<br />
* SPD<br />
<br />
===== Flasher Portable PLUS download speed =====<br />
<br />
The following table lists the Flasher Portable PLUS performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! ARM7 memory download<br />
|-<br />
| Flasher PRO || 720 Kbytes/s (12MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
<br />
==== Specifications for Flasher Portable ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Windows, Linux & MacOS<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C<br />
|-<br />
| Storage Temperature || -20 °C ... +65 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
| Power Supply || a) USB powered, 100mA for Flasher Portable. 500 mA if target is powered by Flasher Portable<br>b) Batteries powered (3xAAA)<br />
|-<br />
!colspan="100%"| Mechanical<br />
|-<br />
| Size (without cables) || 130mm x 65mm x 25mm<br />
|-<br />
| Weight (without cables) || 120g<br />
|-<br />
!colspan="100%"| Available interfaces<br />
|-<br />
| USB Host interface || USB 2.0<br />
|-<br />
| Target interface || Standard 20-pin 0.1" connector (Adapters available).<br />
|-<br />
!colspan="100%"| Target Interface, Electrical<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| Target supply voltage || Supply voltage is 4.5V, max. (depends on the current battery voltage).<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6V <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Max. JTAG speed || up to 12MHz<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
===== Supported CPU cores =====<br />
<br />
The Flasher Portable supports the following CPU cores:<br />
<br />
'''ARM Cortex'''<br><br />
* Cortex-A5<br />
* Cortex-A8<br />
* Cortex-A9<br />
* Cortex-R4<br />
* Cortex-R5<br />
* Cortex-M0<br />
* Cortex-M0+<br />
* Cortex-M1<br />
* Cortex-M3<br />
* Cortex-M4<br />
<br />
'''ARM (legacy cores)'''<br><br />
* ARM720T<br />
* ARM7TDMI<br />
* ARM7TDMI-S<br />
* ARM920T<br />
* ARM922T<br />
* ARM926EJ-S<br />
* ARM946E-S<br />
* ARM966E-S<br />
* ARM1136JF-S<br />
* ARM1136J-S<br />
* ARM1156T2-S<br />
* ARM1156T2F-S<br />
* ARM1176JZ-S<br />
* ARM1176JZF<br />
* ARM1176JZF-S<br />
<br />
'''Renesas RX'''<br><br />
* RX111<br />
* RX210<br />
* RX220<br />
* RX21A<br />
* RX610<br />
* RX621<br />
* RX62G<br />
* RX62N<br />
* RX62T<br />
* RX630<br />
* RX631<br />
* RX63N<br />
* RX63T<br />
<br />
'''Freescale Power PC'''<br><br />
* e200z0<br />
<br />
===== Supported Target interfaces =====<br />
<br />
The Flasher Portable supports the following target interfaces:<br />
<br />
* JTAG<br />
* SWD<br />
* FINE<br />
* SPD<br />
<br />
===== Flasher Portable download speed =====<br />
<br />
The following table lists the Flasher Portable performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! ARM7 memory download<br />
|-<br />
| Flasher PRO || 720 Kbytes/s (12MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
== Working with Flasher ==<br />
<br />
This chapter describes functionality and how to use Flasher.<br />
<br />
=== Flasher Portable PLUS ===<br />
<br />
The Flasher Portable PLUS is a portable version of SEGGERs Flasher family,<br />
which has been designed to fill the need of an extremely portable, production grade,<br />
Flash programmer used for in-field firmware updates. No need to be tethered to an outlet,<br />
it is powered by an integrated Li-Ion cell (680mAh).<br />
The Flasher Portable PLUS programs flash targets in stand-alone mode or via J-Flash PC software.<br><br />
<br />
Furthermore the Flasher Portable PLUS allows the user to select between eight data images to be programmed.<br />
The images can be easily selected by using the SEL button on the front of the housing.<br />
For more information about support for multiple images, please refer to [[#Multiple File Support | Multiple File Support]].<br><br />
For setup and configuration purposes, the Flasher Portable PLUS connects to a PC via USB interface,<br />
running Windows, Linux & MacOS and has a built-in standard 20-pin J-Link target connector.<br><br />
<br />
{{Note|1=Ethernet and RS232 as host interface are not available for the Flasher Portable PLUS.}}<br />
<br />
==== Housing & Buttons ====<br />
<br />
The Flasher Portable PLUS comes with a display, which is for example used to represent the status of an ongoing flash progress.<br />
Furthermore, there are three buttons which allow the user to control Flasher Portable PLUS.<br />
For a detailed description of the functions, take a look at the table below:<br />
<br />
<!-- LG xxxxxx edit image with labels for buttons? (Is this actually necessary? Buttons are basically self-explanatory...) --><br />
[[File:Flasher_Portable_PLUS.png | 500px]]<br />
<br />
{| class="seggertable"<br />
|-<br />
! Button !! Description<br />
|-<br />
| Program || Start programming process with the currently selected image.<br />
|-<br />
| Select image || Select the image to be programmed next time the Program button is pressed.<br />
|-<br />
| 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.<br />
|-<br />
|}<br />
<br />
==== Configuration ====<br />
<br />
The Flasher Portable PLUS has some configuration options the other Flashers do not have.<br />
{| class="seggertable"<br />
|-<br />
! Option !! Description !! Value range !! Default value<br />
|-<br />
| AutoPowerOffOnIdle || Specifies the time interval after which the Flasher Portable will turn off without any user action || 1 to 3600 || 60<br />
|-<br />
| ShowDatCRCAfterProgramming || Activates displaying the data file CRC after the programming in the pop up message || 0 = inactive, 1 = active || 0<br />
|-<br />
|}<br />
<br />
If the <tt>Flasher.ini</tt> does not contain a <tt>[Config]</tt> section with the configuration option, the default value is used.<br />
<br />
'''Example:'''<br><br />
This sample will show the data file CRC after the programming and the auto power of is set to five minutes (=300 seconds).<br />
<br />
<source lang="c"><br />
[CONFIG]<br />
AutoPowerOffOnIdle = "300"<br />
ShowDatCRCAfterProgramming = "1"<br />
</source><br />
<br />
=== Flasher Portable ===<br />
<br />
The Flasher Portable is a portable version of SEGGERs Flasher family, which has been designed to fill the need of an extremely portable,<br />
production grade, Flash programmer used for in-field firmware updates. No need to be tethered to an outlet,<br />
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><br />
<br />
Furthermore the Flasher Portable allows the user to select between four data images to be programmed.<br />
The images can be easily selected by using the arrow buttons on the front of the housing.<br />
For more information about support for multiple images, please refer to [[#Multiple File Support | Multiple File Support]].<br><br />
For setup and configuration purposes, the Flasher Portable connects to a PC via USB interface,<br />
running Windows, Linux & MacOS and has a built-in standard 20-pin J-Link target connector.<br><br />
<br />
{{Note|1=Ethernet and RS232 as host interface are not available for the Flasher Portable.}}<br />
<br />
==== Housing & Buttons ====<br />
<br />
The Flasher Portable comes with several leds which are for example used to represent the status of an ongoing flash progress.<br />
Furthermore, there are three buttons which allow the user to control Flasher Portable.<br />
For a detailed description of the functions, take a look at the two tables below:<br />
<br />
<!-- LG xxxxxx edit image with labels for buttons?--><br />
[[File:Flasher_Portable_Top_2.png | 500px]]<br />
<br />
{| class="seggertable"<br />
|-<br />
! LED !! Description<br />
|-<br />
| ACTIVE || GREEN. Blinks while the Flasher Portable is busy / performs operations on the target.<br />
|-<br />
| PASS/FAIL || GREEN/RED. Indicates, if the last flashing cycle was successful.<br />
<ul><br />
<li> GREEN: Flashing cycle completed successfully.</li><br />
<li> RED: Flashing cycle completed with error.</li><br />
</ul><br />
|-<br />
| 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]].<br />
|-<br />
| POWER || GREEN: Indicates if Flasher is currently powered. Blinks while Flasher Portable tries to enumerate via USB.<br />
|-<br />
| 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.<br />
|-<br />
|}<br />
<br />
{| class="seggertable"<br />
|-<br />
! Button !! Description<br />
|-<br />
| Program || Start programming process with the currently selected image.<br />
|-<br />
| Select image || Select the image to be programmed next time the <tt>Program</tt> button is pressed.<br />
|-<br />
| 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<br />
|-<br />
|}<br />
<br />
=== File system ===<br />
<br />
The Flasher supports 8.3 filenames only (8 characters filename, 3 characters file extension).<br />
Using longer filenames may result in incorrect operation. Integrated functions,<br />
like the FTP server or the terminal server, will refuse writing files with long filenames.<br />
<br />
=== Setting up the IP interface ===<br />
<br />
Setting up the IP interface<br />
Some of the Flasher models come with an additional Ethernet interface to communicate with the host system.<br />
These Flashers also come with a built-in webserver which allows some basic setup of the emulator,<br />
e.g. configuring a default gateway which allows using it even in large intranets. For more information,<br />
please refer to [[#TCP Services | TCP Services]].<br />
<br />
==== Connecting the first time ====<br />
<br />
When connecting Flasher the first time, it attempts to acquire an IP address via DHCP.<br />
The recommended way for finding out which IP address has been assigned to Flasher is, to use the J-Link Configurator.<br />
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.<br />
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''.<br />
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,<br />
please refer to ''UM08001, J-Link / J-Trace User Guide'', chapter ''Setup'', section ''Setting up the IP interface''.<br />
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]].<br />
<br />
=== Operating modes ===<br />
<br />
All Flashers except the Flasher ATE are able to boot in 3 different modes:<br />
<br />
* PC-based mode<br />
* Stand-alone mode<br />
* File access mode<br />
<br />
{{Note|1=The Flasher ATE only supports the stand-alone mode.}}<br />
<br />
'''Definition PC-based mode'''<br><br />
Flasher is connected to a PC via USB/Ethernet and controlled by a PC application (J-Flash).<br />
If there is an RS232 connection to a PC, does not have any influence on if PC-based mode is entered or not.<br />
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, ...)<br />
<br />
'''Definition Stand-alone mode'''<br><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.<br />
<br />
'''Definition file access mode'''<br><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.<br />
In this mode, Flasher enumerates as a mass storage device (like an USB Stick) at the host PC.<br />
In this mode, configuration + data files can be manually placed on the Flasher and the Flasher logfile can be read out.<br />
If you are using a self-powered Flasher such as the Flasher Portable Plus, the Flasher must be turned off before connecting it.<br />
<br />
==== PC-based mode ====<br />
If you want to use Flasher for the first time you need to install the J-Link software and documentation package.<br />
After installation, connect Flasher to the host PC via USB or Ethernet.<br />
For more information about how to install the J-Link software and documentation package please refer to [[J-Link Software and Documentation Pack]].<br />
<br />
===== Connecting the target system =====<br />
<br />
'''Power-on sequence'''<br><br />
In general, Flasher should be powered on before connecting it with the target device.<br />
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.<br />
Power-on the device after you connected Flasher to it. Flasher will boot in "PC-based mode".<br />
<br />
'''Verifying target device connection with J-Link.exe'''<br><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.<br />
Then start the J-Link command line tool <tt>JLink.exe</tt>,<br />
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.<br />
The screenshot below shows the output of <tt>JLink.exe</tt>.<br />
<br />
[[File:flasher_jlinkmode.gif]]<br />
<br />
===== LED status indicators =====<br />
<br />
In PC-based mode, there are also certain LED status codes defined:<br />
<br />
{| class="seggertable"<br />
|-<br />
! # !! Status of LED !! Meaning<br />
|-<br />
| 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.<br />
|-<br />
| 0 || GREEN<br>constant || Flasher enumeration process is complete and it is ready to be controlled by a PC application.<br />
|-<br />
|}<br />
<br />
==== Stand-alone mode ====<br />
<br />
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]].<br />
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).<br />
In the "stand-alone mode" Flasher can be used as a stand-alone flash programmer.<br><br />
<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]].}}<br />
<br />
===== LED status indicators =====<br />
Progress and result of an operation is indicated by Flasher's LEDs. The behavior is different for J-Link and stand-alone mode.<br />
For a definition of the different modes, please refer to [[#Operating modes | Operating modes]].<br />
The following table describes the behavior of the LEDs in stand-alone mode.<br />
<br />
{| class="seggertable"<br />
|-<br />
! # !! Status of LED !! Meaning<br />
|-<br />
| 0 || GREEN<br>constant || Flasher waits for a start trigger to perform an operation in stand-alone mode.<br />
|-<br />
| 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><br />
|-<br />
| 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.<br />
|-<br />
|}<br />
Older Flasher models have a different behavior.<br />
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:<br />
<br />
* 1621xxxxx (Flasher ARM V2)<br />
* 1630xxxxx (Flasher ARM V3)<br />
* 4210xxxxx (Flasher PPC V1)<br />
* 4110xxxxx (Flasher RX V1)<br />
<br />
{| class="seggertable"<br />
|-<br />
! # !! Status of LED !! Meaning<br />
|-<br />
| 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.<br />
|-<br />
| 1 || GREEN<br>constant || Connect to target and perform init sequence.<br />
|-<br />
| 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><br />
|-<br />
| 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.<br />
|-<br />
|}<br />
<br />
==== File access mode ====<br />
<br />
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".<br />
If you are using a self-powered Flasher such as the Flasher Portable Plus, the Flasher must be turned off before connecting it.<br />
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.<br />
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>.<br />
<br />
[[File:flasher_mode_msd.gif]]<br />
<br />
<tt>FLASHER.CFG</tt> contains the configuration settings for programming the target device and <tt>FLASHER.DAT</tt> contains the data to be programmed.<br />
<tt>FLASHER.LOG</tt> contains all logging information about the commands, performed in stand-alone mode.<br />
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><br />
<br />
Currently, J-Flash does not support to configure Flasher for automated serial number programming.<br><br />
<br />
If you want to configure multiple Flasher for the same target you do not have to use J-Flash all the time.<br />
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".<br />
<br />
=== Setting up Flasher for stand-alone mode ===<br />
<br />
In order to set up Flasher for the stand-alone mode it needs to be configured once using the J-Flash software.<br />
For more information about J-Flash, please refer to the ''J-Flash User Guide''.<br><br />
<br />
After starting J-Flash, open the appropriate J-Flash project for the target Flasher shall be configured for, by selecting '''File''' -> '''Open Project'''.<br />
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><br />
<br />
After the appropriate project has been opened / created, the data file which shall be programmed needs to be loaded, by selecting '''File''' -> '''Open'''.<br />
After this J-Flash should look like in the screenshot below.<br />
<br />
[[File:jflash_projectfile_datafile.gif]]<br />
<br />
Before downloading the configuration (project) and program data (data file) to Flasher, the connection type (USB/IP) needs to be selected in the project.<br />
These settings are also saved on a per-project basis, so this also only needs to be setup once per J-Flash project.<br />
The connection dialog is opened by clicking '''Options''' -> '''Project settings''' -> '''General'''.<br />
<br />
[[File:jflash_connection_dialog.gif]]<br />
<br />
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.<br />
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.<br />
The user then can simply select the Flash he wants to download the configuration to.<br />
<br />
[[File:EmuSelectionDialog.gif]]<br />
<br />
In order to download the configuration and program data to the Flasher, simply select '''File''' -> '''Download config & data file to Flasher'''.<br />
<br />
[[File:jflash_download_to_emul.gif]]<br />
<br />
The J-Flash log window indicates that the download to the emulator was successful.<br />
<br />
[[File:jflash_download_to_emu_succ.gif]]<br />
<br />
From now on, Flasher can be used in stand-alone mode (without host PC interaction) for stand-alone programming.<br />
<br />
==== Preparing for stand-alone operation manually ====<br />
<br />
As an alternative, J-Flash can also be used to save config and data file to a hard drive.<br><br />
<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,<br />
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.<br />
<br />
'''Creating config and data files'''<br><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><br />
<br />
For some devices, additional files (*.PEX) are needed.<br />
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.<br />
<br />
'''About *.PEX files'''<br><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,<br />
the following needs to be taken care of:<br><br />
<br />
For some devices, special connect, reset etc. sequences are necessary which are stored in so-called *.PEX files on the Flasher.<br><br />
<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><br />
<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><br />
The *.PEX files need to be placed in a subdirectory with the same name as the corresponding *.cfg file.<br />
J-Flash creates a directory with the correct name automatically when a config file is created.<br><br />
<br />
Example:<br><br />
<br />
MyConf0 is a project for a device that requires a *.PEX file for connect.<br><br />
MyConf1 is a project for a device that requires no *.PEX file at all.<br />
<br />
[[File:PEX_File_Flasher.png]]<br />
<br />
=== Universal Flash Loader mode ===<br />
<br />
As an alternative to the stand-alone mode, configured via J-Flash, there is the Universal Flash Loader mode.<br />
While the normal stand-alone mode relies on using the debug interface of the device, the Universal Flash Loader<br />
mode uses device or vendor specific programming interfaces and protocols and therefore it is independent of the<br />
CPU core.<br><br />
<br />
The Universal Flash Loader is available for the following Flasher models:<br />
* Flasher PRO<br />
* Flasher Compact<br />
* Flasher Portable PLUS<br />
<br />
For some of the supported devices, SEGGER offers specific adapters.<br />
<br />
==== Preparing manually ====<br />
<br />
The Universal Flash Loader uses an configuration file (*.UNI), a device specific flash programming algorithm (*.PEX) and a data file (*.DAT).<br />
<br />
===== Configuration =====<br />
<br />
The configuration file basically is split into three parts.<br />
The first part, the section [DEVICE], controls the generic behavior of the Universal Flash Loader.<br />
It specifies which protocol driver and data file to use. It allows enabling and configuring target power<br />
and it defines which actions to perform.<br />
The second part consists of one or more [BANKx] sections, which contain information about the memories.<br />
The third part, the section [CONFIG], includes configuration settings for the protocol driver.<br><br />
<br />
An .UNI file might look as follows:<br><br />
<br />
<source lang="c"><br />
[OPTIONS]<br />
TargetPower = "0"<br />
ChipErase = "0"<br />
<br />
[TASKS]<br />
CheckBlank = "1"<br />
Erase = "1"<br />
Program = "1"<br />
Verify = "1"<br />
Secure = "1"<br />
<br />
[DEVICE]<br />
Algo = "RL78.PEX"<br />
Data = "ALL_6k.dat"<br />
<br />
[BANK0]<br />
; Code Flash<br />
Base = "0x00000000"<br />
Size = "0x00004000"<br />
Sect = "0x00000400"<br />
<br />
[BANK1]<br />
; Data Flash<br />
Base = "0x000F1000"<br />
Size = "0x00000800"<br />
Sect = "0x00000400"<br />
<br />
[CONFIG]<br />
BaudRate = "1000000"<br />
ClearConfigOnConnect = "0x00"<br />
Security = "0xFF"<br />
ShieldStart = "0x0000"<br />
ShieldEnd = "0x000F"<br />
</source><br />
<br />
'''[OPTIONS]'''<br><br />
'''TargetPower'''<br><br />
If set to a value >0, power is applied to the target.<br />
The value defines the delay (in ms) after enabling the target power supply and before starting to communicate with the target.<br />
<br />
'''ChipErase'''<br><br />
If set to 1, the chip erase function is called for erasing the chip.<br><br />
{{Note|1=Do not enable this setting if the flash programming algorithm does not support chip erase.}}<br />
<br />
'''[TASKS]'''<br><br />
'''CheckBlank'''<br><br />
Defines if a blank check should be performed before erasing a sector.<br />
<br />
'''Erase'''<br><br />
Defines if the sector should be erased before programming.<br />
<br />
'''Program'''<br><br />
Defines if the sector should be programmed.<br />
<br />
'''Verify'''<br><br />
Defines if the sector should be verified after programming.<br />
<br />
'''Secure'''<br><br />
Defines if the device should be secured or protected against read-out after verifying.<br />
<br />
'''[DEVICE]'''<br><br />
'''Algo'''<br><br />
File name of the flash programming algorithm. This file is provided by SEGGER and will typically support a series of devices.<br />
<br />
'''Data'''<br><br />
File name of the data file to program. The Flasher only supports the Flasher .dat file format.<br />
Flasher .dat files can be generated by J-Flash or Universal Flash Loader and offer high performance together with high flexibility.<br />
<br />
'''[BANKx]'''<br><br />
x blocks with configuration data for the flash banks. All three parameters (Base, Size and Sect) are mandatory.<br />
<br />
'''Base'''<br><br />
Base address of the flash bank.<br />
<br />
'''Size'''<br><br />
Total size of the flash bank.<br />
<br />
'''Sect'''<br><br />
Sector size of the flash bank.<br />
<br />
'''[CONFIG]'''<br><br />
This section includes specific configuration data for the flash programming algorithm.<br><br />
There are no general parameters.<br />
<br />
{{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. }}<br />
<br />
==== Preparing using the PC utility ====<br />
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.<br />
<br />
[[File:Universal Flash Loader.png]]<br />
<br />
The Universal Flash Loader Configurator comes with a large list of devices and flash programming algorithms. If you are going to<br />
use a device from one of the supported families which currently is not available in the utility, feel free to contact the support.<br />
<br />
=== Multiple File Support ===<br />
<br />
It is also possible to have multiple data files and config files on Flasher, to make Flasher more easy to use in production environment.<br />
To choose the correct configuration file and data file pair, a <tt>FLASHER.INI</tt> file is used.<br />
This init file contains a <tt>[FILES]</tt> section which describes which configuration file and which data file should be used for programming.<br />
A sample content of a FLASHER.INI file is shown below:<br><br />
<br />
<source><br />
[FILES]<br />
DataFile = "Flasher1.dat"<br />
ConfigFile = "Flasher1.cfg"<br />
</source><br />
<br />
Using this method all configuration files and data files which are used in the production only have to be downloaded once.<br />
From there on a configuration file / data file pair can be switched by simply replacing the <tt>FLASHER.INI</tt> by a new one,<br />
which contains the new descriptions for the configuration file and data file. The <tt>FLASHER.INI</tt> can be replaced in two ways:<br />
<ol><br />
<li>Boot Flasher in file access mode in order to replace the <tt>FLASHER.INI</tt></li><br />
<li><br />
If Flasher is already integrated into the production line, runs in stand-alone mode and can not be booted in other mode:<br />
Use the file I/O commands provided by the ASCII interface of Flasher, to replace the <tt>FLASHER.INI</tt>.<br />
For more information about the file I/O commands, please refer to [[#File I/O commands | File I/O commands]].<br />
</li><br />
</ol><br />
{{Note|1=Flasher supports 8.3 filenames only (8 characters filename, 3 characters file extension). Using longer filenames may result in incorrect operation.}}<br />
<br />
==== Flasher Portable specifics ====<br />
<br />
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><br />
<br />
Which config / data file pair is used for which image selection position is determined by the contents of the FLASHER.INI.<br />
For this, the FLASHER.INI contents in the <tt>[FILES]</tt> section have been extended.<br />
The sample below shows how to enable the user to select between four different images on the Flasher portable via the select / arrow button:<br />
<br />
<source><br />
[FILES]<br />
DataFile = "First.dat"<br />
ConfigFile = "First.cfg"<br />
DataFile1 = "Second.dat"<br />
ConfigFile1 = "Second.cfg"<br />
DataFile2 = "Third.dat"<br />
ConfigFile2 = "Third.cfg"<br />
DataFile3 = "Fourth.dat"<br />
ConfigFile3 = "Fourth.cfg"<br />
</source><br />
<br />
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.<br />
From there on, switching between the files can be done by simply using the selection button of Flasher Portable.<br />
<br />
===== Example =====<br />
<br />
1 Target, 2 Datafiles (e.g. boot loader und application) --> same configuration file (*.CFG) but different data files (*.DAT) should be used.<br><br />
<br />
* Open pre-configured J-Flash project<br />
* File -> Save Flasher config file ... (DEFAULT.CFG)<br />
* Open data file 1 (boot loader)<br />
* File -> Save Flasher data file ... (BOOT.DAT)<br />
* Open data file 2 (application)<br />
* File -> Save Flasher data file ... (APP.DAT)<br />
* Create the a FLASHER.INI file (content see below)<br />
* Connect the Flasher in file access mode to the PC<br />
* Copy DEFAULT.CFG, BOOT.DAT, APP.DAT and FLASHER.INI on the Flasher<br />
<br />
FLASHER.INI content:<br><br />
<br />
<source><br />
[FILES]<br />
DataFile = "BOOT.DAT"<br />
ConfigFile = "DEFAULT.CFG"<br />
DataFile1 = "APP.DAT"<br />
ConfigFile1 = "DEFAULT.CFG"<br />
</source><br />
<br />
==== Flasher Portable PLUS specifics ====<br />
<br />
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><br />
<br />
Which config / data file pair is used for which image selection position is determined by the contents of the FLASHER.INI.<br />
For this, the FLASHER.INI may contain several <tt>[BATCH]</tt> sections.<br />
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:<br />
<br />
<source><br />
[BATCH]<br />
DataFile = "First.dat"<br />
ConfigFile = "First.cfg"<br />
[BATCH1]<br />
DataFile = "Second.dat"<br />
ConfigFile = "Second.cfg"<br />
[BATCH2]<br />
DataFile = "Third.dat"<br />
ConfigFile = "Third.cfg"<br />
[BATCH7]<br />
DataFile = "Proj_8.dat"<br />
ConfigFile = "Proj_8.cfg"<br />
[BATCH15]<br />
DataFile = "Proj_16.dat"<br />
ConfigFile = "Proj_16.cfg"<br />
</source><br />
<br />
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.<br />
From there on, switching between the files can be done by simply using the selection button of Flasher Portable PLUS.<br />
<br />
Please also consider the chapter [[#Batch Programming in stand-alone mode | Batch Programming in stand-alone mode]].<br />
<br />
{{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.}}<br />
{{Note|1=You may have gaps in the list. The missing entries will be skipped when selecting the next configuration.}}<br />
{{Note|1=The <tt>[Files]</tt> section is supported by the Flasher Portable PLUS, too. But the number of configuration is limited to four.}}<br />
<br />
===== Example =====<br />
<br />
1 Target, 2 Datafiles (e.g. boot loader und application) --> same configuration file (*.CFG) but different data files (*.DAT) should be used.<br><br />
<br />
* Open pre-configured J-Flash project<br />
* File -> Save Flasher config file ... (DEFAULT.CFG)<br />
* Open data file 1 (boot loader)<br />
* File -> Save Flasher data file ... (BOOT.DAT)<br />
* Open data file 2 (application)<br />
* File -> Save Flasher data file ... (APP.DAT)<br />
* Create the a FLASHER.INI file (content see below)<br />
* Connect the Flasher in file access mode to the PC<br />
* Copy DEFAULT.CFG, BOOT.DAT, APP.DAT and FLASHER.INI on the Flasher<br />
<br />
FLASHER.INI content:<br><br />
<br />
<source><br />
[BATCH]<br />
DataFile = "BOOT.DAT"<br />
ConfigFile = "DEFAULT.CFG"<br />
DisplayName = "Bootloader"<br />
[BATCH1]<br />
DataFile = "APP.DAT"<br />
ConfigFile = "DEFAULT.CFG"<br />
DisplayName = "Application"<br />
[BATCH2]<br />
DataFile = "BOOT.DAT"<br />
ConfigFile = "DEFAULT.CFG"<br />
DataFile1 = "APP.DAT"<br />
ConfigFile1 = "DEFAULT.CFG"<br />
DisplayName = "BL and App"<br />
</source><br />
<br />
=== Custom labels ===<br />
<br />
Flasher supports to assign custom labels to configurations. This allows to specify easy to remember names for configurations that are stored on the Flasher.<br />
<br />
==== Hardware and software requirements ====<br />
This feature is supported by the following models:<br />
* Flasher Portable PLUS<br />
<br />
This feature is supported since V6.30e of the software package and firmware<br />
<br />
==== Assigning labels ====<br />
The configuration and data file pairs are specified in the <tt>FLASHER.INI</tt> file:<br />
<source><br />
[FILES]<br />
DataFile = "IMAGE0.dat"<br />
ConfigFile = "IMAGE0.cfg"<br />
DataFile1 = "IMAGE1.dat"<br />
ConfigFile1 = "IMAGE1.cfg"<br />
</source><br />
<br />
By default, Flasher will show the names of the configuration and data file:<br />
[[File:FW1_smartwatch_nolabel.png]]<br />
[[File:FW2_smart_meter_nolabel.png]]<br />
<br />
By adding <tt>DisplayName</tt>, <tt>DisplayName1</tt>, ... keys to the <tt>FLASHER.INI</tt>, a custom label can be shown instead:<br />
<source><br />
[FILES]<br />
DisplayName = "FW smartwatch"<br />
DataFile = "IMAGE0.dat"<br />
ConfigFile = "IMAGE0.cfg"<br />
DisplayName1 = "FW smart meter"<br />
DataFile1 = "IMAGE1.dat"<br />
ConfigFile1 = "IMAGE1.cfg"<br />
</source><br />
<br />
The images will now be shown as follows:<br />
[[File:FW1_smartwatch_label.png]]<br />
[[File:FW2_smart_meter_label.png]]<br />
<br />
==== Considerations ====<br />
* 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.<br />
<br />
=== Programming multiple targets ===<br />
<br />
It is possible to program multiple targets which are located in a JTAG chain.<br />
The targets will be programmed each with a configuration and a data file.<br />
The configuration for the desired target must be selected before it can be programmed,<br />
this can be done with the <tt>#SELECT</tt> command.<br />
For more information how to use the <tt>#SELECT</tt> command please refer to Chapter "3.3.5 ''Commands to Flasher''".<br />
<br />
'''Example'''<br><br />
Three devices should be programmed.<br><br />
<br />
JTAG Chain: ''TDI'' --> ''Device2'' --> ''Device1'' --> ''Device0'' --> ''TDO''<br><br />
<br />
Three configurations would be stored on the flasher:<br><br />
<br />
Config 0: Configured to program Device0 (DEVICE0.CFG, DEVICE0.DAT)<br><br />
Config 1: Configured to program Device1 (DEVICE1.CFG, DEVICE1.DAT)<br><br />
Config 2: Configured to program Device2 (DEVICE2.CFG, DEVICE2.DAT)<br><br />
<br />
Selection and programming of the target will be done via the ASCII interface:<br><br />
<br />
<source><br />
#SELECT DEVICE0<br />
#AUTO<br />
#SELECT DEVICE1<br />
#AUTO<br />
#SELECT DEVICE2<br />
#AUTO<br />
</source><br />
<br />
==== Programming multiple targets with J-Flash ====<br />
<br />
Programming multiple targets can also be done via J-Flash using the command line interface.<br />
For this each target must be handled with its own project file.<br />
<br />
'''Example'''<br><br />
<br />
<source><br />
JFlash.exe -openproj"Device0.jflash" -open"Device0.hex" -auto -exit<br />
JFlash.exe -openproj"Device1.jflash" -open"Device1.hex" -auto -exit<br />
JFlash.exe -openproj"Device2.jflash" -open"Device2.hex" -auto -exit<br />
</source><br />
<br />
=== Batch Programming in stand-alone mode ===<br />
<br />
Batch programming allows to execute different stand-alone mode jobs in batch to be executed in immediate succession, without any user interaction in between.<br />
This can be used for example to program multiple targets in a JTAG-Chain or multiple data files to a target.<br><br />
A batch may contains an unlimited number of configurations which consist of a data file (*.DAT) and config file (*.CFG).<br />
For further information regarding config and data files, please refer to [[#Preparing for stand-alone operation manually | Preparing for stand-alone operation manually]].<br><br />
In order to specify the batch jobs, a FLASHER.INI file is used.<br />
This init file contains a [BATCH] section which describes which configuration pairs (*.DAT and *.CFG file) should be used for each batch job.<br />
A sample content of a FLASHER.INI file is shown below:<br><br />
<br />
<source><br />
[BATCH]<br />
DataFile = "Flasher0.dat"<br />
ConfigFile = "Flasher0.cfg"<br />
DataFile1 = "Flasher1.dat"<br />
ConfigFile1 = "Flasher1.cfg"<br />
</source><br />
<br />
[[File:Batch_Jobs.bmp]]<br />
<br />
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.<br />
<br />
<br />
[[File:Batch_Programming.bmp]]<br />
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<br />
currently executed action.<br />
<br />
<br />
[[File:Batch_Result.bmp]]<br />
The result of the programming will be shown on the screen after finishing all jobs.<br />
<br />
<br />
Creating / Replacing of the FLASHER.INI file can done in two ways:<br><br />
<ol><br />
<li>Boot Flasher in file access mode in order to replace the FLASHER.INI</li><br />
<li><br />
If Flasher is already integrated into the production line, runs in stand-alone mode and can not be booted in other mode:<br />
Use the file I/O commands provided by the ASCII interface of Flasher, to replace the FLASHER.INI .<br />
For more information about the file I/O commands, please refer to [[#File I/O commands | File I/O commands]].<br />
In case of an error occurred during execution, the Flasher terminates the entire batch processing.<br />
</li><br />
</ol><br />
{{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.}}<br />
{{Note|1=Flasher supports 8.3 filenames only (8 characters filename, 3 characters file extension). Using longer filenames may result in incorrect operation.}}<br />
<br />
==== Flasher Portable specifics ====<br />
<br />
Flasher Portable allows to choose between four different batches during runtime by using the select/arrow button on the front of Flasher Portable.<br />
Which batch configuration is used for which image selection position is specified in the FLASHER.INI.<br />
For this, the FLASHER.INI contents in the [BATCH] section have been extended.<br />
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><br />
<br />
<source><br />
[BATCH]<br />
DataFile = "Flasher0.dat"<br />
ConfigFile = "Flasher0.cfg"<br />
DataFile1 = "Flasher1.dat"<br />
ConfigFile1 = "Flasher1.cfg"<br />
DataFile2 = "Flasher2.dat"<br />
ConfigFile2 = "Flasher2.cfg"<br />
[BATCH1]<br />
DataFile = "TEST.dat"<br />
ConfigFile = "Test.cfg"<br />
[BATCH2]<br />
DataFile = "VALIDATE.dat"<br />
ConfigFile = "Flasher0.cfg"<br />
</source><br />
<br />
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.<br />
From there on, switching between the batches can be done by simply using the selection button of Flasher Portable.<br />
<br />
<br />
<br />
==== Examples ====<br />
<br />
'''Example 1:''' Programming two Data files to the same target<br><br />
<br />
* Open your J-Flash project.<br />
* Use File -> Save Flasher config file... to save the .CFG file (in this example: STM32F4.CFG).<br />
* Select the first binary and use File -> Save Flasher Data file... to save the first .DAT file (in this example: DATA0.DAT).<br />
* Select the second binary and use File -> Save Flasher Data file... to save the second data file .DAT file (in this example: DATA1.DAT).<br />
* Copy the Files to the Flasher e.g. by using file access mode.<br />
* Create a FLASHER.INI file in the root directory of the Flasher.<br />
* Exemplary content of FLASHER.INI:<br><br />
<source><br />
[BATCH]<br />
DataFile = "DATA0.dat"<br />
ConfigFile = "emPower.cfg"<br />
DataFile1 = "DATA1.dat"<br />
ConfigFile1 = "emPower.cfg"<br />
</source><br />
<br />
<br />
'''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><br />
Example scenario: 2 Devices in a JTAG chain, a STM32F1 and a STM32F4. <br><br />
<br />
* Follow the same as described before and additionally:<br />
* Create one project file per target (and create a .CFG file of each one).<br />
* Make sure each project file is configured correctly, especially the JTAG-Chain position (See UM8003 "J-Flash" for more detailed info).<br />
* Exemplary content of FLASHER.INI:<br><br />
<source><br />
[BATCH]<br />
DataFile = "F1DATA.dat"<br />
ConfigFile = "STM32F1.cfg"<br />
DataFile1 = "F4DATA0.dat"<br />
ConfigFile1 = "STM32F4.cfg"<br />
DataFile2 = "F4DATA1.dat"<br />
ConfigFile2 = "STM32F4.cfg"<br />
</source><br />
<br />
'''Example 3:''' Using multiple Batch sections with Flasher Portable.<br><br />
Example scenario: 2 Devices in a JTAG chain, a STM32F1 and a STM32F4.<br><br />
Selection 1 will program the STM32F1 target.<br><br />
Selection 2 will program the STM32F4 target using "F4DATA0.dat".<br><br />
Selection 3 will program the STM32F4 target using "F4DATA1.dat".<br><br />
Selection 4 will execute 1, 2 and 3 in sequence.<br><br />
* Exemplary content of FLASHER.INI:<br><br />
<source><br />
[BATCH]<br />
DataFile = "F1DATA.dat"<br />
ConfigFile = "STM32F1.cfg"<br />
[BATCH1]<br />
DataFile = "F4DATA0.dat"<br />
ConfigFile = "STM32F4.cfg"<br />
[BATCH2]<br />
DataFile = "F4DATA1.dat"<br />
ConfigFile = "STM32F4.cfg"<br />
[BATCH3]<br />
DataFile = "F1DATA.dat"<br />
ConfigFile = "STM32F1.cfg"<br />
DataFile1 = "F4DATA0.dat"<br />
ConfigFile1 = "STM32F4.cfg"<br />
DataFile2 = "F4DATA1.dat"<br />
ConfigFile2 = "STM32F4.cfg"<br />
</source><br />
<br />
=== Serial number programming ===<br />
<br />
Flasher supports programming of serial numbers. In order to use the serial number programming feature,<br />
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><br />
<br />
In general, Flasher supports two ways of programming a serial number into the target:<br><br />
<ol><br />
<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><br />
<li><br />
Programming custom serial numbers from a serial number list file.<br />
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.<br />
Serial number list file needs to be specified and created by user.<br />
</li><br />
</ol><br />
In the following some generic information how to setup Flasher & the J-Flash project for serial number programming are given.<br><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.}}<br />
{{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.}}<br />
<br />
==== Serial number settings ====<br />
<br />
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.<br />
This is done by enabling the '''Program serial number''' option as shown in the screenshot and table below:<br><br />
<br />
[[File:SN_Sample_JFlashSettings.gif]]<br />
<br />
{| class="seggertable"<br />
|-<br />
! Setting !! Meaning<br />
|-<br />
| <tt>Address</tt> || The address the serial number should be programmed at.<br />
|-<br />
| <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.<br />
|-<br />
| <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.<br />
|-<br />
| <tt>Increment</tt> || Specifies how much <tt>Next SN</tt> is incremented.<br />
|-<br />
|}<br />
<br />
==== Serial number file ====<br />
<br />
When selecting '''File -> Download serial number file to Flasher''', J-Flash will create a Serial number file named as <tt><JFlashProjectName>_Serial.txt</tt>.<br />
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.<br />
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.<br />
<br />
==== Serial number list file ====<br />
<br />
In order to program custom serial numbers which can not be covered by the standard serial number scheme provided by J-Flash<br />
(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.<br />
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.<br />
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><br />
* One serial number per line<br />
* Each byte of the serial number is described by two hexadecimal digits.<br />
<br />
'''Example'''<br><br />
A 8-byte serial number should be programmed at address 0x08000000.<br><br />
<br />
It should be programmed as follows in the memory:<br><br />
<br />
<tt>0x08000000: 0x01 0x02 0x03 0x04 0x55 0x66 0x77 0x88</tt><br><br />
<br />
The serial number list file should look as follows:<br><br />
<br />
<tt>0102030455667788</tt><br />
<br />
[[File:SN_SNList.gif]]<br />
<br />
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><br />
<br />
Which line Flasher will read at the next programming cycle, is configured via the <tt>Next SN</tt> option in J-Flash.<br />
For more information, please refer to [[#Serial number settings | Serial number settings]].<br />
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><br />
<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.}}<br />
{{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.}}<br />
<br />
==== Programming process ====<br />
<br />
Flasher will increment the serial number in SERIAL.TXT by the value defined in <tt>Increment</tt>, after each successful programming cycle.<br><br />
<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><br />
<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.<br />
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.}}<br />
<br />
==== Downloading serial number files to Flasher ====<br />
<br />
Downloading the serial number files needs to be done explicitly by selecting '''File-> Download serial number file to Flasher'''.<br />
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.<br />
<br />
==== Sample setup ====<br />
<br />
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.<br />
<br />
'''Defining serial number address, length and start value'''<br><br />
In the J-Flash project the following needs to be defined:<br><br />
* <tt>Address</tt> is 0x08001000<br />
* <tt>Next SN</tt> is 1234567<br />
* <tt>Increment</tt> is 1<br />
* <tt>Len</tt> is 4 (bytes)<br />
<br />
[[File:SN_Sample_JFlashSettings.gif]]<br />
<br />
'''Downloading configuration, data and serial number to Flasher.'''<br><br />
After setting up the rest of the configuration (Target interface etc.) and selecting an appropriate data file, the configuration,<br />
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><br />
<br />
[[File:SN_Sample_DownloadToFlasher.gif]]<br />
<br />
After downloading the serial number to Flasher, J-Flash also created the <tt><JFlashProjectName>_Serial.txt</tt>.<br />
<br />
[[File:SN_Sample_SerialFileCreated.gif]]<br />
<br />
Now Flasher is prepared to program the 8-byte serial number.<br />
<br />
=== Patch file support ===<br />
<br />
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.<br />
Before starting programming process in stand-alone mode, Flasher will look for a file named <tt>Patches.txt</tt> being present on the Flasher.<br />
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><br />
<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.<br />
<br />
'''Syntax'''<br><br />
<!-- LG xxxxxxxxx '==' is shown as '=', so instead use '= ='--><br />
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><br />
<br />
<tt><NumPatches>,<Addr>,<NumBytes>:<nowiki><Data></nowiki>,<Addr>,<NumBytes>:<nowiki><Data></nowiki>,<Addr>,</tt><br><br />
<tt><NumBytes>:<nowiki><Data></nowiki>,<Addr>,<NumBytes>:<nowiki><Data></nowiki>\r\n</tt><br><br />
<br />
Find below a table which describes each parameter.<br><br />
{| class="seggertable"<br />
|-<br />
! Parameter !! Description<br />
|-<br />
| <tt><NumPatches></tt> || Describes the number of patches in this patch line. Max. value is 4.<br />
|-<br />
| <tt><Addr></tt> || Describes the address to be patched. Value is expected in hex.<br />
|-<br />
| <tt><NumBytes></tt> || Number of bytes for the current patch. Max. value is 20h (32 in decimal). Value is expected in hex.<br />
|-<br />
| <tt><nowiki><Data></nowiki></tt> || Describes the data to be patched. <nowiki><Data></nowiki> is always expected as 2 hexadecimal characters per byte.<br />
|-<br />
|}<br />
<br />
{{Note|1=All values are expected in hexadecimal format (hex).<br><br />
<nowiki><Data></nowiki> section is always preceded by ":", not ",".}}<br />
<br />
'''Example'''<br><br />
Below is an example patch.<br><br />
<br />
<source><br />
1,18,4:01020304\r\n<br />
</source><br />
<br />
Patching the following data:<br />
<br />
[[File:data_before.png]]<br />
<br />
with the example patch will result in the following data:<br />
<br />
[[File:data_afterwards.png]]<br />
<br />
Please note that as mentioned earlier patching undefined memory locations will be ignored.<br><br />
Applying the example patch to the following data:<br />
<br />
[[File:undefined_mem_before.png]]<br />
<br />
Causes no data to be patched, as can be seen in the following image:<br />
<br />
[[File:undefined_mem_no_token.png]]<br />
<br />
Therefore it is necessary to first write placeholder data to the memory locations which are supposed to be patched.<br><br />
An example for such a placeholder can be seen here:<br />
<br />
[[File:undefined_mem_token.png]]<br />
<br />
Please note that the actual data inside the placeholder does not matter to the Flasher,<br />
because it is overwritten during patching.<br><br />
Applying the example patch will now work as expected:<br />
<br />
[[File:undefined_mem_after.png]]<br />
<br />
'''Single patch via RS232'''<br><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><br />
<br />
Send the <tt>#AUTO PATCH <NumPatches>,<Addr>,<NumBytes>:<nowiki><Data></nowiki></tt><br><br />
<br />
command via Flasher ASCII interface. The parameters have the same function as described in the table above.<br />
<br />
==== Newline encoding ====<br />
<br />
In general, for all patch files, init files etc. Flasher supports both newline encodings:<br><br />
<br />
* Windows: \r\n<br />
* Unix/Mac: \n<br />
<br />
All parser functionality etc. are written to be independent from the host operating system.<br />
<br />
=== Limiting the number of programming cycles ===<br />
<br />
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.<br />
To make use of this feature, a file called <tt>Cntdown.txt</tt> needs to be placed on the Flasher.<br />
This file simply contains a decimal number (32-bit unsigned integer) that describes how many programming cycles can be performed with the current setup.<br />
<br />
[[File:CntdownTxtContent.jpg]]<br />
<br />
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><br />
<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>.}}<br />
<br />
==== Changed fail/error LED indicator behavior ====<br />
<br />
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><br />
<br />
* The red error/fail LED will lit for 1 second<br />
* After this, it will blink/toggle x times @ 5 Hz, indicating the number of programming cycles left. (blinking 5 times for 5 cycles left, ...)<br />
<br />
==== Required Flasher hardware version for Cntdown.txt support ====<br />
<br />
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><br />
<br />
* 1621xxxxx (Flasher ARM V2)<br />
* 1630xxxxx (Flasher ARM V3)<br />
* 4210xxxxx (Flasher PPC V1)<br />
* 4110xxxxx (Flasher RX V1)<br />
<br />
All other models / hardware versions support limiting of programming cycles.<br />
<br />
=== Authorized flashing ===<br />
<br />
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.<br />
without the possibility to read out the Flasher contents via file access mode, FILE I/O functionality (J-Link Commander) or RS232 commands.<br />
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.<br />
<br />
==== Creating / Adding the secure area ====<br />
<br />
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.<br />
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.<br />
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><br />
<br />
[[File:CreateSecArea.jpg]]<br />
<br />
The following secure area related commands are available in J-Link Commander:<br><br />
<br />
* securearea create<br />
* securearea remove<br />
<br />
{{Note|1=When creating or removing the <tt>secure area</tt>, all configuration and data files being stored on the Flasher, are lost.<br />
Please make sure that they are not needed anymore, before adding / removing the security area.}}<br />
<br />
==== Moving files to the secure area ====<br />
<br />
Before moving configuration + data to the <tt>secure area</tt>, proper functionality of the setup should be tested in stand-alone mode.<br />
Once the setup is working as expected, do the following, to move the configuration + data into the <tt>secure area</tt>:<br><br />
<br />
* Start Flasher in file access mode (For more info, please refer to: [[#file access mode | file access mode]])<br />
<br />
[[File:FilesBeforeSecure.png]]<br />
<br />
* Create a folder "<tt>_SECURE</tt>"<br />
* Move all files that shall be moved to the <tt>secure area</tt>, into this folder<br />
<br />
[[File:FilesAfterSecure.png]]<br />
<br />
* 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.<br />
* Now Flasher can be used in stand-alone mode, as normal, but the files cannot be read back by the user / operator.<br />
<br />
==== Considerations to be taken when using the secure area ====<br />
<br />
When using the <tt>secure area</tt>, some things need to be considered:<br><br />
<br />
* All features like multiple file support, patch file support etc. can also be used when operating from the <tt>secure area</tt>.<br />
* 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>.<br />
* 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>.<br />
* 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.<br />
<br />
==== Required Flasher hardware version ====<br />
<br />
Older Flasher models do not support authorized flashing. The Flashers with the following serial number ranges do not support authorized flashing:<br><br />
<br />
* 1621xxxxx (Flasher ARM V2)<br />
* 1630xxxxx (Flasher ARM V3)<br />
* 4210xxxxx (Flasher PPC V1)<br />
* 4110xxxxx (Flasher RX V1)<br />
<br />
All other models / hardware versions support authorized flashing.<br />
<br />
=== Target interfaces ===<br />
<br />
The table below shows the supported target interfaces of the different Flasher models.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! Supported interfaces<br />
|-<br />
| Flasher PRO || JTAG, SWD<br />
|-<br />
| Flasher Compact || JTAG, SWD<br />
|-<br />
| Flasher ARM || JTAG, SWD<br />
|-<br />
| Flasher RX || JTAG<br />
|-<br />
| Flasher PPC || JTAG<br />
|-<br />
|}<br />
<br />
For more information about the target interfaces itself, please refer to:<br><br />
<br />
* ''UM08001, chapter "Working with J-Link and J-Trace", section "JTAG interface"''<br />
* ''UM08001, chapter "Working with J-Link and J-Trace", section "SWD interface"''<br />
<br />
=== Supported architectures ===<br />
<br />
Flasher supports programming of the internal flash of a large number of different microcontrollers.<br />
The number of supported devices is steadily growing. You can always find the latest list of supported devices on our website:<br><br />
<br />
''http://www.segger.com/supported-devices.html''<br />
<br />
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.<br />
Also the existence of the device may have confidential status, so it might not be mentioned as being supported in public releases yet.<br />
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.<br />
<br />
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).<br />
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.<br />
<br />
If a device is not supported, you can always contact us. We will be happy to provide you with an offer.<br />
<br />
==== External flashes ====<br />
<br />
In general our Flashers support programming of external flashes listed below:<br>(Can differ between Flasher models and hardware versions)<br />
<br />
* parallel NOR flash<br />
* SPI / QSPI flash<br>(see: ''[[SPI_support_by_Flasher_models]]'')<br />
* NAND flash<br />
* I<sup>2</sup>C EEPROM/Flash<br />
* FRAM<br />
<br />
If the parallel NOR flash device which is used is not CFI-compliant you have to select the flash device in J-Flash explicitly,<br />
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''.<br />
<br />
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.<br />
The J-Flash software comes with sample projects for ''Open Flashloader''.<br />
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''<br />
{{Note|1=Complete Information about ''Open Flashloaders'' can be found in our Wiki:<br>''[[Open_Flashloader]]''}}<br />
<br />
==== Cores ====<br />
<br />
===== Flasher ARM =====<br />
<br />
Flasher ARM supports and has been tested with the following cores, but should work with any ARM7/9, Cortex-M0/M1/M3/M4 core.<br />
If you experience problems with a particular core, do not hesitate to contact Segger.<br><br />
<br />
* ARM7TDMI (Rev 1)<br />
* ARM7TDMI (Rev 3)<br />
* ARM7TDMI-S (Rev 4)<br />
* ARM920T<br />
* ARM922T<br />
* ARM926EJ-S<br />
* ARM946E-S<br />
* ARM966E-S<br />
* Cortex-M0<br />
* Cortex-M1<br />
* Cortex-M3<br />
* Cortex-M4<br />
<br />
===== Flasher RX =====<br />
<br />
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><br />
<br />
* RX610<br />
* RX621<br />
* RX62N<br />
* RX62T<br />
<br />
===== Flasher PPC =====<br />
<br />
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.<br />
<br />
* e200z0<br />
<br />
===== Flasher PRO/Compact/Portable PLUS =====<br />
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/''.<br />
<br />
=== Programming multiple targets in parallel ===<br />
<br />
To program multiple targets in parallel there are the following possibilities:<br />
* Using a Flasher gang, or<br />
* Using multiple Flashers, each connecting to one CPU.<br />
<br />
Devices for gang programming are:<br />
* Flasher ATE; suitable for programming up to 10 targets in parallel. Refer [https://www.segger.com/downloads/flasher/UM08039 ''Flasher ATE user manual (UM08035_FlasherATE.pdf)''].<br />
* Flasher Hub in conjunction with up to 24 Flasher (Compact). Refer ''Flasher Hub user manual (UM08039_FlasherHUB.pdf)''.<br />
<br />
When using multiple flashers, this can be done with the J-Flash production programming software.<br />
For further information, please refer to Chapter "''Command Line Interface''" Sub-chapter "''Programming multiple targets in parallel''" of the J-Flash User Guide (UM08003_JFlash.pdf) which is part of the Flasher Software and Documentation package. ''https://www.segger.com/downloads/flasher/#FlasherSoftwareAndDocumentationPack''<br />
<br />
=== Logfiles and Quality Management ===<br />
<br />
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:<br />
<source lang="c"><br />
SN: 1 - Failed<br />
SN: 1 - Failed<br />
SN: 2 - O.K. (931 ms)<br />
SN: 3 - O.K. (931 ms)<br />
SN: 4 - O.K. (933 ms)<br />
SN: 5 - O.K. (932 ms)<br />
</source><br />
If applicable, the logfile contains more detailed error messages. For example:<br />
<source lang="c"><br />
ERROR: Programming failed @ address 0x00000000 (1)<br />
ERROR: Cannot connect to CPU. Target interface speed too high?<br />
</source><br />
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:<br />
<source lang="c"><br />
Verify error config word area @<br />
config word<br />
config word read back<br />
Verify error flash area @<br />
data from file<br />
data read back<br />
</source><br />
{{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.}}<br />
<br />
== TCP Services ==<br />
This chapter describes the integrated TCP services.<br />
<br />
=== FTP Server ===<br />
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><br />
[[File:FTPServer.png]]<br />
<br />
==== Access data ====<br />
Anonymous access to the FTP server is limited to read-only access to the file system.<br><br />
For write access, special login credentials have to be used:<br><br />
<tt>Login: admin</tt><br><br />
<tt>Password: 1234</tt><br><br />
<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.<br />
It is not meant as a security feature.}}<br />
<br />
=== Web server ===<br />
<br />
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.<br />
For the network, the IP address settings can be changed and a nick name can be assigned to the device.<br><br />
<br />
Additionally, the web interface provides information about the status of the integrated operating system, the IP stack and the target hardware.<br />
<br />
== Remote control ==<br />
This chapter describes how to control Flasher via the 9-pin serial interface connector or via the integrated Telnet interface.<br />
<br />
=== Overview ===<br />
There are 3 ways to control Flasher operation:<br><br />
<br />
* Manual: Programming operation starts when pressing the button. The LEDs serve as visible indicators.<br />
* 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.<br />
* Terminal communication via RS232.<br />
* Terminal communication via Telnet.<br />
<br />
{{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.}}<br />
<br />
=== Handshake control ===<br />
<br />
Some Flasher models can be remote controlled by automated testers without the need of a connection to a PC.<br />
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><br />
<br />
The handshake control is available for the following Flashers:<br />
* Flasher ARM<br />
* Flasher PRO<br />
* Flasher Compact (via Flasher Hub only)<br />
<br />
The following diagrams show the internal remote control circuitry of Flasher:<br><br />
<br />
[[File:FlasherRemotecontrol.jpg]]<br />
{| class="seggertable"<br />
|-<br />
! Pin No. !! Function !! Description<br />
|-<br />
| 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.<br />
|-<br />
| 4 || BUSY || As soon as the "Auto" function is started, BUSY becomes active, which means that transistor is switched OFF.<br />
|-<br />
| 5 || GND || Common Signal ground.<br />
|-<br />
| 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.<br />
|-<br />
|}<br />
<br />
=== ASCII command interface ===<br />
<br />
==== Introduction ====<br />
<br />
Once set up using J-Flash, the Flasher can be driven by any application or just a simple terminal using ASCII commands.<br><br />
<br />
Every known command is acknowledged by the Flasher and then executed. After command execution, Flasher sends an ASCII reply message.<br><br />
<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}}<br />
<br />
==== General command and reply message format ====<br />
<br />
* Any ASCII command has to start with the start delimiter ''#''.<br />
* Any ASCII command has to end with simple carriage return ('\r', ASCII code 13).<br />
* Commands can be sent upper or lower case<br />
<br />
==== General usage ====<br />
<br />
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.<br />
<br />
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).<br />
<br />
==== Settings for ASCII interface via RS232 ====<br />
<br />
Flasher is driven via a RS232 serial port with the following interface settings:<br><br />
<br />
* 9600 baud<br />
* 8 data bits<br />
* no parity<br />
* 1 stop bit<br />
<br />
The baud rate can be changed by using the <tt>#BAUDRATE</tt> command.<br />
<br />
==== Settings for ASCII interface via Telnet ====<br />
<br />
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><br />
<br />
[[File:telnet_connection.gif]]<br />
<br />
==== Commands and replies ====<br />
<br />
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><br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| Commands to the Flasher<br />
|-<br />
| <tt>#BAUDRATE <Baudrate></tt><br />
|-<br />
| <tt>#AUTO</tt><br />
|-<br />
| <tt>#AUTO PATCH</tt><br />
|-<br />
| <tt>#AUTO NOINFO</tt><br />
|-<br />
| <tt>#CANCEL</tt><br />
|-<br />
| <tt>#ERASE</tt><br />
|-<br />
| <tt>#PROGRAM</tt><br />
|-<br />
| <tt>#RESULT</tt><br />
|-<br />
| <tt>#SELECT <Filename></tt><br />
|-<br />
| <tt>#START</tt><br />
|-<br />
| <tt>#STATUS</tt><br />
|-<br />
| <tt>#VERIFY</tt><br />
|-<br />
| <tt>#QUIT</tt><br />
|-<br />
| <tt>#VERBOSE <Level></tt><br />
|-<br />
!colspan="100%"| File I/O commands<br />
|-<br />
| <tt>#FCLOSE</tt><br />
|-<br />
| <tt>#FCRC</tt><br />
|-<br />
| <tt>#FDELETE <Filename></tt><br />
|-<br />
| <tt>#FOPEN <Filename></tt><br />
|-<br />
| <tt>#FREAD <Offset>,<NumBytes></tt><br />
|-<br />
| <tt>#FSIZE</tt><br />
|-<br />
| <tt>#FWRITE <Offset>,<NumBytes>:<nowiki><Data></nowiki></tt><br />
|-<br />
| <tt>#FLIST</tt><br />
|-<br />
| <tt>#MKDIR <Dirname></tt><br />
|-<br />
!colspan="100%"| SecureArea commands<br />
|-<br />
| <tt>#HASSECUREAREA</tt><br />
|-<br />
| <tt>#SECUREAREA <action></tt><br />
|-<br />
!colspan="100%"| Replies from the Flasher<br />
|-<br />
| <tt>#ACK</tt><br />
|-<br />
| <tt>#NACK</tt><br />
|-<br />
| <tt>#OK</tt><br />
|-<br />
| <tt>#OK:<NumBytes>:<nowiki><Data></nowiki></tt><br />
|-<br />
| <tt>#OK:<Size></tt><br />
|-<br />
| <tt>#STATUS:</tt><br />
|-<br />
| <tt>#DONE</tt><br />
|-<br />
| <tt>#ERRxxx</tt><br />
|-<br />
|}<br />
<br />
===== Commands to the Flasher =====<br />
<br />
'''#AUTO'''<br><br />
The <tt>#AUTO</tt> command behaves exactly as the start button or external remote control input.<br><br />
<br />
Usually, the following command sequence will be performed when receiving the <tt>#AUTO</tt> command:<br><br />
<br />
* The Flasher erases the target CPU (if not blank)<br />
* The Flasher programs the target CPU<br />
* The Flasher verifies the target CPU<br />
<br />
Depending on the settings chosen in the '''Production''' tab in J-Flash, this sequence can differ from the one shown above.<br><br />
<br />
Finally, Flasher responds with<br><br />
<br />
* <tt>#OK</tt> if no error occurred<br />
* <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.<br />
<br />
During execution of the <tt>#AUTO</tt> command, Flasher automatically sends "status" messages via RS232 to reflect the state of execution.<br />
Typically during execution of <tt>#AUTO</tt> command, Flasher will reply the following sequence of messages:<br><br />
<br />
<tt>#ACK</tt><br><br />
<tt>#STATUS:INITIALIZING</tt><br><br />
<tt>#STATUS:CONNECTING</tt><br><br />
<tt>#STATUS:UNLOCKING</tt><br><br />
<tt>#STATUS:ERASING</tt><br><br />
<tt>#STATUS:PROGRAMMING</tt><br><br />
<tt>#STATUS:VERIFYING</tt><br><br />
<tt>#OK (Total 13.993s, Erase 0.483s, Prog 9.183s, Verify 2.514s)</tt><br><br />
<br />
'''#AUTO PATCH'''<br><br />
The <tt>#AUTO</tt> PATCH command allows patching of the content of the data to be programmed.<br><br />
<br />
Flasher responds with<br><br />
<br />
* <tt>#OK</tt> if no error occurred<br />
* <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.<br />
<br />
For further information about the usage of the <tt>#AUTO PATCH</tt> command please refer to [[#Patch file support | Patch file support]].<br />
<br />
'''#AUTO NOINFO'''<br><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><br />
<br />
The command ends with <tt>#OK</tt> or <tt>#ERRxxx</tt><br />
<br />
'''#BAUDRATE <Baudrate>'''<br><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><br />
<br />
If this command succeeds, Flasher responds with:<br><br />
<br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<br />
Otherwise it will respond with one of the following error messages:<br><br />
<br />
<tt>#ERR255: Invalid parameters</tt><br><br />
<tt>or</tt><br><br />
<tt>#ERR255: Baudrate is not supported</tt><br><br />
<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.<br />
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.}}<br />
<br />
'''#CANCEL'''<br><br />
This command can be sent to abort a running program. It may take a while until the current program is actually canceled.<br><br />
<br />
Flasher will respond with:<br><br />
<br />
<tt>#ERR007:CANCELED.</tt><br><br />
<br />
'''#ERASE'''<br><br />
This command can be sent to erase all selected target flash sectors.<br><br />
<br />
Flasher will reply the following sequence of messages:<br><br />
<br />
<tt>#ACK</tt><br><br />
<tt>#STATUS:INITIALIZING</tt><br><br />
<tt>#STATUS:CONNECTING</tt><br><br />
<tt>#STATUS:UNLOCKING</tt><br><br />
<tt>#STATUS:ERASING</tt><br><br />
<tt>#OK (Total 0.893s, Erase 0.483s)</tt><br><br />
<br />
'''#PROGRAM'''<br><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.<br />
<br />
'''#RESULT'''<br><br />
This command can be sent any time, even during other command execution. Flasher responds with the last result of the previously executed command.<br />
<br />
'''#SELECT <Filename>'''<br><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.<br />
<tt><Filename></tt> specifies the name of file pair without extensions (.CFG and .DAT) on the Flasher which should be selected. If you are<br />
using the universal flash programming mode, <tt><Filename></tt> specifies the full name of the .UNI file '''including''' the extension.<br />
Flasher saves the selected config and data file in the FLASHER.INI file. So this selection is remembered even between power-cycling Flasher.<br><br />
<br />
This may be verfy helpful in cases where several config and data files are stored on Flasher.<br />
The user can easily switch between these config and data files without connecting Flasher to a host.<br><br />
<br />
If this command succeeds, Flasher responds with:<br><br />
<br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<br />
Find below a sample sequence which shows how to use the <tt>#SELECT</tt> command:<br><br />
<br />
<tt>#SELECT ATSAM7_1 // ATSAM7_1.CFG and ATSAM7_1.DAT is selected</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<tt>#AUTO // Start auto programming</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#STATUS:INITIALIZING</tt><br><br />
<tt>#STATUS:CONNECTING</tt><br><br />
<tt>#STATUS:UNLOCKING</tt><br><br />
<tt>#STATUS:ERASING</tt><br><br />
<tt>#STATUS:PROGRAMMING</tt><br><br />
<tt>#STATUS:VERIFYING</tt><br><br />
<tt>#OK (Total 8.416s, Erase 0.005s, Prog 6.845s, Verify 0.959s)</tt><br><br />
<tt>#SELECT ATSAM7_2 // ATSAM7_2.CFG and ATSAM7_2.DAT is selected</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<tt>#AUTO // Start auto programming</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#STATUS:INITIALIZING</tt><br><br />
<tt>#STATUS:CONNECTING</tt><br><br />
<tt>#STATUS:UNLOCKING</tt><br><br />
<tt>#STATUS:ERASING</tt><br><br />
<tt>#STATUS:PROGRAMMING</tt><br><br />
<tt>#STATUS:VERIFYING</tt><br><br />
<tt>#OK (Total 8.632s, Erase 0.005s, Prog 7.051s, Verify 0.969s)</tt><br><br />
<br />
'''#START'''<br><br />
This command can be sent to start the application using the method configured in the J-Flash project.<br />
<br />
Flasher will reply with the following sequence of messages:<br><br />
<br />
<tt>#ACK</tt><br><br />
<tt>#STATUS:INITIALIZING</tt><br><br />
<tt>#STATUS:CONNECTING</tt><br><br />
<tt>#OK (Total 1.148s)</tt><br><br />
<br />
'''#STATUS'''<br><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]].<br />
<br />
'''#VERIFY'''<br><br />
This command can used to verify the target flash content against the data stored in Flasher.<br />
<br />
'''#QUIT'''<br><br />
This command can be used to terminate the active telnet connection from the server side (Flasher).<br />
The command provides an easy way to terminate the session from an automated script.<br />
It is not necessary to parse stdout and switch to local command mode to disconnect.<br />
Not implemented in the Flasher ATE or Flasher Hub.<br />
<br />
'''#VERBOSE <Level>'''<br><br />
This command can be used to change the verbosity level. <br><br />
* Verbosity level 0: Default. <br><br />
* Verbosity level 1: Provides some additional messages during the programming process.<br />
<br />
===== File I/O commands =====<br />
<br />
The ASCII interface of the Flasher also supports file I/O operations.<br />
<br />
The following file I/O commands are supported:<br><br />
<br />
'''#FCLOSE'''<br><br />
The <tt>#FCLOSE</tt> command closes the file on Flasher which was opened via <tt>#FOPEN</tt>.<br />
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><br />
<br />
A typical sequence when using the <tt>#FCLOSE</tt> command does look like as follows:<br><br />
<br />
<tt>#FCLOSE</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<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><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:No file opened</tt><br />
}}<br />
<br />
'''#FCRC'''<br><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>.<br />
The CRC will be also reported by J-Flash when downloading or saving files via J-Flash.<br><br />
<br />
A typical sequence when using the <tt>#FCRC</tt> command does look like as follows:<br><br />
<br />
<tt>#FCRC flasher.dat</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK:0x75BC855A</tt><br><br />
<br />
'''#FDELETE <Filename>'''<br><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><br />
<br />
A typical sequence when using the <tt>#FDELETE</tt> command does look like as follows:<br><br />
<br />
<tt>#FDELETE flasher.dat</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<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><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:Failed to delete file</tt><br />
}}<br />
<br />
'''#FOPEN <Filename>'''<br><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.<br />
If <tt><Filename></tt> can not be found on Flasher a new one will be created.<br><br />
<br />
A typical sequence using the <tt>#FOPEN</tt> command does look like as follows:<br><br />
<br />
<tt>#FOPEN flasher.dat</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<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><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:A file has already been opened</tt><br />
}}<br />
<br />
'''#FREAD <Offset>,<NumBytes>'''<br><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.<br />
<tt><NumBytes></tt> specifies the number of bytes which should be read.<br><br />
<br />
A typical sequence when using the <tt>#FREAD</tt> command does look like as follows:<br><br />
<br />
<tt>#FREAD 0,4</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK:04:466c6173</tt><br><br />
<br />
If the <tt>#FREAD</tt> command succeeds, Flasher will finally respond with a <tt>#OK:<NumBytes>:<nowiki><Data></nowiki></tt> reply message.<br />
For more information about the Flasher reply messages, please refer to [[#Replies from Flasher | Replies from Flasher]].<br><br />
<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><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:No file opened</tt>}}<br />
<br />
'''#FSIZE'''<br><br />
The <tt>#FSIZE</tt> command is used to get the size of the currently opened file on Flasher.<br><br />
<br />
A typical sequence when using the <tt>#FSIZE</tt> command does look like as follows:<br><br />
<br />
<tt>#FSIZE</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK:10 // file on flasher which is currently open, has a size of 16 bytes</tt><br><br />
<br />
If the <tt>#FSIZE</tt> command succeeds, Flasher will respond with a <tt>#OK:<Size></tt> reply message.<br />
For more information about the Flasher reply messages, please refer to [[#Replies from Flasher | Replies from Flasher]].<br><br />
<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><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:No file opened</tt>}}<br />
<br />
'''#FWRITE <Offset>,<NumBytes>:<nowiki><Data></nowiki>'''<br><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.<br />
<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.<br />
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><br />
<br />
<tt><Offset></tt> and <tt><NumBytes></tt> are expected in hexadecimal format.<br><br />
<br />
<tt>#FWRITE 0,200:<nowiki><Data></nowiki></tt><br><br />
<tt>#FWRITE 200,200:<nowiki><Data></nowiki></tt><br><br />
<br />
The data is expected in hexadecimal format (two hexadecimal characters per byte). The following example illustrates the use of <tt>#FWRITE</tt>:<br />
<br />
<tt>Data to be send: Hello !</tt><br><br />
<tt>ASCII values: 0x48, 0x65, 0x6C, 0x6C, 0x6F, 0x20, 0x21</tt><br><br />
<br />
<tt>#FWRITE 0,7:48656C6C6F2021</tt><br><br />
<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><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:No file opened</tt><br>}}<br />
<br />
'''#FLIST'''<br><br />
The <tt>#LIST</tt> command is used to list all files stored on the Flasher.<br><br />
<br />
A typical sequence using the <tt>#FLIST</tt> command does look like as follows:<br><br />
<br />
<tt>#FLIST</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>FLASHER.INI Size: 60</tt><br><br />
<tt>SERIAL.TXT Size: 3</tt><br><br />
<tt>FLASHER.LOG Size: 207</tt><br><br />
<tt>FOLDER (DIR)</tt><br><br />
<tt>FOLDER\\TEST1.CFG Size: 2048</tt><br><br />
<tt>FOLDER\\TEST1.DAT Size: 12288</tt><br><br />
<tt>#OK</tt><br><br />
<br />
'''#MKDIR <Dirname>'''<br><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><br />
<br />
A typical sequence using the <tt>#MKDIR</tt> command does look like as follows:<br><br />
<br />
<tt>#MKDIR folder</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<br />
{{Note|1=If the directory can not be created because of a bad <tt><Dirname></tt> argument, Flasher will respond with:<br><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:Failed to create directory</tt><br>}}<br />
<br />
===== Secure Area Commands =====<br />
<br />
'''#HASSECUREAREA'''<br><br />
The <tt>#HASSECUREAREA</tt> command checks if the Flasher is configured with a secure area.<br />
<br />
<tt>#RESULT:YES</tt> indicates the secure area is present, <tt>#RESULT:NO</tt> indicates no secure area is present.<br />
<br />
'''#SECUREAREA'''<br><br />
The <tt>#SECUREAREA <action></tt> command allows to create or remove the secure area on the Flasher.<br />
<br />
* the action <tt>CREATE</tt> creates the secure area.<br />
* the action <tt>REMOVE</tt> will remove the secure area.<br />
<br />
A typical sequence using the <tt>#SECUREAREA</tt> command does look like as follows:<br><br />
<br />
<tt>#SECUREAREA CREATE</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#DONE</tt><br><br />
<br />
{{Note|1=When creating or removing the <tt>secure area</tt>, all configuration and data files being stored on the Flasher, are lost.<br />
Please make sure that they are not needed anymore, before adding / removing the security area.}}<br />
<br />
<br />
<br />
===== Replies from Flasher =====<br />
<br />
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.<br />
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.<br />
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><br />
<br />
<tt>#OK (Total 13.993s, Erase 0.483s, Prog 9.183s, Verify 2.514s)</tt><br><br />
<br />
The following reply messages from Flasher are defined:<br><br />
<br />
'''#ACK'''<br><br />
Flasher replies with <tt>#ACK</tt> message on reception of any defined command before the command itself is executed.<br />
<br />
'''#NACK'''<br><br />
Flasher replies with <tt>#NACK</tt>, if an undefined command was received.<br />
<br />
'''#OK'''<br><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.<br />
<br />
'''#OK:<NumBytes>:<nowiki><Data></nowiki>'''<br><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.<br />
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).<br />
<br />
'''#OK:<Size>'''<br><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.<br />
<br />
'''#STATUS:'''<br><br />
The Flasher replies with its current state.<br><br />
<br />
The following status messages are currently defined:<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Message !! Description<br />
|-<br />
| <tt>#STATUS:READY</tt> || Flasher is ready to receive a new command.<br />
|-<br />
| <tt>#STATUS:CONNECTING</tt> || Flasher initializes connection to target CPU.<br />
|-<br />
| <tt>#STATUS:INITIALIZING</tt> || Flasher performs self check and internal init.<br />
|-<br />
| <tt>#STATUS:UNLOCKING</tt> || Unlocking flash sectors.<br />
|-<br />
| <tt>#STATUS:ERASING</tt> || Flasher is erasing the flash of the target device.<br />
|-<br />
| <tt>#STATUS:PROGRAMMING</tt> || Flasher is programming the flash of the target device.<br />
|-<br />
| <tt>#STATUS:VERIFYING</tt> || Flasher verifies the programmed flash contents.<br />
|-<br />
|}<br />
<br />
'''#ERRxxx'''<br><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><br />
<br />
Some error codes may be followed by colon and an additional error text.<br><br />
<br />
For example:<br><br />
<br />
<tt>#ERR007:CANCELED.</tt><br><br />
<br />
The error code numbers are described in the following table:<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Message !! Description<br />
|-<br />
| <tt>#ERR007</tt> || Flasher received <tt>#CANCEL</tt> command and has canceled the current operation.<br />
|-<br />
| <tt>#ERR008</tt> || Flasher is already busy with execution of previous command.<br />
|-<br />
| <tt>#ERR009</tt> || Failed to allocate memory.<br />
|-<br />
| <tt>#ERR010</tt> || Failed to open file.<br />
|-<br />
| <tt>#ERR011</tt> || Failed to read file.<br />
|-<br />
| <tt>#ERR012</tt> || Failed to write file.<br />
|-<br />
| <tt>#ERR013</tt> || Failed to delete file.<br />
|-<br />
| <tt>#ERR255</tt> || Undefined error occurred. This reply is followed by an error string.<br />
|-<br />
|}<br />
<br />
== Performance ==<br />
<br />
The following chapter lists programming performance of common flash devices andmicrocontrollers.<br />
<br />
=== Performance of MCUs with internal flash memory ===<br />
<br />
==== Flasher ARM ====<br />
<br />
The following table lists program and erase performance values of Flasher ARM for different controllers.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Microcontroller !! Size [kByte] !! Erase time [sec] !! Program time [sec] !! Verify time [sec] !! Total time [sec]<br />
|-<br />
| Analog Devices || 62 || 2.943 || 2.286 || 0.563 || 5.792<br />
|-<br />
| Atmel AT91SAM7S64 || 64 || --- || 3.488 || 0.438 || 3.926<br />
|-<br />
| Atmel AT91SAM7S256 || 256 || --- || 7.709 || 1.053 || 8.762<br />
|-<br />
| NXP LPC1768 || 512 || 3.740 || 8.559 || 5.092 || 17.391<br />
|-<br />
| NXP LPC2106 || 120 || 0.448 || 1.204 || 0.634 || 2.286<br />
|-<br />
| NXP LPC2129 || 248 || 0.449 || 2.916 || 1.347 || 4.712<br />
|-<br />
| NXP LPC2138 || 500 || 0.448 || 5.488 || 2.649 || 8.585<br />
|-<br />
| NXP LPC2148 || 500 || 0.448 || 5.632 || 2.721 || 8.801<br />
|-<br />
| NXP LPC2294 || 2048 || 0.808 || 15.976 || 9.669 || 26.453<br />
|-<br />
| NXP LPC2478 || 504 || 0.448 || 5.419 || 2.559 || 8.426<br />
|-<br />
| ST STM32F103ZE || 512 || 0.028 || 18.763 || 3.939 || 22.730<br />
|-<br />
| ST STR711 || 272 || 0.429 || 5.476 || 4.742 || 10.647<br />
|-<br />
| ST STR912 || 544 || 1.167 || 12.907 || 5.236 || 19.310<br />
|-<br />
| TI TMS470R1B1M || 1024 || 2.289 || 8.147 || 5.362 || 15.798<br />
|-<br />
|}<br />
<br />
==== Flasher PRO ====<br />
See Flasher ARM.<br />
<br />
==== Flasher Compact ====<br />
See Flasher ARM.<br />
<br />
==== Flasher RX ====<br />
<br />
The following table lists program and erase performance values of Flasher RX.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Microcontroller !! Size [kByte] !! Erase time [sec] !! Program time [sec] !! Verify time [sec] !! Total time [sec]<br />
|-<br />
| R5F56108 || 2.048 || 9.523 || 11.915 || 3.890 || 25.585<br />
|-<br />
|}<br />
<br />
==== Flasher PPC ====<br />
<br />
The following table lists program and erase performance values of Flasher PPC.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Microcontroller !! Size [kByte] !! Erase time [sec] !! Program time [sec] !! Verify time [sec] !! Total time [sec]<br />
|-<br />
| ST SPC560B50 || 576 || 4.747 || 4.159 || 1.929 || 10.917<br />
|-<br />
|}<br />
<br />
== Hardware ==<br />
<br />
This chapter gives an overview about Flasher specific hardware details,<br />
such as the pinouts and available adapters.<br />
<br />
=== Flasher ARM 20-pin JTAG/SWD Connector ===<br />
<br />
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.<br />
<br />
==== Pinout JTAG ====<br />
<br />
[[File:jtag_port_20pin.jpg]] <!-- LG xxxxxx image has been cropped to fit page --><br />
<br />
The following table lists the Flasher JTAG pinout.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! PIN !! SIGNAL !! TYPE !! Description<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 13 || TDO || Input || JTAG data output from target CPU. Typically connected to TDO of target CPU.<br />
|-<br />
| 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".<br />
|-<br />
| 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.<br />
|-<br />
| 19 || 5V-Target supply || Output || This pin is used to supply power to some eval boards. Typically left open on target hardware.<br />
|-<br />
|}<br />
<br />
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.<br />
<br />
==== Pinout SWD ====<br />
<br />
The 20-pin connector of Flasher is also compatible to ARM's Serial Wire Debug (SWD) interface.<br><br />
<br />
[[File:SWD_Port.jpg]] <!-- LG xxxxxx image has been cropped to fit page --><br />
<br />
The following table lists the J-Link / J-Trace SWD pinout.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! PIN !! SIGNAL !! TYPE !! Description<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 7 || SWDIO || I/O || Single bi-directional data pin.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 13 || SWO || Output || Serial Wire Output trace port. (Optional, not required for SWD communication.)<br />
|-<br />
| 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".<br />
|-<br />
| 17 || Not used || NC || This pin is not connected in J-Link.<br />
|-<br />
| 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.<br />
|-<br />
|}<br />
<br />
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.<br />
<br />
==== Target power supply ====<br />
<br />
Pin 19 of the connector can be used to supply power to the target hardware. Supply voltage is 5V, max. current is 400mA.<br />
The output current is monitored and protected against overload and short-circuit.<br><br />
<br />
Power can be controlled via the J-Link commander. The following commands are available to control power:<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Command !! Explanation<br />
|-<br />
| <tt>power on</tt> || Switch target power on<br />
|-<br />
| <tt>power off</tt> || Switch target power off<br />
|-<br />
| <tt>power on perm</tt> || Set target power supply default to "on"<br />
|-<br />
| <tt>power off perm</tt> || Set target power supply default to "off"<br />
|-<br />
|}<br />
<br />
=== Flasher RX 14-pin connector ===<br />
<br />
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.<br />
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.<br />
<br />
[[File:jtag_port_14pin.wmf]]<br />
<br />
The following table lists the Flasher RX 14-pin JTAG pinout.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Pin !! Signal !! Type !! Description<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 5 || TDO || Input || JTAG data output from target CPU. Typically connected to TDO on target CPU.<br />
|-<br />
| 6 || --- || NC || This pin is not connected to Flasher RX.<br />
|-<br />
| 7 || --- || NC || This pin is not connected to Flasher RX.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 10 || --- || NC || This pin is not connected to Flasher RX.<br />
|-<br />
| 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.<br />
|-<br />
| 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".<br />
|-<br />
|}<br />
<br />
* All pins marked NC are not connected to Flasher RX. Any signal can be applied here; Flasher RX will simply ignore such a signal.<br />
* Pins 2, 12, 14 are GND pins connected to GND in Flasher RX. They should also be connected to GND in the target system.<br />
<br />
==== Target power supply ====<br />
<br />
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.<br />
Power can be controlled via the J-Link commander. The following commands are available to control power:<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Command !! Explanation<br />
|-<br />
| <tt>power on</tt> || Switch target power on<br />
|-<br />
| <tt>power off</tt> || Switch target power off<br />
|-<br />
| <tt>power on perm</tt> || Set target power supply default to "on"<br />
|-<br />
| <tt>power off perm</tt> || Set target power supply default to "off"<br />
|-<br />
|}<br />
<br />
=== Flasher PPC 14-pin connector ===<br />
<br />
Flasher PPC itself has a 20-pin JTAG connector mounted but comes with a 14-pin adapter for PowerPC devices.<br><br />
<br />
[[File:JTAG_PPC_14pin_adapter.wmf]]<br />
<br />
The following table lists the Flasher PPC 14-pin JTAG pinout.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Pin !! Signal !! Type !! Description<br />
|-<br />
| 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.<br />
|-<br />
| 3 || TDO || Input || JTAG data output from target CPU. Typically connected to TDO on target CPU.<br />
|-<br />
| 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.<br />
|-<br />
| 7 || --- || NC || This pin is not connected to Flasher PPC.<br />
|-<br />
| 8 || --- || NC || This pin is not connected to Flasher PPC.<br />
|-<br />
| 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".<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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).<br />
|-<br />
|}<br />
<br />
* All pins marked NC are not connected to Flasher PPC. Any signal can be applied here; Flasher PPC will simply ignore such a signal.<br />
* 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.<br />
<br />
=== Target board design ===<br />
<br />
We strongly advise following the recommendations given by the chip manufacturer. These recommendations are normally in line with the recommendations.<br />
Please refer to the the appropriate tables depending on the core:<br><br />
<br />
* [[#Pinout JTAG | Pinout JTAG]]<br />
* [[#Pinout SWD | Pinout SWD]]<br />
* [[#Flasher RX 14-pin connector | Flasher RX 14-pin connector]]<br />
* [[#Flasher PPC 14-pin connector | Flasher PPC 14-pin connector]]<br />
<br />
In case of doubt you should follow the recommendations given by the semiconductor manufacturer.<br />
<br />
==== Pull-up/pull-down resistors ====<br />
<br />
Unless otherwise specified by developer's manual, pull-ups/pull-downs are recommended to be between 2.2 kOhms and 47 kOhms.<br />
<br />
==== RESET, nTRST ====<br />
<br />
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><br />
<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.<br />
(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.<br />
<br />
=== Adapters ===<br />
<br />
==== JTAG Isolator ====<br />
<br />
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.<br />
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><br />
<br />
[[File:JTAG_Isolator_Port.wmf]]<br />
<br />
===== Pinout =====<br />
<br />
The following table shows the target-side pinout of the J-Link JTAG Isolator.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Pin !! Signal !! Type !! Description<br />
|-<br />
| 1 || VCC || Output || The target side of the isolator draws power over this pin.<br />
|-<br />
| 2 || VCC || Output || The target side of the isolator draws power over this pin.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 13 || TDO || Input || JTAG data output from target CPU. Typically connected to TDO of target CPU.<br />
|-<br />
| 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".<br />
|-<br />
| 17 || N/C || N/C || This pin is not connected on the target side of the isolator.<br />
|-<br />
| 19 || N/C || N/C || This pin is not connected on the target side of the isolator.<br />
|-<br />
|}<br />
<br />
Pins 4, 6, 8, 10, 12, 14, 16, 18, 20 are connected to GND.<br />
<br />
===== Safety =====<br />
This isolator provides '''basic isolation''' only. '''Do not use with hazardous voltages without further protection measures to avoid risk of electrical shock and fire.'''<br />
<br />
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.<br />
<br />
==== J-Link Needle Adapter ====<br />
<br />
To connect to the J-Link OB via programming interface the ''J-Link Needle Adapter'' is recommended.<br><br />
<br />
[[File:J-Link_Needle_Adapter_500x.jpg]]<br />
<br />
Why to choose the J-Link Needle Adapter:<br><br />
<ol><br />
<li>No additional connector required on your PCB</li><br />
<li>Very small footprint</li><br />
<li>High reliability spring pins for secure connections</li><br />
<li>Designed with 3 locating pins, so the adapter can not be connected the wrong way</li><br />
<li>No external power supply required! The J-Link Needle Adapter comes with the option to power the target hardware via J-Link.</li><br />
</ol><br />
These features make the J-Link Needle Adapter the perfect solution for production purposes.<br><br />
<br />
The pinout of the J-Link Needle Adapter is based on the pinout of the needle adapter by Tag-Connect.<br />
Please note, that both pinouts are not identical since the J-Link Needle Adapter comes with a 5V-supply pin.<br><br />
<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><br />
<br />
Moreover, the two "legs" on each side of the connector guarantee a stable and secure contact between pins and the PCB.<br><br />
<br />
[[File:J-Link_Needle_Adapter_Connector_pins_360x.jpg]]<br />
[[File:J-Link_Needle_Adapter_Pinout.jpg]]<br />
<br />
The J-Link Needle Adapter can be connected to J-Link via the ''20-pin 0.1'' JTAG to a 10-pin needle connector''.<br />
<br />
=== How to determine the hardware version ===<br />
<br />
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.<br />
Flasher has the hardware version printed on the back label.<br><br />
<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).<br />
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><br />
<br />
[[File:FlasherARM_version.gif]]<br />
== Support and FAQs ==<br />
<br />
This chapter contains troubleshooting tips together with solutions for common problems which might occur when using Flasher.<br />
There are several steps you can take before contacting support.<br />
Performing these steps can solve many problems and often eliminates the need for assistance.<br />
This chapter also contains a collection of frequently asked questions (FAQs) with answers.<br />
<br />
=== Contacting support ===<br />
<br />
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.<br />
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><br />
<br />
If you need to contact support, send the following information to<br><br />
''support@segger.com''<br><br />
<br />
* A detailed description of the problem<br />
* Flasher serial number<br />
* Information about your target hardware (processor, board, etc.).<br />
* <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]].<br />
<br />
Flasher is sold directly by SEGGER.<br />
<br />
=== Frequently Asked Questions ===<br />
<br />
'''Maximum JTAG speed'''<br />
{|<br />
|-<br />
| '''Q:''' || What is the maximum JTAG speed supported by Flasher?<br />
|-<br />
| '''A:''' || Flasher's maximum supported JTAG speed is 12MHz.<br />
|}<br />
<br />
'''Maximum download speed'''<br />
{|<br />
|-<br />
| '''Q:''' || What is the maximum download speed?<br><br />
|-<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.<br />
|}<br />
== Background information ==<br />
<br />
This chapter provides background information about flash programming in general. It<br />
also provides information about how to replace the firmware of Flasher manually.<br />
<br />
=== Flash programming ===<br />
<br />
Flasher comes with a DLL, which allows - amongst other functionalities - reading and writing RAM, CPU registers, starting and stopping the CPU, and setting breakpoints.<br />
<br />
==== How does flash programming via Flasher work? ====<br />
<br />
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.<br />
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.<br />
Different flash chips have different programming algorithms;the programming algorithm also depends on other things,<br />
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).<br />
The RAM code requires data to be programmed into the flash memory. The data is supplied by downloading it to RAM.<br />
<br />
==== Data download to RAM ====<br />
<br />
The data (or part of it) is downloaded to another part of the RAM of the target system.<br />
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.<br />
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.<br />
This process may have to be repeated until the entire data is programmed into the flash.<br />
<br />
==== Available options for flash programming ====<br />
<br />
In general, there are two possibilities in order to use Flasher for flash programming:<br><br />
<br />
* Using Flasher stand-alone to program the target flash memory (stand-alone mode)<br />
* Using Flasher in combination with J-Flash to program the target flash memory (Flasher in "PC-based mode")<br />
<br />
===== Using Flasher in stand-alone mode =====<br />
<br />
In order to use the Flasher in stand-alone mode, it has to be configured first.<br />
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]].<br />
<br />
===== J-Flash - Complete flash programming solution =====<br />
<br />
J-Flash is a stand-alone Windows application, which can read / write data files and program the flash in almost any ARM system.<br />
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''.<br />
<br />
==== How does the universal flash programming work? ====<br />
<br />
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><br />
<br />
Universal flash programming is available only for stand-alone mode.<br />
== Glossary ==<br />
<br />
This chapter describes important terms used throughout this manual.<br />
<br />
'''Big-endian'''<br><br />
Memory organization where the least significant byte of a word is at a higher address than the most significant byte. See Little-endian.<br />
<br />
'''Cache cleaning'''<br><br />
The process of writing dirty data in a cache to main memory.<br />
<br />
'''Coprocessor'''<br><br />
An additional processor that is used for certain operations, for example, for floating-point math calculations, signal processing, or memory management.<br />
<br />
'''Dirty data'''<br><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.<br />
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.<br />
<br />
'''Halfword'''<br><br />
A 16-bit unit of information.<br />
<br />
'''Host'''<br><br />
A computer which provides data and other services to another computer. Especially, a computer providing debugging services to a target being debugged.<br />
<br />
'''ICache'''<br><br />
Instruction cache.<br />
<br />
'''ID'''<br><br />
Identifier.<br />
<br />
'''IEEE 1149.1'''<br><br />
The IEEE Standard which defines TAP. Commonly (but incorrectly) referred to as JTAG.<br />
<br />
'''Image'''<br><br />
An executable file that has been loaded onto a processor for execution.<br />
<br />
'''Instruction Register'''<br><br />
When referring to a TAP controller, a register that controls the operation of the TAP.<br />
<br />
'''IR'''<br><br />
See Instruction Register.<br />
<br />
'''Joint Test Action Group (JTAG)'''<br><br />
The name of the standards group which created the IEEE 1149.1 specification.<br />
<br />
'''Little-endian'''<br><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.<br />
<br />
'''Memory coherency'''<br><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.<br />
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.<br />
<br />
'''Memory management unit (MMU)'''<br><br />
Hardware that controls caches and access permissions to blocks of memory, and translates virtual to physical addresses.<br />
<br />
'''Memory Protection Unit (MPU)'''<br><br />
Hardware that controls access permissions to blocks of memory. Unlike an MMU, a MPU does not translate virtual addresses to physical addresses.<br />
<br />
'''RESET'''<br><br />
Abbreviation of System Reset. The electronic signal which causes the target system other than the TAP controller to be reset.<br />
This signal is also known as "nSRST" "nSYSRST", "nRST", or "nRESET" in some other manuals. See also nTRST.<br />
<br />
'''nTRST'''<br><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.<br />
<br />
'''Open collector'''<br><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.<br />
<br />
'''Processor Core'''<br><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.<br />
It excludes optional coprocessors, caches, and the memory management unit.<br />
<br />
'''Remapping'''<br><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.<br />
<br />
'''RTOS'''<br><br />
Real Time Operating System.<br />
<br />
'''TAP Controller'''<br><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.<br />
<br />
'''Target'''<br><br />
The actual processor (real silicon or simulated) on which the application program is running.<br />
<br />
'''TCK'''<br><br />
The electronic clock signal which times data on the TAP data lines TMS, TDI, and TDO.<br />
<br />
'''TDI'''<br><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.<br />
<br />
'''TDO'''<br><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.<br />
<br />
'''Test Access Port (TAP)'''<br><br />
The port used to access a device's TAP Controller. Comprises TCK, TMS, TDI, TDO, and nTRST (optional).<br />
<br />
'''Transistor-transistor logic (TTL)'''<br><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.<br />
<br />
'''Word'''<br><br />
A 32-bit unit of information. Contents are taken as being an unsigned integer unless otherwise stated.<br />
== Literature and references ==<br />
This chapter lists documents, which we think may be useful to gain a deeper understanding of technical details.</div>JanBhttps://wiki.segger.com/index.php?title=UM08022_Flasher&diff=16112UM08022 Flasher2023-08-21T06:40:56Z<p>JanB: /* Handshake control */</p>
<hr />
<div><!---<br />
General TBD:<br />
- LG: Right now - EVERYTHING<br />
===========================================<br />
--------------------[more specific, but on multiple locations]<br />
- check if all emphasis (bold, tt, blue, etc ) have made it into the new version<br />
- Add Information -> Additional information<br />
- use of the term free-of-charge utility/tool etc<br />
- check compliant to DocStandards_Rules.txt<br />
- Remove everything regarding to Kickstarter versions? eventually create a chapter Legacy -> Kickstarter version were available for hw version 5-x (200x-200x)...[..]<br />
- 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.<br />
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.<br />
- if week keep the IDE specific stuff in the manual, add Ozone, ES and J-Link Commander were no mentioned.<br />
- IDE specifics move into wiki confirmed by Alex<br />
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)<br />
- check all sections regarding licensing<br />
- Check compliance of J-Link emDocs with typographic conventions described in AboutThisDocument.emDoc. What should be altered? e.g. references<br />
- use uref at all (not blue)?<br />
- search and decide where to use \ref (ref with page number)<br />
- why is \ref (no single "option" \uref is more basic as \ref.....)<br />
- in text, use either \ref or \iref instead of \uref<br />
- in old manual, \H3 started on a new page (not per default, but set manually for api tables etc...)<br />
- move used old images and source files (visio etc) via svn (currently copied)<br />
--------------------[grammar / vocabulary discussion]<br />
- Product names<br />
-- Use of SEGGEPROBE in this document?<br />
- use license over licence<br />
- commandline or command-line?<br />
- toolchain or tool chain?<br />
- crossreference/cross-reference/cross reference?<br />
- overcurrent?<br />
- double words?<br />
- frontend?<br />
- Unit: Kbytes, KBytes, V, mV.... 9V or 9 V? Create rule in Vocabulary<br />
- baudrate or baud rate?<br />
- stackpointer or stack pointer<br />
- check where we should replace abbreviations with the long form (e.h. "milliseconds" instead of "ms")<br />
- config or configuration<br />
- filepointer or file pointer?<br />
--------------------[J-Link dep. specific]<br />
- J-Link command strings or J-Link Command strings or J-Link Command Strings<br />
- J-Link settings file or...<br />
- J-Link control panel or ......<br />
- J-Link script files or...<br />
---><br />
Flasher is a programming tool for microcontrollers with on-chip or external flash memory.<br />
Flasher is designed for programming flash targets with the J-Flash software or stand-alone.<br />
In addition to that Flasher can also be used as a regular J-Link. For more information about J-Link in general,<br />
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].<br />
<br />
<div class="toclimit-2"><br />
__TOC__<br />
</div><br />
<br />
== Flasher overview ==<br />
Flasher connects to a PC using the USB/Ethernet/RS232 interface (what host interfaces are available depends on the Flasher model),<br />
running Windows, Linux & MacOS. In stand-alone mode,<br />
Flasher can be driven by the start/stop button, or via the RS232 interface (handshake control or ASCII interface).<br />
Flasher always has a 20-pin connector, which target interfaces are supported depends on the Flasher model:<br />
* Flasher ARM: JTAG and SWD are supported.<br />
* Flasher RX: JTAG is supported. Flasher comes with additional 14-pin RX adapter<br />
* Flasher PPC: JTAG is supported. Flasher comes with additional 14-pin PPC adapter.<br />
* Flasher PRO: JTAG and SWD are supported.<br />
* Flasher Compact: JTAG and SWD are supported.<br />
<br />
=== Features of Flasher ARM/PPC/RX/PRO ===<br />
* Three boot modes: PC-based mode, stand-alone mode, file access mode<br />
* Stand-alone JTAG/SWD programmer (Once set up, Flasher can be controlled without the use of PC program)<br />
* No power supply required, powered through USB<br />
* Supports internal and external flash devices<br />
* 128 MB memory for storage of target program<br />
* Can be used as J-Link (emulator) with a download speed of up to 720 Kbytes/second<br />
* Data files can updated via USB/Ethernet (using the J-Flash software), via FTP, via RS232 or via the file access mode of Flasher<br />
<br />
{| class="seggertable"<br />
|-<br />
! Flasher model !! Supported cores !! Supported target interfaces !! Flash programming speed (depending on target hardware)<br />
|-<br />
| Flasher ARM || ARM7/ARM9/Cortex-M || JTAG, SWD || between 170 and 300 Kbytes/second<br />
|-<br />
| Flasher RX || Renesas RX610, RX621, RX62N, RX62T || JTAG || between 30-300 Kbytes/second<br />
|-<br />
| Flasher PPC || Power PC e200z0 || JTAG || up to 138 Kbytes/second<br />
|-<br />
| Flasher PRO || ARM7/ARM9/Cortex-M Renesas RX610, RX621, RX62N, RX62T Power PC e200z0 || JTAG, SWD || between 30-300 Kbytes/ second<br />
|-<br />
|}<br />
<br />
==== Features of Flasher Compact ====<br />
<br />
* Three boot modes: PC-based mode, stand-alone mode, file access mode<br />
* Stand-alone JTAG/SWD programmer (Once set up, Flasher can be controlled without the use of PC program)<br />
* No power supply required, powered through USB<br />
* Supports internal and external flash devices<br />
* 128 MB memory for storage of target program<br />
* Can be used as J-Link (emulator) with a download speed of up to 720 Kbytes/second<br />
* Data files can updated via USB/Ethernet (using the J-Flash software) or via the file access mode of Flasher<br />
<br />
{| class="seggertable"<br />
|-<br />
! Flasher model !! Supported cores !! Supported target interfaces !! Flash programming speed (depending on target hardware)<br />
|-<br />
| Flasher ARM || ARM7/ARM9/Cortex-M || JTAG, SWD || between 170 and 300 Kbytes/second<br />
|-<br />
| Flasher RX || Renesas RX610, RX621, RX62N, RX62T || JTAG || between 30-300 Kbytes/second<br />
|-<br />
| Flasher PPC || Power PC e200z0 || JTAG || up to 138 Kbytes/second<br />
|-<br />
| Flasher Compact || ARM7/ARM9/Cortex-M Renesas RX610, RX621, RX62N, RX62T Power PC e200z0 || JTAG, SWD || between 30-300 Kbytes/ second<br />
|-<br />
|}<br />
<br />
==== Features of Flasher Portable/Flasher Portable PLUS ====<br />
<br />
* Stand-alone in-circuit-programmer (Once set up, Flasher can be controlled without the use of a PC program)<br />
* Powered by an internal rechargeable battery (standard batteries for Flasher Portable), no Laptop or external power supply required.<br />
* Multiple firmware images can be stored on Flasher<br />
* 128 MB memory for storage of target program<br />
* Easy selection of image to be programmed, via button<br />
* Supported CPUs: ARM Cortex, Legacy ARM7/9, Renesas RX, Freescale PowerPC<br />
* Supports internal and external flash<br />
* Free software updates<ref name="legitimateOwned" />, 1 year of support<br />
* Data files can be updated via the file access mode functionality or via J-Flash<br />
* Programming speed between 30-300 Kbytes/second (actual speed depends on target hardware)<br />
{{Note|1=Ethernet and RS232 as host interface are not available for Flasher Portable}}<br />
<references><br />
<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.<br />
As a legitimate owner of a SEGGER Flasher, you can always download the latest software free of charge.<br />
Though not planned and not likely, we reserve the right to change this policy.<br />
Note that older models may not be supported by newer versions of the software.<br />
Typically, we support older models with new software at least 3 years after end of life.<br />
</ref><br />
</references><br />
<br />
{| class="seggertable"<br />
|-<br />
! Supported cores !! Supported target interfaces !! Flash programming speed (depending on target hardware)<br />
|-<br />
| ARM7/ARM9/Cortex-M || JTAG, SWD || between 30-300 Kbytes/second<br />
|-<br />
| Renesas RX610, RX621, RX62N, RX62T || JTAG || between 170 and 300 Kbytes/second<br />
|-<br />
| Power PC e200z0 || JTAG || up to 138 Kbytes/second<br />
|-<br />
|}<br />
<br />
==== Working environment ====<br />
<br />
'''General'''<br><br />
The Flasher can operate from a PC with an appropriate software like J-Flash or in stand-alone mode.<br />
<br />
'''Host System'''<br><br />
IBM PC/AT or compatible CPU: 486 (or better) with at least 128MB of RAM,<br />
running Windows, Linux & MacOS. It needs to have a USB, Ethernet or RS232 interface available for communication with Flasher.<br />
<br />
'''Power supply'''<br><br />
Flasher Portable: 3x standard AAA batteries or 5V DC, min. 100 mA via USB connector.<br />
<br />
Flasher Portable PLUS: internal rechargeable 680mAh Li-Ion battery, min. 100 mA via USB connector.<br />
<br />
Other Flashers: 5V DC, min. 100 mA via USB connector.<br />
<br />
'''Installing Flasher PC-software (J-Flash)'''<br><br />
The latest version of the J-Flash software, which is part of the [[J-Link Software and Documentation Pack]].<br />
For more information about using J-Flash please refer to <tt>UM08003_JFlashARM.pdf</tt> (J-Flash user guide) which is also available for download on our website.<br />
<br />
=== Specifications ===<br />
<br />
<br />
==== Specifications for Flasher ARM ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Windows, Linux & MacOS<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C<br />
|-<br />
| Storage Temperature || -20 °C ... +60 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
!colspan="100%"| Mechanical<br />
|-<br />
| Size (without cables) || 121mm x 66mm x 30mm<br />
|-<br />
| Weight (without cables) || 119g<br />
|-<br />
!colspan="100%"| Available interfaces<br />
|-<br />
| USB Host interface || USB 2.0, full speed<br />
|-<br />
| Ethernet Host interface || 10/100 MBit<br />
|-<br />
| RS232 Host interface || RS232 9-pin<br />
|-<br />
| Target interface || JTAG 20-pin (14-pin adapter available)<br />
|-<br />
!colspan="100%"| JTAG Interface, Electrical<br />
|-<br />
| Power Supply || USB powered, 100mA for Flasher ARM. 500 mA if target is powered by Flasher ARM<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| Target supply voltage || Supply voltage is 5V, max.<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6 <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Max. JTAG speed || up to 12MHz<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
===== Flasher ARM download speed =====<br />
<br />
The following table lists the Flasher ARM performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! ARM7 memory download<br />
|-<br />
| Flasher ARM || 720 Kbytes/s (12MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
<br />
==== Specifications for Flasher RX ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Windows, Linux & MacOS<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C<br />
|-<br />
| Storage Temperature || -20 °C ... +60 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
!colspan="100%"| Mechanical<br />
|-<br />
| Size (without cables) || 121mm x 66mm x 30mm<br />
|-<br />
| Weight (without cables) || 119g<br />
|-<br />
!colspan="100%"| Available interfaces<br />
|-<br />
| USB Host interface || USB 2.0, full speed<br />
|-<br />
| Ethernet Host interface || 10/100 MBit<br />
|-<br />
| RS232 Host interface || RS232 9-pin<br />
|-<br />
| Target interface || JTAG 20-pin (shipped with 14-pin adapter for Renesas RX)<br />
|-<br />
!colspan="100%"| JTAG Interface, Electrical<br />
|-<br />
| Power Supply || USB powered, 100mA for Flasher RX. 500 mA if target is powered by Flasher RX<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| 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)<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6 <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Max. JTAG speed || up to 12MHz<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
===== Flasher RX download speed =====<br />
<br />
The following table lists the Flasher RX performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! Flasher RX600 series memory download<br />
|-<br />
| Flasher RX || 720 Kbytes/s (12MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
<br />
==== Specifications for Flasher PPC ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Windows, Linux & MacOS<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C<br />
|-<br />
| Storage Temperature || -20 °C ... +60 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
!colspan="100%"| Mechanical<br />
|-<br />
| Size (without cables) || 121mm x 66mm x 30mm<br />
|-<br />
| Weight (without cables) || 119g<br />
|-<br />
!colspan="100%"| Available interfaces<br />
|-<br />
| USB Host interface || USB 2.0, full speed<br />
|-<br />
| Ethernet Host interface || 10/100 MBit<br />
|-<br />
| RS232 Host interface || RS232 9-pin<br />
|-<br />
| Target interface || JTAG 20-pin (shipped with 14-pin adapter for Renesas PPC)<br />
|-<br />
!colspan="100%"| JTAG Interface, Electrical<br />
|-<br />
| Power Supply || USB powered, 100mA for Flasher PPC. 500 mA if target is powered by Flasher PPC<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| Target supply voltage || Supply voltage is 5V, max.<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6 <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Max. JTAG speed || up to 12MHz<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
===== Flasher RX download speed =====<br />
<br />
The following table lists the Flasher PPC performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! Memory download<br />
|-<br />
| Flasher PPC || 530 Kbytes/s (8 MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
<br />
==== Specifications for Flasher PRO ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Windows, Linux & MacOS<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C<br />
|-<br />
| Storage Temperature || -20 °C ... +60 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
!colspan="100%"| Mechanical<br />
|-<br />
| Size (without cables) || 121mm x 66mm x 30mm<br />
|-<br />
| Weight (without cables) || 119g<br />
|-<br />
!colspan="100%"| Available interfaces<br />
|-<br />
| USB Host interface || USB 2.0, full speed<br />
|-<br />
| Ethernet Host interface || 10/100 MBit<br />
|-<br />
| RS232 Host interface || RS232 9-pin<br />
|-<br />
| Target interface || JTAG 20-pin (14-pin adapter available)<br />
|-<br />
!colspan="100%"| JTAG Interface, Electrical<br />
|-<br />
| Power Supply || USB powered, 100mA for Flasher PRO. 500 mA if target is powered by Flasher PRO<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| Target supply voltage || Supply voltage is 5V, max.<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6 <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Max. JTAG speed || up to 12MHz<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
<br />
===== Supported CPU cores =====<br />
<br />
The Flasher PRO supports the following CPU cores:<br />
<br />
'''ARM Cortex'''<br><br />
* Cortex-A5<br />
* Cortex-A8<br />
* Cortex-A9<br />
* Cortex-R4<br />
* Cortex-R5<br />
* Cortex-M0<br />
* Cortex-M0+<br />
* Cortex-M1<br />
* Cortex-M3<br />
* Cortex-M4<br />
<br />
'''ARM (legacy cores)'''<br><br />
* ARM720T<br />
* ARM7TDMI<br />
* ARM7TDMI-S<br />
* ARM920T<br />
* ARM922T<br />
* ARM926EJ-S<br />
* ARM946E-S<br />
* ARM966E-S<br />
* ARM1136JF-S<br />
* ARM1136J-S<br />
* ARM1156T2-S<br />
* ARM1156T2F-S<br />
* ARM1176JZ-S<br />
* ARM1176JZF<br />
* ARM1176JZF-S<br />
<br />
'''Renesas RX'''<br><br />
* RX111<br />
* RX210<br />
* RX220<br />
* RX21A<br />
* RX610<br />
* RX621<br />
* RX62G<br />
* RX62N<br />
* RX62T<br />
* RX630<br />
* RX631<br />
* RX63N<br />
* RX63T<br />
<br />
'''Freescale Power PC'''<br><br />
* e200z0<br />
<br />
===== Supported Target interfaces =====<br />
<br />
The Flasher PRO supports the following target interfaces:<br />
<br />
* JTAG<br />
* SWD<br />
* FINE<br />
* SPD<br />
<br />
===== Flasher PRO download speed =====<br />
<br />
The following table lists the Flasher PRO performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! ARM7 memory download<br />
|-<br />
| Flasher PRO || 720 Kbytes/s (12MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
<br />
==== Specifications for Flasher Compact ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Microsoft Windows (x86/x64)<br>Linux (x86/x64/Arm)<br>macOS (x86/Apple M1)<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C<br />
|-<br />
| Storage Temperature || -20 °C ... +65 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
| Size (without cables) || 70mm x 45mm x 18mm<br />
|-<br />
| Weight (without cables) || 40g<br />
|-<br />
| USB Host interface || USB 2.0 (Hi-Speed); Micro USB<br />
|-<br />
| Target interface || JTAG 20-pin (14-pin adapter available)<br />
|-<br />
| Power Supply || USB powered, 130mA (idle)<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| Target supply voltage || Supply voltage is 5V, max.<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
| Supported target interfaces || SPI, QSPI, 8051 C2, cJTAG, FINE, ICSP, IIC, ISP, JTAG, PDI, SPD, SWD, SWIM, UART, UPDI<br />
|-<br />
| Serial transfer rate between Flasher Compact and target || Up to 50 MHz (Depending on target interface)<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6 <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
===== Supported CPU cores =====<br />
<br />
The Flasher Compact supports the following CPU cores:<br />
'''ARM Cortex'''<br><br />
* Cortex-A5<br />
* Cortex-A8<br />
* Cortex-A9<br />
* Cortex-R4<br />
* Cortex-R5<br />
* Cortex-M0<br />
* Cortex-M0+<br />
* Cortex-M1<br />
* Cortex-M3<br />
* Cortex-M4<br />
<br />
'''ARM (legacy cores)'''<br><br />
* ARM720T<br />
* ARM7TDMI<br />
* ARM7TDMI-S<br />
* ARM920T<br />
* ARM922T<br />
* ARM926EJ-S<br />
* ARM946E-S<br />
* ARM966E-S<br />
* ARM1136JF-S<br />
* ARM1136J-S<br />
* ARM1156T2-S<br />
* ARM1156T2F-S<br />
* ARM1176JZ-S<br />
* ARM1176JZF<br />
* ARM1176JZF-S<br />
<br />
'''Renesas RX'''<br><br />
* RX111<br />
* RX210<br />
* RX220<br />
* RX21A<br />
* RX610<br />
* RX621<br />
* RX62G<br />
* RX62N<br />
* RX62T<br />
* RX630<br />
* RX631<br />
* RX63N<br />
* RX63T<br />
<br />
'''Freescale Power PC'''<br><br />
* e200z0<br />
<br />
===== Flasher Compact download speed =====<br />
<br />
The following table lists the Flasher Compact performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! ARM7 memory download<br />
|-<br />
| Flasher Compact || 720 Kbytes/s (12MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
<br />
==== Specifications for Flasher Portable PLUS ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Windows, Linux & MacOS<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C (normal operation)<br>+5 °C ... +45 °C (battery charging)<br />
|-<br />
| Storage Temperature || -20 °C ... +45 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
| 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)<br />
|-<br />
| Charging via USB || 70 minutes (at 1A charging current)<br />
|-<br />
!colspan="100%"| Mechanical<br />
|-<br />
| Size (without cables) || 126mm x 70mm x 28mm<br />
|-<br />
| Weight (without cables) || 140g<br />
|-<br />
!colspan="100%"| Available interfaces<br />
|-<br />
| USB Host interface || USB 2.0<br />
|-<br />
| Target interface || Standard 20-pin 0.1" connector (Adapters available).<br />
|-<br />
!colspan="100%"| Target Interface, Electrical<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| Target supply voltage || Supply voltage is 4.5V, max. (depends on the current battery voltage).<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6 <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Max. JTAG speed || up to 12MHz<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
===== Supported CPU cores =====<br />
<br />
The Flasher Portable PLUS supports the following CPU cores:<br />
<br />
'''ARM Cortex'''<br><br />
* Cortex-A5<br />
* Cortex-A8<br />
* Cortex-A9<br />
* Cortex-R4<br />
* Cortex-R5<br />
* Cortex-M0<br />
* Cortex-M0+<br />
* Cortex-M1<br />
* Cortex-M3<br />
* Cortex-M4<br />
<br />
'''ARM (legacy cores)'''<br><br />
* ARM720T<br />
* ARM7TDMI<br />
* ARM7TDMI-S<br />
* ARM920T<br />
* ARM922T<br />
* ARM926EJ-S<br />
* ARM946E-S<br />
* ARM966E-S<br />
* ARM1136JF-S<br />
* ARM1136J-S<br />
* ARM1156T2-S<br />
* ARM1156T2F-S<br />
* ARM1176JZ-S<br />
* ARM1176JZF<br />
* ARM1176JZF-S<br />
<br />
'''Renesas RX'''<br><br />
* RX111<br />
* RX210<br />
* RX220<br />
* RX21A<br />
* RX610<br />
* RX621<br />
* RX62G<br />
* RX62N<br />
* RX62T<br />
* RX630<br />
* RX631<br />
* RX63N<br />
* RX63T<br />
<br />
'''Freescale Power PC'''<br><br />
* e200z0<br />
<br />
===== Supported Target interfaces =====<br />
<br />
The Flasher Portable PLUS supports the following target interfaces:<br />
* JTAG<br />
* SWD<br />
* FINE<br />
* SPD<br />
<br />
===== Flasher Portable PLUS download speed =====<br />
<br />
The following table lists the Flasher Portable PLUS performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! ARM7 memory download<br />
|-<br />
| Flasher PRO || 720 Kbytes/s (12MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
<br />
==== Specifications for Flasher Portable ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Windows, Linux & MacOS<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C<br />
|-<br />
| Storage Temperature || -20 °C ... +65 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
| Power Supply || a) USB powered, 100mA for Flasher Portable. 500 mA if target is powered by Flasher Portable<br>b) Batteries powered (3xAAA)<br />
|-<br />
!colspan="100%"| Mechanical<br />
|-<br />
| Size (without cables) || 130mm x 65mm x 25mm<br />
|-<br />
| Weight (without cables) || 120g<br />
|-<br />
!colspan="100%"| Available interfaces<br />
|-<br />
| USB Host interface || USB 2.0<br />
|-<br />
| Target interface || Standard 20-pin 0.1" connector (Adapters available).<br />
|-<br />
!colspan="100%"| Target Interface, Electrical<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| Target supply voltage || Supply voltage is 4.5V, max. (depends on the current battery voltage).<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6V <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Max. JTAG speed || up to 12MHz<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
===== Supported CPU cores =====<br />
<br />
The Flasher Portable supports the following CPU cores:<br />
<br />
'''ARM Cortex'''<br><br />
* Cortex-A5<br />
* Cortex-A8<br />
* Cortex-A9<br />
* Cortex-R4<br />
* Cortex-R5<br />
* Cortex-M0<br />
* Cortex-M0+<br />
* Cortex-M1<br />
* Cortex-M3<br />
* Cortex-M4<br />
<br />
'''ARM (legacy cores)'''<br><br />
* ARM720T<br />
* ARM7TDMI<br />
* ARM7TDMI-S<br />
* ARM920T<br />
* ARM922T<br />
* ARM926EJ-S<br />
* ARM946E-S<br />
* ARM966E-S<br />
* ARM1136JF-S<br />
* ARM1136J-S<br />
* ARM1156T2-S<br />
* ARM1156T2F-S<br />
* ARM1176JZ-S<br />
* ARM1176JZF<br />
* ARM1176JZF-S<br />
<br />
'''Renesas RX'''<br><br />
* RX111<br />
* RX210<br />
* RX220<br />
* RX21A<br />
* RX610<br />
* RX621<br />
* RX62G<br />
* RX62N<br />
* RX62T<br />
* RX630<br />
* RX631<br />
* RX63N<br />
* RX63T<br />
<br />
'''Freescale Power PC'''<br><br />
* e200z0<br />
<br />
===== Supported Target interfaces =====<br />
<br />
The Flasher Portable supports the following target interfaces:<br />
<br />
* JTAG<br />
* SWD<br />
* FINE<br />
* SPD<br />
<br />
===== Flasher Portable download speed =====<br />
<br />
The following table lists the Flasher Portable performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! ARM7 memory download<br />
|-<br />
| Flasher PRO || 720 Kbytes/s (12MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
== Working with Flasher ==<br />
<br />
This chapter describes functionality and how to use Flasher.<br />
<br />
=== Flasher Portable PLUS ===<br />
<br />
The Flasher Portable PLUS is a portable version of SEGGERs Flasher family,<br />
which has been designed to fill the need of an extremely portable, production grade,<br />
Flash programmer used for in-field firmware updates. No need to be tethered to an outlet,<br />
it is powered by an integrated Li-Ion cell (680mAh).<br />
The Flasher Portable PLUS programs flash targets in stand-alone mode or via J-Flash PC software.<br><br />
<br />
Furthermore the Flasher Portable PLUS allows the user to select between eight data images to be programmed.<br />
The images can be easily selected by using the SEL button on the front of the housing.<br />
For more information about support for multiple images, please refer to [[#Multiple File Support | Multiple File Support]].<br><br />
For setup and configuration purposes, the Flasher Portable PLUS connects to a PC via USB interface,<br />
running Windows, Linux & MacOS and has a built-in standard 20-pin J-Link target connector.<br><br />
<br />
{{Note|1=Ethernet and RS232 as host interface are not available for the Flasher Portable PLUS.}}<br />
<br />
==== Housing & Buttons ====<br />
<br />
The Flasher Portable PLUS comes with a display, which is for example used to represent the status of an ongoing flash progress.<br />
Furthermore, there are three buttons which allow the user to control Flasher Portable PLUS.<br />
For a detailed description of the functions, take a look at the table below:<br />
<br />
<!-- LG xxxxxx edit image with labels for buttons? (Is this actually necessary? Buttons are basically self-explanatory...) --><br />
[[File:Flasher_Portable_PLUS.png | 500px]]<br />
<br />
{| class="seggertable"<br />
|-<br />
! Button !! Description<br />
|-<br />
| Program || Start programming process with the currently selected image.<br />
|-<br />
| Select image || Select the image to be programmed next time the Program button is pressed.<br />
|-<br />
| 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.<br />
|-<br />
|}<br />
<br />
==== Configuration ====<br />
<br />
The Flasher Portable PLUS has some configuration options the other Flashers do not have.<br />
{| class="seggertable"<br />
|-<br />
! Option !! Description !! Value range !! Default value<br />
|-<br />
| AutoPowerOffOnIdle || Specifies the time interval after which the Flasher Portable will turn off without any user action || 1 to 3600 || 60<br />
|-<br />
| ShowDatCRCAfterProgramming || Activates displaying the data file CRC after the programming in the pop up message || 0 = inactive, 1 = active || 0<br />
|-<br />
|}<br />
<br />
If the <tt>Flasher.ini</tt> does not contain a <tt>[Config]</tt> section with the configuration option, the default value is used.<br />
<br />
'''Example:'''<br><br />
This sample will show the data file CRC after the programming and the auto power of is set to five minutes (=300 seconds).<br />
<br />
<source lang="c"><br />
[CONFIG]<br />
AutoPowerOffOnIdle = "300"<br />
ShowDatCRCAfterProgramming = "1"<br />
</source><br />
<br />
=== Flasher Portable ===<br />
<br />
The Flasher Portable is a portable version of SEGGERs Flasher family, which has been designed to fill the need of an extremely portable,<br />
production grade, Flash programmer used for in-field firmware updates. No need to be tethered to an outlet,<br />
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><br />
<br />
Furthermore the Flasher Portable allows the user to select between four data images to be programmed.<br />
The images can be easily selected by using the arrow buttons on the front of the housing.<br />
For more information about support for multiple images, please refer to [[#Multiple File Support | Multiple File Support]].<br><br />
For setup and configuration purposes, the Flasher Portable connects to a PC via USB interface,<br />
running Windows, Linux & MacOS and has a built-in standard 20-pin J-Link target connector.<br><br />
<br />
{{Note|1=Ethernet and RS232 as host interface are not available for the Flasher Portable.}}<br />
<br />
==== Housing & Buttons ====<br />
<br />
The Flasher Portable comes with several leds which are for example used to represent the status of an ongoing flash progress.<br />
Furthermore, there are three buttons which allow the user to control Flasher Portable.<br />
For a detailed description of the functions, take a look at the two tables below:<br />
<br />
<!-- LG xxxxxx edit image with labels for buttons?--><br />
[[File:Flasher_Portable_Top_2.png | 500px]]<br />
<br />
{| class="seggertable"<br />
|-<br />
! LED !! Description<br />
|-<br />
| ACTIVE || GREEN. Blinks while the Flasher Portable is busy / performs operations on the target.<br />
|-<br />
| PASS/FAIL || GREEN/RED. Indicates, if the last flashing cycle was successful.<br />
<ul><br />
<li> GREEN: Flashing cycle completed successfully.</li><br />
<li> RED: Flashing cycle completed with error.</li><br />
</ul><br />
|-<br />
| 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]].<br />
|-<br />
| POWER || GREEN: Indicates if Flasher is currently powered. Blinks while Flasher Portable tries to enumerate via USB.<br />
|-<br />
| 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.<br />
|-<br />
|}<br />
<br />
{| class="seggertable"<br />
|-<br />
! Button !! Description<br />
|-<br />
| Program || Start programming process with the currently selected image.<br />
|-<br />
| Select image || Select the image to be programmed next time the <tt>Program</tt> button is pressed.<br />
|-<br />
| 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<br />
|-<br />
|}<br />
<br />
=== File system ===<br />
<br />
The Flasher supports 8.3 filenames only (8 characters filename, 3 characters file extension).<br />
Using longer filenames may result in incorrect operation. Integrated functions,<br />
like the FTP server or the terminal server, will refuse writing files with long filenames.<br />
<br />
=== Setting up the IP interface ===<br />
<br />
Setting up the IP interface<br />
Some of the Flasher models come with an additional Ethernet interface to communicate with the host system.<br />
These Flashers also come with a built-in webserver which allows some basic setup of the emulator,<br />
e.g. configuring a default gateway which allows using it even in large intranets. For more information,<br />
please refer to [[#TCP Services | TCP Services]].<br />
<br />
==== Connecting the first time ====<br />
<br />
When connecting Flasher the first time, it attempts to acquire an IP address via DHCP.<br />
The recommended way for finding out which IP address has been assigned to Flasher is, to use the J-Link Configurator.<br />
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.<br />
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''.<br />
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,<br />
please refer to ''UM08001, J-Link / J-Trace User Guide'', chapter ''Setup'', section ''Setting up the IP interface''.<br />
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]].<br />
<br />
=== Operating modes ===<br />
<br />
All Flashers except the Flasher ATE are able to boot in 3 different modes:<br />
<br />
* PC-based mode<br />
* Stand-alone mode<br />
* File access mode<br />
<br />
{{Note|1=The Flasher ATE only supports the stand-alone mode.}}<br />
<br />
'''Definition PC-based mode'''<br><br />
Flasher is connected to a PC via USB/Ethernet and controlled by a PC application (J-Flash).<br />
If there is an RS232 connection to a PC, does not have any influence on if PC-based mode is entered or not.<br />
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, ...)<br />
<br />
'''Definition Stand-alone mode'''<br><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.<br />
<br />
'''Definition file access mode'''<br><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.<br />
In this mode, Flasher enumerates as a mass storage device (like an USB Stick) at the host PC.<br />
In this mode, configuration + data files can be manually placed on the Flasher and the Flasher logfile can be read out.<br />
If you are using a self-powered Flasher such as the Flasher Portable Plus, the Flasher must be turned off before connecting it.<br />
<br />
==== PC-based mode ====<br />
If you want to use Flasher for the first time you need to install the J-Link software and documentation package.<br />
After installation, connect Flasher to the host PC via USB or Ethernet.<br />
For more information about how to install the J-Link software and documentation package please refer to [[J-Link Software and Documentation Pack]].<br />
<br />
===== Connecting the target system =====<br />
<br />
'''Power-on sequence'''<br><br />
In general, Flasher should be powered on before connecting it with the target device.<br />
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.<br />
Power-on the device after you connected Flasher to it. Flasher will boot in "PC-based mode".<br />
<br />
'''Verifying target device connection with J-Link.exe'''<br><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.<br />
Then start the J-Link command line tool <tt>JLink.exe</tt>,<br />
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.<br />
The screenshot below shows the output of <tt>JLink.exe</tt>.<br />
<br />
[[File:flasher_jlinkmode.gif]]<br />
<br />
===== LED status indicators =====<br />
<br />
In PC-based mode, there are also certain LED status codes defined:<br />
<br />
{| class="seggertable"<br />
|-<br />
! # !! Status of LED !! Meaning<br />
|-<br />
| 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.<br />
|-<br />
| 0 || GREEN<br>constant || Flasher enumeration process is complete and it is ready to be controlled by a PC application.<br />
|-<br />
|}<br />
<br />
==== Stand-alone mode ====<br />
<br />
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]].<br />
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).<br />
In the "stand-alone mode" Flasher can be used as a stand-alone flash programmer.<br><br />
<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]].}}<br />
<br />
===== LED status indicators =====<br />
Progress and result of an operation is indicated by Flasher's LEDs. The behavior is different for J-Link and stand-alone mode.<br />
For a definition of the different modes, please refer to [[#Operating modes | Operating modes]].<br />
The following table describes the behavior of the LEDs in stand-alone mode.<br />
<br />
{| class="seggertable"<br />
|-<br />
! # !! Status of LED !! Meaning<br />
|-<br />
| 0 || GREEN<br>constant || Flasher waits for a start trigger to perform an operation in stand-alone mode.<br />
|-<br />
| 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><br />
|-<br />
| 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.<br />
|-<br />
|}<br />
Older Flasher models have a different behavior.<br />
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:<br />
<br />
* 1621xxxxx (Flasher ARM V2)<br />
* 1630xxxxx (Flasher ARM V3)<br />
* 4210xxxxx (Flasher PPC V1)<br />
* 4110xxxxx (Flasher RX V1)<br />
<br />
{| class="seggertable"<br />
|-<br />
! # !! Status of LED !! Meaning<br />
|-<br />
| 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.<br />
|-<br />
| 1 || GREEN<br>constant || Connect to target and perform init sequence.<br />
|-<br />
| 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><br />
|-<br />
| 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.<br />
|-<br />
|}<br />
<br />
==== File access mode ====<br />
<br />
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".<br />
If you are using a self-powered Flasher such as the Flasher Portable Plus, the Flasher must be turned off before connecting it.<br />
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.<br />
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>.<br />
<br />
[[File:flasher_mode_msd.gif]]<br />
<br />
<tt>FLASHER.CFG</tt> contains the configuration settings for programming the target device and <tt>FLASHER.DAT</tt> contains the data to be programmed.<br />
<tt>FLASHER.LOG</tt> contains all logging information about the commands, performed in stand-alone mode.<br />
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><br />
<br />
Currently, J-Flash does not support to configure Flasher for automated serial number programming.<br><br />
<br />
If you want to configure multiple Flasher for the same target you do not have to use J-Flash all the time.<br />
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".<br />
<br />
=== Setting up Flasher for stand-alone mode ===<br />
<br />
In order to set up Flasher for the stand-alone mode it needs to be configured once using the J-Flash software.<br />
For more information about J-Flash, please refer to the ''J-Flash User Guide''.<br><br />
<br />
After starting J-Flash, open the appropriate J-Flash project for the target Flasher shall be configured for, by selecting '''File''' -> '''Open Project'''.<br />
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><br />
<br />
After the appropriate project has been opened / created, the data file which shall be programmed needs to be loaded, by selecting '''File''' -> '''Open'''.<br />
After this J-Flash should look like in the screenshot below.<br />
<br />
[[File:jflash_projectfile_datafile.gif]]<br />
<br />
Before downloading the configuration (project) and program data (data file) to Flasher, the connection type (USB/IP) needs to be selected in the project.<br />
These settings are also saved on a per-project basis, so this also only needs to be setup once per J-Flash project.<br />
The connection dialog is opened by clicking '''Options''' -> '''Project settings''' -> '''General'''.<br />
<br />
[[File:jflash_connection_dialog.gif]]<br />
<br />
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.<br />
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.<br />
The user then can simply select the Flash he wants to download the configuration to.<br />
<br />
[[File:EmuSelectionDialog.gif]]<br />
<br />
In order to download the configuration and program data to the Flasher, simply select '''File''' -> '''Download config & data file to Flasher'''.<br />
<br />
[[File:jflash_download_to_emul.gif]]<br />
<br />
The J-Flash log window indicates that the download to the emulator was successful.<br />
<br />
[[File:jflash_download_to_emu_succ.gif]]<br />
<br />
From now on, Flasher can be used in stand-alone mode (without host PC interaction) for stand-alone programming.<br />
<br />
==== Preparing for stand-alone operation manually ====<br />
<br />
As an alternative, J-Flash can also be used to save config and data file to a hard drive.<br><br />
<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,<br />
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.<br />
<br />
'''Creating config and data files'''<br><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><br />
<br />
For some devices, additional files (*.PEX) are needed.<br />
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.<br />
<br />
'''About *.PEX files'''<br><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,<br />
the following needs to be taken care of:<br><br />
<br />
For some devices, special connect, reset etc. sequences are necessary which are stored in so-called *.PEX files on the Flasher.<br><br />
<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><br />
<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><br />
The *.PEX files need to be placed in a subdirectory with the same name as the corresponding *.cfg file.<br />
J-Flash creates a directory with the correct name automatically when a config file is created.<br><br />
<br />
Example:<br><br />
<br />
MyConf0 is a project for a device that requires a *.PEX file for connect.<br><br />
MyConf1 is a project for a device that requires no *.PEX file at all.<br />
<br />
[[File:PEX_File_Flasher.png]]<br />
<br />
=== Universal Flash Loader mode ===<br />
<br />
As an alternative to the stand-alone mode, configured via J-Flash, there is the Universal Flash Loader mode.<br />
While the normal stand-alone mode relies on using the debug interface of the device, the Universal Flash Loader<br />
mode uses device or vendor specific programming interfaces and protocols and therefore it is independent of the<br />
CPU core.<br><br />
<br />
The Universal Flash Loader is available for the following Flasher models:<br />
* Flasher PRO<br />
* Flasher Compact<br />
* Flasher Portable PLUS<br />
<br />
For some of the supported devices, SEGGER offers specific adapters.<br />
<br />
==== Preparing manually ====<br />
<br />
The Universal Flash Loader uses an configuration file (*.UNI), a device specific flash programming algorithm (*.PEX) and a data file (*.DAT).<br />
<br />
===== Configuration =====<br />
<br />
The configuration file basically is split into three parts.<br />
The first part, the section [DEVICE], controls the generic behavior of the Universal Flash Loader.<br />
It specifies which protocol driver and data file to use. It allows enabling and configuring target power<br />
and it defines which actions to perform.<br />
The second part consists of one or more [BANKx] sections, which contain information about the memories.<br />
The third part, the section [CONFIG], includes configuration settings for the protocol driver.<br><br />
<br />
An .UNI file might look as follows:<br><br />
<br />
<source lang="c"><br />
[OPTIONS]<br />
TargetPower = "0"<br />
ChipErase = "0"<br />
<br />
[TASKS]<br />
CheckBlank = "1"<br />
Erase = "1"<br />
Program = "1"<br />
Verify = "1"<br />
Secure = "1"<br />
<br />
[DEVICE]<br />
Algo = "RL78.PEX"<br />
Data = "ALL_6k.dat"<br />
<br />
[BANK0]<br />
; Code Flash<br />
Base = "0x00000000"<br />
Size = "0x00004000"<br />
Sect = "0x00000400"<br />
<br />
[BANK1]<br />
; Data Flash<br />
Base = "0x000F1000"<br />
Size = "0x00000800"<br />
Sect = "0x00000400"<br />
<br />
[CONFIG]<br />
BaudRate = "1000000"<br />
ClearConfigOnConnect = "0x00"<br />
Security = "0xFF"<br />
ShieldStart = "0x0000"<br />
ShieldEnd = "0x000F"<br />
</source><br />
<br />
'''[OPTIONS]'''<br><br />
'''TargetPower'''<br><br />
If set to a value >0, power is applied to the target.<br />
The value defines the delay (in ms) after enabling the target power supply and before starting to communicate with the target.<br />
<br />
'''ChipErase'''<br><br />
If set to 1, the chip erase function is called for erasing the chip.<br><br />
{{Note|1=Do not enable this setting if the flash programming algorithm does not support chip erase.}}<br />
<br />
'''[TASKS]'''<br><br />
'''CheckBlank'''<br><br />
Defines if a blank check should be performed before erasing a sector.<br />
<br />
'''Erase'''<br><br />
Defines if the sector should be erased before programming.<br />
<br />
'''Program'''<br><br />
Defines if the sector should be programmed.<br />
<br />
'''Verify'''<br><br />
Defines if the sector should be verified after programming.<br />
<br />
'''Secure'''<br><br />
Defines if the device should be secured or protected against read-out after verifying.<br />
<br />
'''[DEVICE]'''<br><br />
'''Algo'''<br><br />
File name of the flash programming algorithm. This file is provided by SEGGER and will typically support a series of devices.<br />
<br />
'''Data'''<br><br />
File name of the data file to program. The Flasher only supports the Flasher .dat file format.<br />
Flasher .dat files can be generated by J-Flash or Universal Flash Loader and offer high performance together with high flexibility.<br />
<br />
'''[BANKx]'''<br><br />
x blocks with configuration data for the flash banks. All three parameters (Base, Size and Sect) are mandatory.<br />
<br />
'''Base'''<br><br />
Base address of the flash bank.<br />
<br />
'''Size'''<br><br />
Total size of the flash bank.<br />
<br />
'''Sect'''<br><br />
Sector size of the flash bank.<br />
<br />
'''[CONFIG]'''<br><br />
This section includes specific configuration data for the flash programming algorithm.<br><br />
There are no general parameters.<br />
<br />
{{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. }}<br />
<br />
==== Preparing using the PC utility ====<br />
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.<br />
<br />
[[File:Universal Flash Loader.png]]<br />
<br />
The Universal Flash Loader Configurator comes with a large list of devices and flash programming algorithms. If you are going to<br />
use a device from one of the supported families which currently is not available in the utility, feel free to contact the support.<br />
<br />
=== Multiple File Support ===<br />
<br />
It is also possible to have multiple data files and config files on Flasher, to make Flasher more easy to use in production environment.<br />
To choose the correct configuration file and data file pair, a <tt>FLASHER.INI</tt> file is used.<br />
This init file contains a <tt>[FILES]</tt> section which describes which configuration file and which data file should be used for programming.<br />
A sample content of a FLASHER.INI file is shown below:<br><br />
<br />
<source><br />
[FILES]<br />
DataFile = "Flasher1.dat"<br />
ConfigFile = "Flasher1.cfg"<br />
</source><br />
<br />
Using this method all configuration files and data files which are used in the production only have to be downloaded once.<br />
From there on a configuration file / data file pair can be switched by simply replacing the <tt>FLASHER.INI</tt> by a new one,<br />
which contains the new descriptions for the configuration file and data file. The <tt>FLASHER.INI</tt> can be replaced in two ways:<br />
<ol><br />
<li>Boot Flasher in file access mode in order to replace the <tt>FLASHER.INI</tt></li><br />
<li><br />
If Flasher is already integrated into the production line, runs in stand-alone mode and can not be booted in other mode:<br />
Use the file I/O commands provided by the ASCII interface of Flasher, to replace the <tt>FLASHER.INI</tt>.<br />
For more information about the file I/O commands, please refer to [[#File I/O commands | File I/O commands]].<br />
</li><br />
</ol><br />
{{Note|1=Flasher supports 8.3 filenames only (8 characters filename, 3 characters file extension). Using longer filenames may result in incorrect operation.}}<br />
<br />
==== Flasher Portable specifics ====<br />
<br />
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><br />
<br />
Which config / data file pair is used for which image selection position is determined by the contents of the FLASHER.INI.<br />
For this, the FLASHER.INI contents in the <tt>[FILES]</tt> section have been extended.<br />
The sample below shows how to enable the user to select between four different images on the Flasher portable via the select / arrow button:<br />
<br />
<source><br />
[FILES]<br />
DataFile = "First.dat"<br />
ConfigFile = "First.cfg"<br />
DataFile1 = "Second.dat"<br />
ConfigFile1 = "Second.cfg"<br />
DataFile2 = "Third.dat"<br />
ConfigFile2 = "Third.cfg"<br />
DataFile3 = "Fourth.dat"<br />
ConfigFile3 = "Fourth.cfg"<br />
</source><br />
<br />
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.<br />
From there on, switching between the files can be done by simply using the selection button of Flasher Portable.<br />
<br />
===== Example =====<br />
<br />
1 Target, 2 Datafiles (e.g. boot loader und application) --> same configuration file (*.CFG) but different data files (*.DAT) should be used.<br><br />
<br />
* Open pre-configured J-Flash project<br />
* File -> Save Flasher config file ... (DEFAULT.CFG)<br />
* Open data file 1 (boot loader)<br />
* File -> Save Flasher data file ... (BOOT.DAT)<br />
* Open data file 2 (application)<br />
* File -> Save Flasher data file ... (APP.DAT)<br />
* Create the a FLASHER.INI file (content see below)<br />
* Connect the Flasher in file access mode to the PC<br />
* Copy DEFAULT.CFG, BOOT.DAT, APP.DAT and FLASHER.INI on the Flasher<br />
<br />
FLASHER.INI content:<br><br />
<br />
<source><br />
[FILES]<br />
DataFile = "BOOT.DAT"<br />
ConfigFile = "DEFAULT.CFG"<br />
DataFile1 = "APP.DAT"<br />
ConfigFile1 = "DEFAULT.CFG"<br />
</source><br />
<br />
==== Flasher Portable PLUS specifics ====<br />
<br />
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><br />
<br />
Which config / data file pair is used for which image selection position is determined by the contents of the FLASHER.INI.<br />
For this, the FLASHER.INI may contain several <tt>[BATCH]</tt> sections.<br />
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:<br />
<br />
<source><br />
[BATCH]<br />
DataFile = "First.dat"<br />
ConfigFile = "First.cfg"<br />
[BATCH1]<br />
DataFile = "Second.dat"<br />
ConfigFile = "Second.cfg"<br />
[BATCH2]<br />
DataFile = "Third.dat"<br />
ConfigFile = "Third.cfg"<br />
[BATCH7]<br />
DataFile = "Proj_8.dat"<br />
ConfigFile = "Proj_8.cfg"<br />
[BATCH15]<br />
DataFile = "Proj_16.dat"<br />
ConfigFile = "Proj_16.cfg"<br />
</source><br />
<br />
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.<br />
From there on, switching between the files can be done by simply using the selection button of Flasher Portable PLUS.<br />
<br />
Please also consider the chapter [[#Batch Programming in stand-alone mode | Batch Programming in stand-alone mode]].<br />
<br />
{{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.}}<br />
{{Note|1=You may have gaps in the list. The missing entries will be skipped when selecting the next configuration.}}<br />
{{Note|1=The <tt>[Files]</tt> section is supported by the Flasher Portable PLUS, too. But the number of configuration is limited to four.}}<br />
<br />
===== Example =====<br />
<br />
1 Target, 2 Datafiles (e.g. boot loader und application) --> same configuration file (*.CFG) but different data files (*.DAT) should be used.<br><br />
<br />
* Open pre-configured J-Flash project<br />
* File -> Save Flasher config file ... (DEFAULT.CFG)<br />
* Open data file 1 (boot loader)<br />
* File -> Save Flasher data file ... (BOOT.DAT)<br />
* Open data file 2 (application)<br />
* File -> Save Flasher data file ... (APP.DAT)<br />
* Create the a FLASHER.INI file (content see below)<br />
* Connect the Flasher in file access mode to the PC<br />
* Copy DEFAULT.CFG, BOOT.DAT, APP.DAT and FLASHER.INI on the Flasher<br />
<br />
FLASHER.INI content:<br><br />
<br />
<source><br />
[BATCH]<br />
DataFile = "BOOT.DAT"<br />
ConfigFile = "DEFAULT.CFG"<br />
DisplayName = "Bootloader"<br />
[BATCH1]<br />
DataFile = "APP.DAT"<br />
ConfigFile = "DEFAULT.CFG"<br />
DisplayName = "Application"<br />
[BATCH2]<br />
DataFile = "BOOT.DAT"<br />
ConfigFile = "DEFAULT.CFG"<br />
DataFile1 = "APP.DAT"<br />
ConfigFile1 = "DEFAULT.CFG"<br />
DisplayName = "BL and App"<br />
</source><br />
<br />
=== Custom labels ===<br />
<br />
Flasher supports to assign custom labels to configurations. This allows to specify easy to remember names for configurations that are stored on the Flasher.<br />
<br />
==== Hardware and software requirements ====<br />
This feature is supported by the following models:<br />
* Flasher Portable PLUS<br />
<br />
This feature is supported since V6.30e of the software package and firmware<br />
<br />
==== Assigning labels ====<br />
The configuration and data file pairs are specified in the <tt>FLASHER.INI</tt> file:<br />
<source><br />
[FILES]<br />
DataFile = "IMAGE0.dat"<br />
ConfigFile = "IMAGE0.cfg"<br />
DataFile1 = "IMAGE1.dat"<br />
ConfigFile1 = "IMAGE1.cfg"<br />
</source><br />
<br />
By default, Flasher will show the names of the configuration and data file:<br />
[[File:FW1_smartwatch_nolabel.png]]<br />
[[File:FW2_smart_meter_nolabel.png]]<br />
<br />
By adding <tt>DisplayName</tt>, <tt>DisplayName1</tt>, ... keys to the <tt>FLASHER.INI</tt>, a custom label can be shown instead:<br />
<source><br />
[FILES]<br />
DisplayName = "FW smartwatch"<br />
DataFile = "IMAGE0.dat"<br />
ConfigFile = "IMAGE0.cfg"<br />
DisplayName1 = "FW smart meter"<br />
DataFile1 = "IMAGE1.dat"<br />
ConfigFile1 = "IMAGE1.cfg"<br />
</source><br />
<br />
The images will now be shown as follows:<br />
[[File:FW1_smartwatch_label.png]]<br />
[[File:FW2_smart_meter_label.png]]<br />
<br />
==== Considerations ====<br />
* 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.<br />
<br />
=== Programming multiple targets ===<br />
<br />
It is possible to program multiple targets which are located in a JTAG chain.<br />
The targets will be programmed each with a configuration and a data file.<br />
The configuration for the desired target must be selected before it can be programmed,<br />
this can be done with the <tt>#SELECT</tt> command.<br />
For more information how to use the <tt>#SELECT</tt> command please refer to Chapter "3.3.5 ''Commands to Flasher''".<br />
<br />
'''Example'''<br><br />
Three devices should be programmed.<br><br />
<br />
JTAG Chain: ''TDI'' --> ''Device2'' --> ''Device1'' --> ''Device0'' --> ''TDO''<br><br />
<br />
Three configurations would be stored on the flasher:<br><br />
<br />
Config 0: Configured to program Device0 (DEVICE0.CFG, DEVICE0.DAT)<br><br />
Config 1: Configured to program Device1 (DEVICE1.CFG, DEVICE1.DAT)<br><br />
Config 2: Configured to program Device2 (DEVICE2.CFG, DEVICE2.DAT)<br><br />
<br />
Selection and programming of the target will be done via the ASCII interface:<br><br />
<br />
<source><br />
#SELECT DEVICE0<br />
#AUTO<br />
#SELECT DEVICE1<br />
#AUTO<br />
#SELECT DEVICE2<br />
#AUTO<br />
</source><br />
<br />
==== Programming multiple targets with J-Flash ====<br />
<br />
Programming multiple targets can also be done via J-Flash using the command line interface.<br />
For this each target must be handled with its own project file.<br />
<br />
'''Example'''<br><br />
<br />
<source><br />
JFlash.exe -openproj"Device0.jflash" -open"Device0.hex" -auto -exit<br />
JFlash.exe -openproj"Device1.jflash" -open"Device1.hex" -auto -exit<br />
JFlash.exe -openproj"Device2.jflash" -open"Device2.hex" -auto -exit<br />
</source><br />
<br />
=== Batch Programming in stand-alone mode ===<br />
<br />
Batch programming allows to execute different stand-alone mode jobs in batch to be executed in immediate succession, without any user interaction in between.<br />
This can be used for example to program multiple targets in a JTAG-Chain or multiple data files to a target.<br><br />
A batch may contains an unlimited number of configurations which consist of a data file (*.DAT) and config file (*.CFG).<br />
For further information regarding config and data files, please refer to [[#Preparing for stand-alone operation manually | Preparing for stand-alone operation manually]].<br><br />
In order to specify the batch jobs, a FLASHER.INI file is used.<br />
This init file contains a [BATCH] section which describes which configuration pairs (*.DAT and *.CFG file) should be used for each batch job.<br />
A sample content of a FLASHER.INI file is shown below:<br><br />
<br />
<source><br />
[BATCH]<br />
DataFile = "Flasher0.dat"<br />
ConfigFile = "Flasher0.cfg"<br />
DataFile1 = "Flasher1.dat"<br />
ConfigFile1 = "Flasher1.cfg"<br />
</source><br />
<br />
[[File:Batch_Jobs.bmp]]<br />
<br />
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.<br />
<br />
<br />
[[File:Batch_Programming.bmp]]<br />
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<br />
currently executed action.<br />
<br />
<br />
[[File:Batch_Result.bmp]]<br />
The result of the programming will be shown on the screen after finishing all jobs.<br />
<br />
<br />
Creating / Replacing of the FLASHER.INI file can done in two ways:<br><br />
<ol><br />
<li>Boot Flasher in file access mode in order to replace the FLASHER.INI</li><br />
<li><br />
If Flasher is already integrated into the production line, runs in stand-alone mode and can not be booted in other mode:<br />
Use the file I/O commands provided by the ASCII interface of Flasher, to replace the FLASHER.INI .<br />
For more information about the file I/O commands, please refer to [[#File I/O commands | File I/O commands]].<br />
In case of an error occurred during execution, the Flasher terminates the entire batch processing.<br />
</li><br />
</ol><br />
{{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.}}<br />
{{Note|1=Flasher supports 8.3 filenames only (8 characters filename, 3 characters file extension). Using longer filenames may result in incorrect operation.}}<br />
<br />
==== Flasher Portable specifics ====<br />
<br />
Flasher Portable allows to choose between four different batches during runtime by using the select/arrow button on the front of Flasher Portable.<br />
Which batch configuration is used for which image selection position is specified in the FLASHER.INI.<br />
For this, the FLASHER.INI contents in the [BATCH] section have been extended.<br />
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><br />
<br />
<source><br />
[BATCH]<br />
DataFile = "Flasher0.dat"<br />
ConfigFile = "Flasher0.cfg"<br />
DataFile1 = "Flasher1.dat"<br />
ConfigFile1 = "Flasher1.cfg"<br />
DataFile2 = "Flasher2.dat"<br />
ConfigFile2 = "Flasher2.cfg"<br />
[BATCH1]<br />
DataFile = "TEST.dat"<br />
ConfigFile = "Test.cfg"<br />
[BATCH2]<br />
DataFile = "VALIDATE.dat"<br />
ConfigFile = "Flasher0.cfg"<br />
</source><br />
<br />
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.<br />
From there on, switching between the batches can be done by simply using the selection button of Flasher Portable.<br />
<br />
<br />
<br />
==== Examples ====<br />
<br />
'''Example 1:''' Programming two Data files to the same target<br><br />
<br />
* Open your J-Flash project.<br />
* Use File -> Save Flasher config file... to save the .CFG file (in this example: STM32F4.CFG).<br />
* Select the first binary and use File -> Save Flasher Data file... to save the first .DAT file (in this example: DATA0.DAT).<br />
* Select the second binary and use File -> Save Flasher Data file... to save the second data file .DAT file (in this example: DATA1.DAT).<br />
* Copy the Files to the Flasher e.g. by using file access mode.<br />
* Create a FLASHER.INI file in the root directory of the Flasher.<br />
* Exemplary content of FLASHER.INI:<br><br />
<source><br />
[BATCH]<br />
DataFile = "DATA0.dat"<br />
ConfigFile = "emPower.cfg"<br />
DataFile1 = "DATA1.dat"<br />
ConfigFile1 = "emPower.cfg"<br />
</source><br />
<br />
<br />
'''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><br />
Example scenario: 2 Devices in a JTAG chain, a STM32F1 and a STM32F4. <br><br />
<br />
* Follow the same as described before and additionally:<br />
* Create one project file per target (and create a .CFG file of each one).<br />
* Make sure each project file is configured correctly, especially the JTAG-Chain position (See UM8003 "J-Flash" for more detailed info).<br />
* Exemplary content of FLASHER.INI:<br><br />
<source><br />
[BATCH]<br />
DataFile = "F1DATA.dat"<br />
ConfigFile = "STM32F1.cfg"<br />
DataFile1 = "F4DATA0.dat"<br />
ConfigFile1 = "STM32F4.cfg"<br />
DataFile2 = "F4DATA1.dat"<br />
ConfigFile2 = "STM32F4.cfg"<br />
</source><br />
<br />
'''Example 3:''' Using multiple Batch sections with Flasher Portable.<br><br />
Example scenario: 2 Devices in a JTAG chain, a STM32F1 and a STM32F4.<br><br />
Selection 1 will program the STM32F1 target.<br><br />
Selection 2 will program the STM32F4 target using "F4DATA0.dat".<br><br />
Selection 3 will program the STM32F4 target using "F4DATA1.dat".<br><br />
Selection 4 will execute 1, 2 and 3 in sequence.<br><br />
* Exemplary content of FLASHER.INI:<br><br />
<source><br />
[BATCH]<br />
DataFile = "F1DATA.dat"<br />
ConfigFile = "STM32F1.cfg"<br />
[BATCH1]<br />
DataFile = "F4DATA0.dat"<br />
ConfigFile = "STM32F4.cfg"<br />
[BATCH2]<br />
DataFile = "F4DATA1.dat"<br />
ConfigFile = "STM32F4.cfg"<br />
[BATCH3]<br />
DataFile = "F1DATA.dat"<br />
ConfigFile = "STM32F1.cfg"<br />
DataFile1 = "F4DATA0.dat"<br />
ConfigFile1 = "STM32F4.cfg"<br />
DataFile2 = "F4DATA1.dat"<br />
ConfigFile2 = "STM32F4.cfg"<br />
</source><br />
<br />
=== Serial number programming ===<br />
<br />
Flasher supports programming of serial numbers. In order to use the serial number programming feature,<br />
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><br />
<br />
In general, Flasher supports two ways of programming a serial number into the target:<br><br />
<ol><br />
<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><br />
<li><br />
Programming custom serial numbers from a serial number list file.<br />
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.<br />
Serial number list file needs to be specified and created by user.<br />
</li><br />
</ol><br />
In the following some generic information how to setup Flasher & the J-Flash project for serial number programming are given.<br><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.}}<br />
{{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.}}<br />
<br />
==== Serial number settings ====<br />
<br />
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.<br />
This is done by enabling the '''Program serial number''' option as shown in the screenshot and table below:<br><br />
<br />
[[File:SN_Sample_JFlashSettings.gif]]<br />
<br />
{| class="seggertable"<br />
|-<br />
! Setting !! Meaning<br />
|-<br />
| <tt>Address</tt> || The address the serial number should be programmed at.<br />
|-<br />
| <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.<br />
|-<br />
| <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.<br />
|-<br />
| <tt>Increment</tt> || Specifies how much <tt>Next SN</tt> is incremented.<br />
|-<br />
|}<br />
<br />
==== Serial number file ====<br />
<br />
When selecting '''File -> Download serial number file to Flasher''', J-Flash will create a Serial number file named as <tt><JFlashProjectName>_Serial.txt</tt>.<br />
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.<br />
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.<br />
<br />
==== Serial number list file ====<br />
<br />
In order to program custom serial numbers which can not be covered by the standard serial number scheme provided by J-Flash<br />
(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.<br />
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.<br />
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><br />
* One serial number per line<br />
* Each byte of the serial number is described by two hexadecimal digits.<br />
<br />
'''Example'''<br><br />
A 8-byte serial number should be programmed at address 0x08000000.<br><br />
<br />
It should be programmed as follows in the memory:<br><br />
<br />
<tt>0x08000000: 0x01 0x02 0x03 0x04 0x55 0x66 0x77 0x88</tt><br><br />
<br />
The serial number list file should look as follows:<br><br />
<br />
<tt>0102030455667788</tt><br />
<br />
[[File:SN_SNList.gif]]<br />
<br />
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><br />
<br />
Which line Flasher will read at the next programming cycle, is configured via the <tt>Next SN</tt> option in J-Flash.<br />
For more information, please refer to [[#Serial number settings | Serial number settings]].<br />
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><br />
<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.}}<br />
{{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.}}<br />
<br />
==== Programming process ====<br />
<br />
Flasher will increment the serial number in SERIAL.TXT by the value defined in <tt>Increment</tt>, after each successful programming cycle.<br><br />
<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><br />
<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.<br />
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.}}<br />
<br />
==== Downloading serial number files to Flasher ====<br />
<br />
Downloading the serial number files needs to be done explicitly by selecting '''File-> Download serial number file to Flasher'''.<br />
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.<br />
<br />
==== Sample setup ====<br />
<br />
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.<br />
<br />
'''Defining serial number address, length and start value'''<br><br />
In the J-Flash project the following needs to be defined:<br><br />
* <tt>Address</tt> is 0x08001000<br />
* <tt>Next SN</tt> is 1234567<br />
* <tt>Increment</tt> is 1<br />
* <tt>Len</tt> is 4 (bytes)<br />
<br />
[[File:SN_Sample_JFlashSettings.gif]]<br />
<br />
'''Downloading configuration, data and serial number to Flasher.'''<br><br />
After setting up the rest of the configuration (Target interface etc.) and selecting an appropriate data file, the configuration,<br />
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><br />
<br />
[[File:SN_Sample_DownloadToFlasher.gif]]<br />
<br />
After downloading the serial number to Flasher, J-Flash also created the <tt><JFlashProjectName>_Serial.txt</tt>.<br />
<br />
[[File:SN_Sample_SerialFileCreated.gif]]<br />
<br />
Now Flasher is prepared to program the 8-byte serial number.<br />
<br />
=== Patch file support ===<br />
<br />
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.<br />
Before starting programming process in stand-alone mode, Flasher will look for a file named <tt>Patches.txt</tt> being present on the Flasher.<br />
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><br />
<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.<br />
<br />
'''Syntax'''<br><br />
<!-- LG xxxxxxxxx '==' is shown as '=', so instead use '= ='--><br />
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><br />
<br />
<tt><NumPatches>,<Addr>,<NumBytes>:<nowiki><Data></nowiki>,<Addr>,<NumBytes>:<nowiki><Data></nowiki>,<Addr>,</tt><br><br />
<tt><NumBytes>:<nowiki><Data></nowiki>,<Addr>,<NumBytes>:<nowiki><Data></nowiki>\r\n</tt><br><br />
<br />
Find below a table which describes each parameter.<br><br />
{| class="seggertable"<br />
|-<br />
! Parameter !! Description<br />
|-<br />
| <tt><NumPatches></tt> || Describes the number of patches in this patch line. Max. value is 4.<br />
|-<br />
| <tt><Addr></tt> || Describes the address to be patched. Value is expected in hex.<br />
|-<br />
| <tt><NumBytes></tt> || Number of bytes for the current patch. Max. value is 20h (32 in decimal). Value is expected in hex.<br />
|-<br />
| <tt><nowiki><Data></nowiki></tt> || Describes the data to be patched. <nowiki><Data></nowiki> is always expected as 2 hexadecimal characters per byte.<br />
|-<br />
|}<br />
<br />
{{Note|1=All values are expected in hexadecimal format (hex).<br><br />
<nowiki><Data></nowiki> section is always preceded by ":", not ",".}}<br />
<br />
'''Example'''<br><br />
Below is an example patch.<br><br />
<br />
<source><br />
1,18,4:01020304\r\n<br />
</source><br />
<br />
Patching the following data:<br />
<br />
[[File:data_before.png]]<br />
<br />
with the example patch will result in the following data:<br />
<br />
[[File:data_afterwards.png]]<br />
<br />
Please note that as mentioned earlier patching undefined memory locations will be ignored.<br><br />
Applying the example patch to the following data:<br />
<br />
[[File:undefined_mem_before.png]]<br />
<br />
Causes no data to be patched, as can be seen in the following image:<br />
<br />
[[File:undefined_mem_no_token.png]]<br />
<br />
Therefore it is necessary to first write placeholder data to the memory locations which are supposed to be patched.<br><br />
An example for such a placeholder can be seen here:<br />
<br />
[[File:undefined_mem_token.png]]<br />
<br />
Please note that the actual data inside the placeholder does not matter to the Flasher,<br />
because it is overwritten during patching.<br><br />
Applying the example patch will now work as expected:<br />
<br />
[[File:undefined_mem_after.png]]<br />
<br />
'''Single patch via RS232'''<br><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><br />
<br />
Send the <tt>#AUTO PATCH <NumPatches>,<Addr>,<NumBytes>:<nowiki><Data></nowiki></tt><br><br />
<br />
command via Flasher ASCII interface. The parameters have the same function as described in the table above.<br />
<br />
==== Newline encoding ====<br />
<br />
In general, for all patch files, init files etc. Flasher supports both newline encodings:<br><br />
<br />
* Windows: \r\n<br />
* Unix/Mac: \n<br />
<br />
All parser functionality etc. are written to be independent from the host operating system.<br />
<br />
=== Limiting the number of programming cycles ===<br />
<br />
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.<br />
To make use of this feature, a file called <tt>Cntdown.txt</tt> needs to be placed on the Flasher.<br />
This file simply contains a decimal number (32-bit unsigned integer) that describes how many programming cycles can be performed with the current setup.<br />
<br />
[[File:CntdownTxtContent.jpg]]<br />
<br />
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><br />
<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>.}}<br />
<br />
==== Changed fail/error LED indicator behavior ====<br />
<br />
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><br />
<br />
* The red error/fail LED will lit for 1 second<br />
* After this, it will blink/toggle x times @ 5 Hz, indicating the number of programming cycles left. (blinking 5 times for 5 cycles left, ...)<br />
<br />
==== Required Flasher hardware version for Cntdown.txt support ====<br />
<br />
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><br />
<br />
* 1621xxxxx (Flasher ARM V2)<br />
* 1630xxxxx (Flasher ARM V3)<br />
* 4210xxxxx (Flasher PPC V1)<br />
* 4110xxxxx (Flasher RX V1)<br />
<br />
All other models / hardware versions support limiting of programming cycles.<br />
<br />
=== Authorized flashing ===<br />
<br />
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.<br />
without the possibility to read out the Flasher contents via file access mode, FILE I/O functionality (J-Link Commander) or RS232 commands.<br />
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.<br />
<br />
==== Creating / Adding the secure area ====<br />
<br />
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.<br />
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.<br />
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><br />
<br />
[[File:CreateSecArea.jpg]]<br />
<br />
The following secure area related commands are available in J-Link Commander:<br><br />
<br />
* securearea create<br />
* securearea remove<br />
<br />
{{Note|1=When creating or removing the <tt>secure area</tt>, all configuration and data files being stored on the Flasher, are lost.<br />
Please make sure that they are not needed anymore, before adding / removing the security area.}}<br />
<br />
==== Moving files to the secure area ====<br />
<br />
Before moving configuration + data to the <tt>secure area</tt>, proper functionality of the setup should be tested in stand-alone mode.<br />
Once the setup is working as expected, do the following, to move the configuration + data into the <tt>secure area</tt>:<br><br />
<br />
* Start Flasher in file access mode (For more info, please refer to: [[#file access mode | file access mode]])<br />
<br />
[[File:FilesBeforeSecure.png]]<br />
<br />
* Create a folder "<tt>_SECURE</tt>"<br />
* Move all files that shall be moved to the <tt>secure area</tt>, into this folder<br />
<br />
[[File:FilesAfterSecure.png]]<br />
<br />
* 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.<br />
* Now Flasher can be used in stand-alone mode, as normal, but the files cannot be read back by the user / operator.<br />
<br />
==== Considerations to be taken when using the secure area ====<br />
<br />
When using the <tt>secure area</tt>, some things need to be considered:<br><br />
<br />
* All features like multiple file support, patch file support etc. can also be used when operating from the <tt>secure area</tt>.<br />
* 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>.<br />
* 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>.<br />
* 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.<br />
<br />
==== Required Flasher hardware version ====<br />
<br />
Older Flasher models do not support authorized flashing. The Flashers with the following serial number ranges do not support authorized flashing:<br><br />
<br />
* 1621xxxxx (Flasher ARM V2)<br />
* 1630xxxxx (Flasher ARM V3)<br />
* 4210xxxxx (Flasher PPC V1)<br />
* 4110xxxxx (Flasher RX V1)<br />
<br />
All other models / hardware versions support authorized flashing.<br />
<br />
=== Target interfaces ===<br />
<br />
The table below shows the supported target interfaces of the different Flasher models.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! Supported interfaces<br />
|-<br />
| Flasher PRO || JTAG, SWD<br />
|-<br />
| Flasher Compact || JTAG, SWD<br />
|-<br />
| Flasher ARM || JTAG, SWD<br />
|-<br />
| Flasher RX || JTAG<br />
|-<br />
| Flasher PPC || JTAG<br />
|-<br />
|}<br />
<br />
For more information about the target interfaces itself, please refer to:<br><br />
<br />
* ''UM08001, chapter "Working with J-Link and J-Trace", section "JTAG interface"''<br />
* ''UM08001, chapter "Working with J-Link and J-Trace", section "SWD interface"''<br />
<br />
=== Supported architectures ===<br />
<br />
Flasher supports programming of the internal flash of a large number of different microcontrollers.<br />
The number of supported devices is steadily growing. You can always find the latest list of supported devices on our website:<br><br />
<br />
''http://www.segger.com/supported-devices.html''<br />
<br />
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.<br />
Also the existence of the device may have confidential status, so it might not be mentioned as being supported in public releases yet.<br />
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.<br />
<br />
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).<br />
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.<br />
<br />
If a device is not supported, you can always contact us. We will be happy to provide you with an offer.<br />
<br />
==== External flashes ====<br />
<br />
In general our Flashers support programming of external flashes listed below:<br>(Can differ between Flasher models and hardware versions)<br />
<br />
* parallel NOR flash<br />
* SPI / QSPI flash<br>(see: ''[[SPI_support_by_Flasher_models]]'')<br />
* NAND flash<br />
* I<sup>2</sup>C EEPROM/Flash<br />
* FRAM<br />
<br />
If the parallel NOR flash device which is used is not CFI-compliant you have to select the flash device in J-Flash explicitly,<br />
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''.<br />
<br />
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.<br />
The J-Flash software comes with sample projects for ''Open Flashloader''.<br />
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''<br />
{{Note|1=Complete Information about ''Open Flashloaders'' can be found in our Wiki:<br>''[[Open_Flashloader]]''}}<br />
<br />
==== Cores ====<br />
<br />
===== Flasher ARM =====<br />
<br />
Flasher ARM supports and has been tested with the following cores, but should work with any ARM7/9, Cortex-M0/M1/M3/M4 core.<br />
If you experience problems with a particular core, do not hesitate to contact Segger.<br><br />
<br />
* ARM7TDMI (Rev 1)<br />
* ARM7TDMI (Rev 3)<br />
* ARM7TDMI-S (Rev 4)<br />
* ARM920T<br />
* ARM922T<br />
* ARM926EJ-S<br />
* ARM946E-S<br />
* ARM966E-S<br />
* Cortex-M0<br />
* Cortex-M1<br />
* Cortex-M3<br />
* Cortex-M4<br />
<br />
===== Flasher RX =====<br />
<br />
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><br />
<br />
* RX610<br />
* RX621<br />
* RX62N<br />
* RX62T<br />
<br />
===== Flasher PPC =====<br />
<br />
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.<br />
<br />
* e200z0<br />
<br />
===== Flasher PRO/Compact/Portable PLUS =====<br />
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/''.<br />
<br />
=== Programming multiple targets in parallel ===<br />
<br />
To program multiple targets in parallel there are the following possibilities:<br />
* Using a Flasher gang, or<br />
* Using multiple Flashers, each connecting to one CPU.<br />
<br />
Devices for gang progamming are:<br />
* Flasher ATE; suitable for programming up to 10 targets in parallel. Refer ''Flasher ATE user manual (UM08035_FlasherATE.pdf)''.<br />
* Flasher Hub in conjunction with up to 24 Flasher (Compact). Refer ''Flasher Hub user manual (UM08039_FlasherHUB.pdf)''.<br />
<br />
When using multiple flashers, this can be done with the J-Flash production programming software.<br />
For further information, please refer to Chapter "''Command Line Interface''" Sub-chapter "''Programming multiple targets in parallel''" of the J-Flash User Guide (UM08003_JFlash.pdf) which is part of the Flasher Software and Documentation package. ''https://www.segger.com/downloads/flasher/#FlasherSoftwareAndDocumentationPack''<br />
<br />
=== Logfiles and Quality Management ===<br />
<br />
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:<br />
<source lang="c"><br />
SN: 1 - Failed<br />
SN: 1 - Failed<br />
SN: 2 - O.K. (931 ms)<br />
SN: 3 - O.K. (931 ms)<br />
SN: 4 - O.K. (933 ms)<br />
SN: 5 - O.K. (932 ms)<br />
</source><br />
If applicable, the logfile contains more detailed error messages. For example:<br />
<source lang="c"><br />
ERROR: Programming failed @ address 0x00000000 (1)<br />
ERROR: Cannot connect to CPU. Target interface speed too high?<br />
</source><br />
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:<br />
<source lang="c"><br />
Verify error config word area @<br />
config word<br />
config word read back<br />
Verify error flash area @<br />
data from file<br />
data read back<br />
</source><br />
{{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.}}<br />
<br />
== TCP Services ==<br />
This chapter describes the integrated TCP services.<br />
<br />
=== FTP Server ===<br />
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><br />
[[File:FTPServer.png]]<br />
<br />
==== Access data ====<br />
Anonymous access to the FTP server is limited to read-only access to the file system.<br><br />
For write access, special login credentials have to be used:<br><br />
<tt>Login: admin</tt><br><br />
<tt>Password: 1234</tt><br><br />
<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.<br />
It is not meant as a security feature.}}<br />
<br />
=== Web server ===<br />
<br />
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.<br />
For the network, the IP address settings can be changed and a nick name can be assigned to the device.<br><br />
<br />
Additionally, the web interface provides information about the status of the integrated operating system, the IP stack and the target hardware.<br />
<br />
== Remote control ==<br />
This chapter describes how to control Flasher via the 9-pin serial interface connector or via the integrated Telnet interface.<br />
<br />
=== Overview ===<br />
There are 3 ways to control Flasher operation:<br><br />
<br />
* Manual: Programming operation starts when pressing the button. The LEDs serve as visible indicators.<br />
* 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.<br />
* Terminal communication via RS232.<br />
* Terminal communication via Telnet.<br />
<br />
{{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.}}<br />
<br />
=== Handshake control ===<br />
<br />
Some Flasher models can be remote controlled by automated testers without the need of a connection to a PC.<br />
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><br />
<br />
The handshake control is available for the following Flashers:<br />
* Flasher ARM<br />
* Flasher PRO<br />
* Flasher Compact (via Flasher Hub only)<br />
<br />
The following diagrams show the internal remote control circuitry of Flasher:<br><br />
<br />
[[File:FlasherRemotecontrol.jpg]]<br />
{| class="seggertable"<br />
|-<br />
! Pin No. !! Function !! Description<br />
|-<br />
| 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.<br />
|-<br />
| 4 || BUSY || As soon as the "Auto" function is started, BUSY becomes active, which means that transistor is switched OFF.<br />
|-<br />
| 5 || GND || Common Signal ground.<br />
|-<br />
| 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.<br />
|-<br />
|}<br />
<br />
=== ASCII command interface ===<br />
<br />
==== Introduction ====<br />
<br />
Once set up using J-Flash, the Flasher can be driven by any application or just a simple terminal using ASCII commands.<br><br />
<br />
Every known command is acknowledged by the Flasher and then executed. After command execution, Flasher sends an ASCII reply message.<br><br />
<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}}<br />
<br />
==== General command and reply message format ====<br />
<br />
* Any ASCII command has to start with the start delimiter ''#''.<br />
* Any ASCII command has to end with simple carriage return ('\r', ASCII code 13).<br />
* Commands can be sent upper or lower case<br />
<br />
==== General usage ====<br />
<br />
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.<br />
<br />
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).<br />
<br />
==== Settings for ASCII interface via RS232 ====<br />
<br />
Flasher is driven via a RS232 serial port with the following interface settings:<br><br />
<br />
* 9600 baud<br />
* 8 data bits<br />
* no parity<br />
* 1 stop bit<br />
<br />
The baud rate can be changed by using the <tt>#BAUDRATE</tt> command.<br />
<br />
==== Settings for ASCII interface via Telnet ====<br />
<br />
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><br />
<br />
[[File:telnet_connection.gif]]<br />
<br />
==== Commands and replies ====<br />
<br />
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><br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| Commands to the Flasher<br />
|-<br />
| <tt>#BAUDRATE <Baudrate></tt><br />
|-<br />
| <tt>#AUTO</tt><br />
|-<br />
| <tt>#AUTO PATCH</tt><br />
|-<br />
| <tt>#AUTO NOINFO</tt><br />
|-<br />
| <tt>#CANCEL</tt><br />
|-<br />
| <tt>#ERASE</tt><br />
|-<br />
| <tt>#PROGRAM</tt><br />
|-<br />
| <tt>#RESULT</tt><br />
|-<br />
| <tt>#SELECT <Filename></tt><br />
|-<br />
| <tt>#START</tt><br />
|-<br />
| <tt>#STATUS</tt><br />
|-<br />
| <tt>#VERIFY</tt><br />
|-<br />
| <tt>#QUIT</tt><br />
|-<br />
| <tt>#VERBOSE <Level></tt><br />
|-<br />
!colspan="100%"| File I/O commands<br />
|-<br />
| <tt>#FCLOSE</tt><br />
|-<br />
| <tt>#FCRC</tt><br />
|-<br />
| <tt>#FDELETE <Filename></tt><br />
|-<br />
| <tt>#FOPEN <Filename></tt><br />
|-<br />
| <tt>#FREAD <Offset>,<NumBytes></tt><br />
|-<br />
| <tt>#FSIZE</tt><br />
|-<br />
| <tt>#FWRITE <Offset>,<NumBytes>:<nowiki><Data></nowiki></tt><br />
|-<br />
| <tt>#FLIST</tt><br />
|-<br />
| <tt>#MKDIR <Dirname></tt><br />
|-<br />
!colspan="100%"| SecureArea commands<br />
|-<br />
| <tt>#HASSECUREAREA</tt><br />
|-<br />
| <tt>#SECUREAREA <action></tt><br />
|-<br />
!colspan="100%"| Replies from the Flasher<br />
|-<br />
| <tt>#ACK</tt><br />
|-<br />
| <tt>#NACK</tt><br />
|-<br />
| <tt>#OK</tt><br />
|-<br />
| <tt>#OK:<NumBytes>:<nowiki><Data></nowiki></tt><br />
|-<br />
| <tt>#OK:<Size></tt><br />
|-<br />
| <tt>#STATUS:</tt><br />
|-<br />
| <tt>#DONE</tt><br />
|-<br />
| <tt>#ERRxxx</tt><br />
|-<br />
|}<br />
<br />
===== Commands to the Flasher =====<br />
<br />
'''#AUTO'''<br><br />
The <tt>#AUTO</tt> command behaves exactly as the start button or external remote control input.<br><br />
<br />
Usually, the following command sequence will be performed when receiving the <tt>#AUTO</tt> command:<br><br />
<br />
* The Flasher erases the target CPU (if not blank)<br />
* The Flasher programs the target CPU<br />
* The Flasher verifies the target CPU<br />
<br />
Depending on the settings chosen in the '''Production''' tab in J-Flash, this sequence can differ from the one shown above.<br><br />
<br />
Finally, Flasher responds with<br><br />
<br />
* <tt>#OK</tt> if no error occurred<br />
* <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.<br />
<br />
During execution of the <tt>#AUTO</tt> command, Flasher automatically sends "status" messages via RS232 to reflect the state of execution.<br />
Typically during execution of <tt>#AUTO</tt> command, Flasher will reply the following sequence of messages:<br><br />
<br />
<tt>#ACK</tt><br><br />
<tt>#STATUS:INITIALIZING</tt><br><br />
<tt>#STATUS:CONNECTING</tt><br><br />
<tt>#STATUS:UNLOCKING</tt><br><br />
<tt>#STATUS:ERASING</tt><br><br />
<tt>#STATUS:PROGRAMMING</tt><br><br />
<tt>#STATUS:VERIFYING</tt><br><br />
<tt>#OK (Total 13.993s, Erase 0.483s, Prog 9.183s, Verify 2.514s)</tt><br><br />
<br />
'''#AUTO PATCH'''<br><br />
The <tt>#AUTO</tt> PATCH command allows patching of the content of the data to be programmed.<br><br />
<br />
Flasher responds with<br><br />
<br />
* <tt>#OK</tt> if no error occurred<br />
* <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.<br />
<br />
For further information about the usage of the <tt>#AUTO PATCH</tt> command please refer to [[#Patch file support | Patch file support]].<br />
'''#AUTO NOINFO'''<br><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><br />
<br />
The command ends with <tt>#OK</tt> or <tt>#ERRxxx</tt><br />
<br />
'''#BAUDRATE <Baudrate>'''<br><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><br />
<br />
If this command succeeds, Flasher responds with:<br><br />
<br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<br />
Otherwise it will respond with one of the following error messages:<br><br />
<br />
<tt>#ERR255: Invalid parameters</tt><br><br />
<tt>or</tt><br><br />
<tt>#ERR255: Baudrate is not supported</tt><br><br />
<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.<br />
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.}}<br />
<br />
'''#CANCEL'''<br><br />
This command can be sent to abort a running program. It may take a while until the current program is actually canceled.<br><br />
<br />
Flasher will respond with:<br><br />
<br />
<tt>#ERR007:CANCELED.</tt><br><br />
<br />
'''#ERASE'''<br><br />
This command can be sent to erase all selected target flash sectors.<br><br />
<br />
Flasher will reply the following sequence of messages:<br><br />
<br />
<tt>#ACK</tt><br><br />
<tt>#STATUS:INITIALIZING</tt><br><br />
<tt>#STATUS:CONNECTING</tt><br><br />
<tt>#STATUS:UNLOCKING</tt><br><br />
<tt>#STATUS:ERASING</tt><br><br />
<tt>#OK (Total 0.893s, Erase 0.483s)</tt><br><br />
<br />
'''#PROGRAM'''<br><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.<br />
<br />
'''#RESULT'''<br><br />
This command can be sent any time, even during other command execution. Flasher responds with the last result of the previously executed command.<br />
<br />
'''#SELECT <Filename>'''<br><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.<br />
<tt><Filename></tt> specifies the name of file pair without extensions (.CFG and .DAT) on the Flasher which should be selected. If you are<br />
using the universal flash programming mode, <tt><Filename></tt> specifies the full name of the .UNI file '''including''' the extension.<br />
Flasher saves the selected config and data file in the FLASHER.INI file. So this selection is remembered even between power-cycling Flasher.<br><br />
<br />
This may be verfy helpful in cases where several config and data files are stored on Flasher.<br />
The user can easily switch between these config and data files without connecting Flasher to a host.<br><br />
<br />
If this command succeeds, Flasher responds with:<br><br />
<br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<br />
Find below a sample sequence which shows how to use the <tt>#SELECT</tt> command:<br><br />
<br />
<tt>#SELECT ATSAM7_1 // ATSAM7_1.CFG and ATSAM7_1.DAT is selected</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<tt>#AUTO // Start auto programming</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#STATUS:INITIALIZING</tt><br><br />
<tt>#STATUS:CONNECTING</tt><br><br />
<tt>#STATUS:UNLOCKING</tt><br><br />
<tt>#STATUS:ERASING</tt><br><br />
<tt>#STATUS:PROGRAMMING</tt><br><br />
<tt>#STATUS:VERIFYING</tt><br><br />
<tt>#OK (Total 8.416s, Erase 0.005s, Prog 6.845s, Verify 0.959s)</tt><br><br />
<tt>#SELECT ATSAM7_2 // ATSAM7_2.CFG and ATSAM7_2.DAT is selected</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<tt>#AUTO // Start auto programming</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#STATUS:INITIALIZING</tt><br><br />
<tt>#STATUS:CONNECTING</tt><br><br />
<tt>#STATUS:UNLOCKING</tt><br><br />
<tt>#STATUS:ERASING</tt><br><br />
<tt>#STATUS:PROGRAMMING</tt><br><br />
<tt>#STATUS:VERIFYING</tt><br><br />
<tt>#OK (Total 8.632s, Erase 0.005s, Prog 7.051s, Verify 0.969s)</tt><br><br />
<br />
'''#START'''<br><br />
This command can be sent to start the application using the method configured in the J-Flash project.<br />
<br />
Flasher will reply with the following sequence of messages:<br><br />
<br />
<tt>#ACK</tt><br><br />
<tt>#STATUS:INITIALIZING</tt><br><br />
<tt>#STATUS:CONNECTING</tt><br><br />
<tt>#OK (Total 1.148s)</tt><br><br />
<br />
'''#STATUS'''<br><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]].<br />
<br />
'''#VERIFY'''<br><br />
This command can used to verify the target flash content against the data stored in Flasher.<br />
<br />
'''#QUIT'''<br><br />
This command can be used to terminate the active telnet connection from the server side (Flasher).<br />
The command provides an easy way to terminate the session from an automated script.<br />
It is not necessary to parse stdout and switch to local command mode to disconnect.<br />
Not implemented in the Flasher ATE or Flasher Hub.<br />
<br />
'''#VERBOSE <Level>'''<br><br />
This command can be used to change the verbosity level. <br><br />
* Verbosity level 0: Default. <br><br />
* Verbosity level 1: Provides some additional messages during the programming process.<br />
<br />
===== File I/O commands =====<br />
<br />
The ASCII interface of the Flasher also supports file I/O operations.<br />
<br />
The following file I/O commands are supported:<br><br />
<br />
'''#FCLOSE'''<br><br />
The <tt>#FCLOSE</tt> command closes the file on Flasher which was opened via <tt>#FOPEN</tt>.<br />
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><br />
<br />
A typical sequence when using the <tt>#FCLOSE</tt> command does look like as follows:<br><br />
<br />
<tt>#FCLOSE</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<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><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:No file opened</tt><br />
}}<br />
<br />
'''#FCRC'''<br><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>.<br />
The CRC will be also reported by J-Flash when downloading or saving files via J-Flash.<br><br />
<br />
A typical sequence when using the <tt>#FCRC</tt> command does look like as follows:<br><br />
<br />
<tt>#FCRC flasher.dat</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK:0x75BC855A</tt><br><br />
<br />
'''#FDELETE <Filename>'''<br><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><br />
<br />
A typical sequence when using the <tt>#FDELETE</tt> command does look like as follows:<br><br />
<br />
<tt>#FDELETE flasher.dat</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<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><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:Failed to delete file</tt><br />
}}<br />
<br />
'''#FOPEN <Filename>'''<br><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.<br />
If <tt><Filename></tt> can not be found on Flasher a new one will be created.<br><br />
<br />
A typical sequence using the <tt>#FOPEN</tt> command does look like as follows:<br><br />
<br />
<tt>#FOPEN flasher.dat</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<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><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:A file has already been opened</tt><br />
}}<br />
<br />
'''#FREAD <Offset>,<NumBytes>'''<br><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.<br />
<tt><NumBytes></tt> specifies the number of bytes which should be read.<br><br />
<br />
A typical sequence when using the <tt>#FREAD</tt> command does look like as follows:<br><br />
<br />
<tt>#FREAD 0,4</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK:04:466c6173</tt><br><br />
<br />
If the <tt>#FREAD</tt> command succeeds, Flasher will finally respond with a <tt>#OK:<NumBytes>:<nowiki><Data></nowiki></tt> reply message.<br />
For more information about the Flasher reply messages, please refer to [[#Replies from Flasher | Replies from Flasher]].<br><br />
<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><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:No file opened</tt>}}<br />
<br />
'''#FSIZE'''<br><br />
The <tt>#FSIZE</tt> command is used to get the size of the currently opened file on Flasher.<br><br />
<br />
A typical sequence when using the <tt>#FSIZE</tt> command does look like as follows:<br><br />
<br />
<tt>#FSIZE</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK:10 // file on flasher which is currently open, has a size of 16 bytes</tt><br><br />
<br />
If the <tt>#FSIZE</tt> command succeeds, Flasher will respond with a <tt>#OK:<Size></tt> reply message.<br />
For more information about the Flasher reply messages, please refer to [[#Replies from Flasher | Replies from Flasher]].<br><br />
<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><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:No file opened</tt>}}<br />
<br />
'''#FWRITE <Offset>,<NumBytes>:<nowiki><Data></nowiki>'''<br><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.<br />
<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.<br />
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><br />
<br />
<tt><Offset></tt> and <tt><NumBytes></tt> are expected in hexadecimal format.<br><br />
<br />
<tt>#FWRITE 0,200:<nowiki><Data></nowiki></tt><br><br />
<tt>#FWRITE 200,200:<nowiki><Data></nowiki></tt><br><br />
<br />
The data is expected in hexadecimal format (two hexadecimal characters per byte). The following example illustrates the use of <tt>#FWRITE</tt>:<br />
<br />
<tt>Data to be send: Hello !</tt><br><br />
<tt>ASCII values: 0x48, 0x65, 0x6C, 0x6C, 0x6F, 0x20, 0x21</tt><br><br />
<br />
<tt>#FWRITE 0,7:48656C6C6F2021</tt><br><br />
<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><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:No file opened</tt><br>}}<br />
<br />
'''#FLIST'''<br><br />
The <tt>#LIST</tt> command is used to list all files stored on the Flasher.<br><br />
<br />
A typical sequence using the <tt>#FLIST</tt> command does look like as follows:<br><br />
<br />
<tt>#FLIST</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>FLASHER.INI Size: 60</tt><br><br />
<tt>SERIAL.TXT Size: 3</tt><br><br />
<tt>FLASHER.LOG Size: 207</tt><br><br />
<tt>FOLDER (DIR)</tt><br><br />
<tt>FOLDER\\TEST1.CFG Size: 2048</tt><br><br />
<tt>FOLDER\\TEST1.DAT Size: 12288</tt><br><br />
<tt>#OK</tt><br><br />
<br />
'''#MKDIR <Dirname>'''<br><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><br />
<br />
A typical sequence using the <tt>#MKDIR</tt> command does look like as follows:<br><br />
<br />
<tt>#MKDIR folder</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<br />
{{Note|1=If the directory can not be created because of a bad <tt><Dirname></tt> argument, Flasher will respond with:<br><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:Failed to create directory</tt><br>}}<br />
<br />
===== Secure Area Commands =====<br />
<br />
'''#HASSECUREAREA'''<br><br />
The <tt>#HASSECUREAREA</tt> command checks if the Flasher is configured with a secure area.<br />
<br />
<tt>#RESULT:YES</tt> indicates the secure area is present, <tt>#RESULT:NO</tt> indicates no secure area is present.<br />
<br />
'''#SECUREAREA'''<br><br />
The <tt>#SECUREAREA <action></tt> command allows to create or remove the secure area on the Flasher.<br />
<br />
* the action <tt>CREATE</tt> creates the secure area.<br />
* the action <tt>REMOVE</tt> will remove the secure area.<br />
<br />
A typical sequence using the <tt>#SECUREAREA</tt> command does look like as follows:<br><br />
<br />
<tt>#SECUREAREA CREATE</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#DONE</tt><br><br />
<br />
{{Note|1=When creating or removing the <tt>secure area</tt>, all configuration and data files being stored on the Flasher, are lost.<br />
Please make sure that they are not needed anymore, before adding / removing the security area.}}<br />
<br />
<br />
<br />
===== Replies from Flasher =====<br />
<br />
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.<br />
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.<br />
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><br />
<br />
<tt>#OK (Total 13.993s, Erase 0.483s, Prog 9.183s, Verify 2.514s)</tt><br><br />
<br />
The following reply messages from Flasher are defined:<br><br />
<br />
'''#ACK'''<br><br />
Flasher replies with <tt>#ACK</tt> message on reception of any defined command before the command itself is executed.<br />
<br />
'''#NACK'''<br><br />
Flasher replies with <tt>#NACK</tt>, if an undefined command was received.<br />
<br />
'''#OK'''<br><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.<br />
<br />
'''#OK:<NumBytes>:<nowiki><Data></nowiki>'''<br><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.<br />
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).<br />
<br />
'''#OK:<Size>'''<br><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.<br />
<br />
'''#STATUS:'''<br><br />
The Flasher replies with its current state.<br><br />
<br />
The following status messages are currently defined:<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Message !! Description<br />
|-<br />
| <tt>#STATUS:READY</tt> || Flasher is ready to receive a new command.<br />
|-<br />
| <tt>#STATUS:CONNECTING</tt> || Flasher initializes connection to target CPU.<br />
|-<br />
| <tt>#STATUS:INITIALIZING</tt> || Flasher performs self check and internal init.<br />
|-<br />
| <tt>#STATUS:UNLOCKING</tt> || Unlocking flash sectors.<br />
|-<br />
| <tt>#STATUS:ERASING</tt> || Flasher is erasing the flash of the target device.<br />
|-<br />
| <tt>#STATUS:PROGRAMMING</tt> || Flasher is programming the flash of the target device.<br />
|-<br />
| <tt>#STATUS:VERIFYING</tt> || Flasher verifies the programmed flash contents.<br />
|-<br />
|}<br />
<br />
'''#ERRxxx'''<br><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><br />
<br />
Some error codes may be followed by colon and an additional error text.<br><br />
<br />
For example:<br><br />
<br />
<tt>#ERR007:CANCELED.</tt><br><br />
<br />
The error code numbers are described in the following table:<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Message !! Description<br />
|-<br />
| <tt>#ERR007</tt> || Flasher received <tt>#CANCEL</tt> command and has canceled the current operation.<br />
|-<br />
| <tt>#ERR008</tt> || Flasher is already busy with execution of previous command.<br />
|-<br />
| <tt>#ERR009</tt> || Failed to allocate memory.<br />
|-<br />
| <tt>#ERR010</tt> || Failed to open file.<br />
|-<br />
| <tt>#ERR011</tt> || Failed to read file.<br />
|-<br />
| <tt>#ERR012</tt> || Failed to write file.<br />
|-<br />
| <tt>#ERR013</tt> || Failed to delete file.<br />
|-<br />
| <tt>#ERR255</tt> || Undefined error occurred. This reply is followed by an error string.<br />
|-<br />
|}<br />
<br />
== Performance ==<br />
<br />
The following chapter lists programming performance of common flash devices andmicrocontrollers.<br />
<br />
=== Performance of MCUs with internal flash memory ===<br />
<br />
==== Flasher ARM ====<br />
<br />
The following table lists program and erase performance values of Flasher ARM for different controllers.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Microcontroller !! Size [kByte] !! Erase time [sec] !! Program time [sec] !! Verify time [sec] !! Total time [sec]<br />
|-<br />
| Analog Devices || 62 || 2.943 || 2.286 || 0.563 || 5.792<br />
|-<br />
| Atmel AT91SAM7S64 || 64 || --- || 3.488 || 0.438 || 3.926<br />
|-<br />
| Atmel AT91SAM7S256 || 256 || --- || 7.709 || 1.053 || 8.762<br />
|-<br />
| NXP LPC1768 || 512 || 3.740 || 8.559 || 5.092 || 17.391<br />
|-<br />
| NXP LPC2106 || 120 || 0.448 || 1.204 || 0.634 || 2.286<br />
|-<br />
| NXP LPC2129 || 248 || 0.449 || 2.916 || 1.347 || 4.712<br />
|-<br />
| NXP LPC2138 || 500 || 0.448 || 5.488 || 2.649 || 8.585<br />
|-<br />
| NXP LPC2148 || 500 || 0.448 || 5.632 || 2.721 || 8.801<br />
|-<br />
| NXP LPC2294 || 2048 || 0.808 || 15.976 || 9.669 || 26.453<br />
|-<br />
| NXP LPC2478 || 504 || 0.448 || 5.419 || 2.559 || 8.426<br />
|-<br />
| ST STM32F103ZE || 512 || 0.028 || 18.763 || 3.939 || 22.730<br />
|-<br />
| ST STR711 || 272 || 0.429 || 5.476 || 4.742 || 10.647<br />
|-<br />
| ST STR912 || 544 || 1.167 || 12.907 || 5.236 || 19.310<br />
|-<br />
| TI TMS470R1B1M || 1024 || 2.289 || 8.147 || 5.362 || 15.798<br />
|-<br />
|}<br />
<br />
==== Flasher PRO ====<br />
See Flasher ARM.<br />
<br />
==== Flasher Compact ====<br />
See Flasher ARM.<br />
<br />
==== Flasher RX ====<br />
<br />
The following table lists program and erase performance values of Flasher RX.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Microcontroller !! Size [kByte] !! Erase time [sec] !! Program time [sec] !! Verify time [sec] !! Total time [sec]<br />
|-<br />
| R5F56108 || 2.048 || 9.523 || 11.915 || 3.890 || 25.585<br />
|-<br />
|}<br />
<br />
==== Flasher PPC ====<br />
<br />
The following table lists program and erase performance values of Flasher PPC.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Microcontroller !! Size [kByte] !! Erase time [sec] !! Program time [sec] !! Verify time [sec] !! Total time [sec]<br />
|-<br />
| ST SPC560B50 || 576 || 4.747 || 4.159 || 1.929 || 10.917<br />
|-<br />
|}<br />
<br />
== Hardware ==<br />
<br />
This chapter gives an overview about Flasher specific hardware details,<br />
such as the pinouts and available adapters.<br />
<br />
=== Flasher ARM 20-pin JTAG/SWD Connector ===<br />
<br />
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.<br />
<br />
==== Pinout JTAG ====<br />
<br />
[[File:jtag_port_20pin.jpg]] <!-- LG xxxxxx image has been cropped to fit page --><br />
<br />
The following table lists the Flasher JTAG pinout.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! PIN !! SIGNAL !! TYPE !! Description<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 13 || TDO || Input || JTAG data output from target CPU. Typically connected to TDO of target CPU.<br />
|-<br />
| 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".<br />
|-<br />
| 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.<br />
|-<br />
| 19 || 5V-Target supply || Output || This pin is used to supply power to some eval boards. Typically left open on target hardware.<br />
|-<br />
|}<br />
<br />
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.<br />
<br />
==== Pinout SWD ====<br />
<br />
The 20-pin connector of Flasher is also compatible to ARM's Serial Wire Debug (SWD) interface.<br><br />
<br />
[[File:SWD_Port.jpg]] <!-- LG xxxxxx image has been cropped to fit page --><br />
<br />
The following table lists the J-Link / J-Trace SWD pinout.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! PIN !! SIGNAL !! TYPE !! Description<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 7 || SWDIO || I/O || Single bi-directional data pin.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 13 || SWO || Output || Serial Wire Output trace port. (Optional, not required for SWD communication.)<br />
|-<br />
| 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".<br />
|-<br />
| 17 || Not used || NC || This pin is not connected in J-Link.<br />
|-<br />
| 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.<br />
|-<br />
|}<br />
<br />
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.<br />
<br />
==== Target power supply ====<br />
<br />
Pin 19 of the connector can be used to supply power to the target hardware. Supply voltage is 5V, max. current is 400mA.<br />
The output current is monitored and protected against overload and short-circuit.<br><br />
<br />
Power can be controlled via the J-Link commander. The following commands are available to control power:<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Command !! Explanation<br />
|-<br />
| <tt>power on</tt> || Switch target power on<br />
|-<br />
| <tt>power off</tt> || Switch target power off<br />
|-<br />
| <tt>power on perm</tt> || Set target power supply default to "on"<br />
|-<br />
| <tt>power off perm</tt> || Set target power supply default to "off"<br />
|-<br />
|}<br />
<br />
=== Flasher RX 14-pin connector ===<br />
<br />
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.<br />
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.<br />
<br />
[[File:jtag_port_14pin.wmf]]<br />
<br />
The following table lists the Flasher RX 14-pin JTAG pinout.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Pin !! Signal !! Type !! Description<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 5 || TDO || Input || JTAG data output from target CPU. Typically connected to TDO on target CPU.<br />
|-<br />
| 6 || --- || NC || This pin is not connected to Flasher RX.<br />
|-<br />
| 7 || --- || NC || This pin is not connected to Flasher RX.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 10 || --- || NC || This pin is not connected to Flasher RX.<br />
|-<br />
| 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.<br />
|-<br />
| 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".<br />
|-<br />
|}<br />
<br />
* All pins marked NC are not connected to Flasher RX. Any signal can be applied here; Flasher RX will simply ignore such a signal.<br />
* Pins 2, 12, 14 are GND pins connected to GND in Flasher RX. They should also be connected to GND in the target system.<br />
<br />
==== Target power supply ====<br />
<br />
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.<br />
Power can be controlled via the J-Link commander. The following commands are available to control power:<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Command !! Explanation<br />
|-<br />
| <tt>power on</tt> || Switch target power on<br />
|-<br />
| <tt>power off</tt> || Switch target power off<br />
|-<br />
| <tt>power on perm</tt> || Set target power supply default to "on"<br />
|-<br />
| <tt>power off perm</tt> || Set target power supply default to "off"<br />
|-<br />
|}<br />
<br />
=== Flasher PPC 14-pin connector ===<br />
<br />
Flasher PPC itself has a 20-pin JTAG connector mounted but comes with a 14-pin adapter for PowerPC devices.<br><br />
<br />
[[File:JTAG_PPC_14pin_adapter.wmf]]<br />
<br />
The following table lists the Flasher PPC 14-pin JTAG pinout.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Pin !! Signal !! Type !! Description<br />
|-<br />
| 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.<br />
|-<br />
| 3 || TDO || Input || JTAG data output from target CPU. Typically connected to TDO on target CPU.<br />
|-<br />
| 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.<br />
|-<br />
| 7 || --- || NC || This pin is not connected to Flasher PPC.<br />
|-<br />
| 8 || --- || NC || This pin is not connected to Flasher PPC.<br />
|-<br />
| 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".<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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).<br />
|-<br />
|}<br />
<br />
* All pins marked NC are not connected to Flasher PPC. Any signal can be applied here; Flasher PPC will simply ignore such a signal.<br />
* 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.<br />
<br />
=== Target board design ===<br />
<br />
We strongly advise following the recommendations given by the chip manufacturer. These recommendations are normally in line with the recommendations.<br />
Please refer to the the appropriate tables depending on the core:<br><br />
<br />
* [[#Pinout JTAG | Pinout JTAG]]<br />
* [[#Pinout SWD | Pinout SWD]]<br />
* [[#Flasher RX 14-pin connector | Flasher RX 14-pin connector]]<br />
* [[#Flasher PPC 14-pin connector | Flasher PPC 14-pin connector]]<br />
<br />
In case of doubt you should follow the recommendations given by the semiconductor manufacturer.<br />
<br />
==== Pull-up/pull-down resistors ====<br />
<br />
Unless otherwise specified by developer's manual, pull-ups/pull-downs are recommended to be between 2.2 kOhms and 47 kOhms.<br />
<br />
==== RESET, nTRST ====<br />
<br />
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><br />
<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.<br />
(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.<br />
<br />
=== Adapters ===<br />
<br />
==== JTAG Isolator ====<br />
<br />
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.<br />
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><br />
<br />
[[File:JTAG_Isolator_Port.wmf]]<br />
<br />
===== Pinout =====<br />
<br />
The following table shows the target-side pinout of the J-Link JTAG Isolator.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Pin !! Signal !! Type !! Description<br />
|-<br />
| 1 || VCC || Output || The target side of the isolator draws power over this pin.<br />
|-<br />
| 2 || VCC || Output || The target side of the isolator draws power over this pin.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 13 || TDO || Input || JTAG data output from target CPU. Typically connected to TDO of target CPU.<br />
|-<br />
| 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".<br />
|-<br />
| 17 || N/C || N/C || This pin is not connected on the target side of the isolator.<br />
|-<br />
| 19 || N/C || N/C || This pin is not connected on the target side of the isolator.<br />
|-<br />
|}<br />
<br />
Pins 4, 6, 8, 10, 12, 14, 16, 18, 20 are connected to GND.<br />
<br />
===== Safety =====<br />
This isolator provides '''basic isolation''' only. '''Do not use with hazardous voltages without further protection measures to avoid risk of electrical shock and fire.'''<br />
<br />
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.<br />
<br />
==== J-Link Needle Adapter ====<br />
<br />
To connect to the J-Link OB via programming interface the ''J-Link Needle Adapter'' is recommended.<br><br />
<br />
[[File:J-Link_Needle_Adapter_500x.jpg]]<br />
<br />
Why to choose the J-Link Needle Adapter:<br><br />
<ol><br />
<li>No additional connector required on your PCB</li><br />
<li>Very small footprint</li><br />
<li>High reliability spring pins for secure connections</li><br />
<li>Designed with 3 locating pins, so the adapter can not be connected the wrong way</li><br />
<li>No external power supply required! The J-Link Needle Adapter comes with the option to power the target hardware via J-Link.</li><br />
</ol><br />
These features make the J-Link Needle Adapter the perfect solution for production purposes.<br><br />
<br />
The pinout of the J-Link Needle Adapter is based on the pinout of the needle adapter by Tag-Connect.<br />
Please note, that both pinouts are not identical since the J-Link Needle Adapter comes with a 5V-supply pin.<br><br />
<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><br />
<br />
Moreover, the two "legs" on each side of the connector guarantee a stable and secure contact between pins and the PCB.<br><br />
<br />
[[File:J-Link_Needle_Adapter_Connector_pins_360x.jpg]]<br />
[[File:J-Link_Needle_Adapter_Pinout.jpg]]<br />
<br />
The J-Link Needle Adapter can be connected to J-Link via the ''20-pin 0.1'' JTAG to a 10-pin needle connector''.<br />
<br />
=== How to determine the hardware version ===<br />
<br />
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.<br />
Flasher has the hardware version printed on the back label.<br><br />
<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).<br />
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><br />
<br />
[[File:FlasherARM_version.gif]]<br />
== Support and FAQs ==<br />
<br />
This chapter contains troubleshooting tips together with solutions for common problems which might occur when using Flasher.<br />
There are several steps you can take before contacting support.<br />
Performing these steps can solve many problems and often eliminates the need for assistance.<br />
This chapter also contains a collection of frequently asked questions (FAQs) with answers.<br />
<br />
=== Contacting support ===<br />
<br />
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.<br />
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><br />
<br />
If you need to contact support, send the following information to<br><br />
''support@segger.com''<br><br />
<br />
* A detailed description of the problem<br />
* Flasher serial number<br />
* Information about your target hardware (processor, board, etc.).<br />
* <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]].<br />
<br />
Flasher is sold directly by SEGGER.<br />
<br />
=== Frequently Asked Questions ===<br />
<br />
'''Maximum JTAG speed'''<br />
{|<br />
|-<br />
| '''Q:''' || What is the maximum JTAG speed supported by Flasher?<br />
|-<br />
| '''A:''' || Flasher's maximum supported JTAG speed is 12MHz.<br />
|}<br />
<br />
'''Maximum download speed'''<br />
{|<br />
|-<br />
| '''Q:''' || What is the maximum download speed?<br><br />
|-<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.<br />
|}<br />
== Background information ==<br />
<br />
This chapter provides background information about flash programming in general. It<br />
also provides information about how to replace the firmware of Flasher manually.<br />
<br />
=== Flash programming ===<br />
<br />
Flasher comes with a DLL, which allows - amongst other functionalities - reading and writing RAM, CPU registers, starting and stopping the CPU, and setting breakpoints.<br />
<br />
==== How does flash programming via Flasher work? ====<br />
<br />
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.<br />
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.<br />
Different flash chips have different programming algorithms;the programming algorithm also depends on other things,<br />
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).<br />
The RAM code requires data to be programmed into the flash memory. The data is supplied by downloading it to RAM.<br />
<br />
==== Data download to RAM ====<br />
<br />
The data (or part of it) is downloaded to another part of the RAM of the target system.<br />
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.<br />
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.<br />
This process may have to be repeated until the entire data is programmed into the flash.<br />
<br />
==== Available options for flash programming ====<br />
<br />
In general, there are two possibilities in order to use Flasher for flash programming:<br><br />
<br />
* Using Flasher stand-alone to program the target flash memory (stand-alone mode)<br />
* Using Flasher in combination with J-Flash to program the target flash memory (Flasher in "PC-based mode")<br />
<br />
===== Using Flasher in stand-alone mode =====<br />
<br />
In order to use the Flasher in stand-alone mode, it has to be configured first.<br />
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]].<br />
<br />
===== J-Flash - Complete flash programming solution =====<br />
<br />
J-Flash is a stand-alone Windows application, which can read / write data files and program the flash in almost any ARM system.<br />
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''.<br />
<br />
==== How does the universal flash programming work? ====<br />
<br />
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><br />
<br />
Universal flash programming is available only for stand-alone mode.<br />
== Glossary ==<br />
<br />
This chapter describes important terms used throughout this manual.<br />
<br />
'''Big-endian'''<br><br />
Memory organization where the least significant byte of a word is at a higher address than the most significant byte. See Little-endian.<br />
<br />
'''Cache cleaning'''<br><br />
The process of writing dirty data in a cache to main memory.<br />
<br />
'''Coprocessor'''<br><br />
An additional processor that is used for certain operations, for example, for floating-point math calculations, signal processing, or memory management.<br />
<br />
'''Dirty data'''<br><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.<br />
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.<br />
<br />
'''Halfword'''<br><br />
A 16-bit unit of information.<br />
<br />
'''Host'''<br><br />
A computer which provides data and other services to another computer. Especially, a computer providing debugging services to a target being debugged.<br />
<br />
'''ICache'''<br><br />
Instruction cache.<br />
<br />
'''ID'''<br><br />
Identifier.<br />
<br />
'''IEEE 1149.1'''<br><br />
The IEEE Standard which defines TAP. Commonly (but incorrectly) referred to as JTAG.<br />
<br />
'''Image'''<br><br />
An executable file that has been loaded onto a processor for execution.<br />
<br />
'''Instruction Register'''<br><br />
When referring to a TAP controller, a register that controls the operation of the TAP.<br />
<br />
'''IR'''<br><br />
See Instruction Register.<br />
<br />
'''Joint Test Action Group (JTAG)'''<br><br />
The name of the standards group which created the IEEE 1149.1 specification.<br />
<br />
'''Little-endian'''<br><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.<br />
<br />
'''Memory coherency'''<br><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.<br />
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.<br />
<br />
'''Memory management unit (MMU)'''<br><br />
Hardware that controls caches and access permissions to blocks of memory, and translates virtual to physical addresses.<br />
<br />
'''Memory Protection Unit (MPU)'''<br><br />
Hardware that controls access permissions to blocks of memory. Unlike an MMU, a MPU does not translate virtual addresses to physical addresses.<br />
<br />
'''RESET'''<br><br />
Abbreviation of System Reset. The electronic signal which causes the target system other than the TAP controller to be reset.<br />
This signal is also known as "nSRST" "nSYSRST", "nRST", or "nRESET" in some other manuals. See also nTRST.<br />
<br />
'''nTRST'''<br><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.<br />
<br />
'''Open collector'''<br><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.<br />
<br />
'''Processor Core'''<br><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.<br />
It excludes optional coprocessors, caches, and the memory management unit.<br />
<br />
'''Remapping'''<br><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.<br />
<br />
'''RTOS'''<br><br />
Real Time Operating System.<br />
<br />
'''TAP Controller'''<br><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.<br />
<br />
'''Target'''<br><br />
The actual processor (real silicon or simulated) on which the application program is running.<br />
<br />
'''TCK'''<br><br />
The electronic clock signal which times data on the TAP data lines TMS, TDI, and TDO.<br />
<br />
'''TDI'''<br><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.<br />
<br />
'''TDO'''<br><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.<br />
<br />
'''Test Access Port (TAP)'''<br><br />
The port used to access a device's TAP Controller. Comprises TCK, TMS, TDI, TDO, and nTRST (optional).<br />
<br />
'''Transistor-transistor logic (TTL)'''<br><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.<br />
<br />
'''Word'''<br><br />
A 32-bit unit of information. Contents are taken as being an unsigned integer unless otherwise stated.<br />
== Literature and references ==<br />
This chapter lists documents, which we think may be useful to gain a deeper understanding of technical details.</div>JanBhttps://wiki.segger.com/index.php?title=UM08022_Flasher&diff=16110UM08022 Flasher2023-08-21T06:37:47Z<p>JanB: /* Handshake control */</p>
<hr />
<div><!---<br />
General TBD:<br />
- LG: Right now - EVERYTHING<br />
===========================================<br />
--------------------[more specific, but on multiple locations]<br />
- check if all emphasis (bold, tt, blue, etc ) have made it into the new version<br />
- Add Information -> Additional information<br />
- use of the term free-of-charge utility/tool etc<br />
- check compliant to DocStandards_Rules.txt<br />
- Remove everything regarding to Kickstarter versions? eventually create a chapter Legacy -> Kickstarter version were available for hw version 5-x (200x-200x)...[..]<br />
- 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.<br />
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.<br />
- if week keep the IDE specific stuff in the manual, add Ozone, ES and J-Link Commander were no mentioned.<br />
- IDE specifics move into wiki confirmed by Alex<br />
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)<br />
- check all sections regarding licensing<br />
- Check compliance of J-Link emDocs with typographic conventions described in AboutThisDocument.emDoc. What should be altered? e.g. references<br />
- use uref at all (not blue)?<br />
- search and decide where to use \ref (ref with page number)<br />
- why is \ref (no single "option" \uref is more basic as \ref.....)<br />
- in text, use either \ref or \iref instead of \uref<br />
- in old manual, \H3 started on a new page (not per default, but set manually for api tables etc...)<br />
- move used old images and source files (visio etc) via svn (currently copied)<br />
--------------------[grammar / vocabulary discussion]<br />
- Product names<br />
-- Use of SEGGEPROBE in this document?<br />
- use license over licence<br />
- commandline or command-line?<br />
- toolchain or tool chain?<br />
- crossreference/cross-reference/cross reference?<br />
- overcurrent?<br />
- double words?<br />
- frontend?<br />
- Unit: Kbytes, KBytes, V, mV.... 9V or 9 V? Create rule in Vocabulary<br />
- baudrate or baud rate?<br />
- stackpointer or stack pointer<br />
- check where we should replace abbreviations with the long form (e.h. "milliseconds" instead of "ms")<br />
- config or configuration<br />
- filepointer or file pointer?<br />
--------------------[J-Link dep. specific]<br />
- J-Link command strings or J-Link Command strings or J-Link Command Strings<br />
- J-Link settings file or...<br />
- J-Link control panel or ......<br />
- J-Link script files or...<br />
---><br />
Flasher is a programming tool for microcontrollers with on-chip or external flash memory.<br />
Flasher is designed for programming flash targets with the J-Flash software or stand-alone.<br />
In addition to that Flasher can also be used as a regular J-Link. For more information about J-Link in general,<br />
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].<br />
<br />
<div class="toclimit-2"><br />
__TOC__<br />
</div><br />
<br />
== Flasher overview ==<br />
Flasher connects to a PC using the USB/Ethernet/RS232 interface (what host interfaces are available depends on the Flasher model),<br />
running Windows, Linux & MacOS. In stand-alone mode,<br />
Flasher can be driven by the start/stop button, or via the RS232 interface (handshake control or ASCII interface).<br />
Flasher always has a 20-pin connector, which target interfaces are supported depends on the Flasher model:<br />
* Flasher ARM: JTAG and SWD are supported.<br />
* Flasher RX: JTAG is supported. Flasher comes with additional 14-pin RX adapter<br />
* Flasher PPC: JTAG is supported. Flasher comes with additional 14-pin PPC adapter.<br />
* Flasher PRO: JTAG and SWD are supported.<br />
* Flasher Compact: JTAG and SWD are supported.<br />
<br />
=== Features of Flasher ARM/PPC/RX/PRO ===<br />
* Three boot modes: PC-based mode, stand-alone mode, file access mode<br />
* Stand-alone JTAG/SWD programmer (Once set up, Flasher can be controlled without the use of PC program)<br />
* No power supply required, powered through USB<br />
* Supports internal and external flash devices<br />
* 128 MB memory for storage of target program<br />
* Can be used as J-Link (emulator) with a download speed of up to 720 Kbytes/second<br />
* Data files can updated via USB/Ethernet (using the J-Flash software), via FTP, via RS232 or via the file access mode of Flasher<br />
<br />
{| class="seggertable"<br />
|-<br />
! Flasher model !! Supported cores !! Supported target interfaces !! Flash programming speed (depending on target hardware)<br />
|-<br />
| Flasher ARM || ARM7/ARM9/Cortex-M || JTAG, SWD || between 170 and 300 Kbytes/second<br />
|-<br />
| Flasher RX || Renesas RX610, RX621, RX62N, RX62T || JTAG || between 30-300 Kbytes/second<br />
|-<br />
| Flasher PPC || Power PC e200z0 || JTAG || up to 138 Kbytes/second<br />
|-<br />
| Flasher PRO || ARM7/ARM9/Cortex-M Renesas RX610, RX621, RX62N, RX62T Power PC e200z0 || JTAG, SWD || between 30-300 Kbytes/ second<br />
|-<br />
|}<br />
<br />
==== Features of Flasher Compact ====<br />
<br />
* Three boot modes: PC-based mode, stand-alone mode, file access mode<br />
* Stand-alone JTAG/SWD programmer (Once set up, Flasher can be controlled without the use of PC program)<br />
* No power supply required, powered through USB<br />
* Supports internal and external flash devices<br />
* 128 MB memory for storage of target program<br />
* Can be used as J-Link (emulator) with a download speed of up to 720 Kbytes/second<br />
* Data files can updated via USB/Ethernet (using the J-Flash software) or via the file access mode of Flasher<br />
<br />
{| class="seggertable"<br />
|-<br />
! Flasher model !! Supported cores !! Supported target interfaces !! Flash programming speed (depending on target hardware)<br />
|-<br />
| Flasher ARM || ARM7/ARM9/Cortex-M || JTAG, SWD || between 170 and 300 Kbytes/second<br />
|-<br />
| Flasher RX || Renesas RX610, RX621, RX62N, RX62T || JTAG || between 30-300 Kbytes/second<br />
|-<br />
| Flasher PPC || Power PC e200z0 || JTAG || up to 138 Kbytes/second<br />
|-<br />
| Flasher Compact || ARM7/ARM9/Cortex-M Renesas RX610, RX621, RX62N, RX62T Power PC e200z0 || JTAG, SWD || between 30-300 Kbytes/ second<br />
|-<br />
|}<br />
<br />
==== Features of Flasher Portable/Flasher Portable PLUS ====<br />
<br />
* Stand-alone in-circuit-programmer (Once set up, Flasher can be controlled without the use of a PC program)<br />
* Powered by an internal rechargeable battery (standard batteries for Flasher Portable), no Laptop or external power supply required.<br />
* Multiple firmware images can be stored on Flasher<br />
* 128 MB memory for storage of target program<br />
* Easy selection of image to be programmed, via button<br />
* Supported CPUs: ARM Cortex, Legacy ARM7/9, Renesas RX, Freescale PowerPC<br />
* Supports internal and external flash<br />
* Free software updates<ref name="legitimateOwned" />, 1 year of support<br />
* Data files can be updated via the file access mode functionality or via J-Flash<br />
* Programming speed between 30-300 Kbytes/second (actual speed depends on target hardware)<br />
{{Note|1=Ethernet and RS232 as host interface are not available for Flasher Portable}}<br />
<references><br />
<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.<br />
As a legitimate owner of a SEGGER Flasher, you can always download the latest software free of charge.<br />
Though not planned and not likely, we reserve the right to change this policy.<br />
Note that older models may not be supported by newer versions of the software.<br />
Typically, we support older models with new software at least 3 years after end of life.<br />
</ref><br />
</references><br />
<br />
{| class="seggertable"<br />
|-<br />
! Supported cores !! Supported target interfaces !! Flash programming speed (depending on target hardware)<br />
|-<br />
| ARM7/ARM9/Cortex-M || JTAG, SWD || between 30-300 Kbytes/second<br />
|-<br />
| Renesas RX610, RX621, RX62N, RX62T || JTAG || between 170 and 300 Kbytes/second<br />
|-<br />
| Power PC e200z0 || JTAG || up to 138 Kbytes/second<br />
|-<br />
|}<br />
<br />
==== Working environment ====<br />
<br />
'''General'''<br><br />
The Flasher can operate from a PC with an appropriate software like J-Flash or in stand-alone mode.<br />
<br />
'''Host System'''<br><br />
IBM PC/AT or compatible CPU: 486 (or better) with at least 128MB of RAM,<br />
running Windows, Linux & MacOS. It needs to have a USB, Ethernet or RS232 interface available for communication with Flasher.<br />
<br />
'''Power supply'''<br><br />
Flasher Portable: 3x standard AAA batteries or 5V DC, min. 100 mA via USB connector.<br />
<br />
Flasher Portable PLUS: internal rechargeable 680mAh Li-Ion battery, min. 100 mA via USB connector.<br />
<br />
Other Flashers: 5V DC, min. 100 mA via USB connector.<br />
<br />
'''Installing Flasher PC-software (J-Flash)'''<br><br />
The latest version of the J-Flash software, which is part of the [[J-Link Software and Documentation Pack]].<br />
For more information about using J-Flash please refer to <tt>UM08003_JFlashARM.pdf</tt> (J-Flash user guide) which is also available for download on our website.<br />
<br />
=== Specifications ===<br />
<br />
<br />
==== Specifications for Flasher ARM ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Windows, Linux & MacOS<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C<br />
|-<br />
| Storage Temperature || -20 °C ... +60 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
!colspan="100%"| Mechanical<br />
|-<br />
| Size (without cables) || 121mm x 66mm x 30mm<br />
|-<br />
| Weight (without cables) || 119g<br />
|-<br />
!colspan="100%"| Available interfaces<br />
|-<br />
| USB Host interface || USB 2.0, full speed<br />
|-<br />
| Ethernet Host interface || 10/100 MBit<br />
|-<br />
| RS232 Host interface || RS232 9-pin<br />
|-<br />
| Target interface || JTAG 20-pin (14-pin adapter available)<br />
|-<br />
!colspan="100%"| JTAG Interface, Electrical<br />
|-<br />
| Power Supply || USB powered, 100mA for Flasher ARM. 500 mA if target is powered by Flasher ARM<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| Target supply voltage || Supply voltage is 5V, max.<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6 <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Max. JTAG speed || up to 12MHz<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
===== Flasher ARM download speed =====<br />
<br />
The following table lists the Flasher ARM performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! ARM7 memory download<br />
|-<br />
| Flasher ARM || 720 Kbytes/s (12MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
<br />
==== Specifications for Flasher RX ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Windows, Linux & MacOS<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C<br />
|-<br />
| Storage Temperature || -20 °C ... +60 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
!colspan="100%"| Mechanical<br />
|-<br />
| Size (without cables) || 121mm x 66mm x 30mm<br />
|-<br />
| Weight (without cables) || 119g<br />
|-<br />
!colspan="100%"| Available interfaces<br />
|-<br />
| USB Host interface || USB 2.0, full speed<br />
|-<br />
| Ethernet Host interface || 10/100 MBit<br />
|-<br />
| RS232 Host interface || RS232 9-pin<br />
|-<br />
| Target interface || JTAG 20-pin (shipped with 14-pin adapter for Renesas RX)<br />
|-<br />
!colspan="100%"| JTAG Interface, Electrical<br />
|-<br />
| Power Supply || USB powered, 100mA for Flasher RX. 500 mA if target is powered by Flasher RX<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| 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)<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6 <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Max. JTAG speed || up to 12MHz<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
===== Flasher RX download speed =====<br />
<br />
The following table lists the Flasher RX performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! Flasher RX600 series memory download<br />
|-<br />
| Flasher RX || 720 Kbytes/s (12MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
<br />
==== Specifications for Flasher PPC ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Windows, Linux & MacOS<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C<br />
|-<br />
| Storage Temperature || -20 °C ... +60 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
!colspan="100%"| Mechanical<br />
|-<br />
| Size (without cables) || 121mm x 66mm x 30mm<br />
|-<br />
| Weight (without cables) || 119g<br />
|-<br />
!colspan="100%"| Available interfaces<br />
|-<br />
| USB Host interface || USB 2.0, full speed<br />
|-<br />
| Ethernet Host interface || 10/100 MBit<br />
|-<br />
| RS232 Host interface || RS232 9-pin<br />
|-<br />
| Target interface || JTAG 20-pin (shipped with 14-pin adapter for Renesas PPC)<br />
|-<br />
!colspan="100%"| JTAG Interface, Electrical<br />
|-<br />
| Power Supply || USB powered, 100mA for Flasher PPC. 500 mA if target is powered by Flasher PPC<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| Target supply voltage || Supply voltage is 5V, max.<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6 <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Max. JTAG speed || up to 12MHz<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
===== Flasher RX download speed =====<br />
<br />
The following table lists the Flasher PPC performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! Memory download<br />
|-<br />
| Flasher PPC || 530 Kbytes/s (8 MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
<br />
==== Specifications for Flasher PRO ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Windows, Linux & MacOS<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C<br />
|-<br />
| Storage Temperature || -20 °C ... +60 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
!colspan="100%"| Mechanical<br />
|-<br />
| Size (without cables) || 121mm x 66mm x 30mm<br />
|-<br />
| Weight (without cables) || 119g<br />
|-<br />
!colspan="100%"| Available interfaces<br />
|-<br />
| USB Host interface || USB 2.0, full speed<br />
|-<br />
| Ethernet Host interface || 10/100 MBit<br />
|-<br />
| RS232 Host interface || RS232 9-pin<br />
|-<br />
| Target interface || JTAG 20-pin (14-pin adapter available)<br />
|-<br />
!colspan="100%"| JTAG Interface, Electrical<br />
|-<br />
| Power Supply || USB powered, 100mA for Flasher PRO. 500 mA if target is powered by Flasher PRO<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| Target supply voltage || Supply voltage is 5V, max.<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6 <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Max. JTAG speed || up to 12MHz<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
<br />
===== Supported CPU cores =====<br />
<br />
The Flasher PRO supports the following CPU cores:<br />
<br />
'''ARM Cortex'''<br><br />
* Cortex-A5<br />
* Cortex-A8<br />
* Cortex-A9<br />
* Cortex-R4<br />
* Cortex-R5<br />
* Cortex-M0<br />
* Cortex-M0+<br />
* Cortex-M1<br />
* Cortex-M3<br />
* Cortex-M4<br />
<br />
'''ARM (legacy cores)'''<br><br />
* ARM720T<br />
* ARM7TDMI<br />
* ARM7TDMI-S<br />
* ARM920T<br />
* ARM922T<br />
* ARM926EJ-S<br />
* ARM946E-S<br />
* ARM966E-S<br />
* ARM1136JF-S<br />
* ARM1136J-S<br />
* ARM1156T2-S<br />
* ARM1156T2F-S<br />
* ARM1176JZ-S<br />
* ARM1176JZF<br />
* ARM1176JZF-S<br />
<br />
'''Renesas RX'''<br><br />
* RX111<br />
* RX210<br />
* RX220<br />
* RX21A<br />
* RX610<br />
* RX621<br />
* RX62G<br />
* RX62N<br />
* RX62T<br />
* RX630<br />
* RX631<br />
* RX63N<br />
* RX63T<br />
<br />
'''Freescale Power PC'''<br><br />
* e200z0<br />
<br />
===== Supported Target interfaces =====<br />
<br />
The Flasher PRO supports the following target interfaces:<br />
<br />
* JTAG<br />
* SWD<br />
* FINE<br />
* SPD<br />
<br />
===== Flasher PRO download speed =====<br />
<br />
The following table lists the Flasher PRO performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! ARM7 memory download<br />
|-<br />
| Flasher PRO || 720 Kbytes/s (12MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
<br />
==== Specifications for Flasher Compact ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Microsoft Windows (x86/x64)<br>Linux (x86/x64/Arm)<br>macOS (x86/Apple M1)<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C<br />
|-<br />
| Storage Temperature || -20 °C ... +65 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
| Size (without cables) || 70mm x 45mm x 18mm<br />
|-<br />
| Weight (without cables) || 40g<br />
|-<br />
| USB Host interface || USB 2.0 (Hi-Speed); Micro USB<br />
|-<br />
| Target interface || JTAG 20-pin (14-pin adapter available)<br />
|-<br />
| Power Supply || USB powered, 130mA (idle)<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| Target supply voltage || Supply voltage is 5V, max.<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
| Supported target interfaces || SPI, QSPI, 8051 C2, cJTAG, FINE, ICSP, IIC, ISP, JTAG, PDI, SPD, SWD, SWIM, UART, UPDI<br />
|-<br />
| Serial transfer rate between Flasher Compact and target || Up to 50 MHz (Depending on target interface)<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6 <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
===== Supported CPU cores =====<br />
<br />
The Flasher Compact supports the following CPU cores:<br />
'''ARM Cortex'''<br><br />
* Cortex-A5<br />
* Cortex-A8<br />
* Cortex-A9<br />
* Cortex-R4<br />
* Cortex-R5<br />
* Cortex-M0<br />
* Cortex-M0+<br />
* Cortex-M1<br />
* Cortex-M3<br />
* Cortex-M4<br />
<br />
'''ARM (legacy cores)'''<br><br />
* ARM720T<br />
* ARM7TDMI<br />
* ARM7TDMI-S<br />
* ARM920T<br />
* ARM922T<br />
* ARM926EJ-S<br />
* ARM946E-S<br />
* ARM966E-S<br />
* ARM1136JF-S<br />
* ARM1136J-S<br />
* ARM1156T2-S<br />
* ARM1156T2F-S<br />
* ARM1176JZ-S<br />
* ARM1176JZF<br />
* ARM1176JZF-S<br />
<br />
'''Renesas RX'''<br><br />
* RX111<br />
* RX210<br />
* RX220<br />
* RX21A<br />
* RX610<br />
* RX621<br />
* RX62G<br />
* RX62N<br />
* RX62T<br />
* RX630<br />
* RX631<br />
* RX63N<br />
* RX63T<br />
<br />
'''Freescale Power PC'''<br><br />
* e200z0<br />
<br />
===== Flasher Compact download speed =====<br />
<br />
The following table lists the Flasher Compact performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! ARM7 memory download<br />
|-<br />
| Flasher Compact || 720 Kbytes/s (12MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
<br />
==== Specifications for Flasher Portable PLUS ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Windows, Linux & MacOS<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C (normal operation)<br>+5 °C ... +45 °C (battery charging)<br />
|-<br />
| Storage Temperature || -20 °C ... +45 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
| 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)<br />
|-<br />
| Charging via USB || 70 minutes (at 1A charging current)<br />
|-<br />
!colspan="100%"| Mechanical<br />
|-<br />
| Size (without cables) || 126mm x 70mm x 28mm<br />
|-<br />
| Weight (without cables) || 140g<br />
|-<br />
!colspan="100%"| Available interfaces<br />
|-<br />
| USB Host interface || USB 2.0<br />
|-<br />
| Target interface || Standard 20-pin 0.1" connector (Adapters available).<br />
|-<br />
!colspan="100%"| Target Interface, Electrical<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| Target supply voltage || Supply voltage is 4.5V, max. (depends on the current battery voltage).<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6 <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Max. JTAG speed || up to 12MHz<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
===== Supported CPU cores =====<br />
<br />
The Flasher Portable PLUS supports the following CPU cores:<br />
<br />
'''ARM Cortex'''<br><br />
* Cortex-A5<br />
* Cortex-A8<br />
* Cortex-A9<br />
* Cortex-R4<br />
* Cortex-R5<br />
* Cortex-M0<br />
* Cortex-M0+<br />
* Cortex-M1<br />
* Cortex-M3<br />
* Cortex-M4<br />
<br />
'''ARM (legacy cores)'''<br><br />
* ARM720T<br />
* ARM7TDMI<br />
* ARM7TDMI-S<br />
* ARM920T<br />
* ARM922T<br />
* ARM926EJ-S<br />
* ARM946E-S<br />
* ARM966E-S<br />
* ARM1136JF-S<br />
* ARM1136J-S<br />
* ARM1156T2-S<br />
* ARM1156T2F-S<br />
* ARM1176JZ-S<br />
* ARM1176JZF<br />
* ARM1176JZF-S<br />
<br />
'''Renesas RX'''<br><br />
* RX111<br />
* RX210<br />
* RX220<br />
* RX21A<br />
* RX610<br />
* RX621<br />
* RX62G<br />
* RX62N<br />
* RX62T<br />
* RX630<br />
* RX631<br />
* RX63N<br />
* RX63T<br />
<br />
'''Freescale Power PC'''<br><br />
* e200z0<br />
<br />
===== Supported Target interfaces =====<br />
<br />
The Flasher Portable PLUS supports the following target interfaces:<br />
* JTAG<br />
* SWD<br />
* FINE<br />
* SPD<br />
<br />
===== Flasher Portable PLUS download speed =====<br />
<br />
The following table lists the Flasher Portable PLUS performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! ARM7 memory download<br />
|-<br />
| Flasher PRO || 720 Kbytes/s (12MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
<br />
==== Specifications for Flasher Portable ====<br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| General<br />
|-<br />
| Supported OS || Windows, Linux & MacOS<br />
|-<br />
| Operating Temperature || +5 °C ... +60 °C<br />
|-<br />
| Storage Temperature || -20 °C ... +65 °C<br />
|-<br />
| Relative Humidity (non-condensing) || <90% rH<br />
|-<br />
| Power Supply || a) USB powered, 100mA for Flasher Portable. 500 mA if target is powered by Flasher Portable<br>b) Batteries powered (3xAAA)<br />
|-<br />
!colspan="100%"| Mechanical<br />
|-<br />
| Size (without cables) || 130mm x 65mm x 25mm<br />
|-<br />
| Weight (without cables) || 120g<br />
|-<br />
!colspan="100%"| Available interfaces<br />
|-<br />
| USB Host interface || USB 2.0<br />
|-<br />
| Target interface || Standard 20-pin 0.1" connector (Adapters available).<br />
|-<br />
!colspan="100%"| Target Interface, Electrical<br />
|-<br />
| Target interface voltage (VIF) || 1.2 ... 5V<br />
|-<br />
| Target supply voltage || Supply voltage is 4.5V, max. (depends on the current battery voltage).<br />
|-<br />
| Target supply current || max. 400mA<br />
|-<br />
| Reset Type || Open drain. Can be pulled low or tristated<br />
|-<br />
| Reset low level output voltage (VOL) || VOL <= 10% of VIF<br />
|-<br />
!colspan="100%"| For the whole target voltage range (1.8V <= VIF <= 5V)<br />
|-<br />
| LOW level input voltage (VIL) || VIL <= 40% of VIF<br />
|-<br />
| HIGH level input voltage (VIH) || VIH >= 60% of VIF<br />
|-<br />
!colspan="100%"| For 1.8V <= VIF <= 3.6V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 10% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 90% of VIF<br />
|-<br />
!colspan="100%"| For 3.6V <= VIF <= 5V<br />
|-<br />
| LOW level output voltage (VOL) with a load of 10 kOhm || VOL <= 20% of VIF<br />
|-<br />
| HIGH level output voltage (VOH) with a load of 10 kOhm || VOH >= 80% of VIF<br />
|-<br />
!colspan="100%"| JTAG Interface, Timing<br />
|-<br />
| Max. JTAG speed || up to 12MHz<br />
|-<br />
| Data input rise time (Trdi) || Trdi <= 20ns<br />
|-<br />
| Data input fall time (Tfdi) || Tfdi <= 20ns<br />
|-<br />
| Data output rise time (Trdo) || Trdo <= 10ns<br />
|-<br />
| Data output fall time (Tfdo) || Tfdo <= 10ns<br />
|-<br />
| Clock rise time (Trc) || Trc <= 10ns<br />
|-<br />
| Clock fall time (Tfc) || Tfc <= 10ns<br />
|-<br />
|}<br />
<br />
===== Supported CPU cores =====<br />
<br />
The Flasher Portable supports the following CPU cores:<br />
<br />
'''ARM Cortex'''<br><br />
* Cortex-A5<br />
* Cortex-A8<br />
* Cortex-A9<br />
* Cortex-R4<br />
* Cortex-R5<br />
* Cortex-M0<br />
* Cortex-M0+<br />
* Cortex-M1<br />
* Cortex-M3<br />
* Cortex-M4<br />
<br />
'''ARM (legacy cores)'''<br><br />
* ARM720T<br />
* ARM7TDMI<br />
* ARM7TDMI-S<br />
* ARM920T<br />
* ARM922T<br />
* ARM926EJ-S<br />
* ARM946E-S<br />
* ARM966E-S<br />
* ARM1136JF-S<br />
* ARM1136J-S<br />
* ARM1156T2-S<br />
* ARM1156T2F-S<br />
* ARM1176JZ-S<br />
* ARM1176JZF<br />
* ARM1176JZF-S<br />
<br />
'''Renesas RX'''<br><br />
* RX111<br />
* RX210<br />
* RX220<br />
* RX21A<br />
* RX610<br />
* RX621<br />
* RX62G<br />
* RX62N<br />
* RX62T<br />
* RX630<br />
* RX631<br />
* RX63N<br />
* RX63T<br />
<br />
'''Freescale Power PC'''<br><br />
* e200z0<br />
<br />
===== Supported Target interfaces =====<br />
<br />
The Flasher Portable supports the following target interfaces:<br />
<br />
* JTAG<br />
* SWD<br />
* FINE<br />
* SPD<br />
<br />
===== Flasher Portable download speed =====<br />
<br />
The following table lists the Flasher Portable performance values for writing to memory (RAM) via the JTAG interface:<br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! ARM7 memory download<br />
|-<br />
| Flasher PRO || 720 Kbytes/s (12MHz JTAG)<br />
|-<br />
|}<br />
<br />
{{Note|1=The actual speed depends on various factors, such as JTAG, clock speed, host CPU core etc.}}<br />
== Working with Flasher ==<br />
<br />
This chapter describes functionality and how to use Flasher.<br />
<br />
=== Flasher Portable PLUS ===<br />
<br />
The Flasher Portable PLUS is a portable version of SEGGERs Flasher family,<br />
which has been designed to fill the need of an extremely portable, production grade,<br />
Flash programmer used for in-field firmware updates. No need to be tethered to an outlet,<br />
it is powered by an integrated Li-Ion cell (680mAh).<br />
The Flasher Portable PLUS programs flash targets in stand-alone mode or via J-Flash PC software.<br><br />
<br />
Furthermore the Flasher Portable PLUS allows the user to select between eight data images to be programmed.<br />
The images can be easily selected by using the SEL button on the front of the housing.<br />
For more information about support for multiple images, please refer to [[#Multiple File Support | Multiple File Support]].<br><br />
For setup and configuration purposes, the Flasher Portable PLUS connects to a PC via USB interface,<br />
running Windows, Linux & MacOS and has a built-in standard 20-pin J-Link target connector.<br><br />
<br />
{{Note|1=Ethernet and RS232 as host interface are not available for the Flasher Portable PLUS.}}<br />
<br />
==== Housing & Buttons ====<br />
<br />
The Flasher Portable PLUS comes with a display, which is for example used to represent the status of an ongoing flash progress.<br />
Furthermore, there are three buttons which allow the user to control Flasher Portable PLUS.<br />
For a detailed description of the functions, take a look at the table below:<br />
<br />
<!-- LG xxxxxx edit image with labels for buttons? (Is this actually necessary? Buttons are basically self-explanatory...) --><br />
[[File:Flasher_Portable_PLUS.png | 500px]]<br />
<br />
{| class="seggertable"<br />
|-<br />
! Button !! Description<br />
|-<br />
| Program || Start programming process with the currently selected image.<br />
|-<br />
| Select image || Select the image to be programmed next time the Program button is pressed.<br />
|-<br />
| 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.<br />
|-<br />
|}<br />
<br />
==== Configuration ====<br />
<br />
The Flasher Portable PLUS has some configuration options the other Flashers do not have.<br />
{| class="seggertable"<br />
|-<br />
! Option !! Description !! Value range !! Default value<br />
|-<br />
| AutoPowerOffOnIdle || Specifies the time interval after which the Flasher Portable will turn off without any user action || 1 to 3600 || 60<br />
|-<br />
| ShowDatCRCAfterProgramming || Activates displaying the data file CRC after the programming in the pop up message || 0 = inactive, 1 = active || 0<br />
|-<br />
|}<br />
<br />
If the <tt>Flasher.ini</tt> does not contain a <tt>[Config]</tt> section with the configuration option, the default value is used.<br />
<br />
'''Example:'''<br><br />
This sample will show the data file CRC after the programming and the auto power of is set to five minutes (=300 seconds).<br />
<br />
<source lang="c"><br />
[CONFIG]<br />
AutoPowerOffOnIdle = "300"<br />
ShowDatCRCAfterProgramming = "1"<br />
</source><br />
<br />
=== Flasher Portable ===<br />
<br />
The Flasher Portable is a portable version of SEGGERs Flasher family, which has been designed to fill the need of an extremely portable,<br />
production grade, Flash programmer used for in-field firmware updates. No need to be tethered to an outlet,<br />
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><br />
<br />
Furthermore the Flasher Portable allows the user to select between four data images to be programmed.<br />
The images can be easily selected by using the arrow buttons on the front of the housing.<br />
For more information about support for multiple images, please refer to [[#Multiple File Support | Multiple File Support]].<br><br />
For setup and configuration purposes, the Flasher Portable connects to a PC via USB interface,<br />
running Windows, Linux & MacOS and has a built-in standard 20-pin J-Link target connector.<br><br />
<br />
{{Note|1=Ethernet and RS232 as host interface are not available for the Flasher Portable.}}<br />
<br />
==== Housing & Buttons ====<br />
<br />
The Flasher Portable comes with several leds which are for example used to represent the status of an ongoing flash progress.<br />
Furthermore, there are three buttons which allow the user to control Flasher Portable.<br />
For a detailed description of the functions, take a look at the two tables below:<br />
<br />
<!-- LG xxxxxx edit image with labels for buttons?--><br />
[[File:Flasher_Portable_Top_2.png | 500px]]<br />
<br />
{| class="seggertable"<br />
|-<br />
! LED !! Description<br />
|-<br />
| ACTIVE || GREEN. Blinks while the Flasher Portable is busy / performs operations on the target.<br />
|-<br />
| PASS/FAIL || GREEN/RED. Indicates, if the last flashing cycle was successful.<br />
<ul><br />
<li> GREEN: Flashing cycle completed successfully.</li><br />
<li> RED: Flashing cycle completed with error.</li><br />
</ul><br />
|-<br />
| 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]].<br />
|-<br />
| POWER || GREEN: Indicates if Flasher is currently powered. Blinks while Flasher Portable tries to enumerate via USB.<br />
|-<br />
| 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.<br />
|-<br />
|}<br />
<br />
{| class="seggertable"<br />
|-<br />
! Button !! Description<br />
|-<br />
| Program || Start programming process with the currently selected image.<br />
|-<br />
| Select image || Select the image to be programmed next time the <tt>Program</tt> button is pressed.<br />
|-<br />
| 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<br />
|-<br />
|}<br />
<br />
=== File system ===<br />
<br />
The Flasher supports 8.3 filenames only (8 characters filename, 3 characters file extension).<br />
Using longer filenames may result in incorrect operation. Integrated functions,<br />
like the FTP server or the terminal server, will refuse writing files with long filenames.<br />
<br />
=== Setting up the IP interface ===<br />
<br />
Setting up the IP interface<br />
Some of the Flasher models come with an additional Ethernet interface to communicate with the host system.<br />
These Flashers also come with a built-in webserver which allows some basic setup of the emulator,<br />
e.g. configuring a default gateway which allows using it even in large intranets. For more information,<br />
please refer to [[#TCP Services | TCP Services]].<br />
<br />
==== Connecting the first time ====<br />
<br />
When connecting Flasher the first time, it attempts to acquire an IP address via DHCP.<br />
The recommended way for finding out which IP address has been assigned to Flasher is, to use the J-Link Configurator.<br />
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.<br />
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''.<br />
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,<br />
please refer to ''UM08001, J-Link / J-Trace User Guide'', chapter ''Setup'', section ''Setting up the IP interface''.<br />
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]].<br />
<br />
=== Operating modes ===<br />
<br />
All Flashers except the Flasher ATE are able to boot in 3 different modes:<br />
<br />
* PC-based mode<br />
* Stand-alone mode<br />
* File access mode<br />
<br />
{{Note|1=The Flasher ATE only supports the stand-alone mode.}}<br />
<br />
'''Definition PC-based mode'''<br><br />
Flasher is connected to a PC via USB/Ethernet and controlled by a PC application (J-Flash).<br />
If there is an RS232 connection to a PC, does not have any influence on if PC-based mode is entered or not.<br />
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, ...)<br />
<br />
'''Definition Stand-alone mode'''<br><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.<br />
<br />
'''Definition file access mode'''<br><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.<br />
In this mode, Flasher enumerates as a mass storage device (like an USB Stick) at the host PC.<br />
In this mode, configuration + data files can be manually placed on the Flasher and the Flasher logfile can be read out.<br />
If you are using a self-powered Flasher such as the Flasher Portable Plus, the Flasher must be turned off before connecting it.<br />
<br />
==== PC-based mode ====<br />
If you want to use Flasher for the first time you need to install the J-Link software and documentation package.<br />
After installation, connect Flasher to the host PC via USB or Ethernet.<br />
For more information about how to install the J-Link software and documentation package please refer to [[J-Link Software and Documentation Pack]].<br />
<br />
===== Connecting the target system =====<br />
<br />
'''Power-on sequence'''<br><br />
In general, Flasher should be powered on before connecting it with the target device.<br />
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.<br />
Power-on the device after you connected Flasher to it. Flasher will boot in "PC-based mode".<br />
<br />
'''Verifying target device connection with J-Link.exe'''<br><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.<br />
Then start the J-Link command line tool <tt>JLink.exe</tt>,<br />
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.<br />
The screenshot below shows the output of <tt>JLink.exe</tt>.<br />
<br />
[[File:flasher_jlinkmode.gif]]<br />
<br />
===== LED status indicators =====<br />
<br />
In PC-based mode, there are also certain LED status codes defined:<br />
<br />
{| class="seggertable"<br />
|-<br />
! # !! Status of LED !! Meaning<br />
|-<br />
| 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.<br />
|-<br />
| 0 || GREEN<br>constant || Flasher enumeration process is complete and it is ready to be controlled by a PC application.<br />
|-<br />
|}<br />
<br />
==== Stand-alone mode ====<br />
<br />
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]].<br />
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).<br />
In the "stand-alone mode" Flasher can be used as a stand-alone flash programmer.<br><br />
<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]].}}<br />
<br />
===== LED status indicators =====<br />
Progress and result of an operation is indicated by Flasher's LEDs. The behavior is different for J-Link and stand-alone mode.<br />
For a definition of the different modes, please refer to [[#Operating modes | Operating modes]].<br />
The following table describes the behavior of the LEDs in stand-alone mode.<br />
<br />
{| class="seggertable"<br />
|-<br />
! # !! Status of LED !! Meaning<br />
|-<br />
| 0 || GREEN<br>constant || Flasher waits for a start trigger to perform an operation in stand-alone mode.<br />
|-<br />
| 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><br />
|-<br />
| 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.<br />
|-<br />
|}<br />
Older Flasher models have a different behavior.<br />
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:<br />
<br />
* 1621xxxxx (Flasher ARM V2)<br />
* 1630xxxxx (Flasher ARM V3)<br />
* 4210xxxxx (Flasher PPC V1)<br />
* 4110xxxxx (Flasher RX V1)<br />
<br />
{| class="seggertable"<br />
|-<br />
! # !! Status of LED !! Meaning<br />
|-<br />
| 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.<br />
|-<br />
| 1 || GREEN<br>constant || Connect to target and perform init sequence.<br />
|-<br />
| 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><br />
|-<br />
| 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.<br />
|-<br />
|}<br />
<br />
==== File access mode ====<br />
<br />
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".<br />
If you are using a self-powered Flasher such as the Flasher Portable Plus, the Flasher must be turned off before connecting it.<br />
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.<br />
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>.<br />
<br />
[[File:flasher_mode_msd.gif]]<br />
<br />
<tt>FLASHER.CFG</tt> contains the configuration settings for programming the target device and <tt>FLASHER.DAT</tt> contains the data to be programmed.<br />
<tt>FLASHER.LOG</tt> contains all logging information about the commands, performed in stand-alone mode.<br />
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><br />
<br />
Currently, J-Flash does not support to configure Flasher for automated serial number programming.<br><br />
<br />
If you want to configure multiple Flasher for the same target you do not have to use J-Flash all the time.<br />
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".<br />
<br />
=== Setting up Flasher for stand-alone mode ===<br />
<br />
In order to set up Flasher for the stand-alone mode it needs to be configured once using the J-Flash software.<br />
For more information about J-Flash, please refer to the ''J-Flash User Guide''.<br><br />
<br />
After starting J-Flash, open the appropriate J-Flash project for the target Flasher shall be configured for, by selecting '''File''' -> '''Open Project'''.<br />
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><br />
<br />
After the appropriate project has been opened / created, the data file which shall be programmed needs to be loaded, by selecting '''File''' -> '''Open'''.<br />
After this J-Flash should look like in the screenshot below.<br />
<br />
[[File:jflash_projectfile_datafile.gif]]<br />
<br />
Before downloading the configuration (project) and program data (data file) to Flasher, the connection type (USB/IP) needs to be selected in the project.<br />
These settings are also saved on a per-project basis, so this also only needs to be setup once per J-Flash project.<br />
The connection dialog is opened by clicking '''Options''' -> '''Project settings''' -> '''General'''.<br />
<br />
[[File:jflash_connection_dialog.gif]]<br />
<br />
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.<br />
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.<br />
The user then can simply select the Flash he wants to download the configuration to.<br />
<br />
[[File:EmuSelectionDialog.gif]]<br />
<br />
In order to download the configuration and program data to the Flasher, simply select '''File''' -> '''Download config & data file to Flasher'''.<br />
<br />
[[File:jflash_download_to_emul.gif]]<br />
<br />
The J-Flash log window indicates that the download to the emulator was successful.<br />
<br />
[[File:jflash_download_to_emu_succ.gif]]<br />
<br />
From now on, Flasher can be used in stand-alone mode (without host PC interaction) for stand-alone programming.<br />
<br />
==== Preparing for stand-alone operation manually ====<br />
<br />
As an alternative, J-Flash can also be used to save config and data file to a hard drive.<br><br />
<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,<br />
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.<br />
<br />
'''Creating config and data files'''<br><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><br />
<br />
For some devices, additional files (*.PEX) are needed.<br />
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.<br />
<br />
'''About *.PEX files'''<br><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,<br />
the following needs to be taken care of:<br><br />
<br />
For some devices, special connect, reset etc. sequences are necessary which are stored in so-called *.PEX files on the Flasher.<br><br />
<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><br />
<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><br />
The *.PEX files need to be placed in a subdirectory with the same name as the corresponding *.cfg file.<br />
J-Flash creates a directory with the correct name automatically when a config file is created.<br><br />
<br />
Example:<br><br />
<br />
MyConf0 is a project for a device that requires a *.PEX file for connect.<br><br />
MyConf1 is a project for a device that requires no *.PEX file at all.<br />
<br />
[[File:PEX_File_Flasher.png]]<br />
<br />
=== Universal Flash Loader mode ===<br />
<br />
As an alternative to the stand-alone mode, configured via J-Flash, there is the Universal Flash Loader mode.<br />
While the normal stand-alone mode relies on using the debug interface of the device, the Universal Flash Loader<br />
mode uses device or vendor specific programming interfaces and protocols and therefore it is independent of the<br />
CPU core.<br><br />
<br />
The Universal Flash Loader is available for the following Flasher models:<br />
* Flasher PRO<br />
* Flasher Compact<br />
* Flasher Portable PLUS<br />
<br />
For some of the supported devices, SEGGER offers specific adapters.<br />
<br />
==== Preparing manually ====<br />
<br />
The Universal Flash Loader uses an configuration file (*.UNI), a device specific flash programming algorithm (*.PEX) and a data file (*.DAT).<br />
<br />
===== Configuration =====<br />
<br />
The configuration file basically is split into three parts.<br />
The first part, the section [DEVICE], controls the generic behavior of the Universal Flash Loader.<br />
It specifies which protocol driver and data file to use. It allows enabling and configuring target power<br />
and it defines which actions to perform.<br />
The second part consists of one or more [BANKx] sections, which contain information about the memories.<br />
The third part, the section [CONFIG], includes configuration settings for the protocol driver.<br><br />
<br />
An .UNI file might look as follows:<br><br />
<br />
<source lang="c"><br />
[OPTIONS]<br />
TargetPower = "0"<br />
ChipErase = "0"<br />
<br />
[TASKS]<br />
CheckBlank = "1"<br />
Erase = "1"<br />
Program = "1"<br />
Verify = "1"<br />
Secure = "1"<br />
<br />
[DEVICE]<br />
Algo = "RL78.PEX"<br />
Data = "ALL_6k.dat"<br />
<br />
[BANK0]<br />
; Code Flash<br />
Base = "0x00000000"<br />
Size = "0x00004000"<br />
Sect = "0x00000400"<br />
<br />
[BANK1]<br />
; Data Flash<br />
Base = "0x000F1000"<br />
Size = "0x00000800"<br />
Sect = "0x00000400"<br />
<br />
[CONFIG]<br />
BaudRate = "1000000"<br />
ClearConfigOnConnect = "0x00"<br />
Security = "0xFF"<br />
ShieldStart = "0x0000"<br />
ShieldEnd = "0x000F"<br />
</source><br />
<br />
'''[OPTIONS]'''<br><br />
'''TargetPower'''<br><br />
If set to a value >0, power is applied to the target.<br />
The value defines the delay (in ms) after enabling the target power supply and before starting to communicate with the target.<br />
<br />
'''ChipErase'''<br><br />
If set to 1, the chip erase function is called for erasing the chip.<br><br />
{{Note|1=Do not enable this setting if the flash programming algorithm does not support chip erase.}}<br />
<br />
'''[TASKS]'''<br><br />
'''CheckBlank'''<br><br />
Defines if a blank check should be performed before erasing a sector.<br />
<br />
'''Erase'''<br><br />
Defines if the sector should be erased before programming.<br />
<br />
'''Program'''<br><br />
Defines if the sector should be programmed.<br />
<br />
'''Verify'''<br><br />
Defines if the sector should be verified after programming.<br />
<br />
'''Secure'''<br><br />
Defines if the device should be secured or protected against read-out after verifying.<br />
<br />
'''[DEVICE]'''<br><br />
'''Algo'''<br><br />
File name of the flash programming algorithm. This file is provided by SEGGER and will typically support a series of devices.<br />
<br />
'''Data'''<br><br />
File name of the data file to program. The Flasher only supports the Flasher .dat file format.<br />
Flasher .dat files can be generated by J-Flash or Universal Flash Loader and offer high performance together with high flexibility.<br />
<br />
'''[BANKx]'''<br><br />
x blocks with configuration data for the flash banks. All three parameters (Base, Size and Sect) are mandatory.<br />
<br />
'''Base'''<br><br />
Base address of the flash bank.<br />
<br />
'''Size'''<br><br />
Total size of the flash bank.<br />
<br />
'''Sect'''<br><br />
Sector size of the flash bank.<br />
<br />
'''[CONFIG]'''<br><br />
This section includes specific configuration data for the flash programming algorithm.<br><br />
There are no general parameters.<br />
<br />
{{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. }}<br />
<br />
==== Preparing using the PC utility ====<br />
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.<br />
<br />
[[File:Universal Flash Loader.png]]<br />
<br />
The Universal Flash Loader Configurator comes with a large list of devices and flash programming algorithms. If you are going to<br />
use a device from one of the supported families which currently is not available in the utility, feel free to contact the support.<br />
<br />
=== Multiple File Support ===<br />
<br />
It is also possible to have multiple data files and config files on Flasher, to make Flasher more easy to use in production environment.<br />
To choose the correct configuration file and data file pair, a <tt>FLASHER.INI</tt> file is used.<br />
This init file contains a <tt>[FILES]</tt> section which describes which configuration file and which data file should be used for programming.<br />
A sample content of a FLASHER.INI file is shown below:<br><br />
<br />
<source><br />
[FILES]<br />
DataFile = "Flasher1.dat"<br />
ConfigFile = "Flasher1.cfg"<br />
</source><br />
<br />
Using this method all configuration files and data files which are used in the production only have to be downloaded once.<br />
From there on a configuration file / data file pair can be switched by simply replacing the <tt>FLASHER.INI</tt> by a new one,<br />
which contains the new descriptions for the configuration file and data file. The <tt>FLASHER.INI</tt> can be replaced in two ways:<br />
<ol><br />
<li>Boot Flasher in file access mode in order to replace the <tt>FLASHER.INI</tt></li><br />
<li><br />
If Flasher is already integrated into the production line, runs in stand-alone mode and can not be booted in other mode:<br />
Use the file I/O commands provided by the ASCII interface of Flasher, to replace the <tt>FLASHER.INI</tt>.<br />
For more information about the file I/O commands, please refer to [[#File I/O commands | File I/O commands]].<br />
</li><br />
</ol><br />
{{Note|1=Flasher supports 8.3 filenames only (8 characters filename, 3 characters file extension). Using longer filenames may result in incorrect operation.}}<br />
<br />
==== Flasher Portable specifics ====<br />
<br />
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><br />
<br />
Which config / data file pair is used for which image selection position is determined by the contents of the FLASHER.INI.<br />
For this, the FLASHER.INI contents in the <tt>[FILES]</tt> section have been extended.<br />
The sample below shows how to enable the user to select between four different images on the Flasher portable via the select / arrow button:<br />
<br />
<source><br />
[FILES]<br />
DataFile = "First.dat"<br />
ConfigFile = "First.cfg"<br />
DataFile1 = "Second.dat"<br />
ConfigFile1 = "Second.cfg"<br />
DataFile2 = "Third.dat"<br />
ConfigFile2 = "Third.cfg"<br />
DataFile3 = "Fourth.dat"<br />
ConfigFile3 = "Fourth.cfg"<br />
</source><br />
<br />
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.<br />
From there on, switching between the files can be done by simply using the selection button of Flasher Portable.<br />
<br />
===== Example =====<br />
<br />
1 Target, 2 Datafiles (e.g. boot loader und application) --> same configuration file (*.CFG) but different data files (*.DAT) should be used.<br><br />
<br />
* Open pre-configured J-Flash project<br />
* File -> Save Flasher config file ... (DEFAULT.CFG)<br />
* Open data file 1 (boot loader)<br />
* File -> Save Flasher data file ... (BOOT.DAT)<br />
* Open data file 2 (application)<br />
* File -> Save Flasher data file ... (APP.DAT)<br />
* Create the a FLASHER.INI file (content see below)<br />
* Connect the Flasher in file access mode to the PC<br />
* Copy DEFAULT.CFG, BOOT.DAT, APP.DAT and FLASHER.INI on the Flasher<br />
<br />
FLASHER.INI content:<br><br />
<br />
<source><br />
[FILES]<br />
DataFile = "BOOT.DAT"<br />
ConfigFile = "DEFAULT.CFG"<br />
DataFile1 = "APP.DAT"<br />
ConfigFile1 = "DEFAULT.CFG"<br />
</source><br />
<br />
==== Flasher Portable PLUS specifics ====<br />
<br />
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><br />
<br />
Which config / data file pair is used for which image selection position is determined by the contents of the FLASHER.INI.<br />
For this, the FLASHER.INI may contain several <tt>[BATCH]</tt> sections.<br />
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:<br />
<br />
<source><br />
[BATCH]<br />
DataFile = "First.dat"<br />
ConfigFile = "First.cfg"<br />
[BATCH1]<br />
DataFile = "Second.dat"<br />
ConfigFile = "Second.cfg"<br />
[BATCH2]<br />
DataFile = "Third.dat"<br />
ConfigFile = "Third.cfg"<br />
[BATCH7]<br />
DataFile = "Proj_8.dat"<br />
ConfigFile = "Proj_8.cfg"<br />
[BATCH15]<br />
DataFile = "Proj_16.dat"<br />
ConfigFile = "Proj_16.cfg"<br />
</source><br />
<br />
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.<br />
From there on, switching between the files can be done by simply using the selection button of Flasher Portable PLUS.<br />
<br />
Please also consider the chapter [[#Batch Programming in stand-alone mode | Batch Programming in stand-alone mode]].<br />
<br />
{{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.}}<br />
{{Note|1=You may have gaps in the list. The missing entries will be skipped when selecting the next configuration.}}<br />
{{Note|1=The <tt>[Files]</tt> section is supported by the Flasher Portable PLUS, too. But the number of configuration is limited to four.}}<br />
<br />
===== Example =====<br />
<br />
1 Target, 2 Datafiles (e.g. boot loader und application) --> same configuration file (*.CFG) but different data files (*.DAT) should be used.<br><br />
<br />
* Open pre-configured J-Flash project<br />
* File -> Save Flasher config file ... (DEFAULT.CFG)<br />
* Open data file 1 (boot loader)<br />
* File -> Save Flasher data file ... (BOOT.DAT)<br />
* Open data file 2 (application)<br />
* File -> Save Flasher data file ... (APP.DAT)<br />
* Create the a FLASHER.INI file (content see below)<br />
* Connect the Flasher in file access mode to the PC<br />
* Copy DEFAULT.CFG, BOOT.DAT, APP.DAT and FLASHER.INI on the Flasher<br />
<br />
FLASHER.INI content:<br><br />
<br />
<source><br />
[BATCH]<br />
DataFile = "BOOT.DAT"<br />
ConfigFile = "DEFAULT.CFG"<br />
DisplayName = "Bootloader"<br />
[BATCH1]<br />
DataFile = "APP.DAT"<br />
ConfigFile = "DEFAULT.CFG"<br />
DisplayName = "Application"<br />
[BATCH2]<br />
DataFile = "BOOT.DAT"<br />
ConfigFile = "DEFAULT.CFG"<br />
DataFile1 = "APP.DAT"<br />
ConfigFile1 = "DEFAULT.CFG"<br />
DisplayName = "BL and App"<br />
</source><br />
<br />
=== Custom labels ===<br />
<br />
Flasher supports to assign custom labels to configurations. This allows to specify easy to remember names for configurations that are stored on the Flasher.<br />
<br />
==== Hardware and software requirements ====<br />
This feature is supported by the following models:<br />
* Flasher Portable PLUS<br />
<br />
This feature is supported since V6.30e of the software package and firmware<br />
<br />
==== Assigning labels ====<br />
The configuration and data file pairs are specified in the <tt>FLASHER.INI</tt> file:<br />
<source><br />
[FILES]<br />
DataFile = "IMAGE0.dat"<br />
ConfigFile = "IMAGE0.cfg"<br />
DataFile1 = "IMAGE1.dat"<br />
ConfigFile1 = "IMAGE1.cfg"<br />
</source><br />
<br />
By default, Flasher will show the names of the configuration and data file:<br />
[[File:FW1_smartwatch_nolabel.png]]<br />
[[File:FW2_smart_meter_nolabel.png]]<br />
<br />
By adding <tt>DisplayName</tt>, <tt>DisplayName1</tt>, ... keys to the <tt>FLASHER.INI</tt>, a custom label can be shown instead:<br />
<source><br />
[FILES]<br />
DisplayName = "FW smartwatch"<br />
DataFile = "IMAGE0.dat"<br />
ConfigFile = "IMAGE0.cfg"<br />
DisplayName1 = "FW smart meter"<br />
DataFile1 = "IMAGE1.dat"<br />
ConfigFile1 = "IMAGE1.cfg"<br />
</source><br />
<br />
The images will now be shown as follows:<br />
[[File:FW1_smartwatch_label.png]]<br />
[[File:FW2_smart_meter_label.png]]<br />
<br />
==== Considerations ====<br />
* 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.<br />
<br />
=== Programming multiple targets ===<br />
<br />
It is possible to program multiple targets which are located in a JTAG chain.<br />
The targets will be programmed each with a configuration and a data file.<br />
The configuration for the desired target must be selected before it can be programmed,<br />
this can be done with the <tt>#SELECT</tt> command.<br />
For more information how to use the <tt>#SELECT</tt> command please refer to Chapter "3.3.5 ''Commands to Flasher''".<br />
<br />
'''Example'''<br><br />
Three devices should be programmed.<br><br />
<br />
JTAG Chain: ''TDI'' --> ''Device2'' --> ''Device1'' --> ''Device0'' --> ''TDO''<br><br />
<br />
Three configurations would be stored on the flasher:<br><br />
<br />
Config 0: Configured to program Device0 (DEVICE0.CFG, DEVICE0.DAT)<br><br />
Config 1: Configured to program Device1 (DEVICE1.CFG, DEVICE1.DAT)<br><br />
Config 2: Configured to program Device2 (DEVICE2.CFG, DEVICE2.DAT)<br><br />
<br />
Selection and programming of the target will be done via the ASCII interface:<br><br />
<br />
<source><br />
#SELECT DEVICE0<br />
#AUTO<br />
#SELECT DEVICE1<br />
#AUTO<br />
#SELECT DEVICE2<br />
#AUTO<br />
</source><br />
<br />
==== Programming multiple targets with J-Flash ====<br />
<br />
Programming multiple targets can also be done via J-Flash using the command line interface.<br />
For this each target must be handled with its own project file.<br />
<br />
'''Example'''<br><br />
<br />
<source><br />
JFlash.exe -openproj"Device0.jflash" -open"Device0.hex" -auto -exit<br />
JFlash.exe -openproj"Device1.jflash" -open"Device1.hex" -auto -exit<br />
JFlash.exe -openproj"Device2.jflash" -open"Device2.hex" -auto -exit<br />
</source><br />
<br />
=== Batch Programming in stand-alone mode ===<br />
<br />
Batch programming allows to execute different stand-alone mode jobs in batch to be executed in immediate succession, without any user interaction in between.<br />
This can be used for example to program multiple targets in a JTAG-Chain or multiple data files to a target.<br><br />
A batch may contains an unlimited number of configurations which consist of a data file (*.DAT) and config file (*.CFG).<br />
For further information regarding config and data files, please refer to [[#Preparing for stand-alone operation manually | Preparing for stand-alone operation manually]].<br><br />
In order to specify the batch jobs, a FLASHER.INI file is used.<br />
This init file contains a [BATCH] section which describes which configuration pairs (*.DAT and *.CFG file) should be used for each batch job.<br />
A sample content of a FLASHER.INI file is shown below:<br><br />
<br />
<source><br />
[BATCH]<br />
DataFile = "Flasher0.dat"<br />
ConfigFile = "Flasher0.cfg"<br />
DataFile1 = "Flasher1.dat"<br />
ConfigFile1 = "Flasher1.cfg"<br />
</source><br />
<br />
[[File:Batch_Jobs.bmp]]<br />
<br />
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.<br />
<br />
<br />
[[File:Batch_Programming.bmp]]<br />
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<br />
currently executed action.<br />
<br />
<br />
[[File:Batch_Result.bmp]]<br />
The result of the programming will be shown on the screen after finishing all jobs.<br />
<br />
<br />
Creating / Replacing of the FLASHER.INI file can done in two ways:<br><br />
<ol><br />
<li>Boot Flasher in file access mode in order to replace the FLASHER.INI</li><br />
<li><br />
If Flasher is already integrated into the production line, runs in stand-alone mode and can not be booted in other mode:<br />
Use the file I/O commands provided by the ASCII interface of Flasher, to replace the FLASHER.INI .<br />
For more information about the file I/O commands, please refer to [[#File I/O commands | File I/O commands]].<br />
In case of an error occurred during execution, the Flasher terminates the entire batch processing.<br />
</li><br />
</ol><br />
{{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.}}<br />
{{Note|1=Flasher supports 8.3 filenames only (8 characters filename, 3 characters file extension). Using longer filenames may result in incorrect operation.}}<br />
<br />
==== Flasher Portable specifics ====<br />
<br />
Flasher Portable allows to choose between four different batches during runtime by using the select/arrow button on the front of Flasher Portable.<br />
Which batch configuration is used for which image selection position is specified in the FLASHER.INI.<br />
For this, the FLASHER.INI contents in the [BATCH] section have been extended.<br />
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><br />
<br />
<source><br />
[BATCH]<br />
DataFile = "Flasher0.dat"<br />
ConfigFile = "Flasher0.cfg"<br />
DataFile1 = "Flasher1.dat"<br />
ConfigFile1 = "Flasher1.cfg"<br />
DataFile2 = "Flasher2.dat"<br />
ConfigFile2 = "Flasher2.cfg"<br />
[BATCH1]<br />
DataFile = "TEST.dat"<br />
ConfigFile = "Test.cfg"<br />
[BATCH2]<br />
DataFile = "VALIDATE.dat"<br />
ConfigFile = "Flasher0.cfg"<br />
</source><br />
<br />
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.<br />
From there on, switching between the batches can be done by simply using the selection button of Flasher Portable.<br />
<br />
<br />
<br />
==== Examples ====<br />
<br />
'''Example 1:''' Programming two Data files to the same target<br><br />
<br />
* Open your J-Flash project.<br />
* Use File -> Save Flasher config file... to save the .CFG file (in this example: STM32F4.CFG).<br />
* Select the first binary and use File -> Save Flasher Data file... to save the first .DAT file (in this example: DATA0.DAT).<br />
* Select the second binary and use File -> Save Flasher Data file... to save the second data file .DAT file (in this example: DATA1.DAT).<br />
* Copy the Files to the Flasher e.g. by using file access mode.<br />
* Create a FLASHER.INI file in the root directory of the Flasher.<br />
* Exemplary content of FLASHER.INI:<br><br />
<source><br />
[BATCH]<br />
DataFile = "DATA0.dat"<br />
ConfigFile = "emPower.cfg"<br />
DataFile1 = "DATA1.dat"<br />
ConfigFile1 = "emPower.cfg"<br />
</source><br />
<br />
<br />
'''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><br />
Example scenario: 2 Devices in a JTAG chain, a STM32F1 and a STM32F4. <br><br />
<br />
* Follow the same as described before and additionally:<br />
* Create one project file per target (and create a .CFG file of each one).<br />
* Make sure each project file is configured correctly, especially the JTAG-Chain position (See UM8003 "J-Flash" for more detailed info).<br />
* Exemplary content of FLASHER.INI:<br><br />
<source><br />
[BATCH]<br />
DataFile = "F1DATA.dat"<br />
ConfigFile = "STM32F1.cfg"<br />
DataFile1 = "F4DATA0.dat"<br />
ConfigFile1 = "STM32F4.cfg"<br />
DataFile2 = "F4DATA1.dat"<br />
ConfigFile2 = "STM32F4.cfg"<br />
</source><br />
<br />
'''Example 3:''' Using multiple Batch sections with Flasher Portable.<br><br />
Example scenario: 2 Devices in a JTAG chain, a STM32F1 and a STM32F4.<br><br />
Selection 1 will program the STM32F1 target.<br><br />
Selection 2 will program the STM32F4 target using "F4DATA0.dat".<br><br />
Selection 3 will program the STM32F4 target using "F4DATA1.dat".<br><br />
Selection 4 will execute 1, 2 and 3 in sequence.<br><br />
* Exemplary content of FLASHER.INI:<br><br />
<source><br />
[BATCH]<br />
DataFile = "F1DATA.dat"<br />
ConfigFile = "STM32F1.cfg"<br />
[BATCH1]<br />
DataFile = "F4DATA0.dat"<br />
ConfigFile = "STM32F4.cfg"<br />
[BATCH2]<br />
DataFile = "F4DATA1.dat"<br />
ConfigFile = "STM32F4.cfg"<br />
[BATCH3]<br />
DataFile = "F1DATA.dat"<br />
ConfigFile = "STM32F1.cfg"<br />
DataFile1 = "F4DATA0.dat"<br />
ConfigFile1 = "STM32F4.cfg"<br />
DataFile2 = "F4DATA1.dat"<br />
ConfigFile2 = "STM32F4.cfg"<br />
</source><br />
<br />
=== Serial number programming ===<br />
<br />
Flasher supports programming of serial numbers. In order to use the serial number programming feature,<br />
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><br />
<br />
In general, Flasher supports two ways of programming a serial number into the target:<br><br />
<ol><br />
<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><br />
<li><br />
Programming custom serial numbers from a serial number list file.<br />
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.<br />
Serial number list file needs to be specified and created by user.<br />
</li><br />
</ol><br />
In the following some generic information how to setup Flasher & the J-Flash project for serial number programming are given.<br><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.}}<br />
{{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.}}<br />
<br />
==== Serial number settings ====<br />
<br />
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.<br />
This is done by enabling the '''Program serial number''' option as shown in the screenshot and table below:<br><br />
<br />
[[File:SN_Sample_JFlashSettings.gif]]<br />
<br />
{| class="seggertable"<br />
|-<br />
! Setting !! Meaning<br />
|-<br />
| <tt>Address</tt> || The address the serial number should be programmed at.<br />
|-<br />
| <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.<br />
|-<br />
| <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.<br />
|-<br />
| <tt>Increment</tt> || Specifies how much <tt>Next SN</tt> is incremented.<br />
|-<br />
|}<br />
<br />
==== Serial number file ====<br />
<br />
When selecting '''File -> Download serial number file to Flasher''', J-Flash will create a Serial number file named as <tt><JFlashProjectName>_Serial.txt</tt>.<br />
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.<br />
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.<br />
<br />
==== Serial number list file ====<br />
<br />
In order to program custom serial numbers which can not be covered by the standard serial number scheme provided by J-Flash<br />
(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.<br />
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.<br />
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><br />
* One serial number per line<br />
* Each byte of the serial number is described by two hexadecimal digits.<br />
<br />
'''Example'''<br><br />
A 8-byte serial number should be programmed at address 0x08000000.<br><br />
<br />
It should be programmed as follows in the memory:<br><br />
<br />
<tt>0x08000000: 0x01 0x02 0x03 0x04 0x55 0x66 0x77 0x88</tt><br><br />
<br />
The serial number list file should look as follows:<br><br />
<br />
<tt>0102030455667788</tt><br />
<br />
[[File:SN_SNList.gif]]<br />
<br />
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><br />
<br />
Which line Flasher will read at the next programming cycle, is configured via the <tt>Next SN</tt> option in J-Flash.<br />
For more information, please refer to [[#Serial number settings | Serial number settings]].<br />
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><br />
<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.}}<br />
{{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.}}<br />
<br />
==== Programming process ====<br />
<br />
Flasher will increment the serial number in SERIAL.TXT by the value defined in <tt>Increment</tt>, after each successful programming cycle.<br><br />
<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><br />
<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.<br />
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.}}<br />
<br />
==== Downloading serial number files to Flasher ====<br />
<br />
Downloading the serial number files needs to be done explicitly by selecting '''File-> Download serial number file to Flasher'''.<br />
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.<br />
<br />
==== Sample setup ====<br />
<br />
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.<br />
<br />
'''Defining serial number address, length and start value'''<br><br />
In the J-Flash project the following needs to be defined:<br><br />
* <tt>Address</tt> is 0x08001000<br />
* <tt>Next SN</tt> is 1234567<br />
* <tt>Increment</tt> is 1<br />
* <tt>Len</tt> is 4 (bytes)<br />
<br />
[[File:SN_Sample_JFlashSettings.gif]]<br />
<br />
'''Downloading configuration, data and serial number to Flasher.'''<br><br />
After setting up the rest of the configuration (Target interface etc.) and selecting an appropriate data file, the configuration,<br />
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><br />
<br />
[[File:SN_Sample_DownloadToFlasher.gif]]<br />
<br />
After downloading the serial number to Flasher, J-Flash also created the <tt><JFlashProjectName>_Serial.txt</tt>.<br />
<br />
[[File:SN_Sample_SerialFileCreated.gif]]<br />
<br />
Now Flasher is prepared to program the 8-byte serial number.<br />
<br />
=== Patch file support ===<br />
<br />
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.<br />
Before starting programming process in stand-alone mode, Flasher will look for a file named <tt>Patches.txt</tt> being present on the Flasher.<br />
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><br />
<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.<br />
<br />
'''Syntax'''<br><br />
<!-- LG xxxxxxxxx '==' is shown as '=', so instead use '= ='--><br />
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><br />
<br />
<tt><NumPatches>,<Addr>,<NumBytes>:<nowiki><Data></nowiki>,<Addr>,<NumBytes>:<nowiki><Data></nowiki>,<Addr>,</tt><br><br />
<tt><NumBytes>:<nowiki><Data></nowiki>,<Addr>,<NumBytes>:<nowiki><Data></nowiki>\r\n</tt><br><br />
<br />
Find below a table which describes each parameter.<br><br />
{| class="seggertable"<br />
|-<br />
! Parameter !! Description<br />
|-<br />
| <tt><NumPatches></tt> || Describes the number of patches in this patch line. Max. value is 4.<br />
|-<br />
| <tt><Addr></tt> || Describes the address to be patched. Value is expected in hex.<br />
|-<br />
| <tt><NumBytes></tt> || Number of bytes for the current patch. Max. value is 20h (32 in decimal). Value is expected in hex.<br />
|-<br />
| <tt><nowiki><Data></nowiki></tt> || Describes the data to be patched. <nowiki><Data></nowiki> is always expected as 2 hexadecimal characters per byte.<br />
|-<br />
|}<br />
<br />
{{Note|1=All values are expected in hexadecimal format (hex).<br><br />
<nowiki><Data></nowiki> section is always preceded by ":", not ",".}}<br />
<br />
'''Example'''<br><br />
Below is an example patch.<br><br />
<br />
<source><br />
1,18,4:01020304\r\n<br />
</source><br />
<br />
Patching the following data:<br />
<br />
[[File:data_before.png]]<br />
<br />
with the example patch will result in the following data:<br />
<br />
[[File:data_afterwards.png]]<br />
<br />
Please note that as mentioned earlier patching undefined memory locations will be ignored.<br><br />
Applying the example patch to the following data:<br />
<br />
[[File:undefined_mem_before.png]]<br />
<br />
Causes no data to be patched, as can be seen in the following image:<br />
<br />
[[File:undefined_mem_no_token.png]]<br />
<br />
Therefore it is necessary to first write placeholder data to the memory locations which are supposed to be patched.<br><br />
An example for such a placeholder can be seen here:<br />
<br />
[[File:undefined_mem_token.png]]<br />
<br />
Please note that the actual data inside the placeholder does not matter to the Flasher,<br />
because it is overwritten during patching.<br><br />
Applying the example patch will now work as expected:<br />
<br />
[[File:undefined_mem_after.png]]<br />
<br />
'''Single patch via RS232'''<br><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><br />
<br />
Send the <tt>#AUTO PATCH <NumPatches>,<Addr>,<NumBytes>:<nowiki><Data></nowiki></tt><br><br />
<br />
command via Flasher ASCII interface. The parameters have the same function as described in the table above.<br />
<br />
==== Newline encoding ====<br />
<br />
In general, for all patch files, init files etc. Flasher supports both newline encodings:<br><br />
<br />
* Windows: \r\n<br />
* Unix/Mac: \n<br />
<br />
All parser functionality etc. are written to be independent from the host operating system.<br />
<br />
=== Limiting the number of programming cycles ===<br />
<br />
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.<br />
To make use of this feature, a file called <tt>Cntdown.txt</tt> needs to be placed on the Flasher.<br />
This file simply contains a decimal number (32-bit unsigned integer) that describes how many programming cycles can be performed with the current setup.<br />
<br />
[[File:CntdownTxtContent.jpg]]<br />
<br />
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><br />
<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>.}}<br />
<br />
==== Changed fail/error LED indicator behavior ====<br />
<br />
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><br />
<br />
* The red error/fail LED will lit for 1 second<br />
* After this, it will blink/toggle x times @ 5 Hz, indicating the number of programming cycles left. (blinking 5 times for 5 cycles left, ...)<br />
<br />
==== Required Flasher hardware version for Cntdown.txt support ====<br />
<br />
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><br />
<br />
* 1621xxxxx (Flasher ARM V2)<br />
* 1630xxxxx (Flasher ARM V3)<br />
* 4210xxxxx (Flasher PPC V1)<br />
* 4110xxxxx (Flasher RX V1)<br />
<br />
All other models / hardware versions support limiting of programming cycles.<br />
<br />
=== Authorized flashing ===<br />
<br />
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.<br />
without the possibility to read out the Flasher contents via file access mode, FILE I/O functionality (J-Link Commander) or RS232 commands.<br />
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.<br />
<br />
==== Creating / Adding the secure area ====<br />
<br />
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.<br />
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.<br />
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><br />
<br />
[[File:CreateSecArea.jpg]]<br />
<br />
The following secure area related commands are available in J-Link Commander:<br><br />
<br />
* securearea create<br />
* securearea remove<br />
<br />
{{Note|1=When creating or removing the <tt>secure area</tt>, all configuration and data files being stored on the Flasher, are lost.<br />
Please make sure that they are not needed anymore, before adding / removing the security area.}}<br />
<br />
==== Moving files to the secure area ====<br />
<br />
Before moving configuration + data to the <tt>secure area</tt>, proper functionality of the setup should be tested in stand-alone mode.<br />
Once the setup is working as expected, do the following, to move the configuration + data into the <tt>secure area</tt>:<br><br />
<br />
* Start Flasher in file access mode (For more info, please refer to: [[#file access mode | file access mode]])<br />
<br />
[[File:FilesBeforeSecure.png]]<br />
<br />
* Create a folder "<tt>_SECURE</tt>"<br />
* Move all files that shall be moved to the <tt>secure area</tt>, into this folder<br />
<br />
[[File:FilesAfterSecure.png]]<br />
<br />
* 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.<br />
* Now Flasher can be used in stand-alone mode, as normal, but the files cannot be read back by the user / operator.<br />
<br />
==== Considerations to be taken when using the secure area ====<br />
<br />
When using the <tt>secure area</tt>, some things need to be considered:<br><br />
<br />
* All features like multiple file support, patch file support etc. can also be used when operating from the <tt>secure area</tt>.<br />
* 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>.<br />
* 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>.<br />
* 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.<br />
<br />
==== Required Flasher hardware version ====<br />
<br />
Older Flasher models do not support authorized flashing. The Flashers with the following serial number ranges do not support authorized flashing:<br><br />
<br />
* 1621xxxxx (Flasher ARM V2)<br />
* 1630xxxxx (Flasher ARM V3)<br />
* 4210xxxxx (Flasher PPC V1)<br />
* 4110xxxxx (Flasher RX V1)<br />
<br />
All other models / hardware versions support authorized flashing.<br />
<br />
=== Target interfaces ===<br />
<br />
The table below shows the supported target interfaces of the different Flasher models.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Hardware !! Supported interfaces<br />
|-<br />
| Flasher PRO || JTAG, SWD<br />
|-<br />
| Flasher Compact || JTAG, SWD<br />
|-<br />
| Flasher ARM || JTAG, SWD<br />
|-<br />
| Flasher RX || JTAG<br />
|-<br />
| Flasher PPC || JTAG<br />
|-<br />
|}<br />
<br />
For more information about the target interfaces itself, please refer to:<br><br />
<br />
* ''UM08001, chapter "Working with J-Link and J-Trace", section "JTAG interface"''<br />
* ''UM08001, chapter "Working with J-Link and J-Trace", section "SWD interface"''<br />
<br />
=== Supported architectures ===<br />
<br />
Flasher supports programming of the internal flash of a large number of different microcontrollers.<br />
The number of supported devices is steadily growing. You can always find the latest list of supported devices on our website:<br><br />
<br />
''http://www.segger.com/supported-devices.html''<br />
<br />
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.<br />
Also the existence of the device may have confidential status, so it might not be mentioned as being supported in public releases yet.<br />
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.<br />
<br />
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).<br />
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.<br />
<br />
If a device is not supported, you can always contact us. We will be happy to provide you with an offer.<br />
<br />
==== External flashes ====<br />
<br />
In general our Flashers support programming of external flashes listed below:<br>(Can differ between Flasher models and hardware versions)<br />
<br />
* parallel NOR flash<br />
* SPI / QSPI flash<br>(see: ''[[SPI_support_by_Flasher_models]]'')<br />
* NAND flash<br />
* I<sup>2</sup>C EEPROM/Flash<br />
* FRAM<br />
<br />
If the parallel NOR flash device which is used is not CFI-compliant you have to select the flash device in J-Flash explicitly,<br />
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''.<br />
<br />
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.<br />
The J-Flash software comes with sample projects for ''Open Flashloader''.<br />
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''<br />
{{Note|1=Complete Information about ''Open Flashloaders'' can be found in our Wiki:<br>''[[Open_Flashloader]]''}}<br />
<br />
==== Cores ====<br />
<br />
===== Flasher ARM =====<br />
<br />
Flasher ARM supports and has been tested with the following cores, but should work with any ARM7/9, Cortex-M0/M1/M3/M4 core.<br />
If you experience problems with a particular core, do not hesitate to contact Segger.<br><br />
<br />
* ARM7TDMI (Rev 1)<br />
* ARM7TDMI (Rev 3)<br />
* ARM7TDMI-S (Rev 4)<br />
* ARM920T<br />
* ARM922T<br />
* ARM926EJ-S<br />
* ARM946E-S<br />
* ARM966E-S<br />
* Cortex-M0<br />
* Cortex-M1<br />
* Cortex-M3<br />
* Cortex-M4<br />
<br />
===== Flasher RX =====<br />
<br />
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><br />
<br />
* RX610<br />
* RX621<br />
* RX62N<br />
* RX62T<br />
<br />
===== Flasher PPC =====<br />
<br />
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.<br />
<br />
* e200z0<br />
<br />
===== Flasher PRO/Compact/Portable PLUS =====<br />
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/''.<br />
<br />
=== Programming multiple targets in parallel ===<br />
<br />
To program multiple targets in parallel there are the following possibilities:<br />
* Using a Flasher gang, or<br />
* Using multiple Flashers, each connecting to one CPU.<br />
<br />
Devices for gang progamming are:<br />
* Flasher ATE; suitable for programming up to 10 targets in parallel. Refer ''Flasher ATE user manual (UM08035_FlasherATE.pdf)''.<br />
* Flasher Hub in conjunction with up to 24 Flasher (Compact). Refer ''Flasher Hub user manual (UM08039_FlasherHUB.pdf)''.<br />
<br />
When using multiple flashers, this can be done with the J-Flash production programming software.<br />
For further information, please refer to Chapter "''Command Line Interface''" Sub-chapter "''Programming multiple targets in parallel''" of the J-Flash User Guide (UM08003_JFlash.pdf) which is part of the Flasher Software and Documentation package. ''https://www.segger.com/downloads/flasher/#FlasherSoftwareAndDocumentationPack''<br />
<br />
=== Logfiles and Quality Management ===<br />
<br />
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:<br />
<source lang="c"><br />
SN: 1 - Failed<br />
SN: 1 - Failed<br />
SN: 2 - O.K. (931 ms)<br />
SN: 3 - O.K. (931 ms)<br />
SN: 4 - O.K. (933 ms)<br />
SN: 5 - O.K. (932 ms)<br />
</source><br />
If applicable, the logfile contains more detailed error messages. For example:<br />
<source lang="c"><br />
ERROR: Programming failed @ address 0x00000000 (1)<br />
ERROR: Cannot connect to CPU. Target interface speed too high?<br />
</source><br />
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:<br />
<source lang="c"><br />
Verify error config word area @<br />
config word<br />
config word read back<br />
Verify error flash area @<br />
data from file<br />
data read back<br />
</source><br />
{{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.}}<br />
<br />
== TCP Services ==<br />
This chapter describes the integrated TCP services.<br />
<br />
=== FTP Server ===<br />
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><br />
[[File:FTPServer.png]]<br />
<br />
==== Access data ====<br />
Anonymous access to the FTP server is limited to read-only access to the file system.<br><br />
For write access, special login credentials have to be used:<br><br />
<tt>Login: admin</tt><br><br />
<tt>Password: 1234</tt><br><br />
<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.<br />
It is not meant as a security feature.}}<br />
<br />
=== Web server ===<br />
<br />
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.<br />
For the network, the IP address settings can be changed and a nick name can be assigned to the device.<br><br />
<br />
Additionally, the web interface provides information about the status of the integrated operating system, the IP stack and the target hardware.<br />
<br />
== Remote control ==<br />
This chapter describes how to control Flasher via the 9-pin serial interface connector or via the integrated Telnet interface.<br />
<br />
=== Overview ===<br />
There are 3 ways to control Flasher operation:<br><br />
<br />
* Manual: Programming operation starts when pressing the button. The LEDs serve as visible indicators.<br />
* 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.<br />
* Terminal communication via RS232.<br />
* Terminal communication via Telnet.<br />
<br />
{{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.}}<br />
<br />
=== Handshake control ===<br />
<br />
Some Flasher models can be remote controlled by automated testers without the need of a connection to a PC.<br />
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><br />
<br />
The handshake control is available for the following Flashers:<br />
* Flasher ARM<br />
* Flasher PRO<br />
* Flasher Compact (via Flasher Hub only)<br />
<br />
The following diagrams show the internal remote control circuitry of Flasher:<br><br />
<br />
[[File:FlasherRemotecontrol.jpg]]<br />
<br />
<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Pin No. !! Function !! Description<br />
|-<br />
| 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.<br />
|-<br />
| 4 || BUSY || As soon as the "Auto" function is started, BUSY becomes active, which means that transistor is switched OFF.<br />
|-<br />
| 5 || GND || Common Signal ground.<br />
|-<br />
| 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.<br />
|-<br />
|}<br />
<br />
=== ASCII command interface ===<br />
<br />
==== Introduction ====<br />
<br />
Once set up using J-Flash, the Flasher can be driven by any application or just a simple terminal using ASCII commands.<br><br />
<br />
Every known command is acknowledged by the Flasher and then executed. After command execution, Flasher sends an ASCII reply message.<br><br />
<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}}<br />
<br />
==== General command and reply message format ====<br />
<br />
* Any ASCII command has to start with the start delimiter ''#''.<br />
* Any ASCII command has to end with simple carriage return ('\r', ASCII code 13).<br />
* Commands can be sent upper or lower case<br />
<br />
==== General usage ====<br />
<br />
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.<br />
<br />
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).<br />
<br />
==== Settings for ASCII interface via RS232 ====<br />
<br />
Flasher is driven via a RS232 serial port with the following interface settings:<br><br />
<br />
* 9600 baud<br />
* 8 data bits<br />
* no parity<br />
* 1 stop bit<br />
<br />
The baud rate can be changed by using the <tt>#BAUDRATE</tt> command.<br />
<br />
==== Settings for ASCII interface via Telnet ====<br />
<br />
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><br />
<br />
[[File:telnet_connection.gif]]<br />
<br />
==== Commands and replies ====<br />
<br />
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><br />
<br />
{| class="seggertable"<br />
|-<br />
!colspan="100%"| Commands to the Flasher<br />
|-<br />
| <tt>#BAUDRATE <Baudrate></tt><br />
|-<br />
| <tt>#AUTO</tt><br />
|-<br />
| <tt>#AUTO PATCH</tt><br />
|-<br />
| <tt>#AUTO NOINFO</tt><br />
|-<br />
| <tt>#CANCEL</tt><br />
|-<br />
| <tt>#ERASE</tt><br />
|-<br />
| <tt>#PROGRAM</tt><br />
|-<br />
| <tt>#RESULT</tt><br />
|-<br />
| <tt>#SELECT <Filename></tt><br />
|-<br />
| <tt>#START</tt><br />
|-<br />
| <tt>#STATUS</tt><br />
|-<br />
| <tt>#VERIFY</tt><br />
|-<br />
| <tt>#QUIT</tt><br />
|-<br />
| <tt>#VERBOSE <Level></tt><br />
|-<br />
!colspan="100%"| File I/O commands<br />
|-<br />
| <tt>#FCLOSE</tt><br />
|-<br />
| <tt>#FCRC</tt><br />
|-<br />
| <tt>#FDELETE <Filename></tt><br />
|-<br />
| <tt>#FOPEN <Filename></tt><br />
|-<br />
| <tt>#FREAD <Offset>,<NumBytes></tt><br />
|-<br />
| <tt>#FSIZE</tt><br />
|-<br />
| <tt>#FWRITE <Offset>,<NumBytes>:<nowiki><Data></nowiki></tt><br />
|-<br />
| <tt>#FLIST</tt><br />
|-<br />
| <tt>#MKDIR <Dirname></tt><br />
|-<br />
!colspan="100%"| SecureArea commands<br />
|-<br />
| <tt>#HASSECUREAREA</tt><br />
|-<br />
| <tt>#SECUREAREA <action></tt><br />
|-<br />
!colspan="100%"| Replies from the Flasher<br />
|-<br />
| <tt>#ACK</tt><br />
|-<br />
| <tt>#NACK</tt><br />
|-<br />
| <tt>#OK</tt><br />
|-<br />
| <tt>#OK:<NumBytes>:<nowiki><Data></nowiki></tt><br />
|-<br />
| <tt>#OK:<Size></tt><br />
|-<br />
| <tt>#STATUS:</tt><br />
|-<br />
| <tt>#DONE</tt><br />
|-<br />
| <tt>#ERRxxx</tt><br />
|-<br />
|}<br />
<br />
===== Commands to the Flasher =====<br />
<br />
'''#AUTO'''<br><br />
The <tt>#AUTO</tt> command behaves exactly as the start button or external remote control input.<br><br />
<br />
Usually, the following command sequence will be performed when receiving the <tt>#AUTO</tt> command:<br><br />
<br />
* The Flasher erases the target CPU (if not blank)<br />
* The Flasher programs the target CPU<br />
* The Flasher verifies the target CPU<br />
<br />
Depending on the settings chosen in the '''Production''' tab in J-Flash, this sequence can differ from the one shown above.<br><br />
<br />
Finally, Flasher responds with<br><br />
<br />
* <tt>#OK</tt> if no error occurred<br />
* <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.<br />
<br />
During execution of the <tt>#AUTO</tt> command, Flasher automatically sends "status" messages via RS232 to reflect the state of execution.<br />
Typically during execution of <tt>#AUTO</tt> command, Flasher will reply the following sequence of messages:<br><br />
<br />
<tt>#ACK</tt><br><br />
<tt>#STATUS:INITIALIZING</tt><br><br />
<tt>#STATUS:CONNECTING</tt><br><br />
<tt>#STATUS:UNLOCKING</tt><br><br />
<tt>#STATUS:ERASING</tt><br><br />
<tt>#STATUS:PROGRAMMING</tt><br><br />
<tt>#STATUS:VERIFYING</tt><br><br />
<tt>#OK (Total 13.993s, Erase 0.483s, Prog 9.183s, Verify 2.514s)</tt><br><br />
<br />
'''#AUTO PATCH'''<br><br />
The <tt>#AUTO</tt> PATCH command allows patching of the content of the data to be programmed.<br><br />
<br />
Flasher responds with<br><br />
<br />
* <tt>#OK</tt> if no error occurred<br />
* <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.<br />
<br />
For further information about the usage of the <tt>#AUTO PATCH</tt> command please refer to [[#Patch file support | Patch file support]].<br />
'''#AUTO NOINFO'''<br><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><br />
<br />
The command ends with <tt>#OK</tt> or <tt>#ERRxxx</tt><br />
<br />
'''#BAUDRATE <Baudrate>'''<br><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><br />
<br />
If this command succeeds, Flasher responds with:<br><br />
<br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<br />
Otherwise it will respond with one of the following error messages:<br><br />
<br />
<tt>#ERR255: Invalid parameters</tt><br><br />
<tt>or</tt><br><br />
<tt>#ERR255: Baudrate is not supported</tt><br><br />
<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.<br />
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.}}<br />
<br />
'''#CANCEL'''<br><br />
This command can be sent to abort a running program. It may take a while until the current program is actually canceled.<br><br />
<br />
Flasher will respond with:<br><br />
<br />
<tt>#ERR007:CANCELED.</tt><br><br />
<br />
'''#ERASE'''<br><br />
This command can be sent to erase all selected target flash sectors.<br><br />
<br />
Flasher will reply the following sequence of messages:<br><br />
<br />
<tt>#ACK</tt><br><br />
<tt>#STATUS:INITIALIZING</tt><br><br />
<tt>#STATUS:CONNECTING</tt><br><br />
<tt>#STATUS:UNLOCKING</tt><br><br />
<tt>#STATUS:ERASING</tt><br><br />
<tt>#OK (Total 0.893s, Erase 0.483s)</tt><br><br />
<br />
'''#PROGRAM'''<br><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.<br />
<br />
'''#RESULT'''<br><br />
This command can be sent any time, even during other command execution. Flasher responds with the last result of the previously executed command.<br />
<br />
'''#SELECT <Filename>'''<br><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.<br />
<tt><Filename></tt> specifies the name of file pair without extensions (.CFG and .DAT) on the Flasher which should be selected. If you are<br />
using the universal flash programming mode, <tt><Filename></tt> specifies the full name of the .UNI file '''including''' the extension.<br />
Flasher saves the selected config and data file in the FLASHER.INI file. So this selection is remembered even between power-cycling Flasher.<br><br />
<br />
This may be verfy helpful in cases where several config and data files are stored on Flasher.<br />
The user can easily switch between these config and data files without connecting Flasher to a host.<br><br />
<br />
If this command succeeds, Flasher responds with:<br><br />
<br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<br />
Find below a sample sequence which shows how to use the <tt>#SELECT</tt> command:<br><br />
<br />
<tt>#SELECT ATSAM7_1 // ATSAM7_1.CFG and ATSAM7_1.DAT is selected</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<tt>#AUTO // Start auto programming</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#STATUS:INITIALIZING</tt><br><br />
<tt>#STATUS:CONNECTING</tt><br><br />
<tt>#STATUS:UNLOCKING</tt><br><br />
<tt>#STATUS:ERASING</tt><br><br />
<tt>#STATUS:PROGRAMMING</tt><br><br />
<tt>#STATUS:VERIFYING</tt><br><br />
<tt>#OK (Total 8.416s, Erase 0.005s, Prog 6.845s, Verify 0.959s)</tt><br><br />
<tt>#SELECT ATSAM7_2 // ATSAM7_2.CFG and ATSAM7_2.DAT is selected</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<tt>#AUTO // Start auto programming</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#STATUS:INITIALIZING</tt><br><br />
<tt>#STATUS:CONNECTING</tt><br><br />
<tt>#STATUS:UNLOCKING</tt><br><br />
<tt>#STATUS:ERASING</tt><br><br />
<tt>#STATUS:PROGRAMMING</tt><br><br />
<tt>#STATUS:VERIFYING</tt><br><br />
<tt>#OK (Total 8.632s, Erase 0.005s, Prog 7.051s, Verify 0.969s)</tt><br><br />
<br />
'''#START'''<br><br />
This command can be sent to start the application using the method configured in the J-Flash project.<br />
<br />
Flasher will reply with the following sequence of messages:<br><br />
<br />
<tt>#ACK</tt><br><br />
<tt>#STATUS:INITIALIZING</tt><br><br />
<tt>#STATUS:CONNECTING</tt><br><br />
<tt>#OK (Total 1.148s)</tt><br><br />
<br />
'''#STATUS'''<br><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]].<br />
<br />
'''#VERIFY'''<br><br />
This command can used to verify the target flash content against the data stored in Flasher.<br />
<br />
'''#QUIT'''<br><br />
This command can be used to terminate the active telnet connection from the server side (Flasher).<br />
The command provides an easy way to terminate the session from an automated script.<br />
It is not necessary to parse stdout and switch to local command mode to disconnect.<br />
Not implemented in the Flasher ATE or Flasher Hub.<br />
<br />
'''#VERBOSE <Level>'''<br><br />
This command can be used to change the verbosity level. <br><br />
* Verbosity level 0: Default. <br><br />
* Verbosity level 1: Provides some additional messages during the programming process.<br />
<br />
===== File I/O commands =====<br />
<br />
The ASCII interface of the Flasher also supports file I/O operations.<br />
<br />
The following file I/O commands are supported:<br><br />
<br />
'''#FCLOSE'''<br><br />
The <tt>#FCLOSE</tt> command closes the file on Flasher which was opened via <tt>#FOPEN</tt>.<br />
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><br />
<br />
A typical sequence when using the <tt>#FCLOSE</tt> command does look like as follows:<br><br />
<br />
<tt>#FCLOSE</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<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><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:No file opened</tt><br />
}}<br />
<br />
'''#FCRC'''<br><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>.<br />
The CRC will be also reported by J-Flash when downloading or saving files via J-Flash.<br><br />
<br />
A typical sequence when using the <tt>#FCRC</tt> command does look like as follows:<br><br />
<br />
<tt>#FCRC flasher.dat</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK:0x75BC855A</tt><br><br />
<br />
'''#FDELETE <Filename>'''<br><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><br />
<br />
A typical sequence when using the <tt>#FDELETE</tt> command does look like as follows:<br><br />
<br />
<tt>#FDELETE flasher.dat</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<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><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:Failed to delete file</tt><br />
}}<br />
<br />
'''#FOPEN <Filename>'''<br><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.<br />
If <tt><Filename></tt> can not be found on Flasher a new one will be created.<br><br />
<br />
A typical sequence using the <tt>#FOPEN</tt> command does look like as follows:<br><br />
<br />
<tt>#FOPEN flasher.dat</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<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><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:A file has already been opened</tt><br />
}}<br />
<br />
'''#FREAD <Offset>,<NumBytes>'''<br><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.<br />
<tt><NumBytes></tt> specifies the number of bytes which should be read.<br><br />
<br />
A typical sequence when using the <tt>#FREAD</tt> command does look like as follows:<br><br />
<br />
<tt>#FREAD 0,4</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK:04:466c6173</tt><br><br />
<br />
If the <tt>#FREAD</tt> command succeeds, Flasher will finally respond with a <tt>#OK:<NumBytes>:<nowiki><Data></nowiki></tt> reply message.<br />
For more information about the Flasher reply messages, please refer to [[#Replies from Flasher | Replies from Flasher]].<br><br />
<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><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:No file opened</tt>}}<br />
<br />
'''#FSIZE'''<br><br />
The <tt>#FSIZE</tt> command is used to get the size of the currently opened file on Flasher.<br><br />
<br />
A typical sequence when using the <tt>#FSIZE</tt> command does look like as follows:<br><br />
<br />
<tt>#FSIZE</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK:10 // file on flasher which is currently open, has a size of 16 bytes</tt><br><br />
<br />
If the <tt>#FSIZE</tt> command succeeds, Flasher will respond with a <tt>#OK:<Size></tt> reply message.<br />
For more information about the Flasher reply messages, please refer to [[#Replies from Flasher | Replies from Flasher]].<br><br />
<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><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:No file opened</tt>}}<br />
<br />
'''#FWRITE <Offset>,<NumBytes>:<nowiki><Data></nowiki>'''<br><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.<br />
<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.<br />
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><br />
<br />
<tt><Offset></tt> and <tt><NumBytes></tt> are expected in hexadecimal format.<br><br />
<br />
<tt>#FWRITE 0,200:<nowiki><Data></nowiki></tt><br><br />
<tt>#FWRITE 200,200:<nowiki><Data></nowiki></tt><br><br />
<br />
The data is expected in hexadecimal format (two hexadecimal characters per byte). The following example illustrates the use of <tt>#FWRITE</tt>:<br />
<br />
<tt>Data to be send: Hello !</tt><br><br />
<tt>ASCII values: 0x48, 0x65, 0x6C, 0x6C, 0x6F, 0x20, 0x21</tt><br><br />
<br />
<tt>#FWRITE 0,7:48656C6C6F2021</tt><br><br />
<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><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:No file opened</tt><br>}}<br />
<br />
'''#FLIST'''<br><br />
The <tt>#LIST</tt> command is used to list all files stored on the Flasher.<br><br />
<br />
A typical sequence using the <tt>#FLIST</tt> command does look like as follows:<br><br />
<br />
<tt>#FLIST</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>FLASHER.INI Size: 60</tt><br><br />
<tt>SERIAL.TXT Size: 3</tt><br><br />
<tt>FLASHER.LOG Size: 207</tt><br><br />
<tt>FOLDER (DIR)</tt><br><br />
<tt>FOLDER\\TEST1.CFG Size: 2048</tt><br><br />
<tt>FOLDER\\TEST1.DAT Size: 12288</tt><br><br />
<tt>#OK</tt><br><br />
<br />
'''#MKDIR <Dirname>'''<br><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><br />
<br />
A typical sequence using the <tt>#MKDIR</tt> command does look like as follows:<br><br />
<br />
<tt>#MKDIR folder</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#OK</tt><br><br />
<br />
{{Note|1=If the directory can not be created because of a bad <tt><Dirname></tt> argument, Flasher will respond with:<br><br />
<tt>#ACK</tt><br><br />
<tt>#ERR255:Failed to create directory</tt><br>}}<br />
<br />
===== Secure Area Commands =====<br />
<br />
'''#HASSECUREAREA'''<br><br />
The <tt>#HASSECUREAREA</tt> command checks if the Flasher is configured with a secure area.<br />
<br />
<tt>#RESULT:YES</tt> indicates the secure area is present, <tt>#RESULT:NO</tt> indicates no secure area is present.<br />
<br />
'''#SECUREAREA'''<br><br />
The <tt>#SECUREAREA <action></tt> command allows to create or remove the secure area on the Flasher.<br />
<br />
* the action <tt>CREATE</tt> creates the secure area.<br />
* the action <tt>REMOVE</tt> will remove the secure area.<br />
<br />
A typical sequence using the <tt>#SECUREAREA</tt> command does look like as follows:<br><br />
<br />
<tt>#SECUREAREA CREATE</tt><br><br />
<tt>#ACK</tt><br><br />
<tt>#DONE</tt><br><br />
<br />
{{Note|1=When creating or removing the <tt>secure area</tt>, all configuration and data files being stored on the Flasher, are lost.<br />
Please make sure that they are not needed anymore, before adding / removing the security area.}}<br />
<br />
<br />
<br />
===== Replies from Flasher =====<br />
<br />
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.<br />
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.<br />
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><br />
<br />
<tt>#OK (Total 13.993s, Erase 0.483s, Prog 9.183s, Verify 2.514s)</tt><br><br />
<br />
The following reply messages from Flasher are defined:<br><br />
<br />
'''#ACK'''<br><br />
Flasher replies with <tt>#ACK</tt> message on reception of any defined command before the command itself is executed.<br />
<br />
'''#NACK'''<br><br />
Flasher replies with <tt>#NACK</tt>, if an undefined command was received.<br />
<br />
'''#OK'''<br><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.<br />
<br />
'''#OK:<NumBytes>:<nowiki><Data></nowiki>'''<br><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.<br />
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).<br />
<br />
'''#OK:<Size>'''<br><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.<br />
<br />
'''#STATUS:'''<br><br />
The Flasher replies with its current state.<br><br />
<br />
The following status messages are currently defined:<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Message !! Description<br />
|-<br />
| <tt>#STATUS:READY</tt> || Flasher is ready to receive a new command.<br />
|-<br />
| <tt>#STATUS:CONNECTING</tt> || Flasher initializes connection to target CPU.<br />
|-<br />
| <tt>#STATUS:INITIALIZING</tt> || Flasher performs self check and internal init.<br />
|-<br />
| <tt>#STATUS:UNLOCKING</tt> || Unlocking flash sectors.<br />
|-<br />
| <tt>#STATUS:ERASING</tt> || Flasher is erasing the flash of the target device.<br />
|-<br />
| <tt>#STATUS:PROGRAMMING</tt> || Flasher is programming the flash of the target device.<br />
|-<br />
| <tt>#STATUS:VERIFYING</tt> || Flasher verifies the programmed flash contents.<br />
|-<br />
|}<br />
<br />
'''#ERRxxx'''<br><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><br />
<br />
Some error codes may be followed by colon and an additional error text.<br><br />
<br />
For example:<br><br />
<br />
<tt>#ERR007:CANCELED.</tt><br><br />
<br />
The error code numbers are described in the following table:<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Message !! Description<br />
|-<br />
| <tt>#ERR007</tt> || Flasher received <tt>#CANCEL</tt> command and has canceled the current operation.<br />
|-<br />
| <tt>#ERR008</tt> || Flasher is already busy with execution of previous command.<br />
|-<br />
| <tt>#ERR009</tt> || Failed to allocate memory.<br />
|-<br />
| <tt>#ERR010</tt> || Failed to open file.<br />
|-<br />
| <tt>#ERR011</tt> || Failed to read file.<br />
|-<br />
| <tt>#ERR012</tt> || Failed to write file.<br />
|-<br />
| <tt>#ERR013</tt> || Failed to delete file.<br />
|-<br />
| <tt>#ERR255</tt> || Undefined error occurred. This reply is followed by an error string.<br />
|-<br />
|}<br />
<br />
== Performance ==<br />
<br />
The following chapter lists programming performance of common flash devices andmicrocontrollers.<br />
<br />
=== Performance of MCUs with internal flash memory ===<br />
<br />
==== Flasher ARM ====<br />
<br />
The following table lists program and erase performance values of Flasher ARM for different controllers.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Microcontroller !! Size [kByte] !! Erase time [sec] !! Program time [sec] !! Verify time [sec] !! Total time [sec]<br />
|-<br />
| Analog Devices || 62 || 2.943 || 2.286 || 0.563 || 5.792<br />
|-<br />
| Atmel AT91SAM7S64 || 64 || --- || 3.488 || 0.438 || 3.926<br />
|-<br />
| Atmel AT91SAM7S256 || 256 || --- || 7.709 || 1.053 || 8.762<br />
|-<br />
| NXP LPC1768 || 512 || 3.740 || 8.559 || 5.092 || 17.391<br />
|-<br />
| NXP LPC2106 || 120 || 0.448 || 1.204 || 0.634 || 2.286<br />
|-<br />
| NXP LPC2129 || 248 || 0.449 || 2.916 || 1.347 || 4.712<br />
|-<br />
| NXP LPC2138 || 500 || 0.448 || 5.488 || 2.649 || 8.585<br />
|-<br />
| NXP LPC2148 || 500 || 0.448 || 5.632 || 2.721 || 8.801<br />
|-<br />
| NXP LPC2294 || 2048 || 0.808 || 15.976 || 9.669 || 26.453<br />
|-<br />
| NXP LPC2478 || 504 || 0.448 || 5.419 || 2.559 || 8.426<br />
|-<br />
| ST STM32F103ZE || 512 || 0.028 || 18.763 || 3.939 || 22.730<br />
|-<br />
| ST STR711 || 272 || 0.429 || 5.476 || 4.742 || 10.647<br />
|-<br />
| ST STR912 || 544 || 1.167 || 12.907 || 5.236 || 19.310<br />
|-<br />
| TI TMS470R1B1M || 1024 || 2.289 || 8.147 || 5.362 || 15.798<br />
|-<br />
|}<br />
<br />
==== Flasher PRO ====<br />
See Flasher ARM.<br />
<br />
==== Flasher Compact ====<br />
See Flasher ARM.<br />
<br />
==== Flasher RX ====<br />
<br />
The following table lists program and erase performance values of Flasher RX.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Microcontroller !! Size [kByte] !! Erase time [sec] !! Program time [sec] !! Verify time [sec] !! Total time [sec]<br />
|-<br />
| R5F56108 || 2.048 || 9.523 || 11.915 || 3.890 || 25.585<br />
|-<br />
|}<br />
<br />
==== Flasher PPC ====<br />
<br />
The following table lists program and erase performance values of Flasher PPC.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Microcontroller !! Size [kByte] !! Erase time [sec] !! Program time [sec] !! Verify time [sec] !! Total time [sec]<br />
|-<br />
| ST SPC560B50 || 576 || 4.747 || 4.159 || 1.929 || 10.917<br />
|-<br />
|}<br />
<br />
== Hardware ==<br />
<br />
This chapter gives an overview about Flasher specific hardware details,<br />
such as the pinouts and available adapters.<br />
<br />
=== Flasher ARM 20-pin JTAG/SWD Connector ===<br />
<br />
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.<br />
<br />
==== Pinout JTAG ====<br />
<br />
[[File:jtag_port_20pin.jpg]] <!-- LG xxxxxx image has been cropped to fit page --><br />
<br />
The following table lists the Flasher JTAG pinout.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! PIN !! SIGNAL !! TYPE !! Description<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 13 || TDO || Input || JTAG data output from target CPU. Typically connected to TDO of target CPU.<br />
|-<br />
| 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".<br />
|-<br />
| 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.<br />
|-<br />
| 19 || 5V-Target supply || Output || This pin is used to supply power to some eval boards. Typically left open on target hardware.<br />
|-<br />
|}<br />
<br />
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.<br />
<br />
==== Pinout SWD ====<br />
<br />
The 20-pin connector of Flasher is also compatible to ARM's Serial Wire Debug (SWD) interface.<br><br />
<br />
[[File:SWD_Port.jpg]] <!-- LG xxxxxx image has been cropped to fit page --><br />
<br />
The following table lists the J-Link / J-Trace SWD pinout.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! PIN !! SIGNAL !! TYPE !! Description<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 7 || SWDIO || I/O || Single bi-directional data pin.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 13 || SWO || Output || Serial Wire Output trace port. (Optional, not required for SWD communication.)<br />
|-<br />
| 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".<br />
|-<br />
| 17 || Not used || NC || This pin is not connected in J-Link.<br />
|-<br />
| 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.<br />
|-<br />
|}<br />
<br />
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.<br />
<br />
==== Target power supply ====<br />
<br />
Pin 19 of the connector can be used to supply power to the target hardware. Supply voltage is 5V, max. current is 400mA.<br />
The output current is monitored and protected against overload and short-circuit.<br><br />
<br />
Power can be controlled via the J-Link commander. The following commands are available to control power:<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Command !! Explanation<br />
|-<br />
| <tt>power on</tt> || Switch target power on<br />
|-<br />
| <tt>power off</tt> || Switch target power off<br />
|-<br />
| <tt>power on perm</tt> || Set target power supply default to "on"<br />
|-<br />
| <tt>power off perm</tt> || Set target power supply default to "off"<br />
|-<br />
|}<br />
<br />
=== Flasher RX 14-pin connector ===<br />
<br />
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.<br />
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.<br />
<br />
[[File:jtag_port_14pin.wmf]]<br />
<br />
The following table lists the Flasher RX 14-pin JTAG pinout.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Pin !! Signal !! Type !! Description<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 5 || TDO || Input || JTAG data output from target CPU. Typically connected to TDO on target CPU.<br />
|-<br />
| 6 || --- || NC || This pin is not connected to Flasher RX.<br />
|-<br />
| 7 || --- || NC || This pin is not connected to Flasher RX.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 10 || --- || NC || This pin is not connected to Flasher RX.<br />
|-<br />
| 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.<br />
|-<br />
| 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".<br />
|-<br />
|}<br />
<br />
* All pins marked NC are not connected to Flasher RX. Any signal can be applied here; Flasher RX will simply ignore such a signal.<br />
* Pins 2, 12, 14 are GND pins connected to GND in Flasher RX. They should also be connected to GND in the target system.<br />
<br />
==== Target power supply ====<br />
<br />
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.<br />
Power can be controlled via the J-Link commander. The following commands are available to control power:<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Command !! Explanation<br />
|-<br />
| <tt>power on</tt> || Switch target power on<br />
|-<br />
| <tt>power off</tt> || Switch target power off<br />
|-<br />
| <tt>power on perm</tt> || Set target power supply default to "on"<br />
|-<br />
| <tt>power off perm</tt> || Set target power supply default to "off"<br />
|-<br />
|}<br />
<br />
=== Flasher PPC 14-pin connector ===<br />
<br />
Flasher PPC itself has a 20-pin JTAG connector mounted but comes with a 14-pin adapter for PowerPC devices.<br><br />
<br />
[[File:JTAG_PPC_14pin_adapter.wmf]]<br />
<br />
The following table lists the Flasher PPC 14-pin JTAG pinout.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Pin !! Signal !! Type !! Description<br />
|-<br />
| 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.<br />
|-<br />
| 3 || TDO || Input || JTAG data output from target CPU. Typically connected to TDO on target CPU.<br />
|-<br />
| 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.<br />
|-<br />
| 7 || --- || NC || This pin is not connected to Flasher PPC.<br />
|-<br />
| 8 || --- || NC || This pin is not connected to Flasher PPC.<br />
|-<br />
| 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".<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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).<br />
|-<br />
|}<br />
<br />
* All pins marked NC are not connected to Flasher PPC. Any signal can be applied here; Flasher PPC will simply ignore such a signal.<br />
* 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.<br />
<br />
=== Target board design ===<br />
<br />
We strongly advise following the recommendations given by the chip manufacturer. These recommendations are normally in line with the recommendations.<br />
Please refer to the the appropriate tables depending on the core:<br><br />
<br />
* [[#Pinout JTAG | Pinout JTAG]]<br />
* [[#Pinout SWD | Pinout SWD]]<br />
* [[#Flasher RX 14-pin connector | Flasher RX 14-pin connector]]<br />
* [[#Flasher PPC 14-pin connector | Flasher PPC 14-pin connector]]<br />
<br />
In case of doubt you should follow the recommendations given by the semiconductor manufacturer.<br />
<br />
==== Pull-up/pull-down resistors ====<br />
<br />
Unless otherwise specified by developer's manual, pull-ups/pull-downs are recommended to be between 2.2 kOhms and 47 kOhms.<br />
<br />
==== RESET, nTRST ====<br />
<br />
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><br />
<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.<br />
(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.<br />
<br />
=== Adapters ===<br />
<br />
==== JTAG Isolator ====<br />
<br />
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.<br />
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><br />
<br />
[[File:JTAG_Isolator_Port.wmf]]<br />
<br />
===== Pinout =====<br />
<br />
The following table shows the target-side pinout of the J-Link JTAG Isolator.<br><br />
<br />
{| class="seggertable"<br />
|-<br />
! Pin !! Signal !! Type !! Description<br />
|-<br />
| 1 || VCC || Output || The target side of the isolator draws power over this pin.<br />
|-<br />
| 2 || VCC || Output || The target side of the isolator draws power over this pin.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 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.<br />
|-<br />
| 13 || TDO || Input || JTAG data output from target CPU. Typically connected to TDO of target CPU.<br />
|-<br />
| 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".<br />
|-<br />
| 17 || N/C || N/C || This pin is not connected on the target side of the isolator.<br />
|-<br />
| 19 || N/C || N/C || This pin is not connected on the target side of the isolator.<br />
|-<br />
|}<br />
<br />
Pins 4, 6, 8, 10, 12, 14, 16, 18, 20 are connected to GND.<br />
<br />
===== Safety =====<br />
This isolator provides '''basic isolation''' only. '''Do not use with hazardous voltages without further protection measures to avoid risk of electrical shock and fire.'''<br />
<br />
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.<br />
<br />
==== J-Link Needle Adapter ====<br />
<br />
To connect to the J-Link OB via programming interface the ''J-Link Needle Adapter'' is recommended.<br><br />
<br />
[[File:J-Link_Needle_Adapter_500x.jpg]]<br />
<br />
Why to choose the J-Link Needle Adapter:<br><br />
<ol><br />
<li>No additional connector required on your PCB</li><br />
<li>Very small footprint</li><br />
<li>High reliability spring pins for secure connections</li><br />
<li>Designed with 3 locating pins, so the adapter can not be connected the wrong way</li><br />
<li>No external power supply required! The J-Link Needle Adapter comes with the option to power the target hardware via J-Link.</li><br />
</ol><br />
These features make the J-Link Needle Adapter the perfect solution for production purposes.<br><br />
<br />
The pinout of the J-Link Needle Adapter is based on the pinout of the needle adapter by Tag-Connect.<br />
Please note, that both pinouts are not identical since the J-Link Needle Adapter comes with a 5V-supply pin.<br><br />
<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><br />
<br />
Moreover, the two "legs" on each side of the connector guarantee a stable and secure contact between pins and the PCB.<br><br />
<br />
[[File:J-Link_Needle_Adapter_Connector_pins_360x.jpg]]<br />
[[File:J-Link_Needle_Adapter_Pinout.jpg]]<br />
<br />
The J-Link Needle Adapter can be connected to J-Link via the ''20-pin 0.1'' JTAG to a 10-pin needle connector''.<br />
<br />
=== How to determine the hardware version ===<br />
<br />
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.<br />
Flasher has the hardware version printed on the back label.<br><br />
<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).<br />
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><br />
<br />
[[File:FlasherARM_version.gif]]<br />
== Support and FAQs ==<br />
<br />
This chapter contains troubleshooting tips together with solutions for common problems which might occur when using Flasher.<br />
There are several steps you can take before contacting support.<br />
Performing these steps can solve many problems and often eliminates the need for assistance.<br />
This chapter also contains a collection of frequently asked questions (FAQs) with answers.<br />
<br />
=== Contacting support ===<br />
<br />
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.<br />
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><br />
<br />
If you need to contact support, send the following information to<br><br />
''support@segger.com''<br><br />
<br />
* A detailed description of the problem<br />
* Flasher serial number<br />
* Information about your target hardware (processor, board, etc.).<br />
* <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]].<br />
<br />
Flasher is sold directly by SEGGER.<br />
<br />
=== Frequently Asked Questions ===<br />
<br />
'''Maximum JTAG speed'''<br />
{|<br />
|-<br />
| '''Q:''' || What is the maximum JTAG speed supported by Flasher?<br />
|-<br />
| '''A:''' || Flasher's maximum supported JTAG speed is 12MHz.<br />
|}<br />
<br />
'''Maximum download speed'''<br />
{|<br />
|-<br />
| '''Q:''' || What is the maximum download speed?<br><br />
|-<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.<br />
|}<br />
== Background information ==<br />
<br />
This chapter provides background information about flash programming in general. It<br />
also provides information about how to replace the firmware of Flasher manually.<br />
<br />
=== Flash programming ===<br />
<br />
Flasher comes with a DLL, which allows - amongst other functionalities - reading and writing RAM, CPU registers, starting and stopping the CPU, and setting breakpoints.<br />
<br />
==== How does flash programming via Flasher work? ====<br />
<br />
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.<br />
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.<br />
Different flash chips have different programming algorithms;the programming algorithm also depends on other things,<br />
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).<br />
The RAM code requires data to be programmed into the flash memory. The data is supplied by downloading it to RAM.<br />
<br />
==== Data download to RAM ====<br />
<br />
The data (or part of it) is downloaded to another part of the RAM of the target system.<br />
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.<br />
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.<br />
This process may have to be repeated until the entire data is programmed into the flash.<br />
<br />
==== Available options for flash programming ====<br />
<br />
In general, there are two possibilities in order to use Flasher for flash programming:<br><br />
<br />
* Using Flasher stand-alone to program the target flash memory (stand-alone mode)<br />
* Using Flasher in combination with J-Flash to program the target flash memory (Flasher in "PC-based mode")<br />
<br />
===== Using Flasher in stand-alone mode =====<br />
<br />
In order to use the Flasher in stand-alone mode, it has to be configured first.<br />
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]].<br />
<br />
===== J-Flash - Complete flash programming solution =====<br />
<br />
J-Flash is a stand-alone Windows application, which can read / write data files and program the flash in almost any ARM system.<br />
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''.<br />
<br />
==== How does the universal flash programming work? ====<br />
<br />
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><br />
<br />
Universal flash programming is available only for stand-alone mode.<br />
== Glossary ==<br />
<br />
This chapter describes important terms used throughout this manual.<br />
<br />
'''Big-endian'''<br><br />
Memory organization where the least significant byte of a word is at a higher address than the most significant byte. See Little-endian.<br />
<br />
'''Cache cleaning'''<br><br />
The process of writing dirty data in a cache to main memory.<br />
<br />
'''Coprocessor'''<br><br />
An additional processor that is used for certain operations, for example, for floating-point math calculations, signal processing, or memory management.<br />
<br />
'''Dirty data'''<br><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.<br />
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.<br />
<br />
'''Halfword'''<br><br />
A 16-bit unit of information.<br />
<br />
'''Host'''<br><br />
A computer which provides data and other services to another computer. Especially, a computer providing debugging services to a target being debugged.<br />
<br />
'''ICache'''<br><br />
Instruction cache.<br />
<br />
'''ID'''<br><br />
Identifier.<br />
<br />
'''IEEE 1149.1'''<br><br />
The IEEE Standard which defines TAP. Commonly (but incorrectly) referred to as JTAG.<br />
<br />
'''Image'''<br><br />
An executable file that has been loaded onto a processor for execution.<br />
<br />
'''Instruction Register'''<br><br />
When referring to a TAP controller, a register that controls the operation of the TAP.<br />
<br />
'''IR'''<br><br />
See Instruction Register.<br />
<br />
'''Joint Test Action Group (JTAG)'''<br><br />
The name of the standards group which created the IEEE 1149.1 specification.<br />
<br />
'''Little-endian'''<br><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.<br />
<br />
'''Memory coherency'''<br><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.<br />
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.<br />
<br />
'''Memory management unit (MMU)'''<br><br />
Hardware that controls caches and access permissions to blocks of memory, and translates virtual to physical addresses.<br />
<br />
'''Memory Protection Unit (MPU)'''<br><br />
Hardware that controls access permissions to blocks of memory. Unlike an MMU, a MPU does not translate virtual addresses to physical addresses.<br />
<br />
'''RESET'''<br><br />
Abbreviation of System Reset. The electronic signal which causes the target system other than the TAP controller to be reset.<br />
This signal is also known as "nSRST" "nSYSRST", "nRST", or "nRESET" in some other manuals. See also nTRST.<br />
<br />
'''nTRST'''<br><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.<br />
<br />
'''Open collector'''<br><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.<br />
<br />
'''Processor Core'''<br><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.<br />
It excludes optional coprocessors, caches, and the memory management unit.<br />
<br />
'''Remapping'''<br><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.<br />
<br />
'''RTOS'''<br><br />
Real Time Operating System.<br />
<br />
'''TAP Controller'''<br><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.<br />
<br />
'''Target'''<br><br />
The actual processor (real silicon or simulated) on which the application program is running.<br />
<br />
'''TCK'''<br><br />
The electronic clock signal which times data on the TAP data lines TMS, TDI, and TDO.<br />
<br />
'''TDI'''<br><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.<br />
<br />
'''TDO'''<br><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.<br />
<br />
'''Test Access Port (TAP)'''<br><br />
The port used to access a device's TAP Controller. Comprises TCK, TMS, TDI, TDO, and nTRST (optional).<br />
<br />
'''Transistor-transistor logic (TTL)'''<br><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.<br />
<br />
'''Word'''<br><br />
A 32-bit unit of information. Contents are taken as being an unsigned integer unless otherwise stated.<br />
== Literature and references ==<br />
This chapter lists documents, which we think may be useful to gain a deeper understanding of technical details.</div>JanBhttps://wiki.segger.com/index.php?title=FlasherControl&diff=15939FlasherControl2023-08-11T06:58:38Z<p>JanB: /* Installation */</p>
<hr />
<div>= Purpose =<br />
The Flasher Compact provides a serial connection via the assigned emulated serial port device (Character Device Class; under Windows: e.g. ''JLink CDC UART Port'') when connected to a host PC via USB. This connection allows access to the ''command line interface'' (CLI), through which all possibilities of the standalone mode of the Flasher can be used.<br />
<br />
Sometimes access via this communication channel is difficult or not possible. For such cases, FlasherControl.exe offers a possibility to access the CLI of the Flasher via USB. It is primarily intended for use with Flasher Compact in solitary mode (without FLasher Hub) or generally for troubleshooting when the CLI of Flasher products is not available via an Ethernet or serial communication channel. It also contains a rudimentary terminal mode, which makes the use of a special terminal program unnecessary in simple cases.<br />
<br />
Since the Flasher Compact in stand-alone mode has neither an Ethernet nor a dedicated serial interface &mdash; these are otherwise provided centrally by the Flasher Hub for all connected devices &mdash; control by an automation or test computer is sometimes not easy. <br />
<br />
One obvious option is to use the Flasher Compact in host-controlled mode in conjunction with J-FLash. In this case, the connected Flasher is controlled directly by J-FLash. For MCUs that are only supported by U-Flash, this option is not available, as direct control of a flasher via U-FLash is not (yet) supported.<br />
<br />
''FlasherControl'' is a simple way of integrating the Flasher Compact in stand-alone mode via scripts &mdash; by simply calling a utility program &mdash; into an automation system.<br />
<br />
In any case, a separate instance of the control programme must be started for each connected flasher if several targets are to be programmed simultaneously and in parallel.<br />
<br />
= Installation =<br />
The program is part of the "Flasher Software and Documentation Package" from version 7.86i.<br />
<br />
You can also download the FlasherControl.exe from here:<br />
* [https://dl2.segger.com/files/flasher/FlasherControl_V2.zip FlasherControl.exe Version 2, x64]<br />
* [https://dl2.segger.com/files/flasher/FlasherControl_V2_x86.zip FlasherControl.exe Version 2, x86]<br />
<br />
= Operation =<br />
== Command line arguments ==<br />
{|class="wikitable"<br />
|+ FlasherControl command line arguments<br />
|- <br />
! argument !! description<br />
|-<br />
| -[[#Parameter_SN|SN]] || Use Flasher with given ''serial number''.<br />
|-<br />
| -[[#Parameter_P|P]] || Select given ''project name'' before programming.<br />
|-<br />
| -[[#Parameter_I|I]] || Interactive terminal-like mode.<br />
|-<br />
| -[[#Parameter_C|C]] || The command to be sent to the Flasher to be executed instead of <code>#auto</code>. (Flasher commands has to be prefixed by <code>#</code>)<br />
|-<br />
| -[[#Parameter_T|T]] || The program ends when the ''termination string'' is found in the Flasher response.<br />
|}<br />
[[File:image_2023_04_14T06_22_29_772Z.png|none|FlasherControl.exe command line parameters]]<br />
<br />
=== Parameter <code>SN</code> ===<br />
If more than one flasher is connected to the PC, this parameter can be used to specify which flasher is to be used. If it is omitted in such a case, a dialogue for selecting a Flasher is displayed to the user instead.<br />
==== Syntax ====<br />
-SN ''serial number''<br />
==== Example ====<br />
FlasherControl.exe '''-SN 844200006''' &hellip;<br />
<br />
=== Parameter <code>I</code> ===<br />
This parameter causes the program to operate in [[#Interactive_mode|interactive operation mode]]. If not specified, the program operates in [[#Automatic_mode|automatic mode]]<br />
==== Syntax ====<br />
-I<br />
==== Example ====<br />
FlasherControl.exe -SN 844200006 '''-I'''<br />
<br />
=== Parameter <code>C</code> ===<br />
This parameter sets the command to send to Flasher, when operating in [[#Automatic_mode|automatic mode]]. When omitted, <code>#auto</code> is used.<br />
==== Syntax ====<br />
-C '''#flasher command'''<br />
==== Example ====<br />
FlasherControl.exe -SN 844200006 -P boot.UNI '''-C #read'''<br />
<br />
=== Parameter <code>P</code> ===<br />
When using the [[#Automatic_mode]] the project name specified with this parameter is sent as <code>#select</code> before the command. This selects the project to use on Flasher. I.e. one must specify the name of the CFG file ('''without''' extension '.cfg' for J-Flash projects or the name of the UNI file ('''with'' extension *.uni).<br />
==== Syntax ====<br />
-P '''project name'''<br />
==== Example ====<br />
FlasherControl.exe -SN 844200006 '''-P boot.UNI''' -C #read<br />
<br />
=== Parameter <code>T</code> ===<br />
When using the [[#Automatic_mode]], this argument specifies the string when received from the flasher, the programme is terminated.<br />
==== Syntax ====<br />
-T '''termination string'''<br />
==== Example ====<br />
FlasherControl.exe -SN 844200006 -P boot.UNI -C #read '''-T ERR:'''<br />
<br />
== Operation modes ==<br />
The FlasherControl program supports two modes of operation, automatic and interactive.<br />
<br />
=== Interactive mode ===<br />
The interactive mode is started by the call parameter <code>-I</code>.<br />
<br />
[[File:image_2023_04_14T06_23_59_876Z.png|none|FlasherControl.exe example for interactive mode]]<br />
In interactive mode, a user can control the Flasher via the CLI as if it were a terminal program.<br />
<br />
[[File:image_2023_04_14T07_25_54_078Z.png|none|FlasherControl.exe example for interactive #read command]]<br />
<br />
The interactive mode ends on reception of the <code>BREAK</code> signal followed by <code>ENTER</code> (<code>CTRL-C, ENTER</code> on most PC).<br />
<br />
=== Automatic mode ===<br />
In automatic mode a single command is sent to Flasher and the response from the Flasher is captured. <br />
<br />
The command can be specified by the <code>-C</code> argument; <code>#auto</code> is sent by default.<br />
[[File:image_2023_04_14T07_25_27_208Z.png|none|FlasherControl.exe example for automatic mode with #auto command]]<br />
<br />
Optionally an additional preceding <code>#select</code> command can be issued. This <code>#select <i>project name</i></code> is set by <code>-P <i>project name</i></code><br />
<br />
[[File:image_2023_04_14T06_23_03_747Z.png|none|FlasherControl.exe example for automatic mode with pre-selected project]]<br />
<br />
The capture ends - like in interactive mode - with <code>BREAK</code> signal followed by <code>ENTER</code>. Additionally it ends after reception of a response from Flasher containing the specified terminator. The terminator string can be specified by <code>-T <i>terminator string</i></code>. <br />
<br />
When the terminator is received, the processing of communication ends .<br />
<br />
== Post-processing output ==<br />
All fetched content is output via STDOUT.<br />
<br />
Additionally as state messages from FlasherControl itself are also output on STDERR.<br />
<br />
To process the output of the Flasher the output can easily be redirected to files <br />
FlasherControl.exe &hellip; '''>'''<i>filename</i></code><br />
or piped to other post-processing tools <br />
FlasherControl.exe &hellip; '''|''' <i>other post processing-tool</i> &hellip;<br />
<br />
To process the FlasherControl state messages, STDERR can be redirected by <code>2></code>. Piping STDERR is a little bit more complicated. First redirect STDERR to STDOUT — the pipe; then redirect STDOUT to <code>NUL</code> (without changing where STDERR is going): <br />
FlasherControl.exe &hellip; 2>&1 >NUL '''|''' <i>other post processing-tool</i> &hellip;<br />
<br />
Both redirection methods can be combined to fetch STDOUT and STDERR to separate files:<br />
FlasherControl.exe &hellip; ><i>stdout-filename</i> 2><i>stderr-filename</i><br />
<br />
To combined output before processing use following construction:<br />
FlasherControl.exe &hellip; 2>&1 ><i>combined-filename</i>;</div>JanBhttps://wiki.segger.com/index.php?title=Flasher/FAQ&diff=15909Flasher/FAQ2023-08-08T12:22:07Z<p>JanB: /* How can I start operation on my Flasher? */</p>
<hr />
<div>This gives answers to the most Frequently Asked Questions.<br />
<br />
<div class="toclimit-2"><br />
__TOC__<br />
</div><br />
<br />
= FAQ: Frequently Asked Questions =<br />
== How can I start operation on my Flasher? ==<br />
The following options are available for controlling the Flasher:<br />
# Starting a programming by button "PROG"<br />
# Dedicated pins in SUB-D9: START (start programming), BUSY (busy indication), READY/ERROR (result if not(BUSY) ); see: Flasher User Guide (UM08022): Ch. 4.2 "Handshake control".<br />
# Command line via TELNET or serial interface; see: Flasher User Guide (UM08022): Ch. 4.3 "ASCII command interface".<br />
# By DLL: The J-Link SDK should be purchased for this purpose.<br />
# FlasherControl.exe: An unofficial application, without any warranty and support. When running this tool it sends an #Auto command via USB. Details: [https://wiki.segger.com/FlasherControl FlasherControl wiki article] <br>You can download the tool from this share folder: https://share.segger.com/index.php/s/6wkEFMRqNqS7eW5<br />
<br />
== I can not find my device in J-FLash / U-Flash, but the website states it is supported ==<br />
For historical reasons, most processors with ARM, some PowerPC, RX and some more exotic core architectures are only supported by J-Flash (<code>JFlash.exe</code>).<br />
<br />
Projects with other devices listed as "supported" must be created in U-Flash (<code>UniversalFlasher.exe</code>).<br />
<br />
== When programming my device, areas are programmed with some value although no data are available for them ==<br />
[[File:Sector_padding_src_file1.png|frame|'''Picture 1:''' Source data file with memory regions of interest]]<br />
[[File:Sector_padding_result.png|frame|'''Picture 2:''' Padded areas with size 0x800]]<br />
[[File:Sector_padding_expected_output.png|frame|'''Picture 3:''' Padded areas with size 0x20]]<br />
<br />
This behavior is normally only noticed by the user on MCUs with some kind of flash integrity check such as ECC when attempting to program a block of data within or adjacent to an already programmed sector.<br />
<br />
It is caused by the fact that the areas defined in the data files are always padded with the "empty value" to such an extent that a flash sector is completely filled. This is then programmed into the MCU in this way.<br />
<br />
In the example the data file contains data for 0x801FFF10..0x801FFF2F, 0x0x801FFF80..0x801FFF83 and 0x801FFFC0..0x801FFFC3 (Picture 1). <br />
The sector size is for this example set to 0x800 i.e. 2KByte. <br />
<br />
Due to padding all areas marked red are also written (Picture 2).<br />
<br />
To prevent this, a suitable smaller sector size has to to be chosen, e.g. 0x20. The result with those changed settings are shown in the picture (Picture 3).<br />
<br />
For MCUs with flash integrity check, the check value (ECC) is formed and written following the writing of a "page". Normally, this cannot be changed in subsequent reprogramming attempts. If the page is to be changed, the entire sector must be erased, as any attempt at reprogramming will result in an invalid integrity check value or an exception thrown by the MCU's flash controller. <br />
<br />
The flasher currently does not distinguish between an "erase" sector size and a "write" page size. <br />
For devices supported by U-Flash, the sector can be adjusted in the device definition files. [[Flasher/FAQ/reduce write sector size|How to]] do this, is described in [[Flasher/FAQ/reduce write sector size|reduce write sector size]]. Please note that this is usually accompanied by a reduction in programming speed</div>JanBhttps://wiki.segger.com/index.php?title=Flasher/FAQ&diff=15908Flasher/FAQ2023-08-08T12:19:53Z<p>JanB: /* How can I start operation on my Flasher? */</p>
<hr />
<div>This gives answers to the most Frequently Asked Questions.<br />
<br />
<div class="toclimit-2"><br />
__TOC__<br />
</div><br />
<br />
= FAQ: Frequently Asked Questions =<br />
== How can I start operation on my Flasher? ==<br />
The following options are available for controlling the Flasher:<br />
# Starting a programming by button "PROG"<br />
# Dedicated pins in SUB-D9: START (start programming), BUSY (busy indication), READY/ERROR (result if not(BUSY) ); see: Flasher User Guide (UM08022): Ch. 4.2 "Handshake control".<br />
# Command line via TELNET or serial interface; see: Flasher User Guide (UM08022): Ch. 4.3 "ASCII command interface".<br />
# By DLL: The J-Link SDK should be purchased for this purpose.<br />
# FlasherControl.exe: An unofficial application, without any warranty and support. When running this tool it sends an #Auto command via USB. Details: [https://wiki.segger.com/FlasherControl FlasherControl wiki article] <br>You can download the tool from this share folder: https://share.segger.com/index.php/s/CQLJK96xP2zfaCp<br />
<br />
== I can not find my device in J-FLash / U-Flash, but the website states it is supported ==<br />
For historical reasons, most processors with ARM, some PowerPC, RX and some more exotic core architectures are only supported by J-Flash (<code>JFlash.exe</code>).<br />
<br />
Projects with other devices listed as "supported" must be created in U-Flash (<code>UniversalFlasher.exe</code>).<br />
<br />
== When programming my device, areas are programmed with some value although no data are available for them ==<br />
[[File:Sector_padding_src_file1.png|frame|'''Picture 1:''' Source data file with memory regions of interest]]<br />
[[File:Sector_padding_result.png|frame|'''Picture 2:''' Padded areas with size 0x800]]<br />
[[File:Sector_padding_expected_output.png|frame|'''Picture 3:''' Padded areas with size 0x20]]<br />
<br />
This behavior is normally only noticed by the user on MCUs with some kind of flash integrity check such as ECC when attempting to program a block of data within or adjacent to an already programmed sector.<br />
<br />
It is caused by the fact that the areas defined in the data files are always padded with the "empty value" to such an extent that a flash sector is completely filled. This is then programmed into the MCU in this way.<br />
<br />
In the example the data file contains data for 0x801FFF10..0x801FFF2F, 0x0x801FFF80..0x801FFF83 and 0x801FFFC0..0x801FFFC3 (Picture 1). <br />
The sector size is for this example set to 0x800 i.e. 2KByte. <br />
<br />
Due to padding all areas marked red are also written (Picture 2).<br />
<br />
To prevent this, a suitable smaller sector size has to to be chosen, e.g. 0x20. The result with those changed settings are shown in the picture (Picture 3).<br />
<br />
For MCUs with flash integrity check, the check value (ECC) is formed and written following the writing of a "page". Normally, this cannot be changed in subsequent reprogramming attempts. If the page is to be changed, the entire sector must be erased, as any attempt at reprogramming will result in an invalid integrity check value or an exception thrown by the MCU's flash controller. <br />
<br />
The flasher currently does not distinguish between an "erase" sector size and a "write" page size. <br />
For devices supported by U-Flash, the sector can be adjusted in the device definition files. [[Flasher/FAQ/reduce write sector size|How to]] do this, is described in [[Flasher/FAQ/reduce write sector size|reduce write sector size]]. Please note that this is usually accompanied by a reduction in programming speed</div>JanBhttps://wiki.segger.com/index.php?title=J-Link_Command_Strings&diff=14629J-Link Command Strings2023-03-30T09:56:43Z<p>JanB: /* VTrefTmp */</p>
<hr />
<div><!---- TBD:<br />
- Add the following commands:<br />
SetMonModeVTableAddr<br />
RestoreDownloadAfterReset<br />
SetRTTStreamingMode<br />
SetSkipInitECCRAMOnConnect<br />
SetSkipL1Verify<br />
SetFlashRewriteBehavior<br />
SetDisableSkipBlankDataOnProg<br />
- Separate before and after open commands<br />
----><br />
The behavior of the J-Link can be customized via J-Link Command Strings passed to the JLinkARM.dll which controls J-Link.<br />
Applications such as J-Link Commander, but also other IDEs, allow passing one or more J-Link Command Strings.<br />
Command strings can be used for passing commands to J-Link (such as switching on target power supply), as well as customize the behavior (by defining memory regions and other things) of J-Link.<br />
This way, J-Link Command Strings enable to set options which are not configurable via dialogs or settings (e.g. in an IDE).<br />
<br />
<div class="toclimit-2"><br />
__TOC__<br />
</div><br />
<br />
= List of available commands =<br />
The table below lists and describes the available J-Link Command Strings.<br />
{| class="wikitable"<br />
|-<br />
! Command !! Description<br />
|-<br />
| [[#AppendToLogFile | AppendToLogFile]] || Enables/Disables always appending new loginfo to logfile.<br />
|-<br />
| [[#CORESIGHT_AddAP | CORESIGHT_AddAP]] || <br />
|-<br />
| [[#CORESIGHT_SetIndexAHBAPToUse | CORESIGHT_SetIndexAHBAPToUse]] || Selects a specific AHB-AP to be used to connect to a Cortex-M device.<br />
|-<br />
| [[#CORESIGHT_SetIndexAPBAPToUse | CORESIGHT_SetIndexAPBAPToUse]] || Selects a specific APB-AP to be used to connect to a Cortex-A or Cortex-R device.<br />
|-<br />
| [[#CORESIGHT_SetIndexBGMemAPToUse | CORESIGHT_SetIndexBGMemAPToUse]] || Selects AP to be used for background memory accesses (only has an effect on certain cores).<br />
|-<br />
| [[#CORESIGHT_SetETBBaseAddr | CORESIGHT_SetETBBaseAddr]] || Sets ETB base address.<br />
|-<br />
| [[#CORESIGHT_SetMTBBaseAddr | CORESIGHT_SetMTBBaseAddr]] || Sets MTB base address.<br />
|-<br />
| [[#CORESIGHT_SetETMBaseAddr | CORESIGHT_SetETMBaseAddr]] || Sets ETM base address.<br />
|-<br />
| [[#CORESIGHT_SetPTMBaseAddr | CORESIGHT_SetPTMBaseAddr]] || Sets PTM base address.<br />
|-<br />
| [[#CORESIGHT_SetCSTFBaseAddr | CORESIGHT_SetCSTFBaseAddr]] || Sets Trace Funnel base address.<br />
|-<br />
| [[#CORESIGHT_SetTMCBaseAddr | CORESIGHT_SetTMCBaseAddr]] || Sets TMC base address.<br />
|-<br />
| [[#CORESIGHT_SetTPIUBaseAddr | CORESIGHT_SetTPIUBaseAddr]] || Sets TPIU base address.<br />
|-<br />
| [[#CORESIGHT_SetTFEnableMask | CORESIGHT_SetTFEnableMask]] || Sets the CSTF mask.<br />
|-<br />
| [[#device | device]] || Selects the target device.<br />
|-<br />
| [[#DisableAutoUpdateFW | DisableAutoUpdateFW]] || Disables automatic firmware update.<br />
|-<br />
| [[#DisableCortexMXPSRAutoCorrectTBit | DisableCortexMXPSRAutoCorrectTBit]] || Disables auto-correction of XPSR T-bit for Cortex-M devices.<br />
|-<br />
| [[#DisableFlashBPs | DisableFlashBPs]] || Disables the FlashBP feature.<br />
|-<br />
| [[#DisableFlashDL | DisableFlashDL]] || Disables the J-Link FlashDL feature.<br />
|-<br />
| [[#DisableInfoWinFlashBPs | DisableInfoWinFlashBPs]] || Disables info window for programming FlashBPs.<br />
|-<br />
| [[#DisableInfoWinFlashDL | DisableInfoWinFlashDL]] || Disables info window for FlashDL.<br />
|-<br />
| [[#DisableLowPowerHandlingMode | DisableLowPowerHandlingMode]] || Disables low-power handling mode<br />
|-<br />
| [[#DisableLTRACEAnalysis | DisableLTRACEAnalysis]] || Disables LTRACE analyzer.<br />
|-<br />
| [[#DisableMOEHandling | DisableMOEHandling]] || Disables output of additional information about mode of entry in case the target CPU is halted / entered debug mode.<br />
|-<br />
| [[#DisablePowerSupplyOnClose | DisablePowerSupplyOnClose]] || Disables power supply on close.<br />
|-<br />
| [[#EnableAutoUpdateFW | EnableAutoUpdateFW]] || Enables automatic firmware update.<br />
|-<br />
| [[#EnableEraseAllFlashBanks | EnableEraseAllFlashBanks]] || Enables erase for all accessible flash banks.<br />
|-<br />
| [[#EnableFlashBPs | EnableFlashBPs]] || Enables the FlashBP feature.<br />
|-<br />
| [[#EnableFlashDL | EnableFlashDL]] || Enables the J-Link FlashDL feature.<br />
|-<br />
| [[#EnableInfoWinFlashBPs | EnableInfoWinFlashBPs]] || Enables info window for programming FlashBPs.<br />
|-<br />
| [[#EnableInfoWinFlashDL | EnableInfoWinFlashDL]] || Enables info window for FlashDL.<br />
|-<br />
| [[#EnableLowPowerHandlingMode | EnableLowPowerHandlingMode]] || Enables low-power handling mode<br />
|-<br />
| [[#EnableMOEHandling | EnableMOEHandling]] || Enables output of additional information about mode of entry in case the target CPU is halted / entered debug mode.<br />
|-<br />
| [[#EnableRemarks | EnableRemarks]] || Enable detailed output during CPU-detection / connection process.<br />
|-<br />
| [[#ExcludeFlashCacheRange | ExcludeFlashCacheRange]] || Invalidate flash ranges in flash cache, that are configured to be excluded from flash cache.<br />
|-<br />
| [[#Hide_device_selection | HideDeviceSelection]] || Hide device selection dialog.<br />
|-<br />
| [[#HSSLogFile | HSSLogFile]] || Logs all HSS-Data to file, regardless of the application using HSS.<br />
|-<br />
| [[#InvalidateCache | InvalidateCache]] || Invalidates Cache.<br />
|-<br />
| [[#InvalidateFW | InvalidateFW]] || Invalidating current firmware.<br />
|-<br />
| [[#JLinkDevicesXMLPath | JLinkDevicesXMLPath]] || Specify JLinkDevices XML folder path<br />
|-<br />
| [[#map_exclude | map exclude]] || Ignores all memory accesses to specified area.<br />
|-<br />
| [[#map_illegal | map illegal]] || Marks a specified memory region as an illegal memory area. Memory accesses to this region are ignored.<br />
|-<br />
| [[#map_indirectread | map indirectread]] || Specifies an area which should be read indirect.<br />
|-<br />
| [[#map_ram | map ram]] || Specifies location of target RAM.<br />
|-<br />
| [[#map_region | map region]] || Specifies a memory region.<br />
|-<br />
| [[#map_reset | map reset]] || Restores the default mapping, which means all memory accesses are permitted.<br />
|-<br />
| [[#MemPreserveOnReset | MemPreserveOnReset]] || Adds a memory preserve area to the internal list of memory areas.<br />
|-<br />
| [[#ProjectFile | ProjectFile]] || Specifies a file or directory which should be used by the J-Link DLL to save the current configuration.<br />
|-<br />
| [[#ReadIntoTraceCache | ReadIntoTraceCache]] || Reads the given memory area into the streaming trace instruction cache.<br />
|-<br />
| [[#RISCV_SetTEBaseAddr | RISCV_SetTEBaseAddr]] || Sets the trace encoder (TE) base address.<br />
|-<br />
| [[#RISCV_SetPIBRefCenter | RISCV_SetPIBRefCenter]] || Configures how the trace signals are output on SiFive RISC-V chips.<br />
|-<br />
| [[#RTTTelnetAllowNonLocalClient | RTTTelnetAllowNonLocalClient]] || Allows non local clients to connect to RTT over Telnet.<br />
|-<br />
| [[#ScriptFile | ScriptFile]] || Set script file path.<br />
|-<br />
| [[#SelectTraceSource | SelectTraceSource]] || Selects which trace source should be used for tracing.<br />
|-<br />
| [[#SetAllowStopMode | SetAllowStopMode]] || Allows/Disallows usage of stop mode for RTT and memory accesses.<br />
|-<br />
| [[#SetAllowFlashCache | SetAllowFlashCache]] || Enables/Disables flash cache usage.<br />
|-<br />
| [[#SetHostIF | SetHostIF]] || Can be used to override the host interface. Please refer to [[J-Link script files#InitEMU() | InitEmu()]].<br />
|-<br />
| [[#SetAllowSimulation | SetAllowSimulation]] || Enables/Disables instruction set simulation.<br />
|-<br />
| [[#SetBatchMode | SetBatchMode]] || Enables/Disables batch mode.<br />
|-<br />
| [[#SetCFIFlash | SetCFIFlash]] || Specifies CFI flash area.<br />
|-<br />
| [[#SetCheckModeAfterRead | SetCheckModeAfterRead]] || Enables/Disables CPSR check after read operations.<br />
|-<br />
| [[#SetCompareMode | SetCompareMode]] || Specifies the compare mode to be used.<br />
|-<br />
| [[#SetCPUConnectIDCODE | SetCPUConnectIDCODE]] || Specifies an CPU IDCODE that is used to authenticate the debug probe, when connecting to the CPU.<br />
|-<br />
| [[#SetDbgPowerDownOnClose | SetDbgPowerDownOnClose]] || Used to power-down the debug unit of the target CPU when the debug session is closed.<br />
|-<br />
| [[#SetEnableMemCache | SetEnableMemCache]] || Enables/Disables DLL internal memory caching mechanisms that improve performance<br />
|-<br />
| [[#SetETBIsPresent | SetETBIsPresent]] || Selects if the connected device has an ETB.<br />
|-<br />
| [[#SetETMIsPresent | SetETMIsPresent]] || Selects if the connected device has an ETM.<br />
|-<br />
| [[#SetFlashDLNoRMWThreshold | SetFlashDLNoRMWThreshold]] || Specifies a threshold when writing to flash memory does not cause a read-modify-write operation.<br />
|-<br />
| [[#SetFlashDLThreshold | SetFlashDLThreshold]] || Set minimum amount of data to be downloaded.<br />
|-<br />
| [[#SetIgnoreReadMemErrors | SetIgnoreReadMemErrors]] || Specifies if read memory errors will be ignored.<br />
|-<br />
| [[#SetIgnoreWriteMemErrors | SetIgnoreWriteMemErrors]] || Specifies if write memory errors will be ignored.<br />
|-<br />
| [[#SetInitWorkRAMOnConnect | SetInitWorkRAMOnConnect]] || Used to indicate that it is necessary to initialize the work RAM on connect (important for ECC RAM).<br />
|-<br />
| [[#SetMonModeDebug | SetMonModeDebug]] || Enables/Disables monitor mode debugging.<br />
|-<br />
| [[#SetResetPulseLen | SetResetPulseLen]] || Defines the length of the RESET pulse in milliseconds.<br />
|-<br />
| [[#SetResetType | SetResetType]] || Selects the reset strategy.<br />
|-<br />
| [[#SetRestartOnClose | SetRestartOnClose]] || Specifies restart behavior on close.<br />
|-<br />
| [[#SetRTTAddr | SetRTTAddr]] || Set address of the RTT buffer.<br />
|-<br />
| [[#SetRTTSearchRanges | SetRTTSearchRanges]] || Set ranges to be searched for RTT buffer.<br />
|-<br />
| [[#SetRTTTelnetPort | SetRTTTelnetPort]] || Set the port used for RTT telnet.<br />
|-<br />
| [[#SetRXIDCode | SetRXIDCode]] || Specifies an ID Code for Renesas RX devices to be used by the J-Link DLL.<br />
|-<br />
| [[#SetSkipDebugDeInit | SetSkipDebugDeInit]] || May be used to skip debug de-init on debug session close.<br />
|-<br />
| [[#SetSkipProgOnCRCMatch | SetSkipProgOnCRCMatch]] || Deprecated. Use [[#SetCompareMode | SetCompareMode]] instead.<br />
|-<br />
| [[#SetSkipRestoreRAMCode | SetSkipRestoreRAMCode]] || Specifies if restoring of RAMCode is skipped.<br />
|-<br />
| [[#SetSysPowerDownOnIdle | SetSysPowerDownOnIdle]] || Used to power-down the target CPU, when there are no transmissions between J-Link and target CPU, for a specified time frame.<br />
|-<br />
| [[#SetVerifyDownload | SetVerifyDownload]] || Specifies the verify option to be used.<br />
|-<br />
| [[#SetVerifyRAMDownload | SetVerifyRAMDownload]] || Enables verification of downloads into RAM.<br />
|-<br />
| [[#SetWorkRAM | SetWorkRAM]] || Specifies RAM area to be used by the J-Link DLL.<br />
|-<br />
| [[#ShowControlPanel | ShowControlPanel]] || Opens control panel.<br />
|-<br />
| [[#SilentUpdateFW | SilentUpdateFW]] || Update new firmware automatically.<br />
|-<br />
| [[#SupplyPower | SupplyPower]] || Activates/Deactivates power supply over pin 19 of the JTAG connector.<br />
|-<br />
| [[#SupplyPowerDefault | SupplyPowerDefault]] || Activates/Deactivates power supply over pin 19 of the JTAG connector permanently.<br />
|-<br />
| [[#SuppressControlPanel | SuppressControlPanel]] || Suppress pop up of the control panel.<br />
|-<br />
| [[#SuppressGUI | SuppressGUI]] || Suppress any GUI the J-Link software may spawn.<br />
|-<br />
| [[#SuppressInfoUpdateFW | SuppressInfoUpdateFW]] || Suppress information regarding firmware updates.<br />
|-<br />
| [[#SWOSetConversionMode | SWOSetConversionMode]] || Set SWO Conversion mode.<br />
|-<br />
| [[#TraceFile | TraceFile]] || Sets path for trace file to capture RAWTrace data.<br />
|-<br />
| [[#TraceSampleAdjust | TraceSampleAdjust]] || Allows to adjust the sampling timing on the specified pins, inside the J-Trace firmware.<br />
|-<br />
|}<br />
<br />
For a list of Xtensa related command strings, please refer to the [[J-Link_Xtensa_specifics#Debug_settings | J-Link Xtensa specifics article]].<br />
<br />
== AppendToLogFile ==<br />
This command can be used to configure the AppendToLogFile feature.<br />
If enabled, new log data will always be appended to an existing logfile.<br />
Otherwise, each time a new connection will be opened, existing log data will be overwritten.<br />
By default new log data will not be always appended to an existing logfile.<br />
=== Syntax ===<br />
<tt>AppendToLogFile = 0 | 1</tt><br />
=== Example ===<br />
AppendToLogFile 1<br />
<br />
== CORESIGHT_AddAP ==<br />
This command is used to define an AP for an ARM Cortex-M device.<br />
This might be necessary for systems with [[DAP#DAP_topology_example_-_Cascaded_APs | cascaded AP]] setups.<br />
<br />
For example, if the connected target provides the following AP layout:<br />
* AP[0]: AHB-AP<br />
** AP[0]: APB-AP<br />
** AP[1]: AHB-AP<br />
=== Syntax ===<br />
<tt>CORESIGHT_AddAP = Index=<Index> Type=<Type> Addr=<BaseAddr> Parent=<ParentIndex></tt><br />
{| class="wikitable"<br />
|-<br />
! Parameter !! Description<br />
|-<br />
| Index || Index of the AP<br />
|-<br />
| Type || Type of the AP<br />
|-<br />
| Addr || Base address of the AP in the DP address space<br />
|-<br />
| Parent || Parent AP<br> ''(Optional)''<br />
|-<br />
|}<br />
=== Example ===<br />
CORESIGHT_AddAP = Index=0 Type=APB-AP Addr=0x60002000<br />
CORESIGHT_AddAP = Index=1 Type=AXI-AP Addr=0x60004000<br />
CORESIGHT_AddAP = Index=2 Type=AHB-AP Addr=0x60102000 Parent=0<br />
<br />
== CORESIGHT_SetIndexAHBAPToUse ==<br />
This command is used to select a specific AHB-AP to be used when connected to an ARM Cortex-M device.<br />
Usually, it is not necessary to explicitly select an AHB-AP to be used, as J-Link auto-detects the AP automatically.<br />
For multi-core systems with multiple AHB-APs it might be necessary.<br><br />
The index selected here is an absolute index.<br />
For example, if the connected target provides the following AP layout:<br />
* AP[0]: AHB-AP<br />
* AP[1]: APB-AP<br />
* AP[2]: AHB-AP<br />
* AP[3]: JTAG-AP<br />
In order to select the second AHB-AP to be used, use "2" as index.<br />
=== Syntax ===<br />
<tt>CORESIGHT_SetIndexAHBAPToUse = <Index></tt><br />
=== Example ===<br />
CORESIGHT_SetIndexAHBAPToUse = 2<br />
<br />
== CORESIGHT_SetIndexAPBAPToUse ==<br />
This command is used to select a specific APB-AP to be used when connected to an ARM Cortex-A or Cortex-R device.<br />
Usually, it is not necessary to explicitly select an AHB-AP to be used, as J-Link auto-detects the AP automatically.<br />
For multi-core systems with multiple APB-APs it might be necessary.<br><br />
The index selected here is an absolute index.<br />
For example, if the connected target provides the following AP layout:<br />
* AP[0]: APB-AP<br />
* AP[1]: AHB-AP<br />
* AP[2]: APB-AP<br />
* AP[3]: JTAG-AP<br />
In order to select the second APB-AP to be used, use "2" as index.<br />
=== Syntax ===<br />
<tt>CORESIGHT_SetIndexAPBAPToUse = <Index></tt><br />
=== Example ===<br />
CORESIGHT_SetIndexAPBAPToUse = 2<br />
<br />
== CORESIGHT_SetIndexBGMemAPToUse ==<br />
This command is used to select a specific MEM-AP (AHB-AP or AXI-AP) to be used for background memory accesses.<br><br />
This is mainly used on cores that do not have mandatory background memory access support (e.g. Cortex-A and Cortex-R based ones) but there is a MEM-AP present on the actual chip.<br><br />
For example, for Cortex-M based cores, this command string has no effect because for Cortex-M the AHB-AP connected to the core is also used to perform background memory accesses.<br><br />
Background memory access support is for example needed to support features like [[RTT | RTT]] and [[HSS | HSS]].<br><br />
For example, if the following AP map is specified for a target device:<br />
* AP[0]: APB-AP<br />
* AP[1]: AHB-AP<br />
* AP[2]: AXI-AP<br />
* AP[3]: JTAG-AP<br />
In order to select AP[2] to be used for background memory accesses, use "2" as index.<br />
=== Syntax ===<br />
<tt>CORESIGHT_SetIndexBGMemAPToUse = <Index></tt><br />
=== Example ===<br />
<source><br />
CORESIGHT_SetIndexBGMemAPToUse = 2<br />
</source><br />
<br />
== CORESIGHT_SetETBBaseAddr ==<br />
This command can be used to set the Coresight ETB base address if the debug probe could not get this information from the target devices ROM table. <br />
Additionally an unlock of the module can be forced and an alternative AP index can be set. These settings are optional.<br />
=== Default values ===<br />
The default values for the APIndex and base address are usually autodetected by J-Link/J-Trace. So only change these values if the autodetection fails or is incorrect.<br />
The default unlock value is 0 (no unlock) for Cortex-A/R cores and 1 (always unlock) for Cortex-M.<br />
=== Syntax ===<br />
<tt>CORESIGHT_SetETBBaseAddr = <Addr> [ForceUnlock = <ForceUnlock>] [APIndex = <APIndex>]</tt><br />
=== Example ===<br />
CORESIGHT_SetETBBaseAddr = 0xE0041000<br />
or<br />
CORESIGHT_SetETBBaseAddr = 0xE0041000 ForceUnlock = 1 APIndex = 2<br />
<br />
== CORESIGHT_SetMTBBaseAddr ==<br />
This command can be used to set the Coresight MTB base address if the debug probe could not get this information from the target devices ROM table.<br />
Additionally an unlock of the module can be forced and an alternative AP index can be set. These settings are optional.<br />
=== Default values ===<br />
The default values for the APIndex and base address are usually autodetected by J-Link/J-Trace. So only change these values if the autodetection fails or is incorrect.<br />
The default unlock value is 1 (always unlock) for Cortex-M.<br />
=== Syntax ===<br />
<tt>CORESIGHT_SetMTBBaseAddr = <Addr> [ForceUnlock = <ForceUnlock>] [APIndex = <APIndex>]</tt><br />
=== Example ===<br />
CORESIGHT_SetMTBBaseAddr = 0xE0041000<br />
or<br />
CORESIGHT_SetMTBBaseAddr = 0xE0041000 ForceUnlock = 1 APIndex = 2<br />
<br />
== CORESIGHT_SetETMBaseAddr ==<br />
This command can be used to set the Coresight ETM base address if the debug probe could not get this information from the target devices ROM table.<br />
Additionally an unlock of the module can be forced and an alternative AP index can be set. These settings are optional.<br />
=== Default values ===<br />
The default values for the APIndex and base address are usually autodetected by J-Link/J-Trace. So only change these values if the autodetection fails or is incorrect.<br />
The default unlock value is 0 (no unlock) for Cortex-A/R cores and 1 (always unlock) for Cortex-M.<br />
=== Syntax ===<br />
<tt>CORESIGHT_SetETMBaseAddr = <Addr> [ForceUnlock = <ForceUnlock>] [APIndex = <APIndex>]</tt><br />
=== Example ===<br />
CORESIGHT_SetETMBaseAddr = 0xE0041000<br />
or<br />
CORESIGHT_SetETMBaseAddr = 0xE0041000 ForceUnlock = 1 APIndex = 2<br />
<br />
== CORESIGHT_SetPTMBaseAddr ==<br />
This command can be used to set the Coresight PTM base address if the debug probe could not get this information from the target devices ROM table.<br />
Additionally an unlock of the module can be forced and an alternative AP index can be set. These settings are optional.<br />
=== Default values ===<br />
The default values for the APIndex and base address are usually autodetected by J-Link/J-Trace. So only change these values if the autodetection fails or is incorrect.<br />
The default unlock value is 0 (no unlock) for Cortex-A/R cores and 1 (always unlock) for Cortex-M.<br />
=== Syntax ===<br />
<tt>CORESIGHT_SetPTMBaseAddr = <Addr> [ForceUnlock = <ForceUnlock>] [APIndex = <APIndex>]</tt><br />
=== Example ===<br />
CORESIGHT_SetPTMBaseAddr = 0xE0041000<br />
or<br />
CORESIGHT_SetPTMBaseAddr = 0xE0041000 ForceUnlock = 1 APIndex = 2<br />
<br />
== CORESIGHT_SetCSTFBaseAddr ==<br />
This command can be used to set the Coresight TF(Trace Funnel) base address if the debug probe could not get this information from the target devices ROM table.<br />
Additionally an unlock of the module can be forced and an alternative AP index can be set. These settings are optional.<br />
=== Default values ===<br />
The default values for the APIndex and base address are usually autodetected by J-Link/J-Trace. So only change these values if the autodetection fails or is incorrect.<br />
The default unlock value is 0 (no unlock) for Cortex-A/R cores and 1 (always unlock) for Cortex-M.<br />
=== Syntax ===<br />
<tt>CORESIGHT_SetCSTFBaseAddr = <Addr> [ForceUnlock = <ForceUnlock>] [APIndex = <APIndex>]</tt><br />
=== Example ===<br />
CORESIGHT_SetCSTFBaseAddr = 0xE0041000<br />
or<br />
CORESIGHT_SetCSTFBaseAddr = 0xE0041000 ForceUnlock = 1 APIndex = 2<br />
<br />
== CORESIGHT_SetTMCBaseAddr ==<br />
This command can be used to set the Coresight TMC base address if the debug probe could not get this information from the target devices ROM table.<br />
Additionally an unlock of the module can be forced and an alternative AP index can be set. These settings are optional.<br />
=== Default values ===<br />
The default values for the APIndex and base address are usually autodetected by J-Link/J-Trace. So only change these values if the autodetection fails or is incorrect.<br />
The default unlock value is 0 (no unlock) for Cortex-A/R cores and 1 (always unlock) for Cortex-M.<br />
=== Syntax ===<br />
<tt>CORESIGHT_SetTMCBaseAddr = <Addr> [ForceUnlock = <ForceUnlock>] [APIndex = <APIndex>]</tt><br />
=== Example ===<br />
CORESIGHT_SetTMCBaseAddr = 0xE0041000<br />
or<br />
CORESIGHT_SetTMCBaseAddr = 0xE0041000 ForceUnlock = 1 APIndex = 2<br />
<br />
== CORESIGHT_SetTPIUBaseAddr ==<br />
This command can be used to set the Coresight TPIU base address if the debug probe could not get this information from the target devices ROM table.<br />
Additionally an unlock of the module can be forced and an alternative AP index can be set. These settings are optional.<br />
=== Default values ===<br />
The default values for the APIndex and base address are usually autodetected by J-Link/J-Trace. So only change these values if the autodetection fails or is incorrect.<br />
The default unlock value is 0 (no unlock) for Cortex-A/R cores and 1 (always unlock) for Cortex-M.<br />
=== Syntax ===<br />
<tt>CORESIGHT_SetTPIUBaseAddr = <Addr> [ForceUnlock = <ForceUnlock>] [APIndex = <APIndex>]</tt><br />
=== Example ===<br />
CORESIGHT_SetTPIUBaseAddr = 0xE0041000<br />
or<br />
CORESIGHT_SetTPIUBaseAddr = 0xE0041000 ForceUnlock = 1 APIndex = 2<br />
<br />
== CORESIGHT_SetTFEnableMask ==<br />
This command can be used to set the Coresight CSTF mask.<br />
=== Default values ===<br />
See Device documentation<br />
=== Syntax ===<br />
<tt>CORESIGHT_SetTFEnableMask = <Mask></tt><br />
=== Example ===<br />
CORESIGHT_SetTFEnableMask = 0x12345678<br />
<br />
== device ==<br />
This command selects the target device.<br />
=== Syntax ===<br />
<tt>device = <DeviceID></tt><br><br />
DeviceID has to be a valid device identifier.<br />
For a list of all available device identifiers, please refer to the [https://www.segger.com/products/debug-probes/j-link/technology/cpus-and-devices/overview-of-supported-cpus-and-devices/#DeviceList SEGGER homepage].<br />
=== Example ===<br />
device = AT91SAM7S256<br />
<br />
== DisableAutoUpdateFW ==<br />
This command is used to disable the automatic firmware update if a new firmware is available.<br />
=== Syntax ===<br />
<tt>DisableAutoUpdateFW</tt><br />
<br />
== DisableCortexMXPSRAutoCorrectTBit ==<br />
Usually, the J-Link DLL auto-corrects the T-bit of the XPSR register to 1, for Cortex-M devices.<br />
This is because having it set as 0 is an invalid state and would cause several problems during debugging,<br />
especially on devices where the erased state of the flash is 0x00 and therefore on empty devices the T-bit in the XPSR would be 0.<br />
Anyhow, if for some reason explicit disable of this auto-correction is necessary, this can be achieved via the following J-Link Command String.<br />
=== Syntax ===<br />
<tt>DisableCortexMXPSRAutoCorrectTBit</tt><br />
<br />
== DisableFlashBPs ==<br />
This command disables the FlashBP feature.<br />
=== Syntax ===<br />
<tt>DisableFlashBPs</tt><br />
<br />
== DisableFlashDL ==<br />
This command disables the J-Link FlashDL feature.<br />
=== Syntax ===<br />
<tt>DisableFlashDL</tt><br />
<br />
== DisableInfoWinFlashBPs ==<br />
This command is used to disable the flash download window for the flash breakpoint feature.<br />
Enabled by default.<br />
=== Syntax ===<br />
<tt>DisableInfoWinFlashBPs</tt><br />
<br />
== DisableInfoWinFlashDL ==<br />
This command is used to disable the flash download information window for the flash download feature.<br />
Enabled by default.<br />
=== Syntax ===<br />
<tt>DisableInfoWinFlashDL</tt><br />
<br />
== DisableLowPowerHandlingMode ==<br />
This command is used to disable low-power handling mode.<br />
For further information, please refer to [[UM08001_J-Link_/_J-Trace_User_Guide#Low_Power_Debugging | Low power debugging]].<br><br />
Disabled by default.<br />
=== Syntax ===<br />
<tt>DisableLowPowerHandlingMode</tt><br />
<br />
== DisableLTRACEAnalysis ==<br />
This command is used to disable the LTRACE analyzer on your host system when streaming trace is used. <br />
It can be used in cases where e.g. only the RAWTRACE data should be saved to a file or when the host system is to slow to keep up with the trace stream so at least<br />
the "Backtrace" information can be displayed.<br />
=== Syntax ===<br />
<tt>DisableLTRACEAnalysis = 1</tt><br />
<br />
== DisableMOEHandling ==<br />
The J-Link DLL outputs additional information about mode of entry (MOE) in case the target CPU halted / entered debug mode.<br />
Disabled by default.<br />
=== Syntax ===<br />
<tt>DisableMOEHandling</tt><br />
<br />
== DisablePowerSupplyOnClose ==<br />
This command is used to ensure that the power supply for the target will be disabled on close.<br />
=== Syntax ===<br />
<tt>DisablePowerSupplyOnClose</tt><br />
<br />
== EnableAutoUpdateFW ==<br />
This command is used to enable the automatic firmware update if a new firmware is available.<br />
=== Syntax ===<br />
<tt>EnableAutoUpdateFW</tt><br />
<br />
== EnableEraseAllFlashBanks ==<br />
Used to enable erasing of other flash banks than the internal, like (Q)SPI flash or CFI flash.<br />
=== Syntax ===<br />
<tt>EnableEraseAllFlashBanks</tt><br />
<br />
== EnableFlashBPs ==<br />
This command enables the FlashBP feature.<br />
=== Syntax ===<br />
<tt>EnableFlashBPs</tt><br />
<br />
== EnableFlashDL ==<br />
<!--- ?? explain what it is? ---><br />
This command enables the J-Link ARM FlashDL feature.<br />
=== Syntax ===<br />
<tt>EnableFlashDL</tt><br />
<br />
== EnableInfoWinFlashBPs ==<br />
This command is used to enable the flash download window for the flash breakpoint feature.<br />
Enabled by default.<br />
=== Syntax ===<br />
<tt>EnableInfoWinFlashBPs</tt><br />
<br />
== EnableInfoWinFlashDL ==<br />
This command is used to enable the flash download information window for the flash download feature, which is enabled by default.<br />
=== Syntax ===<br />
<tt>EnableInfoWinFlashDL</tt><br />
<br />
== EnableLowPowerHandlingMode ==<br />
Puts the DLL in low-power handling mode.<br />
For further information, please refer to [[UM08001_J-Link_/_J-Trace_User_Guide#Low_Power_Debugging | Low power debugging]].<br><br />
Disabled by default.<br />
=== Syntax ===<br />
<tt>EnableLowPowerHandlingMode</tt><br />
<br />
== EnableMOEHandling ==<br />
The J-Link DLL outputs additional information about mode of entry (MOE) in case the target CPU halted / entered debug mode.<br />
Disabled by default.<br />
=== Syntax ===<br />
<tt>EnableMOEHandling</tt><br />
<br />
== EnableRemarks ==<br />
The J-Link DLL provides more detailed output during CPU-detection / connection process.<br />
Kind of "verbose" option.<br />
Disabled by default, therefore only an enable option.<br />
Will be reset to "disabled" on each call to JLINK_Open() (reconnect to J-Link).<br />
=== Syntax ===<br />
<tt>EnableRemarks</tt><br />
<br />
== ExcludeFlashCacheRange ==<br />
This command is used to invalidate flash ranges in flash cache, that are configured to be excluded from the cache.<br />
Per default, all areas that J-Link knows to be Flash memory, are cached.<br />
This means that it is assumed that the contents of this area do not change during program execution.<br />
If this assumption does not hold true, typically because the target program modifies the flash content for data storage, then the affected area should be excluded.<br />
This will slightly reduce the debugging speed.<br />
=== Syntax ===<br />
<tt>ExcludeFlashCacheRange <Range></tt><br />
=== Example ===<br />
ExcludeFlashCacheRange 0x10000000-0x100FFFFF<br />
<br />
== selection ==<br />
This command can be used to suppress the device selection dialog.<br />
If enabled, the device selection dialog will not be shown in case an unknown device is selected.<br />
=== Syntax ===<br />
<tt>HideDeviceSelection = 0 | 1</tt><br />
=== Example ===<br />
HideDeviceSelection 1 // Device selection will not show up<br />
<br />
== HSSLogFile ==<br />
This command enables HSS-Logging.<br />
Separate to the application using HSS, all HSS Data will be stored in the specified file.<br />
=== Syntax ===<br />
<tt>HSSLogFile = <Path></tt><br />
=== Example ===<br />
HSSLogFile = C:\Test.log<br />
<br />
== InvalidateCache ==<br />
This command is used to invalidate cache.<br />
=== Syntax ===<br />
<tt>InvalidateCache</tt><br />
<br />
== InvalidateFW ==<br />
This command is used to invalidate the current firmware of the J-Link / J-Trace.<br />
Invalidating the firmware will force a firmware update.<br />
Can be used for downdating.<br />
For more information please refer to [[UM08001_J-Link_/_J-Trace_User_Guide#J-Link_/_J-Trace_firmware | J-Link / J-Trace firmware]]<br />
=== Syntax ===<br />
<tt>InvalidateFW</tt><br />
<br />
<br />
== JLinkDevicesXMLPath==<br />
This command is used to specify a JLinkDevicesXML folder path that is different from the [[J-Link_Device_Support_Kit#JLinkDevices_folder | default folder]].<br />
<br />
=== Syntax ===<br />
<tt>JLinkDevicesXMLPath = C:\Temp\</tt><br />
<br />
== map exclude ==<br />
This command excludes a specified memory region from all memory accesses.<br />
All subsequent memory accesses to this memory region are ignored.<br />
=== Memory mapping ===<br />
Some devices do not allow access of the entire 4GiB memory area.<br />
Ideally, the entire memory can be accessed; if a memory access fails, the CPU reports this by switching to abort mode.<br />
The CPU memory interface allows halting the CPU via a WAIT signal.<br />
On some devices, the WAIT signal stays active when accessing certain unused memory areas.<br />
This halts the CPU indefinitely (until RESET) and will therefore end the debug session.<br />
This is exactly what happens when accessing critical memory areas.<br />
Critical memory areas should not be present in a device; they are typically a hardware design problem.<br />
Nevertheless, critical memory areas exist on some devices.<br><br />
To avoid stalling the debug session, a critical memory area can be excluded from access: J-Link will not try to read or write to critical memory areas and instead ignore the access silently.<br />
Some debuggers (such as IAR C-SPY) can try to access memory in such areas by dereferencing non-initialized pointers even if the debugged program (the debuggee) is working perfectly.<br />
In situations like this, defining critical memory areas is a good solution.<br />
=== Syntax ===<br />
<tt>map exclude <SAddr>-<EAddr></tt><br />
=== Example ===<br />
This is an example for the map exclude command in combination with an NXP LPC2148 MCU.<br />
<br />
Memory map:<br />
{| class="wikitable"<br />
|-<br />
! Range !! Description<br />
|-<br />
| 0x00000000-0x0007FFFF || On-chip flash memory<br />
|-<br />
| 0x00080000-0x3FFFFFFF || Reserved<br />
|-<br />
| 0x40000000-0x40007FFF || On-chip SRAM<br />
|-<br />
| 0x40008000-0x7FCFFFFF || Reserved<br />
|-<br />
| 0x7FD00000-0x7FD01FFF || On-chip USB DMA RAM<br />
|-<br />
| 0x7FD02000-0x7FD02000 || Reserved<br />
|-<br />
| 0x7FFFD000-0x7FFFFFFF || Boot block (remapped from on-chip flash memory)<br />
|-<br />
| 0x80000000-0xDFFFFFFF || Reserved<br />
|-<br />
| 0xE0000000-0xEFFFFFFF || VPB peripherals<br />
|-<br />
| 0xF0000000-0xFFFFFFFF || AHB peripherals<br />
|-<br />
|}<br />
<br />
The "problematic" memory areas are:<br />
{| class="wikitable"<br />
|-<br />
! Range !! Description<br />
|-<br />
| 0x00080000-0x3FFFFFFF || Reserved<br />
|-<br />
| 0x40008000-0x7FCFFFFF || Reserved<br />
|-<br />
| 0x7FD02000-0x7FD02000 || Reserved<br />
|-<br />
| 0x80000000-0xDFFFFFFF || Reserved<br />
|-<br />
|}<br />
<br />
<br />
To exclude these areas from being accessed through J-Link the map exclude command should be used as follows:<br />
map exclude 0x00080000-0x3FFFFFFF<br />
map exclude 0x40008000-0x7FCFFFFF<br />
map exclude 0x7FD02000-0x7FD02000<br />
map exclude 0x80000000-0xDFFFFFFF<br />
<br />
== map illegal ==<br />
This command marks a specified memory region as an illegal memory area.<br />
All subsequent memory accesses to this memory region produces a warning message and the memory access is ignored.<br />
This command can be used to mark more than one memory region as an illegal area by subsequent calls.<br />
=== Syntax ===<br />
<tt>map illegal <SAddr>-<EAddr></tt><br />
=== Example ===<br />
map illegal 0xF0000000-0xFFDFFFFF<br />
=== Additional information ===<br />
* SAddr has to be a 256-byte aligned address.<br />
The region size has to be a multiple of 256 bytes.<br />
<br />
== map indirectread ==<br />
<!--- still up-to-date? ---><br />
This command can be used to read a memory area indirectly.<br />
Indirect reading means that a small code snippet is downloaded into RAM of the target device, which reads and transfers the data of the specified memory area to the host.<br />
Before map indirectread can be called a RAM area for the indirect read code snippet has to be defined.<br />
Use therefor the map ram command and define a RAM area with a size of >= 256 byte.<br />
=== Syntax ===<br />
<tt>map indirectread <StartAddressOfArea>-<EndAddress></tt><br />
=== Example ===<br />
map indirectread 0x3fffc000-0x3fffcfff<br />
=== Additional information ===<br />
* StartAddressOfArea has to be a 256-byte aligned address.<br />
The region size has to be a multiple of 256 bytes.<br />
<br />
== map ram ==<br />
This command should be used to define an area in RAM of the target device.<br />
The area must be 256-byte aligned.<br />
The data which was located in the defined area will not be corrupted.<br />
Data which resides in the defined RAM area is saved and will be restored if necessary.<br />
This command has to be executed before map indirectread will be called.<br />
=== Syntax ===<br />
<tt>map ram <StartAddressOfArea>-<EndAddressOfArea></tt><br />
=== Example ===<br />
map ram 0x40000000-0x40003fff;<br />
=== Additional information ===<br />
* StartAddressOfArea has to be a 256-byte aligned address.<br />
The region size has to be a multiple of 256 bytes.<br />
<br />
== map region ==<br />
<!--- Add use case example? ---><br />
This command is used to specify memory areas with various region types.<br />
=== Syntax ===<br />
<tt>map region <StartAddressOfArea>-<EndAddressOfArea> <RegionType></tt><br><br />
In case of using alias region type:<br><br />
<tt>map region <StartAddressOfArea>-<EndAddressOfArea> <RegionType> <StartAliasedAddress> <AliasedAreaSize></tt><br />
<br />
{| class="wikitable"<br />
|-<br />
! Region type !! Description<br />
|-<br />
| N || Normal<br />
|-<br />
| C || Cacheable<br />
|-<br />
| X || Excluded<br />
|-<br />
| XI || Excluded & Illegal<br />
|-<br />
| I || Indirect access<br />
|-<br />
| A || Alias (static, e.g. RAM/flash that is aliased multiple times in one area. Does not change during the debug session.)<br />
|-<br />
| AD || Alias (dynamic, e.g. memory areas where different memories can be mapped to.)<br />
|-<br />
|}<br />
=== Example ===<br />
map region 0x100000-0x1FFFFF C<br><br />
map region 0x0-0x1ffff A 0x08000000 0x20000<br />
<br />
== map reset ==<br />
This command restores the default memory mapping, which means all memory accesses are permitted.<br />
=== Typical applications ===<br />
Used with other "map" commands to return to the default values.<br />
The map reset command should be called before any other "map" command is called.<br />
=== Syntax ===<br />
<tt>map reset</tt><br />
=== Example ===<br />
map reset<br />
<br />
== MemPreserveOnReset ==<br />
This command is used to add a memory preserve area to the internal list of memory areas that need to be preserved before reset and need to be restored after reset.<br><br />
The memory area specified must be readable by the CPU before reset and must be writeable by the CPU immediately after reset.<br><br />
This is mainly used for SRAM debug configurations etc.<br />
{{Note|Required software version: V6.32 or later}}<br />
=== Syntax ===<br />
<tt>MemPreserveOnReset <Addr> <Size>[ <Addr> <Size> ...]</tt><br />
=== Example ===<br />
MemPreserveOnReset 0x20000000 0x1000<br />
<br />
== ProjectFile ==<br />
This command is used to specify a file used by the J-Link DLL to save the current configuration.<br><br />
Using this command is recommended if settings need to be saved.<br />
<!--- more? crossreference to where all settings are described? ---><br />
This is typically the case if Flash breakpoints are enabled and used.<br />
It is recommended that an IDE uses this command to allow the JLinkARM.dll to store its settings in the same directory as the project and settings file of the IDE.<br />
The recommended extension for project files is *.jlink.<br><br />
Assuming the Project is saved under C:\Work\Work and the project contains to targets name Debug and Release, the debug version could set the file name<br><br />
<tt>C:\Work\Work\Debug.jlink</tt>.<br><br />
The release version could use <br><br />
<tt>C:\Work\Work\Release.jlink</tt>.<br />
{{Note|Spaces in the filename are permitted.}}<br />
=== Syntax ===<br />
<tt>ProjectFile = <FullFileName></tt><br />
=== Example ===<br />
ProjectFile = C:\Work\Release.jlink<br />
<br />
== ReadIntoTraceCache ==<br />
This command is used to read a given memory area into the trace instruction cache.<br />
It is mainly used for cases where the download address of the application differs from the execution address.<br />
As for trace analysis only cached memory contents are used as memory accesses during trace (especially streaming trace) cause an overhead that is too big, by default trace will only work if execution address is identical to the download address.<br />
For other cases, this command can be used to read specific memory areas into the trace instruction cache.<br />
{{Note|This command causes an immediate read from the target, so it should only be called at a point where memory contents at the given area are known to be valid.}}<br />
=== Syntax ===<br />
<tt>ReadIntoTraceCache <Addr> <NumBytes></tt><br />
=== Example ===<br />
ReadIntoTraceCache 0x08000000 0x2000<br />
<br />
== RISCV_SetTEBaseAddr==<br />
This command is used to set the trace encoder(TE) base address for RISC-V devices. Without setting this case address neither buffer nor pint race will work.<br />
=== Syntax ===<br />
<tt>RISCV_SetTEBaseAddr= <Addr></tt><br />
=== Example ===<br />
RISCV_SetTEBaseAddr= 0x10000000<br />
<br />
== RISCV_SetPIBRefCenter==<br />
Enables / Disables RISCV_SetPIBRefCenter. This defines how the trace signals on SiFive Nexus trace are output.</br><br />
If RISCV_SetPIBRefCenter = 0 then trace data and trace clock are output at the same time, so the trace probe needs to have a sampling delay.</br><br />
If RISCV_SetPIBRefCenter = 1 then trace data is 90° phase shifted to the trace clock ensuring easier sampling, but the trace clock speed is also halved.<br />
=== Syntax ===<br />
<tt> RISCV_SetPIBRefCenter = <OnOff></tt><br />
=== Example ===<br />
RISCV_SetPIBRefCenter = 1</br><br />
RISCV_SetPIBRefCenter = 0<br />
<br />
== RTTTelnetAllowNonLocalClient ==<br />
This command is used to set allowance for non local telnet clients to access RTT data.<br />
Per default this value is 0 and only local connections are accepted.<br />
It can be set to 1 to enable non local connections as well.<br />
{{Note|This command is allowed to be used before JLINKARM_Open() was called. This can be achieved using J-Link SDK. For more information visit our website.}}<br />
=== Syntax ===<br />
<tt>RTTTelnetAllowNonLocalClient = 0 | 1</tt><br />
=== Example ===<br />
RTTTelnetAllowNonLocalClient = 1 // enables non local clients<br />
<br />
== ScriptFile ==<br />
This command is used to set the path to a J-Link script file which shall be executed.<br />
J-Link scriptfiles are mainly used to connect to targets which need a special connection sequence before communication with the core is possible.<br />
=== Syntax ===<br />
<tt>ScriptFile = <FullFileName></tt><br />
=== Example ===<br />
ScriptFile = C:\Work\Default.JLinkScript<br />
<br />
== SelectTraceSource ==<br />
This command selects the trace source which shall be used for tracing.<br />
{{Note|This is only relevant when tracing on a target that supports trace via pins as well as trace via on-chip trace buffer and a J-Trace (which supports both) is connected to the PC.}}<br />
=== Syntax ===<br />
<tt>SelectTraceSource = <SourceNumber></tt><br />
<br />
{| class="wikitable"<br />
|-<br />
! Trace source number !! Description<br />
|-<br />
| 0 || ETB<br />
|-<br />
| 1 || ETM<br />
|-<br />
| 2 || MTB<br />
|-<br />
|}<br />
=== Example ===<br />
SelectTraceSource = 0 // Select ETB<br />
<br />
== SetAllowStopMode ==<br />
This command is used to allow / disallow stop mode for RTT and memory accesses.<br />
Enabled by default, should only be disabled for testing purposes.<br />
For more information about different RTT and memory access modes, please refer to:<br />
* [[RTT#Modes | RTT modes]]<br />
* [[Memory_accesses#Modes Memory access modes]]<br />
=== Syntax ===<br />
<tt>SetAllowStopMode = 0 | 1</tt><br />
=== Example ===<br />
SetAllowStopMode = 0 // Disable usage of stop mode<br />
<br />
== SetAllowFlashCache ==<br />
This command is used to enable / disable caching of flash contents.<br />
Enabled by default.<br />
=== Syntax ===<br />
<tt>SetAllowFlashCache = 0 | 1</tt><br />
=== Example ===<br />
SetAllowFlashCache = 1 // Enables flash cache<br />
<br />
== SetHostIF ==<br />
This command can be used to override the host interface.<br />
This function should be used used thoughtful and only if you know exactly what you are doing as there are many things which needs to be taken into account.<br />
For further information regarding this please refer to [[J-Link_script_files#InitEmu() | InitEmu()]]<br />
=== Syntax ===<br />
SetHostIF USB = <SerialNumber><br />
SetHostIF IP = <IP address><br />
=== Example ===<br />
SetHostIF USB = 123456 // Connect to J-Link via USB (SN 123456)<br />
SetHostIF IP = 192.168.0.133 // Connect to J-link with specified IP addr.<br />
<br />
== SetAllowSimulation ==<br />
This command can be used to enable or disable the instruction set simulation.<br />
By default the instruction set simulation is enabled.<br />
=== Syntax ===<br />
<tt>SetAllowSimulation = 0 | 1</tt><br />
=== Example ===<br />
SetAllowSimulation 1 // Enables instruction set simulation<br />
<br />
== SetBatchMode ==<br />
This command is used to tell the J-Link DLL that it is used in batch-mode / automatized mode, so some dialogs etc. will automatically close after a given timeout.<br />
Disabled by default.<br />
=== Syntax ===<br />
<tt>SetBatchMode = 0 | 1</tt><br />
=== Example ===<br />
SetBatchMode 1 // Enables batch mode <br />
<br />
== SetCFIFlash ==<br />
This command can be used to set a memory area for CFI compliant flashes.<br />
=== Default values ===<br />
*NumChips: 1<br />
*NumBits: 16<br />
=== Syntax ===<br />
<tt>SetCFIFlash <StartAddressOfArea>-<EndAddressOfArea>[, <NumChips>, <NumBits>]</tt><br />
=== Example ===<br />
SetCFIFlash 0x10000000-0x100FFFFF<br />
or<br />
SetCFIFlash 0x10000000-0x100FFFFF, 1, 16<br />
<br />
== SetCheckModeAfterRead ==<br />
This command is used to enable or disable the verification of the CPSR (current processor status register) after each read operation.<br />
By default this check is enabled.<br />
However this can cause problems with some CPUs (e.g. if invalid CPSR values are returned).<br />
Please note that if this check is turned off (SetCheckModeAfterRead = 0), the success of read operations cannot be verified anymore and possible data aborts are not recognized.<br />
=== Typical applications ===<br />
This verification of the CPSR can cause problems with some CPUs (e.g. if invalid CPSR values are returned).<br />
Note that if this check is turned off (SetCheckModeAfterRead = 0), the success of read operations cannot be verified anymore and possible data aborts are not recognized.<br />
=== Syntax ===<br />
<tt>SetCheckModeAfterRead = 0 | 1</tt><br />
=== Example ===<br />
SetCheckModeAfterRead = 0 <br />
<br />
== SetCompareMode ==<br />
This command is used to configure the compare mode.<br />
=== Syntax ===<br />
<tt>SetCompareMode = <Mode></tt><br />
<br />
{| class="wikitable"<br />
|-<br />
! <Mode> !! Description<br />
|-<br />
| 0 || Skip<br />
|-<br />
| 1 || Using fastest method (default)<br />
|-<br />
| 2 || Using CRC<br />
|-<br />
| 3 || Using readback<br />
|-<br />
|}<br />
=== Example ===<br />
SetCompareMode = 1 // Select using fastest method<br />
<br />
== SetCPUConnectIDCODE ==<br />
Used to specify an IDCODE that is used by J-Link to authenticate itself when connecting to a specific device.<br />
Some devices allow the user to lock out a debugger by default, until a specific unlock code is provided that allows further debugging.<br />
This function allows to automate this process, if J-Link is used in a production environment.<br><br />
The IDCODE stream is expected as a hex-encoded byte stream.<br />
If the CPU e.g. works on a word-basis for the IDCODE, this stream is interpreted as a little endian formatted stream where the J-Link library then loads the words from and passes them to the device during connect.<br />
=== Syntax ===<br />
<tt>SetCPUConnectIDCODE = <IDCODE_Stream></tt><br />
=== Example ===<br />
Example authentication key:<br />
*AuthenticationKey0: 0x01234567<br />
*AuthenticationKey1: 0x89ABCDEF<br />
*AuthenticationKey2: 0x00224466<br />
*AuthenticationKey3: 0x88AABBCC<br />
Command string:<br />
exec SetCPUConnectIDCODE 67452301EFCDAB8966442200CCBBAA88<br />
<br />
== SetDbgPowerDownOnClose ==<br />
When using this command, the debug unit of the target CPU is powered-down when the debug session is closed.<br />
{{Note|This command works only for Cortex-M devices.}}<br />
=== Typical applications ===<br />
This feature is useful to reduce the power consumption of the CPU when no debug session is active.<br />
=== Syntax ===<br />
<tt>SetDbgPowerDownOnClose = <value></tt><br />
=== Example ===<br />
SetDbgPowerDownOnClose = 1 // Enables debug power-down on close.<br />
SetDbgPowerDownOnClose = 0 // Disables debug power-down on close.<br />
<br />
== SetEnableMemCache ==<br />
Enables/Disables DLL internal memory cache mechanisms that are used to improve performance.<br />
By default, memory cache mechanisms are enabled.<br />
=== Syntax ===<br />
<tt>SetEnableMemCache = 0 | 1</tt><br />
=== Example ===<br />
SetEnableMemCache = 0 // Disable memory caching mechanisms<br />
=== Notes ===<br />
This command may not be used by any IDE, listed as a supported IDE, to disable memory cache mechanisms by default.<br />
It may only be used by specific customers for very specific test cases that needs the cache mechanisms to be disabled.<br />
== SetETBIsPresent ==<br />
This command is used to select if the connected device has an ETB.<br />
=== Syntax ===<br />
<tt>SetETBIsPresent = 0 | 1</tt><br />
=== Example ===<br />
SetETBIsPresent = 1 // ETB is available<br />
SetETBIsPresent = 0 // ETB is not available<br />
<br />
== SetETMIsPresent ==<br />
This command is used to select if the connected device has an ETM.<br />
=== Syntax ===<br />
<tt>SetETMIsPresent = 0 | 1</tt><br />
=== Example ===<br />
SetETMIsPresent = 1 // ETM is available<br />
SetETMIsPresent = 0 // ETM is not available<br />
<br />
== SetFlashDLNoRMWThreshold ==<br />
This command sets the J-Link DLL internal threshold when a write to flash memory does not cause a read-modify-write (RMW) operation. For example, when setting this value to 0x800, all writes of amounts of data < 2 KiB will cause the DLL to perform a read-modify-write operation on incomplete sectors.<br><br />
Default: Writing amounts of < 1 KiB (0x400) to flash causes J-Link to perform a read-modify-write on the flash.<br><br />
=== Syntax ===<br />
<tt>SetFlashDLNoRMWThreshold = <value></tt><br />
=== Example ===<br />
<tt>SetFlashDLNoRMWThreshold = 0x100 // 256 Bytes</tt><br><br />
For detailed examples, see [[Read-Modify-Write_Flash | here]].<br />
<br />
== SetFlashDLThreshold ==<br />
This command is used to set a minimum amount of data to be downloaded by the flash download feature.<br />
=== Syntax ===<br />
<tt>SetFlashDLThreshold = <value></tt><br />
=== Example ===<br />
SetFlashDLThreshold = 0x100 // 256 Bytes<br />
<br />
== SetIgnoreReadMemErrors ==<br />
This command can be used to ignore read memory errors.<br />
Disabled by default.<br />
=== Syntax ===<br />
<tt>SetIgnoreReadMemErrors = 0 | 1</tt><br />
=== Example ===<br />
SetIgnoreReadMemErrors = 1 // Read memory errors will be ignored<br />
SetIgnoreReadMemErrors = 0 // Read memory errors will be reported<br />
<br />
== SetIgnoreWriteMemErrors ==<br />
This command can be used to ignore read memory errors.<br />
Disabled by default.<br />
=== Syntax ===<br />
<tt>SetIgnoreWriteMemErrors = 0 | 1</tt><br />
=== Example ===<br />
SetIgnoreWriteMemErrors = 1 // Write memory errors will be ignored<br />
SetIgnoreWriteMemErrors = 0 // Write memory errors will be reported<br />
<br />
== SetInitWorkRAMOnConnect ==<br />
Used to indicate that it is necessary to initialize the work RAM on connect.<br />
This is important for devices that provide ECC RAM we use as work RAM and this RAM cannot be read without being written first.<br />
=== Syntax ===<br />
<tt>SetInitWorkRAMOnConnect = 0 | 1</tt><br />
=== Example ===<br />
SetInitWorkRAMOnConnect = 1 // Work RAM will be initialized on connect<br />
SetInitWorkRAMOnConnect = 0 // Work RAM will NOT be initialized on connect (default).<br />
See: [[J-Link_script_files#Init_ECC_work_RAM | J-Link Script file samples]]<br />
<br />
== SetMonModeDebug ==<br />
This command is used to enable / disable monitor mode debugging.<br />
Disabled by default.<br />
=== Syntax ===<br />
<tt>SetMonModeDebug = 0 | 1</tt><br />
=== Example ===<br />
SetMonModeDebug = 1 // Monitor mode debugging is enabled<br />
SetMonModeDebug = 0 // Monitor mode debugging is disabled<br />
<br />
== TraceFile ==<br />
Can be used to set the path for the trace file to capture RAWTrace data. RAWTrace data<br />
is the unfiltered, unanalyzed and raw trace data that is streamed from the target device<br />
via the J-Trace PRO to the host PC.<br />
{{Note| To be able to analyze the streamed RAW data it is necessary to know how the trace Arm Coresight components are initialized. <br />
It is user responsibility to acquire this data from the target device. For more information see the corresponding Arm documentation.}}<br />
<br />
The RAW trace data will be saved in 2 GiB chunks/files. Once 2 GiB are saved into a<br />
file a new file will be opened and the file name incremented. Make sure that the trace<br />
file feature is used only for a reasonable amount of time. Transfer rates can be up to<br />
150 MiB/s. <br />
<br />
Make sure you have enough disc space for your planned recording before<br />
starting it. For the same reason the usage of an SSD is recommended. Most HDDs will<br />
not have fast enough write speeds to cope with the incoming trace data.<br />
<br />
=== Syntax ===<br />
<tt>TraceFile = <TraceFilePath></tt><br />
=== Example ===<br />
TraceFile = C:\Temp\TraceFile.bin<br />
<br />
== TraceSampleAdjust ==<br />
Allows to adjust the sample point for the specified trace data signals inside the J-Trace firmware.<br />
This can be useful to compensate certain delays on the target hardware (e.g. caused by routing etc.).<br />
=== Syntax ===<br />
<tt>TraceSampleAdjust <PinName> = <Adjust_Ps>[ <PinName>=<Adjust_Ps> ...]</tt><br />
<!--- Adjust trace data... pin? signal?X? ---><br />
{| class="wikitable"<br />
|-<br />
! <PinName> !! Description<br />
|-<br />
| TD || Adjust all trace data signals<br />
|-<br />
| TD0 || Adjust trace data 0<br />
|-<br />
| TD1 || Adjust trace data 1<br />
|-<br />
| TD2 || Adjust trace data 2<br />
|-<br />
| TD3 || Adjust trace data 3<br />
|-<br />
| TD3..0 || Adjust trace data 0-3<br />
|-<br />
| TD2..1 || Adjust trace data 1-2<br />
|-<br />
| TDx..y || Adjust trace data x-y<br />
|-<br />
|}<br />
<br />
{| class="wikitable"<br />
|-<br />
! <Adjust_Ps> !! Description<br />
|-<br />
| -5000 to 5000 || Adjustment in [ps]<br />
|-<br />
|}<br />
=== Example ===<br />
TraceSampleAdjust TD = 1000<br />
<br />
== SetResetPulseLen ==<br />
This command defines the length of the RESET pulse in milliseconds.<br />
The default for the RESET pulse length is 20 milliseconds.<br />
=== Syntax ===<br />
<tt>SetResetPulseLen = <value></tt><br />
=== Example ===<br />
SetResetPulseLen = 50<br />
<br />
== SetResetType ==<br />
This command selects the reset strategy which shall be used by J-Link, to reset the device.<br />
The value which is used for this command is analog to the reset type which shall be selected.<br />
For a list of all reset types which are available, please refer to [[UM08001_J-Link_/_J-Trace_User_Guide#Reset_strategies | Reset strategies]].<br />
Please note that there different reset strategies for ARM 7/9 and Cortex-M devices.<br />
=== Syntax ===<br />
<tt>SetResetType = <value></tt><br />
=== Example ===<br />
SetResetType = 0 // Selects reset strategy type 0: normal<br />
<br />
== SetRestartOnClose ==<br />
This command specifies whether the J-Link restarts target execution on close.<br />
The default is to restart target execution.<br />
This can be disabled by using this command.<br />
=== Syntax ===<br />
<tt>SetRestartOnClose = 0 | 1</tt><br />
=== Example ===<br />
SetRestartOnClose = 1<br />
<br />
== SetRTTAddr ==<br />
In some cases J-Link cannot locate the RTT buffer in known RAM.<br />
This command is used to set the exact address manually.<br />
=== Syntax ===<br />
<tt>SetRTTAddr <RangeStart></tt><br />
=== Example ===<br />
SetRTTAddr 0x20000000<br />
<br />
== SetRTTTelnetPort ==<br />
This command alters the RTT telnet port.<br />
Default is 19021.<br />
This command must be called before a connection to a J-Link is established.<br />
In J-Link Commander, J-Link Command Strings ("exec <JLinkCommandString>") can only be executed after a connection to J-Link is established, therefore this command string has no effect in J-Link Commander.<br />
The [[J-Link_Commander#-RTTTelnetPort | -RTTTelnetPort]] command line parameter can be used instead.<br />
=== Syntax ===<br />
<tt>SetRTTTelnetPort <value></tt><br />
=== Example ===<br />
SetRTTTelnetPort 9100<br />
<br />
== SetRTTSearchRanges ==<br />
In some cases J-Link cannot locate the RTT buffer in known RAM.<br />
This command is used to set (multiple) ranges to be searched for the RTT buffer.<br />
=== Syntax ===<br />
<tt>SetRTTSearchRanges <RangeAddr> <RangeSize> [, <RangeAddr1> <RangeSize1>, ..]</tt><br />
=== Example ===<br />
SetRTTSearchRanges 0x10000000 0x1000, 0x20000000 0x1000,<br />
<br />
== SetRXIDCode ==<br />
This command is used to set the ID Code for Renesas RX devices to be used by the J-Link DLL.<br />
=== Syntax ===<br />
<tt>SetRXIDCode = <RXIDCode_String></tt><br />
=== Example ===<br />
Set 16 IDCode Bytes (32 Characters).<br><br />
<tt>SetRXIDCode = 112233445566778899AABBCCDDEEFF00</tt><br />
<br />
== SetSkipDebugDeInit ==<br />
This command may be used to skip the debug de-init J-Link usually performs on debug session close.<br />
<br />
By default, J-Link clears all debug bits on debug session close to make sure that low power modes on the target chip work as expected and the chip does not draw unnecessarily much power.<br />
When using this command, the debug unit of the target CPU is powered-down when the debug session is closed.<br />
<br />
Under certain circumstances debug de-init may not be desried. For example: [[J-Link_Cortex-M_application_uses_cycle_counter | Cortex-M - Application uses cycle counter]]<br />
{{Note|1=By setting this option to 1, the target chip may draw more power than usual, when it enters low power modes.}}<br />
=== Syntax ===<br />
<tt>SetSkipDebugDeInit = <value></tt><br />
=== Example ===<br />
<source lang="c"><br />
SetSkipDebugDeInit = 1 // Skips debug de-init on disconnect / debug session close.<br />
</source><br />
<br />
== SetSkipProgOnCRCMatch ==<br />
{{Note|Deprecated. Use [[#SetCompareMode | SetCompareMode]] instead.}}<br />
This command is used to configure the CRC match / compare mode.<br />
<br />
== SetSkipRestoreRAMCode ==<br />
This command is used to skip the restoring of the RAMCode.<br />
=== Syntax ===<br />
<tt>SetSkipRestoreRAMCode = 0 | 1</tt><br />
=== Example ===<br />
SetSkipRestoreRAMCode = 1<br />
<br />
== SetSysPowerDownOnIdle ==<br />
When using this command, the target CPU is powered-down when no transmission between J-Link and the target CPU was performed for a specific time.<br />
When the next command is given, the CPU is powered-up.<br />
<!--- m3 or Mx? ---><br />
{{Note|This command works only for Cortex-M3 devices.}}<br />
=== Typical applications ===<br />
This feature is useful to reduce the power consumption of the CPU.<br />
=== Syntax ===<br />
<tt>SetSysPowerDownOnIdle = <value></tt><br />
{{Note|A 0 for <value> disables the power-down on idle functionality.}}<br />
=== Example ===<br />
SetSysPowerDownOnIdle = 10; // The target CPU is powered-down when there is no<br />
// transmission between J-Link and target CPU for<br />
// at least 10ms<br />
<br />
== SetVerifyDownload ==<br />
This command is used to configure the verify mode.<br />
=== Syntax ===<br />
<tt>SetVerifyDownload = <VerifyMode></tt><br />
<br />
{| class="wikitable"<br />
|-<br />
! Compare mode !! Description<br />
|-<br />
| 0 || Skip<br />
|-<br />
| 1 || Programmed sectors, fastest method (default)<br />
|-<br />
| 2 || Programmed sectors using CRC<br />
|-<br />
| 3 || Programmed sectors using readback<br />
|-<br />
| 4 || All sectors using fastest method<br />
|-<br />
| 5 || All sectors using CRC<br />
|-<br />
| 6 || All sectors using read back<br />
|-<br />
| 7 || Programmed sectors using checksum<br />
|-<br />
| 8 || All sectors using checksum<br />
|-<br />
|}<br />
=== Example ===<br />
SetVerifyDownload = 1 // Select programmed sectors, fastest method<br />
<br />
== SetVerifyRAMDownload ==<br />
Enables verification of downloads into RAM.<br />
These are disabled by default because most IDEs verify them on their own by reading back the memory after writing it.<br />
As especially for large downloads into external DDR RAM a double verify would cost significant time, J-Link does not verify such downloads implicitly by default.<br />
=== Syntax ===<br />
SetVerifyRAMDownload = <value><br />
=== Example ===<br />
SetVerifyRAMDownload = 1<br />
<br />
== SetWorkRAM ==<br />
This command can be used to configure the RAM area which will be used by J-Link.<br />
=== Syntax ===<br />
<tt>SetWorkRAM <StartAddressOfArea>-<EndAddressOfArea></tt><br />
=== Example ===<br />
SetWorkRAM 0x10000000-0x100FFFFF<br />
<br />
== ShowControlPanel ==<br />
Executing this command opens the [[J-Link web control panel]].<br />
=== Syntax ===<br />
<tt>ShowControlPanel</tt><br />
<br />
== SilentUpdateFW ==<br />
After using this command, new firmware will be updated automatically without opening a message box.<br />
=== Syntax ===<br />
<tt>SilentUpdateFW</tt><br />
<br />
== SupplyPower ==<br />
This command activates power supply over pin 19 of the JTAG connector.<br />
=== Typical applications ===<br />
This feature is useful for some eval boards that can be powered over the JTAG connector.<br />
=== Syntax ===<br />
<tt>SupplyPower = 0 | 1</tt><br />
=== Example ===<br />
SupplyPower = 1<br />
<br />
== SupplyPowerDefault ==<br />
This command activates power supply over pin 19 of the JTAG connector permanently.<br />
=== Typical applications ===<br />
This feature is useful for some eval boards that can be powered over the JTAG connector.<br />
=== Syntax ===<br />
<tt>SupplyPowerDefault = 0 | 1</tt><br />
=== Example ===<br />
SupplyPowerDefault = 1<br />
<br />
== SuppressControlPanel ==<br />
Using this command ensures, that the control panel will not pop up automatically.<br />
=== Syntax ===<br />
<tt>SuppressControlPanel</tt><br />
<br />
== SuppressGUI ==<br />
Using this command ensures, that the J-Link software will not spawn any graphical user interfaces (i.e. message boxes, firmware update dialogs, etc.).<br />
This can be useful for headless environments or automated setups.<br><br />
IDEs, debuggers and similar applications should not use this command string for normal operation, as visual feedback is desired in that case.<br />
<br />
{{Note|1= *When suppressing GUI, error messages or similar that would be displayed to the user using a dialog may only be visible in the [[Enable_J-Link_log_file | J-Link log file]].<br />
*This command may be executed before a J-Link connection has been established. This can be achieved using J-Link SDK. For more information visit [https://www.segger.com/products/debug-probes/j-link/technology/j-link-sdk/ our website].}}<br />
<br />
=== Syntax ===<br />
<tt>SuppressGUI</tt><br />
<br />
== SuppressInfoUpdateFW ==<br />
After using this command information about available firmware updates will be suppressed.<br />
{{Note|We strongly recommend not to use this command, latest firmware versions should always be used!}}<br />
=== Syntax ===<br />
<tt>SuppressInfoUpdateFW</tt><br />
<br />
== SWOSetConversionMode ==<br />
This command is used to set the SWO conversion mode.<br />
=== Syntax ===<br />
<tt>SWOSetConversionMode = <ConversionMode></tt><br />
<br />
{| class="wikitable"<br />
|-<br />
! Conversion mode !! Description<br />
|-<br />
| 0 || If only '\n' is received, make it "\r\n" to make the line end Windows-compliant. (Default behavior)<br />
|-<br />
| 1 || Leave everything as it is, do not add any characters.<br />
|-<br />
|}<br />
=== Example ===<br />
SWOSetConversionMode = 0<br />
<br />
== SetVTrefTmp ==<br />
With this command you can set VTref temporarily to a fixed value between 1.2 and 5 V independent from the measured value. Due to the command is temporary the J-Link DLL will withdraw this temporary change on debug session end (Close()). <br />
In case of the temporary overwrite should be restored to the previous VTref mode (fixed or measured) earlier, this can be achieved by entering "0" <Voltage in mV>.<br />
=== Syntax ===<br />
<tt>SetVTrefTmp <Voltage in mV></tt><br />
<br />
= Using J-Link Command Strings =<br />
'''The recommend way to execute J-Link command strings is to add them to a [[J-Link_script_files | J-Link script file]]''' for repetitive use,<br />
e.g. on debug session start.<br />
<br />
If this however is not an option, there are other ways to execute a J-Link Command String:<br />
* [[J-Link Commander]]: Via the [[J-Link_Commander#exec | ''exec'']] command.<br />
* [[Ozone]]: By adding ''Exec.Command("<CommandString>");'' to the fitting function in the Ozone project file (''.jdebug'').<br />
** '''Note:''' In most cases, this should either be BeforeTargetConnect() or AfterTargetConnect(), depending on if the Command String requires a target connection or not.<br />
** For further information, please refer to the [https://www.segger.com/downloads/jlink/UM08025 Ozone User Manual (UM08025)]<br />
*[[Embedded Studio | SEGGER Embedded Studio]]: Project options -> Debug -> J-Link -> Additional J-Link Options</div>JanBhttps://wiki.segger.com/index.php?title=J-Flash_SPI&diff=14279J-Flash SPI2023-02-27T08:32:25Z<p>JanB: /* Command Line Interface */</p>
<hr />
<div>[[File:JFlashSPI_MainWindow.PNG | thumb | right | 600px | J-Flash SPI (GUI) main window]]<br />
This article describes J-Flash SPI and J-Flash SPI CL (separate software executables),<br />
which allow direct programming of SPI flashes, without any additional hardware.<br />
Both, J-Flash SPI and J-Flash SPI CL are part of the [[UM08001_J-Link_/_J-Trace_User_Guide#J-Link_Software_and_Documentation_Pack | J-Link Software and Documentation Pack]]<br />
available on the [https://www.segger.com/downloads/jlink#J-LinkSoftwareAndDocumentationPack SEGGER Homepage].<br />
<br />
J-Flash SPI and J-Flash SPI CL are available cross platform (Windows, Linux and macOS).<br />
<br />
<div class="toclimit-3"><br />
__TOC__<br />
</div><br />
<br />
'''Note''':<br><br />
This article assumes that you already possess working knowledge of the J-Link device.<br />
<br clear=all><br />
== Introduction ==<br />
In this section, J-Flash SPI and J-Flash SPI CL are introduced.<br />
=== What is J-Flash SPI? ===<br />
J-Flash SPI is a stand-alone flash programming software for PCs running Windows, Linux or macOS.<br />
It allows direct programming of SPI flashes, without any additional hardware.<br />
J-Flash SPI has an intuitive user interface and makes programming flash devices convenient.<br />
It requires a J-Link or Flasher to interface to the hardware.<br />
J-Flash SPI is able to program all kinds of SPI flashes,<br />
even if the CPU connected to them, is not supported by J-Link / Flasher.<br />
This is because J-Flash SPI communicates directly with the SPI flash, bypassing all other components of the hardware.<br />
<br />
=== J-Flash SPI CL (Windows, Linux, macOS) ===<br />
J-Flash SPI CL is a commandline-only version of the J-Flash SPI programming tool.<br />
Except from the missing GUI, J-Flash SPI CL is identical to the GUI version.<br />
The commands, used to configure / control J-Flash SPI CL, are exactly the same as for the command line interface of the J-Flash SPI GUI version.<br />
For further information, please refer to [[#Command Line Interface | Command Line Interface]].<br />
<br />
=== Features ===<br />
* Directly communicates with the SPI flash via SPI protocol, no MCU in between required.<br />
* Programming of all kinds of SPI flashes is supported<br />
** Please refer to the [https://www.segger.com/products/debug-probes/j-link/technology/cpus-and-devices/supported-spi-flashes/ SEGGER homepage] for a List of all out-of-the-box supported SPI Flashes.<br />
** If you find that a SPI Flash you want support for is missing, please contact us via the [https://www.segger.com/support/technical-support/ SEGGER Support Ticket System]<br />
* Can also program SPI flashes that are connected to CPUs that are not supported by J-Link.<br />
* Supports any kind of custom command sequences (e.g. write protection register)<br />
* Verbose logging of all communication.<br />
* Intuitive user interface.<br />
* Data files supported:<br />
** .hex<br />
** .mot<br />
** .srec<br />
** .bin<br />
<br />
=== Requirements ===<br />
This section describes the requirements for Host and Target side, using J-Flash SPI (CL).<br />
<br />
==== Host ====<br />
J-Flash SPI requires a PC running one of the supported operating system with a free USB port dedicated to a J-Link.<br />
A network connection is required only if you want to use J-Flash SPI together with J-Link Remote Server.<br />
<br />
==== Target ====<br />
The flash device must be an SPI flash that supports standard SPI protocols.<br />
<br />
=== Licensing ===<br />
For using J-Flash SPI (CL), a J-Flash license is required.<br />
The following SEGGER emulators is come with this license:<br />
* J-Link PLUS or higher<br />
* Flasher ARM/PRO<br />
* J-Trace PRO (Cortex/Cortex-M)<br />
No additional license is required / available.<br />
<br />
== Getting Started ==<br />
This section provides an overview of the included sample projects and describes the menu structure of J-Flash SPI in detail.<br />
<br />
=== Setup ===<br />
Refer to the [[UM08001_J-Link_/_J-Trace_User_Guide#Setup | J-Link User Guide]]<br />
<br />
==== What is included? ====<br />
The following table shows the contents of all subdirectories of the [[UM08001_J-Link_/_J-Trace_User_Guide#J-Link_Software_and_Documentation_Pack | J-Link Software and Documentation Pack]] with regard to J-Flash SPI:<br />
{| class="wikitable"<br />
! Directory !! Contents<br />
|-<br />
| <tt>.</tt> || The J-Flash SPI application. Please refer to the [[UM08001_J-Link_/_J-Trace_User_Guide#J-Link_Software_and_Documentation_Pack | J-Link User Guide]] for more information about the other J-Link related tools.<br />
|-<br />
| <tt>.\Doc</tt> || Contains the J-Flash SPI documentation and the other J-Link related manuals.<br />
|-<br />
| <tt>.\Samples\JFlashSPI\ProjectFiles</tt> || Contains sample projects for J-Flash SPI.<br />
|}<br />
<br />
=== Using J-Flash SPI for the first time ===<br />
Start J-Flash SPI.<br />
The main window will appear, which contains a log window at the bottom and the '''Project window''' of a default project on the left.<br />
The application log will initially display:<br />
* The version and time of compilation for the application.<br />
* The version and time of compilation for the J-Link DLL.<br />
* The location of the default project.<br />
The Project window contains an overview of the current project settings (initially, a default project is opened).<br />
<br clear=all><br />
<br />
=== Menu structure ===<br />
The main window of J-Flash SPI contains seven drop-down menus ('''File''', '''Edit''', '''View''', '''Target''', '''Options''', '''Window''', '''Help''').<br />
Any option within these drop-down menus that is followed by a three period ellipsis (...), is an option that requires more information before proceeding.<br />
<br />
==== File menu elements ====<br />
{| class="wikitable"<br />
! Command !! Description<br />
|-<br />
| Open data file... || Opens a data file that may be used to flash the target device. The data file must be an Intel HEX file, a Motorola S file, or a Binary file (.hex, .mot, .srec, or .bin).<br />
|-<br />
| Merge data file || Merges two data files (<tt>.hex, .mot, .srec, .bin</tt>). All gaps will be filled with FF.<br />
Find below a short example of merging two data files named, File0.bin and File1.bin into File3.bin.<br><br />
<tt>File0.bin</tt> -> Addr <tt>0x0200 - 0x02FF</tt><br><br />
<tt>File1.bin</tt> -> Addr <tt>0x1000 - 0x13FF</tt><br><br />
Merge <tt>File0.bin</tt> & <tt>File1.bin</tt><br><br />
<tt>0x0200 - 0x02FF</tt> Data of <tt>File0.bin</tt><br><br />
<tt>0x0300 - 0x0FFF</tt> gap (will be filled with <tt>0xFF</tt> if image is saved as <tt>*.bin</tt> file)<br><br />
<tt>0x1000 - 0x13FF</tt> Data of <tt>File1.bin</tt><br><br />
Can be saved in new data file (<tt>File3.bin</tt>).<br />
|-<br />
| Save data file || Saves the data file that currently has focus.<br />
|-<br />
| Save data file as... || Saves the data file that currently has focus using the name and location given.<br />
|-<br />
| New Project || Creates a new project using the default settings.<br />
|-<br />
| Open Project... || Opens a project file. Note that only one project file may be open at a time. Opening a project will close any other project currently open.<br />
|-<br />
| Save Project || Saves a project file.<br />
|-<br />
| Save Project as... || Saves a project file using the name and location given.<br />
|-<br />
| Close Project || Closes a project file.<br />
|-<br />
| Recent Files > || Contains a list of the most recently open data files.<br />
|-<br />
| Recent Projects > || Contains a list of the most recently open project files.<br />
|-<br />
| Exit Exits || Exits the application.<br />
|}<br />
<br />
==== Edit menu elements ====<br />
{| class="wikitable"<br />
! Command !! Description<br />
|-<br />
| Relocate... || Relocates the start of the data file to the supplied hex offset from the current start location.<br />
|-<br />
| Delete range... || Deletes a range of values from the data file, starting and ending at given addresses.<br>The End address must be greater than the Start address otherwise nothing will be done.<br />
|-<br />
| Eliminate blank areas... || Eliminates blank regions within the data file.<br />
|}<br />
<br />
==== View menu elements ====<br />
{| class="wikitable"<br />
! Command !! Description<br />
|-<br />
| Show log || Opens and/or sets the focus to the log window.<br />
|-<br />
| Show project information || Opens and/or sets the focus to the project window.<br />
|-<br />
|}<br />
<br />
==== Target menu elements ====<br />
{| class="wikitable"<br />
! Command !! Description<br />
|-<br />
| Connect || Creates a connection through the J-Link using the configuration options set in the Project settings... of the Options dropdown menu.<br />
|-<br />
| Disconnect || Disconnects a current connection that has been made through the J-Link.<br />
|-<br />
| Test > Generate test data || Generates data which can be used to test if the flash can be programmed correctly. The size of the generated data file can be defined.<br />
|-<br />
| Erase Sectors || Erases all selected flash sectors.<br />
|-<br />
| Erase Chip || Erases the entire chip.<br />
|-<br />
| Program || Programs the chip using the currently active data file.<br />
|-<br />
| Program & Verify || Programs the chip using the currently active data file and then verifies that it was written successfully.<br />
|-<br />
| Auto || Performs a sequence of steps, which can be configured in the Production tab of the Project settings.<br />
Additionally, the first step executed are the init steps and the last step executed are the exit steps,<br><br />
which both can be configured in the MCU tab of the project settings.<br><br />
The range of sectors to be erased can be configured through the Global settings dialog.<br />
|-<br />
| Verify || Verifies the data found on the chip with the data file.<br />
|-<br />
| Read back > Entire chip || Reads back the data found on the chip and creates a new data file to store this information.<br />
|-<br />
| Read back > Range || Reads back the data found in a range specified by the user and creates a new data file to store this information.<br />
|}<br />
<br />
==== Options menu elements ====<br />
{| class="wikitable"<br />
! Command !! Description<br />
|-<br />
| Project settings... || Location of the project settings that are displayed in the snapshot view found in the Project window of the J-Flash SPI application.<br />
Furthermore various settings needed to locate the J-Link and pass specified commands needed for chip initialization.<br />
|-<br />
| Global settings... || Settings that influence the general operation of J-Flash SPI.<br />
|}<br />
<br />
=== Help menu elements ===<br />
{| class="wikitable"<br />
|-<br />
! Command !! Description<br />
|-<br />
| J-Flash SPI Wiki || Opens the J-Flash SPI wiki in a browser.<br />
|-<br />
| J-Link Wiki || Opens the J-Link wiki in a browser.<br />
|-<br />
| Flasher Wiki || Opens the Flasher wiki in a browser.<br />
|-<br />
| J-Flash User Guide || Opens the J-Flash Manual (UM08003) document in the default .PDF application of the system.<br />
|-<br />
| J-Link User Guide || Opens the J-Link Manual (UM08001) in the default .PDF application of the system.<br />
|-<br />
| Flasher User Guide || Opens the Flasher Manual (UM08022) in the default .PDF application of the system.<br />
|-<br />
| Flasher ATE User Guide || Opens the Flasher ATE Manual (UM08035) in the default .PDF application of the system.<br />
|-<br />
| Flasher Hub User Guide || Opens the Flasher Hub Manual (UM08039) in the default .PDF application of the system.<br />
|-<br />
| Licenses... || Shows a dialog with licensing information. The serial number of a connected J-Link may be read and licenses added or removed.<br />
|-<br />
| About... || J-Flash and company information.<br />
|-<br />
|}<br />
<br />
== Settings ==<br />
The following chapter provides an overview of the program settings.<br />
Both general and per project settings are considered.<br />
<br />
=== Project Settings ===<br />
Project settings are available from the Options menu in the main window or by using the ALT-F7 keyboard shortcut.<br />
<br />
==== General Settings ====<br />
[[File:JFlashSPI_ProjectSettings_General.PNG | thumb | right | 400px | J-Flash SPI Project settings dialog - General]]<br />
This tab is used to choose the connection to J-Link.<br />
The J-Link can either be connected over USB or via TCP/IP to the host system.<br />
Refer to the [[UM08001 J-Link / J-Trace User Guide]]<br />
for more information regarding the operation of J-Link and [[J-Link Remote Server]].<br />
<br />
{| class="wikitable"<br />
! Setting !! Explanation<br />
|-<br />
| USB || Connect to emulator with the specified device number (default: 0) via USB port.<br />
|-<br />
| USB SN || Connect to emulator with the specified serial number (default: 0) via USB port.<br />
|-<br />
| TCP/IP || Connect to emulator with the specified IP or to [[J-Link Remote Server]] with the specified host name via TCP/IP.<br />
|}<br />
<br clear = all><br />
<br />
==== Setup Settings ====<br />
[[File:JFlashSPI_ProjectSettings_Setup.PNG | thumb | right | 400px | J-Flash SPI Project settings dialog - Setup]]<br />
This tab is used to configure the SPI interface settings like SPI communication speed and allows<br />
to add Init steps and Exit steps which can be used to execute custom command sequences.<br />
{| class="wikitable"<br />
! Setting !! Explanation<br />
|-<br />
| Interface Speed || Specifies the SPI communication speed J-Link uses to communicate with the SPI flash.<br />
|}<br />
<br clear=all><br />
<br />
===== Init and Exit steps =====<br />
[[File:JFlashSPI_ProjectSettings_InitSteps.PNG | thumb | right | 400px | J-Flash SPI Project settings dialog - Setup - Init steps]]<br />
Can be used to add custom command sequences like for example write protection register.<br />
For further information regarding this, please refer to [[#Custom Command Sequences | custom command sequences]].<br />
<br clear=all><br />
<br />
==== Flash Settings ====<br />
[[File:JFlashSPI_ProjectSettings_Flash.PNG | thumb | right | 400px | J-Flash SPI Project settings dialog - Flash]]<br />
This tab is used to select and configure the parameters of the SPI flash that J-Flash SPI will connect to.<br />
Examples for flash parameters are: Sector size (Smallest erasable unit), page size (smallest programmable unit), Flash ID, etc.<br />
There is also the option to try to auto-detect the connected flash device.<br />
The latter option will prompt J-Flash SPI to try to identify the flash by its Flash ID, looking up in an internal list of known flash devices.<br />
For a list of all out-of-the-box supported flashes, please refer to the [https://www.segger.com/products/debug-probes/j-link/technology/cpus-and-devices/supported-spi-flashes/ SEGGER homepage].<br />
If you find that a SPI Flash you want support for is missing, please contact us via the [https://www.segger.com/support/technical-support/ SEGGER Support Ticket System].<br />
<br clear=all><br />
<br />
==== Production Settings ====<br />
[[File:JFlashSPI_ProjectSettings_Production.PNG | thumb | right | 400px | J-Flash SPI Project settings dialog - Production]]<br />
<br />
===== Enable target power =====<br />
Enables 5V target power supply via pin 19 of the emulator.<br />
Can be used for targets which can be powered through the emulator for production.<br />
Delay before start defines the delay (in ms) after enabling the target power supply and before starting to communicate with the target.<br />
<br />
===== Actions performed by "Auto" =====<br />
The checked options will be performed when auto programming a target (Target -> Auto, shortcut: F7).<br />
The default behavior is Compare, Erase sectors if not blank, Program and Verify.<br />
Find below a table which describes the commands:<br />
<br />
{| class="wikitable"<br />
! Command !! Description<br />
|-<br />
| Compare || Performs a compare of the current flash content and the data to be programmed.<br />
Sectors which do already match will be skipped by Erase / Program operation.<br><br />
Note: If Erase is enabled and Erase type is "Chip", the compare will be skipped as after mass erase, the entire device is empty and needs to be re-programmed.<br />
|-<br />
| Erase || Performs an erase depending on the settings, selected in the drop down box:<ul><br />
<li>Sectors: Erases all sectors which are effected by the image to be programmed.</li><br />
<li>Sectors if not blank: Erases all sectors which are both, effected by the image to be programmed and not already blank.</li><br />
<li>Chip: Erase the entire chip independent of the content.</li><br />
</ul><br />
|-<br />
| Program || Programs the data file.<br />
|-<br />
| Verify || Verifies the programmed data via read.<br />
|}<br />
<br clear=all><br />
<br />
==== Performance tab ====<br />
[[File:JFlashSPI_ProjectSettings_Performance.PNG | thumb | right | 400px | J-Flash SPI Project settings dialog - Performance]]<br />
Currently, the only option in this tab is to skip blank data on program "F5".<br />
This way, blank data of the data to be flashed is skipped to increase the download speed.<br />
It is selected by default.<br />
<br clear=all><br />
<br />
=== Global Settings ===<br />
[[File:JFlashSPI_GlobalSettings.PNG | thumb | right | 400px | J-Flash SPI Project settings dialog - Global]]<br />
Global settings are available from the Options menu in the main window.<br />
<br />
==== Operation ====<br />
The ''Operation'' options define the behavior of some actions such as "Auto" or "Program & Verify".<br />
===== Auto mode affects =====<br />
{| class="wikitable"<br />
! Setting !! Description<br />
|-<br />
| Affected sectors only (Default) || Auto mode actions performed for affected sectors only<br />
|-<br />
| Selected sectors only || Auto mode actions performed for selected sectors only<br />
|-<br />
| All sectors || Auto mode actions performed for all selected sectors<br />
|}<br />
===== Disconnect after each operation =====<br />
If this option is checked, connection to the target will be closed at the end of each operation.<br />
===== Perform blank check =====<br />
If this option is checked, a blank check is performed before any program operation to examine if the affected flash sectors are completely empty.<br />
The user will be asked to erase the affected sectors if they are not empty.<br />
===== Skip blank areas on read =====<br />
If this option is checked, a blank check is performed before any read back operation to examine which flash areas need to be read back from target.<br />
This improves performance of read back operations since it minimizes the amount of data to be transferred via JTAG and USB.<br />
<br />
==== Logging ====<br />
The ''Logging'' options provide settings to customize the log output of J-Flash SPI.<br />
===== General log level =====<br />
This specifies the log level of J-Flash SPI.<br />
Increasing log levels result in a more verbose output in the log window.<br />
===== Enable J-Link logfile =====<br />
If this option is checked, you can specify a file name for the J-Link logfile.<br />
The J-Link logfile differs from the log window output of J-Flash SPI.<br />
It does not log J-Flash SPI operations performed.<br />
Instead of that, it logs the J-Link ARM DLL API functions called from within J-Flash SPI.<br />
<br />
==== Projects ====<br />
The "Projects" section provides settings for general project handling.<br />
===== Save project file on close =====<br />
If selected, the project file will automatically be saved on close.<br />
<br clear=all><br />
<br />
== Command Line Interface ==<br />
This chapter describes the J-Flash SPI command line interface.<br />
The command line allows using J-Flash SPI in batch processing mode and other advanced uses.<br />
<br />
=== Overview ===<br />
[[File:JFlashSPI_CommandLine_Overview.PNG | thumb | right | 400px | J-Flash SPI Command line overview]]<br />
In addition to a graphical user interface (GUI), J-Flash SPI supports a command line mode as well.<br />
This makes it possible to use J-Flash SPI for batch processing purposes.<br />
All important options accessible from the menus are available in command line mode as well.<br />
If you provide command line options, J-Flash SPI will still start its GUI, but processing will start immediately.<br><br />
<br />
The screenshot on the right shows the command line help dialog, which is displayed if you start J-Flash SPI in a console window with <tt>JFlashSPI.exe -help</tt> or <tt>JFlashSPI.exe -?</tt>.<br />
<br />
=== Command line options ===<br />
This section lists and describes all available command line options.<br />
Some options accept additional parameters which are enclosed in angle brackets, e.g. <FILENAME>.<br />
If these parameters are optional they are enclosed in square brackets too, e.g. [<SADDR>].<br />
Neither the angel nor the square brackets must be typed on the command line, they are used here only to denote (optional) parameters.<br><br />
The command line options are evaluated in the order they are passed to J-Flash, so please ensure that a project and data file has already been opened when<br />
evaluating a command line option which requires this.<br><br />
It is recommended to always use <tt>-open<FILENAME>[,<SADDR>]</tt> to make sure the right data file is opened.<br />
<br />
All command line options return 0 if the processing was successful.<br />
A return value unequal 0 means that an error occurred.<br />
<br />
<br>'''Note:''' Entries marked with ''*'' only work for J-Flash SPI (GUI), entries marked with ''**'' only work for J-Flash SPI CL<br />
{| class="wikitable"<br />
! Option !! Description<br />
|-<br />
| -? || Displays the help dialog.<br />
|-<br />
| -auto || Executes the steps selected in Production Programming.<br>Default: Erases, programs and verifies target.<br />
|-<br />
| -connect || Connects to the target.<br />
|-<br />
| -delrange<SADDR>,<EADDR> || * Deletes data in the given range.<br />
|-<br />
| -disconnect || Disconnects from the target.<br />
|-<br />
| -eliminate || * Eliminates blank areas in data file.<br />
|-<br />
| -erasechip || Erases the entire flash chip.<br />
|-<br />
| -erasesectors || Erases selected sectors.<br />
|-<br />
| -exit || * Exits J-Flash SPI.<br />
|-<br />
| -help || Displays the help dialog.<br />
|-<br />
| -jflashlog<FILENAME> || Sets a temporary J-Flash SPI logfile.<br />
|-<br />
| -jlinklog<FILENAME> || Sets a temporary J-Link logfile.<br />
|-<br />
| -merge<FILENAME>[.bin,<ADDR>] || * Saves the current data file into the specified file. <ADDR> parameter only applies if the data file is a *.bin- or *.c-file.<br />
|-<br />
| -min || * Starts application minimized<br />
|-<br />
| -open<FILENAME>[,<SADDR>] || Opens a data file. Please note that the <SADDR> parameter applies only if the data file is a *.bin file<br />
|-<br />
| -openprj<FILENAME> || Opens an existing project file. This will also automatically open the data file that has been recently used with this project.<br />
|-<br />
| -program || Programs the target.<br />
|-<br />
| -programverify || Programs and verify the target.<br />
|-<br />
| -readchip || Reads the entire flash chip.<br />
|-<br />
| -readrange<SADDR>,<EADDR> || Reads specified range of target memory.<br />
|-<br />
| -relocate<Offset> || * Relocate data by <Offsest>.<br />
|-<br />
| -save[<SADDR>,<EADDR>] || Saves the current data file. Please note that the parameters <SADDR>,<EADDR> apply only if the data file is a *.bin file or *.c file.<br />
|-<br />
| -saveas<FILENAME>[,<SADDR>,<EADDR>] || Saves the current data file into the specified file. Please note that the parameters <SADDR>,<EADDR> apply only if the data file is a *.bin file or *.c file.<br />
|-<br />
| -saveprj || * Saves the current project.<br />
|-<br />
| -saveprjas<FILENAME> || * Saves the current project in the specified file.<br />
|-<br />
| -verify || Verifies the target memory.<br />
|-<br />
| -usb<SN> || Overrides connection settings to USB S/N.<br />
|-<br />
| <ul><li>-ip<xxx.xxx.xxx.xxx></li><li>-ip<HostName></li> || Overrides connection settings to IP.<br />
|-<br />
| -speed<SpeedInkHZ> || ** Sets the connection speed.<br />
|-<br />
| -verbose<Level> || ** Sets the log verbosity level to <Level>.<br><Level>-range is from 0-9.<br />
|}<br />
<br />
=== Batch processing ===<br />
J-Flash SPI can be used for batch processing purposes.<br />
All important options are available in command line mode as well.<br />
When providing command line options, the application does not wait for manual user input.<br />
All command line operations will be performed in exactly the order they are passed.<br />
So, for example issuing a program command before a project has been opened will cause the program command to fail.<br />
<br />
==== Examples ====<br />
The example batchfile below will cause J-Flash SPI to perform the following operations:<br />
#Open project C:\Projects\Default.jflash<br />
#Open bin file C:\Data\data.bin and set start address to 0x100000<br />
#Perform "Auto" operation in J-Flash (by default this performs erase, program, verify)<br />
#Close J-Flash SPI<br />
The return value will be checked and in case of an error message will be displayed.<br />
Adapt the example according to the requirements of your project.<br />
<br />
<source lang="bat"><br />
@ECHO OFF<br />
<br />
ECHO Open a project and data file, start auto processing and exit<br />
JFlashSPI.exe -openprjC:\Projects\Default.jflash -openC:\Data\data.bin,0x100000 -auto -exit<br />
IF ERRORLEVEL 1 goto ERROR<br />
<br />
goto END<br />
<br />
:ERROR<br />
ECHO J-Flash SPI: Error!<br />
pause<br />
<br />
:END<br />
</source><br />
===== Starting J-Flash minimized =====<br />
Adapt this example call to start J-Flash SPI minimized:<br />
<source lang="bat"><br />
start /min /wait "J-Flash" "JFlashSPI.exe" -openprjC:\Projects\Default.jflash \<br />
-openC:\Data\data.bin,0x100000 -auto -exit<br />
</source><br />
<br>'''Note:'''<br>Every call of <tt>JFlashSPI.exe</tt> has to be completed with the <tt>-exit</tt> option, otherwise the execution of the batch file stops and the following commands will not be processed.<br />
<br />
=== Programming multiple targets in parallel ===<br />
[[File:JFlashSPI_ProjectSettings_General_USBSN.PNG | thumb | right | 400px | J-Flash SPI Project settings dialog - General - SN selection]]<br />
In order to program multiple targets in parallel using J-Flash SPI, the following is needed:<br><br />
Multiple J-Flash SPI projects, each configured to connect to a specific J-Link / Flasher (emulator to connect to is selected by serial number).<br><br />
The easiest way is to setup the appropriate project once and then make multiple copies of this project.<br />
Now modify the <tt>Connection type</tt> setting in each project, in order to let J-Flash SPI connect to the different programmers as shown in the screenshot on the right:<br />
Find below a small sample which shows how to program multiple targets in parallel:<br />
<source lang="bat"><br />
@ECHO OFF<br />
<br />
ECHO Open first project which is configured to connect to the first J-Link.<br />
ECHO Open data file, start auto processing and exit<br />
open JFlashSPI.exe -openprjC:\Projects\Project01.jflash -openC:\Data\data.bin,<br />
0x100000 -auto -exit<br />
IF ERRORLEVEL 1 goto ERROR<br />
<br />
ECHO Open second project which is configured to connect to the second J-Link.<br />
ECHO Open data file, start auto processing and exit<br />
open JFlashSPI.exe -openprjC:\Projects\Project02.jflash -openC:\Data\data.bin,<br />
0x100000 -auto -exit<br />
IF ERRORLEVEL 1 goto ERROR<br />
<br />
ECHO Open third project which is configured to connect to the third J-Link.<br />
ECHO Open data file, start auto processing and exit<br />
open JFlashSPI.exe -openprjC:\Projects\Project03.jflash -openC:\Data\data.bin,<br />
0x100000 -auto -exit<br />
IF ERRORLEVEL 1 goto ERROR<br />
<br />
goto END<br />
<br />
:ERROR<br />
ECHO J-Flash SPI: Error!<br />
pause<br />
<br />
:END<br />
</source><br />
<br>'''Note:'''<br>Every call of <tt>JFlashSPI.exe</tt> has to be completed with the <tt>-exit</tt> option, otherwise the execution of the batch file stops and the following commands will not be processed.<br />
<br />
== Creating a new J-Flash SPI project ==<br />
Creating a new project for J-Flash is pretty simple.<br />
In the following, all necessary steps to create a project file are explained.<br />
<ol><br />
<li><br />
Select '''File''' -> '''New Project''' to create a new project with default settings.<br />
</li><li><br />
Open the '''Project Settings''' context menu.<br />
Select '''Options''' -> '''Project Settings''' to open the '''Project settings''' dialog and select the type of connection to J-Link.<br />
<br>[[File:JFlashSPI_ProjectSettings_General.PNG | 400px]]<br><br />
</li><li><br />
Define the '''SPI communication speed'''.<br />
The default settings work without any problem for most targets, but to achieve the last quantum of performance, manual tuning may be necessary.<br />
<br>[[File:JFlashSPI_ProjectSettings_Setup.PNG]]<br><br />
</li><li><br />
Open the '''Flash''' and either select '''Automatically detect SPI flash''' or manually enter the flash parameters.<br />
</li><li><br />
Save the project ('''File''' -> '''Save Project''').<br />
</li><br />
</ol><br />
<br />
== Custom Command Sequences ==<br />
J-Flash SPI supports sending custom command sequences, which may be different for different SPI flashes (e.g. program OTP, program security register, etc...), via the SPI interface.<br />
Due to the generic syntax, this feature can be used to implement any kind of required command sequence.<br />
The sequence is stored in the J-Flash SPI project file (*.jflash) and therefore it can be included in automated production environments without any problems<br />
and be used with the command line version of J-Flash SPI as well.<br><br />
The custom command sequence can be configured in the [[#Setup_Settings | Setup tab]] of the J-Flash project settings as part of the <tt>Init / Exit Steps</tt> which allow to enter<br />
custom sequences using a pre-defined list of operations.<br />
The following list shows all valid commands which can be used:<br />
{| class="wikitable<br />
! Command !! Value0 !! Value1 !! Description<br />
|-<br />
| Delay || Delay in ms || -- || Waits a given time<br />
|-<br />
| Activate CS || -- || -- || Sets the CS signal low<br />
|-<br />
| Deactivate CS || -- || -- || Sets the CS signal high<br />
|-<br />
| Write data || NumByte(s) || ByteStream separated by commas (hex) || Sends a number of bytes via the SPI interface to the SPI. (e.g.: 9F,13,CA)<br />
|-<br />
| Var Read Data || OffInVarBuffer || NumByte(s) max. 16 bytes || Reads the specified number of bytes via the SPI interface into the VarBuffer which is 16 bytes in size.<br />
|-<br />
| Var Write Data || OffInVarBuffer || NumByte(s) max. 16 bytes || Writes the specified number of bytes via the SPI interface from the VarBuffer (filled via Var Read).<br />
|-<br />
| Var AND || ByteIndex || Value (hex) || Logical AND combination of the internal var buffer at the specified index with a given value.<br />
|-<br />
| Var OR || ByteIndex || Value (hex) || Logical OR combination of the internal var buffer at the specified index with a given value.<br />
|-<br />
| Var XOR || ByteIndex || Value (hex) || Logical XOR combination of the internal var buffer at the specified index with a given value.<br />
|}<br />
<br />
=== Init / Exit steps ===<br />
The init sequence will be performed as part of the connect sequence, for example to disable security,<br />
while the exit sequence will be executed after programming, for example to enable the security in order to secure the SPI flash.<br />
<br />
=== Example ===<br />
The example below demonstrates how to use the custom command sequence feature to implement a read-modify-write security register on the Winbond W25Q128FVSIG SPI flash using the init steps.<br />
To make sure that the output of the example is exactly the same, the sample erases the security register to have defined values.<br />
<br />
Step #0 to Step#2: Set Write Enable <br><br />
Step #3 to Step#6: Erase security register to have a defined values (0xFF) <br><br />
Step #7 to Step#11: Read 16 byte security register into Var buffer <br><br />
Step #12 to Step#19: Modify the data in the Var buffer <br><br />
Step #20 to Step#22: Set Write Enable <br><br />
Step #23 to Step#27: Program security register with values from Var buffer <br><br />
Step #28 to Step#32: Read back security register to verify successful programming <br><br />
{| class="wikitable"<br />
! # !! Action !! Value0 !! Value1 !! Comment<br />
|-<br />
| style="text-align:right;" | 0 || Activate CS || -- || -- || Activate CS<br />
|-<br />
| style="text-align:right;" | 1 || Write Data || 1 || 06 || Send command: Write Enable<br />
|-<br />
| style="text-align:right;" | 2 || Deactivate CS || -- || -- || Deactivate CS<br />
|-<br />
| style="text-align:right;" | 3 || Activate CS || -- || -- || Activate CS<br />
|-<br />
| style="text-align:right;" | 4 || Write Data || 4 || 44,00,10,00 || Send command: Erase Security Register 1<br />
|-<br />
| style="text-align:right;" | 5 || Deactivate CS || -- || -- || Deactivate CS<br />
|-<br />
| style="text-align:right;" | 6 || Delay || 200ms || -- || Wait until security register 1 has been erased<br />
|-<br />
| style="text-align:right;" | 7 || Activate CS || -- || -- || Activate CS<br />
|-<br />
| style="text-align:right;" | 8 || Write Data || 4 || 48,00,10,00 || Send Read Security Register: 1b command + 3b addr<br />
|-<br />
| style="text-align:right;" | 9 || Write Data || 1 || FF || Send 8 dummy clocks<br />
|-<br />
| style="text-align:right;" | 10 || Var Read Data || 0 || 16 || Read actual security register data (16 byte) into Varbuffer[0]<br />
|-<br />
| style="text-align:right;" | 11 || Deactivate CS || -- || -- || Deactivate CS<br />
|-<br />
| style="text-align:right;" | 12 || Var AND || 0 || 0x00 || Set byte 0 to 0x00 using Var AND<br />
|-<br />
| style="text-align:right;" | 13 || Var OR || 0 || 0x12 || Set byte 0 to 0x12 using Var OR<br />
|-<br />
| style="text-align:right;" | 14 || Var AND || 6 || 0x00 || Set byte 6 to 0x00 using Var AND<br />
|-<br />
| style="text-align:right;" | 15 || Var OR || 6 || 0x12 || Set byte 6 to 0xAB using Var OR<br />
|-<br />
| style="text-align:right;" | 16 || Var AND || 12 || 0x00 || Set byte 12 to 0x00 using Var AND<br />
|-<br />
| style="text-align:right;" | 17 || Var OR || 12 || 0x12 || Set byte 12 to 0xCC using Var OR<br />
|-<br />
| style="text-align:right;" | 18 || Var AND || 15 || 0x00 || Set byte 15 to 0x00 using Var AND<br />
|-<br />
| style="text-align:right;" | 19 || Var OR || 15 || 0x12 || Set byte 15 to 0x4E using Var OR<br />
|-<br />
| style="text-align:right;" | 20 || Activate CS || -- || -- || Activate CS<br />
|-<br />
| style="text-align:right;" | 21 || Write Data || 1 || 06 || Send command: Write Enable<br />
|-<br />
| style="text-align:right;" | 22 || Deactivate CS || -- || -- || Deactivate CS<br />
|-<br />
| style="text-align:right;" | 23 || Activate CS || -- || -- || Activate CS<br />
|-<br />
| style="text-align:right;" | 24 || Write Data || 4 || 42,00,10,00 || Send command: Program Security Register 1<br />
|-<br />
| style="text-align:right;" | 25 || Var Write Data || 0 || 16 || Send data: Program sec reg 1_1<br />
|-<br />
| style="text-align:right;" | 26 || Deactivate CS || -- || -- || Deactivate CS<br />
|-<br />
| style="text-align:right;" | 27 || Delay || 200ms || -- || Wait until security register 1 has been erased<br />
|-<br />
| style="text-align:right;" | 28 || Activate CS || -- || -- || Activate CS<br />
|-<br />
| style="text-align:right;" | 29 || Write Data || 4 || 48,00,10,00 || Send Read Security Register: 1b command + 3b addr<br />
|-<br />
| style="text-align:right;" | 30 || Write Data || 1 || FF || Send 8 dummy clocks<br />
|-<br />
| style="text-align:right;" | 31 || Var Read Data || 0 || 16 || Read actual security register data (16 byte) into Varbuffer[0]<br />
|-<br />
| style="text-align:right;" | 32 || Deactivate CS || -- || -- || Deactivate CS<br />
|}<br />
<br />
=== J-Flash SPI Command Line Version ===<br />
As the Init / Exit Steps are stored in the J-Flash project file, which is evaluated in the command line version of J-Flash SPI too,<br />
the custom command sequence feature can be used under Linux / MAC, as well.<br />
The project can be either created using the GUI version of J-Flash SPI or by editing the *.jflash project, manually.<br />
The expected format of the custom command sequences in the J-Flash project file is described below.<br />
<br />
==== J-Flash project layout ====<br />
Basically, the custom sequence is separated into different steps where each step contains the fields as in the table below.<br />
Some commands require to pass parameter to it.<br />
They are stored in Value0 and Value1 as described in the table below.<br />
<br />
{| class="wikitable"<br />
! Step !! Description<br />
|-<br />
| ExitStepX_Action = "$Action$" || Any action as described in the table below.<br />
|-<br />
| ExitStepX_Comment = "$Comment$" || User can specify any comment here. This field is optional and not taken into account.<br />
|-<br />
| ExitStepX_Value0 = "$Value0$" || Value depends on the action. See table below<br />
|-<br />
| ExitStepX_Value1 = "$Value1$" || Value depends on the action. See table below<br />
|}<br />
<br />
The number of exit steps needs to be specified right behind the ExitStep sequence with the line "NumExitSteps = <tt><NumExitSteps></tt>" (see example below).<br />
{| class="wikitable"<br />
! Actions !! Parameter !! Description<br />
|-<br />
| Activate CS || none || Set CS signal low<br />
|-<br />
| Deactivate CS || none || Set CS signal high<br />
|-<br />
| Write data || Value0=NumBytes<br>Value1[x]=ByteStream<br>max. NumBytes is 16 || Send a number of bytes via the SPI interface to the SPI.<br>Please note, that the number of bytes has to be specified right behind Value1 in square brackets<br>(e.g.: ExitStep4_Value1[3] = 0x44,0x00,0x10)<br />
|-<br />
| Delay || Value0=Delay in ms || Waits a given time<br />
|}<br />
<br />
Below is a small example excerpt from a J-Flash project, which shows a example sequence to erase sector 0 of the SPI flash using the 0xD8 command.<br />
Further examples can be found in the installation directory of the J-Link software and documentation package.<br />
[CPU]<br />
//<br />
// Set write enable<br />
//<br />
ExitStep0_Action = "Activate CS"<br />
ExitStep0_Value0 = 0x00000000<br />
ExitStep0_Value1 = 0x00000000<br />
ExitStep1_Action = "Write data"<br />
ExitStep1_Comment = "Set write enable"<br />
ExitStep1_Value0 = 1<br />
ExitStep1_Value1[1] = 0x06<br />
ExitStep2_Action = "Deactivate CS"<br />
ExitStep2_Comment = "Deactivate CS"<br />
ExitStep2_Value0 = 0x00000000<br />
ExitStep2_Value1 = 0x00000000<br />
//<br />
// Erase sector 0<br />
//<br />
ExitStep3_Action = "Activate CS"<br />
ExitStep3_Comment = "Activate CS"<br />
ExitStep3_Value0 = 0x00000000<br />
ExitStep3_Value1 = 0x00000000<br />
ExitStep4_Action = "Write data"<br />
ExitStep4_Comment = "Set write enable"<br />
ExitStep4_Value0 = 4<br />
ExitStep4_Value1[4] = 0xD8,0x00,0x00,0x00<br />
ExitStep5_Action = "Deactivate CS"<br />
ExitStep5_Comment = "Deactivate CS"<br />
ExitStep5_Value0 = 0x00000000<br />
ExitStep5_Value1 = 0x00000000<br />
//<br />
// Wait until sector has been erased<br />
//<br />
ExitStep6_Action = "Delay"<br />
ExitStep6_Comment = "Wait until sector has been erased"<br />
ExitStep6_Value0 = 0x00000080<br />
ExitStep6_Value1 = 0x00000000<br />
NumExitSteps = 7<br />
<br />
== How to use quad mode ==<br />
<br />
TBD<br />
<br />
== How to configure quad mode ==<br />
<br />
{{Note|1=<br />
<br />
* Not all J-Link / Flasher / ... models support the QSPI interface (4 data lines), but some only support traditional SPI. For an overview about which model and hardware version support QSPI, please refer to the [[J-Link_Model_Overview | model overview wiki article]]<br />
<br />
}}<br />
<br />
In order to configure or setup quad mode in J-Flash SPI, some flash chip-specific information needs to be gathered.<br />
# Quad Mode Enable Sequence<br />
# Quad Read Data Command<br />
#* Command code<br />
#* Address transfer mode<br />
#* Number of dummy cycles<br />
# Quad Page Program Command<br />
#* Command code<br />
#* Address transfer mode<br />
<br />
Usually, all of the above information can be found in the flash chip's datasheet.<br />
<br />
=== Quad mode initialization ===<br />
[[File: S25FL512S_QuadModeEnable.png | thumb | Quad Mode Enable Sequence for a Spansion S25FL512S flash]]<br />
Most flash chips need to be put into a "quad mode" or similar before data can be written or read in quad mode.<br><br />
In J-Flash SPI, the procedure which enables this mode is referred to as "Quad Mode Enable Sequence".<br><br />
In a J-Flash SPI project, this sequence can be configured similar to the init/exit steps,<br />
by defining a series of custom steps inside the "''Quad Mode Enable Sequence''" table in the "''Flash''" tab of the J-Flash project settings.<br />
An example for a Quad Mode Enable Sequence can be found in the screenshot pictured on the right.<br><br />
The pictured sequence enables quad mode for a Spansion S25FL512S flash chip by doing the following:<br />
# Read the configuration register (RDCR command) and store it in a temporary buffer on the host<br />
# Check if the QUAD bit is set (bit position 1)<br />
# If the QUAD bit is already set, quad mode is already enabled and we are done<br />
# If the QUAD bit in is not set, set it in the temporary host-buffer (TmpBuf[1] &= (1 << 1))<br />
# Read the status register 1 (RDSR1 command)<br />
# Write the status register 1 and the (adjusted) configuration register<br />
# Wait for the register writes to finish<br />
<br />
The series of steps that are required to put a flash chip into the desired quad mode may look very different for other flash chips, because this sequence is completely flash-specific and not standardized at all.<br><br />
'''Note:'''<br><br />
Some flash chips also support a mode called "Quad I/O" mode or similar. This mode makes the flash chip assume that '''any''' SPI communication happens in quad mode,<br />
meaning that sending any command (not just page program or read data) happens in quad mode.<br><br />
Currently, this type of "Quad I/O" mode is '''not''' supported by J-Flash SPI and Flasher. Make sure that this mode is not accidentally enabled.<br />
<br />
<br clear=all><br />
<br />
=== Quad Read Data Command ===<br />
<br />
Reading data from a flash in quad mode can be achieved by using a SPI command which behaves the same as the "single" SPI read data command,<br><br />
except for the fact that the read data is sent to the host on four lines instead of just one, increasing the data transfer speed by a factor of 4.<br><br />
Information about a quad read data command can be found in the flash chip's datasheet. Usually, the command is referred to as "quad read data", "data read quad", "read quad out", or similar.<br><br />
<br />
In the J-Flash SPI project settings, the Quad Read Data Command code needs to be configured (''ReadDataQuad'' field), as well as the address transfer mode for quad page program.<br><br />
The address transfer mode setting determines if the address bytes that are sent to the flash are sent in quad mode (4 data lines in parallel) or in single mode (1 data line).<br />
This settings needs to be configured correctly, otherwise proper function cannot be guaranteed.<br />
<br />
For the Spansion S25FL512S flash, the Quad Read Data Command code is '''0x6C''' and the address is transferred in '''single mode'''.<br />
<br />
==== Dummy cycles ====<br />
<br />
When reading data from the target flash chip in quad mode, a specific number of so called "dummy cycles" or "latency cycles" may be sent to the flash chip before receiving actual data.<br />
The number of required dummy cycles depends on the flash chip and may vary depending on the current flash configuration (e.g. configuration register contents), SPI clock frequency, operation mode, etc...<br />
<br />
For the Spansion S25FL512S flash, the number of required dummy cycles for the "read quad out" command at a SPI clock frequency of 50MHz is '''8'''.<br />
<br />
=== Quad Page Program Command ===<br />
<br />
Programming a flash page in quad mode can be achieved by using a SPI command which behaves the same as the "single" SPI page program command,<br><br />
except for the fact that the page data is sent to the flash chip on four lines instead of just one, increasing the data transfer speed by a factor of 4.<br><br />
Information about a quad page program command can be found in the flash chip's datasheet. Usually, the command is referred to as "quad page program", "pape program quad", or similar.<br><br />
<br />
In the J-Flash SPI project settings, the Quad Page Program Command code needs to be configured (''WritePageQuad'' field), as well as the address transfer mode for quad page program.<br><br />
The address transfer mode setting determines if the address bytes that are sent to the flash are sent in quad mode (4 data lines in parallel) or in single mode (1 data line).<br />
This settings needs to be configured correctly, otherwise proper function cannot be guaranteed.<br />
<br />
For the Spansion S25FL512S flash, the Quad Page Program Command code is '''0x34''' and the address is transferred in '''single mode'''.<br />
<br />
== Device specifics ==<br />
This section gives some additional information about specific devices.<br />
<br />
=== SPI flashes with multiple erase commands ===<br />
Some SPI flashes support multiple erase commands that allow to erase different units on the flash.<br />
For example some flashes provide a <tt>sector erase</tt> (erase 4 KiB units) and a <tt>block erase</tt> (erase 16 KiB or 64 KiB units) command.<br />
In general, it is up to the user which command to use, as the <tt>EraseSector</tt> command can be overridden by the user.<br />
When manually changing the <tt>SectorErase</tt> command in the '''Options''' -> '''Project settings...''' -> '''Flash''' tab,<br />
make sure that the <tt>SectorSize</tt> parameter matches the command being used<br />
<br />
== Target systems ==<br />
=== Programmable flash devices ===<br />
In general, all kinds of SPI flash can be programmed.<br />
Since all flash parameters are configurable, also flashes with non-standard command sets can be programmed.<br />
<br />
== Performance ==<br />
The following section lists programming performance for various SPI flash devices.<br />
<br />
=== Performance values ===<br />
In direct programming mode (J-Link directly connects to the pins of the SPI flash), the programming speed is mainly limited by the SPI communication speed,<br />
the USB speed of J-Link (if a Full-Speed or Hi-Speed based J-Link is used) and the maximum programming speed of the flash itself.<br><br />
For most SPI flash devices, in direct programming mode speeds of >= 50 KiB/s can be achieved.<br />
<br />
== Background information ==<br />
This section provides some background information about specific parts of the J-Flash SPI software.<br />
<br />
=== SPI interface connection ===<br />
For direct SPI flash programming, J-Link needs to be wired to the SPI flash in a specific way.<br />
For more information about the pinout for the J-Link SPI target interface, please refer to [[UM08001_J-Link_/_J-Trace_User_Guide#Pinout_for_SPI | The J-Link User Guide]].<br />
The minimum pins that need to be connected, are: VTref, GND, SPI-CLK, MOSI, MISO.<br />
If other components on the target hardware need to be kept in reset while programming the SPI flash (e.g. a CPU etc.), nRESET also needs to be connected.<br />
<br />
== Troubleshooting ==<br />
=== Target system has no power ===<br />
'''''Meaning:'''''<br><br />
J-Link could not measure the target (flash) reference voltage on pin 1 of its connector.<br />
<br>'''''Remedy:'''''<br><br />
The target interface of J-Link works with level shifters to be as flexible as possible.<br />
Therefore, the reference I/O voltage the flash is working with also needs to be connected to pin 1 of the J-Link connector.<br />
=== Programming / Erasing failed ===<br />
'''''Meaning:'''''<br><br />
The SPI communication speed may be too high for the given signal quality.<br />
<br>'''''Remedy:'''''<br><br />
Try again with a slower speed. If it still fails, check the quality of the SPI signals.<br />
=== Failed to verify Flash ID ===<br />
'''''Meaning:'''''<br><br />
J-Link could not verify the ID of the connected flash.<br />
<br>'''''Remedy:'''''<br><br />
Check the Flash ID entered in the flash parameters dialog, for correctness.</div>JanB