コネクテッド カーに採用される仮想化 OS のデバッグ手法 欧米の車載機器メーカで採用が進むハイパー バイザ OS に対する取り組み 日本ローターバッハ株式会社技術サポート香川貴人 2017 年 7 月 12 日 www.jp.lauterbach.com
Hypervisor システムのデバッグ 2 / 38
アジェンダハイパーバイザシステムとデバッグハイパーバイザとはハイパーバイザシステムのデバッグデモ 3 / 38
組込みデバッグツールの世界的なリーディングカンパニー 1979 年ドイツミュンヘン近郊にて設立 JTAG デバッガ ICE(In Cirtuit Emulator) の開発 製造 販売およびサポート 中国 フランス イタリア 日本 チュニジア イギリス アメリカに営業 / 技術サポート拠点 従業員数 : ワールドワイドで約 120 名 4 / 38
製品コンセプトと強み モジュラー型の製品構成 80 種以上のCPU/DSPアーキテクチャをサポート様々なホスト環境 コンパイラ OS IDEに対応全製品に共通のGUI (TRACE32 PowerView) 5 / 38
製品ポートフォリオ 6 / 38
アジェンダハイパーバイザシステムとデバッグハイパーバイザとはハイパーバイザシステムのデバッグデモ 7 / 38
What is a hypervisor? 出典 : ウィキペディアによると Hypervisor はコンピュータソフトウェアの一部で Virtual Machine を生成 実行するファームウェアまたはハードウェア Hypervisor が 1 つまたはそれ以上の Virtual Machine を実行しているコンピュータはホストマシンとして定義される 各 Virtual Machine は Guest Machine と呼ばれる Hypervisor はゲストオペレーティングシステム (OS) に仮想的な動作環境を提供し ゲスト OS の実行を管理 様々な OS からなる複数の インスタンスが仮想化された ハードウェアリソースを共有 8 / 38
Why and where to use a hypervisor? 1 つのハードウェアで異なるユースケースを並列処理 1 つのハードウェアに複数機能を実装 : 高い費用対効果 安全性 : ゲスト OS はお互いにブロック 信頼性 :Hypervisor がゲストを監視し それらを再実行 9 / 38
Why and where to use a hypervisor? ユースケース : 完全に異なる機能を実現する場合 セキュリティのために分離しなければならい場合 異なる OS を並列に実行 10 / 38
Why and where to use a hypervisor? 多コア化 : ARM の Cortex-A5x/A7x インテル社 Core i9 は 18 コア /36 スレッド CPU リソースをより効果的 効率的に使用するために Hyperviosr を採用 Core0 Core1 Core2 Core3 Core4 Core5 Core6 Core7 11 / 38
Which hypervisor types to exist? ハードウェアによるHypervisor Paravirtualization ( 準仮想化 ) Hypervisors ( ハードウェアによる仮想化 ) Type 1 hypervisor Type 2 hypervisor 12 / 38
Which hypervisor types to exist? ハードウェアによる Hypervisor 全てハードウェアで管理 例 :ARM Trust Zone および Hypervisor: 各ゾーンは それぞれのレジスタバンクおよび MMU を有する デバッグツール上では各アクセスクラスを用意 H: Hypervisor Z: Secure Zone N: Non-Secure Zone 13 / 38
Which hypervisor types to exist? Paravirtualization( 準仮想化 ): ソフトウェア hypervisor ハードウェアによるサポートはなし :Hypervisor ソフトウェアによって全て管理 完全な MMU サポート : ゲスト OS のプロセスマッピングも含めて Hypervisor が管理 各ゲスト OS は Hypervisor にポーティング デバッグには Hypervisor とゲストの両方をサポートするための特別な対応が必須 例 :Sysgo 社 paravirtualized PikeOS と ElinOS ( ポートされた Linux) 14 / 38
Which hypervisor types to exist? Hypervisor ( ハードウェアによる仮想化 ) Hypervisor は VM の管理のためにハードウェアを利用 ゲスト OS はポーティングの必要なし Hypervisor はペリフェラル 割り込みおよび MMU への特権アクセスを管理 各ゲストごとに MMU ステージ ハードウェアサポートの例 : ARM Virtualization Extension Intel X86 Virtual Machine Control Structure PowerPC Embedded Hypervisor 15 / 38
Which hypervisor types to exist? Type1 Hypervisor ネイティブ型もしくはベアメタル型 Hypervisor はホストハード上で直接動作 例 :Xen Xen がシステム上で動作する OS Dom0 :Linux が動作する特権ゲスト DomU : ユーザゲストその他の例 Wind River Hypervisor LynxSecure 16 / 38
Which hypervisor types to exist? Type 2 Hypervisor ホスト型 従来の OS 内で動作する Hypervisor 例 : KVM KVM は Linux ホスト内のカーネルモジュール KVM がユーザ OS を管理その他の例 Jailhouse QEMU VMWare VirtualBox 17 / 38
What is virtualized? メモリ ハードウェアベースの仮想化では 2 段階でメモリマネジメント ゲストは物理メモリを持っていると思っているけれども, 実際には中間的なアドレスにアクセス Hypervisor が中間アドレスを実際の物理アドレスに変換 Hypervisor による変換は VM に対し透過ペリフェラル I/O アクセスおよび割り込みは Hypervisor によって管理され VM に送られる Hypervisor は専用 I/O および割り込みに VM が直接アクセスするのを許可する場合もある 18 / 38
Debugger must know how hypervisors work ハードウェアによるHypervisor Paravirtualization ( 準仮想化 ) Hypervisors ( ハードウェアによる仮想化 ) Type 1 ( ネイティブ型 ベアメタル型 ) Type 2 ( ホスト型 ) メモリおよびI/Oアクセス各コアの仮想化技術 19 / 38
アジェンダハイパーバイザシステムとデバッグハイパーバイザとはハイパーバイザシステムのデバッグデモ 20 / 38
Influence to debugging ランモードデバッグ (GDB など ) 時の影響 ストップモードデバッグ (JTAG デバッガ ) 時の影響 21 / 38
Influence to debugging ランモードデバッグ ( 例 :GDB など ) デバッグインタフェース ( シリアルやイーサネット通信など ) はゲストに繋がっている デバッグ自体は Hypervisor 非依存 特別な対応は不要 見えるのはこのデバッグ対象だけ 22 / 38
Influence to debugging ストップモードデバッグ --- ターゲットを停止 全てのゲストを含むシステム全体が停止 停止させたとき あるゲストがアクティブ カレントゲスト カレントビュー ではカレントゲストのみを表示 ターゲットアドレス シンボルアドレス = 仮想アドレス = ゲスト OS のアドレス ゲスト OS は仮想アドレスを中間アドレスに変換 中間アドレスはゲストにとって物理アドレス だけれども Hypervisor にとっては仮想アドレス Hypervisor は中間アドレスを物理アドレスに変換 仮想 中間 物理の 3 つの異なるアドレッシングスキーム ゲスト OS と Hypervisor の 2 つの完全な MMU ステージ 23 / 38
Influence to debugging メモリアクセス 基本的にデバッガがアクセスできるのは : 物理アドレス領域 カレントゲストの中間アドレス領域 カレントゲスト内のカレントプロセスの仮想アドレス領域 その他のゲストやプロセスにアクセスできるようにするには デバッガが Hypervisor の MMU 変換と全てのゲスト OS のことを分かっている Hypervisor + OS Awareness 24 / 38
アジェンダハイパーバイザシステムとデバッグハイパーバイザとはハイパーバイザシステムのデバッグデモ 25 / 38
What means Hypervisor Awareness? 仮想化されたシステム = たくさんのマシン 各マシンは独自のレジスタ, MMU 変換, ブレークポイント, シンボル, OS, タスク などもっている Hypervisor Awareness は以下のマシンを識別 ホストマシン (Hypervisor を実行 ) 全てのゲストマシン そして同時に全てのマシン 26 / 38
What means Hypervisor Awareness? 27 / 38
Hypervisor デバッグデモ ターゲットボード LeMaker Hikey Cortex-A53 64-bit octa core with up to 1.2GHz ターゲット OS Xen Dom0 ( ゲストOS 1) Linux ( ゲストOS 2) FreeRTOS ( ゲストOS 3) デバッグツール TRACE32 PowerDebug + ARMv8 用デバッグプローブターゲット接続コネクタ :MIPI-10 ( ハーフピッチコネクタ ) 28 / 38
Hypervisor デバッグデモ JTAG デバッガを接続した Live Demo 29 / 38
Hypervisor デバッグデモ 全ての仮想マシンをリスト表示 Live Demo 30 / 38
Hypervisor デバッグデモ 仮想マシン スペース及びタスクをツリー表示 Live Demo 31 / 38
Hypervisor デバッグデモ 全仮想マシン上の全スペースを一覧表示 Live Demo 32 / 38
Hypervisor デバッグデモ 指定したタスクのスタックフレームを表示 Live Demo 33 / 38
まとめ 組込み分野でも SoC のマルチコア化およびリソースの有効活用にともない Hypervisor の採用が増加 従来通りの組込み開発特有の高度なデバッグ機能を提供する JTAG デバッガは必須 Hypervisor Awareness で 従来のデバッグ機能を継承しつつ 仮想化環境のマルチ OS デバッグを実現 34 / 38
LDRA 単体テストツールと統合 実機レベルのテスト実行とカバレッジ解析を自動化 35 / 38
セキュリティと機能安全の検証を支援 MISRA-C, CERT C コーディング規約 MCDC, 関数コールカバレッジ ダイナミックデータフローカバレッジ 要件 ~ コード / トレーサビリティ 単体テスト自動化 36 36 36 / 38
www.jp.lauterbach.com THANK YOU! 日本ローターバッハ株式会社 222-0033 神奈川県横浜市港北区新横浜 3-8-8 日総第 16 ビル 4F [ お問い合わせ ] Mail: info@lauterbach.co.jp Tel: 045-477-4511