仓酷云
标题:
来看看:Linux kernel2.6.25 CS8900网卡驱动移植
[打印本页]
作者:
飘飘悠悠
时间:
2015-1-16 15:43
标题:
来看看:Linux kernel2.6.25 CS8900网卡驱动移植
无论图形界面发展到什么水平这个原理是不会变的,Linux命令有许多强大的功能:从简单的磁盘操作、文件存取、到进行复杂的多媒体图象和流媒体文件的制作。
一样平常来讲,我们在编译kernel时,设备驱动的选择有两种体例:一种是间接编译到kernel里,另外一种是以模块体例挂接。CS8900网卡驱动假如以模块体例挂接,函数init_module就是出口;假如是间接编译到kernel里,那末函数cs89x0_probe才是出口。
在此出口函数中,将完成网卡驱动的各项初始化。如注册假造地点,设备号,中止号,和各个相干存放器的初始化。
cs89x0_probe函数里会往挪用真实的初始化函数cs89x0_probe1。上面说一下该初始化函数里必要完成的几个主要中央:
1、注册假造地点。
经由过程request_region函数注册假造地点。在kenel内里,我们所操纵的存放器的地点实在都是假造地点,可是每个存放器的假造地点都有独一和其对应的物理地点,由于在kernel内里任何假造地点城市经由过程MMU转化成物理地点。以是在kernel里,界说完所要用到的存放器后,都必需利用一个函数ioremap将我们所要用到的存放器的物理地点转换成为在kernel里能够操纵的假造地点,然后才干将他们用以详细的操纵,不然统统都是白费。
ioaddr=(int)ioremap(BASE_ADDR,16);
2、添补net_device布局体。
该布局体的成员都是和收集设备有关的变量。个中对照主要的有两个:dev_addr和open。dev_addr里要存的是主机的MAC地点,一样平常都是从eeproom中读出来再寄存到该变量中,固然也能够依据本人的必要手动赋值。
for(i=0;i<ETH_ALEN/2;i++){
unsignedintAddr;
Addr=readreg(dev,PP_IA+i*2);
dev->dev_addr[i*2]=Addr&0xFF;
dev->dev_addr[i*2+1]=Addr>>8;
}
Open是一个函数指针,必要把net_open函数赋值给他。net_open函数是一个专门用来注册收集设备中止号的函数,输出ifconfig命令时,最初就会挪用到这个函数。在这个函数中要把中止号设置一下。
writereg(dev,PP_BusCTL,ENABLE_IRQ|MEMORY_ON);
request_irq(dev->irq,&net_interrupt,0,dev->name,dev);
3、I/O端口的中止哀求设置。
网卡不成能也不必要每时每刻都处于中止形态,公道的中止触发机会是一个需要前提。依据硬件电路图的引脚可知,绝对应的中止哀求存放器是GPG1和EINT9。在GPG1存放器内里要把EINT9存放器功效激活,而在EINT9存放器内里则要把中止设置为上跳沿触发。
writel(readl(S3C2410_GPGCON)|0x8,S3C2410_GPGCON);
writel(readl(S3C2410_EXTINT1)|0x40,S3C2410_EXTINT1);
另有一点要注重,CS8900网卡的存放器都是16位的,以是在选择读写函数时也必需选择16位存放器的读写函数。
staticu16readword(unsignedlongbase_addr,intportno)
{
returninw(base_addr+portno);
}
staticvoidwriteword(unsignedlongbase_addr,intportno,u16value)
{
outw(value,base_addr+portno);
}
以上即是Linuxkernel2.6.25CS8900网卡驱动移植所需注重的内容。Kernel内里触及和兼容的器材十分多,往除简单发生抵触的部分,增加本人必要完成的功效,可使得移植事情可以顺遂举行
</p>
vim除非你打算真正的学好linux,或者说打算长久时间学习他,而且肯花大量时间vim,否则,最好别碰
作者:
分手快乐
时间:
2015-1-18 16:09
虽然大家都比较喜欢漂亮的mm,但是在学linux的过程中,还是要多和“男人”接触一下:P遇到问题的时候,出来看说和上网查之外,就是要多用linux下的man命令找找帮助。
作者:
精灵巫婆
时间:
2015-1-26 14:04
可以说自己收获很大,基本上完成了老师布置的任务,对于拔高的题目没有去做,因为我了解我的水平,没有时间和精力去做。?
作者:
小女巫
时间:
2015-2-4 19:23
Linux是参照Unix思想设计的,理解掌握Linux必须按照Unix思维来进行。思想性的转变比暂时性的技术提高更有用,因为他能帮助你加快学习速度。
作者:
兰色精灵
时间:
2015-2-10 06:10
期间我阅读了不少关于Linux的相关资料,其中也不乏一些有趣的小故事,这既丰富了我的课余生活,也让我加深了对一些术语的理解,比玩游戏强多了。?
作者:
爱飞
时间:
2015-2-28 23:44
就这样,我们一边上OS理论课,一边上这个实验,这样挺互补的,老师讲课,一步一步地布置任务
作者:
若天明
时间:
2015-3-10 11:03
对于英语不是很好的读者红旗 Linux、中标Linux这些中文版本比较适合。现在一些Linux网站有一些Linux版本的免费下载,这里要说的是并不适合Linux初学者。
作者:
若相依
时间:
2015-3-17 07:08
期间我阅读了不少关于Linux的相关资料,其中也不乏一些有趣的小故事,这既丰富了我的课余生活,也让我加深了对一些术语的理解,比玩游戏强多了。?
作者:
乐观
时间:
2015-3-24 01:28
这种补充有助于他人在邮件列表/新闻组/论坛中搜索对你有过帮助的完整解决方案,这可能对他们也很有用。
欢迎光临 仓酷云 (http://ckuyun.com/)
Powered by Discuz! X3.2