Skip to main content
Visitor II
April 20, 2023
Question

memory mapping framebuffer in the bootloader causing a memory fault when switching to unpriveleged mode

  • April 20, 2023
  • 1 reply
  • 846 views

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.

https://developer.arm.com/documentation/dai0298/a/

    This topic has been closed for replies.

    1 reply

    PCevo.1Author
    Visitor II
    June 6, 2023

    Memory mapping had to be enabled and the unprivileged memory mapping needed to be updated.

    This document filled in a number of missing pieces

    https://www.st.com/resource/en/application_note/an2606-stm32-microcontroller-system-memory-boot-mode-stmicroelectronics.pdf