1.网络设备是一类非常特殊的设备,其没有普通文件接口,网络设备不存在对应的设备节点,不属于IO子系统管理,不向IO子系统注册驱动和设备。当一个网络设备驱动完成其内核层的注册后,用户即可对网络设备进行操作。
2.网络设备对外界数据的接收时异步的,当用户层没有任何数据读取请求时,其也在不断的从外界接收数据,缓存到内核专门分配的缓冲区中。实际上所有用户层将来读取数据都是从这个内核缓冲区中获得的。
3.网络设备驱动从协议栈接收一个已经封装的数据帧,而后只需要控制网络设备原封不动地将这个帧发送到网络介质上即可。对于网络介质本身的共用及冲突解决都是由网络硬件设备自动进行处理,无需网络设备驱动负责。因此,网络设备的功能就仅包括:
(1)其从网络栈接收一个数据帧,操作网络设备,将这个帧发送出去;
(2)其从网络设备接收一个帧,通过调用网络栈提供的接口函数,将这个帧传递给网络栈;
4.VxWorks早期使用网络栈与底层网络设备直接交互的方式,即4.3BSD网络驱动类型。在这种方式下,底层驱动与网络栈的耦合性比较紧密,这一点对于底层驱动开发比较不利,尤其对于VxWorks这种闭源操作系统。因此,VxWorks在后来的版本中(如5.5)提供了另一种驱动开发类型,即基于可裁剪的增强型网络栈(SENS:scalable enhanced networks stack)实现的底层驱动开发类型。风河将使用SENS编写的网络设备驱动称为增强型网络驱动,即END(enhanced network driver)。
5.END网络设备驱动内核层次

本文深入探讨了VxWorks环境下网络设备驱动的设计与实现,解析了网络设备的特殊性质,包括异步数据接收机制、与网络栈的交互方式,以及如何利用MUX中间层隔离网络栈与底层驱动。此外,还介绍了中断处理的上下文划分,以及如何优化中断响应,确保系统的高效运行。
最低0.47元/天 解锁文章
3077

被折叠的 条评论
为什么被折叠?



