Skip to content

Creating and Deploying Programming Images

For Cyclone LC, Cyclone FX, Cyclone MultiChannel

The Cyclone Image Creation Utility is used to create and then deploy or save programming images. A programming image is a compiled file where the data to be programmed, programming instructions, descriptive information, configuration details, and programming algorithms have been preprocessed and packaged so they are ready to program the target.

Figure: Programming Image Contents

imageContentsGraphic

The tools available in the Image Creation Utility help the user to construct and configure a programming image. The user can then choose whether to save or deploy the image, and how. While preparing deployment, users with access to ProCryption Security will have the opportunity to add encryption and to restrict some of the programming functions of the image. One important feature of encryption is that only Cyclones provisioned with the user’s custom key will be able to load, decrypt, and program an image that was encrypted using that key.

In-depth information can be found in Encryption (ProCryption Security). A thorough technical description of what is involved in the encryption process itself is available in Programming Image Encryption .

Note

ProCryption Security is provided automatically for any Cyclones making use of the PEcloud service, due to its robust security standards.

While preparing deployment, users of certain Cyclone models have the option to make their image a cloud-connected image, which will link their image to the PEcloud platform to enable additional functionality. For more details, the user may refer to the Cloud-Connected Programming Images chapter. If the user's Cyclone manual does not include this chapter then that Cyclone does not support cloud-connected programming.

Cyclone Image Creation Utility

This section describes in detail how to use the Cyclone Image Creation Utility, shown in Figure: Process of Building/Deploying Images, to configure and create either: 1) programming image, or 2) SAPOBJ image archive file, and how to deploy a programming image so that it can be used by a Cyclone FX.

Both programming images and SAPOBJ archive files are based on a set of programming steps and data files specified by the user. Images can either be built directly from all of the source data files or from a pre-compiled SAPOBJ programming data archive. More detail on the latter is available in the blog article Benefits of SAPOBJ.

The Cyclone does not require a target to be connected during the configuration process, however if a configured image is to be deployed directly to the Cyclone then it must be powered on and one of the communications interfaces must be connected. For cloud-connected images that are also delivered to a Cyclone via cloud, the Cyclone must have internet access via its Ethernet connection.

Note

The Cyclone Image Creation Utility is for ARM devices only; Image Creation Classic should be launched instead for non-ARM devices.

Programming Images

Programming images hold the preprocessed data, scripts, algorithms, and configuration needed to program a specific hardware configuration with a specific set of data. This makes them reliable, repeatable production snapshots that can be stored, versioned, deployed to a Cyclone, and used later without rebuilding the original project inputs. When the user deploys an image they can choose whether it will be cloud-connected or not.

A non-cloud-connected image has no external dependencies. The Cyclone only needs to be powered and connected to the target to program (though it can be automatically controlled through its Serial/USB/Ethernet as desired).

Images that are cloud-connected require an internet connection via Ethernet and leverage the PEcloud platform to offer several additional benefits.

Workflow For Programming Images vs. SAPOBJ Archive Files

Both programming images and SAPOBJ are based upon a set of programming steps and data files specified by the user. Images can either be built directly from all of the source data files or from a pre-compiled SAPOBJ programming data archive. Below is an image that shows how the SAPOBJ archive file is always generated as part of the image creation process because it is the precursor to a programming image. It does not include any encryption or programming restriction information. If the user wants to save a SAPOBJ archive then the process will not proceed past SAPOBJ creation and the archive file is saved. On the other hand, if the user is creating a programming image then the SAPOBJ file is transformed into an image as part of that process and is not saved separately.

Figure: Process of Building/Deploying Images and SAPOBJ

Workflow Graphic new 1 of 3

Benefits of SAPOBJ

When would the user want to use an “intermediate” SAPOBJ archive? This is most often done when the user is trying to create count restricted programming images and will be generating many such restricted images from the exact same data set. For instance, in December the user might want to generate a programming image for 500 units for Widget X Version 1.23, and then come back in February and April to generate images for 1000 and 900 units based on the same exact programming data. Building a SAPOBJ programming data archive at the beginning means that the user wouldn’t need any of the original data files or to re-specify the programming steps to execute; this information is all stored in the SAPOBJ file. The user could just build the new image directly from the SAPOBJ archive. More information can be found by reading The Magic of SAPOBJ.

