《VxWorks设备驱动开发详解》笔记——第十章 网络设备驱动

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

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网络设备驱动内核层次

目录 3 DMA驱动 1 3.1 简介 1 3.2 概要 1 3.3 VxBus驱动方法 1 3.3.1 {vxbDmaResourceGet}( ) 1 3.3.2 {vxbDmaResourceRelease}( ) 2 3.3.3 {vxbDmaResDedicatedGet}( ) 2 3.4 头文件 2 3.5 BSP配置 3 3.6 可用的工具函数 3 3.7 初始化 3 3.8 DMA系统结构和函数 3 3.8.1 (*dmaRead)( ) 3 3.8.2 (*dmaReadAndWait)( ) 4 3.8.3 (*dmaWrite)( ) 4 3.8.4 (*dmaWriteAndWait)( ) 4 3.8.5 (*dmaCancel)( ) 5 3.8.6 (*dmaPause)( ) 5 3.8.7 (*dmaResume)( ) 5 3.8.8 (*dmaStatus)( ) 5 3.9 调试 5 4 中断控制器驱动 5 4.1 介绍 6 4.2 概要 6 4.3 VxBus驱动方法 7 4.3.1 基本方法 7 4.3.2 动态向量方法 8 4.3.3 多处理器方法 9 4.4 头文件 9 4.5 BSP配置 10 4.5.1 中断输入表 10 4.5.2 动态向量表 11 4.5.3 CPU路由表 12 4.5.4 中断优先级 12 4.5.5 交差路由表 13 4.6 现有的工具函数 14 4.6.1 intCtlrHwConfGet( ) 14 4.6.2 intCtlrISRAdd( ) 14 4.6.3 intCtlrISRDisable( ) 14 4.6.4 intCtlrISREnable( ) 15 4.6.5 intCtlrISRRemove( ) 15 4.6.6 intCtlrPinFind( ) 15 4.6.7 intCtlrTableArgGet( ) 15 4.6.8 intCtlrTableFlagsGet( ) 15 4.6.9 intCtlrTableIsrGet( ) 15 4.6.10 intCtlrHwConfShow( ) 15 4.6.11 intCtlrTableCreate( ) 15 4.6.12 intCtlrTableFlagsSet( ) 15 4.1.13 intCtlrTableUserSet( ) 15 4.6.14 VXB_INTCTLR_ISR_CALL( ) 15 4.6.15 VXB_INTCTLR_PINENTRY_ENABLED( ) 16 4.6.16 VXB_INTCTLR_PINENTRY_ALLOCATED( ) 16 4.6.17 调度函数 16 4.7 初始化 16 4.8 中断控制器术语和层次 17 4.9 中断优先级 17 4.10 ISR调度 18 4.11 管理动态中断向量 20 4.12 中断输入的内部特征 22 4.13 VxWorks SMP 多处理器问题 22 4.14 调试 22 5 多功能驱动 23 5.1 介绍 23 5.2 概述 23 5.3 VxBus驱动方法 23 5.4 头文件 23 5.5 BSP配置 23 5.6 可用的工具函数 24 5.7 初始化 24 5.8 设备互联 24 5.8.1 交互寄存器 24 5.8.2 共享资源 25 5.8.3 其它交互 25 5.9 子设备的逻辑位置 25 5.10 调试 25 6 网卡驱动 25 6.1 介绍 25 6.1.1 术语 25 6.1.2 网络概述 26 6.2 网络接口驱动程序 27 6.2.1 网络接口驱动概述 27 6.2.2 网络接口驱动程序VxBus驱动方法 28 6.2.3 网络接口驱动程序头文件 33 6.2.4 网络接口驱动程序BSP配置 34 6.2.5 网络接口驱动程序可用的工具程序 34 6.2.6 网络接口驱动程序初始化 42 6.2.7 MUX:连接到网络代码 42 6.2.8 jobQueueLib:延迟中断处理 43 6.2.9 使用Ipcom_pkt包 43 6.2.10 netBufLib:用M_BLKs传输数据 46 6.2.11 协议对驱动程序的影响 48 6.2.12 其它的网络接口驱动问题 48 6.2.13 网络接口驱动程序的调试 48 6.3 PHY驱动程序 56 6.3.1 PHY驱动概述 56 6.3.2 PHY驱动程序的VxBus驱动方法 58 6.3.3 PHY驱动程序头文件 60 6.3.4 PHY驱动的BSP配置 60 6.3.5 PHY驱动程序拥有的工具程序 60 6.3.6 PHY驱动的初始化 62 6.3.7 PHY驱动的调试 62 6.4 无线以太网驱动 62 6.5 层次END驱动 62 7 Non-Volatile RAM驱动 63 7.1 介绍 63 7.2 Non-Volatile RAM 驱动 63 7.2.1 NVRAM驱动概述 63 7.2.2 针对NVRAM驱动的VxBus驱动方法 63 7.2.3 头文件 64 7.2.4 NVRAM驱动的BSP配置 64 7.2.5 NVRAM驱动的工具程序 65 7.2.6 NVRAM驱动的初始化 65 7.2.7 NVRAM块大小 65 7.2.8 栈NVRAM实例 66 7.2.9 调试NVRAM驱动 66 7.3 TureFFS Flash文件系统支持 66 7.3.1 TrueFFS概述 66 7.3.2 TrueFFS驱动开发流程 67 8 资源驱动 90 8.1 介绍 90 8.2 概要 90 8.3 VxBus驱动方法 91 8.4 头文件 91 8.5 BSP配置 91 8.6 可以的工具函数 91 8.7 初始化 91 8.8 调试 91 10 存储器驱动 92 10.1 介绍 92 10.2 概要 92 10.3 VxBus驱动方法 92 10.4 头文件 92 10.5 BSP配置 92 10.6 可用的工具程序 93 10.7 初始化 93 10.8 VxWorks文件系统关联接口 93 10.8.1 设备创建 93 10.8.2 处理 95 10.8.3 事件报告 95 10.9 写一个新的存储器驱动 96 10.10 调试 97 12 USB驱动 97 12.1 介绍 97 12.2 风河USB概要 98 12.2.1 USB主机栈驱动 98 12.2.2 USB外设栈驱动 98 12.3 主机控制器和根集线器类驱动 98 12.3.1 VxBus驱动方法 98 12.3.2 头文件 99 12.3.3 BSP配置 99 12.3.4 可用的工具函数 101 12.3.5 初始化 101 12.3.6 调试 101 13 其它驱动类 103 13.1 介绍 103 13.2 概要 103 13.3 VxBus驱动方法 103 13.4 头文件 104 13.5 BSP配置 104 13.6 可以的工具函数 104 13.7 初始化 104 13.8 调试 104
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

weekman93

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值