標籤:c style blog http a int
移植環境:Cyclone IV 開發板,網卡晶片為ENC28J60,瀏覽器(Firefox_24.0.0.5001a)
首先,需要瞭解網卡晶片ENC28J60,有中文版的說明書:http://wenku.baidu.com/link?url=79r8JOHiGAyAG9kX9-fOYIRh41jfSyRkxPIdAW9XIzdPjIT5Jbh8gjIobjcsIekhYm-4TiSqnXFd74e2tF1bE2WxUPUiEws0RfrDIw9pRKS
ENC28J60並不是一款標準的乙太網路PHY,它使用SPI協議,只支援10Mbps乙太網路速率。首先搭建NIOS的SOPC系統如:
系統時鐘100MHz,程式運行在SDRAM中,跟ENC28J60相關的硬體串連,LAN其實是一個SPI,另外還有LAN_CS(片選),LAN_NINT(接收中斷)。
時鐘為TIMER,定時Period為1ms。
是系統的BDF原理圖串連情況,PLL提供時鐘,C0為系統時鐘,C1為SDRAM時鐘(有相位偏轉-73度)
系統編譯後,下載對應的SOF檔案。
其次,我們要下載UIP的原始碼,地址為:http://www.dunkels.com/adam/uip,現在UIP已經是ThingSqure(Contiki)的一部分。
下面對UIP進行移植,測試程式為uip提供的web_server程式在UIP的APP檔案夾中。enc28j60的驅動程式為enc28j60.c和enc28j60.h
NIOS II 中主要修改這幾個檔案
tapdev.c:添加網路卡驅動程式,別忘了初始化MAC地址(tapdev_init函數中)
uip-confi.h 對UIP的功能進行配置(使能#include "webserver.h")
clock_arch.c 裡面有個UIP系統時間函數,全域變數g_runtime管理系統時間
下面開一個定時器來對g_rumtime進行計時。
編譯器後,run as nios ii hardware
程式運行後,用抓包工具(wireshark)NetAnalyzer查看資料包。
TCP三向交握,串連請求如下:
程式的為:
http://download.csdn.net/detail/wangyue2725/7423141