當升級數據包時,在應用程序映像傳輸之前,在DFU中需要初始化包來執行映像的安全檢測。這個初始化包作為升級流程的一部分提供了安全檢測機制,因此被升級的設備只能接收兼容的應用程序。
初始化包包括以下信息可用於安全檢測(參見dfu_init_packet_t)
l Device type:一個2個字節的值,可由開發者定義,以指示設備的類型,如Heart Rate Belt。
l Device revision:一個2個字節的值,用於限制一個設備只能使用一個定義的版本號進行升級。
l Application version:一個4字節的值,用來標識用於傳輸的應用程序的版本,這個值用來只允許軟件升級而不能降級。沒有示例代碼使用這個值。
l Supported SoftDevices:一個2個字節的列表標識與應用程序兼容的SoftDevices,如S110 v7.0 和 S110 v7.1。
l Checksum:2個字節的循環校驗碼,用於校驗映像。
SDK提供一個模板dfu_init_template.c
用於執行初始化包的安全檢測。這個模板是為了增強DFU的安全性而增加的。
設備和版本類型在nRF51芯片的UICR(0x10001080)寄存器的用戶保留區中保存,如果這個區域用於其他目的,更新dfu_init.h中的偏移:UICR_CUSTOMER_DEVICE_INFO_OFFSET。