Hi Andrej,

 

The  BOOT_TFM_SHARED_DATA and the MSP_STACK area are overlapping on purpose. The partitions which are expecting to receive data from bootloader is intended to get their own data during the partition init phase with calling tfm_core_get_boot_data() with the partition’s major_type. Then the data will be copied from shared area to partition’s memory.

 

So after all partition’s init is executed then the data from the shared buffer is distributed to the owning partitions and resides in their memory. At this point the shared_data area can be overwritten by growing MSP, without destroying shared data.

 

Originally there was an S_MSP_STACK_SIZE_INIT  size which was used to setup the MSP_LIMIT for the init phase to avoid overwriting the shared data area. After the init phase the MSP_LIMIT was set again with its full size S_MSP_STACK_SIZE.

 

I do not know whether the this two phase setting of MSP_LIMIT is still in use or not. If not the no need for S_MSP_STACK_SIZE_INIT.

 

  +->       +->    +--------------+ <- Shared boot data base, S_MSP_STACK_SIZE

  |   Shared|      |              |

M |    Data |      |              |

S |         |      |              |

P |         +->    +--------------+ <- S_MSP_STACK_SIZE_INIT

  |                |              |

  |                |              |

  |                |              |

  +->              +--------------+ <- Top of MSP

 

 

Tamas

 

From: TF-M <tf-m-bounces@lists.trustedfirmware.org> On Behalf Of Andrej Butok via TF-M
Sent: 16 June 2020 09:52
To: tf-m@lists.trustedfirmware.org
Subject: [TF-M] S_MSP_STACK_SIZE_INIT vs S_MSP_STACK_SIZE

 

Hello,

 

What is a difference between S_MSP_STACK_SIZE_INIT and S_MSP_STACK_SIZE defined in partition\region_defs.h:

#define S_MSP_STACK_SIZE_INIT   (0x0000400)

#define S_MSP_STACK_SIZE        (0x0000800)

 

S_MSP_STACK_SIZE_INIT is used only for gcc.

S_MSP_STACK_SIZE is used for armclang and iar.

 

Guess, it should be used only one definition. So in our platform code we are going to use only S_MSP_STACK_SIZE.  

Should you fix it for all platforms in the original TFM?

 

Thanks,

 

Andrej Butok

SW Tech Lead

Security & Connectivity, Microcontrollers

NXP Semiconductors