0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

应用笔记|管理STM32 MCU中的内存保护单元

STM32单片机 来源:未知 2022-12-21 21:05 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群




目录预览




1.前言
2.概述
3.Cortex-M0+/M3/M4/M7存储器类型、寄存器
属性
4.Cortex-M33 存储器类型、寄存器和属性
5.Cortex 内核之间的 MPU 特性对比
6.带 STM32Cube HAL 的 MPU(采用 Armv6
Armv7 架构)设置示例
7.结论


1

前言

本应用笔记介绍如何管理 STM32 产品中的内存保护单元(MPU)。MPU 是用于存储器保护的可选组件。STM32 微控制器MCU)中嵌入 MPU 之后变得更稳健可靠。在使用 MPU 之前,必须对其进行编程并加以启用。如果 MPU 没有启用,则存储系统的行为不会变化。


2

概述

MPU 可以使嵌入式系统更加稳健和安全:• 禁止用户应用程序破坏关键任务(例如操作系统核心)使用的数据• 将 SRAM 存储区域定义为非可执行(禁止执行 XN),以防止代码注入攻击• 修改存储访问属性MPU可最多保护16个内存区域。在 Armv6、Armv7 架构(Cortex-M0+、M3、M4、M7)下,这些区域可以依次拥有 8 个子区域(前提是区域至少有 256 字节))。


在 STM32 中,受保护区域的确切数量可能因内核和器件而有所不同,请参阅 Cortex-M33 MPU 寄存器获取详细信息。子区域的大小都是相等的,可以根据子区域号进行启用或禁用。因为最小区域大小是由缓存行长度(32 字节)驱动的,所以 8 个 32 字节的子区域对应一个 256 字节的区域。区域的编号为 0 至 15。


此外,还有一处默认区域,其 id 为-1。所有编号 0-15 的存储区域的优先级高于默认区域。这些区域可以重叠,也可以嵌套。区域 0-15 的优先级由低到高,这也决定了区域重叠的方式。优先级是固定的,不可更改。在 Armv8 架构(Cortex-M33)中,使用起始地址和终止地址来定义区域,使开发人员能够以灵活、简单的方式组织这些区域。


此外,正是区域大小的可灵活配置得到提升,故Cortex-M33就没有子区域的概念了。下图显示的示例包含六个区域。该示例显示区域 4 与区域 0 和 1 重叠。区域 5 完全包含在区域 3 内。因为优先级是递增的,所以重叠区域(橙色)优先。因此,如果区域 0 是可写的,而区域 4 不可写,那么位于区域 0 和区域 4 重叠部分的地址为不可写。


Conclusion:

在 Armv8 架构(Cortex-M33)中,现在不允许区域重叠。由于 MPU 区域的定义更加灵活,因此没有必要重叠MPU 区域。


MPU 是统一的,意味着没有单独的区域用于数据和指令。


MPU 还可以用于定义其他存储器属性(如可缓存性),可以导出到系统级缓存单元或存储存控制器。Arm 架构中的存储器属性设置可以支持两种级别的缓存:内部缓存和外部缓存。STM32F7 和 STM32H7 系列仅支持一种级别的缓存(L1-缓存)。


缓存控制由缓存控制寄存器实现全局控制,但 MPU 可以指定缓存策略以及区域是否可缓存。


2.1存储器模型

在 STM32 产品中,处理器具有固定的默认存储器映射,可提供最多 4 Gb 的可寻址存储器。



3

Cortex-M0+/M3/M4/M7

存储器类型、寄存器和属性

存储器映射和 MPU 编程将存储器映射分为多个区域。每个区域都有已定义的存储器类型和存储器属性。存储器类型和属性决定该区域的访问行为。


3.1 存储器类型

有三种常见的存储器类型:

• 普通存储器:允许 CPU 以有效方式安排字节、半字和字的加载和存储(编译器不了解存储器区域类型)。对于普通存储器区域,CPU 不一定按照程序中列出的顺序执行加载/存储操作。


• 器件存储器:在器件区域内,负载和存储是严格按照顺序进行的。这是为了确保以正确的顺序设置寄存器。


• 强排序存储器:所有操作始终按以编程方式列出的顺序执行,CPU 会等待加载/存储指令执行(有效的总线访问)结束,然后执行程序流中的下一条指令。这可能导致性能损失。


3.2 存储器属性

区域的属性与大小寄存器(MPU_RASR)是设置所有存储器属性的地方。该表显示了 MPU_RASR 寄存器中对于区域的属性和大小的简要描述。


前一个表格中的参数详情如下:

• XN 标志位控制代码的执行。为了在区域内执行指令,特权级别必须有读访问权限,而 XN 必须为 0。否则,会产生 MemManage 报错。


• 数据访问权限(AP)字段定义存储区域的 AP。


下表对访问权限进行了说明:


• S 字段面向可共享的存储区域:存储系统在一个有多个总线主控的系统(例如,一个处理器带一个 DMA 控制器)中提供总线主控之间的数据同步。强排序的存储器始终可共享。如果多个总线主控可以访问一个不可共享的存储区域,软件必须确保总线主控之间的数据一致性。STM32F7 系列和 STM32H7 系列不支持硬件一致性。S 字段相当于不可缓存的存储器。


TEX、C 和 B 位用于定义区域的缓存属性,以及(在某种程度上)可共享性。按下表对其进行编码。


在 STM32 微控制器中加入 MPU 使其稳健、可靠,而且在某些情况下更安全 - 防止应用程序任务访问或破坏其他任务使用的堆栈和数据存储器。该应用笔记描述了不同的存储器属性、类型和 MPU 寄存器。其中还提供了 MPU(使用 STM32Cube HAL)设置示例,以说明如何配置 STM32 MCU 中的 MPU。如需详细了解 MPU 寄存器,请参阅 Cortex 内核编程手册。本应用笔记内容较长,篇幅有限仅展示部分,完整内容请点击“阅读原文”下载原文档。


长按扫码关注公众号


更多资讯,尽在STM32


点击“阅读原文”,可下载原文档


原文标题:应用笔记|管理STM32 MCU中的内存保护单元

文章出处:【微信公众号:STM32单片机】欢迎添加关注!文章转载请注明出处。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 单片机
    +关注

    关注

    6078

    文章

    45596

    浏览量

    674068
  • STM32
    +关注

    关注

    2313

    文章

    11196

    浏览量

    374766

原文标题:应用笔记|管理STM32 MCU中的内存保护单元

文章出处:【微信号:STM32_STM8_MCU,微信公众号:STM32单片机】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    STM32L162xD系列:超低功耗32位MCU的卓越之选

    STM32L162xD系列:超低功耗32位MCU的卓越之选 在当今电子设备追求低功耗、高性能的时代,STM32L162VD、STM32L162ZD、
    的头像 发表于 04-17 14:50 160次阅读

    MCU分布式模块化自动测量单元的电源与功耗解析

    MCU分布式模块化自动测量单元的电源设计与功耗管理是其能够在各类工程现场长期稳定运行的重要保障。该单元采用灵活多样的供电方案与先进的低功耗管理
    的头像 发表于 03-23 16:13 188次阅读
    <b class='flag-5'>MCU</b>分布式模块化自动测量<b class='flag-5'>单元</b>的电源与功耗解析

    STM32L151xC与STM32L152xC:超低功耗MCU的卓越之选

    STM32L151xC与STM32L152xC:超低功耗MCU的卓越之选 在当今的电子设计领域,超低功耗微控制器(MCU)的需求日益增长,尤其是在对功耗敏感的应用场景
    的头像 发表于 03-11 16:30 315次阅读

    STM32L052x6/8:超低功耗32位MCU的卓越之选

    STM32L052x6/8:超低功耗32位MCU的卓越之选 在当今的电子设备设计,低功耗、高性能的微控制器(MCU)是众多应用的核心需求。STM3
    的头像 发表于 02-11 15:20 330次阅读

    LAT1187+在 Keil 中使用 STM32CubeProgrammer应用笔记

    STM32 MCU 新产品的早期用户有时候会遇见工具链还在完善的情形,例如,一部分STM32 工具已经支持该产品,而另外一部分 STM32
    发表于 01-11 17:27 0次下载

    AN5289 使用 STM32WB 系列微控制器构建射频应用笔记

    本文档一步一步地指导设计人员基于 STM32WB 系列微控制器构建特定 Bluetooth低功耗或802.15.4 应用。它汇集了最重要的信息,并且列出了需要处理的方面。为了充分利用本文档的信息
    发表于 01-09 14:13 0次下载

    AN2606_STM32单片机系统内存启动方式应用笔记

    自举程序存储在STM32器件的内部自举ROM(系统存储器),由ST在生产期间进行编程。其主要任务是通过一种可用的串行外设(如USART、CAN、USB、I 2C)将应用程序下载到内部Flash
    发表于 01-08 14:49 0次下载

    RDMA设计8:状态管理单元设计

    状态管理单元负责读取系统工作状态,包括物理链路连接状态和队列连接状态,并反馈给上位机。
    的头像 发表于 12-16 16:55 1599次阅读
    RDMA设计8:状态<b class='flag-5'>管理</b><b class='flag-5'>单元</b>设计

    CW32A系列(车规级 MCU)介绍

    加密、内存保护单元(MPU)、看门狗定时器。 典型应用:车身控制模块(BCM)、车载传感器、动力电池管理(BMS)、ADAS 辅助驾驶。
    发表于 11-17 06:30

    STMicroelectronics STSPIN32G060x 600V三相BLDC控制器数据手册

    传导、死区时间和UVLO保护,可实现高效安全运行。该MCU的工作频率高达64MHz,并通过内存保护单元 (MPU) 增强了安全性。
    的头像 发表于 10-22 11:29 7049次阅读
    STMicroelectronics STSPIN32G060x 600V三相BLDC控制器数据手册

    RTThread支持内存保护功能吗?

    以前在其他视频里看过说单片机可以实现线程崩溃不会影响系统运行, 我一直不知道怎么实现的, 最近了解到 MPU和Zephyr的内存保护, 这些在RTthread可以实现吗
    发表于 10-14 07:14

    如何配置和管理MCU分布式模块化自动测量单元

    MCU分布式模块化自动测量单元是南京峟思工程仪器有限公司研发的专业监测设备,广泛应用于岩土工程和结构安全监测领域。该单元采用分布式架构设计,支持多类型传感器混合接入,可通过集中管理平台
    的头像 发表于 09-24 15:39 840次阅读
    如何配置和<b class='flag-5'>管理</b><b class='flag-5'>MCU</b>分布式模块化自动测量<b class='flag-5'>单元</b>

    永铭钽电容:藏在笔记本“电力心脏”的精密艺术

    笔记的艺术当你用笔记本电脑流畅剪辑4K视频、激战高画质3A游戏时,是否想过是谁在幕后默默保障电力稳定?在纤薄机身与强悍性能并存的今天,笔记本电脑正面临“既要极致轻薄,又要澎湃动力”
    的头像 发表于 09-01 09:57 942次阅读
    永铭钽电容:藏在<b class='flag-5'>笔记</b>本“电力心脏”<b class='flag-5'>中</b>的精密艺术

    MCU自动测量单元:革新数据收集与结构安全监测

    在岩土工程与大型结构物(如大坝、桥梁、隧道、边坡等)的安全监测,精准、可靠的数据采集是保障工程安全的核心。南京峟思工程仪器有限公司推出的MCU自动测量单元,凭借其智能化、模块化设计及多场景适配能力
    的头像 发表于 06-20 09:55 750次阅读
    <b class='flag-5'>MCU</b>自动测量<b class='flag-5'>单元</b>:革新数据收集与结构安全监测

    GPDV6624C应用笔记1.0版

    电子发烧友网站提供《GPDV6624C应用笔记1.0版.pdf》资料免费下载
    发表于 06-06 17:20 0次下载