LVGL-v9.2移植
本章节将讲解如何移植 LVGL-v9.2 版本官方 demo 到 T113i-Industrial 开发板。
移植前准备
进行移植前,请做好以下准 备。
硬件准备
软件准备
- lvgl-Linux对应的github仓库:lvgl/lv_port_linux: LVGL configured to work with a standard Linux framebuffer
硬件接线指南
想要实现显示 LVGL demo,首先要连接好屏幕,下面是连接屏幕的指南图:
排线的蓝色面朝上,插入开发板的mipi接口。
编译LVGL例程
搭建开发环境
编译示例程序,要用到Tina5-SDK里面的交叉编译工具,所以需要先在ubuntu上搭建好开发环境。
如果不清楚如何搭建开发环境,参考 开发环境搭建
获取资 源
进入ubuntu(已搭建好相应开发环境),新建终端,获取 LVGL Framebuffer Demo(一个示例项目,展示了如何在Linux图形栈之上使用LVGL。),执行以下指令:
git clone https://github.com/lvgl/lv_port_linux.git
cd lv_port_linux/
git submodule update --init --recursive
记录信息如下:
ubuntu@ubuntu1804:~/T113-i/lvgl_demo$ git clone https://github.com/lvgl/lv_port_linux.git
Cloning into 'lv_port_linux'...
remote: Enumerating objects: 206, done.
remote: Counting objects: 100% (103/103), done.
remote: Compressing objects: 100% (63/63), done.
remote: Total 206 (delta 62), reused 55 (delta 40), pack-reused 103 (from 1)
Receiving objects: 100% (206/206), 967.99 KiB | 932.00 KiB/s, done.
Resolving deltas: 100% (96/96), done.
ubuntu@ubuntu1804:~/T113-i/lvgl_demo$ ls
lv_port_linux
ubuntu@ubuntu1804:~/T113-i/lvgl_demo$ cd lv_port_linux/
ubuntu@ubuntu1804:~/T113-i/lvgl_demo/lv_port_linux$ git submodule update --init --recursive
Submodule 'lvgl' (https://github.com/littlevgl/lvgl.git) registered for path 'lvgl'
Cloning into '/home/ubuntu/T113-i/lvgl_demo/lv_port_linux/lvgl'...
Submodule path 'lvgl': checked out '72dfc1d75198a126dd495483d9cbc5b27c6c882b'
查看目录结构:
ubuntu@ubuntu1804:~/T113-i/lvgl_demo/lv_port_linux$ tree -L 2
.
├── CMakeLists.txt
├── LICENSE
├── lv_conf.defaults
├── lv_conf.h
├── lvgl
│ ├── CMakeLists.txt
│ ├── CMakePresets.json
│ ├── component.mk
│ ├── demos
│ ├── docs
│ ├── env_support
│ ├── examples
│ ├── idf_component.yml
│ ├── Kconfig
│ ├── library.json
│ ├── library.properties
│ ├── LICENCE.txt
│ ├── lv_conf_template.h
│ ├── lvgl.h
│ ├── lvgl.mk
│ ├── lvgl.pc.in
│ ├── lv_version.h
│ ├── lv_version.h.in
│ ├── README.md
│ ├── SConscript
│ ├── scripts
│ ├── src
│ ├── tests
│ └── zephyr
├── main.c
├── Makefile
├── manifest.json
├── mouse_cursor_icon.c
└── README.md
9 directories, 25 files
交叉编译准备
示例项目准备好之后,接下来就是准备编译了。
这个示例项目是运行在开发板上,并不是运行在Ubuntu上,需要在Ubuntu上,根据前面搭建好的开发环境,在里面找到交叉编译工具链的位置,编译出可以在开发板上运行的可执行程序。
在Tina5-SDK源码根目录上,查看文件.buildconfig
,
可以看到交叉编译工具链的位置(根据实际位置为主):
/home/ubuntu/T113-i/tina5sdk-bsp/out/toolchain/gcc-linaro-5.3.1-2016.05-x86_64_arm-linux-gnueabi/bin
ls
查看交叉编译工具如下:
示例项目使用 Cmake 来生成的 Makefile,再进行编译,这里不使用示例项目自带的 Makefile 文件。
在示例项目文件lv_port_linux
里,创建一个文件toolchain.cmake
,用来指定交叉编译工具。
ubuntu@ubuntu1804:~/T113-i/lvgl_demo/lv_port_linux$ vim toolchain.cmake
根据实际的交叉编译工具链路径,写入以下内容:
set(CMAKE_SYSTEM_NAME Linux)
set(CMAKE_SYSTEM_PROCESSOR arm)
set(tools "/home/ubuntu/T113-i/tina5sdk-bsp/out/toolchain/gcc-linaro-5.3.1-2016.05-x86_64_arm-linux-gnueabi")
set(CMAKE_C_COMPILER ${tools}/bin/arm-linux-gnueabi-gcc)
set(CMAKE_CXX_COMPILER ${tools}/bin/arm-linux-gnueabi-g++)
写入完成后,在vim普通模式下,输入:wq
保存退出。
修改 CMakeLists.txt
文件,注释无需使用的库,否则编译会报错。
ubuntu@ubuntu1804:~/T113-i/lvgl_demo/lv_port_linux$ vim CMakeLists.txt
注释完成后,在vim普通模式下,输入:wq
保存退出。
编译例程
为了方便执行编译操作,在示例项目文件lv_port_linux
里,编写一个脚本build.sh
,
ubuntu@ubuntu1804:~/T113-i/lvgl_demo/lv_port_linux$ vim build.sh