Cyclone production programming images are comprehensive archives containing all the essential information required to program a set of data into a target device. This information encompasses application binaries, programming algorithms, configuration settings, serialization specifics, programming instructions, and more. These archives are encrypted and designed to resist corruption. Utilizing these programming images offers an efficient and dependable method for programming a substantial amount of identical data into multiple target devices. Interested users can view a closer look at programming images. However, there are scenarios where, in addition to the static data within the programming image, there's a need to program unique data specific to each individual target. PEmicro refers to target-specific data in general as "Dynamic Data". There is a type of Dynamic Data, called "Overlay Data", that the user can provide when programming is launched which is uniquely programmed into each target. In such cases, the user initiates the programming process on a Cyclone (or a set of Cyclones) through the Cyclone Control Console or Cyclone Control SDK. As part of this launch command, dynamic data for each target is provided, enabling the programming of targets with a combination of the static image data and the overlay data. In this blog post, we will demonstrate how to effectively use Overlay Data in the programming process for both the Console and SDK. Overlay Data Overlay Data here refers to the concept of overlaying one set of data on top of another before programming. This enables the user to add dynamic data as part of the programming process. The overlay data can be provided programmatically using the Cyclone Control SDK, or on the command line using the Cyclone Control Console. Examples are provided for each below. The data itself can be in either hexadecimal format or string format; there are separate commands for each in both the Control SDK and the Control Console. When using an overlay function, the function passes the dynamic data that the user wants to program to a specific Cyclone handle (identifier). Prior to programming, that dynamic data will be overlaid on top of the static data in the user’s Programming Image. The user needs to provide: The Cyclone, as part of the launch process, will combine the provided overlay data with the programming image's static data for the next programming launch. Static and overlay data are combined before programming so that devices which have ECC only have flash locations programmed a single time. Overlay data does not affect the stored programming image itself and is discarded after launch regardless of success/failure programming. Overlay data can be added to the image static data at execution time only if allowed by the security settings stored in the programming image. To allow overlay data, make sure the "Allow Overlay Data" setting is enabled (default is allowed) when the image is created. This setting is found on the Image Settings tab of the Cyclone Image Creation Utility. The scenario where overlay data is programmed into memory space not programmed by the static data in an image is the more common overlay scenario. However, there is an image setting which can optionally allow static data in the image to be overridden with overlay data provided at the same addresses as data in the image. The setting "Allow Overlay Data to Overwrite Image" (default is not allowed) controls whether overlaying on top of image data at the same address is allowed. This doesn't affect this image itself and simply allows a temporary override of data to be programmed at certain addresses. This data is discarded after every program (so to continually override data in an image it must be provided each launch). A user might want to enable "Allow Overlay Data to Overwrite Image" if, for example, their base image contains a default IP address somewhere in memory that could be overwritten on a board-by-board basis. Below are examples for how the basic overlay commands are used in both the SDK and the Console. Please refer to the appropriate Cyclone User Manual for more granular information about overlay data command functions and parameters. NOTE: One distinction of which to be aware between the SDK and Console is that when the SDK specifies overlay data for a specific Cyclone, that overlay data will continue to be used for each program launch until cleared by the clearOverlayProgramData(...) call, or until the connection to the Cyclone is closed. The Console, on the other hand, will always clear the overlay data upon exit of the application. Cyclone Control SDK: bool specifyOverlayProgramData(uint32_t cycloneHandle, uint32_t targetAddress, uint32_t dataLength, char* buffer); Cyclone Control Console Example: Here is the equivalent if the console is used to provide data at launch time: Cyclone Control Suite and Licensing The CycloneControlConsole and CycloneControlSDK Library are provided free of charge as part of the Cyclone installation software; click for direct download.


The function has to be called prior to startImageExecution. The first parameter is the handle of the Cyclone. The second parameter is the address where the overlaying of the data starts. The third parameter is an array of bytes holding the data in hex.data = [80,69,77,73,67,82,79]
specifyOverlayProgramData(1, 1080, data) // Specify overlay data to be used when launching image
startImageExecution(1,1) // Provide the overlay data to the Cyclone and Launch Programming
clearOverlayProgramData(1) // Clear overlay program data
CycloneControlConsole.exe –cyclone=USB1 -specifyOverlayData=1,1080,80,69,77,73,67,82,79 -launchimage=1