快速链接:
.
👉👉👉 [专题目录]–optee精选系列 👈👈👈
思考:在哪里配置安全中断的? 在哪里配置中断的G0、G1NS、G1S分组的?
1、optee
在optee中有一段默认的配置,将0-7配置成G1NS,8-15配置成G1S,16-31配置成G1NS,32之后的也全部都是G1NS

但是这段配置不一定会被调用,gic_init()由平台的main_init_gic()函数调用,在大多数的场景下,gic_init()是不会被调用的。
如下也只是列举了plat-rockchip平台对gic_init()的调用。

不过呢,在optee中新增一个中断时,会将该中断号配置成G1S

2、ATF
ATF软件中定义了三种类型的中断
- INTR_TYPE_S_EL1 //给secure EL1使用的中断,会设置成G1S
- INTR_TYPE_EL3 //给EL3使用的中断,会设置成G0
- INTR_TYPE_NS //给non-secure EL1使用的中断,会设置成G1NS
ATF中提供了一个API,可以设置中断的类型
plat_ic_set_interrupt_type(map->intr, INTR_TYPE_EL3);
(trusted-firmware-a/plat/common/plat_gicv3.c)
void plat_ic_set_interrupt_type(unsigned int id, unsigned int type)
{
gicv3_set_interrupt_type(id, plat_my_core_pos(), type);
}
gicv3_set_interrupt_type()的原型如下所示:

本文探讨了Optee和ATF中的中断管理,包括如何在Optee中默认配置中断组别,以及ATF如何根据不同安全级别设置中断类型。重点介绍了G1NS和G1S组的使用和中断类型设置的API调用。
851

被折叠的 条评论
为什么被折叠?



