本节的目的是描述如何生成和管理固件更新映像。 ZW700 SDK附带三个引导加载程序映像。 一个是FG14模块的OTW图像。 这个引导加载程序只适用于运行SerialAPI的FG14设备。

另外两个引导加载程序是用于ZGM130S模块的OTA引导加载程序和用于ZGM130S的OTW引导加载程序。 OTA引导加载程序需要所有基于ZW700的设备,实现固件更新; OTW引导加载程序适用于设备,这些设备使用从另一个主机控制器的串口更新固件。 当使用FIRMWARE_UPDATE命令类通过空中传输映像时,OTA引导加载程序将被触发。 传输的映像必须是GBL (Gecko Boot Loader)格式的映像。 SDK中提供的引导加载程序需要对GBL映像进行签名。

执行OTA更新需要三个步骤:

1.  OTA引导加载程序必须被刷新。

2.  签名密钥和可选的加密密钥必须烧录。

3. 必须使用FirmwareUpdate Command Class传输签名的映像。

OTA密钥位置如下所示,取决于SoC:

  • ZGM13: protocol\z-wave\BootLoader\sample-keys

  • EFR32ZG14P:protocol\z-wave\BootLoader\ZG14_keys

关于引导加载程序的更多信息可以在Silicon Labs, UG266, Gecko Bootloader User’sGuide中找到。

1 生成GBL文件

要生成OTA更新所需的GBL文件,必须首先创建签名对。 它的意图是,供应商将在产品的生命周期内保留签名对。 这些密钥用于在产品的整个生命周期内对所有固件版本进行签名。 还必须创建一个加密密钥,该密钥用于加密GBL文件。 加密使得盗版者更难复制产品。

签名密钥可以通过使用Simplicity commander命令行接口创建。

commander.exe gbl keygen --type ecc-p256 -o vendor_sign.key

这一步将创建3个文件:

1.  vendor_sign.key —这是私钥,必须由产品制造商安全地保存。

2.  vendor_sign.key.pub —这是公钥。

3. vendor_sign.key-token.txt—这是另一种格式的公钥,可以在制造时使用simple commander将其编程到设备中。

供应商可以选择为其所有产品使用这样的密钥对,或者为每种产品类型使用这样的密钥对。

加密密钥的生成方式如下:

commander.exe gbl keygen --type aes-ccm -o vendor_encrypt.key

一旦获得这两个密钥,就可以生成一个GBL文件,如下所示:

commander.exe gbl create appname.gbl --app appname.hex --sign vendor_sign.key --encrypt vendor_encrypt.key --compress lz4

每次产生新固件时都应该这样做。

烧录引导加载程序和应用程序

可以使用commander.exe刷新引导加载程序,包括公共签名密钥和加密密钥。 下面的列表显示了以SN 440049475为例的板的commander.exe的参数:

  1. 擦除Flash:devicemasserase -s 440049475 -d Cortex-M4

  2. 复位:device reset -s 440049475 -dCortex-M4

  3. 擦除Bootloader:device pageerase --region @bootloader -s 440049475 -d Cortex-M4

  4. 擦除Lockbits:device pageerase --region @lockbits -s 440049475 -d Cortex-M4

  5. 烧录Bootloader:flash C:\dk2\Apps458\BootLoader_7.11.0_458\OTA-bootloader-fg13-combined.s37 -s 440049475 -d Cortex-M4

  6. 烧录Keys:flash--tokengroup znet –tokenfileC:\dk2\Apps458\BootLoader_7.11.0_458\sample_encrypt.key --tokenfileC:\dk2\Apps458\BootLoader_7.11.0_458\sample_sign.key-tokens.txt -s 440049475 -dCortex-M4

  7. 擦除Flash:devicemasserase -s 440049475 -d Cortex-M4

  8. 复位:device reset -s 440049475 -dCortex-M4

  9. 烧录应用程序:flash"C:\dk2\Apps458\PowerStrip\ZW_PowerStrip_7.11.0_458_ZGM130S_REGION_IN.hex"--address 0x0 -- serialno 440049475 --device Cortex-M4

  10. 复位:device reset -s 440049475 -dCortex-M4

如果命令在Windows Powershell上运行,则需要在步骤3和步骤4中进行少量修改:

  1. 擦除Bootloader:device pageerase --region "@bootloader" -s 440049475 -dCortex-M4

  2. 擦除Lockbits: args:device pageerase --region "@lockbits" -s 440049475-d Cortex-M4

注意,Bootloader程序和Key不会被正常的模擦除删除。

构建自定义引导加载程序

与SDK一起提供的引导加载程序是为了使用内部flash存储下载的OTA映像而构建的。 这种设计确保了产品的最低HW成本,但也减少了应用程序可用的代码空间。 在一些产品中,可能需要有更多的代码空间,这可以通过在外部Flash中拥有OTA图像来实现。 如果使用此选项,则必须构建一个替代引导加载程序并将其编程到产品上。

使用外置flash灯的步骤如下

1. 使用simplicity Studio为您想要使用的外部Flash创建OTA引导加载程序。 关于如何配置引导加载程序的详细信息,请参见 UG266: Silicon Labs Gecko BootLoader User Guide

a.确保配置符合协议\z-wave\ZAF\CommandClasses\FirmwareUpdate\ota_util.c中的配置

2. 修改链接器脚本

a.复制默认链接器脚本protocol/z-wave/ZWave/linkerscripts/zgm13-zw700. ld到您的本地应用程序项目,并设置studio使用该文件链接在Properties -> C/C++ Build-> Settings -> MemoryLayout

