Skip to content

Instantly share code, notes, and snippets.

@yswallow
Created March 13, 2022 21:01
Show Gist options
  • Save yswallow/a7648ee5af09dc90afa9621ec812195e to your computer and use it in GitHub Desktop.
Save yswallow/a7648ee5af09dc90afa9621ec812195e to your computer and use it in GitHub Desktop.
KMKのファイルサイズを減らす

KMKのファイルサイズを減らす

動機

外付けFlashのないnRF52840マイコンでは記憶領域が1MBしかないため

やったこと

  • 不要そうなファイルを消す
  • mpyに変換

結果

ドライブの容量は244.2kB

状態 合計ファイルサイズ
最初(kmk/extensions/rgb.pyは消去済み) 217.6kB
不要そうなファイルを消す 196.1kB
mpyに変換 116.2kB

不要そうなファイルを消す

消したファイル

kmk/extensions/rgb.py
kmk/modules/adns9800.py
kmk/modules/midi.py
kmk/modules/pimoroni_trackball.py
adafruit_ble/services/microbit.py
adafruit_ble/services/midi.py

mpyに変換

mpy-crossの作り方

既にCircuitPythonビルド環境が整った状態だったので, 環境構築の説明はできません。

上記のファイルを消したkmkフォルダを /home/yu/prog/CircuitPython/kmk-shrinked として保存した状態で /home/yu/prog/CircuitPython/kmk-shrinked-mpyにmpy版を作る

circuitpython/mpy-crossディレクトリ内で実行したコマンドは find /home/yu/prog/CircuitPython/kmk-shrinked | ruby -e "while(p=gets) do;path=p.chomp;outp=path.sub(/\.py\z/,'.mpy').sub('kmk-shrinked','kmk-shrinked-mpy');if path.end_with?('py') then; puts 'file: '+outp;comm='./mpy-cross -o '+outp+' '+path;system comm;else;puts 'dir: '+outp; comm='mkdir -p '+outp;system comm;end;end"

mpyの注意点

  • CircuitPythonのバージョンと不一致を起こすと動かない
  • トレースバックが変換前のpyファイルのパスで表示される
  • 読めない
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment