Strings going to SRAM

取消
显示结果 
显示  仅  | 搜索替代 
您的意思是: 

Strings going to SRAM

1,182 次查看
manishsangram
Contributor IV

Hi,

We are using S12ZVMC128 MCU.

All string constants declared in the application code get assigned to SRAM by the compiler. As per what we have read constant strings should be in Flash RAM.

What settings have to be changed / declaration made to avoid this ?

标记 (3)
0 项奖励
回复
2 回复数

996 次查看
iggi
NXP Employee
NXP Employee

Hi,

The most probably you didn't put const in front of the string defined:

const char mystring[] = "Hello";

With the const, constant string can be allocated to Flash, otherwise it will be distributed to RAM.

Also, you can use us #pragma declaration define a segment (constant, data, code) and still 'const' is necessary

Syntax:  #pragma CONST_SEG <name>|DEFAULT

This segment must be explicitly allocated within the PLACEMENT block in the link parameter file. For more information, refer to the chapter Linker Issues of the Build Tools Utilities reference manual.

The following listing exemplifies the correct usage of the CONST_SEGpragma:

/* p.h */

#pragma CONST_SEG MY_ROM

extern const int cx;

#pragma CONST_SEG DEFAULT

extern const int y;

/* p.c */

#pragma CONST_SEG MY_RAM

const int cx = 1;

#pragma CONST_SEG DEFAULT

const int cy = 2;

/* main.c */

#include "p.h"

void main(void)

{s = cx + cy;}

Find more info in CodeWarrior Help by searching "S12Z Pragmas".

Regards,

iggi

0 项奖励
回复

996 次查看
manishsangram
Contributor IV

Hello iggi,

Our usage of strings are more inline, meaning we are not declaring string constants at all but directly using them. For example.

sprintf("Hello World");

Why would the above string go to RAM ?

0 项奖励
回复