0% found this document useful (0 votes)
315 views186 pages

Cyclone Programmers: User Manual

Uploaded by

nick choi
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
315 views186 pages

Cyclone Programmers: User Manual

Uploaded by

nick choi
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 186

Cyclone FX Programmers

User Manual
Purchase Agreement
P&E Microcomputer Systems, Inc. reserves the right to make changes without further notice to any products herein to improve reliability, function, or
design. P&E Microcomputer Systems, Inc. does not assume any liability arising out of the application or use of any product or circuit described herein.
This software and accompanying documentation are protected by United States Copyright law and also by International Treaty provisions. Any use of
this software in violation of copyright law or the terms of this agreement will be prosecuted.
All the software described in this document is copyrighted by P&E Microcomputer Systems, Inc. Copyright notices have been included in the software.
P&E Microcomputer Systems authorizes you to make archival copies of the software and documentation for the sole purpose of back-up and protecting
your investment from loss. Under no circumstances may you copy this software or documentation for the purpose of distribution to others. Under no
conditions may you remove the copyright notices from this software or documentation.
This software may be used by one person on as many computers as that person uses, provided that the software is never used on two computers at the
same time. P&E expects that group programming projects making use of this software will purchase a copy of the software and documentation for each
user in the group. Contact P&E for volume discounts and site licensing agreements.
P&E Microcomputer Systems does not assume any liability for the use of this software beyond the original purchase price of the software. In no event will
P&E Microcomputer Systems be liable for additional damages, including any lost profits, lost savings or other incidental or consequential damages arising
out of the use or inability to use these programs, even if P&E Microcomputer Systems has been advised of the possibility of such damage.
By using this software, you accept the terms of this agreement.

©2015-2022 P&E Microcomputer Systems, Inc.


ARM and Cortex are registered trademarksof ARM Ltd. or its subsidiaries.
NXP, ColdFire, and Kinetis are registered trademarks of NXP Semiconductors.
Texas Instruments and TI are registered trademarks of Texas Instruments Incorporated.
STMicroelectronics is a registered trademark of STMicroelectronics, Inc.
macOS is a registered trademark of Apple, Inc.
All other product or service names are the property of their respective owners.

P&E Microcomputer Systems, Inc.


98 Galen St.
Watertown, MA 02472
617-923-0053
http://www.pemicro.com

Manual version: 1.30


January 2022
1 INTRODUCTION....................................................................................................................................... 10
1.1 Supported Devices ........................................................................................................................................10
1.2 Distinguishing Windows-Only And macOS/Linux-Specific Content ..............................................................11
1.2.1 Minimum Required Versions ....................................................................................................................................... 11
2 QUICK START GUIDE FOR SAP OPERATION....................................................................................... 12
2.1 Installing The Cyclone Software....................................................................................................................12
2.2 Setting Up The Cyclone Hardware................................................................................................................12
2.3 Creating A Stand-Alone Programming Image ..............................................................................................14
2.3.1 Advanced Features ..................................................................................................................................................... 18
2.4 Launching Cyclone Programming .................................................................................................................18
3 CYCLONE FX HARDWARE ..................................................................................................................... 20
3.1 Touchscreen LCD .........................................................................................................................................20
3.2 LED Indicators...............................................................................................................................................20
3.3 Start Button ...................................................................................................................................................20
3.4 Access Panel.................................................................................................................................................20
3.5 Cyclone System Power .................................................................................................................................21
3.6 RS232 Communication (Serial Port) .............................................................................................................21
3.7 Ethernet Communication...............................................................................................................................21
3.8 USB Communications ...................................................................................................................................21
3.9 Electromechanical Relays .............................................................................................................................21
3.10 Power Connectors.........................................................................................................................................22
3.11 Reset Button..................................................................................................................................................22
3.12 SDHC Port.....................................................................................................................................................22
3.13 Programming Control Port.............................................................................................................................23
3.13.1 Pin-Out And Definitions ............................................................................................................................................... 23
3.13.2 Powering the Programming Control Port..................................................................................................................... 24
3.13.3 Enabling Triggering on the Programming Control Port ............................................................................................... 24
3.13.4 Timing on the Programmming Control Port................................................................................................................. 25
3.13.5 Push Button / LED Example Circuit............................................................................................................................. 26
3.14 USB Expansion Port......................................................................................................................................26
3.15 Optional Oscillator (MON08 Only).................................................................................................................26
3.16 Cyclone Time / Real Time Clock ...................................................................................................................27
3.17 Power Jumper Settings .................................................................................................................................27
3.18 Debug Connectors ........................................................................................................................................27
3.19 Target Headers For Part# CYCLONE-FX-ARM ............................................................................................28
3.19.1 PORT A: 10-Pin Keyed Mini Connector (Kinetis, S32 (ARM), other PEmicro-Supported ARM devices) ................... 28
3.19.2 PORT B: 20-Pin Keyed Mini Connector (Kinetis, S32 (ARM), other PEmicro-Supported ARM devices) ................... 29
3.19.3 PORT C: 20-Pin Debug Connector (Kinetis, S32 (ARM), other PEmicro-Supported ARM devices) .......................... 31
3.20 Target Headers For Part# CYCLONE-FX-UNIV ...........................................................................................32
3.20.1 PORT A: 10-Pin Keyed Mini Connector (NXP Kinetis & S32 (ARM), other PEmicro-Supported ARM devices, Infineon
TriCore - DAP only) ..................................................................................................................................................... 32
3.20.2 PORT B: 20-Pin Keyed Mini Connector (Kinetis, S32 (ARM), other PEmicro-Supported ARM devices) ................... 33
3.20.3 PORT C: 14-Pin Debug Connector (MPC55xx-57xx, SPC5, DSC, S32 (Power)) ...................................................... 35
3.20.4 PORT D: 26-Pin Debug Connector (ColdFire V2/3/4)................................................................................................. 35
3.20.5 PORT E: 16-Pin Debug Connector (MON08).............................................................................................................. 36
3.20.6 PORT F: 6-Pin Debug Connector (RS08, HCS08, HC(S)12(X), S12Z, ColdFire +/V1, STM8 w/ adapter)................. 37
3.20.7 PORT G: 10-Pin Debug Connector (Power MPC5xx/8xx) - Cyclone FX Universal Only ............................................ 38
3.20.8 PORT H: 20-Pin Debug Connector (Kinetis, S32 (ARM), other PEmicro-Supported ARM devices, Infineon TriCore -
DAP only) .................................................................................................................................................................... 38
3.20.9 PORT C & PORT E (Renesas Adapter)...................................................................................................................... 40
3.21 Ribbon Cable.................................................................................................................................................40
4 TARGET POWER MANAGEMENT .......................................................................................................... 42
4.1 Cyclone Configuration ...................................................................................................................................42
4.2 Cyclone Setup ...............................................................................................................................................44
4.2.1 Independently Powered Target ................................................................................................................................... 44
4.2.2 Power provided by the Cyclone to the debug cable .................................................................................................... 44
4.2.3 External Power passed through the Cyclone and out 2.5 mm barrel port................................................................... 45
4.2.4 External Power passed through the Cyclone to the debug cable................................................................................ 45
4.2.5 Power provided by the Cyclone and out 2.5 mm barrel port ....................................................................................... 46
4.3 Setup Reminders...........................................................................................................................................46
5 TOUCHSCREEN LCD MENU................................................................................................................... 47
5.1 Home Screen ................................................................................................................................................47
5.1.1 Icons............................................................................................................................................................................ 47
5.1.2 Configurable Display Area........................................................................................................................................... 47
5.1.3 Status Window ............................................................................................................................................................ 48
5.1.4 Error Information Icon.................................................................................................................................................. 48
5.1.5 AUX Button (Appears If Configured) ........................................................................................................................... 48
5.2 Main Menu.....................................................................................................................................................48
5.2.1 Select Programming Image......................................................................................................................................... 50
5.2.2 Current Image Options ................................................................................................................................................ 50
5.2.3 Configure Cyclone Settings......................................................................................................................................... 52
5.2.4 Status .......................................................................................................................................................................... 55
6 CREATING AND MANAGING PROGRAMMING IMAGES....................................................................... 56
6.1 Cyclone Image Creation Utility .....................................................................................................................56
6.1.1 Non-ARM Devices....................................................................................................................................................... 56
6.1.2 Select New Device (ARM Devices) ............................................................................................................................. 57
6.1.3 Secure Boot Settings - NXP i.MX RT Only.................................................................................................................. 58
6.1.4 Secure JTAG Settings - NXP i.MX RT Only................................................................................................................ 59
6.1.5 Programming Sequence.............................................................................................................................................. 60
6.1.6 Programming Operations ............................................................................................................................................ 63
6.1.7 Communication Mode and Rate Settings.................................................................................................................... 67
6.1.8 Target Power and Voltage Settings............................................................................................................................. 67
6.1.9 Image Description ....................................................................................................................................................... 68
6.1.10 ProCryption Security Features .................................................................................................................................... 68
6.1.11 FX Exclusive Features ................................................................................................................................................ 71
6.1.12 Store Image To Cyclone.............................................................................................................................................. 71
6.1.13 Store Image To Disk.................................................................................................................................................... 72
6.1.14 Save Cyclone Configuration........................................................................................................................................ 72
6.1.15 Load Cyclone Configuration ........................................................................................................................................ 72
6.2 Managing Multiple SAP Images ....................................................................................................................72
6.2.1 Delete Images From Internal/External Memory........................................................................................................... 73
6.2.2 Add/Remove Images From The Commit Changes Panels ......................................................................................... 73
7 CYCLONE PROGRAMMER MANUAL CONTROL................................................................................... 75
7.1 Operation Via Start Button ............................................................................................................................75
7.1.1 LED Indicators............................................................................................................................................................. 75
7.1.2 Procedure via Start Button / LEDs .............................................................................................................................. 75
7.1.3 Example ...................................................................................................................................................................... 75
7.2 Operation Via LCD Touchscreen Menu ........................................................................................................75
7.3 Home Screen ................................................................................................................................................76
7.3.1 Icons............................................................................................................................................................................ 76
7.3.2 Configurable Display Area........................................................................................................................................... 76
7.4 Status Window ..............................................................................................................................................76
7.4.1 Error Information Icon.................................................................................................................................................. 77
7.4.2 AUX Button (Appears If Configured) ........................................................................................................................... 77
7.4.3 Main Menu................................................................................................................................................................... 77
8 CYCLONE PROGRAMMER AUTOMATED CONTROL ........................................................................... 80
8.1 Cyclone Control Suite - Overview .................................................................................................................80
8.1.1 macOS/Linux Support Notes....................................................................................................................................... 80
8.1.2 Components ................................................................................................................................................................ 80
8.1.3 Standard Features....................................................................................................................................................... 81
8.1.4 Advanced Features ..................................................................................................................................................... 81
8.1.5 PEmicro Compatible Hardware ................................................................................................................................... 81
8.2 Cyclone Control SDK ....................................................................................................................................82
8.2.1 Introduction ................................................................................................................................................................. 82
8.2.2 Backwards Compatibility With Classic Cyclone Control API ...................................................................................... 82
8.2.3 Getting Started with the Cyclone Control Library File - Windows Users .................................................................... 82
8.2.4 Getting Started with the Cyclone Control Library File - macOS/Linux Users ............................................................ 83
8.2.5 Initialization.................................................................................................................................................................. 85
8.2.6 Finalization .................................................................................................................................................................. 85
8.2.7 Initial Cyclone Setup.................................................................................................................................................... 86
8.2.8 Typical Usage.............................................................................................................................................................. 86
8.2.9 External Memory Storage Support .............................................................................................................................. 86
8.2.10 Application Programming Interface (API) .................................................................................................................... 87
8.3 Cyclone Control Console.............................................................................................................................101
8.3.1 Startup....................................................................................................................................................................... 101
8.3.2 Command-Line Parameters ...................................................................................................................................... 101
8.3.3 Examples................................................................................................................................................................... 104
8.4 Cyclone Control GUI ...................................................................................................................................105
8.4.1 The Connection Dialog.............................................................................................................................................. 106
8.4.2 The Control Tabs....................................................................................................................................................... 107
8.4.3 The Status and Error Window: .................................................................................................................................. 112
8.5 License ........................................................................................................................................................112
8.5.1 Hardware Licensing................................................................................................................................................... 112
9 SAP IMAGE COMPILER (SCRIPTED PROGRAMMING & IMAGE CREATION) .................................. 113
9.1 Launching From the Command Line ...........................................................................................................113
9.1.1 Command-Line Example........................................................................................................................................... 113
9.1.2 Filename and Additional Command-Line Parameters............................................................................................... 114
9.1.3 List of Valid Command-Line Parameters................................................................................................................... 114
9.2 Configuration (.CFG) File Contents.............................................................................................................115
9.2.1 Sample .CFG File...................................................................................................................................................... 115
9.2.2 Configuration Commands.......................................................................................................................................... 116
9.2.3 Programming Commands ......................................................................................................................................... 123
9.2.4 Using Command Line Parameters Inside a .CFG File .............................................................................................. 123
9.2.5 Sample Batch File ..................................................................................................................................................... 124
9.3 CSAP Error Returns ....................................................................................................................................125
10 ETHERNET CONFIGURATION.............................................................................................................. 127
10.1 Network Architectures .................................................................................................................................127
10.2 Network Parameters....................................................................................................................................127
10.3 Internet Protocol ..........................................................................................................................................128
10.4 Connecting The Cyclone Device .................................................................................................................128
10.4.1 Connecting the Cyclone to the PC over a network.................................................................................................... 128
10.4.2 Connecting Cyclone-to-PC via an Ethernet cable ..................................................................................................... 129
10.5 Cyclone IP Setup Via LCD Menu ................................................................................................................129
10.5.1 Configure Network Settings....................................................................................................................................... 129
10.6 Configuring Cyclone Network Settings using the Cyclone Control GUI ......................................................130
11 SAP IMAGE ENCRYPTION .................................................................................................................... 132
11.1 Overview .....................................................................................................................................................132
11.2 Encrypting/Decrypting a Programming Image.............................................................................................132
11.3 What is Encrypted in an eSAP File, and How .............................................................................................132
11.4 Managing Encryption For Production Programming ...................................................................................133
11.4.1 Provisioning a Cyclone with an ImageKey ................................................................................................................ 133
11.4.2 Removing ImageKeys From A Cyclone .................................................................................................................... 135
11.4.3 Loading and Programming with Encrypted SAP Images .......................................................................................... 135
11.4.4 Encryption Status of SAP Images ............................................................................................................................. 136
11.5 Safer Production That's Easy To Implement ...............................................................................................137
12 USING A BARCODE SCANNER TO SELECT AN IMAGE & INITIATE PROGRAMMING ................... 138
12.1 Introduction..................................................................................................................................................138
12.2 Scanning Procedure....................................................................................................................................138
12.3 Potential Benefits Of Programming Via Barcode Scan ...............................................................................139
12.4 Enabling Barcode Scanner In Cyclone Menu..............................................................................................140
12.5 Creating A Barcode Test: Quick Example...................................................................................................140
12.6 Creating a Barcode Test: In Depth..............................................................................................................143
12.6.1 Barcode Test Creation and Testing Process............................................................................................................. 144
12.6.2 Character Types........................................................................................................................................................ 151
12.6.3 Enabling/Disabling A Barcode Scanner .................................................................................................................... 152
12.6.4 Ranges and Range Testing....................................................................................................................................... 153
12.6.5 Saving and Loading Barcode Test (.bar) Files .......................................................................................................... 153
12.6.6 Advanced Program Use ............................................................................................................................................ 155
12.6.7 References ................................................................................................................................................................ 158
12.7 Adding A Barcode Test Into A Programming Image ...................................................................................158
12.8 Programming Barcode Information Into Memory ........................................................................................159
12.9 Troubleshooting...........................................................................................................................................160
13 AUTOMATIC SERIAL NUMBER MECHANISM ..................................................................................... 161
13.1 Understanding Serialization ........................................................................................................................161
13.2 Serialize Utility.............................................................................................................................................161
13.2.1 Startup And File Options ........................................................................................................................................... 162
13.2.2 Serial Number File..................................................................................................................................................... 163
13.2.3 Serial File Unique ID ................................................................................................................................................. 163
13.2.4 Serial File Name To Display...................................................................................................................................... 163
13.2.5 Serial File Notes ........................................................................................................................................................ 163
13.2.6 Number of Bytes in Serial Number............................................................................................................................ 163
13.2.7 Starting HEX Address ............................................................................................................................................... 163
13.2.8 Count Sequence ....................................................................................................................................................... 163
13.2.9 Serial Number Bytes as Hex ..................................................................................................................................... 163
13.2.10 Hex Upper Bounds .................................................................................................................................................... 164
13.2.11 Hex Lower Bounds .................................................................................................................................................... 164
13.2.12 Binary, Numeric, Constant, Alpha Upper, Alpha Lower, and Printable ..................................................................... 164
13.2.13 Byte Program Order .................................................................................................................................................. 164
13.3 Serial File Properties ...................................................................................................................................164
13.3.1 Serial File Example ................................................................................................................................................... 164
13.4 Serial Number Handling ..............................................................................................................................165
13.4.1 Invoking A Serial File Via Command-Line................................................................................................................. 166
13.5 Creating A SAP Image With Multiple Serial Numbers.................................................................................166
13.6 Shared Serial Numbers ...............................................................................................................................167
13.6.1 Example .................................................................................................................................................................... 167
14 RUN TEST - CUSTOM TEST APPLICATIONS IN THE PROGRAMMING SEQUENCE ....................... 172
14.1 Run Test Availability....................................................................................................................................172
14.2 “Run Test” Applications ...............................................................................................................................172
14.3 Adding Run Tests to the Cyclone Programming Script ...............................................................................173
14.4 Run Test API Calls ......................................................................................................................................174
14.5 Example Programming Images With Run Test ...........................................................................................175
15 TROUBLESHOOTING ............................................................................................................................ 176
15.1 My Cyclone Is Non-Responsive, Is There A Way To Re-Activate It?..........................................................176
15.1.1 What Is Bootloader Mode?........................................................................................................................................ 176
15.1.2 When Is Bootloader Mode Used? ............................................................................................................................. 176
15.1.3 How Is Bootloader Mode Entered? ........................................................................................................................... 176
15.2 I Received A “SAP Image Needs To Be Updated” Error Using A Next-Gen Cyclone, How Do I Update? .176
15.2.1 How Do I Use SAP_Convert_Console.exe? ............................................................................................................. 176
15.3 When Trying To Install The CYCLONE Software, A Popup WDREG Error Occurs Telling Me That There Are
Open Devices Using WinDriver. ..................................................................................................................177
15.4 What should I do if the target device does not enter debug mode, and I receive the error message “Cannot
enter background mode”?............................................................................................................................178
16 ERROR CODES...................................................................................................................................... 181
16.1 Debug Mode Communication Related Errors..............................................................................................181
16.2 SAP Image Handling Related Errors...........................................................................................................181
16.3 SAP Communication Handling Related Errors............................................................................................182
16.4 SAP Algorithm Header Operation Handling Related Errors ........................................................................182
16.5 SAP Operation Related Errors ....................................................................................................................182
16.6 SAP Blank Check Range and Module Related Errors ................................................................................182
16.7 SAP Erase Range and Module Related Errors ...........................................................................................182
16.8 SAP Program Byte, Word, and Module Related Errors...............................................................................182
16.9 SAP Verify Checksum Related Errors.........................................................................................................183
16.10 SAP Verify Range and Module Related Errors ...........................................................................................183
16.11 SAP User Function Related Errors..............................................................................................................183
16.12 SAP Trim Related Errors.............................................................................................................................183
16.13 Unrecoverable Fatal Errors .........................................................................................................................183
16.14 Operation Security Related Errors ..............................................................................................................184
16.15 External Memory-Related Errors.................................................................................................................184
16.16 Serial Number Related Errors .....................................................................................................................185
16.17 Download Count Related Errors..................................................................................................................185
16.18 System Hardware/Firmware/Logic Recoverable Errors ..............................................................................185
16.19 Barcode Scanner Errors..............................................................................................................................185
17 TECHNICAL INFORMATION.................................................................................................................. 186
17.1 Life Expectancy ...........................................................................................................................................186
17.2 Electrical Specifications...............................................................................................................................186
17.3 Mechanical Specifications ...........................................................................................................................186
17.4 Electromechanical Relays ...........................................................................................................................186
17.5 Debug Ports - CYCLONE-FX-ARM.............................................................................................................186
17.6 Debug Ports - CYCLONE-FX-UNIV ............................................................................................................186
17.7 International Shipping..................................................................................................................................186
17.8 Compliances/Standards ..............................................................................................................................186
1 INTRODUCTION
PEmicro's Cyclone FX production programmers are powerful, fast, and feature rich in-circuit
programming solutions. PEmicro offers two models which have the same feature set and only vary
by the devices supported.
Part# CYCLONE-FX-ARM supports a wide variety of ARM Cortex devices.
Part# CYCLONE-FX-UNIV supports those ARM Cortex devices as well as the following NXP
device families: Kinetis, LPC, S32, MPC55xx-57xx), MPC5xx/8xx, DSC, S12Z, RS08, S08, HC08,
HC(S)12(X), ColdFire. It also supports Infineon’s TriCoreTM (DAP only - AUDOTM TC1xx and
AURIXTM TC2xx/TC3xx) and STMicroelectronics’ SPC5 & STM8 (with STM8 adapter). A separate
Renesas adapter additionally allows support for Renesas’ R8C, H8, H8S/Tiny, M16C, M16C80,
M32C, RL78, RX, RX63T, and RH850 devices.
Note: PEmicro refreshed Cyclone names and part numbers in July 2019. The part numbers listed on
earlier Cyclones will differ slightly. The hardware has not changed.

1.1 Supported Devices

PART#: CYCLONE-FX-UNIV

PART#: CYCLONE-FX-ARM

ARM Cortex Devices:


8/16/32 bit devices:
AutoChips: MCU
NXP: S32
Atmel: SAMxxx ColdFire® V1
Cypress: CCG2, CCG3PA, EZ-BLE-PSoC- ColdFire® V2/V3/V4
PRoC, EZ-BLE-PSoC6, FM3 Qorivva® (MPC5xxx)
PRoC-BLE, PSoC5, PSoC6 DSC
GigaDevice: GD32 MPC5xx/8xx
Infineon: PSoC4, Traveo II, XMC ARM Nexus (MAC7xxx)
Maxim Integrated: DARWIN S12Z
HC(S)12(X)
Nuvoton: NuMicro® HC08, HCS08, RS08
NordicSemi: nRF51, nRF52, nRF53 Infineon: TriCore (DAP only - AUDO
NXP: Automotive, iMX, Kinetis, LPC, TC1xx & AURIX TC2xx/
Sensors, Trimension, Vybrid, TC3xx)
Wireless STMicro: SPC5
ON Semiconductor: RSL10 STM8 (with STM8 adapter)
OnBright: OB90Rxx Renesas: (requires Renesas adapt-
Redpine Signals: WiSeMCU er)
Renesas: RA, SmartBond, Synergy H8 and H8S/Tiny, MC16C
Silergy (Maxim): AM0x, AM1x, MAX716xx and M16C80, M32C, R8C,
RH850, RL78, RX600
Silicon Labs: EFM32, EFR32, SiM3, Wi-Fi
STMicroelectronics: Bluetooth, STM32
Texas Instruments: LM3S, LM4, MSP, SimpleLink,
TM4C12x
Toshiba: TX00, TX03, TX04
WIZnet: W7500x
ZHIXIN: MCU

Figure 1-1: Cyclone FX Device Support by Part Number

Cyclone FX programmers are designed to withstand the demands of a production environment.


They are Stand-Alone Programmers (SAP) that can be operated manually or used to host
automated programming. In manual SAP mode the Cyclone is operated using the touchscreen
LCD Menu and/or the Start button. Host-controlled SAP mode, for automated programming, is
accomplished using the Cyclone Control Suite. Cyclone FX programmers also include

User Manual For Cyclone FX Programmers 10


ProCryption Security features. This allows users to create RSA/AES encrypted programming
images that use their own uniquely generated ImageKey. These encrypted images may only be
used to program when on Cyclones that are also pre-configured with the same ImageKey. This
keeps the user securely in control of both their IP and the programming process. See CHAPTER
11 - SAP IMAGE ENCRYPTION.

1.2 Distinguishing Windows-Only And macOS/Linux-Specific Content


Many control and automation features offered by the Cyclone Control Suite are available for
macOS and Linux platforms, in addition to Windows. See CHAPTER 8 - CYCLONE
PROGRAMMER AUTOMATED CONTROL. However, some elements such as Image Creation
remain Windows-only.
The matrix below indicates at a high level which Cyclone features are available for each platform:

Windows macOS Linux


Cyclone Control GUI x x x
Cyclone Control Console x x x
Cyclone Control SDK x x x
Image Creation Utility x
SAP Image Compiler x
Initiate Programming with
x
Barcode Scanner
Automatic Serial Number
x
Mechanism

Table A-1. Cyclone Feature Support

In this user manual, information that pertains to the Windows platform only, or is particular to
macOS/Linux, is indicated by the symbols below. Content can be considered to apply to all three
platforms unless otherwise specified.
Windows-only:
macOS:
Linux:

1.2.1 Minimum Required Versions


The following are the minimum versions required for macOS/Linux support.
macOS: 10.13 High Sierra
Linux: 18.04 LTS

User Manual For Cyclone FX Programmers 11


2 QUICK START GUIDE FOR SAP OPERATION
This guide will allow the user to set up and program a simple Stand-Alone Programming (SAP) image
with the Cyclone by completing the following steps.
• Installing the Cyclone software
• Setting up the Cyclone hardware
• Creating a stand-alone programming image
• Launching Cyclone programming
This guide is intended as a supplement to the Cyclone’s User Manual, which contains in-depth
information about the topics covered here and much more.

2.1 Installing The Cyclone Software


First, the Cyclone software should be installed on the user’s PC. It can be downloaded from the
Support & Downloads tab on the pemicro.com Cyclone product page, or directly from https://
www.pemicro.com/downloads/download_file.cfm?download_id=481.

For macOS/Linux, download the .TGZ file from the Support & Downloads tab, or directly from https://
www.pemicro.com/downloads/download_file.cfm?download_id=577.
Once the software is downloaded, the user should install it on their PC. If Cyclone software is already
installed on the PC, it is recommended that the old installation be removed before the user installs the
latest software.

2.2 Setting Up The Cyclone Hardware


Step 1. Configure Cyclone power settings
The Cyclone has several different power configurations. The label on the bottom of the Cyclone
indicates the appropriate Jumper settings for each. The user should install the Jumpers as indicated
for their desired power configuration.
The Jumpers are located underneath the Cyclone’s access panel. They are labeled “Power Jumpers.”
and numbered from 1-4. The Cyclone-LC-ARM is shown in the example below; the jumper location will
be similar for all Cyclone models.

User Manual For Cyclone FX Programmers 12


If power is provided via the Cyclone, the user may need to configure the programming image
accordingly. Image creation and configuration is discussed in Section 2.3 - Creating A Stand-Alone
Programming Image.
For more information on the various power configurations, the user should refer to their Cyclone’s User
Manual. There is a also a blog post that covers this topic at: http://www.pemicro.com/blog/
index.cfm?post_id=121

Step 2. Connect Cyclone to a PC (for programming image setup)


The Cyclone programmer should be connected to the PC via USB, Serial, or Ethernet. Cables for each
of these options are included with the Cyclone.
Note: An Ethernet connection requires IP setup on the Cyclone unit; please refer to the Cyclone’s User
Manual for more information.

Step 3. Connect Cyclone to target


A ribbon cable should be connected from the appropriate Cyclone header (located under the Cyclone’s
access panel) to the header for your target device. Ribbon cables are provided with the Cyclone.

User Manual For Cyclone FX Programmers 13


Step 4. Plug in power to the Cyclone
The provided power supply should be plugged into the System Power jack of the Cyclone programmer.
Other power connections should be made according to the power configuration selected in Step 1.

On power-up the user may need to agree to a firmware update on the Cyclone unit.

2.3 Creating A Stand-Alone Programming Image


A stand-alone programming (SAP) image is the result of pre-processing the programming algorithms,
data to be programmed, programming options, and scripted programming commands. These are
combined into a single encrypted file. This SAP image can then be loaded onto the Cyclone and used
to program, without need for the Cyclone to be connected to a PC.
The Cyclone Image Creation Utility, shown below, allows the user to configure and save SAP images.
A simple programming image can be created in 6 steps:
Step 1. Run Cyclone Image Creation Utility
Step 2. Select Device
Step 3. Set Up Programming Sequence
Step 4. Add Basic Programming Commands
Step 5. Configure Additional Settings
Step 6. Save SAP Image To Cyclone

User Manual For Cyclone FX Programmers 14


The following instructions walk the user through each of these steps:
Step 1. Run Cyclone Image Creation Utility (ARM devices)
CreateImage.exe is in the “ImageCreation” folder, in the location where the Cyclone software was
installed. For an in-depth description of the Cyclone Image Creation Utility, see Section 6.1 - Cyclone
Image Creation Utility.
Note: For non-ARM devices the user should instead run CreateImageClassic.exe. This utility is not
documented separately as it is extremely similar to CreateImage.exe, just organized differently.
Please follow the same concepts and procedures as below.

Step 2. Select Device


Select New Device is used to choose the target device, and then the specific device or architecture.

User Manual For Cyclone FX Programmers 15


Step 3. Programming Sequence Setup
The user should double-click on CM in the Programming Sequence window to choose the appropriate
Algorithm for the target device. They can navigate to the algorithm using the dialog provided.

Based on the algorithm that was selected, additional commands will be made available in the box of

User Manual For Cyclone FX Programmers 16


programming commands on the left.
The user should then double-click on the SS command to specify the Object Code.

Step 4. Adding Basic Programming Commands


The user should then add other basic programming commands, using the list of commands on the left
side of the Programming Sequence area. The arrow and buttons allow the user to add, remove, and
re-sequence the commands, in the box on the right. As an example, some basic commands might be
• Erase (if needed)
• Program
• Verify (if needed)

Note: Launch Script Wizard can also be used to quickly complete Steps 3 and 4 (not available for NXP
i.MX devices).

Step 5. Other Settings


The user should then specify any other settings that the SAP image should contain in order to program
correctly, such as
• Communication SWD vs JTAG

User Manual For Cyclone FX Programmers 17


• Shift frequency
• Target Power and Voltage Settings
These settings can be made using the corresponding areas of the Cyclone Image Creation Utility.

Step 6. Save SAP image to Cyclone


The user should then add an Image Description and save the SAP image by clicking the button to
“Store Image to Disk,“ or “Store Image to Cyclone.” For this quick start the user will likely want to save
it to the Cyclone. The image will be automatically selected as the current SAP image on the Cyclone.

2.3.1 Advanced Features


Cyclone programmers can take advantage of several advanced features that are beyond the scope of
this Getting Started guide, such as RSA/AES encrypted programming images, programming
restrictions on images (see Section 6.1.10 - ProCryption Security Features), and use of a barcode
scanner to launch programming (see CHAPTER 12 - USING A BARCODE SCANNER TO SELECT
AN IMAGE & INITIATE PROGRAMMING). CYCLONE FX programmers include all of these features,
and CYCLONE programmers can use many of these features with the appropriate activation license.

2.4 Launching Cyclone Programming


There are three ways to launch programming.
1. Cyclone Start Button Press - The user simply presses the Start button located on top of
the Cyclone programmer.

User Manual For Cyclone FX Programmers 18


2. Cyclone Control Console (command-line utility) - The user writes a script that specifies
parameters and initiates programming using the command line. More information is avail-
able in the Cyclone’s User manual or at: http://www.pemicro.com/blog/
index.cfm?post_id=142
3. SDK - The SDK is a software library that is used in conjunction with the user’s own code.
The user writes a customer application that uses this library of functions to launch pro-
gramming. More information is available in the Cyclone’s User Manual, or at: http://
www.pemicro.com/blog/index.cfm?post_id=139
The “Success” or “Error” LED will illuminate to let the user know the result of programming.
Note: If programming is unsuccessful when using this quick start procedure, the user may instead wish
to use the included PROG software for their target device. The PROG software allows the user to
manually walk through the programming procedure step by step, which may help determine which
part of setup or programming function is causing difficulty.

User Manual For Cyclone FX Programmers 19


3 CYCLONE FX HARDWARE
The following is an overview of the features and interfaces of Cyclone FX programmers. Many of
these interfaces are labeled on the underside of the plastic case.

Figure 3-1: Cyclone FX Top View

3.1 Touchscreen LCD


The LCD Touchscreen displays information about the Cyclone’s configuration and the
programming process, and also allows the user to navigate the Cyclone’s menus. The location of
the Touchscreen LCD is shown in Figure 3-1.

3.2 LED Indicators


The LED indicators for Error or Success will illuminate depending on the results of the
programming process and provide a clear visual indication of the results. The location of the LED
Indicators is shown in Figure 3-1.

3.3 Start Button


The Start Button can be used to begin the programming process manually, provided that the
Cyclone is properly configured. The location of the Start Button is shown in Figure 3-1.

3.4 Access Panel


The Access Panel can easily be opened to allow the user to connect/disconnect ribbon cables
from the headers, or to configure the Cyclone’s Power Jumpers to select one of the available
Power Management setups. The location of the Access Panel is shown in Figure 3-1; a layout of
the headers and jumpers beneath the Access Panel is shown in Figure 3-11.

User Manual For Cyclone FX Programmers 20


Figure 3-2: Cyclone FX Right Side View

3.5 Cyclone System Power


The Cyclone FX programmer requires a regulated 6V DC Center Positive power supply with 2.5/
5.5mm female plug. Cyclones derive power from the Power Jack located on the right end of the
unit. The location of Cyclone System Power is shown in Figure 3-2.

3.6 RS232 Communication (Serial Port)


The Cyclone FX provides a DB9 Female connector to communicate with a host computer through
the RS232 communication (115200 Baud, 8 Data bits, No parity, 1 Stop bit). The location of the
Serial Port is shown in Figure 3-2.

3.7 Ethernet Communication


The Cyclone FX provides a standard RJ45 socket to communicate with a host computer through
the Ethernet Port (10/100 BaseT). The location of the Ethernet Port is shown in Figure 3-2.

3.8 USB Communications


The Cyclone FX provides a USB connector for Universal Serial Bus communications between the
Cyclone and the host computer. The Cyclone FX is a USB 2.0 Full-Speed compliant device. The
location of the USB Port is shown in Figure 3-2.

3.9 Electromechanical Relays


Inside the Cyclone FX programmer, two electromechanical relays are used to cycle target power.
The specifications of the relays are as following:
Maximum switched power: 30W or 125 VA
Maximum switched current: 1A
Maximum switched voltage: 150VDC or 300VAC
UL Rating: 1A at 30 VDC
1A at 125 VAC
PEmicro only recommends switching DC voltages up to 24 Volts.

User Manual For Cyclone FX Programmers 21


Figure 3-3: Cyclone FX Front Side View

3.10 Power Connectors


The Cyclone FX programmers provide a Target Power Supply Input Jack and a Target Power
Supply Output Jack with 2.5/5.5 mm Pin Diameter. The power jacks are connected or
disconnected by two electromechanical relays. When connected, the Center Pin of the Target
Power Supply Input Jack is connected to the Center Pin of the Target Power Supply Output Jack.
When disconnected, both terminals of the Target Power Supply Output Jack are connected to
GND via a 1W, 100 Ohm resistor. The location of Target Power In is shown in Figure 3-3, and the
location of Target Power Out is shown in Figure 3-3.

3.11 Reset Button


The Reset Button performs a hard reset of the Cyclone system. The location of the Reset Button is
shown in Figure 3-3.

Figure 3-4: Cyclone FX Rear Side View

3.12 SDHC Port


Note: The SDHC port is activated on all Cyclone FX programmers, and may be activated on Cyclone
LC programmers via purchase of the SDHC Port Activation License.

The SDHC port allows the user to store programming images that are, individually or collectively,
larger than the Cyclone’s internal memory. It also makes it quicker and more convenient to swap
programming images. PEmicro offers certified SDHC cards on our website at pemicro.com. The
location of the SDHC Port is shown in Figure 3-4.
Programming images are managed on the SD card in exactly the same way as they are in the
Cyclone’s internal memory. Please see Section 6.2 - Managing Multiple SAP Images for more
information about using the Manage Images utility.
To view detailed information about the status of the SDHC card/port, tap the icon bar at the top of
the touchscreen menu. This status can provide you with relevant information if you are
encountering any difficulty while trying to use an SDHC card.

User Manual For Cyclone FX Programmers 22


SDHC cards with a memory capacity up to 4GB are supported. Cards with a larger capacity may
work but have not been tested by PEmicro.

3.13 Programming Control Port


The Programming Control Port is a 10-pin interface which allows external hardware the ability to
launch programming and read success, failure, and busy/idle status from the Cyclone FX through
standard I/O signals. This allows simple automated control of the Cyclone without using one of the
communications interfaces (Serial, USB, Ethernet).
The port can be configured to work with I/O signals from 1.6V-5.5V. The signal port provides a 5V
power output which can be used to power external electronics.

Figure 3-5: Port and Pin 1 Location (Shown on Cyclone FX)

3.13.1 Pin-Out And Definitions


Below is the pin-out of the programming control port and the definitions of the signals:

Figure 3-6: Programming Control Port Pin-Out

Pin# Signal Name Description


The Cyclone provides a constant 5v output on this pin which may be
1 PWR_5V_OUT used to power external circuitry.
2 GND Should be connected to the GND of any controlling circuitry.
This voltage is used to drive the output pins of the programming con-
trol port and is used as a reference for the input pins. This voltage can
3 VCCIO_IN be from 1.6v-5.5v. This pin may be directly connected to the
PWR_5V_OUT output pin of the Programming Control Port, if 5v op-
eration of the port is desired
4 EXTRA_IN2 Currently unused.
5 EXTRA_IN21 Currently unused.
Falling edge sensitive pin which will launch programming of the cur-
rently selected image on the Cyclone (if ~SENSE_IN is low and trig-
6 ~START_IN gering is enabled with the “controlporttriggerenable” property in the
Cyclone).

User Manual For Cyclone FX Programmers 23


Pin# Signal Name Description
A low value indicates the most recent programming operation was
successful. A high value means that there is no success to report (pro-
7 ~SUCCESS_OUT gramming is on-going, an error occurred, no programming launch has
occurred, too much time has passed since last programming opera-
tion, etc).
A low value indicates the most recent programming operation failed.
A high value means that there is no error to report (programming is on-
8 ~ERROR_OUT going, programming was successful, no programming launch has oc-
curred, too much time has passed since last programming operation,
etc).
A low indicates the Cyclone is IDLE and can accept a programming
9 ~IDLE_OUT launch operation. A high indicates the Cyclone is currently running a
programming operation.

10 ~SENSE_IN An input which must be driven low to enable the programming control
port inputs.

3.13.2 Powering the Programming Control Port


To allow the Cyclone to drive the port outputs to show the current programming state, and to allow
the Cyclone to properly interpret input signals on the port, the Programming Control Port I/O
voltage must be set. This is done by connecting an external voltage of 1.6v-5.5v to the VCCIO_IN
pin of the port. This VCCIO_IN pin may be directly connected to the PWR_5V_OUT output pin of
the Signal Control Port if 5v operation of the port is desired. If connecting to external circuitry which
runs at a different voltage, such a 3v, simply connect the desired voltage to the VCCIO_IN pin.
Once powered, the outputs (~SUCCESS_OUT, ~ERROR_OUT, and ~IDLE_OUT) become
actively driven.

3.13.3 Enabling Triggering on the Programming Control Port


The Programming Control Port allows programming to be launched from the Programming Control
Port. For this to happen, the triggering must previously have been enabled in the settings of the
Cyclone (see below) and the port must be detected as active.
The Programming Control Port is considered active if there is an appropriate voltage applied to the
VCCIO_IN pin and the ~SENSE_IN signal is driven low.
To enable trigger in the settings of the Cyclone, the “controlporttriggerenable” property in the
Cyclone must have been enabled at some point (this setting is stored in the Cyclone once set).
This can be done via the Cyclone Control SDK, Cyclone Control Console, or Cyclone Control GUI.
For the Cyclone Control Console, an example command which reads this property for a Cyclone
named “Universal_PEM0927F6” is:
cycloneControlConsole -cyclone=Universal_PEM0927F6 -getproperty=hardwareproperties,0,controlporttriggerenable

For the Cyclone Control Console, an example command which sets this property for a Cyclone
named “Universal_PEM0927F6” is:
cycloneControlConsole -cyclone=Universal_PEM0927F6 -setproperty=hardwareproperties,0,controlporttriggerenable,1

In the Cyclone Control GUI, this property may be accessed by opening the Cyclone and choosing
the “Properties” tab:

User Manual For Cyclone FX Programmers 24


Figure 3-7: Properties Tab

To set the property, highlight it and click the … button on that line. Enter the value 1 to enable and
0 to disable triggering

Figure 3-8: Setting The Property

The triggering should then show as active (note that ~SENSE_IN will also need to be driven low for
triggering to work):

Figure 3-9: Active Triggering

3.13.4 Timing on the Programmming Control Port


In its default idle state, the Cyclone will drive the ~IDLE_OUT signal low. When a falling edge is
detected on the ~START_IN signal, the ~SUCCESS_OUT and ~ERROR_OUT signals will be
driven high and then the ~IDLE_OUT signal will be driven high (BUSY). Once programming is
complete, the ~SUCCESS_OUT and ~ERROR_OUT signals will be driven to reflect the result of
programming and then the ~IDLE_OUT signal will be driven back low.
A safe mechanism to launch programming on the Cyclone if controlled by edge sensitive circuitry:
1. Wait for ~IDLE_OUT to be low
2. Drive the ~START_IN signal low then back high (this edge is detected in HW on the
Cyclone and won’t be missed)
3. Wait for a negative edge on ~IDLE_OUT (i.e. wait for the Cyclone to go to BUSY then
IDLE)
4. Read the ~SUCCESS_OUT and ~ERROR_OUT signals to determine result
A safe mechanism to launch programming on the Cyclone without using edge sensitive circuitry
(polled method):

User Manual For Cyclone FX Programmers 25


1. Wait for ~IDLE_OUT to be low
2. Drive the ~START_IN signal low then back high (this edge is detected in HW on the
Cyclone and won’t be missed)
3. Wait 100mS for the Cyclone to recognize the ~START_IN falling edge on this port and to
set the ~IDLE_OUT signal
4. Wait for ~IDLE_OUT to go back low
5. Read the ~SUCCESS_OUT and ~ERROR_OUT signals to determine result

3.13.5 Push Button / LED Example Circuit


This following example circuit has a push button that triggers programming. The three LEDs show
the Success, Failure, and Idle/Busy lines.

Figure 3-10: Example Circuit

After setting up the above connections, pushing the button will trigger programming and the
Cyclone state can be seen on the LEDs.
Note: No separate license is required to use this port.

An example of how to use Raspberry Pi to launch programming via the Programming Control Port
is shown at:
http://www.pemicro.com/blog/index.cfm?post_id=222

3.14 USB Expansion Port


The location of the USB Expansion Port is shown in Figure 3-3. The USB Expansion Port supports
use of a bar code scanner, which can provide the user with helpful features during the
programming process. For detailed information on how to use the barcode scanner with a Cyclone
FX, please read Section 12 - USING A BARCODE SCANNER TO SELECT AN IMAGE &
INITIATE PROGRAMMING.

3.15 Optional Oscillator (MON08 Only)


Cyclone FX programmers with MON08 support (PEmicro Part# CYCLONE-FX-UNIV only) provide
a software configurable 9.8304MHz or 4.9152 MHz oscillator clock signal to Pin 13 of the MON08
Connector. The user may use this clock signal to overdrive the target RC or crystal circuitry. If this
signal is not used, just leave Pin 13 of the target MON08 header unconnected.
Please note that if the target already uses an oscillator as its clock, the Cyclone will NOT be able to
overdrive it. The clock should have sufficient drive to be used with a target system even if the
target system has an RC circuit or crystal connected.

User Manual For Cyclone FX Programmers 26


3.16 Cyclone Time / Real Time Clock
Cyclone FX programmers are equipped with a Real Time Clock (RTC) module designed to keep
accurate timing even when the Cyclone is turned off.
The Date & Time are displayed on the home screen. Date/Time settings can be configured by
navigating to the following menu using the touchscreen display:
Main Menu / Configure Cyclone Settings / Configure Time Settings
For more information on the available configuration options, see Section 5.2.3.3 - Configure
Time Settings (Cyclone Time / Real Time Clock).

3.17 Power Jumper Settings


The Power Jumpers must be set differently for various power management options that the
Cyclone FX offers. If the target is being powered independently of the Cyclone FX, all pins in the
Power Jumpers header must instead be left unpopulated. To reveal the Power Jumpers header, lift
the access panel on the left end of the Cyclone FX. The location is indicated as Power Jumpers in
Figure 3-11. Please see CHAPTER 4 - TARGET POWER MANAGEMENT for the correct jumper
settings for the Cyclone’s power management options. A quick guide to these settings is also
located on the underside label of the Cyclone FX.

3.18 Debug Connectors


When purchasing a Cyclone FX programmer, the user is able to choose between two part
numbers, each corresponding to a different level of device support. See the sticker on the
underside of the Cyclone to determine the PEmicro part# for your specific Cyclone FX
programmer.
PEmicro Part# CYCLONE-FX-ARM supports ARM Cortex devices only, so this programmer
provides one shrouded, un-keyed, 0.100-inch pitch dual row 0.025-inch square header, and two
shrouded, keyed 0.050-inch pitch dual row mini headers.
PEmicro Part# CYCLONE-FX-UNIV supports ARM Cortex devices and additionally supports
target connections to many 8-/16-/32-bit NXP architectures, so this programmer provides six
shrouded, un-keyed, 0.100-inch pitch dual row 0.025-inch square headers, and two shrouded,
keyed 0.050-inch pitch dual row mini headers.
To reveal the headers and connect/disconnect ribbon cables, lift the access panel on the left end
of the Cyclone. Each header is designated for one or more specific target architectures, as
indicated in Figure 3-11.

Figure 3-11: Target Headers & Power Jumpers (CYCLONE-FX-UNIV vs.CYCLONE-FX-ARM)

Mechanical drawings are shown below whose dimensions are representative of the pin size and
spacing of these headers.

User Manual For Cyclone FX Programmers 27


Note: The number of pins depicted in the mechanical drawings may differ from the Cyclone headers; the
drawings are provided simply to demonstrate pin size and spacing.

Figure 3-12: 20-Pin Un-Keyed Header Dimensions

Figure 3-13: Mini 10-Pin and Mini 20-Pin Keyed Header Dimensions

3.19 Target Headers For Part# CYCLONE-FX-ARM


PEmicro Part# CYCLONE-FX-ARM features 3 ports labeled A-C.

3.19.1 PORT A: 10-Pin Keyed Mini Connector (Kinetis, S32 (ARM), other PEmicro-Supported ARM
devices)

3.19.1.1 JTAG Pin Assignments


The Cyclone provides a keyed 10-pin 0.050-inch pitch double row connector for ARM targets. The
location of the this header is indicated as PORT A in Figure 3-11. The 10-pin keyed mini
connector pin definitions for JTAG mode are as follows:
10-Pin Keyed Mini Connector JTAG Mode Pin Assignments
PIN 1 - TVCC TMS - PIN 2
PIN 3 - GND TCK - PIN 4
PIN 5 - GND TDO - PIN 6
PIN 7 - NC TDI - PIN 8
PIN 9 - JTAG_MOD/NC* RESET - PIN 10
Note: * PIN9: Users of NXP i.MX processors are recommended to connect the JTAG_MOD signal to this

User Manual For Cyclone FX Programmers 28


pin to allow programming when secure JTAG is enabled. For all other processors, this pin should
be left as NC.

Cyclone FX programmers also support SWD Mode. This replaces the JTAG connection with a
clock and single bi-directional data pin.

3.19.1.2 SWD Mode Pin Assignments


10-Pin Keyed Mini Connector SWD Mode Pin Assignments
PIN 1 - TVCC TMS/SWDIO - PIN 2
PIN 3 - GND TCK/SWCLK - PIN 4
PIN 5 - GND NC* - PIN 6
PIN 7 - NC NC* - PIN 8
PIN 9 - JTAG_MOD/NC** RESET - PIN 10
Note: *The pin is reserved for internal use within the PEmicro interface.

Note: ** PIN9: Users of NXP i.MX processors are recommended to connect the JTAG_MOD signal to
this pin to allow programming when secure JTAG is enabled. For all other processors, this pin
should be left as NC.

SWD Mode is selected from the “Communication Mode” drop-down box in the Cyclone Image
Creation Utility:

Figure 3-14: Communications Mode Selection

3.19.1.2.1 High-Performance Communications


If high-performance options are available for the selected device they will appear in the “Shift
Frequency in MHz” drop-down. Cyclone FX programmers are capable of high-performance
communications when using certain ARM Cortex targets in SWD mode.

Figure 3-15: High-Performance Options

3.19.2 PORT B: 20-Pin Keyed Mini Connector (Kinetis, S32 (ARM), other PEmicro-Supported ARM
devices)

3.19.2.1 JTAG Mode Pin Assignments


The Cyclone provides a keyed 20-pin 0.050-inch pitch double row connector for ARM targets. The
location of the this header is indicated as PORT B in Figure 3-11. The 20-pin keyed mini
connector pin definitions for JTAG mode are as follows:
20-Pin Keyed Mini Connector JTAG Mode Pin Assignments
PIN 1 - TVCC TMS - PIN 2
PIN 3 - GND TCK - PIN 4
PIN 5 - GND TDO - PIN 6
PIN 7 - NC TDI - PIN 8
PIN 9 - JTAG_MOD/NC** RESET - PIN 10

User Manual For Cyclone FX Programmers 29


PIN 11 - NC NC* - PIN 12
PIN 13 - NC NC* - PIN 14
PIN 15 - GND NC* - PIN 16
PIN 17 - GND NC* - PIN 18
PIN 19 - GND NC* - PIN 20
Note: *The pin is reserved for internal use within the PEmicro interface.

Note: ** PIN9: Users of NXP i.MX processors are recommended to connect the JTAG_MOD signal to
this pin to allow programming when secure JTAG is enabled. For all other processors, this pin
should be left as NC.

3.19.2.2 SWD Mode Pin Assignments


Cyclone FX programmers also support SWD Mode. This replaces the JTAG connection with a
clock and single bi-directional data pin.
20-Pin Keyed Mini Connector SWD Mode Pin Assignments
PIN 1 - TVCC TMS/SWDIO - PIN 2
PIN 3 - GND TCK/SWCLK - PIN 4
PIN 5 - GND NC* - PIN 6
PIN 7 - NC NC* - PIN 8
PIN 9 - JTAG_MOD/NC** RESET - PIN 10
PIN 11 - NC NC* - PIN 12
PIN 13 - NC NC* - PIN 14
PIN 15 - GND NC* - PIN 16
PIN 17 - GND NC* - PIN 18
PIN 19 - GND NC* - PIN 20

Note: *The pin is reserved for internal use within the PEmicro interface.

Note: ** PIN9: Users of NXP i.MX processors are recommended to connect the JTAG_MOD signal to
this pin to allow programming when secure JTAG is enabled. For all other processors, this pin
should be left as NC.

SWD Mode is selected from the “Communication Mode” drop-down box in the Cyclone Image
Creation Utility:

Figure 3-16: Communications Mode Selection

3.19.2.2.1 High-Performance Communications


If high-performance options are available for the selected device they will appear in the “Shift
Frequency in M Hz” drop-down. Cyclone FX programmers are capable of high-performance
communications when using certain ARM Cortex targets in SWD mode.

Figure 3-17: High-Performance Options

User Manual For Cyclone FX Programmers 30


3.19.3 PORT C: 20-Pin Debug Connector (Kinetis, S32 (ARM), other PEmicro-Supported ARM
devices)

3.19.3.1 JTAG Mode Pin Assignments


The Cyclone provides a 20-pin 0.100-inch pitch double row connector for ARM targets. The
location of the this header is indicated as PORT C under Part# CYCLONE-FX-ARM in Figure 3-
11. The 20-pin standard connector pin definitions for JTAG mode are as follows:
20-Pin Standard Connector JTAG Mode Pin Assignments
PIN 1 - TVCC NC* - PIN 2
PIN 3 - TRST or NC GND - PIN 4
PIN 5 - TDI GND - PIN 6
PIN 7 - TMS GND - PIN 8
PIN 9 - TCK GND - PIN 10
PIN 11 - NC* GND - PIN 12
PIN 13 - TDO GND - PIN 14
PIN 15 - RESET GND - PIN 16
PIN 17 - NC* GND - PIN 18
PIN 19 - NC* GND - PIN 20
Note: *The pin is reserved for internal use within the PEmicro interface.

3.19.3.2 SWD Mode Pin Assignments


Cyclone FX programmers also support SWD Mode. This replaces the JTAG connection with a
clock and single bi-directional data pin.

20-Pin Standard Connector SWD Mode Pin Assignments


PIN 1 - TVCC NC* - PIN 2
PIN 3 - TRST or NC* GND - PIN 4
PIN 5 - NC* GND - PIN 6
PIN 7 - TMS/SWDIO GND - PIN 8
PIN 9 - TCK/SWCLK GND - PIN 10
PIN 11 - NC* GND - PIN 12
PIN 13 - NC* GND - PIN 14
PIN 15 - RESET GND - PIN 16
PIN 17 - NC* GND - PIN 18
PIN 19 - NC* GND - PIN 20

Note: *The pin is reserved for internal use within the PEmicro interface.

SWD Mode is selected from the “Communication Setings” drop-down box in the Settings tab of the
Cyclone Image Creation Utility:

Figure 3-18: Communications Mode Selection

3.19.3.2.1 High-Performance Communications


If high-performance options are available for the selected device they will appear in the “Shift
Frequency in MHz” drop-down. Cyclone FX programmers are capable of high-performance
communications when using certain ARM Cortex targets in SWD mode.

User Manual For Cyclone FX Programmers 31


Figure 3-19: High-Performance Options

3.20 Target Headers For Part# CYCLONE-FX-UNIV


PEmicro Part# CYCLONE-FX-UNIV features 6 ports labeled A-H.

3.20.1 PORT A: 10-Pin Keyed Mini Connector (NXP Kinetis & S32 (ARM), other PEmicro-Supported
ARM devices, Infineon TriCore - DAP only)

3.20.1.1 JTAG Mode Pin Assignments


The Cyclone provides a keyed 10-pin 0.050-inch pitch double row connector for ARM targets. The
location of the this header is indicated as PORT A in Figure 3-11. The 10-pin keyed mini
connector pin definitions for JTAG mode are as follows:
10-Pin Keyed Mini Connector JTAG Mode Pin Assignments
PIN 1 - TVCC TMS - PIN 2
PIN 3 - GND TCK - PIN 4
PIN 5 - GND TDO - PIN 6
PIN 7 - NC TDI - PIN 8
PIN 9 - JTAG_MOD/NC* RESET - PIN 10
Note: * PIN9: Users of NXP i.MX processors are recommended to connect the JTAG_MOD signal to this
pin to allow programming when secure JTAG is enabled. For all other processors, this pin should
be left as NC.

3.20.1.2 SWD Mode Pin Assignments

Cyclone FX programmers also support SWD Mode. This replaces the JTAG connection with a
clock and single bi-directional data pin.

10-Pin Keyed Mini Connector SWD Mode Pin Assignments


PIN 1 - TVCC TMS/SWDIO - PIN 2
PIN 3 - GND TCK/SWCLK - PIN 4
PIN 5 - GND NC* - PIN 6
PIN 7 - NC NC* - PIN 8
PIN 9* - JTAG_MOD/NC** RESET - PIN 10
Note: *The pin is reserved for internal use within the PEmicro interface.

Note: ** PIN9: Users of NXP i.MX processors are recommended to connect the JTAG_MOD signal to
this pin to allow programming when secure JTAG is enabled. For all other processors, this pin
should be left as NC.

SWD Mode is selected from the “Communication Mode” drop-down box in the Cyclone Image
Creation Utility:

User Manual For Cyclone FX Programmers 32


Figure 3-20: Communications Mode Selection

3.20.1.2.1 High-Performance Communications


If high-performance options are available for the selected device they will appear in the “Shift
Frequency in MHz” drop-down. Cyclone FX programmers are capable of high-performance
communications when using certain ARM Cortex targets in SWD mode.

Figure 3-21: High-Performance Options

3.20.1.3 DAP Connector Pin Assignments (Target Board Has Dedicated DAP Connector Port)
Users whose target board does not have a dedicated DAP Connector should refer instead to Port
H in Section 3.20.8.3 - DAP Connector Pin Assignments (Target Board Does Not Have
Dedicated DAP Connector Port).
The keyed 10-pin 0.050-inch pitch double row connector of the CYCLONE-FX-UNIV model
supports Infineon TriCore targets (AUDOTM TC1xx and AURIXTM TC2xx/TC3xx). The location of
the this header is indicated as PORT A in Figure 3-11. The 10-pin keyed mini connector pin
definitions for DAP connectors are as follows:
10-Pin Keyed Mini Connector DAP Pin Assignments
PIN 1 - TVCC DAP1 - PIN 2
PIN 3 - GND DAP0 - PIN 4
PIN 5 - GND NC* - PIN 6
PIN 7 - NC NC* - PIN 8
PIN 9 - NC* RESET - PIN 10
Note: *The pin is reserved for internal use within the PEmicro interface.

3.20.2 PORT B: 20-Pin Keyed Mini Connector (Kinetis, S32 (ARM), other PEmicro-Supported ARM
devices)

3.20.2.1 JTAG Mode Pin Assignments


The Cyclone provides a keyed 20-pin 0.050-inch pitch double row connector for ARM targets. The
location of the this header is indicated as PORT B in Figure 3-11. The 20-pin keyed mini
connector pin definitions for JTAG mode are as follows:
20-Pin Keyed Mini Connector JTAG Mode Pin Assignments
PIN 1 - TVCC TMS - PIN 2
PIN 3 - GND TCK - PIN 4
PIN 5 - GND TDO - PIN 6
PIN 7 - NC TDI - PIN 8
PIN 9 - JTAG_MOD/NC** RESET - PIN 10
PIN 11 - NC NC* - PIN 12
PIN 13 - NC NC* - PIN 14
PIN 15 - GND NC* - PIN 16

User Manual For Cyclone FX Programmers 33


PIN 17 - GND NC* - PIN 18
PIN 19 - GND NC* - PIN 20
Note: *The pin is reserved for internal use within the PEmicro interface.

** PIN9: Users of NXP i.MX processors are recommended to connect the JTAG_MOD signal to
this pin to allow programming when secure JTAG is enabled. For all other processors, this pin
should be left as NC.

3.20.2.2 SWD Mode Pin Assignments

Cyclone FX programmers also support SWD Mode. This replaces the JTAG connection with a
clock and single bi-directional data pin.

20-Pin Keyed Mini Connector SWD Mode Pin Assignments


PIN 1 - TVCC TMS/SWDIO - PIN 2
PIN 3 - GND TCK/SWCLK - PIN 4
PIN 5 - GND NC* - PIN 6
PIN 7 - NC NC* - PIN 8
PIN 9 - JTAG_MOD/NC** RESET - PIN 10
PIN 11 - NC NC* - PIN 12
PIN 13 - NC NC* - PIN 14
PIN 15 - GND NC* - PIN 16
PIN 17 - GND NC* - PIN 18
PIN 19 - GND NC* - PIN 20

Note: *The pin is reserved for internal use within the PEmicro interface.

** PIN9: Users of NXP i.MX processors are recommended to connect the JTAG_MOD signal to
this pin to allow programming when secure JTAG is enabled. For all other processors, this pin
should be left as NC.
SWD Mode is selected from the “Communication Mode” drop-down box in the Cyclone Image
Creation Utility:

Figure 3-22: Communications Mode Selection

3.20.2.2.1 High-Performance Communications


If high-performance options are available for the selected device they will appear in the “Shift
Frequency in MHz” drop-down. Cyclone FX programmers are capable of high-performance
communications when using certain ARM Cortex targets in SWD mode.

Figure 3-23: High-Performance Options

User Manual For Cyclone FX Programmers 34


3.20.3 PORT C: 14-Pin Debug Connector (MPC55xx-57xx, SPC5, DSC, S32 (Power))
The Cyclone provides a standard 14-pin 0.100-inch pitch dual row 0.025-inch square header for
MPC55xx-57xx, DSC (MC56F8xxx), S32R, or STMicroelectronics’ SPC5 targets. The location of
the this header is indicated as PORT C in Figure 3-11.

MPC55xx-57xx, SPC5, or S32 (Power) Pinout


TDI 1 2 GND
TDO 3 4 GND
TCK 5 6 GND
NC 7 8 NC
RESET 9 10 TMS
VDDE7 11 12 GND
RDY 13 14 JCOMP

DSC Pinout
TDI 1 2 GND
TDO 3 4 GND
TCK 5 6 GND
NC 7 8 NC/KEY
RESET 9 10 TMS
VDD 11 12 GND
NC* 13 14 TRST
*The pin is reserved for internal use within the PEmicro interface.

3.20.3.1 BERG14-to-MICTOR38 Optional Connector


PEmicro offers a 14-pin BERG to 38-pin MICTOR adapter, sold separately, that may be used on
Port C of the Cyclone FX. The PEmicro part number is BERG14-TO-MICTOR38.

Figure 3-24: BERG14-TO-MICTOR38 Adapter (Sold Separately)

3.20.4 PORT D: 26-Pin Debug Connector (ColdFire V2/3/4)


The Cyclone provides a standard 26-pin 0.100-inch pitch dual row 0.025-inch square header for
ColdFire MCF52xx/53xx/54xx family of microprocessors. This port connects to the target hardware
using either the ColdFire extension cable for synchronous ColdFire targets such as MCF5272 &
MCF5206E (PEmicro part# CABLE-CF-ADAPTER, sold separately), or a standard 26-pin ribbon
cable for asynchronous ColdFire targets (included). Please refer to each processor’s user manual
to identify whether it is a synchronous or asynchronous interface. The location of the this header is
indicated as PORT D in Figure 3-11.

User Manual For Cyclone FX Programmers 35


ColdFire V2/3/4 Pinout
N/C 1 2 BKPT
GND 3 4 DSCLK
GND 5 6 NC*
RESET 7 8 DSI
VCC 9 10 DSO
GND 11 12 PST3
PST2 13 14 PST1
PST0 15 16 DDATA3
DDATA2 17 18 DDATA1
DDATA0 19 20 GND
N/C 21 22 N/C
GND 23 24 CLK
VCC 25 26 TEA
*The pin is reserved for internal use within the PEmicro interface.
The ColdFire adapter for Synchronous targets and ribbon cable for Asynchronous targets is
pictured below:

Figure 3-25: ColdFire Adapter (part# CABLE_CF_ADAPTER (Rev. B), for synchronous ColdFire
targets, sold separately)

Figure 3-26: ColdFire Ribbon Cable (for asynchronous ColdFire targets, included with Cyclone)

3.20.5 PORT E: 16-Pin Debug Connector (MON08)


The Cyclone provides a 16-pin 0.100-inch pitch double row connector for MON08 targets. The
location of the this header is indicated as PORT E in Figure 3-11. The MON08 header adopts the

User Manual For Cyclone FX Programmers 36


standard pin-out from MON08 debugging with some modifications. The general pin-out is as
follows:
MON08 Signals
PIN 1 - NC* GND - PIN 2
PIN 3 - NC** RST - PIN 4
PIN 5 - NC* IRQ - PIN 6
PIN 7 - NC* MON4 - PIN 8
PIN 9 - NC* MON5 - PIN10
PIN11 - NC* MON6 - PIN12
PIN13 - OSC MON7 - PIN14
PIN15 - Vout MON8 - PIN16
*The pin is reserved for internal use within the PEmicro interface.
**The pin is reserved for internal use within the PEmicro interface only when using an MR8 target.

3.20.6 PORT F: 6-Pin Debug Connector (RS08, HCS08, HC(S)12(X), S12Z, ColdFire +/V1, STM8 w/
adapter)
The Cyclone provides a standard 6-pin 0.100-inch pitch dual row 0.025-inch square header for
ColdFire V1, S12Z, 68(S)12(X), 68HCS08, RS08, and STMicroelectronics’ STM8 targets. The
location of the this header is indicated as PORT F in Figure 3-11. The header uses the NXP
standard pin configuration, listed here for reference:

ColdFire V1, 68(S)12(X), 68HCS08, and RS08 Signals


PIN 1 - BKGD GND - PIN 2
PIN 3 - NC RESET - PIN 4
PIN 5 - NC TVCC - PIN 6

S12Z Signals
Note:* indicates optional signal

PIN 1 - BKGD GND - PIN 2


PIN 3 - PDO* RESET - PIN 4
PIN 5 - PDOCLK* TVCC - PIN 6

6-Pin STM8 Signals


PIN 1 -SWIM** GND - PIN 2
PIN 3 - NC* RESET - PIN 4
PIN 5 - NC* TVCC - PIN 6
*The pin is reserved for internal use within the PEmicro interface.
** All the signals are direct connect except the SWIM line which requires a 680 Ohm pull-up

PEmicro also offers a separate STM8 adapter (part# CU-CUFX-STM8-ADPT) that can be plugged
into the 6-pin header of the Cyclone (see Figure 3-27). The adapter offers 4 pins signals from an
ERNI connector.

4-Pin STM8 Signals


(Requires STM8 Adapter, sold separately)
PIN 1 - TVCC SWIM - PIN 2
PIN 3 - GND RESET - PIN 4

User Manual For Cyclone FX Programmers 37


Figure 3-27: STM8 Adapter: 1) Bottom, 2) Top, 3) Connected To 6-Pin Header of
Cyclone_Universal_FX (Adapter Sold Separately)

3.20.7 PORT G: 10-Pin Debug Connector (Power MPC5xx/8xx) - Cyclone FX Universal Only
The Cyclone FX Universal provides a standard 10-pin 0.100-inch pitch dual row 0.025-inch square
header for Power MPC5xx/8xx BDM targets. The location of the this header is indicated as PORT
G in Figure 3-11.
Power MPC5xx/8xx BDM Pinout
NC* 1 2 SRESET#
GND 3 4 DSCLK
GND 5 6 NC*
HRESET# 7 8 DSDI
VDD 9 10 DSDO

*The pin is reserved for internal use within the PEmicro interface.

3.20.8 PORT H: 20-Pin Debug Connector (Kinetis, S32 (ARM), other PEmicro-Supported ARM
devices, Infineon TriCore - DAP only)

3.20.8.1 JTAG Mode Pin Assignments


The Cyclone provides a 20-pin 0.100-inch pitch double row connector for ARM targets. The
location of the this header is indicated as PORT H under Part# CYCLONE-FX-UNIV in Figure 3-
11. The 20-pin standard connector pin definitions for JTAG mode are as follows:
20-Pin Standard Connector JTAG Mode Pin Assignments
PIN 1 - TVCC NC - PIN 2*
PIN 3 - TRST or NC* GND - PIN 4
PIN 5 - TDI GND - PIN 6
PIN 7 - TMS GND - PIN 8
PIN 9 - TCK GND - PIN 10
PIN 11 - NC* GND - PIN 12
PIN 13 - TDO GND - PIN 14
PIN 15 - RESET GND - PIN 16
PIN 17 - NC* GND - PIN 18
PIN 19 - NC* GND - PIN 20

*The pin is reserved for internal use within the PEmicro interface.

3.20.8.2 SWD Mode Pin Assignments


Cyclone FX programmers also support SWD Mode. This replaces the JTAG connection with a

User Manual For Cyclone FX Programmers 38


clock and single bi-directional data pin.

20-Pin Standard Connector SWD Mode Pin Assignments


PIN 1 - TVCC NC* - PIN 2
PIN 3 - TRST or NC* GND - PIN 4
PIN 5 - NC* GND - PIN 6
PIN 7 - TMS/SWDIO GND - PIN 8
PIN 9 - TCK/SWCLK GND - PIN 10
PIN 11 - NC* GND - PIN 12
PIN 13 - NC* GND - PIN 14
PIN 15 - RESET GND - PIN 16
PIN 17 - NC* GND - PIN 18
PIN 19 - NC* GND - PIN 20

*The pin is reserved for internal use within the PEmicro interface.
SWD Mode is selected from the “Communication Mode” drop-down box in the Cyclone Image
Creation Utility:

Figure 3-28: Communications Mode Selection

3.20.8.2.1 High-Performance Communications


If high-performance options are available for the selected device they will appear in the “Shift
Frequency in MHz” drop-down. Cyclone FX programmers are capable of high-performance
communications when using certain ARM Cortex targets in SWD mode.

Figure 3-29: High-Performance Options

3.20.8.3 DAP Connector Pin Assignments (Target Board Does Not Have Dedicated DAP Connector
Port)
Users whose target board has a dedicated DAP Connector should instead refer to Port A in
Section 3.20.1.3 - DAP Connector Pin Assignments (Target Board Has Dedicated DAP
Connector Port).
If the user’s target board does not have a dedicated DAP connector port, the user may choose to
wire pins to the 20-pin 0.100-inch pitch double row connector of the CYCLONE-FX-UNIV model
(can be used with Infineon TriCore targets AUDOTM TC1xx and AURIXTM TC2xx/TC3xx). The
location of the this header is indicated as PORT H in Figure 3-11. The 20-pin standard connector
pin definitions for DAP connectors are as follows:
20-Pin Standard Connector JTAG Mode Pin Assignments
PIN 1 - TVCC NC - PIN 2*
PIN 3 - TRST or NC* GND - PIN 4
PIN 5 - NC* GND - PIN 6

User Manual For Cyclone FX Programmers 39


PIN 7 - DAP1 GND - PIN 8
PIN 9 - DAP0 GND - PIN 10
PIN 11 - NC* GND - PIN 12
PIN 13 - NC* GND - PIN 14
PIN 15 - RESET GND - PIN 16
PIN 17 - NC* GND - PIN 18
PIN 19 - NC* GND - PIN 20

*The pin is reserved for internal use within the PEmicro interface.
Note: Pin3 - TRST needs to be high at power on reset release for enabling DAP, so short circuiting TRST
to VDD may be advised.

3.20.9 PORT C & PORT E (Renesas Adapter)


PEmicro also offers a separate Renesas adapter (part# CUFX-RENESAS-ADPT) that can be
plugged into the 14-pin and 16-pin headers of the Cyclone (PORT C & PORT E - see Figure 3-27).
The adapter connects to the target via a14-pin ribbon cable.
Note: The user should take care to properly align the 2 adapter headers over the Cyclone’s PORT C and
PORT E pins before pressing the adapter down to install.

Rev. D of the adapter features 2 headers on the top side, labeled J1 and J2. The labels are visible
in the first Figure below. The J2 header should be used for RL78 devices. Otherwise the J1
header should be used. Revs. A-C feature only one header on the top.
Renesas Pin Signals (Requires Renesas Adapter, sold separately)
Signal definition depends on the specific Renesas architecture selected. Please view the
appropriate Renesas device datasheet.

Figure 3-30: Renesas Adapter Rev. D: 1) Top, 2) Bottom, 3) Connected To 14-Pin & 16-Pin Headers of
Cyclone_Universal_FX (Adapter Sold Separately)

3.21 Ribbon Cable


Cyclone FX programmers communicate with the target through ribbon cables. The ribbon cables
for standard debug connectors have a 0.100-inch centerline dual row socket IDC assembly (not
keyed). The ribbon cables for 10- and 20-pin mini debug connectors have a 0.050-inch centerline
dual row socket IDC assembly (keyed). The ribbon cables are designed such that the Cyclone’s
Debug Connector has the same pinout as the Target Header, i.e., Pin 1 of the Cyclone’s Debug
Connector is connected to Pin 1 of the Target Header. As an example, Figure 3-31 sketches the
connection mechanism (looking down into the sockets) for a 14-pin ribbon cable. Ribbon cables for
other supported architectures use a similar scheme, but may have more or fewer pins.

User Manual For Cyclone FX Programmers 40


Figure 3-31: Ribbon Cable Example Diagram, When Looking Into IDC Socket

User Manual For Cyclone FX Programmers 41


4 TARGET POWER MANAGEMENT
Different target devices may require different power schemes which depend on the design of the
target board, target voltages, and even the device architecture. PEmicro has designed the
Cyclone FX to be capable of powering a target before, during, and after programming. Power can
be sourced at many voltage levels from the Cyclone itself, or sourced by an external power supply
and switched by the Cyclone.

Figure 4-1: Five different paths to power a target

The versatility of the Cyclone power scheme gives the user the utmost flexibility, and includes the
following features:
• Provides power through a power jack or through the debug connector
• Provides internally generated voltage from 1.6v-5.5v at up to 500mA
• Switches an external power supply voltage, up to 24V at 1amp
• Selectively powers the target before, during, and after programming
• Powers down the target connections between programming operations
• Uses power switching to aid entry into debug mode for certain targets
• Provides target voltage and current measurement capabilities
If target power is required, each target board may vary where the power is sourced from, externally
or internally, and how it is channeled to the target: through the debug header or to a separate
connector to the board. Power that is passed through and managed by the Cyclone goes through
power relays so it can be power cycled. This is extremely useful because it also allows the power
to be off during setup and automatically powered on by the Cyclone for programming. For some
devices, the process of entering debug mode requires that the device be powered down and
powered back up. Power can also be left in a desired power state, either on or off.

4.1 Cyclone Configuration


There are two different places Power Management is configured and they should be matched:
first, by the jumpers on the Cyclone FX, and second, in the setup of the programming image. The
Cyclone jumpers are the most important because they are the physical connection to the target.
The Cyclone has an easy access panel that reveals debug header connections for a variety of
different architectures, and a 2x4 jumper block for configuring power management of the target.
The specific location of the jumpers is indicated by the label POWER JUMPERS in Figure 4-3.
This set of 4 jumpers can be used to set 5 different power management schemes for the target.

User Manual For Cyclone FX Programmers 42


Note: If these jumpers are not set correctly, the Cyclone will not function as intended.

1 Target is powered independently

Power provided externally (center +) and


2 managed by Cyclone, power out to debug
ribbon cable.

Power provided externally (center +) and


3 managed by Cyclone, power out to 2.5 mm
output jack (center +)

Power provided by Cyclone, power out to


4 debug ribbon cable

Power provided by Cyclone, power out to


5
2.5 mm output jack (center +)

Figure 4-2: Cyclone Power Schemes & Corresponding Jumper Settings

The bottom edge of the Cyclone FX has a Power In jack for externally provided power, and the top
edge of the Cyclone has Power Out jack, for when power schemes including these are used (see
Figure 4-3). One of the provided ribbon cables is connected to the appropriate debug header
based on the specific target architecture.

Figure 4-3: Cyclone Hardware Features: Power Jumpers and Target Headers

The power settings that are set by the jumpers are a physical connection and take precedence.

User Manual For Cyclone FX Programmers 43


After the basic hardware setup, target power and voltage settings are also set in the creation of a
SAP (stand-alone programming) image. At a minimum the SAP image contains all the commands
to Erase, Program, and Verify a programming image. More sophisticated power selections in the
SAP image can control the relays, target voltage, delays, and power down after SAP operations,
as shown in the selection dialog.

Figure 4-4: Target Power & Voltage Settings

Target voltages (with appropriate jumper settings) in the range of 1.6 to 5.5 volts may be provided.
There is also the option to select the internal Cyclone relays to power cycle the Cyclone during
programming, and set the length of delays during power up and down. This is extremely useful to
make sure the power is off when hooking up the target. Power cycling is especially important for
architectures that require it to enter debug mode. The SAP image settings may even be used to
turn off the target power once programming is completed, to ensure that the microcontroller is left
in a halted state and not running.

4.2 Cyclone Setup


Below is a tutorial that demonstrates how to set up the Cyclone FX in each of the 5 power
configurations. A very common configuration is the independently powered target. In this power
scenario, the Cyclone will detect and use the power on the target for the appropriate debug
communication voltages.

4.2.1 Independently Powered Target


In the simplest and most common scenario, no jumpers are set, so the target is powered
independently from the Cyclone. No power is passed through the debug header, just the standard
debug signals. The Cyclone automatically detects the target power and sets the debug signals to
match.

Figure 4-5: Independently Powered Target

4.2.2 Power provided by the Cyclone to the debug cable


It is also possible for the Cyclone to generate power through an internal regulator in the range of
1.6 to 5.5 Volts. In the jumper configuration below, the Cyclone generates the power through a
voltage regulator, and passes it through the power relays and out through the debug ribbon cable,
which is set up during the SAP image creation. There is only one connection to the target
processor which will handle both the communication and the power. In this scenario, external
power must not be connected to the Power In jack since it is already being provided.

User Manual For Cyclone FX Programmers 44


Figure 4-6: Power Provided by the Cyclone to the Debug Cable

4.2.3 External Power passed through the Cyclone and out 2.5 mm barrel port
It is also possible to provide external power, passed through the Cyclone power relays, and back
out to be available to power the target board externally. This is useful when the user wants to
control the power to the target and the target board has an external power connector. Setting a
single jumper will connect the barrel port input connector on the bottom edge of the Cyclone,
through the relays, to a matched 2.5 mm barrel port output connector on the top edge of the
Cyclone, so that the power can be routed into and back out of the Cyclone.

Figure 4-7: External Power Passed Through the Cyclone and Out 2.5 mm Barrel Port

4.2.4 External Power passed through the Cyclone to the debug cable
In a slightly different scenario, the user may wish to provide power to the target through the debug
cable. On the bottom edge of the Cyclone is a 2.5 mm Power In port barrel which will pass power
through target relays which lets the Cyclone take control of the power cycling during programming.
This simple setup requires only an input to the Cyclone and a single ribbon cable connection to the
target board that handles both communication and power. The external power provided must be
between 1.6 to 5.5 volts.

User Manual For Cyclone FX Programmers 45


Figure 4-8: External Power Passed Through the Cyclone to the Debug Cable

4.2.5 Power provided by the Cyclone and out 2.5 mm barrel port
In a slightly different scenario, the user may wish to have the Cyclone provide power, but power
the target via an external connector on the target. The voltage supplied to the target is determined
by the settings in the SAP image. When generating the SAP image the Cyclone relays must be
selected as well as the correct voltage level for the target.

Figure 4-9: Power Provided by the Cyclone and Out 2.5 mm Barrel Port

4.3 Setup Reminders


The most important step when providing power out to a target is to check the Cyclone's jumper
settings to make sure they match the intended power setup. The jumpers control the power
settings which determine how power is supplied, regardless of the SAP image settings. If the
jumpers are set for power to be provided through the Cyclone, and the target is externally
powered, this is a conflict and may cause damage to the board.
In the case where power is being supplied through the Cyclone and the target is not being
powered on, the user should first check the jumper settings to make sure they match the
intended power setup. Second, the user should check to make sure the SAP image has the ‘Use
Cyclone Relays’ box checked with the appropriate voltage level selected.

User Manual For Cyclone FX Programmers 46


5 TOUCHSCREEN LCD MENU
This chapter describes the Cyclone’s touchscreen LCD menu. Figure 5-1 shows an overview of
the menu structure.
Note: This menu will change as features are added to the Cyclone FX, so if your menu does not match
what is displayed here, please check PEmicro’s website, www.pemicro.com, for a user manual
containing the latest LCD Menu operations information.

5.1 Home Screen

The home screen appears when the Cyclone FX is powered on, or when the Home
button is tapped.

5.1.1 Icons
A row of icons in the upper right corner indicates the status of various attributes of the Cyclone.
Note: The user may tap on the row of icons to view the meaning of each of the currently displayed icons.
Cyclone Unit Status: Ok / Bad

Programming Status: Ready / Busy

USB-To-PC Enumerated: Yes / No

Real-Time clock Enabled & Working: Yes / No

Cyclone Power Relays: Closed / Open

Target Device Is Powered*: Yes / No

SDHC Memory Card: None / Valid / Unformattted / Reset Cyclone**

Barcode Scanner: Detected / Not Detected

* Target Device Is Powered - “Yes” indicates that the Cyclone FX detects power on the Vcc pin of
the target device programming header.
** SDHC Memory Card - “Reset Cyclone” indicates that the Cyclone needs to be reset before the
SDHC card will register as Valid. The user can push the Reset button which is located on the front
side of the Cyclone, below the LED indicators.

5.1.2 Configurable Display Area


The main area of the home screen can be configured to optionally display the following
information, by using the Cyclone IP Configuration Utility (see Section 5.2.3.5.4 - Configure
Home Screen):
1. Firmware version of the Cyclone (always shown).
2. IP address assigned to the Cyclone.
3. Name assigned to the Cyclone.
4. Number of programming images in the Cyclone’s memory.
5. Name of the selected programming image.
6. First serial number associated with the selected image
7. Current status.
8. Results of the last operation performed.
9. Time and date.
10. Status Window and Main Menu button (always shown).
11. Programming count & limit

User Manual For Cyclone FX Programmers 47


12. Target voltage and/or current

5.1.3 Status Window


The status window appears in the lower left corner of the home screen and displays the results of
programming operations.

5.1.4 Error Information Icon


When the Cyclone experiences an error during programming operations, the Info icon will appear
to the left of the Menu button (or AUX button, if configured).
Info Icon:

Press the Info icon to view a detailed description of the error.

5.1.5 AUX Button (Appears If Configured)


The Cyclone allows the user to add an Auxiliary (AUX) button to the home screen which will
perform a specific function when pressed. The specific function is chosen by the user when the
AUX button is configured. The AUX button will appear on the home screen to the left of the “Menu”
button, in the lower right corner of the home screen.

Figure 5-1: AUX Button On Home Screen (configured to perform CRC32 function)

For information on how to configure the AUX button, see Section 5.2.4 - Status.

5.2 Main Menu


The Main Menu is accessible by pressing the “Menu” button when the Home Screen is displayed.
The Main Menu contains the following selections:

User Manual For Cyclone FX Programmers 48


Figure 5-2: Main Menu Structure

User Manual For Cyclone FX Programmers 49


5.2.1 Select Programming Image
Displays a list of the available programming images so that the user may select one for
programming. Images in the Cyclone’s internal memory are preceded by the designation “IN” and
numbered sequentially, i.e., IN1: first image name, IN2: second image name. If the SDHC port of
the Cyclone is activated and contains a memory card, any programming images that reside on the
SD card will be preceded by the designation “EX” in similar fashion.
Encrypted (eSAP) images will display a lock icon to the left of the image description. If the
ImageKey needed to decrypt an eSAP image is missing from the Cyclone, the image will appear
grayed out. and cannot be selected for programming until the appropriate ImageKey is loaded onto
the Cyclone (see image #2 in Figure 5-3).

Figure 5-3: Lock Icon Denotes Encrypted Images

You may tap the appropriate image to select it. The image name shown is the one specified in the
Cyclone Configuration Utility when saving the image to the Cyclone/SD card.

5.2.2 Current Image Options


This menu presents options that allow the user to select or configure programming images on the
Cyclone FX.

5.2.2.1 Execute Image Function


Execute Specific SAP Function presents four Stand-Alone Programming functions that you may
execute by tapping the function that you wish to execute:

5.2.2.1.1 Launch Programming


This allows the user to execute the programming function. The Cyclone FX will program the target
device, if able, using the currently selected programming image. This is functionally equivalent to
pressing the Start button.

5.2.2.1.2 Verify Data In Target


Performs a verify function on the data that has been programmed into the target device.

5.2.2.1.3 Toggle Power


Toggles the target power and makes sure all ports are driven to debug mode level.

5.2.2.1.4 Power Cycle Device To Run User Code


Toggles the target power and maintains tri-state mode for all signals.

5.2.2.1.5 Validate Image CRC32


Allows the user to perform a CRC32 validation on the currently selected programming image.

5.2.2.1.6 Launch Image Programming


Launches the selected programming image. Replaces the hardware Start Button.

User Manual For Cyclone FX Programmers 50


5.2.2.2 Set Image Validation
Allows the user to choose between two validation settings: 1) validate the image each time the
Start button is pressed, or 2) do not validate the image.

5.2.2.3 Serial Numbers


Displays the serial number information associated with the currently selected programming image.
If there is none, it will display, “This Image Contains No Serial Numbers.” There may be one or
more Serial Files associated with the image. The user can click on a specific Serial File name to
see the following information about that Serial File:
• UID - Unique identifier of the serial number
• Next Serial # ASCII - Next serial number to be programmed (shown in ASCII format)
• Algorithm ID - Displays the algorithm ID of the serial file
• CS ID - Displays the ID of the CS (Choose Serial) command in the SAP file.

Figure 5-4: Serial File Selection

The user can also click on “Modify Serial Number” to edit that serial number. It is possible to
Decrease or Increase the Next Serial by -10, -1, +1, +10. This is often done to address issues in
the production process, such as during initial setup.

Figure 5-5: Increase or Decrease Serial Number

The adjustment buttons will display “Increase Not Allowed” and “Decrease Not Allowed” if the
image/algorithm/CS file that the user has selected does not allow for this operation.
Note: Older serial files are specific to one programming image, unlike PEmicro’s current serial files. If
viewing Serial Number info for an image that references one or more older serial files, the Cyclone
will not show links to the serial files but will instead display serial number info for the first serial file.
The user can then Modify Next Serial to change the next serial number, or click MORE at the
bottom to proceed to the next serial file (if any).

User Manual For Cyclone FX Programmers 51


Figure 5-6: Serial Number View With Older Serial Files (CS IDs #1 & #2)

5.2.2.4 Show Image Restriction Stats (Requires FX or ProCryption Security Activation)


Displays current statistics, if any, for Image Programmed Count & Maximum Allowed, Errors
Logged & Maximum Allowed, and Date Range Allowed. These limits can be set in the Security
Features section of the Cyclone Image Creation Utility (see Section 6.1.10.2 - Image
Restrictions).
Note: When Current Image Stats is displayed as a home screen item, only Image Programmed
Count & Maximum Allowed are displayed on the home screen.

5.2.3 Configure Cyclone Settings


Presents options that allow the user to choose to configure the Cyclone FX network settings, time/
date settings, and LCD touchscreen display settings, or to set the display to dynamic.

5.2.3.1 Edit Cyclone Name


Allows the user to edit the name of the Cyclone using the on-screen keyboard. Click “Done” to
save the new Cyclone name or “Cancel” to exit without saving a new Cyclone name. This name
will be displayed on the Cyclone FX home screen if the Cyclone is configured to do so.

5.2.3.2 Configure Network Settings


Presents options that allows the user to view or edit various IP settings, toggle the IP settings
between static and dynamic, and re-name the Cyclone FX.

5.2.3.2.1 Show Current IP Settings


This menu allows you to view the Cyclone FX IP address, Mask, and Gateway, and MAC address.
You may also tap these entries to edit, as long as the Cyclone is set to Static IP mode.
Dynamic vs. Static
There are two schemes for assigning IP addresses. One is the Static IP addressing mode. This
involves the user manually setting the IP address for every device on the network. In this case, it
falls to the user to ensure the IPs assigned do not conflict and are within the boundaries of the
network. The other is the Dynamic Host Configuration Protocol (DHCP). This involves setting up a
separate server to manage the IP addresses. The server is given a list of valid IP addresses for the
network. Using a predetermined set of rules, each new device that wishes to connect to the
network is given an IP address by the server. This takes the task of managing the validity and
uniqueness of IP addresses out of the user's hands and relegates it to the server. Cyclone FX
programmers are capable of using either Static IP addressing or DHCP.

5.2.3.2.2 Edit Static IP Settings


This menu allows you to edit the Cyclone’s IP address, Mask, and Gateway, and view the
Cyclone’s MAC address. If you are unable to edit these values, you may wish to check to be
certain that the Cyclone is not set to Dynamic IP mode.

User Manual For Cyclone FX Programmers 52


IP
Edit IP Numbers allows the user to set an IP number for the Cyclone. The current IP number is
displayed on the second line. Tap a number to edit and use the touchscreen keyboard to set the
new number. When you are finished, hit Done. If you change your mind and decide not to save, hit
Cancel to leave the IP number as is and return to the Main Menu.
Mask
Edit IP Mask allows the user to set an IP Mask for the Cyclone. The current IP Mask is displayed
on the second line. Use the Up/Down buttons to scroll through the characters. To select a
character, hit the Select button. When you are finished, scroll through the characters until you
reach the -> (right-arrow) character. Selecting this character will complete the process. The default
IP mask is 255.255.255.0.
Gateway
Edit IP Gateway allows the user to set the IP Gateway for the Cyclone. The current IP Gateway is
displayed on the second line. Use the Up/Down buttons to scroll through the characters. To select
a character, hit the Select button. When you are finished, scroll through the characters until you
reach the -> (right-arrow) character. Selecting this character will complete the process.
MAC Address
Show MAC Address displays the current MAC address for the Cyclone.

5.2.3.2.3 Enable/Disable Dynamic IP


Allows the user to toggle the Cyclone configuration between utilizing a Static IP address or a
Dynamic IP address. The user must reset the Cyclone FX after changing from Static to Dynamic
or vice-versa. The reset button on the front side of the unit may be used.

5.2.3.3 Configure Time Settings (Cyclone Time / Real Time Clock)


The Cyclone FX is equipped with a Real Time Clock (RTC) module designed to keep accurate
timing even when the Cyclone is turned off. The Date & Time are displayed on the home screen.
This menu presents options that allow the user to configure the Cyclone’s various date/time/
timezone settings, including formatting options.

5.2.3.3.1 Modify Date / Time


1. Update Time from Internet - Connects to an SNTP server, fetches the current time, and
saves it to the Cyclone. When executed it displays a
message that this can freeze the Cyclone for up to 3
minutes – This is due to an invalid ARP response due to a
bad gateway configuration. Proper configuration will
ensure the problem is resolved. If the network connection
is not configured/connected this displays a message that
the time failed to update. If it is successful no message is
displayed.
2. Set Time Zone Hours - Allows you to set the timezone offset, in hours +/-, from GMT
time
3. Set Time Zone Minutes - Allows you to set the timezone offset, in minutes +/-, from
GMT time

5.2.3.3.2 Set Time-Date Display


Allows you set the Cyclone’s Time-Date Display to one of the following configurations:
1. Display Date Only
2. Display Time Only
3. Display Date and Time

User Manual For Cyclone FX Programmers 53


5.2.3.3.4 Set Date Formatting
Allows you to select how the date is displayed. The options are:
1. YYYY-MM-DD
2. MM-DD-YYYY
3. DD-MM-YYYY
4. MM/DD/YYYY

5.2.3.3.5 Set Time Formatting


Allows you to select how the time is displayed. The options are:
1. HH:MM (24-hour)
2. HH:MM (AM/PM)
3. HH:MM:SS (24-hour)
4. HH:MM:SS (AM/PM)

5.2.3.4 Configure AUX Button


Allows the user to configure an auxiliary (AUX) button which (if configured) will be labeled
appropriately and displayed to the left of the Menu button on the Cyclone’s touchscreen LCD.
When pressed, the AUX button will perform the task for which it has been configured. The options
that may be assigned to the AUX button are:
1. No Operation - No operation is assigned to the AUX button and it will not be displayed on
the LCD screen.
2. Perform Verify Only - Verifies the data on the target device against the data in the pro-
gramming image.
3. Toggle Power - Toggles the Cyclones power relays off/on.
4. Validate Image CRC32 - Validates the CRC32 of the data on the target device against that
of the data in the programming image.
5. Power Cycle Device To Run User Code - Toggles the target power and maintains tri-state
mode for all signals.
6. Launch Image Programming - Launches the selected programming image. Replaces the
hardware Start Button.

5.2.3.5 Configure Screen


This menu presents options that allow the user to adjust or customize the Cyclone’s LCD
touchscreen display in various ways.

5.2.3.5.1 Change Screen Brightness


Allows the user to adjust the brightness of the LCD touchscreen. The “Increase” and “Decrease”
buttons will raise or lower the brightness level, respectively, in increments of 10%. Brightness can
be adjusted from between 100% - 10%. Press “Done” to exit.

5.2.3.5.2 Calibrate Screen


Allows the user to click on specified points on the LCD touchscreen in order to calibrate the
accuracy of the touch function. Follow the on-screen instructions.

5.2.3.5.3 Set Progress Details


This configures the display to present more detailed information during the progress of
programming, including the specific programming steps that are performed and specific
information about the programming and verifying procedure. The user may select “Show Details,
Keep Last Progress On,” “Show Progress Details,” or “Hide Progress Details.”

User Manual For Cyclone FX Programmers 54


5.2.3.5.4 Configure Home Screen
This menu allows you to choose what information to display on Lines 2-8 of the home screen.
Available elements to display consist if information such as: the current IP address, the Cyclone
name, the number of images, etc. In this way the user can customize the display to provide the
information that they find most useful. There is a separate button for each of Lines 2-8. Tapping on
the button for a specific Line brings up a list of elements that you can choose to display on that
Line of the home screen. If the list of elements is greater than one page, tap the More button to
view the rest of the available elements. Tap the element that you want to display on that line and
then tap Done to save your selection.
Note: The Cyclone FX allows one additional option for display: the target device’s voltage and/or
current.

5.2.3.6 Configure Storage


This menu selection allows the user to format the Cyclone’s internal memory. This menu will also
allow the user to format an SD card located in the Cyclone’s memory expansion slot. Select
“Format Internal Storage” or “Format External SD Card”. The user will be prompted to ensure that
they wish to format the corresponding memory. Tap “Yes” to format, or “Cancel” to go back to the
previous menu option without formatting the memory.

5.2.3.7 Enable/Disable Start Button


This menu option gives the user the option to disable the physical Start Button. Programming can
then be initiated via the Cyclone Control Suite, or by a digital start button on the Cyclone screen if
you have the AUX button set to the "Launch Image Programming" option.
The physical Start Button can always be re-enabled via this same menu toggle.

5.2.3.8 Configure USB Host Device (FX Only)


This menu selection allows the user to either Enable or Disable a barcode scanner connected to
the CYCLONE FX’s USB Extension Port.
Select Enable to provide power to and turn on a connected barcode scanner. The Enable setting
is persistent. Once Enabled, the scanner will be powered and turned on whenever the Cyclone is
powered. To disable the barcode scanner select Disable.

5.2.4 Status
This menu contains a selection that allow the user to view status information regarding various
aspects of the Cyclone. This menu will likely be expanded with future updates.

5.2.4.1 Show Current IP Settings


Allows the user to view the Cyclone’s Current IP Mode, IP Address, Mask, Gateway, and MAC
Address.

User Manual For Cyclone FX Programmers 55


6 CREATING AND MANAGING PROGRAMMING IMAGES
The Cyclone Image Creation Utility is used to create programming images which may be loaded
into the Cyclone. The user creates programming images based on data sets to be programmed
and programming instructions which are all self contained. The next step is to download these
programming images to the Cyclone via the GUI, Console, or SDK. Programming can then be
launched either manually via the button, or automatically via the Console.exe or SDK. Learn about
how to download and launch programming images in CHAPTER 8 - CYCLONE PROGRAMMER
AUTOMATED CONTROL.
Note: The Cyclone Image Creation Utility is Windows only. Users that wish to manage/automate
programming via macOS/Linux will need a Windows platform to create programming images.

Cyclone FX programmers, or Cyclone LC programmers with the ProCryption Security Activation


License, can also use the The Cyclone Image Creation Utility to encrypt programming images,
such that only Cyclones with a specific key can decrypt and program these images. Instructions on
how to encrypt using the Cyclone Image Creation Utility are found in Section 6.1.10.1 - SAP
Image Encryption. A more in-depth description of the encryption process is available in
CHAPTER 11 - SAP IMAGE ENCRYPTION.
Note: If the user wishes to use a programming image created with an earlier generation Cyclone (such
as the Cyclone PRO or MAX, or the Cyclone for ARM devices Rev. A/B) they should first convert
the image using the conversion utility described in CHAPTER 15 - TROUBLESHOOTING.

6.1 Cyclone Image Creation Utility


This section describes in detail how use the Cyclone Image Creation Utility, shown in Figure 6-1,
to configure, create, and save a SAP image that will be used for stand-alone programming with the
Cyclone FX. The Cyclone FX does not require a target to be connected when it is being
configured. However, the Cyclone must be powered on and one of the communications interfaces
must be connected to the Cyclone if an image is to be stored on it. The Cyclone Image Creation
Utility is for ARM devices only.

6.1.1 Non-ARM Devices


For non-ARM devices, the user should instead run the Cyclone Image Creation Utility Classic
Version (CreateImageClassic.exe). If already running the Cyclone Image Creation Utility, the user
may click the “Select Non-ARM Device” button to launch the Classic Version.
Note: The Cyclone Image Creation Utility and the Classic Version are extremely similar in terms of
functionality, they are merely organized differently. The Classic Version is not documented here; it
is intended that the user should be able to operate the Classic Version using the concepts and
descriptions included here for the Cyclone Image Creation Utility.

User Manual For Cyclone FX Programmers 56


Figure 6-1: Cyclone Image Creation Utility

6.1.2 Select New Device (ARM Devices)


The “Select New Device” button launches the Device Selection window, shown below. This dialog
directs the user how to navigate the device tree to select their ARM device.

User Manual For Cyclone FX Programmers 57


Figure 6-2: Device Selection Window - Drill Down To Specific Target Device

6.1.2.1 Device Box


The Device box can be used to choose from any devices that have recently had SAP images
saved to Cyclone or disk.

Figure 6-3: Device Drop-Down - Select From Recently Saved Devices

6.1.3 Secure Boot Settings - NXP i.MX RT Only


If the selected device is an NXP i.MX RT device with secure boot capability, a Secure Boot
Settings area will appear:

Figure 6-4: Secure Boot Settings

The area allows the user to coordinate with PEmicro’s Secure Boot Helper Utility, which is a
separate utility that helps the user to more easily manage secure boot settings and configurations.
Settings that the user has configured in the Secure Boot Utility can be loaded into the Image
Creation Utility as a resulting programming sequence.
In the Secure Boot Settings area, buttons are displayed which allow the user to do the following:
• “Link/Create Secure Boot Project” prompts the user to either choose an existing Secure

User Manual For Cyclone FX Programmers 58


Boot Project (.SBP) file or to create a new one. The Secure Boot Helper Utility will then
launch and load the project.
• “Edit Secure Boot Project” prompts the user to select an .SBP project file. It will then
launch the Secure Boot Helper Utility and open that project for editing.
• “Clear” removes the link to any loaded .SBP project. The user will be asked if they wish to
clear the programming sequence as well.
• “Regenerate Programming Sequence From SB Settings” allows the user to load re-load
the programming sequence from the .SBP project if they have made changes to the
project which they wish to be reflected in the programming sequence. Note that any
changes made to the programming sequence in the Image Creation Utility itself will be lost
when the new sequence is loaded. This typically happens only if the device or binary has
been changed in the .SBP.

Figure 6-5: Secure Boot Settings - Project Linked and Programming Sequence Loaded

When a project is linked, inputs to the Secure Boot Project such as an S19 file and PEKeyfile will
be displayed next to SB File Inputs. The object to be built during image creation is also displayed
below.
The user can check the checkbox for “Auto-build signed application and fuse files based on the
Secure Boot Project during the SAP image creation process” if they wish that to occur during
image creation.
Additional Assistance
The Secure Boot Helper Utility User Manual is available at PEmicro’s website:
http://www.pemicro.com/downloads/download_file.cfm?download_id=582
The website also features a blog article that walks the user through the process of setting up a
production programming image with the Secure Boot Utility and the Cyclone Image Creation
Utility:
http://www.pemicro.com/blog/index.cfm?post_id=204

6.1.4 Secure JTAG Settings - NXP i.MX RT Only


This setting is displayed on the Security & Advanced Tab. Compatible NXP i.MX RT devices allow
the user to enable Secure JTAG. This is a security feature which allows regulation of JTAG access
to the device, protected by password. Users can program a device that has Secure Boot enabled
by providing the correct password. PEmicro’s Secure Boot Helper Utility helps the user to manage

User Manual For Cyclone FX Programmers 59


this feature by allowing the user to create named password objects which are stored in a PE
Keyfile Collection.

Figure 6-6: Secure JTAG Settings

If the user checks the box provided, the Image Creation Utility prompts the user to navigate to a PE
Keyfile Collection. On the line below they will then choose the appropriate password object from
that collection in order to program a device with Secure JTAG enabled.

Figure 6-7: Image Key Collection File and Password Object

6.1.5 Programming Sequence


This is the two-panel interface directly below the Device Selection area. This is where the user
creates the sequence of commands to be carried out during programming. The left panel provides
a list of available programming functions. The right panel displays the ordering of the functions.

Figure 6-8: Specify Programming Sequence

There are two ways to create the programming sequence.

6.1.5.1 Manual Selection


The user can individually specify the algorithm and the object code and then add commands. To
specify the programming algorithm for the target, double-click on the Choose Algorithm (CM)
function in the left panel. Or, it can be highlighted and added it to the right panel using the arrow
(->). This opens the “Specify Programming Algorithm to Use” dialog.

User Manual For Cyclone FX Programmers 60


Figure 6-9: Specify Programming Algorithm To Use

The user should select the programming algorithm to be used. Once the algorithm is selected, the
full list of programming functions becomes available in the left panel.

Figure 6-10: Programming Functions Available

Similarly, to specify the S-Record to be programmed into the target, the user may double-click on
Specify Object Code (SS) in the left panel or highlight it and add it using the arrow (->). This opens
a dialog which allows you to select the appropriate S-Record.

User Manual For Cyclone FX Programmers 61


Figure 6-11: Specify Object File To Load

Next, the user would add additional programming functions to complete the programming script by
selecting programming operation commands from the Programming Sequence area. See Section
6.1.6 - Programming Operations for a description of these commands. The commands can
added by double-clicking them, or by selecting them and using the arrow (->). Commands can also
be removed or resequenced; see Section 6.1.5.3 - Function Buttons.

Figure 6-12: Add Programming Functions

6.1.5.2 Script Wizard


Another method that can be used to create a programming sequence is the Launch Script Wizard
button.
Note: When NXP’s i.MX RT devices with Secure Boot are selected, the Script Wizard Button will not
appear.

User Manual For Cyclone FX Programmers 62


Figure 6-13: Script Wizard Button

Note: Launch Script Wizard removes any commands that are already in the programming sequence
window and begins a new sequence.

The Launch Script Wizard button will automatically prompt the user for a programming algorithm,
followed by an object file, and then adds commands (EN - Erase if not blank, PM - Program
module, VC - Verify Checksum) to create a default programming script. The user can then use the
programming commands on the left and function buttons to modify the programming sequence as
needed.

6.1.5.3 Function Buttons


The Clear Script button will remove all programming commands from the right panel. If one of
these is the CM command, then it will also remove commands associated with the selected
algorithm from the left panel.
The Add Selected Command button will add the selected programming command to the end of
the programming sequence. Double-clicking the command has the same effect.
The Remove Selected Command button will be used to remove a selected command from the
right panel. The user can also simply hit the Delete button on their keyboard when the command is
selected in the programing sequence.
The Move Up and Move Down buttons will allow the user to move the selected
programming command up or down within the sequence.

6.1.5.4 Programming Sequence Complete


Once the programming sequence is complete, the programming image can be saved to a disk or
to the Cyclone unit. For more information, please see Section 6.1.12 - Store Image To Cyclone.

6.1.6 Programming Operations

Figure 6-14: Programming Operations Dialog Section

User Manual For Cyclone FX Programmers 63


The Programming Sequence field, the user may specify the algorithm, object file, and operations
to be carried out.

6.1.6.1 Choose Module


Presents a list of available programming files. Each programming file contains information on how
to program a particular module. Usually, the name of the file indicates what kind of module it
relates to.

6.1.6.2 Specify Object File


Asks for the name (and/or path) to a file of object files to be used in programming or verifying a
module. If the file is not found, an error message is given. The currently-selected file is shown in
the S19 file selected window. The programmer accepts S1, S2, and S3 records. All other file
records are treated as comments. If you do not specify a file-name extension .S19 is used by
default. The programmer also supports ELF/Dwarf 2.0, 3.0, and 4.0 object files.
Your .S19 file may contain data for both EEPROM and flash. If you know that your S19 file
contains the correct data, “Ignore S19 Range” may be checked. This will cause any out of range
errors to be ignored.

6.1.6.3 Erase If Not Blank


This command performs a blank check of the module and erases it if it is not blank.

6.1.6.4 Erase Module


If “Erase Module” is specified, the Cyclone will erase the EEPROM/flash on the target device after
entering the Monitor Mode or BDM mode.

6.1.6.5 Blank Check Module


If “Blank Check Module” is checked, the Cyclone will check to see if the flash/EEPROM on the
target device is erased.

6.1.6.6 Program Bytes


Prompts for a starting address, which must be in the module. You are then asked to enter in
hexadecimal a byte to be programmed into the current location. Clicking the OK button will
automatically advance to the next data byte location.

6.1.6.7 Program Words


Prompts for a starting address, which must be in the module. You are then asked to enter, in
hexadecimal, a word to be programmed into the current location. Clicking the OK button will
automatically advance to the next data word location.

6.1.6.8 Program Module


This command will program the selected S-record file into EEPROM/flash. For this command to
work, you must have previously selected an S-record file.

6.1.6.9 Program Feature Data


The Program Feature Data option on the Cyclone Image Creation Utility gives the user more
options to program dynamic data programming on the target device. To use Program Feature Data
select the "PF" command when creating a programming image. A window will show you the
options for feature data to program.

User Manual For Cyclone FX Programmers 64


Figure 6-15: Using PF Command (Dynamic Data)

The options can be 1) a string of the current date (YYYY-MM-DD), 2) a string of the current date
and time, 24-hour clock (YYYY-MM-DD HH:MM:SS), 3) run test data.
To 4) program the barcode into the flash of the target device, BARCODESTR should be selected.
The next window contains the hex address of where the dynamic data will be stored:

Figure 6-16: Program Feature Address Dialog (Hex)

6.1.6.10 Verify Module


This command will verify that the selected S-record file was programmed into the EEPROM/flash.
For this command to work, you must have previously selected an S-record file.

6.1.6.11 Verify Checksum


This command verifies the module content via a CRC calculation. This command is typically much
faster than performing a full Verify Module command.

6.1.6.12 Choose Serial File


This command becomes available once a programming algorithm is selected. It specifies the serial
file that holds the serial numbers to be programmed to the target.

6.1.6.13 Program Serial Number


This command becomes available once a programming algorithm is selected. It will instruct the
Cyclone to program the serial number to the target once executed. As with other commands, the
serial number will not be programmed until the SAP operations are carried out.
When using a barcode scanner as part of the programming process, a Barcode Test file must be
included with the programming script of the SAP image. The “Use Barcode File” selection is
enabled, and the exact file specified, in the FX Exclusive Settings section of this window. Please
refer to Section 6.1.11.1 - Use Barcode File. For more information on using a barcode scanner
with the Cyclone FX please see CHAPTER 12 - USING A BARCODE SCANNER TO SELECT
AN IMAGE & INITIATE PROGRAMMING.

User Manual For Cyclone FX Programmers 65


6.1.6.14 User Options Commands
Some ARM devices have areas of flash memory dedicated to programming user configuration
data. As some writes to such areas can be sensitive or permanent, it is important that the
developer is able to write these options correctly the first time and avoid mis-programming
adjacent options that they wish to leave untouched. http://www.pemicro.com/blog/
index.cfm?post_id=177

Figure 6-17: Program User Options (PU Command) - Select User Options File

6.1.6.14.1 Create/Modify User Options File


When the Create/Modify User Options File (CU) command is selected a new window will open, in
which the names of existing user area(s) and included options are displayed. For each user option,
the developer will have the ability to either "Write [a new] Value" or "Leave [the option]
Unmodified." New values must be written in hexadecimal format.
The user may also import and modify an existing User Options file by clicking the Import from File
button at the bottom of the dialog.

User Manual For Cyclone FX Programmers 66


Figure 6-18: Create User Options File Window

Once all values have been written in their appropriate fields, the developer can save the user
options (.OPT) file by clicking Save to File. Once a user options (.OPT) file has been created/
saved, it can be used to program the device's user options by using the Specify User Options File
(SU) and Program User Options (PU) commands.

6.1.6.14.2 Specify User Options File


With the Specify User Options File (SU) command, the developer can select an existing user
options (.OPT) file.

6.1.6.14.3 Program User Options


Once a file has been specified, the Program User Options (PU) command can be used to write the
values specified by the file. For most devices, new option values won't take effect until the device
is reset.

6.1.7 Communication Mode and Rate Settings


These are located in the Settings tab. Cyclone FX programmers support multiple communication
modes and communication rates. A user needs to select proper communication mode and rate
from the drop down list after programming operations are specified. The debug connector pin
definitions are listed for reference.

6.1.8 Target Power and Voltage Settings


These are located in the Settings tab. A user may elect to use Cyclone to supply power to the
target. In this case, the Target Voltage specifies the target MCU I/O voltage level.
The user needs to take into account the power discharge time for the Power Down delay. The
reset driver delays, power stabilization time, and the target clock stabilization time should be
considered for the Power Up delay.
A checkbox is available for a user to instruct the Cyclone to turn off target power after SAP
operations. If unchecked, the target power will remain on.
The user has the option to provide Reset Delay if certain reset monitoring devices are used. The
Cyclone will delay for the specified time after allowing the target out of reset.

User Manual For Cyclone FX Programmers 67


6.1.9 Image Description
The Cyclone Image Creation Utility allows the user to summarize the purpose of their current
configuration for future reference by adding text to the Image Description box. The description will
be either programmed into the Cyclone or saved into an encrypted file.
The image description will appear on the Cyclone’s touchscreen LCD for image identification. This
field will not affect the Cyclone’s operations with the target.
Tip: If your image will be encrypted, it can be helpful to indicate this as part of the Image
Description.

Figure 6-19: Image Description Box

6.1.10 ProCryption Security Features


ProCryption Security Settings are located on the Security & Advanced tab of the Cyclone Image
Creation Utility. Cyclone FX programmers, and Cyclone LC programmers with ProCryption
Security activated, can take advantage of these powerful security features.

6.1.10.1 SAP Image Encryption


Users can create unique ImageKeys which can be used to encrypt their programming images.
SAP images encrypted in this way can only be loaded onto a Cyclone that has been provisioned
with the identical ImageKey.
Note: Both the Cyclone and the ImageKey are needed to decrypt the image. If the ImageKey is later
removed from the Cyclone, the encrypted SAP image cannot be decrypted for programming.
Likewise, the encrypted image cannot be read on a PC.

This section will detail how to use the Cyclone Image Creation Utility to encrypt a SAP image. For
a more in-depth description of Cyclone SAP image encryption, please see CHAPTER 11 - SAP
IMAGE ENCRYPTION. For detailed information about how to use and manage encrypted
programming images during the production process, the user should refer specifically to Section
11.4 - Managing Encryption For Production Programming.

6.1.10.1.1 Creating an ImageKey


If an ImageKey has not been created or a new ImageKey is required, the user should select the
“Image Encryption” combo-box in the Cyclone Image Creation Utility and choose the “Create
Image Encryption Key...” option.

Figure 6-20: Create Image Encryption Key - Drop Box

This will pop up a box asking for a descriptive ImageKey Name (this name will be used for display
in many dialogs):

User Manual For Cyclone FX Programmers 68


Figure 6-21: Create ImageKey

After entering the name, the user should click Generate Encryption Key. This will bring up a dialog
which allows the user to choose the save location:

Figure 6-22: Save Image Encryption Key To File Dialog

The user should navigate to the desired location and then click "Save". The ImageKey will be
generated and automatically selected in the Cyclone Image Creation Utility, such that generating
an image will use this ImageKey for encrypting.

Figure 6-23: ImageKey Selected After Creation

Note: Every ImageKey created is unique and may not be recreated. This means that once generated,
the user should keep the ImageKey in a secure place. Users may also wish to keep track of which
SAP images have been encrypted with each ImageKey, as the current software does not track this
information.

By default, the ImageKey will stay selected in the Image Creation Utility. If a different ImageKey is
required for encryption, or the user does not wish to encrypt their SAP image, the corresponding
change may easily be selected using the drop-down box.

6.1.10.1.2 Encrypting A SAP Image


To create an encrypted programming image, the user sets up their parameters in the Cyclone
Image Creation Utility as usual, and then simply selects the desired ImageKey in the "Image
Encryption" combo-box.

User Manual For Cyclone FX Programmers 69


Figure 6-24: ImageKey Selection

The image will automatically be generated as an encrypted image, encrypted with the selected
ImageKey. An encrypted stand-alone programming image is called an eSAP (Encrypted Stand
Alone Programming) file. This eSAP file may be downloaded to any Cyclone which has been
provisioned with the same ImageKey (i.e. the ImageKey has already been added to the Cyclone).
This is discussed in Section 11.4.1 - Provisioning a Cyclone with an ImageKey.

6.1.10.2 Image Restrictions


There are any number of reasons why the user may want to place restrictions on the use of
specific programming images on a Cyclone programmer: from added ease when managing
production to a desire to protect intellectual property.Cyclone FX programmers and Cyclone LC
programmers with the ProCryption Security Activation License are able to restrict the use of
programming images via the associated fields in the Cyclone Image Creation Utility.

Figure 6-25: Image Restrictions

This area allows you to specify one or more restrictions and tie them to specific programming
images. Even if restricted programming images are deleted from Cyclone’s internal memory or an
SD card, the Cyclone platform has a persistent memory that continues to tie security restrictions to
that programming image. Thus, if an image is removed and re-added to a Cyclone, the image
counts are maintained and would continue counting from where it left off. Also, if the SD Card is
moved from Cyclone to Cyclone, the count is maintained in both Cyclones as well as the SD Card.
Every time an image is generated by the Cyclone Image Creation utility, it is encoded with a unique
image ID number. All counts are stored relative to this unique ID number. So, when an image is
regenerated in the Cyclone Image Creation utility, it will have its own counts which will not conflict
with the previously generated image, even if the images are otherwise exactly the same. In this
way, the user can regenerate an image to allow a new batch of targets to be programmed.
Note: The user may set more than one type of restriction on a programming image. The ability to
program the image will be restricted by whichever triggers first. E.g., if the user creates settings to
allow 100 programs, and also sets an allowed date range restriction, the ability to program the
image will be restricted as soon as the first of these conditions is triggered.
Currently the user may set the following restrictions:

6.1.10.2.1 Limit Image Usage Between Dates


When “Limit Usage Between Dates” is checked and the start and end dates are specified with valid
dates (format: DD/MM/YYYY), the Cyclone operator will only be allowed to program the
corresponding programming image when the date is on or between the dates specified. The
Cyclone has an onboard battery and clock which keeps a clock running even when power to the
Cyclone is removed. This clock date is the one used for comparison to the UTD Date specified in
the image. The ability to limit programming to a date is useful for making sure that an image will
stop working after a period of time. This could be for security purposes, or to make sure that a new
and updated image will need to be uploaded to the Cyclone after a period of time (for instance, to
not allow a firmware more than a year old to be programmed onto a target).

User Manual For Cyclone FX Programmers 70


6.1.10.2.2 Limit Number of Programs Allowed
When “Limit Number of Programs Allowed” is checked and a number is specified in the
corresponding box (minimum = 1), the Cyclone operator will only be able to execute a number of
successful programming operations of this programming image less than or equal to the number
specified. The current programming count can be displayed on the main screen of the Cyclone or it
can be seen on the image's statistics page (see Section 6.1.10.2.4 - Image Restriction
Statistics).

6.1.10.2.3 Limit Number of Failures Allowed


When “Limit Number of Failures Allowed” is checked and a number is specified in the
corresponding box (minimum = 1), the Cyclone operator will only be able to execute programming
operations on the current image until the maximum number of errors specified has been reached.
This restriction exists largely to prevent an operator from intentionally generating an error as part
of the programming process in an attempt to circumvent the count restrictions. A recommended
limit on this number would be on the order of 5% of the allowed programming counts.

6.1.10.2.4 Image Restriction Statistics


Statistics related to any specified restrictions for the currently selected programming image may
viewed by navigating in the touchscreen menu to Current Image Operations - Show Current Image
Stats. For more information on viewing programming image stats, see Section 5.2.2.4 - Show
Image Restriction Stats (Requires FX or ProCryption Security Activation).
In addition, the statistics for Number of Programs & Maximum Allowed can be set to display on the
home screen by navigating in the touchscreen menu to Configure Cyclone Settings -> Configure
Screen -> Configure Home Screen. For more information on how to configure the Cyclone’s home
screen, see Section 5.2.3.5.4 - Configure Home Screen.

6.1.11 FX Exclusive Features


This area contains a hardware feature that is exclusive to the Cyclone FX, and as such cannot be
licensed by Cyclone LC programmers.

6.1.11.1 Use Barcode File


PEmicro’s CYCLONE FX programmers can be configured to use a bar code scanner (connected
to the extension port) as part of the programming process. During setup the user will create a
Barcode Test file using the provided Barcode Test Generator utility.
Here, the user should then check the Use Barcode File checkbox if they wish to include a Barcode
Test file in the programming script of their SAP image.

Figure 6-26: Use Barcode File

The user can then Browse to the file they wish to select. This is required when using the bar code
scanner as part of the programming process. For more information on how to incorporate a
barcode scanner into the Cyclone’s programming process, please see CHAPTER 12 - USING A
BARCODE SCANNER TO SELECT AN IMAGE & INITIATE PROGRAMMING.

6.1.12 Store Image To Cyclone


“Store Image to Cyclone” allows the current configuration to be programmed into the Cyclone. The
Cyclone will then be ready for operations. After you click “Store Image To Cyclone,” the Cyclone
Control GUI will pop up so that you can choose the Cyclone onto which you wish to save the SAP
image.

User Manual For Cyclone FX Programmers 71


Figure 6-27: Cyclone Control GUI: Choose Cyclone for Stored Image

The Cyclone Control GUI drop-down list allows the user to select from all the Cyclones available.
In the case of a Cyclone present on a different network (i.e., not displayed automatically in the
drop-down list), the user may specify its IP address by using the Specify Cyclone checkbox and
typing the identifier of the Cyclone.
Click on "Connect" to access the specified Cyclone. A click on the "Apply Changes" button will
then store the image on the selected Cyclone.

6.1.13 Store Image To Disk


“Store Image To Disk” allows the current configuration to be saved onto the hard drive. The image
can then be transferred to the Cyclone’s internal flash (or an installed SD card) via the Manage
Images Utility.

6.1.14 Save Cyclone Configuration


“Save Cyclone Configuration,” in the file menu, allows the user to save the configuration into a file,
which may be used for future reference, e.g., comparing the Cyclone contents with the file to see if
they are the same.

6.1.15 Load Cyclone Configuration


“Load Cyclone Configuration” in the file menu allows the user to load a configuration that has
previously been saved in order to create a new image.

6.2 Managing Multiple SAP Images


The Cyclone Control GUI, shown below in Figure 6-28, allows the Cyclone to store and manage
multiple images in the Cyclone’s internal memory and - on a Cyclone FX or a Cyclone LC with the
SDHC Port Activation License installed - on any compatible memory card that is loaded into the
SDHC port.
Any programming images that have been created and saved to the disk using the Cyclone Image
Creation Utility may be loaded collectively onto the Cyclone, with one exception. Encrypted images
may only be loaded if their ImageKey resides on the Cyclone.

User Manual For Cyclone FX Programmers 72


Figure 6-28: Manage Images Utility

Upon opening a selected Cyclone in the Cyclone Control GUI, the user is provided in the first tab
with a list of the images currently on the unit’s internal memory which are marked with a Storage
Area label of "Internal". A list of images on any installed SDHC card will also be displayed with a
Storage Area label of "External"
You can add images with the "Add Image Internal" button under the images panel. These images
will appear with a "Status" label of "Ready to Store". These images are not yet in the Cyclone, the
"Apply Changes" button will have to be clicked for the changes to take effect.
If the Cyclone’s SDHC port is activated, the user can also add images to the external memory by
using the drop-down next to the "Add Image Internal" button and selecting "External". Alternatively,
once an image has been added to the proposed changes and it is in the "Ready to Store" state, the
user may right click on the image and click the "Switch storage to External" option.
In Figure 6-28, note that the Encryption area displays “Encrypted” or “None” to indicate whether
or not each programming image is has been encrypted. The Status area will display “Key
Missing!” if the ImageKey for an encrypted image has been removed from the Cyclone.
For information on how to encrypt SAP Images and the significance of the ImageKey, please refer
to Section 6.1.10.1 - SAP Image Encryption. For an overview of Cyclone SAP Image encryption
and the process of using encrypted images in the production process, please see CHAPTER 11 -
SAP IMAGE ENCRYPTION.

6.2.1 Delete Images From Internal/External Memory


Any images that are already stored on the Cyclone or installed SD card can be deleted by just
clicking on the trash can on the left of the image or by selecting the image and clicking the Delete
key on the keyboard, the image status will be changed to "Ready to Erase.” The image will be
removed after "Apply Changes" is clicked.

6.2.2 Add/Remove Images From The Commit Changes Panels


Once the images that you wish to load appear in the images tab, you must press “Apply Changes”

User Manual For Cyclone FX Programmers 73


to update the Cyclone accordingly. No actual updates will occur to the Cyclone’s internal/external
memory or installed SD card until the user selects “Apply Changes.
Note: Any SAP images that are already stored on older Cyclone models such as the Cyclone PRO,
MAX, Renesas, STMicro, or Cyclone LC ARM - Rev. A/B (or on a CompactFlash card in one of
those units, if applicable) can not be removed individually and can only be erased by removing all
images.

User Manual For Cyclone FX Programmers 74


7 CYCLONE PROGRAMMER MANUAL CONTROL
The Cyclone FX must be configured before it can serve as a Stand-Alone Programmer. The user
may manually control the Cyclone via the LCD touchscreen menu and/or the Start button, or via
PC software. See CHAPTER 8 - CYCLONE PROGRAMMER AUTOMATED CONTROL for
information on how to use the Cyclone Control Suite to configure, control, and automate Cyclone
operations. The target power management schemes remain the same for each control method.

7.1 Operation Via Start Button


There is a Start button on the top of the Cyclone which is used for stand-alone programming. It is
specified as follows.
Button Function
START Start executing the tasks pre-configured into the Cyclone of the currently
selected programming image.

7.1.1 LED Indicators


The Cyclone has two (2) LEDs to indicate the current operation stage.
LED FUNCTION
Error The Cyclone failed to execute the functions as instructed.
Success The Cyclone executed the functions successfully.

7.1.2 Procedure via Start Button / LEDs


The following steps must be followed in order for the Cyclone to operate properly after it has been
configured:
1. Turn off the target power supply if the “POWER IN” Jack is adopted.
2. Turn off the Cyclone system power.
3. Set the correct Power Management jumper settings.
4. Connect the target power supply to the “POWER IN” Jack, if applicable.
5. Connect the “POWER OUT” Jack to the target board power, if applicable.
6. Connect the ribbon cable to the target board debug connector.
7. Turn on the Cyclone system power.
8. Turn on the target power supply, if applicable.
9. Press the “START” button on the Cyclone.
When the “Success” LED lights up, you have successfully programmed your target.

7.1.3 Example
After the user programs the contents and procedures into the Cyclone’s on-board flash, the
Cyclone may be used as a Stand-Alone Programmer. Suppose the user wants to perform the
following instructions for a target device:
1) Erase Module
2) Program Module
3) Verify Module.
If the Cyclone is providing power to the target board, the “Target Power” icon will illuminate on the
LCD display.
The Cyclone will then perform the operations. If they are performed successfully, the “Success”
LED will be illuminated. One stand-alone programming cycle will have just been completed.

7.2 Operation Via LCD Touchscreen Menu


Once the Cyclone FX is configured for stand-alone programming it may be operated by making

User Manual For Cyclone FX Programmers 75


selections from the touchscreen LCD menu. This section describes the menu functions that allow
the user to easily execute stand-alone programming functions using the touchscreen LCD.

7.3 Home Screen

The home screen appears when the Cyclone is powered on, or when the Home button
is tapped.

7.3.1 Icons
A row of icons in the upper right corner indicates the status of various attributes of the Cyclone.
Note: The user may tap on the row of icons to view the meaning of each of the currently displayed icons.
Cyclone Unit Status: Ok / Bad

Programming Status: Ready / Busy

USB-To-PC Enumerated: Yes / No

Real-Time clock Enabled & Working: Yes / No

Cyclone Power Relays: Closed / Open

Target Device Is Powered*: Yes / No

SDHC Memory Card: None / Valid / Unformattted / Reset Cyclone**

Barcode Scanner: Detected / Not Detected

* Target Device Is Powered - “Yes” indicates that the Cyclone FX detects power on the Vcc pin of
the target device programming header.
** SDHC Memory Card - “Reset Cyclone” indicates that the Cyclone needs to be reset before the
SDHC card will register as Valid. The user can push the Reset button which is located on the front
side of the Cyclone, below the LED indicators.

7.3.2 Configurable Display Area


The main area of the home screen can be configured to optionally display the following
information, by using the Cyclone IP Configuration Utility (see Section 5.2.3.5.4 - Configure
Home Screen):
1. Firmware version of the Cyclone (always shown).
2. IP address assigned to the Cyclone.
3. Name assigned to the Cyclone.
4. Number of programming images in the Cyclone’s memory.
5. Name of the selected programming image.
6. First serial number associated with the selected image
7. Current status.
8. Results of the last operation performed.
9. Time and date.
10. Status Window and Main Menu button (always shown).
11. Programming count & limit
12. Target voltage and/or current

7.4 Status Window


The status window appears in the lower left corner of the home screen and displays the results of

User Manual For Cyclone FX Programmers 76


programming operations.

7.4.1 Error Information Icon


When the Cyclone experiences an error during programming operations, the Info icon will appear
to the left of the Menu button (or AUX button, if configured).
Info Icon:

Press the Info icon to view a detailed description of the error.

7.4.2 AUX Button (Appears If Configured)


The Cyclone allows the user to add an Auxiliary (AUX) button to the home screen which will
perform a specific function when pressed. The specific function is chosen by the user when the
AUX button is configured. The AUX button will appear on the home screen to the left of the “Menu”
button, in the lower right corner of the home screen.

Figure 7-1: AUX Button On Home Screen (configured for perform CRC32 function)

For information on how to configure the AUX button, see Section 5.2.4 - Status.

7.4.3 Main Menu

The Main Menu is accessible by pressing the “Menu” button when the Home Screen is displayed.
The Main Menu screen contains four selections. From these, select “Current Image Options.”

Figure 7-2: Touchscreen LCD Menu - Standalone Functions Highlighted

The menu selections in “Current Image Options” will allow the user to execute programming
operations, verify data, toggle power, validate the programming image, and modify the upcoming
serial number if necessary.

7.4.3.1 Execute Image Function


Execute Specific SAP Function presents four Stand-Alone Programming functions that you may
execute by tapping the function that you wish to execute:

7.4.3.1.1 Launch Programming


This allows the user to execute the programming function. The Cyclone will program the target
device, if able, using the currently selected programming image. This is functionally equivalent to
pressing the Start button.

User Manual For Cyclone FX Programmers 77


7.4.3.1.2 Verify Data In Target
Performs a verify function on the data that has been programmed into the target device.

7.4.3.1.3 Toggle Power


Toggles the target power and makes sure all ports are driven to debug mode level.

7.4.3.1.4 Power Cycle Device To Run User Code


Toggles the target power and maintains tri-state mode for all signals.

7.4.3.1.5 Validate Image CRC32


Allows the user to perform a CRC32 validation on the currently selected programming image.

7.4.3.2 Set Image Validation


Allows the user to choose between two validation settings: 1) validate the image each time the
Start button is pressed, or 2) do not validate the image.

7.4.3.3 Serial Numbers


Displays the serial number information associated with the currently selected programming image.
If there is none, it will display, “This Image Contains No Serial Numbers.” There may be one or
more Serial Files associated with the image. The user can click on a specific Serial File name to
see the following information about that Serial File:
• UID - Unique identifier of the serial number
• Next Serial # ASCII - Next serial number to be programmed (shown in ASCII format)
• Algorithm ID - Displays the algorithm ID of the serial file
• CS ID - Displays the ID of the CS (Choose Serial) command in the SAP file.

Figure 7-3: Serial File Selection

The user can also click on “Modify Serial Number” to edit that serial number. It is possible to
Decrease or Increase the Next Serial by -10, -1, +1, +10. This is often done to address issues in
the production process, such as during initial setup.

User Manual For Cyclone FX Programmers 78


Figure 7-4: Increase or Decrease Serial Number

The adjustment buttons will display “Increase Not Allowed” and “Decrease Not Allowed” if the
image/algorithm/CS file that the user has selected does not allow for this operation.
Note: Unlike PEmicro’s current serial files, earlier “legacy” serial files are specific to one programming
image, When viewing Serial Number info for an image that references one or more legacy serial
files, the Cyclone will not show links to the serial files but will instead display serial number info for
the first serial file. The user can then Modify Next Serial to change the next serial number, or click
MORE at the bottom to proceed to the next serial file (if any).

Figure 7-5: Serial Number View With Legacy Serial Files (CS IDs #1 & #2)

7.4.3.4 Show Image Restriction Stats (Requires FX or ProCryption Security Activation)


Displays current statistics, if any, for Image Programmed Count & Maximum Allowed, Errors
Logged & Maximum Allowed, and Date Range Allowed. These limits can be set in the Security
Features section of the Cyclone Image Creation Utility (see Section 6.1.10.2 - Image
Restrictions).
Note: When Current Image Stats is displayed as a home screen item, only Image Programmed
Count & Maximum Allowed are displayed on the home screen.

User Manual For Cyclone FX Programmers 79


8 CYCLONE PROGRAMMER AUTOMATED CONTROL
Users who wish to control, configure, and automate one or more Cyclone units have several
options available via the Cyclone Control Suite. All of these options are available to Windows
users, and many are also available to macOS/Linux users.

8.1 Cyclone Control Suite - Overview


The Cyclone Control Suite is a new generation of automated control software developed to support
PC-based control of Cyclone LC and Cyclone FX stand-alone programmers.
Ways to control a Cyclone include programming launch, results recovery, management of images
resident on a Cyclone, addition of unique programming data for each target, as well as recovery of
descriptive errors.
The Cyclone Control Suite is included with all touchscreen Cyclones. Much of the feature set
works for all touchscreen Cyclones, however some advanced features require a Cyclone-resident
Advanced Automation License which comes built into Cyclone FX programmers and is available
as an upgrade for Cyclone LC.

8.1.1 macOS/Linux Support Notes


The following information applies to operation of the Cyclone with macOS andLinux.

8.1.1.1 Minimum Required Versions


The following are the minimum versions required for macOS/Linux support.
macOS: 10.13 High Sierra
Linux: 18.04 LTS

8.1.1.2 Usage Differences


macOS/Linux users should note some subtle differences between using the Cyclone Control Suite
with macOS/Linux vs, Windows.
1. Cyclones cannot be controlled via Serial Port (RS232) using the Cyclone Control SDK or
Cyclone Control Console with macOS/Linux.
2. While control and automation of existing programming images is available for Windows/
macOS/Linux platforms via the Cyclone Control Suite, the utility that is used to create and
configure programming images (see Section 6.1 - Cyclone Image Creation Utility) is
currently Windows only. Users should plan their projects accordingly.

8.1.1.3 Distinguishing Windows-Only And macOS/Linux-Specific Content


Information that pertains to the Windows platform only, or is particular to macOS/Linux, is indicated
by the symbols below. Content can be considered to apply to all three platforms unless otherwise
specified.
Windows-only:
macOS:
Linux:

8.1.2 Components
The Cyclone Control Suite consists of three major components:
1. Cyclone Control SDK – This is a Software Development Kit with a comprehensive API
allowing multiple Cyclones to be managed simultaneously from a user developed custom
application that loads the provided Cyclone Control library file. The library file can be
loaded from many programming languages that are able to load a such a file (C/C++, Del-
phi, C#, Java, Python, etc) as well as environments like LabVIEW. Examples and interface
code are provided in C/C++ (MSVC and GCC), and Delphi/FPC . See Section 8.2 -
Cyclone Control SDK.

User Manual For Cyclone FX Programmers 80


2. Cyclone Control Console – This is a powerful command-line application can be
launched from a script, a command-line, or another application and allows control of one
or more Cyclones simultaneously. The command-line application displays comprehensive
status messages and also returns an error code which can be recovered from the calling
application. See Section 8.3 - Cyclone Control Console.
3. Cyclone Control GUI – This is an interactive GUI based application which provides an
easy way to control Cyclones and manage images resident in the Cyclones. Given its
graphical nature, it is very easy to explore Cyclone Control Suite capabilities to intuitively
control or interact with a Cyclone. See Section 8.4 - Cyclone Control GUI.
The Console and GUI were both built using the SDK and are good examples of the types of
applications that the SDK can be used to build.
Additional sample applications come as part of the installation. They contain defined build scripts
that can be used to build the sample application without any modifications.

8.1.3 Standard Features


The three control applications all provide the following Standard features for all Cyclones:
• Cyclone control via multiple connection types:
- USB, Serial, or Ethernet
- : USB, Ethernet
• Select and Launch Images by Name or Enumeration
• Add/Remove/Update a single image in the Cyclone
• Add/Remove/Update multiple images in the Cyclone (GUI only)
• Recover programming result and descriptive error information
• Use automatically counting local (Cyclone stored) serial numbers
• Read/write Cyclone properties
• Read Image and target Properties and Status
• Remote Display Access and the ability to “touch” the screen

8.1.4 Advanced Features


The SDK and Console applications provide the following additional Advanced features for all
Cyclone FX units and any Cyclone LC upgraded with a resident Cyclone Control Advanced
Automation License:
• Add/Remove/Update multiple images in the Cyclone (Console, SDK)
• Simultaneously (Gang) Control multiple Cyclones
- USB, Serial, or Ethernet
- : USB, Ethernet
• Program (and Read) Dynamic Data in addition to fixed image data

8.1.5 PEmicro Compatible Hardware


The following lists the PEmicro hardware that is compatible with the Cyclone Control Suite. To
ensure proper operations, PEmicro recommends upgrading all Cyclone units to the latest
firmware.
• Cyclone FX Universal
• Cyclone FX ARM
• Cyclone LC Universal
• Cyclone LC ARM
• Cyclone PRO (Standard features only)

User Manual For Cyclone FX Programmers 81


• Cyclone MAX (Standard features only)
• Cyclone for ARM (Standard features only)
• Cyclone for Renesas (Standard features only)
• Cyclone for STMicro (Standard features only)

8.2 Cyclone Control SDK


The Cyclone Control SDK allows a Windows/macOS/Linux user to interact with the Cyclone via a
library file (such as Windows’ .dll, macOS’ .dylib, or Linux’ .so files).

8.2.1 Introduction
The Cyclone Control SDK is one of the three components that comprise the Cyclone Control Suite.
Its library allows the user to create an application on the PC that can directly control one or more
PEmicro Cyclone units. These interface routines are designed to be compiled into visual and non
visual applications running on Windows, macOS, or Linux operating systems. macOS/Linux SDK
files are contained in a separate .tar file (see Section 8.2.4.4 - Compiling).
The actual interface routines are located in the “cyclonecontrolsdk” library file. This library file is
callable from almost any 32-bit / 64-bit Windows, macOS, or Linux development environment.
Since the way the library file is called varies depending on the compiler used, PEmicro provides
the library interface code and sample applications for each of the following compilers.
Note: PEmicro’s blog offers articles with detailed setup instructions for some of the options below; see
the accompanying links where applicable:

• Borland Delphi 2.0+ (Pascal)


• GCC
• MicrosoftVisual C
- Setup info: http://www.pemicro.com/blog/index.cfm?post_id=139
• Microsoft Visual C#
- Setup info: http://www.pemicro.com/blog/index.cfm?post_id=161
• NI LabVIEW 2018
- Setup info: http://www.pemicro.com/blog/index.cfm?post_id=157

8.2.2 Backwards Compatibility With Classic Cyclone Control API


The “cyclonecontrolsdk” library file is backwards compatible with many of the classic Cyclone
Control API calls. In each header file, there is a constant variable or define which is declared as the
file name of the library file. The value of this variable should be changed to the new filename
“cyclonecontrolsdk.dll” instead of the old "cyclone_control.dll". After this modification, rebuild the
project and it should continue working with the new library file.

8.2.3 Getting Started with the Cyclone Control Library File - Windows Users
This section outlines the steps you need to take to begin developing your own custom application
and offers tips and suggestions to get the Cyclone Control Library File working with your PEmicro
hardware smoothly.
Note: Section 8.2.1 - Introduction includes links to detailed examples for certain compilers which detail
how to set up a programming image and use the SDK with some advanced options.

8.2.3.1 Example Programs


Located in the installation directory of the package, you will find two example programs that you
can use as a reference for your own application. The examples are located in the following
directories:
INSTALLDIR\cycloneControl\controlsdk\examples\pascal\

User Manual For Cyclone FX Programmers 82


INSTALLDIR\cycloneControl\controlsdk\examples\c\
INSTALLDIR\cycloneControl\controlsdk\examples\labview2018
INSTALLDIR\cycloneControl\controlsdk\examples\msvc
INSTALLDIR\cycloneControl\controlsdk\examples\msvcsharp
These example programs are a valuable reference to use when starting your own custom
application.

8.2.3.2 Starting Your Own Project


To gain access to the functions available in the library file the following files need to be added to
the new project workspace:

Delphi 2.0+ Projects


U

INSTALLDIR\cycloneControl\controlsdk\examples\pascal\cyclone_control_api.pas

All other source files which will call functions from the library file should include the above file using
the Delphi “uses” command.

MSVC 5.0+ Projects


U

INSTALLDIR\cycloneControl\controlsdk\examples\c\cyclone_control_api.h
INSTALLDIR\cycloneControl\controlsdk\examples\c\cyclone_control_api.c

All other source files which will call functions from the library file should include the above header
file with the C/C++ #include directive.

MSVC# 2017 Projects

INSTALLDIR\cycloneControl\controlsdk\examples\msvcsharp\visual_sap_control\cyclone_control
_api.cs

NI LabVIEW 2018 Projects

INSTALLDIR\cyclone\cycloneControl\controlsdk\examples\labview2018\user.lib\cyclonecontrolsdk
\cyclonecontrolsdk.lvlib
INSTALLDIR\cyclone\cycloneControl\controlsdk\examples\labview2018\user.lib\cyclonecontrolsdk
\VIs\*.vi

The pre-built VIs that we provide include modifications for error handling using error clusters.
Please visit our blog post “Automated Flash Programming with LabVIEW” for more information on
how to develop your own LabVIEW project.

8.2.4 Getting Started with the Cyclone Control Library File - macOS/Linux Users
This section outlines the steps needed to begin developing a custom application and offers tips
and suggestions to get the Cyclone Control SDK library working smoothly with PEmicro hardware.

8.2.4.1 SDK Contents


macOS/Linux users will require the CycloneControlSDK.tar file, an archived (zipped) file which

User Manual For Cyclone FX Programmers 83


includes macOS and Linux releases.
The release is structured along the following directories:
• Linux: C and C++ example files, the “cyclonecontrolconsole” command line utility,
CycloneControlGUI, and the “libcyclonecontrolsdk.so” library
• macOS: C and C++ example files, the “cyclonecontrolconsole” command line utility,
CycloneControlGUI, and the “libcyclonecontrolsdk.dylib” library
• Firmware: The latest firmware releases
• User manuals: The user manual for the Cyclone programmer.

8.2.4.2 Example Programs


Located in the macOS and Linux directories of the package, you will find two example programs
that you can use as a reference for your own application. The examples are located in the
following directories:
INSTALLDIR/macOS/c: C example files for macOS
INSTALLDIR/macOS/cpp: C++ example files for macOS
INSTALLDIR/linux/c: C example files for Linux
INSTALLDIR/linux/cpp: C example files for Linux
These example programs are a valuable reference to use when starting your own custom
application.

8.2.4.3 Starting Your Own Project


The Cyclone Control Console (cyclonecontrolconsole) comes ready to use. To use it, you can
simply invoke a commandline command such as:
./cyclonecontrolconsole -cyclone=usb1 -listimages
./cyclonecontrolconsole -cyclone=10.1.2.3 -launchimage=1
The first command will query a Cyclone unit connected via a USB cable and list any programming
images that are on board.
The second command will remotely launch the first programming image that is on a Cyclone with
IP number 10.1.2.3.
For a full description please see Section 8.3 - Cyclone Control Console.

8.2.4.4 Compiling
In order to compile (or use the Makefile), you will need to have the appropriate compiler (such as
gcc or g++) available. These compilers are often native to Linux. Mac users will need to have
Xcode and its command-line utilities installed.

8.2.4.4.1 How To Build


The examples show how you can write a custom application using the SDK library. To build the
example files, change directory into the appropriate folder (such as "cd example\cpp") and invoke
the Makefile by calling "make" from a command line.
Please note that the Makefile only builds the example file, it does not copy the files necessary to
immediately use the compiled program. To do that, please perform a "make install", this will copy
the appropriate firmware files as well as the libcyclonecontrolsdk library, into a "deploy" folder,
thereby making the custom program readily usable.
Once you have peformed "make" and "make install", you can cd into the deploy directory and
invoke the program as follows:
./apiExample -cyclone=usb1 -listimages
This will show the programming images that are on a Cyclone connected through a USB cable.

User Manual For Cyclone FX Programmers 84


8.2.4.4.2 Running An Application On macOS
By default, MacOS does not allow applications from unindentified developers to run on the system.
This would cause a message stating that the application "cannot be opened because the
developer cannot be verified." There are two ways to resolve this issue:
1. You can simply navigate to the file on an explorer, right click on the executable, and select
the "Open with" option to open the application with Terminal.app. You will then be albe to
open the application.
2. You can completely disable this feature through the System Preferences menu, although it
is not a recommended option.

8.2.5 Initialization
Loading the DLL (C/C++ Projects only)
U

Before calling any routines from the DLL, the DLL must be loaded into memory. To do this, the
following function has been provided in the included header files. Refer to Chapter 4 of this manual
for a detailed description of this function.

loadLibrary( );

For Delphi (Pascal) and C# users, this process is transparent for the user and no action is
required.

Enumerate all ports


U

After loading the DLL, a call to the following function is required in order to properly initialize all
devices. This function should only be called once, typically at the beginning of the application.

enumerateAllPorts( );

Connect to the PEmicro hardware interface


U

The next step is to establish communications with the PEmicro Cyclone unit. This is accomplished
with the following function call:

connectToCyclone( );

Refer to Chapter 4 of this manual for a detailed description of this function. This call returns the
handle to the Cyclone unit which is used in all other routines in the DLL to identify the Cyclone.
Note that the special case of a return value of 0 indicates an error contacting the Cyclone. This
function will be called once for each Cyclone.

8.2.6 Finalization
Before closing the application, it is recommended that the session with the PEmicro hardware be
terminated and the DLL unloaded from memory.

These calls should always be made before the application closes:

disconnectFromAllCyclones( );

User Manual For Cyclone FX Programmers 85


unloadLibrary();

Note that the “unloadLibrary” call is only required for C/C++ applications. For the Delphi and C#
example projects, the DLL is automatically unloaded when the application closes.

8.2.7 Initial Cyclone Setup


The Cyclone Image Creation Utility software, which is included with each Cyclone, is used to
create the standalone images that will be stored in the non-volatile memory of the Cyclone.
Note: Mac/Linux users will need a Windows platform for the image creation and configuration process.

These programming images contain the FLASH / EEPROM programming algorithms, the actual
binary data to be programmed, the sequence of programming operations, and user specified
Cyclone settings.
Prior to using the Cyclone Control Suite, these standalone images need to be created. Please
refer to the user’s manual of your Cyclone unit for more information on standalone images and
image creation.

8.2.8 Typical Usage

Figure 8-1: Typical programming procedure flow chart

Figure 8-1 describes the most common sequence of calls to the DLL after successfully connecting
to the Cyclone unit.
a. Initiate programming operations. “startImageExecution” carries out the programming
operations defined in the stand-alone image stored on the Cyclone unit.
b. Wait for programming completion. Note that no error checking is provided by the
“checkCycloneExecutionStatus” call. A result of 0 will be returned even if an error has
occurred or if communication with the Cyclone is lost.
c. Retrieve the error code from the Cyclone unit to determine if the programming was
successful.

8.2.9 External Memory Storage Support


Some Cyclones support external memory storage. The Cyclone Control SDK and Cyclone Control
Console both support images residing on external memory cards. The parameter

User Manual For Cyclone FX Programmers 86


“selectedMediaType” is used to select between Cyclone internal Flash and external memory.
Image numbers will go in ascending order starting with image number 1. Internal images will be
counted first and external image numbers will start after the last internal image number. Image
number 1 will refer to the first image in the internal memory if there are any images in the Cyclone
internal memory, if there are no internal images, image 1 will refer to the first image in the external
memory.
Modifying images residing in external memory will only be available on Cyclones with the proper
license. Certain Cyclones may require a supplementary license to support external memory.

8.2.10 Application Programming Interface (API)


This chapter describes the API of the “CycloneControlSDK.dll” in detail. A C/C++ function
prototype is given here. Header files are provided for the following languages:

Pascal
C/C++

8.2.10.1 Constants

Name 32-bit Value

CyclonePortType_USB 5

CyclonePortType_Ethernet 6

CyclonePortType_Serial 7

CycloneInformation_IP_Address 1

CycloneInformation_Name 2

CycloneInformation_Generic_Port_Number 3

CycloneInformation_Cyclone_Type_String 4

MEDIA_INTERNAL 1

MEDIA_EXTERNAL 2

8.2.10.2 DLL Loading / Unloading Calls

8.2.10.2.1 loadLibrary

bool loadLibrary(char *filepath);

This function loads the CycloneControlSDK.dll into memory and gives the user access to all of the
functions available in the library. This routine must be called before any of the other routines
can be called.

@returnvalue True if the load was successful, false otherwise.

8.2.10.2.2 unloadLibrary

void unloadLibrary(void);

User Manual For Cyclone FX Programmers 87


This function unloads the DLL loaded with loadLibrary( ). This call should be made before the
application starts to unload itself.

8.2.10.2.3 enumerateAllPorts

void enumerateAllPorts(void);

This function performs all necessary initialization in order to successfully communicate with a
Cyclone. The function is called once before the first call to “connectToCyclone”.

8.2.10.2.4 disconnectFromAllCyclones

void disconnectFromAllCyclones(void);

This function closes all open Cyclones (if any) and frees all dynamic memory used by the DLL. The
function is called before the user application is closed.

8.2.10.2.5 version

char *version(void);

This call returns a pointer to a null-terminated string that contains the version number of the DLL.

@returnvalue A pointer to a null-terminated string containing the version number of the DLL.

8.2.10.2.6 queryNumberOfAutodetectedCyclones

uint32_t *queryNumberOfAutodetectedCyclones(void);

This function returns the number of Cyclones connected locally on USB and on your local network.

@returnvalue The number of Cyclones.

8.2.10.2.7 queryInformationOfAutodetectedCyclone

char *queryInformationOfAutodetectedCyclone(int32_t autodetectIndex, int32_t


informationType);

Specifies the index of the detected Cyclone by the function


@parameter
queryNumberOfAutodetectedCyclones(). The valid range for this
autodetectIndex
parameter is from 1 to the number of Cyclones detected.

Specifies the property of the Cyclone to return. The possible values


are:
@parameter • CycloneInformationation_IP_Address
informationType
• CycloneInformation_Name
• CycloneInformation_Generic_port_number

A pointer to a null-terminated string containing the property value of


@returnvalue
the specified Cyclone.

User Manual For Cyclone FX Programmers 88


8.2.10.3 Cyclone Connecting / Disconnecting Calls

8.2.10.3.1 connectToCyclone

uint32_t connectToCyclone(char *nameIpOrPortIdentifier) ;

This function opens a session with a Cyclone and tests the connection. The handle returned by
this function is passed as a parameter to other functions provided by the DLL. If you connect to a
Cyclone that already has a handle, the same handle is returned. If there is a failure contacting the
Cyclone, the function returns a 0.
Note that the DLL does not support multiple Cyclones connected via the serial port. If you require
more than one Cyclone to use a serial port connection, PEmicro recommends using the RS232
communication protocols.

A pointer to a null-terminated string which uniquely identifies the


Cyclone connected to the host PC.

If identifying by IP address, the string should be in the format of


xxx.xxx.xxx.xxx, where xxx = 0…255.

If identifying by name, the string should contain the name of the


@parameter Cyclone.
nameIPOrPortIdentifier

If identifying by port and the Cyclone is connected by USB, the


string should be USB# where # is 1…8. If the Cyclone is
connected by Ethernet, the string should be in the format of
xxx.xxx.xxx.xxx, where xxx = 0…255.

If the Cyclone is connected by Serial, the string should be


COM1.

The handle to the opened Cyclone unit. A return value of 0


@returnvalue
indicates a failure to connect to the specified Cyclone unit.

8.2.10.3.2 connectToMultipleCyclones

bool connectToMultipleCyclones(char *nameIpOrPortIdentifierArray,


multipleCycloneHandleArrayPtrType cycloneHandleArrayPointer, int32_t
*numberOfCycloneOpensAttempted);

This function returns a array of handles to opened Cyclones from a null-terminated String of
comma delimited identifiers.

User Manual For Cyclone FX Programmers 89


A null terminated string containing one or more
Cyclone identifiers (name, IP address, or port
number) delimited by commas.

Example: USB1,209.1.10.2,Orion,COM1

If identifying by IP address, the string should be


in the format of xxx.xxx.xxx.xxx, where xxx =
@parameter nameIpOrPortIdentifierArray
0…255.

If identifying by port and the Cyclone is


connected by USB, the string should be USB#
where # is 1…8.

If the Cyclone is connected by Serial, the string


should be COM1.

A pointer to an array of Cyclone handles. Each


element of the array corresponds to the position
@parameter of the identifier in the previous parameter. If the
multipleCycloneHandleArrayPtrType function connected to the Cyclone, the value of
the array element would correspond to its
handle otherwise it will be 0.

This value will be modified with the number of


@parameter Cyclones that the function attempted to open. It
numberOfCycloneOpensAttempted is also the size of the
multipleCycloneHandleArrayPtrType structure.

True if every Cyclone was identified and has a


valid handle.
@returnvalue
False if there were any errors identifying or
connecting to any of the Cyclones.

8.2.10.3.3 setLocalMachineIpNumber

void setLocalMachineIpNumber(char* ipNumber);

If a PC has multiple network interface cards, this function sets the IP address of the network card
to use communicate with the Cyclones. This is called prior to calling any other functions.

A pointer to a null-terminated character string in the format


@parameter ipNumber xxx.xxx.xxx.xxx, where xxx = 0…255, representing the IP address of
the network card.

8.2.10.4 Controlling Cyclone Programming

8.2.10.4.1 startImageExecution

bool startImageExecution(uint32_t cycloneHandle, uint32_t imageId);

User Manual For Cyclone FX Programmers 90


A Cyclone may have several independent programming images in its non-volatile internal or
external memory. A programming image contains the programming algorithms, binary data, and
programming sequence. This function instructs the Cyclone to start execution of an image. After
invoking this call, the “checkCycloneExecutionStatus” function is used to poll the Cyclone until
completion.

@parameter cycloneHandle The handle of the Cyclone to begin programming operations

Selects the image on the Cyclone to use. The valid range of this
parameter is from 1 to the total number of images in the Cyclone
with the count starting from internal memory and then external
@parameter imageId memory.

If a Cyclone only stores one image, this parameter is 1.

True if the programming process has started successfully.


@returnvalue
False otherwise.

8.2.10.4.2 startDynamicDataProgram

bool startDynamicDataProgram(uint32_t cycloneHandle, uint32_t targetAddress,


uint16_t dataLength, char *buffer);

Sometimes, in addition to the large amount of static data being programmed into a target from the
Cyclone, it is advantageous for the calling application to program small sections of unique data
dynamically. Examples of this include date/time, serial number, MAC addresses, and lot numbers.

This function is valid to be called only after a programming image has been programmed into the
target (once startImageExecution has completed). Call the “checkCycloneExecutionStatus”
function to wait for completion. If the target is reset by the Cyclone or by a power cycle after
programming the image, this function will fail. The workaround for this is to execute a second
image that will re-load the algorithm before you call startDynamicDataProgram.
Note: This function is only supported by the Cyclone FX or the Advanced Control Suite Upgrade License.

@parameter cycloneHandle The handle of the Cyclone to begin dynamic programming.

The first memory address of the target processor where the


@parameter targetAddress
dynamic data should be written.

The total number of bytes to be written. This parameter cannot


@parameter dataLength
be greater than 255.

@parameter buffer A pointer to the array which holds the data to be written.

True if the programming process has started successfully.


@returnvalue
False otherwise.

8.2.10.4.3 checkCycloneExecutionStatus

uint32_t checkCycloneExecutionStatus(uint32_t cycloneHandle);

User Manual For Cyclone FX Programmers 91


Checks to see if the Cyclone has completed a programming operation started with either the
“startImageExecution” or “startDynamicDataProgram” functions.

After this function returns with completed value, “getLastErrorCode” should be called to determine
the programming result. A result of 0 will be returned even if a programming error has occurred or
if communication with the Cyclone is lost.

@parameter cycloneHandle The handle of the Cyclone to perform a status check on.

1 = Currently programming
@returnvalue
0 = Completed (with or without error)

8.2.10.4.4 dynamicReadBytes

bool dynamicReadBytes(uint32_t cycloneHandle, uint32_t targetAddress, uint16_t


dataLength, char *buffer);

This function reads a specified number of bytes from a specified memory address of the target
processor. This call is only valid after first having made a call to the “startImageExecution” function
in the sequence of commands.
Note: This function is only supported by the Cyclone FX or the Advanced Control Suite Upgrade License.

@parameter cycloneHandle The handle of the Cyclone that will perform the dynamic read.

The first memory address of the target processor where the


@parameter targetAddress
data will be read.

@parameter dataLength The number of total bytes to read from the target processor

A pointer to the array where the data read will be stored. This
@parameter buffer
array must have been allocated prior to calling this function.

True if the data was successfully read


@returnvalue
False otherwise

8.2.10.4.5 getNumberOfErrors

uint32_t getNumberOfErrors(uint32_t cycloneHandle);


This function returns a count of all the errors recorded in the DLL and in the Cyclone.

@parameter cycloneHandle The handle of the Cyclone to get a count of the errors.

@returnvalue The number of errors in the DLL and in the Cyclone.

8.2.10.4.6 getErrorCode

int32_t getErrorCode(uint32_t cycloneHandle, uint32_t errorNum);

This function returns the error code of the specified error number recorded in the DLL or in the
Cyclone. It should be called when the function getNumberOfErrors() is greater than or equal to 1.

@parameter cycloneHandle The handle of the Cyclone to retrieve the error code.

User Manual For Cyclone FX Programmers 92


This specifies the error number. The valid range for this
@parameter errorNum
parameter is from 1 to the total number of errors.

@returnvalue The error code of the DLL or Cyclone

8.2.10.4.7 getLastErrorAddr

uint32_t getLastErrorAddr(uint32_t cycloneHandle);

If the “getErrorCode” function returns a non-zero value (indicating an error has occurred), this
routine can be used to query the address where the error occurred.

The handle of the Cyclone from which to request the error


@parameter cycloneHandle
address.

The memory address where the last programming error


@returnvalue
occurred.

8.2.10.4.8 getDescriptionOfErrorCode

char *getDescriptionOfErrorCode(uint32_t cycloneHandle, int32_t errorCode);

This function returns a description of the error code.

@parameter cycloneHandle The handle of the Cyclone to retrieve the error code description.

@parameter errorCode The error code to check.

A pointer to a null-terminated character string that contains the


@returnvalue
error code description.

8.2.10.4.9 resetCyclone

bool resetCyclone(uint32_t cycloneHandle, uint32_t resetDelayInMs);

This function performs a hard reset of the Cyclone. It is the same as pressing the reset button. This
is considered a legacy call and does not need to be called by the application.

@parameter cycloneHandle The handle of the Cyclone that will be reset.

The reset delay, specified in milliseconds. The delay should be


@parameter resetDelayInMs
at least 5500 ms.

True if reset was successful


@returnvalue
False otherwise

8.2.10.4.10 clearOverlayProgramData
bool clearOverlayProgramData(uint32_t cycloneHandle);

This function clears all dynamic overlay data for the specified Cyclone handle. It is recommended
to call this function before specifyOverlayProgramData. See Section 8.2.10.4.11 -

User Manual For Cyclone FX Programmers 93


specifyOverlayProgramData.

@parameter cycloneHandle The handle of the Cyclone to clear dynamic overlay data.

True if the dynamic overlay data was cleared successfully.


@returnvalue
False otherwise.

8.2.10.4.11 specifyOverlayProgramData
bool specifyOverlayProgramData(uint32_t cycloneHandle, uint32_t targetAddress,
uint32_t dataLength, char* buffer);

This function passes the dynamic data that the user wants to program to a specified Cyclone
handle. Prior to programming, the dynamic data will be overlaid onto the data in the user’s s-
record. This function is necessary for certain microcontrollers with ECC flash which
startDynamicDataProgram does not support. Must be called prior to startImageExecution. See
Section 8.2.10.4.1 - startImageExecution. See also Section 8.2.10.4.10 -
clearOverlayProgramData.
Note: This function is only supported by the Cyclone FX or the Advanced Control Suite Upgrade License.

The handle of the Cyclone to begin dynamic overlay data


@parameter cycloneHandle
programming.

The first memory address of the target processor where the


@parameter targetAddress
dynamic overlay data should be written.

@parameter dataLength The total number of bytes written.

@parameter buffer A pointer to the array which holds the data to be written.

True if the dynamic overlay data was added successfully. False


@returnvalue
otherwise.

8.2.10.5 Configuration / Image Maintenance Calls

8.2.10.5.1 getImageDescription

char *getImageDescription(uint32_t cycloneHandle, uint32_t imageId) ;

This function returns the description of a particular image stored on the Cyclone (internal Flash or
external memory card). This description is specified by the user when the image is created.

@parameter cycloneHandle The handle of the Cyclone to get an image description.

Used to select which image stored on the Cyclone to


read the description from. The valid range of this
parameter is from 1 to the total number of images in the
Cyclone with the count starting from internal memory and
@parameter imageId then external memory.

If a Cyclone only stores one image, this parameter


should be set to 1.

A pointer to a null-terminated character string which


@returnvalue
contains the image description

User Manual For Cyclone FX Programmers 94


8.2.10.5.2 formatCycloneMemorySpace

bool formatCycloneMemorySpace(uint32_t cycloneHandle, uint32_t selectedMediaType);

This function erases all images stored on the selected media type.

The handle of the Cyclone that will have its images


@parameter cycloneHandle
erased

This parameter selects between Cyclone internal


@parameter selectedMediaType Flash (selectedMediaType = 1) or external memory
(selectedMediaType =2).

True if the erasure was successful


@returnvalue
False otherwise

8.2.10.5.3 eraseCycloneImage

bool eraseCycloneImage(uint32_t cycloneHandle, uint32_t imageId);

This function erases the specified image that is stored on the Cyclone. This function is not
supported by legacy Cyclones.

@parameter cycloneHandle The handle of the Cyclone that will have its image erased

Selects the image on the Cyclone to use. The valid range of this
parameter is from 1 to the total number of images in the Cyclone
with the count starting from internal memory and then external
@parameter imageId memory.

If a Cyclone only stores one image, this parameter is 1.

True if the erasure was successful


@returnvalue
False otherwise

8.2.10.5.4 addCycloneImage

uint32_t addCycloneImage(uint32_t cycloneHandle, uint32_t selectedMediaType, bool


replaceImageOfSameDescription, char *aFile);

This function adds a specified stand-alone programming image into the selected media type. The
image files have a .SAP file extension and are created with the Cyclone Image Creation Utility. If
the Cyclone’s storage limits are reached, this routine will return an error.

The handle of the Cyclone that will accept


@parameter cycloneHandle
the new image

This parameter selects between Cyclone


@parameter selectedMediaType internal Flash (selectedMediaType = 1) or
external memory (selectedMediaType =2).

User Manual For Cyclone FX Programmers 95


Set to True if you want the image to
overwrite any existing images with the
same description
@parameter replaceImageOfSameDescription
Set to False if you do not want the image
to overwrite any existing images with the
same description. An error will occur.

A pointer to a null-terminated character


@parameter aFile string which contains the full path to the
.SAP file to be added.

The image number of the image that was


just added. This number is used as the
“imageId” parameter for some function
@returnvalue calls.

A return value of “0” indicates an error has


occurred during the process.

8.2.10.5.5 countCycloneImages

uint32_t countCycloneImages(uint32_t cycloneHandle);

This function returns the number of stand-alone programming images currently stored in the
internal Flash and the external memory card of the Cyclone.

@parameter cycloneHandle The handle of the Cyclone to query for the image count

The total number of images stored in internal and external


@returnvalue
memory.

8.2.10.5.6 getPropertyValue

char *getPropertyValue(uint32_t cycloneHandle, uint32_t resourceOrImageId, char


*categoryName, char *propertyName);

This function reads a property value of the Cyclone or a stored SAP image. Examples of properties
are Cyclone Name, Cyclone IP Address, Image Name or Image media type. There are different
categories with different properties. Refer to the header file for a list of valid category and property
names. The function getPropertyList will return a list of valid properties for each category.

@parameter cycloneHandle The handle of the Cyclone from which to read the property.

The id for image properties is the image id on the Cyclone.


@parameter resourceOrImageId
The id for Cyclone or Network properties is 0.

A pointer to a null-terminated character string that contains


@parameter categoryName
the category of the property that will be read.

A pointer to a null-terminated character string that contains


@parameter propertyName
the name of the property that will be read.

A pointer to a null-terminated character string that contains


@returnvalue
the value of the property.

User Manual For Cyclone FX Programmers 96


8.2.10.5.7 setPropertyValue

bool setPropertyValue(uint32_t cycloneHandle, uint32_t resourceOrImageId, char *


categoryName, char *propertyName, char * newValue);

This function changes the property of the Cyclone to the value specified. Only certain properties
can be changed using this call. This function will return false if the property was not changed.
Refer to the header file for a list of valid category and property names. The function getPropertyList
will return a list of valid properties for each category.

@parameter cycloneHandle The handle of the Cyclone from which to read the property.

The id for image properties is the image id on the Cyclone.


@parameter resourceOrImageId
The id for Cyclone or Network properties is 0.

A pointer to a null-terminated character string that contains


@parameter categoryName
the category of the property that will be modified.

A pointer to a null-terminated character string that contains


@parameter propertyName
the name of the property that will be modified.

A pointer to a null-terminated character string that contains


@parameter newValue
the new value of the property.

True if the data was successfully set


@returnvalue
False otherwise

8.2.10.5.8 getPropertyList

char *getPropertyList(uint32_t cycloneHandle, uint32_t resourceOrImageId, char


*categoryName);

This function returns a list of valid category and property names that can be used with the
“getPropertyValue” and “setPropertyValue” functions. Refer to the header file for a list of valid
category and property names.

@parameter cycloneHandle The handle of the Cyclone that will return the property list.

The id for image properties is the image id on the Cyclone.


@parameter resourceOrImageId
The id for Cyclone or Network properties is 0.

A pointer to a null-terminated character string that contains


@parameter categoryName
the category of the property list.

A pointer to a null-terminated character string that contains


@returnvalue
a list of property names.

8.2.10.6 Features Calls

8.2.10.6.1 getFirmwareVersion

char *getFirmwareVersion(uint32_t cycloneHandle);

User Manual For Cyclone FX Programmers 97


This function reads the firmware version of the selected Cyclone.

@parameter cycloneHandle The handle of the Cyclone of which to read the firmware version.

Returns a pointer to a null-terminated character string containing


@returnvalue
the firmware version.

8.2.10.6.2 cycloneSpecialFeatures

bool cycloneSpecialFeatures(uint32_t featureNum, bool setFeature, uint32_t


paramValue1, uint32_t paramValue2, uint32_t paramValue3, void *paramReference1,
void *paramReference2);

This function is used for executing special features described by the featureNum parameter. Refer
to the parameter specifications below for details.

@parameter featureNum CYCLONE_GET_IMAGE_DESCRIPTION_FROM_FILE

Indicates whether the image file has been decoded.


@parameter setFeature If previous operations has already decoded the file,
then set it to true. Otherwise set it to false.
@parameter paramValue1 Ignored, set it to 0.
@parameter paramValue2 Ignored, set it to 0.
@parameter paramValue3 Ignored, set it to 0.
A pointer to a pointer to a null-terminated character
@parameter paramReference1 string that contains the image description of the SAP
file.
A pointer to a null-terminated character string which
@parameter paramReference2
contains the full path to the specified SAP file.
True if the image description was read
@returnvalue
False otherwise

@parameter featureNum CYCLONE_GET_IMAGE_CRC32_FROM_FILE


Indicates whether the image file has been decoded.
@parameter setFeature If previous operations has already decoded the file,
then set it to true. Otherwise set it to false.
@parameter paramValue1 Ignored, set it to 0.
@parameter paramValue2 Ignored, set it to 0.
@parameter paramValue3 Ignored, set it to 0.
A pointer to an unsigned 32-bit value containing the
@parameter paramReference1
CRC32 of the SAP file.

User Manual For Cyclone FX Programmers 98


A pointer to a null-terminated character string which
@parameter paramReference2
contains the full path to the specified SAP file.
True if the CRC32 was read
@returnvalue
False otherwise

@parameter featureNum CYCLONE_GET_IMAGE_SETTINGS_FROM_FILE


Indicates whether the image file has been decoded.
@parameter setFeature If previous operations has already decoded the file,
then set it to true. Otherwise set it to false.
The type of setting to extract {configuration script=1,
@parameter paramValue1 image unique id etc.=2, serial numbers=3, additional
settings=4, crc_exclusive settings=5}.
@parameter paramValue2 Ignored, set it to 0.
@parameter paramValue3 Ignored, set it to 0.
A pointer to a pointer to a null-terminated character
@parameter paramReference1
string that contains the settings of the SAP file.
A pointer to a null-terminated character string which
@parameter paramReference2
contains the full path to the specified SAP file.
True if the image settings was read
@returnvalue
False otherwise

@parameter featureNum CYCLONE_GET_IMAGE_COMMMAND_LINE_PAR


AMS_FROM_FILE
Indicates whether the image file has been decoded.
@parameter setFeature If previous operations has already decoded the file,
then set it to true. Otherwise set it to false.
@parameter paramValue1 Ignored, set it to 0.
@parameter paramValue2 Ignored, set it to 0.
@parameter paramValue3 Ignored, set it to 0.
A pointer to a pointer to a null-terminated character
@parameter paramReference1 string that contains the command line parameters of
the SAP file.
A pointer to a null-terminated character string which
@parameter paramReference2
contains the full path to the specified SAP file.
True if the command line parameters was read
@returnvalue
False otherwise

User Manual For Cyclone FX Programmers 99


@parameter featureNum CYCLONE_GET_IMAGE_SCRIPT_FILE_FROM_FI
LE
Indicates whether the image file has been decoded. If
@parameter setFeature previous operations has already decoded the file,
then set it to true. Otherwise set it to false.
@parameter paramValue1 Ignored, set it to 0.
@parameter paramValue2 Ignored, set it to 0.
@parameter paramValue3 Ignored, set it to 0.
A pointer to a null-terminated character string that
@parameter paramReference1
contains the name of the script file.
A pointer to a null-terminated character string which
@parameter paramReference2
contains the full path to the specified SAP file.
True if the script file was read
@returnvalue
False otherwise

@parameter featureNum CYCLONE_TOGGLE_POWER_NO_DEBUG


@parameter setFeature Ignored, set it to false.
@parameter paramValue1 Ignored, set it to 0.
@parameter paramValue2 Ignored, set it to 0.
@parameter paramValue3 Ignored, set it to 0.
@parameter paramReference1 Ignored, set it to null.
@parameter paramReference2 Ignored, set it to null.
True if the power was toggled.
@returnvalue
False otherwise

@parameter featureNum CYCLONE_SET_ACTIVE_SECURITY_CODE


@parameter setFeature Ignored, set it to true.
The security code type (e.g. MON08, Renesas, PPC
@parameter paramValue1
Nexus 64 bit, PPC Nexus 256 bit ignored, set it to 0).
@parameter paramValue2 The length of the security code bytes.

User Manual For Cyclone FX Programmers 100


@parameter paramValue3 Ignored, set it to 0.
A pointer to an array containing the security code
@parameter paramReference1
bytes.
A pointer to a null-terminated character string
@parameter paramReference2 containing the security type string (such as 'MON08',
'RENESAS', 'PPCNEXUS').
True if the security code was set
@returnvalue
False otherwise

8.3 Cyclone Control Console


The Cyclone Control Console, the next component of the Cyclone Control Suite, is an application
that controls Cyclone operations through the use of simple console commands. This application is
very easy for Windows/macOS/Linux users to set up and use and offers functionality very similar
to using the Cyclone Control library file directly.
To find the Cyclone Control Console application, navigate to the following directory:
[INSTALLDIR]\Cyclone Control\
The Cyclone Control software performs all operations specified in simple commands. A separate
batch file would typically be used to launch the utility with the correct parameters.

8.3.1 Startup
a. Connect all Cyclone units to the PC via RS232 , USB, or Ethernet. Any combina-
tion of different connections is allowed. The exception is that only one RS232 serial
port connection can be used; no more than one Cyclone can be connected via the
RS232 serial port.
b. Connect all Cyclones to their target systems. This is done using a ribbon cable that
connects from the Cyclone to a debug header on the target board.
c. Power up the PC, all Cyclone units, and all target systems that require external power.
d. Run the CycloneControlConsole software from the command prompt.

8.3.2 Command-Line Parameters


The command-line utility supports the following commands:

-listcyclones
Shows a list of auto-detected Cyclones

-cyclone=[cyclone identifier]
Opens the Cyclone or Cyclones by name or identifier. The Cyclone argument can be a single
identifier or a comma delimited list. Available identifiers are cyclone name, port number, or IP
address.

-listimages
List the images present on all open Cyclones. If there are no open Cyclones the command will list
the images on all detected Cyclones.

User Manual For Cyclone FX Programmers 101


-launchimage=[image name or number]
Launch a specific image on the open Cyclones. The image can be identified by name or image
number.

-putdynamicdata=[cyclone number],[address],[data]
ONLY SUPPORTED BY CYCLONE FX OR THE CYCLONE CONTROL SUITE ADVANCED LICENSE.
Performs programming of dynamic data with the selected Cyclone unit. [cyclone number] is the
index of the connected Cyclone in the order in which it was entered. [address] is the starting
memory address. [data] are the bytes of data to be programmed. All values should be in
hexadecimal format. No more than 255 bytes may be programmed this way.

A Cyclone unit may only use this command after it has performed its “-launchimage” command.

If the target is reset after programming the image, “-putdynamicdata” will fail. The workaround to this is to
execute a second blank image that will re-load the algorithm before using this command.

-putdynamicstring=[cyclone number],[address],[string]
ONLY SUPPORTED BY CYCLONE FX OR THE CYCLONE CONTROL SUITE ADVANCED LICENSE.
Performs programming of dynamic data with the selected Cyclone unit. [cyclone number] is the
index of the connected Cyclone in the order in which it was entered. [address] is the starting
memory address. [string] is the data in string format. No more than 255 bytes may be programmed
this way.

A Cyclone unit may only use this command after it has performed its “-launchimage” command.

If the target is reset after programming the image, “-putdynamicstring” will fail. The workaround to
this is to execute a second blank image that will re-load the algorithm before using this command.

-showproperties=[category],[image id if applicable]
List all available properties in a [category] in the open Cyclones or a stored SAP image by using
the [image id if applicable] argument. Refer to the header file for a list of valid category and
property names. Using an empty string as the [category] value will return the available categories.

-addimageinternal=[filename]
Add a specific programming image to the internal memory of the open Cyclones. [filename] is the
path and filename of the image to be programmed into the Cyclones.

-addimageexternal=[filename]
ONLY SUPPORTED WITH CYCLONE FX OR THE CYCLONE MEMORY EXPANSION LICENSE.
Add a specific programming image to the external memory of the open Cyclones. [filename] is the
path and filename of the image to be programmed into the Cyclones.

-eraseallinternalimages
Preform a format of the internal memory connected to the open Cyclones. This will cause all
internal images to be erased.

User Manual For Cyclone FX Programmers 102


-eraseallexternalimages
Preform a format of the external memory connected to the open Cyclones. This will cause all
external images to be erased.

-eraseimage=[image name or number]


Erase an individual image from the open Cyclones. The image can be identified by image name or
by image number.

-listserialfiles
List Serial Files in Cyclone

-addserialfile=[file path]
Add Serial File to Cyclone

-deleteserialfile=[object ID or display index]


Delete Serial File from Cyclone. Can be deleted by ID or by display index.

-firmwareupdate=[firmware update mode]


Set the firmware update mode to “auto”, “dontupdate”, “forceupdate”. The default mode is “auto.”

-specifyOverlayProgramData
ONLY SUPPORTED BY CYCLONE FX OR THE CYCLONE CONTROL SUITE ADVANCED LICENSE.
Specify dynamic overlay data to a specified Cyclone.

-help
Display a list of available commands.

Note: The following command-line parameters require a Cyclone FX, or a Cyclone LC with the
ProCryption Security Activation License.

-listencryptionkeys
List Encryption Key Files that reside on Cyclone

-addencryptionkey=[file path]
Securely add ImageKey file to Cyclone (encrypted with Cyclone-specific RSA public key). The file
path is the path to the ImageKey.

-deleteencryptionkey=[object ID or display index]


Delete ImageKey File from Cyclone. Can be deleted by ID, or by display index number (-

User Manual For Cyclone FX Programmers 103


listencryptionkeys returns a numbered list of ImageKeys; the display index corresponds to these
numbers).

8.3.3 Examples
This section provides some basic examples that demonstrate how to use the Cyclone Control
Console to connect to the Cyclone, manage programming images, launch programming, etc.

Note: A more expansive list of examples is available on our website at:


http://www.pemicro.com/blog/index.cfm?post_id=142

The commands should be separated by a space. Every command starts with a “-” character,
arguments follow the “=” character.

8.3.3.1 Typical Usage

CycloneControlConsole.exe –cyclone=10.0.1.1 –launchimage=1

This example connects to a single Cyclone identified by its IP address 10.0.1.1 and executes its
first image. This is the most common usage of the Cyclone Control Utility.

CycloneControlConsole.exe –cyclone=USB1 –launchimage=1

This example connects to a single Cyclone enumerated on USB1 and executes its first image.

8.3.3.2 Controlling Multiple Cyclones

CycloneControlConsole.exe –cyclone=USB1,10.0.1.2,10.0.1.3 –
launchimage=2

This example connects to three separate Cyclone units. Two units are connected via USB
(10.0.1.1 and 10.0.1.2) and the third is connected via Ethernet (10.0.1.3). The three Cyclone units
are configured to execute image #2.

8.3.3.3 Programming Dynamic Data

CycloneControlConsole.exe –cyclone=CycloneFX_Table1,CycloneFX_Table2
–launchimage=1 –putdynamicdata=2,1080,45,44,49,53,4F,4E

Here, a Cyclone is connected via the Serial port and is identified by name rather than IP address.
After executing image #1 on both cyclones, we write 6 bytes of dynamic data on Cyclone #2
starting at address 0x1080. Note that all parameters for the “-putdynamicdata” command should
be hexadecimal values.

User Manual For Cyclone FX Programmers 104


8.3.3.4 Executing more than 1 image on the same Cyclone

CycloneControlConsole.exe –cyclone=CycloneFX_1,CycloneFX_2
–launchimage=1 –launchimage=2

Two Cyclone units are connected via Ethernet and both Cyclone units execute their first image.
Afterwards, the both Cyclones will execute their second image.
This example is useful when the processor’s code is split into two separate images. For example,
one image could contain the bootloader while the second image contains the main application
code.

8.3.3.5 Image Management – Modifying External Images

CycloneControlConsole.exe –cyclone=USB1 –eraseallexternalimages


–addexternalimage=c:\images\externalImage1.SAP

In this example, a Cyclone unit is connected via USB and it has an image stored on its external
memory card. The external image is erased and a new one is added. This type of command
should only be used when an image needs to be updated.

8.3.3.6 Image Management – Modifying Images on Two Cyclones in Parallel

CycloneControlConsole.exe –cyclone=USB1,USB2 –eraseallinternalimages


–addinternalimage=c:\images\Image1.SAP

In this example, two Cyclone units connected via USB have their images erased and a new image
is added to both Cyclone units. This type of command should only be executed when images need
to be updated.

8.3.3.7 Overlay of Dynamic Data

CycloneControlConsole.exe –cyclone=USB1 -
specifyOverlayProgramData=1,1080,80,69,77,73,67,82,79 -launchimage=1

This example demonstrates the overlaying of dynamic data for programming. The Cyclone is
connected via the USB port. Any stale data is cleared and a new set of dynamic data is passed to
the Cyclone. In this case, 7 bytes of data is overload onto your s-record starting at address
0x1080. Then image #1 is executed.

8.4 Cyclone Control GUI


As part of the Cyclone Control Suite, PEmicro includes the Cyclone Control GUI, a graphical
application that gives the users access to all the functions of the latest Cyclone Control.
Note: This new application replaces the previous Image Manager Utility and Cyclone Config IP Utility.
The Cyclone Control GUI allows users to add and remove images from the internal Cyclone
memory as well as from the external memory cards. The utility also allows the user to view and edit
Cyclone properties, to view the Cyclone LCD remotely, to view and add Cyclone Licenses, and to

User Manual For Cyclone FX Programmers 105


view and manage Serial Files and Encryption Keys.

The utility is composed of three main parts: a connection dialog, the control tabs, and a status
window.

Figure 8-2: Areas of the Cyclone Control GUI

8.4.1 The Connection Dialog


Allows the user to specify a Cyclone to connect with, as well as specify the connection options.
The utility will always automatically upgrade the firmware of a Cyclone if the firmware in the
Cyclone is outdated. However, firmware update can also be forced by using the checkbox in File-
>Force Firmware Update. This option will update the firmware on the Cyclone with the latest
firmware in the same folder as the Cyclone Control GUI.
At launch, the Cyclone Control GUI will show all the Cyclones detected on the network and those
attached by USB connections in a drop-down list. Cyclones can also be connected to by using the
“Specify Cyclone” checkbox and specifying a Cyclone by identifier. This identifier can by the
Cyclone name, its IP address or its port number.

Figure 8-3: Select Cyclone From Drop Down

Once the Cyclone is selected, clicking on the “Connect” button will bring a series of tabs that will
allow full access to the Cyclone.

User Manual For Cyclone FX Programmers 106


8.4.2 The Control Tabs
The control tabs allow access to the Cyclone. Through these tabs you can view, add, and erase
Cyclone images, you can view and modify properties, you can modify licenses, see the Cyclone
screen remotely and view/manage Serial Files and Encryption Keys.

8.4.2.1 Images Tab


The Images tab allows the user to view and modify the Cyclone images both in internal Cyclone
memory and on external memory cards. To add a new image to the Cyclone, click on the “Add
Image Internal” button and selected the image you want to add. For the changes to take effect, the
“Apply Changes” button needs to be clicked, this will place the image in the Cyclone memory.

Figure 8-4: Images Tab - Image Ready to Store

CYCLONE FX programmers and CYCLONE programmers with the SDHC Port Activation License
can also store images in external memory (an SDHC card). The storage area for the Add Image
button is toggled between Internal and External by clicking on the drop down arrow on the right of
the “Add Image” button. Users can also right-click on an uncommitted image to toggle the storage
between Internal and External.

User Manual For Cyclone FX Programmers 107


Figure 8-5: Changing Storage Area - Right Click or Drop-Down Selections

Note: An image displayed in blue is not yet committed, so disconnecting from the Cyclone before the
“Apply Changes” button is clicked will discard any changes not committed.

Erasing an image can be done by clicking on the trashcan icon at the left of the image, it can also
be done by selecting the image and click the DELETE key on the keyboard. The “Apply Changes”
buttons must be clicked for any changes to the Cyclone to take place.
To format the external memory card click on the “Format External Card” button. This will erase all
image information stored in the external card.

8.4.2.1.1 Categories
The following information is displayed for each image in the Images Tab:
Delete Image - Clicking the trash icon will designate an image for deletion. Apply Changes
must be clicked to execute this action.
Number - Displays the Cyclone’s numbering for each image.
Name - Displays the Image Name.
CRC - Displays the CRC value for each image.
Storage Area - “IN” designates that the image is stored in the Cyclone’s internal memory;
“EX” designates that it is stored in external memory (SDHC Card).
Status - This displays whether the image is “Stored” on the Cyclone, “Ready to store”, or
“Ready to erase”. A stored image that is encrypted but missing its ImageKey will always show
“Key Missing!” to indicate that the user must provision the Cyclone with this key in order to
program that encrypted image.
Encryption - Displays “Encrpyted” for encrypted images, and “None” for images that have not
been encrypted.
For more about encrypted programming images, please see Section 6.1.10 - ProCryption
Security Features.

8.4.2.1.2 View Image Properties


From this tab a user can also access the image properties of images in the Cyclone. Just right click
on the image then click on “View Image Properties” and a window with public image properties will
pop up.

User Manual For Cyclone FX Programmers 108


Figure 8-6: Image Properties Window

Properties like the image name, the voltage settings, image CRC, encryption info, and all current
serial numbers can be viewed from this window. Use this feature to make sure your image settings
are correct or check that the serial numbers change accordingly.

8.4.2.2 Properties Tab

Figure 8-7: Properties Tab

The properties tab shows all the network, Cyclone and image properties. It also shows properties
for the supported features of the Cyclone. From this tab the Cyclone firmware and logic versions,
the cyclone type, and the number of images are available. Also from this tab some of the
properties can be modified.

8.4.2.2.1 Modifying A Cyclone Property


Some properties in the Cyclone are modifiable. Only the properties that can be modified will show
three dots to the right of the property when the property is selected.

Figure 8-8: Modifying Cyclone Properties

Clicking on the three dots or double clicking on the property value will bring up an edit window.
Write the new property value and click “OK”, the property window will refresh and the value

User Manual For Cyclone FX Programmers 109


showed will be the updated value of the property.

8.4.2.3 The Remote Display Tab


This tab will show the current display of the Cyclone. The utility checks every second for changes
in the display and updates the image to the current display. This image is also clickable so clicks
on the virtual screen are also registered by the Cyclone.

Figure 8-9: Remote Display & Control of Cyclone Screen

8.4.2.4 Licenses Tab


New licenses can be added to the Cyclone using the Licenses tab. Clicking on “Add New License”
will prompt the PEmicro License Activation Form. This form takes in the Installation Code for a
product and can automatically validate and register the installation.
This tab also shows the current licenses active in the Cyclone, including the Cyclone Control
Advanced Automation License, SDHC Port Activation License, and ProCryption Security
Activation License.

Figure 8-10: Licenses Tab

8.4.2.5 Serial Files Tab


The Serial Files Tab displays any Serial Files that are on the Cyclone. Serial Files can be “deleted”
with the “Delete Serial File” button, but in this case it simply means that they will not be displayed.
An image file that uses a “deleted” Serial File will simply cause the file to re-appear and resume
with its next serial number.
Note: Older images may reference Serial Files that are image-specific and cannot be shared among
images (like current Serial Files). These will not appear in the Serial Files tab. The Cyclone menu

User Manual For Cyclone FX Programmers 110


can be used to make changes to the serialization of these images.

Figure 8-11: Serial Files Tab

8.4.2.6 Encryption Keys Tab


CYCLONE FX programmers and CYCLONE programmers with the ProCryption Security
Activation License are able to encrypt programming images with a user-generated ImageKey. In
order to load an encrypted image onto a Cyclone, or to program with an encrypted image once it is
on the Cyclone, the ImageKey used to encrypt that image must be present on the Cyclone.
The Encryption Keys tab displays any ImageKeys that reside on the Cyclone. The Name and
unique ID number for each ImageKey is shown.

Figure 8-12: Encryption Keys Tab

The Add Encryption Key button allows the user to browse to an ImageKey that they wish to add to
the Cyclone. Encrypted (eSAP) programming images cannot be loaded onto the Cyclone unless
the ImageKey that was used to encrypt them is present on the Cyclone. The transfer of an
ImageKey to a Cyclone using the Cyclone Control Suite is always secured by encrypting the
ImageKey with an RSA public key specific to the Cyclone that it is connected to.
The Delete Encryption Key button will delete the selected ImageKey from the Cyclone. The user

User Manual For Cyclone FX Programmers 111


should bear in mind that if the ImageKey is missing for an eSAP image, that image will be locked
and cannot be programmed.

8.4.3 The Status and Error Window:

Figure 8-13: Status & Error Window

This section of the Cyclone Control GUI displays the status of the utility as well as any errors
during the connection or any of the actions performed by the utility. It’ll show detailed errors on
images that failed to be properly added or actions that require additional licensing.
This new status and error window increases the visibility of the user into the tasks the utility is
performing as well as the issues that may arise.

8.5 License
The Cyclone Control Suite software does not need a license to operate when using the standard
features with any touchscreen Cyclone or when using advanced features with a Cyclone FX.
When using the advanced automation features of the SDK or Console with non-FX cyclones, a
“Cyclone Control Advanced Automation License” needs to be present in the Cyclone. This
advanced license is available for purchase for the Cyclone LC programmers.
Advanced automation features in the Cyclone Control Suite are not available for older, non-
touchscreen Cyclone models (Cyclone MAX, Cyclone PRO, Cyclone for STMicro, and Cyclone
Renesas). Please use the Classic Cyclone Automated Control Package when using advanced
features with these Cyclones

8.5.1 Hardware Licensing


PEmicro’s Cyclone licensing is hardware-based to provide the user with added flexibility. For
example, a customer in Germany can configure a Cyclone for a contract manufacturer in China,
without requiring the contract manufacturer to re-license PEmicro's software. The manufacturer
can simply download any PEmicro software, and as long as a licensed PEmicro hardware is
available on site, they can simply use the product.
Additionally, a hardware license does not require a networked or USB connection to a host PC,
thereby making possible stand-alone operations that may require other licensing (such as the use
of an SDHC card). Hardware licensing also simplifies the management of personal computers by
IT departments. PCs can be replaced, upgraded, or re-formatted, without any impact to the
functionality and /licensing in place on PEmicro's hardware.
One last beneficial feature of the hardware licensing mechanism is the fact that it requires no
change to how licenses are obtained from PEmicro. It preserves backwards compatibility, and it
maintains the same traditional licensing workflow that was previously used to license PEmicro
software.

User Manual For Cyclone FX Programmers 112


9 SAP IMAGE COMPILER (SCRIPTED PROGRAMMING & IMAGE
CREATION)
PEmicro’s Cyclone SAP Image Compiler, or CSAP, is an essential component in the Stand-Alone
Programming (SAP) image creation process. It is designed to work in tandem with the Cyclone
Image Creation Utility, by running in the background, but it can also be called directly by the user.
The CSAP image compiler typically takes the .CFG file that was generated by the Image Creation
Utility and uses it to locate and combine all of the components that will be included in the specific
SAP image that is being created. However the user can also use a command line to submit a CFG
file and various Command-Line Parameters directly to the image compiler. This allows users to
write scripts that can automate the image creation/re-creation process.
In order for the user to do this, they will need to know what Command-Line Parameters are
available and how they are used, and what items can/must be included in a CFG file, including
Programming Commands and Configuration Commands. There is also a specific Command-Line
Parameter that allows the user to easily substitute values inside a specific CFG file. This can
enable a single CFG file to be used to create different SAP images.

9.1 Launching From the Command Line


The image compiler can be launched from the command line to create a SAP image. Below is an
example of a command-line that the user might put together, along with descriptions of its various
components.

9.1.1 Command-Line Example


Below is an example of using the command line to launch CSAP for ARM Cortex devices. The
command line specifies where to locate the .CFG file and other necessary information.

>csapacmpz.exe "C:\MyWorkspace\MyProject\KL25Z128_script.cfg" /image-


file "C:\MyWorkspace\MyProject\KL25Z128_image.sap"

Most command-line parameters can be used with any device, but some are specific to certain
architectures or device types.

9.1.1.1 CSAP Executable


The user must first specify the particular CSAP executable that is compatible with their device. See
the area of the example in green, which is specifically for ARM devices:

>csapacmpz.exe "C:\MyWorkspace\MyProject\KL25Z128_script.cfg"
/imagefile "C:\MyWorkspace\MyProject\KL25Z128_image.sap"

Below is a list of which executable corresponds to which architecture/device type.

Target Architecture / Executable Name

ARM-based devices (all manufacturers) : CSAPACMPZ.exe


MAC71XX, MAC72XX: CSAPARMZ.exe
HC(S)12(X): CSAPBDM12Z.exe
ColdFire V1: CSAPBDMCFV1Z.exe
ColdFire V2, V3, V4: CSAPBDMCFZ.exe
MPC5xx/8xx: CSAPBDMPPCZ.exe
DSC: CSAPDSCZ.exe
HCS08: CSAPHCS08Z.exe

User Manual For Cyclone FX Programmers 113


HC08: CSAPMON08Z.exe
MPC55XX-57XX: CSAPPPCNEXUSZ.exe
RS08: CSAPRS08Z.exe
S12Z: CSAPS12ZZ.exe
STM8: CSAPWIZ01.exe
Renesas: CSAPWIZ00.exe
Infineon TriCore: CSAPTRICORE.exe

9.1.2 Filename and Additional Command-Line Parameters


After specifying the executable, the user must also include the [filename] parameter, which
represents the path and filename of the .CFG file. This is shown in blue in the example below. The
user may also include one or more other command-line parameters. The area of the example in
violet shows these other command-line parameters.

>csapacmpz.exe "C:\MyWorkspace\MyProject\KL25Z128_script.cfg"
/imagefile "C:\MyWorkspace\MyProject\KL25Z128_image.sap"

9.1.3 List of Valid Command-Line Parameters


Here is the listing of valid parameters:

[executable] Specifies the particular CSAP executable that is compatible with the user’s device.
Mandatory.

[filename] A configuration file containing configuration commands and comments,


default = PROG.CFG. Mandatory.

[?] Use the '?' character option to cause the utility to wait and display the result of
configuration in the image compiler window. If the user does not use a batch
file to test error level, this provides a method to display the configuration
result. This option should be the FIRST command-line option.

[hideapp] This will cause the CSAP executable programmer to NOT display a visual
presence while running, with the exception of appearing on the taskbar. (32-
bit applications only)

[/logfile logfilename] This option opens a logfile of the name "logfilename" which will cause any
information which is written to the status window to also be written to this file.
The "logfilename" should be a full path name such as c:\mydir\mysub-
dir\mylog.log.

Note: When using Windows, if the logfilename path or filename include any white
spaces then the logfilename path and filename must be surrounded by dou-
ble quotation marks.

[/imagefile imagefilename]Used when the SAP file should be saved to disk instead of stored on the
Cyclone. This specifies the path and filename for the SAP file. A user may
later update a Cyclone with this image file.

Note: If the image path or filename include any white spaces then the image path
and filename must be surrounded by double quotation marks.

User Manual For Cyclone FX Programmers 114


[imagecontent] This command-line parameter is a string that can be used to describe the SAP
image, whether it is stored in a file or on the Cyclone. If the configuration com-
mand :DESCRIBEIMAGE is also present in the .CFG file, this will be overwrit-
ten.

[paramn=s] This is a type of command-line parameter that can be used within the .CFG
file as a placeholder for data, and this data can then be specified on the com-
mand-line. Multiple scripts can potentially reference the same .CFG file, each
specifying different data on the command-line.

The n is a numeral, which allows multiple parameters to be used within the


same .CFG file.

See Section 9.2.4 - Using Command Line Parameters Inside a .CFG File
for more information and examples.

9.2 Configuration (.CFG) File Contents


A Configuration (.CFG) file includes programming commands and the location of the binary files
and programming algorithm to be used during programming. It may also include configuration
commands and may refer to utilities that can augment the programming process, such as
serialization, or setup information for use of a bar code scanner during programming.
Because the CFG file is essential to the process of creating a SAP image, the command-line used
to call CSAP must always use the [filename] parameter to specify a .CFG file. This file will instruct
the image compiler which components will be used to create the eventual SAP image and where to
them, among other things.

9.2.1 Sample .CFG File


A .CFG file is a pure ASCII file that includes one command per line. It will always include two main
types of commands: Configuration Commands and Programming Commands. It can also include a
certain type of command-line parameter that can serve as a placeholder for some of the script
contents.
Below is a sample .CFG for NXP’s Kinetis KL25Z128 device. Lines in the file that begin with
semicolons are comment lines.
The first several lines are comments that describe some of the attributes of the programming
setup. The next several lines, which begin with a colon, are Configuration Commands that are read
before programming. The final several lines are the Programming Commands that will be executed
during the programming process.
; Automatically generated configuration file
; Silicon Manufacturer is NXP
; Silicon Architecture is ARM Based (Kinetis, LPC, etc.)
;
:ALLOWOUTOFRANGE 1
:DEVICE NXP_K7x_K70FN1M0M15
:USESWD 1
:DEBUGFREQUENCY 5560
:SAPGUIVERSION 352E3737
:PROVIDEPOWER
:POWERVOLTAGE 3.0
:POWERDOWNDELAY 250
:POWERUPDELAY 250
:KEEPPOWERON 0

User Manual For Cyclone FX Programmers 115


:CUSTOMTRIMREF 31250.00
:NEWIMAGE
:DESCRIBEIMAGE Test_K70
CM
C:\PEMicro\cyclone\supportfiles\supportFiles_ARM\NXP\K7x\freescale
_k70fn1m0m15_1x32x256k_pflash.arp
SS C:\test\nxp\armcortex\mk_x_32_pflash_dflash_m5_05A0_1FFF.s19
EN ;Erase if not Blank
PM ;Program Module
VC ;Verify Checksum

9.2.2 Configuration Commands


Configuration Commands are commands that will be executed at startup, before the programming
process. You can see configuration commands used inside a sample .CFG file above in Section
9.2.1 - Sample .CFG File. They listed are in the middle of the file. They always begin with a colon.
A listing of valid Configuration Commands and their formats is included below.

9.2.2.1 Target Power Related Configuration Commands

9.2.2.1.1 :PROVIDEPOWER n
Processors: All (EXCEPT MON08)
Determines whether the Cyclone should provide power to the target. (This is the same as legacy
option :USEPRORELAYS n).
Note: Not all hardware interfaces support this command. Valid values of n are:

0 : Cyclone does NOT provide power to target. (default)


1 : Enable Cyclone to provide power to target.

9.2.2.1.2 :POWERVOLTAGE n.n


Processors: All
Use this command if the Cyclone is providing/switching power to the target, otherwise omit this
command. Specifies the target voltage as a real number. Acceptable range is from 1.6V - 5.0V.
:POWERVOLTAGE 3.3 Specifies target voltage as 3.3V

9.2.2.1.3 :KEEPPOWERON n
Processors: All
Determines whether power provided to the target should be turned off when the application
terminates. NOTE: Not all hardware interfaces support this command. Valid values of n are:
0 : Turn power off upon exit (default)
1 : Keep power on upon exit

9.2.2.1.4 :POWERDOWNDELAY n
Processors: All
Amount of time to delay when the power to the target is turned off for the target’s power supply to
drop to below 0.1v. n is the time in milliseconds.

9.2.2.1.5 :POWERUPDELAY n
Processors: All
Amount of time to delay when the power to the target is turned on OR the target is reset, and
before the software attempts to talk to the target. This time can be a combination of power on time
and reset time (especially if a reset driver is used). n is the time in milliseconds.

User Manual For Cyclone FX Programmers 116


9.2.2.2 Trim Related (If supported) Configuration Commands

9.2.2.2.1 :CUSTOMTRIMREF nnnnnnnn.nn


Processors: All
Desired internal reference clock frequency for the “PT; Program Trim” command. This frequency
overrides the default internal reference clock frequency. Valid values for “nnnnnnnn.nn” depend on
the particular device being programmed. Please refer to the electrical specifications of your device
for valid internal reference frequency clock range.

Where:
nnnnnnnn.nn : Frequency in Hertz with two decimal places

9.2.2.3 Information Processing Configuration Commands

9.2.2.3.1 :CLEARSTATUS n
Processors: All
Specifies the amount of time after programming, in milliseconds, before the Success indicator
(LED) will be turned off.

9.2.2.3.2 :DESCRIBEIMAGE string


Processors: All
string This is a string that describes the SAP image. Will overwrite the command-line parameter
“imagecontent” if both are present in the .CFG file.
Example:
:DESCRIBEIMAGE KL25Z128 TEST IMAGE

9.2.2.3.3 :ALLOWOUTOFRANGE n
Processors: All
Sets whether programming will continue when data is out of range.
:ALLOWOUTOFRANGE 1 Allows programming to continue when some data is out of
range (addresses not in module). Out of range data is
ignored.
:ALLOWOUTOFRANGE 0 Requires all programming data to be in range of the module.
Out of range data causes an error on image creation.

9.2.2.4 Image Security Configuration Commands

9.2.2.4.1 :PROGRAMLIMIT n
Processors: All
Sets a limit to the number of devices that the Cyclone may program, until this limit is removed or
reset.

9.2.2.4.2 :DATERANGE mm/dd/yyyy mm/dd/yyyy


Processors: All
Sets a starting date and ending date for Cyclone programming operations. The Cyclone will then
only allow devices to be programmed on or between these two dates, until the date limit is
removed or reset. Dates always refer to the Cyclone’s internal calendar. The character between
the two dates should be a single space. The dates should be listed in chronological order, first to
last.
Example:
:DATERANGE 05/10/2018 05/12/2018 Allows Cyclone programming operations on

User Manual For Cyclone FX Programmers 117


5/10/2018, 5/11/2018, and 5/12/2018. Does not
allow it on any other dates.

9.2.2.4.3 :ERRORLIMIT n
Processors: All
Sets a limit to the number of errors that may occur while the Cyclone is programming devices.
Once this limit has been reached, the Cyclone will no longer program devices until the error limit is
removed or reset.

9.2.2.5 Image Launch Settings Configuration Commands

9.2.2.5.1 :BARFILE barfile


Processors: All
Specifies that a .BAR file will be used during programming (programming initiated by bar code
scanner).
barfile Indicates the path and filename of the .bar file.
Example:
:BARFILE C:\PEMicro\cyclone\imageCreation\barcodeTest.bar

9.2.2.6 Connection Related Configuration Commands (ARM)

9.2.2.6.1 :DEVICE string


Processors: ARM, DSC, MAC7xxx, TriCore
For ARM and TriCore devices, this is a mandatory parameter that specifies the device. It is
required because the debug protocol changes between manufacturers and sometimes also
between families or devices.
Where:
string: represents the device and follows the “VENDOR_FAMILY_DEVICE” format.
For ARM and TriCore devices, the easiest way to obtain the device string is from the Device
Selection dialog in the Cyclone Image Configuration Utility software. In the PEMICRO Connection
Manager, click “Select New Device” to open the Device Selection dialog. Expand the device tree to
find your device, then right-click and select “Copy Device String to Clipboard.”

9.2.2.6.2 :DEBUGFREQUENCY n
Processors: ARM, ColdFire, PPC, MAC7xxx, TriCore
Specifies the communications frequency with the target device.
n Frequency in Kilohertz.

9.2.2.6.3 :USESWD n
Processors: ARM
Allows the user to specify SWD (single wire debug) mode instead of JTAG mode.
0 Specifies that JTAG mode will be used during communications (default).
1 Specifies that SWD (single wire debug) mode will be used during communications.

9.2.2.6.4 :JTAGTAPNUM n
Processors: ARM
The JTAG Tap Number is the index of the target device in the daisy chain. The first device
connected to TDI is index 0, the next is index 1, and so on. The index of the last device connected
to the TDO of the debugger is the total number of devices in the chain minus 1.
Note: This command is mandatory for JTAG daisy chain configurations. It is also important to specify

User Manual For Cyclone FX Programmers 118


JTAG communications using the :USESWD 0 command/value.

n Specifies the index number of a device in the daisy chain.


For more information on how to program or debug with a daisy chain setup, read:
http://www.pemicro.com/blog/index.cfm?post_id=136

9.2.2.6.5 :JTAGPREIR n
Processors: ARM
Every JTAG device has an IR register that is a certain width in bits. In the daisy chain the number
of Pre-IR bits is the sum of all of the IR registers between your device and the TDO pin.
Note: This command is mandatory for JTAG daisy chain configurations. It is also important to specify
JTAG communications using the :USESWD 0 command/value.

n Specifies the total length of IR registers following the target device. The first device in
the daisy chain is index 0.
For more information on how to program or debug with a daisy chain setup, read:
http://www.pemicro.com/blog/index.cfm?post_id=136

9.2.2.6.6 :RSTLOWPOSTSAP
Processors: All
Drives the RESET signal LOW before and after SAP operations.

9.2.2.7 Connection Related (S08, S12, ColdFire V1, RS08, S12Z) Configuration Commands

9.2.2.7.1 :DRIVEBKGDLOW n
Processors: S08, S12, CFV1, S12Z Note: Not RS08.
By default, the BKGD signal is driven low before and after programming operations are complete.
0 Do NOT drive BGND low before and after programming operations.
non-zero or missing Drive BGND signal low before and after programming operations.
Example:
:DRIVEBKGDLOW 0 Does NOT drive the BKGD signal LOW after operations are complete.

9.2.2.7.2 :RSTLOWPOSTSAP
Processors: All
Drives the RESET signal LOW before and after SAP operations.

9.2.2.8 Connection Related Configuration Commands (ColdFire V2, V3, V4)

9.2.2.8.1 :USEPSTSIGNALS n
Processors: ColdFire
Specifies whether to use PST signals during debug.
0 Do not use PST signals.
1 Use PST signals.

9.2.2.8.2 :RSTLOWPOSTSAP
Processors: All
Drives the RESET signal LOW before and after SAP operations.

User Manual For Cyclone FX Programmers 119


9.2.2.9 Connection Related (MPC5xxx, SPC5xxx) Processors

9.2.2.9.1 :DEBUGFREQUENCY n
Processors: ARM, ColdFire, PPC, MAC7xxx, DSC, PPCNexus
Specifies the communications frequency with the target device.
n Frequency in Kilohertz.

9.2.2.9.2 :UNCENSOR n
Processors: PPCNexus, TriCore
This parameter should be used if 64-bit and 256-bit censorship passwords are needed to bypass
security.
Note: The ASCII version of the password must have each long word separated by a dash.

n Password represented as a hexadecimal value, with no symbols or spaces

9.2.2.9.3 :RSTLOWPOSTSAP
Processors: All
Drives the RESET signal LOW before and after SAP operations.

9.2.2.10 Connection Related - DSC Processors

9.2.2.10.1 :DEVICE string


Processors: ARM, DSC, MAC7xxx, TriCore
Describes the device being programmed.
string Describes the device being programmed.

9.2.2.10.2 :RSTLOWPOSTSAP
Processors: DSC, STM8
Drives the RESET signal LOW before and after SAP operations.

9.2.2.11 Connection Related (Infineon TriCore TC1xx, TC2xx, TC3xx) Processors

9.2.2.11.1 :DEVICE string


Processors: ARM, DSC, MAC7xxx, TriCore
For ARM and TriCore devices, this is a mandatory parameter that specifies the device. It is
required because the debug protocol changes between manufacturers and sometimes also
between families or devices.
Where:
string: represents the device and follows the “VENDOR_FAMILY_DEVICE” format.
For ARM and TriCore devices, the easiest way to obtain the device string is from the Device
Selection dialog in the Cyclone Image Configuration Utility software. In the PEMICRO Connection
Manager, click “Select New Device” to open the Device Selection dialog. Expand the device tree to
find your device, then right-click and select “Copy Device String to Clipboard.”

9.2.2.11.2 :DEBUGFREQUENCY n
Processors: ARM, ColdFire, PPC, MAC7xxx, DSC, PPCNexus, TriCore
Specifies the communications frequency with the target device.
n Frequency in Kilohertz.

User Manual For Cyclone FX Programmers 120


9.2.2.11.3 :RSTLOWPOSTSAP
Processors: All
Drives the RESET signal LOW before and after SAP operations.

9.2.2.11.4 :UNCENSOR n
Processors: PPCNexus, TriCore
This parameter should be used if 64-bit and 256-bit censorship passwords are needed to bypass
security.
Note: The ASCII version of the password must have each long word separated by a dash.

n Password represented as a hexadecimal value, with no symbols or spaces

9.2.2.12 Connection Related - MON08 Processors


When using MON08 devices, the user must specify :POWERVOLTAGE and :POWERUPDELAY &
:POWERDOWNDELAY.

9.2.2.12.1 :DEVICECLOCK n
For Class 5, 6, 7, and 8 devices. Controls whether the Cyclone should drive a clock to the target or
whether the PEmicro interface should tristate its clock output. Valid values of n are:
0 : Clock driven by Cyclone. Must use :OUTPUTCLOCK to specify.
1 : Target self-clocked, Cyclone clock output disabled

9.2.2.12.2 :OUTPUTCLOCK n
Specifies the clock when :DEVICECLOCK is set to 0 (driven by Cyclone). Valid values of n are:
0 : 4.9152 MHz
1 : 9.8304 MHz

9.2.2.12.3 :CLOCKDIVIDER n
For Class 5, 6, 7, and 8 devices. Often one of the port pins of the target processor controls the
ratio of the BUS clock to the External clock. Valid values of n are:
0 : Divide by 2 (usually and if applicable)
1 : Divide by 4 (usually and if applicable)

9.2.2.12.4 :BAUD n
Sets the baud rate to n. Serial port connection only If :BAUD is specified, include :FORCEPASS
followed by :SECURITYCODE.

9.2.2.12.5 :FORCEPASS
Specifies that security should be passed on startup of the software instead of waiting for an EM
(Erase Module) command. The :SECURITY code command must also be provided.

9.2.2.12.6 :SECURITYCODE hh hh hh hh hh hh hh hh
Specifies the 8 bytes of security code to use at startup which correspond to the addresses $FFF6-
$FFFD of the target HC08 device. The parameter for this is a string containing 8 bytes of data in
HEX separated by white spaces.

9.2.2.12.7 :DEVICETYPE string


Specifies the target device family. As an example, the device type for a 68HC908KX8 would be
KX. The allowed device type values are:
AB,AP,AS,AT,AZ,BD,EY,GP,GR,GR4/8,GT,GZ,JB12,JB16, JB1/8,JG,JK,JL,JR,JW,KX,LB,LD,
LJ,LK,LT,LV,MR4/8,MR16/32,QB,QC,QL,QT,QY,RF,RK,SR

User Manual For Cyclone FX Programmers 121


9.2.2.13 Connection Related - STMicroelectronics’ STM8 Processors

9.2.2.13.1 :ARCHTYPE n
Processors: STM8
Specifies the STM8 family via the numeral n, where n indicates the following:
161 = STM8S/STM8A
162 = STM8L101X
163 = STM8L15X
164 = STM8L16X
165 = STM8AF
166 = STM8AL

9.2.2.13.2 :COMMSMODE 0
Processors: STM8
Indicates that communications speed should be controlled automatically.

9.2.2.13.3 :FORCEPASS
Processors: STM8
If this command is present, read-out protection will be ignored, i.e. the target will be unsecured and
the programming process will continue.
If this command is missing, read-out protection will NOT be ignored. If the device is protected the
programming process will not proceed.

9.2.2.13.4 :RSTLOWPOSTSAP
Processors: All
Drives the RESET signal LOW before and after SAP operations.

9.2.2.14 Connection Related - Renesas Processors

9.2.2.14.1 :ARCHTYPE n
Processors: Renesas
Specifies the Renesas family via the numeral n, where n indicates the following:
177 = R8C
178 = H8 or HS8/Tiny
179 = M16C
180 = M16C/80
181 = M32C
182 = RL78
183 = RX
184 = RX63T
185 = RH850

9.2.2.14.2 :FORCEPASS
Processors: Renesas
If this command is present, read-out protection will be ignored, i.e. the target will be unsecured and
the programming process will continue.
If this command is missing, read-out protection will NOT be ignored. If the device is protected the
programming process will not proceed.

User Manual For Cyclone FX Programmers 122


9.2.2.14.3 :RSTLOWPOSTSAP
Processors: All
Drives the RESET signal LOW before and after SAP operations.

9.2.3 Programming Commands


Programming Commands are the commands that will be executed during the programming
process. These are the main commands that will manipulate and verify data on your device. A list
of programming commands and their formats is included below.
See Section 9.2.1 - Sample .CFG File to view programming commands within a CFG file. The
example programming commands are at the bottom of the file.
Note: The command parameter formats starting_addr, ending_addr, base_addr, and byte, word are
hexadecimal by default.

BM Blank check module.


BR starting_addr ending_addr Blank check range.
CM Choose module (algorithm) file. Note: Certain modules may require a base address to be
specified
CU either
EB starting_addr ending_addr Erase byte range.
EW starting_addr ending_addr Erase word range.
EM Erase module.
EN Blank check and erase
GO Starts device running. Can be used as final command if you want the device to run for
testing. Should be immediately preceded by an 'RE' command.
PB starting_addr byte ... byte Program bytes.
PF feature_ID starting_addr Program feature data. feature_ID must be: datestr, datetimestr,
barcodestr, or runtestdata. See Section 6.1.6.9 - Program
Feature Data.
PW starting_addr word ... word Program words.
PM Program module.
PT [address] Program trim (Devices with trim only. Address is only necessary for devices that
have no dedicated non-volatile trim register)

RE Reset chip.
SS path Specify binary data file (S19/Elf/Hex) Path indicates file path to the binary.

VC Verify the programmed device using a checksum


VM starting_addr ending_addr Verify module.
VR starting_addr ending_addr Verify range.
VV type Verify module CRC. Type is CRC8 or CRC16.
DE timeinms - Delays "timeinms" milliseconds

9.2.4 Using Command Line Parameters Inside a .CFG File


The user may wish to make their .CFG files more versatile by inserting one or more placeholders
into the script, and then specifying the values for those placeholders later, on the command line,
when calling the CSAP executable that will references that script.
The command-line parameter /PARAMn=s can be used to insert text into a .CFG file. It can
replace any part of the script including programming commands, filenames, and parameters. n is a

User Manual For Cyclone FX Programmers 123


numeral from 0..9, which allows you to use multiple versions of this command line parameter in a
.CFG file. s represents a string which will replace any occurrence of /PARAMn in the script file.
As an example, the following section of a .CFG script features three instances of /PARAMn=s: /
PARAM1, /PARAM2, and /PARAM3:

RE ;Reset the MCU


CM /PARAM1 ;Choose Flash Module
EM ;Erase the module
BM ;Blank Check the module
SS /PARAM2 ;Specify the S19 to use
PM ;Program the module with the S19
/PARAM3 ;Verify the module again

When the user calls the CSAP executable that will reference this CFG file they will need to specify
the values of these parameters on the command line. See the example below, where the first of
these parameters is used to specify a programming algorithm (.SRP), the second an .S19 file, and
the third a programming command (VM).

CSAPACMPZ
/PARAM1=C:\PEMICRO\Freescale_MK40X256_PFlash_DFlash.ARP
“/PARAM2=C:\PEMICRO\EXAMPLE FILES\TEST.S19"
/PARAM3=VM

Note: Notice that /PARAM2 is enclosed in double quotation marks. This is because the parameter has a
space in its value (Example Files). The surrounding double quotation marks are required in this
situation, in order to indicate to Windows that it is a single parameter.

The complete example command line would be as below (note that this is one continuous line; no
line breaks):

C:\PROJECT\CSAPACMPZ C:\PROJECT\GENERIC.CFG /
PARAM1=C:\PEMICRO\Freescale_MK40X256_PFlash_DFlash.ARP “/
PARAM2=C:\PEMICRO\EXAMPLE FILES\TEST.S19” /PARAM3=VM

9.2.5 Sample Batch File


Here is an example of how to call a command-line programmer and test its error code return in a
simple batch file. Sample batch files are given for both Windows 95/98/XP and Windows 2000/NT/
XP/Vista/7/8/10.

9.2.5.1 Windows NT/2000/Vista/7/8/10:


C:\PEMicro\CYCLONE\IMAGECREATION\IMAGECREATIONSUPPORTFILES\CSA
PACMPZ.EXE C:\PROJECT\ENGINE.CFG
PORT=USB1
if errorlevel 1 goto bad
goto good
:bad
ECHO BAD BAD BAD BAD BAD BAD BAD BAD
:good

User Manual For Cyclone FX Programmers 124


ECHO done
Note: Path names of files that are relative to the CSAP executable can also be used.

9.3 CSAP Error Returns


An Error code is returned by the Image Compiler so that a script file or an application launching the
Image Compiler can check for it. The error codes used are:

0 - Program completed with no errors.


1 - Canceled by user.
2 - Error reading S record file.
3 - Verify error.
4 - Verify canceled by user.
5 - S record file is not selected.
6 - Starting address is not in module.
7 - Ending address is not in module or is less than starting address.
8 - Unable to open file for uploading.
9 - File write error during upload.
10 - Upload canceled by user.
11 - Error opening algorithm file.
12 - Error reading algorithm file.
13 - Device did not initialize.
14 - Error loading .PCP file.
15 - Error enabling module just selected.
16 - Specified S record file not found.
17 - Insufficient buffer space specified by .PCP to hold a file S-record.
18 - Error during programming.
19 - Start address does not point into module.
20 - Error during last byte programming.
21 - Programming address no longer in module.
22 - Start address is not on an aligned word boundary.
23 - Error during last word programming.
24 - Module could not be erased.
25 - Module word not erased.
26 - Selected algorithm file does not implement byte checking.
27 - Module byte not erased.
28 - Word erase starting address must be even.
29 - Word erase ending address must be even.
30 - User parameter is not in the range.
31 - Error during algorithm-specified function.
32 - Specified port is not available or error opening port.
33 - Command is inactive for this .PCP file.
34 - Cannot enter background mode. Check connections.
35 - Not able to access processor. Try a software reset.
36 - Invalid algorithm file.

User Manual For Cyclone FX Programmers 125


37 - Not able to access processor RAM. Try a software reset.
38 - Initialization canceled by user.
39 - Error converting hexadecimal command number.
40 - Configuration file not specified and file prog.cfg does not exist.
41 - Algorithm file does not exist.
42 - Error in io_delay number on command line.
43 - Invalid command line parameter.
44 - Error specifying decimal delay in milliseconds.
47 - Error in script file.
49 - Cable not detected
50 - S-Record file does not contain valid data.
51 - Checksum Verification failure - S-record data does not match MCU memory.
52 - Sorting must be enabled to verify flash checksum.
53 - S-Records not all in range of module. (see "v" command line parameter)
54 - Error detected in settings on command line for port/interface
58 - Device requires a power cycle.
60 - Error calculating device CRC value
61 - Error - Device CRC does not match value given
70 - Error - CSAP is already running
71 - Error - Must specify both the INTERFACE and PORT on the command line
72 – The selected target processor is not supported by the current hardware interface.

User Manual For Cyclone FX Programmers 126


10 ETHERNET CONFIGURATION
This section describes the mechanism used by the Cyclone device to transact data over an
Ethernet network. It primarily focuses on the User Datagram Protocol (UDP), which is a popular
method for sending data over a network when the speed of a data transaction is of more concern
than the guarantee of its delivery. The Cyclone takes advantage of the UDP protocol’s penchant
for speed, and adds an extra layer of logic to guarantee the delivery of UDP packets in order to
offer a best-of-both-worlds solution.

10.1 Network Architectures


Before delving into the innards of Ethernet message passing, it is prudent to briefly describe the
different network architectures in use today, and how they pertain to the operation of the Cyclone.
Computers are, of course, connected to one another through intermediary devices in order to form
networks. There are several classes of these intermediary devices, but they generally fall into one
of the following three groups:
Hubs
At the most basic level, computers are connected to one another through a Hub. A Hub is
a device with several ports that are used to connect multiple computers together. It is a
repeater device – a Hub simply copies the data incoming on one port as data outgoing on
the other ports. In this manner, if there are four computers connected through a Hub, and if
the first computer is sending data to the second computer, then the third and the fourth
computers will also receive an identical copy of that data. Hubs are usually used to set up
a small Local Area Network (LAN), which may have on the order of 10 to 20 computers.
Switches
The aforementioned type of process, where the data is simply replicated onto every
available port, quickly becomes inefficient for larger sized networks. For this reason, a
larger sized LAN employs the usage of Switches instead of Hubs. A Switch is essentially a
smart Hub, in that it limits the input and output of data to the two transacting computers.
Routers
Larger networks, such as Wide Area Networks (WANs), or the Internet for that matter, use
progressively more sophisticated devices to transact data. At the core of these devices is
the Router, which functions as a switch between networks.
The Cyclone performs irrespective of the connection mechanism, with one very important caveat:
it needs to be set up with the appropriate network parameters for the underlying network
architecture.

10.2 Network Parameters


A typical network becomes operational not after the physical connections have been established,
but after network parameters in the form of IP (Internet Protocol) numbers have been assigned to
the individual computers. An IP number is a unique string that consists of four numbers ranging
between 0 and 255, separated by dots, e.g., 192.168.1.2. Every computer that is on a network
needs to have a unique IP number. The computer uses this IP number to identify itself on the
network, and also to address the recipient of its data.
Assignation of this IP number is sufficient information to transact data on a simple network
connected by a hub. On a more complex network, however, routing information becomes
important. The routing information consists of two more IP numbers. The first of these is called the
Subnet Mask, and is used to determine whether or not the destination address resides on the
same subnet (i.e., doesn’t need to be forwarded to another network). The other IP number is the
Gateway Address, which is the address of the computer that handles forwarding and receiving of
packets to and from other networks.
Before first use, the Cyclone needs to be programmed with a unique IP number, the Subnet Mask
IP number, and also the default Gateway’s IP number. This can be done via the USB or the Serial
port, and is described in greater detail in the “Configuring the Cyclone” section of this manual.

User Manual For Cyclone FX Programmers 127


10.3 Internet Protocol
Once the network has been established, and the IP numbers have been assigned, data can be
transacted over a network with one of several protocols. By far the most prevalent protocol is the
Transmission Control Protocol (TCP), which runs on top of the Internet Protocol in what is
collectively known as the TCP/IP protocol. The TCP/IP protocol was developed by the Department
of Defense to connect different computers from different vendors by a “network of networks,” which
has become what is known as the Internet today.
The primary purpose of the TCP/IP protocol was to prevent a complete network outage in the case
of a nuclear attack, by automatically rerouting data traffic through the functioning part of the
network. As such, the TCP/IP mechanism guaranteed delivery of data packets by introducing a
system of acknowledgments and sequence numbers for the data packets. This mechanism, while
good for transacting large amounts of data (such as email or file transfers), is unsuitable in the
real-time type environment in which the Cyclone operates. Because the Cyclone needs to transact
data as quickly as possible to the target, it takes advantage of TCP/IP’s alternative, the UDP/IP
protocol.
Unlike TCP/IP, the UDP/IP protocol is a connectionless, single-packet protocol that sends short
data packets at the expense of not guaranteeing their delivery. This makes the UDP/IP protocol
efficient in real-time applications such as broadcasting video over the Internet, where the
occasional loss of a frame of data is not going to hamper the overall viewing experience. Left
unmodified, the UDP/IP, with its lack of guarantees for packet delivery, would be unusable in an
environment where the delivery of a single byte of data needs to be guaranteed. The Cyclone
firmware adds mechanisms to the UDP/IP protocol, without affecting its underlying efficiency, to
guarantee delivery of data packets.

10.4 Connecting The Cyclone Device


There are two methods for establishing a connection between a Cyclone and a PC with an
Ethernet cable. The most basic method is to connect the Cyclone directly to a PC, via a cross-over
Ethernet cable. However, the more common method is to place the Cyclone and the PC on the
same network through a Hub.

10.4.1 Connecting the Cyclone to the PC over a network


The Cyclone was intended for use on a network of multiple computers (and other Cyclones). There
are many possible network configurations, and to describe them all is beyond the scope of this
document. However, most configurations are a modification of a basic theme, which is that of
connecting one or more PCs through a Hub to one or more Cyclones.
In order to connect these devices to the Hub, you will need to use the provided straight-through
Ethernet cable. The straight-through cable, which is the “standard” Ethernet cable, is used to
connect devices of different types together, such as a PC to a Hub, or a Hub to a Cyclone.
At this point it once again becomes necessary to program the Cyclone with valid IP numbers, the
process for which is described in greater detail in the following section. However, it is important for
the Cyclone and the PCs to have matching Subnet and Gateway IP numbers, and for each to have
a unique IP number on the network. An example of a setting for above is as follows:
IP Number Gateway IP Subnet Mask
PC1 192.168.100.1 192.168.100.3 255.255.255.0
PC2 192.168.100.2 192.168.100.3 255.255.255.0
CYCLONE 192.168.100.4 192.168.100.3 255.255.255.0
Gateway 192.168.100.3 192.168.100.3 255.255.255.0
It is important to briefly touch upon the underlying network architecture, which can be a 10Mb
(Megabit), 100Mb, 10/100Mb, half-duplex, or a full-duplex connection. The details of the underlying
network architecture are beyond the scope of this document, but it is sufficient to note that most
modern network cards, as well as the Cyclone device, have the capability to configure themselves
for the underlying network through the Auto-negotiation mechanism. Auto-negotiation is performed
as soon as a network cable is connected to the device, and it sets the operating parameters of the

User Manual For Cyclone FX Programmers 128


device to match those of the network.

10.4.2 Connecting Cyclone-to-PC via an Ethernet cable


In order to connect the Cyclone to a PC directly via an Ethernet cable, you need to use what is
known as a cross-over cable. A cross-over cable, which is not provided by PEmicro, is normally
used to connect two similar devices such as a PC to a PC, or a Hub to a Hub. It is a cable that has
its receive and transmit wires crossed over so that the similar devices can effectively communicate
with one another.
With this configuration, it is still important to assign IP numbers to both the PC and the Cyclone
device. Although at first glance it may not seem necessary to assign a Gateway address in this
configuration, the Cyclone was designed to operate on a network of more than two computers, and
therefore it needs to be programmed with a Gateway address.
Assuming the desktop’s IP number to be 192.168.100.1, this is an example of the three IP
numbers that would need to be programmed into the Cyclone:
IP Number Gateway IP Subnet Mask
PC 192.168.100.1 none 255.255.255.0
CYCLONE 192.168.100.2 192.168.100.1 255.255.255.0
For more information on programming these IP numbers into the Cyclone device, please see the
following section.

10.5 Cyclone IP Setup Via LCD Menu


When the user is connecting the Cyclone via Ethernet, before the connection is established
between the Cyclone and the network the menu’s Home Screen will display the Cyclone’s IP
address as 0.0.0.0.
Once a connection has been established, the menu’s Home Screen displays the Cyclone’s IP
address and connection setting (Static or Dynamic).
The Ethernet cable can either be attached at the start of Cyclone startup or connected after setup
is complete. The connection with the network will be established when the cable is connected. If
the Ethernet cable is disconnected after setup is complete, the user should be able to simply
reconnect the cable to reestablish networking. However, depending on the setup of the DHCP
server, if the Ethernet cable is left unplugged for a considerable time the IP address may expire
and connection will have to be set up once again. This can be accomplished by restarting the
Cyclone.

10.5.1 Configure Network Settings


To configure network settings for the Cyclone, navigate to the following Menu location:
Main Menu / Configure Cyclone Settings / Configure Network Settings

The following options will be available under Configure Network Settings:


• Show Current IP Settings
• Edit Static IP Settings
• Enable/Disable Dynamic IP
• Edit Cyclone Name

10.5.1.1 Show Current IP Settings


Show Current IP Settings displays the current IP settings, including:
• Current IP Mode
• IP Number
• Mask
• Gateway

User Manual For Cyclone FX Programmers 129


• MAC Address
If you are in Static IP mode, these settings (excluding the MAC address) may be changed by
tapping on them. In this case a tap will take you to the Edit menus. If you are in Dynamic IP mode,
tapping will show a message that the Cyclone settings cannot be changed.
Dynamic vs. Static
There are two schemes for assigning IP addresses. One is the Static IP addressing mode. This
involves the user manually setting the IP address for every device on the network. In this case, it
falls to the user to ensure the IPs assigned do not conflict and are within the boundaries of the
network. The other is the Dynamic Host Configuration Protocol (DHCP). This involves setting up a
separate server to manage the IP addresses. The server is given a list of valid IP addresses for the
network. Using a predetermined set of rules, each new device that wishes to connect to the
network is given an IP address by the server. This takes the task of managing the validity and
uniqueness of IP addresses out of the user's hands and relegates it to the server. Cyclone FX
programmers are capable of using either Static IP addressing or DHCP.
Note: The current IP settings may also be viewed/edited by navigating to:

Main Menu / Status / Show Current IP Settings

10.5.1.2 Edit Static IP Settings


This allows editing of IP, Mask, and Gateway in Static IP mode. In the edit dialogs, the user must
enter a valid IP address to continue:
Format
xxx.xxx.xxx.xxx
Where:
0 <= xxx <= 255

10.5.1.3 Enable/Disable Dynamic IP


Opens a dialog to toggle the IP settings between Static and Dynamic. Once an option is selected a
message is displayed indicating that the Cyclone must be reset for this option to take effect. The
reset button on the front side of the Cyclone may be used.

10.6 Configuring Cyclone Network Settings using the Cyclone Control GUI
Before the Cyclone device transacts data on an Ethernet network, it will need to be configured with
the relevant network parameters. This configuration can be done in the "Properties" tab of the
Cyclone Control GUI.
To access the "Properties" tab, select the Cyclone from the drop-down list in the Cyclone Control
GUI and click on "Connect". The "Properties" tab will be accessible once the Cyclone is open.

User Manual For Cyclone FX Programmers 130


Figure 10-1: Cyclone Control GUI: Properties Tab Selected

From this tab, all Cyclone and Network properties can be accessed. Some of this properties are
modifiable, including all the properties needed for network configuration. A property that can be
edited will show three dots to the right of the property when you select it by clicking on its box. You
can click on the three dots or double click on the property value to bring up the edit window.

Figure 10-2: Dots Displayed At Right When Property Selected

Figure 10-3: Edit Property Window

Once the "OK" button is pressed, the values of the property will be updated in the Cyclone and the
value of the property in the Cyclone Control GUI will be refreshed showing the new value.

User Manual For Cyclone FX Programmers 131


11 SAP IMAGE ENCRYPTION
CYCLONE FX programmers and CYCLONE programmers with the ProCryption Security
Activation License allow users to create RSA/AES encrypted programming images that use their
own uniquely generated ImageKey. These encrypted images may only be used to program when
on Cyclones that are also pre-configured with the same ImageKey. This keeps the user securely in
control of both their IP and the programming process.

11.1 Overview
PEmicro uses a combination of industry-standard RSA and AES encryption technologies to
encrypt images. When a programming image has been encrypted it requires two different
asymmetric keys to be decrypted. The first is a user generated RSA encryption Key that was
specified when the programming image was generated. The second is a native key which comes
pre-installed in the Cyclone (and does not exist on the PC). This means that an encrypted image
may (A) only be loaded onto a Cyclone which holds a copy of a user generated ImageKey, and (B)
only be decrypted for programming while on a Cyclone which holds a copy of a user generated
ImageKey. The Cyclone Control Suite (GUI, Console, SDK) allows the user to add and delete
ImageKeys from Cyclones, much like programming images may be added or deleted. While many
users will use only a single ImageKey to encrypt all of their images, Cyclones may have many
different keys loaded.
Encrypted images are stored in the Cyclone in their encrypted form. If the ImageKey needed by a
programming image is deleted from the Cyclone, the Cyclone loses the ability to load any images
encrypted with that ImageKey or program any encrypted images encrypted with that ImageKey
that are already loaded. Adding the ImageKey back into a Cyclone gives that Cyclone access to
those stored encrypted images which require that ImageKey.
Encrypted images can safely be sent through electronic means to production facilities since they
are unusable without a Cyclone which has been pre-loaded with the appropriate ImageKey.
ImageKeys on the PC are themselves partially encrypted so that certain pieces can only by used
on a Cyclone. Even with this, they should be handled with care as they can be loaded into any
Cyclone.

11.2 Encrypting/Decrypting a Programming Image


The Cyclone Image Creation Utility can generate ImageKeys that are used to encrypt SAP images.
The steps that are necessary to generate ImageKeys, encrypt SAP images, provision Cyclones to
decrypt, and program with encrypted SAP images are detailed in Section 6.1.10 - ProCryption
Security Features.

11.3 What is Encrypted in an eSAP File, and How


An encrypted image (eSAP) contains three distinct sections: an informational header, a
configuration section, and a stand alone programming (SAP) data section. The ImageKey encrypts
each section in different ways to control access to each portion of the eSAP file.
The three eSAP sections are:
1) Informational Header
This section includes the description of the eSAP Image, its unique ID, the ID and name of the
ImageKey used to encrypt it, and a checksum of the data. This section is not encrypted.
2) Configuration Section
This section contains a copy of the configuration settings used to generate the Image
including which algorithm was used, power settings, clock settings, script files, and paths to
the binary data files. No programming data from the user’s data files is included in this
section. This section is encrypted in such a way that if a user has the appropriate ImageKey
on the PC, they may import the configuration information from an eSAP file into the Image
Creation Utility. This is useful for seeing the settings used to generate an image, and, if the
user has all of the data files needed, generate a new programming image file with the same

User Manual For Cyclone FX Programmers 132


configuration.
3) Stand Alone Programming (SAP) Data
This section contains all of the information a Cyclone needs to program a target as specified
in the image creation process. This includes all programming data, algorithms, scripts,
settings, etc. This section is encrypted with several keys, including the user generated
asymmetric key as well as a native asymmetric key used by the Cyclone. Once encrypted,
this section may not be decrypted except by the Cyclone during the programming process.

Figure 11-4: SAP Encryption

The end result of the encryption used to proceed the Stand Alone Programming Data is that the
section can only by decrypted and used internally on a Cyclone which has a copy of the specified
ImageKey provisioned within it. This eSAP section cannot be decrypted on a PC even with the
ImageKey

11.4 Managing Encryption For Production Programming


The steps needed to encrypt programming images using the Cyclone Image Creation Utility are
detailed in Section 6.1.10.1 - SAP Image Encryption. This section details how to successfully
implement the use of these encrypted (eSAP) images into the production programming process.

11.4.1 Provisioning a Cyclone with an ImageKey


Cyclones that have been provisioned with an ImageKey are the only Cyclones that are able to load
and program eSAP images encrypted with that ImageKey. When the user determines that one or
more Cyclone programmer(s) will have access to an encrypted image, they need to load the
ImageKey that was used to encrypt that image onto the Cyclone. This can be done with the
Cyclone Control Suite GUI, Console, or SDK. The transfer of an ImageKey to a Cyclone using the
Cyclone Control Suite is always secured by encrypting the ImageKey with an RSA public key
specific to the Cyclone that it is connected to. Instructions on the use of these Control Suite options
is explained in CHAPTER 8 - CYCLONE PROGRAMMER AUTOMATED CONTROL.
Figure 11-5 shows the Cyclone Control GUI with the Encrypted Keys tab selected.

User Manual For Cyclone FX Programmers 133


Figure 11-5: ImageKey Listing for Connected Cyclone

This tab displays any ImageKeys that are present on the Cyclone to which the user is connected.
Note: If there is an encrypted SAP image on the Cyclone whose corresponding ImageKey has been
removed, the required ImageKey will be displayed as “Missing,” along with its Name and ID.

To provision a Cyclone with an ImageKey, the user simply clicks the “Add Encryption Key” button
and browses for the ImageKey that they wish to load onto the connected Cyclone.

Figure 11-6: Browse for ImageKey

User Manual For Cyclone FX Programmers 134


11.4.2 Removing ImageKeys From A Cyclone
It is also easy to remove an ImageKey from the connected Cyclone. The user selects the
ImageKey that they wish to delete and hits the “Delete Encryption Key” button.

Figure 11-7: ImageKey Selected for Deletion

If the ImageKey that was selected for deletion is one that is required to decrypt one or more eSAP
images that are on the connected Cyclone, a warning message will be displayed when the Delete
button is pressed. The user may then cancel the deletion or confirm that they wish to proceed.

Figure 11-8: Warning: ImageKey Used By SAP Image on Connected Cyclone

11.4.3 Loading and Programming with Encrypted SAP Images


From the user's perspective, loading an eSAP file with the Cyclone Image Creation Utility and
programming with that eSAP file looks the same as loading/using a SAP file which is not encrypted
(as long as the appropriate ImageKey exists on the Cyclone).

Figure 11-9: Load Encrypted Image (eSAP) onto Cyclone with Corresponding ImageKey

When the user attempts to load an encrypted programming image onto a Cyclone, the Cyclone will

User Manual For Cyclone FX Programmers 135


refuse to load the image unless the appropriate ImageKey resides on the Cyclone. If the ImageKey
is present, the Cyclone will load the eSAP File and automatically decrypt it using both the matching
ImageKey and the Cyclone's internal decryption mechanism.
A user may create and use multiple ImageKeys and corresponding eSAP images on a single
Cyclone.
The decryption process is transparent to the user when the Cyclone goes to program the target.
The decrypted programming image appears as usual on the Cyclone menu screen. The user can
now program devices using the unencrypted SAP Image.

Figure 11-10: Decryption Occurs Automatically For Programming

11.4.4 Encryption Status of SAP Images


In the Images tab of the Cyclone Control Suite GUI the user can view the encryption status of SAP
images that reside on the connected Cyclone. Figure 11-11 shows the Cyclone Control GUI with
the Images tab selected.

Figure 11-11: SAP Image Listing for Connected Cyclone

The rightmost column, labeled Encryption, displays whether each SAP image is unencrypted
(“None”), encrypted with the required ImageKey present (“Encrypted”), or encrypted but missing
the ImageKey required to decrypt (“Encrypted No Key”).

User Manual For Cyclone FX Programmers 136


11.5 Safer Production That's Easy To Implement
SAP Image encryption with Cyclone programmers is simple to implement and helps keep valuable
intellectual property safe. Protected programming images can safely be sent electronically to
remote production facilities. This adds much needed convenience and peace of mind to the
production process.

User Manual For Cyclone FX Programmers 137


12 USING A BARCODE SCANNER TO SELECT AN IMAGE & INITIATE
PROGRAMMING

12.1 Introduction
PEmicro’s CYCLONE FX programmers are capable of using a barcode scanner during stand-
alone programming. Scanned barcodes can be used to automatically select and program a
specific SAP (Stand Alone Programmer) image into a target. This means the programming image
does not need to be pre-selected before programming. Also, there is no need to hit the start
button. Simply scan the bar code and programming will be initiated.
The Cyclone FX scans the barcode and checks all resident images for a barcode match. If exactly
one match is found, the image is selected and used to program the target. If no matches are found,
or multiple matches are found, an appropriate error is reported. This reduces manual configuration
errors especially when large numbers of programming images and product types may be
programmed.
Automatic selection and launch of a specific flash programming image based on a scanned
barcode can improve the speed and accuracy of production programming, especially when there is
a varied product mix being programmed. Barcode scanning improves accuracy by making the
process of selecting a programming image fast, automatic, and less vulnerable to user error.
The barcode itself can optionally be programmed into the target device’s memory as part of this
manufacturing process. The information that the barcode makes available to the device can make
it easier to trace products, track product hardware versions, or provide a way to serialize
production. This results in a more efficient manufacturing process.

12.2 Scanning Procedure


