AVR CP/Mに苦戦中

つねづねCP/Mが動くコンピュータを作りたいと思っていた。その願望はくまちゃんがプリント基板をくれたZ80-MBC2で叶えられたし、間もなくとみちゃんのSBC8080_CP/Mでも実現するらしい。これらの名作がまだ発表されていない段階で取り組んだのがAVR CP/Mシールド。組み立てを終えたが動作させられなくて、いまだにもたついている。完成までまだしばらくかかりそうなので途中経過を報告しておく。

avrcpm_shield

原案はこちらで公開されているCP/M on a AVR。乱暴な手書きの回路図はさておき、本来は5Vで動かすべきAVRを、SDカードと共通の3.3Vで動かすなど驚きの設計。さすがにそれはまずいでしょうと思うかたわら極限まで部品を減らした執念に感服する。そのシンプルさを保ったまま仕様を順守して動かすため、Arduinoのシールドの形をとった。回路図を下に示す(画像をクリックすると別窓に拡大表示します)。

avrcpm_sch

シールドとはいっても今のところスケッチを書いてアップロードすればいいという形にはなっていない。さしあたってはAVRに直接ファームウェアを書いてArduino UnoのAVRと差し替えることにした。手短にいえばArduino Unoから電源とUSB-シリアルを借りているだけ。とにかく一度ちゃんと動かすまでは取り扱いの便利さに配慮する余裕がない。

ファームウェアはこちら(歴代の各バージョンはこちら)。HEXが配布されているが、それは部品点数が増えた新しいバージョンのやつで、極限まで部品を減らした初代のハードウェアには対応しない。そうでなくても、Arduino Unoで動かすには原案のクロック20MHzを16MHzに下げるなどするためソースを再アセンブルする必要がある。

再アセンブルのための開発環境は公式な説明が見当たらないのでボクが調べた結果を述べる。ファームウェアはWindowsで動くアセンブラavrasm2.exeの書式で書かれている。(こちらで探す)。にもかかわらず、MakefileはLinuxのツールチェインを使う。どうやらLinuxのもとでWindowsのエミュレータwineを使ってアセンブルするらしい。

再アセンブルにあたってはconfig.incを編集して、最低限、クロックを下げ、DRAMアクセスを4ビット単位に定義し直す。あとはmakeとやってみて足りないと言われたツールを追加する。あるいはそのツールを必要としない古いバージョンで試す。最悪の場合、そのツールを使わないようにMakefileを書き換える。ボクは足りないと言われたSVNをインストールできなくて、これを使わないようにMakefileを書き換えた。

avrcpm_asm

こうしていちおうエラーなくHEXを作るところまでは辿り着いた。警告が6件あるが、レジスタ名の再定義というものだからたぶん無視していい。ただし、そのHEXを書き込んでもうまく動作しない。何しろ起動メッセージが表示されないのだから話にならない。せめて修正の手がかりになるような事象が見えないと、この先へ進めない。

カテゴリー: Arduino パーマリンク

AVR CP/Mに苦戦中 への3件のフィードバック

  1. hogera より:

    avrを3.3Vで動かすのは保証範囲内の話では

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト /  変更 )

Google フォト

Google アカウントを使ってコメントしています。 ログアウト /  変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト /  変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト /  変更 )

%s と連携中