Ich führe OP-TEE erfolgreich auf QEMU aus und möchte herausfinden, wie Scheduler funktioniert. Ich änderte den Quellcode, um die Variable Jiffies direkt vor dem Eintritt in Secure World und nach der Rückkehr in die normale Welt zu erhalten. Hier ist ein Stück Code.Wie funktioniert der Linux-Scheduler von OP-TEE nach dem Wechsel zu Secure World?
i=jiffies;
tee_smc_call(¶m);
j=jiffies
Hier tee_smc_call ist die asm-Funktion Ausgabe SMC Anruf. Ich finde, j wird größer 1 als i, wenn Timer Interrupt Ergebnisse in SW verlassen. Ich denke, es bedeutet, dass der Timer-Interrupt irgendwo behandelt wird. Wenn mein Abzug nicht stimmt, korrigiere mich bitte.
Ich gehe auf den Link https://lists.linaro.org/pipermail/tee-dev/2015-August/000160.html und https://github.com/OP-TEE/optee_os/issues/332. Der OP-TEE-Entwickler sagt, dass der Timer-Interrupt von NW bedient wird, sobald er wieder in NW wechselt.
Ich habe den Quellcode des IRQ-Handlers von SW gelesen. Ich dachte, der SW-Handler würde den VBAR von NW finden und die Rückkehradresse zum NW-Handler ändern. Ich habe jedoch keinen solchen Code gefunden.
Ich habe einige Beiträge auf dieser Website TrustZone: Scheduling processes from the two worlds und ARM TrustZone - Behaviour of the scheduler in Secure and Non-Secure OS gelesen. Letzteres ist meinem ähnlich, aber die Antwort sagt nicht, was in der OP-TEE-Implementierung passiert.
Also frage ich mich, was ist die Magie, die den Timer-Interrupt wieder nach der Rückkehr nach NW behandelt werden, weil es Service einmal in SW gewesen ist.
Ich bin nicht vertraut mit OP-TEE. Und das ist meine erste Frage. Bitte vergib mir, wenn es nicht klar oder dumm ist. Vielen Dank.
Haben Sie eine Lösung für Ihre Frage gefunden, wenn ja, könnten Sie sie teilen? – shunty