Tip / Sign in to post questions, reply, level up, and achieve exciting badges. Know more

Memfault IoT Reliability Platform for Infineon PSoC™ 6

eric-memfault
Level 0
Level 0
First question asked Welcome!

Memfault IoT Reliability Platform for Infineon PSoC™ 6

Memfault recently joined ModusToolbox& Friends and collaborated with Infineon’s team to build a tight integration between the ModusToolbox™ SDK and the Memfault platform. We wanted to write a piece to explain a bit more about what Memfault is, some use cases, and add some detail to our getting started guide for ModusToolbox™ & PSoC™ 6 chipsets.

Memfault is the first IoT reliability platform that gives developers a more scalable and sustainable process to transform how they develop, maintain, and improve IoT devices. We give engineers full visibility to know if devices are working, why devices are not working and the results of device updates. Memfault’s performance metrics, issue detection capabilities, and remote coredump viewer help you launch products faster and fix problems before they impact the complete device fleet.

How Memfault Works

The Memfault C SDK and web application enable remote debugging, performance monitoring, and device operations capabilities including OTA management. The SDK gets integrated into your device firmware and handles collecting critical information from common crashes such as hard faults, memory overflows, asserts, and custom device events. Metrics APIs enable easy, efficient capture of performance measurements you may like to track over time. The data is stored in a compact format and our API allows you to export it in defined chunks that fit the MTU size of your data transport to the cloud, which can be any type of connectivity, even through gateways or other cloud platforms. The data reaches the HTTP endpoint of the Memfault Cloud, a fully managed cloud application. There, the data is processed to surface insights, and fix and update devices.

ericmemfault_0-1670916653004.png

Once integrated and devices begin self-reporting issues and their performance metrics, the benefits are achieved quickly. Memfault detects and groups issues by inspecting the data, and deduplicating, and merging the issues. As a result, you can quickly see how many devices are impacted by each issue:

ericmemfault_1-1670916653016.png

Memfault eliminates the need to recreate these issues at your desk by giving you a debugging view of the device at the time of the issue. All issues are displayed in Memfault’s coredump viewer to highlight the exact problem that needs to be fixed. It works as if you had a hardwired debugger connected to the device at the time of the crash, eliminating weeks of reproducing the problem in the lab to find a root cause. The device may continue operation uninterrupted during this process. We not only capture the stack trace but exceptions, registers, locals, globals, statics, and even a raw memory map if you wish.

ericmemfault_2-1670916653028.png

Memfault also provides performance monitoring with APIs to efficiently collect timeseries metrics that are often useful for understanding issues such as battery life, CPU and memory utilization, or to understand more about a device’s usage leading up to a crash:

ericmemfault_3-1670916653033.png

You can track improvements by viewing metrics and issue charts at a device and fleet level and comparing across software and hardware versions.

At only ~4.5KB of code space and requiring 1.5KB of RAM, we make it so you can use this SDK in both test and production firmware. Not only is it small and light on the device, but it also works in low bandwidth connectivity over almost any type of connection and supports all firmware and hardware combinations. These design specifications ensure the Memfault platform will work within the constraints of most IoT devices, throughout the entire life of the devices.

As an example of our product being used in these ways, with Infineon products, check out our customer Latch and what challenges they solve with Memfault in this case study.

Memfault and ModusToolbox™ Setup

We’ve taken the Memfault C SDK and made it compatible as a middleware component for the ModusToolbox™ software suite and SDK. There are two options for users to get started with Memfault and ModusToolbox™: our example application or integrating with an existing ModusToolbox™ application. Here we’ll focus on experimenting with the example application in ModusToolbox™.

To get started with the example application using the Eclipse based IDE in ModusToolbox™:

  1. Click “New Application” from the Quick Panel
  2. Select your board. Note: Memfault Network Example requires a board with internet connectivity
  3. From the Networks Examples section, select Memfault Network Example. Optionally, choose a different name for the application
  4. Once ModusToolbox™ has completed initializing the application, please ensure that you have the software requirements as detailed in the README
  5. Follow the remaining instructions in the operation section of the README

Now that the example application is ready, let’s take a deeper look at what’s inside and what can be modified for your usage.

Memfault Initialization

The Memfault SDK requires a single function to be implemented for initialization, memfault_platform_boot. An implementation is automatically provided with our integration and called from the example application in main. The implementation of memfault_platform_boot does a few things:

  1. Dumps info on the build and the device to the console
  2. Hooks into FreeRTOS for tracking each task call stack and memory
  3. Initializes the storage, tracing, reboot tracking, and metrics subsystems of the Memfault SDK

Memfault Metrics

The middleware integration contains built-in metrics to measure Wi-Fi connectivity and memory allocation. These can be configured with the following defines:

  • MEMFAULT_PORT_MEMORY_TRACKING_ENABLED
  • MEMFAULT_PORT_WIFI_TRACKING_ENABLED

By default, the integration enables both.

The Wi-Fi built-in metrics include:

  • Signal Strength (RSSI)
  • Wi-Fi channel
  • Received and transmitted bytes
  • Time spent connecting
  • Time spent connected
  • Connection success counter
  • Connection failure counter
  • Reconnection counter
  • Disconnection counter

The memory allocation built-in metrics include:

  • Heap total size
  • Current free bytes
  • Minimum free bytes since boot

These metrics are collected every heartbeat interval as defined by MEMFAULT_METRICS_HEARTBEAT_INTERVAL_SECS. We recommend the default period of 1 hour, but this can be reduced for debugging/testing purposes.

Below is a screenshot of my device’s metrics over the course of several hours. You can see that I had connectivity issues at several points while my device was running (I unplugged my local router to simulate).

ericmemfault_4-1670916653051.png

Memfault Coredumps

Coredumps can be easily triggered and tested with the example ModusToolbox™ application. Included in the application is a group of CLI commands to simulate different failures for testing and learning about Memfault. Using the console exposed by your device, use one of the following commands to trigger a fault:

test_assert: Trigger memfault assert

test_busfault: Trigger a busfault

test_hardfault: Trigger a hardfault

test_memmanage: Trigger a memory management fault

test_usagefault: Trigger a usage fault

Once this data has been uploaded to Memfault, you should see a new issue created from this fault for the device:

ericmemfault_5-1670916653071.png

The coredump contains information collected by the SDK, including information about the other threads running on the device, register and local variable values, and global and static data values. For more information on coredumps and other features, see Memfault’s documentation.

Next Steps

Memfault provides other features that are outside the scope of the example application. The next step after experimenting with our example application would be to add Memfault to an existing one.

You can get started immediately through our self-serve, publicly available code and documentation. We provide 100 free devices to Infineon customers with no time limit on the platform.

For other Infineon devices, the integration is similar. Follow Memfault’s general documentation for these integrations or reach out to support@memfault.com for more help.

To learn more about Memfault on our website, here are some recommendations:

  1. Our webinars on many different topics and products
  2. More case studies on our customer page
  3. The Interrupt Blog

Looking forward to helping you improve the reliability of your devices; let us know how we can help!

0 Likes
388 Views