This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

CC2745R10-Q1: Relationship between ITS area and KeyStore Flash Size

Part Number: CC2745R10-Q1
Other Parts Discussed in Thread: SYSCONFIG

Tool/software:

Hi,

What is the base address of the ITS area?

Also, in SDK9.10, will the size specified in the KeyStore Flash Size of the "PSA Crypto + KeyStore" module be secured within the ITS area?

For example, in the following, will 8kb be allocated within the ITS area?

  • Hello,

    What is the ITS area? I haven't heard of this acronym before. 

    the PSA KeyStore is stored in an area of flash above the HSM firmware (which is at address 0xE8000).

    Best,

    Nima Behmanesh

  • Hello,

    The ITS region is specified in the following source code:

    C:\ti\simplelink_lowpower_f3_sdk_9_10_00_83\source\third_party\hsmddk\include\Integration\Adapter_ITS\incl\build_dependencies
    flash_layout.h

    In the document, only the name appears, and no details are given.

    If we know FLASH_ITS_SIZE, we can find the base address of the ITS, but how much size is reserved?

  • Hello,

    I apologize for the delay here. You can check the ti_drivers_config.c file that is generated via sysconfig:

    #include <third_party/hsmddk/include/Integration/Adapter_PSA/incl/adapter_psa_key_management.h>
    #include <ti/devices/DeviceFamily.h>
    #include DeviceFamily_constructPath(inc/hw_memmap.h)
    #include DeviceFamily_constructPath(inc/hw_device.h)
    
    uint8_t volatileAllocBuffer[KEYSTORE_VOLATILE_MEMORY_POOL_SIZE];
    const size_t volatileAllocBufferSizeBytes  = KEYSTORE_VOLATILE_MEMORY_POOL_SIZE;
    
    const size_t MBEDTLS_KEY_VOLATILE_COUNT    = KEYSTORE_VOLATILE_SLOT_COUNT;
    const size_t MBEDTLS_KEY_ASSET_STORE_COUNT = KEYSTORE_ASSET_STORE_SLOT_COUNT;
    /* For cache slots */
    const size_t MBEDTLS_KEY_PERSISTENT_COUNT  = KEYSTORE_PERSISTENT_SLOT_COUNT;
    /* For Key Store flash space */
    const size_t FLASH_KEY_PERSISTENT_COUNT    = KEYSTORE_PERSISTENT_NUM_KEYS;
    /* ITS flash area size */
    const size_t FLASH_ITS_SIZE                = KEYSTORE_FLASH_SIZE;
    
    
    psa_key_context_t gl_PSA_Key[KEYSTORE_TOTAL_SLOT_COUNT];
    
    #if ((KEYSTORE_FLASH_OFFSET + KEYSTORE_FLASH_SIZE) > FLASH_MAIN_SW_SIZE)
        #error "The configured KeyStore flash region goes beyond the accessible flash addresses on the device."
    #elif (KEYSTORE_FLASH_OFFSET < FLASH_MAIN_BASE)
        #error "The configured KeyStore flash region begins before the start of accessible flash on the device."
    #endif
    
    
    /* ITS flash area address, with 'Pointer' region type */
    const void *FLASH_ITS_ADDRESS = (void *) 0xe6000;

    We can see that the value of FLASH_ITS_SIZE is set to KEYSTORE_FLASH_SIZE which would be the amount indicated in sysconfig:

    Hope that helps!

    Best,

    Nima Behmanesh