Howto

Armadillo-840 液晶モデルでUSBガジェットを使用する

Armadillo-840液晶モデルをUSBデバイスとして使用する方法を紹介します。USBデバイス機能を提供するUSBガジェットドライバーには様々な種類のものが用意されています。本Howtoでは、例としてイーサネット機能を使用します。

本Howtoでは、コンフィギュレーションを変更したLinuxカーネルイメージを作成して、Linuxカーネルイメージおよびデフォルトのユーザーランドイメージをフラッシュメモリに書き込みます。その後、イーサネットガジェットの動作確認をPING通信にて行います。手順は次の通りです。

1. 接続方法 2. Linuxカーネルイメージのカスタマイズ   2.1. ソースコードの準備   2.2. コンフィギュレーションの開始   2.3. ベンダー/プロダクト名の選択   2.4. カーネルコンフィギュレーションの変更 3. イメージのビルド 4. Linuxカーネルイメージの生成確認 5. フラッシュメモリの書き換え 6. 動作確認   6.1. ネットワークインターフェースの有効化   6.2. ネットワーク設定の確認   6.3. PING通信での動作確認

本Howtoで使用したソースコードアーカイブおよびイメージファイルは次の通りです。

Linuxカーネルソースアーカイブlinux-3.4-at4.tar.gz
Atmark Dist ソースアーカイブatmark-dist-20130704.tar.gz
ユーザーランドイメージromfs-a840-v1.00.img.gz

本Howtoで作成するイメージファイルは次の通りです。このイメージで動作を確認する場合は、1. 接続方法のように接続し、5. フラッシュメモリの書き換えから読み進めてください。

Linuxカーネルイメージlinux.bin.gz

本Howtoでは次のATDEを使用して、開発および動作確認を行います。

ATDE5 (amd64向け VMware仮想イメージファイル)atde5-amd64-20130710.tar.xz

1. 接続方法

イーサネットガジェットを使用する場合の接続例を次に示します。

2. Linuxカーネルイメージのカスタマイズ

カーネルコンフィギュレーションを変更して、イーサネットガジェットに対応したLinuxカーネルイメージファイルを作成します。

2.1. ソースコードの準備

Atmark DistとLinuxカーネルのソースコードアーカイブを準備し展開します。展開後、Atmark DistにLinuxカーネルのソースコードを登録するために、シンボリックリンクを作成します。

[ATDE ~]$ wget https://download.atmark-techno.com/armadillo-840/source/linux-3.4-at4.tar.gz
[ATDE ~]$ wget https://download.atmark-techno.com/armadillo-840/source/atmark-dist-20130704.tar.gz
[ATDE ~]$ ls
atmark-dist-20130704.tar.gz  linux-3.4-at4.tar.gz
[ATDE ~]$ tar zxf atmark-dist-20130704.tar.gz
[ATDE ~]$ tar zxf linux-3.4-at4.tar.gz
[ATDE ~]$ ls
atmark-dist-20130704  atmark-dist-20130704.tar.gz  linux-3.4-at4  linux-3.4-at4.tar.gz
[ATDE ~]$ ln -s ../linux-3.4-at4 atmark-dist-20130704/linux-3.x<sup>※1</sup>

※1 シンボリックリンク名は常にlinux-3.xである必要があります

2.2. コンフィギュレーションの開始

make menuconfigでコンフィギュレーションを開始します。

[ATDE ~]$ cd atmark-dist-20130704
[ATDE ~/atmark-dist-20130704]$ make menuconfig

2.3. ベンダー/プロダクト名の選択

「Vendor/Product Selection \-\-\->」を選択します。

Vendor/Product Selection  ---&gt;
Kernel/Library/Defaults Selection  ---&gt;
---
Load an Alternate Configuration File
Save Configuration to an Alternate File

Vendorには "AtmarkTechno" を選択し、AtmarkTechno Productsには "Armadillo-840" を選択します。その後、前のメニューに戻り「Kernel/Library/Defaults Selection \-\-\->」を選択します。

--- Select the Vendor you wish to target
(AtmarkTechno) Vendor  <sup>※2</sup>
--- Select the Product you wish to target
(Armadillo-840) AtmarkTechno Products  <sup>※3</sup>

※2 "AtmarkTechno"を選択します

※3 "Armadillo-840"を選択します

2.4. カーネルコンフィギュレーションの変更

カーネルコンフィギュレーションを変更するには、「Customize Kernel Settings」を選択します。その後、前のメニューに戻り「Do you wish to save your new kernel configuration?」で"Yes"とします。

--- Kernel is linux-3.x
(default) Cross-dev
(None) Libc Version
[ ] Default all settings (lose changes)
[*] Customize Kernel Settings
[ ] Customize Vendor/User Settings
[ ] Update Default Vendor Settings

Linux Kernel Configurationメニューが表示されます。

[*] Patch physical to virtual translations at runtime
    General setup  ---&gt;
[*] Enable loadable module support  ---&gt;
[*] Enable the block layer  ---&gt;
    System Type  ---&gt;
    Bus support  ---&gt;
    Kernel Features  ---&gt;
    Boot options  ---&gt;
    CPU Power Management  ---&gt;
    Floating point emulation  ---&gt;

カーネルコンフィギュレーションを変更して、イーサネットガジェットを使用可能にします。変更後、前のメニューに戻り「Do you wish to save your new kernel configuration ? <ESC><ESC> to continue.」で"Yes"とし、カーネルコンフィギュレーションを確定します。

System Type  ---&gt;
  Armadillo-840 System Configuration  ---&gt;
    USB1 selection (CON7 - Device)  ---&gt;
      ( ) CON5 - Host
      (X) CON7 - Device
