首頁>技術>

極簡的串列埠升級方案

最近接了一個專案,由於韌體有點大,大概為4M byte,如果使用Ymodem、modbus等協議會有ACK應答等機制對於時間效率上會有損耗,所以我們選擇了一個辦法,就是不用協議,在簡單的命令互動之後,上位機就直接把全部的韌體扔到給下位機,然後下位機在中斷中將接收到的資料扔到ringbuf環形緩衝區,如果接收超時後認為韌體接收完畢,然後校驗韌體的合法性和完整性,如果校驗透過將韌體燒錄到Flash當中。具體的流程圖可以看下圖。

這個方法的侷限性:記憶體要足夠大,記憶體的大小必須大於要升級的韌體大小,因為你要分配一個很大的環形緩衝區。上位機一定要按流程走,不能在傳送韌體的時候亂髮別的資料會導致接收的韌體校驗不過。沒有重發機制,如果丟失一個位元組升級就會失敗,校驗不過。

6
最新評論
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • 王愛民:關於MES模組化的一些思考