LVGL STM32H743,LTDC+FreeRTOS und DMA2D not working

Hello,

I use the LVGL 9.2.2 for my STM32H743 Project, my application uses FreeRTOS, DMA2D and LTDC for my 1024x600 Riverdi 7" TFT TouchDisplay.

my project is working fine with TouchGFX, now i try to run LVGL and my result is:

(LV_USE_OS=LV_OS_FREERTOS)

static lv_display_t *display;
static void disp_flush_complete(DMA2D_HandleTypeDef *hdma2d)
{
	lv_display_flush_ready(display);
}

static void display_flush(lv_display_t *disp, const lv_area_t *area, uint8_t *color_p)
{
	lv_coord_t width = lv_area_get_width(area);
	lv_coord_t height = lv_area_get_height(area);

	  DMA2D->CR = 0x01U << DMA2D_CR_MODE_Pos;
	  DMA2D->FGPFCCR = DMA2D_INPUT_RGB888;
	  DMA2D->FGMAR = (uint32_t)color_p;
	  DMA2D->FGOR = 0;
	  DMA2D->OPFCCR = DMA2D_OUTPUT_RGB888;
	  DMA2D->OMAR = hltdc.LayerCfg[0].FBStartAdress + 4 * \
	                (area->y1 * 600 + area->x1);
	  DMA2D->OOR = 600 - width;
	  DMA2D->NLR = (width << DMA2D_NLR_PL_Pos) | (height << DMA2D_NLR_NL_Pos);
	  DMA2D->IFCR = 0x3FU;
	  DMA2D->CR |= DMA2D_CR_TCIE;
	  DMA2D->CR |= DMA2D_CR_START;
}

void main()
{
.....
  osKernelInitialize();

  /* USER CODE BEGIN RTOS_MUTEX */
  /* add mutexes, ... */
  lv_init();

/* creation of LVGLtimer */
  LVGLtimerHandle = osThreadNew(LVGL_timer, NULL, &LVGLtimer_attributes);
  osKernelStart();
......

void LVGL_timer(void *argument)
{
  /* USER CODE BEGIN LVGL_timer */
  /* Infinite loop */
  for(;;)
  {
	  lv_timer_handler();
          lv_tick_inc(1);
	  osDelay(1);
  }
  /* USER CODE END LVGL_timer */
}

/* USER CODE END Header_StartDefaultTask */
void StartDefaultTask(void *argument)
{
.....
  display = lv_display_create(1024, 600);
  lv_display_set_buffers(display, (void*) disp_buf, (void*) disp_buf2, sizeof(disp_buf), LV_DISPLAY_RENDER_MODE_PARTIAL);
  lv_display_set_flush_cb(display, display_flush);
  hdma2d.XferCpltCallback = disp_flush_complete;


  lv_demo_widgets();
.....
}

static void MX_DMA2D_Init(void)
{

  /* USER CODE BEGIN DMA2D_Init 0 */

  /* USER CODE END DMA2D_Init 0 */

  /* USER CODE BEGIN DMA2D_Init 1 */

  /* USER CODE END DMA2D_Init 1 */
  hdma2d.Instance = DMA2D;
  hdma2d.Init.Mode = DMA2D_M2M;
  hdma2d.Init.ColorMode = DMA2D_OUTPUT_RGB888;
  hdma2d.Init.OutputOffset = 0;
  hdma2d.LayerCfg[1].InputOffset = 0;
  hdma2d.LayerCfg[1].InputColorMode = DMA2D_INPUT_RGB888;
  hdma2d.LayerCfg[1].AlphaMode = DMA2D_NO_MODIF_ALPHA;
  hdma2d.LayerCfg[1].InputAlpha = 0;
  hdma2d.LayerCfg[1].AlphaInverted = DMA2D_REGULAR_ALPHA;
  hdma2d.LayerCfg[1].RedBlueSwap = DMA2D_RB_REGULAR;
  hdma2d.LayerCfg[1].ChromaSubSampling = DMA2D_NO_CSS;
  if (HAL_DMA2D_Init(&hdma2d) != HAL_OK)
  {
    Error_Handler();
  }
  if (HAL_DMA2D_ConfigLayer(&hdma2d, 1) != HAL_OK)
  {
    Error_Handler();
  }
  /* USER CODE BEGIN DMA2D_Init 2 */

  /* USER CODE END DMA2D_Init 2 */

}

static void MX_LTDC_Init(void)
{

  /* USER CODE BEGIN LTDC_Init 0 */

  /* USER CODE END LTDC_Init 0 */

  LTDC_LayerCfgTypeDef pLayerCfg = {0};

  /* USER CODE BEGIN LTDC_Init 1 */

  /* USER CODE END LTDC_Init 1 */
  hltdc.Instance = LTDC;
  hltdc.Init.HSPolarity = LTDC_HSPOLARITY_AL;
  hltdc.Init.VSPolarity = LTDC_VSPOLARITY_AL;
  hltdc.Init.DEPolarity = LTDC_DEPOLARITY_AL;
  hltdc.Init.PCPolarity = LTDC_PCPOLARITY_IPC;
  hltdc.Init.HorizontalSync = 0;
  hltdc.Init.VerticalSync = 0;
  hltdc.Init.AccumulatedHBP = 160;
  hltdc.Init.AccumulatedVBP = 23;
  hltdc.Init.AccumulatedActiveW = 1184;
  hltdc.Init.AccumulatedActiveH = 623;
  hltdc.Init.TotalWidth = 1344;
  hltdc.Init.TotalHeigh = 635;
  hltdc.Init.Backcolor.Blue = 0;
  hltdc.Init.Backcolor.Green = 0;
  hltdc.Init.Backcolor.Red = 0;
  if (HAL_LTDC_Init(&hltdc) != HAL_OK)
  {
    Error_Handler();
  }
  pLayerCfg.WindowX0 = 0;
  pLayerCfg.WindowX1 = 1024;
  pLayerCfg.WindowY0 = 0;
  pLayerCfg.WindowY1 = 600;
  pLayerCfg.PixelFormat = LTDC_PIXEL_FORMAT_RGB888;
  pLayerCfg.Alpha = 255;
  pLayerCfg.Alpha0 = 0;
  pLayerCfg.BlendingFactor1 = LTDC_BLENDING_FACTOR1_CA;
  pLayerCfg.BlendingFactor2 = LTDC_BLENDING_FACTOR2_CA;
  pLayerCfg.FBStartAdress = 0xC0000000;
  pLayerCfg.ImageWidth = 1024;
  pLayerCfg.ImageHeight = 600;
  pLayerCfg.Backcolor.Blue = 0;
  pLayerCfg.Backcolor.Green = 0;
  pLayerCfg.Backcolor.Red = 0;
  if (HAL_LTDC_ConfigLayer(&hltdc, &pLayerCfg, 0) != HAL_OK)
  {
    Error_Handler();
  }
  /* USER CODE BEGIN LTDC_Init 2 */

  /* USER CODE END LTDC_Init 2 */

}

LV_LOG is enabled, but i get no errors…