• 締切済み

Ethernetコントローラについて

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

みんなの回答

  • ume-conv
  • ベストアンサー率16% (2/12)
回答No.1

うーん 私の直感ですと、ちゃんと受信すべきフレームを受信していないので はないのでしょうか? 具体的にはMACヘッダーとかは、そのNICのMACヘッダーのフレームを 受信させているのでしょうか?

bad_star
質問者

補足

フレームはブロードキャストです。 MACもちゃんと設定されています。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • マイコンSH-2の割り込みを用いたシリアル通信

    SH7144Fで割り込みを用いたシリアル通信を行っていますが, 途中で割り込みがかからなくなる症状に悩んでいます. 開発環境はHEW上でツールチェインにRenesas SuparH StandardとKPIT GNUSH [ELF]を 組み込んでおり,適宜選んで使っています. 以下,Renesas SuparH Standardで,受信割り込みの場合に限って書かせて頂きます. 少々長くなりますが状況をご説明致します. 最初にSCI1回りの設定を適切に行い,割り込みレベルを15とした後, set_imask(0)で割り込みレベルを0として割り込みがかかるようにしています. 受信割り込みがかかるとINT_SCI1_RXI1に飛び, _UBYTE c = SCI1.RDR; SCI1.SSR.BIT.RDRF = 0; と直ちにした後,cの内容をバッファに入れ,戻っていますが,一文字受信しただけで 割り込みがかからなくなります.(_UBYTEはtypedefine.hでunsigned charとしています.) 相当悩んだ挙句,INT_SCI1_RXI1の末尾に, set_imask(0); を入れてやると連続して割り込みがかかり,うまく受信できるようになっています. ハードウェアマニュアルを読めば,割り込みがかかるとSRレジスタは退避され, SCI1の割り込みレベル15の内容がSRレジスタのI0~I3に書き込まれる,とあります. 当然,割り込みが終われば,退避された内容がSRレジスタに戻るので割り込みマスクは 0に戻るもの・・・と解釈していますが,余りにも当たり前なのかハードウェアマニュアルには 明記はされていません.もしかしたら元に戻っていないのでは・・・と,上記のようにいちいちに 割り込みマスクを0にする手続きを追記すると動いている,と言う状況です. 因みに上記の状況はKPIT GNUSH [ELF]を選んだときにも同じです. 更には,送信割り込みのときも上記と同じくset_imask(0)を入れてやると動きます. そこで質問ですが, 1.SRレジスタは割り込みが終われば元の内容に戻ると解釈していますが,   これで合っているでしょうか. 2.上記1で元に戻るのだとしたら,なぜいちいちset_imask(0)をしてやらないといけない   状況になっているのか・・・考えられる原因をお教えください. 雑多な説明で申し訳ございませんが,どうぞ宜しくお願い致します.<(__)>

  • PICのUSBホストコントローラーについて

    初心者です。 PIC24FJ64GB002のUSBホストコントローラーを使用し、USB機器との通信を行っています。 USB機器との通信制御を行っていない時に、PICの汎用ポートからシリアル通信の信号(パルス幅=10μsec、50ビット)を出力しているのですが、不特定ヶ所でパルス幅が50μsec程延びます。 USB機器との通信制御を行っていない時に、通信端子に『通信時間=50μsec、1msec間隔 』の信号が出力されています。 ●この通信制御が汎用ポートの処理の邪魔をしている(割込みが入っている)のでしょうか? ●割込みが原因の場合、割込みを避けて汎用ポートの出力を行いたいのですが、どのようにすればよろしいでしょうか? ご教示下さい。 よろしくお願い致します。

  • Etherドライバの作り方

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

  • 割り込みについて

    タイマー、通信機器、I/Oアクセスなどのイベントが起きて、それを割り込みコントローラーが検知して、 CPUへ割り込みをかけるまでのレジスター操作、バスコンポーネントなどシーケンスを段階的に知りたいのですが参考サイトなどがございましたら、ご教授頂けないでしょうか? 出来ましたらブロック図や回路図などもあると、理解がしやすと思われます。 PICが搭載されたマイコンやIntelプラットフォームなど、何でも結構です。 Intelデベロッパーズマニュアルを読んでいたのですが、レジスター操作のことは記載がありましたが、 コントローラーが検知して、どのようなコンポーネントを通して、CPUへ割り込みをするかまでは理解できませんでした。 以上 宜しくお願い致します。

  • 割り込みベクタの機能と実現方法

    (d)割込ベクタの機能と実現方式を説明せよ。 (1)機能 割り込みには、ハードウェア割り込み、ソフトウェア割り込みがあるが、割り込みベクタによって、どのような割り込みが発生したかが分かるようになっている。割り込みの発生要因によって、実行される処理(割り込みハンドラーと呼ばれたりサービスルーチンと言われる)はシステムによって決められている。 (2)実現方法 ベクタテーブルを作成する必要がある。以下それについて具体的に説明する。 多数の割り込み要因がある場合,それぞれに対応する割り込みサービス・ルーチンを作っておく必要がある.そして,割り込み要求信号が発生したときには,要求を出している要因に応じて,正しい割り込みサービス・ルーチンを呼び出さなければならない.そのために用いられるのが割り込みベクタ・テーブルである.それぞれの割り込み要因は,割り込みが受け付けられると,割り込み元を示す番号(割り込みベクタ)を送信する.メモリの中には,この番号と割り込みサービス・ルーチンの先頭アドレス(あるいはそのアドレスへの分岐命令)を対応付けた表(テーブル)を用意しておく.この対応表を,割り込みベクタ・テーブルと呼ぶ.  割り込みは元のソフトウェアの実行を強制的に中断してしまう.このため,特に中断されたくない処理を実行している場合には,その間だけ割り込みを禁止にする機能がある.  また,割り込み要因の中には,割り込み要求を常時有効にしたい要因もあるが,特定の局面でだけ有効にしたい要因もある.そのため,各割り込み要因ごとに,割り込みの受付を無効にする割り込みマスクの機能がある.割り込みマスクで無効にできる割り込みはマスカブル割り込み,割り込みマスクで無効にできない割り込みをノン・マスカブル割り込み(NMI)と呼ぶ.  特に緊急性が高い割り込みにはNMIを用いる. いかがでしょうか? 実現方法のところが答えられていますでしょうか?

  • 組み込みソフトウェアの割り込みについて、

    今組み込みソフトウェアについて、勉強している物です。 割り込みについて、分からないため質問させていただきます。 割り込みをする際は、何らかの操作により、割り込みカウンタにビットが入り、 それにより、PCに割り込みアドレスを入れられ、割り込み処理が実行されるとの事ですが、 何らかの操作により、割り込みカウンタにビットが入り、それに検出がよくわからないです。 ポーリングで、カウンタの値を見ている訳ではないのに、どうやって検出するのでしょうか? 私の解釈、憶測では、カウンタをハードウェアでポーリングしており、そのためソフトウェアでは意識する必要がないのでは?と認識しております。

  • なぜソフトウェアでハードウェアが動くのか

    組み込み機器のソフトウェア開発を行なっております。 ソフトウェアのようなテキスト文書で、なぜハードウェアが制御できるのかがわかりません。 例えば一般的なマイコンで あるレジスタの値を1に書き換えることで 該当するポートの電圧がHになるという制御において レジスタの値が書き換われば電圧がHになるというのはイメージがつかめるのですが ソフトウェアでなぜレジスタの値が書き換わるのかがわかりません。 なるべく具体例でアセンブリ言語→機械語→レジスタが書き換わる の対応関係を説明していただけると幸いです。 よろしくお願いいたします。

  • イーサネットフレームについての質問です。

    コンピュータネットワークについての質問です。(助けて―) 独学なので、助けてください。 VLANは無いものとする。 MTUが1500バイトの通信回線システムにおいて、300KBのデータを送信することを考える。このとき下記の問いに答えなさい。ただし、1kB=1024Bとして計算しなさい。 (1)IPヘッダに20バイト、TCPヘッダに20バイト付加して送信する。全てのデータを送るためには、何パケットに分割すればよいか。 (2)イーサネットフレーム(ヘッダー+FCS)にプリアンブルを付けて送るとき、すべてのデータを送るのに何ビット送ればいいか。 (3) (2)で計算した総ビットを、回線速度が1Mbpsの回線で送るのに必要な時間を計算しなさい。 あとで、自分で解いて確認したいので、計算式(できれば説明)もお願いします。参考書読んでも分かりません↓

  • ビデオコントローラ(VGA互換)について

    同じような質問がありましたが、自分なりに調べ尽くしても原因と対処法がわからなかったので質問させてください。 OSの再インストールをしたところ、デバイスマネージャのイーサネット・サウンド・ビデオコントローラに?がつくようになり、イーサネットとサウンドはなんとか対処出来ましたが、ビデオコントローラだけが未だに対処できておりません。 再インストールする前はできていたゲーム等も起動できずです…。 ドライバ等、正常に戻すにはどうしたらいいでしょうか? 又、そのほかのデバイスの部分には「PCIシンプル通信コントローラ」と「不明なデバイス」も?付きで存在しているのですが、この二つは今のままだと何か支障ありますでしょうか? 何の情報が必要かわからないので、わかる情報だけ載せます。 HP Compaq dc5800 Small Farm Facter OSはVista downgraded to XP Pro よろしくお願いします。

  • XPアップグレード後に不具合...

    英語版WindowsXPに日本語WindowsXPを新規にインストールしたくて何も考えずにしてしまいました。 その後、画面は16色しか表示されず、音も流れず... ハードウェアの設定を見てみると、 ”ビデオコントローラ”、 ”マルチメディア オーディオコントローラ”、 ”イーサネットコントローラ”、 ”PCIシンプル通信コントローラ” に!マークが付いてました。 どのように対処したらよいのでしょうか。 PCは「emachinesT3624」です。 よろしくお願いします!