免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1039 | 回复: 0
打印 上一主题 下一主题

Linux kernel CS8900网卡驱动的移植 [复制链接]

论坛徽章:
1
15-16赛季CBA联赛之北控
日期:2022-03-04 22:35:50
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-05-11 16:38 |只看该作者 |倒序浏览

作者:Ronnie 手机:13761598350 E-mail:
ghnghnghnghn@163.com
网络传输是当今世界的一大主流,因此网卡驱动也自然而然在各类驱动中占领了一席之地。下面我们就简短地来说一下CS8900网卡驱动移植到Linux kernel的一些问题。
首先要说的是函数入口。一般来说,我们在编译kernel时,设备驱动的选择有两种方式:一种是直接编译到kernel里,另一种是以模块方式挂接。CS8900网卡驱动如果以模块方式挂接,函数init_module就是入口;如果是直接编译到kernel里,那么函数cs89x0_probe才是入口。
在此入口函数中,将完成网卡驱动的各项初始化。如注册虚拟地址,设备号,中断号,以及各个相关寄存器的初始化。
其次,在kenel里面,任何物理地址都要通过MMU转化成虚拟地址,因此在kernel里,我们真正去操作的寄存器的地址其实是和每个寄存器的物理地址一一对应的虚拟地址。我们在定义完我们所要用到的寄存器后,都必须使用一个函数将我们所要用到的寄存器的物理地址转换成为在kernel里可以操作的虚拟地址,然后才能将他们用以具体的操作,否则一切都是徒劳。
第三,CS8900网卡的寄存器都是16位的,所以在选择读写函数时也必须选择16位寄存器的读写函数。
第四,CS8900网卡驱动在kernel里的收发数据方式是基于中断方式的。因此,我们在初始化函数里必须将相应寄存器的中断控制位激活,使CS8900网卡在收发数据时可以采用中断方式。当然,中断号的正确设置也是必不可少的。
最后,关于中断还要说一点。网卡不可能也不需要时时刻刻都处于中断状态,合理的中断触发时机是一个必要条件。
以上便是Linux kernel CS8900网卡驱动移植所需注意的内容。Kernel里面涉及和兼容的东西非常多,去除容易产生冲突的部分,添加自己需要实现的功能,可以使得移植工作能够顺利得进行。

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/31/showart_684433.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP