日期:2024-03-30 11:55:45 編輯: 瀏覽:
如何實現(xiàn)BLE藍(lán)牙模塊OTA?什么叫DFU?如何通過UART實現(xiàn)固件升級?又如何通過USB實現(xiàn)固件升級?怎么保證升級的安全性?什么叫雙區(qū)(dual bank)DFU?什么叫單區(qū)(single bank)DFU?什么叫后臺式(background)DFU?
什么是DFU?
所謂DFU(Device Firmware Update),就是設(shè)備固件升級的意思,而OTA(Over The Air)是實現(xiàn)DFU的一種方式而已,準(zhǔn)確說,OTA的全稱應(yīng)該是OTA DFU,即通過空中無線方式實現(xiàn)設(shè)備固件升級。只不過大家為了方便起見,直接用OTA來指代固件空中升級(有時候大家也將OTA稱為FOTA,即Firmware OTA,這種稱呼意思更明了一些)。只要是通過無線通信方式實現(xiàn)DFU的,都可以叫OTA,比如2G/3G/4G/WiFi/藍(lán)牙/NFC/Zigbee,他們都支持OTA。DFU除了可以通過無線方式(OTA)進行升級,也可以通過有線方式進行升級,比如通過UART,USB或者SPI通信接口來升級設(shè)備固件。
不管BLE藍(lán)牙模塊是采用OTA方式還是有線通信方式,DFU包括后臺式(background)和非后臺式兩種模式。
1.后臺式DFU,又稱靜默式DFU(Silent DFU),在升級的時候,新固件在后臺悄悄下載,即新固件下載屬于應(yīng)用程序功能的一部分,在新固件下載過程中,應(yīng)用可以正常使用,也就是說整個下載過程對用戶來說是無感的,下載完成后,系統(tǒng)再跳到BootLoader模式,由BootLoader完成新固件覆蓋老固件的操作,至此整個升級過程結(jié)束。比如智能手機升級Android或者iOS系統(tǒng)都是采用后臺式DFU方式,新系統(tǒng)下載過程中,手機可以正常使用哦。
2.非后臺式DFU,在升級的時候,系統(tǒng)需要先從應(yīng)用模式跳入到BootLoader模式,由BootLoader進行新固件下載工作,下載完成后BootLoader繼續(xù)完成新固件覆蓋老固件的操作,至此升級結(jié)束。早先的功能機就是采用非后臺式DFU來升級操作系統(tǒng)的,即用戶需要先長按某些按鍵進入bootloader模式,然后再進行升級,整個升級過程中手機正常功能都無法使用。
下面再講BLE藍(lán)牙模塊雙區(qū)DFU(dual bank)和單區(qū)DFU(single bank),雙區(qū)或者單區(qū)DFU是新固件和老固件覆蓋的兩種方式。
后臺式DFU必須采用雙區(qū)模式進行升級,即老系統(tǒng)(老固件)和新系統(tǒng)(新固件)各占一塊bank(存儲區(qū)),假設(shè)老固件放在bank0中,新固件放在bank1中,升級的時候,應(yīng)用程序先把新固件下載到bank1中,只有當(dāng)新固件下載完成并校驗成功后,系統(tǒng)才會跳入BootLoader模式,然后擦除老固件所在的bank0區(qū),并把新固件拷貝到bank0中。
非后臺式DFU可以采用雙區(qū)也可以采用單區(qū)模式,與后臺式DFU相似,雙區(qū)模式下新老固件各占一塊bank(老固件為bank0,新固件為bank1),升級時,系統(tǒng)先跳入BootLoader模式,然后BootLoader程序把新固件下載到bank1中,只有新固件下載完成并校驗成功后,才會去擦除老固件所在的bank0區(qū),并把新固件拷貝到bank0區(qū)。單區(qū)模式的非后臺式DFU只有一個bank0,老固件和新固件分享這一個bank0,升級的時候,進入bootloader模式后立馬擦除老固件,然后直接把新固件下載到同一個bank中,下載完成后校驗新固件的有效性,新固件有效升級完成,否則要求重來。跟非后臺式DFU雙區(qū)模式相比,單區(qū)模式節(jié)省了一個bank的Flash空間,在系統(tǒng)資源比較緊張的時候,單區(qū)模式是一個不錯的選擇。不管是雙區(qū)模式還是單區(qū)模式,升級過程出現(xiàn)問題后,都可以進行二次升級,都不會出現(xiàn)“變磚”情況。不過雙區(qū)模式有一個好處,如果升級過程中出現(xiàn)問題或者新固件有問題,它還可以選擇之前的老固件老系統(tǒng)繼續(xù)執(zhí)行而不受其影響。而單區(qū)模式碰到這種情況就只能一直待在bootloader中,然后等待二次或者多次升級嘗試,此時設(shè)備的正常功能已無法使用,從用戶使用這個角度來說,你的確可以說此時設(shè)備已經(jīng)“變磚”了。所以說,雖然雙區(qū)模式犧牲了很多存儲空間,但是換來了更好的升級體驗。
注意事項
1.為了保證OTA更新的安全性,建議使用數(shù)字簽名技術(shù)對固件包進行簽名驗證。這樣可以防止未經(jīng)授權(quán)的固件包被安裝到設(shè)備上。
2.在實際應(yīng)用中,可能需要考慮固件包的分版本管理。例如,可以根據(jù)設(shè)備的固件版本號或者其他標(biāo)識來進行版本劃分,以便用戶端識別和下載對應(yīng)的固件包。
3.由于BLE藍(lán)牙模塊的工作電壓較低,因此在設(shè)計OTA更新流程時,需要注意電源管理和電池壽命問題。例如,可以在設(shè)備休眠時進行固件升級,以減少對電池的消耗。
MesoonRF美迅物聯(lián)網(wǎng)-工業(yè)物聯(lián)網(wǎng)無線通信模塊廠家,提供WiFi模塊,藍(lán)牙串口模塊,藍(lán)牙Mesh模塊,雙模藍(lán)牙模塊,UWB模塊,NFC模塊等產(chǎn)品,并通過了BQB,FCC,CE,KC,MIC等認(rèn)證。產(chǎn)品包括藍(lán)牙串口透傳模塊,藍(lán)牙雙模,低功耗藍(lán)牙4.2/5.0/5.1/5.2/5.3,5.4,hc05/06,BM77/78等工業(yè)級、車規(guī)級物聯(lián)網(wǎng)方案。