SafeG64は,SafeGと同様
に同一ハードウェアプラットフォーム上で、汎用OSとRTOSを安全に同時実行で
きる高信頼デュアルOSモニタです。
SafeGは32bitのARMv7-Aをサポートして
いるのに対して,SafeG64は64bitのARMv8-Aをサポートしています。SafeG64で
は汎用OSとRTOSの同時実行を実現するために、ARMプロセッサのTrustZoneセキ
ュリティ拡張機能を利用します。
TrustZoneは、プロセッサにセキュア状態、ノンセキュア状態の2つの状態の概 念(仮想プロセッサ)が追加されます。各状態には独立に特権・非特権レベル が存在します。
Safeg64を使う事で,同一プロセッサ上のセキュア状態でTOPPERSカーネル(FMPカーネル) を実行し,ノンセキュア状態でLinuxを動作させることが出来ま す。
SafeG64
SafeG64は,OS切り換えを行うモニタ自身はARMが開発してオープンソース として公開しているARM Trusted Firmware(ATF)を利用しています。ATFは多 くのARMv8-AのSoCでサポートされています。
ATFは,セキュア側のOSに応じて,SPD(Secure-EL1 Payload Dispatcher)を用 意することで,様々なOSに対応しています。SafeG64ではTOPPERSカーネル用の SPDを用意することで,セキュア状態でTOPPERSカーネルを動作させています。
SafeG64は以下のコンポーネントにより構成されています。
基本的にはSafeGと同じ特徴を持っています。
セキュア状態ではIRQ割り込みが禁止されています。そのため、汎用OSの割り込みが、RTOSの実行に影響を与えることはありません。
一方、ノンセキュア状態では、RTOSにプロセッサの制御を渡せるように、常にFIQ割り込みが許可されています。また、ノンセキュア状態でFIQ割り込みを禁止出来ないように設定されています。そのため,RTOSの割込みを汎用 OSが禁止することはできません。
SafeG64の割込みハンドリング
OS間通信はMDCOMをベー スとしたDOSCOMがサポートされています。
現状のMDCOMは異なるアーキテクチャのプロセッサ(AMP)間の通信をサポート しており,これを同一アーキテクチャの仮想環境のOS間通信をサポートする様 変更しています。APIの名称等はMDCOMからDOSCOMに変更されていますが,機能 は基本的に同じです。
SPDのサービスを呼び出すための機構であり,SMCコールにより呼び出します。 TOPPERS向けのSPDでは以下のSPDサービスコールをサポートしています。
SafeG64ではATFにパッチを適用して振る舞いを変更しています。 具体的には各コアにおいてセキュア側のOSがノンセキュア側のOSが実行されて いない場合でも動作する様に変更しています。
これは,ATFではセキュア側のOSの主目的がセキュアライブラリの実行等,ノ ンセキュア側から依頼があって初めて動作することが前提であり,ノンセキュ ア側のOSが存在しないコアではセキュア側のOSを動かさないのが基本的な考え 方であるからです。
一方,SafeG64の利用を想定しているシステムではセキュア側のOSはリアルタ イム制御を実施することを前提しているため,ノンセキュア側のOSが存在しな いコアでも動作することを想定して,上記の様に変更しました。
SafeG64の利用想定
最新のリリースでは次のボードで次のOS構成に対応しています。
SafeG64の開発はTOPPERSメンバーによって、TOPPERS内のプロジェクト管理ツ ールで行われています。ユーザ向けのパッケージはここからダウンロードでき ます。
最新のリリース | |||
パッケージ | リリース | サイズ | リリース日 |
---|---|---|---|
safeg64-1.2.0.zip | 1.2.0 | 974KB | 2021-06-04 |
safeg64-1.1.0.zip | 1.1.0 | 929KB | 2020-07-25 |
safeg64-1.0.0.zip | 1.0.0 | 597KB | 2019-07-01 |
SafeG64の開発に参加している開発スタッフは次の通りです(所属は参加した時点のもの)。
名前 | 所属 | 時期 |
---|---|---|
本田晋也 | 名古屋大学 情報科学研究科 | 2018年〜 |
鈴木康議 | ユビキタスAIコーポレーション | 2019年〜 |
加藤吉之介 | ユビキタスAIコーポレーション | 2019年〜 |
※ 開発スタッフの名前は、掲載を了承された方のみ記載しています。