我的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