• 締切済み

Etherドライバの作り方

Etherコントローラを初めて開発するのですが、どこからどう初めてよいのかよくわかりません。 CPU側とPHY側のドキュメントを読んでみましたがあまりイメージできませんでした。 例えばPHYをリセットさせるのにHIの信号を100ns以上与える。 HIはビットを立てればいいと思うのですが100nsとかどうやって判断?とわからないのです。 何かいいサンプルとかあれば教えてほしいです。 CPUはSHを使っています。

みんなの回答

  • Interest
  • ベストアンサー率31% (207/659)
回答No.2

SH2/3/4どれですか? OSは使いますか? 開発環境は? 質問者さんは学生んさですか? とりあえずOSなしの場合で書くと、 > 100nsとかどうやって判断?とわからないのです。 真っ正直にやるなら、SHの内蔵周辺回路にあるタイマを使うとか。しかし、リセット信号ならそれほど厳密な時間でなくてもいいでしょうから無駄時間ループでもよいでしょう。(コンパイラの最適化で削除されないよう工夫が必要です) > 何かいいサンプルとかあれば教えてほしいです。 Etherコントローラを内蔵したSHを使っているのであれば、ルネサスが提供しているアプリケーションノートを見るのが一番確実だと思います。 アプリケーションノートはこちら。 http://japan.renesas.com/fmwk.jsp?fp=/products/mpumcu/superh_family/&cnt=Application_Notes.jsp&title=%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%83%8E%E3%83%BC%E3%83%88&lid=2 イーサネット関連は6件載っていますね。

  • rinkun
  • ベストアンサー率44% (706/1571)
回答No.1

OSは? それともOSなし? 時間待ちはOSにドライバサポート機能があるならそれを使う。 なければビジーウェイトだな。あらかじめループ命令の実行クロック数を調べて100ns分のループ数を計算しておき、その回数だけループする。CPUクロックを変えてもそのまま動くようにしようと思ったら起動時にクロックを読み取ってループ数を調整する必要もあるので結構面倒だと思うけど。 HIは対応アドレスにビット書き込みで良いと思うけど、HIが1か0かは確認しておくこと。 サンプルは、LinuxかBSDのソースを見て良ければSHボード用のEtherドライバもあると思うけど。

関連するQ&A