ATF官方文档翻译(十四):ATF固件设计(Firmware Design)-单独内存页上的隔离代码和只读数据

单独内存页上的隔离代码和只读数据

在Armv8-A VMSA中,转换表条目包括定义目标内存区域属性的字段,例如其访问权限。翻译表条目可以寻址的最小内存单位是内存页。

因此,如果软件需要在两个内存区域上设置不同的权限,则需要使用不同的内存页来映射它们。

每个BL图像的默认内存布局如下:

在这里插入图片描述
在这里插入图片描述


注意:异常向量的2KB对齐是体系结构要求。


读写数据从一个新的内存页开始,以便可以使用读写权限映射它们,而下面的代码和只读数据则配置为只读。

但是,只读数据不会在页面边界上对齐。它们与代码相邻。因此,代码段的结尾和只读数据段的开头可能共享一个内存页。这将强制使用相同的内存属性映射两者。由于代码需要是可执行的,这意味着存储在与代码相同的内存页上的只读数据也是可执行的。这可能被用作安全攻击的一部分。

TF提供构建标志SEPARATE_CODE_AND_RODATA,以隔离单独内存页上的代码和只读数据(到这里总算是明白这个标题是什么意思了。)。这反过来允许独立控制代码和只读数据的访问权限。在这种情况下,平台代码可以获得镜像布局的更细粒度视图,并可以适当地将代码区域映射为可执行,将只读数据映射为从不执行。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

TrustZone_Hcoco

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值