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