QWTは、Qt上でグラフ表示などを簡単に表示することができるライブラリです。 センサーからのデータを表示するときなどに使えます。 Armadillo-840でも動作させることが可能で、センサー等の結果を表示させる場合などに便利です。 今回はArmadillo-840でQWTを動かす前に、デバッグ用にATDE5でQWTのサンプルアプリを動かす方法を紹介します。
ブログ
-
at_ito
-
at_takuya.sasaki
Armadillo-840液晶モデル開発セットの拡張ボードに実装されている LED1(EXT1)を、Armadillo-840に電源が投入されてから常時点灯させる方法について。
1. カーネルコンフィギュレーションを実行
Device Drivers ---> [*] LED Support ---> <*> LED Default ON Trigger ←チェックをつける
2. カーネルソースのArmadillo-840固有部分を修正して、イメージを作成
atmark@atde5:~/linux-3.4-at7/arch/arm/mach-shmobile$ vi board-armadillo840.c
static struct gpio_led gpio_leds_pins[]内の以下の部分の [none] を [default-on] に変更
-
at_takuya.sasaki
sambaという仕組みを使って、Armadillo上の任意のディレクトリを、Windowsと 共有することが可能ですが、samba serverはArmadillo-440ではデフォルトでは有効になっていません。
1. ユーザーランドのコンフィギュレーションを行います。
[*] Customize Vendor/User Settings (NEW) Userland Configuration Filesystem Applications ---> --- SAMBA [*] samba [*] smbd [*] nmbd
2. ポート競合が起こるため一部のMakefileを修正して、makeを実行してイメージファイルを作成します(romfs.img.gz)
atmark@atde3:~/atmark-dist$ vi user/samba/Makefile
↓11/12行目をコメントアウト
-
at_nakai
Armadillo-840などで地図を表示して何かできないか摸索してます。
地図表示時のLCD画面キャプチャー画像
簡単に地図を表示するには、debianで起動させて次のパッケージをインストールすることで表示することが出来ます。
- xserver-xorg-core
- xserver-xorg-input-all
- xserver-xorg-video-fbdev
- foxtrotgps
- matchbox
LCDに地図を表示させるために、Xorgを/dev/fb1上で起動させてあげます。
これをするには、/etc/X11/xorg.confを作成(修正)します。 -
at_kazutaka.bito
ATDE3の共有フォルダのディレクトリの文字色は、緑地に青字で見づらい。 属性によって緑字になっているので、根本的には属性を変えればいいと思うが、 今回は文字色を変更してみた。
ホームディレクトリで、 dircolors -p > ~/.dir_colors で、.dir_colorsを作成。
.dir_colorsをエディタで開いて、 OTHER_WRITABLE 34;42 # dir that is other-writable (o+w) and not sticky の箇所を OTHER_WRITABLE 34;43 # dir that is other-writable (o+w) and not sticky に変更。
eval
dircolors ~/.dir_colors -b
で設定を反映。ATDE3の共有フォルダのディレクトリの文字色が、黄色地に青字になった。
-
at_takuya.sasaki
Armadillo-420でBluetooth Low Energyモジュールを利用して通信を行うための手順です。 動作確認については十分にできていませんが、ご参考にしていただければと思います。
1. ATDE5をダウンロード
Armadillo-420の開発環境はATDE3となっていますが、Bluezの新しいバージョンについては、 ビルドにGLibの2.28以上が必要です。
atmark@atde3:~bluez-5.18$ ./configure --build=i686 --host=arm-linux-gnueabi …省略… checking for GLIB... no configure: error: GLib >= 2.28 is required
しかし、ATDE3のGLibのバージョンは2.16.6です。
-
at_kazutaka.bito
PWMを有効にしようとして、
[armadillo ~]# echo 700000 > /sys/class/mxc_pwm/(PWM_NAME)/duty_ns [armadillo ~]# echo 1 > /sys/class/mxc_pwm/(PWM_NAME)/enable
で、enableが1(有効)に設定。
念のため、catでenableを確認すると、
[armadillo ~]# cat /sys/class/mxc_pwm/(PWM_NAME)/enable 0
で、enableが0(無効)のままだった。
どうやら、/sys/class/mxc_pwm/(PWM_NAME)/period_ns のデフォルトが 0 だったため、
0 < duty_ns < period_ns
のルールに引っかかって、enableが1(有効)に設定できなかったらしい。後から考えると、当たり前のことでした。
-
at_nakai
標準状態のATDE5 (v20140131)では、x86用のOpenCVパッケージがインストールされていません。 アルゴリズムの検証など、ATDE5上で利用したいシーンは少なからずあると思います。
ATDE5にOpenCVパッケージをインストールするには次のようにコマンドを実行します。
atmark@atde5:~$ sudo apt-get update atmark@atde5:~$ sudo apt-get install libopencv-dev
-
at_nakai
OpenCVで2つの直線の交点を検出するソースコードを作ったのでシェアします。
このソースコードの動作確認は、ATDE5にUSBカメラを接続して行なっています。 アルゴリズムの検証用途だったため、Armadilloでは動作確認していませんのでご注意ください。
下図は動作確認時のキャプチャです。
-
at_ito
以下のページを参考に、QMLでピンチアウト、ピンチインの動作ができるかどうかを確認しました。
http://developer.nokia.com/community/wiki/How_to_handle_pinch_gestures_using_PinchArea_item
Armadilloで動作させるためには、上記のサンプルスクリプトの以下の部分を必要でした。
1) 1行目のimport 1.1をimport 2.0に変更 2) 表示する画像をArmadilloに保存し、18行目の画像ファイルの場所を画像ファイルの場所に変更
※: 動作確認時は、Armadillo実践開発ガイド 第2部のmidomadillo.bmpを使用
以下のコマンドを実行し、スクリプトを起動します。
-
at_takuya.sasaki
Armadilloにログインした際に、設定される環境変数はどこで設定されているのか?を Armadillo-840を例に簡単にですが説明します。
Armadillo-840にログインして環境変数を見てみます。
-
at_kazutaka.bito
Armadillo-810でリモート実行、デバッグする方法として、 ATDE5のQtCreatorを使えるようにしてみました。
-
at_nakai
OpenCVでテンプレートマッチングを行うソースコードを作ったのでシェアします。
解析結果を合成した画像を/tmp/result.jpgに生成するようにしてあります。 mjpeg_streamerのinput_file.soなどと組み合わせることで、結果を簡単に確認することができます。
Makefile
CROSS_COMPILE ?= arm-linux-gnueabihf-
CC = $(CROSS_COMPILE)gcc CFLAGS = -Wall -O2
EXEC = template_match OBJS = template_match.o LDLIBS := -lopencv_core -lopencv_highgui -lopencv_imgproc -lm
all: $(EXEC)
$(EXEC): $(OBJS) $(CC) $(LDFLAGS) -o $@ $(OBJS) $(LDLIBS)
romfs: $(ROMFSINST) /usr/bin/$(EXEC)
clean: rm -f $(OBJS) $(EXEC)
-
at_takuya.sasaki
Armadillo-840はタッチスクリーンライブラリにマルチタッチ対応のmtdevを採用しています。 しかし抵抗膜式などのタッチスクリーンコントローラをArmadillo-840に接続する際には、mtdevではなく シングルタッチ向けのtslibを使いたくなるケースが出てきます。
ここでは、mtdevではなくtslibを使ってQtのアプリケーションを実行するまでの手順を記述します。
---注意---
本記事は、Armadillo-840液晶モデル開発セットでの動作を想定したものではありません。 以下のタッチスクリーンコントローラ(TSC2007)を接続した環境で、試しております。
http://www.tij.co.jp/product/jp/tsc2007
(TSC2007を動かすためのカーネルの設定がすでに行われていることが前提となっています。) -
at_kazutaka.bito
Armadillo-440とArmadillo-840のLCD表示と同じ画面をPCのWebブラウザで見る方法を考えてみました。 フレームバッファをJPEGファイルにして、mjpg_streamerで見ることにしました。
添付 lcd2jpeg_a440.zip, lcd2jpeg_a840.zip の srcディレクトリ フレームバッファをJPEGファイル化するソース lcd2jpegを実行すると/var/tmp/for_lcd2jpeg/jpeg_file/lcd.jpg にJPEGファイルが生成されます。
sample_exeディレクトリ lcd2jpegとmjpg_streamerの実行を組み合わせたサンプルスクリプトstart_lcd2mjpgを実行して、PCのWebブラウザで、URLを[ArmadilloのIPアドレス]:8080とすると LCD表示と同じ画面が見れます。補足)
-
at_takuya.sasaki
Armadillo-840液晶モデルの拡張ボードには、オーディオコーデック(Wolfson WM8978)が 搭載されています。
http://manual.atmark-techno.com/armadillo-840/armadillo-840_product_manual_ja-1.2.0/ch08.html#sct.kernel_spec.drivers.audio
拡張ボードのヘッドフォン出力(CON6)から、テストサウンドを再生するには、 以下のコマンドを実行します。
[root@armadillo840-0 (ttySC2) ~]#gst-launch-1.0 audiotestsrc ! \ "audio/x-raw,channels=2,rate=48000,width=16" ! \ alsasink device=hw:1
*以下も参照 http://manual.atmark-techno.com/armadillo-840/armadillo-840_product_manual_ja-1.2.0/ch06.html#sct.audio
出力される音量を調整したい場合には、再生前に以下のコマンドを実行します。
-
at_ito
Armadillo-800シリーズでは、DisplayLink 社のチップが搭載された USB接続可能なモニタやディスプレイアダプタを簡単に使用することが できます。
USB接続モニタ(またはディスプレイアダプタ)を使用するには、 以下のLinuxカーネルコンフィギュレーションを変更してください。
Linux/arm 3.4-at6 Kernel Configuration Device Drivers ---> Graphics support ---> <*> Support for frame buffer devices ---> <*> Displaylink USB Framebuffer support ← 有効化
上記のコンフィギュレーションを設定したLinuxカーネルを使うことで、 USB接続モニタが/dev/fb2等のデバイスファイルから使用できるように なります。
-
at_takuya.sasaki
[現象]
Armadillo-420上でunzipを使ってzipファイルを解凍しようとすると、 以下のように失敗する。
[root@armadillo420-0 (ttymxc1) ~]# unzip test.zip Archive: test.zip unzip: Unsupported compression method 0
[原因]
zipファイルの圧縮メソッド(アルゴリズム)が、無圧縮(stored)になっているため。
[詳細]
zipファイルの圧縮メソッドについては、以下のURLに説明があります。 http://www.wdic.org/w/TECH/ZIP
- 圧縮アルゴリズム
Armadillo-400シリーズに標準でインストールされているbusybox 1.00.rc3のunzipでは、 一般的に使用されている[Deflate]という圧縮メソッド以外は、対応できていません。
atmark-dist/user/busybox/busybox-1.00.rc3/archival/unzip.c
-
at_ito
http://stackoverflow.com/questions/20633654/create-a-multi-touch-qt-5-1-application
上記URLを参考に、Qtでマルチタッチができるかどうかを試してみました。
コードは以下の通り。
-
at_nakai
romfs-a810-v1.04.img.gz の空きディスクスペースは約2.0MBです。
atmark@atde5:~$ df -h Filesystem Size Used Avail Use% Mounted on /dev/loop0 39M 35M 2.0M 95% /home/atmark/romfs
例えば、OpenCVを取り敢えずインストールしておきたい場合などに 直接インストールしようとしても、ディスクスペースが足りません。
そのような時には、ディスクスペースを拡張することで解決できます。
-
at_nakai
簡単にromfsイメージにファイルを追加したい場合などに使えるテクニックです。
romfsイメージを直接ATDEでマウントしファイルを追加すると、 簡単にカスタマイズされたromfsイメージを作成することができます。
次のようにすると、ATDE上にマウントすることができます。
atmark@atde5:~$ mkdir romfs atmark@atde5:~$ gzip -dc romfs.img.gz > romfs.img atmark@atde5:~$ sudo mount -t ext2 -o loop romfs.img romfs
マウントすると、通常と同様にファイルの読み書きが行えます。 例えば、binディレクトリにhelloを配置したい場合は、次のようにします。
atmark@atde5:~$ sudo cp hello romfs/bin/hello
カスタマイズ後、再度圧縮イメージに戻すには、アンマウント、圧縮を行います。