4 以太网设备

本文详细介绍了以太网设备在EtherCAT协议中的应用,包括本地和通用以太网设备驱动程序的差异、网络驱动程序基础、设备接口及冗余策略。本地驱动程序提供高性能但需特殊硬件支持,而通用驱动程序适用于任何以太网硬件但性能略逊。 EtherCAT依赖无中断操作,避免使用网络堆栈,以保证实时性和效率。
摘要由CSDN通过智能技术生成

4 以太网设备

EtherCAT协议基于以太网标准,因此主站依靠标准以太网硬件与总线通信。

术语设备用作以太网网络接口硬件的同义词。

本地以太网设备驱动程序 处理以太网硬件的本机设备驱动程序模块(见第4.2节),主机可以使用这些模块连接到EtherCAT总线。它们通过设备接口(见第4.6节)向主站模块提供以太网硬件,并且必须能够准备以太网设备,使用内核的网络堆栈进行EtherCAT(实时)操作或“一般”操作。这种方法的优点是主站可以几乎直接在硬件上操作,提高了性能。缺点是,必须有一个支持EtherCAT的原生以太网驱动程序。

通用以太网设备驱动程序 从主站版本1.5开始,有一个通用以太网设备驱动程序模块(见第4.3节),它使用网络堆栈的更低层来连接到硬件。优点是,任意以太网硬件可用于EtherCAT操作,与实际的硬件驱动程序无关(因此所有Linux以太网驱动程序都支持,无需修改)。缺点是,因为Linux网络栈被编址,这种方法不支持像RTAI这样的实时扩展。此外,因为以太网帧数据必须遍历网络栈,性能比本地驱动稍差。

4.1 网络驱动程序基础

EtherCAT依赖于以太网硬件,主站需要一个物理以太网设备与总线通信。因此,有必要分别了解Linux如何处理网络设备及其驱动程序。

网络驱动程序的任务 网络设备驱动程序通常处理OSI模型的较低两层,即物理层和数据链路层。网络设备自身处理其物理层问题:它代表硬件连接到介质并以物理层协议描述的方式发送和接收数据。网络设备驱动程序负责从内核的网络堆栈获取数据并将其转发到进行物理传输的硬件。如果硬件接收到数据,则通知驱动(通常通过中断),并且必须从硬件存储器读取数据并将其转发到网络堆栈。网络设备驱动程序还必须处理一些任务,包括队列控制,统计和与设备相关的功能。

驱动程序启动 通常,驱动程序在模块加载时搜索兼容的设备。对于PCI驱动程序,是通过扫描PCI总线并检查已知的设备ID来完成的。如果发现设备,则分配数据结构体并且使设备开始工作。

中断操作 网络设备通常提供硬件中断,用于分别通知驱动器接收到的帧和传输成功或传输错误。驱动程序必须注册中断服务程序(ISR),每次硬件发出这样的事件时执行中断服务程序。如果中断由属于自己的设备抛出(多个设备可以共享一个硬件中断),中断的原因必须通过读取设备的中断寄存器来确定。例如,如果设置了接收帧的标志,帧数据必须从硬件复制到内核存储器并传递到网络堆栈。

net_device结构体 驱动程序为每个设备注册net_device结构体,以与网络堆栈通信并创建一个“网络接口”。对于一个以太网驱动程序,此接口显示为ethX,其中X是注册时内核分配的数字。net_device结构体通过几个回调函数来接收事件(来自用户空间或来自网络堆栈)ÿ

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值