本文档的主要内容详细介绍的是如何在vxworks下调试82573千兆网卡详细资料分析。
在写82573网卡驱动之前还是先了解几个概念,便于后面的调试:
网卡的MAC和PHY:
网卡工作在osi的最后两层,物理层和数据链路层,物理层定义了数据传送与接收所需要的电与光信号、线路状态、时钟基准、数据编码和威廉希尔官方网站 等,并向数据链路层设备提供标准接口。物理层的芯片称之为PHY。数据链路层则提供寻址机构、数据帧的构建、数据差错检查、传送控制、向网络层提供标准的数据接口等功能。以太网卡中数据链路层的芯片称之为MAC控制器。很多网卡的这两个部分是做到一起的。他们之间的关系是pci总线接mac总线,mac接phy,phy接网线(当然也不是直接接上的,还有一个变压装置)。
另外对于千兆网卡还要一个重要的概念就是它能够自适应为100M或者是1000M.我们只要用一根千兆网线和另一台PC(千兆网卡)相连,可以很明显在看到我们的82573网卡就会自适应成1000M。如果我们的PC机是100M的话我们的82573网卡就会自适应成100M。这个就是通过读82573网卡的设备状态寄予器而得来的。
除此之外我们还要知道END设备驱动程序的装载过程:
Vxworks 支持两种类形的网络驱动程序,BSD与END形,这里只讲END形的。
在初始化之前,在BSP的configNet.h文件中end_tbl_entry数组的初始化组要作必要的修改,使之能够识别我们目标板上的网卡类形。在上面我们已经完成了这项工作
网卡驱动程序主要完成以下任务:
装载和启动驱动程序;为驱动程序注册中断处理程序;数用驱动程序处理数据包
主要用到了两个函数。Muxdevload()-àmuxdevstart();Muxdevload()又是调用了endload()来为每个网卡设备装载驱动程序。这样之后网络设备还是不可用的。还要把协议绑定到指定end设备,所以又要调用muxBind()函数。而这个函数是由系统函数ipAttach()来调用的。经过以上之后就可以数据包任务了。
下面的程序是bootconfig.c中usrRoot()的代码。 只是为每个网络设备装载了驱动程序并没用开启设备和绑定协议。开启设备和绑定协议是在bootCmdLoop的loadDebugNet函数中实现了。
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
全部0条评论
快来发表一下你的评论吧 !