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 提供了两个分别名为 __persistent__no_init 的 C 语言扩展属性,便于使用 FRAM 来存储数据。若要了解有关这两个属性的更多信息,请参阅 https://www.iar.com/support/user-guides/user-guidesiar-embedded-workbench-for-ti-msp430/ 上的《IAR C/C++ 编译器用户指南》

对于 IAR 中的永久性存储功能,可以使用 __persistent 属性来声明变量。使用此属性声明的变量将分配到 DATA16_PDATA20_P 链接器存储器段中,默认的 IAR 链接器命令文件 (.xcl) 会自动将这些存储器段放到 FRAM 中。如下示例显示了被声明的变量 x,此变量在 C 启动期间不会初始化,并且会自动分配到 FRAM 存储器中。此外,与 CCS 中的行为类似,此变量只会在下载初始代码时被调试工具链初始化,而不会在应用启动或运行时初始化。

__persistent unsigned int x = 5;

同样,在 IAR 中也可以利用 __no_init 属性来获得不初始化存储功能。使用此属性来声明变量会将它们分配到 DATA16_NDATA20_N 链接器存储器段中。同样也不同于 __persistent 的是,被声明为 __no_init 的变量默认不会分配到 FRAM 中。如果需要使用此类功能, 需要对链接器命令文件进行少量修改。

__no_init unsigned int x;