[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[avr-gcc-list] Re: Patch for Win32 build of avr-gcc to support ATMega128
From: |
Anton Erasmus |
Subject: |
[avr-gcc-list] Re: Patch for Win32 build of avr-gcc to support ATMega128 |
Date: |
Fri, 18 Jan 2002 18:03:28 +0200 |
Date sent: Fri, 18 Jan 2002 14:12:51 +0100
From: Matthias Lange <address@hidden>
Organization: Pro Design
To: Anton Erasmus <address@hidden>,
"address@hidden" <address@hidden>
Subject: Re: Patch for Win32 build of avr-gcc to support
ATMega128
> This is a multi-part message in MIME format.
> --------------61C3DE1412940C7F140B15EC
> Content-Type: text/plain; charset=us-ascii
> Content-Transfer-Encoding: 7bit
>
> Anton Erasmus wrote:
> >
> > Hi,
> >
> > It seems that quite a number of people are interested in compiling
> > for the ATMega128 without having to build the avr-gcc binaries with
> > proper ATMega128 support for themselves.
> >
> > Attached is a zip file with the modified files I use to compile code
> > for the ATMega128 as well as a small example that shows using the
> > inp and outp macros to access ATMega128 I/O registers that cannot be
> > accessed with the "in" and "out" instructions.
> >
> > The make1 and make2 files are modified versions of the Volker Oth
> > originals. These should be copied to avrgcc/include. mk128 is the
> > make file to make the example. Use make -fmk128 or use cc.bat.
> > m128test.c is the example c file. iomacros.h is a modified version
> > of the standard iomacros.h files. This should be copied to
> > avrgcc/avr/include. Only the inp and outp macros have been modified.
> > crtm128.o is the startup object file for the ATMega128. This is
> > assembled from the gcrt1.s file using the make file m128_crt.
> > ldscript.x is the linker script modified for the ATMega128. It also
> > adds a section "batram" which is external memory from 0x1100 to
> > 0x7FFF. This section is not initialised by the startup file. Hence
> > suitable for battery backed RAM. See the example C file on how to
> > declare a variable in this section.
> >
> > Remember that the ATMega128 as shipped is in ATmega103
> > mode. One has to update the fuses to get it to run in ATMega128
> > mode.
> >
> > I see no reason why these patches would not work for a Linux build
> > of avr-gcc.
> >
> > Regards
> > Anton Erasmus
>
>
>
> Hi Anton,
>
> I got it working, on Linux, thanks a lot !
>
> This is my configuration :
>
> binutils-2.11.2
> gcc-3.0.2
> avr-libc-20020115
>
> I am using your crtm128.o, iomacros.h and the setting MCU = atmega128
> in my makefile.
>
> In addition I made some changes to the iom128.h file to get
> compatibility with my atmega103 sources.
>
> I did some changes to your iomacros.h too:
>
> - cbi, sbi, bit_is_clear and bit_is_set are now working on PORTG too -
> I added outw() and inw() macros to access the extended 16Bit registers
> like TCNT3L/H
>
> I am not sure if this is the best way and if it works on all MCUs. But
> anyway I have attached these files. Perhaps its useful for somebody
> else too.
>
> Best regards
>
> -Matthias Lange
>
Hi Matthias,
Thanks for the iomacros.h additions.
If your compiler build accepts the mcu=atmega128 option, then it
already has support for the atmega128. It should not be
neccessary to manually link with crtm128.o.
If I specify mcu=atmega128 on the Win32 binary build from
avrfreaks.net, then I get the error: cc1.exe: MCU `atmega128' not
supported
Regards
Anton Erasmus
avr-gcc-list at http://avr1.org