This is a small example application showing a Memfault integration running on an nrf52840 development board, using the nRF Connect SDK. Any nRF board should also work. The example has been tested on:
nrf52840dk/nrf52840
)nrf5340dk/nrf5340/cpuapp
)nrf54l15dk/nrf54l15/cpuapp
)Make sure you have the Zephyr / nRF-Connect tools installed first:
https://docs.nordicsemi.com/bundle/ncs-2.9.0/page/nrf/installation/install_ncs.html
This application is tested on nRF Connect SDK v2.9.0.
To build and flash this example to an nRF5340-DK (PCA10095), run the following commands:
❯ west init --local memfault_demo_app ❯ west update ❯ west build --board nrf5340dk/nrf5340/cpuapp memfault_demo_app ❯ west flash
Optionally, for the
nrf54l
series only, to store coredumps in RAM instead of RRAM, comment out the line in thememfault_demo_app/boards/nrf54l15dk_nrf54l15_cpuapp.conf
file:# CONFIG_MEMFAULT_COREDUMP_STORAGE_RRAM=y
Open a serial terminal to access the console:
# for example, pypserial-miniterm ❯ pyserial-miniterm --raw /dev/ttyACM0 115200
The console has several Memfault test commands available:
uart:~$ mflt help Subcommands: clear_core :clear coredump collected export :dump chunks collected by Memfault SDK using https://mflt.io/chunk-data-export get_core :check if coredump is stored and present get_device_info :display device information get_latest_release :checks to see if new ota payload is available post_chunks :Post Memfault data to cloud test :commands to verify memfault data collection (https://mflt.io/mcu-test-commands) post_chunks :Post Memfault data to cloud get_latest_release :checks to see if new ota payload is available
The mflt test
subgroup contains commands for testing Memfault functionality:
uart:~$ mflt test help test - commands to verify memfault data collection (https://mflt.io/mcu-test-commands) Subcommands: assert :trigger memfault assert busfault :trigger a busfault hang :trigger a hang hardfault :trigger a hardfault memmanage :trigger a memory management fault usagefault :trigger a usage fault zassert :trigger a zephyr assert reboot :trigger a reboot and record it using memfault heartbeat :trigger an immediate capture of all heartbeat metrics log_capture :trigger capture of current log buffer contents logs :writes test logs to log buffer trace :capture an example trace event
For example, to test the coredump functionality:
run mflt test hardfault
and wait for the board to reset
run mflt get_core
to confirm the coredump was saved
run mflt export
to print out the base-64 chunks:
uart:~$ mflt export <inf> <mflt>: MC:SE4DpwIEAwEKbW5yZjUyX2V4YW1wbGUJZTAuMC4xBmFhC0Z5RE1gF8EEhgFpSW5mbyBsb2chAmxXYXJuaW5nIGxvZyEDakVycm9yIGxvZyE=: <inf> <mflt>: MC:gE6A/A==:
upload the chunks to Memfault. see here for details: