當(dāng)前位置:湖南陽(yáng)光電子技術(shù)學(xué)校文章資訊電腦維修技術(shù)

湖南陽(yáng)光電子技術(shù)學(xué)校 簡(jiǎn)介

學(xué)校地址:湖南省 長(zhǎng)沙市 雨花區(qū) 車(chē)站南路紅花坡路口
來(lái)校路線:長(zhǎng)沙火車(chē)站售票廳后坪,乘135路公交車(chē)到“紅花坡站”,即到.
學(xué)校電話:13807313137,13308461099
免費(fèi)電話:13807313137
值班手機(jī):(0)13807313137 楊老師
開(kāi)課時(shí)間:我校常年面向全國(guó)招生,月月開(kāi)班。每月1號(hào),16號(hào)開(kāi)學(xué)。
招生范圍:凡年滿15歲的公民,不限年齡,性別,地區(qū)。都?xì)g迎來(lái)我校學(xué)習(xí)。
食宿問(wèn)題:學(xué)校免費(fèi)住宿,免費(fèi)提供床上用品。食堂就餐,費(fèi)用自理,約12元/天。
學(xué)校官網(wǎng):www.hnygpx.net www.410014.com
專(zhuān)業(yè)介紹:歡迎查看我校專(zhuān)業(yè)課程!
收費(fèi)標(biāo)準(zhǔn):歡迎查看我校收費(fèi)標(biāo)準(zhǔn)!
在線 Q Q:您想咨詢(xún)招生情況,請(qǐng)聯(lián)系我啊·您想咨詢(xún)招生情況,請(qǐng)聯(lián)系我啊
網(wǎng)上報(bào)名:歡迎您報(bào)讀湖南陽(yáng)光電子學(xué)校!


Linux kernel2.6.25 CS8900網(wǎng)卡驅(qū)動(dòng)移植

