Upload
others
View
36
Download
0
Embed Size (px)
Citation preview
プレスリリース -2018年12月4日-
2
Agenda
• なぜマルチOSの共存が必要?
• Linuxのメリット・デメリットは?
• マルチOS共存の実現方法
– ハイパーバイザー方式
– AMP方式
• OpenAMP方式を採用した「μC3+Linux」とは?
• 導入手順や開発手法
• 今後の予定
3
イー・フォースとは
4
東京都本社
開発拠点 東京 & マドュライ
事業内容 RTOSおよびTCP/IPスタックの開発・販売
2つの主力製品 ・μC3(RTOS)・μC3/Compact for MCU
・μC3/Standard for MPU
・μNet3(Network stack)沿革
2006 :国内のOSベンダとしてCortex-M/Aコアに最速対応「μC3/Compact」および「μC3/Standard」をリリース
2013 : マルチコア製品に対応した 「μC3/Standard+M」をリリース
2015 : 産業用イーサネットへの対応(EtherCAT, PROFINET, EtherNet/IP等)
2016 : ARMv8-Aへの対応
2017 : OpenAMPを採用した「uC3+Linux」共存ソリューションをリリース
2018 : サイバートラスト社と「μC3+Linux」に関する協業をスタート
・μC3/Standard+M (Homo)・μC3/Standard+H (Hetero)・μC3+Linux
なぜマルチOSの共存が必要?
なぜマルチOSの共存が必要?(1/2)
6
ホモジニアス・・・同一プロセッサ・コアによる構成
A7 A7
A9 A9
A9 A9
A7 M4
Xilinx Zynq-7000INTEL SoCNXP i.MX6 Renesas RZ/G1x, RZ/N1D
NXP i.MX7, 6SoloXilinx Zynq UltraScale+ MPSoCRenesas RZ/N1S, RZ/G1H
ヘテロジニアス・・・異なるプロセッサ・コアによる構成
【ユーザ視点】マルチコア・ヘテロコアを簡単に活用できるソリューションはないの??
【半導体ベンダ視点】増えるバリエーションをどうやって
活用して頂こう??
なぜマルチOSの共存が必要?(2/2)
7
お客様A
お客様B
お客様D
お客様C
リアルタイム性能を維持したまま、GUIを高機
能化したい
既存のRTOSのSW資産
を活かしながら、ミドルウェアをLinux側に集約
したい
Linuxの豊富なライブラリを
活用したい。ただし、リアルタイム処理が必要な機能も
ある。
PC(Linux)で開発していたもの
を、高性能化・低価格化してきたプロセッサで実現したい。
LinuxとRTOSの共存
Linuxのメリット・デメリットは?
8
Merit
Demerit
・オープンソース・無償・ミドルウェアが豊富・デバイスドライバが豊富・開発環境が揃っている・豊富な情報が公開
・リアルタイム性能・起動時間が遅い・無保証・Linuxでないと使用困難なデバイスやソフトがある
(GPU, VPU, Codec, etc.)
ユースケース
• GUIの高機能化に活用
(お客様Aのケース)
9
Linux μC3
Graphicx Realtime proc
• 機能配分の研究・開発に活用
(お客様Dのケース)
Linux μC3
高負荷演算 Realtime proc
• 機器のIoT化に活用
(お客様Bのケース)
Linux μC3
Ethernet EtherCAT
IoT
マルチOS共存の実現方法
ハイパーバイザ方式 vs AMP方式
ハイパーバイザ方式(1/3)
11
仮想化…コンピューティングシステム内を構成する資源を、物理的構成によらずに分割または統合して、隠蔽・抽象化する技術。
仮想マシン(VM)…仮想化ソフトウェアによって構築されたコンピュータハイパーバイザ…仮想マシンを実現するための制御プログラム
*仮想化ソフトウェア…仮想化を実現するソフトウェア
Host System
Hypervisor
VM1 VM2
2台の仮想マシン(VM)を持つハイパーバイザの例
ハイパーバイザ方式(2/3)
12
ベアメタル型(Type-1)
ハイパーバイザには、ベアメタル型(Type-1)とホスト型(Type-2)の2種類があります。
ホスト型(Type-2)ハイパーバイザは、ハードウェア上で直接動作し、ゲストOSはハイパーバイザ上で動作します。ホスト型と比較してオーバーヘッドが小さく、高い隔離性が期待できます。
ハイパーバイザは、ホストOSのアプリケーションとしてホストOS上で動作し、さらにそのハイパーバイザ上で別のOSを動作させます。そのため、実行時のオーバーヘッドが大きく、仮想マシンの動作速度が遅くなってしまうデメリットがあります。
Host System
Hypervisor
OS 1(Linux)
OS 2(RTOS)
Hardware
Host System
VM 1 VM 2
Hardware
Host OS
Hypervisor App
ハイパーバイザ方式 – VOSySmonitor by VOS -(3/3)
13
Linux
Arm multi-core hardware(Renesas RZ/N1D)
μC3(RTOS)
VOSySmonitor
Normal world Secure world
Real time taskUser apps
Serial console
HertbeatMessageを出力
①意図的にコンソールからLinuxクラッシュコマンドを実行echo c > /proc/sysrq-trigger
②カーネルパニックとなりLinuxはダウンする
③μC3はLinuxの影響を受けることなく、正常に動作を継続
AMP方式
14
Core 0 Core 1
Linux
App
OpenAMP
Core 2 Core 3
App
・OSを直接割当・ハイパーバイザ方式と比較してシンプルな実装
RTOS
コア間通信はどうするの?
マルチOS共存方法の比較
Core 0 Core 1
LinuxRTOS
Core 2
Core 0 Core 1
LinuxRTOS
Core 2
Hypervisor
ハイパーバイザ方式
AMP方式
• リソースをハイパーバイザが管理• OS間のメモリ保護が可能• シングルコアのデバイスで実現する
事によりBOMコスト減• OS切り替えコストが発生• ホモジニアスコアが前提
• コアに対してOSを直接割当• ハイパーバイザを用いるよりも軽量
かつシンプルな実装が可能• OS間の切り替えが発生しない• ヘテロジニアスコアにも対応• OS間のメモリ保護は自己責任
OpenAMP方式を採用した「μC3+Linux」とは?
μC3+Linuxとは?(1/9)
17
Core 0 Core 1
LinuxOpenAMP
Core 2 Core 3
Linuxの豊富な資産を活用 x RTOSのリアルタイム性能・信頼性担保
RTOS
オープンソース・無償ミドルウェアが豊富デバイスドライバが豊富豊富な情報が公開
リアルタイム性能信頼性の担保高速起動
OpenAMP
μC3+Linuxとは?-OpenAMP-(2/9)
18
OpenAMP :正式名称「OPEN ASYMMETRIC MULTI PROCESSING」
マルチコア・デバイスで各コアが連携できるように、
MCAで規定したコア間の通信やリソースの管理を行うための標準規格。
*MCA(Multicore Association)
マスタ・プロセッサに、リモート・プロセッサのライフサイクル管理機能を提供します(ブート・シャットダウン・プログラムのロード等)
remoteproc
RPMsg
AMPシステム内に存在する同種または異種のコア上で動作する、独立したソフトウェアコンテキスト間のプロセッサ間通信(IPC)機能を提供します
OpenAMPフレームワークの主要なコンポーネント
μC3+Linuxとは?-OpenAMP-(3/9)
19
https://www.multicore-association.org/workgroup/oamp.php
ソースコードはgithubで公開。https://github.com/OpenAMP/open-amp
μC3+Linuxとは?-OpenAMP-(4/9)
20
① マスタ・アプリケーションがリモート・ファームウェア・イメージをメモリ内の適切な場所にロード
② リセットからリモートプロセッサを解放して、リモート・ファームウェアの実行を開始(※場合によっては依存部の実装が必要)
③ リモート・コンテキストとのランタイム通信用にRPMsg通信チャネルを確立
④ リモート・プロセッサをシャットダウン
⑤ リモート・アプリケーションがリモート側のリモート・システムをシームレスに初期化し、マスタコンテキストとの通信チャネルを確立
remoteprocの重要な機能
μC3+Linuxとは?-OpenAMP-(5/9)
21
remoteprocの概要
※OpenAMP Framework User Referenceから抜粋
μC3+Linuxとは?-OpenAMP-(6/9)
22
① RPMsgチャンネル・マスタ・デバイスとリモート・デバイス間の通信チャンネル・テキスト名とローカル(送信元)及び送信先アドレスで識別
② RPMsgエンドポイント・チャンネルに対して論理的な接続を提供・アプリケーションはエンドポイントを宛先として通信する
RPMsgの概要
・RPMsgは、AMP環境でプロセッサ間通信(OS間通信)を実現・通信はRPMsgチャンネルとRPMsgエンドポイントを利用
μC3+Linuxとは?-OpenAMP-(7/9)
23
RPMsgの概要
※OpenAMP Framework User Referenceから抜粋
μC3+Linuxとは?(8/9)
24
Linuxとコア間連携できるように、μC3にOpenAMPコンポーネントを実装し提供
Core 0 Core 1
Linux
μC3
App
RPMsg
OpenAMP
Core 2 Core 3
App
RPMsg
OpenAMP同士であればLinux以外のOSやベアメタルでも通信可能
ヘテロコアプロセッサにも対応可能
remoteproc
MasterRemote
μC3+LinuxではμC3が基本マスタ
μC3+Linuxとは?(9/9)
25
Core 0 Core 1
Linux
Core 2 Core 3
OpenAMP
libmetal
OpenAMP
libmetal
RPMsgRPMsg
OpenAMPを利用したOS間通信
AppApp
VRING/IPI
uio
導入手順や開発手法
μC3+Linuxの開発・導入手段(1/4)
27
● メモリ割当の決定
● デバイス割当の決定
● ブート設定
● Linux & μC3のビルド
●U-Bootで設定●μC3起動後にLinux起動
● コア割当の決定●(例)Linux 3コア,μC3 1コア
「μC3 + Linux」パッケージには、ドライバだけでなくOS共存の動作サンプルも同梱
●μC3アプリケーション●Linux OpenAMPライブラリ、Linuxアプリケーション
μC3+Linuxの開発・導入手段-メモリレイアウトの決定-(2/4)
28
Linux
μC3
VRING
0x00000000
0x1FFE0000
0x20000000
0x3FFFFFFF
● メモリレイアウトの決定
● 使用デバイスの決定
●Linux動作領域●μC3動作領域●通信用リングバッファ(VRING)領域
●割込み●ドライバ (例)UART1:μC3
使用するリソースが競合しないように配分する必要があります
μC3+Linuxの開発・導入手段-OSのブート設定およびブートシーケンス-(3/4)
29
U-Boot起動
μC3ロード μC3起動
Linux起動
コア0
U-Boot起動
μC3ロード
μC3起動
Linux起動
Linuxロード・デバイスツリー
ロード
Linuxロードデバイスツリーロード
コア1 コア2 コア3
例)Linux for3コア,μC3 for 1コア
μC3+Linuxの開発・導入手段-デバッグ手法-(4/4)
30
Linux - コア 0~2
μC3 - コア3
SMP構成で接続
DTSインサイト社製adviceLUNAⅡ利用可能
「μC3 + Linux」はさらに進化
OpenAMPのTrustZone対応
Core 0 Core 1
LinuxRTOS
Core 2 Core 3
RPMsgRPMsg
Monitor
• OSの切り替えは発生しない
• Monitorからセキュア起動
– モニタがU-Boot(ノンセキュア)→Linuxを立ち上げ
Secure
Non-Secure
共有データ(大きいデータ)の扱い
Core 0
Linux
Core 1
共有データ
App App
●共有メモリの取得・排他制御(スピンロック)が可能に(libmetalを使用)
uio
Libmetal Libmetal
●共有メモリ専用のAPIを提供
OpenAMPでな独自機能!!
まとめ
• 現在、増加するコア数、そしてお客様の複雑化する課題に対して、マルチOSの共存が一つの解決策になっています
• eForceが提供できるマルチOSの共存方法(ご要求仕様に対して柔軟に対応出来ます)
– AMP方式・・・「μC3 + Linux」
• 対応プロセッサ
– Xilinx Zynq-7000
– Xilinx Zynq UltraScale MPSoC “デモ実施中”
– Intel SoC
– Renesas RZ/G1E
– NXP i.MX6
– ハイパーバイザ方式(仏Virtual Open Systemと協力)
• 対応プロセッサ
– Renesas RZ/N1
• プレゼン資料をご希望の方は、お手元のアンケートのコメント欄にその旨、ご記入をお願い致します。
• 評価をご希望の方は、[email protected]までお問合せ下さい。
34
ご清聴ありがとうございました。お手数をお掛け致しますが、
アンケートへのご協力をお願い致します。