linux虚拟网卡驱动
之前的前两篇写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
![](/assets/blank.gif)
具体思路大致是这样并没有错误,但是随着linux内核版本的升级,网络设备驱动的相关函数和数据结构都发生了不少变化,我用的是2.6.33这个版本的linux内核,直接编译韦老师的驱动代码会冒出很多编译错误,这里面的发包函数hard_start_xmit我已经找不到了,net_device_ops结构体的新加入,它里面的.ndo_start_xmit函数,就是发包函数,所以要对net_device_ops结构体进行填充。
![](/assets/blank.gif)
于是参照韦老师视频的虚拟网卡设备驱动程序进行相应的修改,几经调试终于实现了。
参考的韦老师的程序,具体程序在这里下载http://download.csdn.net/download/jccg89104/10116263
在linux内核设置中选择相应选项
![](/assets/blank.gif)
编译内核,把内核映像拷入单片机,然后进行相应操作
测试:
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成功,并且有回应,因为在程序中已做相关修改回应处理
![](/assets/blank.gif)
经过这个虚拟网卡设备驱动的编写调试,对linux网络设备驱动有了一个清楚的理解,接下来就要去编写和调试w5500网卡设备驱动了!!
linux虚拟网卡驱动相关推荐
- Linux之虚拟网卡驱动
目录 一.网卡驱动程序框架 二.编写虚拟网卡驱动 2.1 测试直接注册net_device 2.2 提供发包函数 2.3 添加统计信息 2.4 构造假包ping通 一.网卡驱动程序框架 网卡驱动程序时 ...
- Linux服务器网卡驱动安装及故障排除(转)
Linux服务器网卡驱动安装及故障排除(转) 转自:http://www.ccw.com.cn/server/yyjq/htm2005/20050817_15OF4.htm感谢原创作者 曹江华 Lin ...
- Linux下网卡驱动安装及故障排除
Linux下网卡驱动安装及故障排除 赛迪网 2007-4-26 9:10:00文/forgiven 网卡是Linux服务器中最重要网络设备.据统计,Linux网络故障有35%在物理层.25%在数据链路 ...
- PCI设备驱动与虚拟网卡驱动源码分析
虚拟网卡驱动例程 #include<linux/module.h> #include<linux/sched.h> #include<linux/kernel.h> ...
- win10下安装华为Atals USB虚拟网卡驱动
1. 用USB连接电脑和HUAWEI Atlas 200 进入设备管理器,查看设备驱动安装情况 2. 安装驱动 (1) 在RNDIS上点击右键,选择更新驱动程序 (2) 接下来选择浏览我的电脑以查找驱 ...
- linux 查看网卡损坏,Linux服务器网卡驱动安装及故障排除
Linux服务器网卡驱动安装及故障排除 网卡是Linux服务器中最重要网络设备.据统计,Linux网络故障有35%在物理层.25%在数据链路层.10%在网络层.10%在传输层.10%在对话.7%在表示 ...
- linux下u盘网卡驱动,通过U盘给Linux系统安装网卡驱动的方法
通过U盘给Linux系统安装网卡驱动的方法 RTL8169的网卡,系统是as 4.4 64位. 最精简安装,只安装了开发包. 没有驱动起来网卡,随机光盘没有for linux的网卡驱动. 只好到 rt ...
- linux下u盘网卡驱动,通过u盘给linux安装网卡驱动的做法——深圳培训linux
简单方便使用,随手可得. 简洁快速,只需一个u盘即可为linux系统安装网卡驱动. 简便快捷的方法都是受大众喜欢的,这样可以快速的简单的解决问题. 通过u盘给linux系统安装网卡驱动的方法,这是一个 ...
- WIN7 64位 x64虚拟网卡驱动
先前修改过一版XP下虚拟网卡.最近同事要在64位win7下使用虚拟网卡,原来的32位网卡已经不能使用.故修改此64位网卡驱动,以便解除微软网卡只能修改为02开头网卡MAC地址限制. 32位虚拟网卡驱动 ...
最新文章
- R语言ggplot2可视化:组合箱图(boxplot)和直方图(histogram)输出组合可视化结果
- 一行js_不用引入JQuery,前端开发们一行代码就能使用的提示信息开源组件
- 无法嵌入互操作类型 请改用适用的接口_机器视觉可用的不同电缆和连接器类型以及相关利弊分析...
- 微服务(Microservices)和服务网格(Service Mesh)架构概念整理
- Pytorch中view()方法和resize()方法的区别
- ssrs 数据分页_如何在SSRS中使用JSON数据
- 麦克纳姆轮平台的两种构型
- Java 中equals 与 == 的区别:
- javascript 自定义对象的两种方法
- 遗传算法原理与matlab,有关路径优化遗传算法原理(结合matlab代码)
- 谷歌地图的标记样式_如何为Google地图设置样式
- 10 Habits of All Successful People 成功人士的10个习惯
- Android系统 小米/三星/索尼 应用启动图标未读消息数(BadgeNumber)动态提醒
- python实现金字塔图案
- 黄金连分数(python)
- linux通过xdm开启端口,Red Hat Linux 5.4 开启xdm远程访问
- 2022年微信小程序真机调试全流程及10大常见问题处理
- [读论文]点云表面重建: SDF, TSDF, MLS, RBF
- google的搜索技巧
- 香港科大汪校长轻松访谈(2)|与第一代中国基金经理刘央笑看人生(精编版)
热门文章
- 基于 Nacos Config 事件监听 动态调整线程池参数
- 图学基础与计算机绘图教材,图学基础与计算机绘图课程教学大纲南京邮电大学自动化学院.doc...
- 南京邮电大学c语言实验报告5,南京邮电大学C语言大一上期末复习.pdf
- Java泛型类与泛型函数
- 【ps】制作字体上的渐变颜色
- N1刷Armbian系统并在Docker中安装OpenWrt旁路由的详细教程
- iOS开发常用第三方类库
- 解决mac m1环境下centos虚拟机无法连接网络
- matlab编写fie滤波器,数字信号处理大作业mdash;mdash;基于matlab R2019a的男声变女声资料汇总与代码...
- 2022-2028全球锂电铜箔行业调研及趋势分析报告