天天看點

HaaS100 OTA之固件驗簽功能介紹1、概述2、使用流程2.1、開發環境搭建2.2、 建立工程2.3、打開雲端安全更新功能并擷取公鑰2.4、将公鑰内嵌到代碼中2.5、配置固件版本号2.6、配置四元祖2.7、編譯固件2.8、燒錄固件2.9、打開序列槽2.10、配網連雲2.11、編譯上雲固件及雲端操作2.12、更新結果驗證開發者支援

1、概述

本文主要介紹HaaS100 對更新的固件做驗簽的功能進而防止更新非法固件;如下圖流程所示,當使用者開啟阿裡雲IOT物聯網平台的安全更新功能,對應的産品就啟動了針對這個産品的安全更新功能,雲端會對這個産品的更新固件做秘鑰、公鑰管理并對這個産品的固件做數字簽名;對應的裝置端,在OTA的過程中,會用從雲端擷取的公鑰對更新的固件做數字簽名的驗證;整個流程,使用者不需要管理公私鑰,使用起來也非常友善,下圖為HaaS100 安全更新使用流程圖:

HaaS100 OTA之固件驗簽功能介紹1、概述2、使用流程2.1、開發環境搭建2.2、 建立工程2.3、打開雲端安全更新功能并擷取公鑰2.4、将公鑰内嵌到代碼中2.5、配置固件版本号2.6、配置四元祖2.7、編譯固件2.8、燒錄固件2.9、打開序列槽2.10、配網連雲2.11、編譯上雲固件及雲端操作2.12、更新結果驗證開發者支援

2、使用流程

2.1、開發環境搭建

元件使用示例相關的代碼下載下傳、編譯和固件燒錄均依賴AliOS Things配套的開發工具 alios-studio ,是以首先需要參考

《aos-studio使用說明之搭建開發環境》

,下載下傳安裝 alios-studio ,待開發環境搭建完成後,可以按照以下步驟進行示例的測試。

2.2、 建立工程

建立新的工程:

元件的示例代碼可以通過編譯連結到AliOS Things的任意案例(solution)來運作,這裡選擇ota_demo案例, 開發闆:HaaS100。

ota_demo案例相關的源代碼下載下傳可參考

《aos-studio使用說明之建立工程》

打開已有工程:

如果用于測試的案例工程已存在,可參考

《aos-studio使用說明之打開工程》

打開已有工程。

2.3、打開雲端安全更新功能并擷取公鑰

HaaS100 OTA之固件驗簽功能介紹1、概述2、使用流程2.1、開發環境搭建2.2、 建立工程2.3、打開雲端安全更新功能并擷取公鑰2.4、将公鑰内嵌到代碼中2.5、配置固件版本号2.6、配置四元祖2.7、編譯固件2.8、燒錄固件2.9、打開序列槽2.10、配網連雲2.11、編譯上雲固件及雲端操作2.12、更新結果驗證開發者支援

2.4、将公鑰内嵌到代碼中

如步驟1圖示,通過複制按鈕擷取的公鑰内嵌到 AliOS-Things/components/dm/ota/hal/ota_hal_digest.c檔案中,覆寫如下的兩個數組:

/* RSA Public Key:User needs sign in alibaba cloud to get and replace them. */
 
static const unsigned char ota_pubn_buf[256];
 
static const unsigned char ota_pube_buf[3];           

2.5、配置固件版本号

根據需求修改版本号,如app-1.0.0等

修改位置:solutions/ota_demo/otaappdemo.c中的,MY_APP_VER宏定義。

2.6、配置四元祖

修改位置:solutions/ota_demo/otaappdemo.c中的,mqtt_main函數中的char product_key, char device_name, char *device_secret;填入自己的pk,dn,ds;

2.7、編譯固件

完成上面步驟後,就可以編譯ota_demo案例來生成固件了,具體編譯方法可參考

《aos-studio使用說明之編譯固件》

2.8、燒錄固件

ota_demo案例的固件生成後,可參考

《aos-studio使用說明之燒錄固件》

來燒錄固件。

2.9、打開序列槽

固件燒錄完成後,可以通過序列槽檢視示例的運作結果,打開序列槽的具體方法可參考

《aos-studio使用說明之檢視日志》

當序列槽終端打開成功後,可在序列槽中輸入help來檢視已添加的測試指令。

2.10、配網連雲

輸入wifi賬号和密碼配網:在終端輸入:

