産品使用nRF52832的FDS子產品來存儲使用者資料。産品在使用過程中,發現DFU更新有一定機率導緻FDS資料丢失。經過查找相關資料,發現在Bootloader程式中有一個宏,用來指定受保護Flash區的大小。在保護範圍之外的,會被Bootloader給擦除。這個宏是:
#ifndef DFU_APP_DATA_RESERVED
#define DFU_APP_DATA_RESERVED (CODE_PAGE_SIZE * 3)
#endif
對于這個宏,Nordic論壇上有如下描述:
DFU_APP_DATA_RESERVED only referes to how many pages below the bootloader start address it shoudl preserve during a DFU, i.e. not erase, see this page. Whereas, FDS_VIRTUAL_PAGES defines how many pages below the bootloader start address that are reserved for the FDS module. So if you want to preserve the data stored by FDS you should set DFU_APP_DATA_RESERVED equal to FDS_VIRTUAL_PAGES.
通過以上資訊可以得知,該宏的大小就是被保護區域的大小,應該與應用程式中開辟的FDS大小一緻,或者更大。