コネクテッド・カーに採用される 仮想化osのデバッグ手法 · xen dom0...

37
日本ローターバッハ株式会社 技術サポート 香川 貴人 2017712コネクテッド・カーに採用される 仮想化OSのデバッグ手法 www.jp.lauterbach.com 欧米の車載機器メーカで採用が進むハイパー バイザOSに対する取り組み

Upload: others

Post on 10-Nov-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: コネクテッド・カーに採用される 仮想化OSのデバッグ手法 · Xen Dom0 (ゲストOS 1) Linux (ゲストOS 2) FreeRTOS (ゲストOS 3) デバッグツール TRACE32

日本ローターバッハ株式会社

技術サポート

香川貴人

2017年7月12日

コネクテッド・カーに採用される仮想化OSのデバッグ手法

www.jp.lauterbach.com

欧米の車載機器メーカで採用が進むハイパー

バイザOSに対する取り組み

Page 2: コネクテッド・カーに採用される 仮想化OSのデバッグ手法 · Xen Dom0 (ゲストOS 1) Linux (ゲストOS 2) FreeRTOS (ゲストOS 3) デバッグツール TRACE32

2 / 38

Hypervisorシステムのデバッグ

Page 3: コネクテッド・カーに採用される 仮想化OSのデバッグ手法 · Xen Dom0 (ゲストOS 1) Linux (ゲストOS 2) FreeRTOS (ゲストOS 3) デバッグツール TRACE32

3 / 38

ハイパーバイザシステムとデバッグ

ハイパーバイザとは

ハイパーバイザシステムのデバッグ

デモ

アジェンダ

Page 4: コネクテッド・カーに採用される 仮想化OSのデバッグ手法 · Xen Dom0 (ゲストOS 1) Linux (ゲストOS 2) FreeRTOS (ゲストOS 3) デバッグツール TRACE32

4 / 38

組込みデバッグツールの世界的なリーディングカンパニー

1979年ドイツミュンヘン近郊にて設立

JTAGデバッガ、ICE(In Cirtuit Emulator)の開発、製造、販売およびサポート

中国、フランス、イタリア、日本、チュニジア、イギリス、アメリカに営業/技術サポート拠点

従業員数:ワールドワイドで約120 名

Page 5: コネクテッド・カーに採用される 仮想化OSのデバッグ手法 · Xen Dom0 (ゲストOS 1) Linux (ゲストOS 2) FreeRTOS (ゲストOS 3) デバッグツール TRACE32

5 / 38

製品コンセプトと強み

モジュラー型の製品構成

80種以上のCPU/DSPアーキテクチャをサポート

様々なホスト環境、コンパイラ、OS、IDEに対応

全製品に共通のGUI (TRACE32 PowerView)

Page 6: コネクテッド・カーに採用される 仮想化OSのデバッグ手法 · Xen Dom0 (ゲストOS 1) Linux (ゲストOS 2) FreeRTOS (ゲストOS 3) デバッグツール TRACE32

6 / 38

製品ポートフォリオ

Page 7: コネクテッド・カーに採用される 仮想化OSのデバッグ手法 · Xen Dom0 (ゲストOS 1) Linux (ゲストOS 2) FreeRTOS (ゲストOS 3) デバッグツール TRACE32

7 / 38

ハイパーバイザシステムとデバッグ

ハイパーバイザとは

ハイパーバイザシステムのデバッグ

デモ

アジェンダ

Page 8: コネクテッド・カーに採用される 仮想化OSのデバッグ手法 · Xen Dom0 (ゲストOS 1) Linux (ゲストOS 2) FreeRTOS (ゲストOS 3) デバッグツール TRACE32

8 / 38

What is a hypervisor?

出典:ウィキペディアによると

“Hypervisor”はコンピュータソフトウェアの一部で、Virtual Machineを生成、実行するファームウェアまたはハードウェア

Hypervisorが1つまたはそれ以上のVirtual Machine を実行しているコンピュータはホストマシンとして定義される

各Virtual MachineはGuest Machineと呼ばれる

Hypervisorはゲストオペレーティングシステム(OS)に仮想的な動作環境を提供し、

ゲストOSの実行を管理

様々なOSからなる複数の

インスタンスが仮想化された

ハードウェアリソースを共有

Page 9: コネクテッド・カーに採用される 仮想化OSのデバッグ手法 · Xen Dom0 (ゲストOS 1) Linux (ゲストOS 2) FreeRTOS (ゲストOS 3) デバッグツール TRACE32

9 / 38

Why and where to use a hypervisor?

1つのハードウェアで異なるユースケースを並列処理

