社区的各位好友,你们好!
刚接触optee,对其不是很了解。想问下:在optee_os源码中lib/libutee下实现了许多GP TEE的规范接口。这些API如TEE_WriteObjectData通过调用系统服务函数utee_storage_obj_write转到内核层中的syscall_storage_obj_write来实现的。这中间是怎么跳转的,即utee_storage_obj_write是怎么连接到syscall_storage_obj_write的?以这个API为例帮忙分析下这些API从用户层被调用具体是怎么一步步实现其功能的?
谢谢
Hi Cwb,
通过系统调用(SVC)指令,切换到特权模式,以AArch32为例,请参考下面的链接
optee_os/utee_syscalls_asm.S at master · OP-TEE/optee_os · GitHub
optee_os/utee_syscalls.h at master · OP-TEE/optee_os · GitHub
optee_os/utee_syscalls_a32.S at master · OP-TEE/optee_os · GitHub
thread_svc_handler
optee_os/thread_a32.S at master · OP-TEE/optee_os · GitHub
tee_svc_handler
optee_os/arch_svc.c at 194d0ae8f7a20e06bd722f43ef5892638b2d249a · OP-TEE/optee_os · GitHub
跟踪下代码,希望对你有用
谢谢,我试下
Hello ethanzhang
我是在ubuntu下使用qemu模拟器来编译运行OP-TEE的,这个要跟踪代码,用什么工具呀,麻烦推荐下?
linux可执行程序->调用GP TEE接口函数->调用ioctl进入linux内核驱动->产生svc中断->EL3中断向量表->跳转至OPTEE->根据传递的参数选择具体的系统服务函数。请配合linux可执行程序,linux内核驱动,linux守护进程,OPTEE,TA来看;搞懂基本流程后再看ATF
arm-trusted-firmware负责初始化硬件,加载OPTEE,LINUX的,涉及底层知识,先不要看
linux非安全世界操作系统
optee_os安全世界操作系统
optee_test包含CA,TA应用
optee_client包含linux守护进程,负责接受OPTEE的命令并处理,与安全存储相关
edk2负责加载LINUX,类似与UBOOT
busybox,gen_rootfs: linux文件系统
以前的OPTEE还有optee_linuxdriver,现在已经默认集成到linux内核去了
好的,谢谢teelook
http://blog.csdn.net/shuaifengyun/article/details/73326870
这个博客,再 结合 optee_os 源码,可以很好的回答你的问题。