QEMUでOP-TEEを正常に実行し、スケジューラの仕組みを理解したいと思っています。 セキュアワールドに入る前と通常の世界に戻った直後に、変数のjiffiesを取得するようにソースコードを変更しました。ここにコードがあります。セキュアな世界に切り替えた後にOP-TEEのLinuxスケジューラが動作する方法
i=jiffies;
tee_smc_call(¶m);
j=jiffies
ここtee_smc_callはSMCコールを発行するasm関数です。タイマ割込みがSWを離れる結果となる場合、jはiより大きい1になります。私はそれはタイマ割り込みがどこかで処理されることを意味します。私の控除が正しくない場合は、私を修正してください。
私はリンクhttps://lists.linaro.org/pipermail/tee-dev/2015-August/000160.htmlとhttps://github.com/OP-TEE/optee_os/issues/332に行きます。 OP-TEEの開発者は、タイマー割り込みは、NWに戻ってすぐにNWによってサービスされると述べています。
SWのIRQハンドラのソースコードを読みました。私は、SWハンドラがNWのVBARを見つけ、NWハンドラへのリターンアドレスを変更すると考えました。しかし、そのようなコードは見つかりませんでした。
私はこのサイト TrustZone: Scheduling processes from the two worldsと ARM TrustZone - Behaviour of the scheduler in Secure and Non-Secure OSにいくつかの記事を読みました。後者は私のものに似ていますが、答えはOP-TEEの実装で何が起こるかは分かりません。
だから私は魔法が、それはSWで一度サービスされているため、タイマ割り込みNWに戻った後、再び処理することが作っているものを疑問に思って。
私はOP-TEEに精通していません。そして、これが私の最初の質問です。もしそれが明らかでない、あるいは愚かであれば、私を許してください。ありがとう。
あなたの質問に答えがありましたら、それを共有できますか? – shunty