秋月H8 LANボード
ふとしたことで、秋月のH8LANボードの話になる。
またまた昔話。
このキットが出たときは、界隈では結構話題になった。
おりしも、Ethernetにワンチップマイコンを接続するのが電子工作の流行だったし、タイムリーではあった。
チャレンジする人も多かったが、挫折も数知れず。
通信性能が低いとの評判も出てた。
うーん...
------
自分ではこのボードに手を出さなかったのだけれど、回路図を入手して、これは...と思ったところがひとつ。
H8のWAIT入力がNICにつながってない...
これでは、NICにアクセスしている丁度そのタイミングで、Ethernetのパケットが出入りすると、CPU⇔NICでやり取りしているパケットが壊れる。
これはRTL8019ASでは、どうやっても不可避。
RTL8019ASを使う以上、外部WAITをかけられないCPUは、たまにうまく動かないことを意味する。
これは、RTL8019ASがNE2000というネットワークカードのハードウエアをワンチップ化したものによるもので、チップのエラッタとか、そういう問題ではない。
------
構造上、Ethernetカードは、RAMのバッファをもっている。
これをホストCPUと共有して、送受信パケットのやり取りをしている。
NIC⇔SRAM⇔CPU こんな感じ
RTL8019ASでは、オンチップに2kbyteのSRAMを持っているので、見た目には
(NIC⇔SRAM)⇔CPU
となっている。
NICの中身はDP8390で、実際の送受信バッファは、16バイトしかもっていない。
Ethernet/IPのパケットは最大1536バイトにもなるので、通信が始まると、SRAMを頻繁にアクセスするようになる。
この時、NICとSRAMとのアクセスが優先されるので、その間ホストCPUは待たされることになるが、ステータスフラグで...なんてことはなくて、いきなりバスにWAITをかけてくる。
まあほとんど瞬時にアクセスは終了するので、ステータスフラグをチェックするくらいならハードウエアWAITで待つほうが良いくらい。
この件があって、ARMを使い始めたときに、RTL8019ASをつなげようとしてすっかり困ってしまった。
結局あきらめて、RTL8019ASは過去のチップとなった。
------
で、H8なのだけれど、ソフトウエアでブロック転送をやろうとすると、確かに遅いのだ。
こういうときは、迷わずDMAを使う。
H8にはDMAコントローラが4chも付いていて、最初は意義がよく分からなかったのだが(プログラムで同じことができるから)、実際使ってみると、その効果は劇的だった。
たとえば、NICに1kbyteのデータを転送するとき。
DMAならば、読み込み2クロック、(SRAMは16ビットバス)、書き込み4クロック(NICは8ビットバス)で、2バイト転送できる。
1kbyteで、3kクロック。20MHzとすると、154usecほど。
DMAコントローラーの初期化もあるけれど、実際にはたかが知れている。
ソフトウエアで同じことをやろうとすると、数msecくらいかかったはず。(多分)
16ビットバスでNICと接続しないのは、エンディアンの問題があって、かえってめんどくさかったはず、確か。(多分...自信なし)
------
その当時、同じCPUで、38400bpsのシリアル通信が、プロトコル処理もあったため、実測でCPUパワーの15%くらいを使っていた。
それに対し、100kbyte毎秒のEthernet通信は、DMAとの相乗効果でCPUパワー1%以下で処理が回った。
その差に驚き、すっかりEthernet派になったものだった。
何しろ、H8のSRAMなんて、4~8kbyte位のもんだけれど、そのすべてをPCに転送しても、数msecで処理が終わり、しかもCPUの負荷もほとんど無いのだ。
シリアル通信なんて、かったるくてやってらんね、って感じになった。
まあ、シリアルも便利だから使うけど、大容量+PC連携だと、もうEthernetしか考えられない。
------
自分としては、ワンチップマイコン+Ethernetの組み合わせは(消費電流に目をつぶれば)お勧めのものだけれど、趣味の電子工作の牽引役たる秋月キットに、こういった仕込があると挫折する人の割合に影響あるなあ、と思ったり。
それもまた秋月キットたる所以なのだが、今の時代ならwebに情報が出るのだろうか。
アンテナが高いほうではないけれど、いままでこのキットでWAITに言及しているのを目にしたことが無いような気がするので、昔話をしてみたりする。
しかし、いまどきのARM界隈では、EthernetMACもすっかり定番のペリフェラルとなっていて、こういった話も、もはやただの昔話で終わるのかもしれない。
| 固定リンク | 0
コメント