2008年06月21日

AVR32 AT32AP7000 NGW Network Gateway Reference Boardで遊ぶ 1

このblog、電子工作とかいいながら一度も話題が出ていなかったりw そんなわけで、初めての項目ですw
で、最近またAVR32をいじり始めました。AVR32 Studio 1.0がへろへろで使う気にならなかったのがver2.0で比較的にまともになったっぽいというのが理由です。
<AVR32 Studio ver.2.02>
b89.jpgただ、基本的にIDEがEclipseベースですから8bitAVRの環境と違って、gccを知ってる人前提になってる部分が多々あったりします。そんなわけで、ドールのネタもやってはいきますが。のんびりとAVR32の環境をNGWをベースに作っていこうかなと思います。折角AT32AP7000は性能の高いCPUなんで、MP3かoggのソフトウェアデコードとかやってみたら面白いかなとか。取りあえずそのために、TOPPERSかHOSなどのRTOSのAVR32環境へのポーティング、TFT-LCD拡張、AC97 Codec追加とかやっていければいいかなぁという予定。でも予定は未定なのでw

初っぱなはEclipse環境のNGWのスタンドアロン開発環境を作ります。NGWはLinuxの環境はあるんですが、スタンドアロン動作のための環境がなかったりします。UC3A・BベースのSTK1100・STK1101とかにはフレームワークまであったりと親切なんですけどね。まぁ、あくまでリファレンスデザインキットで評価ボードではないので当たり前かもしれませんが。
そんなわけで自前で作ることにします。

必要な物
NGW(Network Gateway Reference Board)
NOR-Flash/SDRAM/SDCARD/USB/Ethernet*2などの基本デバイスが載ったAT32AP7000ベースのボードです。
AVR32 Studio ver.2.02
Eclipse 3.2ベースのAVR32開発環境です
AVR32 GNU toolchain 2.00
gccベースのAVR32用Cコンパイラ/リンカ/アセンブラのセットです
JTAGICE mk2
AVRシリーズ用のJTAG ICEです。これをボードにつないで、ボード上のフラッシュメモリへの書き込みやデバッグを行います。
<JTAGICEとNGW>
b90.jpg

環境をつくる

ソフトはGNU toolchain、AVR32 Studioの順でインストールします。インストールしたら、取りあえずプロジェクトを作ってみます。最初に起動するとワークフォルダを聞いてきますが、取りあえず e:\avr に作る物とします。
さて、まずプロジェクトを作りますが、取りあえずtest用のものを作りましょう。
1.スケルトンプロジェクトを作る
 File-New-AVR32 C projectを選びます。ここでプロジェクト名を設定し、target cpu AP7000、Project typeはAVR32 Standalone Executableで完了です。
b92.jpg
2.プロジェクトの詳細を設定します
 AP7000のスタンドアロン環境ではROMはCFIベースのNORフラッシュ、RAMは内蔵RAM 32KBを使う設定のみです。どうせなので、最初っからSDRAMを使えるような環境を作りましょう。そうすれば、SDRAMへGlobalやHeapなども自由に取ることができますから、広大なメモリ空間を自由に使えます。
3.avr32-gcc/avr32-ld/avr32-asの設定を作る
  gccはコンパイラ、ldはリンカ、asはアセンブラです。8bit AVRではここらへんの設定は結構GUI的にできていましたが、AVR32では基本的にコマンドライン引数を設定する項目があるだけです。設定する内容は、gccのコマンドラインオプションを参考に設定しなければいけません。
  とりあえず、わたしは画像のような設定にしています。
b91.jpgMapファイルを生成することと、リンカスクリプトを設定します。リンカスクリプトは、どのようなセクションをどのメモリへ配置するかを指定するスクリプトです。このスクリプトのベースは C:\Program Files\Atmel\AVR Tools\AVR32 Toolchain\avr32\lib\ldscriptsです。とかいいながら、あんまり自分も設定項目大杉で全部はよくわかってないですw 単純な形だとすぐわかるんですけどね。まぁ、別にこういうのは全部わかろうとしなくても、必要となったときに覚えれば問題ありません。
  ちなみにベースのスクリプトから変更したのはSDRAMの設定をMEMORYに追加したことと、INTRAMに設定されていたセクションをすべてSDRAMへ移したことです。これにより、最小限の変更でSDRAMベースのシステムへ対応することができます。
  取りあえず、ここまで。次は実際に動かすところからです。
posted by もろぼし☆らむ at 22:26| Comment(0) | TrackBack(0) | 電子工作