Hafnium简介和构建

安全之安全(security²)博客目录导读

目录

一、Hafnium简介

二、Hafnium构建

2.1.1 先决条件

2.1.1.1 构建Host

2.1.1.2 工具链

2.1.1.3 依赖

2.1.1.4 获取源码

2.1.2 构建


一、Hafnium简介

        可信固件为Armv8-A、Armv9-A和Armv8-M提供了安全软件的参考实现。它为SoC开发人员和OEM提供了符合相关Arm规范的参考可信代码库。可信固件的代码是Arm规范的首选实现,允许快速轻松地移植到现代芯片和平台。这构成了应用程序处理器上的可信执行环境(TEE)或微控制器的安全处理环境(SPE)的基础。

        ARM可用的可信固件项目如下图9宫格所示,Hafnium为其中之一。
Hafnium简介和构建_第1张图片

        用于实现Armv8.4-A Secure-EL2扩展的系统的参考安全分区管理器(SPM)。它允许多个隔离的安全分区(sp)在Secure-EL1上运行。贡献指南可以在文档中找到。请订阅项目电子邮件列表以参与开发讨论。Hafnium和Secure-EL2也是TF-A技术论坛讨论的主题。

文档:Trusted Firmware-A Documentation — Trusted Firmware-A 2.9.0 documentation

代码:trusted-firmware-a.git - Trusted Firmware for A profile Arm CPUs

二、Hafnium构建

2.1.1 先决条件

2.1.1.1 构建Host

        建议使用相对较新的Linux发行版。CI运行是使用Ubuntu 22.04 LTS(64位)完成的。

2.1.1.2 工具链

        建议使用以下工具链构建Hafninum和测试基础架构:

        对于x86_64 Ubuntu host,

https://github.com/llvm/llvm-project/releases/download/llvmorg-15.0.6/clang+llvm-15.0.6-x86_64-linux-gnu-ubuntu-18.04.tar.xz

        对于AArch64 Ubuntu host,

https://github.com/llvm/llvm-project/releases/download/llvmorg-15.0.6/clang+llvm-15.0.6-aarch64-linux-gnu.tar.xz

【注意】

        不支持使用安装在主机上的本地工具链(例如/usr/bin/clang)。

        使用大于或明显小于指定的工具链版本不能保证工作。

2.1.1.3 依赖

        如果你使用的是推荐的Ubuntu发行版,那么你可以用下面的命令安装所需的软件包:

sudo apt install make libssl-dev flex bison python3 python3-serial

python3-pip device-tree-compiler

pip3 install fdt

2.1.1.4 获取源码

        Hafnium源代码保存在托管于trustedfirmware.org的Git库中。要从服务器克隆这个库可以在shell中运行以下命令:

git clone --recurse-submodules https://git.trustedfirmware.org/hafnium/hafnium.git

        为了导入用于在提交消息中添加Change-Id的gerrit钩子(hooks),建议使用:

git clone --recurse-submodules https://git.trustedfirmware.org/hafnium/hafnium.git && { cd hafnium && f="$(git rev-parse --git-dir)"; curl -Lo "$f/hooks/commit-msg" https://review.trustedfirmware.org/tools/hooks/commit-msg && { chmod +x "$f/hooks/commit-msg"; git submodule --quiet foreach "cp \"\$toplevel/$f/hooks/commit-msg\" \"\$toplevel/$f/modules/\$path/hooks/commit-msg\""; }; }

2.1.2 构建

        在构建之前,应将PATH环境变量调整为LLVM/clang目录,例如:

PATH=/clang+llvm-15.0.6-x86_64-linux-gnu-ubuntu-18.04/bin:$PATH

        默认情况下,Hafnium SPMC是用clang为几个目标平台构建的,并附带测试。在Hafnium顶层目录中,只需输入:

make

        生成的FVP镜像位于out/reference/secure_aem_v8a_fvp_vhe_clang/hafnium.bin中。

        可以使用ENABLE_ASSERTIONS make变量设置最终构建中断言的存在,默认情况下该变量被设置为true,这意味着构建中包含断言。

make ENABLE_ASSERTIONS=

        项目目录中的每个项目指定构建的根配置。添加项目是将支持扩展到新平台的首选方法。要构建的目标项目由project make变量选择,默认项目为“reference”。

make PROJECT=

        如果你想改变make变量的值,你可能需要先使用:

make clobber

        那么args.gn文件将使用新值重新生成。

你可能感兴趣的:(1024程序员节,Hafnium,ARM,S-EL2,构建,SPM,SPMC)