我成功地在QEMU上运行OP-TEE并想弄清楚调度程序是如何工作的。 我修改了源代码,在进入安全世界并返回正常世界之前,获取变量jiffies。这是一段代码。切换到安全世界后,OP-TEE的Linux调度程序如何工作
i=jiffies;
tee_smc_call(¶m);
j=jiffies
这里tee_smc_call是asm函数发出SMC电话。如果定时器中断导致SW离开,我发现j将比1更大1 i。我认为这意味着定时器中断在某处被处理。如果我的推论不对,请纠正我。
我去链接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实施中会发生什么。
所以我想知道什么是使定时器中断返回到NW后再次处理的魔术,因为它已经在SW服务一次。
我对OP-TEE并不熟悉。这是我的第一个问题。请原谅我,如果它不清楚或愚蠢。谢谢。
您是否为您的问题获得了解决方案,如果可以的话,您可以分享它吗? – shunty