マルチコア/マルチOS環境でのデバイス共有/コア間・OS間通信

組込みシステムでのRTOSとLinuxの共存を検討する際に、デバイスの共有とOS間通信がネックになるケースがあります。ユビキタスAIではこれらを実現するためにリアルタイムシステム用に設計・開発された仕組みを使い、Linux用のオープンソースのOS間通信の仕組みを応用する際に起こりがちなパフォーマンスの問題を解決しています。

本ページでは、マルチコア/マルチ OS 環境でのデバイス共有/コア間・OS間の通信を円滑に行うための手法と、開発に役立つソフトウェアについて解説します。

より詳しい技術や関連製品について知りたい方へ

お気軽相談

本コラムに関係する技術や関連する製品について知りたい方は、お気軽にご相談ください。

1. はじめに

Linux用のオープンソースのOS間通信の仕組みをRTOSでも使えるようにする方法もありますが、元々リアルタイムシステム用には作られていないため、思うようなパフォーマンスが得られないこともあります。
Hypervisorを使うのも一つの方法ではありますが、Hypervisorはエンタープライズ用途のものがほとんどで、組込みシステムで使うにはオーバースペックな上、設定が複雑です。また組込みLinuxやRTOSをHypervisor上に正しく移植するのはかなり困難です。

TOPPERS-Pro MDCOMは、リアルタイムシステム向けに開発された高速なOS間通信の仕組みです。このMDCOMをLinuxおよびRTOSのTCP/IPの仮想物理層として使用することにより、以下がアドバンテージが得られます。

  • Ethernetが繋がっていないOSからでもSocketを使ってEthernetにアクセスできる
  • 各OS間通信にSocketが使える

以下、イメージ図を使って解説します。

2. LinuxとRTOSの構成

Linuxが動作しているコアにEthernetコントローラーが接続されている場合は、別コアで動作しているRTOSからはEthernetを使用することができません。

LinuxとRTOSの構成

コア間通信TCP/IPネットワーク機能を使うと、RTOS上のアプリケーションも通常のSocketを使ってEthernetを使用できます。

また、RTOSとLinux間の通信もSocketを使えるので、マルチコア/マルチOSのシステムでも可搬性・移植性の高いプログラムが作れます。

RTOS側のTCP/IPスタックであるHE-NETの仮想EthernetドライバーとLinux側の仮想Ethernetドライバーは、高速なOS間/コア間通信ライブラリであるMDCOMで接続されており、仮想ドライバー経由でのアクセスでも通信速度の低下はほとんどありません。
Linuxでは、L3 routingの機能を使って仮想Ethernetと実Ethernetを繋ぎます。

3. LinuxとLinuxとRTOSの構成

3 つのOSを使用する場合でも同様に、Ethernetが直接使えないRTOSやLinux2からもSocketを使ってEthernetを使用できます。
また、Linux1とRTOS間、RTOSとLinux2間、Linux1とLinux2間の通信もSocketが使えます。

LinuxとLinuxとRTOSの構成例

MDCOMはRTOSをサーバーとして動作するため、Linux1とLinux2間の通信はRTOSを経由することになります。しかしながら通信のデータ本体はMDCOMが使用する共有RAMにコピーされた後はそのまま通信相手に渡されるので、オーバヘッドはほとんどありません。

サーバーとして動作するRTOSではL2 switchの機能を使い、Linux1の仮想EthernetとLinux2の仮想Ethernetを繋ぎます。

4. マルチコアで複数のOSを使用する場合の構成および使用例

複数のコアでLinux1、Linux2、RTOS(TOPPERS)が動作しており、Linux1とRTOS、Linux2とRTOSの間はMDCOMを使用して通信ができるようになっています。

  • Linux1では標準のTCP/IPスタックを使用し、実Ethernetドライバーと仮想Ethernetドライバーが実装されています。
  • Linux2では標準のTCP/IPスタックを使用し、仮想Ethernetドライバーのみが実装されています。
  • RTOS(TOPPERS)ではTuxera社製のTCP/IP(HE-NET)を使用し、仮想Ethernetドライバーのみが実装されています。
  • EthernetはLinux1からのみ使用でき、通常の方法ではLinux2やRTOSからはEthernetは使用できません。

4-1. Linux1からEthernetを使用する場合(通常のEthernet通信)

Linux1からEthernetを使用する場合(通常のEthernet通信)

4-2. RTOS(TOPPERS)からEthernetを使用する場合

RTOS(TOPPERS)から Ethernet を使用する場合

4-3. Linux2からEthernetを使用する場合

Linux2からEthernetを使用する場合

4-4. Linux1とRTOS(TOPPERS)間のコア間/OS間通信

Linux1とRTOS(TOPPERS)間のコア間/OS間通信

4-5. Linux2とRTOS(TOPPERS)間のコア間/OS間通信

Linux2とRTOS(TOPPERS)間のコア間/OS間通信

4-6. Linux1とLinux2間のコア間/OS間通信

Linux1とLinux2間のコア間/OS間通信

4-7. まとめ

以上の説明は、MDCOMによってマルチコアで動作する複数のOSから仮想Ethernetデータバスを介して、一つの物理Ethernetを共有する例と、仮想Ethernetデータバスを介して、マルチコアで動作する複数のOS間通信をSocket APIプログラミングモデルで実現する例です。

Socket APIプログラミングモデルで記述したアプリケーションは別のCPU(TCP/IPホスト)へ分散することも容易となります。

5. 対応環境

MDCOMのサーバー機能

TOPPERS-Pro/ASP3、TOPPERS-Pro/FMP3などTOPPERS OSが動作している環境に対応します。

MDCOMのクライアント機能

Linux、Android、およびTOPPERSをはじめとするRTOSで実績があります。

6. 技術サポート体制・移植・チューニング

専任の担当者による技術サポートを提供します。

ユビキタスAIが提供するソフトウェアの移植サービスからアプリケーションの開発受託サービスなどを、別途承っております。開発期間が短い場合やエンジニアリングリソースが不足している時など、お客様に代わり経験豊富なエンジニアが移植、開発作業を行います。

より詳しい技術や関連製品について知りたい方へ

お気軽相談

本コラムに関係する技術や関連する製品について知りたい方は、お気軽にご相談ください。


製品情報

MISRA準拠TCP/IP IPv4/v6

HE-NETv4、HE-NETv6、HE-NETv4/v6

MISRA C準拠。高品質、小フットプリント設計で実績豊富
製品ページを見る
製品情報

ドメイン間 同期・通信

TOPPERS-Pro MDCOM

ホモジニアス/ヘテロジニアスマルチコアの組込みシステム間の同期・通信を実現
製品ページを見る
製品情報

ティックレス対応シングルコア向けRTOS

TOPPERS-Pro/ASP3

TOPPERS第3世代カーネル(ITRON系) 仕様。マイクロ秒単位のシステム時刻精度でティックレス動作
製品ページを見る
製品情報

ティックレス対応マルチコア向けRTOS

TOPPERS-Pro/FMP3

マルチコア対応でリアルタイム性と動的負荷分散を両立。マイクロ秒単位のシステム時刻精度でティックレス動作
製品ページを見る
製品情報

ティックレス対応高信頼性システム向けRTOS

TOPPERS-Pro/HRP3

メモリ保護/時間保護可能な高信頼性RTOS。マイクロ秒単位のシステム時刻精度でティックレス動作
製品ページを見る
製品情報

ティックレス対応高信頼性マルチコアシステム向けRTOS

TOPPERS-Pro/HRMP3

メモリ保護/時間保護可能な高信頼性RTOS。マイクロ秒単位のシステム時刻精度でティックレス動作
製品ページを見る
製品情報

組込み向けハイパーバイザー

TOPPERS-Pro SafeGシリーズ

TrustZoneセキュリティ拡張機能を利用。Armプロセッサ上で汎用OSとRTOSを安全に同時実行
製品ページを見る

TOPPERSカーネルの時間パーティショニング機能の概要

コラムを読む

TOPPERSカーネルのメモリ保護機能の特長と、高信頼性システム開発のポイント

コラムを読む

組込みLinuxの生存確認(死活監視)

コラムを読む

組込み向けハイパーバイザーSafeGの詳細解説

コラムを読む

シングル/マルチコア上でLinux/Androidの高速起動とリアルタイムOSを協調動作

コラムを読む