OP-TEE中安全驱动的框架

op-tee中的安全驱动是op-tee操作安全设备的载体。
ta通过调用某个安全驱动的接口就可实现对特定安全设备的操作。安全驱动在op-tee中的软件框架如图22-2所示。
(其实这里,你要搞清楚linux kernel与驱动的关系,那真的还是蛮简单好理解的。但是我不知道~嘤嘤嘤)
系统服务层并非必需的,主要是为方便管理和上层使用。例如op-tee提供了各种各样的密码学算法,每一种算法的实现可通过不同的硬件引擎来完成。
为统一管理,可将这些硬件引擎驱动提供的操作接口统一集成到一个系统服务中,而上层用户只需调用系统服务暴露的接口就可实现对硬件引擎的调用。(可能是通过输入的参数进行分发)
下面展开讲讲这个框架的细节。
系统服务层
系统服务层在op-tee启动过程中由initcall段的代码进行初始化和启动,一个系统服务的初始化函数则是通过使用service_init宏来进行定义并在编译时链接到op-tee的镜像文件中。
在编译op-tee时,该初始化函数将被保存到op-tee镜像文件的initcall段中。
至于系统服务的初始化函数所要执行的内容则由开发者自行决定,一般是在系统服务的初始化函数中进行该服务的配置、状态量的初始化以及系统服务提供给上层调用的操作接口变量的初始化,系统服务提供的结构体变量会包含用于实现具体功能的函数指针变量,这些函数指针变量指向的函数就是安全驱动提供给ta调用的操作接口。
驱动层
op-tee启动过程中会执行各安全驱动的初始化,驱动的初始化函数是在op-tee执行initcall段中的内容时被调用的,在op-tee中通过使用driver_init宏来告诉编译器,在编译时将driver_init宏传入的函数作为某个驱动的入口函数保存在镜像文件的initcall段中。
安全驱动的初始化主要用来完成安全设备的寄存器的配置以及私有数据的初始化。
如果某个安全驱动需要系统服务的配合,则还需要将驱动提供的操作接口连接到系统服务中的操作接口变量中。
若该驱动不需以系统服务的方式向上层提供操作接口,则不用将对应接口暴露给系统服务,而是由ta通过系统调用的方式直接调用安全驱动的接口来操作安全设备。
driver_init service_init
驱动文件在源代码中的位置
安全驱动需要被编译到op-tee镜像文件中,op-tee中有专门的目录来存放驱动和系统服务的源代码。
将驱动编译到op-tee镜像文件之前还需修改对应的sub.mk文件。

如何优化C语言:选择合适的算法和数据结构
大数据分析停滞不前 信任问题面临大考
数字式长延时电路图
伺服电机常见的十大故障
SMT贴片机如何选择
OP-TEE中安全驱动的框架
程序员为什么要学习英语 又如何学习
【2022汽车季】思博伦第二届汽车用户大会及智能网联汽车测试论坛-邀请函
TWS真无线蓝牙耳机火爆市场 正在取代传统有线耳机
常见电线电缆电阻的检测方法盘点
主动红外入侵探测器的安装环境_主动红外探测器的安装注意事项
联通上线5G升级包 9.9元即可畅享5G流量
嵌入式状态监测与故障诊断装置设计
智能硬件创新设计行业走势及战略布局
基于LINUX的嵌入式浏览器的设计与实现
华为史上最好看手机今天发布 叫板iPhone7
带鱼屏+升降镜头?颜值超高,但看到处理器?再见?
适用于传输少量数据的蓝牙低能耗技术
IBM助力客户斩获多项IDC中国未来企业大奖
三种write mode,你真的理解吗?