Cloud-Connected Images

If the user's Cyclone supports cloud-connected programming and they choose to create a cloud-connected image, the image is tracked by the user’s PEcloud account (cloud.pemicro.com) regardless of whether the image is deployed locally or via the cloud. This allows the user to take advantage of some additional features to help manage programming activity and log results. If the image is deployed to PEcloud then encryption is required for security purposes, and the image may later be delivered securely to authorized Cyclones anywhere with an internet connection.

Figure: Programming Images and Cloud Connectivity

Note

This figure only applies to Cyclones that support cloud-connected programming.

workflowGraphicnew3of3

In both cases, for every programming operation the Cyclone will request permission from the cloud to program each target and will report the result to the cloud. The user has the ability to later start, stop, update, create, and monitor programming on their Cyclones, regardless of location.

PEcloud will also log any programming activities related to a cloud-connected image for the user to review.

Here are some key comparisons:

Feature Programming Image Cloud-Connected Programming Image
Feature Programming Image Cloud-Connected Programming Image
Self-contained, uses standard components (device select, algorithm, binaries, dynamic data, serialization, etc.) yes yes
Works with Automated Control SDK yes yes
Can be delivered locally to Cyclone yes yes
Can be delivered via cloud to Cyclone no yes
Image encryption required no Local (tracked by cloud): no
Cloud-distributed (uploaded to cloud): yes
Remote monitoring and management (pause, delete, update, inspect logs, etc.) no yes

For a more detailed comparison, please refer to the blog article Stand-Alone Programming Images vs Cloud-Connected Programming Images

Under “File” in the top menu of the Cyclone Image Creation Utility the user can choose from several options that will load a script or even full configuration information from various previously saved sources into the ICU. The options are:

  • Load Configuration Script
  • Save Configuration Script
  • Import Configuration from Image
  • Import Configuration from SAPOBJ Archive

Image Script Tab

The Image Script tab is where the user will select their device and assemble the programming script, including references to the appropriate programming algorithm, s-record, binaries, serialization data, etc.

Device Selection - Non-ARM Devices

For non-ARM devices, the user should instead run the Cyclone Image Creation Utility Classic Version (CreateImageClassic.exe). If already running the Cyclone Image Creation Utility, the user may click the “Select Non-ARM Device” button to launch the Classic Version.

Note

The Cyclone Image Creation Utility and the Classic Version are extremely similar in terms of functionality, they are merely organized differently. The Classic Version is not documented here; it is intended that the user should be able to operate the Classic Version using the concepts and descriptions included here for the Cyclone Image Creation Utility.

Figure: Cyclone Image Creation Utility

ICUInitialScreenBlank

Device Selection - ARM Devices

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

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

Device Selection 1 Device Selection 2 Device Selection 3
DeviceSelectionStart DeviceSelectionNXP DeviceSelectionNXPK4x

Device Box

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

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

ICUDeviceSelectionDropBox

Secure Boot Settings - NXP i.MX RT and LPC55Sxx Devices

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

Figure: Secure Boot Settings (Older Version of ICU Shown)

SecureBootSettings

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

Figure: Project Linked and Programming Sequence Loaded (Older Version of ICU Shown)

sbp

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 programming image creation process” if they wish that to occur during image creation.

Additional Assistance

The Secure Boot Helper Utility User Manual (direct .pdf download) is available from PEmicro’s website.

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.

Secure JTAG Settings - NXP i.MX RT Only

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

Figure: Secure JTAG Settings

SecureJTAGUnchecked

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

Figure: Image Key Collection File and Password Object

SecureJTAGChecked

Programming Sequence

This is the two-panel interface directly below the Device Selection area. This is where the user creates the sequence of commands to be carried out during programming. The left panel lists available programming functions. The right panel shows the selected functions in execution order.

Figure: Specify Programming Sequence

ICUProgrammingSequence

There are two ways to create the programming sequence.

