Hatena::ブログ(Diary)

ウィモバの日々

2015-06-25

Armadilloのクロス開発環境ATDE5をチューニングする忘備録

ハロー ハロー ぼくから世界へ 応答願います ぼくらのコードは正しくつながっていますか(挨拶


アルマジロは哺乳綱異節上目被甲目に属する動物の総称・・・ですが

Armadilloはアットマークテクノ社が発売している、いわゆるARMの組み込みLinux的なあれをあれするやつのこと。

http://armadillo.atmark-techno.com/about-armadillo

最近だと同じような製品で海外のRaspberry Piとかが安価で手に入るけど、それに比べたらArmadilloは高価だけど

工場とか業務用なんかで使えるように耐久性に優れていたり品質も高かったりする、安心と信頼の国産クオリティー。

そんなArmadillo用のカーネルとかドライバとかアプリを開発するために、クロスコンパイル環境「ATDE」が提供されている。

http://armadillo.atmark-techno.com/downloads

VMWarePlayerと上記のATDE(最近だとATDE5がメイン)を使用することで開発できるんだけど

このATDE5はDebianベースのLinux環境なので、ところどころ不便なところがあったりなかったり。

なので少しでも(俺基準で)便利に使えるように、カスタマイズした忘備録。


最近のLinuxはコマンドを打たなくても、GUI画面でファイル移動とかコピーとか実行とか出来るようになっている。

ATDE5でもNautilusエクスプローラ)でWindowsライクに使えるんだけど、デフォルトのままだと

圧縮、解凍GUIから行えないのでシェル(端末)から下記のようなtarコマンドを打たなければならない。

http://uguisu.skr.jp/Windows/tar.html

面倒なので、file-rollerを導入してエクスプローラの右クリックメニューから圧縮・展開(解凍)を実行できるようにする。

atmark@atde5:~$ sudo apt-get install file-roller -y

シェルを起動したら上記コマンドでfile-rollerをインストール後に再起動しよう。

エクスプローラでファイルを選択し、右クリックメニューを開くと下の方に「圧縮」か「展開」が追加されているぞい!

f:id:rideonshooting:20150629093618p:image:w360

インストール時とかに発生した不要なパッケージは削除しておこう。

atmark@atde5:~$ sudo apt-get autoremove -y


  • 2:VM起動時に共有フォルダを自動マウントする

ATDE5にはVMware Toolsが入っているので、ドラッグ&ドロップ(以下D&D)によって

ホストマシンとVMマシン間でファイル移動・コピーが出来るようになっている。

しかし、D&Dではたまにファイルコピー失敗が起こったり、手動D&Dだとコピー忘れとか色々起こりやすいので

シェルとかで自動的にホストPCのファイルを扱えるように、共有フォルダを使うことも多い。

http://manual.atmark-techno.com/armadillo-guide/armadillo-guide-1_ja-2.0.0/ch06.html#sec_configuration_shared_folder_win

一応はArmadillo公式サイトの手順通りにVMWareの設定で共有フォルダを有効化して

atmark@atde5:~$ sudo mkdir -p /media/hgfs

atmark@atde5:~$ sudo mount -t vmhgfs .host:/share /media/hgfs

コマンドを実行すれば、共有フォルダへのマウントはできる。

しかし、この手法だとATDE5を再起動するたびにマウントが解除されるので、毎回マウントするのがめんどくさい。

なので、ATDEのシステム起動時に毎回マウントが実行されるようシェルに登録する。

下記はその一例として、 /etc/rc.local に登録してみる。

rc.localをgeditで直接開くと権限の問題で保存できないので

atmark@atde5:~$ sudo gedit /etc/rc.local

コマンドでsu権限で rc.local を開いて、exitの前に下記の2行を追加→保存する。

f:id:rideonshooting:20150625201942p:image

mkdir -p /media/hgfs

mount -t vmhgfs .host:/share /media/hgfs

その後ATDEを再起動すると、共有フォルダが毎回自動でマウントされている。やったぜ


ATDE5ではデスクトップにアイテムは置けないけど、その代わりにというのか

上部にあるGNOMEのパネルにアプリやファイル・フォルダをD&Dすることでショートカットを配置出来る。

f:id:rideonshooting:20150625202930p:image

右クリックからアイコンも変更出来るので、よく使うフォルダや端末を登録しておけば快適になる。

でも・・・困ったことに作成したショートカットが削除できないよぉ。゜゜(´□`。)°゜。ワーン!!

・・・なんて困ってたら奥さん!あったよ削除方法が!でかした!

こちらのサイト様 http://linux.ikoinoba.net/index.php?UID=1319469326 に記載があるように、

Altキーを押下しながら右クリックで既存ショートカットの削除メニューが!

f:id:rideonshooting:20150625202931p:image

これで自由ショートカットを追加削除出来るぞい!


VMを起動毎に毎回ログインパスワードを入れるのが手間なら、自動ログインするようにしよう。

この手法は、本来はセキュリティ的なあれであまり推奨はされないけど、どうせATDEのデフォルトパスワード

ユーザ名と一緒だし、公開されているパスワードはあってもないようなもんだしね(責任転嫁

する場合は、[システム設定]→[ユーザアカウント]→[ロック解除]→パスワード入力して

[自動ログイン]をオンにする。


アットマークテクノ公式の手順にもあるんだけど、Armadilloは標準でEthernet機能を搭載している。

http://manual.atmark-techno.com/armadillo-840/armadillo-840_product_manual_ja-1.3.0/ch14.html#sct.qt.helloworld_on_armadillo

1.上記のようにArmadillo実機でEthernetを利用出来るように設定しておく。

2.固定IPが必要な場合は /etc/network/interfaces にてネットワーク設定を行う。

3.ATDE5上のQtCreatorで対象実機のIPアドレスを設定する。

4.Qtのプロジェクトにターゲットへのデプロイを追加したり環境変数を設定する。

だいたい上の手順でアプリをATDE上からArmadilloにデプロイ&リモート実行出来る。

アプリを書き換えるために毎回SDカードを抜き差ししたり、ユーザランドを書き換える手間が省けて便利。


これはATDEだけでなく、VMWare全般のテクニックなんだけども

VM仮想マシンを起動していると、仮想マシンと同じフォルダにメモリサイズに指定した大きさのファイルが出来ることがある。

これはいわゆる「仮想メモリ」としてメモリが少ないPC向けに、メモリを外部に置いて使用するための機能なんだけど

最近のメモリが豊満なパソコンでは、むしろ低速なHDDにアクセスするほうが遅くて無駄無駄無駄ァ!

という感じなので、HDD仮想メモリでなく実メモリを使用するように変更する。

仮想マシンのあるフォルダを開き、*.vmxファイルをテキストエディタで開いて

mainMem.useNamedFile= "FALSE"

の項目を追加することで低速なHDDアクセスが減り、快適に動作するようになる。

また、ビルド時にメモリを食うので、[マシン設定]でメモリの指定サイズが512MBとなっている部分を

1GB以上に設定してみると体感出来るかもしれない。


VMの参考サイト様。他のチューニング項目もあるけど、弄りすぎると危ないので他の項目は自己責任で。

http://freesoft.tvbok.com/freesoft/virtual/vmware_tuning.html

http://old.ikoinoba.net/wiki/?VMware

http://www.drk7.jp/MT/archives/001215.html

2014-11-20

ジョブの並列実行でQtCreatorでのビルド時間を短縮する

QtCreatorでビルドする際に、makeに-jオプションをつけたら

並列的にビルドを行ってくれるんだそうで、ビルド時間を短縮出来るとのこと。

「-j」のjの直後に数値をつけると並列数の指定になり、つけない場合はメモリの許す限り全力出すっぽい?

ただ、あまりスレッドを増やしすぎるとスラッシングが起きてかえって効率が悪くなるみたい。

数値を指定する場合はcpu数x2がいいとのこと。 シングルコアの場合は-j2、デュアルコアの場合は-j4、など。

f:id:rideonshooting:20141201171657p:image:w360

画像のようにビルドステップのmake引数に付加する。


以下に、実際にどれくらい効果があったのかのメモとして、デフォルト作成したプロジェクトと

Qt付属のサンプルソースのプロジェクトをリビルドした際の経過時間(ビルド+リンク時間)を残しておく。

環境はQt5.3.2で統一、Releaseビルド固定、[ビルド]→[すべてリビルド]でなるべく条件は一緒・・・のつもり。


1:テンプレートのプロジェクト(Linuxデスクトップ向け)

機種/CPUOS「-j」なし「-j2」「-j4」「-j8」「-j」PassMark
EeePC901
(Atom N270/1.6GHz)
+Zorin OS Lite9(Linux)
00:12〜
00:13
00:1100:11-00:10281
SONY VAIO VGN-P91S
(Atom Z550/2.0GHz)
+linuxBean14.04(Linux)
00:10〜
00:11
00:08〜
00:09
00:08〜
00:09
-00:08〜
00:09
381
Dell Vostro1200
(Core2Duo T7250/2.00GHz × 2)
+linuxBean14.04(Linux)
00:04-00:0200:02〜
00:03
00:02〜
00:03
1105
NECデスクトップ
(Celeron E3300/2.50GHz × 2)
+linuxBean14.04(Linux)
00:0400:0300:02-00:021361
Dell Vostroノート
(Core2Duo P8600/2.40GHz × 2)
+linuxBean14.04(Linux)
00:0300:0200:02-00:021548
EPSON Endeavor ST120
(Core2Duo T9800/2.93GHz × 2)
+linuxBean14.04(Linux)
-----2034
ASUS K55DR
(A8-4500M/1.9GHz × 4)
+linuxBean14.04(Linux)
00:0400:0300:0200:0200:022674
Dell Vostro3300 ノート
(Core i5 480M/2.66GHz × 2)
+linuxBean14.04(Linux)
00:0300:0200:0200:0200:022456
HPデスクトップ
(i5-3470/3.20GHz × 4)
Windows7+MinGW32bit版
00:0300:0200:0200:0200:026568

2:QtCreator付属のサンプルソース「sub-attaq」ソースファイル13個 (Linuxデスクトップ向け)

機種/CPUOS「-j」なし「-j2」「-j4」「-j8」「-j」PassMark
EeePC901
(Atom N270/1.6GHz)
+Zorin OS Lite9(Linux)
01:43〜
01:44
01:19〜
01:20
--01:20〜
01:21
281
SONY VAIO VGN-P91S
(Atom Z550/2.0GHz)
+linuxBean14.04(Linux)
01:3101:10〜
01:11
--01:10〜
01:11
381
Dell Vostro1200
(Core2Duo T7250/2.00GHz × 2)
+linuxBean14.04(Linux)
00:33-00:18〜
00:19
00:1900:191105
NECデスクトップ
(Celeron E3300/2.50GHz × 2)
+linuxBean14.04(Linux)
00:3000:1800:19-00:18〜
00:19
1361
Dell Vostroノート
(Core2Duo P8600/2.40GHz × 2)
+linuxBean14.04(Linux)
00:2500:1500:15-00:151548
EPSON Endeavor ST120
(Core2Duo T9800/2.93GHz × 2)
+linuxBean14.04(Linux)
-----2034
ASUS K55DR
(A8-4500M/1.9GHz × 4)
+linuxBean14.04(Linux)
00:3500:1800:1300:1300:132674
Dell Vostro3300 ノート
(Core i5 480M/2.66GHz × 2)
+linuxBean14.04(Linux)
00:2300:1300:1000:1000:102456
HPデスクトップ
(i5-3470/3.20GHz × 4)
Windows7+MinGW32bit版
00:2000:1100:0700:0700:076568

HPデスクトップのみLinuxブートが起動できなかったのでWindows環境のQtで実行


EeePCでもソースファイルが多くなるとAtomでも効果はあるっぽいけど所詮は初期Atomなのでな・・・

シングルコアは-j2が適切っぽい。

VAIO 旧PはEeePC901よりCPUは少し速いんけど、やっぱり旧世代Atomなんだよなぁ・・・。

最新のAtomは4コアで優秀だとかでうらやましい。

Core2Duoでも旧世代Atomとは段違いすぎる・・・Atom Z550の1/3以下。

デュアルコアなのでCPU数×2の-j4が適切かなー。

PassMark上のスコアでみるとAtomのZ37**代の前半はC2Dの2.0GHzより遅くて後半世代は2.0GHzより速いのかなー、なんて。

デスクトップ向けの4コアだと段違いに速いすぎる・・・ CPUが多く速いほどビルドが快適になるね。クアッドコアなので-j8がいいのかなー?


ということでWindowsでもLinuxでも-jオプションは有効。 MacQtでも多分影響ありかな?便利なオプションだね。

Qtも最初からつけてくれればいいのに・・・と思うけど環境によってCPU数も変わるし

CPU数の指定なしだとスラッシングの可能性もあるし難しいんかな・・・

2014-09-28

Zorin OS Lite(Linux)にQtCreatorを入れてAndroidアプリ開発しよう

Zorin OS Lite(Linux)上でC/C++言語のNativeなアプリケーションを作成出来る

無料のクラスプラットフォームなGUI統合開発環境Qt Creatorをインストールして

LinuxアプリやAndroidアプリを開発できるようにしちゃうぞ!

開発には

Qt Creator

・JDK

・Android SDK

・Android NDK

・Apache Ant

が必要なのでセットアップしていく。


なお下に記したやり方で、Ubuntu系ディストリビューションならほぼ同じ手順で出来る。

JDKはZorin OKのアップデートでインストールされるので不要っぽい!

入ってるか分からない場合はTerminalを起動して

#java -version

と打って、JDKのバージョンが表示されたらOK!

入ってなかったらパッケージマネージャから「JDK」で検索して

出てくるdefault-jdkとかopenjdkとかをインストールしよう。

※コマンド表記で、シェルの便宜上先頭に#を書いてるけど

 入力する際には#は不要でjava〜以降のコマンド入力でいい。

Zorin OS Liteには、Cソースをビルドするための

g++コンパイラやライブラリがデフォルトで入っていないため

Terminalからコマンドでパッケージをインストールする。

#sudo apt-get install libglib2.0-dev libSM-dev libxrender-dev libfontconfig1-dev

#sudo apt-get install libxext-dev libgl1-mesa-dev g++

y/nのコマンド待ちになったらひたすらy。

sudoが先頭についているコマンドで要求されるパスワードログインしているユーザのパスワード


  • QT Creatorのダウンロード

QtCreatorをダウンロードする。 http://qt-users.jp/download.html から、

最新の「Qt 5.3.2 - Android (Linux 32-bit, 518 MB)」

などをダウンロードする。

その際にFirefoxなどではそのままファイル名を左クリックすると

ブラウザが中身をテキストファイルと認識しちゃって

巨大なテキストを表示しようとしてフリーズしてしまうため

右クリックで「リンク先を保存」から保存すること。

  • QT Creatorのインストーラを実行

ダウンロードしたファイルはそのままでは実行できないため

シェルからファイルのあるフォルダに移動して権限を付加してからインストーラを実行する。

#cd /home/<ユーザ名>/ダウンロード

#chmod +x qt-opensource-linux-x86-android-5.3.2.run

#./qt-opensource-linux-x86-android-5.3.2.run

インストールオプションデフォルトのままで問題ない。

無事インストール出来たら、メニューの「プログラミング」→「Qt Creator」から起動する。

最初にプロジェクトを作成する場合は、左上のメニューから

「ファイル」→「プロジェクトの新規作成」→「Qtウィジェットアプリケーション」を選ぶ。

ここで進んでいくとDesktop(Linuxアプリ)やAndroid向けアプリ向けのキットを選択する画面になるのだが、

SDKやNDKなどを入れていないとAndroid向けのキットは選択出来ないようになっており、

Linux向けアプリしか作れない。

Android関係のSDKもインストールしないと、キットの選択でAndroidは

「Android has not been configured. Create Android kits.」と選べない。

そのため、AndroidのSDKをインストールしていく。

http://developer.android.com/sdk/index.html

ここから「adt-bundle-linux-x86-20140702.zip」などのパッケージをダウンロードする。

ダウンロードが終わったら解凍し、Terminalで任意のフォルダに移動&リネーム。

自分の場合は /usr/local に配置してフォルダ名をadt-bundle-linuxにした。

#sudo mv /home/<ユーザ名>/ダウンロード/adt-bundle-linux-x86-20140702 /usr/local/adt-bundle-linux

移動後、adt-bundle〜フォルダの中にある「sdk」のフルパスを

Qt Creatorの「ツール」→「オプション」でダイアログを開いて

画面左の「Android」→「Android SDK パス」に入力する。

AndroidアプリをNative C++で開発するため、NDKも必要になる。

http://developer.android.com/tools/sdk/ndk/index.html#Downloads

から「android-ndk32-r10b-linux-x86.tar.bz2」などをダウンロードする。

ダウンロードが終わったら解凍し、Terminalで

コマンドから /usr/local フォルダ下に配置&リネームしている。

#sudo mv /home/<ユーザ名>/ダウンロード/android-ndk-r10b /usr/local/android-ndk

移動後、「android-ndk〜」のフルパスを

Qt Creatorの「ツール」→「オプション」→「Android」→「Android NDK パス」に入力。

Apache Antも必要なので、こちらはコマンドで自動的にインストール

#sudo apt-get install ant

インストール後に ant -version で確認すると実施した時点では1.9.3がインストールされている。

またQt Creatorでオプションを確認すると自動的にAntのパスが表示されているはず。

f:id:rideonshooting:20140930030056p:image:w360

  • Android SDKの更新とVirtual Deviceの作成

ここまできたらあと一息。Android向けにビルドするためのSDKの更新と

作成したAndroidアプリLinux上で動作確認するための

Virtual Device(Androidの仮想デバイス)を作成する。


まず、adtの中に入っていたeclipseを起動する。

上ので順そのままやっていれば実行ファイルが

/usr/local/adt-bundle-linux/eclipse/eclipse にあるはず。

メニューの「Window」→「Android SDK Manager」を起動。

f:id:rideonshooting:20140930022359p:image:w360

最初にチェックがついている状態のまま「Install ** packages」を実行。

ダイアログが開いたら、「Accept License」を選択してInstall押下すると

SDK等のダウンロード&インストールがはじまる。

インストールが終わってInstall〜のボタンが押せなくなるまで繰り返す。

なお、初期状態だと最新のAndroidバージョンしかないっぽいので

古いバージョンのAndroidにも対応したければ

4.1等の古いバージョンのSDKにチェックをつけてインストールする。


SDKのセットアップが終わったらVirtual Deviceを作成する。

eclipseメニューの「Window」→「Android Virtual Device Manager」を起動し

「Device Definitions」タブから作成したい仮想デバイスの解像度を選択して

画面右にある「Create AVD...」をクリックすると作成画面が出る。

f:id:rideonshooting:20140930022357p:image:w360

カメラやSDなど、仮想デバイスの設定はひとまず好きに作成して「OK」を押下すると

「Android Virtual Device」タブのリストに作成した環境が表示される。

選択して「Start...」を押下、出てきたダイアログの「Launch」も押下すれば仮想デバイスが起動する。

なおEeePCではなかなか重い模様。。。(当たり前だ


ではいよいよAndroid向けアプリのプロジェクトを作成する。

途中まではLinux向けと同じ手順で、キットに「Android〜」が選択できるようになっているので

そちらにチェックをつける。

また、Androidの実機でデバッグする場合は実機をUSBデバッグモードに設定しておき、

USBでPCと接続しておく。

あとは画面左下の緑三角ボタンを押して実行すると、実機につながっていたら実機でアプリが起動する。

実機に未接続時は未接続として、AVDで作成していた

Arm向けの仮想デバイスを起動してアプリを実行できる。(重いけど)


それでは、Enjoy Linux Qt Life!