基于ARM-WinCE平臺的時鐘同步設計
S3C2440A的數據線D[15:0]與DM9000的地址、數據復用數據線SD[15:0]連接用來實現S3C2440A與DM9000之間的數據傳輸。芯片選擇信號AEN與S3C2440A的片選使能信號nGSC4連接,當訪問0x20000000-0x27FF FFFF這個范圍的地址時會激活片選使能信號nGCS4。DM9000默認I/O基地址為300H。CMD引腳用于設置COMMAND模式,與S3C2440A的ADDR2連接CMD為高電平時,選擇數據端口。CMD為低電平時,選地址端口。數據端口和地址端口的地址碼由下式決定:
DM9000地址端口=高位片選地址+300H+0H
DM9000數據端口=高位片選地址+300H+4H
高位片選地址由S3C2440A芯片的nGCS4提供,即為:0x20000000。因此DM9000的地址IO基址為0x20000000,數據IO基址為0x2000 0004。向地址IO寫數據時不會激活ADDR2,CMD為低電平,所以向DM9000傳送的數據為地址,而向數據IO寫數據時會激活ADDR2,CMD為高電平,向DM9000傳送的數據為數據。S3C2440的輸出使能引腳nOE連接DM9000的讀引腳IOR,寫使能引腳nWE連接DM9000的寫引腳IOW。DM9000的中斷請求引腳INT連接S3C2440的外部中斷請求引腳EINT7,使得S3C2440A能夠響應DM9000的中斷。
DM9000與DP83640之間通過標準MII接口連接,RXD[3:0]為接收數據線,TXD[3.0]為發送數據線,CRS為載波檢測信號,COL為沖突檢測信號,RX_DV為數據有效信號,RX_ER為接收錯誤信號,RX_CLK為接收時鐘信號,TX_CLK為發送時鐘信號,TX_EN為發送使能信號,MDIO是管理數據的輸入輸出雙向接口,MDC為管理數據接口提供時鐘信號。需要注意的是DM9000默認使用片內PHY,因此在驅動程序初始化DM9000時,必須主動置位網絡控制寄存器NCR的EXT_PHY位以選擇使用片外PHY即DP83640。
3 軟件設計
軟件設計分為兩個步驟:1)是基于DM9000和DP83640進行以太網通信的驅動程序設計;2)是通過DP83640進行時鐘同步的應用程序設計。
本文使用WinCE5.0操作系統,WinCE5.0系統下網絡驅動程序的編寫必須符合網絡驅動接口規范NDIS(Network Driver Interface Stan dard)。NDIS的層次結構如圖3所示,其中最上層的Winsock是提供給應用層的接口。NDIS位于協議驅動層下面,硬件驅動Miniport Driver之上。協議驅動層通過調用NDIS封裝的接口函數,實現與底層硬件驅動的交互。WinCE下網絡驅動程序的設計主要是在NDIS構架下,針對實際的硬件編寫代碼,實現相應的中間層Miniport Driver接口函數。其主要完成的功能有:DM9000與DP83640的初始化;網絡數據包的發送;網絡數據的接收和中斷。本文引用地址:http://www.104case.com/article/149730.htm
實現了以太網通信的驅動程序的基礎上,用于時鐘同步功能的應用程序通過UDP協議發送、接收時鐘同步報文,并進行加入、提取和解析時間戳等操作,這些操作通過讀寫DP83640內部的1588基本寄存器組(PTP 1588 BASEREGISTERS)和1588配置寄存器組(PIP 1588CONFIGURATION REGISTERS)完成。
4 結論
IEEE1588協議通過在以太網上發送和接收同步報文來實現時鐘同步,同步的精度取決于記錄報文發送和接收時間的時間戳的精度,因此要實現高精度的時鐘同步必須通過硬件支持在通信協議的底層加入和提取時間戳。本文通過在ARM-WinCE嵌入式系統平臺上設計了使用DP836 40芯片作為PHY收發器的以太網接口電路及其驅動程序,實現了IEEE1588協議在ARM-WinCE平臺上的移植,并達到了不低于1 μs的同步精度,為基于ARM-WinCE平臺的測試儀器組建分布式測試系統奠定了基礎。
評論