This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] MSP430F1611:采用 MSP430的 Tmote Sky:段文本将不适合区域 ROM:ROM#39;溢出5472字节

Guru**** 2441730 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/611450/msp430f1611-tmote-sky-having-msp430-section-text-will-not-fit-in-region-rom-rom-overflowed-by-5472-bytes

器件型号:MSP430F1611

我一直在 Contiki OS (Cooja 仿真器)中为 Contiki OS 中内置的 Tmote Sky mote 模拟 MQTT 协议。 但是、当我执行复杂的 MQTT 程序时、我得到以下有关 ROM 溢出5472字节的错误。 完整的误差输出如下所示:

 

/usr/local/msp430/bin/../lib/gcc/msp430/4.7.0/../../../../msp430/bin/ld:MQTT.SKY 段`.text'将不适用于`ROM"区域


/usr/local/msp430/bin/../lib/gcc/msp430/4.7.0/../../../../msp430/bin/ld:在[0000ffe0、0000FFF]加载的.section .vectors 与在[0000470、00010f2f]加载的.text 段重叠。


/usr/local/msp430/bin/../lib/gcc/msp430/4.7.0/../../../../msp430/bin/ld:区域`ROM"溢出5472字节


/usr/local/msp430/bin/../lib/gcc/msp430/4.7.0/mmpy-16/libcrt0.a (_copy_data.o):在函数`_do 复制数据'中:


/home/user/building-mspgcc/gcc-4.7.0-msp430/msp430/mmpy-16/libgcc/../../../../gcc-4.7.0/libgcc/config/msp430/crt0.S:208:(.init4+0x12):重定位被截断以适合:R_MSP430_16_byte 与 MQTT.sky * abs*部分中定义的符号`_data_load_start'相对应
obj_sky/contiki-ski-main.o:在函数`main'中:
/home/user/contiki/examples/my_MQTT/../../platform/sky/./contiki-sky-main.c:262:(.text.start_network_lay+0x8):重定位被截断以适合:R_MSP430_16与 contiki-sky.a (sicslicpand.o)中.rodata 段中定义的符号`sicslespan-driver'相对应
/home/user/contiki/examples/my_MQTT/../../platform/sky/./contiki-sky-main.c:267:(.text.start_network_lay+0x16):重定位被截断以适合:针对`无符号'的 R_MSP430_16_byte
/home/user/contiki/examples/my_MQTT/../../platform/sky/./contiki-sky-main.c:267:(.text.start_network_lay+0x1a):重定位被截断以适合:R_MSP430_16与/usr/local/msp430/bin/../lib/gcc/msp430/4.7.0/../../../../msp430/lib/mmpy-16/libc.a 中.text.printf 段中定义的符号`printf'(printf.o)
/home/user/contiki/examples/my_MQTT/../../platform/sky/./contiki-sky-main.c:280:(.text.start_network_lay+0x38):重定位被截断以适合:针对`无符号'的 R_MSP430_16_byte
/home/user/contiki/examples/my_MQTT/../../platform/sky/./contiki-sky-main.c:281:(.text.start_network_lay+0x3c):重定位被截断以适合:R_MSP430_16与/usr/local/msp430/bin/../lib/gcc/msp430/4.7.0/../../../../msp430/lib/mmpy-16/libc.a 中.text.printf 段中定义的符号`printf'(printf.o)
/home/user/contiki/examples/my_MQTT/../../platform/sky/./contiki-sky-main.c:307:(.text.start_network_lay+0x5a):重定位被截断以适合:针对`无符号'的 R_MSP430_16_byte
/home/user/contiki/examples/my_MQTT/../../platform/sky/./contiki-sky-main.c:307:(.text.start_network_lay+0x5e):重定位被截断以适合:R_MSP430_16与/usr/local/msp430/bin/../lib/gcc/msp430/4.7.0/../../../../msp430/lib/mmpy-16/libc.a (printf.o)中.text.printf 段中定义的符号`printf'相对应
/home/user/contiki/examples/my_MQTT/../../platform/sky/./contiki-sky-main.c:313:(.text.start_network_lay+0x66):重定位被截断以适合:针对`无符号'的 R_MSP430_16_byte
/home/user/contiki/examples/my_MQTT/../../platform/sky/./contiki-sky-main.c:314:(.text.start_network_lay+0x6a):重定位被截断以适合:R_MSP430_16与/usr/local/msp430/bin/../lib/gcc/msp430/4.7.0/../../../../msp430/lib/mmpy-16/libc.a 中.text.printf 段中定义的符号`printf'(printf.o)
/home/user/contiki/examples/my_MQTT/../../platform/sky/./contiki-sky-main.c:314:(.text.start_network_lay+0x70):输出中省略了其他重定位溢出
collect2:错误:LD 返回1退出状态
Make:***[MQTT.SKY]错误1
RM MQTT.co obj_sky/contiki-sky-main.o

我们非常感谢您就此提供的任何帮助。  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Adil、

    这些 E2E 帖子似乎与您的问题有一些相似之处。 您能看一下这些主题帖吗、让我知道它们是否能提供帮助:
    e2e.ti.com/.../495410
    e2e.ti.com/.../63459
    e2e.ti.com/.../400138

    此致、
    Caleb Overbay
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    感谢您的快速响应。 我将介绍您刚才提到的 E2E 帖子。 我发现、我们需要手动定义 ROM 部分、将代码放置在何处、但它看起来与标准编程过程稍有不同 、其中程序员只需专注于自己的程序代码、而不是编程编译器/链接器。 此外、如果这是解决我的特定问题的唯一方法、您能帮助我定义程序代码将在哪个存储器区域运行。  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Adil、

    您正在使用的项目很可能附带自己的链接器脚本、而该脚本不是由 TI 生成的。 对于大多数情况、此链接器可能已足够、但始终存在边缘情况、例如您找到的需要进行修改的情况。

    遗憾的是、我不熟悉 Contiki 操作系统及其链接器的设置方式、因此我无法专门评论如何修改链接器文件。 基本上,您需要查看用于您的项目的链接器脚本,并根据我引用的第一个论坛帖子中的建议尝试对其进行修改–(即)将“不适合”的段分配到具有更多可用内存的其他内存区域。

    如果工程使用默认 GCC 链接器脚本、则 GCC 文档实际上是需要帮助了解链接器脚本语法/详细信息的用户的最佳参考。 如果您看一下这些文件中的一个、您将看到各个部分的分配位置(例如、 .text > ROM 表示.text 段被分配到 ROM)。

    此致、
    Caleb Overbay
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Adil、

    您是否能够解决您的问题、或者您还有其他任何问题可以我为您提供帮助?

    此致、
    Caleb Overbay