After the CYCLONE FX is configured (see Section 12.4 - Enabling Barcode Scanner In Cyclone
Menu), the barcode scanner is connected to the Cyclone's host USB port. The scanner is used in
Wedge output mode, which emulates a USB keyboard. When the scanner scans a barcode, it
transmits the barcode to the Cyclone. The Cyclone then analyzes the barcode and uses it to select
a programming image.
To perform this analysis, all programming images on the Cyclone, in both internal and external
memory, are reviewed. Each image may contain a set of rules to determine whether a scanned
barcode corresponds to that particular image. This set of barcode analysis rules is referred to as
an image's “barcode test." If the barcode passes the test on one and only one of the programming
images on the Cyclone, that image is automatically selected and programming is initiated.
Otherwise, if the scanned barcode does not pass the barcode test on any image, or if it passes the
test on more than one image, an error will occur.
Barcode test rules include: barcode length, character type, specific characters, and numerical
ranges. Fixed barcodes or barcodes which are unique to an individual product can be properly
analyzed and used to select the appropriate programming image.
A logfile is generated to help the user understand how a scanned barcode auto-selects a specific
image on the Cyclone (or yields an error). See Section 12.9 - Troubleshooting for more
information on this logfile.

User Manual For Cyclone FX Programmers 138


Figure 12-1: CYCLONE FX With Barcode Scanner

12.3 Potential Benefits Of Programming Via Barcode Scan


The use of a barcode scanner as part of the manufacturing process can boost productivity and
reduce human error. When the user scans a barcode to select and launch the programming
sequence, it frees that user from having to know any details about the product being programmed;
point, shoot, and it programs. Programming multiple products with different data can be as simple
as connecting each new target board and scanning a barcode that is printed on it.
A manufacturer might, for example, design their products such that every product has a unique
barcode printed on it. Part of these barcodes might be a fixed string, and part of them might be
changing (for example :WIDGET1-A00143, WIDGET1-A04325, WIDGET1-B03222). In this
scenario, the barcode test for the WIDGET1 programming image could check that the barcode
starts with the fixed string “WIDGET1-” (product identifier), the next character is an A or B (product
version), and that the rest of the barcode is numeric (unique ID). If it passes, the WIDGET1 image
would be selected and the target programmed.
This same manufacturer might also set up the programming process for each product to program
the barcode itself at a specific point in memory. There are then many ways a device could leverage
its barcode number. For example, the running application in the device could check the product
version of the barcode to understand whether it is running on hardware revision A or B and make
decisions based upon that information. The Unique ID could also be used for this purpose. E.g., if
the number is less than 5000, then use high drive strength on the product's port X; otherwise use
low drive strength on the product's port X. When connected later to the cloud, it can report its
unique identifier back to its home base. Potentially it could use the barcode's Unique ID as part of
setting up its MAC address for Ethernet.

User Manual For Cyclone FX Programmers 139


Figure 12-2: Bar Code Scanner On Production Line

In a completely different programming scenario the manufacturer might not want to place barcodes
on the products themselves. E.g., it could be that they do not frequently switch from one product to
another on the production line. In this case, they might prefer to create a separate set of directions
for each product they manufacture which covers programming, test, and casing of the product.
They could then include a fixed barcode as part of the programming instructions. The instructions
might state that, before starting a production run of this product the barcode should be scanned by
the Cyclone programmer. This removes the manual step of the operator choosing which image to
use for each product. The Cyclone selects the image automatically by using the barcode in the
instructions (and if there is not a unique match, an error is reported). This can help to reduce user
error, particularly if the programming images on the Cyclone carry similar names.

12.4 Enabling Barcode Scanner In Cyclone Menu


To use the barcode scanner with a CYCLONE FX, the scanner must first be enabled in the
Cyclone menu by navigating to “Configure Cyclone” and then “Configure USB Host Device.” The
user should click on “Enable USB Scanner”. The barcode scanner's instructions should be
consulted to understand how to put the scanner into Wedge (keyboard emulation) mode, and to
make sure that it terminates the barcode with a CR (carriage return) character. The scanner can
then be plugged into the USB host mini connector on the side of the Cyclone. A USB-to-USB-Mini
adapter may be necessary if the scanner uses a full size USB connector. When plugged into the
Cyclone, the scanner will power up and the Scanner Active icon on the Cyclone LCD screen will
illuminate.
Barcode Scanner Active icon:

12.5 Creating A Barcode Test: Quick Example


This section demonstrates one simple example of how to create a barcode test by using the
Barcode Test Generator utility. For in-depth instructions on how to use the Barcode Test Generator,
please refer to Section 12.6 - Creating a Barcode Test: In Depth.
Whenever a programming image is created the user has the option to add a barcode test to the
image. PEmicro provides a Barcode Test Generator utility to enable the user to creating these
tests. The following steps demonstrate how to create a sample barcode test.
To begin, the user should launch the Barcode Test Generator utility. The user should then write a
prototype of the expected barcode in the “Sample(ascii)” section. In this example, the prototype
barcode is “P&E MICRO-TEST1-0000”. See Figure 12-3. Please note that this example only

User Manual For Cyclone FX Programmers 140


demonstrates one simple approach to creating a barcode; there are many methods available.

Figure 12-3: Create Prototype Barcode

In this example, the “P&E MICRO” portion of the prototype barcode exists in every bar code the
company produces - in this case, header characters that identify the company. Also for this
example, a product identifier “TEST1” is in the bar code. Following the identifier, this product also
has a 4-digit serial number. This completes the prototype bar code which is representative of this
products barcodes.
The next step is to use this prototype barcode to create barcode tests which will be run against
scanned barcodes. In this example, the first test should check the header (i.e. "P&E MICRO") at
the beginning of the bar code. To enable this, the user should click the small down arrows
corresponding to the header section of the barcode. This creates a character test for “P&E
MICRO". This string will need to match exactly for the barcode test to pass. The "FC" designation
on each character stands for "Fixed Character" with the actual value shown below it. See Figure
12-4.

Figure 12-4: Create Char Test For "P&E MICRO"

User Manual For Cyclone FX Programmers 141


The next test will check whether the scanned barcode matches the product identifier “TEST1”
exactly. The user should click the small down arrows for the "TEST1" characters to bring them into
the Char test section. See Figure 5.

Figure 12-5: Create Char Test For "TEST1"

The "1" in “TEST1” is by default treated as a "Numerical Character" for testing reasons ('NC'). This
means it is required to have a value of '0'..'9'. To restrict the value of this character, it could either
be change to a fixed character test or we can restrict the range of acceptable values. To do the
latter, click on the down arrow below the character test and bring the "1" character into the Range-
1 test area. Both the lower and upper bounds for this character can then be changed to “1” so that
the match must be exactly the number 1. Refer to Figure 6.
The final step is to create a test for the 4-digit serial number part of the prototype. In this example
only 501 units of this product will be manufactured which correspond to a specific programming
image, each with a unique serial number from 0000 to 0500. The test should make sure that this
limit is not exceeded. Therefore, the user should add “0000” to the Char Test by clicking on the
small down arrows for the characters. This should then be converted this into a Range test by
clicking on the new arrows to add these four characters to the Range-1 test area.

Figure 12-6: Create Range-1 Test

The default for the range test is 0000 to 9999, so after these numerals enter the Range-1 test area,
the user should change the upper bound from 9999 to 0500. Any continuous numerical digits are
considered to be one numerical value for the purpose of range comparison.
The result in the Barcode Test Generator utility should look like Figure 7:

User Manual For Cyclone FX Programmers 142


Figure 12-7: Completed Barcode Test

This completes setup of the barcode test. The user should now click on “Save File As” on top and
name the test “Test1_barcodetest.bar”. This test is now ready to be added to a programming
image using the Cyclone Image Creation utility.

12.6 Creating a Barcode Test: In Depth


This section is an in-depth exploration of how to use the Barcode Test Generator utility to create a
barcode test. For a quick example of how to create a barcode test, please refer to Section 12.5 -
Creating A Barcode Test: Quick Example.
The ability to select a programming image and initiate programming via a barcode scanner
requires that a user generate a Barcode Test that will be included in the programming script of the
SAP image. In order to create the Barcode test, PEmicro supplies a Barcode Test Generator utility
that facilitates creating a Barcode Test which describes the mechanism for calculating whether an
input barcode meets the criterion the user is looking for to be considered a match, which can be an
exact match or a match that is in a Range selected by the user.
The Char Test(TYPE): and Range test fields are first chosen from selected Sample (ASCII)
characters. It is intended for the user to enter a whole sample barcode and modify the type and to
create appropriate tests, Char Test(TYPE): limits the individual characters to types, such as
numeric, alphabetic, hexadecimal, etc. Range tests determine if the magnitude of chosen set of
Sample input characters viewed as a large number are within a lower and upper bounds. These
Range tests are used to validate sequence numbers to be within specified bounds. For a test to be
valid it must pass any Char Test(TYPE): tests and at least one if any Range tests. The Range
tests are actually done on a set of Sub-Ranges defined as being contiguous set of characters and
having all the same Char Test(TYPE):. Figure 12-1 shows a typical main screen for the
Barcode Test Generator utility.

User Manual For Cyclone FX Programmers 143


Figure 12-8: Typical Barcode Test Generator Main Screen On Startup

12.6.1 Barcode Test Creation and Testing Process


A Barcode Test can be easily created and tested using the following 8 simple steps which are
explained in paragraphs following the list below:

1. Create a Sample(ascii)/(hex) Barcode


2. Select Characters to be tested by copying them to Char Test(TYPE):.
3. Set desired type of selected characters from step 2.
4. Copy character types from step 3 to Range-1 or Range-2 if Range testing.
5. Adjust range character(s) minimums and maximums of character of Step 4.
6. Press the DO TEST button to test the Sample against test setup.
7. Make changes to Sample, Char Test(TYPE), Range-1, or Range-2 and repeat steps
6 and 7 until an acceptable test has been created.
8. Save the test to a Barcode Test (.bar) file for later use.

The Sample character set is used first as a structural frame for creating a Barcode test and then
later as an input field for entering multiple barcode samples to verify the Barcode test works as
expected.

12.6.1.1 Enter a Sample(ascii)/(hex)


Sample characters can be entered either as ascii characters or hexadecimal bytes (2 characters
per byte) and in many ways. To start the process, click on either a Sample(ascii) box or a
Sample(hex) box. This makes the box darker blue to indicate where the entry cursor is. Once
the entry cursor is set characters can be entered into the Sample by several methods listed below.
When entries are placed in an Sample(ascii) box they are also updated in the corresponding
Sample(hex) box and vice versa:

User Manual For Cyclone FX Programmers 144


1. By simply typing in ascii characters or pairs of hexadecimal characters.
2. By copying a string of highlighted characters by Ctrl-C / Ctrl-V method.
3. By scanning in a string of characters starting at the current cursor position.

Figure 12-9: Typical Sample Entry Screen Section

Figure 12-1 shows a typical entry screen section. The first line gives the character numbers. The
second line shows entered characters and un-entered characters in ASCII. The third line
shows the entered characters in hexadecimal, and the current cursor position. The last
line shows a set of down arrows which when clicked on selects the characters to be tested.
Sample characters are deleted by double clicking on a Sample(ascii) or Sample(hex) box .
For convenience, the entire set of Sample characters can be deleted by double clicking on the left
screen Sample(ascii): button. As characters are entered, the cursor automatically moves to
the right stopping at the last Sample entry box. To add additional character boxes, see section 6.2.
When a characters are entered into a Sample(asci) box, the background color of the box is
changed to Light Purple. This is done to highlight the difference between a space character and
un-entered boxes. At the same time, a down arrow is placed under the Sample(hex) box to
indicate that the Sample character can be transferred to a Char Test(Type): field by clicking
on the down arrow.

12.6.1.1.4 Sample entry by typing in Characters


If the cursor is in a Sample(ascii) box typing in characters will place them in that box. The
cursor then automatically moved to the next Sample(ascii) box. All ASCII characters including
control codes can be entered in Sample(ascii) boxes. However, if there are characters stored
on the desktop, a Ctrl-V will enter them rather than entering a Ctrl-V character. After two
Sample(hex) box character entries, the cursor automatically proceeds to the next Sample(hex)
box. Only the hexadecimal characters, (0-9, A-F, a-f), are allowed in a Sample(hex) boxes. Hex
values are entered high nibble and then the low nibble.

12.6.1.1.5 Sample entry by copying in a string of highlighted characters


A string of characters can be entered into a series of Sample(ascii) boxes starting at the cursor
by first highlighting them by a mouse down pass over of the characters, then doing a Ctrl-C and a
Ctrl-V. This is a standard Windows System process of placing a string on the desktop and then
inserting it somewhere else. However, you cannot do this with characters within the utilities
window.

12.6.1.1.6 Sample entry by scanning in a string of characters


Most barcode scanners can place the scanned characters into the Windows keyboard buffer.
Hence, they are automatically entered into a sequence of Sample(ascii) boxes starting at the
cursor. Make sure when setting up a scanner that it is configured to place the scanned characters
in the keyboard buffer.

12.6.1.1.7 Deleting an entry


The contents of an entry box may be deleted by double-clicking on the entry box.

12.6.1.2 Copy Characters to be tested to Char Test(TYPE):


When a barcode is scanned during production programming, it is often the case that all the
characters do not need to be tested to determine the appropriate standalone programming (SAP)
image to be used. Hence, it is necessary to select and copy only those Sample characters to be

User Manual For Cyclone FX Programmers 145


tested.

Figure 12-10: Sample Characters copied to Char Test Section

Simply clicking on the down arrows between the Sample and Char Test(TYPE): Sections of
the screen transfers the corresponding character to the test section. The transferred characters
are shown as ASCII characters along with an associated type. The ASCII characters in the
Char Test Section represent transferred value and do not change when the Sample characters are
edited. When transferred from the Sample, the associate type is automatically set to either Fixed
Character (FC) type or if asci characters (0-9) to NUmeric (NU) type. All possible character types
are defined in Section 12.6.2 - Character Types. Any character types which are represented by a
contiguous range of values are indicated by a set on down arrows into the Optional Range
Restriction Sections of the display.
Figure 12-10 shows that only the product name “Cyclone-FX”, the serial number (SN) “01234”,
and the revision (Rev-) “B” were selected for character testing. The manufacturer “P&E”, blank
spaces, and other characters are ignored during character testing.
Note: Each of the fixed characters in ‘Cyclone-FX’ and ‘B’ require an exact match, while each number in
‘01234’ only has to be in the NU range of 0-9 to be a match.

All entries in the Char Test field can be deleted by double clicking the Char Test(TYPE):
button. Individual Char Test entries can be deleted by double clicking anywhere on them.

Often setting just the Char Test(TYPE): of tested characters to Numeric (NU) or Fixed
Character (FC) and setting the appropriate ascii value for Fixed Character (FC) fields is sufficient to
generate a barcode test (although the Barcode Test Generation Utility also allows specification of
fairly complex barcodes as well).

12.6.1.3 Set desired type of selected characters from step 2.2


Once a Char Test characters have been selected, they can be changed to different types than
were transferred from the Sample. An individual associated type is edited by clicking on it to set
the cursor position. For example, clicking on the Char Test(TYPE): “B” character type opens the
window in Figure 2.3a:

Figure 12-11: Selected Test Char Type(s) Window

12.6.1.3.1 Adding, Changing and Deleting Char Test(TYPE):


This window shows all the character types associated with the selected Char Test character.
Shown types can be changed or deleted by clicking on them or types can be added by or deleted

User Manual For Cyclone FX Programmers 146


clicking on “click here to add type.” If clicked, one of the similar windows shown in Figure 12-12.a,
Figure 12-12.b, or Figure 12-12.c is opened. Types can also be efficiently copied to other blocks
as per Section 12.6.6.2 - Ctrl-C / Ctrl-V Char Test(TYPE): and Range Copying.

Figure 12-12: a) On Click Add Figure; b) On Click Type Figure; c) On Click Type (multiple types)

Clicking on one of the opened window selections causes that option to be added, changed or
deleted.

12.6.1.3.2 Fixed Character (FC) and Single Set (SS) Sub-Types


Choosing change either FC or SS type will open respectively the following windows to allow entry
of the numeric values of these types.

Figure 12-13: a) FC Value; b) SS Values

The FC type choice, Figure 12-13.a, only requires one value to be entered since a Fixed Character
(FC) has the same upper and lower values. The Single Set (SS) type choice, Figure 12-13.b,
represents a single contiguous set of any length and hence requires both lower an upper bound
values. These values can be entered either as ASCII characters or pairs of hexadecimal digits.
The fuchsia color indicates that some action must be taken before proceeding.

12.6.1.3.3 Multiple Sub-Types


A given Char Test character can have up to a maximum of 10 sub-types. However, if one selects
either numerically adjoining or overlapping sub-type sets, the program automatically compresses
the sub-types.
For this example, the “Rev-“ “B” Char Test(TYPE): was set to allow the characters “A”, “B”,
“D”, or “E”. This is shown in Figure 12-14.a as two SS sub-types. This could have been done by
adding three FC types for “A”, “D”, and “E” or two SS types [“A”-“B”] and [“D”-“E”]. However, the
program would compress the FC types to SS types as shown. As can be seen in Figure 12-14.b,
the “Rev-“ Char Test(TYPE): information was changed from an FC type to a MulTiple (MT)
type.

User Manual For Cyclone FX Programmers 147


Figure 12-14: a) Compressed Types for “Rev-“ Test Character; b) MT Type Change for “Rev-“ Test
Character

12.6.1.3.4 Type Changing Errors


When initially created, a Char Test type always matches the type of character in the corresponding
Sample field. However, changing a Char Test type or a Sample character can case an error. Errors
are always indicated by changing appropriate background colors to red. For example, if character
number 05 type is changed to NUmeric (NU) the following error would appear on the screen:

Figure 12-15: Error from invalid type for Sample character 05

Notice that the Char Test(TYPE): Button is red to indicate a problem in that field and that the
specific type character “C” causing the error is also red. Note that it is not the type character which
causes the error but the Sample character which is tested against its type. If multiple type boxes
were in error, each of the type boxes would be marked in red. These error conditions can be
corrected either by changing the Char Test(TYPE): entry or changing the corresponding
Sample character. Clicking on almost anything con the screen clears all error indications.

12.6.1.4 Copy character types from step 3 to Range-1 or Range-2.


When Char Test characters were added, down arrows were added only for contiguous types.
These down arrows can be used to select which characters from Char Test(TYPE): are added
to the two possible Optional Range Restrictions, Range-1 and Range-2. In general, range tests
should only be added when the Char Type is not sufficient to test the appropriate values.
The characters add to a range are numerically concatenated together to form a single numerical
value which will be compared against specified upper and lower bounds tests. This allows for
testing to see if the target should be programmed based upon such things as serial numbers.
When not all allowable sequences for the types defined are desired. For instance, if a sequence
number from 00000-49999 was desired, but not 50000-99999, a Range restriction can be used. If,
however, 00000-99999 was fine for the serial number test, a range restriction is not needed and
the five characters are simply defined in the Char Test(TYPE): as Numerical(NU). In most
cases, valid range restrictions will probably be restrictions based upon numeric digits. However,
any characters: numeric, hexadecimal, alphabetic, control characters, etc. are allowed to form a
range.
Down arrows are not provide for a Fixed Character (FC) type since it is usually sufficient for them
to be tested as Char Test(TYPE): characters. Down arrows are only shown for contiguous
types since non-contiguous types would cause holes in sequence numbers which can be
confusing. To bypass these restrictions, see Section 12.6.6.1 - Bulk Copy Option.

User Manual For Cyclone FX Programmers 148


Figure 12-16: Transfers from Char Test to Range-1

In Figure 12-16, the NUmeric (NU) characters were transferred to the Range-1 test using the
down Arrows. Only types with contiguous character sets can be transferred this way. When
contiguous types are transferred, the upper and lower bounds are set to the types maximum and
minimum values for convenience. However, it is easy to change them later. The MT type was
transferred using the bulk copy method of section 6.1 since it is non-contiguous. Because of this,
care must be taken about missing value in the Range-1 specified. When non-contiguous sets are
transferred, the upper and lower bounds are both set the Char Test(ascii) character value.
Such values can be easily changed later.

12.6.1.5 Adjust Range Character Upper and Lower Bounds


To change upper and lower bound values, first click on either a bound (ascii) box or a bound (hex)
box to set the cursor there to that box. Typing an asci character or a pair of hexadecimal
characters enters them into the appropriate box. Then the cursor is moved to the right one block,
circularly over the set of range blocks. Pairs of upper and lower bounds can also be copied to other
pairs as describer in Section 6.2. All entries in a range can be deleted by double clicking the
Range-1 or the Range-2 buttons. Individual range entries can be deleted by double clicking
anywhere on them.

Figure 12-17: Adjusted Range-1 and Range-2 Bounds

Notice in Figure 12-17, that Range-1 numeric values run between 00000 and 05436. In addition,
for Range-1, the lone MT type was adjusted to use only a contiguous range of “A” to “B”. Range-
1 was adjusted to have the numeric values between 0000 and 9000. Also, its lone MT type was set
to a contiguous range of “D”-“E”. These choices created only contiguous ranges, i.e. no holes in a
range. Ranges which are non-contiguous are allowed if necessary but generate confusing results.
When creating range entries, the Upper Bound should be greater than or equal to the lower bound.
If the bounds are not entered that way, an error is generated as shown below in Figure 12-18 by
changing the background color of the appropriate Range button(s) and the bound(s) entry
to fuchsia. This can be fixed by swapping the upper and lower bounds.\

Figure 12-18: Bounds Entry Error

User Manual For Cyclone FX Programmers 149


12.6.1.6 Press the DO TEST button to test Sample(ascii) characters against all tests.
When developing Barcode tests, it is necessary to frequently test to assure that the tests being
generated corrects select the appropriate standalone programming (SAP) image. Clicking on the
DO TEST button, as shown in the Figure 12-19 control area of this program, causes the
CharTest(TYPE): and both Range tests to be run if they exist.

Figure 12-19: Program Control Area

To pass the test, the Char Test and at least one of the Range tests must pass. If the test passed,
the, the background color of DO TEST is changed to green. It is possible for DO TEST to be green
even if one of the Range tests is red. Shown in Figure 2.6b is the result of changing the numeric
characters to “05444” and clicking on DO TEST Button.

Figure 12-20: Passed Test with only One Range Test Passed

Note that the DO TEST button is green indicating that the test passed. Also, note that the Range-
1 button is red which means that that the Range-1 test failed but didn’t cause the overall test to
fail. Additionally, Range-1 character 22, “3”, failed the upper bound test. See Section 4. On how
Range Tests are conducted.
In Figure 12-20, the Range-2 test passed since when the first character tested (character 20, “5”)
was greater than the lower bound (“0”) and less than the upper bound (“9”).
Shown in Figure 12-21 is a test of a slightly different sample which failed on many things.

User Manual For Cyclone FX Programmers 150


Figure 12-21: Failed Test with Multiple Failures

Clicking on almost anything on the screen clears all error indications.

12.6.1.7 Make changes to Sample(ascii), Char Test(TYPE):, Range-1 , or Range-2 & Repeat Test
This step represents the start of the iterative process used to generate an appropriate test for the
product to be programmed. Try different Samples, run DO TEST, make changes to the test, etc.,
until a satisfactory test is found.

12.6.1.8 Save the test to a Barcode Test (.bar) file for later use.
The tests created can be saved (See Section 12.6.5 - Saving and Loading Barcode Test (.bar)
Files.) for later inclusion in a Cyclone FX programming SAP image using PEmicro’s image
creation utility [1]. The saved tests can also be reloaded for correction or as the base for creating
other tests.

12.6.2 Character Types


Selected characters are tested as part of the Char Test (TYPE): to see if they are included in a
set of character called a type. Listed in Table below are the type sets allowed in this program.
Most of the types have common names and abbreviated mnemonics. Some types are contiguous
and others are not. Contiguous means that there is only a single lower and a single upper count for
the set with no missing values. A special type called MT (Multiple Types) means that is composed
of a number of sub-types.
When forming a MulTiple (MT) types, the program will automatically compress either adjacent of
overlapping sub-types if possible as they are created. This optimization makes for a more efficient
type testing process. In addition, when creating Fixed Characters (FC) or Single Set (SS) types, the
program asks for the lower or upper bounds for these sets either as ASCII characters or pairs of
hexadecimal digits. FC is the same as an SS with a bounds range of a single character, i.e., the
lower and upper bounds have the same value.

Table L-1. Allowed Character Types

Type Type Name Ascii Range Hex Range Contiguous

F Fixed Character selected [hh-hh] Y


C

S Single Set selected [ll-hh] Y


S

User Manual For Cyclone FX Programmers 151


Table L-1. Allowed Character Types

Type Type Name Ascii Range Hex Range Contiguous

A Alphabetic Upper [A-Z] [41-5A] Y


U case

A Alphabetic Lower [a-z] [61-7A] Y


L case

A AlphaBetic [A-Z][a-z] [41-5A] [61-7A] N


B

A Alpha Numeric [0-9][A-Z][a-z] [30-39] [41-5A] [61- N


N 7A]

N NUmeric [0-9] [30-39] Y


U

H HeXadecimal [0-9][A-F][a-f] [30-39] [41-46] [61- N


X 66]

M MulTiple Multiples of above Multiples of above N


T

12.6.2.1 Background Color Codes


Figure 12-22 shows what the color codes typically represent on the program screen:

███, ███, or ███ Clicked to Select or Double-Clicked to delete


███ Indicates Selected ASCII character values
███ Indicates Selected hex character values
███ Indicates a Failure
███ Indicates a Success
███ Needs attention to continue or indicates inverted bounds
███ Marked by Ctrl-C for Ctrl-V copying
███ Indicates the Cursor position

Figure 12-22: Background Color Codes

12.6.2.2 Font Color Codes


Figure 12-23 shows what the font colors represent on the program screen:
XXX Normal character font color
XXX Font color selected for Bulk Copying, or to indicate an Option Open Option

Figure 12-23: Font Color Codes

12.6.3 Enabling/Disabling A Barcode Scanner


To enable a barcode scanner that is connected to the Cyclone FX’s USB Extension Port, go to:
Menu -> Configure Cyclone -> Configure USB Host Device -> Enable USB Scanner
This setting is persistent; the scanner will be powered and turned on when the Cyclone is powered,
until the scanner is disabled. To disable the barcode scanner, select:
Menu -> Configure Cyclone -> Configure USB Host Device -> Disable

User Manual For Cyclone FX Programmers 152


12.6.4 Ranges and Range Testing
Testing is done in two steps First, if any Char Test(TYPE): characters are specified a
Character Type test is done as indicated in Section 12.6.4.1 - Character Type Testing. Then, if
either Range-1 or Range-2 has entries, a Range test is done as indicate in Section 12.6.4.2 -
Range Testing.
To pass testing, the Char Type(TYPE): test must pass if it exists. In addition, at least one Range
Test must pass if any exist, If not, errors are indicated on the programs main screen.

12.6.4.1 Character Type Testing


Each character in Sample which has a corresponding Char Test(TYPE): is tested numerically
to see if it is within one of the sets for the type specified. Types can have multiple sets of
characters. As long as the Sample character is in one of the sets, the test is valid for that
character. If any individual Sample character test fails, the overall test is failed.

12.6.4.2 Range Testing


Ranges are subdivided into Sub-Ranges which are delineated by contiguous sets of identical
Char Test(TYPE):s. A Range test consists of testing each Sub-Range. A Range test passes if
all of its’ Sub-Range tests pass. Sub-Range testing checks to see if the selected set of Sub-Range
Sample characters treated as a large number fits between a lower and an upper bound. The
bounds are formed by numerically concatenating the selected Sub-Range bounds boxes, to form a
number representing lower and upper bounds for that Sub-Range.
Sub-Range bounds entry boxes are actually tested against their corresponding Sample
characters on a character by character basis from left to right until all the individual lower and
upper bounds for a given Range are tested:
On lower bounds, starting at the left, if the corresponding Sample character is:
(a) lower than its lower bound, lower bound Sub-Range test failed, do next Sub-Range
(b) equal to its lower bound, next Sub-Range character to the right must be tested
(c) else, lower bound Sub-Range test passed, do next Sub-Range.

On upper bounds, starting at the left, if the corresponding Sample character is:
(a) greater than its upper bound, upper bound Sub-Range test failed, do next Sub-Range
(b) equal to its upper bound, next Sub-Range character to the right must be tested
(c) else, upper bound Sub-Range test passed, do next Sub-Range.

This process allows the exact character in the range sequence that caused a range test error if
any. This also means that the range is tested as a large concatenated number composed of
numerical characters. The test is performed on a character by character basis.

12.6.5 Saving and Loading Barcode Test (.bar) Files

12.6.5.1 5.1 Barcode Test (.bar) File Structure


PEmicro Barcode Test Data is stored in JSON Data Interchange Format files [2]. The information in
an empty PEmicro JSON Barcode Test file is shown below where blue characters represent the
formatting information and red characters represent what data in inserted in the file by the Barcode
Test Generator. All data is in hexadecimal to make the files readable since the data represented
can be nonprintable asci characters. This empty PEmicro JSON Barcode Test file has been
reformatted, spacing wise, to make it more readable. There are many sites on the internet which
will reformat JSON files [3].

User Manual For Cyclone FX Programmers 153


The unformatted version of an empty PEmicro JSON Barcode Test file looks like:

The unformatted version of the PEmicro JSON Barcode Test file for the examples used in this
manual looks like:

12.6.5.2 Saving a Barcode Test (.bar) File


The current information on the program main screen can be saved to a Barcode Test (.bar) file for
two reasons. First, so the tests can be used by PEmicro’s Cyclone FX, Standalone programmer.
Second, so the information can be loaded back into this program for modification, further testing of
the tests themselves, or to assist in the creation of new tests.
To save a Barcode Test (.bar) file, click on the Save File button in the control area of the main
screes.

Figure 12-24: Program Control Area

If a filename (editable) exists in the control area, the program tries to save the screen test
information to that file. If no filename exists, then the window shown below is opened to search for
and/or edit a filename. If Open is clicked, the program attempts to save the test information to that
file. On attesting to save a file, the button is recolored respectively on Success or Failure to Save
File or Save File.

User Manual For Cyclone FX Programmers 154


Figure 12-25: Save PEmicro JSON File Window

12.6.5.3 Loading a Barcode Test (.bar) File


PEmicro JSON Barcode Test (.bar) Information can be loaded into this utility so it can be edited
further or to test other barcodes.

To load a Barcode Test (.bar) file, click on the Load File button in the control area of the main
screen.

Figure 12-26: Program Control Area

If a filename (editable) exists in the control area, the program tries to load test information from that
file. If no filename exists, then the window shown below is opened to search for and/or edit a
filename. If Open is clicked, the program attempts to load the test information from that file. On
attesting to load a file, the button is recolored respectively on Success or Failure to Load File or
LoadFile .

Figure 12-27: Load PEmicro JSON File Window

12.6.6 Advanced Program Use

12.6.6.1 Bulk Copy Option


Often, it is required to make many transfers from Sample characters to Char Test(TYPE):
entries or from Char Test(TYPE): entries to Range-1 or Range-2. These transfers are usually
done by individually clicking on appropriate down arrows. For large barcodes, this can be very time
consuming. With Bulk Copy, Sample characters can be selected / deselected by a mouse entry

User Manual For Cyclone FX Programmers 155


into a Sample box. Characters which are selected are indicated by changing the font color to red.
Once a set of characters has been selected, they are copied into Char Test(TYPE): entries by
clicking on the Char Test(TYPE): button. Bulk Copy turns of the selected character red font
highlighting.
In a similar manner, Char Test(TYPE): entries can be highlighted and copied into Range-1 or
Range-2 entries.
This process takes a little practice to get used to but greatly speeds things up. In addition, this
process can be used to copy entries which do not have down arrows assigned to them.

12.6.6.1.1 Turning On Bulk Copy


Clicking on the black text Set Bulk Copy button in the program control area enables Bulk
Copying. When the Bulk Copy option is selected, the text in the Set Bulk Copy button is
recolored red as a reminder to turn the option off by clicking the button again.

Figure 12-28: Program Control Area

12.6.6.1.2 Copy Sample Boxes to Char Test


Figure 12-29 shows bulk copy selected Sample characters selected as indicated by the red type
fonts. After clicking on the Char Test(TYPE): button the Sample characters are transferred as
shown in Figure 12-30. Notice that the Sample highlighting is turned off after the copy.

Figure 12-29: Highlighted Sample entries for Bulk Copy to Char Test(TYPE): entries

Figure 12-30: After Sample entries Bulk Copy to Char Test(TYPE): entries

12.6.6.1.3 Copy Char Test Boxes to a Range


Figure 6.1.3a shows bulk copy Char Test(TYPE): entries selected as indicated by the red type
fonts. After clicking on the Range-1: button the Char Test(TYPE): entries are transferred as
shown in Figure 6.1.3b. Note that Range-2 entries did not change. However, Char
Test(TYPE): can be bulk copied to Range-2 in a similar manner. Notice that the Char
Test(TYPE): highlighting is turned off after the copy.

User Manual For Cyclone FX Programmers 156


Figure 12-31: Highlighted Char Test(TYPE): entries for Bulk Copy to Range entries

Figure 12-32: After Char Test(TYPE): entries Bulk Copy to Range-1 entries

12.6.6.1.4 Turning Off Bulk Copy


Clicking on the red text Set Bulk Copy button in the program control area disables Bulk
Copying. When the Bulk Copy option is deselected, the text in the Set Bulk Copy button is
recolored to black.

12.6.6.2 Ctrl-C / Ctrl-V Char Test(TYPE): and Range Copying


This type of copying is used when it is desired to create multiples of the same Char
Test(TYPE):, Range-1 or Range-2 entries. Once an entry has been created in a field, it can
be designated as the copy entry that field. To designate an entry, place the cursor on the entry and
type a Ctrl-C. The background color for that entry will change to yellow to indicate the designation.
Note that only entries with light green boxes can be Ctrl-C designated since ASCII entry boxes
would simply accept the Ctrl-C character. To designate a different entry, simply redo the
designation process on a different entry.
The designated entry in a given field can then be copied into other existing entries in the same
field. To accomplish this, place the cursor on an existing entry in the same field. The information in
the designated Ctrl-C entry is copied to the cursor location by pressing Ctrl-V. Only cursor entries
with light green boxes can be Ctrl-V copied to since ASCII entry boxes would simply accept the
Ctrl-V character. After copying, the cursor is automatically moved right circularly to the next
available entry box.

12.6.6.3 Adding Sample Character Spaces


On startup, this utility if configured to allow for up to 36 character spaces. This number was chosen
to fit well on most displays. This number can be increased up to 64 characters. To increase the
number of display characters, click on the Inc Numb Chars button in the control area of the
program as shown in Figure 6.3.

User Manual For Cyclone FX Programmers 157


Figure 12-33: Program Control Area

Each time the Inc Numb Chars button is clicked, an additional character space is added to the
display up to a maximum of 64. Also, the width of the program window is increased to
accommodate the added character spaces. The number of display characters is only reset to 36
by restarting the utility.

12.6.6.4 On Screen Graphical Barcode Generator


Sometimes it is convenient to see what a particular Barcode looks like. To instantiate an on screen
barcode display, click on the BarCode Gen button in the program control area.

Figure 12-34: Program Control Area

This opens a new window which has an edit box containing “P&E Microcomputer Systems”,
the graphical barcode for this text, and a button Copy to Sample and DO TEST. Clicking into the
edit box allows text to be inserted or edited. Any changes to the edit box are automatically
displayed in the graphical barcode which can be scanned. An external target board barcode could
be scanned and inserted using a Ctrl-V. The graphical display and the text can be observed to
make sure the scanner itself is working correctly.

Figure 12-35: Newly opened Barcode Generator Window

Text from the edit box can then be transferred to the main utility screen Sample characters and
tested against the tests being developed by simply clicking on the Copy to Sample and DO
TEST button. Any prior Sample characters are deleted before the transfer and testing take place.
When this window option is opened, the text in the BarCode Gen button is colored red as a
reminder to turn the window off by clicking the button again.

12.6.7 References
[1] Cyclone Universal and Cyclone Universal FX Manual
[2] The JSON Data Interchange Format
[3] JSON Re-formatter

12.7 Adding A Barcode Test Into A Programming Image


Adding the barcode test into an image is done as part of the image creation process. The user
should open the Cyclone Image Creation utility and follow the steps to create a programming
image. The device should be selected, along with the algorithm, object file, and programming
commands. This examples uses the commands EM, PM, VM.
The next step is to add the barcode file. In the “FX Special Features” section at the bottom of the
utility, the user should check the “Use Barcode File” checkbox and browse for the appropriate
created .bar file. See Figure 8.

User Manual For Cyclone FX Programmers 158


Figure 12-36: FX Special Features (Add Barcode File To Image)

After the programming image is stored in the Cyclone FX, it is ready to use. When a barcode is
scanned the Cyclone will encounter this programming image, which will prompt it to test for the
exact string “P&E MICRO-TEST1” and for the decimal numbers 0 to 500 on the last four
characters of the barcode. If the barcode passes this test (and no other programming images on
the Cyclone also pass) the image is executed.

12.8 Programming Barcode Information Into Memory


The Cyclone has the ability to program a barcode into the memory of certain ARM devices. This
feature will program a null-terminated ASCII representation of the Cyclone’s last recorded
barcode, you can see the last recorded barcode by adding the barcode information to the
homescreen (see Section 5.2.3.5.4 - Configure Home Screen for more information).
To program the last recorded barcode, add the “Program Feature Data” command to your
programming sequence in the Image Creation Utility and select the “BARCODESTR” feature
(Figure 12-37).

Figure 12-37: Program Feature Data

In the next window enter the starting address in which you want the barcode to be recorded (image
2).

Figure 12-38: Program Feature Data to Address

See Section 6.1.6 - Programming Operations for more information on the Program Feature Data
command.

User Manual For Cyclone FX Programmers 159


12.9 Troubleshooting
An error will sometimes be generated if more than one image corresponds to the barcode,or if no
images correspond to the barcode. The Cyclone includes a way to quickly gain insight into the
issue. A log file is created every time the barcode scanner operates and it details the scanned
barcode as well as the analysis process used to select the appropriate programming image.
To access the barcode log, navigate in the Cyclone FX’s menu to: Menu->Status->Show Logs-
>Show Barcode Scanner Log. This Log document contains the details of the last barcode scanner
transaction and is overwritten every time the barcode scanner is used.
A sample log file looks like this:

---Scanner Test Log Started---

Scanned barcode: P&E SN: BLUE0138230


5 total number of images in Cyclone

Processing image number 1 (Red Image v1.00)


Image number 1 does not contain a barcode test

Processing image number 2 (Red Image v1.01)


Image number 2 does not contain a barcode test

Processing image number 3 (Widget Rev C)


Image number 3 does not contain a barcode test

Processing image number 4 (Widget Rev D)


Image number 4 does not contain a barcode test

Processing image number 5 (Green Product v7)


Image number 5 passes character test
Image number 5 does not contain a range test
image number 5 passes Barcode Test

One Image passes barcode test


Image number 5 selected to execute

Success, image selected and program command sent

---Scanner Test Log Finished---

User Manual For Cyclone FX Programmers 160


13 AUTOMATIC SERIAL NUMBER MECHANISM
When producing a microcontroller- or microprocessor-based product, it is often useful to program
a unique serial number into the permanent memory (FLASH) of the product.
PEmicro offers a serial number mechanism to automate this process. Each time you issue a
serialization command in the programming software, the current serial number is programmed at a
specified address. In addition, the serial number is incremented to the next available serial number
and saved for future serialized programming operations.
The Cyclone adopts this automatic serial number mechanism for its stand-alone operations. The
user can create a Serial File using PEmicro’s Serialize Utility and then include commands in the
programming sequence of the programming image to implement that Serial File. If needed,
adjustments can later be made to the serial number of a programming image.by using the Cyclone
menu screen (see Section 5.2.2.3 - Serial Numbers).

