您的位置:首页 > 运维架构

3.OP-TEE+qemu的编译--工程编译target依赖关系

2017-05-10 13:06 169 查看
  完成了自主添加CA和TA并成功运行之后,始终有一个疑问就是,整个工程是如何编译出来的,linux kernel在什么时候被编译,OP-TEE OS image是怎么编译出来的,TA和CA是如何编译出来的等等。查看工程的Makefile和相关的mk文件以及其他编译相关的文件终于弄明白了,本文将大致讲述使用qemu+OP-TEE的编译过程。

  OP-TEE的编译是从build/目录下的makefile开始的,然后按照target的依赖关系进行编译。完整的target依赖关系如下:



展开之后,整个工程的大致依赖关系如下:



整个工程的编译始于build目录中的Makefile或者对应板级的xxx.mk文件。本文以qemu.mk为例,下面说明上述主要目标的作用

qemu目标会切换到qemu目录,并获取qemu的配置文件,然后执行make命令来编译qemu

soce-term目标会编译soc-term目录,生成一个soc-term的binary

bios-qemu目标依赖于update_rootfs和optee-os,完成之后会调用bios-qemu-comm宏定义的指令,该宏会编译bios_qemu_tz_arm目录,该目录编译完成之后,会生成启动是需要的bios镜像

optee-os-common目标将编译optee_os目录,该目录编译完成之后将会生成tee.bin以及其他的lib库文件

busybox目标将编译linux目录和busybox目录,生成linux kernel image和制作rootfs需要的相关文件

filelist-tee目标将生成tee功能相关的文件需要挂载到rootfs中的映射图,然后与系统的其他文件的挂载映射一起被保存到了filelist-final.txt文件中,用于生成filesystem.cpio.gz文件。

update_rootfs-common目标依赖于busybox和filelist-tee目标,上述两个target编译完成之后,将会切换到gen_rootfs目录中,调用gen_init_cpio命令生成在启动是需要使用的filesystem.cpio.gz文件

helloworld目标,该目标分为两个部分:TA部分和CA部分,编译完成之后,会生成对应的TA image和CA binary

optee-client目标,该目标将对optee_client目录进行编译,生成一系列的库文件和binary,启动库文件提供了optee在linux端的接口,将被CA调用,tee-supplicant目标将会编译生成一个tee_supplicant的可执行文件,该执行文件提供了optee_os访问文件系统,加载具体的TA image的功能

xtest目标,该目标将会编译optee_test目录,生成在xtest集合中使用到的TA image和xtest可执行文件。

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  OP-TEE makefile qemu