お遊び記録

最近の活動記録

FreeBSD-arm を Pandaboard に乗せてみた (2) 開梱して動作確認したった

そもそも FreeBSD-arm はTier-2サポートです。 もともとFreeBSD-CURRENT 自体動作保証がありませんが、それに加えて arm 版ではさらに厳しい、「イバラの道」を覚悟する必要があります。

その様な条件下で作業を行う場合、動かないのがハード的に逝ってるのか、 それともソフトウェアの問題なのか切り分けるのが重要になります。

以下、購入したPandaBoard ESを開梱し、母艦に接続、 動作試験するまでをまとめます。


開梱の義

f:id:yukimimiya:20121005114610j:plain

PandaBoard ES の箱はこんな感じです。 中には静電防止袋に入ったPandaBoard ESが入っています。

f:id:yukimimiya:20121006203055j:plain

取り出したPandaBoard ESです。 コンパクトなボードに様々なインタフェースが搭載されています。

f:id:yukimimiya:20121007141136j:plain

PandaBoard ES と母艦を接続している様子です。 SDカードをスロットに挿入し、USB-シリアルコンバータでシリアル接続して います。この状態でACアダプタを電源に繋げれば、起動がはじまります。

動作確認したった

動作確認は以下の手順で行えます。

1. 動作確認用イメージを焼く 

動作確認用のLinuxイメージがテキサス・インスツルメンツ社のページで公開されています。 これを入手しましょう。

# fetch https://gforge.ti.com/gf/download/frsrelease/643/5076/validation-19102011.img

このイメージは80Mbyteの小ささなので、適当なサイズのSDカードに焼きます。 私は予備に購入しておいた8GBのカードを使用しました。

VirtualBoxSDHCカードにイメージを焼く手順は以下のとおりです。

  1. USBメモリカードリーダにSDHCカードを取り付け、母艦のUSBコネクタに差し込みます。 その際、USB2.0コネクタを使用します。USB3.0ではデバイスがうまく認識されないようです。
  2. VirtualBoxの「デバイス」→「USBデバイス」とメニューを開いてゆき、 「Generic Mass Storage Devece」を選択します。
  3. 数秒待つと、デバイスが認識されます。その際、どのデバイス番号で認識されたか確認しておきます。
  4. 今、/dev/da0 として認識されたならば、以下のようにして書き込みます。
# dd if=validation-19102011.img of=/dev/da0 bs=4m

SDHCカードがどのデバイスとして認識されたかは、認識された際に コンソールに表示されるメッセージで確認できます。

umass0: <Generic Mass Storage Device, class 0/0, rev 2.00/1.00, addr 2> on usbus1
da0 at umass-sim0 bus 0 scbus3 target 0 lun 0
da0: <Generic Storage Device 0.00> Removable Direct Access SCSI-2 device
da0: 40.000MB/s transfers
da0: 7496MB (15351808 512 byte sectors: 255H 63S/T 955C)

この様に表示されればda0として認識されています。 他にUSBデバイスを認識させていなければ、da0として認識されるでしょう。

2.端末ソフトの設定を行なっておく

ここでは端末ソフトウェアputtyにシリアル接続用設定を追加する手順をまとめます。

f:id:yukimimiya:20130118234621p:plain

わかっている場合は不要です。「コントロールパネル」から「デバイスマネージャ」を 起動し、「ポート (COMとLPT)」を開きます。 ここでUSB Serial Portとなっているデバイスが COM の何番と表示されているか確認します。

f:id:yukimimiya:20130119000144p:plain

次にputtyを起動し、設定ダイヤログで以下の操作を行い、シリアル接続の設定を追加します。 まず、「接続タイプ」を「Serial」に設定します。 次に「シリアルポート」を先に確認した COM番号に、 「スピード」を「115200」に設定します。 最後に「セッション一覧」の入力欄に「Serial」と入力し、 「保存」ボタンを押します。

f:id:yukimimiya:20130119001932p:plain

これで「セッション一覧」に設定「シリアル」が追加されました。 以降、これをダブルクリックすることでシリアル接続できます。

3.結線、起動する

f:id:yukimimiya:20111021093832j:plain

