一、GBL文件的数据构成详解
1、定义
GBL文件即要被应用层的传输协议识别,同时也需要让bootloader识别。
2、标签数据成员
由于GBL文件由多个字段组成,为了能够将各字段的数据进行标识清楚,采用了标签,标签当中可以指明后续数据内容的长度和格式。
2.1标签的格式如下:
标签号 / Tag ID | 标签长度 / Tag Length | 标签数据 / Tag Payload |
4 bytes | 4 bytes | 可变长度 (由标签长度决定) |
3、标签又分为明文标签和加密标签
3.1、明文标签列表如下
标签名称 / 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文件,可以使用下面的系列来构成文件。
3.2加密标签列表如下
标签名称 / 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文件,可以使用下面的系列来构成文件。