TOPPERS LOGO
Loading

 Topics | About Project | ASP3 Kernel | Documents | Download | Community | Report | Contacts | FAQ
  • 会員向けページ
    • メーリングリスト
    • 早期リリース
    • 技術ドキュメント
    • 開発支援
    • 会員情報登録・変更
    • 会員向けイベント情報
  • プロジェクトについて
    • TOPPERSプロジェクトとは
    • TOPPERSのロゴについて
    • TOPPERS公式マスコット「とぱめ」
    • TOPPERSライセンス
    • プロジェクト規則集
    • 貸借対照表
    • プロジェクトの組織
    • 関連団体、プロジェクトメンバ
    • 受賞
    • 入会のススメと申込み方法
    • 開発成果物の利用報告
    • FAQ
    • 問い合わせ・事務局案内図
  • 取り組み
    • ETロボコンへの取組み
    • プレス発表
    • ニュースレター
    • コンテスト
    • 一般向けイベント情報
    • TOPPERSカンファレンス
    • TOPPERS開発者会議
    • 過去の取り組み
      • 公的資金によるプロジェクト
      • ソフトウェア開発委託事業
      • 公募型事業
  • 開発成果物
    • リアルタイムカーネル
      • TOPPERS/ASP3カーネル
      • TOPPERS/HRP3カーネル
      • TOPPERS/FMP3カーネル
      • TOPPERS/HRMP3カーネル
      • TOPPERS/ASPカーネル
      • TOPPERS/JSPカーネル
      • TOPPERS/FMPカーネル
      • TOPPERS/HRP2カーネル
      • TOPPERS/SSPカーネル
      • TOPPERS/PARK
      • TOPPERS/FDMPカーネル
      • TOPPERS/FI4カーネル
      • TOPPERS/HRPカーネル
      • TOPPERS/ATK1
    • AUTOSAR関連
      • TOPPERS/ATK2
      • TOPPERS/A-RTEGEN
      • TOPPERS/A-COMSTACK
      • TOPPERS/A-WDGSTACK
      • TOPPERS/A-OSBENCH
    • TOPPERS/EV3RT(EV3 Platform)
    • TECS(コンポーネントシステム)
    • TINET(TCP/IPスタック)
    • TOPPERS/ECNL
    • CAN/LIN通信ミドルウェア
    • FatFs for TOPPERS
    • SafeG
    • SafeG64
    • SafeG-M
    • SafeG-Auto
    • MDCOM
    • TOPPERS BASE PLATFORM
    • Athrill
    • TOPPERS Test Suite Package(TOPPERS新世代カーネル)
    • TOPPERS新世代カーネル用コンフィギュレータ
    • その他
      • TOPPERS Builder Bootable CD-ROM イメージ
      • TLV(トレースログ可視化ツール)
      • BridgePoint for JSP1.4
      • TOPPERS C++ APIテンプレートライブラリ
      • TOPPERSカーネルテストスイート(μITRON4.0仕様)
      • Remote Link Loader(RLL)
      • ダイナミックローディングマネージャ(DLM)
      • TOPPERSカーネル向けシミュレーション環境
  • 教育コンテンツ
    • 初級実装セミナー教材
    • 中級実装セミナー教材
    • 基礎1実装セミナー教材
    • 基礎2実装セミナー教材
    • 基礎3実装セミナー教材
    • 基礎ハードウェア基本設計セミナー教材
    • ARM7版基礎1、2、3実装セミナー教材
    • TOPPERS BASE PLATFORM対応版基礎1、2、3セミナー教材
    • 二足歩行ロボット教材
    • TOPPERS版鹿威し
  • ドキュメント
    • TOPPERS第3世代カーネル統合仕様書
    • TOPPERS新世代カーネル統合仕様書
    • TOPPERS新世代カーネルへのマイグレーションガイド
    • TOPPERS新世代カーネル用コンフィギュレータ関連仕様書
    • 機能分散マルチプロセッサ向けリアルタイムカーネル仕様書
  • ダウンロード
    • ダウンロードページ一覧
  • 関連製品
    • トータルソリューション
    • 開発キット・開発環境・ツール
    • ミドルウェア・ソフトウェア部品
    • サポート・サービス
    • 教育・教材
    • ハードウェア
  • 利用事例
    • 適用事例
    • ユーザ
  • コミュニティ情報
    • ユーザーズフォーラム
    • ソフトウェア
    • 統合開発環境
    • 外部リンク
    • Contributed Software
    • Contributed Software(GitHub)
    • AUTOSAR情報サイト
  • その他の情報
    • 雑誌記事・書籍

MDCOM(MultiDomain Communication Module)とは

MDCOMはドメイン間の通信を実現するソフトウェアモジュールです。

近年,HEMS(Home Energy Management System)やADAS(Advanced Driving Assistant System)といった,高い機能と信頼性・リアルタイム性の両方を求 められる組込みシステムが増えてきています。

このようなシステムを実現するには、Linuxのような高機能な汎用OSと、 高い信頼性とリアルタイム性持つRTOSを 組み合わせる方法が現実的な実現方法です。二種類のOSを実行する方法として は、ヘテロジニアスマルチプロセッサやSafeGのような仮想化機能を 用いる方法があります。

このような環境において、各OSをドメインと呼びます。

ドメイン

複数のドメインにより1つのシステムを実現するため,ドメイン間は同期や通信を行う必要があります。 MDCOMはこのようなドメイン間の同期・通信を実現するソフトウェアモジュールです。

MDCOMは、次の二種類のチャネルを提供し、このチャネルにより、Linuxの複数のユーザプ ロセスと、ASPカーネルまたはFMPカーネルのタスク間で同期・通信が可能です。

チャネルは複数作成可能で、ID番号により識別します。

  • SMEM Channel
    • 共有メモリを提供するチャネル。排他制御のためのロックも提供します。
  • FIFO Channel
    • FIFO通信のためにチャネル。イベント通知機能も提供します。

MDCOMの特徴

MDCOMの特徴としては、次が挙げられます。

  • RTOSと親和性の高いAPI
    • タイムアウト指定が可能でリアルタイム性の確保が容易です。
  • ゼロコピー
    • 無駄なコピーを防ぐことが可能で効率の良い通信が可能となります。
  • 静的コンフィギュレーションによるチャネルの生成
    • TOPPERSカーネルと同様に,必要なメモリ使用量を最小に押さえることが可能です。
  • Linux用の専用ドライバによる効率のよい通信
    • MDCOM用にLinuxのドライバを用意しているため、他のモジュールを経由すること無く通信が可能であるため、効率のよい通信が可能です。
  • ユーザプロセスレベルの共有メモリ
    • Linuxのユーザプロセスで共有メモリやバッファをマッピング可能なので、効率的に通信が可能です。

MDCOMの概要

SMEM Channel

SMEM Channelは,共有メモリ機構を提供するチャネルで、多対多の通信を実現します。 SMEM Channelは次の要素で構成されています。

  • Shared Buffer : データのやりとりのための共有メモリ機構
  • Lock : 排他制御のためのオブジェクト

SMEM Channelの構成

SMEM Channel : API

SMEM Channel では次のAPIをサポートしています。

  • Shared Buffer へのポインタの取得
    • mdcom_smemch_get(id, p_smem)
  • Lock の取得
    • mdcom_smemch_trylock(id)
  • Lock の解放
    • mdcom_smemch_unlock(id)

SMEM Channel : 通信の例

SMEM Channelによる通信の例を以下に示します。 ポインタを取得して、取得したポインタを用いてShared Bufferに直接アクセス可能です。 ポインタの値に関してはRTOS側とGPOS側で異なるので直接やりとりはできません。

SMEM Channelの利用例

FIFO Channel

FIFO Channelは,1対1の通信を実現します。FIFO Channelは次の要素で構成されています。

  • Blocks : 固定長の共有メモリ
  • FIFOs : BlockのIDをやりとりするためのFIFO
  • Events : FIFOへのデータの送信等を通知するための機構
  • Filters : Eventによる通知を遮断する機構

FIFO Channelの構成

FIFO Channel : API

FIFO Channel では次のAPIをサポートしています。

  • ブロック割り当て
    • mdcom_fifoch_alloc(fifoch_id, *p_block_id)
  • ブロック解放
    • mdcom_fifoch_free(fifoch_id, const block_id)
  • ブロックのポインタの取得
    • mdcom_fifoch_get(fifoch_id, **p_block)
  • FIFOキューへのブロックIDの送付
    • mdcom_fifoch_enqueue(fifoch_id, const block_id)
  • FIFOキューからのブロックIDの取得
    • mdcom_fifoch_dequeue(fifoch_id, *p_block_id)
  • イベント送付
    • mdcom_fifoch_notify(fifoch_id)
  • イベント受信
    • mdcom_fifoch_wait(fifoch_id, timeout)
  • フィルターのセット
    • mdcom_filter_set(fifoch_id, filter_id);
  • FIFOチャネルの再初期化
    • mdcom_fifoch_init(fifoch_id)

FIFO Channel : 通信の例

FIFO Channelの通信の例を以下に示します。

基本的な通信の流れとしては,送信側は、BlockのID取得、Blockのポインタの取 得、Blockへのデータの書き込み、BlockのIDをFIFOに入れます。最後に受信側にEventを送ります。 受信側は、まずEvent待ちとしEventが送られると、FIFOからBlockのIDを取得後、Blockのポインタの取 得、Blockのデータの読み込み、最後にBlockのリリースを行います。

ブロックするAPIはイベント待ちAPIのみです。 タイムアウトを指定可能ですので、一定時間Eventが送られて来なかった場合は、 エラーでリターンします。

フィルターはEventを無効化可能な関数で,主にGPOSからRTOSに送られるEvent の頻度を下げる目的で使う事を想定しています。

FIFO Channelの利用例

FIFO Channel : その他の機能

その他の特徴的な機能として,GPOS切断通知機能があります。

具体的には、FIFO Channelで通信しているGPOS側のプロセスが終了した場合, RTOS側の事前登録したタスクにタスク例外で通知を行う機能です。

その際、終了したプロセスが使用していた FIFO ChannelでEvent待ちとなって いるタスクは待ちが解除されてエラーが返されます。

その他のAPI

RTOS側からGPOS側の状況確認機能として、RTOSから現状GPOS側のアクティブなプロセスが使用しているFIFO Channelを知ることが可能です。

  • mdcom_sense_fifoch(*p_fifoch_mask)

GPOS側のMDCOMを使用しているプロセス数を取得可能です。

  • mdcom_sense_process(*p_process_num)

コンフィギュレーションAPI

コンフィギュレーションは、静的APIと同様のAPIで静的に行います。

  • FIFOチャネルの定義
    • CRE_FIFOCH(ID, num_blocks, block_size, m_filter, r_filter)
  • 共有メモリチャネルの定義
    • CRE_SMEMCH(ID, size)
  • フィルターの定義
    • CRE_FILTER(ID, filter_function, is_mos, is_ros)

OpenAMPとの比較

MDCOMと同様の機構として、OpenAMPがあります。

OpenAMPとの比較を以下に示します。性能比較についてはこちらの論文を参照して下さい。

