内容の正確さについては保障ができません。 参考にされる場合にはどうか自己責任で行ってください。 よろしくお願いします。
現在製作中につき、写真と簡単な説明だけです。
最近のARMチップを使ってみたかったので組んでみました。これから利用目的を考える予定です...
追記: 応用例はこちら
写真左のチップがMCUのLM3S613、右のチップがEthernetコントローラのENC28J60。 ヒートシンクまでは必要ありませんがどちらのチップも熱くなります。 左のコネクタはJTAG用、下側のコネクタはシリアル通信用。 RJ45のコネクタはパルストランス内蔵のSteward ConnectorのSI-60024-F。大方の部品はdigikeyにて入手できます。
ENC28J60は2008年15週製造とパッケージのマーキングにはありましたが、 最新のリビジョンではありませんでした(revision B4)。 RBIASピンに接続する抵抗の値はリビジョンによって異なるため(B4までのリビジョンで2.7kΩ、B5以降のリビジョンで2.32kΩ) 注意が必要です。Errataを参照。 この回路図はリビジョンB7を対象にしたものです。
uIP 1.0のStellaris MCUへの移植は比較的簡単で、 サンプルアプリケーションのtelnetdが動くのを確認しました。 コンパイラにはCodeSourcery社の提供するGNU Toolchainを用いました。 移植ではこのページを参考にして、 Luminary Microが提供するDriver Libraryを利用してMCUの依存部分を記述しました。 Driver Library を使うと内部レジスタを操作することなく内蔵ペリフェラルを簡単に制御できます。 ENC28J60のドライバ部は上のページで紹介されている、 Pascal Stang氏のコードを移植して使いました。
ちなみに、 uIP 1.0に含まれるtelnetサーバはそのままではうまく動かず、コードの手直しが必要でした。 複数の接続があるときの挙動がおかしくなる不具合がありました。 (追記:これは意図的だと思われます(複数のサンプルコードを容易にマージをできるようにするため))
ARM Cortex M3 コアを搭載するLM3S613 MCUに、EthernetコントローラENC28J60を接続しネットワーク機器を設計しました。 TCP/IPプロトコルスタックとしてuIP 1.0を用い、telnetサーバが動作するのを確認しました。
プログラム格納用のFlashの容量がLM3S613の32KBでは少々こころもとない感触だったので、Stellaris MCUを使うのであれば パッケージが同じでFlashの容量が多いLM3S800シリーズがよいと思います。