FOTA(Firmware Over-The-Air)是你敢于用互聯(lián)網(wǎng)思維做硬件產品的根本保障洲胖。只有靈活可靠的FOTA撐腰,發(fā)布前的bug評審會上珊豹,你才有底氣說“非關鍵bug焙糟,升級解決”。
FOTA的需求有哪些御铃?以下是粗略想到的:
- Server被hack了、管理員腦抽……總之……云端搞錯了升級包沈矿,不允許升級上真;
- 傳輸錯誤的升級包,不允許升級细睡;
- 非官方發(fā)布的升級包谷羞,不允許升級帝火;
- 機型溜徙、硬件版本不匹配的升級包,不允許相互升級犀填;
- 客制化軟件(比如銷售地域蠢壹、語言、運營商等)九巡,不允許相互升級图贸;
- 大的改動,導致1.0直接升級到3.0會掛掉,必須1.0先升級到2.0疏日、2.0再升級到3.0偿洁;
- Beta測試版本,如果有Bug讓用戶不能忍沟优,允許降級到最新的穩(wěn)定版涕滋;
- Costdown機型,可以免編譯重新制作升級包挠阁,機型宾肺、版本等信息顯示正常;
- 保存數(shù)據(jù)的格式改變侵俗,升級階段能完成格式轉換锨用;
- 升級鏡像可能有多個;
- 升級防變磚隘谣。
以上場景增拥,提煉得出:
- 升級包要自帶校驗信息;
- MD5校驗完整性寻歧;
- RSA簽名防偽造跪者;
- HW_ID:統(tǒng)一區(qū)分硬件差異,包括機型熄求、硬件版本渣玲、其他客制化(比如銷售地域、語言弟晚、運營商等)忘衍;
- UG_VER:使用該升級包的最低軟件版本要求;
- DG_VER:當前運行軟件允許降級到的最低版本卿城;
- 升級校驗信息枚钓,不在編譯期生成,而在打包時添加瑟押;
- 機型搀捷、版本等參數(shù),分成兩份多望,嚴格區(qū)分開前端顯示參數(shù)嫩舟、后端校驗參數(shù);
- pre-script/post-script可以為一些特殊需求提供便利怀偷,比如數(shù)據(jù)轉換家厌;
- 多段升級鏡像,可以通過TLV格式拼在一起椎工;
- 升級防變磚是另一個主題饭于,一般雙鏡像備份蜀踏。
FOTA的完整流程包括以下幾個步驟:
- 從云端下載升級包;
- 使用包頭信息掰吕,對升級包各種校驗果覆,校驗失敗就不允許升級;
- 解開升級包殖熟;
- 升級預處理pre-script随静;
- 升級寫入;
- 升級后處理post-script吗讶。
至此燎猛,升級完成。