cancel
Showing results for 
Search instead for 
Did you mean: 

I am using an STM32H747 - (in an Arduino Portenta) - share data between cores in SDRAM

RSala.1
Associate

The SDRAM is 8MB, and starts at 0x60000000

I would like o share the first 1MB between the M4 and the M7 cores

void MPU_Config() {
  MPU_Region_InitTypeDef MPU_InitStruct;
 
  /* Disable the MPU */
  HAL_MPU_Disable();
 
  // Initialize SDRAM Start as shareable
  MPU_InitStruct.Enable = MPU_REGION_ENABLE;
  MPU_InitStruct.BaseAddress = 0x60000000;
  MPU_InitStruct.Size = MPU_REGION_SIZE_1MB;
  //MPU_InitStruct.SubRegionDisable = 0x00;
  //MPU_InitStruct.TypeExtField = MPU_TEX_LEVEL0;
  MPU_InitStruct.AccessPermission = MPU_REGION_FULL_ACCESS;
  MPU_InitStruct.DisableExec = MPU_INSTRUCTION_ACCESS_DISABLE;
  MPU_InitStruct.IsShareable = MPU_ACCESS_SHAREABLE;
  MPU_InitStruct.IsCacheable = MPU_ACCESS_NOT_CACHEABLE;
  MPU_InitStruct.IsBufferable = MPU_ACCESS_NOT_BUFFERABLE;
 
 
  HAL_MPU_ConfigRegion(&MPU_InitStruct);
 
  /* Enable the MPU */
  HAL_MPU_Enable(MPU_PRIVILEGED_DEFAULT);
}

I would like to know if the code above is the correct way to set up the shareable region.

Thanks for any help

1 REPLY 1
FBL
ST Employee

Hello @RSala.1​ 

Could you explain why you disable the configuration of TEX field level.  This parameter can be The TEX, C and B bits are used to define cache properties for the region, and to some extent, its shareability. They are encoded as per the following table as referenced in AN4838.


_legacyfs_online_stmicro_images_0693W00000bkmhmQAA.png

To give better visibility on the answered topics, please click on Accept as Solution on the reply which solved your issue or answered your question.