这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » DIY与开源设计 » 电子DIY » 【瑞萨RA8D1测评】3、zephyr移植LVGL

共1条 1/1 1 跳转至

【瑞萨RA8D1测评】3、zephyr移植LVGL

高工
2026-09-18 07:42:25     打赏

【前言】

在前一篇我打通了mipi lcd的显示:【瑞萨RA8D1测评】2、驱动MIPI屏-电子产品世界论坛

这一篇,我将分享如何快速的移植lvgl

【移植效果】

image.png

接入方式

Zephyr 4.4 的 LVGL glue(zephyr/modules/lvgl/)通过 chosen { zephyr,display = &lcdif; }; 自动找到 GLCDC 显示设备并完成 lv_init/显示注册(POST_KERNEL 初始化),应用只需创建 widget 并周期调用 lv_timer_handler()。overlay 中的 chosen 节点在 LCD 移植时已配好, LVGL 接入无需再动 devicetree。

Kconfig 配置(prj.conf)

CONFIG_LVGL=y
CONFIG_LV_COLOR_DEPTH_16=y        # 必须,匹配链路 RGB565(默认是 32!)
CONFIG_LV_Z_MEM_POOL_SIZE=65536   # LVGL heap(sys heap,默认 2048 太小)
CONFIG_LV_Z_VDB_SIZE=10           # 渲染 buffer = 10% 屏大小(约 21KB),静态分配
CONFIG_LV_Z_VDB_ALIGN=64          # 与 GLCDC 64 字节行对齐约定一致
CONFIG_LV_USE_LABEL=y
CONFIG_LV_USE_BAR=y
CONFIG_LV_FONT_MONTSERRAT_14=y
CONFIG_MAIN_STACK_SIZE=4096       # LVGL 渲染需要较大的栈

说明:

  • 渲染 buffer:默认 LV_Z_BUFFER_ALLOC_STATIC,静态分配在 SRAM。 如需放 SDRAM,可用 CONFIG_LV_Z_VDB_ZEPHYR_REGION=y + CONFIG_LV_Z_VDB_ZEPHYR_REGION_NAME="SDRAM";LVGL heap 同理 (CONFIG_LV_Z_MEMORY_POOL_ZEPHYR_REGION)。

  • flush 路径:glue 以 pitch = ROUND_UP(w*2, LV_DRAW_BUF_STRIDE_ALIGN)/2 display_write,GLCDC 驱动把渲染 buffer 逐行 memcpy 进 224px 对齐的 SDRAM 显存, 自动等 vsync。GLCDC 自身是双缓冲,无撕裂。

  • 输入:H0233S001 无触摸屏,未启用 CONFIG_INPUT。若换用带触摸的 40pin RGB 接口屏或自扩触摸屏,再启用并接 Zephyr input 子系统(glue 的 Kconfig.input)。

应用代码(src/main.c)

  • ui_init():标题 label + RGB 三色块(验证颜色通道/BGR 配置)+ 进度条 + 计数 label

  • 主循环:lv_bar_set_value / lv_label_set_text_fmt 更新 → lv_timer_handler() → LED 翻转 + printk 心跳 → DSI host VMSR 状态检查(仅异常时打印)→ 延时 500ms

验证点:三色块显示红绿蓝顺序正确(否则检查 ST7796U MADCTL 的 BGR 位); 进度条平滑动画无撕裂;blink N 心跳稳定输出,无 VBUFOVF/TIMERR 打印。

已知限制与后续优化

  1. LVGL 渲染走 memcpy 路径:LVGL flush buffer 的 pitch=渲染宽度,不等于 GLCDC 对齐行宽 224px,无法零拷贝。如需优化,可自定义 flush 或让渲染 buffer 按 224 对齐 分配(全屏 224x480x2 = 215KB),配合 LV_Z_FULL_REFRESH 评估。

  2. 帧率:当前链路 57.6Hz,10% 渲染 buffer 下整屏刷新需多次 flush,动画帧率受 CPU 渲染速度限制;RA8D1 有 2D 绘图引擎(DAVE/2D),LVGL 有对应 GPU 适配 (LV_USE_DRAW_...),需要时再接。

  3. 触摸屏:本屏无触摸;交互可用板载用户按键(P008,Zephyr input/gpio-keys) 或外接 encoder。





关键词: 瑞萨     RA8D1     zephyr     LVGL    

共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]