以下のHowtoに従い、ユーザランドにdebianを用いて構築したBluetooth環境を、 atmark-distに移行する手順を紹介いたします。
[Howto : Armadillo-400シリーズでBluetoothを使用する]
https://armadillo.atmark-techno.com/armadillo-400-bluetooth
大まかな流れとしては、bluetoothを動作させるのに必要なアプリケーションとライブラリを ATDE3及びatmark-distのromfsにコピーをする作業となります。 尚、それぞれの作業は以下のHowtoに詳細が記載されていますのでご参考ください。
[Howto: debianパッケージに含まれるコンパイル済みのバイナリをArmadiilloで動作させる方法]
https://armadillo.atmark-techno.com/howto/use-debian-binary
[Howto : クロス開発用ライブラリをインストールする方法 ]
https://armadillo.atmark-techno.com/howto/install-cross-libraries
本手順は以下の環境で動作確認しております。
(環境)
Armadillo: Armadiil0-440, Armadiil0-460 Linux: linux-2.6.26-at18 atmark-dist: atmark-dist-20131122
1. debian環境からatmark-distへ移行するライブラリ及びバイナリの特定
a. bluetooth パッケージの依存関係の確認します。
依存関係の確認には例えば apt-cache depends コマンドが利用できます。
[a4x0-debian ~]$ apt-cache depends bluetooth bluetooth Depends: bluez-utils [a4x0-debian ~]$ apt-cache depends bluez-utils bluez-utils Depends: libbluetooth2 Depends: libc6 Depends: libdbus-1-3 Depends: libglib2.0-0 Depends: libusb-0.1-4 Depends: module-init-tools |Depends: makedev Depends: udev Depends: lsb-base Depends: dbus [a4x0-debian ~]$ apt-cache depends libbluetooth2 libbluetooth2 Depends: libc6 ...
b. ATDE3にインストールされているarmel向けクロスライブラリは例えば以下のコマンドで確認できます。
[ATDE3]$ dpkg-cross -l -a armel
c. a, bの情報より、ATDE3に足りないパッケージを特定します。
本環境では、以下のパッケージがATDE3に不足していたので、これらを今後の手順でインストールしていきます。
bluetooth libusb-0.1-4 libdbus-1-3 libbluetooth2 module-init-tools makedev udev lsb-base dbus bluez-utils
2. 特定したdebファイルをダウンロードし、ATDE3に転送
[a4x0-debian ~]$ aptitude download bluetooth libusb-0.1-4 libdbus-1-3 libbluetooth2 module-init-tools makedev udev lsb-base dbus bluez-utils [a4x0-debian ~]$ scp *deb atmark@ATDE3:/home/atmark/bluetooth/
3. クロス開発ライブラリへの変換、及びATDE3へのインストール
[ATDE3 ~]$ cd ~/bluetooth/ [ATDE3 ~/bluetooth]$ for i in $( ls *.deb ); do dpkg-cross -v --build --arch armel $i; done [ATDE3 ~/bluetooth]$ for i in $( ls *cross*) ; do dpkg -i $i; done
4. BusyBox v1.20.2 を選択
6.でインストールされる設定ファイルの一つ、/etc/init.d/dbus スクリプト内で、mountpoint バイナリを必要とするため、 busybox v1.20.2がインストールされるようコンフィグします。
[ATDE3 ~]$ cd ~/atmark-dist [ATDE3 ~/atmark-dist]$ make menuconfig Kernel/Library/Defaults Selection ---> を選択。 [*] Customize Vendor/User Settings をチェックしExitで抜ける。 Userland Configuration より、 BusyBox ---> (v1.20.2) Version
5. D-bus, bluetooth 起動設定
D-bus, bluetoothを起動するためのパッチを適用し、一度romfsを作成します。(*1)
パッチは以下からダウンロードしてください。
[ATDE3 ~]$ cd ~/atmark-dist [ATDE3 ~/atmark-dist]$ cat add_bluetooth_to_dist_a440_a460.patch | patch -p1 (*2) [ATDE3 ~/atmark-dist]$ cat Fix-the-mount-failure-at-startup-when-busybox-1.20.2.patch | patch -p1 [ATDE3 ~/atmark-dist]$ make
(*1) make all ターゲット実行時は、手動でコピーしたアプリケーションを消去されてしまうので、先に、パッチを反映させたromfsを作成します。
https://users.atmark-techno.com/comment/172#comment-172
(*2) 本パッチは、Armadillo-440, Armadillo-460向けに作成したものです。Armadiilo-420をご利用の場合は、パッチの内のパスを適宜変更してください。
6. バイナリ及び設定ファイルのromfsへのインストール
次にBluetoothを動作させるためのアプリケーションや設定ファイルをromfsへインストールします。
[ATDE3 ~]$ cd ~/bluetooth [ATDE3 ~/bluetooth]$ for i in $( ls *deb |grep -v cross |grep -v udev ); do dpkg -x $i tmp ; done (*3) [ATDE3 ~/bluetooth]$ rm -rf tmp/usr/share (*4) [ATDE3 ~/bluetooth]$ cp -r tmp/* ~/atmark-dist/romfs/ [ATDE3 ~]$ cd ~/atmark-dist [ATDE3 ~/atmark-dist]$ make romfs; make image (*5)
(*3) udev はatmark-distにすでに組み込まれているため、除外します。
(*4) user/share 以下はmanページ用ファイルやドキュメント類といった補助的なコンテンツが格納されているため、romfsのサイズを節約するために消去します。
(*5) 自作アプリケーションをromfsにコピーした後、make romfs, make image とするとatmark-distは、そのアプリケーションの依存ライブラリをATDE3にインストールされているクロス開発用ライブラリより検索し、自動的にromfs配下にインストールしてくれます。
7. 作成したromfsを用いてブート
一連の手順で作成したromfs、及びdebian環境で用いていたカーネルを使用してブートして下さい。 詳細な手順は製品マニュアルをご参照下さい。
8. config ファイルの更新
/etc/default/rc.localの内容をフラッシュのコンフィグ領域に書き込みます。 以下のコマンドを実行後、Armadilloを再起動してください。
[a4x0-atmark-dist ~]# chmod +x /etc/default/rc.local [a4x0-atmark-dist ~]# flatfsd -w
9. 動作確認
a. dbus daemon, 及びhci daemonプロセスが起動していることを確認
[a4x0-atmark-dist ~]# ps 1178 messageb 0:00 /usr/bin/dbus-daemon --system 1184 root 0:00 /usr/sbin/hcid -x -s
b. rfcomm listen でPCと接続
[a4x0-atmark-dist ~]# rfcomm listen 1 Waiting for connection on channel 1 Connection from 00:02:72:D0:0A:B4 to /dev/rfcomm1 Press CTRL-C for hangup
c. PCとの通信を確認
[a4x0-atmark-dist ~]# cat /dev/rfcomm1 hello hello