之前的前两篇写w5500网卡驱动是我的思路有偏差,用的是一种取巧的方法,在linux的用户空间利用spidev直接进行w5500的设置与tcp连接,这只能叫做是一个w5500的应用程序驱动,虽然能达到相应的目的,但是感觉是一种取巧的方法,没能充分利用到linux内核强大的任务多线程能力,所以决定编写调试一个w5500的内核网络设备驱动,自己也借此学习linux的网络设备驱动等相关知识。
       现在硬件也有所升级,mcu由stm32f407升级为stm32f429,内部内存存储升为2M,外部又加了2M的sram,这样内存是完全能够满足的,stm32f407和stm32f429是完全兼容的,把之前的f407Uclinux内核做相对应的修改即可在stm32f429运行
       由于对linux网络设备驱动的知识缺乏了解就去查阅了相应的资料,看了书和韦东山老师的视频,有了一点认识,于是先做一个简单的虚拟网卡驱动来试验一下。
步骤:
1. 分配一个net_device结构体
2. 设置:
2.1 发包函数: hard_start_xmit //高版本linux有所修改
2.2 收到数据时(在中断处理函数里)用netif_rx上报数据
2.3 其他设置
3. 注册: register_netdevice


具体思路大致是这样并没有错误,但是随着linux内核版本的升级,网络设备驱动的相关函数和数据结构都发生了不少变化,我用的是2.6.33这个版本的linux内核,直接编译韦老师的驱动代码会冒出很多编译错误,这里面的发包函数hard_start_xmit我已经找不到了,net_device_ops结构体的新加入,它里面的.ndo_start_xmit函数,就是发包函数,所以要对net_device_ops结构体进行填充。



       于是参照韦老师视频的虚拟网卡设备驱动程序进行相应的修改,几经调试终于实现了。

参考的韦老师的程序,具体程序在这里下载http://download.csdn.net/download/jccg89104/10116263

在linux内核设置中选择相应选项


编译内核,把内核映像拷入单片机,然后进行相应操作
测试:
1. ifconfig // 查看,无网络设备
2. ifconfig vnet0 3.3.3.3
ifconfig // 查看,出现vnet0,可见虚拟网卡的ip已经设置为3.3.3.3
3.
ping 3.3.3.4 // 试ping3.3.3.4成功,并且有回应,因为在程序中已做相关修改回应处理


经过这个虚拟网卡设备驱动的编写调试,对linux网络设备驱动有了一个清楚的理解,接下来就要去编写和调试w5500网卡设备驱动了!!

