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

 

  1.   商标
  2. 1FRAM 和通用存储器
  3. 2可以将其视为 RAM
  4. 3存储器布局分区
    1. 3.1 程序代码和常量数据
    2. 3.2 变量
    3. 3.3 软件栈
    4. 3.4 支持在 MSP430 IDE 中进行存储器分区
      1. 3.4.1 TI Code Composer Studio
        1. 3.4.1.1 修改链接器文件示例 1
        2. 3.4.1.2 修改链接器文件示例 2
        3. 3.4.1.3 修改链接器文件示例 3
      2. 3.4.2 适用于 MSP430 的 IAR Embedded Workbench
        1. 3.4.2.1 修改链接器文件示例 1
        2. 3.4.2.2 修改链接器文件示例 2
        3. 3.4.2.3 修改链接器文件示例 3
  5. 4优化应用能耗和性能
    1. 4.1 缩短从 LPMx.5 唤醒的时间
  6. 5面向 FRAM 且易于使用的编译器扩展
    1. 5.1 TI Code Composer Studio
    2. 5.2 适用于 MSP430 的 IAR Embedded Workbench
  7. 6FRAM 保护和安全性
    1. 6.1 存储器保护
    2. 6.2 检查链接器映射文件
      1. 6.2.1 TI Code Composer Studio
      2. 6.2.2 适用于 MSP430 的 IAR Embedded Workbench
    3. 6.3 存储器保护设置
      1. 6.3.1 FR5xx 和 FR6xx 系列 MCU MPU 配置
        1. 6.3.1.1 CCS MPU 实现方式
          1. 6.3.1.1.1 手动配置 MPU
          2. 6.3.1.1.2 基于 IDE 向导的 MPU 配置
        2. 6.3.1.2 IAR MPU 实现方式
          1. 6.3.1.2.1 手动配置 MPU
          2. 6.3.1.2.2 基于 IDE 向导的 MPU 配置
      2. 6.3.2 FR2xx 和 FR4xx 系列 MCU FRAM 写保护配置
    4. 6.4 IP 封装
  8. 7参考文献
  9. 8修订历史记录

适用于 MSP430 的 IAR Embedded Workbench

在 IAR 中,如果按Topic Link Label5.2中所述使用 __persistent 属性将变量置于 FRAM 中,则很多用例将无需修改链接器命令文件 (.xcl)。但是,如果要将声明为 __noinit 的变量放到 FRAM 中,则可以在链接器命令文件中进行少量修改,以便将所分配的 DATA16_NDATA20_N 段从 RAM 移到 FRAM 区域中,以达成这一目的。

IAR 链接器命令文件通常在所有工程之间共享,并位于 C:\<IAR installation directory>\430\config\linker\ 文件夹中。若要详细了解链接器命令文件中的每个存储器段名称,请访问 https://www.iar.com/support/user-guides/user-guidesiar-embedded-workbench-for-ti-msp430/,参阅《IAR C/C++ 编译器用户指南》中的“段参考”一章。

如果仍然需要定制的链接器命令文件,则需要为 lnk430xxxx.xcl 制作一个副本。以下步骤概述了如何创建定制的 IAR 链接器命令文件。

  1. 导航到 C:\<IAR installation directory>\430\config\linker\ folder。
  2. 为您本地工程的 link430xxxx.xcl 文件制作一个副本,如果需要,可以重命名此文件。
  3. 打开 .xcl 文件的新副本并进行定制
  4. 将 IAR 工程配置为指向定制的链接器命令文件。
GUID-4DF51636-5681-4128-9B1E-78D53729014D-low.png图 3-1 为 IAR 手动覆盖链接器命令文件

可以在 IAR 中直接修改链接器命令文件。以下代码提供适用于 MSP430FR2311 的 .xcl 文件解释和修改示例。

表 3-3 显示了 IAR 中的一些段,这些段可用于分配存储器。有关更多段说明,请参阅《IAR C/C++ 编译器用户指南(适用于 MSP430)》中的段参考 一章。

表 3-3 IAR 中的段摘要
说明
DATA16_AC 保留 __data16 定位的常量数据。
DATA16_AN 保留 __data16 定位的未初始化数据。
DATA16_C 保留 __data16 常量数据。
DATA16_HEAP 在 data16 存储器中保留用于动态分配数据的堆。
DATA16_I 保留 __data16 静态和全局初始化变量。
DATA16_ID 在 DATA16_I 中保存 __data16 静态和全局变量的初始值。
DATA16_N 保留 __no_init __data16 静态和全局变量。
DATA16_P 保留使用 _persistent 关键字定义的 __data16 变量。
DATA16_Z 保留初始化为 0 的 __data16 静态和全局变量。
DATA20_AC 保留 __data20 定位的常量数据。
DATA20_AN 保留 __data20 定位的未初始化数据。
DATA20_C 保留 __data20 常量数据。
DATA20_HEAP 在 data20 存储器中保留用于动态分配数据的堆。
DATA20_I 保留 __data20 静态和全局初始化变量。
DATA20_ID 在 DATA20_I 中保存 __data20 静态和全局变量的初始值。
DATA20_N 保留 __no_init __data20 静态和全局变量。
DATA20_P 保留使用 _persistent 关键字定义的 __data20 变量。
DATA20_Z 保留初始化为 0 的 __data20 静态和全局变量。

存储块可以直接分配到 IAR 中的每个段,并且存储器空间可以是不连续的,用“,”符号分隔。如果在 -Z 命令之后没有给出地址空间,则默认值与前一行相同。根据表 3-2 中 MSP430FR2311 的存储器组织情况,IAR 中提供了默认存储器分配文件。主要内容如以下代码所示,分为 RAM、FRAM、矢量段等等。更多有关存储器分配的信息,请参阅《IAR C/C++ 编译器用户指南(适用于 MSP430)》

// ----------------------------------------------- 
// RAM 存储器 
//  
  -Z(DATA)DATA16_I,DATA16_Z,DATA16_N,TLS16_I=2000-23FF 
  -Z(DATA)CODE_I -Z(DATA)DATA20_I,DATA20_Z,DATA20_N 
  -Z(DATA)CSTACK+_STACK_SIZE#  
 
// ----------------------------------------------- 
// FRAM 存储器 
//  
// Read/write data in FRAM 
  -Z(CONST)DATA16_P,DATA20_P=F100-FF7F 
  -Z(DATA)DATA16_HEAP+_DATA16_HEAP_SIZE,DATA20_HEAP+_DATA20_HEAP_SIZE
  
// 常量数据 
  -Z(CONST)DATA16_C,DATA16_ID,TLS16_ID,DIFUNCT,CHECKSUM=F100-FF7F 
  -Z(CONST)DATA20_C,DATA20_ID  
 
// 代码 
  -Z(CODE)CSTART,ISR_CODE,CODE_ID=F100-FF7F 
  -P(CODE)CODE,CODE16=F100-FF7F  

// 特殊矢量 
  -Z(CONST)JTAGSIGNATURE=FF80-FF83 
  -Z(CONST)BSLSIGNATURE=FF84-FF87 
  -Z(CODE)INTVEC=FF88-FFFF 
  -Z(CODE)RESET=FFFE-FFFF