707LVGLv8双屏开发
📎 原始文档:https://www.kdocs.cn/l/cgRScI8Ldzyf 707LVGLv8双屏开发
SDK版本:
- lvgl应用层与GPU渲染:
gpu_demo_task和lvgl_main的作用和联系: - gpu_demo_task的作用:
- 这是一个专门处理GPU任务的线程,主要负责GPU渲染相关的任务调度
- 其主要工作流程是:
- 创建GPU信号量lv_gpu_sem用于同步
- 等待任务消息(os_taskq_pend)
- 收到消息后调用gpu_task_kick执行具体的GPU渲染任务
- gpu_task_kick会具体处理:
- 申请缓冲区
- 根据区域大小分块渲染
- 设置GPU任务列表和输出缓冲区
- 执行GPU渲染
- 将渲染结果通过DBI传输给LCD显示
- lvgl_main的作用:
- 这是LVGL图形库的主入口函数
- 主要完成:
- 初始化LVGL库(lv_init)
- 初始化硬件抽象层(hal_init)
- 创建和初始化UI界面
- 进入主循环处理LVGL任务(lv_timer_handler)
- 两者的联系:
- lvgl_main作为上层应用,负责UI界面的构建和管理
- 当LVGL需要进行实际渲染时,会通过lv_send_task_to_gpu函数将渲染任务发送给gpu_demo_task
- gpu_demo_task作为底层驱动,负责实际的GPU硬件操作和渲染执行
- 它们通过信号量(lv_gpu_sem)和消息队列实现同步和通信
- LVGLdemo中的信号量
2.1 lvgldemo入口 :app_task_init() -> lvgl_demo_task
lvgl相关代码可追踪 NEW_LVGL_V8_DEMO 进行查找
2.2 lv_buffer_sem与lv_te_sem

2.2.1 lv_buffer_sem




2.2.2 lv_te_sem




3. 关闭TE时的注意事项 SDK默认开启TE等待,通过te令UItask让出空闲时间。如果关闭了TE请在lvgl_main中添加delay,否则作为ui_task将一直占用,优先级不高于task的任务都无法运行。

4. LVGL双屏框架介绍
4.1核心原理
通过两个task以及三个信号量实现一个双屏动画播放任务队列,double_lcd作为总循环主控任务,负责帧刷新以及设置刷新间隔,double_lcd_switch负责在双屏动画当前帧的显示过程中完成两个屏幕不同切图的显示。

4.2 运行时序

4.3 接口介绍(持续更新)
