How to kill the memory size limit for the variable?

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

How to kill the memory size limit for the variable?

跳至解决方案
1,974 次查看
guohuoping
Contributor II

In the KDS IDE, I define a variable as follows:

#define MAX_DATA_LENGTH

(1024*40)

uint8 pic_data[MAX_DATA_LENGTH];

 

When I build the project, compiler push these problem

17070_17070.bmp2014-11-28_153109.bmp

I watch the .map file, I got the message as follow

17071_17071.bmp2014-11-28_153038.bmp

So I think, the compiler have the limitation size of 0x00008000 ,and I define the variable pic_data whitch overlow the limit.

Unfortunately, I have to define this variable which need to have buffer size of 40*1024 byte.

Also, I select the MCU part number MK10DX256VLH7, and it has ram size of 64k byte. I am sure the variable size is in the physical limit.

Can you tell me how to change the memory configuration!

 

消息编辑者为:guo huoping

标签 (1)
标记 (3)
0 项奖励
1 解答
1,509 次查看
BlackNight
NXP Employee
NXP Employee

See as well the comments section in

http://mcuoneclipse.com/2013/07/10/freertos-heap-with-segmented-kinetis-k-sram/

It would be possible that you combine the two memory areas, as long you do not have misaligned accesses.

Then you can have one piece of 64 KByte memory.

For this, remove the m_data_2000000 from the linker file and just use one 64 KByte data segment.

Erich

在原帖中查看解决方案

0 项奖励
4 回复数
1,509 次查看
BlackNight
NXP Employee
NXP Employee

You can allocate that variable in the m_data_2000000 area:

static uint8 __attribute__((section (".m_data_20000000"))) pic_data[MAX_DATA_LENGTH];

see

http://mcuoneclipse.com/2013/07/10/freertos-heap-with-segmented-kinetis-k-sram/

I hope this helps,

Erich

0 项奖励
1,509 次查看
guohuoping
Contributor II

Hi Erich:

Thank You!

0 项奖励
1,510 次查看
BlackNight
NXP Employee
NXP Employee

See as well the comments section in

http://mcuoneclipse.com/2013/07/10/freertos-heap-with-segmented-kinetis-k-sram/

It would be possible that you combine the two memory areas, as long you do not have misaligned accesses.

Then you can have one piece of 64 KByte memory.

For this, remove the m_data_2000000 from the linker file and just use one 64 KByte data segment.

Erich

0 项奖励
1,509 次查看
guohuoping
Contributor II

Thank you very much!

0 项奖励