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 overlay the provided data on top of the static data in the Programming Image. Static and overlay data are combined before programming so that devices which have ECC only have flash locations programmed a single time. Most commonly, overlay data is programmed into memory space not programmed by the static data in an image. Overlay data can be placed on top of static data in the image, replacing it before programming, but only if the "Allow Overlay Data" setting is enabled when the image is created, in the Image Settings tab of the Cyclone Image Creation Utility. Furthermore, the default is that overlaying this data on top of static image data is *not* allowed and will generate an error. There is a setting that does allow overlaying on top of existing data; this must be specified in the same area of the utility when the image is generated : 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. However, the default setting leaves this option unchecked, to prevent the image data being overwritten. This is because, as mentioned above, a more common scenario is that gaps, or unprogrammed regions, are left in the Image/Job Data where dynamic data is to be programmed : Figure 1: User Provides Gaps in Object File (.s19/.bin/.elf/etc.) for Overlay Data 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