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. 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 can be done 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. Programming of the static and overlay data happens together so that devices which have ECC only have flash locations programmed a single time. Careful planning is required because it is possible for the Overlay Data to overlap areas already specified by the user in memory, and no error will be given. Almost always the user will leave gaps in the Image/Job Data to allow room for the Overlay Data. 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 for free here.
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