2023-04-20 10:14 AM
Need to memory map the framebuffer in the bootloader, this is done using bspMpuConfig. when this is done the framebuffer can successfully be written but when transitioning into the next state the routine
/* RCC access done to identify the wakeup sources, we can switch to unpriviledged */
SFU_MPU_EnterUnprivilegedMode();
causes a memory fault. Below are the memory mapping params. Any thoughts?
/* Setup Memory Mapped LCD in Write-through (framebuffer) */
MPU_InitStruct.Enable = MPU_REGION_ENABLE;
MPU_InitStruct.BaseAddress = 0x64000000;
MPU_InitStruct.Size = MPU_REGION_SIZE_32MB;
MPU_InitStruct.AccessPermission = MPU_REGION_FULL_ACCESS;
MPU_InitStruct.IsBufferable = MPU_ACCESS_NOT_BUFFERABLE;
MPU_InitStruct.IsCacheable = MPU_ACCESS_NOT_CACHEABLE;
MPU_InitStruct.IsShareable = MPU_ACCESS_NOT_SHAREABLE;
MPU_InitStruct.Number = MPU_REGION_NUMBER2;
MPU_InitStruct.TypeExtField = MPU_TEX_LEVEL0;
MPU_InitStruct.SubRegionDisable = 0x00;
MPU_InitStruct.DisableExec = MPU_INSTRUCTION_ACCESS_DISABLE;
HAL_MPU_ConfigRegion(&MPU_InitStruct);
I have noticed that in app_sfu.h
SFU_MPU_PROTECT_ENABLE
is not defined, I have enabled this, I believe this allows memory mapping in the bootloader, but defining that did not have any impact. I also noticed this issue about lazy stacking, this also did not have any impact either.
2023-06-06 01:56 PM
Memory mapping had to be enabled and the unprivileged memory mapping needed to be updated.
This document filled in a number of missing pieces