2.118 TrustRAM (TRAM)

The TrustRAM (TRAM) is the controller interface for a 256-byte security RAM. This RAM is intended for volatile secret data.

The TRAM is capable of performing address map scrambling as well as data scrambling for both write and read access to the security RAM. The TRAM can perform silent access of the data stream to improve side-channel attacks resistance.

The TRAM can execute two automated tasks that are triggered by external events

  • Remanence prevention and erase.

    • When a remanence periodic event occurs, the physical data stored in the RAM is inverted in order to prevent physical “burn-in” signatures.

  • Tamper Event

    • When a tamper event occurs, the TRAM executes a full erase of the control signals as well as the data in the security RAM.

Both automated tasks do not require CPU interaction and can be performed in all sleep modes.

Using The Library

TRAM Peripheral library allows user to configure the following options of the TRAM peripheral which are part of the initialization routine in MCC

  • Enable silent access

  • Enable data remanence prevention

  • Enable data erasure on tamper detection

The example code below demonstrates how to Write and read Data from TRAM.

int main( void )
{
    uint32_t rData = 0;
    uint32_t wData = 0;

    /* Initialize all modules */
    SYS_Initialize ( NULL );

    for(uint8_t i = 0; i < 10; i++)
    {
        wData = ~(1 << i);

        TRAM_RAMSet(i, wData);

        TRAM_RAMGet(i, &rData);

        if(rData != wData)
        {
            printf("\n\rTRAM register RAM[%d] value mismatch", i);
            break;
        }
    }
}

Library Interface

TrustRAM peripheral library provides the following interfaces:

Functions

NameDescription
TRAM_InitializeInitializes the TrustRam
TRAM_DataScrambleEnableEnable or Disable data scrambling of the TrustRAM
TRAM_DataScrambleKeySetSets the key for data scrambling of the TrustRAM
TRAM_RAMGetReads data from the TrustRAM RAMx register
TRAM_RAMSetWrite data into the TrustRAM RAMx register
Note: Not all APIs maybe implemented. See the specific device family section for available APIs.