鳥なき里のマイコン屋(150) K210、MAiX-BiT、C/C++で恒例Lチカ

Joseph Halfmoon

前回ボード入手のKendryte、K210についてC/C++で恒例Lチカをしてみたいと思います。以前はK210についてはMAiX PyというMicroPython環境ばかりでしたが、C/C++でも環境が整ってきたようで随分使えるようになっていました。ビルドに使う環境はWindows PC上の VSCode + PlatformIO です。

※「鳥なき里のマイコン屋」投稿順Indexはこちら

まずはK210のソフトウエア開発に欠かせないご本家KendryteのGitHubへのリンクから。

Kendryte GitHub

今回のソフト作成は PlatformIO 利用なので、PlatformIOのK210についてのドキュメンテーションにも目を通しておくべきかと思いました。リンクは以下に。

Kendryte K210 – PlatformIO

開発用のフレームワークは3種類

PlatformIOでK210のC/C++での開発に使えるフレームワークは、以下の3種類であるようです。

    • K210 Standalone SDK
    • K210 FreeRTOS SDK
    • Maixduino (Arduino互換)

ぼちぼちと3種類やってみるつもりですが、今回は一番お手軽な Arduino互換のフレームワークでLチカします。なおこちらのフレームワークは、Standalone SDKの上に「一皮被せた」ものみたいです。

APIなどは、以下のドキュメントから調べることができます。見る限り結構充実している?Arduinoベースでもそうとうできるのでないかしらん。

Maixduino Documentation

勿論、VSCode+PlatformIOを使わずに、ご本家 ArduinoIDE環境下でMaixduinoすることも可能であります。

プロジェクトの作成

PlatformIOのHOMEから、Project Wizardを呼び出してやれば、プロジェクトの作成は簡単にできます。今回の設定を以下に示します。

Maix_Blink後はしばらく待てばプロジェクトが出来上がり。

ArduinoベースのLチカなので、ソースも要らないか、とは思ったのですが、念のため、今回使用のものを以下に。

#include <Arduino.h>

int counter;

void setup() {
  pinMode(LED_BUILTIN, OUTPUT);
  digitalWrite(LED_BUILTIN, LOW);
  counter = 0;
}

void loop() {
  if ((counter++ % 2) == 0) {
    digitalWrite(LED_BUILTIN, HIGH);
  } else {
    digitalWrite(LED_BUILTIN, LOW);
  }
  delay(2000);
}

なお、LED_BUILTIN端子の実体は13番端子で、回路図を確認するとUSER LEDのREDにつながってました。前回調べたとおりUSER LEDはRGBタイプで色を変えられます。上記の方法だと赤で点滅する筈。

オブジェクトファイルのuploadでトラぶる

MAiX BiTボードをUSBに接続した後で、PCのデバイスマネージャで確認すると、comポートが2つ見えるのです。手元の環境では、

com11とcom12

として見えました。この状態で何も指定せずにビルドしたオブジェクトを upload しようとすると com12が使われました。そして、以下のようにエラー!

[INFO] COM Port Selected Manually: COM12 
[INFO] Default baudrate is 115200 , later it may be changed to the value you set.
[INFO] Trying to Enter the ISP Mode...
***************
Greeting fail, check serial port ([ERROR] No vaild Kendryte K210 found in Auto Detect, Check Your Connection or Specify One by`-p COM3` )
*** [upload] Error 1
============================================================================================== [FAILED] Took 37.02 seconds ==============================================================================================

「手動で設定してみろや」みたいな事が書いてあったので、もう一つのcomポートをcom11を使うように設定してみたら、うまく行きました。

その際の Platformio.ini ファイルの内容が以下に。

[env:sipeed-maix-bit-mic]
platform = kendryte210
board = sipeed-maix-bit-mic
framework = arduino
upload_protocol = kflash
upload_port = com11

なお、upload_protocolのデフォルトは kflash になっています。わざわざiniファイルで指定してあるのは、後でRISC-V Debugger試してみるかと思っているためです。でも配線メンドイな。今回は無しでOK。

LチカOK

冒頭のアイキャッチ画像にLチカしているところの写真を掲げました。USBポートの右上のLEDがユーザLEDでこれが予定通り赤色点滅します。

Lチカのビルド後のメモリ使用の様子がこちら。

RAM: [ ] 0.5% (used 32432 bytes from 6291456 bytes)
Flash: [ ] 0.4% (used 68247 bytes from 16777216 bytes)

なんといっても MAiX BiTは、RAM 6Mバイト(他にAIアクセラレータ専用部分が2Mあるらしい)、Flash 16Mバイトという組み込みにしては広大なメモリを搭載しているので、Lチカなど吹けば飛ぶような(飛ばないケド)割合しか使いませぬ。

こんだけメモリあるので楽しみだな。次は64ビットのRISC-Vの件かね。

鳥なき里のマイコン屋(149) K210、64bit RISC-V、MAiX-BiT到着 に戻る

鳥なき里のマイコン屋(151) PlatformIOのunittest、使ってみた に進む