天嵌TQT开发板linux系统,移植百问网lvgl8.1踩坑指南


1 获取资料,

获取主仓库源码 git clone https://gitee.com/weidongshan/lv_100ask_linux_desktop.git

此时会在当前目录下,下载好一个 名字为 lv_100ask_linux_desktop 的文件夹,    cd  lv_100ask_linux_desktop 

同步子仓库模块  git submodule update –init –recursive

到此代码库下载结束

后期如果更新代码库,则需要执行   git submodule update –remote

 

 

2 修改Makefile

在 lv_100ask_linux_desktop 下根据指示执行拷贝 dbus 相关内容,此处不同厂家的linux开发板不一样,天嵌开发板提供的SDK中所有的交叉编译文件和源码文件存放在

/opt/EmbedSky/gcc-linaro-7.4.1-2019.02-x86_64_aarch64-linux-gnu/sysroot

所以查找资料就需要从这里查找了

sudo find /opt/EmbedSky/gcc-linaro-7.4.1-2019.02-x86_64_aarch64-linux-gnu/sysroot/ -name *dbus*

天嵌TQT开发板linux系统,移植百问网lvgl8.1踩坑指南

 

 

 根据查找结果,确认需要进入的目录,此处我的目录是

/opt/EmbedSky/gcc-linaro-7.4.1-2019.02-x86_64_aarch64-linux-gnu/sysroot/usr/include

进入次目录后,然后根据100ask提供的指令进行复制

 

 

cp dbus-1.0/dbus/ -rfd .

 然后执行数据同步指令    sync

最后添加如下,添加时候注意 / 符号,

-I /opt/EmbedSky/gcc-linaro-7.4.1-2019.02-x86_64_aarch64-linux-gnu/sysroot/usr/include /
-I /opt/EmbedSky/gcc-linaro-7.4.1-2019.02-x86_64_aarch64-linux-gnu/sysroot/usr/lib/dbus-1.0/include

CFLAGS添加结束后,执行make 发现报错,

/opt/EmbedSky/gcc-linaro-7.4.1-2019.02-x86_64_aarch64-linux-gnu/bin/../lib/gcc/aarch64-linux-gnu/7.4.1/../../../../aarch64-linux-gnu/bin/ld: cannot find -ldbus-1

百度后发现找不到对应的文件,另一种可能是,在  /lib 和 /usr/lib 这两个目录下都没有找到与之匹配的库,也可能存在了,但是不是交叉编译需要的函数,因此需要在编译时候就指定目录 ,此处我经过 find 查找,经过多次尝试最终确定在

/opt/EmbedSky/gcc-linaro-7.4.1-2019.02-x86_64_aarch64-linux-gnu/sysroot/usr/lib

因此最终 Makefile 修改结果如下(注意不要自己私自添加LIBS,因为其他的app的编译目录中,只有LDFLAGS,若想修改,其他APP的Makefile也必须全部修改)

天嵌TQT开发板linux系统,移植百问网lvgl8.1踩坑指南

 

 

 

 

 

3 编译

编译时执行如下指令

make clean && make -j$(nproc) RUN_JOBS=-j$(nproc)

一般情况下可以直接执行,但是我这里报错如下天嵌TQT开发板linux系统,移植百问网lvgl8.1踩坑指南

 

 

 

我在    /opt/EmbedSky/gcc-linaro-7.4.1-2019.02-x86_64_aarch64-linux-gnu/sysroot    目录下进行搜索,发现如下目录有这个,于是简单的将以下两个目录添加到编译环境中,但是依然报错找不到

/opt/EmbedSky/gcc-linaro-7.4.1-2019.02-x86_64_aarch64-linux-gnu/sysroot/usr/lib/

/opt/EmbedSky/gcc-linaro-7.4.1-2019.02-x86_64_aarch64-linux-gnu/sysroot/lib/

开始时候未怀疑  libpthread.so文件,为了找到原因,我开启100ask的编译环境,根据需要修改makefile,执行编译发现正常执行,于是我开始怀疑 libpthread.so

//100ask 编译时候需要的东西(注意不同板子,对应目录不一样)
-I ~/100ask_imx6ull-sdk/ToolChain/arm-buildroot-linux-gnueabihf_sdk-buildroot/include /
-I ~/100ask_imx6ull-sdk/ToolChain/arm-buildroot-linux-gnueabihf_sdk-buildroot/arm-buildroot-linux-gnueabihf/sysroot/usr/include/dbus-1.0/include

cd ~/01_lvgl/lv_100ask_linux_desktop/
cd ~/100ask_imx6ull-sdk/ToolChain/arm-buildroot-linux-gnueabihf_sdk-buildroot/include
make clean && make -j$(nproc) RUN_JOBS=-j$(nproc)

 

通过以下指令可以在指定文件夹下开始遍历 子目录和当前目录下所有文件,查找指定内容

//从当前目录下所有文件中搜索 libpthread.so.0
sudo grep -nr -i libpthread.so.0 *

在打开天嵌TQT编译环境下libpthread.so文件时发现,是个文本文件,如下,并且,此处目录已经指定了,结合之前,百度结果中有一条,编译后目录不能随意乱动,突然意识到,这个应该是交叉编译时候,可能没有设置好

天嵌TQT开发板linux系统,移植百问网lvgl8.1踩坑指南

 

 

为了解决这个问题,我突然想到,之前咨询厂家售后时候,了解到注意下检查下动态库是否有对应文件,检查软连接  我到对应 /lib       /usr/lib   文件夹下未找到软连接,因此可以创建对应软连接如下

sudo ln -s /opt/EmbedSky/gcc-linaro-7.4.1-2019.02-x86_64_aarch64-linux-gnu/sysroot/usr/lib/* /usr/lib/
sudo ln -s /opt/EmbedSky/gcc-linaro-7.4.1-2019.02-x86_64_aarch64-linux-gnu/sysroot/lib/* /lib/

 

之后执行  以下指令   正常编译

make clean && make -j$(nproc) RUN_JOBS=-j$(nproc)      

 

 

4 源码修订

在编译好,移植后,我发现报错

object_path: net.ask100.lvgl.Main, object_iface: /net/ask100/lvgl/Main
Segmentation fault

百度后,发现 Segmentation fault 是内存溢出错误,在添加打印点和多次尝试后,感觉官方提供的方案稍微有点不舒服,于是我进行以下小修改主要是修改main下的 lv_100ask_demo_init_icon(); 函数

目录如下     ./lv_100ask_modules/src/lv_100ask_demo_init_icon/

天嵌TQT开发板linux系统,移植百问网lvgl8.1踩坑指南

 

 

 另一项修改是根据自己需要,在    lv_drv_conf.h    修改自己的触摸的设备事件号

查看所有设备信息    cat /proc/bus/input/devices

监听事件1的事件数据     cat /dev/input/event1 | hexdump

天嵌TQT开发板linux系统,移植百问网lvgl8.1踩坑指南

 

 在main入口文件根据需要,修改屏幕分辨率,  根据需要在  lv_conf.h 修改LV_COLOR_DEPTH参数

天嵌TQT开发板linux系统,移植百问网lvgl8.1踩坑指南

 

 

修改完毕后,重新编译

 

 

 

5 移植

移植时,需要注意文件位置

推荐 文件放置在    /usr/share/100ask_desktop/ 目录下,因为 services 下默认指定是这个目录,创建这样的目录就不用修改   *.service  文件了

天嵌TQT开发板linux系统,移植百问网lvgl8.1踩坑指南

 

 

文件目录如下,注意

将  assets/icon下所有的文件复制出来,复制到  /usr/share/100ask_desktop/ 目录下,

将编译完毕的文件复制到  /usr/share/100ask_desktop/ 目录下,

将整个assets复制到 /usr/share/100ask_desktop/ 目录下

天嵌TQT开发板linux系统,移植百问网lvgl8.1踩坑指南

 

 

关于 dbus-1 服务的设置

为了找到这块开发板的 dbus-1 服务位置   执行指令    find / -name dbus-1    

天嵌TQT开发板linux系统,移植百问网lvgl8.1踩坑指南

 

 一个一个筛查,发现在 /usr/share/dbus-1/services/  目录下

将 assets/services下的内容复制到此目录下

天嵌TQT开发板linux系统,移植百问网lvgl8.1踩坑指南

 

 

天嵌TQT开发板linux系统,移植百问网lvgl8.1踩坑指南

在板子 /usr/share/100ask_desktop/ 目录下,依次执行以下指令就可以运行起来了

export $(dbus-launch)

./100ask_lvgl_Main

 

 

 

、、

原创文章,作者:wure,如若转载,请注明出处:https://blog.ytso.com/270869.html

(0)
上一篇 2022年6月30日
下一篇 2022年6月30日

相关推荐

发表回复

登录后才能评论