3. 编辑新的链接器文件

a.将链接器脚本中的FLASH部分从232K扩展到最大264K,以便为应用程序获得更多的代码空间

4. 编译应用程序

a.按照前面章节中的步骤生成有效的固件更新文件。

Z-Wave 700应用程序框架第七章 - 固件更新和引导加载程序相关推荐

  1. 【技术分享】如何解锁高通骁龙660上的安卓引导加载程序

    本文是我们在DEF CON 29大会上的演示视频的配套文章,视频的链接地址为https://www.youtube.com/watch?v=z4gIxdFfJDg. 要想在安卓手机上获得root权限, ...

  2. 引导加载程序之争: LILO 和 GRUB

    在不考虑他们的工作或专业情况下,所有 Linux 用户都会使用的是哪个工具?引导加载程序.通过本文了解引导加载程序的工作原理,认识两个流行的引导加载程序 LILO(LInux LOader)和 GNU ...

  3. 一加3t运行linux,【漏洞分析】获取已锁定的OnePlus 3/3T:引导加载程序漏洞

    翻译:胖胖秦 预估稿费:120RMB 投稿方式:发送邮件至linwei#360.cn,或登陆网页版在线投稿 前言 在这篇博文中,我公开了OnePlus 3/3T引导加载程序中的两个漏洞.第一个CVE- ...

  4. Linux加载Linux的引导程序,Linux的引导-引导加载程序:LILO和GRUB

    打开计算机时,计算机执行存储在ROM中的引导代码,这些代码接下来尝试确定如何加载并启动内核.内核检测系统的硬件,然后产生系统的init进程,这个进程总是PID 1. 在出现登录提示符以前,要完成几项工 ...

  5. 备份linux分区到usb,将Linux引导加载程序备份到USB的方法

    本文介绍如何将Linux引导加载程序备份到USB以应对紧急情况.大多数Linux操作系统使用的引导加载程序称为Grub,这是一个简单的工具,可以配置为在PC启动时从菜单启动Linux发行版以及其他操作 ...

  6. cwyw不是有效的加载项_ADAS/AD开发09 - UDS与引导加载程序

    本文属于ADAS控制器开发系列.以智能前视摄像头模块为基础. 前言 引导加载程序,即Bootloader(简称BL),是ECU的基本模块,实现方式也很多. 本文介绍的Bootloader刷写功能的下载 ...

  7. 如何配置Ubuntu 16.04 GRUB 2引导加载程序

    正如你所知,GRUB 2 是大多数 Linux 操作系统的默认引导加载程序.GRUB 是 GRand Unified Bootloader 的缩写,它是 Linux 启动时首先要加载的一个程序,此后它 ...

  8. 搞一下TDA4 | 03 TDA4 辅助引导加载程序SBL

    前言 本系列请点击:<搞一下TDA4> 所有系列请点击:<汽车电子系列分享> 本文档将介绍如何在处理器SDK TDA4(RTOS/Linux) 中理解辅助引导加载程序SBL 全 ...

  9. BootLoader——嵌入式系统的引导加载程序

    BootLoader--嵌入式系统的引导加载程序 一.BootLoader的简介 1.1 BootLoader在固态存储设备中的位置 1.2 BootLoader的启动过程 1.3 BootLoade ...

最新文章

  1. 解决“Internet Explorer 无法打开 Internet站点已终止操作”问题(转)
  2. android--创建自己的内容提供器
  3. Windows8下如何使用命令行--转载
  4. tensorflow_yolo-v3 Intel Realsense 视频流处理模块 opencv.videocapture()
  5. InnoDB原理篇:如何用好索引
  6. 理论篇-数理统计填坑篇
  7. 蒙特卡洛粒子滤波定位算法_序列蒙特卡洛(SMC)与粒子滤波
  8. jsp主板 jtp_最新主板常见故障及解决(新)
  9. 计算机信息规划工资,2020年工科类专业薪资最新排名,计算机很吃香,工资水平最高...
  10. 当面试官问到以后的职业规划,这样回答绝对称赞你是高手!(二)
  11. 2018百度之星初赛(A) 1003、1002、1001
  12. EfficientNet V1 V2总结
  13. 七牛 savekey php,七牛云1:客户端直接上传文件
  14. 【Linux】alias及设置
  15. 【吉大刘大有数据结构绿皮书】向LinkedList类中增加一个函数Contrary,功能为将其所有结点按相反次序链接。
  16. werkzeug routing RequestRedirect 308 Permanent Redirect None
  17. OKL4虚拟化技术跟踪
  18. 游戏平台推广怎么做?
  19. 揭秘BAT等互联网公司的薪酬结构
  20. 【警惕】我们的健康--爱民制药提醒您酒足饭饱后6件事不能做

热门文章

  1. 怎样用计算机命令修复软件,WINDOWS系统损坏无需重装,利用命令一键轻松修复...
  2. html视频播放器全屏,HTML5 video播放器全屏(fullScreen)方法实例
  3. Animate.css动画演示
  4. 实例:用C#.NET手把手教你做微信公众号开发(11)--生成带参数二维码
  5. 软件缺陷主要包含哪些要素?
  6. html桌面天干地支,《天干地支》对照表及运用方法
  7. 自己实现一个字符串拼接函数
  8. marlin2.0.5.4配置详解——个人记录
  9. 阿里云调用ocr文本识别接口
  10. 一套键盘鼠标跨电脑切换使用