SH7615の内蔵LANコントローラー(Ether-C及びE-DMAC)使用時の注意事項

SH7615内蔵のLANコントローラーを使用したとき、以下のような現象が発生した場合、PHYの設定を見直す必要があるかも知れません。

1.構成
SH7615 Ether-C===(MII)===PHY AMD AM79C874
PHYの設定はオートネゴシエーション動作停止の固定動作とします。

2.症状
ETHERNET未リンク時にETHERNETへの送信動作を行うと送信がデッドロックします。
具体的には送信ディスクリプタのTACTを1とし、EDTRRのTRを1としても、E-DMACが転送を開始しなくなります。
一度デッドロックすると、ETHERNETがリンクしてもデッドロックしたままとなります。

3.原因
Ether-CのTX-CLKピン入力はPHYから送信クロックを供給されますが、ETHERNET未リンク時、PHYはこのクロックの供給を停止します。
この間にETHERNETへの送信動作を行ってしまうと、ETHERNETがリンクし、PHYからのクロック供給が開始されても送信は停止したままとなります。
症状をルネサス様に問い合わせたところ、TX-CLKへ一度クロックが供給され、その後クロックが供給されなくなる想定がなく、その後の動作保証はできなくなるそうです。

4.対策
ETHERNET未リンク時に送信を抑止すれば良さそうですが、リンク時から送信しようとした直後に未リンクとなる可能性もあるので、この対策では発生確率を下げるだけになります。
よって、TX-CLKを停止しないようにすることのみが本対策となります。
今回使用していたPHYではオートネゴシエーションをオンにしていると、ETHERNET未リンク時でもTX-CLKの供給を停止することはありませんでした。
よって、オートネゴシエーションでは本問題は発生しません。
しかし、オートネゴシエーションなしで、100Mbps-FULLなど固定リンクのシステムもあるため、前述では真の対策になりません。


今回使用したPHYには省エネモードがあり、このモードがデフォルトでオンになっておりました。
この省エネモードをオフ(※)すると、固定リンクでもPHYはTX-CLKへの供給を停止することはありませんでした。
よって、この省エネモードをオフすることとしました。

※ LowPowerMode(Reg19のbit5)をDisable

2009/10/23