以下の順番で結線し、起動します。

  1. 音声出力試験のため、スピーカを音声出力端子に接続します。端子は基盤に近い方から音声出力、音声入力です。
    端子の名称は「ヘッドセット」ですが、試験の際にはヘッドセットは使わないほうが無難です。出力音がとても大きいため 耳を痛める危険があります。
  2. USBメモリ読み書き試験のため、USBメモリをUSB端子に接続します。容量はいくつでもかまいません。FAT32でフォーマットしておきます。内容は破壊されますので、注意します。
  3. PandaboardのRS232C端子と母艦のそれとをRS232Cケーブルで接続します。 母艦がRS232Cインタフェースを持たない場合は、USB-シリアルアダプタで接続します。
  4. SD/MMCソケットに、先に焼いたSDHCカードを挿入します。 きちんと奥まで刺さっているか確認しましょう。刺さりがあまいと起動しません。
  5. PandaboradのHDMI端子とディスプレイとをHDMIケーブルで接続し、ディスプレイの電源を入れておきます。
  6. ここまで来たら、母艦側でターミナルソフトを起動します。
  7. 電源コネクタにACアダプタのプラグを接続、電源供給を開始すれば起動します。

起動時のメッセージが端末に表示されて行きますので、確認します。

Texas Instruments X-Loader 1.41 (Sep 29 2011 - 10:43:53)
OMAP4460: 1.2 GHz capable SOM
mmc read: Invalid size
Starting OS Bootloader from MMC/SD1 ...


U-Boot 1.1.4-gc1cd80bc-dirty (Oct 12 2011 - 17:56:27)

Load address: 0x80e80000
DRAM:  1024 MB
Flash:  0 kB
Using default environment

In:    serial
Out:   serial
Err:   serial
Hit any key to stop autoboot:  0
mmc read: Invalid size

4020344 bytes read
## Booting image at 82000000 ...
   Image Name:   Linux-3.0.4+
   Image Type:   ARM Linux Kernel Image (uncompressed)
   Data Size:    4020280 Bytes =  3.8 MB
   Load Address: 80008000
   Entry Point:  80008000
   Verifying Checksum ... OK
OK

Starting kernel ...

Uncompressing Linux... done, booting the kernel.
[    0.000000] Linux version 3.0.4+ (danders@ccd-dev) (gcc version 4.3.3 (Sourcery G++ Lite 2009q1-203) ) #9 SMP PREEMPT Wed Oct 12 17:00:57 CDT 2011
[    0.000000] CPU: ARMv7 Processor [412fc09a] revision 10 (ARMv7), cr=10c5387f
[    0.000000] CPU: VIPT nonaliasing data cache, VIPT aliasing instruction cache
[    0.000000] Machine: OMAP4 Panda board
[    0.000000] Reserving 33554432 bytes SDRAM for VRAM
[    0.000000] Memory policy: ECC disabled, Data cache writealloc
[    0.000000] OMAP4460 ES1.1
[    0.000000] SRAM: Mapped pa 0x40300000 to va 0xfe400000 size: 0xe000
[    0.000000] PERCPU: Embedded 7 pages/cpu @c105e000 s6304 r8192 d14176 u32768
[    0.000000] Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 237568
...[中略]...
[   11.826263] devtmpfs: mounted
[   11.826263] Freeing init memory: 300K
init started: BusyBox v1.13.2 (2010-04-06 10:34:20 CDT)
[   12.223083] udevd (813): /proc/813/oom_adj is deprecated, please use /proc/813/oom_score_adj instead.
[   17.728729] omap_device: aess.-1: new worst case activate latency 0: 1770019
starting pid 1414, tty '/dev/ttyO2': '/bin/sh'
/ #

4.試験する

試験スクリプトを実行します。

/ # panda-test.sh

実行すると、以下の一連の試験が行われます。

  1. フレームバッファ ランダムデータ
    ディスプレイにランダムデータが出力されます。いわゆる「砂の嵐」が表示されます。
  2. フレームバッファ パターン試験
    ディスプレイにカラーパターンが出力されます。
  3. ヘッドセット ホワイトノイズ試験
    「ザー」というノイズ音が出力されます。
  4. ヘッドセット サイン波オーディオ試験
  5. 「ピー」というサイン波がステレオの左右交代に出力されます。
  6. HDMI ホワイトノイズ試験
    「ザー」というノイズ音が出力されます。
  7. 状態LED1試験
    LED1が点滅します。
  8. 状態LED2試験
    LED2が点滅します。
  9. USBメモリ転送試験
    USBメモリに読み書きします。
  10. USB2.0コントローラ試験
    EHCIコントローラが認識されているか確認します。
  11. 有線LAN試験
    有線LANが認識されているか確認します、

ここまでのまとめ

Pandaboard を開梱、接続して起動試験するまでをまとめました。 次は、いよいよFreeBSD-armの起動イメージを作成し、 Pandaboard ES で起動させます。