1つのハードウェアに複数機能を実装:高い費用対効果

安全性:ゲストOSはお互いにブロック

信頼性:Hypervisorがゲストを監視し、

それらを再実行

Page 10: コネクテッド・カーに採用される 仮想化OSのデバッグ手法 · Xen Dom0 (ゲストOS 1) Linux (ゲストOS 2) FreeRTOS (ゲストOS 3) デバッグツール TRACE32

10 / 38

Why and where to use a hypervisor?

ユースケース:

完全に異なる機能を実現する場合

セキュリティのために分離しなければならい場合

異なるOSを並列に実行

Page 11: コネクテッド・カーに採用される 仮想化OSのデバッグ手法 · Xen Dom0 (ゲストOS 1) Linux (ゲストOS 2) FreeRTOS (ゲストOS 3) デバッグツール TRACE32

11 / 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

Page 12: コネクテッド・カーに採用される 仮想化OSのデバッグ手法 · Xen Dom0 (ゲストOS 1) Linux (ゲストOS 2) FreeRTOS (ゲストOS 3) デバッグツール TRACE32

12 / 38

Which hypervisor types to exist?

ハードウェアによるHypervisor

Paravirtualization (準仮想化)

Hypervisors (ハードウェアによる仮想化)

Type 1 hypervisor

Type 2 hypervisor

Page 13: コネクテッド・カーに採用される 仮想化OSのデバッグ手法 · Xen Dom0 (ゲストOS 1) Linux (ゲストOS 2) FreeRTOS (ゲストOS 3) デバッグツール TRACE32

13 / 38

Which hypervisor types to exist?

ハードウェアによるHypervisor

全てハードウェアで管理

例:ARM Trust Zone およびHypervisor: 各ゾーンは、それぞれのレジスタバンクおよびMMUを有する

デバッグツール上では各アクセスクラスを用意

H: Hypervisor

Z: Secure Zone

N: Non-Secure Zone

Page 14: コネクテッド・カーに採用される 仮想化OSのデバッグ手法 · Xen Dom0 (ゲストOS 1) Linux (ゲストOS 2) FreeRTOS (ゲストOS 3) デバッグツール TRACE32

14 / 38

Which hypervisor types to exist?

Paravirtualization(準仮想化): ソフトウェアhypervisor

ハードウェアによるサポートはなし:Hypervisorソフトウェアによって全て管理

完全なMMUサポート:ゲストOSのプロセスマッピングも含めてHypervisorが管理

各ゲストOSはHypervisorにポーティング

デバッグにはHypervisorとゲストの両方をサポートするための特別な対応が必須

例:Sysgo社 paravirtualized PikeOSと ElinOS (ポートされたLinux)

Page 15: コネクテッド・カーに採用される 仮想化OSのデバッグ手法 · Xen Dom0 (ゲストOS 1) Linux (ゲストOS 2) FreeRTOS (ゲストOS 3) デバッグツール TRACE32

15 / 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

Page 16: コネクテッド・カーに採用される 仮想化OSのデバッグ手法 · Xen Dom0 (ゲストOS 1) Linux (ゲストOS 2) FreeRTOS (ゲストOS 3) デバッグツール TRACE32

16 / 38

Which hypervisor types to exist?

“Type1” Hypervisor

ネイティブ型もしくはベアメタル型

Hypervisorはホストハード上で直接動作

例:Xen

Xen がシステム上で動作するOS

“Dom0”:Linuxが動作する特権ゲスト

“DomU”:ユーザゲスト

その他の例

Wind River Hypervisor

LynxSecure

Page 17: コネクテッド・カーに採用される 仮想化OSのデバッグ手法 · Xen Dom0 (ゲストOS 1) Linux (ゲストOS 2) FreeRTOS (ゲストOS 3) デバッグツール TRACE32

17 / 38

Which hypervisor types to exist?

“Type 2“ Hypervisor

ホスト型

従来のOS内で動作するHypervisor

例: KVM

KVMはLinuxホスト内のカーネルモジュール

KVMがユーザOSを管理

その他の例

Jailhouse

QEMU

VMWare

VirtualBox

Page 18: コネクテッド・カーに採用される 仮想化OSのデバッグ手法 · Xen Dom0 (ゲストOS 1) Linux (ゲストOS 2) FreeRTOS (ゲストOS 3) デバッグツール TRACE32

18 / 38

What is virtualized ?メモリ

ハードウェアベースの仮想化では2段階でメモリマネジメント

ゲストは物理メモリを持っていると思っているけれども, 実際には中間的なアドレスにアクセス

