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

CCS编译placement fails for object ".txet"

我的CCS编译的时候报错:placement fails for object ".txet" , size 0x152d(page0) . Available ranges :PRAMH0  size:0x1000 unused:oxfbd  max hole:0xfbd 。

size:0x152d(page0)表示编译生成的汇编指令代码大小0x152d   ,Available ranges :PRAMH0  size:0x1000表示存放.text字段的空间大小为0x1000  ,unused:oxfbd表示暂时未被利用的空间为0xfbd ,因为0xfbd < 0x152d所以 placement fails for object ".txet" 。这样理解是否正确?

那么这种情况下如何修改SRAM.CMD的.text字段?

谢谢!

   /* Allocate program areas: */
   .reset           : > PRAMH0,      PAGE = 0
   .text            : > PRAMH0,      PAGE = 0
   .cinit           : > PRAMH0,      PAGE = 0

rookiecalf:

代码过大,可以把其他空间分配给.text段

我的CCS编译的时候报错:placement fails for object ".txet" , size 0x152d(page0) . Available ranges :PRAMH0  size:0x1000 unused:oxfbd  max hole:0xfbd 。

size:0x152d(page0)表示编译生成的汇编指令代码大小0x152d   ,Available ranges :PRAMH0  size:0x1000表示存放.text字段的空间大小为0x1000  ,unused:oxfbd表示暂时未被利用的空间为0xfbd ,因为0xfbd < 0x152d所以 placement fails for object ".txet" 。这样理解是否正确?

那么这种情况下如何修改SRAM.CMD的.text字段?

谢谢!

   /* Allocate program areas: */
   .reset           : > PRAMH0,      PAGE = 0
   .text            : > PRAMH0,      PAGE = 0
   .cinit           : > PRAMH0,      PAGE = 0

Zhiqiang Dong1:

回复 rookiecalf:

请问怎么把其他空间分配给.text段 , 书上没有讲怎么操作SRAM.CMD , 可以举个例子吗?谢谢~

我的CCS编译的时候报错:placement fails for object ".txet" , size 0x152d(page0) . Available ranges :PRAMH0  size:0x1000 unused:oxfbd  max hole:0xfbd 。

size:0x152d(page0)表示编译生成的汇编指令代码大小0x152d   ,Available ranges :PRAMH0  size:0x1000表示存放.text字段的空间大小为0x1000  ,unused:oxfbd表示暂时未被利用的空间为0xfbd ,因为0xfbd < 0x152d所以 placement fails for object ".txet" 。这样理解是否正确?

那么这种情况下如何修改SRAM.CMD的.text字段?

谢谢!

   /* Allocate program areas: */
   .reset           : > PRAMH0,      PAGE = 0
   .text            : > PRAMH0,      PAGE = 0
   .cinit           : > PRAMH0,      PAGE = 0

囧:

你把你的CMD文件都贴出来,只要|上另外一块内存区域就可以

我的CCS编译的时候报错:placement fails for object ".txet" , size 0x152d(page0) . Available ranges :PRAMH0  size:0x1000 unused:oxfbd  max hole:0xfbd 。

size:0x152d(page0)表示编译生成的汇编指令代码大小0x152d   ,Available ranges :PRAMH0  size:0x1000表示存放.text字段的空间大小为0x1000  ,unused:oxfbd表示暂时未被利用的空间为0xfbd ,因为0xfbd < 0x152d所以 placement fails for object ".txet" 。这样理解是否正确?

那么这种情况下如何修改SRAM.CMD的.text字段?

谢谢!

   /* Allocate program areas: */
   .reset           : > PRAMH0,      PAGE = 0
   .text            : > PRAMH0,      PAGE = 0
   .cinit           : > PRAMH0,      PAGE = 0

Zhiqiang Dong1:

回复 囧:

