DFU升级新固件时保留旧的App data

xiaoxiao2021-02-28  85

SDK版本: nRF5_SDK_11.0.0_89a8197

NRF51822整个FLASH布局如下图:

  地址从高往低看,DFU之前的部分App data 就是用户数据存储区,该区域大小没有具体限制,除去用户的 App 代码占用的 flash 空间,在 App 代码结束地址到DFU BootLoader代码起始地址这段区域都可以用来存储用户数据。

使用SDK自带的bootloader例程(nRF5_SDK_11.0.0_89a8197\examples\dfu\bootloader\pca10028\dual_bank_ble_s130\arm4\dfu_dual_bank_ble_s130_pca10028.uvproj),默认在升级时会擦除掉App 代码起始地址到DFU BootLoader代码起始地址之间的全部区域,当然这是我们不希望的结果,因此固件升级时,我们需要告诉DFU模块我们保留用户数据地方不能擦除,用户保留数据空间官方用一个宏表示大小(nRF5_SDK_11.0.0_89a8197_boot\components\libraries\bootloader_dfu\dfu_types.h): 

#ifndef DFU_APP_DATA_RESERVED #define DFU_APP_DATA_RESERVED CODE_PAGE_SIZE * 0 /**< Size of Application Data that must be preserved between application updates. This value must be a multiple of page size. Page size is 0x400 (1024d) bytes, thus this value must be 0x0000, 0x0400, 0x0800, 0x0C00, 0x1000, etc. */ #endif

 

这个空间大小默认为0,用户只需要参考注释按需求改成自己想要的大小即可实现在升级新的APP后保留App data。

转载请注明原文地址: https://www.6miu.com/read-39074.html

最新回复(0)