Hypervisorが中間アドレスを実際の物理アドレスに変換

Hypervisorによる変換はVMに対し透過

ペリフェラル

I/Oアクセスおよび割り込みはHypervisorによって管理され、VMに送られる

Hypervisorは専用I/Oおよび割り込みにVMが直接アクセスするのを許可する場合もある

Page 19: コネクテッド・カーに採用される 仮想化OSのデバッグ手法 · Xen Dom0 (ゲストOS 1) Linux (ゲストOS 2) FreeRTOS (ゲストOS 3) デバッグツール TRACE32

19 / 38

Debugger must know how hypervisors work

ハードウェアによるHypervisor

Paravirtualization (準仮想化)

Hypervisors (ハードウェアによる仮想化)

Type 1 (ネイティブ型、ベアメタル型)

Type 2 (ホスト型)

メモリおよびI/Oアクセス

各コアの仮想化技術

Page 20: コネクテッド・カーに採用される 仮想化OSのデバッグ手法 · Xen Dom0 (ゲストOS 1) Linux (ゲストOS 2) FreeRTOS (ゲストOS 3) デバッグツール TRACE32

20 / 38

ハイパーバイザシステムとデバッグ

ハイパーバイザとは

ハイパーバイザシステムのデバッグ

デモ

アジェンダ

Page 21: コネクテッド・カーに採用される 仮想化OSのデバッグ手法 · Xen Dom0 (ゲストOS 1) Linux (ゲストOS 2) FreeRTOS (ゲストOS 3) デバッグツール TRACE32

21 / 38

Influence to debugging

ランモードデバッグ (GDB など)時の影響

ストップモードデバッグ (JTAGデバッガ)時の影響

Page 22: コネクテッド・カーに採用される 仮想化OSのデバッグ手法 · Xen Dom0 (ゲストOS 1) Linux (ゲストOS 2) FreeRTOS (ゲストOS 3) デバッグツール TRACE32

22 / 38

Influence to debugging

ランモードデバッグ (例:GDBなど)

デバッグインタフェース(シリアルやイーサネット通信など)はゲストに繋がっている

デバッグ自体はHypervisor非依存。特別な対応は不要。

見えるのはこのデバッグ対象だけ

Page 23: コネクテッド・カーに採用される 仮想化OSのデバッグ手法 · Xen Dom0 (ゲストOS 1) Linux (ゲストOS 2) FreeRTOS (ゲストOS 3) デバッグツール TRACE32

23 / 38

Influence to debuggingストップモードデバッグ ---ターゲットを停止

全てのゲストを含むシステム全体が停止

停止させたとき、あるゲストがアクティブ→ カレントゲスト

「カレントビュー」ではカレントゲストのみを表示

ターゲットアドレス

シンボルアドレス = 仮想アドレス = ゲストOSのアドレス

ゲストOSは仮想アドレスを中間アドレスに変換

中間アドレスはゲストにとって物理アドレス、だけれどもHypervisorにとっては仮想アドレス

Hypervisorは中間アドレスを物理アドレスに変換

→仮想、中間、物理の3つの異なるアドレッシングスキーム

→ ゲストOSとHypervisor の2つの完全なMMUステージ

Page 24: コネクテッド・カーに採用される 仮想化OSのデバッグ手法 · Xen Dom0 (ゲストOS 1) Linux (ゲストOS 2) FreeRTOS (ゲストOS 3) デバッグツール TRACE32

24 / 38

Influence to debuggingメモリアクセス

基本的にデバッガがアクセスできるのは:

物理アドレス領域

カレントゲストの中間アドレス領域

カレントゲスト内のカレントプロセスの仮想アドレス領域

その他のゲストやプロセスにアクセスできるようにするには、デバッガがHypervisorのMMU変換と全てのゲストOSのことを分かっている

→ Hypervisor + OS Awareness

Page 25: コネクテッド・カーに採用される 仮想化OSのデバッグ手法 · Xen Dom0 (ゲストOS 1) Linux (ゲストOS 2) FreeRTOS (ゲストOS 3) デバッグツール TRACE32

25 / 38

ハイパーバイザシステムとデバッグ

ハイパーバイザとは

ハイパーバイザシステムのデバッグ

デモ

アジェンダ

Page 26: コネクテッド・カーに採用される 仮想化OSのデバッグ手法 · Xen Dom0 (ゲストOS 1) Linux (ゲストOS 2) FreeRTOS (ゲストOS 3) デバッグツール TRACE32

26 / 38

What means “Hypervisor Awareness” ?

仮想化されたシステム = たくさんのマシン

