参考にさせて頂いたサイト
http://embedded.von-kannen.net/2014/05/21/qt-4-8-6-on-beaglebone-black/#comment-13936
(1)Ubuntu 14.10 32bit版 のインストール
下記のリンクからUbuntu 14.10の32bit版isoイメージをダウンロードする
http://releases.ubuntu.com/14.10/ubuntu-14.10-desktop-i386.iso
VirtualBoxにインストールする
インストール中に砂嵐画面になった時の対処
1.Ctrl + Alt + F1 又は 右Ctrl + F1を押す ー> コンソール画面になる
2.Ctrl + Alt + F7 or 右Ctrl + F7 を押す ー> インストール画面に戻る
ユーザー qt-bbbを作成
コマンドライン・定義ファイルを変更無しでコピペ出来るようにユーザーqt-bbbでインストールする
コマンドラインに日本語のディレクトリ名が入ると入力が面倒なため。
下のコマンドを使って日本語環境の時はホームのディレクトリ名を英語に変更しておく
$ LANG=C xdg-user-dirs-gtk-update
1.環境の更新
$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get install linux-headers-$(uname -r)
$ sudo apt-get install build-essential
$ sudo apt-get install autoconf libtool git
VirtualboxのGuest Additionをインストール
2.ARM対応コンパイラのインストール
$ cd
$ cd Downloads
$ wget href=http://releases.linaro.org/13.04/components/toolchain/binaries/gcc-linaro-arm-linux-gnueabihf-4.7-2013.04-20130415_linux.tar.xz
$ sudo tar –xz -xf gcc-linaro-arm-linux-gnueabihf-4.7-2013.04-20130415_linux.tar.xz -C /opt
3.タッチパネルサポートライブラリtslibのソースをダウンロードしてコンパイル&インストール
※ インストール先がホームディレクトリ内でないとmake installがエラーになる
$ cd ~/Downloads
$ git clone href=”https://github.com/kergoth/tslib.git”>https://github.com/kergoth/tslib.git
$ cd tslib
$ export PATH=/opt/gcc-linaro-arm-linux-gnueabihf-4.7-2013.04-20130415_linux/bin:$PATH
$ ./autogen.sh
$ ./configure –prefix=/home/qt-bbb/tslib –host=arm-linux-gnueabihf
$ make
$ make install
4. Qt4.8.6 for Beaglebone Blackをインストール
$ cd ~/Downloads
$ wget http://download.qt-project.org/official_releases/qt/4.8/4.8.6/qt-everywhere-opensource-src-4.8.6.tar.gz
$ tar -xzf qt-everywhere-opensource-src-4.8.6.tar.gz
$ cd qt-everywhere-opensource-src-4.8.6
$ mkdir mkspecs/qws/linux-am335x-g++
$ cp mkspecs/qws/linux-arm-g++/qplatformdefs.h mkspecs/qws/linux-am335x-g++
$ nano mkspecs/qws/linux-am335x-g++/qmake.conf
nanoで開いたqmqke.conf(空のtext)に以下の内容を書き込んで保存する
Ctrl+O 書き込み, Ctrl+X 終了
======ここから=====
# qmake configuration for building for Beaglebone Black
#
include(../../common/linux.conf)
include(../../common/gcc-base-unix.conf)
include(../../common/g++-unix.conf)
include(../../common/qws.conf)
#Toolchain
#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
QMAKE_CC = /opt/gcc-linaro-arm-linux-gnueabihf-4.7-2013.04-20130415_linux/bin/arm-linux-gnueabihf-gcc
QMAKE_CXX = /opt/gcc-linaro-arm-linux-gnueabihf-4.7-2013.04-20130415_linux/bin/arm-linux-gnueabihf-g++
QMAKE_LINK = /opt/gcc-linaro-arm-linux-gnueabihf-4.7-2013.04-20130415_linux/bin/arm-linux-gnueabihf-g++
QMAKE_LINK_SHLIB = /opt/gcc-linaro-arm-linux-gnueabihf-4.7-2013.04-20130415_linux/bin/arm-linux-gnueabihf-g++
# modifications to linux.conf
QMAKE_AR = /opt/gcc-linaro-arm-linux-gnueabihf-4.7-2013.04-20130415_linux/bin/arm-linux-gnueabihf-ar cqs
QMAKE_OBJCOPY = /opt/gcc-linaro-arm-linux-gnueabihf-4.7-2013.04-20130415_linux/bin/arm-linux-gnueabihf-objcopy
QMAKE_STRIP = /opt/gcc-linaro-arm-linux-gnueabihf-4.7-2013.04-20130415_linux/bin/arm-linux-gnueabihf-strip
QMAKE_INCDIR += /home/qt-bbb/Downloads/tslib/src
QMAKE_LIBDIR += /home/qt-bbb/tslib/lib
load(qt_config)
======ここまで=====
コンフィグレーション
$ ./configure -v -opensource -confirm-license -prefix /opt/qt-arm -embedded arm -platform qws/linux-x86-g++ -xplatform qws/linux-am335x-g++ -depths 16,24,32 -no-mmx -no-3dnow -no-sse -no-sse2 -no-ssse3 -no-glib -no-cups -no-largefile -no-accessibility -no-openssl -no-gtkstyle -qt-mouse-pc -qt-mouse-linuxtp -qt-mouse-linuxinput -plugin-mouse-linuxtp -plugin-mouse-pc -fast -little-endian -host-big-endian -no-pch -no-sql-ibase -no-sql-mysql -no-sql-odbc -no-sql-psql -no-sql-sqlite -no-sql-sqlite2 -no-webkit -no-qt3support -nomake examples -nomake demos -nomake docs -nomake translations -qt-mouse-tslib -D QT_NO_QWS_CURSOR
コンパイル
※ -j オプションで複数のコアを指定すると速くなる
$ make -j<nbr of cores>
インストール
$ sudo make install
5.Qt4.8.6 for desktopをインストール
$ sudo apt-get install libqt4-dev
インストールディレクトリを確認しておく
$ dpkg -L libqt4-dev | less
Qt4-qmlviewerもついでにインストール、なくても影響がなさそうだがQtcreatorのQtバージョンのところに三角マークでワーニングが表示されるのを防ぐため
$ sudo apt-get install qt4-qmlviewer
Designer-pluginはデスクトップ版で動作するのでデザイン用とターゲット用のqwtをそれぞれ別にインストールする
-> デスクトップでqmake(qmake-qt4)を使うために上をインストール
6.Qt creator 2.8.1 をインストール
$ cd Downloads
$ wget https://download.qt.io/official_releases/qtcreator/2.8/2.8.1/qt-creator-linux-x86-opensource-2.8.1.run
$ chmod +x qt-creator-linux-x86-opensource-2.8.1.run
$ ./qt-creator-linux-x86-opensource-2.8.1.run
起動するインストーラの指示に従ってインストールする、インストール後Qt creatorが起動するので
ツールバーのアイコン上で右クリックしてランチャーに登録を選んでおくと以後ツールバーから起動できる
7.Qwt6.1.2をダウンロードして解凍
ダイレクトリンクが見つからないため下のリンクからブラウザでダウンロードして~/qt-bbb/downloadsに保存。
http://sourceforge.net/projects/qwt/files/qwt/6.1.2/
$ cd ~/Downloads
$ tar -jxf qwt-6.1.2.tar.bz2
8.Qwt-6.1.2のデザイナーをインストール
Qt Creatorを起動
Qwtプロジェクトを開く
ファイル -> ファイル・プロジェクトを開く から Downloads/qwt-6.1.2/qwt.pro
プロジェクトを構成 ウィンドウが開く
デスクトップにチェックが入っていることを確認して 「プロジェクトを構成」ボタンをクリック
ビルド > 全てビルド を実行
(少し時間がかかる)
/home/qt-bbb/Downloads/build-qwt-デスクトップ-Debug/designer/plugins/designer/libqwt_designer_plugin.so
を
qtcreator-2.8.1/bin/plugins/designer
へコピーする
※qtcreator-2.8.1をhome以外の場所へインストールしている時は特権ユーザーでファイラーを起動すると便利
Qt Creatorを再起動すると qwtのウィジェットが使えるようになる
9.Beaglebone Black を接続する
USBコネクタに接続し、Windowsに表示されるBeaglebone Blackのデバイスを「取り出し」た後にVirtualBoxの下に表示されているUSBアイコンをクリックしてBeaglebone Blackを選択して接続。
Ethernet over USBが有効になっていれば 192.168.7.2 でBeagleboneにアクセスできる。
10.Qt Creator 上で Beaglebone Blackの環境設定
ツール > オプション > ビルドと実行
コンパイラ
追加 > GCC
名前 : GCC ARM
パス : /opt/gcc-linaro-arm-linux-gnueabihf-4.7-2013.04-20130415_linux/bin/arm-linux-gnueabihf-gcc
Qtバージョン
追加
/opt/qt-arm/bin/qmake を選択する
キット
追加
名前 : Beaglebone Black
デバイス種類 : 一般的なLinuxデバイス
デバイス -> Manage
– 自動的にデバイスの設定になる
追加 -> 一般的なLinuxデバイス -> ウィザード開始
名前 : Beaglebone Black
IPアドレス : 192.168.7.2 (Beaglebone Blackのアドレスに合わせる)
ユーザー名 : root (or debian)
認証方法 : パスワード
パスワード : 無くてもOK When using debian: “temppwd”
-> 次へ -> 完了 -> デバイステストが成功しましたを確認
(make sure the Beaglebone Black is still connected)
-> 閉じる -> 適用
ビルドと実行のキットを開く
デバイス : Beaglebone Black
コンパイラ : GCC ARM
デバッガ : GDB ARM (※Qt Creator 2.8.1 ではデバッガのタブがない)
Qt バージョン : Qt 4.8.6 (qt-arm)
-> 適用 -> Ok
※キットのタブで Beaglebone Blackを選びデバッガー>編集でARM用gdbを指定する
左のプロジェクトアイコンをクリックしてプロジェクトの設定を開く
ビルドと実行(キットを管理) -> Beaglebone Black タブの「実行」を選択
11.Beaglebone Black用にqwtを構築
Qwtプロジェクトを開く
ファイル -> ファイル・プロジェクトを開く から Downloads/qwt-6.1.2/qwt.pro
左の「ようこそ」の下に並んでいるアイコンのプロジェクトをクリックして選択
-> 表示されたプロジェクトページでビルドと実行タブを開き、キットを追加からBeaglebone Blackを追加
-> Beaglebone Blackを選択
-> 中ほどの「実行」設定で 引数 に -qws を追加
左の「編集」アイコンをクリックし、表示されたqwtプロジェクトツリーで qwtconfig->qwtconfig.priをダブルクリックして編集する。
102行: QWT_CONFIG += WwtOpenGL の前に #を挿入してこの行を無効にする
121行: QWT_CONFIG += QwtDesigner の前に #を挿入してこの行を無効にする
Qwtconfig.priを保存する
ビルド > プロジェクト”qwt”をビルド を実行
(少し時間がかかる)
12.Beaglebone Blackの環境設定
Qtのライブラリを転送
$ ssh root@192.168.7.2
# mkdir /opt
# mkdir /opt/qt-arm
# nano /etc/profile
-> add qt to path: PATH=”…:/opt/qt-arm/lib”
-> Ctrl + O, Ctrl + X
# exit
$ scp -r /opt/qt-arm/lib/ root@192.168.7.2:/opt/qt-arm
$ scp -r /opt/qt-arm/plugins/ root@192.168.7.2:/opt/qt-arm
tslibのライブラリを転送
$ cd /home/qt-bbb/tslib
$ scp -r lib root@192.168.7.2:/usr/
$ scp -r bin root@192.168.7.2:/usr/
$ nano etc/ts.conf
-> Remove the leading “#” in line two (module_raw input), save with Ctrl + O and exit with Ctrl + X
$ scp -r etc root@192.168.7.2:/
Qwtのライブラリを転送
$ cd /home/qt-bbb/Downloads/build-qwt-Beaglebone_Black-Debug
$ scp -r lib root@192.168.7.2:/usr/
13.サンプルアプリケーションの作成とテスト
新規プロジェクトの作成
File -> New File or Project -> Applications -> Qt Widgets Application -> Choose
Name: HelloWorld
Path: /home/<user>/qt-bbb/projects/helloworld (You have to create the folders manually, using “browse”. Otherwise he comes up with an error)
-> Next
Beaglebone Black should be selected (debug and release)
-> Next -> Next -> Finish
プロジェクトファイル (*.pro)に下記の行を挿入すること
target.files = HelloWorld
target.path = /home/debian
INSTALLS = target
プロジェクトtslib等のライブラリを追加する方法
プロジェクトファイル(*.pro)を開き、編集画面の上でマウスの右クリックで「ライブラリの追加」を実行
-> プロジェクトファイルにライブラリが追加される、削除する時は追加されたテキストを削除
インクルードパスを追加する時は直接 INCLUDEPATH += …. をプロジェクトファイルに挿入してもOK
Beaglebone Black上でのアプリケーション実行
Qtのウィンドウシステムを使うために-qwsオプションをつけて実行する
(例) # ./HelloWorld -qws
オプション
14.タッチスクリーンの設定とキャリブレーション
インプットデバイスの確認
# cat /proc/bus/input/devices
…
N: Name=”ti-tsc”
P: Phys=
S: Sysfs=/devices/ocp.3/44e0d000.tscadc/tsc/input/input1
U: Uniq=
H: Handlers=mouse0 event1
B: PROP=0
B: EV=b
B: KEY=400 0 0 0 0 0 0 0 0 0 0
B: ABS=1000003
…
Name=ti-tscがタッチスクリーンらしい、event1に割り当てられている
設定ファイルの編集
# nano /etc/environment
-> add the following lines
QWS_MOUSE_PROTO=tslib:/dev/input/event1
TSLIB_CALIBFILE=/etc/pointercal
TSLIB_CONFFILE=/etc/ts.conf
TSLIB_PLUGINDIR=/usr/lib/ts
-> Save (Ctrl + O) and exit (Ctrl + X)
# reboot
動作の確認
# cat /dev/input/event1 | hexdump
このコマンドを実行し画面を押してデータが表示されれば動作しているー>OK
キャリブレーション
# ts_calibrate を実行
15.その他
ターゲットにファイルコピーするコマンド(scp)でrootのパスワードが認証されない
(解決方法)
ホスト(Ubuntu)側のホームディレクトリ下 .ssh/known_hostsを削除する
->一度 Are you sure want to continue connecting (yes/no)? という
メッセージが表示されるので yesと入力すれば次から自動的に接続される。
Beaglebone Black側の設定等
sysv-rc-conf でXwindow等の不要なサービスを停止する
-qwsオプションをつけてQtアプリを起動しQt Windows System を有効にする
枠無ウィンドウの表示
Main.cppにsetWindowFlagsを追加
MainWindow w;
w.setWindowFlags(Qt::FramelessWindowHint);
w.show();