OP-TEE_driver(REE侧)
前面讲了TA和CA的通信,CA的建立,GP。知道了这个CA依赖GP定义的Client接口。TA通过tee-supplicant与REE进行资源操作,现在我们来看看这里面的TEE-driver。
OP-TEE驱动是REE侧与TEE侧之间进行交互的重要通道,在REE侧的CA接口以及RPC请求的接收和结果的返回最终都会被发送到驱动中,由驱动对数据做进一步的处理。
OP-TEE驱动通过解析传入的参数,重新组合数据,将需要被传入到TEE侧的数据载入到共享内存中,触发安全监控模式调用(smc)进入到Monitor模式或EL3中将数据发送给TEE。
1、OP-TEE_driver模块的编译保存
OP-TEE的驱动通过subsys_initcall和module_init宏来告知系统在初始化阶段的什么时候去加载OP-TEE驱动。
subsys_initcall定义在linux/include/init.h文件中,内容如下:
#define __define_initcall(fn, id) \
static initcall_t __initcall_##fn##id __used \
__attribute__((__section__(".initcall" #id ".init"))) = fn;
#define core_initcall(fn)