IMX6ULL QT移植

.根文件系统制作

我是使用buildroot制作的根文件系统,针对imx6ull的buildroot文件系统制作资料较多,不再赘述,只写下我遇到的问题:

我是使用nfs挂载文件系统的,结果挂在以后无法进入控制台,提示

can't open /dev/ttymxc0: Permission denied

显示没有权限,最终在https://www.cnblogs.com/Rainingday/p/12483773.html下找到了答案(谢谢不明白就去明白);

使用sudo chown root * -R更改当前目录下所有的文件的owner(就是所有者)为root,-R意思是循环遍历,如果当前目录下有子目录,同时更改那些子目录。重新上电即可。

可能跟nfs挂载也有关系,如果使用SD卡加载应该就没问题了。

  • tslib编译

  1. 触摸源码下载:Tags · Martin Kepplinger / tslib · GitLabicon-default.png?t=LA92https://gitlab.com/tslib/tslib/-/tags
  2. 下载源码后,复制到ubuntu中,解压文件:tar -xvf tslib-1.22.tar.gz
  3. 编译过程:

./autogen.sh

./configure --prefix=/opt/tslib1.22 --host=arm-linux-gnueabihf ac_cv_func_malloc_0_nonnull=yes

make

make install

注意事项:在root权限下进行编译,主要在于--prefix路径一般放在/opt路径下,需要root权限,否则无法创建文件夹;

编译完成后,在/opt下有talib1.22文件夹,文件夹下面如下:

 

如果提示缺少库,可根据同时apt get install xx;也可提前安装:

apt-get install autoconf automake libtool pkg-config m4

  • QT源码编译

  1. QT源码下载:我是从清华大学开源软件镜像站下载的:

网址:Index of /qt/archive/qt/5.9/5.9.9/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirroricon-default.png?t=LA92https://mirrors.tuna.tsinghua.edu.cn/qt/archive/qt/5.9/5.9.9/

 

也可从官网下载

  1. 下载源码后,复制到ubuntu中,解压文件:tar -xvf qt-everywhere-opensource-src-5.9.9.tar.xz
  2. 在 qt-everywhere-opensource-src-5.9.9 目录下,打开 qtbase/mkspecs/linux-arm-gnueabi-g++/qmake.conf 文件,根据自己的交叉编译工具修改,我使用的是arm-linux-gnueabihf-gcc,修改后文件如下:

 

  1. 编译流程:生成makefile->make->make install

使用./configure 生成makefile,由于./configure 参数较多,一般使用脚本文件进行配置,新建“autoconfigure.sh”脚本:

 

网上例程中的-qt-sql-sqlite \ -no-nis \编译过程会报错,可能是版本问题,删除后编译成功;

然后,make; make install便会在/opt/qt5.9.9目录下生成源文件:

  • 部署QT文件系统

打开之前使用buildroot编译的文件系统(nfs挂载):

  

里面已经存在/opt文件夹;

.我们把编译好的触摸和 QT 拷贝到/opt目录下:

 

配置触摸以及QT路径:

 

加载到开发板上运行,进入开发板的文件系统:

 

进入到tslib1.22/bin目录下,执行./ts_calibrate,进行屏幕校准,

发现报错:./ts_calibrate: line 1: syntax error: unexpected "(",百度后发现应该是交叉编译的问题,使用file ts_calibrate发现确实不是arm可执行程序,而是x86架构下的,因此从解压文件开始又从头来了一遍以后,发现OK,没找到问题,可能是交叉编译工具链配置错误,没有起作用。

./ts_test进行触摸测试,发现OK;

  • 运行QT例程

到最后一步了,仍然在清华镜像开源网站上下载qt-opensource-linux-x64-5.9.9.run,复制到ubuntu中,直接运行./qt-opensource-linux-x64-5.9.9.run,安装Qt Creator

随意找一个例程,如下:

找到该文件路径,执行./opt/qt5.9.9/bin/qmake,生成Makefile,直接make便可编译出在arm上运行的qt程序calendarwidget,将其放在开发板/opt目录下;执行./calendarwidget

 

发现报错:

/lib/libstdc++.so.6: version `CXXABI_1.3.9' not found

执行命令

strings /lib/libstdc++.so.6|grep CXXABI

发现确实没有CXXABI_1.3.9,应该是因为我编译器版本(4.9.4)太低了,导致库文件版本与qt版本不匹配,因此我升级了一下(5.4.0),在升级后的lib里找到了更高版本的libstdc++.so.6和libstdc++.so.6.0.24,其中libstdc++.so.6是libstdc++.so.6.0.24的符号链接;将这两个文件拷贝到开发板目录/lib下,再确认下:

 

发现已经有CXXABI_1.3.9;

重新执行qt程序,界面显示正常:

 

但是触摸不准,随后重新使用./ts_calibrate重新校准也没用,经查阅相关资料,发现内核中触摸芯片ft5x06驱动文件 drivers/input/touchscreen/edt-ft5x06.c

 

ABS_X/ABS_Y分别为800和1280,导致上报的触摸数据存在偏差,成比例拉伸,将其修改成1024x600后,为保证修改彻底,把设备树里面的屏幕参数也作了修改。重新编译内核后,再次执行,触摸也OK了!。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值