Contiki OS:rom分区

时间:2015-01-07 11:06:20

标签: rom contiki

我正在尝试在Contiki上编译一个项目,但我有这个错误:

/usr/lib/gcc/msp430/4.5.3/../../../../msp430/bin/ld: dora_main.sky section `.data' will not fit in region `rom'
/usr/lib/gcc/msp430/4.5.3/../../../../msp430/bin/ld: section .vectors loaded at [0000ffe0,0000ffff] overlaps section .data loaded at [0000ff0c,00010131]
/usr/lib/gcc/msp430/4.5.3/../../../../msp430/bin/ld: region `rom' overflowed by 338 bytes
collect2: ld returned 1 exit status

有人告诉我,我必须减少ROM分区。这是真的吗?我怎么能这样做?

1 个答案:

答案 0 :(得分:1)

您的项目对于MSP430s内存来说非常重要。

您的选择主要是修剪二进制文件,或者如果您很幸运,您必须更新编译器以使用所有设备内存

1。修剪二进制文件

  • 检查您是否使用-0s
  • 进行编译
  • 通过从二进制文件中删除调试输出和其他字符串
  • 删除您可能不需要的Contiki应用

2。使用MSP430X

如果您的MSP430具有超过32kByte(例如MSP430F5335)的闪存,您可以使用makefile中的以下标志更改内存模型:

CFLAGS += -mmemory-model=large \
     -ffunction-sections -fdata-sections \
     -mcode-region=far -mdata-region=far
LDFLAGS += -mmemory-model=large \
     -Wl,-gc-sections \
     -mcode-region=far -mdata-region=far

这将使您的代码和数据超过16位边界,以使用设备支持的所有内存。有关如何执行此操作的详细信息,请参阅Contiki Wiki的MSP430X部分。