[STM32F7] MPU(Memory Protection Unit)配置

[复制链接]
 楼主| 感觉很反感mva 发表于 2024-7-30 18:05 | 显示全部楼层 |阅读模式
MPU可能影响访问外部存储器的效率。配置MPU区域时,确保启用内存的缓存和缓冲功能。

c

MPU_Region_InitTypeDef MPU_InitStruct;

MPU_InitStruct.Enable = MPU_REGION_ENABLE;
MPU_InitStruct.BaseAddress = 0x60000000;  // Base address of the SRAM
MPU_InitStruct.Size = MPU_REGION_SIZE_512KB;  // Adjust size as needed
MPU_InitStruct.AccessPermission = MPU_REGION_FULL_ACCESS;
MPU_InitStruct.IsBufferable = MPU_ACCESS_BUFFERABLE;
MPU_InitStruct.IsCacheable = MPU_ACCESS_CACHEABLE;
MPU_InitStruct.IsShareable = MPU_ACCESS_NOT_SHAREABLE;
MPU_InitStruct.Number = MPU_REGION_NUMBER0;
MPU_InitStruct.TypeExtField = MPU_TEX_LEVEL0;
MPU_InitStruct.SubRegionDisable = 0x00;
MPU_InitStruct.DisableExec = MPU_INSTRUCTION_ACCESS_DISABLE;

HAL_MPU_ConfigRegion(&MPU_InitStruct);
HAL_MPU_Enable(MPU_PRIVILEGED_DEFAULT);


 楼主| 感觉很反感mva 发表于 2024-7-30 18:06 | 显示全部楼层
Cache(缓存)设置
确保缓存已正确启用,并且配置为对外部SRAM进行缓存操作。

c
SCB_EnableICache();  // Enable I-Cache
SCB_EnableDCache();  // Enable D-Cache
 楼主| 感觉很反感mva 发表于 2024-7-30 18:06 | 显示全部楼层
使用DMA(Direct Memory Access)
使用DMA可以减少CPU对SRAM的直接访问,提高数据传输效率。配置DMA传输外部SRAM的数据,避免CPU直接连续读操作导致的时序问题。

c
DMA_HandleTypeDef hdma;

__HAL_RCC_DMA2_CLK_ENABLE();

hdma.Instance = DMA2_Stream0;
hdma.Init.Channel = DMA_CHANNEL_0;
hdma.Init.Direction = DMA_MEMORY_TO_MEMORY;
hdma.Init.PeriphInc = DMA_PINC_ENABLE;
hdma.Init.MemInc = DMA_MINC_ENABLE;
hdma.Init.PeriphDataAlignment = DMA_PDATAALIGN_WORD;
hdma.Init.MemDataAlignment = DMA_MDATAALIGN_WORD;
hdma.Init.Mode = DMA_NORMAL;
hdma.Init.Priority = DMA_PRIORITY_HIGH;
hdma.Init.FIFOMode = DMA_FIFOMODE_DISABLE;

HAL_DMA_Init(&hdma);

HAL_DMA_Start(&hdma, (uint32_t)source_address, (uint32_t)destination_address, length);
HAL_DMA_PollForTransfer(&hdma, HAL_DMA_FULL_TRANSFER, HAL_MAX_DELAY);
 楼主| 感觉很反感mva 发表于 2024-7-30 18:07 | 显示全部楼层
逐步优化FMC配置、MPU设置、缓存使用以及硬件设计,有望减少两次连续读操作的时间,提升系统性能
抹茶妹妹 发表于 2024-7-30 18:52 | 显示全部楼层
在配置MPU(Memory Protection Unit)以优化外部存储器的访问效率时,确保配置正确的缓存和缓冲选项是关键。
我爱台妹mmd 发表于 2024-7-31 23:16 | 显示全部楼层
通过正确配置MPU区域并启用缓存和缓冲功能,可以优化外部存储器的访问效率,从而提高整体系统性能。
范德萨发额 发表于 2024-8-16 14:58 | 显示全部楼层
MPU_InitStruct.Enable = MPU_REGION_ENABLE;
启用该MPU区域。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

19

主题

68

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部