ATARI用 Ethernetアダプタ EtherNEC製作&ドライバ作成記

2010年のOSC神戸で展示した ATARI用Ethernet SMC_TT http://togetter.com/li/76769 の続編として作成した、ATARIマシンのROMカートリッジスロットにISA NE2000を接続するアダプタである "EtherNEC" のハード製作およびNetBSDドライバ作成関連のつぶやきアーカイブです。全然まとめになっていなくてすいません。 4月16日に迫った今年のOSC神戸のNetBSDセミナーで、このEtherNECとbus_space()の解説話ができたらな〜、と鋭意準備中です……
1
Izumi Tsutsui @tsutsuii

http://hardware.atari.org/ether/ のドライバ書いてくれるなら俺の余ってる奴を送ってやるぜ! とまたまたドイツからメールが

2010-02-21 10:21:09
Izumi Tsutsui @tsutsuii

こっちはVMEバスじゃなくてROMカートリッジスロットに差すタイプ。作るならこっちのほうが超簡単だけど、ポーリングonlyなのと、スロットにあう2mmピッチ?のカードエッジ部分基板を自分で作らないと世間には無さそうだったのでパスしてたんだけど。

2010-02-21 10:25:19
Izumi Tsutsui @tsutsuii

回路図を見ると、データバスのリード側は8bitで直結。ROMカートリッジというだけあってライトはデータバスに出ないらしく、書き込みは別アドレスでアクセスしてアドレスバスのA1-A8をバスバッファを介してデータバスにつなぐという荒技な実装っぽい。

2010-02-21 10:31:10
Izumi Tsutsui @tsutsuii

割り込みはないので送受信はポーリングのみ。dreamcastのNE2000の初期はcallout(9)でポーリングだったけど速度的に結構つらかったような。しかもatariだとCPUが10倍以上遅いし。

2010-02-21 10:34:12
Izumi Tsutsui @tsutsuii

atariのbus_space(9)は全部関数ポインタなので書こうと思えば原理的にそんなに難しくないと思うけど、結構トリッキーだから適当に書いてこれで試して、っとリモートデバッグするのはつらいかも

2010-02-21 10:36:35
Izumi Tsutsui @tsutsuii

パターンのデータはあるっぽいので http://hardware.atari.org/images/snap0.jpg の一番右の挿すとこだけ誰か作って下さい。残りは自分で作るから。ってダメか。

2010-02-21 10:41:19
Izumi Tsutsui @tsutsuii

http://www.asamnet.de/~hilgarte/ether_e.php こういうのがちゃんと売られていたりしたのかしら。性能は 30〜100KB とやはり結構つらい感じ。

2010-02-21 11:12:38
Izumi Tsutsui @tsutsuii

Atari界でメジャーなEthernetデバイスはどれなのだろうか。先に書いたEtherNECがx68kでのNeptune-Xのような存在で、例のSMC ISAなカードを使って作る方はマイナーだったりするのだろうか

2010-02-21 19:11:53
Izumi Tsutsui @tsutsuii

回路規模、GALライタ、機械加工等々の手間からすると後者のほうが圧倒的にめんどくさいからみんな前者のROMカートリッジポートNE2000なのかなあ。後者はWebページすら存在しないし。

2010-02-21 19:14:50
Izumi Tsutsui @tsutsuii

今の時代は個人で基板を起こすのもそんなに大変じゃないとは聞きますが、この規模のを1,2枚作る場合っていくらくらいなんですかね。

2010-02-21 19:17:41
Izumi Tsutsui @tsutsuii

360DPIのビットマップのパターン図はあるんですが、そもそもそういうので受け付けてくれるのかとか。聞いてみればそれなりのCADのデータも存在するんでしょうけど

2010-02-21 19:18:12
Izumi Tsutsui @tsutsuii

ドライバを書くためにデバイスを買うのは普通のことだという人はいるかもしれないけれど、ドライバを書くためにデバイスを作るのはどうなのだろうか

2010-02-21 19:23:03
Izumi Tsutsui @tsutsuii

EtherNEC is the most used and most available network solution on Atari. らしい。うーむ

2010-02-21 23:30:38
Izumi Tsutsui @tsutsuii

http://www.amy.hi-ho.ne.jp/shimada/neptune/data.html のNeptune-Xの資料によれば、NE2000を8bitのXTバスのみに接続した場合、自動でバス幅が検出されて8bitモードになるはず。

2010-02-22 19:18:26
Izumi Tsutsui @tsutsuii

が、その場合 src/sys/dev/ic/ne2000.c ではNE1000として検出されてしまうのか?

2010-02-22 19:19:27
Izumi Tsutsui @tsutsuii

NE1000とNE2000とではバス幅以外にメモリの量も違うようなので、NE2000 in 8bit bus mode の検出手段を新たに用意してやらないといけないのだろうか。

2010-02-22 19:20:31
Izumi Tsutsui @tsutsuii

さらに dmawidth は外部のバス幅と連動しないのであれば外部 8bit で DMA 16bit なんてややこしい設定にしないといけないのだろうか。

2010-02-22 19:22:22
Izumi Tsutsui @tsutsuii

RTL8019ASのデータシートによれば、バス幅の検出はNeptune-Xのページにあるように IOCS16B の端子レベルを起動時に見て判定。

2010-02-22 19:27:50
Izumi Tsutsui @tsutsuii

NE2000で dmawidth が 8bit でバス幅は 16bit (=bus_space_*_stream_2() を使用)っていうのはどういうハードですか おしえて nonakap@ さん (´・ω・`)

2010-02-22 19:44:55
Izumi Tsutsui @tsutsuii

いつぞやの42円のRTL8019ASなNE2000のIOCS16B端子にテープを貼ってi386に挿して起動。NE2000と認識するが invalid packet length と文句を言われて通信はできないっぽい。

2010-02-22 20:11:02
Izumi Tsutsui @tsutsuii

その状態で ne2000.c をいじって無理矢理 dmawidth = NE2000_DMAWIDTH_8BIT にすると動く。うーん。 @nonakap さん、当該ハードの設計上の問題だったりしませんか (´・ω・`)

2010-02-22 20:15:15
Izumi Tsutsui @tsutsuii

ちゃんと読んでないけど、 NE2000とNE1000の違いってバス幅とメモリ量だけじゃなくてメモリの配置も違うのかしら。だとするとNE2000 on 8bitの場合はそれなりの検出用コードを ne2000_detect() 関数内に書かないとだめなのかしら

2010-02-22 20:18:01
Izumi Tsutsui @tsutsuii

ISA 16bit側の D8-D15 もテープでマスクしてみたけど、なぜかちゃんと NE2000 として認識されて DMAWIDTH_8BIT に設定するだけで動く。あれ?

2010-02-22 20:30:51
Izumi Tsutsui @tsutsuii

うーん。D8-15をつないでなくても sc_useword=1 で動いてるってこと? それとも何か一目見ただけではわからない小細工が入ってる? はたまた単にテープが外れてる?

2010-02-22 20:36:48
Izumi Tsutsui @tsutsuii

テープは外れてないっぽいけど、いろいろ試すと動いているかと思いきや ftp で get すると invalid packet length を大量に吐く。が、全然動いてないわけではなくて文句を言いながら受信はできてる。うーん。何が起きているんだ。

2010-02-22 20:49:15
1 ・・ 15 次へ