cc3200 IAR编译报错
TI工程师你们好!
我在使用IAR7.2编译程序的时候,当加上部分代码之后,报错如下:
IAR ELF Linker V7.20.5.7591/W32 for ARM
Copyright 2007-2014 IAR Systems AB.
Error[Lp011]: section placement failed
unable to allocate space for sections/blocks with a total estimated minimum size of 0x2bc5c bytes (max align 0x8) in
<[0x20004000-0x2002ffff]> (total uncommitted space 0x2bc00).
79 254 bytes of readonly code memory
16 774 bytes of readonly data memory
84 248 bytes of readwrite data memory
问题1:上面提示空间不足,但是readonly code+readonly data实在flash里面存储的,readwirte data是在Sram里面的,上面提示[0x20004000-0x2002ffff]越界!编译时候,应该是用readwiite data去和[0x20004000-0x2002ffff]比较吧?
问题2:编译的大小0x2bc5c 具体是指readonly code+readonly data+readwirte data?
问题3:[0x20000000-0x20004000]是留给bootloader,那[0x2002ffff-0x2003ffff]这段是留给上面地方使用呢?
问题4:我把一个1024字节的数组,加const去掉const都会显示Lp011,请问这个是什么问题:
注意CC3200程序执行是在RAM中,也就是会把SPI Flash中的代码读取到RAM中运行,在IAR中CC3200.ICF文件中定义RAM大小
// Define a region for the on-chip SRAM.
// SRAM size of 240KB for CC3200 ES 1.33 device
define region SRAM = mem:[from 0x20004000 to 0x2003C000];
program ( code + stack size + dynamic memory needed ) 要小于 240 KB
在ccs 中通过cc3200v1p32.cmd这个文件可以看到
#define RAM_BASE 0x20004000
/* System memory map */
MEMORY
{
/* Application uses internal RAM for program and data */
SRAM_CODE (RWX) : origin = 0x20004000, length = 0x13000 代码
SRAM_DATA (RWX) : origin = 0x20017000, length = 0x19000 变量
}
你好,cc3200需要把程序读取到sram中来执行的话,那是不是sram得提供两套独立的访问总线,不然就不是哈佛结构了吧
SRAM_DATA (RWX) : origin = 0x20017000, length = 0x19000 变量
这个地址能修改一些吗,我想储存一张图片的信息,要150KB,往哪里存储呢
可以改的,你参考一下例程blinky,里面有个icf文件,你可以用它来做参考,IAR可以通过它来设置内存。
不过如果你要存储150KB的图片,建议你把它存在FLASH里面吧,放RAM太占空间了。