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