LPC11U35でUSB-CDC
LPC11U35の特徴の一つは、USB関連のプログラムがROMに入っていて、それらを使うことによって比較的簡単にUSBを使うプログラムが書けることである。 LPC11U_LPC13U_CodeBaseでそれを使うのは非常に簡単で、CFG_USB_CDCを定義すれば、自動的にsrc/core/usb/usbd.hやusb_cdc.hが組み込まれて、USB-CDCが使えるようになる。 しかし、予想に反して容量が非常に大きくなってしまった。 調べてみると、usbd.cの中で、シリアル番号の文字列を求めるのにsprintfを使っており、これが肥大化の原因だったので、それを使わないように改造したら、1.7k程度の増加ですんだ。 USB CDCが1.7kというのは、非常にコンパイクトである。
LPC11U35には、2kのUSB用の専用のRAMも用意されており、ROM上のUSBのプログラムがこれを使っているらしい。 心配なのは、LPC11U_LPC13U_CodeBaseのusbd.cでは、この領域のさらに後ろの2kの領域のRAMを使っているっぽいことである。 その領域のことはマニュアルには記載が無いけど、アクセスは出来ることは確認したし、動いているので、気にしないことにした。
早速、mruby/cで標準入出力としてUSB CDCを使うようにしてみたら、なんとか64kには収まった。 しかし、mrbコードを入れるスペースが1kほどしか残っていない。 次は、それをどうするかを考えることにしたい。