0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

RAMが64 MBのMilk-V Duoのsmall core上でZephyrRTOSを使ってLチカ

Last updated at Posted at 2025-02-18

はじめに

秋葉原ロボット部では、2024年の秋から冬にかけて、RTOSのZpheyrRTOSを種々のボードで動作させる活動が行われていました。

RISC-Vのサポートもされていますので、種々のボードで動きそうです。

2023年の秋葉原ロボット部では、RISC-Vを搭載したMilk-V Duoを扱っていました。

このボードを利用した活動記録が「milk-V Duo Advent Calendar 2023」として公開されています。

Milk-V Duoでは、FreeRTOS、LinuxやArduinoのファームウェが動作します。

RTOSのZephyrも動作しそうです。

ここでは、RAMが64 MBのMilk-V Duoのsmall core上でのZephyrOSの動作確認結果を報告します。

Risc-V用ZephyrRTOS

公式サイトで公開されているZephyrのRISC-Vサポートは大きく分けると、3種類のようです。

RISC-V搭載ボード
Qemu
FPGAボード(neorv32, litex_vexriscv)

詳細は、以下の検索結果から確認できます。

この検索結果を見ると、Milk-V Duoの公式サポートは無いことがわかります。

Milk-V Duo用ZephyrRTOS

Milk-V Duo用ZephyrRTOSとして、2024年3月に「GP Orcullo(kinsamanka)さんによって 「initial commit」が公開されました。

Milk-V Duoのsmall coreで動作する環境です。

環境構築とファームウェアのビルドを自分で行っていもいいのですが、Githubでは、ZephyrRTOS用elfファイルが動作するディスクイメージと、Lチカのelfファイルが公開されていますので、こちらを使います。

milkv-duo_sdcard.imgで起動したMilk-V Duoにログインできません

GP Orculloさんの公開しているSDカードイメージを使って起動したところ、ログインできません。IDとパスワードの組み合わせが、Milk-Vの公式のものと違うようです。

Arduinoのファームウェア搭載のディスクイメージを使用

Milk-Vのコミュニティフォーラムを見ていると、Arduinoのファームウェア搭載のディスクイメージを使っている例が紹介されていました。

Arduinoのファームウェア搭載のディスクイメージとして、「arduino-milkv-duo-sd-v1.1.4.img」を使用しました。

このイメージを使用する場合、起動の確認のために、ボード上のLEDが点滅するように設定されています。
Lチカを行うときにもボード上のLEDを使いますので、LED点滅プログラムを止めておきます。

ボードが起動したら、LED点滅プログラムの名前を変更して、実行されないようにします。実際のコマンドは以下の通りです。

# mv /mnt/system/blink.sh /mnt/system/blink.sh_backup && sync

作業が終わったら、再起動します。
再起動後にLEDは点滅しません。

Milk-V Duo上でLチカする方法

Milk-V Duoにsshで接続します。
Milk-V Duo上の/lib/firmwareに、「zephyr.elf」を保存します。

その後、以下のコマンドを実行します。

# echo stop > /sys/class/remoteproc/remoteproc0/state
# echo -n zephyr.elf > /sys/class/remoteproc/remoteproc0/firmware
# echo start > /sys/class/remoteproc/remoteproc0/state

すると、ボード上のLEDが点滅します。

おわりに

RAMが64 MBのMilk-V Duoのsmall coreでzephyrRTOS用のelfが動作しました。
FreeRTOSのリソースが蓄積されているので、これらの情報も活用できそうです。
さらに、Milk-V Duoの環境だと、同じボード上でZephyrOS用プログラム開発とプログラムの実行が行えます。
しかも、再起動せずに行うことが可能です。
この点は、Milk-V Duoの特徴の一つになります。

【おまけ】Milk-V Duo 256M上でのLチカはうまくいきません

「arduino-milkv-duo256m-sd-v1.1.4.img」を使って、Milk-V Duo 256Mを起動後、起動時のLチカプログラムを止めます。

再起動後、「Milk-V Duo上でLチカする方法」の節と同様、「zephyr.elf」の転送後に実行しても、Lチカは起こりません。

ドキュメントを見ると、Milk-V DuoとMilk-V Duo 256Mのボード上のLEDの接続部分が異なっています。

image.png

image.png

ソースファイルのLEDの指定を修正する必要があるようです。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?