1) Manual Selection

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

Figure: Specify Programming Algorithm To Use

ICUChooseModule

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

Figure: Programming Functions Available

ICUProgrammingCommandsAvailable

Similarly, to specify the S-Record to be programmed into the target, the user may double-click on Queue Object Data (QO) 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.

Figure: Specify Object File To Load

ICUQOCommand

Next, the user would add additional programming functions to complete the programming script by selecting programming operation commands from the Programming Sequence area. The commands can be added by double-clicking them, or by selecting them and using the arrow (->). Commands can also be removed or re-sequenced.

Figure: Add Programming Functions

ICUAddProgrammingCommands2

2) Script Wizard

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

Figure: Script Wizard Button

ICUScriptWizard

Please note that the Launch Script Wizard button will remove any commands that are already in the programming sequence window and begin 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.

      Function Buttons

The Clear Script button icons - remove all will remove all programming commands from the right panel. If one of these is the CM command, then it will also remove commands associated with the selected algorithm from the left panel.

The Add Selected Command button icons - add selected will add the selected programming command to the end of the programming sequence. Double-clicking the command has the same effect.

The Remove Selected Command button icons - remove selected will be used to remove a selected command from the right panel. The user can also simply hit the Delete button on their keyboard when the command is selected in the programming sequence.

The Move Up and Move Down buttons icons - move selected up icons - move selected down will allow the user to move the selected programming command up or down within the sequence.

Programming Sequence Complete

Once the programming sequence is complete, the programming image can be saved as a SAPOBJ archive file and/or the user can continue to the Build & Deploy phase to deploy an Image to a Cyclone or disk. The user can choose to make the image cloud-connected or not.

Programming Operations

Figure: Programming Operations Dialog Section

ICUProgrammingSequenceCommands

In the Programming Sequence field, the user may specify the algorithm, object file, and operations to be carried out. Here are some common operations.

Queue Object Data

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

Specify Object File

Asks for the name of (and/or path to) an object files to be used in programming or verifying a module. If the file is not found, an error message is given. The currently-selected file is shown in the S19 file selected window. The programmer accepts S1, S2, and S3 records. All other file records are treated as comments. If you do not specify a file-name extension .S19 is used by default. The programmer also supports ELF/Dwarf 2.0, 3.0, and 4.0 object files.

Your .S19 file may contain data for both EEPROM and flash. If you know that your S19 file contains the correct data, “Ignore S19 Range” may be checked. This will cause any out of range errors to be ignored.

Erase Address Range.

Please note that for ARM and Infineon TriCore devices. This command uses sector erase to erase all sectors between the start and end address parameters.

Erase If Not Blank

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

Please note that for ARM and Infineon Tricore devices this command appears as Erase All Non-blank Sectors. This command uses sector erase to erase all non-blank sectors of flash memory. If the sector is already blank, the erase is skipped for that sector. This can offer better performance compared to Erase Entire Module for very large flash memories.

Erase Module

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

Please note that for ARM and Infineon Tricore devices this command appears as Erase Entire Module. This command uses mass or chip erase if available to erase the entire flash memory. If the flash memory is not erasable, an error message is returned. This can be slow for very large flash memories.//

Erase Object File Ranges

Note: For ARM and Infineon Tricore devices. This command uses sector erase to erase all sectors that are found in the user's selected object file.

Blank Check Module

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

Start Code Running (GO)

If supported, this will appear in the Choose Programming Function window. For ARM devices, after the “GO” command is selected, the user will be prompted to select between a hard or soft reset. A hardware reset will run the user’s application code (which is programmed into flash memory) only after a physical reset of the MCU (power cycle of MCU, power cycle of PEmicro hardware, reset of PEmicro hardware, etc.). A software reset will allow PEmicro tools to perform a reset of the MCU without the need of any physical interaction, and the application code will be able to run directly after the programming sequence.

Program Bytes

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

Program Words

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

Program Module

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

Program Feature Data

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

     Figure: Using PF Command (Dynamic Data) (Older ICU Shown)

ProgramFeatureData

The options are: 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) (For Cyclone FX Universal & ARM only) To 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: Program Feature Address Dialog (Hex)

