This is the mail archive of the
ecos-discuss@sources.redhat.com
mailing list for the eCos project.
RE: eth device drivers
- To: "'Jonathan Larmour'" <jlarmour at redhat dot com>
- Subject: RE: [ECOS] eth device drivers
- From: "Trenton D. Adams" <tadams at extremeeng dot com>
- Date: Thu, 14 Jun 2001 15:41:44 -0600
- Cc: "'eCos'" <ecos-discuss at sources dot redhat dot com>
- Organization: Extreme Engineering
It would be ok to just say to use it, but I would still like to know
what all the parameters to it should be. There's a little bit of an
explanation of DEVTAB_ENTRY in the eCos Reference Manual, but nothing on
ETH_DRV_SC.
That still doesn't answer all of my questions though.
Does ETH_DRV_SC create the edb7xxx_sc variable used by NETDEVTAB_ENTRY?
When you don't answer a question directly should I assume that I'm
correct in my deductions?
> -----Original Message-----
> From: jlarmour@cambridge.redhat.com
> [mailto:jlarmour@cambridge.redhat.com] On Behalf Of Jonathan Larmour
> Sent: Thursday, June 14, 2001 3:14 PM
> To: Trenton D. Adams
> Cc: 'eCos'
> Subject: Re: [ECOS] eth device drivers
>
>
> "Trenton D. Adams" wrote:
> >
> > Do I have to write a driver for the actual modem, and one for the
> > network portion of it, or should it all be integrated into
> one? Right
> > now I'm looking at
> "devs\eth\arm\edb7xxx\current\src\if_edb7xxx.c".
> > It looks to me like it's the only driver file for that
> network device.
> > Is this correct?
>
> For the CS8900 on the edb7211, yes.
>
> > How do I go about understanding the driver? For instance,
> what good
> > does it do to go
> >
> > NETDEVTAB_ENTRY (edb7xxx_netdev, "edb7xxx", edb7xxx_cs8900_init,
> > &edb7xxx_sc); ???
> >
> > Doesn't that device tab entry have to be put inside a table
> somewhere
> > in the kernel in order for the kernel to access it, or to even know
> > it's there? Or does the CYG_HAL_TABLE_ENTRY part of the
> macro create
> > a string that "make" somehow parses, and automatically puts
> the entry
> > into an array somewhere in the kernel as it's being made
> and compiled?
>
> CYG_HAL_TABLE_ENTRY puts things into a special ELF section.
> The object file containing the driver (and the table entry)
> is forcibly linked into the application by having the object
> sucked in by the linker script. This happens because of the
> "compile -library libextras.a if_edb7xxx.c" which places the
> object in libextras.a, and at the end of the build process
> all of libextras.a is converted to a single object extras.o.
>
> > Does ETH_DRV_SC create the edb7xxx_sc variable used by
> > NETDEVTAB_ENTRY? That's what it looks like in the eCos sources. Is
> > there documentation for all this stuff, or does everyone
> have to look
> > through the source like me? It would be nice to just have
> docs that
> > say something like "ETH_DRV_SC creates a structured vairable of the
> > type 'eth_hwr_funs' and fills it with all the function names, etc".
> >
> > With documentation like that, I wouldn't care about what the MACROS
> > were doing, I would just use them.
>
> What if the documentation said just to use them rather than
> to say what they did, which is an implementation detail :-).
> And as you can maybe guess from the above description, the
> implementation is more detailed than people would want to know about!
>
> Jifl
> --
> Red Hat, Rustat House, Clifton Road, Cambridge, UK. Tel: +44
> (1223) 271062 Maybe this world is another planet's Hell
> -Aldous Huxley || Opinions==mine Come to the Red Hat
> TechWorld open source conference in Brussels!
> Keynotes, techie talks and exhibitions
> http://www.redhat-techworld.com/
>