STM32+W5500+AIR202/302遠程升級篇-源碼使用問題


<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校驗改為了查表法

 

 

 

 

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM