After many reboots, suddenly I got stuck at this error on every boot:
Fullscreen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
0x0003abd6 in app_error_fault_handler (id=id@entry=16386, pc=267800, info=info@entry=536935768) at .../SDK-15-3/components/libraries/util/app_error_weak.c:100
100 NRF_BREAKPOINT_COND;
(gdb) bt
#0 0x0003abd6 in app_error_fault_handler (id=id@entry=16386, pc=267800, info=info@entry=536935768) at .../SDK-15-3/components/libraries/util/app_error_weak.c:100
#1 0x0004a7b0 in mesh_assertion_handler (pc=<optimized out>) at .../SDK-mesh-3_2/examples/common/src/assertion_handler_weak.c:54
#2 0x0004161a in get_invalid_bytes (pages=<optimized out>, p_area=<optimized out>) at .../SDK-mesh-3_2/mesh/core/src/flash_manager.c:397
#3 flash_manager_add (p_manager=p_manager@entry=0x200055f4 <m_flash_manager>, p_config=p_config@entry=0x2000fd88) at .../SDK-mesh-3_2/mesh/core/src/flash_manager.c:841
#4 0x000452ba in add_flash_manager () at .../SDK-mesh-3_2/mesh/access/src/access.c:699
#5 0x00045304 in access_init () at .../SDK-mesh-3_2/mesh/access/src/access.c:1171
#6 0x00047eb0 in mesh_stack_init (p_init_params=p_init_params@entry=0x2000fddc, p_device_provisioned=p_device_provisioned@entry=0x200040e8 <Mesh::getInstance()::instance+4>) at .../SDK-mesh-3_2/mesh/stack/src/mesh_stack.c:84
#7 0x00036676 in Mesh::init (this=0x200040e4 <Mesh::getInstance()::instance>) at ...
(gdb) f 2
#2 0x0004161a in get_invalid_bytes (pages=<optimized out>, p_area=<optimized out>) at .../SDK-mesh-3_2/mesh/core/src/flash_manager.c:397
397 NRF_MESH_ASSERT(p_entry < p_end);
(gdb) info locals
pc = <optimized out>
invalid_bytes = 261140
p_end = 0x6e000
p_entry = 0xacc1c
invalid_bytes = <optimized out>
The data that's on the flash pages:
Fullscreen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
0006E000 = 08 04 10 10 01 00 FF FF 04 00 01 00 04 00 08 00
0006E010 = 01 00 03 00 01 00 00 00 02 00 02 00 1F 00 01 00
0006E020 = 02 00 00 10 1E C5 FF FF 06 00 00 30 00 00 00 00
0006E030 = 8C 84 71 A2 EA 06 BD 45 31 85 E8 C8 12 F5 49 00
0006E040 = 06 00 00 40 00 00 00 00 95 D0 1A 27 21 7C E5 A6
0006E050 = AC B8 94 E9 6F 26 A9 2F 06 00 00 50 1F 00 00 00
0006E060 = 0E 98 D3 FC DF 51 C1 42 9D 3F 8A 49 3C 7F A0 E2
0006E070 = FF FF FF 7F FF FF FF FF FF FF FF FF FF FF FF FF
0006F000 = 08 04 10 10 01 00 FF FF 03 00 02 00 00 00 00 00
0006F010 = 00 00 03 00 02 00 00 00 00 C0 7E 00 02 00 00 00
0006F020 = 00 E0 7E 00 02 00 00 00 00 00 7F 00 02 00 00 00
0006F030 = 00 20 7F 00 02 00 00 00 00 40 7F 00 02 00 00 00
0006F040 = 00 60 7F 00 02 00 00 00 00 80 7F 00 02 00 00 00
0006F050 = 00 A0 7F 00 02 00 00 00 00 C0 7F 00 02 00 00 00
0006F060 = 00 E0 7F 00 02 00 00 00 00 00 80 00 02 00 00 00
0006F070 = 00 20 80 00 02 00 00 00 00 40 80 00 02 00 00 00
0006F080 = 00 60 80 00 02 00 00 00 00 80 80 00 02 00 00 00
0006F090 = 00 A0 80 00 02 00 00 00 00 C0 80 00 02 00 00 00
0006F0A0 = 00 E0 80 00 02 00 00 00 00 00 81 00 02 00 00 00
0006F0B0 = 00 20 81 00 02 00 00 00 00 40 81 00 02 00 00 00
0006F0C0 = 00 60 81 00 02 00 00 00 00 80 81 00 02 00 00 00
My mesh init params:
Fullscreen
1
2
3
4
5
6
7
8
9
10
11
12
13
nrf_clock_lf_cfg_t lfclksrc;
lfclksrc.source = NRF_SDH_CLOCK_LF_SRC;
lfclksrc.rc_ctiv = NRF_SDH_CLOCK_LF_RC_CTIV;
lfclksrc.rc_temp_ctiv = NRF_SDH_CLOCK_LF_RC_TEMP_CTIV;
lfclksrc.accuracy = NRF_CLOCK_LF_ACCURACY_20_PPM;
mesh_stack_init_params_t init_params;
init_params.core.irq_priority = NRF_MESH_IRQ_PRIORITY_THREAD;
init_params.core.lfclksrc = lfclksrc;
init_params.core.p_uuid = NULL;
init_params.core.relay_cb = NULL;
init_params.models.models_init_cb = staticModelsInitCallback;
init_params.models.config_server_cb = config_server_evt_cb;
Using NRF52832, SDK 15.3.0, SD 132 6.1.1, and Mesh SDK 3.2.0.
My question is: what do you expect the user to do in this case? Seeing how it's not self repairing or anything, you just brick your device with this.