Dongles feature two types of memory: Random Access Memory (RAM) and Read-Only Memory (Flash).

Random Access Memory (RAM) is used for storing variables, stack, in-put-output buffers. Part of RAM is used by the system microprogram (System RAM), and the rest – by loadable code (20 Kb).

The memory used for storing the executable code and its constants will be further called Flash memory. A part of Flash-memory is occupied by the system microprogram (System Flash), and the rest is suited for the loadable code (128 Kb or 352 Kb depending on the dongle modification).

In the previous models of Guardant dongles the nonvolatile memory for storing the key information of the protected application was made in a form of chip (EEPROM – Electrically Erasable Programmable Read-Only Memory). Therefore, in order to keep the succession and compatibility EEPROM is emulated in the Guardant Code controller’s Flash-memory. In it (just like in regular Guardant dongles) system data fields, protected item and hardware algorithm descriptors are stored. In order to keep it clear and simple this emulated memory will be further referred to as EEPROM.

EEPROM organization

Dongles with loadable code have EEPROM of 4096 bytes. The organization of this memory is identical to EEPROM of Guardant Sign/Time/Sign Net/Time Net dongles and is described in detail in chapter 10.

Flash-memory and RAM

While working with RAM and Flash memory for storing loadable code we use different addressing based on the dongle’s controller memory than in the case with EEPROM.

Memory available for the loadable code looks as follows:

AddressesPurpose
00020000h-0003FFFFhFlash-memory for placing the loadable code, pages 1-4 (for 128 Kb Flash-memory version)
00040000h-00077FFFhFlash-memory for placing the loadable code, pages 5-11 (for 352 Kb Flash-memory version)
40003000h-40007FDFhRAM available to the loadable code. Used for storing stack, input-output buffer, loadable code variables

Flash memory is divided into pages of 32 Kb each. And such page needs to be fully occupied. Because of such memory organization of Guardant Code there may be from 1 to 4 (or up to 11, depending on the available Flash memory size) separate segments of loadable code.

As a rule, there is no necessity for several independent segments of loadable code, and therefore in most of the cases of placing loadable code all available Flash-memory is reserved.

  • No labels