Linux网络设备驱动开发实验
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验三:Linux网络设备驱动开发实验
一、实验目的
读懂linux网络设备驱动程序例子,并且实际加载驱动程序,加载进操作系统以后,会随着上层应用程序的触发而执行相应动作,具体执行的动作可以通过代码进行改变。
●读懂源码及makefile
●编译驱动程序
●加载
●多种形式触发动作
二、预备知识
熟悉linux驱动基本原理,能读懂简单的makefile。
三、实验预计时间
80-120分钟左右
四、驱动程序部分具体步骤
要求读懂一个最简单的驱动程序,在驱动程序的诸如“xxx_open”、“xxx_read”等标准接口里面加入打印语句。可参考多模式教学网上的驱动样例。
五、用于触发驱动动作的应用程序及命令
驱动程序就是以静态的标准接口库函数形式存在,网络设备驱动会受到两大类情况的触发,一种是linux里面的控制台里面的命令,另一种是套接口应用程序,首先要搞清都有哪些具体的命令和应用程序流程,应用程序参考多模式教学网的例子。
六、运行测试
提示:需要将驱动程序以dll加载进系统中,并且触发应用程序调用各种文件操作的接口函数,使得驱动有所动作,打印出相关信息。
1.编译驱动:
cd /某某目录/vnetdev/
make clean
make
2.加载驱动与打开网卡:
insmod netdrv.ko
ifconfig vnet0 up
3.运行应用程序
../raw
4.通过命令“修改网卡MTU”触发驱动执行动作:
ifconfig vnet0 mtu 1222
5.显示内核打印:
cat /var/log/messages
6.卸载:
ifconfig vnet0 down
rmmod netdrv.ko
7.修改代码中的某些函数中的打印信息,重新试验上述流程。
至此大家都应该真正理解和掌握了驱动程序-操作系统-应用程序的三者联动机制。
七、实验结果
由图可知能正常加载网卡驱动,并且能够打印调试信息。
实验四:IGMP协议软件(路由器端)开发
一、实验目的
了解IGMPv2协议的原理。并且在linux下开发、编译运行路由器端的部分,通过两台虚拟机实现路由器和主机之间的组播信息收集过程。
●中等规模的路由协议软件开发
●能读懂rfc
二、预备知识
●熟悉linux下编译运行程序的方法。
●C语言熟练度高。
●网络知识娴熟
三、实验预计时间
30小时
四、具体步骤
1.阅读rfc
2.阅读MLD需求分析和概要设计
3.写出igmp需求分析和概要设计
4.编码、编译
5.实际运行、调试
五、实验结果
实验结果如下图所示:
由图可知此程序可正常运行,基本完成实验目的。