This is the mail archive of the
ecos-discuss@sourceware.org
mailing list for the eCos project.
Re: cirrus ep93xx - ecos works, network problems
> > > We have a custom cirrus ep9307 based board. Cirrus has a software package
> > > for their ep93xx-based boards, which contains patches for linux and a
> > > redboot-only ecos. Redboot and linux works fine on our board. I have
> > > managed to work the basic ecos, but I have trouble with the network.
> > >
> > > Is there anybody who made the network work, and can help? We would be very
> > > thankful for any help.
> >
> > The normal problem here is that the network device driver for Redboot
> > is polled io, where as a full eCos device driver is interrupt
> > driven. I suggest you take a look at the device driver and see what it
> > actually implements.
>
> The problem is not so theoretical:-) I'm looking and testing and
> modifying the driver until yesterday. It seems that someone at cirrus have written
> the driver "correctly" because there is a redboot and a real-kernel related
> code in it, there is an IT initialised, a NETDEVTAB_ENTRY etc. (but,
> strange that the real IT related routines usually in hal/<proc>/src/proc_misc.c
> were missing from the patch, but I've added them...) Network ITs are working etc.
>
> The problem where I stopped: There is register in the network related part of the processor,
> which is set to 1 to sign that there is a new data filled and ready to send. But when this register
> is set to 1 second times the whole board stops working at this line, prints before this line are
> appearing but prints after are not. (but these lines are common with the redboot code, so
> perhaps these are algorithmically right)
> On the other hand the board cannot be ping-ed, end receive events are not comming (but these are
> coming under redboot...)
>
> So if somebody has an ideo to try, I would be very grateful.
>
In the meantime I'm implemented the trick found in the cs8900a driver, which can
be configured to use a thread (continously calling { cyg_thread_delay(5); s = splnet();
ep93xx_poll(sc); splx(s); } instead of using interrupts, but it is not help anything.
By the way, is this trick have to work at all, or is this a "dead-end" left in the code?
Ferenc Deak
--
Before posting, please read the FAQ: http://ecos.sourceware.org/fom/ecos
and search the list archive: http://ecos.sourceware.org/ml/ecos-discuss