SafeGとはSafeGは同一ハードウェアプラットフォーム上で、汎用OSとRTOSを安全に同時実行できる高信頼デュアルOSモニタです。SafeGでは汎用OSとRTOSの同時実行を実現するために、ARMプロセッサのTrustZoneセキュリティ拡張機能を利用します。TrustZoneの実装されたプロセッサでは、プロセッサにトラスト状態、ノントラスト状態の2つの状態の概念が追加されます。各状態には独立に特権・非特権レベルが存在します。トラスト状態は、一般的なARMプロセッサの特権レベルおよび非特権レベルと同じ機能を提供します。ノントラスト状態で動いてるプログラムは、たとえ特権レベルであっても、トラスト用メモリやデバイスへのアクセスが禁止されます。一部の命令はノントラスト状態では実行できません。トラスト状態/ノントラスト状態を制御するために、モニタモードと言う新しいモードが追加されています。SafeGは割込み禁止状態かつモニタモードで、トラスト状態とノントラスト状態を切り替えます。SafeGのアーキテクチャSafeGのデモSafeGを用いたシステムのデモの構成図と動画を次に示します。Androidを動作させています。ASPカーネルでは,カメラの制御や倒立二輪車(PUPPY)の倒立制御を行っています。ASPカーネルとAndroid上のアプリの間は,SafeGが提供するOS間通信機能(COM)を使用して倒立二輪車の制御値をAndroid上のアプリに渡して表示しています.また,ASPカーネルからLinuxの再起動が可能です。SafeGのデモ構成図SafeGのデモ動画SafeGの特徴シングルプロセッサで汎用OSとRTOSの同時実行を実現します。汎用OSはノントラスト状態で、RTOSはトラスト状態で実行されます。マルチコアプロセッサシステムにおいては、対象型マルチコアプロセッサでの動作を対象とするOSを、2つ安全に同時実行することができます。汎用OSの不正なアクセスからRTOS用メモリとデバイスを保護します。用メモリとデバイスは、トラスト状態のプロセッサからのみアクセス出来るように設定されています。残りのリソースは、どちらのプロセッサ状態からもアクセス出来ます。RTOSのリアルタイム性を保証します。RTOSのリアルタイム性保証のため、各状態で異なる割り込み要求ラインを使用します。FIQはRTOSで使用されます。IRQは汎用OSで使用されます。トラスト状態ではIRQ割り込みが禁止されています。そのため、汎用OSの割り込みが、RTOSの実行に影響を与えることはありません。ノントラスト状態では、いつでもRTOSにプロセッサの制御を渡せるように、常にFIQ割り込みが許可されています。ノントラスト状態でFIQ割り込みを禁止出来ないように設定されています。OSが禁止することはできません。ハードウェアの仮想化支援機能を使用しているため、低オーバヘッドで2つのOSの同時実行を実現できます。汎用OSは少ない変更で適用可能です。必要な変更点はメモリとデバイスに関するコンフィギュレーションのみです。SafeGのコードは非常に小規模であり、かつ割り込み禁止状態で動作するため、検証が容易となっています。マルチコア対応SafeGは、プロセッサ数の変更に対して容易に対応可能なように設計されています。SafeGのデータ領域を除くプログラムコードは、コア間で共有されており、コア数が増えても、SafeGの実行時間およびプログラムコードサイズは増加しません。対象型マルチコアプロセッサシステムを対象とする汎用OSとRTOSの同時実行が可能です。最新のリリースでは、汎用OSとしてLinux、RTOSとしてTOPPERS/FMPカーネルに対応しています。OS間通信(COM)汎用OS・RTOS間で、安全にOS間のデータ通信を行うことが可能です。この通信はロックフリーの実装となっており、RTOSのリアルタイム性に影響を与えないように配慮されています。グローバルスケジューリングRTOSタスクと、汎用OSタスクの優先度を混合することが可能です。これにより、RTOSのハードリアルタイム性を守りつつ、汎用OSの一部のソフトリアルタイム処理優先度を上げることができます。対応ハードウェア・OSSafeGの実行には、TrustZone搭載プロセッサが必要です。TrustZone搭載プロセッサには次のようなものがあります。Cortex-A5ARM1176加えて、ターゲットハードウェアには以下のTrustZoneサポートが必要となります。TrustZone対応の割込みコントローラメモリとデバイスをトラスト側とノントラスト側に分離可能(オプション)最新のリリースでは次のボードに対応しています。Sabreボード(i.MX6Q)過去のリリースでは次のボードに対応しています。Zynq)最新のリリースでは次のゲストOSに対応しています。TOPPERSメンバーによって、TOPPERS内のプロジェクト管理ツールで行われています。ユーザ向けのパッケージはここからダウンロードできます。safeg-1.2.1.tar.gzはパッケージに問題があるため公開を中止しています。開発スタッフの名前は、掲載を了承された方のみ記載しています。