<p><iframe name="ifd" src="https://mnifdv.cn/resource/cnblogs/STM32W5500AIR202B/" frameborder="0" scrolling="auto" width="100%" height="1500"></iframe></p>
一,程序BUG
1.由於環形隊列溢出而造成的升級錯誤問題!
錯誤日志如下:(開始時數據校驗沒有問題,下載一段時間以后出現校驗錯誤)
錯誤原因:
使用W5500接收數據,基本上每包數據都保持在1024字節左右
每次都是把1024左右的字節寫入環形隊列.
而主函數每一次循環只提取128字節的數據寫入Flash.
當然數據傳輸本身也需要時間,以當前看來,應該是循環提取2~3次左右
就會再次收到新來的約1024字節數據,那么整體來看,整個環形隊列一直處於緩慢增長的狀態
如果文件很大,那么過一段時間環形隊列就會溢出,導致了數據接收不完整.進而導致了當前的問題.
(每次接收大約1024字節)
(每次都把約1024字節的數據寫入flash)
(一個循環只從環形隊列讀取128字節)
解決方案:(判斷W5500里面有數據以后,如果環形隊列可以寫入才提取數據寫入環形隊列)
二,程序優化
1.增加了 WriteFlashWords函數(升級程序可以兼容各種校驗幀)
替換了原先的把程序數據寫入Flash的函數,此處的修改兼容了各種檢驗幀.
2.CRC校驗改為了查表法