optee的RPC设计(模型)详解
生活随笔
收集整理的這篇文章主要介紹了
optee的RPC设计(模型)详解
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
快速鏈接:
.
👉👉👉 個人博客筆記導讀目錄(全部) 👈👈👈
文章目錄
- 1、REE和TEE正向調用/反向調用的流程圖
- 2、REE到TEE的正向調用
- 3、TEE到REE的反向調用
1、REE和TEE正向調用/反向調用的流程圖
開機之后,啟動tee-supplicant后,執行: a b
- 一次完整的TEE調用流程: 1 2 3 4 5
- 一次完整的RPC流程 : 6 7 b 8 c 2
- 一次完整的TEE調用流程(在TEE中又調用了RPC): 1 2 3 4 5 6 7 b 8 c 2 3 4 5
2、REE到TEE的正向調用
- ① APP調用CA,CA調用libteec.so,libteec.so調用/dev/tee0節點,進入驅動的ioctl函數
- ② ioctl函數中調用optee_do_call_with_arg(),該函數調用smc將CPU通過ATF切換到了optee
- ③④ optee處理完任務后,調用smc通過ATF返回到驅動中的ioctl(返回到②中剛才切出去的地方)
- ⑤ ioctl返回到應用程序
3、TEE到REE的反向調用
- ⑥ optee中調用thread_rpc_cmd函數,然后調用到smc通過ATF將cpu切回linux(回到之前切TEE的點,也就是optee_do_call_with_arg()函數中)
- ⑦ optee_do_call_with_arg()函數中判斷,如果是RPC命令切回來的,則走RPC流程,也就是complete(&reqs_c)
- b ⑧ 之前的tee-supplicant進程一直卡在optee_supp_recv()中,等待完成量,在步驟⑦完成量釋放,程序繼續往下執行,返回到tee-supplicant
- c tee-supplicant讀取到TEE返回的命令后,解析命令,然后進行相應的處理(相應的處理可能是userspace中完成,也可能再通過ioctl到驅動中完成),干完活之后再調用ioctl,調用complete(&req->c)通知optee_do_call_with_arg()程序,再切回TEE
- ② optee_do_call_with_arg()程序,切回TEE
總結
以上是生活随笔為你收集整理的optee的RPC设计(模型)详解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: optee中User TA的加载/验签和
- 下一篇: optee的RPC流程的代码详解