您好!
刚接触optee,对其不是很了解。想问下:我用Qemu模拟器来运行op-tee,我尝试将实现的GP-TEE规范的API如TEE_WriteObjectData中所调用的utee_storage_obj_write改为 syscall_storage_obj_write,让该函数不需要经过系统调用而直接转到内核层调用 syscall_storage_obj_write。于是我更改了相关的makefile文件,让编译通过,使用对应的测试命令来看看结果,发现我把修改后的TEE_WriteObjectData直接调用的syscall_storage_obj_write注释掉,编译运行相同的测试命令,结果和没有注释掉的结果一样,按理不应该,系统不应该再执行syscall_storage_obj_write呀,这个怎么解释呀?
还出现一个问题:我这样修改后,utee_storage_obj_write没有被调用,对应的系统调用也不会执行,为啥我把syscall_storage_obj_write名称改了,并将arch_svc.c中的tee_svc_syscall_table中的SYSCALL_ENTRY(syscall_storage_obj_write)去除,编译出错提示未发现syscall_storage_obj_write的定义,这个是为什么呀?
" 对于使用qemu模拟器的清除命令clean,具体不知是哪个,查看相关的makefile文件没发现呀?不知道你知道不?"
=》 不好意思,之前没有说明白, 我的意思是最早你出现编译出错“编译出错提示未发现syscall_storage_obj_write的定义”, 在修改完代码后 把之前build好的临时obj文件删除后,再编译。
"麻烦能不能在移植这个规范怎么入手,给个意见"
=> 如果你要参考optee的实现,建议对optee的软件架构和实现有些理解,有一篇Linaro slide推荐https://s3.amazonaws.com/connect.linaro.org/bkk16/Presentations/Monday/BKK16-110.pdf
https://s3.amazonaws.com/connect.linaro.org/bkk16/Presentations/Monday/BKK16-110.pdf
然后结合其他的 SecureOS的实现,来对应移植。
另外,关于qemu模拟器,secure world应该不支持。除了ARMv8的开发板外,我们一般用 Fixed Virtual Platforms - ARM ,Foundation model是免费的。
希望对你有帮助。
Hi Yuping Luo
非常感谢你给的帮助。
另外,qemu不是可以运行op-tee吗,怎么说他不支持secure world呢?
qemu对trust-zone,ARMv8.0 架构的支持也是在不断增强的。具体进展,有些不清楚了。
刚才网上搜了一下,感觉对secure world,目前是支持的。但是对ARMv8.0的整个支持,不一定完善。你可以多实践一下。下面是两个链接:
ARM TrustZone in QEMU
OPTEE with Android on QEMU · Issue #605 · OP-TEE/optee_os · GitHub
好的,我去看看。谢谢啦