资源描述:
《网卡驱动移植过程》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、今天对DM9000进行了移植,大概情况如下;首先要移植我们应该了解LINUX管理驱动的架构,这个我们在前面已经知道了;在arch/arm/plat-s3c24xx/common-smdk.c加入以下代码,登记资源和把网卡加入设备表:/*DM9000*/#ifdefined(CONFIG_DM9000)
2、
3、defined(CONFIG_DM9000_MODULE)staticstructresources3c_dm9k_resource[]={[0]={.start=S3C2410_CS4,.end=S3C2410
4、_CS4+3,.flags=IORESOURCE_MEM,},[1]={.start=S3C2410_CS4+4,.end=S3C2410_CS4+4+3,.flags=IORESOURCE_MEM,},[2]={.start=IRQ_EINT7,.end=IRQ_EINT7,.flags=IORESOURCE_IRQ,}};/*forthemomentwelimitourselvesto16bitIOuntilsome*betterIOroutinescanbewrittenandtested*/statics
5、tructdm9000_plat_datas3c_dm9k_platdata={.flags=DM9000_PLATF_16BITONLY,};staticstructplatform_devices3c_device_dm9k={.name="dm9000",.id=0,.num_resources=ARRAY_SIZE(s3c_dm9k_resource),.resource=s3c_dm9k_resource,.dev={.platform_data=&s3c_dm9k_platdata,}};#endif
6、加入到内核设备列表中staticstructplatform_device__initdata*smdk_devs[]={#ifdefined(CONFIG_DM9000)
7、
8、defined(CONFIG_DM9000_MODULE)&s3c_device_dm9k,#endif&s3c_device_nand,&smdk_led4,&smdk_led5,&smdk_led6,&smdk_led7,};现在要进行对应的代码修改了,修改哪里呢,修改dm9000_probe它完成的是硬件的枚举,即初始化的,要针对性的
9、修改,修改之前还有些东西需要知道;在mini2440的开发板上DM9000在BANK4,所以为了很好的使用DM9000,我们就要设置存储控制器BANK4相关的两个寄存器,BWSCON,BKCON4。对于BWSCON我们设置BANK4的相关4位;设置如下:#ifdefined(CONFIG_ARCH_S3C2410)/**wuxf:BANK4占用BWSCON的4*4=16位,从第16位依此设置为:位宽为16位,使用wait信号,数据掩码引脚为0*/oldval_bwscon=*((volatileunsignedi
10、nt*)S3C2410_BWSCON);*((volatileunsignedint*)S3C2410_BWSCON)=(oldval_bwscon&~(3<<16))
11、S3C2410_BWSCON_DW4_16
12、S3C2410_BWSCON_WS4
13、S3C2410_BWSCON_ST4;/**wuxf:这个需要参考S3C2440的数据手册*/oldval_bankcon4=*((volatileunsignedint*)S3C2410_BANKCON4);*((volatileunsignedint*)S3C
14、2410_BANKCON4)=0x345c;#endif关于BANCON4的:看数据手册这个上面写的是什么啊,呵呵,我们操作一个时序器件的话时序是很重要的,而那写就是操作器件时序,我们设置好了的话,以后操作硬件S3C2440会自动给相应的器件时序,这样我们就设置一次就可以了,方便吧。那么这些时序是什么意思呢?那我们来看看吧。对于器件时序那我们就要分析器件的数据手册了,我们找到dm9000的数据手册,先看写时序:T1:IOW有效之前地址信号有效的时间T2:写信号的有效期T3:数据在IOW信号消失之前数据的时间T4:
15、数据的保持时间T5:地址在IOW信号消失之前的保持时间T6:下一个写信号与这个信号结束之间的时间间隔T7:地址信号有效IO16,IO32的有效时间T8:地址信号无效IO16,IO32有效的时间各个时间段我们都看清楚了,现在我们看我们的S3C2440怎么给这个时间序了,对了,我们只要找到我们对应的连线就可以了,参考S3C2440原理图我们的S3C2440和DM9000的连线