Project Description
In our latest articles about FlashRunner Technology, we delved into some of its key features, including communication interfaces and management.
This technical article focuses on two fundamental core elements for flashing ISP targets with the FlashRunner programming system.
Keep reading to explore more about licenses and flashing algorithms.
FlashRunner’s flashing resources: Licenses
Licenses are a software feature bounded to FlashRunner serial numbers that enables the flashing of the devices identified in the license. The interaction between FlashRunner OS and the licenses allow to perform flashing operations on the devices inserted in the licenses.
Two types of licensing exist based on the customer’s needs:
1) Normal license
2) Shared license
The former is typically used and serve the purpose to upgrade the portfolio of devices that could be flashed by the selected FlashRunner.
The latter is not much used, but serve the purpose to use a single license to be installed in multiple FlashRunners which will flash the same ISP targets. A typical field of application is when customers are manufacturing the same boards mounting the same microcontrollers on different production lines using different FlashRunners: in this case it is not needed to have multiple equal licenses for every FlashRunner, but it is possible to install one license on all of those FlashRunners.
Furthermore, it is also possible to have different packs of licenses:
1) Family licenses
2) Manufacturer licenses
3) Flashing algorithm licenses
These special packs offer even more flexibility to this programming system, allowing customers to have access to a whole family of ISP targets supported by FlashRunners they will use in their production lines, or to a whole portfolio of devices supported by FlashRunner coming out from a single Silicon Producer or to a whole list of devices supported by FlashRunner belonging to the same flashing algorithm that the programming system uses to flash them.
This is how FlashRunner is handling the licensing to allow its customers to flash their microcontrollers.
FlashRunner’s flashing resources: Flashing Algorithms
A flashing algorithm is an embedded software whose functionality is to execute flashing commands on the ISP targets. Its interaction with the OS allows customers to flash their microcontrollers.
The communication protocol is implemented inside the flashing algorithm as well (for more details about ISP communication protocols, check this article).
The flashing algorithms are mostly named after the family of devices supported in it.
Knowing that FlashRunner programming system is supporting more than 15.000 devices, it can be understood that there is a catalogue of many different customized flashing algorithms created for each device family.
The programming language used is C, one of the most performant languages in terms of speed for low level embedded applications. Last, but not least, they are created following the silicon producer flashing specifications.
Commands available in a flashing algorithm can be distinguished into two big cateogories:
1) Standard commands
2) Additional commands
In the ISP field, standard commands are commonly called: erase/chiperase/masserase, blankcheck, program, verify.
As their name explains, these features purely aim to interact with the non-volatile memories of the ISP targets respectively to erase data, verify that data are erased, write data and verify that data are correct.
Additional features are instead implemented under customers conditions to execute customized operations on the particular ISP targets used.
Every microcontroller is different and needs its attentions. The difficulties while supporting a device are both in the algorithm whose task is to handle the non-volatile memories and both in implementing the additional features that a production line could require on that particular ISP target beyond the simple process of flashing its non-volatile memories.
In this way, FlashRunner programming system aims to fulfill all the requirements of a production line in the particular step of the flashing process.
Licenses and flashing algorithms are just two core elements. In the next technical article, we will delve into FlashRunner binaries (FRBs) and the project.