« SATAから読みだしたデータをASCII表示 | トップページ | MITOUJTAG BASICでAVNETのSpartan-6 LX9 Microboardを試してみた »

2011.09.04

RX62NからPINGが打てるようにした&ライブラリ更新

ついに、ARPとICMPがちゃんと動くようになって、RX62NからインターネットへPINGが打てるようになりました。

Ultim62n_ip

TCP/IPのプロトコルスタックを作っていると、シングルタスクでは限界が来ることを痛感しました。パケットの応答待ちでwhileとかループさせてしまうと、まずいんですよね。

そこで、イーサネットのフレームを受信したことをトリガとする割り込みを使って、割り込み処理ルーチン内で受信パケットを処理するようにしました。

これで一見動いたかのように見えたのですが、RX62Nって、割り込み中と通常のモードでは、スタックポインタが切り替わるのです。この動作ではまりました。

割り込み中のスタックには十分な領域を確保していなかったので、大きなパケットを受信するたびに通常モードのスタックを破壊したりとかしていました。このバグの原因がつかめるまで、かなり悩まさされましたが、もう大丈夫です。

また、受信したデータをためておくバッファはSDRAM上に移動したので、内蔵RAMにも余裕ができました。

それから、デフォルトゲートウェイの概念を追加して、ローカルネットだけでなくインターネットにも出て行けるようにしました。www.tokudenkairo.co.jpやwww.google.co.jpへPINGが飛ばせられるようになりました。

Rx62nping3

ただし、まだ名前解決はできていませんので、IPアドレスを直打ちする必要があります。

上の図のような感じで、コンソールから各種のネットワーク系コマンドを発行できます。
linkと打つと、LinkをDown→Upと操作してオートネゴーシエーションから再実行します。

で、ここまでできたので、ひとまずRX62N用のサンプルソースコードやライブラリを、サーバにアップロードして公開しました。ぜひともダウンロードして試してみてください。

・特電HALとRXduino、サンプルコードのダウンロードはこちらから
http://www.tokudenkairo.co.jp/rxmega/download.html

・RX Webコンパイラにもサンプルコードを掲載
http://www.tokudenkairo.co.jp/rxmega/webcomp/


次はDHCPとUDPを作ろうと思います。

なお、今回のプログラムの開発はRX-MEGAではなくて、究極のRX62Nボードのほうで行っています。
このTCP/IPプロトコルスタックは、究極のRX62Nボードで動かすことを念頭において開発しています。たぶんRX-MEGAでもそのまま動くとは思います。PHYのチップが違うので何かあるかもしれませんが、うまく動かないときにはご連絡ください。

最終的には、この軽量TCP/IPプロトコルスタックで見通しのよいプログラムを組んで、Webサーバを作りたいと思っています。

なお、究極のRX62Nボードは、震災の影響でまだRXマイコンが入手できず、生産再開の目処はたっておりません。そこで、初回ロットの製造時に問題が生じた「訳あり品」を修理したもの(念入りなテストをして、動作には問題ないことを確認済み)を、
特価にて放出することにしました。詳しくはこちらをご覧下さい。
赤字覚悟のかなりお得な価格でご提供させていただきます。

また、RX-MEGA基板も在庫があと1台となっています。当面の間、再生産の予定はありません。
品切れ場合はご容赦ください。

|

« SATAから読みだしたデータをASCII表示 | トップページ | MITOUJTAG BASICでAVNETのSpartan-6 LX9 Microboardを試してみた »

コメント

だいぶ動作してきたようですね。なんか、さすがといった感じです。
DHCPは他のプロトコルと違って、割り当ててもらったら終わりではなく、割り当ててもらう側でも残り時間の管理→延長申請・再申請をしないといけないというのが、また悩ましいところなんですよ(笑)。無期限なんていうのもあるし。

投稿: JUN猫 | 2011.09.04 11:08

普通のパケットだけなら24時間くらい動かしても問題なさそうだったのですが、1800バイトくらいのPingを与えてみたところ、何かのエラーレジスタがセットされてしまうみたいで動作が怪しくなります。まだまだ改良の余地がありますね。
DHCPはややこしそうですね。あせらずゆっくり作ります。

投稿: なひたふ | 2011.09.05 06:49

コメントを書く



(ウェブ上には掲載しません)




« SATAから読みだしたデータをASCII表示 | トップページ | MITOUJTAG BASICでAVNETのSpartan-6 LX9 Microboardを試してみた »