|
FIFO的邊界問(wèn)題對(duì)于基于W5100的以太網(wǎng)收發(fā)存儲(chǔ)器是個(gè)令我頭疼的地方。在宏觀上表現(xiàn)為可以接收數(shù)據(jù)也可以發(fā)送數(shù)據(jù),但是發(fā)送的時(shí)候會(huì)莫名的多很多亂碼,接收的時(shí)候也會(huì)有很多亂碼,很令人頭疼的問(wèn)題,這個(gè)問(wèn)題怎么解決呢?開(kāi)始我自己寫了一個(gè)邊界算法,用軟件檢測(cè)FIFO的物理邊界,結(jié)果是改善了好多可以收發(fā)數(shù)據(jù)了,但是問(wèn)題又來(lái)了,在發(fā)送數(shù)據(jù)或者接收數(shù)據(jù)時(shí)會(huì)出亂碼,無(wú)論我怎么改進(jìn)還是不行而且是隨即出現(xiàn)的很頭疼。萬(wàn)般無(wú)奈之時(shí)DATESHEET讓我眼前一亮。我仔細(xì)看了看數(shù)據(jù)發(fā)送和接收原來(lái)手冊(cè)上有一套完整的算法,可是看懂他又是個(gè)挑戰(zhàn),又是一次一次的看,一遍又一遍,寫完之后發(fā)現(xiàn)竟然在一段時(shí)間內(nèi)沒(méi)有出錯(cuò),我喜出望外,遺憾的是有測(cè)試了一會(huì)出問(wèn)題了,發(fā)到一定的數(shù)據(jù)量會(huì)出錯(cuò),而且是周期性的,我目標(biāo)就是這一段程序,后來(lái)發(fā)現(xiàn)一個(gè)錯(cuò)誤,就是讀出來(lái)數(shù)據(jù)向內(nèi)存里面寫的時(shí)候有一個(gè)地址沒(méi)有累加,后來(lái)做了累加,測(cè)試后數(shù)據(jù)果然沒(méi)有丟失,至少我檢測(cè)的是這樣的,。。。。。。。可見(jiàn)發(fā)送緩存和接收緩存的邊界掃描方面W5100是多么的操蛋!這樣的FIFO我想只有那老外們做出的這么操蛋的東西!好在他們也知道這個(gè),所以提供了算法,要不我絕對(duì)是寫不出來(lái)的!!
|
|