うまく動いているかと思われてたetherが実はちゃんと動いていなかったという<b>(T_T)</b> しかも前に書いた割り込み以前の問題。受信バッファをキャッシュ可能な空間に確保していたため、ステータスがうまく取得出来ていたかったのでした。
流れとしては、受信したデータがFIFOを通してバッファに保存され、パケットを受信し終えると受信デスクリプタのOWNビットがクリアされ、ホストであるSH4がそのバッファにアクセス出来るようになる訳ですが、これがなんかの拍子でクリアされなくなり、通信がロックしてしまうと言う現象が発生。
最初は79c973の設定が何か変なのかと思ってEEPROMやレジスタの内容を一通りチェックしてみたものの、これと言って問題は無さ気。八方塞がりで途方に暮れていた所に<font color=DarkBlue size=+1>キャッシュじゃない?</font>との助言を貰い、SH5のソースをじっくり見直してみたら、この受信デスクリプタのバッファはキャッシュされない領域に確保しているではないですか<b>(@_@;)</b> で、SH3のソースを見てみたら常にキャッシュするような設定で確保している様子。こりゃぁもしかして、と思ってその部分をキャッシュ無しでも確保出来るように修正してみた所<font color=FireBricksize=+1>なんとまぁロックしなくなりましたのよ</font><b>ヽ(^。^)ノ</b> ftpもpingもストレス無く使えるようになったし、今度こそ、<font color=DarkBlue size=+1>今度こそはちゃんと動いているのではないか</font>、と・・・<b>(^^;</b>
あ、で、ここまで来てわかった事ですが、<font color=FireBrick>前回の割り込み云々の話はさほど重要ではなかったようです【爆】</font>
コメント