2025-10-21 11:14 AM - edited 2025-10-21 11:22 AM
Hello,
I'm experimenting with the STM32N6570-DK, using the STM32N657X0H3Q MCU.
The problem is that the framebuffer contents aren't being displayed by the LTDC.
Not when the framebuffer is alocated into internal SRAM, and not when it's in external RAM.
First I tried it in the Appl, but now I'm trying it in the FSBL.
I've performed a RIF configuration to enable access to the LTDC, but that doesn't help.
static void SystemIsolation_Config(void)
{
__HAL_RCC_RIFSC_CLK_ENABLE();
RIMC_MasterConfig_t RIMC_master = {0};
RIMC_master.MasterCID = RIF_CID_1;
RIMC_master.SecPriv = RIF_ATTRIBUTE_SEC | RIF_ATTRIBUTE_PRIV;
uint32_t SecPriv = GPIO_PIN_SEC | GPIO_PIN_NPRIV;
/*RIMC configuration*/
HAL_RIF_RIMC_ConfigMasterAttributes(RIF_MASTER_INDEX_LTDC1, &RIMC_master);
HAL_RIF_RIMC_ConfigMasterAttributes(RIF_MASTER_INDEX_LTDC2, &RIMC_master);
/*RISUP configuration*/
HAL_RIF_RISC_SetSlaveSecureAttributes(RIF_RISC_PERIPH_INDEX_LTDC, RIMC_master.SecPriv);
HAL_RIF_RISC_SetSlaveSecureAttributes(RIF_RISC_PERIPH_INDEX_LTDCL1, RIMC_master.SecPriv);
HAL_RIF_RISC_SetSlaveSecureAttributes(RIF_RISC_PERIPH_INDEX_LTDCL2, RIMC_master.SecPriv);
HAL_GPIO_ConfigPinAttributes(GPIOA, GPIO_PIN_0, SecPriv);
HAL_GPIO_ConfigPinAttributes(GPIOA, GPIO_PIN_1, SecPriv);
HAL_GPIO_ConfigPinAttributes(GPIOA, GPIO_PIN_2, SecPriv);
HAL_GPIO_ConfigPinAttributes(GPIOA, GPIO_PIN_7, SecPriv);
HAL_GPIO_ConfigPinAttributes(GPIOA, GPIO_PIN_8, SecPriv);
HAL_GPIO_ConfigPinAttributes(GPIOA, GPIO_PIN_11, SecPriv);
HAL_GPIO_ConfigPinAttributes(GPIOA, GPIO_PIN_15, SecPriv);
HAL_GPIO_ConfigPinAttributes(GPIOB, GPIO_PIN_0, SecPriv);
HAL_GPIO_ConfigPinAttributes(GPIOB, GPIO_PIN_2, SecPriv);
HAL_GPIO_ConfigPinAttributes(GPIOB, GPIO_PIN_4, SecPriv);
HAL_GPIO_ConfigPinAttributes(GPIOB, GPIO_PIN_6, SecPriv);
HAL_GPIO_ConfigPinAttributes(GPIOB, GPIO_PIN_7, SecPriv);
HAL_GPIO_ConfigPinAttributes(GPIOB, GPIO_PIN_11, SecPriv);
HAL_GPIO_ConfigPinAttributes(GPIOB, GPIO_PIN_12, SecPriv);
HAL_GPIO_ConfigPinAttributes(GPIOB, GPIO_PIN_13, SecPriv);
HAL_GPIO_ConfigPinAttributes(GPIOB, GPIO_PIN_14, SecPriv);
HAL_GPIO_ConfigPinAttributes(GPIOB, GPIO_PIN_15, SecPriv);
HAL_GPIO_ConfigPinAttributes(GPIOC, GPIO_PIN_0, SecPriv);
HAL_GPIO_ConfigPinAttributes(GPIOC, GPIO_PIN_1, SecPriv);
HAL_GPIO_ConfigPinAttributes(GPIOC, GPIO_PIN_2, SecPriv);
HAL_GPIO_ConfigPinAttributes(GPIOC, GPIO_PIN_3, SecPriv);
HAL_GPIO_ConfigPinAttributes(GPIOC, GPIO_PIN_4, SecPriv);
HAL_GPIO_ConfigPinAttributes(GPIOC, GPIO_PIN_5, SecPriv);
HAL_GPIO_ConfigPinAttributes(GPIOC, GPIO_PIN_10, SecPriv);
HAL_GPIO_ConfigPinAttributes(GPIOC, GPIO_PIN_11, SecPriv);
HAL_GPIO_ConfigPinAttributes(GPIOC, GPIO_PIN_12, SecPriv);
HAL_GPIO_ConfigPinAttributes(GPIOC, GPIO_PIN_13, SecPriv);
HAL_GPIO_ConfigPinAttributes(GPIOD, GPIO_PIN_4, SecPriv);
HAL_GPIO_ConfigPinAttributes(GPIOD, GPIO_PIN_8, SecPriv);
HAL_GPIO_ConfigPinAttributes(GPIOD, GPIO_PIN_9, SecPriv);
HAL_GPIO_ConfigPinAttributes(GPIOD, GPIO_PIN_14, SecPriv);
HAL_GPIO_ConfigPinAttributes(GPIOD, GPIO_PIN_15, SecPriv);
HAL_GPIO_ConfigPinAttributes(GPIOE, GPIO_PIN_2, SecPriv);
HAL_GPIO_ConfigPinAttributes(GPIOE, GPIO_PIN_3, SecPriv);
HAL_GPIO_ConfigPinAttributes(GPIOE, GPIO_PIN_4, SecPriv);
HAL_GPIO_ConfigPinAttributes(GPIOE, GPIO_PIN_5, SecPriv);
HAL_GPIO_ConfigPinAttributes(GPIOE, GPIO_PIN_6, SecPriv);
HAL_GPIO_ConfigPinAttributes(GPIOE, GPIO_PIN_7, SecPriv);
HAL_GPIO_ConfigPinAttributes(GPIOE, GPIO_PIN_8, SecPriv);
HAL_GPIO_ConfigPinAttributes(GPIOE, GPIO_PIN_11, SecPriv);
HAL_GPIO_ConfigPinAttributes(GPIOG, GPIO_PIN_0, SecPriv);
HAL_GPIO_ConfigPinAttributes(GPIOG, GPIO_PIN_1, SecPriv);
HAL_GPIO_ConfigPinAttributes(GPIOG, GPIO_PIN_6, SecPriv);
HAL_GPIO_ConfigPinAttributes(GPIOG, GPIO_PIN_7, SecPriv);
HAL_GPIO_ConfigPinAttributes(GPIOG, GPIO_PIN_8, SecPriv);
HAL_GPIO_ConfigPinAttributes(GPIOG, GPIO_PIN_10, SecPriv);
HAL_GPIO_ConfigPinAttributes(GPIOG, GPIO_PIN_11, SecPriv);
HAL_GPIO_ConfigPinAttributes(GPIOG, GPIO_PIN_12, SecPriv);
HAL_GPIO_ConfigPinAttributes(GPIOG, GPIO_PIN_13, SecPriv);
HAL_GPIO_ConfigPinAttributes(GPIOG, GPIO_PIN_15, SecPriv);
HAL_GPIO_ConfigPinAttributes(GPIOH, GPIO_PIN_2, SecPriv);
HAL_GPIO_ConfigPinAttributes(GPIOH, GPIO_PIN_3, SecPriv);
HAL_GPIO_ConfigPinAttributes(GPIOH, GPIO_PIN_4, SecPriv);
HAL_GPIO_ConfigPinAttributes(GPIOH, GPIO_PIN_6, SecPriv);
HAL_GPIO_ConfigPinAttributes(GPIOH, GPIO_PIN_9, SecPriv);
HAL_GPIO_ConfigPinAttributes(GPION, GPIO_PIN_0, SecPriv);
HAL_GPIO_ConfigPinAttributes(GPION, GPIO_PIN_1, SecPriv);
HAL_GPIO_ConfigPinAttributes(GPION, GPIO_PIN_2, SecPriv);
HAL_GPIO_ConfigPinAttributes(GPION, GPIO_PIN_3, SecPriv);
HAL_GPIO_ConfigPinAttributes(GPION, GPIO_PIN_4, SecPriv);
HAL_GPIO_ConfigPinAttributes(GPION, GPIO_PIN_5, SecPriv);
HAL_GPIO_ConfigPinAttributes(GPION, GPIO_PIN_6, SecPriv);
HAL_GPIO_ConfigPinAttributes(GPION, GPIO_PIN_8, SecPriv);
HAL_GPIO_ConfigPinAttributes(GPION, GPIO_PIN_9, SecPriv);
HAL_GPIO_ConfigPinAttributes(GPION, GPIO_PIN_10, SecPriv);
HAL_GPIO_ConfigPinAttributes(GPION, GPIO_PIN_11, SecPriv);
HAL_GPIO_ConfigPinAttributes(GPIOO, GPIO_PIN_0, SecPriv);
HAL_GPIO_ConfigPinAttributes(GPIOO, GPIO_PIN_1, SecPriv);
HAL_GPIO_ConfigPinAttributes(GPIOO, GPIO_PIN_2, SecPriv);
HAL_GPIO_ConfigPinAttributes(GPIOO, GPIO_PIN_3, SecPriv);
HAL_GPIO_ConfigPinAttributes(GPIOO, GPIO_PIN_4, SecPriv);
HAL_GPIO_ConfigPinAttributes(GPIOP, GPIO_PIN_0, SecPriv);
HAL_GPIO_ConfigPinAttributes(GPIOP, GPIO_PIN_1, SecPriv);
HAL_GPIO_ConfigPinAttributes(GPIOP, GPIO_PIN_2, SecPriv);
HAL_GPIO_ConfigPinAttributes(GPIOP, GPIO_PIN_3, SecPriv);
HAL_GPIO_ConfigPinAttributes(GPIOP, GPIO_PIN_4, SecPriv);
HAL_GPIO_ConfigPinAttributes(GPIOP, GPIO_PIN_5, SecPriv);
HAL_GPIO_ConfigPinAttributes(GPIOP, GPIO_PIN_6, SecPriv);
HAL_GPIO_ConfigPinAttributes(GPIOP, GPIO_PIN_7, SecPriv);
HAL_GPIO_ConfigPinAttributes(GPIOP, GPIO_PIN_8, SecPriv);
HAL_GPIO_ConfigPinAttributes(GPIOP, GPIO_PIN_9, SecPriv);
HAL_GPIO_ConfigPinAttributes(GPIOP, GPIO_PIN_10, SecPriv);
HAL_GPIO_ConfigPinAttributes(GPIOP, GPIO_PIN_11, SecPriv);
HAL_GPIO_ConfigPinAttributes(GPIOP, GPIO_PIN_12, SecPriv);
HAL_GPIO_ConfigPinAttributes(GPIOP, GPIO_PIN_13, SecPriv);
HAL_GPIO_ConfigPinAttributes(GPIOP, GPIO_PIN_14, SecPriv);
HAL_GPIO_ConfigPinAttributes(GPIOP, GPIO_PIN_15, SecPriv);
HAL_GPIO_ConfigPinAttributes(GPIOQ, GPIO_PIN_3, SecPriv);
HAL_GPIO_ConfigPinAttributes(GPIOQ, GPIO_PIN_6, SecPriv);
}
Of course, the backlight is on.
What could be wrong?
It could be something with the GPIO EN or ON signals for the display, but testing with that didn't help too.
I've posted the project on GitHub:
https://github.com/AngryCarrot61/STM32N6570-DK_005
I'll update that project once a solution is found.
I'll eventually test the GPU2D, but I need to see some framebuffer output first.
Any help is greatly appreciated.
Thanks again!