資源描述:
《網(wǎng)卡驅(qū)動(dòng)移植過(guò)程》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫(kù)。
1、今天對(duì)DM9000進(jìn)行了移植,大概情況如下;首先要移植我們應(yīng)該了解LINUX管理驅(qū)動(dòng)的架構(gòu),這個(gè)我們?cè)谇懊嬉呀?jīng)知道了;在arch/arm/plat-s3c24xx/common-smdk.c加入以下代碼,登記資源和把網(wǎng)卡加入設(shè)備表:/*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、加入到內(nèi)核設(shè)備列表中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,};現(xiàn)在要進(jìn)行對(duì)應(yīng)的代碼修改了,修改哪里呢,修改dm9000_probe它完成的是硬件的枚舉,即初始化的,要針對(duì)性的
9、修改,修改之前還有些東西需要知道;在mini2440的開(kāi)發(fā)板上DM9000在BANK4,所以為了很好的使用DM9000,我們就要設(shè)置存儲(chǔ)控制器BANK4相關(guān)的兩個(gè)寄存器,BWSCON,BKCON4。對(duì)于BWSCON我們?cè)O(shè)置BANK4的相關(guān)4位;設(shè)置如下:#ifdefined(CONFIG_ARCH_S3C2410)/**wuxf:BANK4占用BWSCON的4*4=16位,從第16位依此設(shè)置為:位寬為16位,使用wait信號(hào),數(shù)據(jù)掩碼引腳為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:這個(gè)需要參考S3C2440的數(shù)據(jù)手冊(cè)*/oldval_bankcon4=*((volatileunsignedint*)S3C2410_BANKCON4);*((volatileunsignedint*)S3C
14、2410_BANKCON4)=0x345c;#endif關(guān)于BANCON4的:看數(shù)據(jù)手冊(cè)這個(gè)上面寫(xiě)的是什么啊,呵呵,我們操作一個(gè)時(shí)序器件的話時(shí)序是很重要的,而那寫(xiě)就是操作器件時(shí)序,我們?cè)O(shè)置好了的話,以后操作硬件S3C2440會(huì)自動(dòng)給相應(yīng)的器件時(shí)序,這樣我們就設(shè)置一次就可以了,方便吧。那么這些時(shí)序是什么意思呢?那我們來(lái)看看吧。對(duì)于器件時(shí)序那我們就要分析器件的數(shù)據(jù)手冊(cè)了,我們找到dm9000的數(shù)據(jù)手冊(cè),先看寫(xiě)時(shí)序:T1:IOW有效之前地址信號(hào)有效的時(shí)間T2:寫(xiě)信號(hào)的有效期T3:數(shù)據(jù)在IOW信號(hào)消失之前數(shù)據(jù)的時(shí)間T4:
15、數(shù)據(jù)的保持時(shí)間T5:地址在IOW信號(hào)消失之前的保持時(shí)間T6:下一個(gè)寫(xiě)信號(hào)與這個(gè)信號(hào)結(jié)束之間的時(shí)間間隔T7:地址信號(hào)有效IO16,IO32的有效時(shí)間T8:地址信號(hào)無(wú)效IO16,IO32有效的時(shí)間各個(gè)時(shí)間段我們都看清楚了,現(xiàn)在我們看我們的S3C2440怎么給這個(gè)時(shí)間序了,對(duì)了,我們只要找到我們對(duì)應(yīng)的連線就可以了,參考S3C2440原理圖我們的S3C2440和DM9000的連線