我有EK1101,EL6002,EL2034模块,它们基于网络设备。这些模块通过以太网电缆连接PC以太网端口。我已经用一些应用程序测试了这些模块,它在我的PC上工作正常。
EK1101作为耦合器工作。它连接PC以太网端口和其他从属模块(EL6002,EL2034,..)
EL6002用作RS232通信。 EL2034用作数字I / O.同样,我们有超过10种不同的设备。这些模块同时与EK1101耦合器连接。
我如何实现Linux驱动程序?并开始?我是否修改现有的网络驱动程序或从头开始新的驱动程序?我需要写什么类型的角色或网络驱动程序?如果它的字符驱动程序如何通过以太网端口传输数据?
答案 0 :(得分:0)
使用串行切片(EL6002),每个端口每个交换只能发送22个字节(每个方向)。在1kHz的全串行带宽(115k)更新时,您不会错过更新而不会使发射器挨饿和/或丢失接收器上的数据。如果这是一个问题,您可能需要声称对用于控制EtherCAT环路的以太网端口进行独占控制。这需要某种形式的root权限,否则有人总是可以尝试通过端口发送数据包,从而影响您的计时。您还没有详细了解您的申请或时间要求,所以这对您来说并不重要。
我一直在使用Etherlab IgH开源堆栈,它需要root权限才能加载实现底层堆栈的内核模块。完成后,您可以将其他所有内容设置为从没有root权限的用户空间运行。
一旦您的应用程序获得对主堆栈的访问权限,您就可以设置数据交换域(TwinCat调用任务),并且您将拥有一个共享内存区域,可用于监视EtherCAT帧数据。您的应用程序负责决定何时发送和接收域更新。