Program Feature Address dialog

Verify Module

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

Verify Checksum

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

Choose Serial File

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

Program Serial Number

This command becomes available once a programming algorithm is selected. It will instruct the Cyclone to program the serial number to the target once executed. As with other commands, the serial number will not be programmed until the programming operations are carried out.

When using a barcode scanner as part of the programming process, a Barcode Test file must be included with the programming script of the programming image. The “Use Barcode File” selection is enabled, and the exact file specified, in the FX Exclusive Settings section of this window.

User Options Commands

Some ARM devices have areas of flash memory dedicated to programming user configuration data. As some writes to such areas can be sensitive or permanent, it is important that the developer is able to write these options correctly the first time and avoid mis-programming adjacent options that they wish to leave untouched. For more info see the blog article Programming MCU Fuses, OTP, and Option Bytes

     Figure: Program User Options (PU Command) - Select User Options File (Older ICU Shown)

UserOptions

Create/Modify User Options File

When the Create/Modify User Options File (CU) command is selected a new window will open, in which the names of existing user area(s) and included options are displayed. For each user option, the developer will have the ability to either "Write [a new] Value" or "Leave [the option] Unmodified." New values must be written in hexadecimal format.

The user may also import and modify an existing User Options file by clicking the Import from File button at the bottom of the dialog.

     Figure: Create User Options File Window

CreateModUserOptions

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.

Specify User Options File

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

Program User Options

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

Power And Communications Tab

Additional settings related to target power, communications, signal settings, trim, and others are available on this tab.

Figure: Power And Communications Tab

PowerCommunicationsFull

Communication Settings

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

Target Power and Voltage Settings

These are located in the Settings tab. A user may elect to use Cyclone to supply power to the target. In this case, the Target Voltage specifies the target MCU I/O voltage level.

The user needs to take into account the power discharge time for the Power Down delay. The reset driver delays, power stabilization time, and the target clock stabilization time should be considered for the Power Up delay.

A checkbox is available for a user to instruct the Cyclone to turn off target power after programming operations. If unchecked, the target power will remain on.

Note

When the "Use Cyclone relays to provide power to target" box is checked, the additional settings in the General area below will become available, as shown in the Figure below. Otherwise that area will remain blank.

Figure: Checkbox Enables General Settings

There are separate areas for Single Channel and MultiChannel settings:

Single Channel Settings

A checkbox allows the user to use the Cyclone's relays to provide power to the target. The Cyclone's jumper settings determine the voltage.

MultiChannel Settings

Checkboxes allow the user to choose to provide power to either the MCU Vcc pin or to the Vsys pin. Each has options that also allow the user to select the voltage from the available options.

The user has the option to provide Reset Delay if certain reset monitoring devices are used. The Cyclone will delay for the specified time after allowing the target out of reset.

Reset Signal Settings

Allows the user to specify delay after reset, and choose to drive the RESET signal low before and after programming operations.

ARM Device Settings

There are some special considerations when working with ARM devices, in terms of selections that may be required in the Cyclone Image Creation Utility.

SWD Mode

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

Figure: Communications Mode Selection

port A settings

High-Performance Communications

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

Figure: High-Performance Options

port A high-Speed

Exclusive Settings

Certain Cyclones can launch programming via a barcode scanner. This area is where the user must specify if they would like to do so for this programming image. A corresponding Barcode File must also be selected.

Trim Control

Allows the user to specify a custom trim reference frequency.

Build Description

The Cyclone Image Creation Utility allows the user to name their build in the Build Description box. The build description will be used to populate the Image Description box in the Image Deployment Manager if the user chooses Build & Deploy.

Figure: Build Description Box

BuildDescription

Image Settings Tab

The Image Settings tab includes several settings that the user may apply to their image if they are applicable.

Figure: Image Settings Tab

ImageSettingsTab

No Serial Number Modification via LCD

The image prevents the modification of a serial number on the Cyclone display. This option is only available when a serial number file is selected in the programming sequence.

Disable Read Dynamic Data

The image disables the ability to read target memory dynamically using the Cyclone Control SDK.

Clear Success Status After (ms)

Turns off the Cyclone’s “Success” LED after the specified time upon completion of programming operations.

Erase module if fatal error occurs during programming or verification

In the event of an error during programming operations, the Cyclone tries to erase what has already been programmed onto the target device before the error occurred.

Allow Overlay Data

This option allows user-specified overlay data to be programmed to the target. If this option is not selected, then a user cannot specify overlay data.

Allow Overlay Data to Overwrite Image Data

This option allows the user to specify overlay data to overwrite data that overlaps their object data in the image. For example, the user’s base image might contain a default IP address somewhere in memory that could be overwritten using overlay data on a board-by-board basis. Disabling this option can be useful for preventing the user from overwriting data in the image,

Create a SAPOBJ

Instead of deploying an Image, the user has an option to check the “Build to SAPOBJ Only (future Deployment)” checkbox before clicking Build. This will create a SAPOBJ from the build rather than immediately launching the Image Deployment Manager form.

Figure: Create SAPOBJ

SAPOBJ

Nothing prevents the user from simply continuing on to deployment after saving a SAPOBJ for archival purposes.

Build And Deploy an Image

This launches the Image Deployment Manager form where the user may configure additional settings, some optional and some (specifically for cloud-connected images) required, before deployment.

Figure: Build & Deploy an Image

ICU Build and Deploy

Image Deployment Manager

Here is the layout of the Image Deployment Manager when deploying a programming image:

Figure: Image Deployment Manager Form

imageDeploymentBlank

Image Binary - Description and Deployment Details

Image Description

The user must name their programming image; it can be useful to summarize the purpose of their current configuration for future reference by adding text to the Image Description box. By default this box will be populated by the text from the Build Description field on the initial screen of the Image Creation Utility.

The image description will appear on the Cyclone’s touchscreen LCD for image identification. This field will not affect the Cyclone’s operations with the target.

Tip: If your image will be encrypted, it can be helpful to indicate this as part of the Image Description, e.g. by including part of the ImageKey name.

Figure: Image Description Box

ImgDescBox

Deployment Locations

Beneath this are three locations to which the image can be deployed. These are:

  1. To a Cyclone that can communicate with the user’s PC. If the user's Cyclone supports cloud-connected programming, the user may choose to cloud-connect this image by also selecting “Link Image to a PEcloud Virtual Factory” under Optional Image Cloud-Connectivity. If that checkbox is selected, in addition to the image being deployed to a Cyclone, the image will also be tracked by the user’s PEcloud account, which enables several useful features.
  2. To a local hard drive, for later deployment to Cyclone or as a backup.
  3. To a Virtual Factory in the user’s PEcloud account, if the user's Cyclone supports cloud-connected programming. The entire image is uploaded to PEcloud and can then be delivered securely to any authorized Cyclone, anywhere with an internet connection. This deployment option requires the user to first select “Link Image to a PEcloud Virtual Factory” under Optional Image Cloud-Connectivity.

Options 1 and 2 may be selected simultaneously if desired. Selecting Option 3 excludes the other options.

Figure: Location Options for Deployed Images

workflow Graphic new 2 of 3

Image Encryption and Usage Restrictions

Encryption (ProCryption Security)

In this area the user can encrypt their programming image by using the dropdown box to select an existing ImageKey file or create a new one. If the image will not be encrypted the user must select No Image Encryption.

How To Use An ImageKey To Encrypt An Image

Users with access to ProCryption Security features (automatically included for cloud-connected images) can create unique ImageKeys that can be used to encrypt their programming images. Images encrypted in this way can only be loaded onto a Cyclone that has been provisioned with the identical ImageKey.

Note

Both the Cyclone and the ImageKey are needed to decrypt the image. If the ImageKey is later removed from the Cyclone, the encrypted image cannot be decrypted for programming. Likewise, the encrypted image cannot be read on a PC.

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

Users can also read PEmicro’s blog posts for detailed discussions and walkthroughs:

Creating an ImageKey

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

Figure: Encryption Key Creation/Selection

encryption

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

Figure: Create ImageKey

CreateImageKey

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

