Skip to main content
RSala.1
Associate
May 12, 2023
Question

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

  • May 12, 2023
  • 1 reply
  • 947 views

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

This topic has been closed for replies.

1 reply

ST Technical Moderator
May 24, 2023

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 "Best answer" on the reply which solved your issue or answered your question.Best regards,FBL