本发明涉及物联网,具体地说,涉及一种嵌入式设备远程升级方法。
背景技术:
1、随着物联网技术的快速发展,物联网设备也越来越普及,人们的日常生活也越来越离不开物联网设备,例如安装在道路上的智慧路灯、智能井盖,部署在楼宇的烟雾报警器、智能摄像头等。在实际应用中,用户因业务变动或功能需求改动,需要对设备接入平台类型、网络协议类型、通信协议类型等进行修改和优化,这时就需要对物联网设备进行远程升级。
2、但是现有的设备远程升级方法,不同产品使用统一身份信息,存在烧错的风险。
技术实现思路
1、为了解决上述问题,本发明提出一种嵌入式设备远程升级方法,避免升级代码烧错。
2、本发明实施例提供一种嵌入式设备远程升级方法,所述方法由嵌入式设备还执行,所述方法包括:
3、获取当前版本号;
4、生成并发送由固定前缀与所述当前版本号组成的升级请求至服务器;
5、在获取到所述服务器反馈的升级固件包时,对所述升级固件包中的数字签名进行校验;
6、当所述升级固件包中的数字签名与校验得到的数字签名一致时,擦除所述设备中的原代码,并写入所述升级固件包中的代码固件,更新当前版本号。
7、优选地,所述方法还包括:
8、在未获取到所述服务器反馈的升级固件包时,判定所述当前版本号为最新版本。
9、优选地,所述方法还包括:
10、当所述升级固件包中的数字签名与校验得到的数字签名不一致时,将获取的所述升级固件包删除。
11、作为一种优选方案,所述嵌入式设备的flash区包括程序引导区、程序运行区以及固件存储区;
12、所述在获取到所述服务器反馈的升级固件包时,对所述升级固件包中的数字签名进行校验,包括:
13、运行所述程序运行区,查询所述服务器的升级目录;
14、在查询到所述服务器反馈的升级固件包时,获取所述升级固件包,将所述升级固件包写入到所述固件存储区中;在所述升级固件包接收完整后,对所述升级固件包中的数字签名进行校验,得到校验的数字签名。
15、进一步地,所述当所述升级固件包中的数字签名与校验得到的数字签名一致时,擦除所述设备中的原代码,并写入所述升级固件包中的代码固件,更新当前版本号,包括:
16、当运行所述程序运行区检测到所述升级固件包中的数字签名与校验得到的数字签名不一致时,擦除所述固件存储区中的所述代码固件,重新运行所述程序运行区;
17、当运行所述程序运行区检测到所述升级固件包中的数字签名与校验得到的数字签名一致时,将所述程序引导区由初始的跳转态切换为升级态,并对所述flash区进行复位,复位后由所述程序引导区开始运行;由处于升级态的所述程序引导区将所述程序运行区中的所述原代码擦除,将所述固件存储区中的所述代码固件写入所述程序运行区。
18、作为上述方案的改进,所述擦除所述设备中的原代码,并写入所述升级固件包中的代码固件,包括:
19、运行所述程序引导区将所述程序运行区中的所述原代码擦除,将所述代码组件写入所述程序运行区;
20、获取所述代码固件的代码总长度以及当前写入的块序号;
21、根据所述代码总长度和预设的固定块长度计算出代码总块数;
22、根据所述代码总块数和当前写入的块序号判断是否写入完成;
23、若否,继续写入所述代码固件的数据并更新当前写入的块序号,并重新判断是否写入完成,直到判断结果为是;
24、若是,完成所述代码固件的写入,将所述程序运行区的状态切换为跳转态。
25、优选地,所述升级固件包由新版本的数字签名以及所述代码固件组成;
26、所述对所述升级固件包中的数字签名进行校验,包括:
27、采用md5算法作为hmac算法的哈希函数对预设的产品密钥以及所述代码固件进行校验计算,得到校验的数字签名;
28、作为一种优选方案,所述升级固件包由差分固件、当前版本的当前数字签名、新版本的数字签名以及新数字签名组成;
29、所述对所述升级固件包中的数字签名进行校验,包括:
30、采用md5算法作为hmac算法的哈希函数对预设的产品密钥、所述差分固件、当前版本的当前数字签名、新版本的数字签名进行初步校验,得到初步校验的数字签名;
31、当初步检验的数字签名与所述新数字签名不一致时,判定校验失败;
32、当初步检验的数字签名与所述新数字签名一致时,获取所述当前版本号的本地数字签名;
33、当所述本地数字签名与当前版本的当前数字签名不一致时,判定校验失败;
34、当所述本地数字签名与当前版本的当前数字签名不一致时,判定所述升级固件包中的数字签名与校验得到的数字签名一致。
35、本发明实施例还提供一种嵌入式设备远程升级方法,所述方法由服务器执行,所述方法包括:
36、在接收到嵌入式设备发送的升级请求时,获取所述升级请求中的当前版本号;
37、在所述当前版本号与本地版本号不一致时,根据预存的产品密钥以及本地的代码固件生成新数字签名;
38、根据所述数字签名和所述代码固件生成升级固件包,将所述升级固件包反馈至所述嵌入式设备。
39、优选地,所述根据预存的产品密钥以及本地的代码固件生成数字签名,包括:
40、采用md5算法作为hmac算法的哈希函数对所述代码固件以及产品密钥进行计算,生成包含散列值的所述数字签名。
41、作为一种优选方案,所述根据所述数字签名和所述代码固件生成升级固件包,包括:
42、将所述数字签名写入长度固定的数字签名固件中,并将所述代码固件拼接到所述数字签名固件后组成所述固件包。
43、优选地,所述根据所述数字签名和所述代码固件生成升级固件包,包括:
44、获取所述嵌入式设备当前版本的当前数字签名以及所述当前版本号对应的当前代码固件,根据所述当前数字签名和所述当前代码固件进行校验,当所述当前数字签名与校验得到的数字签名不一致时,判定差分包生成失败;
45、当所述当前数字签名与校验得到的数字签名一致时,根据所述数字签名和所述代码固件进行校验,当所述数字签名与校验得到的数字签名不一致时,判定差分包生成失败;
46、当所述数字签名与校验得到的数字签名一致时,根据所述当前代码固件以及所述代码固件进行差分计算,得到差分固件;
47、依次拼接所述差分固件、所述当前数字签名以及所述数字签名得到初步升级固件包;
48、根据所述初步升级固件包与所述产品密钥生成新数字签名;
49、将所述新数字签名与所述初步升级固件包拼接后得到所述升级固件包。
50、与现有技术相比,本发明提供嵌入式设备远程升级方法,嵌入式设备通过获取当前版本号;生成并发送由固定前缀与所述当前版本号组成的升级请求至服务器;在获取到所述服务器反馈的升级固件包时,对所述升级固件包中的数字签名进行校验;当所述升级固件包中的数字签名与校验得到的数字签名一致时,擦除所述设备中的原代码,并写入所述升级固件包中的代码固件,更新当前版本号。本技术通过对升级固件包中的数字签名进行校验,可实现对固件的完整性、正确性和安全性升级,避免升级过程中产品烧错。
1.一种嵌入式设备远程升级方法,其特征在于,所述方法由嵌入式设备还执行,所述方法包括:
2.根据权利要求1所述的嵌入式设备远程升级方法,其特征在于,所述方法还包括:
3.根据权利要求1所述的嵌入式设备远程升级方法,其特征在于,所述方法还包括:
4.根据权利要求1所述的嵌入式设备远程升级方法,其特征在于,所述嵌入式设备的flash区包括程序引导区、程序运行区以及固件存储区;
5.根据权利要求3所述的嵌入式设备远程升级方法,其特征在于,所述当所述升级固件包中的数字签名与校验得到的数字签名一致时,擦除所述设备中的原代码,并写入所述升级固件包中的代码固件,更新当前版本号,包括:
6.根据权利要求3所述的嵌入式设备远程升级方法,其特征在于,所述擦除所述设备中的原代码,并写入所述升级固件包中的代码固件,包括:
7.根据权利要求1所述的嵌入式设备远程升级方法,其特征在于,所述升级固件包由新版本的数字签名以及所述代码固件组成;
8.根据权利要求1所述的嵌入式设备远程升级方法,其特征在于,所述升级固件包由差分固件、当前版本的当前数字签名、新版本的数字签名以及新数字签名组成;
9.一种嵌入式设备远程升级方法,其特征在于,所述方法由服务器执行,所述方法包括:
10.根据权利要求9所述的嵌入式设备远程升级方法,其特征在于,所述根据预存的产品密钥以及本地的代码固件生成数字签名,包括:
11.根据权利要求9所述的嵌入式设备远程升级方法,其特征在于,所述根据所述数字签名和所述代码固件生成升级固件包,包括:
12.根据权利要求9所述的嵌入式设备远程升级方法,其特征在于,所述根据所述数字签名和所述代码固件生成升级固件包,包括: