RK3588鲁班猫4交叉编译LVGL库v9.4.0的经验分享(Cmake)

写在前面

刚开始编译LVGL demo的时候出现了很多问题,想记录下来分享一下我的解决思路

LVGL执行结果

看到这个结果已经激动的不行了!!(终于能正常运行了)

硬件设备

开发板:鲁班猫4

Soc芯片:RK3588S2

板载系统:Debian lite版 (Linux内核版本5.10.160)

mipi屏幕:7寸LCD电容屏(1024x600)

LVGL移植

1.1 下载源码

在Ubuntu虚拟机中,克隆github最新的官方源码(我的是v9.4.0),需要克隆以下两个目录:

  • lv_port_linux(demo目录,这个就是整个项目的一个框架目录,在最后编译整个项目的时候就是在这个目录下使用cmake编译)
  • lvgl(LVGL库的核心源码)

lv_port_linux地址:https://github.com/lvgl/lv_port_linux

lvgl地址:https://github.com/lvgl/lvgl

将克隆的lvgl目录替换掉lv_port_linux目录下的lvgl文件夹

最终的demo目录下的文件情况如下(build文件夹和build.sh是后面自己加的):

移植完的这个工程,目前只支持显示,不支持触摸屏的

1.2 修改lv_conf.h配置文件

修改LV_COLOR_DEPTH为24,指定触摸屏色彩格式为RGB888(对应自己触摸屏的像素格式)

修改LV_USE_EVDEV为1,开启触摸功能

其他的根据自己的实际情况来修改

注意:LVGLv9.3.0之后不需要在开发板终端手动指定触摸设备节点了

交叉编译(Cmake)

2.1 前期准备

在Ubuntu虚拟机上,

(1)安装gcc和g++交叉编译工具链(gcc-aarch64-linux-gnu和g++-aarch64-linux-gnu),aarch64为目标平台的架构(要根据自己的开发板平台架构选择)

sudo apt update
sudo apt install gcc-aarch64-linux-gnu g++-aarch64-linux-gnu

(2)安装cmake,注意要保证版本高于lvgl项目目录下CMakeLists.txt文件中指定的最低版本

下方是CMakeLists.txt文件,第一行就是指定了LVGL要求的cmake最低版本

2.2 修改Cmake工具链文件

使用vi命令修改lvgl demo目录下的user_cross_compile_setup.cmake文件

  • 要将SYSTEM_PROCESSOR的arm改为aarch64,因为RK3588是arm64位。
  • 指定C和C++的交叉编译器地址:已经安装好的aarch64交叉编译工具链地址
  • 因为我们不使用野火鲁班猫SDK中的交叉编译工具链,可以不用设置最下面的STAGING_DIR

建议不要使用野火鲁班猫SDK中的交叉编译工具链!!之前用了后面我出现了很多问题

2.3 开始编译

编写shell脚本build.sh,会在demo目录下创建build子目录,在里面生成Makefile文件,并将编译后的相关文件和可执行文件保存在里面

#! /bin/bash
rm -rf build
mkdir -p build
cd build/
cmake -DCMAKE_TOOLCHAIN_FILE=../user_cross_compile_setup.cmake ..
make -j8

编译后的可执行文件就保存在build/bin/目录下

2.4 运行

  • 将可执行文件lvglsim通过MobaXterm上传到板卡上(需要使用SSH连接板卡)
  • 加权限后执行
chmod +x ./lvglsim    #添加可执行权限
./lvglsim    #运行可执行文件

2.5 运行效果

触摸效果正常

真会这么顺利吗?no no no(如果直接成功那你是这个),以下是解决思路分享

遇到的问题

3.1 /usr/lib/gcc-cross/aarch64-linux-gnu/9/../../../../aarch64-linux-gnu/bin/ld: cannot find -levdev

问题解析:在make最后时刻,链接库的时候提示cannot find -levdev,表示在交叉编译器的库目录里找不到目标平台(aarch64)的libevdev库文件

注意:这个不是说ubuntu虚拟机环境下找不到这个库(我之前还在懵逼了,明明apt install这个库了。之前对交叉编译这个概念理解的不是特别通透)

libevdev库官网:libevdev

解决方法:在Ubuntu虚拟机中,下载tar.xz文件后解压,进入目录,执行./configure命令,注意要指定目标平台--host,并指定gcc编译器为交叉编译工具的gcc(不然默认是编译成x86平台),即通过CC=交叉编译工具gcc的路径。这里的--prefix是路径前缀,库编译后的so文件会安装在这个前缀路径下的lib目录下

最后make && sudo make install,这样交叉编译工具就可以找到这个库了

3.3 Error: cannot open framebuffer device: No such file or directory

这个是mipi触摸屏的驱动没有正确打开,或物理接口连接不良

开启驱动:只需要修改下面的配置文件即可

sudo vi /boot/uEnv/uEnv.txt   #修改配置文件

注释掉vp3下面的dsi1-1024x600-overlay.dtbo前面的#号即可(选择自己触摸屏的型号)

这是使用设备树插件的方式,开启触摸屏驱动。最后需要保存配置文件,重启系统

注意:鲁班猫4板卡上的有两个MIPI DSI接口,正面为dsi1,背面为dsi0

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值