Open3

Maix Amigo を今さら発注したのでKendryte K210について調べる会

okuokuokuoku

Raspberry Pi Pico や WioTerminalを買うついでにMaix Amigoを発注した(何故か入金判定がまだ来てない)ので、届く前にプロセッサであるK210について調べておく。

https://www.switch-science.com/catalog/6931/

K210は組込み向けのAIプロセサとして営業していて、AI部分はともかくとして8MiBもの広大な内蔵SRAMと64Bit RISC-V IMAFDC を搭載したリッチなプロセサであることが特徴となっている。

https://canaan.io/product/kendryteai

okuokuokuoku

ハードウェア

正直ヤバいもんを買ってしまった感がもう出ている。。

K210 (SoC)

... 何も無いに等しい。Gitbook形式のデータシートと、C SDKがあるだけで、MaixduinoとかMaixPyのようなSDKはこれらを見たうえで更に手実装していると見られる。

https://github.com/kendryte/kendryte-doc-datasheet

素直にMaixPyとかで使えということだな。

Maix Amigo

ユーザが集めたリポジトリが一番充実している気がする。

https://github.com/AngainorDev/Maix-Amigo-Help

一応、Sipeedのサイトにページがある。このサイトに回路図というか接続図がある。

https://wiki.sipeed.com/soft/maixpy/en/develop_kit_board/maix_amigo.html

何故かページではI2Cデバイスについてしか書いていないが、他のペリフェラルとしては、

  • カメラはK210標準のDVPに接続(2台とも -- つまり、前後のカメラは同時には使えない)
  • LCDは8bit parallelなSPIOに接続

Flash自体はUSB UARTから直接行える。この辺はESP32とかと一緒。

https://wiki.sipeed.com/soft/maixpy/en/get_started/upgrade_maixpy_firmware.html

https://github.com/kendryte/kflash.py

okuokuokuoku

SDK / OS

これもなかなか微妙な情勢で、今のところはBaremetalなSDKに自前のスケジューラをくっつけるのが良いかなと思っている。。

公式(MaixDuino、MaixPy)

https://github.com/sipeed/Maixduino

https://github.com/sipeed/MaixPy

ハードウェアのリファレンスが事実上これしか無くてきつい。

C (newlib)

https://github.com/kendryte/kendryte-standalone-sdk

https://github.com/kendryte/kendryte-doc-standalone-programming-guide

一応Core1側を起動するためのコードや割り込みコントローラのためのAPIもあるので、一番これが素直なSDKなんではないかという気がする。newlib用のsyscall stubも備える。

いわゆるmutexやスレッドは存在しないので、それらは自前でなんとかする必要がある。

FreeRTOS (deprecated)

https://github.com/kendryte/kendryte-freertos-sdk

そもそもK210のサイトには FreeRTOS とか書いてあるのに、FreeRTOS SDKはサポートが終了している。どうしろと。。

もっとも、FreeRTOSにSMPが入ったのが割と最近なので、独自拡張のSMPをあんまりメンテしたくない気持ちはわからなくもない。

NuttX

https://nuttx.apache.org/

https://github.com/apache/incubator-nuttx

NuttXにもK210のサポートが入っているが、 FPU未サポート で、SPIのようなペリフェラルも入ってないので厳しいもんがある。

NuttXは内蔵シェルやpthreadsもあって便利そうではあるが。。