DisplaylinkのUSBモニタをフレームバッファデバイスとして使えることを確認した手順を以下に示す。 下記手順に当たり、フォーラムのQtで作成したアプリをUSB外部モニターに表示したい。を参考にした。
1.機材
今回は下記の機材で確認した。
・Armadillo-440
・USBモニタ:LCD-8000U
2.USBモニタのVendorID、ProductIDを確認
下記4にて、USBモニタのVendorID、ProductIDの設定が必要なため、あらかじめ確認しておく。
確認方法は、PCのデバイスマネージャで確認したり、Armadillo-400シリーズ:USBデバイスのVendorID、ProductIDの確認方法のように
Armadilloでも確認できる。
今回使用するLCD-8000Uは、
VendorID:0x17e9
ProductID:0x01bb
である。
3.カーネルにパッチを適用する
http://lists.freedesktop.org/archives/libdlo/2009-September/000321.htmlを参考に Armaillo-440のカーネルのソースコード linux-2.6.26-at25 用に若干手を加えたパッチを添付する。 linux-2.6.26-at25_dlfb_20151122.patch
このパッチをlinux-2.6.26-at25ディレクトリの下に置いて適用する。
atde:~/linux-2.6.26-at25$ patch -p1 < linux-2.6.26-at25_dlfb_20151122.patch
4.USBモニタのVendorID、ProductIDをドライバに登録
今回使用するUSBモニタのVendorID、ProductIDをドライバに定義する。 上記3のパッチの適用によって、linux-2.6.26-at25/drivers/videoディレクトリの下に displaylinkfb.cというファイルが追加されているので、displaylinkfb.cをエディタで開いて48行目付近の
#define VEND_DISPLAYLINK 0x17e9 #define PROD_K08 0x141
の箇所を上記2で確認したVendorID、ProductIDに合わせて、
#define VEND_DISPLAYLINK 0x17e9 #define PROD_K08 0x01bb
にする。
5.カーネルコンフィギュレーションの設定
make menuconfigでカーネルコンフィギュレーションを下記のように設定する。
Kernel Configuration Device Drivers ---> Graphics support ---> <*> DisplayLink USB controller support // 有効にする
以上の設定後、ビルドをしてArmadillo-440にイメージを書き込む。
6.動作確認
Armadillo-440の標準イメージで動作するサンプルアプリfunctesterの画像をUSBモニタに表示させる。
補足)
functesterは、タッチパネルで操作可能だが、今回使用したUSBモニタはタッチパネルに対応していないため、
画像の表示のみの確認にとどめる。
6.1.Armadillo-440に電源を入れて、ログインする。
6.2.Armadillo-440のUSB 2.0High Speed ポート(CON5 下段)にUSBモニタを接続する。 下記のようにDisplayLinkのUSBデバイスを認識したログが出力される。
[root@armadillo440-0 (ttymxc1) ~]# usb 2-1: new high speed USB device using fsl-ehci and address 2 usb 2-1: configuration #1 chosen from 1 choice usb 2-1: DisplayLink USB device 2 now attached, using 937K of memory
6.3./dev/fb2というデバイスファイルがあることを確認する。
[root@armadillo440-0 (ttymxc1) ~]# ls /dev/fb* /dev/fb0 /dev/fb1 /dev/fb2
補足) USBデバイスはカーネルが認識した順番に番号が付けられる。 今回はログイン後にUSBモニタを接続したため、デバイスファイルが/dev/fb2だが、 USBモニタを接続したまま電源投入をすると、末尾の番号が異なる可能性がある。 以下は、USBモニタのフレームバッファのデバイスファイルが/dev/fb2の場合で説明する。
6.4.起動中のfunctesterとフレームバッファデバイスを停止する。 標準イメージでは、Armadillo-440の電源を投入するとfunctesterが自動起動してLCD上に画像が表示されているので停止する。
[root@armadillo440-0 (ttymxc1) ~]# killall functester [root@armadillo440-0 (ttymxc1) ~]# killall Xfbdev
6.5.functesterの画像をUSBモニタに表示させる。
[root@armadillo440-0 (ttymxc1) ~]# /usr/bin/Xfbdev -fb /dev/fb2 -s 0 > /dev/null 2>&1 & [root@armadillo440-0 (ttymxc1) ~]# DISPLAY=:0 functester >/dev/null 2>&1 &
上記のコマンドを実行すると、下記のように表示される。 (USBモニタの解像度:800x600に対し、functesterの画像が480x272であるため、左上に表示されている。)