楼主: SherlockLee

[其他] Error[Lp011]: section placement failed: unable to place 0x50 initializer bytes

[复制链接]

该用户从未签到

3

主题

17

帖子

0

新手上路

Rank: 1

积分
23
最后登录
1970-1-1
 楼主| 发表于 2012-6-14 15:34:10 | 显示全部楼层

回复:Error[Lp011]: section placement failed: unable to place 0x50 initializer byte

回复第 9 楼 于2012-06-14 15:19:17发表:
回复第 8 楼 于2012-06-14 14:59:04发表:
回复第 6 楼 于2012-06-07 16:20:57发表:
回复第 4 楼 于2012-06-07 14:09:52发表:
看意思是空间不够了,应该不是FLASH的问题,看一下RAM。 

我在飞思卡尔社区中搜索了一下,得到了一点提示,之所以出现这个问题,可能跟编译选项有关系,当我在C/C++ 将C语言由C99标准更改为C89标准后该问题就迎刃而解。设置如图所示。
 
 

修改编译选项没解决这个问题,之前的解决是我通过注释掉一段代码来实现,代码如下:
    /* Get addresses for any code sections that need to be copied from ROM to RAM.
     * The IAR tools have a predefined keyword that can be used to mark individual
     * functions for execution from RAM. Add "__ramfunc" before the return type in
     * the function prototype for any routines you need to execute from RAM instead
     * of ROM. ex: __ramfunc void foo(void);
     */
    #if (defined(IAR))
      code_relocate_ram = __section_begin("CodeRelocateRam");
    code_relocate = __section_begin("CodeRelocate");
    code_relocate_end = __section_end("CodeRelocate");

    /* Copy functions from ROM to RAM */
    n = code_relocate_end - code_relocate;
    while (n--)
      *code_relocate_ram++ = *code_relocate++;
    #endif
该段代码的含义就是将ROM中的数据Copy到RAM中,ROM的空间肯定没问题,看来是RAM趴下啦。
 

应该不会吧,你把这段屏蔽的部分放开,屏蔽前面其他的代码,看看有没有问题。这好像更说明是ROM空间的问题,因为屏蔽了代码,造成占用ROM空间减少,之前放不下的部分就放下了。
 

我用的是PK60FN1M0VLQ12的芯片,不清楚是不是片子的资源不够啦,我程序编译完后在MAP中可以看到RO数据和RW数据的大小。
   71 738 bytes of readonly  code memory
  123 134 bytes of readonly  data memory
   47 228 bytes of readwrite data memory

Errors: 1
Warnings: none
我给CSTACK分配的空间为12K,给HEAP分配的空间为8K,也不清楚这样分是否合理。
回复 支持 反对

使用道具 举报

该用户从未签到

3

主题

17

帖子

0

新手上路

Rank: 1

积分
23
最后登录
1970-1-1
 楼主| 发表于 2012-6-14 15:37:11 | 显示全部楼层

回复:Error[Lp011]: section placement failed: unable to place 0x50 initializer byte

回复第 10 楼 于2012-06-14 15:33:02发表:
还有,你在工程选项里,Linker->Config->Linker configuration file选的是什么文件?RAM还是FLASH? 

必须是FLASH嘛,RAM肯定不行。附件是我用的ICF文件。

1MB_Pflash.txt

2.54 KB, 下载次数: 41, 下载积分: 威望 1

回复 支持 反对

使用道具 举报

该用户从未签到

3

主题

33

帖子

0

新手上路

Rank: 1

积分
76
最后登录
1970-1-1
发表于 2012-6-14 16:18:13 | 显示全部楼层

回复:Error[Lp011]: section placement failed: unable to place 0x50 initializer byte

回复第 11 楼 于2012-06-14 15:34:10发表:
回复第 9 楼 于2012-06-14 15:19:17发表:
回复第 8 楼 于2012-06-14 14:59:04发表:
回复第 6 楼 于2012-06-07 16:20:57发表:
回复第 4 楼 于2012-06-07 14:09:52发表:
看意思是空间不够了,应该不是FLASH的问题,看一下RAM。 

我在飞思卡尔社区中搜索了一下,得到了一点提示,之所以出现这个问题,可能跟编译选项有关系,当我在C/C++ 将C语言由C99标准更改为C89标准后该问题就迎刃而解。设置如图所示。
 
 

修改编译选项没解决这个问题,之前的解决是我通过注释掉一段代码来实现,代码如下:
    /* Get addresses for any code sections that need to be copied from ROM to RAM.
     * The IAR tools have a predefined keyword that can be used to mark individual
     * functions for execution from RAM. Add "__ramfunc" before the return type in
     * the function prototype for any routines you need to execute from RAM instead
     * of ROM. ex: __ramfunc void foo(void);
     */
    #if (defined(IAR))
      code_relocate_ram = __section_begin("CodeRelocateRam");
    code_relocate = __section_begin("CodeRelocate");
    code_relocate_end = __section_end("CodeRelocate");

    /* Copy functions from ROM to RAM */
    n = code_relocate_end - code_relocate;
    while (n--)
      *code_relocate_ram++ = *code_relocate++;
    #endif
该段代码的含义就是将ROM中的数据Copy到RAM中,ROM的空间肯定没问题,看来是RAM趴下啦。
 

应该不会吧,你把这段屏蔽的部分放开,屏蔽前面其他的代码,看看有没有问题。这好像更说明是ROM空间的问题,因为屏蔽了代码,造成占用ROM空间减少,之前放不下的部分就放下了。
 

