PCI lookup issue: 3c905C-TX not found by RTEMS.
Karel Gardas
kgardas at objectsecurity.com
Mon Jan 24 21:37:47 UTC 2005
On Mon, 24 Jan 2005, Joel Sherrill <joel at OARcorp.com> wrote:
> > As far as I know the pc386 pci support has been stable for some time,
> > so I think you could do it either way. I imagine it might be better
> > to work off the cvs head in case you come up with enhancements that
> > you'd like to commit.
>
> That's the right answer. :)
OK, but I have 4.6.x up'n'running so if PCI is nearly the same, I will use
this for debugging.
And I have first debugging success to report here:
I don't know why things were even so good working so far, but pcibios.c
initialization seems to be broken at least to my C++ distributed
applications programmer eyes. There is `pcibInitialized' static variable
which is initialized to 0 and in pcib_init is switched to 1. pcib_init
function looks if PCI bios is presented and do very important
initialization of `pcibEntry' static variable, which is then used
by *_conf_read/write* functions and others.
The problem was that pcib_init function was never called which means
pcibEntry was not initialized which means all functions using its value to
obtain something from PCI bios used completely wrong memory part. When I
hack
if (!pcibInitialized)
pcib_init();
into BSP_pciFindDevice function, I'm able to get completelly different
values than before and even I'm able to find 10B7/9200 as my NIC. :-)
Well, then the only other issue is that RTEMS after printing:
etherlink: device '3Com 3c905C-TX Fast Etherlink XL', name 'elnk1', pci
00:08.00, 16 rx.16 tx buffers
freeze.
Karel
--
Karel Gardas kgardas at objectsecurity.com
ObjectSecurity Ltd. http://www.objectsecurity.com
More information about the users
mailing list