linux虚拟网卡驱动相关推荐

  1. Linux之虚拟网卡驱动

    目录 一.网卡驱动程序框架 二.编写虚拟网卡驱动 2.1 测试直接注册net_device 2.2 提供发包函数 2.3 添加统计信息 2.4 构造假包ping通 一.网卡驱动程序框架 网卡驱动程序时 ...

  2. Linux服务器网卡驱动安装及故障排除(转)

    Linux服务器网卡驱动安装及故障排除(转) 转自:http://www.ccw.com.cn/server/yyjq/htm2005/20050817_15OF4.htm感谢原创作者 曹江华 Lin ...

  3. Linux下网卡驱动安装及故障排除

    Linux下网卡驱动安装及故障排除 赛迪网 2007-4-26 9:10:00文/forgiven 网卡是Linux服务器中最重要网络设备.据统计,Linux网络故障有35%在物理层.25%在数据链路 ...

  4. PCI设备驱动与虚拟网卡驱动源码分析

    虚拟网卡驱动例程 #include<linux/module.h> #include<linux/sched.h> #include<linux/kernel.h> ...

  5. win10下安装华为Atals USB虚拟网卡驱动

    1. 用USB连接电脑和HUAWEI Atlas 200 进入设备管理器,查看设备驱动安装情况 2. 安装驱动 (1) 在RNDIS上点击右键,选择更新驱动程序 (2) 接下来选择浏览我的电脑以查找驱 ...

  6. linux 查看网卡损坏,Linux服务器网卡驱动安装及故障排除

    Linux服务器网卡驱动安装及故障排除 网卡是Linux服务器中最重要网络设备.据统计,Linux网络故障有35%在物理层.25%在数据链路层.10%在网络层.10%在传输层.10%在对话.7%在表示 ...

  7. linux下u盘网卡驱动,通过U盘给Linux系统安装网卡驱动的方法

    通过U盘给Linux系统安装网卡驱动的方法 RTL8169的网卡,系统是as 4.4 64位. 最精简安装,只安装了开发包. 没有驱动起来网卡,随机光盘没有for linux的网卡驱动. 只好到 rt ...

  8. linux下u盘网卡驱动,通过u盘给linux安装网卡驱动的做法——深圳培训linux

    简单方便使用,随手可得. 简洁快速,只需一个u盘即可为linux系统安装网卡驱动. 简便快捷的方法都是受大众喜欢的,这样可以快速的简单的解决问题. 通过u盘给linux系统安装网卡驱动的方法,这是一个 ...

  9. WIN7 64位 x64虚拟网卡驱动

    先前修改过一版XP下虚拟网卡.最近同事要在64位win7下使用虚拟网卡,原来的32位网卡已经不能使用.故修改此64位网卡驱动,以便解除微软网卡只能修改为02开头网卡MAC地址限制. 32位虚拟网卡驱动 ...

最新文章

  1. R语言ggplot2可视化:组合箱图(boxplot)和直方图(histogram)输出组合可视化结果
  2. 一行js_不用引入JQuery,前端开发们一行代码就能使用的提示信息开源组件
  3. 无法嵌入互操作类型 请改用适用的接口_机器视觉可用的不同电缆和连接器类型以及相关利弊分析...
  4. 微服务(Microservices)和服务网格(Service Mesh)架构概念整理
  5. Pytorch中view()方法和resize()方法的区别
  6. ssrs 数据分页_如何在SSRS中使用JSON数据
  7. 麦克纳姆轮平台的两种构型
  8. Java 中equals 与 == 的区别:
  9. javascript 自定义对象的两种方法
  10. 遗传算法原理与matlab,有关路径优化遗传算法原理(结合matlab代码)
  11. 谷歌地图的标记样式_如何为Google地图设置样式
  12. 10 Habits of All Successful People 成功人士的10个习惯
  13. Android系统 小米/三星/索尼 应用启动图标未读消息数(BadgeNumber)动态提醒
  14. python实现金字塔图案
  15. 黄金连分数(python)
  16. linux通过xdm开启端口,Red Hat Linux 5.4 开启xdm远程访问
  17. 2022年微信小程序真机调试全流程及10大常见问题处理
  18. [读论文]点云表面重建: SDF, TSDF, MLS, RBF
  19. google的搜索技巧
  20. 香港科大汪校长轻松访谈(2)|与第一代中国基金经理刘央笑看人生(精编版)

热门文章

  1. 基于 Nacos Config 事件监听 动态调整线程池参数
  2. 图学基础与计算机绘图教材,图学基础与计算机绘图课程教学大纲南京邮电大学自动化学院.doc...
  3. 南京邮电大学c语言实验报告5,南京邮电大学C语言大一上期末复习.pdf
  4. Java泛型类与泛型函数
  5. 【ps】制作字体上的渐变颜色
  6. N1刷Armbian系统并在Docker中安装OpenWrt旁路由的详细教程
  7. iOS开发常用第三方类库
  8. 解决mac m1环境下centos虚拟机无法连接网络
  9. matlab编写fie滤波器,数字信号处理大作业mdash;mdash;基于matlab R2019a的男声变女声资料汇总与代码...
  10. 2022-2028全球锂电铜箔行业调研及趋势分析报告