<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          關(guān) 閉

          新聞中心

          EEPW首頁(yè) > 工控自動(dòng)化 > 設(shè)計(jì)應(yīng)用 > Windows CE6.0的DM9000A流接口驅(qū)動(dòng)開(kāi)發(fā)

          Windows CE6.0的DM9000A流接口驅(qū)動(dòng)開(kāi)發(fā)

          作者: 時(shí)間:2012-05-23 來(lái)源:網(wǎng)絡(luò) 收藏

          3 DM流驅(qū)動(dòng)程序的實(shí)現(xiàn)

          DM支持IEEE802.3x全雙工模式流控制,提供IP/TCP/UDP校驗(yàn)、產(chǎn)生及檢測(cè)功能;內(nèi)部集成10/100M自適應(yīng)PHY,同時(shí)具有13 KB的接收緩沖區(qū)和3 KB的發(fā)送緩沖區(qū),支持8位和16位數(shù)據(jù)接口。

          d.JPG

          S3C6410與DM的接口電路如圖3所示。在流驅(qū)動(dòng)程序中是將DM9000A內(nèi)部寄存器地址空間映射到S3C6410內(nèi)部劃分的SROM的BANK1空間上,物理基地址是0x18000000。在 CE 6.0系統(tǒng)下對(duì)硬件寄存器的訪問(wèn)首先需要進(jìn)行地址映射,將寄存器物理地址映射為系統(tǒng)可訪問(wèn)的虛擬地址。最為簡(jiǎn)單的方法就是從系統(tǒng)目錄(C:\wince600\platform\studk6410\src\inc)下找到基于OEM層的地址配置表(oemaddrt ab_cfg.inc),從文件中找到所使用的SROM的BANK1的虛擬地址,在驅(qū)動(dòng)程序中直接訪問(wèn)該地址(如同訪問(wèn)芯片的寄存器地址)。

          流接口驅(qū)動(dòng)的實(shí)現(xiàn)將集中體現(xiàn)在對(duì)初始化接口函數(shù)和I/O控制接口函數(shù)的操作,函數(shù)主要代碼如下:

          其中,0x94000000正是從地址配置表文件中獲取的虛擬地址,dwEthernetIOBase經(jīng)映射后則如同DM9000A內(nèi)部寄存器的首地址。由于硬件線路上是使用S3C6410的地址線中的位2作為DM9000A的數(shù)據(jù)/地址訪問(wèn)信號(hào)(高電平為訪問(wèn)數(shù)據(jù)),故以“dwEthernetIOBase+4”作為訪問(wèn)數(shù)據(jù)的基地址。

          e.JPG

          其中,參數(shù)Handle為流接口設(shè)備的句柄;dwIoControICode為I/O控制碼,可以根據(jù)需要自由定義;pInBuf為傳入數(shù)據(jù)指針;nInBufSize為數(shù)據(jù)長(zhǎng)度。除了初始化函數(shù)和I/O控制函數(shù)外的其他流驅(qū)動(dòng)接口函數(shù)無(wú)需任何處理,直接給出返回值即可。

          f.JPG



          關(guān)鍵詞: Windows 9000A CE6

          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();