真的是一旦干起活来,每天都会出现问题...但是现在觉得调试翻来覆去就那几种问题。今天改了改代码然后报错:Description Resource Path Location Type #10099-D program will not fit into available memory, or the section contains a call site that requires a trampoline that can't be generated for this section. run placement with alignment/blocking fails for section ".esysmem" size 0x400 page 1.
这个问题就说程序和内存不匹配,于是检查内存分配(Memory Allocation),点击View——>Memory Allocation,然后鼠标点击程序中的任意位置,就会出现内存的分配情况。目前代码中确实存在未正确分配的部分:
点开红色部分,可以看到现实了.esysmem出现问题,回到cmd文件中可以看到它被分配给了RAMLS5。于是去查看该部分的实际存储结果:
由于.ebss和.esysmem都分配给了这块内存,但是它的大小为2048,这两部分的大小1542+1024>2048,因此esysmem没能被存储到相应位置。所以,我们需要为.esysmem重新制定位置。可以看到RAMLS6目前没有被占用,并且2048>1024,因此修改cmd文件:
.esysmem : > RAMLS6, PAGE = 1
再次运行程序,报错消失,可以看到通过修改cmd,esysmem被存储在了RAMLS6中: