aleksib 发表于 2024-8-1 10:11

百问网全志T113-PRO LVGL环境配置

## 运行LVGL示例


### 启动开发板

​ 按要求接入电源或Type-c数据线,拨动拨码开关,将开发板上电

### 运行LVGL示例

​ 打开串口终端软件,这里我使用MobaXterm软件演示,选择开发板的串口终端号,可以在设备管理中查看

!(//file1.elecfans.com/web2/M00/FF/DE/wKgZomaq7FuAG9SDAABbOkbiNCA653.png)

这里我的串口设备号为`COM15`,所以在串口终端软件中也应该使用`COM15`,波特率为115200。操作步骤如下所示:

!(http://photos.100ask.net/allwinner-docs/lvgl8-ui/100ask-lvgl-serial-demo.gif)

上面操作以7寸RGB屏作为演示硬件测试指令,输入:

```
root@TinaLinux:/# lv_examples 0
wh=1024x600, vwh=1024x1200, bpp=32, rotated=0
Turn on double buffering.
```

输入后,显示屏上会显示如下如所示的LVGL示例:

![](//file.elecfans.com/web2/M00/4A/B1/poYBAGKoBOiATMJXACTyZ2MYFbM991.gif)

注意:LVGL示例会自动适配屏幕,可能和上面展示的比例不一致。

​ 系统中内置有5个LVGL演示应用,如下所示:

```
lv_examples 0, is lv_demo_widgets
lv_examples 1, is lv_demo_music
lv_examples 2, is lv_demo_benchmark
lv_examples 3, is lv_demo_keypad_encoder
lv_examples 4, is lv_demo_stress
```

## 开发LVGL程序

### 配置编译lvgl环境

**注意:**如果您使用的是前文 `开始使用-->运行虚拟机 方式二` 中 我们提供好的虚拟机,可直接跳过此章节,进入下一小节《编译LVGL源码》;如果您是自己配置的虚拟机,请认准阅读并按此章节进行操作。

​ 假设将下载的工具链和源码tar.gz格式的压缩包文件传入虚拟机的任意目录中,这里我新建一个lvgl工作目录存储三个压缩包。输入:

```
ubuntu@ubuntu1804ubuntu@ubuntu1804:~$ mkdir lvgl-work
ubuntu@ubuntu1804:~$ cd lvgl-work
```

将`allwinner-tinasdk_lvgl8_demo_V1.0.tar.gz`文件传入`lvgl-work`目录中,如下所示:

```
ubuntu@ubuntu1804:~/lvgl-works$ ls
allwinner-tinasdk_lvgl8_demo_V1.0.tar.gz
```

新建`toolchain`文件夹用于存储`sysroot`和`gcc`文件夹

```
ubuntu@ubuntu1804ubuntu@ubuntu1804:~$ mkdir toolchain
ubuntu@ubuntu1804:~$ cd toolchain
```

传入压缩包后,如下所示:

```
ubuntu@ubuntu1804:~/lvgl_work/toolchain$ ls
100ask_t113-pro_arm-openwrt-linux-eabi-glibc_sysroot_v1.0.tar.gz
gcc-6.4-2017.11-x86_64_arm-openwrt-linux-eabi-musl.tar.gz
```

在toolchain目录中解压gcc工具链压缩包和sysroot依赖压缩包,输入:

```
tar -xzvf gcc-6.4-2017.11-x86_64_arm-openwrt-linux-eabi-musl.tar.gz
```

```
tar -xzvf 100ask_t113-pro_arm-openwrt-linux-eabi-glibc_sysroot_v1.0.tar.gz
```

解压完成后返回上一级lv_work目录中输入:

```
ubuntu@ubuntu1804:~/lvgl_work/toolchain$ cd ../
ubuntu@ubuntu1804:~/lvgl_work$
```

解压lvgl demo源码压缩包

```
tar -xzvf allwinner-tinasdk_lvgl8_demo_V1.0.tar.gz
```

解压完成后的目录如下所示:

```
ubuntu@ubuntu1804:~/lvgl_work$ tree -L 2
.
├── allwinner-tinasdk_lvgl8_demo_V1.0.tar.gz
├── lv_port_linux_frame_buffer
│   ├── CMakeLists.txt
│   ├── LICENSE
│   ├── lv_conf.h
│   ├── lv_drivers
│   ├── lv_drv_conf.h
│   ├── lvgl
│   ├── main.c
│   ├── Makefile
│   ├── mouse_cursor_icon.c
│   └── README.md
└── toolchain
    ├── 100ask_t113-pro_arm-openwrt-linux-eabi-glibc_sysroot_v1.0.tar.gz
    ├── arm-openwrt-linux-eabi-musl
    ├── gcc-6.4-2017.11-x86_64_arm-openwrt-linux-eabi-musl.tar.gz
    ├── sysroot
    └── toolchain

7 directories, 11 files
```

其中`lv_port_linux_frame_buffer`为LVGL Demo示例源码;`toolchain`中包含gcc交叉编译工具链和sysroot依赖文件。

下面开始修改源码中的Makefile文件,使lvgl源码使用下载的工具链进行编译。

进入gcc工具链文件目录的bin目录中查看交叉编译工具链是否存在

```
ubuntu@ubuntu1804:~/lvgl_work/toolchain/arm-openwrt-linux-eabi-musl/bin$ ls arm-openwrt-linux-muslgnueabi-gcc
arm-openwrt-linux-muslgnueabi-gcc
ubuntu@ubuntu1804:~/lvgl_work/toolchain/arm-openwrt-linux-eabi-musl/bin$ pwd
/home/ubuntu/lvgl_work/toolchain/arm-openwrt-linux-eabi-musl/bin
```

`arm-openwrt-linux-muslgnueabi-gcc`交叉编译工具链绝对路径为:

```
/home/ubuntu/lvgl_work/toolchain/arm-openwrt-linux-eabi-musl/bin/arm-openwrt-linux-muslgnueabi-gcc
```

进入LVGL源码目录中,查看源码文件。

```
ubuntu@ubuntu1804:~/lvgl_work$ cd lv_port_linux_frame_buffer/
ubuntu@ubuntu1804:~/lvgl_work/lv_port_linux_frame_buffer$ ls
CMakeLists.txtLICENSElv_conf.hlv_driverslv_drv_conf.hlvglmain.cMakefilemouse_cursor_icon.cREADME.md
```

修改Makfiel文件

```
vi Makefile
```

修改Makefile文件中`CC`为刚刚前面确认的交叉编译工具链路径,例如我刚刚确认的gcc交叉编译工具链绝对路径为:

```
/home/ubuntu/lvgl_work/toolchain/arm-openwrt-linux-eabi-musl/bin/arm-openwrt-linux-muslgnueabi-gcc
```

那么修改Makfile文件中的`CC`修改为gcc交叉编译工具链绝对路径。

!(//file1.elecfans.com/web2/M00/00/C7/wKgaomaq7FuAH3_sAAAzynaOVYo599.png)

修改步骤如下所示:

!(http://photos.100ask.net/allwinner-docs/lvgl8-ui/100ask-lvgl-modifyMakefile.gif)

修改完成后,保存退出编辑界面。

### 编译LVGL源码

此时还需要指定存放交叉编译需要使用的工具链、库文件、头文件的文件夹。在终端输入

```
export ARCH=arm
export CROSS_COMPILE=arm-openwrt-linux-muslgnueabi-
export PATH=$PATH:/home/ubuntu/lvgl_work/toolchain/arm-openwrt-linux-eabi-musl/bin/
export SYSROOT_DIR=/home/ubuntu/lvgl_work/toolchain/sysroot/
export STAGING_DIR=/home/ubuntu/lvgl_work/toolchain/arm-openwrt-linux-eabi-musl/
```

注意:如果您是自己配置的虚拟机的请修改为对应的路径,,如果使用我们提供的方式二 直接 复制 粘贴到 ubuntu18.04终端执行即可。

配置完成后,输入`make`即可开始编译。编译过程如下所示:

!(http://photos.100ask.net/allwinner-docs/lvgl8-ui/100ask-t113-lvgl-makeAndBuild.gif)

等待编译完成后,会在当前目录下生成名称为`demo`的应用程序。

```
book@100ask:~/lvgl-work/lv_port_linux_frame_buffer$ ls demo
demo
```

### 上传至开发板运行

注意: 默认情况下 上述的 ubuntu系统配置环境 以及我们制作的虚拟机镜像已经配置好 adb环境,大家只需要 参考 文章 (http://allwinner-docs.100ask.org/Basic/100ASK_V853-PRO/03-StartFirstExperience.html#_3-%E9%80%9A%E8%BF%87adb%E4%BC%A0%E8%BE%93%E6%96%87%E4%BB%B6) 讲您的开发板 挂载至 ubuntu系统上 即可操作如下步骤 开始进行上传操作。

在ubuntu系统下使用ADB功能将生成`demo`应用程序传输到开发板中运行,将ADB设备连接到虚拟机端中。查看ADB设备的设备号

```
abd devices
```

传输LVGL示例程序进开发板端的root目录下

```
adb push demo /mnt/UDISK
```

操作过程如下所示:

!(http://photos.100ask.net/allwinner-docs/lvgl8-ui/100ask-lvgl-adbPush.gif)

传输完成后,切换到开发板串口终端软件,进入终端,输入 如下命令: 即可看到屏幕运行 自己编译新的demo程序。

```
root@TinaLinux:/# cd /mnt/UDISK
root@TinaLinux:/mnt/UDISK# ls
demo
root@TinaLinux:/mnt/UDISK# ./demo 0
wh=1024x600, vwh=1024x1200, bpp=32, rotated=0
```

输入完成后,即可实现镜像中内置的lvgl demo演示示例。

Jacktang 发表于 2024-8-2 07:27

<p>如果是自己配置的虚拟机的需要修改为对应的路径,谢谢提醒</p>
页: [1]
查看完整版本: 百问网全志T113-PRO LVGL环境配置