Figure: Save Image Encryption Key To File Dialog

SaveImageKey

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.

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 programming image, the corresponding change may easily be selected using the drop-down box.

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 programming images have been encrypted with each ImageKey, as the current software does not track this information.

Encrypting An Image

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

Figure: ImageKey Selection

ENCRYPTION2

The image will automatically be generated as encrypted with the selected ImageKey. An encrypted image 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 Provisioning a Cyclone with an ImageKey.

Note

Although image encryption is optional, encryption is required to deploy an image to the cloud - but not to save an image to Disk, which allows the user to distribute the image and/or load it locally onto Cyclones.

Usage Restrictions

Beneath that selection box, the user can check boxes to specify limitations on the programming activity of the image, in the following categories:

  • Maximum Programming Attempts
  • Maximum Programming Successes
  • Limit Image Usage between dates (inclusive)*

Be Aware

* Date restriction is not available for Cyclone MultiChannel programming

There are any number of reasons why the user may want to place restrictions on the use of specific programming images on a Cyclone programmer: from added ease when managing production to a desire to protect intellectual property.

Figure: Encryption and Image Restrictions (Image Deployment Selected)

restrictions

Users can fill in these settings to limit programming of the image based on the attributes listed, including date range.

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 it is removed and re-added to a Cyclone, the associated 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 they are otherwise exactly the same. In this way, the user can regenerate to allow a new batch of targets to be programmed.

Note: The user may set more than one type of restriction on programming. 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:

Limit Image Usage Between Dates

Be Aware

Date restriction is not available for Cyclone MultiChannel programming

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

Note

For any date restrictions applied to an image, the time for the Start date is considered to be 00:00:00 UTC of the Start date, and the time for the End date is considered to be 23:59:59 UTC of the End date.

Maximum Number of Successes Allowed

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

Maximum Programming Attempts

When “Maximum Programming Attempts” is checked and a number is specified in the corresponding box (minimum = 1), the Cyclone operator will only be able to execute a number of either successful or failed programming operations of this programming image less than or equal to the number specified.

Image Restriction Statistics

Statistics related to any specified restrictions for the currently selected programming Image may be viewed by navigating in the touchscreen menu to Current Image Operations - Show Current Image Stats.

In addition, the statistics for Number of Programs & Maximum Allowed can be set to display on the home screen by navigating in the touchscreen menu to Configure Cyclone Settings -> Configure Screen -> Configure Home Screen.

Optional Image Cloud-Connectivity

If the user checks the box “Link Image to a PEcloud Virtual Factory...” their image will be cloud-connected. This selection is compatible with all of the Image Binary options in Image Binary - Description and Deployment Details, and it must be chosen first in order to activate Image Binary option 3, which deploys the entire image to a Virtual Factory in PEcloud. For more information about cloud-connected images, refer to Cloud-Connected Images .

Figure: Optional Image/Cloud-Connectivity

cloudConnected

PEcloud Virtual Factory Selection

Here, users with a PEcloud account may specify their credentials (which can be obtained from the user’s PEcloud account menu under "Download API Credentials"), or create a new PEcloud account.

Selecting valid credentials allows the user to choose a Virtual Factory from among those in their account. There is a refresh button to the right to sync the listing of Virtual Factories with the cloud if necessary.

Image Deployment Settings

This section in the lower left corner is a place to quickly review all of the image deployment settings at a glance. This is a good way for the user to double-check their settings before proceeding.

Figure: Image Deployment Settings

settings

Deploy Button

The button in the lower right is used to launch deployment. It will read “Select Deployment Location” in greyed out text until a deployment option is chosen. Once an option is chosen the button text will vary slightly according to the specific selection.

Figure: Deploy Button

deployButton

Confirm Parameters

The user may check the box labeled “Confirm Parameters...” in order to display the CSAP parameters before image creation/deployment. This is the command-line that will launch the utility’s internal compiler. The user will be presented with a dialog such as the following before proceeding:

Figure: Confirm Parameters

confirmParams

This is intended to allow the user to easily copy the CSAP command line if they wish to create a script outside of the Image Creation Utility which could, for example, automate creation of a series of images using different S19 files.

