Hi,
We are facing the same issue as in this post but the solution is not working for us. The old post : https://devzone.nordicsemi.com/f/nordic-q-a/109161/problem-with-flash_manager-nrf_mesh_assert-p_manager--config-p_area-i-metadata-page_index-i
After DFU we have the same assert when the system is booting. So the assert is here : NRF_MESH_ASSERT(p_manager->config.p_area[i].metadata.page_index == i);
What I understand is that the DFU overwrite some of our application data and that trigger the assert. How can we handle this ?
Our application size is 464ko (.hex size) with the opitimisation for size activated.
maybe it is not the way to know the real size of the app ?
Is it too big to use the DFU ? if yes, What is the limit when using DFU ?
Is it really a size issue or rather a problem with the place where or custom data in flash are stored ?
We use the "mesh_config" (MESH_CONFIG_ENTRY) system to write and read in flash. Like it is done in nordic example for every models. We added one for a generic user property model.
We use these id's (in the model_config_file.h) :
#define MESH_APP_MODEL_GENERIC_USERPROPERTY_ID_START (0x2700)
#define MESH_APP_MODEL_GENERIC_USERPROPERTY_ID_END (0x27FF)
We already tried to remove this part we added but the assert still appear so we are not convinced it is related to this.
Waiting your answer ! thx :)
Here are the logs :
Here is the start when it success :
<t: 0>, main.c, 3652, ----- BLE Mesh LPN Demo -----
<t: 11749>, main.c, 3667, ----- 4 -----
<t: 12256>, flash_manager_defrag.c, 630, BOOTLOADERADDR(): 0x00072000 fm_recovery_area: 0x00070000
<t: 12264>, mesh_config_flashman_glue.c, 351, Mesh config area: 0x0006F000 file_id: 0x0000
<t: 12268>, flash_manager.c, 822, FM area: 0x0006F000
<t: 12276>, mesh_config_flashman_glue.c, 351, Mesh config area: 0x0006E000 file_id: 0x0001
<t: 12280>, flash_manager.c, 822, FM area: 0x0006E000
<t: 12288>, mesh_config_flashman_glue.c, 351, Mesh config area: 0x0006D000 file_id: 0x0002
<t: 12292>, flash_manager.c, 822, FM area: 0x0006D000
<t: 12300>, mesh_config_flashman_glue.c, 351, Mesh config area: 0x0006C000 file_id: 0x0003
<t: 12303>, flash_manager.c, 822, FM area: 0x0006C000
<t: 12311>, mesh_config_flashman_glue.c, 351, Mesh config area: 0x0006B000 file_id: 0x0004
<t: 12315>, flash_manager.c, 822, FM area: 0x0006B000
<t: 12323>, mesh_config_flashman_glue.c, 351, Mesh config area: 0x0006A000 file_id: 0x0005
<t: 12327>, flash_manager.c, 822, FM area: 0x0006A000
<t: 12335>, mesh_config_flashman_glue.c, 351, Mesh config area: 0x00069000 file_id: 0xFFFE
<t: 12339>, flash_manager.c, 822, FM area: 0x00069000
advertiser_interval_set : 1000
<t: 12356>, userproperty_model_client.c, 63, INIT BUFFER DONE
<t: 12359>, userproperty_model_client.c, 63, INIT BUFFER DONE
<t: 12385>, main.c, 3509, advertiser_instance_init OK
<t: 12387>, main.c, 3669, ----- 5 -----
And there is the start after DFU with the assert :
lfclk_config ok
rtc_config ok
<t: 0>, main.c, 3651, ----- BLE Mesh LPN Demo -----
<t: 11650>, main.c, 3666, ----- 4 -----
<t: 12160>, flash_manager_defrag.c, 630, BOOTLOADERADDR(): 0x00072000 fm_recovery_area: 0x00070000
<t: 12167>, mesh_config_flashman_glue.c, 351, Mesh config area: 0x0006F000 file_id: 0x0000
<t: 12171>, flash_manager.c, 822, FM area: 0x0006F000
<t: 12174>, mesh_config_flashman_glue.c, 351, Mesh config area: 0x0006E000 file_id: 0x0001
<t: 12178>, flash_manager.c, 822, FM area: 0x0006E000
<t: 12182>, mesh_config_flashman_glue.c, 351, Mesh config area: 0x0006D000 file_id: 0x0002
<t: 12185>, flash_manager.c, 822, FM area: 0x0006D000
<t: 12189>, mesh_config_flashman_glue.c, 351, Mesh config area: 0x0006C000 file_id: 0x0003
<t: 12193>, flash_manager.c, 822, FM area: 0x0006C000
<t: 12195>, app_error_weak.c, 105, Mesh assert at 0x0002F3A6 (:0)