2009年11月19日木曜日

Ardunio ベースの AVR プログラマブル・ワンボード風マイコン計画

世界のどこかでだれかが作っていそうなものだが,今のところ見あたらない.
Altair 8800 とか,日本でいう TK-80 とか,に相当する教育用マイコン開発ボードがほしいらしい.時代はマイコン Micro-computer (あるいは My コンピュータ)から Micro-controller へかわっている.

個人がホビーで買ったり,一人が長く使うものではないから,すべてが簡単で安価であることが優先.

(1)Arduino は,プログラミング・インターフェースに徹する.Arduino のCPUをプログラミング可能にするわけではない.それも不可能ではないが,Arduino 標準ブート・ローダからセルフ・プログラミングとモニタ機能つきのブートローダに置き換えたりがめんどくさそうだ.
(2)Arduino のシールドとして,ワンボード・マイコン風の機械語プログラミング用入出力をつける.AVRのアーキテクチャからすると,16ビットアドレス,8/16ビットデータが,表示・変更できればよい.プログラマブルCPUはシールドの上につける.ATTiny 2313 とか ATmega8 から ATmega168 ぐらいにしておく.スイッチ類は大変高価なので,入力機構は工夫する.ビット表示・操作は学習用途として必要である.LCDやキーパッドはケーブルで接続可能であればじゅうぶん.
(3)プログラム・コードは,Arduino がデータとして保持する.最低フラッシュ・メモリ2ページ分のバッファがあればいいだろう.4Kぐらいのメモリ・チップを使ってもいい.
Arduino のSPIがマスタになり,プログラマブルCPUのICSPをSPIスレーブとして使い,プログラミングする.コードは,Arduino をISPにする programmer2 とか mega-isp を流用する.
(4)クロックは,Arduino から外部供給してステップ実行や低速実行する.フルスピード実行は,ヒューズビットを書き換えて内蔵オシレータをアクティブにして行う.
(5)プログラマブルCPUのレジスタやメモリ内容などのステータスは,プログラマブルCPU上の割り込みルーチンやブートストラップコードでArduino 側に応答する.2Kワードまでのコードなら完全リロケータブルなので,また ATmega168クラス以上はブートローダ領域とアプリケーション領域がわけられるので,これらの存在は問題にならないだろう.

Programmer2 のコードで ATTiny 2313 のフラッシュ内容をダンプすることができた.今一番の問題は,(5)のためのコードだ.ATTiny だとアセンブラで書かねばならない.かもしれない.

0 件のコメント:

コメントを投稿