13.1 Understanding Serialization


The automatic serial number mechanism supports serial numbers from 1 to 16 bytes in length.
Each byte of a serial number ranges between a lower and an upper bound. This approach allows
the individual bytes of the serial number to have distinct properties. Some of the forms these
properties can take are:
Type Lower Bound (hex) Upper Bound (hex)
Constant Constant Constant
Binary 00 FF
ASCII Printable 20 7E
ASCII Numeric 30 39
ASCII Upper Case Letter 41 5A
ASCII Lower Case Letter 61 7A
Other XX YY

Each serial number and its properties are stored in a separate file. Any file name can be used for
the serial number file, however the extension .ser is normally appended because it makes it
simpler to locate the file.
A utility called SERIALIZE has been developed to make it easy to create, visualize, edit, and
maintain these serial number files.

13.2 Serialize Utility


The serialize utility allows the user to create a serial number file with a serial number that is
anywhere from 1 to 16 bytes long. Each byte may be bounded as a full binary or as a Number,
Constant, Alpha Uppercase, Alpha Lowercase, or ASCII printable character. The serial number file
also has a field for a starting hex address that may range from 00000000 to FFFFFFFF. Serial
numbers can be programmed in order or in reverse order.

User Manual For Cyclone FX Programmers 161


Figure 13-1: Serialize Main Screen

13.2.1 Startup And File Options


On startup, the Serialize program will automatically open the last file saved. If no file has been
saved, it will default to blank.
• Reset Button - Lets you reset to a screen with only a single serial number byte defaulted to
binary (00), Hex Address 00000000.
• Regenerate Button - Preserves serial number bytes and bounds but assigns a new Serial
Number Unique ID
• Save Button, File→Save - Brings up a dialog to which is set to save to the current serial
file configuration.
• File→Save As - Brings up a dialog to select any file
• File→Load - Brings up a dialog to select a previously saved file

User Manual For Cyclone FX Programmers 162


13.2.1.1 Reset
Instructs the program to start editing a NEW (as yet un-named) serial number file. It will throw
away the information for any serial number currently being edited unless that information has been
saved (Save Button). The new serial number is initialized with one (1) byte of binary.

13.2.1.2 Save
Pops up a Save dialog with the current serial number being edited into the file name and path as
shown in the Serial Number File window. If a file name has not been provided, a dialog will pop up
to allow the user select a file name. Save will save any setup information in the file Serialize.ini.
This file will initialize the setup information the next time the program is started.

13.2.2 Serial Number File


Displays the path and filename of the open Serial File, if saved.

13.2.3 Serial File Unique ID


Displays the unique ID associated with the Serial File. A unique ID is generated anytime a Serial
File is created or modified. Multiple programming images are able to share the same serial
numbers by referencing the same ID number (see Section 13.6 - Shared Serial Numbers). The
user can click the “Regenerate” button to assign a new unique ID to the current Serial File.

13.2.4 Serial File Name To Display


The name that will appear in the JSON viewer, Cyclone menu, and in the Name field of the
Cyclone Control GUI. A descriptive name can help to easily differentiate Serial Files.

13.2.5 Serial File Notes


Allows the user to save notes regarding the Serial File. These will appear in the JSON viewer
when viewing the properties of the Serial File, see Section 13.3 - Serial File Properties.

13.2.6 Number of Bytes in Serial Number


The up and down arrows allow the user to add or delete bytes for the serial number, the maximum
in hexadecimal = 0x10 (16 base ten), the minimum = 1.
• Up Arrow Click - Adds new bytes to the Serial Number. Each byte added appears as a
new column in the serial number representation. Added bytes are input as Binary Bytes,
i.e. the upper bound is FF and the lower bound is 00.
• Down Arrow Click - Deletes bytes from the right end of the Serial Number. Any previously
entered byte properties are lost.

13.2.7 Starting HEX Address


Assigns the starting address (in hexadecimal) of the device memory where the serial number will
be programmed.

13.2.8 Count Sequence


This window lets you test the serial number by counting up or down through the sequencing of the
serial number. The serial number will roll over the upper bounds of the highest serial number back
to the lower bounds of the serial number, and vice versa.
• Up Arrow Click - Counts the serial number up.
• Down Arrow Click - Counts the serial number down.

13.2.9 Serial Number Bytes as Hex


There is one display column for each byte in the serial number shown as printable ASCII
characters. Non-printable ASCII characters are indicated by a blank gray box.
• Up Arrow Click - Counts the serial number up.

User Manual For Cyclone FX Programmers 163


• Down Arrow Click - Counts the serial number down.
• Click into the edit Box to enter any number within range. Values entered will be limited by the
upper and lower bounds.

13.2.10 Hex Upper Bounds


There is one display column for each upper bound of the byte in the serial number in hex.
• Up Arrow Click - Increases the upper bound by one with a maximum of FF Hex.
• Down Arrow Click - Decreases the upper bound by one with a minimum of the current
serial number byte value.
• Click into the edit Box to enter any number within range (from the Serial number value up
to a maximum of Hex FF).

13.2.11 Hex Lower Bounds


There is one display column for each byte of the lower bound of the serial number in hex.
• Up Arrow Click - Increases the lower bound by one with a maximum of the current serial
number byte value.
• Down Arrow Click - Decreases the lower bound by one with a minimum of 00 Hex.
• Click into the edit Box to enter any number within range (from the Serial number value to a
minimum of 00 Hex).

13.2.12 Binary, Numeric, Constant, Alpha Upper, Alpha Lower, and Printable
Checkboxes at the bottom will select properties to set for each serial number byte. Selections will
be highlighted in yellow. The buttons below may be used to set the boundary type for the selected
serial byte(s).

13.2.13 Byte Program Order


The user can choose whether the serial number increments from left to right, or from right to left, in
the Byte Program Order section.

13.3 Serial File Properties


Serial File properties are easy to access, as the generated serial file is stored in JSON format. This
makes it simple for the user to save and parse the information.
Note: Serial Files in JSON format are compatible with Cyclone FX firmware version 10.13 and later.

Users that wish to retrieve the original text serial number format can parse out the JSON file:
object->pesettings-> serial_number_definition -> legacyv1encoding

13.3.1 Serial File Example


An example file is provided, Example.ser, located in the Image Creation folder of your installation
directory. Below is a screen snapshot of the saved serial file as seen from a JSON viewer.

User Manual For Cyclone FX Programmers 164


Figure 13-2: Example Serial File In JSON Viewer

13.4 Serial Number Handling


The Cyclone FX firmware implements the automatic serial number mechanism (see Section
5.2.2.3 - Serial Numbers). The same serial number files are used with the Cyclone Image
Creation Utility, and the same commands are used to specify the serial number file and initiate
serial number programming and incrementation. The serial number data structure is saved in the
SAP image. Once a “PS” command is carried out, a serial number is programmed into the target.
Only after all operations have been completed successfully does the Cyclone firmware
automatically increment the serial number and store it in the Cyclone’s flash for internal images (or
external CompactFlash for external SAP images).

The CS and PS commands are not present in the Cyclone Image Creation Utility until a valid
programming algorithm is specified.
To complement the Cyclone’s usage in production environments, the Cyclone supports multiple
serial number structures for each programming algorithm block. Each SAP image may contain
multiple programming algorithms for every memory module it needs to program, and each
programming algorithm block may contain multiple serial number structures. The SAP image
sequence below illustrates this briefly:

CM algorithm_file_1
SS object_code_1
EM
PM
VC
CS serial_file1.ser
PS
CS serial_file2.ser
PS

User Manual For Cyclone FX Programmers 165


CS serial_file_3.ser
PS
CM algorithm_file_2
SS object_code_2
EM
PM
VC
CS serial_file4.ser
PS
CS serial_file5.ser
PS

13.4.1 Invoking A Serial File Via Command-Line


The command to invoke the serial number file in PEmicro’s interactive programming software is
“CS Choose Serial File”. The command to actually program the serial number to target and
automatically increment the serial number afterward is “PS Program Serial Number”.
PEmicro’s command line software uses the same commands in a command line fashion to invoke
the serial number file, initiate its programming, and increment:
CS serial_number_file.ser
PS

13.5 Creating A SAP Image With Multiple Serial Numbers


In the example shown in Figure 13-3, a SAP image was created that will select and program two
different serial numbers into different locations in memory as part of the programming sequence.
The first serial number counts by two with starting address 0x00020000 and the second serial
number counts by four with starting address 0x00021000.
As indicated by the programming sequence, first the Algorithm is selected, followed by the S19 file.
The part is erased, and then the s19 is programmed into the device. Once this is done, the first
serial file is selected and programmed, and then the second serial file. These same unique serial
numbers may be used by other SAP images, and each program will increase the serial number by
the designated count defined in the serial number file.

Figure 13-3: Cyclone Image Creation Utility: Serial Files In Programming Sequence

User Manual For Cyclone FX Programmers 166


13.6 Shared Serial Numbers
An important feature of the Serialize utility is that it automatically creates a Unique ID anytime a
serial file is created or modified. This allows Stand-Alone Programming (SAP) images stored on a
Cyclone to share serial numbers that reference the same unique serial number ID. There are
several cases where this is very useful. The first is when a user may want to update their firmware
for a product to a new version but needs the serial number to have persistence. The user may also
have different products that need to be programmed with different firmware, but need to have
those products draw from the same serialization sequence.
Note: Shared serial numbers require Cyclone FX firmware version 10.13 and later.

13.6.1 Example
This sections describes how a user might configure multiple SAP images on their Cyclone to share
the same Serial File.

13.6.1.1 View and Edit SAP image Via Cyclone Control GUI
In Figure 13-4, the Cyclone Control GUI has been launched and is looking at the image contents
of the Cyclone. In this case it shows that the Cyclone named Colossus contains four different SAP
images.To view properties of a particular image properties, the user can simply right click on the
desired image and select “View properties” which will pop up an image properties window. In this
case it shows Image “Kinetis K64 PE S2 and Mac S4.” The Image Unique ID is visible, as well as
the two serial numbers and their respective Unique IDs. It also shows the next serial numbers (in
ASCII representation) to be programmed upon launch: PE-000 and MAC-00, respectively.

User Manual For Cyclone FX Programmers 167


Figure 13-4: Cyclone Control GUI: Image Properties Window

Deleting the image will not delete the associated serial number as other images stored on the
Cyclone may be using that same serial number. The serial number is tracked on the Cyclone by
the imageuniqueid JSON property. If any image is added back onto the Cyclone with that same
Serial Unique ID, it will continue to track with that same serial number at the latest count. So if a
user has a new version of their firmware, they can create a new SAP image that uses the same
serial number as the previous firmware (referenced by same serial unique ID) and the
programming will continue the serial number sequence from the current serial number state since
that serial file is stored on the Cyclone.
Once a SAP image is loaded with a serial file, and it is selected as the current image on the
Cyclone, it is possible to adjust the serial count. This is done by navigating through the following
screens on the Cyclone.

Menu → Current Image Options → Serial Number

If the image has more than one serial number incorporated into the SAP image, select the Serial
number which is to be modified. Otherwise just select ‘Modify Serial’.

User Manual For Cyclone FX Programmers 168


Figure 13-5: Cyclone Menu Selection

It is possible to Decrease or Increase the Next Serial by -10, -1, +1, +10. This is often done to
address issues in the production process, such as during initial setup.

Figure 13-6: Increase or Decrease Serial Number

Note that the Cyclone Control GUI has the ability to show all the Serial Files stored on the Cyclone.
This is done by opening a Cyclone, and then navigating to the Serial Files Tab, as shown in Figure
13-7. The Serial File tab has a Delete Button at the bottom which will remove the selected serial
file from view and reset the tracking of the serial number to its original state. This does not actually
delete the serial file. Once any programming is initiated using this ‘deleted’ serial file, the serial file
will reappear back in the list and program using the original serial number.

User Manual For Cyclone FX Programmers 169


Figure 13-7: Cyclone Control GUI: Serial Files Tab

13.6.1.2 Program SAP images With Shared Serialization


The Cyclone screen in Figure 13-8 shows two SAP images stored on the Cyclone: The first is
‘Waynes SAP Image Serialx2’ and the second is ‘Garths SAP Image Serialx2’. They both use the
same serial file named ‘PEserial K64 Count by 2’ which has a unique ID ser-4FD596BF-
7DDD6470-5BDAE9E7 and the next serial number to be programmed (in ASCII) is PE-002. If we
select Waynes SAP image we can see this current PE-002.

Figure 13-8: View Current Serial Number for "Wayne's SAP Image"

Once programmed is initiated, PE-002 is programmed into memory and the screen shows the next
serial number to be programmed is which is PE-004.

User Manual For Cyclone FX Programmers 170


Figure 13-9: Serial Number Incremented for "Wayne's SAP Image"

If the Garth’s SAP Image is now selected on the Cyclone, it will show the next serial number to be
programmed is PE-004 because it tracks the same serial number.

Figure 13-10: Serial Number Also Incremented for "Garth's SAP Image"

User Manual For Cyclone FX Programmers 171


14 RUN TEST - CUSTOM TEST APPLICATIONS IN THE PROGRAMMING
SEQUENCE
As part of the production programming process, Cyclone programmers with the Advanced Control
Suite have the ability to program and run a series of custom test applications in the target
processor before final programming is allowed to occur. These custom test applications, written by
the end user, indicate to the Cyclone through the debug interface whether the test application was
successful or not and also optionally return generated data to the Cyclone for use later in the
programming process. If any of the test applications fail, programming does not continue. If all the
test applications pass, the final application is programmed into the target and can optionally
include any data generated by the test applications. This “Run Test” process is shown here :

Example uses of the Run Test feature during programming:


• Verify that the target hardware works as intended before programming
• Add information from the Cyclone, such as a scanned barcode or current date and time to
the final programmed data
• Uniquely fingerprint each target based upon its Unique ID using any algorithm. This
fingerprint could be later verified or read by the final application in the field.
• Precisely calibrate an RTC crystal using an External Timer/Counter
• Fetch Data from user input on the Cyclone Screen and add to the final programming data
• Add information from inputs on the target processor to the final programming data, such
as:
• Data could be read from external devices on the PCB such as recording the serial
number of external flash memories (to prevent them from being changed for instance)
• Data could be read from communications interfaces connected to the target processor.
For instance, if the target being programmed had a network connection, data could be
read from a local PC or an internet server and added to the data to be programmed.

14.1 Run Test Availability


The Run Test advanced control/automation feature is included with the Advanced Control Suite. It
requires either:
• a Cyclone FX programmer (includes Advanced Control Suite), or
• a Cyclone LC with added Advanced Control Suite Upgrade License
The latest Cyclone installation software and firmware includes the Run Test Feature as well as the
Run Test API files PEtest.c and PEtest.h for including into test applications.

14.2 “Run Test” Applications


Run Test applications are written by the user in any development environment which can generate
a valid application for the processor being programmed. The test application could be a special

User Manual For Cyclone FX Programmers 172


version of the final application which conditionally has included test code, or the test application
could as easily be a totally different code base. The test application links in the Run Test API code
which allows the run test application to communicate to the Cyclone during the test process. While
each test application must in the end report back a success/fail result to the Cyclone, it can also
query the Cyclone for information and interact with the user through the Cyclone hardware.
As part of each test application that is programmed and run, the test application can optionally
return "named" blocks of run test data (rtData) which are saved in the Cyclone until the entire
programming process is complete. These rtData blocks may be programmed with any subsequent
test application or during final application programming.

14.3 Adding Run Tests to the Cyclone Programming Script


The Image Creation utility, which generates stand-alone programming images, has a script
creation wizard which specifies the steps to be executed during target programming.
Here is what a simple, and yet common, programming script without Run Test looks like :

Here is what a simple programming script with Run Test looks like :

The RT command (Run Test) executes the application currently programmed into the flash. The
application establishes a connection to the Cyclone through the debug bus, optionally interacts
with the Cyclone, optionally saves named blocks of data (rtData) to the Cyclone, and will report
success/failure to the Cyclone. A failure immediately terminates the programming script. The PF
command (program feature) can be used to program any named rtData blocks back into the
device at any time. rtData blocks are discarded once the programming script/image completes.

User Manual For Cyclone FX Programmers 173


14.4 Run Test API Calls
In order to implement the test applications as part of the programming process, PEmicro provides
a Run Test API C and header file. These are linked into the test application and allow the
application to communicate to the Cyclone through the debug bus. The API calls let the user
display, retrieve, and save a variety of information on the cyclone.

A selection of the Run Test API Calls:

void runtest_initialize_programmer_connection(void);
Initiate the connection to the cyclone programmer across the debug connection. This is expected
to be called somewhere near the start of the main() function in the test application. If the Cyclone
doesn’t receive a connection request from the Run Test application, then it will error after a
timeout. Once this routine returns, all other calls may be used until the test application is stopped
by the runtest_stop_test_and_return_result() call.

void runtest_stop_test_and_return_result(unsigned long pe_test_result);


Stops the test application from running and sends back the test application result to the Cyclone as
pass/fail with error codes. The Cyclone will move on to the next programming step if the result was
successful. A zero result denotes success and non-zero means failure.

unsigned char runtest_send_rtdata_block_to_programmer(void *dataptr, unsigned long


number_of_bytes, char *data_feature_description);
Sends a block of data (“rtData”) to the Cyclone, with a specific name to reference it, for later use by
the Cyclone. This data can be reprogrammed by the Cyclone into the device using the PF Program
Feature command when programming in the final application (or other test applications).

void runtest_get_date_time(pe_date_struct *pe_date_ptr);


void runtest_get_UTC_date_time(pe_date_struct *pe_date_ptr);
Allows the test application to retrieve either the local or the UTC date and time from the Cyclone.
The Cyclone will fill out the data structure pointed to by the pe_data_ptr.

unsigned char runtest_display_message_dialog(char* dialog_text, char* button_one_text,


char* button_two_text, char* button_three_text);
Allows the test application to pop up a message box with three buttons on the display of the
Cyclone or on the PC. All strings are null terminated. If the button text for each button is not blank,
then the button will be visible. This is a way to either notify the operator to do something at some
point in the test or to ask them a question. Once a button is selected, it will send back the button
number from the Cyclone to the running test application in the target. If no button is selected, it will
send back a 0 for no data.

unsigned char runtest_display_input_query(const char* message_string, char


*string_input_by_user, unsigned char max_string_length);
Pops up a message box on the Cyclone screen prompting the user for a response. This default

User Manual For Cyclone FX Programmers 174


response on the Cyclone screen for editing is specified by the string_input_by_user string. If the
user enters a new string, the data in the string_input_by_user string will be overwritten. The image
below is an example of what is shown on the Cyclone touch screen.

unsigned char runtest_write_string_to_log_file(char* string_to_append_to_logfile);


Send a text string back to the Cyclone for display/logging.

void runtest_request_power_measurement(unsigned long *V_measured, unsigned long


*I_measured);
Reads the target voltage and current usage as measured from the Cyclone. The voltage is in mV
and the current is in uA.

14.5 Example Programming Images With Run Test


PEmicro has provided several examples, including application codes and programming scripts,
online at: http://www.pemicro.com/blog/index.cfm?post_id=223

User Manual For Cyclone FX Programmers 175


15 TROUBLESHOOTING
This section answers some common questions that should help the user with various aspects of
Cyclone FX operation.

15.1 My Cyclone Is Non-Responsive, Is There A Way To Re-Activate It?


It is possible that the issue is outdated firmware. In this case, you may wish to use bootloader
mode to update the Cyclone firmware and then try to re-start the Cyclone.

15.1.1 What Is Bootloader Mode?


Bootloader Mode is a special running mode of the Cyclone Universal and Cyclone Universal FX in
which only limited functionality of the Cyclone is allowed. In this mode, the Cyclone will allow
communication to a PC via USB, Ethernet or serial ports. In Bootloader Mode the user can update
the Cyclone firmware via the cyclone utilities.
The Bootloader screen will display the version of the bootloader, the version of the internal and
external application, the name of the Cyclone and it's IP address.

15.1.2 When Is Bootloader Mode Used?


If the Cyclone ever becomes unresponsive, communication to the PC is not possible via USB,
Ethernet, or Serial ports and if the cyclone fails to power on.

15.1.3 How Is Bootloader Mode Entered?


You can force the Cyclone into bootloader mode with the following sequence, with the Cyclone
powered:
- Press the Reset button
- Press the Start button
- Release the Reset button
- Tap the Cyclone LCD screen 3 times
- Release the Start button

15.2 I Received A “SAP Image Needs To Be Updated” Error Using A Next-Gen Cyclone, How
Do I Update?
The current PEmicro software that is available for all our Cyclones generates SAP images that are
compatible with our newest generation of Cyclones.
However, customers who have generated SAP images using older versions of our Cyclone
software with Cyclones such as the Cyclone PRO, Cyclone MAX, Cyclone for ARM devices Rev.
A/B, etc., will find that these SAP images will not work on the newer Cyclone LC and Cyclone FX
programmers. Simply recreating these images for current generation Cyclones could potentially
introduce errors and lose information about commands, settings, and configurations.
Therefore, we created the “SAP_Convert_Console.exe” which can be used to convert older
generation SAP images into current generation SAP images. Once converted, an image will work
not only on Cyclone LC and Cyclone FX programmers, but it will also remain compatible with the
Cyclone for which it was originally created.

15.2.1 How Do I Use SAP_Convert_Console.exe?


SAP_Convert_Console.exe is a Windows command line utility and the software must be run
through the Windows Command Prompt. The utility can be found in the same folder as the
Cyclone’s software install path.
The command line parameter syntax:

>SAP_Convert_Console [old_SAP_path] [new_SAP_path]

User Manual For Cyclone FX Programmers 176


Where:

[old_SAP_path] The relative or full path to the SAP file. Usually has the .SAP file
extension.
[new_SAP_path] Optional parameter where the user can specify a relative or full path to
dump the output of the conversion. If path and file name matches the
input, then the output file will replace the input file. If this parameter is not
specified, the output will be dumped in the same path as the input file
renamed with postfix “_2”. For example if the input is myfile.SAP, then the
output will be myfile_2.SAP and will not replace the original input file.

15.3 When Trying To Install The CYCLONE Software, A Popup WDREG Error Occurs Telling
Me That There Are Open Devices Using WinDriver.

Figure 15-1: WDREG Error Message

The error is that the USB Driver (WinDriver) used by PEmicro devices and software is currently in
use and can't be upgraded as such. The simple solution is to shut down any PEmicro software and
also unplug any PEmicro Cyclone, Multilink, and OpenSDA devices. If the error pops back up upon
Retry, or you are remote from the machine itself, go to the Windows Device Manager and right
click on each Multilink, Cyclone, and OpenSDA device and select “Disable”.

Figure 15-2: Disable Interfaces In Windows Device Manager

Upon clicking the Retry button in the installer, the drivers should now install and the devices will be
automatically re-enabled.

User Manual For Cyclone FX Programmers 177


15.4 What should I do if the target device does not enter debug mode, and I receive the error
message “Cannot enter background mode”?
If you receive this message you should check your hardware with a scope, logic analyzer or logic
probe. First check for power on, then check to make sure the processor oscillator is running.
Finally, look for the startup sequence below by first finding your Cyclone part number and then the
Cyclone port for your microprocessor.

CYCLONE-FX-ARM
----------------------------------------------------------------------------------------------------------------------------------
Ports A, B, C - Kinetis, LPC, S32 (ARM) & other ARM Cortex devices
ARM JTAG
• RESET is driven low (to processor).
• Activity appears on TCK, TDI and TDO (PC software instructs the processor to enable
debug mode).
• RESET is released by the interface and will go high.
• Activity appears on TCK , TDI and TDO (Debug activity).

ARM SWD
• RESET is driven low (to processor).
• Activity appears on SWD_CLK and SWD_DIO (PC software instructs the processor to
enable debug mode).
• RESET is released by the interface and will go high.
• Activity appears on SWD_CLK and SWD_DIO (Debug activity).

CYCLONE-FX-UNIV
----------------------------------------------------------------------------------------------------------------------------------
Ports A, B, H - Kinetis, LPC, S32 (ARM) & other ARM Cortex devices
ARM JTAG
• RESET is driven low (to processor).
• Activity appears on TCK, TDI and TDO (PC software instructs the processor to enable
debug mode).
• RESET is released by the interface and will go high.
• Activity appears on TCK , TDI and TDO (Debug activity).

ARM SWD
• RESET is driven low (to processor).
• Activity appears on SWD_CLK and SWD_DIO (PC software instructs the processor to
enable debug mode).
• RESET is released by the interface and will go high.
• Activity appears on SWD_CLK and SWD_DIO (Debug activity).

Port G- MPC5xx/8xx (FX Only)


• DSCK is driven high and DSI is driven low (to processor).
• Delay ~1ms.

User Manual For Cyclone FX Programmers 178


• HRESET or SRESET is driven low (usually this will be HReset).
• Delay ~20ms.
• HRESET is released (tri-state, should be pulled up on target).
• Shifting activity appears on DSCLK, DSI and DSO. (PC software communicating with
target to determine if debug mode was successfully entered).

Port H - Infineon TriCore


Infineon TriCore - DAP Mode
• The following reset sequence enables DAP Mode:

Figure 15-3: Reset Sequence

a. DAPEN (Pin 8) signal (if exists) is driven High.


b. DAP0 (Pin 4) signal is driven Low.
c. RESET (Pin 10) signal is driven Low.
d. For some targets, as soon as RESET is driven Low, DAP1 (Pin 2) signal is pulled up
High by the target for 5 milliseconds. It is then driven Low.
e. After at least 10 milliseconds (target may experience power cycle by PEmicro hard-
ware if so instructed), the RESET signal is tri-stated and pulled up High.
f. After the RESET signal stabilizes, DAP0 issues 8 pulses.

Ports C & E - Renesas, Non-ARM Only (Adapter Required)


RH850
2-Wire UART Mode
To enter UART mode FLMD0 will need to be High and FLMD1 will need to be Low before
Reset is released. Some special devices will need up to 3 pulses on FLMD0 after reset is
released and before the low pulses on RxD.
RL78
Please see Renesas’ RL78 documentation for information.
R8C Tiny
Single Wire Mode:
Please see Renesas’ R8C Tiny documentation for information.
UART Mode:
After selecting UART mode as the communication mode. the bit rate is adjusted.
The bit rate is adjusted to 9600 bps by sending standard time command (00H) 16 times and
bit rate 9600 command (B0H) at 9600 bps from the Cyclone (on the MODE pin for Single Wire
mode and on the Cyclone's RxD pin for UART mode). When the target receives the bit rate

User Manual For Cyclone FX Programmers 179


9600 command normally, bit rate 9600 command (B0H) is returned
R8C 3x Lx
UART Mode:
Please see Renesas’ R8C 3x Lx documentation for information.
Single Wire Mode
After selecting UART mode as the communication mode. the bit rate is adjusted.
The bit rate is adjusted to 9600 bps by sending standard time command (00H) 16 times and
bit rate 9600 command (B0H) at 9600 bps from the Cyclone (on the MODE pin for Single Wire
mode and on the Cyclone's RxD pin for UART mode). When the target receives the bit rate
9600 command normally, bit rate 9600 command (B0H) is returned

Port D – Coldfire V2/V3/V4


• BKPT (Pin-2), DSI (Pin-8), and DSCLK (Pin-4) signals are driven low.
• RESET (Pin-7) is driven low for 20+ milliseconds and released.
• After RESET is released and if the processor has correctly entered background mode, the
PST0 (Pin-15), PST1 (Pin-14), PST2 (Pin-13) and PST3 (Pin-12) lines should all be driven
high by the processor.
• Activity (changing signals) is seen on the DSI, DSO, and DSCLK signals. The activity on
the DSCLK and DSI lines is generated by the PC and the activity on the DSO line is
generated by the processor.

Port F
HCS08, S12Z, ColdFire V1, RS08
• Debug activity is seen on BKGD (Pin-1).
HC(S)12(X)
• BKGD (Pin-1) and RESET (Pin-4) are pulled low by the interface.
• After 5 milliseconds, RESET (Pin-4) is released and goes high.
• After 10 milliseconds, BKGD (Pin-1) is released and goes high.
• After 20 more milliseconds, debug activity is seen on BKGD (Pin-1).

User Manual For Cyclone FX Programmers 180


16 ERROR CODES
The Cyclone FX will indicate errors using the following codes. Please contact PEmicro if
instructed or if you are unsure of the specific meaning of an error code.
Note: Some code numbers in the sequence are skipped, these are old codes that have been removed.

16.1 Debug Mode Communication Related Errors


$0001: No target device response.
$0002: Invalid target device response.
$0003: Programming operation canceled.
$0004: Error while waiting for programming operation to complete.
$0005: Error attempting to detect the communication speed.
$0006: Error: Attempt to unsecure the device was unsuccessful.
$0007: An error occurred while entering debug mode.
$0008: Error entering debug mode. The device is secured.
$0009: Error entering debug mode for verification.
$000A: Error writing data to target.
$000B: Error enabling or disabling device for programming.
$000C: Error performing timing test.
$000E: Error: Vendor hardware is not supported.
$000F: Error generating VPP high voltage.

16.2 SAP Image Handling Related Errors


$0011: No image selected
$0012: Error validating image CRC
$0014: SAP image storage was not initialized
$0015: SAP image transfer error, odd length is not allowed
$0016: SAP image transfer error, invalid start address
$0017: SAP image transfer error while writing to storage
$0018: Error writing the serial number structure storage
$0019: Error writing the menu structure storage
$001A: Error erasing internal memory
$001B: Image requires higher firmware version
$001C: Image version is not supported. Please update firmware.
$001D: Out of RAM memory. Try reset Cyclone.
$001E: SAP image storage failure
$001F: Old SAP image format, not supported.
$0020: Programming image is not accessible.
$0021: Another image is being loaded. Do not interrupt.
$0022: Image already exists.
$0023: invalid Image ID. Image ID exceeds the maximum number of images allowed.
$0024: invalid Image ID. Image ID exceeds the total number of images available in the cyclone.
$0025: The ImageKey needed for decryption is not found on the Cyclone.
$0026: Image file can not be loaded.

User Manual For Cyclone FX Programmers 181


16.3 SAP Communication Handling Related Errors
$0031: System reset occurred
$0032: System is busy with other operations.
$0033: System is busy with too many inquiries.
$0034: System has not finished initialization.

16.4 SAP Algorithm Header Operation Handling Related Errors


$0061: Undefined header operation
$0062: Operation in algorithm header has failed.

16.5 SAP Operation Related Errors


$0081: SAP operation is not supported.
$0082: Target type mismatch
$0083: SAP operation canceled
$0084: Running algorithm failure

16.6 SAP Blank Check Range and Module Related Errors


$1001: Blank Check is not supported by this algorithm.
$1002: Blank Check algorithm was not found.
$1003: Blank Check operation failed

16.7 SAP Erase Range and Module Related Errors


$2001: Erase error, algorithm not supported
$2002: Erase error, algorithm not found
$2003: Erase error, module failed or canceled
$2004: Erase error, module failed, target is still secured
$2005: Erase error, module not performed, data is preserved

16.8 SAP Program Byte, Word, and Module Related Errors


$3001: Program error, algorithm not supported
$3002: Program error, algorithm not found
$3003: Program operation failed or was canceled
$3004: Program operation failed, write protected
$3005: Program error, Data size exceeds the limit
$300A: Error during reading data range, invalid data length
$300B: Error during reading data range, invalid start address
$300C: Error during reading data range, no target power
$300D: Error during programming data range, invalid data length
$300E: Error during programming data range, invalid start address
$300F: Error during programming data range, no target power
$3010: Error reported while running the custom test application (RT) on the target.
$3011: Error displaying feature
$3012: Error programming feature
$3013: Error overlaying feature

User Manual For Cyclone FX Programmers 182


$3014: Error: Run Test Operation terminated
$3015: Error: Run Test Operation over character limit 255
$3016: Error run test operation failed
$3017: Error: unable to allocated memory during run test.
$3018: Error: Dynamic operation failure. Algorithm is not loaded. Check image settings.
$3040: Error: Program may cause the device to be secured permanently

16.9 SAP Verify Checksum Related Errors


$4001: Verify Checksum not supported
$4002: VC failed, invalid algorithm was used
$4003: VC operation failed or was canceled
$4011: VV command not supported
$4012: VV failed, invalid algorithm was used
$4013: VV operation failed or was canceled

16.10 SAP Verify Range and Module Related Errors


$5003: Error during verifying module.

16.11 SAP User Function Related Errors


$6003: Error during user functions.

16.12 SAP Trim Related Errors


$7001: Program Trim operation is not supported
$7003: No target response during a Program Trim operation
$7004: Program Trim error. Trim value is not set
$7007: Program Trim error. Trim value failed
$7008: Trim error. Trim value read failed
$7009: Trim value invalid, value is $00 or $FF
$700A: Trim value is invalid. Trim value is already programmed.

16.13 Unrecoverable Fatal Errors


$8001: Fatal Error: please contact PEmicro.
$8002: Fatal Error: please contact PEmicro.
$8003: Fatal Error: please contact PEmicro.
$8004: Fatal Error: please contact PEmicro.
$8005: Fatal Error: please contact PEmicro.
$8006: Fatal Error: please contact PEmicro.
$8007: Fatal Error: please contact PEmicro.
$8008: Fatal Error: please contact PEmicro.
$8009: Fatal Error: please contact PEmicro.
$800A: Fatal Error: please contact PEmicro.
$800B: Fatal Error: please contact PEmicro.
$800C: Fatal Error: please contact PEmicro.
$800D: Fatal Error: please contact PEmicro.

User Manual For Cyclone FX Programmers 183


$800E: Fatal Error: please contact PEmicro.
$800F: Fatal Error: please contact PEmicro.
$8010: Fatal Error: please contact PEmicro.
$8011: Fatal Error: please contact PEmicro.
$8012: Fatal Error: please contact PEmicro.
$8013: Fatal Error: please contact PEmicro.
$8014: Fatal Error: please contact PEmicro.
$8015: Fatal Error: please contact PEmicro.
$8016: Fatal Error: please contact PEmicro.
$8017: Fatal Error: please contact PEmicro.
$8018: Fatal Error: please contact PEmicro.
$8019: Fatal Error: please contact PEmicro.
$801A: Fatal Error: please contact PEmicro.
$801B: Fatal Error: please contact PEmicro.
$801C: Fatal Error: please contact PEmicro.
$8020: Fatal Error: please contact PEmicro.
$8021: Fatal Error: please contact PEmicro.
$8022: Fatal Error: please contact PEmicro.
$8023: Fatal Error: please contact PEmicro.
$8024: Fatal Error: please contact PEmicro.
$8025: Fatal Error: please contact PEmicro.

16.14 Operation Security Related Errors


$9001: Error: Exceeds image specified Program Limit
$9002: Error: Exceeds image specified Error Limit
$9003: Error: Exceeds Image specified Date Range
$9004: Error: This programming image has usage restrictions enabled. Cyclone ProCryption
Security is needed.
$9005: Error: This programming image has barcode enabled. Requires Cyclone FX hardware.
$9006: Error: This programming image has command RT Run Code in Test/Calibration Mode.
Requires Cyclone FX hardware.
$9007: Error: This programming image has command DF Display Feature Data. Requires Cyclone
FX hardware.
$9008: Error: This programming image has command PF Program Feature Data to
Address.Requires Cyclone FX hardware.
$9009: Error: This programming image has command OF Overlay Feature Data over File Data.
Requires Cyclone FX hardware.
$900A: Error: A Cyclone SDHC Port Activation License is needed before you can use an SD Card.

16.15 External Memory-Related Errors


$A001: Error writing to external memory card
$A002: Error formatting the external memory card
$A003: External memory card was disconnected during use
$A004: External memory card has unsupported format
$A005: External memory card has corrupted data

User Manual For Cyclone FX Programmers 184


$A006: Faulty external memory card.
$A007: Failed during internal memory verification
$A008: Failed during external memory card verification
$A009: Error while reading external memory card for image pointer
$A00A: Error: Read-only lock is enabled in the external memory card.

16.16 Serial Number Related Errors


$B001: Error erasing the serial number storage
$B002: Error writing serial number
$B003: Serial number is over the limit, up to 255 can be supported at a time
$B004: Error loading Serial Number structure from reset
$B005: Error during serial number structure update
$B006: Error: Serial Number structure was not found.
$B007: Error: Serial Number structure is invalid
$B008: Error programming Serial Number to target.
$B009: Error obtain Serial Number from storage.

16.17 Download Count Related Errors


$C001: Error erasing the download counts storage
$C002: Error writing the download counts
$C003: Download counts is over the limit, up to 255 can be supported at a time
$C004: Error trying to convert the download counts structure

16.18 System Hardware/Firmware/Logic Recoverable Errors


$D001: Error: Firmware does not exist
$D002: Error: Firmware update is not allowed
$D003: Error: Firmware update has failed
$D004: Error: There is a firmware mismatch during firmware update.
$D005: Error: Voltage calibration failure.
$D006: Error: Cannot either read or write disk

16.19 Barcode Scanner Errors


$E001: The barcode file for this image is invalid or corrupt.
$E002: The barcode scanned does not apply to a programming image.
$E003: The barcode scanned applies to more than one programming image.
$E004: The barcode scanned exceeds the maximum size of 256 characters. Please make sure
that the scanner adds a Carriage Return Line Feed at the end of a transmission.
$E005: The barcode scanned includes unsupported characters.

User Manual For Cyclone FX Programmers 185


17 TECHNICAL INFORMATION
This section contains information about various physical, mechanical, electrical, etc. aspects of the
Cyclone FX programmers, part # CYCLONE-FX-ARM and part # CYCLONE-FX-UNIV. The
information applies to both Cyclone FX part numbers unless specified.

17.1 Life Expectancy


Start Button: 1 Million Press Rated

17.2 Electrical Specifications


Input Voltage: DC 5.9V - 12V, center positive
Maximum Current: Up to 2A (0.7A typical) @ 6V
Up to 2A (0.5A typical) @ 12V
Barrel size: 5.5mm outer diameter, 2.5 mm inner diameter

17.3 Mechanical Specifications


Dimensions: 8” L x 4” W x 1.25” H (20.3cm L x 10.2cm W x 3.2cm H)
Weight: 12.7 oz (360 g)

17.4 Electromechanical Relays


Max Recommended Switched Voltage: DC 24V
Max Recommended Switched Current: 1A
Output Voltage To Debug Port (when configured for internal power): DC 2V-5V
Max Current To Debug Port (when configured for internal power): 0.5 A

17.5 Debug Ports - CYCLONE-FX-ARM


Ports A, B: 0.05” (1.27 mm) Pitch
Ports C,: 0.1” (2.54 mm) Pitch
Characteristic Impedance: 50 ohms (all ports)

17.6 Debug Ports - CYCLONE-FX-UNIV


Ports A, B: 0.05” (1.27 mm) Pitch
Ports C, D, E, F, G, H: 0.1” (2.54 mm) Pitch
Characteristic Impedance: 50 ohms (all ports)

17.7 International Shipping


HTS Number: 8471500150
ECCN: EAR99

17.8 Compliances/Standards
ROHS Compliant
CE Certified
FCC Certified

More information on PEmicro’s Cyclone programmers is available at: pemicro.com/cyclone.

User Manual For Cyclone FX Programmers 186

You might also like