# tee_tee_os_kernel
**Repository Path**: abchris/tee_tee_os_kernel
## Basic Information
- **Project Name**: tee_tee_os_kernel
- **Description**: No description available
- **Primary Language**: Unknown
- **License**: MulanPSL-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 14
- **Created**: 2025-01-13
- **Last Updated**: 2025-01-17
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# tee_tee_os_kernel 仓介绍 #
tee_tee_os_kernel 部件主要包含 TEE 的内核部分,采用微内核架构设计。
### 一、tee_tee_os_kernel 部件模块划分 ###
子模块名称 |
模块简介 |
kernel/ipc | 进程间通信模块 |
kernel/irq | 中断处理模块 |
kernel/mm | 内存管理模块 |
kernel/object | 内核对象管理 |
kernel/sched | 线程调度模块 |
user/chcore-libs/sys-libs/libohtee | 框架所依赖的库函数 |
user/system-services/system-servers/procmgr | 负责进程管理,拥有所有进程的信息 |
user/system-services/system-servers/fs_base | 虚拟文件系统模块 |
user/system-services/system-servers/fsm | 文件系统管理模块 |
user/system-services/system-servers/tmpfs | 内存文件系统模块 |
user/system-services/system-servers/chanmgr | 管理 channel 的命名、索引及分发 |
### 二、tee_tee_os_kernel 部件代码目录结构 ###
```
base/tee/tee_os_kernel
├── kernel
│ ├── arch
│ ├── ipc
│ ├── irq
│ ├── lib
│ ├── mm
│ ├── object
│ ├── sched
│ └── syscall
├── tool
│ └── read_procmgr_elf_tool
├── user/chcore-libs
│ ├── sys-interfaces/chcore-internal
│ └── sys-libs/libohtee
└── user/system-services/system-servers
├── chanmgr
├── fs_base
├── fsm
├── procmgr
└── tmpfs
```
### 三、tee_tee_os_kernel 构建指导 ###
1. TEEOS内核代码位置:`base/tee/tee_os_kernel`
2. TEEOS框架代码位置:`base/tee/tee_os_framework`
3. 切换目录至OpenHarmony源码根目录,输入以下指令进入Docker构建环境
```Bash
docker run -it --rm -v $(pwd):$(pwd) -w $(pwd) swr.cn-south-1.myhuaweicloud.com/openharmony-docker/docker_oh_full:3.2 bash
```
4. 输入以下指令构建杨帆开发板TEEOS
```Bash
./build.sh --product-name rk3568 --build-target tee --ccache
```
5. 构建产物为TEEOS镜像:`base/tee/tee_os_kernel/kernel/bl32.bin`
### 编译uboot.img ###
根据以下步骤编译uboot.img
- 克隆`https://gitee.com/suwanghw/device_rockchip_third_party_rkbin`,其中包含bl31.elf
- 克隆`https://gitee.com/suwanghw/device_rockchip_third_party_uboot`,其中包含u-boot
- 将rkbin和u-boot放在同一目录下, 修改rkbin/RKTRUST/RK3568TRUST.ini中BL32_OPTION下的PATH指向bl32.bin
- 其中,u-boot/make.sh中有以下内容,搜索RK3568TRUST.ini中包含_bl32_的文件名,如果BL32的文件名是bl32.bin的话,需要修改以下匹配规则
```Bash
BL32_BIN=`sed -n '/_bl32_/s/PATH=//p' ${INI} | tr -d '\r'`
```
- 修改u-boot/configs/rk3568_defconfig,关闭OPTEE驱动,增大镜像大小到6M。
```Bash
- CONFIG_OPTEE_CLIENT=y
+ CONFIG_SPL_FIT_IMAGE_KB=6144
+ CONFIG_SPL_FIT_IMAGE_MULTIPLE=1
```
>**注意:**
>烧录的时候需要修改分区表parameter.txt,和uboot.img的镜像大小一致
- 修改make.sh中编译工具链路径,使其指向正确的路径(可以使用openharmony工程prebuilts目录下的工具链)
```Bash
-CROSS_COMPILE_ARM32=../prebuilts/gcc/linux-x86/arm/gcc-linaro-6.3.1-2017.05-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-
-CROSS_COMPILE_ARM64=../prebuilts/gcc/linux-x86/aarch64/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-
```
- 在u-boot目录下执行./make.sh rk3568,最终会在u-boot目录中生成uboot.img