Hi Support,
This issue happens in nRF5_SDK_16.0.0_98a08e2 and nRF5_SDK_15.3.0_59ac345.
Directly import the example from SDK (examples\peripheral\flash_fds) into SES, build it and download to Nodic DK(10056). According to a serial port console, I could read,
<info> app: FDS example started.
<info> app: Initializing fds...
<error> app: Fatal error
<warning> app: System reset
<info> app: FDS example started.
<info> app: Initializing fds...
<error> app: Fatal error
<warning> app: System reset
(repeating)
In debug tracing mode, I could find that the failure happened in ,
fds_init_opts_t init_opts = pages_init();
switch (init_opts)
{
case NO_PAGES:
case NO_SWAP:
return FDS_ERR_NO_PAGES;
I know there is a discussion in this forum 4 years ago, https://devzone.nordicsemi.com/f/nordic-q-a/13672/fstorage-memory-allocation-in-segger-embedded-studio/52240#52240
Just thinking if I could get a latest complete instruction (but not piece by piece) for such an issue? if any explanation, it would be better.
Thanks a lot. Attachment is my flash_placement.xml. Furthermore, I could read the elf file as well, partially attached here.
S.
<!DOCTYPE Linker_Placement_File> <Root name="Flash Section Placement"> <MemorySegment name="FLASH" start="$(FLASH_PH_START)" size="$(FLASH_PH_SIZE)"> <ProgramSection load="no" name=".reserved_flash" start="$(FLASH_PH_START)" size="$(FLASH_START)-$(FLASH_PH_START)" /> <ProgramSection alignment="0x100" load="Yes" name=".vectors" start="$(FLASH_START)" /> <ProgramSection alignment="4" load="Yes" name=".init" /> <ProgramSection alignment="4" load="Yes" name=".init_rodata" /> <ProgramSection alignment="4" load="Yes" name=".text" /> <ProgramSection alignment="4" keep="Yes" load="Yes" name=".sdh_ble_observers" inputsections="*(SORT(.sdh_ble_observers*))" address_symbol="__start_sdh_ble_observers" end_symbol="__stop_sdh_ble_observers" /> <ProgramSection alignment="4" keep="Yes" load="Yes" name=".cli_command" inputsections="*(.cli_command*)" address_symbol="__start_cli_command" end_symbol="__stop_cli_command" /> <ProgramSection alignment="4" keep="Yes" load="Yes" name=".pwr_mgmt_data" inputsections="*(SORT(.pwr_mgmt_data*))" address_symbol="__start_pwr_mgmt_data" end_symbol="__stop_pwr_mgmt_data" /> <ProgramSection alignment="4" keep="Yes" load="Yes" name=".nrf_queue" inputsections="*(.nrf_queue*)" address_symbol="__start_nrf_queue" end_symbol="__stop_nrf_queue" /> <ProgramSection alignment="4" keep="Yes" load="Yes" name=".sdh_req_observers" inputsections="*(SORT(.sdh_req_observers*))" address_symbol="__start_sdh_req_observers" end_symbol="__stop_sdh_req_observers" /> <ProgramSection alignment="4" keep="Yes" load="Yes" name=".sdh_state_observers" inputsections="*(SORT(.sdh_state_observers*))" address_symbol="__start_sdh_state_observers" end_symbol="__stop_sdh_state_observers" /> <ProgramSection alignment="4" keep="Yes" load="Yes" name=".sdh_stack_observers" inputsections="*(SORT(.sdh_stack_observers*))" address_symbol="__start_sdh_stack_observers" end_symbol="__stop_sdh_stack_observers" /> <ProgramSection alignment="4" keep="Yes" load="Yes" name=".log_const_data" inputsections="*(SORT(.log_const_data*))" address_symbol="__start_log_const_data" end_symbol="__stop_log_const_data" /> <ProgramSection alignment="4" keep="Yes" load="Yes" name=".sdh_soc_observers" inputsections="*(SORT(.sdh_soc_observers*))" address_symbol="__start_sdh_soc_observers" end_symbol="__stop_sdh_soc_observers" /> <ProgramSection alignment="4" keep="Yes" load="Yes" name=".log_backends" inputsections="*(SORT(.log_backends*))" address_symbol="__start_log_backends" end_symbol="__stop_log_backends" /> <ProgramSection alignment="4" keep="Yes" load="Yes" name=".nrf_balloc" inputsections="*(.nrf_balloc*)" address_symbol="__start_nrf_balloc" end_symbol="__stop_nrf_balloc" /> <ProgramSection alignment="4" keep="Yes" load="No" name=".nrf_sections" address_symbol="__start_nrf_sections" /> <ProgramSection alignment="4" keep="Yes" load="Yes" name=".cli_sorted_cmd_ptrs" inputsections="*(.cli_sorted_cmd_ptrs*)" runin=".cli_sorted_cmd_ptrs_run"/> <ProgramSection alignment="4" keep="Yes" load="Yes" name=".fs_data" inputsections="*(.fs_data*)" runin=".fs_data_run"/> <ProgramSection alignment="4" keep="Yes" load="Yes" name=".log_dynamic_data" inputsections="*(SORT(.log_dynamic_data*))" runin=".log_dynamic_data_run"/> <ProgramSection alignment="4" keep="Yes" load="Yes" name=".log_filter_data" inputsections="*(SORT(.log_filter_data*))" runin=".log_filter_data_run"/> <ProgramSection alignment="4" load="Yes" name=".dtors" /> <ProgramSection alignment="4" load="Yes" name=".ctors" /> <ProgramSection alignment="4" load="Yes" name=".rodata" /> <ProgramSection alignment="4" load="Yes" name=".ARM.exidx" address_symbol="__exidx_start" end_symbol="__exidx_end" /> <ProgramSection alignment="4" load="Yes" runin=".fast_run" name=".fast" /> <ProgramSection alignment="4" load="Yes" runin=".data_run" name=".data" /> <ProgramSection alignment="4" load="Yes" runin=".tdata_run" name=".tdata" /> </MemorySegment> <MemorySegment name="RAM" start="$(RAM_PH_START)" size="$(RAM_PH_SIZE)"> <ProgramSection load="no" name=".reserved_ram" start="$(RAM_PH_START)" size="$(RAM_START)-$(RAM_PH_START)" /> <ProgramSection alignment="0x100" load="No" name=".vectors_ram" start="$(RAM_START)" address_symbol="__app_ram_start__"/> <ProgramSection alignment="4" keep="Yes" load="No" name=".nrf_sections_run" address_symbol="__start_nrf_sections_run" /> <ProgramSection alignment="4" keep="Yes" load="No" name=".cli_sorted_cmd_ptrs_run" address_symbol="__start_cli_sorted_cmd_ptrs" end_symbol="__stop_cli_sorted_cmd_ptrs" /> <ProgramSection alignment="4" keep="Yes" load="No" name=".fs_data_run" address_symbol="__start_fs_data" end_symbol="__stop_fs_data" /> <ProgramSection alignment="4" keep="Yes" load="No" name=".log_dynamic_data_run" address_symbol="__start_log_dynamic_data" end_symbol="__stop_log_dynamic_data" /> <ProgramSection alignment="4" keep="Yes" load="No" name=".log_filter_data_run" address_symbol="__start_log_filter_data" end_symbol="__stop_log_filter_data" /> <ProgramSection alignment="4" keep="Yes" load="No" name=".nrf_sections_run_end" address_symbol="__end_nrf_sections_run" /> <ProgramSection alignment="4" load="No" name=".fast_run" /> <ProgramSection alignment="4" load="No" name=".data_run" /> <ProgramSection alignment="4" load="No" name=".tdata_run" /> <ProgramSection alignment="4" load="No" name=".bss" /> <ProgramSection alignment="4" load="No" name=".tbss" /> <ProgramSection alignment="4" load="No" name=".non_init" /> <ProgramSection alignment="4" size="__HEAPSIZE__" load="No" name=".heap" /> <ProgramSection alignment="8" size="__STACKSIZE__" load="No" place_from_segment_end="Yes" name=".stack" address_symbol="__StackLimit" end_symbol="__StackTop"/> <ProgramSection alignment="8" size="__STACKSIZE_PROCESS__" load="No" name=".stack_process" /> </MemorySegment> </Root>
ELF Header: Magic: 7f 45 4c 46 01 01 01 00 00 00 00 00 00 00 00 00 Class: ELF32 Data: 2's complement, little endian Version: 1 (current) OS/ABI: UNIX - System V ABI Version: 0 Type: EXEC (Executable file) Machine: ARM Version: 0x1 Entry point address: 0x26375 Start of program headers: 52 (bytes into file) Start of section headers: 1903760 (bytes into file) Flags: 0x5000400, Version5 EABI, hard-float ABI Size of this header: 52 (bytes) Size of program headers: 32 (bytes) Number of program headers: 17 Size of section headers: 40 (bytes) Number of section headers: 73 Section header string table index: 72 Section Headers: [Nr] Name Type Addr Off Size ES Flg Lk Inf Al [ 0] NULL 00000000 000000 000000 00 0 0 0 [ 1] .reserved_ram NOBITS 20000000 00b03c 002210 00 WA 0 0 1 [ 2] .reserved_flash NOBITS 00000000 000254 026000 00 WA 0 0 1 [ 3] .vectors PROGBITS 00026000 000254 000200 00 AX 0 0 4 [ 4] .rel.vectors REL 00000000 16ade4 0001b0 08 I 70 3 4 [ 5] .init PROGBITS 00026200 000454 0001d4 00 AX 0 0 4 [ 6] .rel.init REL 00000000 16af94 000140 08 I 70 5 4 [ 7] .text PROGBITS 000263d4 000628 007fe6 00 WAX 0 0 4 [ 8] .rel.text REL 00000000 16b0d4 002f48 08 I 70 7 4 [ 9] .cli_command PROGBITS 0002e3bc 008610 000070 00 A 0 0 4 [10] .rel.cli_command REL 00000000 16e01c 000070 08 I 70 9 4 [11] .nrf_queue PROGBITS 0002e42c 008680 00001c 00 A 0 0 4 [12] .rel.nrf_queue REL 00000000 16e08c 000020 08 I 70 11 4 [13] .sdh_req_observer PROGBITS 0002e448 00869c 000008 00 A 0 0 4 [14] .rel.sdh_req_obse REL 00000000 16e0ac 000008 08 I 70 13 4 [15] .sdh_state_observ PROGBITS 0002e450 0086a4 000008 00 A 0 0 4 [16] .rel.sdh_state_ob REL 00000000 16e0b4 000008 08 I 70 15 4 [17] .sdh_stack_observ PROGBITS 0002e458 0086ac 000010 00 A 0 0 4 [18] .rel.sdh_stack_ob REL 00000000 16e0bc 000010 08 I 70 17 4 [19] .log_const_data PROGBITS 0002e468 0086bc 000078 00 A 0 0 4 [20] .rel.log_const_da REL 00000000 16e0cc 000078 08 I 70 19 4 [21] .sdh_soc_observer PROGBITS 0002e4e0 008734 000008 00 A 0 0 4 [22] .rel.sdh_soc_obse REL 00000000 16e144 000008 08 I 70 21 4 [23] .log_backends PROGBITS 0002e4e8 00873c 000020 00 A 0 0 4 [24] .rel.log_backends REL 00000000 16e14c 000038 08 I 70 23 4 [25] .nrf_balloc PROGBITS 0002e508 00875c 000038 00 A 0 0 4 [26] .rel.nrf_balloc REL 00000000 16e184 000060 08 I 70 25 4 [27] .cli_sorted_cmd_p PROGBITS 20002210 008794 000038 00 WA 0 0 4 [28] .cli_sorted_cmd_p NOBITS 20002210 0087cc 000038 00 WA 0 0 1 [29] .fs_data PROGBITS 20002248 0087cc 000014 00 WA 0 0 4 [30] .rel.fs_data REL 00000000 16e1e4 000008 08 I 70 29 4 [31] .fs_data_run NOBITS 20002248 0087e0 000014 00 WA 0 0 1 [32] .log_dynamic_data PROGBITS 2000225c 0087e0 00003c 00 WA 0 0 2 [33] .log_dynamic_data NOBITS 2000225c 00881c 00003c 00 WA 0 0 1 [34] .log_filter_data PROGBITS 20002298 00881c 00003c 00 WA 0 0 4 [35] .log_filter_data_ NOBITS 20002298 008858 00003c 00 WA 0 0 1 [36] .rodata PROGBITS 0002e604 008864 0026f8 00 A 0 0 16 [37] .rel.rodata REL 00000000 16e1ec 000960 08 I 70 36 4 [38] .fast_run PROGBITS 200022d4 00b03c 000000 00 W 0 0 1 [39] .data PROGBITS 200022d4 00af5c 0000e0 00 WA 0 0 4 [40] .rel.data REL 00000000 16eb4c 0000d8 08 I 70 39 4 [41] .data_run NOBITS 200022d4 00b03c 0000e0 00 WA 0 0 1 [42] .tdata_run PROGBITS 200023b4 00b03c 000000 00 W 0 0 1 [43] .bss NOBITS 200023b4 00b03c 000e0b 00 WA 0 0 4 [44] .tbss NOBITS 200031c0 00b03c 000004 00 WAT 0 0 4 [45] .heap NOBITS 200031c4 00b03c 000200 00 WA 0 0 1 [46] .stack NOBITS 2003c000 00b03c 004000 00 WA 0 0 1 [47] .stack_process PROGBITS 20040000 00b03c 000000 00 W 0 0 1 [48] .ARM.attributes ARM_ATTRIBUTES 00000000 00b03c 000035 00 0 0 1 [49] .comment PROGBITS 00000000 00b071 000043 01 MS 0 0 1 [50] .debug_line PROGBITS 00000000 00b0b4 01b589 00 0 0 1 [51] .rel.debug_line REL 00000000 16ec24 000c28 08 I 70 50 4 [52] .debug_info PROGBITS 00000000 02663d 03f83e 00 0 0 1 [53] .rel.debug_info REL 00000000 16f84c 026398 08 I 70 52 4 [54] .debug_abbrev PROGBITS 00000000 065e7b 008236 00 0 0 1 [55] .debug_aranges PROGBITS 00000000 06e0b8 000fd0 00 0 0 8 [56] .rel.debug_arange REL 00000000 195be4 000d60 08 I 70 55 4 [57] .debug_str PROGBITS 00000000 06f088 0a2269 01 MS 0 0 1 [58] .debug_ranges PROGBITS 00000000 1112f8 003230 00 0 0 8 [59] .rel.debug_ranges REL 00000000 196944 004d80 08 I 70 58 4 [60] .debug_frame PROGBITS 00000000 114528 003464 00 0 0 4 [61] .rel.debug_frame REL 00000000 19b6c4 001760 08 I 70 60 4 [62] .debug_loc PROGBITS 00000000 11798c 014980 00 0 0 1 [63] .rel.debug_loc REL 00000000 19ce24 013048 08 I 70 62 4 [64] .debug_pubnames PROGBITS 00000000 12c30c 00be40 00 0 0 1 [65] .rel.debug_pubnam REL 00000000 1afe6c 000120 08 I 70 64 4 [66] .debug_pubtypes PROGBITS 00000000 13814c 009161 00 0 0 1 [67] .rel.debug_pubtyp REL 00000000 1aff8c 000120 08 I 70 66 4 [68] .debug_macro PROGBITS 00000000 1412ad 01d701 00 0 0 1 [69] .rel.debug_macro REL 00000000 1b00ac 020910 08 I 70 68 4 [70] .symtab SYMTAB 00000000 15e9b0 0078d0 10 71 1325 4 [71] .strtab STRTAB 00000000 166280 004b63 00 0 0 1 [72] .shstrtab STRTAB 00000000 1d09bc 0002d2 00 0 0 1 Key to Flags: W (write), A (alloc), X (execute), M (merge), S (strings) I (info), L (link order), G (group), T (TLS), E (exclude), x (unknown) O (extra OS processing required) o (OS specific), p (processor specific) There are no section groups in this file.