基于ARM9的VxWorks增强型网络驱动设计_第1页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、基于arm9的vxworks增强型网络驱动设计在vxworks中添加end网络驱动,需要在文件configh中添加define includeee_network和define include_end。在configneth中添加end驱动的入口函数define load_func_0 cs8900aload和一些相关的初始化字符串。这样就会在生成的bsp中包含end/mux。调试时,配置tomado的目标服务器(target server),通过挑选tools-target server-configure来启动目标服务器的配置程序挑选wbdrpc后台,选中add description t

2、o menu,按照bsp中的配置填写ip地址。4 end驱动程序相关函数的设计end网络驱动程序相关处理函数的设计是网络驱动和管理的关键部分,它包括ioctl、收/发处理、中断处理函数和网络驱动程序函数。(1) ioctl函数的编写ioctl函数主要完成网卡的启动和停止,以及mac地址的设置等,由文件cs8900aendc中的es8900aloctl()函数实现。在函数中可以通过输入指令行参数分离对设置mac地址哀求、猎取mac地址哀求、设置设备标记、猎取设备标记、启动轮询操作、结束轮询操作、返网mib信息、返同第一个最小的缓冲区和返同头的大小等举行参数设置。(2)数据接收函数的编写为了保证数

3、据帧接收的实时性,在cs8900arecv()函数中用法中断的方式处理数据帧的接收。中断中应尽可能做较少的处理,所以当网络设备产生中断时,用户中断服务程序最好包含任务级别的处理服务程序可以通过调用netjobadd()实现。它接收一个程序指针和多达5个附加自变量,可以将应用程序用来处理数据包的入口点设定为任务级别。然后把任务放入tnettask队列,可以用tnettask来处理任务级别的网路处理。只要tnettask队列中有函数,它就会向来工作,直到队列为空,进入睡眠状态。当有数据到达网络设备时,触发中断进入中断服务程序cs8900aendint。在中断服务程序里查看中断状态寄存器,假如rec

4、eivecomplete位为高则进入cs8900amacrxint()。在cs8900amacrxint()中关闭中断并调用beoobadd()将cs8900aendhandlercvint()添加到tnettask要处理的网络任务队列中。cs8900aendhandlerevlnt()主要完成以下工作:通过netclbtkget()来预定一个clblk结构;通过netclblkjoin()把clblk结构链接到包含数据包的cluster;通过netmblkget()来预定一个mblk结构;通过netmblkcljoin()把mblk衔接到clblk、cluster;通过netclusterg

5、el()重新预定一个cluster给收缓冲描述符供下次接收用法;重新开启中断。(3)数据发送函数的编写数据帧的发送不采纳中断模式,挺直调用底层驱动发送函数cs8900aendsend()。发送的步骤如下:1用户凋用write()通过socket套接字拜访网络;2网络协议拷贝到网络缓冲区,并调用协议驱动的发送程序;3协议驱动发送程序调用muxsend()启动发送;4muxsend()通过调用send()回调函数,把缓冲区传递给end;5数据发送程序cs8900aendsend()调用netmblktobufcopy()将数据拷贝到缓冲中,并立刻发送出去。拷贝完成后,调用netmblkclchai

6、nfree()释放全部链中的mblk缓冲并归还到内存池。(4)修改cs8900a.h文件因为s3c2410a芯片内部集成了mac控制器,由芯片内部寄存器举行控制。因此不需要为网卡模块另外分配外设端口或映射寄存器地址。虽然s3c2410a芯片和物理层接口芯片在外部足两个部分,但是从开发的角度看它们是一个整体。在cs8900ah文件中主要完成一些基本配置的设定:define cs_chip_frame_buf_size (2048)define cs_pktpg_dma_num (0x0024)define cs_init_dma_num (3)define cs_init_int_num (0)

7、define cs_chip_mem_base (0x28100000)define cs_chlp_io_base (0x28000000)define cs_chip_io_0ffset (0x300)define cs_chip_mem_offset (0)(5)修改cs8900aend.c文件cs8900aendc 主要完成设备驱动程序函数的编写:/从mib猎取硬件地址define end_haddr(pend) (pend)-mib2tblifphysaddress.phyaddress)defitae end_haddr_len(pend) (pend)-mib2tbl.ifphy

8、saddress.addrlength)/配置设定define end_bufsiz (ethermtu+sizeof_etherheader+6)define end_speed_10m 10000000 /*10mbs*/define end_speed end_speed_10m/定义名称define drv_name cs.然后添加驱动控制结构,其结构如下:typedef struct end deviceend_0bj end /继承的end_obj结构int unit; /设备单元数int ivecbdmatx; /bdmatx中断向量int ivecbdmarx; /bdmarx中断向量.uchar csaddr6; /以太网地址cache_funs * cachefuns; /高速缓冲功能函数指针.该结构中的内容是按照网络设备和用户需要而设计的,其中end_obj结构必需包含。并放置在结构的第一项。5 结束语vxworks下增加型网络驱动是一个链路层驱动程序,它通过mux层函数与网络协议层举行通信,本文分析了基于samsung公司的s3c2410a处理器的vxworks操作系统嵌入式网络硬件平台,阐述了vxworks操作系统下增加型网络接口结构,并按照硬件的设计环境详尽描述并给出了适合该硬件系统的end型网卡驱动

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论