如何配置存储器保护单元 (MPU) 简介 存储器保护单元 (Memory Protection Unit,MPU) 是 Cortex -M7 内核提供的一个可选组件, 用于保护存储器 它根据权限和访问规则将存储器映射分为许多区域 本文档旨在让用户熟悉 MPU 存储区的配置, 此配置由 Microchip 基于 Cortex-M7 的 MCU 提供 MPU 的特性如下 : 防止不可信应用程序出于侵犯知识产权目的对受保护存储区进行访问 防止用户应用程序损坏操作系统使用的数据 通过阻止任务访问其他数据来分离处理任务之间的数据 可将存储区域定义为只读以便保护重要数据 检测意外的存储器访问 简而言之,MPU 提供 : 存储器保护 外设保护 特权代码访问保护 2018 Microchip Technology Inc. DS90003179A_CN-page 1
目录 简介... 1 1. Cortex-M7 的 MPU... 3 2. 在 Cortex-M7 MCU 中设置 MPU...4 3. MPU 区域更新... 7 4. MPU 设置技巧... 8 5. 参考资料... 9 Microchip 网站... 10 变更通知客户服务...10 客户支持... 10 Microchip 器件代码保护功能... 10 法律声明... 11 商标...11 DNV 认证的质量管理体系...12 全球销售及服务网点... 13 2018 Microchip Technology Inc. DS90003179A_CN-page 2
Cortex-M7 的 MPU 1. Cortex-M7 的 MPU Cortex-M7 器件提供的 MPU 可选组件可用于保护系统空间中的 8 至 16 个存储区域 根据 MPU 区域, 基于 Cortex-M7 的 MCU 的存储器接口如下图所示 有关产品特定存储器映射的详细信息, 请参见具体器件的数据手册 图 1-1. 基于 Cortex-M7 的 MCU 的存储器接口 ITCM DTCM TCM Interface 16kB I Cache 16kB D Cache Multi port SRAM Cortex M7 SRAM#1 AXIM SRAM#2 SRAM#3 AXI Bridge CM7 #0 CM7 #1 32 bit Multi Layer AHB Matrix Peripheral USBHS RAM QSPI EBI ext. memories/ SDRAM FLASH 4 bit 16 bit MPU 提供的功能是基于区域的存储单元 区域是存储器映射的一部分, 遵循各自不同的访问规则 存储器类型和属性确定对区域的访问行为 各存储区可具有独立的属性设置 当存储区重叠时, 存储器访问受编号最高的区域的属性影响 ( 即, 区域 7 的属性优先于与区域 7 重叠的任何区域的属性 ) MPU 区域的配置基于存储器类型 存储区 类型和属性 MPU 包含若干寄存器 关于 Cortex-M7 MPU 寄存器的列表, 请访问 :http://infocenter.arm.com/help/ index.jsp?topic=/com.arm.doc.dui0646a/bihjjaba.html 2018 Microchip Technology Inc. DS90003179A_CN-page 3
在 Cortex-M7 MCU 中设置 MPU 2. 在 Cortex-M7 MCU 中设置 MPU 系统应具有如下存储器类型 : 标准 : 指闪存或 SRAM 等数据或代码存储空间 设备 : 指 USBHSRAM 等存储器映射外设 强排序 : 指始终按照程序顺序进行访问的存储器 ( 即 EBI 和 TCM) 存储区应具有如下属性 : 可共享或不可共享 (S) 可高速缓存或不可高速缓存 (C) 存储器访问权限 (AP) 取指访问 (XN) TEX 和 B 是其他位域, 与上述位域定义相结合来定义各 MPU 存储区的存储器属性图 2-1. 存储区属性 Memory Region Memory Access Attribute; Shareable bit Access Permission; Instruction Access #1 ITCM #2 FLASH #3 DTCM #4 SRAM #1 #5 SRAM #2 #6 PERIPHERAL #7 EXTERNAL #8 SDRAM #9 QSPI #10 USBHS #11 SRAM #3 Strongly Ordered; Shareable Normal; Not shareable; Cacheable; Inner Write back; no write allocate Strongly Ordered; Shareable Normal; Not shareable; Cacheable; Inner Write back; no write allocate Normal; Not shareable; Cacheable; Inner Write back; no write allocate Device; Shareable Strongly Ordered; Shareable Normal; Shareable; Cacheable; Inner write back; write and read allocate Strongly Ordered; Shareable Device; Shareable Normal, Shareable, Outer and inner noncacheable RW access from privileged SW only; Instruction fetches enabled Read only, by privileged or unprivileged SW; Instruction fetches enabled RW access from privileged SW only; Instruction fetches enabled RW full access; Instruction fetches enabled RW full access; Instruction fetches enabled RW full access; Instruction fetches disabled RW full access; Instruction fetches enabled RW full access; Instruction fetches enabled RW full access; Instruction fetches enabled RW full access; Instruction fetches disabled RW full access; Instruction fetches enabled 欲了解属性位域的更多信息, 请访问 :http://infocenter.arm.com/help/index.jsp?topic=/ com.arm.doc.dai0179b/chdfdfig.html 基于 Cortex-M7 的 MCU 的存储器映射定义了一般存储空间 在逻辑运算中, 每个存储空间具有确定的存储器类型 这是 MPU 区域属性寄存器中存储器类型位的默认值, 同时也是 MPU 系统的基本设计原则 基于 Cortex-M7 的 MCU 的基本存储器访问行为如存储区属性所示 存储器类型的所有区域属性都必须遵照该表 例如, 外设区域永远不能设为非 XN 类型, 而应始终设为设备类型 不可高速高速缓存和不可执行 软件实现 使用前, 需要对 MPU 寄存器进行编程并使能 通常在系统启动后在目标 MCU 上运行的任意应用程序初始化阶段执行该操作 2018 Microchip Technology Inc. DS90003179A_CN-page 4
在 Cortex-M7 MCU 中设置 MPU MPU 配置涉及以下三步操作 : 1. 选择存储区 2. 配置所选存储区的属性 (TEX S C B AP 和 XN) 对所有有效存储区重复以上两步 3. 使能 MPU 如果在未获所需权限的情况下访问了存储器的某个区域, 则会引发存储器管理故障 在使能 MPU 模块前, 必须设置存储器管理故障异常 若检测到非法访问, 系统将进入存储器管理故障处理程序 系统控制块 (System Control Block,SCB) 的系统处理程序控制和状态寄存器 (System Handler Control and State Register,SHCSR) 用于使能 MemManage Fault( 存储器管理故障 ) 异常 欲了解更多信息, 请访问 :http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0646a/cihfdjca.html 流程图 以下流程图简述了 MPU 区域的设置步骤 1. 使用 MPU->RNR 寄存器选择 MPU 区域 2. 将 MPU->RNR 寄存器选择的 MPU 区域的基地址写入 MPU->RBAR 寄存器 3. 将 MPU->RNR 寄存器选择的 MPU 区域的属性写入 MPU->RASR 寄存器 4. 在 MPU->CTRL 寄存器中使能 MPU 2018 Microchip Technology Inc. DS90003179A_CN-page 5
在 Cortex-M7 MCU 中设置 MPU 图 2-2. MPU 配置流程 Start Select memory region #1 Write the start address, size and the attributes for region #1 Select memory region #2 Write the start address, size and the attributes for region #2 Select memory region #n Write the start address, size and the attributes for region #n Enable MPU and privileged software access to the default memory map End 2018 Microchip Technology Inc. DS90003179A_CN-page 6
MPU 区域更新 3. MPU 区域更新 为了满足不同要求, 可在运行时更新 MPU 区域属性 要更新区域的属性, 请考虑采取以下措施 : 在更改属性前, 必须禁止区域 为避免意外行为, 必须在更新前禁止中断程序 应对齐对 MPU 寄存器的访问 更新 MPU 前需要使用 DSB 和 ISB 指令, 确保未完成的存储器传输得以完成 如果在异常处理程序中发生更新过程, 由于存储器屏障行为在异常进入和返回过程中自动发生, 因此无需使用存储器屏障指令 2018 Microchip Technology Inc. DS90003179A_CN-page 7
MPU 设置技巧 4. MPU 设置技巧 提示 : 1. 处理器不支持对 MPU 寄存器进行非对齐的访问操作 MPU 寄存器只支持对齐的字访问 2. 如果之前已对 MPU 进行编程, 则禁止未使用的区域以避免之前的区域设置影响新 MPU 设置 3. 在更新中断处理程序可能访问的区域的属性前, 应禁止中断 2018 Microchip Technology Inc. DS90003179A_CN-page 8
参考资料 5. 参考资料 http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0646a/bihiijdc.html http://www.microchip.com/design-centers/32-bit/sam-32-bit-mcus/sam-v-mcus http://www.microchip.com/design-centers/32-bit/sam-32-bit-mcus/sam-s-mcus http://www.microchip.com/design-centers/32-bit/sam-32-bit-mcus/sam-e-mcus http://www.atmel.com/images/atmel-42128-at02346-using-the-mpu-on-atmel-cortex-m3-m4- based-microcontroller_application-note.pdf http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0646a/cihegaib.html http://asf.atmel.com/docs/latest/samv71/html/mpu_8c.html http://asf.atmel.com/docs/latest/samv71/html/mpu_8h.html 2018 Microchip Technology Inc. DS90003179A_CN-page 9
Microchip 网站 Microchip 网站 http://www.microchip.com/ 为客户提供在线支持 客户可通过该网站方便地获取文件和信息 只要使用常用的互联网浏览器即可访问, 网站提供以下信息 : 产品支持 数据手册和勘误表 应用笔记和示例程序 设计资源 用户指南以及硬件支持文档 最新的软件版本以及归档软件 一般技术支持 常见问题 (FAQ) 技术支持请求 在线讨论组以及 Microchip 顾问计划成员名单 Microchip 业务 产品选型和订购指南 最新 Microchip 新闻稿 研讨会和活动安排表 Microchip 销售办事处 代理商以及工厂代表列表 变更通知客户服务 Microchip 的变更通知客户服务有助于客户了解 Microchip 产品的最新信息 注册客户可在他们感兴趣的某个产品系列或开发工具发生变更 更新 发布新版本或勘误表时, 收到电子邮件通知 欲注册, 请登录 Microchip 网站 http://www.microchip.com/ 在 支持 (Support) 下, 点击 变更通知客户 (Customer Change Notification) 服务后按照注册说明完成注册 客户支持 Microchip 产品的用户可通过以下渠道获得帮助 : 代理商或代表 当地销售办事处 应用工程师 (FAE) 技术支持 客户应联系其代理商 代表或应用工程师 (FAE) 寻求支持 当地销售办事处也可为客户提供帮助 本文档后附有销售办事处的联系方式 也可通过以下网站获得技术支持 : http://www.microchip.com/support Microchip 器件代码保护功能 请注意以下有关 Microchip 器件代码保护功能的要点 : Microchip 的产品均达到 Microchip 数据手册中所述的技术指标 Microchip 确信 : 在正常使用的情况下,Microchip 系列产品是当今市场上同类产品中最安全的产品之一 目前, 仍存在着恶意 甚至是非法破坏代码保护功能的行为 就我们所知, 所有这些行为都不是以 Microchip 数据手册中规定的操作规范来使用 Microchip 产品的 这样做的人极可能侵犯了知识产权 Microchip 愿意与关心代码完整性的客户合作 Microchip 或任何其他半导体厂商均无法保证其代码的安全性 代码保护并不意味着我们保证产品是 牢不可破 的 代码保护功能处于持续发展中 Microchip 承诺将不断改进产品的代码保护功能 任何试图破坏 Microchip 代码保护功能的行为均可视为违反了 数字器件千年版权法案 (Digital Millennium Copyright Act) 如 2018 Microchip Technology Inc. DS90003179A_CN-page 10
果这种行为导致他人在未经授权的情况下, 能访问您的软件或其他受版权保护的成果, 您有权依据该法案提起诉讼, 从而制止这种行为 法律声明 本出版物中所述的器件应用信息及其他类似内容仅为您提供便利, 它们可能由更新之信息所替代 确保应用符合技术规范, 是您自身应负的责任 Microchip 对这些信息不作任何明示或暗示 书面或口头 法定或其他形式的声明或担保, 包括但不限于针对其使用情况 质量 性能 适销性或特定用途的适用性的声明或担保 Microchip 对因这些信息及使用这些信息而引起的后果不承担任何责任 如果将 Microchip 器件用于生命维持和 / 或生命安全应用, 一切风险由买方自负 买方同意在由此引发任何一切伤害 索赔 诉讼或费用时, 会维护和保障 Microchip 免于承担法律责任, 并加以赔偿 除非另外声明, 否则在 Microchip 知识产权保护下, 不得暗中或以其他方式转让任何许可证 商标 Microchip 的名称和徽标组合 Microchip 徽标 AnyRate AVR AVR 徽标 AVR Freaks BitCloud chipkit chipkit 徽标 CryptoMemory CryptoRF dspic FlashFlex flexpwr Heldo JukeBlox KeeLoq Kleer LANCheck LINK MD maxstylus maxtouch MediaLB megaavr MOST MOST 徽标 MPLAB OptoLyzer PIC picopower PICSTART PIC32 徽标 Prochip Designer QTouch SAM-BA SpyNIC SST SST 徽标 SuperFlash tinyavr UNI/O 和 XMEGA 是 Microchip Technology Incorporated 在美国和其他国家或地区的注册商标 ClockWorks The Embedded Control Solutions Company EtherSynch Hyper Speed Control HyperLight Load IntelliMOS mtouch Precision Edge 和 Quiet-Wire 为 Microchip Technology Incorporated 在美国的注册商标 Adjacent Key Suppression AKS Analog-for-the-Digital Age Any Capacitor AnyIn AnyOut BodyCom CodeGuard CryptoAuthentication CryptoAutomotive CryptoCompanion CryptoController dspicdem dspicdem.net Dynamic Average Matching DAM ECAN EtherGREEN In-Circuit Serial Programming ICSP INICnet Inter-Chip Connectivity JitterBlocker KleerNet KleerNet 徽标 membrain Mindi MiWi motorbench MPASM MPF MPLAB Certified 徽标 MPLIB MPLINK MultiTRAK NetDetach Omniscient Code Generation PICDEM PICDEM.net PICkit PICtail PowerSmart PureSilicon QMatrix REAL ICE Ripple Blocker SAM- ICE Serial Quad I/O SMART-I.S. SQI SuperSwitcher SuperSwitcher II Total Endurance TSHARC USBCheck VariSense ViewSpan WiperLock Wireless DNA 和 ZENA 为 Microchip Technology Incorporated 在美国和其他国家或地区的商标 SQTP 为 Microchip Technology Inc. 在美国的服务标记 Silicon Storage Technology 为 Microchip Technology Inc. 在除美国外的国家或地区的注册商标 GestIC 是 Microchip Technology Inc. 的子公司 Microchip Technology Germany II GmbH & Co. KG 在除美国外的国家或地区的注册商标 在此提及的所有其他商标均为各持有公司所有 2018, Microchip Technology Incorporated 版权所有 ISBN: 978-1-5224-3266-1 2018 Microchip Technology Inc. DS90003179A_CN-page 11
DNV 认证的质量管理体系 ISO/TS 16949 Microchip 位于美国亚利桑那州 Chandler 和 Tempe 与位于俄勒冈州 Gresham 的全球总部 设计和晶圆生产厂及位于美国加利福尼亚州和印度的设计中心均通过了 ISO/TS-16949:2009 认证 Microchip 的 PIC MCU 和 dspic DSC KEELOQ 跳码器件 串行 EEPROM 单片机外设 非易失性存储器及模拟产品严格遵守公司的质量体系流程 此外,Microchip 在开发系统的设计和生产方面的质量体系也已通过了 ISO 9001:2000 认证 2018 Microchip Technology Inc. DS90003179A_CN-page 12
全球销售及服务网点 美洲亚太地区亚太地区欧洲 公司总部 2355 West Chandler Blvd. Chandler, AZ 85224-6199 电话 :1-480-792-7200 传真 :1-480-792-7277 技术支持 : http://www.microchip.com/ support 网址 : www.microchip.com 亚特兰大德卢斯, 乔治亚州 电话 :1-678-957-9614 传真 :1-678-957-1455 奥斯汀, 德克萨斯州 电话 :1-512-257-3370 波士顿韦斯特伯鲁, 马萨诸塞州 电话 :1-774-760-0087 传真 :1-774-760-0088 芝加哥艾塔斯卡, 伊利诺伊州 电话 :1-630-285-0071 传真 :1-630-285-0075 达拉斯艾迪生, 德克萨斯州 电话 :1-972-818-7423 传真 :1-972-818-2924 底特律诺维, 密歇根州 电话 :1-248-848-4000 休斯敦, 德克萨斯州 电话 :1-281-894-5983 印第安纳波利斯诺布尔斯维尔, 印第安纳州 电话 :1-317-773-8323 传真 :1-317-773-5453 电话 :1-317-536-2380 洛杉矶米申维耶霍, 加利福尼亚州 电话 :1-949-462-9523 传真 :1-949-462-9608 电话 :1-951-273-7800 罗利, 北卡罗来纳州 电话 :1-919-844-7510 纽约, 纽约州 电话 :1-631-435-6000 圣何塞, 加利福尼亚州 电话 :1-408-735-9110 电话 :1-408-436-4270 加拿大 - 多伦多 电话 :1-905-695-1980 传真 :1-905-695-2078 中国 - 北京 电话 :86-10-8569-7000 中国 - 成都 电话 :86-28-8665-5511 中国 - 重庆 电话 :86-23-8980-9588 中国 - 东莞 电话 :86-769-8702-9880 中国 - 广州 电话 :86-20-8755-8029 中国 - 杭州 电话 :86-571-8792-8115 中国 - 南京 电话 :86-25-8473-2460 中国 - 青岛 电话 :86-532-8502-7355 中国 - 上海 电话 :86-21-3326-8000 中国 - 沈阳 电话 :86-24-2334-2829 中国 - 深圳 电话 :86-755-8864-2200 中国 - 苏州 电话 :86-186-6233-1526 中国 - 武汉 电话 :86-27-5980-5300 中国 - 西安 电话 :86-29-8833-7252 中国 - 厦门 电话 :86-592-2388138 中国 - 香港特别行政区 电话 :852-2943-5100 中国 - 珠海 电话 :86-756-3210040 台湾地区 - 高雄 电话 :886-7-213-7830 台湾地区 - 台北 电话 :886-2-2508-8600 台湾地区 - 新竹 电话 :886-3-577-8366 澳大利亚 - 悉尼 电话 :61-2-9868-6733 印度 - 班加罗尔 电话 :91-80-3090-4444 印度 - 新德里 电话 :91-11-4160-8631 印度 - 浦那 电话 :91-20-4121-0141 日本 - 大阪 电话 :81-6-6152-7160 日本 - 东京 电话 :81-3-6880-3770 韩国 - 大邱 电话 :82-53-744-4301 韩国 - 首尔 电话 :82-2-554-7200 马来西亚 - 吉隆坡 电话 :60-3-7651-7906 马来西亚 - 槟榔屿 电话 :60-4-227-8870 菲律宾 - 马尼拉 电话 :63-2-634-9065 新加坡电话 :65-6334-8870 泰国 - 曼谷 电话 :66-2-694-1351 越南 - 胡志明市 电话 :84-28-5448-2100 奥地利 - 韦尔斯 电话 :43-7242-2244-39 传真 :43-7242-2244-393 丹麦 - 哥本哈根 电话 :45-4450-2828 传真 :45-4485-2829 芬兰 - 埃斯波 电话 :358-9-4520-820 法国 - 巴黎 电话 :33-1-69-53-63-20 传真 :33-1-69-30-90-79 德国 - 加兴 电话 :49-8931-9700 德国 - 哈恩 电话 :49-2129-3766400 德国 - 海尔布隆 电话 :49-7131-67-3636 德国 - 卡尔斯鲁厄 电话 :49-721-625370 德国 - 慕尼黑 电话 :49-89-627-144-0 传真 :49-89-627-144-44 德国 - 罗森海姆 电话 :49-8031-354-560 以色列 - 赖阿南纳 电话 :972-9-744-7705 意大利 - 米兰 电话 :39-0331-742611 传真 :39-0331-466781 意大利 - 帕多瓦 电话 :39-049-7625286 荷兰 - 德卢内市 电话 :31-416-690399 传真 :31-416-690340 挪威 - 特隆赫姆 电话 :47-7289-7561 波兰 - 华沙 电话 :48-22-3325737 罗马尼亚 - 布加勒斯特 电话 :40-21-407-87-50 西班牙 - 马德里 电话 :34-91-708-08-90 传真 :34-91-708-08-91 瑞典 - 哥德堡 电话 :46-31-704-60-40 瑞典 - 斯德哥尔摩 电话 :46-8-5090-4654 英国 - 沃金厄姆 电话 :44-118-921-5800 传真 :44-118-921-5820 2018 Microchip Technology Inc. DS90003179A_CN-page 13