RISC-VとARMをIPC(コア間通信)で繋げてみた。

本サイトはアフィリエイト広告を利用しています。
Zephyr

Zephyr(RTOS)を使って、コア間通信をしてみました。

最近のSoC内のコアはヘテロジニアス(異種混合)化が進み、種類・数ともに多いです。

RISC-VとARMを使って、コア間通信で分散処理をテストした内容を紹介します

 

スポンサーリンク

RISC-VとARMをIPC(コア間通信)で繋げてみた。

Zephyr(RTOS)を使って、コア間通信をしてみました。

最近のSoC内のコアはヘテロジニアス(異種混合)化が進み、種類・数ともに多いです。

 

RISC-VとARMを使って、コア間通信で分散処理をテストした内容を紹介します

この内容をZephyr Project Meetup: Nagoya, Japanで報告させていただきました。

その際の発表資料です。

●後日掲載予定。

 

 

GitHub

GitHubのリンク先は下記です

GitHub - iotengineer22/zephyr-ipc: This project demonstrates a real-time machine learning application and IPC (Inter-Processor Communication) with the **Zephyr RTOS**
This project demonstrates a real-time machine learning application and IPC (Inter-Processor Communication) with the **Ze...

 

概要

Nordicの最新SoCである nRF54L15(またはnRF5340など)のマルチコア構成を活かした、ユニークなデモアプリケーションを作成したので紹介します。

このプロジェクトでは、Zephyr RTOS と Edge Impulse を組み合わせて、以下のシステムを構築しました。

  1. Hostコア (ARM):加速度センサの値を読み取り、AIモデルでジェスチャーを推論。
  2. Remoteコア (RISC-V):Hostコアから推論結果を受け取り、PWM (Pulse Width Modulation) でLEDの明るさを滑らかに制御。

単にLEDをON/OFFするのではなく、推論されたジェスチャーの種類に応じて「明るさ(デューティ比)」を変化させることで、より細やかな制御をマルチコア間で行うデモとなっています。

 

システム構成

システムの概要は以下の通りです。

  • ハードウェア: Nordic nRF54L15 DK (または nRF5340 DK)
  • OS: Zephyr RTOS (nRF Connect SDK)
  • MLライブラリ: Edge Impulse C++ SDK
  • 通信プロトコル: IPC (Backend: icmsg)

処理の流れ:

  1. Host側: 加速度センサ (I2C) からデータを取得 → Edge Impulseで推論 → 結果(ラベルとスコア)をIPCで送信。
  2. Remote側: IPCメッセージを受信 → 文字列を解析 → ジェスチャーに応じて PWMのデューティ比 を変更してLEDを駆動。

 

実装のポイント

Host側:推論とIPC送信

Host側(Main.cpp)では、センサーデータの収集と推論ループを回しています。推論結果が出ると、スコアが最も高いラベルを文字列(例: "flick:0.98")に整形して送信します。

 

Remote側:受信とPWM制御

Remote側(main.c)は、RISC-Vコア(またはNetworkコア)で動作します。IPCでメッセージを受け取ると、その内容に応じて PWMドライバ を使用してLEDの明るさを3段階に制御します。

  • idle: デューティ比 0% (消灯)
  • flick: デューティ比 50% (半点灯)
  • updown: デューティ比 100% (全点灯)

 

デモ動画

実際に動作している様子です。ジェスチャー(flickやupdown)を行うと、それに応じてLEDの明るさ(PWM)が変わっているのが分かります。

 

こちらがnRF54L15-DKの評価ボードでのデモ動画となります。

  • Zephyr IPC-Demo with RISC-V + ARM on nRF54L15-DK

 

以前個人開発したnRF54L15が搭載した、カスタムボードでも問題なく動作しました。

  • Zephyr IPC-Demo with RISC-V + ARM on nRF54L15 Custom Board

 

ログ

Host(ARM)とRemote(RISC-V)側のログを取りましたので、貼り付けておきます。

無事にIPC通信出来ていることが分かります。

 

Host側のログ例

 

Remote側のログ例

 

 

まとめ

Zephyr(RTOS)を使って、コア間通信をしてみました。

最近のSoC内のコアはヘテロジニアス(異種混合)化が進み、種類・数ともに多いです。

RISC-VとARMを使って、コア間通信で分散処理をテストした内容を紹介しました

コメント