« プリアンブル、あるいはAGC | トップページ | 休暇 »

2012年6月 2日 (土)

秋月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もすっかり定番のペリフェラルとなっていて、こういった話も、もはやただの昔話で終わるのかもしれない。

|

« プリアンブル、あるいはAGC | トップページ | 休暇 »

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック


この記事へのトラックバック一覧です: 秋月H8 LANボード:

« プリアンブル、あるいはAGC | トップページ | 休暇 »