ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

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

2022-06-30 14:03:11  阅读:166  来源: 互联网

标签:gnu aarch64 100ask 开发板 TQT 天嵌 linux 目录 usr


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*

 

 

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

/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也必须全部修改)

 

 

 

 

 

3 编译

编译时执行如下指令

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

一般情况下可以直接执行,但是我这里报错如下

 

 

 

我在    /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文件时发现,是个文本文件,如下,并且,此处目录已经指定了,结合之前,百度结果中有一条,编译后目录不能随意乱动,突然意识到,这个应该是交叉编译时候,可能没有设置好

 

 

为了解决这个问题,我突然想到,之前咨询厂家售后时候,了解到注意下检查下动态库是否有对应文件,检查软连接  我到对应 /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/

 

 

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

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

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

 

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

 

 

修改完毕后,重新编译

 

 

 

5 移植

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

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

 

 

文件目录如下,注意

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

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

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

 

 

关于 dbus-1 服务的设置

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

 

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

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

 

 

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

export $(dbus-launch)

./100ask_lvgl_Main

 

 

 

、、

标签:gnu,aarch64,100ask,开发板,TQT,天嵌,linux,目录,usr
来源: https://www.cnblogs.com/RYSBlog/p/16426616.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有