はじめに
GPIO搭載の安価なLinuxボード「Milk-V Duo」を2023年から使用しており、様々なプロジェクトを実施してきました。
これらの成果は、秋葉原ロボット部のアドベントカレンダーで公開しています。
このボードで動作するPythonプログラムをビジュアルプログラミング環境で行いたく、実験を行っていました。具体的には、「ビジュアルプログラミング」で「フィジカルコンピューティング」を行う環境の構築です。以下の記事の続きに、なります。
本稿には、「鹿児島Linux勉強会2024.2」での発表内容を含みます。
ビジュアルプログラミング環境のMind+
ビジュアルプログラミングは、Windows10上で動作する「Mind+」を想定しています。
以下の特徴があります。
・Scratch3.0から派生
・ブロックを使ったビジュアルプログラミング環境
・対応言語は、Arduino CとPython
・ブロックプログラムをテキストファイルに
・対応マイクロコントローラは、Arduino、microbit、ESP32ベースのデバイス等
・Debian OSで動作するUNIHIKER
Linuxの動作するボードが含まれていますので、Milk-v duoでも使えるかもしれません。
Milk-vでsftpをサポートする
「Milk-V Duo」はSCPプロトコルのみサポートしているので、Mind+の使用するsftpプロトコルを追加する必要があります。
設定には以下のものがあります。
- SSHサーバーの「dropbear」とsftpサーバーの「gesftpserver」の組み合わせ
- SSHサーバーの「dropbear」とsftpサーバーの「openssh-sftp-server」との組み合わせ
- SFTPプロトコル対応のSSHサーバーの「openssh-server」
ここでは、を設定することにします。
buildrootのdefconfigの修正
「milkv-duo_musl_riscv64_defconfig」に以下の項目を追加します。
BR2_USE_WCHAR=y
BR2_TOOLCHAIN_HAS_THREADS=y
BR2_USE_MMU=y
BR2_PACKAGE_LIBICONV=y
BR2_ENABLE_LOCALE=y
BR2_PACKAGE_GESFTPSERVER=y
実際にビルドしてみると、Python2がないと表示されてビルドに失敗します。
さらに、Python3ではなくPython2を使う場合も、ビルドに失敗します。
gesftpserver.mkへのパッチ
「gesftpserver.mk」にパッチを当てて、 Python2を探さないようにします。
パッチは以下の通りです。
@@ -23,6 +23,10 @@ GESFTPSERVER_DEPENDENCIES += \
$(if $(BR2_ENABLE_LOCALE),,libiconv) \
$(if $(BR2_PACKAGE_OPENSSH),openssh)
+# Python on the host is only used for tests, which we don't use in
+# Buildroot
+GESFTPSERVER_CONF_ENV += rjk_cv_python24=false
+
# openssh/dropbear looks here
define GESFTPSERVER_ADD_SYMLINK
ln -sf gesftpserver $(TARGET_DIR)/usr/libexec/sftp-server
パッチを当てたのち、buildrootをビルドします。
$ cd builroot-2021.05
$ make clean
$ make milkv-duo_musl_riscv64_defconfig
$ make all
なお、milk-vのbuildrootのビルドの仕方は、以下のurlで説明しています。
動作確認
Gesftpserverが起動し、Mind+で作成したpythonのソースファイルが転送されて、milk-v上で作成したpythonプログラムが動作していることがわかります。
おわりに
Risc-VのCPUを搭載したMilk-vボード用pythonプログラムをMind+で作成する環境が構築できました。
Milk-v以外にも、Risc-VのCPUを搭載したボードが多数販売されているので、python用ビジュアルプログラミング環境を検討されている方には、おすすめです。