请选择 进入手机版 | 继续访问电脑版
论坛
登录 | 立即注册 设为首页收藏本站 切换到宽版
查看: 427|回复: 0

esp8266链接失败

[复制链接]

2

主题

2

帖子

29

积分

新手上路

Rank: 1

积分
29
发表于 2018-10-30 16:37:44 | 显示全部楼层 |阅读模式
软件平台:eclipse  non-os nanopb(被移植的库)
硬件:esp8266

有没有对esp8266编译比较熟悉的呀,我这里出现移植一个库,库可以编译成功,最后链接出现`iram1_0_seg'这个报错,网上说这个代表了IRAM超出了32k。我工程不变,只是不调用移植的库,再次编译这个工程,打开编译ok的dump文件查看,还剩余7k多IRAM空间,并且这个这个被移植的库很多都是加了ICACHE_FLASH_ATTR,最后占用IRAM的空间很小的,大部分都在flash,但是就会出现上述的问题,有人碰到类似的问题吗?谢谢

我已做过的测试:
1.不调用移植库(链接ok)
Sections:
  4 .text         0000625c  40100000  40100000  00000758  2**2
它的eagle.dump文件中剩余iram空间为 (0x8000-0x625c) = 7588bytes


2.在其他平台上编译我的移植库(IAR for ARM)
    pb_common.o                    266
    pb_decode.o                  4 060      376
    pb_encode.o                  2 722      236

代码段在接近7k,data 612bytes

3.调用移植库(链接失败)
编译ok,链接失败,查看编译好的libnanopb.a
文件:libnanopb.a(pb_common.o)
共有 30 个节头,从偏移量 0xf20 开始:
节头:
  [Nr] Name              Type            Addr     Off    Size   ES Flg Lk Inf Al
  [ 0]                   NULL            00000000 000000 000000 00      0   0  0
  [ 3] .data             PROGBITS        00000000 000034 000000 00  WA  0   0  1
  [ 4] .bss              NOBITS          00000000 000034 000000 00  WA  0   0  1
  [ 5] .irom0.text       PROGBITS        00000000 000034 000179 00  AX  0   0  4

文件:libnanopb.a(pb_decode.o)
共有 33 个节头,从偏移量 0x81dc 开始:

节头:
  [Nr] Name              Type            Addr     Off    Size   ES Flg Lk Inf Al
  [ 2] .text             PROGBITS        00000000 000034 000000 00  AX  0   0  1
  [ 3] .data             PROGBITS        00000000 000034 000000 00  WA  0   0  1
  [ 4] .bss              NOBITS          00000000 000034 000000 00  WA  0   0  1
  [ 5] .irom0.text       PROGBITS        00000000 000034 000f4d 00  AX  0   0  4
  [ 8] .rodata.PB_DECODE PROGBITS        00000000 0010bc 000028 00   A  0   0  4


文件:libnanopb.a(pb_encode.o)
共有 35 个节头,从偏移量 0x5fec 开始:

节头:
  [Nr] Name              Type            Addr     Off    Size   ES Flg Lk Inf Al
  [ 2] .text             PROGBITS        00000000 000034 000000 00  AX  0   0  1
  [ 3] .data             PROGBITS        00000000 000034 000000 00  WA  0   0  1
  [ 4] .bss              NOBITS          00000000 000034 000000 00  WA  0   0  1
  [ 5] .irom0.text       PROGBITS        00000000 000034 00099f 00  AX  0   0  4
  [ 8] .rodata           PROGBITS        00000000 000a8c 000028 00   A  0   0  4
  [10] .rodata.PB_ENCODE PROGBITS        00000000 000ab4 000028 00   A  0   0  4


可以看到绝大部分的代码都在.irom0.text ,它是保存在flash中的,所以IRAM空间应该是够的

4.手动去修改ld中iram大小,从0x8000修改为0x20000依然报同样的错误

有没有大牛以前碰到过这种问题的呀,谢谢!

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|安信可论坛    

GMT+8, 2019-9-23 02:25 , Processed in 0.021427 second(s), 14 queries , Redis On.

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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