MEMORY{PAGE 0 :    PRAMH0     : origin = 0x3f8000, length = 0x001000                PAGE 1 :    /* SARAM                     */        RAMM0    : origin = 0x000000, length = 0x000400   RAMM1    : origin = 0x000400, length = 0x000400   /* Peripheral Frame 0:   */   DEV_EMU    : origin = 0x000880, length = 0x000180   FLASH_REGS : origin = 0x000A80, length = 0x000060   CSM        : origin = 0x000AE0, length = 0x000010   XINTF      : origin = 0x000B20, length = 0x000020   CPU_TIMER0 : origin = 0x000C00, length = 0x000008   CPU_TIMER1 : origin = 0x000C08, length = 0x000008            CPU_TIMER2 : origin = 0x000C10, length = 0x000008            PIE_CTRL   : origin = 0x000CE0, length = 0x000020   PIE_VECT   : origin = 0x000D00, length = 0x000100   /* Peripheral Frame 1:   */   ECAN_A     : origin = 0x006000, length = 0x000100   ECAN_AMBOX : origin = 0x006100, length = 0x000100   /* Peripheral Frame 2:   */   SYSTEM     : origin = 0x007010, length = 0x000020   SPI_A      : origin = 0x007040, length = 0x000010   SCI_A      : origin = 0x007050, length = 0x000010   XINTRUPT   : origin = 0x007070, length = 0x000010   GPIOMUX    : origin = 0x0070C0, length = 0x000020   GPIODAT    : origin = 0x0070E0, length = 0x000020   ADC        : origin = 0x007100, length = 0x000020   EV_A       : origin = 0x007400, length = 0x000040   EV_B       : origin = 0x007500, length = 0x000040   SPI_B      : origin = 0x007740, length = 0x000010   SCI_B      : origin = 0x007750, length = 0x000010   MCBSP_A    : origin = 0x007800, length = 0x000040   /* CSM Password Locations */   CSM_PWL    : origin = 0x3F7FF8, length = 0x000008   /* SARAM                    */        DRAMH0     : origin = 0x3f9000, length = 0x001000         }  SECTIONS{   /* Allocate program areas: */   .reset           : > PRAMH0,      PAGE = 0   .text            : > PRAMH0,      PAGE = 0   .cinit           : > PRAMH0,      PAGE = 0   /* Allocate data areas: */   .stack           : > RAMM1,       PAGE = 1   .bss             : > DRAMH0,      PAGE = 1   .ebss            : > DRAMH0,      PAGE = 1   .const           : > DRAMH0,      PAGE = 1   .econst          : > DRAMH0,      PAGE = 1         .sysmem          : > DRAMH0,      PAGE = 1      /* Allocate Peripheral Frame 0 Register Structures:   */   DevEmuRegsFile    : > DEV_EMU,    PAGE = 1   FlashRegsFile     : > FLASH_REGS, PAGE = 1   CsmRegsFile       : > CSM,        PAGE = 1   XintfRegsFile     : > XINTF,      PAGE = 1   CpuTimer0RegsFile : > CPU_TIMER0, PAGE = 1         CpuTimer1RegsFile : > CPU_TIMER1, PAGE = 1         CpuTimer2RegsFile : > CPU_TIMER2, PAGE = 1         PieCtrlRegsFile   : > PIE_CTRL,   PAGE = 1         PieVectTable      : > PIE_VECT,   PAGE = 1   /* Allocate Peripheral Frame 2 Register Structures:   */   ECanaRegsFile     : > ECAN_A,      PAGE = 1      ECanaMboxesFile   : > ECAN_AMBOX   PAGE = 1   /* Allocate Peripheral Frame 1 Register Structures:   */   SysCtrlRegsFile   : > SYSTEM,     PAGE = 1   SpiaRegsFile      : > SPI_A,      PAGE = 1   SciaRegsFile      : > SCI_A,      PAGE = 1   XIntruptRegsFile  : > XINTRUPT,   PAGE = 1   GpioMuxRegsFile   : > GPIOMUX,    PAGE = 1   GpioDataRegsFile  : > GPIODAT     PAGE = 1   AdcRegsFile       : > ADC,        PAGE = 1   EvaRegsFile       : > EV_A,       PAGE = 1   EvbRegsFile       : > EV_B,       PAGE = 1   ScibRegsFile      : > SCI_B,      PAGE = 1   McbspaRegsFile    : > MCBSP_A,    PAGE = 1   /* CSM Password Locations */   CsmPwlFile      : > CSM_PWL,     PAGE = 1}

