1、安装说明
通过在虚拟机+Ubuntu系统下安装Qt开发工具QtCreator,可以进行Qt相关的应用开发,并将应用程序运行于英创工控主板之上。QtCreator同时也可以支持非Qt的C/C++程序的开发。所以用户只需要在eclipse和QtCreator中选择一种进行环境搭建。
开发环境 | Eclipse(Linux版本) | QtCreator(Linux版本) |
支持程序类型 | C/C++ | C/C++,Qt程序 |
关于虚拟机+Ubuntu系统的安装,可以参考《ubuntu+eclipse开发环境搭建》一文(只需要参考Ubuntu系统安装的部分)。
本文适用于ESM6800E/H、ESM6802、ESM7000系列、ESM8000系列工控主板,主要介绍了windows下虚拟机+ubuntu中Qt开发环境搭建的详细过程,包括交叉编译工具链的安装,Qt工具安装以及配置。
本文所使用的安装包:
1、ESM7000-toolchain-x86_64.sh(交叉工具链安装包),本文以ESM7000为例,其他主板的交叉工具链安装包可以参考下面的表格:
主板型号 | 工具链安装包 |
ESM6800E/H | ESM6800-toolchain-x86_64.sh |
ESM6802 | ESM6802-toolchain-x86_64.sh |
ESM7000系列 | ESM7000-toolchain-x86_64.sh |
ESM8000系列 | ESM8000-toolchain-x86_64.sh |
2、qt-creator-opensource-linux-x86_64-4.15.2.run(QtCreator安装包),安装的QtCreator仅仅是一个IDE集成环境,编程所使用的Qt库已经集成在了安装好的编译工具中。因此用户也可以使用别的QtCreator版本,不会对开发程序有任何影响。而已经安装过QtCreator的用户,就不用再重新安装了,可以直接跳到第4步,按照说明添加一套主板使用的编译环境。QtCreator安装包的下载地址:https://download.qt.io/official_releases/qtcreator/。
以上安装文件均在产品光盘的“工具”文件夹中。
2、交叉编译工具链安装
1、打开VMvare,启动ubuntu,然后将前面提到的两个安装包复制到ubuntu的个人用户目录中,即/home/<用户名>,本文中为/home/emtronix,如下图:
2、建立/home/emtronix/tools/esm7000文件夹用于安装交叉工具链(本文以/home/emtronix/tools/esm7000为例,客户可以根据习惯自行建立文件夹),然后在命令行中进入到存放安装文件的目录中,输入命令:
$ ./ ESM7000-toolchain-x86_64.sh
启动交叉工具链的安装后,首先需要手动输入安装路径,指定到刚刚新建的目录中即可(本文是/home/emtronix/tools/esm7000),之后输入“y”以确认安装,如下图:
3、QtCreator安装
安装QtCreator有两种方法,第一种是使用Ubuntu系统自带的QtCreator软件,这种方法比简单方便,但是QtCreator软件本身的版本可能有一定滞后型,不过不会影响开发。安装方法如下:
1、在终端输入命令,首先安装依赖的软件,然后安装QtCreator:
$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get install make build-essential
$ sudo apt-get install libxcb-xinerama0
$ sudo apt-get install qtcreator
如下图:
安装完成后,在终端输入qtcreator就可以启动QtCreator软件了。
第二种方法是针对想使用最新版本的QtCreator开发的用户,可以在网站https://download.qt.io/official_releases/qtcreator/下载最新版本的安装包,如果下载较慢,可以采用下载网站中提供的国内镜像下载网址。本文使用4.15.2版本为例(安装包为qt-creator-opensource-linux-x86_64-4.15.2.run),安装方法如下:
1、在终端输入命令,首先还是安装依赖的软件,然后进入到存放QtCreator安装包的目录中,并启动QtCreator的安装:
$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get install make build-essential
$ sudo apt-get install libxcb-xinerama0
$ ./qt-creator-opensource-linux-x86_64-4.15.2.run
如下图:
2、安装程序启动后,会自动联网登录Qt账户,根据提示输入或者注册账户即可。如果网络无法连接,会等待超时后跳过登录账户的步骤,如下图:
3、等待Qt账户验证成功,继续点击“next”,直到输入安装路径的页面,用户可以根据习惯自行设置,本文使用的安装路径为/home/emtronix/tools/qtcreator-4.15.2,如下图:
4、选择需要安装的组件,按照默认配置即可。如下图:
5、然后继续“next”,直到开始安装,如下图:
6、安装完成以后,/home/emtronix/tools文件夹下可以看到“esm7000”和“qtcreator-4.15.2”两个文件夹,如下图(客户可以在自己指定的安装文件夹中看到这两个文件夹):
其中,我们后面要用到的qtcreator位于/home/emtronix/tools/qtcreator-4.15.2/bin/文件夹下,如下图:
4、QtCreator设置
交叉编译工具链和Qt安装完成以后,首先需要设置环境变量,然后启动qtcreator配置相关选项。
启动QtCreator
1、首先需要导入交叉工具链的环境变量,进入到交叉工具链的安装路径中:
$ cd ~/tools/esm7000
~代表用户目录/home/emtronix,本文以/home/emtronix/tools/esm7000为例,客户请进入自己的交叉编译工具链安装目录。
使用source命令导入environment开头的配置文件,这个文件包含了交叉工具链正常运行所需的环境变量:
$ source environment-setup-cortexa7hf-neon-poky-linux-gnueabi
环境变量配置文件都放在交叉工具链的安装目录下,并且以environment开头。各个主板型号对应的环境变量配置文件可参考下表:
主板型号 | 对应环境变量配置文件 |
ESM6800E/H | environment-setup-cortexa7hf-neon-poky-linux-gnueabi |
ESM6802 | environment-setup-cortexa9hf-neon-poky-linux-gnueabi |
ESM7000系列 | environment-setup-cortexa7hf-neon-poky-linux-gnueabi |
ESM8000系列 | environment-setup-aarch64-poky-linux |
2、导入环境变量后,进入到QtCreator的安装路径下,启动QtCreator:
$ cd ~/tools/qtcreator-4.15.2/bin/
$ ./qtcreator
如下图:
注:每次运行Qtcreator之前都必须重复这一步设置环境变量(设置交叉编译工具链的指向)。
配置QtCreator
1、启动Qtcreator以后打开“Tools”-“Options”,如下图:
2、选择左边的“Kits”-“Compilers”,点击“Add”-“GCC”-“C”添加交叉编译工具,如下图:
继续设置新添加的C编译工具,将“Name”填写为“esm7000-GCC”(用户可自行修改),并选择“Compiler path”为交叉工具链安装目录下:“sysroots/x86_64-pokysdk-linux/usr/bin/arm-poky-linux-gnueabi/arm-poky-linux-gnueabi-gcc”(用户需要根据实际安装的目录选择),然后点击“Apply”保存设置,如下图:
不同主板的交叉工具链对应的C编译工具可参考下表:
主板型号 | 对应C编译工具(相对交叉工具链安装路径) |
ESM6800E/H | sysroots/x86_64-pokysdk-linux/usr/bin/arm-poky-linux-gnueabi/arm-poky-linux-gnueabi-gcc |
ESM6802 | sysroots/x86_64-pokysdk-linux/usr/bin/arm-poky-linux-gnueabi/arm-poky-linux-gnueabi-gcc |
ESM7000系列 | sysroots/x86_64-pokysdk-linux/usr/bin/arm-poky-linux-gnueabi/arm-poky-linux-gnueabi-gcc |
ESM8000系列 | sysroot/x86_64-pokysdk-linux/usr/bin/aarch64-poky-linux/aarch64-poky-linux-gcc |
3、选择左边的“Kits”-“Compilers”,点击“Add”-“GCC”-“C++”添加交叉编译工具,如下图:
继续设置新添加的C++编译工具,“Name” 填写为“esm7000-G++”(用户可自行修改),并选择“Compiler path”为交叉工具链安装目录下:“sysroots/x86_64-pokysdk-linux/usr/bin/arm-poky-linux-gnueabi/arm-poky-linux-gnueabi-g++”,然后点击“Apply”保存设置,如下图:
不同主板的交叉工具链对应的C++编译工具可参考下表:
主板型号 | 对应C++编译工具(相对交叉工具链安装路径) |
ESM6800E/H | sysroots/x86_64-pokysdk-linux/usr/bin/arm-poky-linux-gnueabi/arm-poky-linux-gnueabi-g++ |
ESM6802 | sysroots/x86_64-pokysdk-linux/usr/bin/arm-poky-linux-gnueabi/arm-poky-linux-gnueabi-g++ |
ESM7000系列 | sysroots/x86_64-pokysdk-linux/usr/bin/arm-poky-linux-gnueabi/arm-poky-linux-gnueabi-g++ |
ESM8000系列 | sysroots/x86_64-pokysdk-linux/usr/bin/aarch64-poky-linux/aarch64-poky-linux-g++ |
4、选择左边的“Kits”-“Qt Versions”下的“Add”添加交叉工具链中的qmake,选择交叉工具链安装目录下的“sysroots/x86_64-pokysdk-linux/usr/bin/qt5/qmake”。其中“Version name”命名为“ESM7000-qt5”(用户可自行修改),点击“Apply”保存Qt Versions设置,如下图如下图:
不同主板的交叉工具链对应的qmake路径可参考下表:
主板型号 | 对应的qmake路径(相对交叉工具链安装路径) |
ESM6800E/H | sysroots/x86_64-pokysdk-linux/usr/bin/qt5/qmake |
ESM6802 | sysroots/x86_64-pokysdk-linux/usr/bin/qt5/qmake |
ESM7000系列 | sysroots/x86_64-pokysdk-linux/usr/bin/qt5/qmake |
ESM8000系列 | sysroots/x86_64-pokysdk-linux/usr/bin/qmake |
5、选择左边的“Kits”-“Kits”页面下的“Add”,增加一组主板专用的编译配置,具体设置如下:
设置项 | 设置内容 | 说明 |
name | esm7000 | 新建的Kits名称,客户可自行取名 |
Compiler C | ESM7000-GCC | 配置C编译工具 |
Compiler C++ | ESM7000-G++ | 配置C++编译工具 |
Qt version | ESM7000-qt5 | 选择Qt版本 |
以上设置均对应前面几步设置的名称,实际设置时用户选择自己填写的名称即可,如下图所示:
这一步完成以后,开发环境设置即进行完毕,之后就可以用qtcreator进行开发了。
在较高版本的QtCreator(目前测试在4.15版本及其以上)中,编辑界面的代码可能会有很多报错和警告的信息,可以选择QtCreator中的Help->About Plugins,如下图:
然后取消其中的ClangCodeModel项,重启一次QtCreator即可:
需注意的是,每一次启动qtcreator之前,都必须重复步骤4.1,进行环境变量设置(设置交叉编译工具链的指向)。
开发实例
非QT程序
1、启动Qtcreator,选择“File”-“New File or Project”新建工程,选择Non-Qt Project下的”Plain C++ Application”命令行程序。
2、依次设置好工程名和路径,设置编译器为qmake,选择设置的kit(见文章4.5节),点击finish,创建好新工程(以上设置均可选择默认设置)。
3、选择“Build”-“Build Project”,编译工具,即可在设定的编译目录中看到编译好的可执行程序。
4、参考开发光盘中例程,以串口例程step2_serialtest为例,拷贝main函数代码到工程中,工程中添加头文件“serial.h”和源文件“serial.cpp”,因为工程里用到了pthread库中的接口函数,所以需要在工程中添加pthread库。
5、参考开发光盘中《使用必读》,将编译好程序放置到工控主板挂载目录中运行,可以看到工控主板打印的程序信息(可以短接串口ttyS2收发脚自发自收测试)。
qt界面程序
1、启动Qtcreator,选择“File”-“New File or Project”新建工程,选择”Qt Console Application”界面程序。
2、依次设置好工程名和路径,设置编译器为qmake,选择设置的kit(见文章4.5节),点击finish,创建好新工程(以上设置均可选择默认设置)。
3、点击Forms中.ui文件,即可进入Design界面。
4、拖动控件,设置相应控件参数。以串口例程为例:
5、添加控件的响应代码,以“打开”按钮为例:
该按钮名为pushButton_2的QpushButton
右键点击按钮,选择“Go to slot”
选择事件,这里选按钮的点击事件,即可编辑响应函数。
void MainWindow::on_pushButton_2_clicked() { int port; int baud; char databits; char stopbits; char parity; port = ui->comboBox->currentIndex()+1; switch (ui->comboBox_2->currentIndex()) { case 0: baud = 4800; break; case 1: baud = 9600; break; case 2: baud = 115200; break; default: baud = 115200; break; } switch (ui->comboBox_3->currentIndex()) { case 0: databits = '7'; break; case 1: databits = '8'; break; default: databits = '8'; break; } switch (ui->comboBox_4->currentIndex()) { case 0: stopbits = '1'; break; case 1: stopbits = '2'; break; default: stopbits = '1'; break; } switch (ui->comboBox_5->currentIndex()) { case 0: parity = 'O'; break; case 1: parity = 'E'; break; default: parity = 'N'; break; } m_Serial.m_ExitThreadFlag = 0; int iRet; iRet = m_Serial.OpenPort(port, baud, databits, stopbits, parity); if(iRet<0) { printf("serial open fail\n"); return; } m_Serial.m_ExitThreadFlag = 0; m_Serial.m_pThread = new Thread; m_Serial.m_pThread->m_pSer = &m_Serial; connect(m_Serial.m_pThread, SIGNAL(RevSignal(char*,int)), this, SLOT(RevSlot(char*,int))); m_Serial.m_pThread->start(); ui->pushButton_2->setEnabled(false); ui->pushButton_3->setEnabled(true); }
编辑完代码后,点击build,编译好程序。
6、将编译好程序放置到工控主板挂载目录中运行,即可调试带界面程序。
示例程序在光盘中,也可联系英创工程师获得。
成都英创信息技术有限公司 028-8618 0660