CW 10.1 (Kinetis) - How to place functions and variables in .data section?

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

CW 10.1 (Kinetis) - How to place functions and variables in .data section?

跳至解决方案
1,537 次查看
Focon
Contributor II

Hi,

 

Since CW 10.1 should be GCC based, i thought that this should work:

 

void

FuncInRam(void) __attribute__ ((section(".data")));

 

 

 

int

main()

{

   FuncInRam();

}

 

void

FuncInRam(void)

{

...

}

 

But it doesn't. First of all, i wonder why the compiler complains about __attribute__ line. Secondly both going through the MAP-file and a debug session, shows me that the function is actually placed in .text section.

 

I have tried what was surgested in this thread:

https://community.freescale.com/thread/89042

 

With the same result, but this time the compiler complains about the #pragma line.

 

I am using CW 10.1 for microcontrollers (windows hosted) Standard Edition.

 

Also, I am unable to activate the GCC extensions, through the compiler settings. It says it doesn't know the -gcc flag.

 

Any help is appreciated, thank you.

0 项奖励
1 解答
1,017 次查看
Focon
Contributor II

Further study at the infocenter and MCU_Kinetis_Compiler.pdf let me com to this solution:

 

#pragma define_section FUNCRAM ".data" far_abs RX

 

#pragma section FUNCRAM begin

void

FuncInRam(void)

{

   ...

}

#pragma section FUNCRAM end

 

 

int

user_main()

{

   FuncInRam();

}

 

在原帖中查看解决方案

0 项奖励
2 回复数
1,018 次查看
Focon
Contributor II

Further study at the infocenter and MCU_Kinetis_Compiler.pdf let me com to this solution:

 

#pragma define_section FUNCRAM ".data" far_abs RX

 

#pragma section FUNCRAM begin

void

FuncInRam(void)

{

   ...

}

#pragma section FUNCRAM end

 

 

int

user_main()

{

   FuncInRam();

}

 

0 项奖励
1,017 次查看
Focon
Contributor II

For the variables part, I ofcourse mean, how to place variables in custom defined sections.

0 项奖励