AVR32 Network Gateway Reference Board |
このレポの続きはBlogでのんびり進行中です〜ヽ(´ー`)ノ
最近発売されたらしいATMEL純正のAVR32を使ったネットワークゲートウェイのリファレンスボードです。某所で話が出ていたので、試しに買ってみました。DigiKeyで9200円ぐらいです(送料+2000円で11000円ちょっと)
ちなみに付属品は一切ありません(ぉ DCアダプタも適当な9〜15Vまでのを使います。極性はどっちでもOKなようになっていますので、コネクタさえ合えば問題ありません。自分は秋月の12Vアダプタで動かしています。サポートソフトもATMELサイトからダウンロードします。
OSはLinux 2.6.18です。OSの書き換えとかはブート領域(U-boot)を書き直さなければ、SDカードとかtftpでアップデートできます。U-bootの書き換えには JTAGICEmk2が必要。まともに使うことを考えたら、買っておいた方がいいと思います。Digikeyで品切れですがSTK500とのセット品が1.8万ぐらいで買えます。自分は昔に買ったので、4万近い値段で買いましたが・・・orz
あんまりLinuxは興味がないので、消して使おうかなとか思ってましたが、以外に遊べそうなので当分そのまま使おうかと。
で、届いてからいじってますが、ちゃんとリセットするときにはpoweroffしてからでないと激しくまずいです。当たり前ですが、簡単にふっとびます(ぉ 普通の堅牢な組み込み機器のつもりで使ってはいけません。
そもそもLinuxなんてPCでちょっとしか使ってない、自分のようなあんまりよくわからない奴が遊ぶにはかなりの覚悟が必要です。なにしろ情報があんまりないのと、かなーりATMELの方がイイカゲンっぽいので、、。ただ、いじり倒して遊びたい人には、すべての情報が手に入る低価格組み込みLinuxボードとして有用かと思います。
●ターミナル
ブートからのコントロールはシリアルから行います。設定は115200bps N81 です。適当なターミナルソフトを準備して、RS232Cストレートケーブルで繋げばOK。USB-232C変換ハードだったら、GenderChanger噛ませば直結できると思います(自分はその構成)
自分はターミナルソフトは昔niftyで使ってた秀TermEvoを使ってます。速くて高機能、信頼性も高いのでお勧め。シェアウェアだから嫌う人も多いけど。
U-Bootに入るには、起動直後に1秒間スペース待ちがありますので、そこで入ります。以下、ブートログ。
U-Boot 1.1.4-at0 (Jan 3 2007 - 10:30:09) U-Boot code: 00000000 -> 000144f7
data: 24000000 -> 24002d80 Starting kernel at 90000000 (params at 11fc0040)... pdc pdc.0: Atmel Peripheral DMA
Controller enabled Network Gateway ready BusyBox v1.2.2 (2006.12.13-14:13+0000)
Built-in shell (ash) ~ # |
●中身(ハードウェア)
回路図みた方が速いです(ぉ
http://www.atmel.com/dyn/resources/prod_documents/AT32NGW100_schematics.pdf
結構拡張ヘッダにピンが出てますので、Linux制御組み込み機器を作るのは楽でいいかも。ちなみにTFT液晶I/Fで必要なピンは全部出てるので、液晶を繋いで画面表示という拡張か可能と思われます。
USBはHispeedですから、高速性が必要な用途にも十分使えます。
●中身(ソフトウェア)
取りあえず、定番のhttpd,ftpdもありますし、sambaもあります。ネットワークラジオとか作るのは楽ですね。デバッグでgdbserverが入ってないのでgdb使えないっぽい?
EclipseでデバッグしようとするとftpがPassiveモードを使ってくれないので、アップロードでAVR32に蹴られます。たぶん、どっかに設定スクリプトがあるはずなんだけど、まだ探索中・・・(;´Д`)
inetd.confとftpaccessの設定ミスです。ftpaccessは新規作成して追加(Linuxな人なら常識なんだろうけど・・・
うちのローカルは、192.168.11.*になってるんで、環境に合わせて設定してください(赤字がデフォルトと違うトコ)
ただ、やっぱりgdbserverがないから使えないっぽいです。うーん。Linuxアプリのデバッグはちょっとまだ駄目そう。
ftp stream tcp nowait root.root /usr/sbin/ftpd ftpd -a #netbios-ssn stream tcp nowait root.root /usr/sbin/smbd smbd #netbios-ns dgram udp wait root.root /usr/sbin/nmbd nmbd swat stream tcp nowait.400 root.root /usr/sbin/swat swat |
port-allow address 192.168.11.0/24 |
内蔵アプリはデフォルトはIPアドレスが10.0.0.0/24の範囲で使うようになってるんで、hostsとかinterface、httpd.conf等の設定を直しましょう。そうすると、LANに繋いでWebブラウザでアクセスすると、設定画面とか出ます(変えないと403エラーが出てアクセスできません)
Linuxアプリケーションは、Eclipseの環境で作れます。取りあえず動かしたい人は、NGWのGetting Startedの通りやってみましょう。
なお、普通はavr32-gccとかをデフォルトで使うようになってますが、linuxアプリを作る場合にはavr32-linux-gccを使います。作ったelfファイルをftpでアップして、chmod 755すれば実行できます。
#include <stdio.h> int main(int argc, char** argv) |
~ # mv /home/ftp/test.elf . << ftpで転送 ~ # chmod 755 ./test.elf ~ # ./test.elf Hello World! ~ # |
ARMのEclipse開発環境と混ざるとちゃんと動かないっぽいので、別フォルダにインストールした方がいいかも?
使った後は、poweroffコマンドでシャットダウンしてから電源OFFしましょう。そうでないと、ファイルシステムがすぐに死にます。
●一応、メモ書き代わりにフラッシュメモリがブランク状態からの復旧法記載。
<ポイント>
・ボードが届いたら、JTAGICE2を持っていれば、すぐにフラッシュ領域を全部読み出してバックアップしましょう。ATMELのサポートにはSTK1000のU-bootが使えるようなことが書いてますが、全く使えません(ぉぃ 0x00000-0x20000までがU-bootなんで、この領域をファイル化しておきましょう。
>もう消してしまったお(;´Д`) ←自分 (これではまった・・・
→U-bootをリビルドするか、AVRFreaksのフォーラムにバイナリがあるんでそれを使いましょう。
>U-bootの環境変数をバックアップ・メモ書きしておきましょう。全域Eraseしたあとに戻すときに必要です ← これもはまった(;´Д`)
ビルド直後のデフォルトはmmcからの起動ですから、元に戻すには以下の書き換えが必要
eth0,1のMACアドレスもここで設定されているので、購入直後にメモ書きしておきましょう。
avr32programで0x7f0000-0x7fffff領域をバックアップするのもOK。
bootargs=console=ttyS0 root=/dev/mtdblock1 rootfstype=jffs2
bootcmd=fsload; bootm
●ファイルシステム破損対応
Time: avr32 clocksource has been installed. VFS: Mounted root (jffs2 filesystem). Freeing init memory: 56K (90000000 - 9000e000) |
●U-bootの書き換え/バックアップ
BSP2.0のCDにはngwのU-bootイメージが入ってません(STK1000のみ)。必ず、Linux以外のプログラムを書いて遊びたい場合には、U-bootを自分でバックアップしておきます。
avr32program read -F bin -O 0 -s 0x20000 > uboot.bin (バックアップ)
avr32program program -F bin -vfcfi@0 uboot.bin (書き直し)
avr32program erase -fcfi@0 (All erase,全域消したくないときは上のとこで-eオプション使う。全域Eraseしないので、サムエラーがでるかも。)
●全域書き換えた後
全域書き換え直後にはmmcからイメージをロードして起動するようになっているので、NORフラッシュから読み出して起動するようにします。
(0x7f0000-0x7fffffを消していなければ不要)
環境変数設定(他に必要なモノがあればそれも直します)
Uboot> setenv bootargs 'console=ttyS0 root=/dev/mtdblock1
rootfstype=jffs2'
Uboot> setenv bootcmd 'fsload; bootm'
NORの環境変数エリアのプロテクトを解除
Uboot> protect off 0x007f0000 0x007fffff
Un-Protected 1 sectors
環境変数保存
Uboot> saveenv
Saving Environment to Flash...
Un-Protected 1 sectors
Erasing Flash...Erasing sector 134...Erased 1 sectors
Writing to Flash... done
Protected 1 sectors
再度プロテクト(念のため・・
Uboot> protect on all
Protect Flash Bank # 1
リセット
boot> reset