在T113_pro上移植lvgl v9.0
目标环境:Tina-SDKv2.0
1. 移植所需资源
以下文件是从LVGL官方仓库,移植了两个仓库:
注意:都要选择v9.0版本
名称 | 仓库地址 | 描述 |
---|---|---|
lvgl | https://github.com/lvgl/lvgl.git | 包含了LVGL图形界面控件源码、驱动接口源代码以及例程 |
lv_port_linux_frame_buffer | https://github.com/lvgl/lv_port_linux_frame_buffer.git | 适配有frame buffer的linux系统的接口 |
2. 移植步骤
我们可以先在window上做移植(比较方便),再通过传输工具上传到ubuntu编译。
2.1 移植文件
在window上随便一个盘创建一个文件夹(名字随意),我在D盘创建了一个名为lvgl_v9_demo
的文件夹:
D:\Files\Project_Source\05_lvgl\lvgl_v9_demo
在gitub上,下载两个文件lvgl
与lv_port_linux_frame_buffer
:
注意:下载完的
lv_port_linux_frame_buffer
这个仓库的lvgl文件是空的。
进入lvgl_v9_demo
:
把下载好的lvgl
复制进来。
从lv_port_linux_frame_buffer
复制这几个文件:
可以看到lvgl_v9_demo
有这几个文件:
2.2 修改配置文件
移植完的这个工程,目前只支持显示,不支持触摸屏的,我们需要在
lv_conf.h
中做修改。
2.3 修改main.c
我们需要
main.c
创建一个触摸输入。
需要确定设备的触摸节点(可以使用cat /dev/input/event2
测试)
lv_indev_t * touch;
touch = lv_evdev_create(LV_INDEV_TYPE_POINTER,"/dev/input/event2");
同样显示的设备节点也需要确保是正确的
3. 编译
上传到ubuntu,配置好相应的交叉编译工具链。
ubuntu@ubuntu1804:~$ cd lvgl_v9_demo/
ubuntu@ubuntu1804:~/lvgl_v9_demo$ mkdir build
ubuntu@ubuntu1804:~/lvgl_v9_demo$ cd build/
这里默认配置好了相应的交叉编译工具链,执行以下命令:
ubuntu@ubuntu1804:~/lvgl_v9_demo/build$ cmake -DCMAKE_C_COMPILER=/home/ubuntu/tina-d1-h/prebuilt/gcc/linux-x86/arm/toolchain-sunxi-musl/toolchain/bin/arm-openwrt-linux-muslgnueabi-gcc\
-DCMAKE_CXX_COMPILER=/home/ubuntu/tina-d1-h/prebuilt/gcc/linux-x86/arm/toolchain-sunxi-musl/toolchain/bin/arm-openwrt-linux-muslgnueabi-g++\
-DCMAKE_SYSTEM_NAME=Linux \
-DCMAKE_SYSTEM_PROCESSOR=arm \
..
ubuntu@ubuntu1804:~/lvgl_v9_demo/build$ make
执行文件保存在lvgl_v9_demo
的bin
文件下。
4. 总结
-
相比之前的版本,以前需要移植多两个文件
lv_drivers
和lv_demos
,但是v9版本这两个文件已经在lvgl
文件里了。 -
相比之前的版本,也少了
lv_drv_conf.h
这个配置文件,该文件之前版本可以用来设置输入、输出的设备节点,在v9版本需要在main.c
中指定。 -
相比之前的版本,在我的显示效果来看,不用在
main.c
设置相应的显示分辨率了,可以查看例程源码:
进去看看:(它的分辨率是800 * 480,我的显示屏分辨率是1024 * 600)
我并没有修改分辨率,但是显示也适配,我的猜测是分辨率是从设备树确定的。
-
总之,移植更加方便了!!!