This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
我用CCS3.3进行28335编程时,发现有如下编译错误
[Linking...] "H:\Program Files\C2000 Code Generation Tools 5.1.1\bin\cl2000" -@"Debug.lkf"
<Linking>
"E:\\work\\workccs3.3\\28335\\bianPQ\\DSP\\cmd\\28335_RAM_lnk.cmd", line 131: error:
run placement fails for object ".ebss"
"E:\\work\\workccs3.3\\28335\\bianPQ\\DSP\\cmd\\28335_RAM_lnk.cmd", line 126: error:
placement fails for object ".cinit"
error: errors encountered during linking; "./Debug/DSP_BPQ.out" not built
后来我检查发现好像与我定义的一个14400个浮点型数据的数组float PMSM_SINTAB[14400]有关,我将cmd中.ebss对应空间由原来的0x00C000-0xCFFF(RAML4)扩大为0x00C000-0xFFFF(RAML4567),并将数组改为7200个元素后编译能通过(但如果保持元素为14400个仍会报错)
1.请问出现上述错误是不是与我定义的数组过大有关,如果是的话为什么不提示内存不够用那?如果不是的话,又是什么原因引起的?
2.如果我想保持该数组元素数量为14400个,应该如何继续修改CMD文件使程序正常运行?
下面附上我修改过后的CMD文件以便于理解,多谢!
那请问是不是也应该给.cinit分配足够大的空间那,因为好像“程序上电时数据.cinit空间中的数据复制出来并存储在.ebss中”?
2.另外你说的数据存储在FLASH中是什么意思,对应着CMD中的哪一个段?
3.有没有关于自己分配内存的限制或者规则的说明文档(最好中文),我再研究一下
那请问是不是也应该给.cinit分配足够大的空间那,因为好像“程序上电时数据.cinit空间中的数据复制出来并存储在.ebss中”?
2.另外你说的数据存储在FLASH中是什么意思,对应着CMD中的哪一个段?
3.有没有关于自己分配内存的限制或者规则的说明文档(最好中文),我再研究一下
没有专门介绍内存分配的文档,中文就更少了,在以下文档的“Linking C/C++ Code”部分有些这方面的介绍,你可以参考一下:http://www.ti.com/dsp/docs/litabsmultiplefilelist.tsp?sectionId=3&tabId=409&literatureNumber=spru514h&docCategoryId=6&familyId=44&keyMatch=TMS320C28x Optimizing C/C++&tisearch=Search-EN-Everything
你好,我按照http://blog.csdn.net/wu159632/article/details/7965883该网页中的方法,将大的数组定义在了ZoneData7,解决了.ebss警告,但是.cinit段仍有如下警告:
"E:\\work\\workccs3.3\\28335\\bianPQ\\DSP\\cmd\\28335_RAM_lnk.cmd", line 127: error:
placement fails for object ".cinit"
error: errors encountered during linking; "./Debug/DSP_BPQ.out" not built
我尝试将.cinit段扩展为0x00A000-0x006000(L2-L6)发现仍会报错,请问我该怎样进一步解决这个问题?
2.我进行.cinit段扩展为0x00A000-0x006000(L2-L6),将其他映射在PAGE1的几种段全部分配在L7,请问这样分配没错吧,我感觉这是我能为.cinit段所分配的最大内存空间了,(L0-L1留给了.text,编译发现.text需要两个),如果是因为.cinit段不够大的原因的话,如何进一步扩大.cinit?如果不是,又是因为什么原因?
比较着急,希望大家也能帮助解决一下
现在还没有连接开发板,只是软件编程发现编译出错,难道“外扩SRAM"指的是需要外接静态存储器,同时像之前所说的一样通过分配段后才可用吗?
为什么现在编译.cinit段仍会报错那?