Amadis

Memory Foot Print

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)

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
NOTE: Ensure SIZE_FOR_PAYPASS_TORN is set to 2048

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 _AGNOSTRACE_ is disabled

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)
NOTE: Heap have decreased significantly once Torn Support have been deprecated

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

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