process - Contiki编译错误, “ERROR: address 0x820003 out of range at line 1740 of…”

标签 process compiler-errors contiki

我开始在atmel atmega128rfa1上使用contiki操作系统。
我可以编译我的示例,但是hex文件是错误的。错误是:
错误:ipso.hex的第1740行的地址0x820003超出范围(我未使用IPSO,只是我保留了此名称)。

当我在linux系统中编译时,代码的大小是27804字节,数据是4809byte。

在Windows中编译时,程序为28292,数据为4791。

我只使用一个进程和一个etimer,我想打开和关闭1个led。
makefile包含以下内容:
`

TARGET=avr-atmega128rfa1
CONTIKI = ../..
include $(CONTIKI)/Makefile.include

all: 
make -f Makefile.ipso TARGET=avr-atmega128rfa1 ipso.elf 
avr-objcopy -O ihex -R .eeprom ipso.elf ipso.hex 
avr-size -C --mcu=atmega128rfa1 ipso.elf `

我无法对 Controller 进行编程。问题是什么?

谢谢。

最佳答案

.elf文件中的特殊部分从0x810000开始,并且在生成用于对特定存储器进行编程的十六进制文件时必须将其删除。

$ avr-objdump -h webserver6.avr-atmega128rfa1

webserver6.avr-atmega128rfa1:     file format elf32-avr

Sections:
Idx Name          Size      VMA       LMA       File off  Algn
  0 .data         00001bda  00800200  0000e938  0000ea2c  2**0
              CONTENTS, ALLOC, LOAD, DATA
  1 .text         0000e938  00000000  00000000  000000f4  2**1
              CONTENTS, ALLOC, LOAD, READONLY, CODE
  2 .bss          000031a6  00801dda  00801dda  00010606  2**0
              ALLOC
  3 .eeprom       00000029  00810000  00810000  00010606  2**0
              CONTENTS, ALLOC, LOAD, DATA
  4 .fuse         00000003  00820000  00820000  0001062f  2**0
              CONTENTS, ALLOC, LOAD, DATA
  5 .signature    00000003  00840000  00840000  00010632  2**0
              CONTENTS, ALLOC, LOAD, READONLY, DATA

所以,
avr-objcopy -O ihex -R .eeprom -R .fuse -R signature ipso.elf ipso.hex

或者,仅复制所需的部分:
avr-objcopy -O ihex -j .text -j .data ipso.elf ipso.hex

关于process - Contiki编译错误, “ERROR: address 0x820003 out of range at line 1740 of…”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15745732/

相关文章:

c# - 从 C# 调用 CreateProcessAsUser

c# - ffmpeg 的奇怪行为 - 当我关闭我的应用程序时开始转换

java - 在此 java 程序中找不到符号消息

c++ - Arduino/C++ 中的函数/方法定义错误。还是语法错误?

Contiki编译错误

c# - 在没有路径位置的情况下启动.exe文件c#

java - IOException : error=7, 命令行参数列表太长

c++ - 如何声明数组成员变量的getter/setter方法

c - 需要一个在 Contiki 中使用 mmem 的例子

c - 如何在传入消息中添加时间字段?