[etherlab-dev] Allowing slave to write to it's EEPROM registers

Erwin Burgstaller ethercat.berknapp at spamgourmet.com
Tue May 12 09:09:05 CEST 2009


As we use an EtherCAT slave, which runs Linux on an Arm-CPU, there's a
kernel module on the slave side, handling all that EtherCAT stuff.

The software on the slave may be updated on the fly and we'd like to
have an overall revision number for the whole package (kernel, os,
kernel modules and application package).

The easiest way to be informed which software is there running would be
to show it as Revsion Number with the command "ethercat slaves -v -p
<n>", so the slave should be able to write to it's EEPROM registers at

For that, e.g. TwinCAT sets the bit on address 0x500:1 (Register EEPROM
Configuration) to 1. Just when the state changes from INIT to PREOP.

After that, the slave is able to write the revision number.

So I'd need the information where in the code and how I may activate
that bit, or a patch for that, so I could test if it's working. ;-)

A second question: It seems not a problem which is related to the master
but to the slave, but my college, who works on the slave's code, has the
question, if it's known how long the slave has to wait for writing the
second word.

Writing the first word works fine, but when the second word is written
there's an error set (0x0502:13 - Missing EEPROM acknowledge or invalid
command"). The register 0x0502 has the value (0x041 (1000001), so it
means, it's not set to BUSY (0x800), WRITE (0x200) or READ (0x100).

By waiting e.g. 5 ms after writing the first word, the write of the
second succeeds. So the questions is, how can we determine, how much
delay there has at least to be?


Erwin Burgstaller

More information about the etherlab-dev mailing list