Zephyr内核——用户模式——内存保护设计

内存保护设计

Zephyr的内存保护设计是面向微控制器与MPU(内存保护单元)的微控制器硬件。我们确实支持一些架构,比如x86,它有一个分页的MMU(内存管理单元),但在这种情况下,MMU就像一个带有标识页表的MPU。

下面所有的讨论都将使用MPU术语;带有MMU的系统可以被认为有一个具有无限数量的可编程区域的MPU。

当启用Zephyr内存保护功能时,关于如何配置内存访问有几个不同的级别,我们将在这里描述:

启动时间内存配置

这是内核启动后的MPU的配置。它应包含以下内容:

  • 需要为基本硬件和驱动程序功能具有特殊缓存或回写策略的内存区域配置。请注意,大多数MPU都有默认内存访问策略映射的概念,它可以作为任何没有配置MPU区域的内存区域的“背景”映射来启用。强烈建议使用它来最大化最终用户可用MPU区域的数量。在ARMv7-M/ARMv8-M上,这被称为系统地址映射,其他cpu可能具有类似的功能。
  • 程序文本和可执行的只读可执行数据区域,可通过用户模式访问。这可以进一步细分为ro-data的只读区域和可执行上下文的只读区域,但这将需要一个额外的MPU区域。这是必需的,以便运行在用户模式下的线程可以读取ro-data和获取指令。
  • 根据配置,用户可访问的读写区域来支持额外的功能,如GCOV、HEP等。

假设有一个背景映射,允许监控模式访问它需要的任何内存,并且定义了授予用户模式访问text/ro-data数据的区域,这对于引导时间配置就足够了。

硬件堆栈溢出

CONFIG_HW_STACK_PROTECTION

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值