ZephyrのIPC(コア間通信)の ICMsgのサンプルを動かしてみた

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

nRF54L15-DKのArmとRISC-Vのコアを用いて、ICMsgのサンプルをテストしました。

ICMsg…Zephyr RTOS独自の軽量通信プロトコル。

ビルド時に注意すること含めて、テスト内容含めて紹介します。

 

スポンサーリンク

ZephyrのIPC(コア間通信)の ICMsgのサンプルを動かしてみた

nRF54L15-DKのArmとRISC-Vのコアを用いて、ICMsgのサンプルをテストしました。

ICMsg…Zephyr RTOS独自の軽量通信プロトコル。

ビルド時に注意すること含めて、テスト内容含めて紹介します。

 

nRF54L15

nRF54L15はM33とRISC-Vのデュアルコア構成です。

コア間通信にはOpenAMPが有名です。

Zephyr同士ならより軽量な「ICMsg (Inter-Core Messaging)」に着目してテストしています。

 

  • ボード: nRF54L15DK
  • OS: Zephyr (nRF Connect SDK)
  • 構成: Main Core (M33) ⇔ VPR (RISC-V)

 

Zephyrのサンプル

今回は下記サンプルをそのままテストしただけです。

zephyr/samples/subsys/ipc/ipc_service/icmsg at main · zephyrproject-rtos/zephyr
Primary Git Repository for the Zephyr Project. Zephyr is a new generation, scalable, optimized, secure RTOS for multiple...

 

OpenAMP (RPMsg)とICMsg

標準的なOpenAMPと比較して構成がシンプルです。

メモリ消費を抑えながら高速なデータやり取りが可能なことを確認しました。

特徴 OpenAMP (RPMsg) ICMsg (このサンプル)
相手 Linux, FreeRTOS, ベアメタル等何でもOK Zephyr同士 専用
規格 国際標準 (複雑) Zephyr独自 (シンプル)
サイズ 大きい (メモリ食う) 小さい (省メモリ)
速度 普通 高速 (オーバーヘッド小)

 

ビルド・テスト結果

ビルド時はSNIPPETで「nordic-flpr」を使用します。

スニペットを入れないとRISC-Vのコアが動かなく、テスト時にエラーが出ます。

 

SNIPPETで「nordic-flpr」を入れないとエラー

実際のエラー内容が下記です。

ビルドは出来ても、実際テストするとエラーが出ます。

 

Nordicの開発サポート(Devzone)にて対応を教えて貰いました。

Just a moment...

 

成功時のログ

M33側からメッセージを送信し、RISC-V側がエコーバックする様子をログで紹介します。

M33コア側のホスト側からデータを送信しています。

RISC-Vコアのリモート側がデータを受信できていることが分かります。

 

まとめ

nRF54L15-DKのArmとRISC-Vのコアを用いて、ICMsgのサンプルをテストしました。

ICMsg…Zephyr RTOS独自の軽量通信プロトコル。

ビルド時に注意すること含めて、テスト内容含めて紹介しました

コメント