2022年2月24日木曜日

PIC32MX210F016BでUSBデバイスは作れるか

PIC32MX210F016BとHarmony

 秋月で190円(2022年1月現在)で売っているUSB搭載最安PICです。半導体不足の影響か、PICが軒並み値上げになっているので昔はもっと安かったと思います。ともかく、この値段で32bitアーキテクチャであり、ハードウェア乗算機を積んでいる超賢い石がこの値段で手に入るのはすごいですね。
 さて、USB積んでるならUSB機器作れて当たり前だろという感じですが、210F016Bはメモリ4kB, フラッシュ19kB という(PIC32としては)地を這うようなリソースの制限があります。加えて、Microchip社はPIC32、特にMXシリーズ以上でHarmonyというフレームワークを使用して開発することを想定しており、FreeRTOSが否応なしに走るのでリソースを馬鹿食いします。
 MHC(Microchip Harmony Configurator)を使ってプロジェクトを作った方なら分かると思いますが、USBの適当なクラス(HIDとかCDCなど)を搭載したプロジェクトを作ると、メモリアロケーションできずにビルドが通りません。ヒープとかスタックのサイズを調整してもどこかしらのアロケーションエラーが出ます。少なくともフリー版XC32では最適化レベルを変更してもどうやっても通りません。
 使っていない機能の変数割当をエラーが出なくなるまで削るといいんでしょうが、本当に使っていない変数ならコンパイル時に除去されるので、いい感じに容量削減するのは骨が折れそうです。
 いくらググっても32MX210でUSB機器開発した情報が出てこないので、今回はこれをなんとかしてみたいと思います。

2022年2月19日土曜日

XC32 ver4.00 Free版でMIPS16コードが生成できる

ついに解禁か?

 最近ずっと32MXの開発をしていて、XC32 v3.01 フリー版ではMIPS16コード作成オプションを使えないことを確認していました。v4.00が2022年1月に出たのでアップデートしてみたところ、なんとMIPS16オプションが効いて、実際かなりのサイズダウンができているではありませんか!