我用的是PK60FN1M0VLQ12的芯片,不清楚是不是片子的资源不够啦,我程序编译完后在MAP中可以看到RO数据和RW数据的大小。
   71 738 bytes of readonly  code memory
  123 134 bytes of readonly  data memory
   47 228 bytes of readwrite data memory

Errors: 1
Warnings: none
我给CSTACK分配的空间为12K,给HEAP分配的空间为8K,也不清楚这样分是否合理。
 

你的ICF文件里,ROM是1M,RAM是128K。你的资源足够了。
回复 支持 反对

使用道具 举报

该用户从未签到

3

主题

17

帖子

0

新手上路

Rank: 1

积分
23
最后登录
1970-1-1
 楼主| 发表于 2012-6-18 11:50:10 | 显示全部楼层

回复:Error[Lp011]: section placement failed: unable to place 0x50 initializer byte

回复第 13 楼 于2012-06-14 16:18:13发表:
回复第 11 楼 于2012-06-14 15:34:10发表:
回复第 9 楼 于2012-06-14 15:19:17发表:
回复第 8 楼 于2012-06-14 14:59:04发表:
回复第 6 楼 于2012-06-07 16:20:57发表:
回复第 4 楼 于2012-06-07 14:09:52发表:
看意思是空间不够了,应该不是FLASH的问题,看一下RAM。 

我在飞思卡尔社区中搜索了一下,得到了一点提示,之所以出现这个问题,可能跟编译选项有关系,当我在C/C++ 将C语言由C99标准更改为C89标准后该问题就迎刃而解。设置如图所示。
 
 

修改编译选项没解决这个问题,之前的解决是我通过注释掉一段代码来实现,代码如下:
    /* Get addresses for any code sections that need to be copied from ROM to RAM.
     * The IAR tools have a predefined keyword that can be used to mark individual
     * functions for execution from RAM. Add "__ramfunc" before the return type in
     * the function prototype for any routines you need to execute from RAM instead
     * of ROM. ex: __ramfunc void foo(void);
     */
    #if (defined(IAR))
      code_relocate_ram = __section_begin("CodeRelocateRam");
    code_relocate = __section_begin("CodeRelocate");
    code_relocate_end = __section_end("CodeRelocate");

    /* Copy functions from ROM to RAM */
    n = code_relocate_end - code_relocate;
    while (n--)
      *code_relocate_ram++ = *code_relocate++;
    #endif
该段代码的含义就是将ROM中的数据Copy到RAM中,ROM的空间肯定没问题,看来是RAM趴下啦。
 

应该不会吧,你把这段屏蔽的部分放开,屏蔽前面其他的代码,看看有没有问题。这好像更说明是ROM空间的问题,因为屏蔽了代码,造成占用ROM空间减少,之前放不下的部分就放下了。
 

我用的是PK60FN1M0VLQ12的芯片,不清楚是不是片子的资源不够啦,我程序编译完后在MAP中可以看到RO数据和RW数据的大小。
   71 738 bytes of readonly  code memory
  123 134 bytes of readonly  data memory
   47 228 bytes of readwrite data memory

Errors: 1
Warnings: none
我给CSTACK分配的空间为12K,给HEAP分配的空间为8K,也不清楚这样分是否合理。
 

你的ICF文件里,ROM是1M,RAM是128K。你的资源足够了。
 

切忌,一定要注意下图中圈红的部分:
 
LibraryConfiguration.jpg
回复 支持 反对

使用道具 举报

该用户从未签到

2

主题

27

帖子

0

新手上路

Rank: 1

积分
46
最后登录
1970-1-1
发表于 2012-6-21 00:21:31 | 显示全部楼层

RE:Error[Lp011]: section placement failed: unable to place 0x50 initializer byte

不懂的飘过
回复 支持 反对

使用道具 举报

该用户从未签到

0

主题

3

帖子

0

新手上路

Rank: 1

积分
9
最后登录
1970-1-1
发表于 2012-6-26 22:23:16 | 显示全部楼层

RE:Error[Lp011]: section placement failed: unable to place 0x50 initializer byte

我向风一样飘过
回复 支持 反对

使用道具 举报

该用户从未签到

0

主题

1

帖子

0

新手上路

Rank: 1

积分
0
最后登录
1970-1-1
发表于 2012-11-11 00:44:15 | 显示全部楼层

回复:Error[Lp011]: section placement failed: unable to place 0x50 initializer byte

好帖子~
回复 支持 反对

使用道具 举报

该用户从未签到

0

主题

12

帖子

1

注册会员

Rank: 2

积分
54
最后登录
2023-4-26
发表于 2013-4-17 17:20:48 | 显示全部楼层

回复:Error[Lp011]: section placement failed: unable to place 0x50 initializer byte

悲剧我也遇到这个问题
回复 支持 反对

使用道具 举报

该用户从未签到

0

主题

12

帖子

1

注册会员

Rank: 2

积分
54
最后登录
2023-4-26
发表于 2013-4-17 17:23:11 | 显示全部楼层

回复:Error[Lp011]: section placement failed: unable to place 0x50 initializer byte

有没有人解决了呢 ????
回复 支持 反对

使用道具 举报

该用户从未签到

0

主题

12

帖子

1

注册会员

Rank: 2

积分
54
最后登录
2023-4-26
发表于 2013-4-17 17:23:59 | 显示全部楼层

回复:Error[Lp011]: section placement failed: unable to place 0x50 initializer byte

看来K60 的高端不是那么好用啊
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条

Archiver|手机版|小黑屋|恩智浦技术社区

GMT+8, 2025-7-21 06:36 , Processed in 0.103905 second(s), 30 queries , MemCache On.

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.

快速回复 返回顶部 返回列表