打印

IAR环境下连接文件文件的选择

[复制链接]
21473|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
IAR, AC, TE, RAM, ic
本人开发板所用的芯片型号是STM32F107VCT6,查手册知道内部flash是256k,而RAM是64k,在工程目录下有五个.icf文件(如第一张图所示) ,它们的区别也仅仅是内部ROM和RAM的起始地址和大小的不同。我们一般设置(如下面第二张图所示)的是project.icf或者stm32f10x_flash.icf或者stm32f10x_ram.icf, 而对于我的工程所需的flash比较大,如按照上面的设置就会出现下面错误:
Error[Lp011]: section placement failed: unable to allocate space for sections/blocks with a total estimated minimum size  
of 0x40f48 bytes in <[0x20000000-0x20017fff]> (total uncommitted space 0x18000).
          Needed:
            [0x20000000-0x20017fff]: 0x40f48 minimum (size: 0x18000)
意思就是内存空间不足吧。我对其链接文件进行编辑,设置如下图:
这样make不会出现链接错误,所需的内存空间如下:
   15 416 bytes of readonly  code memory
    4 095 bytes of readonly  data memory
  266 056 bytes of readwrite data memory
但下载到板子上的时候就会出现如下情况:
无法调试。这里原因可能是因为实际所需的内存空间大于片上实际的空间吧。但是我将链接文件设置为stm32f10x_flash_extsram.icf,也会出现上面一样的结果,而RAM和ROM的始末地址如下图:
该RAM地址段是属于片外的,而我的板子上也有512M的nand flash,请问这种情况是什么原因?难道是程序不能下载到nand flash里面么?还有就是这个icf文件的作用就是指定RAM和ROM的始末地址和大小的么?
注:该项目是用来解压JPEG图像的,算法是c写的,经过我优化之后还是需要差不多270k的空间,不知道各位有没有更经典的解压算法,跪求!拜谢!:D
沙发
i55| | 2011-12-14 15:11 | 只看该作者
用记事本打开stm32f10x_flash_extsram.icf自行更改

使用特权

评论回复
板凳
(⊙o⊙)你| | 2014-6-1 11:17 | 只看该作者
你的这个是哪个开发板呢

使用特权

评论回复
地板
戈卫东| | 2014-6-1 14:12 | 只看该作者
ROM需求0x40f48,你不能用107VC了,它的FLASH不够大。
而且好像STM32无法把代码存到NANDFLASH的吧?

使用特权

评论回复
5
guet_new_man| | 2014-6-1 21:40 | 只看该作者
本帖最后由 guet_new_man 于 2014-6-1 21:42 编辑

  这个明显是RAM不够用哦,建议需要外扩RAM(加一个512KB的SRAM上去吧)。芯片内部只有64KB的RAM,你的代码需要270KB的RAM,如果不想外扩RAM,就拿内部或者外部flash做缓存吧,但是要注意flash使用寿命的问题,flash一般都是10万次擦写,可能会有一些余量 ,但是最好不要操作10万次的擦写。

补充一点:你的内部flash完全够用于存储代码,因为你的代码编译后只有十几KB而已,外扩的flash用于存其他数据就行了

使用特权

评论回复
6
lkgsky| | 2015-6-15 14:41 | 只看该作者
这种情况是否可以优化一下你的代码,使他不用那么大的RAM.

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

40

帖子

1

粉丝