藍牙固件升級

升級介紹

藍牙固件升級是使用手機給固件進行更新,以達到修復bug,完善功能的作用。升級的大概流程是:首先,當手環的固件需要升級時,由嵌入式開發人員提供新的固件,由服務器管理人員將固件放到服務器上,此時,用戶打開手機APP的時候會檢測到服務器有更新,請求更新手環固件,確認更新後,手機會從服務器下載固件。下載完畢後,APP會讀取固件內容,並根據升級協議將內容傳到手環裏,完成升級。

  • DFU = Device Firmware Update (設備固件更新)
  • OTA = Over The Air (空中升級)

升級流程

各個藍牙設備不盡相同,以下是我測試設備的升級流程:

OTA下載固件

從雲端下載的固件爲.bin後綴的文件,文件名會有一定的格式,含有固件版本號和文件CRC32校驗值。

數據分塊

規定一個數據塊大小比如2048字節,然後把升級數據進行分塊,不夠的就剩餘多少作爲一塊。藍牙一次發送的數據量是有限的,所以每次發送20字節的數據。這個數據要遵循升級數據格式,帶指令頭和校驗和,下載包的數據只是這20字節中的一部分。所有包內數據都攜帶在每條升級數據指令中。

升級過程

  • 連接設備,發送升級請求。
  • 待藍牙確認之後,開始發送數據頭告知藍牙此次發送的數據量和CRC校驗。
  • 開始發送升級數據。(每條數據之間間隔20ms爲了藍牙能夠方便處理)
  • 待一個塊發送完就發送塊結束命令
  • 藍牙確認發送下一個塊,返回錯誤則終止此次升級
  • 發完所有數據之後發送升級完成
  • 藍牙確認則升級完成,返回錯誤則升級失敗

流程圖

總結

藍牙升級最複雜的就在升級過程,大量的數據與藍牙交互,這時最好記錄發送到升級數據的那一部分,可以給用戶展示升級的進程。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章