Cyclone Programmers: User Manual
Cyclone Programmers: 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-FX-UNIV
PART#: CYCLONE-FX-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.
10 ~SENSE_IN An input which must be driven low to enable the programming control
port inputs.
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.
Figure 3-13: Mini 10-Pin and Mini 20-Pin Keyed Header Dimensions
3.19.1 PORT A: 10-Pin Keyed Mini Connector (Kinetis, S32 (ARM), other PEmicro-Supported ARM
devices)
Cyclone FX 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.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:
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.20.1 PORT A: 10-Pin Keyed Mini Connector (NXP Kinetis & S32 (ARM), other PEmicro-Supported
ARM devices, Infineon TriCore - DAP only)
Cyclone FX 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.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)
** 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 FX 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:
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.
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.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:
S12Z Signals
Note:* indicates optional signal
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.
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)
*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.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
*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.
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)
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 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.
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 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
* 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.
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
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
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 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-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 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.
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’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.
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 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.
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:
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.
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:
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.
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
All other source files which will call functions from the library file should include the above header
file with the C/C++ #include directive.
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.
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.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.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.
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.6 Finalization
Before closing the application, it is recommended that the session with the PEmicro hardware be
terminated and the DLL unloaded from memory.
disconnectFromAllCyclones( );
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++
8.2.10.1 Constants
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.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.10.2.2 unloadLibrary
void unloadLibrary(void);
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.
8.2.10.2.7 queryInformationOfAutodetectedCyclone
8.2.10.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
communication protocols.
8.2.10.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.10.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.10.4.1 startImageExecution
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.10.4.2 startDynamicDataProgram
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 buffer A pointer to the array which holds the data to be written.
8.2.10.4.3 checkCycloneExecutionStatus
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
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.10.4.5 getNumberOfErrors
@parameter cycloneHandle The handle of the Cyclone to get a count of the errors.
8.2.10.4.6 getErrorCode
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.
8.2.10.4.7 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.10.4.8 getDescriptionOfErrorCode
@parameter cycloneHandle The handle of the Cyclone to retrieve the error code description.
8.2.10.4.9 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.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 -
@parameter cycloneHandle The handle of the Cyclone to clear dynamic overlay data.
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.
@parameter buffer A pointer to the array which holds the data to be written.
8.2.10.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.10.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.10.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.10.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.10.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.10.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.10.6.1 getFirmwareVersion
@parameter cycloneHandle The handle of the Cyclone of which to read the firmware version.
8.2.10.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.
-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.
-listserialfiles
List Serial Files in Cyclone
-addserialfile=[file path]
Add Serial File to Cyclone
-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.
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_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.
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.
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 -
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.
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 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.
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.
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
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
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
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.
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.
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
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
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”).
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.
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.
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.
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.
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:
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.
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.
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.
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).
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.
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.
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.
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.
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.\
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.
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.
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.
The unformatted version of the PEmicro JSON Barcode Test file for the examples used in this
manual looks like:
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.
To load a Barcode Test (.bar) file, click on the Load File button in the control area of the main
screen.
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-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
Figure 12-32: After Char Test(TYPE): entries Bulk Copy to Range-1 entries
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.
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.
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
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.
In the next window enter the starting address in which you want the barcode to be recorded (image
2).
See Section 6.1.6 - Programming Operations for more information on the Program Feature Data
command.
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.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.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 13-3: Cyclone Image Creation Utility: Serial Files In Programming Sequence
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.
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
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.
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.
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"
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, 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.
[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-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 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).
17.8 Compliances/Standards
ROHS Compliant
CE Certified
FCC Certified