2021/08/17

UnitVでsensor 20fpsオーバー

 前回かいた記事 で UnitVでsensor.snapshot()だけで10fpsと書いたんですが、ファームの問題でした。今更感がありますが、ファームについて書いておこうと思います。

https://docs.m5stack.com/en/quick_start/unitv/unitv_quick_start_maixpy を参照して素直にセットアップすると、M5StickVと同じファームを入れる流れになりますが、このファームが sensor の動作周波数を12MHzと設定しているためでした。しかもこのページ内のファームはファイル名はv5.1.2となっていますが、中のファームは0.5.0で結構古い。

新しいファームは https://dl.sipeed.com/shareURL/MAIX/MaixPy/release/master に置いてあって現時点では、maixpy_v0.6.2_58_g783789e06 が最新。

ここに _m5stickv.bin がありますが、これではなく普通のmaixファームを使うと倍速の24MHzになり、UnitVのmicroPython上では20fpsで動くようになります。

前記事で書いたような mobilenet 1000class動かそうとするとフルスペックのファームだとメモリが足りません。よって minimum構成のファームにしたいわけですが、ここに置いてあるminimumたちは微妙に自分が使いたい組み合わせじゃないんですよね。

自分が使いたいのは IDE + _thread + ws2812 + sensor 24MHz + KPU V3 です。kpu V4サポートは今の所いらない。ws2812は大して使わないけど入れても大差ない。_threadはちょっと使いたい。IDEないと辛すぎ。こういう組み合わせがほしい。

ということでファームをビルドしよう!

オンラインでビルドできるサービスがあるようですがユーザ登録とかしないといけないので、ローカルに環境構築してビルドします。

https://github.com/sipeed/MaixPy/blob/master/build.md を見ながらやりますが、ここで要求されている環境はすでに入っているので以下の手順だけでOK。

$ git clone --recursive https://github.com/sipeed/MaixPy.git
$ wget http://dl.cdn.sipeed.com/kendryte-toolchain-ubuntu-amd64-8.2.0-20190409.tar.xz
$ sudo tar -Jxvf kendryte-toolchain-ubuntu-amd64-8.2.0-20190409.tar.xz -C /opt
下が今回ビルドするときに使ったコンフィグファイルの内容(config_tiny.mk)
CONFIG_TOOLCHAIN_PATH="/opt/kendryte-toolchain/bin"
CONFIG_TOOLCHAIN_PREFIX="riscv64-unknown-elf-"
CONFIG_BOARD_MAIX=y
CONFIG_LCD_DEFAULT_WIDTH=240
CONFIG_LCD_DEFAULT_HEIGHT=135
CONFIG_LCD_DEFAULT_FREQ=15000000
CONFIG_SENSOR_FREQ=24000000
CONFIG_CPU_DEFAULT_FREQ=400000000
CONFIG_COMPONENT_DRIVERS_ENABLE=y
CONFIG_SPI_SD_CARD_FORCE_HIGH_SPEED=y
CONFIG_WS2812_ENABLE=y
CONFIG_COMPONENT_KENDRYTE_SDK_ENABLE=y
CONFIG_SDK_LOG_LEVEL=5
CONFIG_FREERTOS_ENABLE=y
CONFIG_STATIC_TASK_CLEAN_UP_ENABLE=y
CONFIG_FREEROTS_MINIMUM_STACK_SIZE=2048
CONFIG_COMPONENT_MICROPYTHON_ENABLE=y
CONFIG_MAIXPY_GC_HEAP_SIZE=0x80000
CONFIG_MAIXPY_IDE_SUPPORT=y
CONFIG_MAIXPY_THREAD_ENABLE=y
CONFIG_MAIXPY_OMV_MINIMUM=y
CONFIG_MAIXPY_OMV_DOUBLE_BUFF=y
CONFIG_MAIXPY_WS2812_ENABLE=y
CONFIG_MAIXPY_BUILTIN_PY_BOARD=y
CONFIG_MAIXPY_BUILTIN_PY_FPIOA_MANAGER=y
CONFIG_BUILTIN_PY_DIR=""
CONFIG_COMPONENT_SPIFFS_ENABLE=y
CONFIG_SPIFFS_CACHE=y
CONFIG_SPIFFS_CACHE_WR=y
CONFIG_SPIFFS_SIZE=0x300000
CONFIG_SPIFFS_START_ADDR=0xD00000
CONFIG_SPIFFS_EREASE_SIZE=0x1000
CONFIG_SPIFFS_LOGICAL_BLOCK_SIZE=0x20000
CONFIG_SPIFFS_LOGICAL_PAGE_SIZE=0x1000
CONFIG_SPIFFS_OBJ_NAME_LEN=128
CONFIG_SPIFFS_USE_MAGIC=y
CONFIG_SPIFFS_USE_MAGIC_LENGTH=y
CONFIG_SPIFFS_META_LENGTH=0
CONFIG_COMPONENT_UTILS_ENABLE=y
ビルド
$ cd MaixPy/projects/maixpy_k210
$ python project.py clean_conf
$ python project.py build --config_file config_tiny.mk
すると、buildフォルダに maixpy.bin が出来上がります。サイズは736192でした。
このファームだとビッグサイズのmobilenetも動くし、sensorも倍速だし、_threadもちゃんとスレッド動作しました。
ビルドはあっという間に完了するので、ちょこちょこ変えながら色々試すにはローカル環境でやるのが一番いいです。

0 件のコメント:

コメントを投稿