BackupGGCode / avr-etherboot

An ethernet bootloader for the Atmel AVR microcontroller family
1 stars 2 forks source link

errors with linkerscript eth-avr51 #6

Open GoogleCodeExporter opened 9 years ago

GoogleCodeExporter commented 9 years ago
What steps will reproduce the problem?
1. configure device001/2 with ATmega128; 16MHz; Large

The following output will be displayed

Calculate code size: device_001.sizeelf
avr-gcc -mmcu=atmega128 -I. -gdwarf-2 -DF_CPU=16000000UL -
DBOOTLOADER_FLAVOR=3 -
DBLSECSTRT=0x3ff -Os -funsigned-char -funsigned-bitfields -fpack-struct -
fshort-
enums -Wall -Wstrict-prototypes -mcall-prologues -Wa,-adhlns=etherflash.o -
I. -I
.. -std=gnu99 -Wundef -MMD -MP -MF .dep/device_001.sizeelf.d etherflash.o 
checks
um.o ethernet.o arp.o enc28j60.o spi.o udp.o dhcpc.o eemem.o --output 
device_001
.sizeelf -Wl,--defsym=app_start=0 -Wl,-Map=device_001.map,--cref     -lm -
Wl,--d
efsym=app_start=0x1FC00 -Wl,--section-start=.text=0x1FC00 -
T ../make.files/eth-a
vr51.x -Wl,--section-start=.bootloader=0x0000
c:/winavr-
20090313/bin/../lib/gcc/avr/4.3.2/../../../../avr/bin/ld.exe:../make.f
iles/eth-avr51.x:8: syntax error

After changing 

  data      (rw!x) : ORIGIN = , LENGTH = 0xffa0

to

  data      (rw!x) : ORIGIN = 0x800060, LENGTH = 0xffa0

like in eth-avr51 or the standard linker script I get the following output.

Calculate code size: device_002.sizeelf
avr-gcc -mmcu=atmega128 -I. -gdwarf-2 -DF_CPU=16000000UL -
DBOOTLOADER_FLAVOR=3 -
DBLSECSTRT=0x3ff -Os -funsigned-char -funsigned-bitfields -fpack-struct -
fshort-
enums -Wall -Wstrict-prototypes -mcall-prologues -Wa,-adhlns=etherflash.o -
I. -I
.. -std=gnu99 -Wundef -MMD -MP -MF .dep/device_002.sizeelf.d etherflash.o 
checks
um.o ethernet.o arp.o enc28j60.o spi.o udp.o dhcpc.o eemem.o --output 
device_002
.sizeelf -Wl,--defsym=app_start=0 -Wl,-Map=device_002.map,--cref     -lm -
Wl,--d
efsym=app_start=0x1FC00 -Wl,--section-start=.text=0x1FC00 -
T ../make.files/eth-a
vr51.x -Wl,--section-start=.bootloader=0x0000
c:/winavr-20090313/bin/../lib/gcc/avr/4.3.2/../../../../avr/bin/ld.exe: 
address
0x20020 of device_002.sizeelf section .text is not within region text
c:/winavr-20090313/bin/../lib/gcc/avr/4.3.2/../../../../avr/bin/ld.exe: 
address
0x20020 of device_002.sizeelf section .text is not within region text
make: *** [device_002.sizeelf] Error 1

What version of the product are you using? On what operating system?
-latest svn

Original issue reported on code.google.com by UKai...@gmail.com on 12 Jun 2009 at 11:39

GoogleCodeExporter commented 9 years ago
Hello, I have same problem. 
I use Windows 7.

Here is log:
-----------------------------------
c:\ethernut-4.8.5\MMnet01_samples\ha_bootloader3\device_001>make
makefile:46: makefile.in: No such file or directory
PATH=$PATH:../make.files; . configure.sh avr-gcc ../make.files 0x3ff

****************************************************
*>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>*
Welcome to the Ethernet Bootloader for ATmega maker!

Please select your device.
Choose from the list below and enter the digit that matches your
device and hit return. If your device is not listed, you also may
enter a name. However, there is no guarantee that this bootloader
will work with your device.

1) atmega8     3) atmega32    5) atmega128   7) atmega2561
2) atmega16    4) atmega64    6) atmega2560
#? 5
=> checking MCU...
=> MCU = atmega128 OK

Please select the clock frequency your device runs with.
Choose from the list below and enter the letter that matches your device
or enter your frequency in Hz if it is not in the list. Then hit return:

1) 1000000     4) 3686400    7) 8000000   10) 16000000
2) 1843200     5) 4000000    8) 11059200  11) 18432000
3) 2000000     6) 7372800    9) 14745600  12) 20000000
#? 10
=> F_CPU = 16000000

Please select the type of bootloader you would like to build.
- Small Version, uses 4KB of flash, includes all basic bootlader functions
- Medium Version, uses 6KB of flash, includes all from small version plus DHCP a
nd UDP
- Large Version, uses 8KB of flash, includes all from medium version plus TCP an
d Telnet

1) Small
2) Medium
3) Large
#? 2

-------- begin --------
avr-gcc (WinAVR 20090313) 4.3.2
Copyright (C) 2008 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

Compiling C: ../etherflash.c
avr-gcc -c -mmcu=atmega128 -I. -gdwarf-2 -DF_CPU=16000000UL -DBOOTLOADER_FLAVOR=
2 -DBLSECSTRT=0x3ff -Os -funsigned-char -funsigned-bitfields -fpack-struct -fsho
rt-enums -Wall -Wstrict-prototypes -mcall-prologues -Wa,-adhlns=./../etherflash.
lst -I. -I.. -std=gnu99 -Wundef -MMD -MP -MF .dep/etherflash.o.d ../etherflash.c
 -o etherflash.o

Compiling C: ../checksum.c
avr-gcc -c -mmcu=atmega128 -I. -gdwarf-2 -DF_CPU=16000000UL -DBOOTLOADER_FLAVOR=
2 -DBLSECSTRT=0x3ff -Os -funsigned-char -funsigned-bitfields -fpack-struct -fsho
rt-enums -Wall -Wstrict-prototypes -mcall-prologues -Wa,-adhlns=./../checksum.ls
t -I. -I.. -std=gnu99 -Wundef -MMD -MP -MF .dep/checksum.o.d ../checksum.c -o ch
ecksum.o

Compiling C: ../ethernet.c
avr-gcc -c -mmcu=atmega128 -I. -gdwarf-2 -DF_CPU=16000000UL -DBOOTLOADER_FLAVOR=
2 -DBLSECSTRT=0x3ff -Os -funsigned-char -funsigned-bitfields -fpack-struct -fsho
rt-enums -Wall -Wstrict-prototypes -mcall-prologues -Wa,-adhlns=./../ethernet.ls
t -I. -I.. -std=gnu99 -Wundef -MMD -MP -MF .dep/ethernet.o.d ../ethernet.c -o et
hernet.o

Compiling C: ../arp.c
avr-gcc -c -mmcu=atmega128 -I. -gdwarf-2 -DF_CPU=16000000UL -DBOOTLOADER_FLAVOR=
2 -DBLSECSTRT=0x3ff -Os -funsigned-char -funsigned-bitfields -fpack-struct -fsho
rt-enums -Wall -Wstrict-prototypes -mcall-prologues -Wa,-adhlns=./../arp.lst -I.
 -I.. -std=gnu99 -Wundef -MMD -MP -MF .dep/arp.o.d ../arp.c -o arp.o

Compiling C: ../enc28j60.c
avr-gcc -c -mmcu=atmega128 -I. -gdwarf-2 -DF_CPU=16000000UL -DBOOTLOADER_FLAVOR=
2 -DBLSECSTRT=0x3ff -Os -funsigned-char -funsigned-bitfields -fpack-struct -fsho
rt-enums -Wall -Wstrict-prototypes -mcall-prologues -Wa,-adhlns=./../enc28j60.ls
t -I. -I.. -std=gnu99 -Wundef -MMD -MP -MF .dep/enc28j60.o.d ../enc28j60.c -o en
c28j60.o

Compiling C: ../spi.c
avr-gcc -c -mmcu=atmega128 -I. -gdwarf-2 -DF_CPU=16000000UL -DBOOTLOADER_FLAVOR=
2 -DBLSECSTRT=0x3ff -Os -funsigned-char -funsigned-bitfields -fpack-struct -fsho
rt-enums -Wall -Wstrict-prototypes -mcall-prologues -Wa,-adhlns=./../spi.lst -I.
 -I.. -std=gnu99 -Wundef -MMD -MP -MF .dep/spi.o.d ../spi.c -o spi.o

Compiling C: ../udp.c
avr-gcc -c -mmcu=atmega128 -I. -gdwarf-2 -DF_CPU=16000000UL -DBOOTLOADER_FLAVOR=
2 -DBLSECSTRT=0x3ff -Os -funsigned-char -funsigned-bitfields -fpack-struct -fsho
rt-enums -Wall -Wstrict-prototypes -mcall-prologues -Wa,-adhlns=./../udp.lst -I.
 -I.. -std=gnu99 -Wundef -MMD -MP -MF .dep/udp.o.d ../udp.c -o udp.o

