lynxeyedの電音鍵盤

MBDとFPGAと車載で使うデバイスの備忘録

eXodusinoのフレームワーク

対応デバイスの増加と機能追加に対応する

現在、eXodusinoのgithubで公開しているプロジェクトでは、

  • LPC1114L系列*1
  • LPC1115/301

に対応しています。

[ lynxeyed-atsu/eXodusino · GitHub]

現在、国内とUSAのコミッタを合わせた5人で、複数のNXP Cortex-Mxに対応するような努力が払われており、最終の調整を進めています。

NXPのマイコンはローエンドからミッドレンジまでペリフェラルIPが統一されているので、少しの変更でかなりのデバイスをカバーできるはずですが、例えば、SPIのコアはLPC8xxとLPC11xxで異なります。また、GPIOやSystick以外のタイマーはそれぞれのデバイスに応じて実装されているので、これらの差分もeXodusinoは吸収しなければならない事になります。つまりAPIの抽象度を上げて、それよりも抽象度の低いフレームワークをコールし、このフレームワークがデバイス依存の低レベルのコードを読み出します。

もっとも、某R社のように同じIPと見せかけてデバイス毎に全く違うドライバを書かなきゃいけない、ミスを誘発するような仕組みにはなっておらず、差分もわずかなので、少しの調整で済むと思われます。*2

いままで、Arduino APIデバイスドライバをべた書きしてしまっているコードも多く、汎用性に乏しかった事もあり、この機会に書き直す事にしました。

幸い、NXPがそこそこ汎用性のあるデバイスドライバを用意してくれているので、コレの上にeXodusinoを構築する事にしました。↓こんな感じ。いままで、APIにべた書きしていた部分を完全に分離するのが目標です。

f:id:Lynx-EyED:20130311233348p:plain

*1:XL系列の動作は確認していない

*2:GPIOを除く:GPIOはローエンド機種ほど省電力動作を視野に入れているためかデバイスごとに全く違う機能を持っている事が多く、これはデバイスごとにローレベルまで作り込まなければならない上、ピン名も異なるので、あまり抽象化する必要は無いと判断しています