免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: sherf

RTL8139 programming guide [复制链接]

论坛徽章:
0
发表于 2009-10-30 10:12 |显示全部楼层

回复 #9 sherf 的帖子

谢谢各位的回复,目前对网卡驱动已有了更多的了解。但有一些问题还没有弄明白。比如,Godbach所推荐的第一篇文章里面有一个demo,demo里面有一个寻找IRQ的函数(findirq),在里面我发现iobase和irq是从别的地方获取的(应该都跟0x80000000有关)。在查找了一些资料后,发现如果要使得网卡驱动能工作,之前应该先要做一个PCI的驱动,在里面配置好PCI设备(如网卡)的IRQ、输入输出端口(寄存器)等。

目前碰到的问题是:这些输入输出端口的信息是从哪里来的(BIOS吗?还是规范里统一规定的,就像键盘的60H、61H端口)?0x80000000这个地址又是从何而来的?具体的操作应该怎样(最好有些简单的demo)?谢谢。

(曾寻找过有关PCI的资料,但发现这些资料几乎都与实际的系统(如:linux,windows等)相关,都直接去分析它的函数,很难形成一个清晰的认识。)

论坛徽章:
0
发表于 2009-10-30 10:29 |显示全部楼层

回复 #10 sherf 的帖子

PCI的就是看mindshare的 PCI系统结构 了.当你把它看懂了,就没有任何问题了...

论坛徽章:
0
发表于 2009-10-30 11:47 |显示全部楼层

回复 #11 epegasus 的帖子

.........

论坛徽章:
0
发表于 2009-10-30 12:31 |显示全部楼层

回复 #12 sherf 的帖子

并且,在调试那个demo的时候,发现当发送0x80000000给0xcf8后,从0xcfc读到的返回值很奇怪(32个返回值都是0x000000ff,正常的应该会有一个是8139什么的),我查找了很久,都没发现这个值代表什么.........

论坛徽章:
0
发表于 2009-10-30 12:37 |显示全部楼层

回复 #12 sherf 的帖子

哦,我是搞懂了这个才把很多能串起来的,本来这点东西我都不好发多次,但是我发现很多人没搞清楚,所以困惑很多,而对大牛们似乎是潜规则,没有一个人把这个直白说出来...
http://linux.chinaunix.net/bbs/thread-1096162-1-4.html
PCI主要是2点主线:配置空间的寻址和 通常总线的的寻址,搞清楚这2个主干,其他都是枝叶.

论坛徽章:
0
发表于 2009-10-30 18:33 |显示全部楼层
原帖由 sherf 于 2009-10-30 12:31 发表
并且,在调试那个demo的时候,发现当发送0x80000000给0xcf8后,从0xcfc读到的返回值很奇怪(32个返回值都是0x000000ff,正常的应该会有一个是8139什么的),我查找了很久,都没发现这个值代表什么.........


这个问题已修正。不过却发现从0xCFC上传回来的都是0xFFFFFFFF,没找到任何PCI设备。但我的网卡明明插在PCI插槽上的且正在使用,为何没检测出来呢?

论坛徽章:
0
发表于 2009-10-30 19:28 |显示全部楼层
原帖由 sherf 于 2009-10-30 18:33 发表


这个问题已修正。不过却发现从0xCFC上传回来的都是0xFFFFFFFF,没找到任何PCI设备。但我的网卡明明插在PCI插槽上的且正在使用,为何没检测出来呢?


如果是PCI设备且工作正常,就一定能通过发送0x80000000(在循环中递增0x800)给0xCF8并根据0xCFC的返回值检测出来吗?

论坛徽章:
0
发表于 2009-10-30 21:39 |显示全部楼层

回复 #16 sherf 的帖子

一个卡槽对应一个slot,slot决定偏移量,slot由IDSEL线确定,如何用地址线拌成IDSEL线是芯片决定的,这个要参考文档。

论坛徽章:
0
发表于 2009-10-30 22:21 |显示全部楼层
原帖由 epegasus 于 2009-10-30 21:39 发表
一个卡槽对应一个slot,slot决定偏移量,slot由IDSEL线确定,如何用地址线拌成IDSEL线是芯片决定的,这个要参考文档。



如何用地址线拌成IDSEL线是芯片决定的,这个要参考文档——参考哪个文档?大概会是在该文档中的哪个部分?

论坛徽章:
0
发表于 2009-10-31 00:52 |显示全部楼层
关于PCI,可以看下下面的连接,虽然老了点,但是基础知识变化不大。英文的。
http://tldp.org/LDP/tlk/dd/pci.html

另外,LZ你的开发环境是啥?不是windows?也不是LINUX?如果是WINDOWS,可以在设备管理器里看到你的设备(没有驱动的一般是未知设备)。如果是LINUX,可以用LSPCI看看。如果这些标准的命令可以看到设备,那就是你自己的程序 没写好。

另外,还可以看看 pciutils : http://mj.ucw.cz/pciutils.html
它是专门读写PCI的一个库。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP