linaro optee os官网的几张架构图

第一张: 第二张 第三张

2017-07-21 17:32:27

阅读数:1033

评论数:0

optee 中静态memory的管理

optee os中的静态memory都存在static_memory_map 这个数组中,这里的#define MAX_MMAP_REGIONS    13 所以这个数组最大保存14个静态memory static struct tee_mmap_region static_memory_ma...

2017-07-14 15:57:58

阅读数:500

评论数:0

对TA 镜像文件的加密

optee中通过scripts中的sign.py 来对tee签名 # def get_args():     from argparse import ArgumentParser     parser = ArgumentParser()     parser.add_argu...

2017-07-14 14:55:21

阅读数:257

评论数:0

optee os 中的系统调用

当在TA 中发生系统调用时,其入口函数在optee_os-master/core/arch/arm/kernel/thread_a64.S LOCAL_FUNC el0_svc , :      /* get pointer to current thread context in x0 *...

2017-07-04 16:48:41

阅读数:642

评论数:0

static TA和user TA

user space发送的open session命令最终是在tee_entry_std中处理的 void tee_entry_std(struct thread_smc_args *smc_args) {     /* Enable foreign interrupts for STD...

2017-06-27 15:27:57

阅读数:860

评论数:0

离开和进入trusted os的过程

从下图可以很清楚的可以看到normal world 通过smc进入secure monitor,再到trust os再离开的过程,分别牵扯到save/restore 两种context的过程,两种context 分别是non-secure 和secure context 可以看到在通过smc进入...

2017-06-24 15:57:06

阅读数:600

评论数:1

tee-supplicant的作用是帮忙optee_linuxdriver 从userspace访问rishos的文件系统中的资源

tee-supplicant 是运行在user space,主要是optee_linuxdriver通过ioctl告诉上层,让其访问rich os文件系统中的资源。从其makefile中可以看到最终build出的可执行档就是tee-supplicant 包换的源文件:tee_supplicant...

2017-06-22 16:58:12

阅读数:908

评论数:0

libteec 3

TEEC_RegisterSharedMemory 用于在TA和CA之前注册一个共享内存 TEEC_Result TEEC_RegisterSharedMemory(TEEC_Context *ctx, TEEC_SharedMemory *shm) {     int fd;     s...

2017-06-21 15:20:06

阅读数:580

评论数:1

libteec 2

session表示TA和CA之间的联系,从hello world程序中可以知道TA是有特定的UUID制定的。 TEEC_Result TEEC_OpenSession(TEEC_Context *ctx, TEEC_Session *session,             const TEE...

2017-06-20 15:53:55

阅读数:344

评论数:0

libteec 1

libteec 是OP-TEE 提供给用户在linux userspace层面调用的接口实现,从makefile中可以看到libtees是被build成libteec.so,其源文件有两个tee_client_api.c,teec_trace.c.其中主要的接口在tee_client_api.c中...

2017-06-20 14:57:30

阅读数:369

评论数:0

optee中的fiq的执行

在optee的初始化时会调用 thread_init_per_cpu void thread_init_per_cpu(void)  {      size_t pos = get_core_pos();      struct thread_core_local *l = thread_...

2017-06-19 16:48:48

阅读数:490

评论数:0

optee 的helloworld ta

linaro有提供一个optee的hello world 程序,路径如下: https://github.com/linaro-swg/hello_world/blob/master/host/main.c 在执行这个main 程序是需要制定uuid,这样才能找到对应的TA程序 #inclu...

2017-06-19 15:05:53

阅读数:507

评论数:0

optee os中的console driver

optee 中可以有自己的console来打印log,每个厂商必须实现自己的console driver,这里以D02为例 其code在core/arch/arm/plat-d02/main.c 中,所有注册给optee的console 必须调用register_serial_console,这...

2017-06-15 16:37:02

阅读数:300

评论数:0

optee的同步机制总结

optee有三种同步机制分别是spin-lock/mutex/condvar 1:spin-lock举例如下: spin-lock 是一个unsigned int类型的变量,总共有三个函数 | Function | Purpose | |----------|---------| | `...

2017-06-12 10:35:49

阅读数:349

评论数:0

std_smc 调用流程

FUNC thread_std_smc_entry , :      /* pass x0-x7 in a struct thread_smc_args */      sub sp, sp, #THREAD_SMC_ARGS_SIZE      store_xregs sp, THREAD_SM...

2017-06-09 16:16:25

阅读数:371

评论数:0

fast_smc调用的流程

当在secure monitor下发生中断是,cpu切换到secure worid,执行vector table optee/optee_os-master/core/arch/arm/kernel/thread_a64.S  FUNC thread_vector_table , :    ...

2017-06-09 15:23:48

阅读数:356

评论数:0

optee thread的初始化

optee os 是支持thread的,thread的初始化主要在下面两个函数中进行 init_runtime->thread_init_boot_thread void thread_init_boot_thread(void) { //得到这个cpu id对应的thread_co...

2017-06-09 10:20:09

阅读数:579

评论数:0

optee的generic_boot_init_primary 分析

generic_boot_init_primary是optee os初始化的主要函数 #if defined(CFG_WITH_ARM_TRUSTED_FW) struct thread_vector_table * generic_boot_init_primary(unsigned lo...

2017-06-08 11:27:30

阅读数:417

评论数:0

optee os 的启动和初始化

optee的ld文件在如下路径os/core/arch/arm/kernel/kern.ld.S ENTRY(_start) SECTIONS {     . = CFG_TEE_LOAD_ADDR;     __text_start = .;     /*      * Memory bet...

2017-06-01 10:35:04

阅读数:1035

评论数:0

提示
确定要删除当前文章?
取消 删除
关闭
关闭