千兆udp學習除錯記錄(四)
20181009 周二
繼續分析源**,crc已經說過了,現在來看ip_receive模組。通過對傳送模組的全面、細緻解析,再對現在的接收模組進行分析,應該會輕鬆很多了吧。哈哈。
補充:程式是直接用乙個總的流程狀態實現的,相比於一般的三段式狀態機,各有什麼優點呢?
可以嘗試把程式寫成三段式狀態機來實現。
△iprecieve模組,gmii udp資料報傳送模組。
上一節已經全部梳理了整個乙太網傳輸協議及過程,因此此節不再贅述,下面開始梳理ip(乙太網)接收模組的程式原始碼。
接收過程就是挨著ip幀的格式,順序接收便ok。8bit位寬的資料進來,按要求組合成32bit位寬資料,並取出首部資訊。
以位寬為8bit的ram來存資料,不用32bit的ram;
盡量考慮模組的通用性,實用性,拓展性,模組化,為後續工作做好準備;
做好測試記錄,磨刀不誤砍柴工,一定要紮實基礎;
盡快實現,不要陷到細節裡,要站在全域性來實現。
流程和傳送模組類似,在此不再贅述。
千兆udp學習之測試記錄
20181008-10 經上述章節設計的程式,依次進行,並總結了如下測試。
測試一:針對廣播模式進行測試。廣播形式的協議設定如下。
第一次測試,連線成功,很順利。。。
資料抓取正常。
但是回環測試錯誤,fpga未能接收除錯助手傳送的udp資料!——也就是說,現在的情況是,fpga的位址不明確,位址未正確解析。
分析:這次的測試結果奇怪,沒有出現預想的「廣播不到」的情況,除錯助手接收到fpga來的廣播位址請求,並且fpga端傳送udp資料正常,反而是fpga端未能接收udp資料,沒有「應答」到自己的位址。
測試二:這次測試,就出現了預計的問題,pc端(除錯助手)未能解析到fpga端的廣播連線。但是能回顯到pc端……
測試三:把向gmii的25m時鐘線去掉,如下設定。
因為使用的千兆模式,25m未使用,所以在程式中嘗試去掉,然後進行了測試。出現和「測試一」完全一樣的情況。
接下來,換成指定pc端mac位址,再次進行測試。
預計情況,這樣應該能解決上述出現的兩個「交叉」問題。猜測原因,是因為使用的自動協商,所在phy晶元沒有「正確」工作。
結果:**失敗,結果還是
pc端能接收
udp資料,但是不能回顯。所以,這個
25m時鐘線還不能去掉
,原因為何,還待進一步考察。
一點思考:
如果這樣一遇到問題就來記錄的話,學習效率太低了。記錄是需要的,但不能讓記錄用去的時間太多了,應該把時間重點放在推進工作進度上。就是說,遇到問題,不要著急記錄,而應是先去嘗試方法解決,等解決之後,再來記錄。這樣的記錄才是有效記錄,才有更高的參考價值。
測試四:不知為何原因,直接下原裝的程式,但是還是一樣的結果……所以這就納悶了。
問題1:電腦居然不能繫結ip了,奇怪,問題如下。
解決辦法,見
主要用一下命令:
1、使用 arp -a 命令 檢視閘道器的mac網絡卡實體地址
2、使用 netsh i i show in 命令 檢視 本地連線的idx編號
3、使用 netsh -c "i i" add neighbors 本地連線的idx 「閘道器ip」 「閘道器mac」 命令繫結
netsh -c 「i i」 add neighbors 11 「192.168.0.2」 "00-0a-35-01-fe-c0」
同理,在win7上用arp -d並不能完全的刪除繫結,必須使用netsh -c "i i" delete neighbors idx(idx改為相應的數字)才可刪除mac位址繫結。
該問題解決後,如下。
完整正確的測試結果,應如下圖所示。為保證測試方便,固化該fpga程式。
經過上面的「波折」,總結如下的udp測試流程經驗。
修改本機pc端的ip等:192.168.0.3
arp -a
netsh -c "i i" add neighbors 11 "192.168.0.2" "00-0a-35-01-fe-c0"
開啟除錯助手、wireshark軟體進行測試驗證。
UDP封裝基礎學習記錄
size t 是一種整形型別,裡面儲存的是乙個整數,如同int long 一樣。他是一種記錄大小的資料型別,它可以同sizeof等同起來,以此類推,size t也就可以做int 相類似的運算。那麼為什麼不直接用int來代替它呢?它是為了提高 的可移植性。比如,在32位的作業系統中它是4位元組,但是在...
Linux can匯流排除錯學習記錄
由於最近工作需要,需要用到can匯流排,自己以前又沒有用到過can匯流排,所以記錄下來自己的學習過程。由於我是在linux下操作can匯流排的,所以一下內容主要是linux下的can操作過程。首先,配置linux下can驅動,我所用的平台是am335x,am335x有兩個can介面,can0和can...
機器學習 學習記錄(四)
本篇部落格將介紹深度學習時所用到的一些tips。我們知道,機器學習的三大步驟 function set,goodness of function,pick up the best function 那如果我們最終得到的結果壞掉了怎麼辦。如果壞掉了,到底是這三步的哪乙個步驟出現了問題呢?結果的壞掉有兩...