• 締切済み

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

  • Ethernetコントローラについて

    Ethernetコントローラの開発をしてます。 ようやくPHYと通信をすることはできるようになったのですが、受信が上手くできません。 ただ送信はできています。 EtherCの割り込み要因レジスタのビットが0のままでフレーム受信の割り込みがきていないようです。 他の割り込みの場合はちゃんとビットが1になります。 このような場合、原因はハードウェアにあるのでしょうか? 原因を探しているのですがソフトウェアが原因でない可能性があると思うので教えて下さい。

  • 量子化と符号化について

    「アナログ信号は、信号に混ざっているノイズを減らすため、サンプリングと量子化の前に振幅が圧縮される。サンプリングと量子化の後、ノイズが減少した信号が反対側へ伝送され、信号を再生したときには、信号とノイズの比率は相当改善されている。」 量子化と符号化について勉強しているのですが、上記文章の意味を教えてください。 (1)どうして振幅を圧縮するとノイズが減らせるのでしょうか? (2)ノイズが減少した信号が反対側へ伝送されるとあるのですが、反対側とはどこを指しているのでしょうか? また、符号化の説明で「量子化されたサンプルに数値を割り当てる」とあるのですが、量子化の説明では「量子化されたサンプルは8ビットの2進数で表記されており、量子化スケールの各目盛りを表す8ビットのバイナリワードのフォーマットはあらかじめ定義されている」と書いてあり、符号化の数値の割り当ては何をやるのかいまいちよくわからないので、こちらについてもよろしくお願いします。

  • システムの割り込み(遅延プロシージャ)について

     先日、グラフィックボードを交換後から急にPCの動きが悪くなり、調べてみると「システムの割り込み」というのにCPUが50%ほど占領されているのを見つけました。  色々と調べてみたところ、デバイスマネージャーから「High Definition Audio コントローラー」というのを無効に設定すると直るという情報を得たので試してみたところ、確かに症状は改善されました(リソースマネージャに「システムの割り込み」という項目は残ったままですが、CPU使用率は1%ほどに下降しました)。  ところが、パソコンの電源を落として再度起動したところ、また同じ症状が出ています。  見れば、無効にしたはずの「High Definition Audio コントローラー」がまた有効に設定されていました。  それ以降、何度「High Definition Audio コントローラー」を無効にしても、再起動するたびに元に戻ってしまい困っています。  どなたか、「High Definition Audio コントローラー」を無効にし続ける方法、もしくは「システムの割り込み」の根本的な改善方法をご存知でしたら、ご教授をお願いします。 PCのスペックは下記のような感じです。 OS:Windows7 HP 64bit CPU:athlon64 x2 3800+ メモリ:3G グラボ:AMD Radeon HD 6450

  • プルアップ抵抗値

    いつもお世話になります。 アドバイスお願いします。 今ボード設計をしています。 使用すすCPUはSH-2です。この汎用ポートを使ってあるコントローラへ制御信号出力したいと考えています。 ここでSH-2の制約でウィークキーパ回路と言う機能が内蔵されており、出力で使用する場合であまり大きな抵抗値は×だそうです。 接続したいコントローラのマニュアルには100kでプルアップと指定があります。 ここで質問です。 (1)100kでプルアップしてデジタル信号を入力と書いてある意図は何なのでしょうか? (2)100kいかのした場合受け手のコントローラとしてはどんな不具合が起きるのでしょうか? (3)結局今回は何kΩでプルアップしたらよいのでしょうか??? ご指導の程よろしくお願いします。 以上 

  • 64ビットに対応したソフトウェアはどのように作られるのですか?

    64ビットに対応したソフトウェアはどのように作られるのですか? 64ビットの環境(CPU-OS)では64ビット向けに開発したプログラムが効率よく実行(速い)できるということですが、実際に64ビットに適したプログラムとはどのように開発するでしょうか? 私自身はプログラマでもなく開発する人間ではないので的外れな質問かも知れませんが可能な範囲でお答えいただければありがたいです。 ・コーディングの時点でメモリの使い方のような「プログラマの意識や手腕」に拠る。つまり、プログラマのスキルによって「64ビット対応」の程度が違うということがあるでしょうか?それとも、ある一定の規則に沿って32ビット向けとは違う書き方をするだけで自ずと64ビット化となるのでしょうか?(前者のイメージは、64ビットをフルに使うように随所で職人的な技術を要するのか、デジタルではっきりと32/64の区別がつくのでしょうか) ・プログラムは外観上(何かのファイルのプロパティを見たり、もしくはリバースエンジニアリングをするようなことで)はっきりと64ビットプログラムか否かというのが分かるものでしょうか。 ・64ビット専用のプログラムは32ビット環境では動かないということですが、何がネックとなり動作できないのでしょうか?(因みに最初の質問は、カッチリとした64ビット専用以外に、中途半端に64ビット指向のソフトがあるのでしょうか?という考えからです) よろしくお願いします。

  • 1000BASE-Tの仕様について

    通信の勉強をしていくうちに1000BASE-Tの符号化方式について調べる事になったのですが、読んでいる参考書に 『1000BASE-Tの仕様は、125Mサンプル/sで7bit(理想値)のA/D変換が可能であることを想定して設計されています』 という風な記述が出てきました。 この一文が何を言ってるのかよく分かりません。 サンプル数が出てきた以上サンプリング定理に関するものではないかとは思うのですが、 『サンプリング定理とは、元の信号の最大周波数の2倍以上の周波数でサンプリングすると、元の信号を十分復元できる』 という程度の理解しかないので、これにどうbitがかかわってくるのかイメージが沸きません。 浅学ゆえに大変恐縮ではありますが、どうぞよろしくお願いいたします。

  • CPUにFIFOメモリを接続

     現在回路の設計をしていて、FIFO内臓録音再生LSIというのをCPUに 接続したいのですが、このFIFOメモリにはどのCPUでも使用することが できるのか教えてください。  ちなみにデータバスを通じてCPUと接続をするもので、CPUは ARM720T、メモリコントローラはAHBバスインタフェースでSRAM、 SDRAM、フラッシュメモリをサポートしています。LSI側は DMAインタフェース内臓で、8ビットのデータバス、CSやRD、 WRもあります。  よろしくお願いします。

  • 自作パソコンの画面がモニタに表示されません

    自作のパソコンにOSをインストールしようと思い、モニタと接続して電源をつけたのですが、 何も表示されず、「信号なし」となってしまいます。 接続方法はHDMIを使おうと思います。 他にもD-SUBとDVIがあるので試してみたのですが、「信号なし」でした。 マザーボードにもポートがあるので、 グラフィックボードを着けた状態、外した状態の両方で試してみましたが ダメでした。 端子はしっかりと挿さっていて、全体の挿し直しも何十回も行いました。 ビープ音は一切ならず、他のパーツは正常に動いています。 モニタ側の設定もちゃんと合わせたのですが繋がりません。 問題点や解決方法が分かった方は、ぜひ教えてください。 使っているパーツは、 モニタ:AOC e2350Sh CPU:Intel Core i5-3570K CPUクーラー:SCYTHE SYURIKEN RevisionB メモリ:UMAX DDR3-1333 16GB マザーボード:ASRock Z77 Pro 3 グラフィックボード:玄人志向 GF-GTX550Ti-E1GHD 電源ユニット:玄人志向 KRPW-SS500W/85+ HDD:SEAGATE ST2000DM001 光学ドライブ:LG BH14NS48 です。 よろしくお願いします。

  • バイナリ指定で複数レジスタを順次リセットするラダ…

    バイナリ指定で複数レジスタを順次リセットするラダーシーケンス ラダー(シーケンス)回路の組み方を教えてください。 入力が1点:リセットPB 出力が4点:リセット入力 :レジスタ#1 :レジスタ#2 :レジスタ#3 出力先(相手機器)は7ヶのレジスタを持っており レジスタ#1~レジスタ#3の 3ビットでレジスタを指定し同時に リセット入力 をonすることによって所定のレジスタがリセットされます。 1回 リセットPB を押すだけで複数のレジスタをリセットする回路を作らなければいけません。話しを簡単にするために7ヶすべてのレジスタを1プッシュでリセットする回路と考えてけっこうです。 順次指定を変えてリセットを繰り返す方法がわかりません。 失礼しました。入力がもう1点 リセット確認:RSTACKがありました, レジスタは1ビットと考えてください。 入力: XO:PB押しボタン X1:RSTACK 出力: Y0:RST Y1:#1(2-0) Y2:#2(2-1) Y3:#3(2-2) 途中まで考えてみましたが M2~M7 をたてる方法がわかりません。 RSTACKは1個のレジスタをリセットするごとに1パルス同一信号が返ってきます。 X0 --||----------[PLS M0] X1 --|/|---------(M99) | M0 M99 --||--+--|/|---(M1) M1 | --||--+ M1 --||-----------(Y0) M2 | --||--+ M3 | --||--+ M4 | --||--+ Mn | --||--+ ** M5~M7 すべてパラ M1 --||--+--------(Y1) M3 | --||--+ M5 | --||--+ M7 | --||--+ M2 --||--+--------(Y2) M3 | --||--+ M5 | --||--+ M7 | --||--+ M4 --||--+--------(Y3) M5 | --||--+ M7 | --||--+ レジスタとの表現が誤解を招きました。外部機器(カウンタ)です。 カウンタを255ヶ持っており。そのカウントのリセットのための入力が,リセット信号:1ビット,カウンタ指定信号:8ビットです。リセット完了応答が"RSTACK"1ビットです。 PLC側はmov命令他たいていのコマンドは使えます。ラダー表記の他にニモニックでもプログラムできますがラダーの方が解釈しやすいです。 タイミングパルスとカウンタを使う等して順次作動する回路は作れそうな気がしますがいかにも複雑です。もっと単純スマートな方法がありそうな気がします。 "PB"入力を保持して, ラダー図上段から1かたまり(1段)ずつ作動し(2回以上作動しない), 最下段が作動完了で保持を解除でよいと思うのですが。 応答が"RSTACK"1本なので・・?。 1段目は"RSTACK"でリセットするとして, 2段目は PB(M0)and"RSTACK(a)" でonしてよいか,保持offを"RSTACK(b)"でよいか(a),(b)が同ブロックに存在? 最終段リセット完了(M99)はどうやって作るか?

  • FormでのonLoadに伴うimgの更新

    <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=EUC-JP"> <title>Test</title> <script language="javascript"><!-- //ロード時に、現在の年と月に合わせて表示・選択する// function tDate(){ dt = new Date(); y = dt.getFullYear(); m = dt.getMonth()+1; d = dt.getDate(); //2009年以降を順にセレクトメニューへ追加// var ny=y-2009 document.selectform.toshi.length = ny+1; for (i=0; i<=ny; i++) { document.selectform.toshi.options[i].text = y-i + "年"; document.selectform.toshi.options[i].value = y-i ; } document.selectform.tsuki.length = 12; for (i=0; i<12; i++){ document.selectform.tsuki.options[i].text = i+1 + "月"; document.selectform.tsuki.options[i].value = i+1 ; if(i == m-1){ document.selectform.tsuki.options[i].selected = "selected"; } } document.selectform.hi.length = 31; for (i=0; i<31; i++) { document.selectform.hi.options[i].text = i+1 + "日"; document.selectform.hi.options[i].value = i+1 ; if(i == d-1){ document.selectform.hi.options[i].selected = "selected"; } } }; function argDate(){ YY = document.selectform.toshi.options[document.selectform.toshi.selectedIndex].value; MM = document.selectform.tsuki.options[document.selectform.tsuki.selectedIndex].value; if (parseInt(MM)<10) MM = "0" + MM DD = document.selectform.hi.options[document.selectform.hi.selectedIndex].value; if (parseInt(DD)<10) DD = "0" + DD var filename = "./Sample_"+YY+MM+DD+"_test.png"; document.images["image0"].src = filename; alert(YY+MM+DD); //確認 }; //--> </script> </head> <body onLoad="tDate()"> <form method="post" name="selectform" action="#"> <select name="toshi"></select> <select name="tsuki"></select> <select name="hi"></select> <input type="submit" value="OK" onClick="argDate()"> </form> <img name="image0" height="600" width="800"> </body> </html> 以上のコードで、formの年月日を変更し、それに伴うimageを表示させたいのですが、一時的に表示されるもののonLoadされてしまい、過去の画を見ることができせん。どのようにしたらいいかご教示ください。

信じてもらえなくて悔しい
このQ&Aのポイント
  • 私の過去のトラウマ体験について母親が捏造し、信じてもらえないことがとても悔しいです。
  • 私は入院中に便秘で悩み、母親に浣腸されるなど苦い経験をしたが、母親がその出来事を捏造し、私の話を信じてくれない人が多くて悔しいです。
  • 母親の虐待的な言動について他の人に相談しても理解されず、信じてもらえないことが悔しいです。
回答を見る