4 テスト環境

複雑なテスト環境

graph_name PC PC 開発環境 RTOS ソース  アプリ ソース コンパイラ- 単体テスト Win OS EB 評価ボード テスト対象 I/Oエミュレータ デバッガ PC接続 PC->EB PB 製品ボード テスト対象 I/O電子回路 物理接続 疑似I/O 測定器 EB->PB

組込みテストの課題

  • エッジ系ソフトのテスト
    • 製品個別のハード対応
  • CPU命令とI/Oが製品毎に異なる
    • テストベッド,テストハーネス
    • 組み合わせで多様
  • 多様な専門知識が必要
    • リソース共有ができない

統合ECUでは? テスラに学ぶ

  • カーネルベース仮想化技術
  • 統合ECUボードは数種類ある
  • 能力差はあるが
  • KVMによりOSやアプリからは互換あり
  • 実機ECUだけでなく,クラウドやPCでも仮想化
  • 現在のエッジ系開発と比較し桁違いの効率
    • 開発量と開発スピードの必要性から

KVMの歴史

  • QEMU:1999年 Red Hat が開発
  • KVM :2007年 QEMUのゲスト OS のパフォーマンスを向上
  • Linuxカーネルに組み込まれる 2012年
  • 2014年,2018年 強化を続ける
  • オープンソース 仮想化技術のディファクト

Tesla OSは統合技術

  • Tesla OSは突然出現したのではない
  • 10年以上のOSSでの実績
    • サポートできるエンジニアが育っていた
  • 実績のあるソフトの組み合わせ
  • それを支えるエンジニア
    • 欧米の人的資源分化
    • 有能な人材を刈り集め活躍の場を作る

Tesla OSは仮想マシンプラットフォーム

  • ハードの抽象化と仮想化
  • 仮想化ネットワーク
  • 柔軟な構成が可能
  • この特性で,3種のボードをOSがサポート
  • BSWとは柔軟性の桁が違う

仮想マシンプラットフォーム

  • CPUの持つハードウェア仮想化技術
  • KVMはQEMUを使ってホストマシン以外もサポート
  • 仮想メモリ管理
  • 仮想ネットワーク

仮想ネットワーク

  • 仮想プロットフォーム内に高速NET
  • 構成要素
    • 「仮想NIC」・・・・VM(*3)に接続された NIC
    • NIC Network Interface Card
    • 「仮想スイッチ」接続のための L2 スイッチ
    • 「物理NIC」プラットフォーム外接続

開発とテスト

  • 現在のKVMはKVMの上にKVMが可能
  • つまりクラウド上のKVM(開発テストのホスト)
  • 任意のチップ仕様でターゲットKVM
  • 実機テストもクラウドと実機接続で

tesla 追従の課題

  • 技術的にはOSSなので,
  • キャッチアップは難しくない
  • 問題は人的資源
  • 特に,保有エンジニアのスキル変換
  • 現 製品ごとの作業分業
    • 専門技術の分業へ

リアルタイムのトレンド

4.1 VMPFとリアルタイム制御

  • tesla OSのメインはVMプラットフォーム
  • リアルタイム制御もゲストVMで残る
  • イベント処理を別VMにするのでより高信頼化
  • 確定論処理の徹底,RTOS機能の活用
  • tesla はQNXをベースにしている
    • マイクロカーネル方式が幾つか乗っている

組込みモダン技術

  • リアルタイム制御での変化は

    1. プリエンプション
    2. メモリ保護
  • テスト,開発での変化は

    1. QUME仮想化
    2. LLVMの動的サニタイザー

4.2 プリエンプション

  • プリエンプション(preemption)
  • リアルタイム制御への導入は,
  • 周期タスクの実行優先度制御です.
  • 何に使うのか
    • 周期タスクの時間制約を緩和する
  • 周期タスクの時間制約問題
  • 一部,周期の短いタスクがあり
    • その時間制約のため,長い処理を分割
    • 処理が複雑になっている
  • 例えば,20msec と100msecの2種類
    • 100msecタスクも20msecの制約
  • 20msecの周期タスク 理想
  • 割り込み処理が入るとジッター
  • 100msec 周期タスク
  • 時間内に終わらないので,次の20msecにも追加
  • 分割で時間確保が大変
  • プリエンプション(preemption)導入

  • RTOS側に周期タスクの優先クラス単位にスタック確保

  • 上位の優先クラスが実行され,終了後に再開

  • RTOSのプリエンプションを使うと
  • 100msの周期タスクの制限を100ms近くまで
  • 緩和することができる.
  • さらに,非同期タスク
  • 周期タスクではなく,長期の処理
  • 割り込みなどで,起動される優先度の低いタスク
  • この実装が可能
  • 診断処理などに利用できる.

4.3 メモリ保護

  • メモリ保護とはRTOSの機能で
  • タスク単位に独立したメモリエリアを提供する
  • OSは実メモリとタスクへ提供するメモリの
  • アドレス変換機能を提供する(FWレベルで)
  • 何に使うのか
    • 派生開発時の想定外影響防止
  • リアルタイム処理の派生開発
  • タスク間の隠れた影響調査が困難
  • その調査に多大な時間を費やしている
  • この機能を使うと想定外の参照や更新を
  • 動的に防げる.
  • 他にも
    • テーブルやスタックの溢れチェック
    • 共有エリア
    • 動的メモリ(解放,確保が可能)
  • 利用可能になった大型メモリの活用が可能

4.4 QUME仮想化

  • ターゲット側ではなく開発側
  • ホスト側でターゲットECUやメモリを仮想化
  • 仮想化上で動作させテストが可能
    • Tesla OS はこれをターゲット側でも活用
  • チップメーカ動向
    • 新規チップ開発時
    • 出荷前にこの仮想環境を提供している
    • 評価パッケージの代替えのも
  • RTOSメーカ動向
    • デモ環境として
    • テスト環境として
    • 提供している
  • freeRTOSでも

まとめ

  • 2つの相反トレンド
  • マイクロサービス化:機能の独立性を高める
    • 1サービス:1OS>1アプリ
  • 複雑化:クラウドとして複数のVM統合
    • 高速通信(パッシング)
  • tesla-OS はこのトレンド

10年後の技術は?

  • RTOS/BSW
    • 2020頃は多種多様なアプリの乗せ複雑化
    • 仮想化技術により1RTOS 1アプリへ
    • 安定するので開発量は減る
  • 通信や診断やリプログなどのアプリ
    • 仮想化フレームワーク化でサービス化
    • RTOS配下でなくなる
    • リソース制限が緩和され大量に開発
  • IT系に占領されそう–>組込み系の高度化