avr-libc-dev
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[avr-libc-dev] Re: Unified ELF file [was: RE: [avr-chat] Re: GUI wrapper


From: Erik Christiansen
Subject: [avr-libc-dev] Re: Unified ELF file [was: RE: [avr-chat] Re: GUI wrapper for avrdude]
Date: Thu, 30 Aug 2007 11:27:56 +1000
User-agent: Mutt/1.5.9i

On Wed, Aug 29, 2007 at 02:58:28PM -0600, Eric Weddington wrote:
> 
> 
> > -----Original Message-----
> > From: address@hidden
> > [mailto:address@hidden
> >  On Behalf Of Joerg Wunsch
> > Sent: Tuesday, August 28, 2007 11:19 PM
> > To: address@hidden
> > Subject: Re: [avr-chat] Re: GUI wrapper for avrdude
> >
> > As Eric Weddington wrote:
> >
> > > Patches to avrdude are welcome to read an ELF file, and to program
> > > flash, eeprom, and fuses from a single ELF file.
> >
> > Btw., AVaRICE has been working like that for years (using the ELF
> > file, and derive the memory region type based on the offsets).  It
> > only takes care of flash ROM and EEPROM images as loadable images, but
> > also does already have offsets for fuse (0x820000), lock (0x830000),
> > and signature (0x840000) address spaces.  It eventually reads all
> > possible sections of a particular memory type into an internal image,
> > and then uses it to program the respective memory areas from that.
> >
> 
> [CCing avr-libc-dev. Apologies for duplicates. We should probably move
> conversation there.]

Oh-Oh, I'd better subscribe to avr-libc-dev too, then.

> One issue that probably should be addressed:
> 
> How does a GNU assembler-only project specify fuse settings, lock bit
> settings, etc., in this potential scheme?

If I've correctly understood Joerg, then the magic addresses are
specified by linker script memory regions. I'd expect to just do the
same in another assembler-only project.

For the the new regions, it is the work of a moment to assign an output
section to a specific memory region, and it is easier to assign stuff to
input sections in assembler than it is in 'C'. Defining fuse values in
assembler source is effortless:

   .global some_symbol_if_desired

   .section .avrfuses,"a"
some_symbol_if_desired:
   .byte <fuse_value1>
   .byte <fuse_value2>
   .byte <fuse_value3>

Can't off-hand see that I'd need more than the agreed input section
names, to make it work with the linker script to be used for 'C',
thereby re-using the agreed memory regions and magic addresses. (Or
nearly as quick, modify an existing linker script, based on just the
magic addresses. :-)

Erik




reply via email to

[Prev in Thread] Current Thread [Next in Thread]