其中

PRAMH0     : origin = 0x3f8000, length = 0x001000   

DRAMH0     : origin = 0x3f9000, length = 0x001000 

我将上面的两个字段修改为

PRAMH0     : origin = 0x3f8000, length = 0x002000   

DRAMH0     : origin = 0x3fa000, length = 0x001000 

就可以啦,但是不知会不会导致其他存储错误

我的CCS编译的时候报错:placement fails for object ".txet" , size 0x152d(page0) . Available ranges :PRAMH0  size:0x1000 unused:oxfbd  max hole:0xfbd 。

size:0x152d(page0)表示编译生成的汇编指令代码大小0x152d   ,Available ranges :PRAMH0  size:0x1000表示存放.text字段的空间大小为0x1000  ,unused:oxfbd表示暂时未被利用的空间为0xfbd ,因为0xfbd < 0x152d所以 placement fails for object ".txet" 。这样理解是否正确?

那么这种情况下如何修改SRAM.CMD的.text字段?

谢谢!

   /* Allocate program areas: */
   .reset           : > PRAMH0,      PAGE = 0
   .text            : > PRAMH0,      PAGE = 0
   .cinit           : > PRAMH0,      PAGE = 0

囧:

回复 Zhiqiang Dong1:

有可能有有问题,具体要看这两个RAM区域是否真的有这么长,你用的是C2000哪个产品

我的CCS编译的时候报错:placement fails for object ".txet" , size 0x152d(page0) . Available ranges :PRAMH0  size:0x1000 unused:oxfbd  max hole:0xfbd 。

size:0x152d(page0)表示编译生成的汇编指令代码大小0x152d   ,Available ranges :PRAMH0  size:0x1000表示存放.text字段的空间大小为0x1000  ,unused:oxfbd表示暂时未被利用的空间为0xfbd ,因为0xfbd < 0x152d所以 placement fails for object ".txet" 。这样理解是否正确?

那么这种情况下如何修改SRAM.CMD的.text字段?

谢谢!

   /* Allocate program areas: */
   .reset           : > PRAMH0,      PAGE = 0
   .text            : > PRAMH0,      PAGE = 0
   .cinit           : > PRAMH0,      PAGE = 0

Zhiqiang Dong1:

回复 囧:

用的是320F2812,谢谢

资料上介绍说0x3f8000~0x3fa000是H0 SRAM , 0x3fa000~0x3ff000为保留 ,

我的CCS编译的时候报错:placement fails for object ".txet" , size 0x152d(page0) . Available ranges :PRAMH0  size:0x1000 unused:oxfbd  max hole:0xfbd 。

size:0x152d(page0)表示编译生成的汇编指令代码大小0x152d   ,Available ranges :PRAMH0  size:0x1000表示存放.text字段的空间大小为0x1000  ,unused:oxfbd表示暂时未被利用的空间为0xfbd ,因为0xfbd < 0x152d所以 placement fails for object ".txet" 。这样理解是否正确?

那么这种情况下如何修改SRAM.CMD的.text字段?

谢谢!

   /* Allocate program areas: */
   .reset           : > PRAMH0,      PAGE = 0
   .text            : > PRAMH0,      PAGE = 0
   .cinit           : > PRAMH0,      PAGE = 0

Zhiqiang Dong1:

回复 囧:

用的是320F2812 , 资料上说0x3f8000~0x3fa000是H0 SARAM , 0x3fa000~0x3ff000是保留

我的CCS编译的时候报错:placement fails for object ".txet" , size 0x152d(page0) . Available ranges :PRAMH0  size:0x1000 unused:oxfbd  max hole:0xfbd 。

size:0x152d(page0)表示编译生成的汇编指令代码大小0x152d   ,Available ranges :PRAMH0  size:0x1000表示存放.text字段的空间大小为0x1000  ,unused:oxfbd表示暂时未被利用的空间为0xfbd ,因为0xfbd < 0x152d所以 placement fails for object ".txet" 。这样理解是否正确?

那么这种情况下如何修改SRAM.CMD的.text字段?

