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)
NOTA: These values are given as a examples and can change versus platform
Library | RAM (kB) | Comment |
---|---|---|
GPI/Platform | 21.3 | Shared RAM containing all EMV tags and torn transactions NOTE: Ensure SIZE_FOR_PAYPASS_TORN is set to 2048 |
GPI/CAD | < 1 | n/a |
GPI/HSM | < 1 | n/a |
GPI/SPED | 6.3 | String tables and Selection List (contact only) |
GPI/Log | 5 | 0 kB when option |
AgnosDB | 4.5 | n/a |
Agnos | 8.7 | Transactional context |
AgnosMW | 26.3 | Instanciated data model |
AgnosEP | 21.9 | Working buffers for entry point indicators and kernels services management |
ACE2P | 3.6 | Working buffers for online communication with ACE |
EMVCo | 3.8 | EMVCo context for ADF selection management |
C-1 | n/a | n/a |
C-2/MasterCard | 4.5 | Working buffers for online clean messages management |
C-3/Visa | 1.1 | n/a |
C-4/American Express | 1.5 | n/a |
C-5/JCB | < 1 | n/a |
C-6/Discover | 1.1 | n/a |
C-7/CUP | < 1 | n/a |
PURE | n/a | n/a |
EFTPOS | n/a | n/a |
Interac | n/a | n/a |
TestKernel | < 1 | n/a |
Kizis/DualCertificationLevel3 | 28.5 | Payment and Outcome contexts |
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