Light Ethercat Slave ecslave comes in three flavors: 1. linux user space 2. linux kernel drive. 3. stack for arduino. The user space is meant to be used as a tool for debugging the ethercat stack. The kernel module is aimed to provide a low latency respnosiveness. Arduino is part of a larget suite aimed to create cheap robot kits ( ~100$, controller with a single drive). User space design in short, two threads, each thread is in charge of capturing packets from its assigned network device and passing them to the ethercat protocol if needed. Kernel space Design This module is composed from several software components. 1. the ethercat stack. 2. ethercat sockets 3. user space task executing in preempt rt kernel. Ethercat packet flow is ring toplogy. when a ring can is implemented on a full duplex ehtercat cards so it actually a line. TX path master.. --> rx interface --> slave --> tx interface .... ___ | RX path | | master.. <-- rx interface <-- slave <---tx interface <-... __| Arduino only ethercat stack is implemeted. User has to add his own code.