MiMicがLPC4088 Quick Start Boardに対応しました。
以前NXPさんからボードを頂いたのでやらなきゃなーと思ってたLPC4088対応ですが、やっとこできました。
こんな感じで認識してます。
MiMicCoreは完全に動いているので、LPC4088でのEthernetを使用する基本的な通信サービス(TCP Client/Server, UDP , DHCP , AUTOIP , UPnP, Http(Client/Server))は全て機能します。
ソースコードとファームウェア
MbedFileServerとMiMicRemoteMCUについては、ライブラリの入れ替えと動作確認をしました。mbed.orgからダウンロードできます。
- MiMicRemoteMCU-for-Mbed - a mercurial repository | mbed
- MbedFileServer - a mercurial repository | mbed
ほかのプログラムについては、mbedとmbed-rtosを最新のものにして、libMiMicを更新することで対応できます。
既知の問題
LPC4088での動作には、以下の制約があります。
ファイルシステムが使えない
LPC4088ボードにはLocalfileSystemがないため、そのままファイルをホスティングすることができません。QSPI File System等のモジュールを追加すれば使えるようになると思います。
参考
ボードに登録されているmacアドレスを使用できない
LPC4088はシリアルROMにmacアドレスが登録されていますが、libMiMic側が読出しに対応していないため、使えません。後日対応します。
参考
MiMicRemoteMCUのペリフェラル操作APIがほとんど動作しない
LPC4088はLPC176x系と構成が異なるため、Javascript側にペリフェラルドライバがあるMiMicRemoteMCUのRPCコールはそのままでは動きません。(メモリ読出しなどの一部の操作は動作します。)
ドライバを書けば同じファームウェアで動作しますが、今のところまともにつかえません。
LPC4088移植のポイントとか
MiMicをLPC4088へ移植するときのメモです。
LPC4088はEthernetペリフェラルのアクセスできるOn-chip SRAMに制約があるらしい。
LPC176xの場合、EthernetペリフェラルはすべてのOn-chip SRAMにアクセスできましたが、LPC4088の場合はペリフェラル用のSRAM Bank0、1にしか正常にアクセスできません。アクセスできても0x55555555が常に読みだされます。
メインメモリにパケットのキャッシュを作っていたMiMicは酷い目にあいました。
マニュアルのどこかに書いてあると思われますが、どこに書いてあるかは謎です。
LocalfileSystemのクラス自体がない
LPC4088にはLocalFileSystemクラス自体がないので、同じソースでコンパイルを通るようにするためには#define TARGET_LPC4088があるかチェックしてダミークラスと置き換える必要があります。