跳到主要内容

LVGL与G2D

LVGL​

V821可通过framebuffer或DISP接入LVGL。基本检查:

ls -l /dev/fb* /dev/disp
fbset -i

LVGL移植需要实现:

  • 显示flush回调,将LVGL颜色缓冲写入framebuffer或DISP图层。
  • 输入设备回调,读取I2C触摸事件。
  • Tick和task handler。
  • 根据64MB内存限制控制双缓冲大小、图片缓存和字体。

240×320、RGB565全屏单缓冲约150KB,双缓冲约300KB;ARGB8888双缓冲约600KB。还需给应用、ISP、编码器和RTOS预留内存。

G2D​

G2D用于旋转、镜像、缩放和像素格式转换。启用对应内核和Tina软件包后,通过/dev/g2d调用。

常见限制:

  • 物理地址和stride需要按驱动要求对齐。
  • 某些格式宽度必须2、4、8或16像素对齐。
  • 输入/输出宽高存在最小值限制。
  • YUV与RGB转换需要正确设置色彩空间和plane地址。
  • framebuffer内存不一定连续,使用DMA buffer时应按平台API分配。

性能建议​

  • LVGL只刷新脏区域,不要每帧全屏复制。
  • 大图缩放、旋转优先使用G2D。
  • SPI LCD的瓶颈通常在总线带宽,G2D只能降低CPU处理时间,不能突破SPI传输上限。
  • 监控刷新线程CPU、G2D耗时和SPI发送时间,区分计算瓶颈与传输瓶颈。