我有基于网络设备的EK1101,EL6002,EL2034模块。这些模块通过以太网电缆连接PC以太网端口。我已经用一些应用程序测试了这些模块,它在我的PC上工作得很好。
EK1101作为耦合器工作。它连接PC以太网端口和其他从模块( EL6002、EL2034等)
作为RS232通信工作的EL6002。EL2034作为数字I/O工作。类似地,我们有超过10种不同的设备。这些模块同时与EK1101耦合器接口。
如何实现为Linux驱动程序?我是修改现有的网络驱动程序还是从头开始新的驱动程序?我需要写什么类型的驱动,字符驱动还是网络驱动?如果它的字符驱动程序,我如何通过以太网口传输数据?
发布于 2015-07-01 09:42:40
使用串行切片(EL6002),您只能为每个端口的每个交换发送22字节(每个方向)。在全串行带宽(115k)以1 1kHz的频率更新时,您不会错过更新,而不会使发射器饥饿和/或在接收器上丢失数据。如果这是一个问题,您可能需要声明对用于控制EtherCAT循环的以太网端口的独占控制。这需要某种形式的根权限,否则总会有人尝试通过端口发送数据包,从而影响您的计时。您没有给出关于应用程序或时间需求的太多细节,所以这对您来说可能并不重要。
我一直在使用Etherlab IgH开源堆栈,它需要根用户权限才能加载实现底层堆栈的内核模块。完成后,您可以将其他所有内容设置为在没有root权限的情况下从用户空间运行。
一旦您的应用程序获得了对主堆栈的访问权限,您就设置了一个数据交换域( TwinCat称之为任务),您将拥有一个可用于监视EtherCAT帧数据的共享内存区域。您的应用程序负责决定何时发送和接收域更新。
https://stackoverflow.com/questions/15991403
复制相似问题