我正在尝试在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分区。这是真的吗?我怎么能这样做?
答案 0 :(得分:1)
您的项目对于MSP430s内存来说非常重要。
您的选择主要是修剪二进制文件,或者如果您很幸运,您必须更新编译器以使用所有设备内存
-0s
如果您的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部分。