Logging Tab

If the user has chosen to deploy a cloud-connected image, the Logging Tab allows them to choose whether to log programming data in the cloud, as well as whether to log data from a specific address either before or after programming.

Figure: Logging Tab

logging

Renesas ID Code Protection

Renesas RA and Synergy devices offer several means of security, one of which is ID Code protection. After the MCU starts up in boot mode, ID authentication is performed when a host such as a PC is connected, in order to prevent unauthorized access. PEmicro tools allow users to take advantage of ID Code protection within the OCD/Serial Programmer ID Setting Register (OSIS) of supported Renesas ARM processors.

The idea behind ID Code protection is for the user to write four 32-bit words into the OSIS register with ID code bits [127] and [126] indicating the level of security issued. This can be accomplished using algorithm-specific programming commands in the Cyclone Image Creation Utility. PEmicro also provides a python script that allows users to unlock their device through a successful ID Code match.

There is a blog article that users may visit for details about the procedures involving algorithm-specific commands and the python script.

Barcode Feature

This area corresponds to a hardware feature that is exclusive to certain Cyclone models, and as such cannot be licensed by other Cyclone programmers.

Use Barcode File (Requires Cyclone with Active USB Expansion Port)

Some Cyclone programmers can be configured to use a barcode scanner (connected to the expansion port) as part of the programming process. During setup the user will create a Barcode Test file using the provided Barcode Test Generator utility.

Here, the user should then check the Use Barcode File checkbox if they wish to allow a barcode reader attached to the Cyclone to be able to select and program the generated image based upon the barcode. The barcode utility is used to create the barcode file which specifies the criterion for a barcode to select the image.

Figure: Use Barcode File

Barcode

The user can then Browse to the file they wish to select. This is required when using the barcode scanner as part of the programming process.

Save Cyclone Configuration

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

Load Cyclone Configuration

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

Managing Multiple Programming Images

The Cyclone Control GUI, shown below in Figure: Manage Images Utility, allows the Cyclone to store and manage multiple images in the Cyclone’s internal memory and, for the Cyclone FX only (or legacy Cyclone LC with license), on any compatible memory card that is loaded into the SDHC port.

Any programming images that have been created and saved to the disk using the Cyclone Image Creation Utility may be loaded collectively onto the Cyclone, with one exception. Encrypted images may only be loaded if their ImageKey resides on the Cyclone.

Figure: Manage Images Utility - Cyclone Image #2 Missing Key

GUI2023keyMissing

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 contains a formatted memory card, the user can also add images to the external memory by using the drop-down next to the "Add Image Internal" button and selecting "External". Alternatively, once an image has been added to the proposed changes and it is in the "Ready to Store" state, the user may right click on the image and click the "Switch storage to External" option.

In Figure: Manage Images Utility, note that the Encryption area displays “Encrypted” or “None” to indicate whether or not each programming image 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 programming Images and the significance of the ImageKey, please refer to Encryption (ProCryption Security). For an overview of Cyclone image encryption and the use of encrypted images in the production process, please see Programming Image Encryption.

Delete Images From Internal/External Memory

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

Add/Remove Images From The Commit Changes Panels

Once the images that you wish to load appear in the images tab, you must press “Apply Changes” to update the Cyclone accordingly. No actual updates will occur to the Cyclone’s internal/external memory or installed SD card until the user selects “Apply Changes".

Note

Any programming images that are already stored on older Cyclone models such as the Cyclone PRO, MAX, Renesas, STMicro, or Cyclone LC ARM - Rev. A/B (or on a CompactFlash card in one of those units, if applicable) cannot be removed individually and can only be erased by removing all images.

Launching Additional Tools From the ICU

The ICU features a set of buttons in the upper right corner that allows the user to quickly launch, from left to right:

  • Learning Center
  • Blog
  • Control GUI
  • Control Console
  • Serialize Tool
  • Barcode Utility
  • Cyclone User Manuals
  • Image Deployment Manager
  • PEcloud Website.

Figure: Buttons For Launching Additional Tools

LaunchAdditionalToolsICU