You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

arm64架构下ATF内存预留及Linux内存分配相关技术咨询

针对ARM可信固件(ATF)内存相关问题的解答

1. 为何ATF需要预留128 MiB内存?

ATF的内存预留规模通常和以下核心因素相关:

  • 可信执行环境(TEE)需求:如果平台集成了OP-TEE这类TEE组件,TEE的内核、安全应用运行空间、上下文数据缓冲区都需要独立的安全内存分区,这部分可能占用几十到上百MiB。
  • 厂商冗余设计:部分硬件厂商会预留较大的安全内存区域,用于兼容后续固件升级、新增安全功能,避免因内存不足限制平台扩展。
  • 硬件安全模块占用:加密引擎、安全存储等专属硬件外设的缓冲区,也会被纳入ATF的预留内存范围。
    另外你之前推测是U-Boot预留,实际更可能是ATF的编译配置(比如BL31_MEM_BASE、BL31_MEM_SIZE这类参数)定义了安全内存范围,U-Boot只是将该布局传递给Linux。

2. ATF是否始终与Linux并行运行?

不是。ATF的核心运行阶段在系统启动初期:负责初始化安全硬件、设置EL3特权级环境、加载并启动后续镜像(如TEE的BL32、Linux所在的BL33)。当Linux启动完成后,ATF大部分时间处于Idle状态,只有当Linux通过SMC(安全监控调用)指令触发安全操作时(比如访问加密外设、调用TEE服务),ATF才会从EL3唤醒处理请求,完成后立即回到Idle,并非全程和Linux并行运行。

3. arm64架构下ATF的理想内存分区是多少?

没有统一的“理想值”,完全取决于平台的安全需求:

  • 基础无TEE场景:仅运行ATF核心组件(BL1、BL2、BL31),预留内存通常在1-16 MiB即可,包含固件代码、栈、上下文缓冲区。
  • 集成TEE场景:如果需要支持安全应用、加密服务,预留内存一般在32-128 MiB,具体大小取决于TEE的功能复杂度和安全应用的内存需求。
  • 厂商定制场景:若平台有特殊安全外设或定制化安全服务,需根据实际硬件和功能需求调整——比如部分工业嵌入式设备可能仅预留32 MiB,而高端消费电子可能预留128 MiB甚至更多。

内容的提问来源于stack exchange,提问作者preetam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 09:32:28