Yahoo Groups archive

Lpc2000

Index last updated: 2026-04-28 23:31 UTC

Message

Re: [lpc2000] Problem with newlib-lpc_rel_4

2005-02-21 by Robert Adsett

At 07:13 PM 2/21/05 +0200, Anton Erasmus wrote:
>On 21 Feb 2005 at 8:58, Robert Adsett wrote:
> > At 07:58 AM 2/21/05 +0000, aj_erasmus wrote:
> > >The binary filesize of the output files are  26944 bytes when linking
> > >against the library and 27840 when linking directly with the object
> > >files. Any suggestions on where to look to see what is not being
> > >included when linking with the library ?
> >
> > Anton, check the map file.  Is the newlib-lpc library getting linked
> > in? Specifically the newlib-lpc routines for _write and _read. It's
> > possible that your copy of newlib contains default stubs for these and
> > they are getting linked in rather than the newlib-lpc routines.
>
>I have investigated further and found the problem, but am unsure on how
>to fix it. There 2 assembler files for containing some code related to 
>interrupts.
>The 2 files are linked in when linking directly with all the files, but 
>are not linked
>in from the library. All the other _read, _write etc modules are linked in 
>from the
>library. The linker does not complain about any missing references when the
>assembly code is not linked in. I haved added the "used" attribute to the
>interrupt service routine, but the assembler calling this routine is still 
>not linked
>in from the library.


Anton, I assume you mean interrupt_sup.s and uart0_ishell.s?

The former contains DisableInterrupts and RestoreInterrupts, both are 
called in the interrupt drive device driver so they certainly should be 
linked in.  The later contains Uart0InterruptShell which while not directly 
called is referred to by address in the setup and therefore should also end 
up being linked in.  The only thing that occurs to me is that those three 
references are being satisfied by something else.  Can you find them in the 
map file?

I suppose you could be missing the interrupt reference in the startup 
code.  The following line

         ldr     pc,[pc,#-0xFF0]         /* Vector via VIC               */

Should be in your exception vector table.  Even if that was missing though 
it I wouldn't expect it to make a difference to the link stage.  Interrupts 
wouldn't work but at least all items would be linked in.

Robert

" 'Freedom' has no meaning of itself.  There are always restrictions,
be they legal, genetic, or physical.  If you don't believe me, try to
chew a radio signal. "

                         Kelvin Throop, III

Attachments

Move to quarantaine

This moves the raw source file on disk only. The archive index is not changed automatically, so you still need to run a manual refresh afterward.