目录
Zephyr RTOS 原生支持了丰富的第三方库,这也是很多人和厂商选择Zephyr的原因。开源轻量级框架LVGL就是其中一个较为人熟知的第三方库,它可以让嵌入式设备也拥有可以媲美手机的UI界面。
LVGL全称Light and Versatile Graphics Library,是一个开源的GUI库,具备资源消耗小、可移植度高的特点,因此很适合在嵌入式设备上使用。
作为一个图形库,LVGL也自带了丰富的GUI控件可以供开发者直接使用,如常用的按钮,图表,列表,滑块等,此外还支持多种图形动画的调用,相比传统驱屏绘制GUI,开发者不需要大量的代码编写量和反复的效果验证,就可以搭建出一个比较满意的GUI应用。
在开始使用LVGL前,我们需要简单了解以下LVGL一些比较重要的概念,方便对后续学习过程中的理解。
Display:在LVGL中一个物理显示器对应一个显示器驱动,LVGL支持多个物理显示器。
Screen:一个Display创建多个Screen,可以理解为页面,Screen上可以添加各种LVGL支持的组件。
Object:object是LVGL构建GUI的基本单位,每个控件都属于Object,上面的Screen(页面)也是一个Object。
本次使用的硬件实验平台是 CSK6开发套件,目前CSK6芯片的SDK已经支持LVGL的使用,版本为LVGL8。
实战中使用的是聆思命令行指令,可以参考《聆思CSK6开发工具简介》进行一键部署开发环境。
在完成CSK6芯片的开发环境安装后
在终端执行以下指令获取sample:
lisa zep create
Sample所在路径:
boards → csk6 → subsys → display → lvgl → SimpleShow
编译:
lisa zep build –b csk6011a_nano
烧录:
lisa zep flash
运行效果:
工程目录下的prj.conf文件保存着这个项目相关的配置:
overlay文件则是设备树文件,定义了硬件相关的信息,包括对屏幕驱动ST7789V、触摸驱动FT5336,以及使用到的I2C接口、SPI接口的定义:
然后我们来看main.c文件
在main.c文件中,依次进行了以下的操作:
1.获取设备树的实例,也就是我们显示屏的实例
2.创建一个hello world的button的一个对象
3.然后去给button设置一个文字“hello world”,对齐方式为align center
4.创建一个count label,用来显示我们的计数器
5.在计数器的循环里面不断的去计数
6.更新显示
LVGL也提供了其他丰富的例程,可以通过跑这些例程,查看工程源码,了解更多的LVGL用法。
这些例程也已经上传到LSCloud中,感兴趣的伙伴可以拉取代码:
git clone git@cloud.listenai.com:listenai_xqqin/lvgl_demo.git
使用LVGL在屏幕上显示头肩检测&手势识别结果的项目源码已上传,可点击查看,使用的仓库分支为 feature/lvgl。
在安装lisa开发工具后可通过在命令行执行以下命令拉取代码:
lisa zep create --from-git https://cloud.listenai.com/zephyr/applications/app_algo_hsd_sample_for_csk6.git
除了以上基础用法,我们还可以使用LVGL开发一些大动图、页面切换等完整度更高的UI界面,感兴趣的同学可以观看下方的教程视频:《Zephyr LVGL 应用开发教程》。
本课程由聆思科技资深解决方案专家覃晓庆讲解,涉及内容有
Zephyr LVGL 应用开发教程
Zephyr系列相关分享 | CSDN
环境搭建 | 聆思文档中心
芯片介绍 | 聆思文档中心
支持简介 | 聆思文档中心
更多视频课程
聆思科技是一家专注提供智能终端系统级(SoC)芯片的高科技企业,目前推出的CSK6系AI芯片已适配Zephyr RTOS。
如果你在学习、开发过程中有疑问或难题,希望与专家和更多的开发者交流,欢迎+V:listenai-csk?
欢迎各位同学联系我们进行技术相关的探讨,也可以在评论区进行提问,大家一起进步吧!