Godbach 发表于 2009-04-27 11:24

原帖由 z0800 于 2009-4-27 11:23 发表 http://linux.chinaunix.net/bbs/images/common/back.gif
嗯,参考下,感谢!

有分析的心得,记得分享一下阿:wink:

accessory 发表于 2009-04-29 01:23

原帖由 Godbach 于 2009-4-27 09:54 发表 http://linux.chinaunix.net/bbs/images/common/back.gif
讨论一下read_eeprom这个函数阿。
程序在 rtl8139_init_one函数中调用该函数:
addr_len = read_eeprom (ioaddr, 0, 8) == 0x8129 ? 8 : 6;
        for (i = 0; i < 3; i++)
                ((u16 *) (dev->dev_addr)) =
                   ...

我随便猜下。 这个8130too.c 支持多种网卡,比如8129和8139。不同的网卡型功能大致一样,但是有些小细节不同。 所以addr_len 在针对8129型号的网卡时为8,其他为6。
同时由于硬件上的设计,读EEPROM的时候,要用到这个值。

其实我觉得研究这部分代码用处不大。如果要研究的话,也要参考网卡的硬件手册,比如DATA SHEET, PROGRAMMING GUIDE来看。这些地方都是看硬件工程师怎么设计的,没什么道理可言。而且即使你搞明白了8139,换个网卡又得重新看一遍。功利的说,还是看那些通用得部分收获比较大。比如所有网卡都要有OPEN函数等。另外,如果是 INTEL, OR AMD的硬件手册的话,仔细研究下也是值得的,因为用的太多了。8139的普遍性就差点了。

Godbach 发表于 2009-04-29 10:10

原帖由 accessory 于 2009-4-29 01:23 发表 http://linux.chinaunix.net/bbs/images/common/back.gif


我随便猜下。 这个8130too.c 支持多种网卡,比如8129和8139。不同的网卡型功能大致一样,但是有些小细节不同。 所以addr_len 在针对8129型号的网卡时为8,其他为6。
同时由于硬件上的设计,读EEPROM的时候 ...

多谢啊。

其实我就是想了解一下这个程序在读取硬件时候的实现,因为EERPOM的DI,DO各一根,因此,要读取EEPROM中某个偏移寄存器的Value是,首先需要通过DI这根线,写入读命令,读命令包含了START部分和具体的编译,然后就可以从DO读取出16次,每次1个bit。这样就可以获取到对应的值了。我这里就是对构造读命令的时候有些疑惑,和芯片手册有点不太一致。

回头问一下做硬件的朋友。

Godbach 发表于 2009-04-29 19:34

比如所有网卡都要有OPEN函数等。另外,如果是 INTEL, OR AMD的硬件手册的话,仔细研究下也是值得的,因为用的太多了。8139的普遍性就差点了。
accessory 兄的意思是8139的网卡用的没有INTEL或AMD的多吗。我倒觉得RTL8139的用的多一些,因为其价格便宜,很多买网卡的可能就直接买这个了。

简单的了解一下硬件,剩下的还是主要学习其具体功能的实现了。

accessory 发表于 2009-04-29 22:57

不是。我是说INTEL, AMD的CPU 手册还是值得研究下的。
RTL8139在低端用户可能用的多点吧? 对中高端用户来说就差点了。

PS:另外一个关于8139的连接:
http://wiki.osdev.org/RTL8139

[ 本帖最后由 accessory 于 2009-4-29 23:19 编辑 ]

Godbach 发表于 2009-04-30 09:52

原帖由 accessory 于 2009-4-29 22:57 发表 http://linux.chinaunix.net/bbs/images/common/back.gif
不是。我是说INTEL, AMD的CPU 手册还是值得研究下的。
RTL8139在低端用户可能用的多点吧? 对中高端用户来说就差点了。

PS:另外一个关于8139的连接:
http://wiki.osdev.org/RTL8139

对,RTL的就是中低端用户。这里主要是分析一下比较常用的网卡。

aihuazhiren 发表于 2009-05-04 17:50

好东西,我喜欢。

Godbach 发表于 2009-05-04 17:54

原帖由 accessory 于 2009-4-29 22:57 发表 http://linux.chinaunix.net/bbs/images/common/back.gif
不是。我是说INTEL, AMD的CPU 手册还是值得研究下的。
RTL8139在低端用户可能用的多点吧? 对中高端用户来说就差点了。

PS:另外一个关于8139的连接:
http://wiki.osdev.org/RTL8139

这个连接不错。多谢accessory兄。

accessory 发表于 2009-05-06 02:58

又看到一个讲8139的:
http://www.xxlinux.com/linux/e/DoPrint/?classid=13&id=11702

建议LZ把这些连接都放在第一楼里,省得后面的人慢慢找。

Godbach 发表于 2009-05-06 09:42

原帖由 accessory 于 2009-5-6 02:58 发表 http://linux.chinaunix.net/bbs/images/common/back.gif
又看到一个讲8139的:
http://www.xxlinux.com/linux/e/DoPrint/?classid=13&id=11702

建议LZ把这些连接都放在第一楼里,省得后面的人慢慢找。

好的,多谢建议。
页: 1 2 3 4 5 [6] 7 8
查看完整版本: RTL8139网卡驱动程序分析[转]