[En-Nut-Discussion] How to make "Ethernut Device registration" more save??
Dominik Schröder
dominik.schroeder at bh-informativ.de
Fri Aug 13 08:06:54 CEST 2010
Ok, I`m using Nut version 4.9.6. I tried to change the while loop in
EmacReset like this:
outr(RSTC_MR, RSTC_KEY | (2 << RSTC_ERSTL_LSB));
outr(RSTC_CR, RSTC_KEY | RSTC_EXTRST);
while ((inr(RSTC_SR) & RSTC_NRSTL) == 0)
{
NutSleep(10);
}
outr(RSTC_MR, RSTC_KEY | rstcr_tmp);
Then I recompiled the whole software.
Unfortunately this brings no better result. The system hangs of like before,
if no Ethernet cable is connected.
Where do I have to insert the NutSleep?
Best regards
Dominik
-----Ursprüngliche Nachricht-----
Von: en-nut-discussion-bounces at egnite.de
[mailto:en-nut-discussion-bounces at egnite.de] Im Auftrag von Ács Péter
Gesendet: Donnerstag, 12. August 2010 17:59
An: en-nut-discussion at egnite.de
Betreff: Re: [En-Nut-Discussion] How to make "Ethernut Device registration"
more save??
Hello,
> My problem is, when I disconnect the Ethernet cable and then put on the
> system, the hole system seems to hang of. I don`t get any debug prompts on
> UART. After some time my external Watchdog forces the system to reset and
so
> on and so on...
>
> If the system starts with an connected Ethernet cable, everything works
> fine.
The problem is in the arch/arm/dev/at91_emac.c driver: it uses a
constant (EMAC_LINK_LOOPS) for timeout, and in the EmacReset function
(in stable 4.8.7 version; in the current svn version the problem is in
the probePhy function) polls the PHY for link status in a loop. As it
doesn't give back control to other threads, the other threads won't get
any chance to run, neither the thread responsible for watchdog handling.
A possible solution is to insert a NutSleep(10) there (10ms should be
OK, I think, it works for me), but the correct solution would be the
rewrite of the initialization of the driver (and maybe adding link
status handling too, through ioctl call?).
--
with best regards,
Peter
_______________________________________________
http://lists.egnite.de/mailman/listinfo/en-nut-discussion
More information about the En-Nut-Discussion
mailing list