STM32
直播中

李泽坚

7年用户 1342经验值
私信 关注
[问答]

在normal memory时,s bit设为shareable或Not shareable所代表的意思是什么?

我在用STM32h743时,在调由cubemx生成的MPU_Config()时
看到有这条
MPU_InitStruct.IsShareable = MPU_ACCESS_SHAREABLE;
我不理解设置shareable属性的功能是什么?
上下文的语句如下:
void MPU_Config(void)
{
  MPU_Region_InitTypeDef MPU_InitStruct = {0};

  /* Disables the MPU */
  HAL_MPU_Disable();
  /** Initializes and configures the Region and the memory to be protected
  */
  MPU_InitStruct.Enable = MPU_REGION_ENABLE;
  MPU_InitStruct.Number = MPU_REGION_NUMBER0;
  MPU_InitStruct.BaseAddress = 0x20020000;
  MPU_InitStruct.Size = MPU_REGION_SIZE_16KB;
  MPU_InitStruct.SubRegionDisable = 0x0;
  MPU_InitStruct.TypeExtField = MPU_TEX_LEVEL0;
  MPU_InitStruct.AccessPermission = MPU_REGION_FULL_ACCESS;
  MPU_InitStruct.DisableExec = MPU_INSTRUCTION_ACCESS_ENABLE;
  MPU_InitStruct.IsShareable = MPU_ACCESS_SHAREABLE;
  MPU_InitStruct.IsCacheable = MPU_ACCESS_CACHEABLE;
  MPU_InitStruct.IsBufferable = MPU_ACCESS_BUFFERABLE;

  HAL_MPU_ConfigRegion( MPU_InitStruct);
  /* Enables the MPU */
  HAL_MPU_Enable(MPU_HFNMI_PRIVDEF);

}

查ARM®v7-M ArchitectureReference Manual
使用mpu和catch 时,看到:


我要问的时,在normal memory 时,s bit 设为shareable 或Not shareable 所代表的意思,是catch对这个region的访问被禁用了吗?还是什么结果?

回帖(1)

康大争

2024-4-3 15:40:09
当s bit设为shareable时,意味着该内存区域可以被多个处理器或核心共享。这意味着多个处理器可以访问该内存区域的数据并进行读写操作。

当s bit设为Not shareable时,意味着该内存区域只能由单个处理器或核心访问。其他处理器或核心无法读取或写入该内存区域的数据。

在你提供的上下文中,MPU_InitStruct.IsShareable = MPU_ACCESS_SHAREABLE;将shareable属性设置为MPU_InitStruct结构体的一个成员。这个结构体用于初始化和配置MPU(内存保护单元)的区域和要保护的内存。通过设置IsShareable为MPU_ACCESS_SHAREABLE,可以将该内存区域设置为可以被多个处理器或核心共享的属性。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分