[En-Nut-Discussion] How to make "Ethernut Device registration" more save??
Ács Péter
acspeter at rubin.hu
Thu Aug 12 17:58:50 CEST 2010
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
More information about the En-Nut-Discussion
mailing list