減小字體 增大字體 作者:佚名  來(lái)源:本站整理  發(fā)布時(shí)間:2011-06-02 20:35:24

  一般來(lái)說(shuō),我們?cè)诰幾gkernel時(shí),設(shè)備驅(qū)動(dòng)的選擇有兩種方式:一種是直接編譯到kernel里,另一種是以模塊方式掛接。CS8900網(wǎng)卡驅(qū)動(dòng)如果以模塊方式掛接,函數(shù)init_module就是入口;如果是直接編譯到kernel里,那么函數(shù)cs89x0_probe才是入口。在此入口函數(shù)中,將完成網(wǎng)卡驅(qū)動(dòng)的各項(xiàng)初始化。如注冊(cè)虛擬地址,設(shè)備號(hào),中斷號(hào),以及各個(gè)相關(guān)寄存器的初始化。

  cs89x0_probe函數(shù)里會(huì)去調(diào)用真正的初始化函數(shù)cs89x0_probe1。下面說(shuō)一下該初始化函數(shù)里需要完成的幾個(gè)重要地方:

  1、 注冊(cè)虛擬地址。

  通過(guò)request_region函數(shù)注冊(cè)虛擬地址。在kenel里面,我們所操作的寄存器的地址其實(shí)都是虛擬地址,但是每一個(gè)寄存器的虛擬地址都有唯一和其對(duì)應(yīng)的物理地址,因?yàn)樵趉ernel里面任何虛擬地址都會(huì)通過(guò)MMU轉(zhuǎn)化成物理地址。所以在kernel里,定義完所要用到的寄存器后,都必須使用一個(gè)函數(shù)ioremap將我們所要用到的寄存器的物理地址轉(zhuǎn)換成為在kernel里可以操作的虛擬地址,然后才能將他們用以具體的操作,否則一切都是徒勞。

  ioaddr = (int)ioremap(BASE_ADDR,16);

  2、填充net_device結(jié)構(gòu)體。

  該結(jié)構(gòu)體的成員都是和網(wǎng)絡(luò)設(shè)備有關(guān)的變量。其中比較重要的有兩個(gè):dev_addr和open。dev_addr里要存的是主機(jī)的MAC地址,一般都是從eeproom中讀出來(lái)再存放到該變量中,當(dāng)然也可以根據(jù)自己的需要手動(dòng)賦值。

  for (i=0; i < ETH_ALEN/2; i++) {  unsigned int Addr;  Addr = readreg(dev, PP_IA+i*2);  dev->dev_addr = Addr & 0xFF;  dev->dev_addr = Addr >> 8;}

  Open是一個(gè)函數(shù)指針,需要把net_open函數(shù)賦值給他。net_open函數(shù)是一個(gè)專(zhuān)門(mén)用來(lái)注冊(cè)網(wǎng)絡(luò)設(shè)備中斷號(hào)的函數(shù),輸入ifconfig命令時(shí), 后就會(huì)調(diào)用到這個(gè)函數(shù)。在這個(gè)函數(shù)中要把中斷號(hào)設(shè)置一下。

  writereg(dev, PP_BusCTL, ENABLE_IRQ | MEMORY_ON); request_irq(dev->irq, &net_interrupt, 0, dev->name, dev);

  3、 I/O端口的中斷請(qǐng)求設(shè)置。

  網(wǎng)卡不可能也不需要時(shí)時(shí)刻刻都處于中斷狀態(tài),合理的中斷觸發(fā)時(shí)機(jī)是一個(gè)必要條件。根據(jù)硬件電路圖的引腳可知,相對(duì)應(yīng)的中斷請(qǐng)求寄存器是GPG1和EINT9。在GPG1寄存器里面要把EINT9寄存器功能激活,而在EINT9寄存器里面則要把中斷設(shè)置為上跳沿觸發(fā)。

  writel(readl(S 3C2410_GPGCON) | 0x8, S3C2410_GPGCON); writel(readl(S3C2410_EXTINT1) | 0x40, S3C2410_EXTINT1);

  還有一點(diǎn)要注意,CS8900網(wǎng)卡的寄存器都是16位的,所以在選擇讀寫(xiě)函數(shù)時(shí)也必須選擇16位寄存器的讀寫(xiě)函數(shù)。

  static u16 readword(unsigned long base_addr, int portno){  return inw(base_addr + portno);  }  static void writeword(unsigned long base_addr, int portno, u16 value){  outw(value, base_addr + portno);}

  以上便是Linux kernel2.6.25 CS8900網(wǎng)卡驅(qū)動(dòng)移植所需注意的內(nèi)容。Kernel里面涉及和兼容的東西非常多,去除容易產(chǎn)生沖突的部分,添加自己需要實(shí)現(xiàn)的功能,可以使得移植工作能夠順利進(jìn)行。

網(wǎng)頁(yè)說(shuō)明

    Linux kernel2.6.25 CS8900網(wǎng)卡驅(qū)動(dòng)移植這條信息,為您提供了中國(guó) 新 全的Linux kernel2.6.25 CS8900網(wǎng)卡驅(qū)動(dòng)移植信息,歡迎您免費(fèi)查看Linux kernel2.6.25 CS8900網(wǎng)卡驅(qū)動(dòng)移植信息。如果您對(duì)Linux kernel2.6.25 CS8900網(wǎng)卡驅(qū)動(dòng)移植這條消息有好的意見(jiàn)建議請(qǐng)聯(lián)系我們,讓我們一起進(jìn)步!
  • 熱門(mén)關(guān)鍵詞:CPU(355)  維修(198)  彩電(172)  故障(143)  招生(110)  職業(yè)中專(zhuān)(105)  技工學(xué)校(104)  電腦(98)  機(jī)芯(93)  開(kāi)縣(91)  學(xué)校(88)  手機(jī)(87)  BIOS(68)  首選(65)  培訓(xùn)(65)  筆記本(60)  云陽(yáng)(58)  學(xué)主板維修哪里 好(50)  學(xué)電腦硬件哪里 好(50)  檢修(50)  Windows(46)  MTK(43)  Vista(42)  海爾(42)  東芝(40)  主板(39)  win7(38)  三極管(38)  TCL(37)  模式(37)  硬盤(pán)(36)  三星(35)  液晶電視(35)  工廠(33)  Linux(32)  技術(shù)(32)  XP(30)  北京(30)  電子元件(30)  彩色(29)