OpenAMP MDCOM
リアルタイム性 通信のタイムアウトが15秒固定でリアルタイム性が確保できない ミリ秒単位でタイムアウトを指定可能
共有メモリ機構・排他制御機構 提供していない 提供している
同時通信 チャネルは1本のみ作成可能であり,複数チャネルでの通信ができない 複数チャネルで同時に通信可能
通信遮断通知・再接続機能 提供していない 提供している
下位レイヤーの実装 Linuxは仮想マシン用の通信フレームワークであるvirtioを使用するため,通信オーバヘッドが発生する 専用ドライバを用いているためオーバヘッドは最低限
実行環境 LinuxがMasterとなるため,通信の開始や終了をLinuxしか担えない RTOS側がMasterとなる
APIの提供先(Linux) カーネルモジュールであり,ユーザープログラムでの通信ができない ユーザープログラムが通信可能
一度に送信できるデータ量 512byteが上限 制限なし

対応ハードウェア・OS

MDCOMを使用するにはハードウェアで次の機能を用意する必要があります。

  • ドメイン間割込み
    • お互いのドメインに割込みを入れることが可能な機能。
  • ドメイン間排他制御機構
    • ドメイン間での排他制御を実現するためのスピンロックを実現可能な機能。アトミック命令や専用ハードウェア等。
  • ドメイン間共有メモリ
    • どちらのドメインからも読み書き可能なメモリ。両コアからの参照アドレスが独立していてもよい。

最新のリリースでは次のボードで次のOS構成に対応しています。

  • Xilinx社 ZCU102(Zynq UltraScale+ MPSoC(Cortex-A53 + Cortex-R4))
    • Linux(Cortex-A53 64bit) <-> FMP(Cortex-R5)
    • FMP(Cortex-A53 32bit) <-> FMP(Cortex-R5)
  • Xilinx社 ZCU104(Zynq UltraScale+ MPSoC(Cortex-A53 + Cortex-R4))
    • Linux(Cortex-A53 64bit) <-> FMP(Cortex-R5)
    • FMP(Cortex-A53 32bit) <-> FMP(Cortex-R5)
  • NXP社 MCIMX7SABRE(i.mx7d(Cortex-A7+Cortex-M4))
    • Linux(Cortex-A9) <-> ASP(Cortex-M4)
    • FMP(Cortex-A9) <-> ASP(Cortex-M4)
  • NXP社 RD-IMX6SX-SABRE(i.mx6sx(Cortex-A9+Cortex-M4))
    • Linux(Cortex-A7) <-> ASP(Cortex-M4)
    • FMP(Cortex-A7) <-> ASP(Cortex-M4)
  • NXP社 i.MX 8M Mini EVK(i.mx8m mini(Cortex-A53+Cortex-M4))
    • Linux(Cortex-A53) <-> ASP(Cortex-M4)

ダウンロード

MDCOMの開発はTOPPERSメンバーによって、TOPPERS内のプロジェクト管理ツールで行われています。ユーザ向けのパッケージはここからダウンロードできます。

最新のリリース
パッケージ リリース サイズ リリース日
mdcom-1.2.0.zip 1.2.0 1387KB 2020-07-15
mdcom-1.1.0.zip 1.1.0 1021KB 2019-06-20
mdcom-1.0.1.zip 1.0.1 940KB 2019-01-25
mdcom-1.0.0.zip 1.0.0 708KB 2017-06-22

今後の予定

  • SafeG-COMとの統合

開発スタッフ

MDCOMの開発に参加している開発スタッフは次の通りです(所属は参加した時点のもの)。

名前 所属 時期
本田晋也 名古屋大学 情報科学研究科 2016年〜
加藤吉之介 エーアイコーポレーション 2016年〜

※ 開発スタッフの名前は、掲載を了承された方のみ記載しています。

参考文献

  1. "ヘテロジニアスプロセッサ向け通信ライブラリMDCOM", 大竹史紘,本田晋也,高田広章,情報処理学会研究報告, Vol.2017-EMB-44,No.34, pp. 1-6, 沖縄, Mar 2017.

Newsletterのバックナンバーはこちら

Tweets by ToppersJP


Copyright (C) 2000 - 2023 by TOPPERS Project, Inc. All Rights Reserved.