aarch64-unknown-teeos

层级: 3

TEEOS 操作系统的目标。

TEEOS 是一种在 TrustZone 中运行的微型操作系统,用于可信/安全应用程序。TEEOS 的内核是鸿蒙/ChCore 微内核。TEEOS 的 libc 是 musl 的一部分。它非常小,以至于 TEEOS 中的应用程序没有 RwLock、网络、stdin 和文件系统。

一些缩写

缩写完整文本描述
TEE可信执行环境ARM TrustZone 将系统划分为两个世界/模式 - 安全世界/模式和普通世界/模式。TEE 位于安全世界/模式中。
REE富执行环境普通世界。例如,Android 手机的 Linux 位于 REE 侧。
TA可信应用程序在 TEE 侧系统中运行的应用程序。
CA客户端应用程序在 REE 侧系统中运行的进程。

TEEOS 是正在开发中的开源项目。 更多信息

目标维护者

  • Petrochenkov Vadim
  • Sword-Destiny

设置

我们使用 OpenHarmony SDK 用于 TEEOS。

OpenHarmony SDK 目前不支持直接编译 Rust,因此需要进行一些设置。

首先,您必须从 此页面 获取 OpenHarmony SDK。选择您正在开发的 OpenHarmony 版本,并下载“标准系统公共 SDK 包”。

创建以下包装 OpenHarmony SDK 中 Clang 的 shell 脚本

aarch64-unknown-teeos-clang.sh

#!/bin/sh
exec /path/to/ohos-sdk/linux/native/llvm/bin/clang \
  -target aarch64-linux-gnu \
  "$@"

aarch64-unknown-teeos-clang++.sh

#!/bin/sh
exec /path/to/ohos-sdk/linux/native/llvm/bin/clang++ \
  -target aarch64-linux-gnu \
  "$@"

构建目标

要构建 Rust 工具链,请创建一个包含以下内容的 config.toml 文件

profile = "compiler"
change-id = 115898

[build]
sanitizers = true
profiler = true
target = ["x86_64-unknown-linux-gnu", "aarch64-unknown-teeos"]
submodules = false
compiler-docs = false
extended = true

[install]
bindir = "bin"
libdir = "lib"

[target.aarch64-unknown-teeos]
cc = "/path/to/scripts/aarch64-unknown-teeos-clang.sh"
cxx = "/path/to/scripts/aarch64-unknown-teeos-clang.sh"
linker = "/path/to/scripts/aarch64-unknown-teeos-clang.sh"
ar = "/path/to/ohos-sdk/linux/native/llvm/bin/llvm-ar"
ranlib = "/path/to/ohos-sdk/linux/native/llvm/bin/llvm-ranlib"
llvm-config = "/path/to/ohos-sdk/linux/native/llvm/bin/llvm-config"
note: You need to insert "/usr/include/x86_64-linux-gnu/" into environment variable: $C_INCLUDE_PATH
 if some header files like bits/xxx.h not found.
note: You can install gcc-aarch64-linux-gnu,g++-aarch64-linux-gnu if some files like crti.o not found.
note: You may need to install libc6-dev-i386 libc6-dev if "gnu/stubs-32.h" not found.

构建 Rust 程序

Rust 尚未为此目标提供预编译的工件。要为此目标编译,您需要启用目标构建 Rust(请参阅上面的“构建目标”),或者使用 build-std 或类似方法构建自己的 core 副本。

您需要在 ~/.cargo/config 中配置要使用的链接器

[target.aarch64-unknown-teeos]
linker = "/path/to/aarch64-unknown-teeos-clang.sh" # or aarch64-linux-gnu-ld

测试

现在无法运行 Rust 测试套件。

有关如何测试 CA/TA 的更多信息。 请参阅此处