基于ARM9的VxWorks增强型网络驱动设计
时间:04-07
来源:互联网
点击:
VxWorks是美国风河公司(Wind River)推出的具备网络功能的实时嵌入式操作系统。VxWorks以其良好的可靠性和卓越的实时性被广泛应用于航海、军事、航窄、通信等高精尖技术及实时性要求极高的领域中。vxWorks在各种CPU平台上提供了统一的编程接口和一致的运行特性,尽可能屏蔽不同CPU之间的底层差异。所以,VxWorks可以方便地移植到不同的CPU平台上,如ARM、PowerPC、x86等。
增强犁网络驱动(Enhanced Network Driver,END)是一个使用MUX(多路复用)功能来与网络协议进行通信的数据链路层驱动。本文主要研究基于sumsang公司S3C2410A处理器的网络硬件环境下VxWorks嵌入式操作系统增强型网络驱动程序的构建和编写。
1 S3C2410A的网络硬件平台
S3C2410A微处理器是sumsang半导体公司为手持设备等相关应用设计的一款低功耗、高集成度的处理器,包含一个ARM920T芯片。S3C2419A内嵌的CS8900A作为主控芯片的以太网模块,是一款低成本的以太局域网控制器,包含片上RAM、10Base-T传输和接收滤波器,以及带24mA驱动的直接ISA总线接口,还集成了一个10Mbps的以太网收发器.以及所有用于和局域网通信的模拟及数字电路,通过一个电磁隔离器E2023直接和局域网相连。RJ45为网络接头,可连接10M/100M的网络集线器。CS8900A工作在全舣工模式下.支持包括用于流控的暂停操作的IEEE802.3MAC控制层协议。其硬件原理图如图1所示。
2 增强型网络驱动END
VxWorks支持两种模式的网络设备驱动程序,即BSD 4.3网络驱动程序和可裁剪的增强型网络设备驱动SENS。SENS(Sealable Enhanced Network Stack)是由BSD 4.3 TCP/IP网络协议栈发展而来的,并包含了许多原协议栈没有的协议。而且SENS在实现新的协议时增加了一些新特性,如在IP协议实现时增加了多播功能。为实现网络接口程序可替换,WindRiver专为SENS设计了一种增强的网络驱动程序END。SENS模型包含3个部分:协议驱动程序、多路复用接口(MUX)和增强的网络驱动(END)。在驱动程序和上层协议之间,SENS模型提供了协议驱动层。在协议驱动层和END驱动层之间,SENS模型提供了MUX层,使其直接与END驱动程序进行交互。它们之间的结构关系如图2所示。
图1 CS8900A硬件原理图
图2 网络协议栈结构图
在BSD 4.3模型下,VxWorks网络驱动程序与协议紧密结合,它们依赖于彼此的数据结构;而在基于MUX模型下,网络驱动程序和协议之间没有内部交换数据,它们只通过MUX间接相互作用。MUX接口的作用便是分解网络驱动程序和协议,使它们几乎独立。这种独立使得添加新的驱动程序和协议变得非常简单。
3 END网络驱动程序的装载和启动
在基于S3C2410A的VxWorks BSP设计中,configNet.h文件定义了一个END_TBL_ENTRY结构的数组endDevTbl[],该数组将网络设备驱动程序的装载函数cs8900EndLoad()入口点及相关参数添加到网络设备表endDevTbl[]中。endDevTbl[]数组描述了系统所有网络设备的装载入口点及其相关参数.其中的一个参数CS_LOAD_STRING进行资源字符串的初始化工作。资源字符串的描述和加载程序的处理有关,需要包含网卡基地址、中断向量号、中断号、偏移、配置值、MAC地址等。不同网卡的资源字符串有所不同,而且排列顺序也没有硬性的规定,只要提供的数据能满足endLoad()的需要即可。
在使用编写好的vxworks BSP引导操作系统时,系统将执行usrRoot()函数来实现以下功能:首先初始化网络任务的工作队列,然后调用tNetTask()任务来处理网络任务工作队列中的任务。tNetTask()通过调用muxDevLoad()来装载网络接口驱动,在tNetTask()中已经定义了网络驱动设备的endLoad()接入点,muxDevLoad()也要执行endLoad()。endLoad()执行设备初始化并返回一个名为END_OBJ的结构体。MUX在END_OBJ上加一个指针,指向能够将数据包向MUX上层发送的函数。然后MUX把返同的END_OBJ加入到END_OBJ结构链表中。当从muxDevLoad()返回后,网络设备就准备好可以使用了。设备装载完成后,muxDevload()调用muxDevStart()启动函数,该函数通过intConnect()和intEnable()实现中断服务的注册并打开中断宏。当有数据交换时,打开中断服务程序,调用排列网络任务处理函数netJobAdd(),指派网络系统任务tNeflask(),由tNetTask()数据接收和发送任务。其网络设备的驱动程序安装顺序如图3
所示。
图3 END加载顺序图
在VxWorks中添加END网络驱动,需要在文件config.h中添加#define INCLUDEEE_NETWORK和#define INCLUDE_END。在configNet.h中添加END驱动的入口函数#define LOAD_FUNC_0 cs8900aLoad和一些相关的初始化字符串。这样就会在生成的BSP中包含END/MUX。
调试时,配置Tomado的目标服务器(Target Server),通过选择Tools->Target Server->Configure来启动目标服务器的配置程序.选择wbdrpc后台,选中Add description to menu,根据BSP中的配置填写IP地址。
增强犁网络驱动(Enhanced Network Driver,END)是一个使用MUX(多路复用)功能来与网络协议进行通信的数据链路层驱动。本文主要研究基于sumsang公司S3C2410A处理器的网络硬件环境下VxWorks嵌入式操作系统增强型网络驱动程序的构建和编写。
1 S3C2410A的网络硬件平台
S3C2410A微处理器是sumsang半导体公司为手持设备等相关应用设计的一款低功耗、高集成度的处理器,包含一个ARM920T芯片。S3C2419A内嵌的CS8900A作为主控芯片的以太网模块,是一款低成本的以太局域网控制器,包含片上RAM、10Base-T传输和接收滤波器,以及带24mA驱动的直接ISA总线接口,还集成了一个10Mbps的以太网收发器.以及所有用于和局域网通信的模拟及数字电路,通过一个电磁隔离器E2023直接和局域网相连。RJ45为网络接头,可连接10M/100M的网络集线器。CS8900A工作在全舣工模式下.支持包括用于流控的暂停操作的IEEE802.3MAC控制层协议。其硬件原理图如图1所示。
2 增强型网络驱动END
VxWorks支持两种模式的网络设备驱动程序,即BSD 4.3网络驱动程序和可裁剪的增强型网络设备驱动SENS。SENS(Sealable Enhanced Network Stack)是由BSD 4.3 TCP/IP网络协议栈发展而来的,并包含了许多原协议栈没有的协议。而且SENS在实现新的协议时增加了一些新特性,如在IP协议实现时增加了多播功能。为实现网络接口程序可替换,WindRiver专为SENS设计了一种增强的网络驱动程序END。SENS模型包含3个部分:协议驱动程序、多路复用接口(MUX)和增强的网络驱动(END)。在驱动程序和上层协议之间,SENS模型提供了协议驱动层。在协议驱动层和END驱动层之间,SENS模型提供了MUX层,使其直接与END驱动程序进行交互。它们之间的结构关系如图2所示。
图1 CS8900A硬件原理图
图2 网络协议栈结构图
在BSD 4.3模型下,VxWorks网络驱动程序与协议紧密结合,它们依赖于彼此的数据结构;而在基于MUX模型下,网络驱动程序和协议之间没有内部交换数据,它们只通过MUX间接相互作用。MUX接口的作用便是分解网络驱动程序和协议,使它们几乎独立。这种独立使得添加新的驱动程序和协议变得非常简单。
3 END网络驱动程序的装载和启动
在基于S3C2410A的VxWorks BSP设计中,configNet.h文件定义了一个END_TBL_ENTRY结构的数组endDevTbl[],该数组将网络设备驱动程序的装载函数cs8900EndLoad()入口点及相关参数添加到网络设备表endDevTbl[]中。endDevTbl[]数组描述了系统所有网络设备的装载入口点及其相关参数.其中的一个参数CS_LOAD_STRING进行资源字符串的初始化工作。资源字符串的描述和加载程序的处理有关,需要包含网卡基地址、中断向量号、中断号、偏移、配置值、MAC地址等。不同网卡的资源字符串有所不同,而且排列顺序也没有硬性的规定,只要提供的数据能满足endLoad()的需要即可。
在使用编写好的vxworks BSP引导操作系统时,系统将执行usrRoot()函数来实现以下功能:首先初始化网络任务的工作队列,然后调用tNetTask()任务来处理网络任务工作队列中的任务。tNetTask()通过调用muxDevLoad()来装载网络接口驱动,在tNetTask()中已经定义了网络驱动设备的endLoad()接入点,muxDevLoad()也要执行endLoad()。endLoad()执行设备初始化并返回一个名为END_OBJ的结构体。MUX在END_OBJ上加一个指针,指向能够将数据包向MUX上层发送的函数。然后MUX把返同的END_OBJ加入到END_OBJ结构链表中。当从muxDevLoad()返回后,网络设备就准备好可以使用了。设备装载完成后,muxDevload()调用muxDevStart()启动函数,该函数通过intConnect()和intEnable()实现中断服务的注册并打开中断宏。当有数据交换时,打开中断服务程序,调用排列网络任务处理函数netJobAdd(),指派网络系统任务tNeflask(),由tNetTask()数据接收和发送任务。其网络设备的驱动程序安装顺序如图3
所示。
图3 END加载顺序图
在VxWorks中添加END网络驱动,需要在文件config.h中添加#define INCLUDEEE_NETWORK和#define INCLUDE_END。在configNet.h中添加END驱动的入口函数#define LOAD_FUNC_0 cs8900aLoad和一些相关的初始化字符串。这样就会在生成的BSP中包含END/MUX。
调试时,配置Tomado的目标服务器(Target Server),通过选择Tools->Target Server->Configure来启动目标服务器的配置程序.选择wbdrpc后台,选中Add description to menu,根据BSP中的配置填写IP地址。
VxWorks 嵌入式 ARM S3C2410 半导体 滤波器 总线 收发器 电路 相关文章:
- 基于VxWorks的NAND FLASH驱动程序设计(07-31)
- 空间机器人中央计算机的双机热备份(08-15)
- 风河VxWorks全新升级尽显Java嵌入式开发优势(09-10)
- 基于VxWorks实时操作系统的通信模型设计(12-03)
- 使用BCM56500实现板级高性能交换型路由器(06-07)
- 基于VxWorks的网络接口设计(06-21)