netmgr -t wifi -c wifi_ssid wifi_password

注意修改其中的wifi_ssid和wifi_password為需要連接配接的wifi名字和wifi密碼。

連網成功後,登入

物聯網平台

可以看到對應的裝置線上:

HaaS100 OTA之固件驗簽功能介紹1、概述2、使用流程2.1、開發環境搭建2.2、 建立工程2.3、打開雲端安全更新功能并擷取公鑰2.4、将公鑰内嵌到代碼中2.5、配置固件版本号2.6、配置四元祖2.7、編譯固件2.8、燒錄固件2.9、打開序列槽2.10、配網連雲2.11、編譯上雲固件及雲端操作2.12、更新結果驗證開發者支援

2.11、編譯上雲固件及雲端操作

本地燒錄完成後,需要做一個高版本固件上傳到雲端,通過雲端操作完成固件的更新,是以需要按照步驟3中修改版本号的方法,修改固件版本号,其他不用修改,再編譯生成一個高版本的固件,然後登入

平台,按如下圖順序操作:

HaaS100 OTA之固件驗簽功能介紹1、概述2、使用流程2.1、開發環境搭建2.2、 建立工程2.3、打開雲端安全更新功能并擷取公鑰2.4、将公鑰内嵌到代碼中2.5、配置固件版本号2.6、配置四元祖2.7、編譯固件2.8、燒錄固件2.9、打開序列槽2.10、配網連雲2.11、編譯上雲固件及雲端操作2.12、更新結果驗證開發者支援

點選添加強件後,如下圖将platform/mcu/haas1000/release/write_flash_gui/ota_bin/ota_bin/ota_rtos_ota.bin上傳到雲端:

HaaS100 OTA之固件驗簽功能介紹1、概述2、使用流程2.1、開發環境搭建2.2、 建立工程2.3、打開雲端安全更新功能并擷取公鑰2.4、将公鑰内嵌到代碼中2.5、配置固件版本号2.6、配置四元祖2.7、編譯固件2.8、燒錄固件2.9、打開序列槽2.10、配網連雲2.11、編譯上雲固件及雲端操作2.12、更新結果驗證開發者支援

點選确定後,選擇驗證固件即可開始固件更新;

2.12、更新結果驗證

按照上面的操作步驟完成後,可以完成固件的數字簽名驗簽進而實作固件更新,端側的log如下圖:

HaaS100 OTA之固件驗簽功能介紹1、概述2、使用流程2.1、開發環境搭建2.2、 建立工程2.3、打開雲端安全更新功能并擷取公鑰2.4、将公鑰内嵌到代碼中2.5、配置固件版本号2.6、配置四元祖2.7、編譯固件2.8、燒錄固件2.9、打開序列槽2.10、配網連雲2.11、編譯上雲固件及雲端操作2.12、更新結果驗證開發者支援

如果開啟了安全更新,但HaaS100沒有内嵌公鑰,觸發更新會怎麼樣呢?答案是HaaS100會數字簽名驗證失敗,禁止固件更新,端側的log會如下圖所示:

HaaS100 OTA之固件驗簽功能介紹1、概述2、使用流程2.1、開發環境搭建2.2、 建立工程2.3、打開雲端安全更新功能并擷取公鑰2.4、将公鑰内嵌到代碼中2.5、配置固件版本号2.6、配置四元祖2.7、編譯固件2.8、燒錄固件2.9、打開序列槽2.10、配網連雲2.11、編譯上雲固件及雲端操作2.12、更新結果驗證開發者支援

雲端更新結果可以通過點選“檢視”擷取詳情;物聯網平台的OTA操作可參考文檔

阿裡雲物聯網平台固件更新文檔

注:在做OTA之前確定裝置端已連接配接雲端

開發者支援

HaaS解決方案中心:

https://haas.iot.aliyun.com/

HaaS技術社群:

https://blog.csdn.net/HaaSTech

開發者釘釘群和公衆号見下圖,開發者釘釘群每天都有技術支援同學值班。

HaaS100 OTA之固件驗簽功能介紹1、概述2、使用流程2.1、開發環境搭建2.2、 建立工程2.3、打開雲端安全更新功能并擷取公鑰2.4、将公鑰内嵌到代碼中2.5、配置固件版本号2.6、配置四元祖2.7、編譯固件2.8、燒錄固件2.9、打開序列槽2.10、配網連雲2.11、編譯上雲固件及雲端操作2.12、更新結果驗證開發者支援