Ubuntu16.04+BeagleBoneBlack+ Qt5.9.3

                     Ubuntu16.04+BeagleBoneBlack+ Qt5.9.3

目录

1、系统版本说明.... 1

1.1软件版本说明:.... 1

1.2、硬件连接说明.... 4

2、Ubuntu双系统安装... 5

2.1、系统盘制作.... 5

2.2、Ubuntu系统安装.... 5

3、Ubuntu:Qt5.9.3安装.... 11

4、     Ubuntu:交叉编译链安装... 11

5、Ubuntu:tslib触摸屏驱动.... 13

6、Ubuntu:交叉编译链生成Qt_arm... 15

7、Ubuntu:Qt5.9.3 Kit设置.... 20

8、BeagleBoneBlack:系统盘制作.... 27

9、Ubuntu:串口连接BeagleBone minicom... 28

10、Ubuntu:SSH传输文件到BBB. 31

11、BeagleBone:环境变量设置.... 34

12、BeagleBone:运行及其效果.... 36

 

关键词:Ubuntu16.04  BeagleBoneblack Qt5.9.3 交叉编译链 SSH minicom

笔者同款软件包:

链接:https://pan.baidu.com/s/1XAIUMPLiBexXx9TKKHvhhA 
           提取码:l1ad 
复制这段内容后打开百度网盘手机App,操作更方便哦

1、系统版本说明

笔者使用的版本,在配置完成后复现了三次(带桌面的和不带桌面的),如果还不行可以稍微考虑一下硬件问题了。

  • 交叉编译的Qt版本:5.9.3(此版本应该可以与上面的版本不一样)

http://download.qt.io/archive/qt/5.9/5.9.3/single/

