Enabling Helium Acceleration on STM32N6 (CM55)

Helium Acceleration on STM32N6 (CM55)

Hello.

I’m currently experimenting with LVGL on STM32N6. I have project up and running and the benchmark runs well with either the Nema GPU or with SW rendering.

I’m mainly interested in experimenting with the performance gains from using the Arm2D library with helium acceleration. The N6 should be capable due to it’s CM55 core. However i can’t get it working nicely.

I have added Arm2D manually to my project and everything compiles when enabling

  • LV_USE_DRAW_ARM2D_SYNC
  • LV_USE_NATIVE_HELIUM_ASM

However, no helium acceleration is present.

What is the intended way to enable helium acceleration?

What MCU/Processor/Board and compiler are you using?

STM32N6570-DK
IAR and MDK-ARM

What LVGL version are you using?

Branch: Master
Commit: 7ab421ed30fdc679895d8db0a86c39b44d0feee4

What do you want to achieve?

Helium acceleration using Arm2D on STM32N6.

What have you tried so far?

Enabling:

  • LV_USE_DRAW_ARM2D_SYNC
  • LV_USE_NATIVE_HELIUM_ASM

Have also tried setting

#define LV_USE_DRAW_SW_ASM LV_DRAW_SW_ASM_HELIUM

But then it does not compile.

Code to reproduce

The application is using ThreadX (Azure RTOS). The main task lvgl_app is shown below.

void lvgl_app(void)
{
    /* initialize LVGL framework */
    lv_init();

#if (LV_USE_NEMA_GFX == 0)
    nema_init();
#endif

#if (LV_COLOR_DEPTH==32)
    init_display(NEMA_BGRA8888, 2);
#elif (LV_COLOR_DEPTH==16)
    init_display(NEMA_RGB565, 2);
#else
#error
#endif

    lv_tick_set_cb(get_time_cb);
    lvgl_display_init();

    lv_demo_benchmark();

    while (1)
    {
        lv_timer_handler();
        /* Sleep for 5ms */
        tx_thread_sleep(5);
    }
}