The information provided below is independent from any tool chain and any platform. It's about static memory allocation required to support Agnos Framework (there is no dynamic allocation as per coding pattern). Hence, it presents RAM consummation benchmark established from the following system parameters (see Appendixes):
MAX_SUPPORTED_AID = 30 (datamngr.h)
MAX_KERNEL = 25 (datamngr.h)
MAX_AID = 15 (datamngr.h)
MAX_COMBINATION_PER_TRANSACTION_TYPE = 65 (datamngr.h)
MAX_SIMULTANEOUS_SESSION = 65 (datamngr.h)
MAX_DRL_SET = 4 (datamngr.h)
ONLINE_BUFFER_SIZE = 4096 (datamngr.h)
MAX_SUPPORTED_ADF = 22 (agnostypes.h)
AGNOSK compilation symbol = DEFINED (Agnos library)
AGNOSCL compilation symbol = DEFINED (Agnos library)
AGNOSISR compilation symbol = DEFINED (Agnos library)
AGNOSCPL compilation symbol = DEFINED (Agnos library)
AGNOSFMSG compilation symbol = DEFINED (Agnos library)
SIZE_FOR_EMV_TAGS = 11500 (sharedram.c)
to store all tags for a single transaction
SIZE_FOR_EMV_UNKNOWNTAGS = 2500 (sharedram.c)
to store all unknowns tags for a single transaction
FREE_SIZE_RAM = 4096 (sharedram.c)
L3 implementation + house keeping in C2 (minimum = 3000). Maybe increased depending on L3 needs
SIZE_FOR_PAYPASS_TORN = 2048 (sharedram.c)
Torn is no longer supported by Mastercard (Torn support is still required for CUP, Discover, UPI and RuPay Kernels)
SIZE_FOR_CL_DATA_OBJECT = 17100 (sharedram.c)
set 1 if Contactless Interface is not supported
MAX_CHARACTER_PER_LINE(
MAX_CHARACTERS
) = 16 (display.h)MAX_NB_LANGUAGE = 3 (display.h)
MAX_STRING_LENGTH = 60 (display.h)
NB_EMV_STRINGS = 34 (display.h)
NB_ACQUIRER_STRINGS = 26 (display.h)
MAX_NUMBER_ITEMS = 50 (select.h)
MAX_ITEM_NAME_LENGTH = 100 (select.h)
REPLAY compilation symbol = NOT DEFINED (CAD library)
LOG compilation symbol = NOT DEFINED (Platform library)
TIME_STAMP compilation symbol = NOT DEFINED (Platform library)
NOTE 1: These values are given as a examples and can change versus platform
NOTE 2: The following table uses estimates for the Win32 MinGW Platform with a GCC compiler using Release Optimizations
NOTE 3: RAM column only estimates Heap Memory consumptions
Library | ROM (kB) | RAM (kB) | Comment (Heap Consumption) |
---|---|---|---|
GPI | 26.5 | 40.2 | |
GPI/Platform | 6 | 29.3 | Shared RAM containing all EMV tags and torn transactions |
GPI/CAD | 7.7 | < 1 | n/a |
GPI/HSM | 3.4 | < 1 | NOTE: RAM used byCrypto Libraries are excluded because we recommend using Libraries provided by the Platform |
GPI/SPED | 7.7 | 5.1 | String tables and Selection List (contact only) |
GPI/Log | 1.7 | 5 | 0 kB when option |
Core Libraries | 148.8 | 55.2 | |
AgnosDB | 4.5 | 4.5 | Tag Lookup Tables |
Agnos | 97.1 | 8.7 | Transactional context |
AgnosMW | 33.8 | 26.3 | Instanciated data model |
AgnosEP | 13.4 | 15.7 | Working buffers for entry point indicators and kernels services management |
Kernels | 235.7 | 41.1 | |
EMVCo | 7.7 | 8.3 | Contact Application, most Heap used by Candidate List variable |
C-2/MasterCard | 38.3 | 6.7 | Most Heap used by Tag List Management (~3kB) |
C-3/Visa | 14.9 | 4.5 | n/a |
C-4/American Express | 28.8 | 3.2 | n/a |
C-5/JCB | 26.5 | 2,8 | n/a |
C-6/Discover | 25.9 | 2.5 | n/a |
C-7/CUP | 20 | 2 | n/a |
PURE (mada) | 42.7 | 2.5 | n/a |
EFTPOS | 15 | 6.8 | n/a |
Interac Flash | 15.9 | 1.8 | n/a |
Utils | 7.5 | 0 | |
TLV | 4.5 | 0 | |
COM | 3 | 0 | |
Total (Classic Architecture) | 418.5 | 136.5 |
NOTE: Unused Kernels can be substracted from Total
Level 2 Certification Applications:
L2 Application | ROM (kB) | RAM (kB) | Comment |
Classic Architecture | 74.3 | 47.4 | |
ACE | 18 | 4.4 | Working buffers for online communication with ACE |
Kizis | 56.3 | 43 | Payment and Outcome contexts |
NOTE: Level 2 Applications are required during Certifications and must be added to the Total from the previous section. They should be removed during Terminal Integration/Deployment Phases
Memory Consumption Examples
The follwing sample estimates are for the STMicroelectronics STM32 Processor using the IAR Workbench IDE:
Tool Chain Examples | ROM (kB) | RAM (kB) | Comment |
---|---|---|---|
IAR code | 275 kB | 110 kB | all major kernels along with Kizis provided to TA session |
IAR code | 220 kB | 105 kB | C2, C3, C4 along with Kizis provided to TA session |
For example IAR Project on STM32 processor with the following kernels/modules:
[1] = ace2p.a
[2] = agnos.a
[3] = agnosdb.a
[4] = agnosep.a
[5] = agnosmw.a
[6] = c2.a
[7] = c3.a
[8] = c4.a
[9] = c5.a
[10] = c7.a
[11] = com.a
[12] = dpas20.a
[13] = eftpos.a
[14] = emvco.a
[15] = fl.a
→ provides this footprint:
491'597 bytes of read only code memory
304'802 bytes of read only data memory
420'570 bytes of read write data memory