阅读:4404回复:20
rtl8139
最近刚刚实习了一下网络驱动程序的编写硬件采用RTL8139.
其实程序的架构基本遵从LDD2.但是涉及到硬件操作的部分还是很麻烦. 因为RTL8139的数据手册太粗略了; 好在可以参考8139too.c, 可以从中得到硬件操作的详细步骤. 虽然程序的好多内容参考了上述文件. 但通过此程序的编写基本上了解了PCI 总线网卡的驱动的编写. 如有兴趣大家可以讨论. |
|
|
沙发#
发布于:2003-10-07 22:11
是不是软硬件全是你一个人作的呀!
我不懂驱动呀! 驱动是不是要对8139的寄存器,进行操作。初始化设置呀? 还有具体误码处理是怎样的呢? 帧的标志(帧头)是什么呢? 谢谢! |
|
板凳#
发布于:2003-10-08 09:19
硬件在市面上可以买的到.
驱动将涉及到硬件初始化,数据的收发,中断的处理, 还有错误的处理. 帧头用缺省的程序处理.对以太网,只要调用过ether_setup,可以不用理会.当然,你也可以重载hard_header,编写自己的帧头处理程序. RTL8139 接受错误处理非常重要. |
|
|
地板#
发布于:2003-12-20 16:04
我在今年年初的时候,需要为 rtl8139 编写一个驱动程序。但
因为各种原因,后来不了了之。记得当时到处找 rtl8139 的资料, 但所获甚微,配置 rtl8139 时,真是感觉晕菜。 不知道 jihaitao 你是在什么平台(cpu? OS?)下作这个驱动的? 8139too.c 很有用参考价值吧?Donald Becker 为 rtl8139 写的 Linux 下驱动你参考了吗? |
|
地下室#
发布于:2003-12-25 10:06
由于rtl8139的资料过于简略我不得不参考8139TOO.C.其实我原计划根本不看任何已有的.完全出于个人的兴趣.
只完成了最基本的功能: 收发数据 不过看懂程序是一回事. 写程序是另外一回事. 在写此程序的过程中, 多次狂读 8139too.c. 才发现如果想读懂程序, 读过以后自己去写 去调试. 其实, 对于rtl8139 ,难度最大的部分 是数据收发出现错误的概率非常高; 所以8139too.c 最有价值的部分是错误处理. ( 个人观点,不一定正确) rtl8139 的效率不高,在用交叉电缆直连的两台机器之间(100M 模式) 只能达到 800K ~ 900K bytes/s , 只是理论值的 1/10. (对端用的是3c574).不知道其它网卡的表现. |
|
|
5楼#
发布于:2003-12-26 00:31
现在太懒了,我写程序的步骤首先是上网找代码再优化了:(
|
|
6楼#
发布于:2003-12-29 13:58
是的,我也发现这个问题,而且用8139的测试程序(DOS),只能用10M-FULL方式。
|
|
7楼#
发布于:2003-12-29 21:45
Phy的初始化问题。
|
|
8楼#
发布于:2004-01-02 15:33
本人目前正在做一块dp83820芯片的网卡(缺eeprom),收发数据都有问题,mac地址在程序里给的值,发数据对方收不到,但网络测试仪可以发现有帧发出,不知什么原因?希望大家互相交流一下。
由于rtl8139的资料过于简略我不得不参考8139TOO.C.其实我原计划根本不看任何已有的.完全出于个人的兴趣. |
|
9楼#
发布于:2004-01-06 14:39
可以检查一下芯片是否对小于64 字节的数据包丢弃
也可以设置成混杂(promisc) 模式 |
|
|
10楼#
发布于:2004-01-07 20:09
我用ifconfig查看网卡信息,显示发出的数据包是42个字节,而realtek的网卡是60个字节,查了半天程序,没看见是什么地方设的。另外请问混杂模式如何设置呢?
|
|
11楼#
发布于:2004-01-09 14:00
可能该芯片不支持autopad 功能. ( 8139也不支持.)
发送时应有下面的一行: packet_len= (len<ETH_ZLEN)?ETH_ZLEN:len 如果只发出去40字节,对端应丢掉.因为不符合标准. |
|
|
12楼#
发布于:2004-01-14 12:46
我做的DP83820的确不支持AUTO PAD。但我也添加了packet_len= (len<ETH_ZLEN)?ETH_ZLEN:len 。但问题并没有解决。
而且,你说的混杂(promisc) 模式是在硬件还是驱动里设置呢? 有什么好方法呢? 谢谢。 |
|
13楼#
发布于:2004-03-02 17:29
高手们我可以指导下小弟吗?小弟是个初学者也想学8139网卡驱动编写!
|
|
|
14楼#
发布于:2004-03-20 13:25
混杂模式:ifconfig eth0 promisc
|
|
15楼#
发布于:2005-04-19 15:52
能否参考一下楼主的代码,我也写了一个能收发包的驱动,但是ifconfig myif up就死机了,不明白哪里有问题
|
|
16楼#
发布于:2005-04-22 21:21
我最近也在做有关网卡驱动的程序,但还是一头雾水,希望楼主能给一些指点,我的qq是99763145,希望能联系一下,我前两个月读的是赵炯的Linux0.11的内核版本,可是他却没有网络的内容,我又看了《Linux device drivers》但也只是有个整体的模糊印象。希望楼主能够给一些些具体的指导。
|
|
|
17楼#
发布于:2005-04-26 13:54
由于工作的关系,好久没来了. 其实, 网络驱动最好的例子还是 linux device driver 里的 snull. 如果重写一遍并调试成功, 再去了解 pci, 可以8139too.c 为模板.
我重写过的程序不知能不能找的着;如果找着的话,我会贴上来作为参考 |
|
|
18楼#
发布于:2005-04-27 08:53
我想问一下在rtl8139_rx_interrupt涵数的后面有条语句
RTL_W16_F (RxBufPtr, cur_rx - 16) 为什么是cur_rx - 16 而不是cur_rx啊 |
|
19楼#
发布于:2005-05-25 16:10
我的Linux系统内核是Kernel2.6.5,我现在在网上下载了一个8139网卡驱动源程序,它有三个文件:.C、.Makefile、readme文件. 我想在Linux下编译.C文件,办不知用什么生成.ko文件?谢谢了 8139TOO。C怎么编译生成。O或.KO 文件? QQ:124273664 MSN:zhifulee@hotmail.com |
|
上一页
下一页