Device Drivers  ---&gt;
  [*] USB support  ---&gt;
    &lt;*&gt;   USB Gadget Support  ---&gt;
      &lt;*&gt;   USB Gadget Drivers (Ethernet Gadget (with CDC Ethernet support))  ---&gt;
        ( ) Audio Gadget (EXPERIMENTAL)
        (X) Ethernet Gadget (with CDC Ethernet support)
        ( ) Network Control Model (NCM) support
      [*]       RNDIS support
      [ ]       Ethernet Emulation Model (EEM) support

3. イメージのビルド

イメージをビルドします。

[ATDE ~/atmark-dist-20130704]$ make

4. Linuxカーネルイメージの生成確認

ビルドが終了すると、images/ディレクトリ以下にイーサネットガジェットに対応したLinuxカーネルイメージファイル linux.bin.gz が作成されています。

[ATDE ~/atmark-dist-20130704]$ ls images/linux.bin.gz
images/linux.bin.gz

5. フラッシュメモリの書き換え

フラッシュメモリのkernelパーティションを4. Linuxカーネルイメージの生成確認で確認したLinuxカーネルイメージで、userlandパーティションをデフォルトのユーザーランドイメージで書き換えます。

フラッシュメモリの書き換え方法については Armadillo-840 製品マニュアルの12. フラッシュメモリの書き換え方法を参照してください。

6. 動作確認

ATDE5とArmadillo-840で、イーサネットガジェットを使用したPING通信を行います。

イーサネットガジェットを使用したネットワーク通信は次のようにして可能になります。

  1. Armadillo-840をイーサネットガジェットとして接続した場合、Armadillo側に"usb0"という名前のネットワークインターフェースが作成される。
  2. イーサネットガジェットが有効なArmadillo-840がPCに接続され、ATDEに「Netchip RNDIS/Ethernet Gadget」を認識させると、ATDE側にも"usb0"というネットワークインターフェースが作成される。
  3. Armadillo側の"usb0"とATDE側の"usb0"間で、ネットワーク通信が可能になる。

事前にArmadillo-840 製品マニュアルの4.2.2. 取り外し可能デバイスの使用を参照して、ATDE5にArmadillo-840を接続する必要があります。Armadillo-840のデバイス名は「Netchip RNDIS/Ethernet Gadget」と表示されます。

6.1. ネットワークインターフェースの有効化

Armadillo-840およびATDE5のネットワークインターフェースを有効化します。

Armadillo-840のネットワークインターフェース"usb0"を有効化します。

[armadillo ~]# ifup usb0

Armadilloの起動時に自動的にusb0が有効化されるようにするには、/etc/config/interfacesを次のように編集します。

[armadillo ~]# vi /etc/config/interfaces
# /etc/network/interfaces -- configuration file for ifup(8), ifdown(8)
 
auto lo eth0 usb0 <sup>※4</sup>
iface lo inet loopback
iface eth0 inet dhcp
iface usb0 inet manual
      up ifconfig usb0 up
      post-up zcip usb0 /etc/zcip.script > /dev/null
      down ifconfig usb0 down

※4 "usb0"を追加します

編集後、次回起動時に設定が反映されるようにコンフィグ領域を保存します。

[armadillo ~]# flatfsd -s

ATDE5では、接続が完了すると自動的にネットワークインターフェース"usb0"が有効化されるため、この作業は必要ありません。

6.2. ネットワーク設定の確認

Armadillo-840およびATDE5のネットワーク設定を確認します。ネットワークインターフェースの有効化が完了した時点で、リンクローカルアドレス※5が割り当てられます。

※5 IPv4LLという機構によって割り当てられる特定のアドレス範囲(169.254.0.1~169.254.255.254)のIPアドレス。

Armadillo-840のネットワーク設定を確認します。

[armadillo ~]# ifconfig
  :(省略)
usb0      Link encap:Ethernet  HWaddr <replaceable>F2:13:6A:0F:7D:24</replaceable> <sup>※6</sup>
          inet addr:<replaceable>169.254.134.176</replaceable>  Bcast:169.254.255.255  Mask:255.255.0.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:11 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:0 (0.0 B)  TX bytes:1827 (1.7 KiB)

※6 ネットワークインターフェースが有効化されると"usb0"が表示されます

ATDE5のネットワーク設定を確認します。

[ATDE ~]$ LANG=C sudo ifconfig
  :(省略)
usb0      Link encap:Ethernet  HWaddr <replaceable>a2:e4:92:6f:c6:54</replaceable> <sup>※7</sup>
          inet6 addr: <replaceable>fe80::a0e4:92ff:fe6f:c654/64</replaceable> Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
 
usb0:avahi Link encap:Ethernet  HWaddr <replaceable>a2:e4:92:6f:c6:54</replaceable> <sup>※8</sup>
          inet addr:<replaceable>169.254.9.18</replaceable>  Bcast:169.254.255.255  Mask:255.255.0.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

※7 イーサネットガジェットを認識すると"usb0"が表示されます

※8 リンクローカルアドレスが割り当てられると"usb0:avahi"が表示されます

6.3. PING通信での動作確認

Armadillo-840からATDE5に、イーサネットガジェットを使用したPING通信を行う例を次に示します。

[armadillo ~]# ping <replaceable>169.254.9.18</replaceable>

eth0またはawlan0を使用してネットワークに接続している場合、ネットワーク通信時にusb0が使用されない場合があります。確実にusb0を使用させる場合は、6.1.2. ネットワークの有効化、無効化を参照してusb0以外のネットワークインターフェースを無効化してください。