上文我们创建好了通道,现在就是操作,怎么操作TA呢?
REE侧的CA执行创建会话操作成功后,CA就可使用获取到的会话ID和命令ID调用TEEC_InvokeCommand接口来让TA执行特定的命令。
在CA中调用TEEC_InvokeCommand接口时,该函数会将会话ID、命令ID,以及需要传递给TA的参数信息通过ioctl的系统调用发送到OP-TEE的驱动中,OP-TEE驱动会调用optee_invoke_func函数将需要传递给TA的参数信息保存在共享内存中,并触发安全监控模式调用(smc)切换到Monitor模式(ARMv7)或EL3(ARMv8)中进行安全世界状态的处理。
调用TA命令触发的安全监控模式调用最终会被作为标准安全监控模式调用进行解析,并建立一个专门的线程进入thread_std_smc_entry函数去执行,线程运行到tee_entry_std函数时会对安全监控模式调用(smc)进行判定,并进入调用TA命令的分支。调用TA命令的操作在OP-TEE中的执行流程如图13-5所示。(这里如果你知道学习过atf的的smc调用就很好理解。)
根据会话ID获取到已经创建的会话内容后,OP-TEE会调