設備固件升級(DFU)過程中,初始化包在應用程序映像傳輸前進行安全檢測,確保設備只接收兼容固件。本文解析初始化包結構與關鍵字段。
dfu_init_packet_t)| 字段 | 大小 | 用途 |
|---|---|---|
| Device Type | 2 字節 | 開發者定義設備類型(如心率帶) |
| Device Revision | 2 字節 | 限制特定硬件版本升級 |
| Application Version | 4 字節 | 標識應用版本,防止降級(示例代碼未使用) |
| Supported SoftDevices | 2 字節列表 | 兼容的 SoftDevice 版本(如 S110 v7.0/v7.1) |
| Checksum | 2 字節 | CRC16 校驗映像完整性 |
Device Type/Revision 存於 UICR 用戶保留區(地址 0x10001080),偏移量定義於 dfu_init.h 的 UICR_CUSTOMER_DEVICE_INFO_OFFSET。若該區域作他用,需修改偏移量。
SDK 提供 dfu_init_template.c 作為安全檢測參考實現,包含:
.hex/.bin 文件nrfutil 或 SDK 內腳本生成初始化包.zip(含 init_packet.dat + 應用映像)