Eyes, JAPAN Blog > CG-LBSTD2PUネタ

CG-LBSTD2PUネタ

beko

この記事は1年以上前に書かれたもので、内容が古い可能性がありますのでご注意ください。

意外と盛り上がっていないCG-LBSTD2PUですが、私も購入してあれこれ試しています。

このボードの特徴は、Flash ROM が多い(boot 4MB, Userland 16MB)、RAMも多め(64MB)、FastEther が2ポート、何かと便利な UART が2個、極めつけはUSB1.1が2ポート。CPU は改造されることで有名な BBR-4MG と同じ ADM5120 を搭載している。実際、コレガより配布されているlinux-kernel のソースツリーを探ると、この BBR-4MG で使われているものがそのまま使われている部分もある。(ソースに著作者が書かれていないので、誰が作ったのかは分かりませんが。。)この製品にローカルなパッチは、RTC と GPIO を使った Flash ROM のアドレスバス拡張程度だと思う。

開発環境の使い勝手は、Armadillo の atmark-techno 提供 atmark-dist には及ばないが、組み込み Linux を1度でもさわったことがある方なら特に問題なく利用可能だと思います。カーネルを作り直すには、linux-kernel ソースツリーのルートで make して、vmlinux を作り、それを添付されているシェルスクリプトで u-boot (ブートローダ)用のイメージへ変換を行う。その後、TFTP などでボード上の u-boot 経由で Flash へ書き込みを行う。ユーザランドの ROM イメージ更新は u-boot からは現状では不可能なので、NFS をルートファイルシステムとしてボードの Linux を立ち上げてから、Flash へ書き込みを行う。

外部インタフェースで最もお手軽に拡張に使えるものが USB であるが、配布されている kernel ではまともに動作しない。USB ターゲットデバイス(USBメモリ・ハブ・マウス..全て)を接続すると kernel の USB ホストアダプタドライバでエラーが発生する(usb-ahci.c の sahci_alloc_dev() 内だったかな.. 嘘かもしれません)。ちなみに、BBR-4MG 向けカーネルをそのまま LBSTD2PU で走らせた場合は、問題なく USB を使用できている。日経Linuxにて、このボードを用いた記事が連載されているようだが、USB 部分の解説はどのように書かれるのかが楽しみです。

以下、プリインストールカーネルでの Oops。

hub.c: new USB device adm5120-hcd-1, assigned address 2
usb.c: USB device not accepting new address=2 (error=-32)
Unable to handle kernel paging request at virtual address 000007e2, epc == 80162ccc, ra == 80155118
Oops in fault.c::do_page_fault, line 206:
$0 : 00000000 10008600 00000001 00000000 a03c9000 ffffffff 00000800 00000000
$8 : 00000020 80238cd0 00000020 00000000 83f887c0 83f887c0 00000001 0000000a
$16: a029e000 81169800 810e6a00 00000001 00000000 00000001 802b0000 00068db9
$24: 00000001 8112fdfa 8112e000 8112fec8 810ef420 80155118
Hi : 00000000
Lo : 00000000
epc : 80162ccc Not tainted
Status: 10008603
Cause : 00800008
PrId : 0001800b
Process khubd (pid: 12, stackpage=8112e000)
Stack: 810e6a04 00000001 810e6a00 00000000 802b0000 00068db9 0029e000
810e6800 810e6a00 8114c320 810e6800 80155118 802b0000 00068db9 810ef420
80155504 810e6a04 00000001 810e6a00 810e6800 810e6a04 8015a238 802ac8c0
802b7a64 810e6a04 00000002 802686d0 00000011 01010010 000000c8 00000000
00000004 00000001 00000000 810ef420 810e6800 8029e9b8 802b0000 802b764c
8112ff82 …
Call Trace: [<80155118>] [<80155504>] [<8015a238>] [<802686d0>] [<8015b080>]
[<8015ab9c>] [<80250000>] [<80004464>] [<80013fac>] [<80004454>]
Code: 08058b34 00801821 8c6307cc <946207e2> 1040fffd 24020001 ac7007cc a46007e2 ae0407cc

担当: 衣川 (「ケース閉じると夏場は危ないよね」担当)

2 responses to “CG-LBSTD2PUネタ”

  1. 衣川 says:

    日経Linux3月号には、kernelに認識させるメインメモリを32MBにすることで、USBが利用可能になるとかいてあった。その理由は、「USBホストコントローラのDMA先アドレス指定レジスタには、32MBのアドレス範囲しか指定できない」と書いてあった。
    しかし、そのレジスタは28ビット範囲でアドレス指定できるようになっている。どちらかというと、EtherスイッチコントローラのDMAアドレス指定レジスタが25bitであり、そちらが32MBの制約を受けているはず。
    理由をちょっと調べてみます。

  2. 衣川 says:

    USB対応の正式リリースがありました。
    http://www.libertysystem-factory.co.jp/corega/lbstd2pu.html
    試してみましょう。