各マシンは独自のレジスタ, MMU変換, ブレークポイント, シンボル, OS, タスク・・・などもっている

“Hypervisor Awareness”は以下のマシンを識別

ホストマシン (Hypervisorを実行)

全てのゲストマシン

そして同時に全てのマシン

Page 27: コネクテッド・カーに採用される 仮想化OSのデバッグ手法 · Xen Dom0 (ゲストOS 1) Linux (ゲストOS 2) FreeRTOS (ゲストOS 3) デバッグツール TRACE32

27 / 38

What means “Hypervisor Awareness” ?

Page 28: コネクテッド・カーに採用される 仮想化OSのデバッグ手法 · Xen Dom0 (ゲストOS 1) Linux (ゲストOS 2) FreeRTOS (ゲストOS 3) デバッグツール TRACE32

28 / 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 (ハーフピッチコネクタ)

Page 29: コネクテッド・カーに採用される 仮想化OSのデバッグ手法 · Xen Dom0 (ゲストOS 1) Linux (ゲストOS 2) FreeRTOS (ゲストOS 3) デバッグツール TRACE32

29 / 38

Hypervisorデバッグデモ

JTAGデバッガを接続した

Live Demo

Page 30: コネクテッド・カーに採用される 仮想化OSのデバッグ手法 · Xen Dom0 (ゲストOS 1) Linux (ゲストOS 2) FreeRTOS (ゲストOS 3) デバッグツール TRACE32

30 / 38

Hypervisorデバッグデモ

全ての仮想マシンをリスト表示

Live Demo

Page 31: コネクテッド・カーに採用される 仮想化OSのデバッグ手法 · Xen Dom0 (ゲストOS 1) Linux (ゲストOS 2) FreeRTOS (ゲストOS 3) デバッグツール TRACE32

31 / 38

Hypervisorデバッグデモ

仮想マシン、スペース及びタスクをツリー表示

Live Demo

Page 32: コネクテッド・カーに採用される 仮想化OSのデバッグ手法 · Xen Dom0 (ゲストOS 1) Linux (ゲストOS 2) FreeRTOS (ゲストOS 3) デバッグツール TRACE32

32 / 38

Hypervisorデバッグデモ

全仮想マシン上の全スペースを一覧表示

Live Demo

Page 33: コネクテッド・カーに採用される 仮想化OSのデバッグ手法 · Xen Dom0 (ゲストOS 1) Linux (ゲストOS 2) FreeRTOS (ゲストOS 3) デバッグツール TRACE32

33 / 38

Hypervisorデバッグデモ

指定したタスクのスタックフレームを表示

Live Demo

Page 34: コネクテッド・カーに採用される 仮想化OSのデバッグ手法 · Xen Dom0 (ゲストOS 1) Linux (ゲストOS 2) FreeRTOS (ゲストOS 3) デバッグツール TRACE32

34 / 38

まとめ

組込み分野でも、SoCのマルチコア化およびリソースの有効活用にともないHypervisorの採用が増加

従来通りの組込み開発特有の高度なデバッグ機能を提供するJTAGデバッガは必須

Hypervisor Awareness で、従来のデバッグ機能を継承しつつ、仮想化環境のマルチOSデバッグを実現

Page 35: コネクテッド・カーに採用される 仮想化OSのデバッグ手法 · Xen Dom0 (ゲストOS 1) Linux (ゲストOS 2) FreeRTOS (ゲストOS 3) デバッグツール TRACE32

35 / 38

LDRA単体テストツールと統合

実機レベルのテスト実行とカバレッジ解析を自動化

Page 36: コネクテッド・カーに採用される 仮想化OSのデバッグ手法 · Xen Dom0 (ゲストOS 1) Linux (ゲストOS 2) FreeRTOS (ゲストOS 3) デバッグツール TRACE32

36 / 383636

MISRA-C, CERT C コーディング規約

MCDC, 関数コールカバレッジ

ダイナミックデータフローカバレッジ

要件~コード / トレーサビリティ

単体テスト自動化

セキュリティと機能安全の検証を支援

Page 37: コネクテッド・カーに採用される 仮想化OSのデバッグ手法 · Xen Dom0 (ゲストOS 1) Linux (ゲストOS 2) FreeRTOS (ゲストOS 3) デバッグツール TRACE32

THANK YOU!

日本ローターバッハ株式会社

〒222-0033

神奈川県横浜市港北区新横浜3-8-8

日総第16ビル4F

[お問い合わせ]

Mail: [email protected]

Tel: 045-477-4511

www.jp.lauterbach.com