ZHCA930B June 2014 – August 2021 MSP430FR2032 , MSP430FR2033 , MSP430FR2110 , MSP430FR2111 , MSP430FR2311 , MSP430FR2433 , MSP430FR2532 , MSP430FR2533 , MSP430FR2632 , MSP430FR2633 , MSP430FR4131 , MSP430FR4132 , MSP430FR4133 , MSP430FR5720 , MSP430FR5721 , MSP430FR5722 , MSP430FR5723 , MSP430FR5724 , MSP430FR5725 , MSP430FR5726 , MSP430FR5727 , MSP430FR5728 , MSP430FR5729 , MSP430FR5730 , MSP430FR5731 , MSP430FR5732 , MSP430FR5733 , MSP430FR5734 , MSP430FR5735 , MSP430FR5736 , MSP430FR5737 , MSP430FR5738 , MSP430FR5739 , MSP430FR5847 , MSP430FR58471 , MSP430FR5848 , MSP430FR5849 , MSP430FR5857 , MSP430FR5858 , MSP430FR5859 , MSP430FR5867 , MSP430FR58671 , MSP430FR5868 , MSP430FR5869 , MSP430FR5870 , MSP430FR5872 , MSP430FR58721 , MSP430FR5887 , MSP430FR5888 , MSP430FR5889 , MSP430FR58891 , MSP430FR5922 , MSP430FR59221 , MSP430FR5947 , MSP430FR59471 , MSP430FR5948 , MSP430FR5949 , MSP430FR5957 , MSP430FR5958 , MSP430FR5959 , MSP430FR5967 , MSP430FR5968 , MSP430FR5969 , MSP430FR5969-SP , MSP430FR59691 , MSP430FR5970 , MSP430FR5972 , MSP430FR59721 , MSP430FR5986 , MSP430FR5987 , MSP430FR5988 , MSP430FR5989 , MSP430FR5989-EP , MSP430FR59891 , MSP430FR5994 , MSP430FR6820 , MSP430FR6822 , MSP430FR68221 , MSP430FR6870 , MSP430FR6872 , MSP430FR68721 , MSP430FR6877 , MSP430FR6879 , MSP430FR68791 , MSP430FR6887 , MSP430FR6888 , MSP430FR6889 , MSP430FR68891 , MSP430FR6920 , MSP430FR6922 , MSP430FR69221 , MSP430FR6927 , MSP430FR69271 , MSP430FR6928 , MSP430FR6970 , MSP430FR6972 , MSP430FR69721 , MSP430FR6977 , MSP430FR6979 , MSP430FR69791 , MSP430FR6987 , MSP430FR6988 , MSP430FR6989 , MSP430FR69891
MPU 可配置为保护软件中的三个不同存储器段,每个段可以单独配置为读、写、执行或三者的组合。大多数应用都具有某种形式的应当受到读写保护的变量、只读的常量以及只能读取和执行的程序代码。表 6-2 总结了典型的存储器分段。
存储器区域 | 保护类型 | MPU 段 |
---|---|---|
变量 | 读取和写入 | 段 1 |
不初始化 | 读取和写入 | 段 1 |
永久性 | 读取和写入 | 段 1 |
常量 | 只读 | 段 2 |
程序代码 | 读取和执行 | 段 3 |
在Topic Link Label6.2中生成的映射文件中为应用的读取和写入、只读以及读取和执行段找到起始地址之后,下一步是为 MPU 确定和配置段边界。请记住,最小的 MPU 段大小分配单位为 1KB 或 0x0400。如需更多信息,请参阅特定器件系列用户指南。在该示例中,应用只使用 5 个字节的常量数组,其中 2 个字节用于永久性变量,其余字节用于应用代码。因此,在分配此示例应用时,链接器应当为变量分配 1KB,为常量分配 1KB,如表 6-3 中所示。
存储器区域 | 保护类型 | MPU 段 | 存储器分区示例 |
---|---|---|---|
变量 | 读取和写入 | 段 1 | 0x4400 到 0x47FF |
常量 | 只读 | 段 2 | 0x4800 到 0x4BFF |
程序代码 | 读取和执行 | 段 3 | 0x4C00 到 0xYYYYY |
按照表 6-3 中所示为段 1、2 和 3 确定了存储器分段之后,可以使用两个寄存器来定义如何配置段边界:存储器保护单元分段边界 1 (MPUSEGB1
) 和存储器保护单元分段边界 2 寄存器 (MPUSEGB2
)。在向寄存器写入之前,需要将地址右移 4 位。
图 6-2 所示为有关如何对存储器进行分区和对 MPU 寄存器进行配置的应用示例。
现在需要将配置实施到代码中。如Topic Link Label6.1中所述,应在器件启动过程中尽早确定 MPU 配置。若要进行此配置,请分别参阅Topic Link Label6.3.1.1和Topic Link Label6.3.1.2中概述的 CCS 和 IAR 配置步骤。