当你比别人优秀一点点,别人会嫉妒你。当你比别人优秀很多,别人会羡慕你。
分类: LINUX
2013-12-19 22:49:06
移植要改动的函数就是probe函数(入口probe,每个驱动独有的,而不是probe1,后者是公共的)
对于普通的网卡,因为网卡一般插在总线上,不知道插在什么地方(但知道肯定是那几个地方,之一),
所以我们就挨个遍历一边,看看哪个地方有。
我们去扫描的时候,使用的是虚拟地址。
所以,对于我们的网卡cs8900来说,需要把物理地址0x19000000用ioremap转换为虚拟地址。
按道理,我们实际上知道,只需要把转换后的虚拟地址,赋值给dev->base_addr就可以了,这样就可以为内核所用类。
后面试试直接赋值拉到。
为了统一规划,代码的规范化,还得继续调用probe1这个函数。这个函数是个通用函数,她访问我们前面probe提供的那个地址,读取
网卡的硬件编码,看看是不是我们要的网卡。
这个地方的读取,是使用的读取I/O地址空间的函数接口,read 等,所以需要再次把已经映射到ARM内存地址空间的外设资源,再次映射一次,
映射到并不存在的I/O地址空间上去,使用访问I/O地址空间的函数接口。
至于这两种空间的区别与联系,看自己的blog:http://blog.chinaunix.net/uid-28708203-id-3793252.html
这是外设资源的设置
第二是,中断号的设置
第三,要使能一个网卡,外设,需要配置好这个外设对应的控制器,网卡控制器,对于S3C2440来说就是BANK3