TI中文支持网
TI专业的中文技术问题搜集分享网站

CCS Ram数组的限制

   MEMORY

{

    PAGE 1 :

   //RAMM0          : origin = 0x000050, length = 0x0003B0     /* on-chip RAM block M0 */
   //RAMM1          : origin = 0x000400, length = 0x000400     /* on-chip RAM block M1 */
   RaMM01         : origin = 0x000050, length = 0x0007B0

}

SECTIONS
{  

Debug_Section       : > RaMM01,         PAGE = 1

}

#pragma DATA_SECTION(Debug_Buff,"Debug_Section");
Uint16 Debug_Buff[1900];

这样编译时是正确的。

但如果修改为:Uint16 Debug_Buff[1968] 就会编译不通过。

RaMM01 的长度为 0x0007B0=1968,为何会错误。

 

如果进一步修改,将RaMM1用足。

Debug_Section       : > RaMM1,         PAGE = 1

Uint16 Debug_Buff[1024]

这样也是可以的。

为何,将RaMM0+RaMM1合并后,不能用足存储空间?

 

 

Yingtao Qian:

似乎是片内分页的问题,数组不能太大跨页。

   MEMORY

{

    PAGE 1 :

   //RAMM0          : origin = 0x000050, length = 0x0003B0     /* on-chip RAM block M0 */
   //RAMM1          : origin = 0x000400, length = 0x000400     /* on-chip RAM block M1 */
   RaMM01         : origin = 0x000050, length = 0x0007B0

}

SECTIONS
{  

Debug_Section       : > RaMM01,         PAGE = 1

}

#pragma DATA_SECTION(Debug_Buff,"Debug_Section");
Uint16 Debug_Buff[1900];

这样编译时是正确的。

但如果修改为:Uint16 Debug_Buff[1968] 就会编译不通过。

RaMM01 的长度为 0x0007B0=1968,为何会错误。

 

如果进一步修改,将RaMM1用足。

Debug_Section       : > RaMM1,         PAGE = 1

Uint16 Debug_Buff[1024]

这样也是可以的。

为何,将RaMM0+RaMM1合并后,不能用足存储空间?

 

 

Joey Mao:

通常是可以将两个合并使用的,只要空间足够应该是不会报错的,你检查一下是不是还有什么其他问题

   MEMORY

{

    PAGE 1 :

   //RAMM0          : origin = 0x000050, length = 0x0003B0     /* on-chip RAM block M0 */
   //RAMM1          : origin = 0x000400, length = 0x000400     /* on-chip RAM block M1 */
   RaMM01         : origin = 0x000050, length = 0x0007B0

}

SECTIONS
{  

Debug_Section       : > RaMM01,         PAGE = 1

}

#pragma DATA_SECTION(Debug_Buff,"Debug_Section");
Uint16 Debug_Buff[1900];

这样编译时是正确的。

但如果修改为:Uint16 Debug_Buff[1968] 就会编译不通过。

RaMM01 的长度为 0x0007B0=1968,为何会错误。

 

如果进一步修改,将RaMM1用足。

Debug_Section       : > RaMM1,         PAGE = 1

Uint16 Debug_Buff[1024]

这样也是可以的。

为何,将RaMM0+RaMM1合并后,不能用足存储空间?

 

 

囧:

编译不通过是报的存储空间不足的问题吗?

   MEMORY

{

    PAGE 1 :

   //RAMM0          : origin = 0x000050, length = 0x0003B0     /* on-chip RAM block M0 */
   //RAMM1          : origin = 0x000400, length = 0x000400     /* on-chip RAM block M1 */
   RaMM01         : origin = 0x000050, length = 0x0007B0

}

SECTIONS
{  

Debug_Section       : > RaMM01,         PAGE = 1

}

#pragma DATA_SECTION(Debug_Buff,"Debug_Section");
Uint16 Debug_Buff[1900];

这样编译时是正确的。

但如果修改为:Uint16 Debug_Buff[1968] 就会编译不通过。

RaMM01 的长度为 0x0007B0=1968,为何会错误。

 

如果进一步修改,将RaMM1用足。

Debug_Section       : > RaMM1,         PAGE = 1

Uint16 Debug_Buff[1024]

这样也是可以的。

为何,将RaMM0+RaMM1合并后,不能用足存储空间?

 

 

lish:

回复 囧:

Uint16 debug_buff[1968]如此定义会出现如下错误提示。

0x7b0  = 1968啊,为何会如此。

into available memory. run placement with alignment/blocking fails for>> Compilation failure section "Debug_Section" size 0x7b0 page 1. Available memory ranges: RaMM01 size: 0x7b0 unused: 0x7b0 max hole: 0x7b0 Debug_Section : > RaMM01, PAGE = 1

赞(0)
未经允许不得转载:TI中文支持网 » CCS Ram数组的限制
分享到: 更多 (0)