谢谢!

   /* Allocate program areas: */
   .reset           : > PRAMH0,      PAGE = 0
   .text            : > PRAMH0,      PAGE = 0
   .cinit           : > PRAMH0,      PAGE = 0

囧:

回复 Zhiqiang Dong1:

所以你只要直接把

DRAMH0     : origin = 0x3fa000, length = 0x001000 

去掉就可以,就等于不要把H0RAM分成两块,合起来放.text

我的CCS编译的时候报错:placement fails for object ".txet" , size 0x152d(page0) . Available ranges :PRAMH0  size:0x1000 unused:oxfbd  max hole:0xfbd 。

size:0x152d(page0)表示编译生成的汇编指令代码大小0x152d   ,Available ranges :PRAMH0  size:0x1000表示存放.text字段的空间大小为0x1000  ,unused:oxfbd表示暂时未被利用的空间为0xfbd ,因为0xfbd < 0x152d所以 placement fails for object ".txet" 。这样理解是否正确?

那么这种情况下如何修改SRAM.CMD的.text字段?

谢谢!

   /* Allocate program areas: */
   .reset           : > PRAMH0,      PAGE = 0
   .text            : > PRAMH0,      PAGE = 0
   .cinit           : > PRAMH0,      PAGE = 0

Zhiqiang Dong1:

回复 囧:

我把DRAMH0     : origin = 0x3fa000, length = 0x001000 注释后,

将.bss,.ebss,.const ,.econst ,.sysmem字段地址也修改为PRAMH0修改前:

   /* Allocate program areas: */   .reset           : > PRAMH0,      PAGE = 0   .text            : > PRAMH0,      PAGE = 0   .cinit           : > PRAMH0,      PAGE = 0   /* Allocate data areas: */   .stack           : > RAMM1,       PAGE = 1   .bss             : > DRAMH0,      PAGE = 1   .ebss            : > DRAMH0,      PAGE = 1   .const           : > DRAMH0,      PAGE = 1   .econst          : > DRAMH0,      PAGE = 1         .sysmem          : > DRAMH0,      PAGE = 1

修改后:

   /* Allocate program areas: */   .reset           : > PRAMH0,      PAGE = 0   .text            : > PRAMH0,      PAGE = 0   .cinit           : > PRAMH0,      PAGE = 0   /* Allocate data areas: */   .stack           : > RAMM1,       PAGE = 1   .bss             : > PRAMH0,      PAGE = 0   .ebss            : > PRAMH0,      PAGE = 0   .const           : > PRAMH0,      PAGE = 0   .econst          : > PRAMH0,      PAGE = 0        .sysmem          : > PRAMH0,      PAGE = 0

这样前面的问题就解决了。

但是我使用的double数组变长后,long double x[NCAL+1] = { 0 };  NCAL从10变到100后

报错:placement fails for object ".econst" , 请问这种情况怎么处理 ? 谢谢!

我的CCS编译的时候报错:placement fails for object ".txet" , size 0x152d(page0) . Available ranges :PRAMH0  size:0x1000 unused:oxfbd  max hole:0xfbd 。

size:0x152d(page0)表示编译生成的汇编指令代码大小0x152d   ,Available ranges :PRAMH0  size:0x1000表示存放.text字段的空间大小为0x1000  ,unused:oxfbd表示暂时未被利用的空间为0xfbd ,因为0xfbd < 0x152d所以 placement fails for object ".txet" 。这样理解是否正确?

那么这种情况下如何修改SRAM.CMD的.text字段?

谢谢!

   /* Allocate program areas: */
   .reset           : > PRAMH0,      PAGE = 0
   .text            : > PRAMH0,      PAGE = 0
   .cinit           : > PRAMH0,      PAGE = 0

囧:

回复 Zhiqiang Dong1:

说明你的PRAMH0 RAM也不够了,你需要把他改成RAML0 或者RAML1, 发现你的CMD并没有写这一段就在PAGE1里面加:

RAML01     : origin = 0x00 8000, length = 0x002000

赞(0)
未经允许不得转载:TI中文支持网 » CCS编译placement fails for object ".txet"
分享到: 更多 (0)