Cyclone LC User Manual
Cyclone LC User Manual
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.
PART#: CYCLONE-LC-UNIV
PART#: CYCLONE-LC-ARM
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:
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.
On power-up the user may need to agree to a firmware update on the Cyclone unit.
Based on the algorithm that was selected, additional commands will be made available in the box of
Note: Launch Script Wizard can also be used to quickly complete Steps 3 and 4 (not available for NXP
i.MX devices).
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.
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:
To set the property, highlight it and click the … button on that line. Enter the value 1 to enable and
0 to disable triggering
The triggering should then show as active (note that ~SENSE_IN will also need to be driven low for
triggering to work):
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
Mechanical drawings are shown below whose dimensions are representative of the pin size and
spacing of these headers.
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-13: Mini 10-Pin and Mini 20-Pin Keyed Header Dimensions
3.18.1 PORT A: 10-Pin Keyed Mini Connector (Kinetis, S32 (ARM), other PEmicro-Supported ARM
devices)
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:
3.18.2 PORT B: 20-Pin Keyed Mini Connector (Kinetis, S32 (ARM), other PEmicro-Supported ARM
devices)
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.
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:
3.18.3 PORT C: 20-Pin Debug Connector (Kinetis, S32 (ARM), other PEmicro-Supported ARM
devices)
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:
3.19.1 PORT A: 10-Pin Keyed Mini Connector (NXP Kinetis & S32 (ARM), other PEmicro-Supported
ARM devices, Infineon TriCore - DAP only)
Cyclone LC programmers also support SWD Mode. This replaces the JTAG connection with a
clock and single bi-directional data pin.
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:
3.19.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.19.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-LC-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.19.2 PORT B: 20-Pin Keyed Mini Connector (Kinetis, S32 (ARM), other PEmicro-Supported ARM
** 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.
Cyclone LC programmers also support SWD Mode. This replaces the JTAG connection with a
clock and single bi-directional data pin.
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:
3.19.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.
DSC Pinout
TDI 1 2 GND
TDO 3 4 GND
TCK 5 6 GND
NC 7 8 NC/KEY
RESET 9 10 TMS
TVCC 11 12 GND
NC* 13 14 TRST
*The pin is reserved for internal use within the PEmicro interface.
Figure 3-25: ColdFire Adapter (part# CABLE_CF_ADAPTER (Rev. B), for synchronous ColdFire
Figure 3-26: ColdFire Ribbon Cable (for asynchronous ColdFire targets, included with Cyclone)
3.19.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:
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.
Figure 3-27: STM8 Adapter: 1) Bottom, 2) Top, 3) Connected To 6-Pin Header of Cyclone_Universal
(Adapter Sold Separately)
3.19.8 PORT H: 20-Pin Debug Connector (Kinetis, S32 (ARM), other PEmicro-Supported ARM
devices, Infineon TriCore - DAP only)
*The pin is reserved for internal use within the PEmicro interface.
*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:
3.19.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.19.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-LC-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
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.
below.
Figure 3-30: Ribbon Cable Example Diagram, When Looking Into IDC Socket
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.
The bottom edge of the Cyclone LC 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.
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.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.
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
The home screen appears when the Cyclone LC 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
* Target Device Is Powered - “Yes” indicates that the Cyclone LC detects power on the Vcc pin of
the target device programming header.
** SDHC Memory Card (Cyclone FX Only) - Cyclone FX only. “Reset Cyclone” indicates that the
Cyclone FX 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.
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.
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.
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.
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).
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.
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
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
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.
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.
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.
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.
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.
The Programming Sequence field, the user may specify the algorithm, object file, and operations
to be carried out.
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.
Cyclone FX only: 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-17: Program User Options (PU Command) - Select User Options File
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.
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.
This will pop up a box asking for a descriptive ImageKey Name (this name will be used for display
in many dialogs):
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:
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.
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.
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.
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:
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.
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 FX’s SDHC port contains a formatted memory card, 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-27, 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.
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.
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
* Target Device Is Powered - “Yes” indicates that the Cyclone LC detects power on the Vcc pin of
the target device programming header.
** SDHC Memory Card (Cyclone FX Only) - Cyclone FX only. “Reset Cyclone” indicates that the
Cyclone FX 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.
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.
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.”
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.
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.
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)
8.1.2 Components
The Cyclone Control Suite consists of three major components:
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.5.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:
8.2.4 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.
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.
INSTALLDIR\cycloneControl\controlsdk\examples\c\cyclone_control_api.h
INSTALLDIR\cycloneControl\controlsdk\examples\c\cyclone_control_api.c
INSTALLDIR\cycloneControl\controlsdk\examples\msvcsharp\visual_sap_control\cyclone_control
_api.cs
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.
Python Projects
INSTALLDIR\cycloneControl\controlsdk\examples\python\cycloneControlSDK.py
8.2.5 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.5.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.6 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( );
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( );
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.7 Finalization
Before closing the application, it is recommended that the session with the PEmicro hardware be
terminated and the DLL unloaded from memory.
disconnectFromAllCyclones( );
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.
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.
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.
Pascal
C/C++
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.11.2.1 loadLibrary
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.
8.2.11.2.2 unloadLibrary
void unloadLibrary(void);
This function unloads the DLL loaded with loadLibrary( ). This call should be made before the
application starts to unload itself.
8.2.11.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.11.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.
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.11.2.6 queryNumberOfAutodetectedCyclones
uint32_t *queryNumberOfAutodetectedCyclones(void);
This function returns the number of Cyclones connected locally on USB and on your local network.
8.2.11.2.7 queryInformationOfAutodetectedCyclone
8.2.11.3.1 connectToCyclone
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
8.2.11.3.2 connectToMultipleCyclones
This function returns a array of handles to opened Cyclones from a null-terminated String of
comma delimited identifiers.
Example: USB1,209.1.10.2,Orion,COM1
8.2.11.3.3 setLocalMachineIpNumber
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.
8.2.11.4.1 startImageExecution
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.
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.
Checks to see if the Cyclone has completed a programming operation started with the
“startImageExecution” function.
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.11.4.3 dynamicReadBytes
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.
@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.
8.2.11.4.4 getNumberOfErrors
@parameter cycloneHandle The handle of the Cyclone to get a count of the errors.
8.2.11.4.5 getErrorCode
This function returns the error code of the specified error number recorded in the DLL or in the
@parameter cycloneHandle The handle of the Cyclone to retrieve the error code.
This specifies the error number. The valid range for this
@parameter errorNum
parameter is from 1 to the total number of errors.
8.2.11.4.6 getLastErrorAddr
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.
8.2.11.4.7 getDescriptionOfErrorCode
@parameter cycloneHandle The handle of the Cyclone to retrieve the error code description.
8.2.11.4.8 resetCyclone
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.
8.2.11.4.9 clearOverlayProgramData
bool clearOverlayProgramData(uint32_t cycloneHandle);
@parameter cycloneHandle The handle of the Cyclone to clear dynamic overlay data.
8.2.11.4.10 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. Must be called prior to startImageExecution. See Section 8.2.11.4.1 -
startImageExecution. See also Section 8.2.11.4.9 - clearOverlayProgramData.
Note: This function is only supported by the Cyclone FX or the Advanced Control Suite Upgrade License.
@parameter buffer A pointer to the array which holds the data to be written.
8.2.11.5.1 getImageDescription
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.
This function erases all images stored on the selected media type.
8.2.11.5.3 eraseCycloneImage
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.
8.2.11.5.4 addCycloneImage
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.
8.2.11.5.5 countCycloneImages
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
8.2.11.5.6 getPropertyValue
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.
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.
8.2.11.5.8 getPropertyList
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.
8.2.11.6.1 getFirmwareVersion
@parameter cycloneHandle The handle of the Cyclone of which to read the firmware version.
8.2.11.6.2 cycloneSpecialFeatures
This function is used for executing special features described by the featureNum parameter. Refer
to the parameter specifications below for details.
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.
-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.
-specifyOverlayData=[cyclone number],[address],[data]
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.
The data specified will replace the data contained in the SAP image, whether those locations are
blank or not. If the original locations are not blank, and if the VC or VV commands exist in the SAP
image, the VC or VV commands will fail since the original data were replaced with these overlay
data. But the VM command verifies against the overlay data.
The "-launchimage" command must be issued together with this command. It does not matter
whether -specifyoverlaydata or -specifyoverlaystring is issued before or after the -launchimage
command, since each command has its priority assigned to make sure they are executed
accordingly.
-specifyOverlayString=[cyclone number],[address],[string]
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.
The data specified will replace the data contained in the SAP image, whether the locations are
blank or not. If the original locations are not blank, and if the VC or VV commands exist in the SAP
image, the VC or VV commands will fail since the original data were replaced with these overlay
data. But the VM command verifies against the overlay data.
The "-launchimage" command must be issued together with this command. It does not matter
whether -specifyoverlaydata or -specifyoverlaystring is issued before or after the -launchimage
command, since each command has its priority assigned to make sure they are executed
accordingly.
-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 BY CYCLONE FX.
-eraseallinternalimages
Preform a format of the internal memory connected to the open Cyclones. This will cause all
internal images to be erased.
-eraseallexternalimages
Preform a format of the external memory connected to the open Cyclones. This will cause all
external images to be erased.
-listserialfiles
List Serial Files in Cyclone
-addserialfile=[file path]
Add Serial File to 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.
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.
The commands should be separated by a space. Every command starts with a “-” character,
arguments follow the “=” character.
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.
This example connects to a single Cyclone enumerated on USB1 and executes its first image.
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.
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,
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.
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.
CycloneControlConsole.exe –cyclone=USB1 -
specifyOverlayData=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.
The utility is composed of three main parts: a connection dialog, the control tabs, and a status
window.
Once the Cyclone is selected, clicking on the “Connect” button will bring a series of tabs that will
allow full access to the Cyclone.
CYCLONE FX programmers 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.
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 - Cyclone FX only).
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.
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.
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.
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
showed will be the updated value of the property.
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
should bear in mind that if the ImageKey is missing for an eSAP image, that image will be locked
and cannot be programmed.
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.
Most command-line parameters can be used with any device, but some are specific to certain
architectures or device types.
>csapacmpz.exe "C:\MyWorkspace\MyProject\KL25Z128_script.cfg"
/imagefile "C:\MyWorkspace\MyProject\KL25Z128_image.sap"
>csapacmpz.exe "C:\MyWorkspace\MyProject\KL25Z128_script.cfg"
/imagefile "C:\MyWorkspace\MyProject\KL25Z128_image.sap"
[executable] Specifies the particular CSAP executable that is compatible with the user’s device.
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.
[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.
See Section 9.2.4 - Using Command Line Parameters Inside a .CFG File
for more information and examples.
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:
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.
Where:
nnnnnnnn.nn : Frequency in Hertz with two decimal places
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.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.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.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.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
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.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.
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.
9.2.2.9.3 :RSTLOWPOSTSAP
Processors: All
Drives the RESET signal LOW before and after SAP operations.
9.2.2.10.2 :RSTLOWPOSTSAP
Processors: DSC, STM8
Drives the RESET signal LOW before and after SAP operations.
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.
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.
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.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.
RE Reset chip.
SS path Specify binary data file (S19/Elf/Hex) Path indicates file path to the binary.
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
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
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.
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.
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.
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.
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
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.
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-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
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”).
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.
12.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.
12.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).
Users that wish to retrieve the original text serial number format can parse out the JSON file:
object->pesettings-> serial_number_definition -> legacyv1encoding
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
Figure 12-3: Cyclone Image Creation Utility: Serial Files In Programming Sequence
12.6.1 Example
This sections describes how a user might configure multiple SAP images on their Cyclone to share
the same Serial File.
12.6.1.1 View and Edit SAP image Via Cyclone Control GUI
In Figure 12-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.
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.
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’.
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.
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
12-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.
Figure 12-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.
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 12-10: Serial Number Also Incremented for "Garth's SAP Image"
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.
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.
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 and Cyclone MAX, 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.
[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.
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”.
Upon clicking the Retry button in the installer, the drivers should now install and the devices will be
automatically re-enabled.
CYCLONE-LC-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-LC-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
• DSCK is driven high and DSI is driven low (to processor).
• Delay ~1ms.
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.
18.8 Compliances/Standards
ROHS Compliant
CE Certified
FCC Certified