以前NXPさんからボードを頂いたのでやらなきゃなーと思ってたLPC4088対応ですが、やっとこできました。

こんな感じで認識してます。

f:id:nyatla:20140530103955p:plain


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を更新することで対応できます。

コンパイル方法

mbed compilerでLPC4088を選択してコンパイルしてください。警告がいくつか出ますが無視してください。


既知の問題

LPC4088での動作には、以下の制約があります。

ファイルシステムが使えない

LPC4088ボードにはLocalfileSystemがないため、そのままファイルをホスティングすることができません。QSPI File System等のモジュールを追加すれば使えるようになると思います。

参考

  • LPC4088 QuickStart Board - Software Information | mbed
ボードに登録されているmacアドレスを使用できない

LPC4088はシリアルROMにmacアドレスが登録されていますが、libMiMic側が読出しに対応していないため、使えません。後日対応します。

参考

  • LPC4088 QuickStart Board - How to Expand - Ethernet | mbed
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があるかチェックしてダミークラスと置き換える必要があります。

ペリフェラルのアドレスが違う

LPC176xとLPC4088では、多くのペリフェラルのレジスタアドレスが違います。mbed標準のAPIで構成すればたぶん問題はありません。

MiMicのRemoteMCUのJavascriptペリフェラルドライバは、残念ながら全滅しました。

OnchipFlashを操作するIPAドライバは同じらしいです。(とりあえず動かしたけど動いてました。)