SNSへはこちら

とりあえずKendryte K210に触れる(1) - 環境構築

半導体不足の現状、全世界のマイコンファンの方はいかがお過ごしでしょうか。
あらゆる雑多な事象が重なり合い、ほぼ全分野の半導体製品が品薄です。車載 IC は車メーカーが買い占め、マイニングの影響もあるなど、穏健な一般ユーザーには過酷な状況ですね。なんと、秋月電子で STM32F042 が販売停止となるなど、しんどくて枕を涙で濡らしています。

...そんなマイコン欲が満たされない中、積みマイコンボードとして Kendryte の K210 SoC を積んだ Maixduino を発掘したので折角なのでいじってみたいと思います。

そういえば

以前こちらで dis った SoC ですが、色々なマイコンに触れてきた中でレジスタマップのないけしからんマイコンの扱いにも慣れてきましたので、今回重い腰を上げてやる気になったということです。

しかし某企業への就職のために引っ越し作業をしていたところ誤って付属 LCD をバキバキに割ってしまう悲しい事件が勃発したため、残念ですが LCD 無しでの利用になります。許して。

特徴

  • RISC-V コア 64bit を搭載
    • 動作周波数は 400MHz で爆速
  • AI 演算コア FPU を搭載
    • 今回は使わないけどねw
  • イマドキの USB Type-C コネクタ接続

参考

PCのOSに関する注意

今回は Arch Linux 上で動かしています。いつもなら Mac を使っているはずですが、最近の macOS は FTDI をまともに認識しなくなったクソ OS と化したため、今回に限って窓から投げ捨てました。実際 Maixduino ボードには FTDI チップは載っていませんが、別チップが FTDI チップをエミュレートしている関係で Mac での使用は不可となっています。

開発環境の構築

まずはコンパイラ等のツールチェインをインストールします。GitHub に公式のビルドスクリプトがありますので、ここにちゃっかり載ります。
インストール先は /opt/kendryte-toolchain としていますので、適宜変えてください。

$ git clone --recursive https://github.com/kendryte/kendryte-gnu-toolchain
$ cd kendryte-gnu-toolchain
$ git submodule update --init --recursive
$ ./configure --prefix=/opt/kendryte-toolchain --with-cmodel=medany --with-arch=rv64imafc --with-abi=lp64f
$ make -j4

以上でコンパイラ等のビルド & インストールは完了です。

続いてスタンドアロン SDK を入れます。

$ git clone https://github.com/kendryte/kendryte-standalone-sdk
$ cd kendryte-standalone-sdk
$ rm -rf src/hello_world

最後の行ですが、次に示すデモプロジェクトを入れる関係でハロワを削除しています。
ということで、追加でデモも落としておきましょう。

$ cd .. # とりあえずさっきのディレクトリから出る
$ git clone https://github.com/kendryte/kendryte-standalone-demo
$ mv kendryte-standalone-demo/* kendryte-standalone-sdk/src

最後に、Python3 で書かれた書き込みプログラム (kflash) をインストール。

$ sudo pip3 install kflash

ビルド & 書き込み

以上で開発環境の導入は終わったので、ビルドして書き込んでみましょう。まずは src ディレクトリ内のハロワにあるコードを眺めてみることをおすすめします。

ビルドは SDK の Git リポジトリ内にある指示に従うだけ。

$ mkdir build
$ cd build
$ cmake .. -DPROJ=hello_world -DTOOLCHAIN=/opt/riscv-toolchain/bin
$ make

できたら、書き込みしましょう。

$ sudo pip3 install kflash
$ kflash -p /dev/serial/by-id/usb-Kongou_Hikari_Sipeed-Debug_xel@sipeed-if00-port0 -B goE hello_world.bin

Mac ではこのあとシリアル通信を screen で見ていましたが、改行コードの問題があってウザいので cat で直接見ることにします。Mac ではできない所業。

$ cat /dev/serial/by-id/usb-Kongou_Hikari_Sipeed-Debug_xel@sipeed-if00-port0
Core 0 Hello world
Core 1 Hello world

良く詳しくわかりませんが、デュアルコアで起動成功していますね。