Quantcast
Channel: MSP 低功耗微控制器论坛 - 最近的话题
Viewing all articles
Browse latest Browse all 3634

开发FR57XX时将DATA段放到FRAM中的方法

$
0
0

Hi 大家好,

这里和大家一起分享一下开发FR57XX时将DATA段放到FRAM中的方法

FRAM是TI最新半导体技术在MCU上的应用。

其FRAM与普通的FLASH与SRAM比主要有两个优势:

1、FRAM像FLASH一样数据掉电不易失;

2、FRAM像SRAM一样,可以直接在上面运行程序;

所以FRAM可以身兼FLASH与RAM两职。

在开发FR57XX MCU时可以发现,FR57XX既有FRAM,也有RAM。

细心的朋友会发现在CCS与IAR中,编译器均有默认的数据段代码段堆栈等地址分配,有些在FRAM中,有些在RAM中。

如果想尝试将所有的代码数据均放在FRAM中则需要对编译器的MCU配置文件进行修改。

1、CCS V5的修改方法

CCS的存储器地址映射表是放在.cmd文件中的

打开工程中的.cmd文件,系统默认将.bss(全局静态变量)与.stack(堆栈)放在RAM中

如下所示:

 .bss       : {} > RAM                /* GLOBAL & STATIC VARS              */

 .stack     : {} > RAM (HIGH)         /* SOFTWARE SYSTEM STACK             */

若需要将其放在FRAM中则可以如下修改配置文件:

.bss       : {} > FRAM                /* GLOBAL & STATIC VARS              */

 .stack     : {} > FRAM (HIGH)         /* SOFTWARE SYSTEM STACK             */

2、IAR中的修改方法

IAR的存储器地址映射表是放在.xcl文件中的

打开该文件后,将放在RAM中的段均映射到FRAM中即可。

以FR5739为例:打开lnk430fr5739.xcl

看到RAM的地址区间为// Read/write memory (RAM):        1C00-1FFF

FRAM的地址区间为// Read-only memory (FRAM):        C200-FFFF

放在RAM区域内的是:动态数据

-Z(DATA)DATA16_I,DATA16_Z,DATA16_N,TLS16_I,DATA16_HEAP+_DATA16_HEAP_SIZE=1C00-1FFF

-Z(DATA)CODE_I

-Z(DATA)CSTACK+_STACK_SIZE#

将其放到FRAM中去:

-Z(DATA)DATA16_I,DATA16_Z,DATA16_N,TLS16_I,DATA16_HEAP+_DATA16_HEAP_SIZE=C200-FFFF

-Z(DATA)CODE_I

-Z(DATA)CSTACK+_STACK_SIZE#

编译连接后调试可以发现此时动态变量已经在FRAM中。

注意:.xcl在工程中不能修改

其文件位置为:\IAR Systems\Embedded Workbench 6.0 Evaluation\430\config

建议复制一个原始文件改名保存,将lnk430fr5739.xcl剪切到桌面打开-修改-保存,在剪切回config目录下。

IAR .xcl中DATA,CODE等段的定义与说明详见《MSP430 IAR C/C++ Compiler Reference Guide》与

《IAR Linker and Library Tools Reference Guide》

如果上面说的内容有错误或者问题,请大家直接指出,一起讨论并解决。


Viewing all articles
Browse latest Browse all 3634

Trending Articles