TrustZone アドレスを完全に理解しているかどうかわからない問題があります。私が知っているように、すべてのカーネルには、ハードウェアに記述されたデバイス ツリー構成が付属しています。TrustZone システムでは、ns (非セキュア) カーネルに dt (デバイス ツリー) が付属しており、「DMA ヒープ」への構成が含まれています。DMA ヒープは、カーネルが TrustZone カーネルと通信するための「共有バッファ」として使用されます。これは、SMC ハンドラの実装に依存します。一般に、TrustZone カーネルは「セキュア メモリ」(セキュア ワールド) で実行され、他の「ワールド」ns カーネルは ns メモリ (非セキュア ワールド) で実行されます。これは、物理バス トランザクションで特別な NS ビットを実装することにより、アーキテクチャに適用されます。
ノードタイプ「メモリ範囲」を指すdtファイルで定義されたほとんどのヒープ。メモリ範囲ノード アドレスを変更すると、セキュア アドレスにマッピングされますか?
よくわかりませんが、kmallocを実行してTrustZoneセキュアメモリにマッピングすることは可能ですか?
ioremap 機能によると:
ioremap() 関数は、I/O デバイスの物理アドレスをカーネル仮想アドレスにマップするために使用されます。カーネルはページ テーブルを作成します。つまり、要求された物理アドレスへの仮想アドレスのマッピングです。ioremap() を実行すると、このマッピングは破棄されます。
セキュア メモリを ns カーネルにマッピングすることは可能ですか?
- 私が知っているように、SMMU は、VA -> IPA -> PA または VA -> PA (変換テーブル上) の間のマッピングを担当します。これは、ページ テーブルの 2 つのフェーズによって行われます。フェーズ 1 は ns カーネルによって実行され、フェーズ 2 はハイパーバイザーによって実行されます。安全なアドレスへのマッピングのプロセスはどのように機能しますか? ioremap() を実行した後、ページ テーブル フェーズ 2 でマッピングを実行するようにハイパーバイザーに指示するのは誰ですか?
ありがとう、