Silicon labs Gecko bootloader 升级用的GBL文件格式

Posted newbit

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Silicon labs Gecko bootloader 升级用的GBL文件格式相关的知识,希望对你有一定的参考价值。

本系列的文章用来说明Gecko bootloader(下称bootloader)的功能,原理,内存分配等,而本文则是用来介绍升级过程中用到的GBL文件格式,包括加密和不加密的GBL文件。

 

作为一个系列的文章,如果有不清楚的,可以先阅读

1.   Gecko bootloader的介绍(Silicon Labs) 【一】

2.   Silicon Labs Gecko bootloader的主要特性 【二】

3.   Silicon Labs Gecko bootloader的存储分配 【三】

 

EFR32是目前最主流的ZigBee平台之一,由silicon labs原厂推出的bootloader功能很完整,通过simplicity commander软件将升级镜像打包为GBL文件,便可以利用网关等设备对终端进行升级。GBL文件即要被应用层的传输协议识别,同时也需要让bootloader识别。

 

标签

由于GBL文件由多个字段组成,为了能够将各字段的数据进行标识清楚,采用了标签,标签当中可以指明后续数据内容的长度和格式。标签的格式如下:

标签号  / Tag ID

标签长度 / Tag Length

标签数据 / Tag Payload

4 bytes

4 bytes

可变长度 (由标签长度决定)

 

标签又分为明文标签和加密标签

明文标签列表如下

标签名称 / Tag Name

编号 / ID

描述 / Desc

GBL Header

0x03A617EB

GBL文件的第一个标签,包含GBL文件的版本,并标明该文件是否签名和加密

GBL Application info

0xF40A0AF4

包含应用程序升级固件的(描述)信息

GBL SE Upgrade

0x5EA617EB

包含一个完整的加密的Secure Element,仅在Series 2上有用

GBL bootloader

0xF50909F5

包含了一个完整的bootloader

GBL Program Data

0xFE0101FE or

0xFD0303FD

位于特定地址应用程序的程序数据信息

GBL Program LZ4

Compressed Date

0xFD0505FD

包含LZ4压缩信息,解压后得到位于特定地址应用程序的程序数据信息

GBL Program LZMA

Compressed Data

0xFD0707FD

包含LZMA压缩信息,解压后得到位于特定地址应用程序的程序数据信息

GBL Metadata

0Xf60808f6

这部分数据bootloader并不解析,应用程序可以通过特定回调函数读出,(可用来扩展功能,传递数据)

GBL Signature

0xf70a0af7

ECDSA-P256签名,签过文件得到结果时,存在这个标签当中

GBL End

0xfc0404fc

这个标签总是GBL文件的最后一个标签,包括一个32位的CRC校验码,用来检查文件的完整性。

使用明文GBL文件,可以使用下面的系列来构成文件。

 技术图片

 

 

加密标签列表如下

标签名称 / Tag Name

编号 / ID

描述 / Desc

GBL Header

0x03A617EB

这个标签与明方标签一样,也必须是GBL文件的第一个标签,不同的是,标签要指明GBL文件是加密的

GBL Encryption Init Header

0xFA0606FA

包含有关镜像加官的信息,如Nonce和加密数据的数量。

GBL Encrypted Program

Data

0Xf90707f9

加密的数据负载,其中的数据是明文GBL标签,可能是Application info, Bootloader, Metadata 或者Program等其中之一。这一标签使用AES-CTR-128加密

 

使用加密的GBL文件,可以使用下面的系列来构成文件。

 技术图片

 

 

关于Bootloader, 先说这么多,以后有内容再补充

 

以上是关于Silicon labs Gecko bootloader 升级用的GBL文件格式的主要内容,如果未能解决你的问题,请参考以下文章

Silicon Lab zigbee芯片HOST端程序移植

ZigBee抓包指南(Silicon Labs EM3585)

基于Mac Silicon M1 的OpenSSL 编译

在 Intel 机器上构建 Apple Silicon 二进制文件

can tuner和silicon tuner的区别

在 JavaScript 中检测 Apple Silicon mac