(不要下载.zip格式,该文件在ubuntu中解压之后的./congfigure文件无法运行,其中原因是含有windows下的换行符,需要全部替换掉才能运行,(sed -i 's/\r$),好多文件都有就懒得整了,所以就别下载zip格式的。)

 

  • 交叉编译链版本:Linaro GCC 6.3-2017.05

http://releases.linaro.org/components/toolchain/binaries/6.3-2017.05/arm-linux-gnueabihf/

  • Tslib: tslib 1.18-rc2:

https://github.com/kergoth/tslib

 

  • BeagleBoneBlack版本:Debian 9.5 2018-10-07 4GB SD LXQT

https://beagleboard.org/latest-images

此处两个版本的区别是第一个不带图形桌面。不带桌面的之后自己装一个桌面比较好看!

 

 

1.2、硬件连接说明

BeagleBoneBlack、串口线、Usb线、网线、电源线、micro-HDMI-VGA线(需要充电头增强电流)、VGA线、显示屏、两个集线器、键盘、鼠标等

红色框框标出来的地方接一个集线器插键盘鼠标。

 

2、Ubuntu双系统安装

本人从零开始制作,在台式机或者笔记本上安装Ubuntu16.04双系统,总觉得虚拟机不太好(个人感觉而已)。

  • 准备一个U盘作为启动盘。

  • 下载好系统镜像。

 

2.2、Ubuntu系统安装

我的电脑是在电脑启动的时候按:F12

选择不带UEFI的启动,要不然就安装失败!!!

接着进入下面界面,直接按照,第一个也可以,进去会先体验一下界面,里面也能安装:

进去后选择中文安装,当然英语好的伙伴那你们就随意了:

直接继续:

接着这一步一定要选择其他选项,否则就把你电脑的其他系统搞坏了!当然你要是安装到与其他电脑共存也可以,但是这样你要是想卸载这个系统的时候就会头疼了,我的笔记本就由于这样的偷懒,导致现在C盘128G满了,还不敢轻易删文件!

接着对系统进行分盘,这是在windows的时候释放出来的空间,当然如果你没有在windows释放空间,你要是对你的资料不在意,就随便选个盘,安装前会自动格式化!点击加号+分盘:

分区可以只用三个分区:“/”“/home”“swap”

(网上说法)

“/”15-20G

“swap”:内存条8G一下选取内存条的两倍,高于8G就设置和内存条一样大就好

“home”:剩下的给它我只剩了35G.

分区完成后直接点击安装,不要改安装启动引导项,默认的就好使,你要是修改了可能就需要修复引导项乱七八糟的了,多一事不如少一事:

一路继续到这儿:

接下来就需要经历一段漫长的等待,泡杯茶刷会儿抖音吧!

最后重启,记得拔掉U盘。不然又从U盘启动了!

开机后进入的界面:

系统安装完毕!

 

3、Ubuntu:Qt5.9.3安装

下载好的安装包拷贝到/home/***/中,当然随你装哪儿都行。

直接运行这个文件(可以命令行也可以直接双击),如果不能运行就需要更改一下文件的权限:

sudo chmod 777 qt-opensorce-linux-x64-5.9.3.run

./qt-opensorce-linux-x64-5.9.3.run

 

接着就有图形化界面一路安装了!

这个博客写的挺仔细:

https://blog.csdn.net/wuweifeng_2017/article/details/78322249

如果你在低版本的Ubuntu系统上安装Qt5.9.3,在编译程序时候可能会出错,这时候出错的原因是因为linux系统的编译器版本过低,或者是安装了多个gcc版本,而低版本的优先级较高!需要做的就是安装高版本的gcc并将高版本的gcc优先级设置的比低版本的高,即默认使用高版本!

4、Ubuntu:交叉编译链安装

下载好与BeagleBoneBlack上相同的版本最好了,比他低的也可以,但是不能超过BBB上面的版本,否则程序运行报错!

交叉编译链有好多种,其中也有很多区别,建议看一看此博客:

http://www.cnblogs.com/xiaotlili/p/3306100.html

下载的压缩包解压即可使用,该压缩包是双层压缩,所以解压命令肯不太相同:

tar -xvJf gcc-linaro-6.3.1-2017.05-x86_64_arm-linux-gnueabihf.tar.xz

解压后由于文件名太长,看着不舒服(后面配置环境要输入,太长了敲起来烦):

mv gcc-linaro-6.3.1-2017.05-x86_64_arm-linux-gnueabih gcc-linaro-arm-linux-gnueabihf-6.3

将重命名的文件放到此文件夹下:

sudo cp -rf gcc-linaro-arm-linux-gnueabihf-6.3 /usr/local/

配置用户和root的其中之一就行,我是两个都配置了:

配置用户的环境变量(类似于windows里的环境变量,我就这么称呼了):

sudo gedit ~/.bashrc

在文件后面加上这句:

export PATH=$PATH:/usr/local/gcc-linaro-arm-linux-gnueabihf-6.3/bin/

终端键入下面代码使配置生效:

source ~/.bashrc

配置root的环境变量,即所有用户的:

sudo gedit /etc/profile

加入最后一行:

export PATH=$PATH:/usr/local/gcc-linaro-arm-linux-gnueabihf-6.3/bin/

使配置生效:

source /etc/profile

这样就可以在任意目录的终端输入:

arm-linux-gnueabihf-gcc –v

 

 

5、Ubuntu:tslib触摸屏驱动

将在github中下载的源码直接解压(unzip),解压后的文件名为tslib-master.

编译之前需要安装是三个支持包,当然你的系统可能已经有了!

sudo apt-get install autoconf automake libtool

安装完成后执行下图所示命令,如果运行不了就改一下文件权限:

紧接着输入:

./configure --prefix=/home/ws/tslib --host=arm-linux CC=/usr/local/gcc-linaro-arm-linux-gnueabihf-6.3/bin/arm-linux-gnueabihf-gcc

--prefix=输出路径,可以提前建好文件夹。

CC=交叉编译链路径;如果你跟我拷贝到的文件夹一样,就不用改了!

接着 make 编译;

Make结束后输入:

make install –j4

其中j4是四核同时参与编译,速度快,如果你还要干别的事情,就-j3。

完成之后看/home/ws/tslib目录有没有生成下列文件:

如果生成了应该就是成功了!

 

6、Ubuntu:交叉编译链生成Qt_arm

解压下载好的安装包:

tar -xvJf qt-everywhere-opensource-src-5.9.3.tar.xz

在解压后的目录中新建一个文件命名为:autoconfigure.sh

红框框为文件路径。

#!/bin/sh

./configure \

-v \

-prefix /home/ws/Qt_ram \

-release \

-opensource \

-make libs \

-xplatform linux-arm-gnueabi-g++ \

-optimized-qmake \

-pch \

-sql-sqlite \

-qt-zlib \

-tslib \

-confirm-license \

-no-opengl \

-I/home/ws/tslib/include -L/home/ws/tslib/lib

其中:-prefix /home/ws/Qt \表示的是你指定的安装位置

-I/home/ws/tslib/include -L/home/ws/tslib/lib

表示的是你的tslib依赖库的路径。

其中各个配置可以根据自己需要修改。具体意义百度或者-help看英文的。

注意斜杠后不能有空格。

 

接着修改一下该文件的权限,使其可执行:

进入到此文件目录下:

将其中qmake.conf中的内容替换为如下内容:

#

# qmake configuration for building with arm-linux-gnueabi-g++

#

MAKEFILE_GENERATOR      = UNIX

CONFIG                 += incremental

QMAKE_INCREMENTAL_STYLE = sublib


include(../common/linux.conf)

include(../common/gcc-base-unix.conf)

include(../common/g++-unix.conf)

QT_QPA_DEFAULT_PLATFORM = linuxfb


#Compiler Flags to take advantage of the ARM architecture

QMAKE_CFLAGS_RELEASE = -O3 -march=armv7-a -mtune=cortex-a8 -mfpu=neon -mfloat-abi=hard

QMAKE_CXXFLAGS_RELEASE = -O3 -march=armv7-a -mtune=cortex-a8 -mfpu=neon -mfloat-abi=hard


# modifications to g++.conf

QMAKE_CC                = /usr/local/gcc-linaro-arm-linux-gnueabihf-6.3/bin/arm-linux-gnueabihf-gcc -lts

QMAKE_CXX               = /usr/local/gcc-linaro-arm-linux-gnueabihf-6.3/bin/arm-linux-gnueabihf-g++ -lts

QMAKE_LINK              = /usr/local/gcc-linaro-arm-linux-gnueabihf-6.3/bin/arm-linux-gnueabihf-g++ -lts

QMAKE_LINK_SHLIB        = /usr/local/gcc-linaro-arm-linux-gnueabihf-6.3/bin/arm-linux-gnueabihf-g++ -lts


# modifications to linux.conf

QMAKE_AR                = /usr/local/gcc-linaro-arm-linux-gnueabihf-6.3/bin/arm-linux-gnueabihf-ar cqs

QMAKE_OBJCOPY           = /usr/local/gcc-linaro-arm-linux-gnueabihf-6.3/bin/arm-linux-gnueabihf-objcopy

QMAKE_NM                = /usr/local/gcc-linaro-arm-linux-gnueabihf-6.3/bin/arm-linux-gnueabihf-nm -P

QMAKE_STRIP             = /usr/local/gcc-linaro-arm-linux-gnueabihf-6.3/bin/arm-linux-gnueabihf-strip


#support for the tslib user

QMAKE_INCDIR +=/home/ws/EIT_PAKAGE/tslib-master/src

QMAKE_LIBDIR +=/home/ws/tslib/bin

load(qt_config)

其中/usr/local/gcc-linaro-arm-linux-gnueabihf-6.3/bin/arm-linux-gnueabihf-gcc是交叉编译链的绝对路径。

QMAKE_INCDIR +=/home/ws/EIT_PAKAGE/tslib-master/src

QMAKE_LIBDIR +=/home/ws/tslib/bin

表示的是tslib的文件路径,需要改成你自己的!

 

退回到安装包的主目录:

执行autocongfigure文件:

开始配置:

配置成功后:

接着开始编译:

编译过程正常情况如图:(这个编译需要很长时间)

编译完成:

开始安装:

sudo make install -j4

安装完成:

至此,交叉编译的Qt5.9.3诞生了!

 

7、Ubuntu:Qt5.9.3 Kit设置

运行Qt5.9.3,在这儿搜索就好了:

将自己的Qt工程打开,如果是从windows平台移植过来的话,我是在Ubuntu上新建了一个工程,然后将文件一个个复制过来的,要不然就出奇怪的错误!其中如果是从Qt4移植到Qt5还需要在.pro文件中添加一些东西,不添加在编译的时候会遇到少了什么文件之类,我的添加如下:

还有头文件缺失:

不过这个好像没有什么影响,接着就是sqrt之类的函数没有定义,肯定也是头文件缺失了,直接多加一个就好了:

接下来配置Kits:

点击第一个框框,顺手将第二个框框调成Release版。

点击编译器,点击添加-->GCC-->C++,接着选择路径:

此路径为交叉编译器的路径(此处一定要选择g++而不是gcc,如果你选择gcc也不会提示错误,但是在编译后拷贝到开发板运行会出错):

点击Open,然后应用就好了。附上gcc、g++区别的博客:https://blog.csdn.net/bit_clearoff/article/details/53965514

 

接着配置Qt版本:

选择的是交叉编译后的Qt5.9.3的文件路径,我把它放在Qt_ram文件夹下:

同样,点击Apply就好了。

最后配置构建套件:

名字随便取,Sysroot配置的是交叉编译后的Qt路径,如下图,调试器不用管,也不用添加。

这样我们就看到BBB没有提示错误了,保存后看到多了一个BBB编译选项:

接着我就尝试着编译了一下我的工程:

出现的都是一些小问题,可以百度,例如我的这个:

这样就解决了,是不是so easy.

这样就生成了一个可以再RAM下运行的文件了!下面有介绍如何将此文件传输到BeagleBoneBlack中并执行!

也可以去终端确认一下他的文件类型:

这样在RAM上运行的工程文件就好了。

 

8、BeagleBoneBlack:系统盘制作

烧写BeagleBoneBlack的小软件下载,在windows系统的电脑上进行,在linux上没有找到可执行文件,一路Next就好了:

安装完成后打开:

第一个框框的映像文件是从beaglebone官网下载的镜像文件,路径中不能有中文。设备就是SD卡插上读卡器的盘符。点击写入等着就好了!

BeagleBone系统下载的镜像带桌面的和不带桌面的,带桌面的比较丑,如果不带桌面的自己装个桌面xfce4,效果如下,比自带的好看点:

内存扩展:

BeagleBone烧写出来的系统盘只有3.3个G,还没装点软件就满了,所以刚做好系统就先扩一下空间吧,扩展的方法网上有不少,然后我试的时候都失败了,错误为系统盘资源是被占用的。

接着发现有大神已经写好脚本在BBB中了:

将烧写好的SD卡放入BeagleBoneBlack中,启动系统,通过minicom进行终端操作(下一章节讲的如何配置minicom):

此文件路径下的脚本就是自动扩展系统空间的:

执行后重启板子就好了!软重启,输入reboot,直接拔电源会损坏板子!开机后你就拥有了SD卡的所有空间!

 

9、Ubuntu:串口连接BeagleBone minicom

硬件上用USB-URAT串口将连接好,只用连接三根线就好了,地线和电源线不用插。

首先你要查看连接BBB的串口的ID名字:

ls -l /dev/tty*

在插之前输入一次,插上之后输入一次,然后对比一下是哪个串口被改变了!我只有这个笨办法!

我的串口是这个:

接着安装minicom:

sudo apt-get install minicom

等待安装完成:

sudo minicom

输入密码:

首先配置minicom:

CTRL-A进入help页面:

键入 o进入上图页面,键盘上下移动到Serial port setup,回车开始设置:

第一个框框里面是端口名,我们需要改成连接BBB的端口,第二个框框是波特率,BBB上时115200—>回车确定.

例如我的端口名如下:

选择框框中的保存,不用sudo打开minicom是无法保存的。

这样minicom就配置好了,关闭这个终端重新打开:

sudo minicom

按一下回车才能出来登录哦!!然后输入BeagleBone的用户名和密码就好了:

默认的是:用户名:debian   密码:temppwd

 

10、Ubuntu:SSH传输文件到BBB

Beaglebone连接的是路由器,而台式机上插得是直接连校园网的网线的时候,这是我觉得最难的地方,因为我至今还没明白其中的原理。

一开始我的板子是能连上互联网就Ping不通BeagleBone.接下来就是对网关IP的一顿不知所云操作,最后竟然神奇的好了!所以先附上参考博客的大佬:https://blog.csdn.net/zj651927693/article/details/14046027

这哥们写的这个亲测好使,网上别的没用的博客倒是一搜一堆,这哥们的真难找,顶一下好吧!

网关IP等的介绍:https://www.cnblogs.com/JuneWang/p/3917697.html

之后我将BeagleBone和台式机连接到一个路由器上,没有进行设置就可以通信!

安装一个可视化软件进行文件传输:

安装完成后:

打开软件后输入地址就可以传输了:

主机输入:192.168.7.2            用户名就是板子上系统的用户名:debian

密码默认:temppwd                      端口默认:22

接下来把我在Ubuntu上交叉编译生成的文件传到BBB!

 

11、BeagleBone:环境变量设置

注:BeagleBone打开终端有两种方式,一种是在双系统的Ubuntu16.04下运行minicom,打开终端进行操作;另一种是直接在BeagleBone上面接鼠标键盘,在界面环境下打开终端,自己装的桌面版终端快捷方式应该不是Ubuntu上或者没有,我是鼠标点击出来的终端。笔者发现minicom和BeagleBone终端一样的错误报错的信息是不一样的,还是Beaglebone上报错的信息准确。所以尽量在Beaglebone上插鼠标键盘操作。

调试过程中主要遇到三个问题:

  • 内存溢出:导致这个原因的好多情况,虽然我不知道原因,但是解决了,所以不代表笔者的这种情况你那边也适用。逐步排查,首先解决是不是程序问题,生成一个helloworld程序测试也报这个错误,而且屏幕尺寸已经设置的很小!接着笔者探索到的方法是安装一个精简的桌面,虽然自带了一个桌面!

先更新源:

sudo apt-get update

然后安装桌面:

sudo apt-get install xfce4

这个需要一点时间!(前提是你已经插了网线在Beaglebone上)

这个错误应该是缺少库,直接安装一个就可以!

sudo apt-get install libqt5serialport5-dev –fix-missing

这个错误应该是肯定会出来的,表示libts.so.0不存在,然后你发现他确实存在而你却无可奈何!网上有建立软链接的方法说可以恢复,显然我不会。笔者机智的直接装了一个:

sudo apt-get install libts-dev

安装完成后重启,按照这个步骤来,遇到不对的故障就重启板子系统,至于为什么重启就好了笔者也很懵。

  • 其中你估计还会遇到界面打开后闪退等问题,可能是字库不支持,将环境变量里面字体的配置项注释掉好了。

配置环境变量:

我直接将Qt_arm和stlib整个文件夹拷贝在/home/debian/下,配置如下环境变量:sudo vim /etc/profile

注:笔者是直接连接的电脑显示屏调试,压根没有测试触摸屏效果,所以至于触摸有不有效需要你自己探索。下面的event0\1\2\3在BeagleBone上event1是鼠标,event2是键盘、event3是触摸屏!如果不一样可以自行测试!

export TSLIB_ROOT=/home/debian/tslib

export QT_ROOT=/home/debian/Qt_ram

export TSLIB_TSDEVICE=/dev/input/event1

export TSLIB_TSEVENTTYPE=input

export TSLIB_CONFFILE=$TSLIB_ROOT/etc/ts.conf

export TSLIB_PLUGINDIR=$TSLIB_ROOT/lib/ts

export TSLIB_CALIBFILE=/etc/pointercal

export TSLIB_CONSOLEDEVICE=none

export TSLIB_FBDEVICE=/dev/fb0

#export QWS_MOUSE_PROTO=tslib:/dev/input/event3

export LD_LIBRARY_PATH=/lib:/usr/lib:/usr/local/lib:$QT_ROOT/lib/:$LD_LIBRARY_PATH

export QT_QPA_PLATFORM_PLUGIN_PATH=$QT_ROOT/plugins

 

记得source /etc/profile ,要是和笔者一样这个命令失效了,那就重启!这样你就完成了整个平台的搭建!

 

12、BeagleBone:运行及其效果

 

 

猜你喜欢

转载自blog.csdn.net/qq_32059343/article/details/84564204