? ? ? ? 用小程序給固件升級。代碼實現了好久了,都忘了。但是效率比較慢。整個包大約100KB,總共升級耗時5分鐘左右。從體驗上來講就是雞肋。
首先要知道整個升級的過程。否則也代碼拿去了也不知道怎么回事。
需要的知識點:1.低功耗藍牙基本知識。2.小程序藍牙api要掌握。3.crc校驗基本要會使用
盜用個鏈接我覺得講的很清晰固件升級(DFU/OTA)
恩。。我在講解下自己的思路。先將固件升級包解壓會得到三個文件。分別是:xxx.dat,xxx.bin和manifest.json 三個文件。拿到對應的buffer并返回存起來
第一:讓設備進入Bootloader狀態。我們自稱進入dfu模式。藍牙會自動斷開。一般情況下MAC地址發生變化,末尾+1。看公司的嵌入式工程師如何處理。也可以不變(問同事的)。還有比較坑的是怎么讓設備進入Bootloader狀態。往xxx90003特征值寫0x01。具體原因不知道。我是看的android代碼。
第二:傳輸init packet(及xxx.dat文件。這個問題坑了我好久。啥叫init包。)
整個流程是這樣的,盜個圖。這個圖應該是官網的。具體是怎么的。我先發條指令問你,之前有沒有給過你數據(通過發指令 06 01 來確認 ,指令是定義好的。不清楚的看下前面給的鏈接固件升級(DFU/OTA)。這里就不說了)。通過crc校驗。如果你告訴我,數據已經給完了,那就跳過執行下一步。如果沒有,或者數據有錯誤,或者沒給完。那我就發(01 01)告訴你我要給你數據了。然后你回我(06 01 01)可以給。然后我每次20個字節的給你。然后你說已經接受完了(06 03 01)。那就繼續下一步。
第三:傳輸firmware image( 及xxx.bin文件)。這個也是同理。希望大家舉一反三。不想寫太多文字。省的大家不想看。
最后送上源碼有用的話,麻煩大家給個星。