[etherlab-users] Device gets stuck in state "INIT E"

Erwin Burgstaller ethercat.berknapp at spamgourmet.com
Mon Jan 19 18:24:40 CET 2009


Hi,

now I have another thing with that device working with the ET1100-ASIC
from Beckhoff and which runs Linux on an Arm cpu.


Booting problem after loss of power
====================================

When I remove the power from that slave, the master does instantly
recognize that it's gone. After putting on the power, the ET1100 starts
working after 1 or 2 seconds and the master marks state INIT and sends a
request for state PREOP to the slave.

[348531.987551] EtherCAT DEBUG: Slave 1 is not in the state to do mailbox com, setting to PREOP.
[348531.987556] EtherCAT DEBUG: Configuring slave 1...
[348531.991471] EtherCAT DEBUG: Slave 1 is now in INIT.
[348531.991474] EtherCAT DEBUG: Clearing FMMU configurations of slave 1...
[348531.993469] EtherCAT DEBUG: Configuring mailbox sync managers of slave 1.
[348531.993474] EtherCAT DEBUG: SM0: Addr 0x1800, Size 246, Ctrl 0x26, En 1
[348531.993478] EtherCAT DEBUG: SM1: Addr 0x18F6, Size 246, Ctrl 0x22, En 1

But the slave will not answer until it's kernel module got loaded, so
the master sets "INIT E" and does not retry. So the slave gets never in
OP state again.

3 seconds later it says:

[348534.999278] EtherCAT ERROR: Failed to set state PREOP on slave 1: No response.

Setting the state to OP manually works and pulling off the Ethernet
cable and putting in again on the slave helps too. But both isn't an
option for final operation.

So the questions are: 

a) Is there something to be changed in the masters configuration, or is
   there something my module using the master can do?

b) What can the slave do to get an request for PREOP state again?



Booting problem after reset
===========================

And then there's another problem: When one resets the slave via the
reset button, the ET1100 isn't touched by that reset for good
reasons. Somehow the master does not recognize, that the slaves isn't
working while it's boot process hasn't finished.

Now the master recognizes that a state change has occurred and does the
change from INIT to OP in ~20 ms.

Is there something like a callback mechanism for my kernel module to get
informed? At the moment it has to poll the master every 10 ms to get the
slave states for sure. In fact it first polls just for a change of the
working counter and if there's a change the states of the slaves are
retrieved.

Polling seems to be not very time consuming, but a call back function
for state changes would be nice, don't beat me if it's already there. ;-)


Thanks a lot,
       
	Erwin


BTW: Is there an answer for my last question in "UNMATCHED and SKIPPED
     datagrams"? ^^

-- 
Erwin Burgstaller



More information about the Etherlab-users mailing list