Compiling C: ../dhcpc.c
avr-gcc -c -mmcu=atmega128 -I. -gdwarf-2 -DF_CPU=16000000UL -DBOOTLOADER_FLAVOR=
2 -DBLSECSTRT=0x3ff -Os -funsigned-char -funsigned-bitfields -fpack-struct -fsho
rt-enums -Wall -Wstrict-prototypes -mcall-prologues -Wa,-adhlns=./../dhcpc.lst -
I. -I.. -std=gnu99 -Wundef -MMD -MP -MF .dep/dhcpc.o.d ../dhcpc.c -o dhcpc.o

Compiling C: eemem.c
avr-gcc -c -mmcu=atmega128 -I. -gdwarf-2 -DF_CPU=16000000UL -DBOOTLOADER_FLAVOR=
2 -DBLSECSTRT=0x3ff -Os -funsigned-char -funsigned-bitfields -fpack-struct -fsho
rt-enums -Wall -Wstrict-prototypes -mcall-prologues -Wa,-adhlns=./eemem.lst -I.
-I.. -std=gnu99 -Wundef -MMD -MP -MF .dep/eemem.o.d eemem.c -o eemem.o

Calculate code size: device_001.sizeelf
avr-gcc -mmcu=atmega128 -I. -gdwarf-2 -DF_CPU=16000000UL -DBOOTLOADER_FLAVOR=2 -
DBLSECSTRT=0x3ff -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-
enums -Wall -Wstrict-prototypes -mcall-prologues -Wa,-adhlns=etherflash.o -I. -I
.. -std=gnu99 -Wundef -MMD -MP -MF .dep/device_001.sizeelf.d etherflash.o checks
um.o ethernet.o arp.o enc28j60.o spi.o udp.o dhcpc.o eemem.o --output device_001
.sizeelf -Wl,--defsym=app_start=0 -Wl,-Map=device_001.map,--cref     -lm -Wl,--d
efsym=app_start=0x1FC00 -Wl,--section-start=.text=0x1FC00 -T ../make.files/eth-a
vr51.x -Wl,--section-start=.bootloader=0x0000
c:/winavr-20090313/bin/../lib/gcc/avr/4.3.2/../../../../avr/bin/ld.exe: address
0x20020 of device_001.sizeelf section .text is not within region text
c:/winavr-20090313/bin/../lib/gcc/avr/4.3.2/../../../../avr/bin/ld.exe: address
0x20020 of device_001.sizeelf section .text is not within region text
make: *** [device_001.sizeelf] Error 1

c:\ethernut-4.8.5\MMnet01_samples\ha_bootloader3\device_001>

Original comment by saulius....@gmail.com on 15 Nov 2009 at 4:05

GoogleCodeExporter commented 9 years ago
Confirmed same issue with fresh installed WinXP (under VirtualBox), and fresh 
WinAvr.

Original comment by saulius....@gmail.com on 15 Nov 2009 at 4:31

GoogleCodeExporter commented 9 years ago
[deleted comment]
GoogleCodeExporter commented 9 years ago
I did some build testing for you. Here are results:

-------------------
<CPU>, <bootloader type>

1,1 - ok
2,1 - ok
3,1 - ok
4,1 - ok
5,1 - fail (1)
6,1 - ok
7,1 - ok

1,2 - ok
2,2 - ok
3,2 - ok
4,2 - ok
5,2 - fail (1)
6,2 - fail (2)
7,2 - fail (2)

1,3 - x
2,3 - ok
3,3 - ok
4,3 - ok
5,3 - fail (1)
6,3 - fail (2)
7,3 - fail (2)

(1)
c:/winavr-20090313/bin/../lib/gcc/avr/4.3.2/../../../../avr/bin/ld.exe: address
0x20020 of device_001.sizeelf section .text is not within region text

(2)
******* ERROR *******
Section .text has a size of 0x456 bytes, but the available space
has only 0x3ff bytes.
Please move more functions to the section .bootloader or increase
the space for .text by changing the variable STAT_BLSECSIZE in the
makefile. Please note that in this case you have to change the
BOOTSZ fuses, too.
make: *** [device_001.sizeelf] Error 1

Original comment by saulius....@gmail.com on 15 Nov 2009 at 5:12

GoogleCodeExporter commented 9 years ago
the problem is with size of hex file, size od BL program in memory,
change optimization in makefile from s to 1 or 2  helps.

Original comment by kmezyn...@gmail.com on 22 Aug 2012 at 10:39

GoogleCodeExporter commented 9 years ago
and you should use bash instead of bash ;]

# Define programs and commands.
SHELL = bash

Original comment by kmezyn...@gmail.com on 16 Sep 2012 at 7:22