用了最新版的netlib,例子只修改了IP地址,依然經常ping不通(ping不通的時候UDPSocket也是不同。通過調試,PHY變化以及包的接收是正常的)。實在對netlib絕望了,不知道哪里問題。打算用rt-thread,更絕望的是庫里面不像ch32v307那樣帶_eth.c那個庫。我想問問能否直接拿307的庫來用?
更新:看了一下,應該不能直接用。但是官網上下載的1.7已經是可以穩(wěn)定使用的版本么?如ETH_DMATxDescChainInit明顯就只初始化一個buf。意味著ETH_TXBUFNB只能為1。
看參考手冊又叫我直接看網絡庫的使用。描述也很少,自己弄rt-thread適配實在有難度。
您好,首先V307的庫是不可以直接拿到V208使用的,建議將mounriver studio更新至最新版,如果您只是使用最新的netlib和舊版的EVT程序,您需要在ch32v20x.h中將宏修改成D8W,若您完全使用最新的EVT例程,則不需要,如圖:
目前1.7版本是可以正常使用的,用rt-thread添加以太網需要進入機器模式,另外需要注意rt-thread的系統(tǒng)節(jié)拍不要和以太網例程中為以太網庫提供時間函數(shù)產生沖突,后續(xù)可通過郵箱聯(lián)系我:kx@wch.cn
在RTT用,自己搞驅動現(xiàn)在還不會,先不搞了。還有疑問,ETH_TXBUFNB目前只能為1,如果我程序上我連續(xù)發(fā)好幾條信息,NETLIB會內部進行緩沖等空閑再發(fā)送嗎?會不會丟幀?
你好,方便說一下測試的環(huán)境嗎?沒有ARP包的應答,很大的可能是開發(fā)板未收到ARP包。先建議將電腦的防火墻關一下再進行測試。
剛才跟電腦直連測試,能應答。之前那根網線是正常的,而且指示燈也顯示正常,還能收到數(shù)據(jù)。就認為是其他問題了。還有問題就是上面的了,ETH_TXBUFNB只能為1,會不會導致發(fā)送丟幀。
您好,根據(jù)您的測試結果來看,硬件沒問題(電腦、網線、開發(fā)板沒問題),軟件沒問題(ARP這種基礎功能我司都是經過長時間測試驗證過的),那還是建議您從網絡環(huán)境上找找原因,如果有網絡分析儀,可以逐級查一下網絡包的傳輸。
關于您的問題:
1、UDP包協(xié)議棧中是不會緩存的,TCP包受限于RAM空間也只會緩存幾包。
2、如果快速發(fā)送數(shù)據(jù),協(xié)議棧中就會對數(shù)據(jù)進行判斷是否能發(fā)送成功,數(shù)據(jù)的發(fā)送狀態(tài)可以從發(fā)送函數(shù)的返回值以及返回的發(fā)送數(shù)據(jù)長度來判讀。您需要根據(jù)這個狀態(tài)來進行數(shù)據(jù)的重傳等操作。
3、硬件部分是不會丟包的,包的管理由協(xié)議棧處理。一個發(fā)送描述符是夠用的,在網絡環(huán)境簡單的條件下,收發(fā)基本都可以跑到滿速。