<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>Interrupt</title>
        <link>https://interrupt.memfault.com/</link>
        <atom:link href="https://interrupt.memfault.com/feed.xml" rel="self" type="application/rss+xml" />
        <description>A community and blog for embedded software makers</description>
        <language>en-us</language>
        <pubDate>Fri, 03 Apr 2026 19:48:05 +0000</pubDate>
        <lastBuildDate>Fri, 03 Apr 2026 19:49:47 +0000</lastBuildDate>
        
        <item>
            <title>Zephyr West tips and tricks</title>
            <link>https://interrupt.memfault.com/blog/west-tips-and-tricks</link>
            <description>
                
&lt;p&gt;The Zephyr &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;west&lt;/code&gt; tool is a powerful workspace manager, but it is admittedly
pretty feature-rich: there’s a lot of functionality buried inside that tool!&lt;/p&gt;

&lt;p&gt;I thought it would be interesting to share a few tips and tricks that I use with
&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;west&lt;/code&gt; to make my Zephyr development workflow a little smoother.&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/west-tips-and-tricks&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/west-tips-and-tricks</guid>
            <pubDate>Fri, 03 Apr 2026 19:48:05 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Noah Pendleton</atom:name>
                    <atom:uri>https://www.linkedin.com/in/noahpendleton/</atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>OTA Firmware Updates for Matter Devices via nRF Cloud</title>
            <link>https://interrupt.memfault.com/blog/matter-ota-nrfcloud</link>
            <description>
                
&lt;p&gt;This post walks through implementing OTA firmware updates on a
Matter-over-Thread device, bypassing Matter’s standard update mechanism in favor
of a direct CoAP connection to nRF Cloud. We cover the full pipeline: checking
for new versions, downloading firmware in 1024-byte blocks over CoAP, streaming
it to flash, and safely swapping images with MCUboot.&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/matter-ota-nrfcloud&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/matter-ota-nrfcloud</guid>
            <pubDate>Fri, 03 Apr 2026 19:48:05 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>François Baldassari</atom:name>
                    <atom:uri>https://twitter.com/baldassarifr</atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>The Hidden Cost of Misalignment</title>
            <link>https://interrupt.memfault.com/blog/the-hidden-cost-of-misalignment</link>
            <description>
                
&lt;p&gt;In this post, we show how to fix using the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;packed&lt;/code&gt; and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;aligned&lt;/code&gt; attributes,
and how to avoid byte-decomposition even as the struct grows in the future.&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/the-hidden-cost-of-misalignment&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/the-hidden-cost-of-misalignment</guid>
            <pubDate>Fri, 03 Apr 2026 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Chris Merck</atom:name>
                    <atom:uri></atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>Connecting Matter-over-Thread Devices to the Internet</title>
            <link>https://interrupt.memfault.com/blog/matter-internet-connectivity</link>
            <description>
                
&lt;p&gt;In this post, we look at how a Matter-over-Thread device can reach the internet
through a Thread Border Router. We will cover the key networking concepts (Thread, NAT64, and UDP) and walk through a working example that sends a UDP
message from an nRF54LM20 DK to an echo server on the public internet.&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/matter-internet-connectivity&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/matter-internet-connectivity</guid>
            <pubDate>Tue, 24 Mar 2026 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>François Baldassari</atom:name>
                    <atom:uri>https://twitter.com/baldassarifr</atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>What we&apos;ve been reading in February (2026)</title>
            <link>https://interrupt.memfault.com/blog/february-2026-roundup</link>
            <description>
                
&lt;p&gt;Here are the articles, videos, and tools that we’ve been excited about this
February.&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/february-2026-roundup&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/february-2026-roundup</guid>
            <pubDate>Fri, 06 Mar 2026 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Gillian Minnehan</atom:name>
                    <atom:uri></atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>What we&apos;ve been reading in January (2026)</title>
            <link>https://interrupt.memfault.com/blog/january-2026-roundup</link>
            <description>
                
&lt;p&gt;Hope everyone has had a great start to the year. Here are the articles, videos,
and tools that we’ve been excited about this January!&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/january-2026-roundup&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/january-2026-roundup</guid>
            <pubDate>Thu, 05 Feb 2026 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Gillian Minnehan</atom:name>
                    <atom:uri></atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>What we&apos;ve been reading in November &amp; December (2025)</title>
            <link>https://interrupt.memfault.com/blog/november-and-december-2025-roundup</link>
            <description>
                
&lt;p&gt;Here are the articles, videos, and tools that stood out to us as we wrap
up 2025.&lt;/p&gt;

&lt;p&gt;Thanks to everyone who shared articles, talks, and ideas this year, and to
everyone we met in person along the way. We’re heading into 2026 energized by
readers like you in the embedded community that keep pushing the space forward.&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/november-and-december-2025-roundup&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/november-and-december-2025-roundup</guid>
            <pubDate>Wed, 31 Dec 2025 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Gillian Minnehan</atom:name>
                    <atom:uri></atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>What we&apos;ve been reading in September &amp; October (2025)</title>
            <link>https://interrupt.memfault.com/blog/september-and-october-2025-roundup</link>
            <description>
                
&lt;p&gt;Here are the articles, videos, and tools that we’ve been excited about this
September and October.&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/september-and-october-2025-roundup&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/september-and-october-2025-roundup</guid>
            <pubDate>Wed, 05 Nov 2025 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Gillian Minnehan</atom:name>
                    <atom:uri></atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>What we&apos;ve been reading in August (2025)</title>
            <link>https://interrupt.memfault.com/blog/august-2025-roundup</link>
            <description>
                
&lt;p&gt;Here are the articles, videos, and tools that we’ve been excited about this
August.&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/august-2025-roundup&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/august-2025-roundup</guid>
            <pubDate>Fri, 05 Sep 2025 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Gillian Minnehan</atom:name>
                    <atom:uri></atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>What we&apos;ve been reading in July (2025)</title>
            <link>https://interrupt.memfault.com/blog/july-2025-roundup</link>
            <description>
                
&lt;p&gt;Here are the articles, videos, and tools that we’ve been excited about this
July.&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/july-2025-roundup&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/july-2025-roundup</guid>
            <pubDate>Fri, 08 Aug 2025 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Gillian Minnehan</atom:name>
                    <atom:uri></atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>Embedded Systems Roadmap: Bridging the Gap</title>
            <link>https://interrupt.memfault.com/blog/embedded-systems-roadmap-bridging-the-gap</link>
            <description>
                
&lt;p&gt;In this article, I’ll share the story behind creating my embedded systems
engineering roadmap, why it became necessary, the logic behind its structure,
and how to use it effectively in your learning journey.&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/embedded-systems-roadmap-bridging-the-gap&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/embedded-systems-roadmap-bridging-the-gap</guid>
            <pubDate>Fri, 25 Jul 2025 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Meysam Parvizi</atom:name>
                    <atom:uri></atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>Smart Ring Development (Part 2) － Hardware Design</title>
            <link>https://interrupt.memfault.com/blog/smart-ring-development-part-2</link>
            <description>
                
&lt;p&gt;This series of articles discusses the development of a SOTA Open Smart Ring － a
tiny wearable packed with electronics that fits on your (even the smallest)
finger. We dive deep into what it means to develop such a product, its
challenges, and ultimately, how to make it a manufacturable and usable piece.&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/smart-ring-development-part-2&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/smart-ring-development-part-2</guid>
            <pubDate>Thu, 10 Jul 2025 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Mikolaj Stawiski</atom:name>
                    <atom:uri></atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>What we&apos;ve been reading in June (2025)</title>
            <link>https://interrupt.memfault.com/blog/june-2025-roundup</link>
            <description>
                
&lt;p&gt;Here are the articles, videos, and tools that we’ve been excited about this
June.&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/june-2025-roundup&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/june-2025-roundup</guid>
            <pubDate>Thu, 03 Jul 2025 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Gillian Minnehan</atom:name>
                    <atom:uri></atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>Linux Coredumps (Part 3) － On Device Unwinding</title>
            <link>https://interrupt.memfault.com/blog/linux-coredumps-part-3</link>
            <description>
                
&lt;p&gt;In this post, we’ll go over a method of coredump collection that does the stack
unwinding on-device. This approach allows devices that may be sensitive to
leaking PII (Personally Identifiable Information) that may be stored in memory
on the stack or heap to safely collect coredumps in addition to greatly reducing
the size needed to store them.&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/linux-coredumps-part-3&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/linux-coredumps-part-3</guid>
            <pubDate>Fri, 20 Jun 2025 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Blake Hildebrand</atom:name>
                    <atom:uri></atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>Smart Ring Development  (Part 1) － Research and Prototype</title>
            <link>https://interrupt.memfault.com/blog/smart-ring-development-part-1</link>
            <description>
                
&lt;p&gt;This series of articles discusses the development of a SOTA Open Smart Ring － a
tiny wearable packed with electronics that fits on your (even the smallest)
finger. We dive deep into what it means to develop such a product, its
challenges, and ultimately, how to make it a manufacturable and usable piece.&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/smart-ring-development-part-1&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/smart-ring-development-part-1</guid>
            <pubDate>Fri, 13 Jun 2025 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Mikolaj Stawiski</atom:name>
                    <atom:uri></atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>What we&apos;ve been reading in May (2025)</title>
            <link>https://interrupt.memfault.com/blog/may-2025-roundup</link>
            <description>
                
&lt;p&gt;Here are the articles, videos, and tools that we’ve been excited about this May.&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/may-2025-roundup&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/may-2025-roundup</guid>
            <pubDate>Fri, 06 Jun 2025 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Gillian Minnehan</atom:name>
                    <atom:uri></atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>Gophyr: Building a Gopher Client for Zephyr with Claude</title>
            <link>https://interrupt.memfault.com/blog/gophyr-gopher-for-zephyr</link>
            <description>
                
&lt;p&gt;This article chronicles my unexpected 3-hour adventure using Claude to create
Gophyr: a fully functional Gopher client for Zephyr, complete with a Zephyr
shell command set.&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/gophyr-gopher-for-zephyr&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/gophyr-gopher-for-zephyr</guid>
            <pubDate>Fri, 16 May 2025 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Jon Sharp</atom:name>
                    <atom:uri></atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>What we&apos;ve been reading in April (2025)</title>
            <link>https://interrupt.memfault.com/blog/april-2025-roundup</link>
            <description>
                
&lt;p&gt;Here are the articles, videos, and tools that we’ve been excited about this
April.&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/april-2025-roundup&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/april-2025-roundup</guid>
            <pubDate>Fri, 09 May 2025 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Gillian Minnehan</atom:name>
                    <atom:uri></atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>Linux Coredumps (Part 2) － Shrinking the Core</title>
            <link>https://interrupt.memfault.com/blog/linux-coredumps-part-2</link>
            <description>
                
&lt;p&gt;In this article, we’ll take a look at what comprises a coredump, why they can be
so large, and what we can strip away to make them smaller while retaining
critical debugging information.&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/linux-coredumps-part-2&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/linux-coredumps-part-2</guid>
            <pubDate>Fri, 02 May 2025 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Blake Hildebrand</atom:name>
                    <atom:uri></atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>Beyond Error Codes - Debugging Ill-Defined Problems</title>
            <link>https://interrupt.memfault.com/blog/debugging-steps</link>
            <description>
                
&lt;p&gt;The following guide serves as a prescriptive, step-by-step way of debugging
errors that on their face appear to be intangible.&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/debugging-steps&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/debugging-steps</guid>
            <pubDate>Fri, 18 Apr 2025 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Hayden Riddiford</atom:name>
                    <atom:uri></atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>What we&apos;ve been reading in March (2025)</title>
            <link>https://interrupt.memfault.com/blog/march-2025-roundup</link>
            <description>
                
&lt;p&gt;Here are the articles, videos, and tools that we’ve been excited about this
March.&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/march-2025-roundup&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/march-2025-roundup</guid>
            <pubDate>Thu, 03 Apr 2025 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Gillian Minnehan</atom:name>
                    <atom:uri></atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>Robust OTA Updates For Linux Devices, the Easy Way</title>
            <link>https://interrupt.memfault.com/blog/robust-ota-updates-the-easy-way</link>
            <description>
                
&lt;p&gt;This guide will walk you through all the steps necessary to build a bespoke
variant of Debian with over-the-air update support, including delta updates,
integrated with Memfault. Following this guide, you will also install a full
system update via Memfault to your custom system running in a VM or on a
Raspberry Pi. To follow this guide you only need a working Docker installation
on either Linux or macOS. End-to-end this guide should take less than 30 minutes
to complete, so let’s get started.&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/robust-ota-updates-the-easy-way&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/robust-ota-updates-the-easy-way</guid>
            <pubDate>Thu, 20 Mar 2025 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Maximilian Köhl</atom:name>
                    <atom:uri>https://koehlma.de</atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>What we&apos;ve been reading in February (2025)</title>
            <link>https://interrupt.memfault.com/blog/february-2025-roundup</link>
            <description>
                
&lt;p&gt;Here are the articles, videos, and tools that we’ve been excited about this
February.&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/february-2025-roundup&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/february-2025-roundup</guid>
            <pubDate>Fri, 07 Mar 2025 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Gillian Minnehan</atom:name>
                    <atom:uri></atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>The Android Developer&apos;s Journey into Hardware Observability</title>
            <link>https://interrupt.memfault.com/blog/aosp-observability</link>
            <description>
                
&lt;p&gt;In this article, I walk through how the growth of internal observability tooling
for an AOSP device might look like, and the variety of pitfalls one might
encounter as they scale from 1s to 10s to 1000s of Android devices in the field,
based off my experience talking to AOSP developers and teams, and personally as
an Android app developer working on AOSP hardware.&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/aosp-observability&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/aosp-observability</guid>
            <pubDate>Fri, 28 Feb 2025 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Victor Lai</atom:name>
                    <atom:uri></atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>Why std::this_thread::sleep_for() is broken on ESP32</title>
            <link>https://interrupt.memfault.com/blog/why-sleep-for-is-broken-on-esp32</link>
            <description>
                
&lt;p&gt;A curious bug appearing after upgrading to IDF v5 led me into a deep dive of how
&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;std::this_thread::sleep_for()&lt;/code&gt; is implemented on the ESP32. I discuss how the
IDF implements &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;pthreads&lt;/code&gt; and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;newlib&lt;/code&gt; to provide C++ threading functionality.
The results are surprising: a simple 10 millisecond sleep was killing
performance, but only in the new version of IDF due to an interaction between
&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;libstdc++&lt;/code&gt; and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;usleep()&lt;/code&gt;.&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/why-sleep-for-is-broken-on-esp32&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/why-sleep-for-is-broken-on-esp32</guid>
            <pubDate>Thu, 20 Feb 2025 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Steve Noonan</atom:name>
                    <atom:uri></atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>Linux Coredumps (Part 1) － Introduction</title>
            <link>https://interrupt.memfault.com/blog/linux-coredumps-part-1</link>
            <description>
                
&lt;p&gt;In this article, we’ll start by taking a look at how a Linux coredump is
formatted, how you capture them, and how we use them at Memfault.&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/linux-coredumps-part-1&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/linux-coredumps-part-1</guid>
            <pubDate>Fri, 14 Feb 2025 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Blake Hildebrand</atom:name>
                    <atom:uri></atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>What we&apos;ve been reading in January (2025)</title>
            <link>https://interrupt.memfault.com/blog/january-2025-roundup</link>
            <description>
                
&lt;p&gt;We hope your year is off to a great start! January has been an exciting month
for Interrupt — we launched Interrupt Live, a new series where our co-founder
and host, Tyler Hoffman, sits down with Interrupt contributors to share their
insights and stories. We’d love for you to tune in — see
&lt;a href=&quot;https://interrupt.memfault.com/blog/interrupt-live&quot;&gt;&lt;strong&gt;more details here&lt;/strong&gt;&lt;/a&gt;!&lt;/p&gt;

&lt;p&gt;Here are the articles, videos, and tools that we’ve been excited about this
January.&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/january-2025-roundup&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/january-2025-roundup</guid>
            <pubDate>Thu, 06 Feb 2025 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Gillian Minnehan</atom:name>
                    <atom:uri></atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>Monitoring a Low-Power Wireless Network Based on Smart Mesh IP</title>
            <link>https://interrupt.memfault.com/blog/monitoring-smart-mesh-network</link>
            <description>
                
&lt;p&gt;This blog post provides a practical tutorial demonstrating a simple APM solution
for low-power devices. The solution leverages Zephyr RTOS on an nRF52, and
SmartMesh IP on an Analog LTC5800 which can accommodate an arbitrary number of
wireless motes. The motes can send a set of performance metrics at certain
heartbeat intervals via a framework provided by Memfault. The framework is
scalable and allows the creation of a customized group of metrics.&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/monitoring-smart-mesh-network&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/monitoring-smart-mesh-network</guid>
            <pubDate>Wed, 29 Jan 2025 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Fabian Graf</atom:name>
                    <atom:uri></atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>Introducing Interrupt Live － Meet the Minds Behind Interrupt</title>
            <link>https://interrupt.memfault.com/blog/interrupt-live</link>
            <description>
                
&lt;p&gt;After nearly seven years of Interrupt contributions, we’ve decided to take this
conversation to the next level. Introducing Interrupt Live: a YouTube Live
series where we sit down with Interrupters to hear more about their origin
stories, engineering journeys, and the unique challenges that inspired their
contributions. If you’ve ever wanted to hear directly from the engineers behind
your favorite Interrupt posts, now’s your chance.&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/interrupt-live&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/interrupt-live</guid>
            <pubDate>Fri, 24 Jan 2025 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Gillian Minnehan</atom:name>
                    <atom:uri></atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>What we&apos;ve been reading in December (2024)</title>
            <link>https://interrupt.memfault.com/blog/december-2024-roundup</link>
            <description>
                
&lt;p&gt;🎆 Happy New Year! 🎆 Here’s to making 2025 the best year yet. 2024 was an
exciting year for Interrupt with 39 new articles, 6 new external contributors,
and 576 new subscribers. Thanks for being a part of it!&lt;/p&gt;

&lt;p&gt;Here are the articles, videos, and tools that we’ve been excited about this
December.&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/december-2024-roundup&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/december-2024-roundup</guid>
            <pubDate>Fri, 03 Jan 2025 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Gillian Minnehan</atom:name>
                    <atom:uri></atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>WSL2 for Firmware Development</title>
            <link>https://interrupt.memfault.com/blog/wsl2-for-firmware-development</link>
            <description>
                
&lt;p&gt;This guide provides instructions for setting up an environment for developing,
debugging, and programming embedded systems firmware in the Windows Subsystem
for Linux (WSL2).&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/wsl2-for-firmware-development&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/wsl2-for-firmware-development</guid>
            <pubDate>Wed, 18 Dec 2024 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>JP Hutchins</atom:name>
                    <atom:uri></atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>How to Transition from nRF5 SDK to Zephyr NCS － Lessons from Ultrahuman’s Journey</title>
            <link>https://interrupt.memfault.com/blog/upgrading-from-nrf5-sdk-to-ncs</link>
            <description>
                
&lt;p&gt;In this article, we’ll walk you through our journey, the challenges we faced,
and how this migration is shaping a better future for those who rely on our
technology to improve their health and fitness.&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/upgrading-from-nrf5-sdk-to-ncs&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/upgrading-from-nrf5-sdk-to-ncs</guid>
            <pubDate>Wed, 11 Dec 2024 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Gaurav Singh</atom:name>
                    <atom:uri></atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>What we&apos;ve been reading in November (2024)</title>
            <link>https://interrupt.memfault.com/blog/november-2024-roundup</link>
            <description>
                
&lt;p&gt;Here are the articles, videos, and tools that we’ve been excited about this
November.&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/november-2024-roundup&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/november-2024-roundup</guid>
            <pubDate>Wed, 04 Dec 2024 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Gillian Minnehan</atom:name>
                    <atom:uri></atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>Sequential-storage － Efficiently Store Data in Flash</title>
            <link>https://interrupt.memfault.com/blog/sequential-storage-crate</link>
            <description>
                
&lt;p&gt;While using a full-blown filesystem for storing your data in non-volatile memory
is common practice, those filesystems are often too big, not to mention annoying
to use, for the things I want to do. My solution? I’ve been hard at work
creating the
&lt;a href=&quot;https://crates.io/crates/sequential-storage&quot;&gt;sequential-storage crate&lt;/a&gt;. In this
blog post I’d like to go over what it is, why I created it and what it does.&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/sequential-storage-crate&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/sequential-storage-crate</guid>
            <pubDate>Thu, 14 Nov 2024 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Dion Dokter</atom:name>
                    <atom:uri>https://tweedegolf.nl/en/about/23/dion</atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>What we&apos;ve been reading in October (2024)</title>
            <link>https://interrupt.memfault.com/blog/october-2024-roundup</link>
            <description>
                
&lt;p&gt;Here are the articles, videos, and tools that we’ve been excited about this
October.&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/october-2024-roundup&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/october-2024-roundup</guid>
            <pubDate>Thu, 07 Nov 2024 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Gillian Minnehan</atom:name>
                    <atom:uri></atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>Publishing the Memfault SDK as an ESP-IDF Component</title>
            <link>https://interrupt.memfault.com/blog/memfault-esp-component</link>
            <description>
                
&lt;p&gt;In this very Memfault-centric post, I’ll be talking about how we shipped our SDK
as an ESP-IDF component. This is a continuation of our efforts to make it easier
to integrate Memfault into your projects, specifically targeting ESP32-based
projects.&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/memfault-esp-component&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/memfault-esp-component</guid>
            <pubDate>Thu, 24 Oct 2024 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Noah Pendleton</atom:name>
                    <atom:uri>https://www.linkedin.com/in/noahpendleton/</atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>Embedded World North America 2024 Recap</title>
            <link>https://interrupt.memfault.com/blog/embedded-world-na-2024</link>
            <description>
                
&lt;p&gt;In this post, we will cover what we learned from the first Embedded World North
America. Our team had the chance to meet with some IoT device makers and
understand what is top of mind for them.&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/embedded-world-na-2024&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/embedded-world-na-2024</guid>
            <pubDate>Thu, 17 Oct 2024 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Gillian Minnehan</atom:name>
                    <atom:uri></atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>Comparing Firmware Development Environments — Linux, Windows, WSL2, and VMWare</title>
            <link>https://interrupt.memfault.com/blog/comparing-fw-dev-envs</link>
            <description>
                
&lt;p&gt;About a year and a half ago, I decided to take a different approach to setting
up a Zephyr environment for a new project at
&lt;a href=&quot;https://www.intercreate.io/&quot;&gt;Intercreate&lt;/a&gt;. Instead of using my trusty VMWare
Workstation Linux VM, I opted for WSL2. I was curious to find out: Would
hardware pass-through for debugging work reliably? Would all of the tooling
dependencies be supported? What about build system performance?&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/comparing-fw-dev-envs&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/comparing-fw-dev-envs</guid>
            <pubDate>Thu, 10 Oct 2024 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>JP Hutchins</atom:name>
                    <atom:uri></atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>What we&apos;ve been reading in September (2024)</title>
            <link>https://interrupt.memfault.com/blog/september-2024-roundup</link>
            <description>
                
&lt;p&gt;Here are the articles, videos, and tools that we’ve been excited about this
September.&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/september-2024-roundup&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/september-2024-roundup</guid>
            <pubDate>Thu, 03 Oct 2024 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Gillian Minnehan</atom:name>
                    <atom:uri></atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>What we&apos;ve been reading in August (2024)</title>
            <link>https://interrupt.memfault.com/blog/august-roundup</link>
            <description>
                
&lt;p&gt;Here are the articles, videos, and tools that we’ve been excited about this
August.&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/august-roundup&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/august-roundup</guid>
            <pubDate>Wed, 04 Sep 2024 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Gillian Minnehan</atom:name>
                    <atom:uri></atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>How Memory Usage Patterns Can Derail Real-time Performance</title>
            <link>https://interrupt.memfault.com/blog/memory-debugging</link>
            <description>
                
&lt;p&gt;In this article, we will learn how memory usage patterns can affect the
real-time performance of an embedded application, drawing from a recent
experience tracing an audio DSP application running on an embedded Linux
platform. First, I will introduce the product in question and the real-time
audio software I developed for it. Then, I’ll describe the issues I encountered
with audio callbacks and the strategy I followed to determine the cause of the
issues, ending with my solution and lessons learned.&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/memory-debugging&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/memory-debugging</guid>
            <pubDate>Thu, 29 Aug 2024 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Bert Schiettecatte</atom:name>
                    <atom:uri>http://www.bertschiettecatte.com/</atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>Diving into JTAG — Security (Part 6)</title>
            <link>https://interrupt.memfault.com/blog/diving-into-jtag-part-6</link>
            <description>
                
&lt;p&gt;The JTAG interface is an important tool for debugging and testing embedded
systems, providing low-level access to the internal workings of microcontrollers
and other integrated circuits. However, this powerful interface also presents
significant security threats. In the sixth and final part of this Diving into
JTAG article series, we will focus on security issues related to JTAG and the
Debug Port.&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/diving-into-jtag-part-6&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/diving-into-jtag-part-6</guid>
            <pubDate>Wed, 14 Aug 2024 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Aliaksandr Kavalchuk</atom:name>
                    <atom:uri>https://medium.com/@aliaksandr.kavalchuk</atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>What we&apos;ve been reading in July (2024)</title>
            <link>https://interrupt.memfault.com/blog/july-2024-roundup</link>
            <description>
                
&lt;p&gt;Here are the articles, videos, and tools that we’ve been excited about this
July.&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/july-2024-roundup&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/july-2024-roundup</guid>
            <pubDate>Thu, 08 Aug 2024 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Gillian Minnehan</atom:name>
                    <atom:uri></atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>GitHub Actions for STM32CubeIDE</title>
            <link>https://interrupt.memfault.com/blog/github-actions-for-stm32cubeide</link>
            <description>
                
&lt;p&gt;In this article, we will explore how to use GitHub Actions to automate building
STM32CubeIDE projects. Eclipse-based IDEs like STM32CubeIDE are often used for
developing embedded systems but can be a little tricky to build in a headless
environment.&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/github-actions-for-stm32cubeide&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/github-actions-for-stm32cubeide</guid>
            <pubDate>Thu, 01 Aug 2024 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Noah Pendleton</atom:name>
                    <atom:uri>https://www.linkedin.com/in/noahpendleton/</atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>Considerations when Building Embedded Databases</title>
            <link>https://interrupt.memfault.com/blog/choosing-or-building-an-embedded-db</link>
            <description>
                
&lt;p&gt;Persisting to flash is a necessary evil for many embedded devices. Let’s take a
look at some of the pitfalls and how they may be avoided.&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/choosing-or-building-an-embedded-db&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/choosing-or-building-an-embedded-db</guid>
            <pubDate>Wed, 24 Jul 2024 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Chris Merck</atom:name>
                    <atom:uri></atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>A Schematic Review Checklist for Firmware Engineers</title>
            <link>https://interrupt.memfault.com/blog/schematic-review-checklist</link>
            <description>
                
&lt;p&gt;Schematic reviews are a part of the hardware development cycle in many if not
most, hardware development companies. Typically led by the electrical
engineering team, it is easy to overlook design issues that will be important to
the firmware team. This post tells of a few stories of design misses that I have
made and puts some common lessons learned into a checklist for other firmware
engineers. It is not meant to be an exhaustive list, but rather a starting point
for a firmware engineer to build their own checklist with the goal of helping
teams catch software/hardware interaction bugs earlier in the design cycle when
they’re cheaper to fix.&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/schematic-review-checklist&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/schematic-review-checklist</guid>
            <pubDate>Thu, 18 Jul 2024 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Mark Schulte</atom:name>
                    <atom:uri></atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>What we&apos;ve been reading in June (2024)</title>
            <link>https://interrupt.memfault.com/blog/june-2024-roundup</link>
            <description>
                
&lt;p&gt;Here are the articles, videos, and tools that we’ve been excited about this June.&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/june-2024-roundup&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/june-2024-roundup</guid>
            <pubDate>Thu, 11 Jul 2024 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Tyler Hoffman</atom:name>
                    <atom:uri>https://www.linkedin.com/in/tyhoff/</atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>Updating NVIDIA Jetson devices with Memfault OTA</title>
            <link>https://interrupt.memfault.com/blog/updating-nvidia-jetson-with-memfault</link>
            <description>
                
&lt;p&gt;NVIDIA offers one of the most comprehensive SDKs for developers of AI-heavy products. It includes a development kit that can emulate other devices in the lineup (Jetson AGX Orin DK), a simpler development kit for “entry-level” products (Jetson Orin Nano DK), a ton of exciting software libraries, AI models and even more examples of how to use them. It’s truly outstanding and out of the box shows up as a Ubuntu workstation which will feel very familiar.&lt;/p&gt;

&lt;p&gt;However, it can be a bit daunting to figure out how to take this workstation experience and turn it into a headless unit that you can ship to customers far away and update remotely.&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/updating-nvidia-jetson-with-memfault&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/updating-nvidia-jetson-with-memfault</guid>
            <pubDate>Wed, 26 Jun 2024 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Thomas Sarlandie</atom:name>
                    <atom:uri></atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>Diving into JTAG — Usage Scenarios (Part 5)</title>
            <link>https://interrupt.memfault.com/blog/diving-into-jtag-part-5</link>
            <description>
                
&lt;p&gt;In previous articles, we have considered the primary uses of JTAG, including
debugging and testing boards in production. For firmware developers, the first -
debugging - is the most common. In this article, I want to look at two uses of
JTAG Boundary Scan, which are also common tasks for a firmware developer: board
bring-up and reverse engineering.&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/diving-into-jtag-part-5&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/diving-into-jtag-part-5</guid>
            <pubDate>Wed, 12 Jun 2024 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Aliaksandr Kavalchuk</atom:name>
                    <atom:uri>https://medium.com/@aliaksandr.kavalchuk</atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>What we&apos;ve been reading in May (2024)</title>
            <link>https://interrupt.memfault.com/blog/may-2024-roundup</link>
            <description>
                
&lt;p&gt;Here are the articles, videos, and tools that we’ve been excited about this May.&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/may-2024-roundup&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/may-2024-roundup</guid>
            <pubDate>Wed, 05 Jun 2024 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Tyler Hoffman</atom:name>
                    <atom:uri>https://www.linkedin.com/in/tyhoff/</atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>Practical Zephyr - West workspaces (Part 6)</title>
            <link>https://interrupt.memfault.com/blog/practical_zephyr_west</link>
            <description>
                
&lt;p&gt;In the previous articles, we used &lt;em&gt;freestanding&lt;/em&gt; applications and relied on a global Zephyr installation. In this article, we’ll see how we can use &lt;em&gt;West&lt;/em&gt; to resolve global dependencies by using &lt;em&gt;workspace&lt;/em&gt; applications. We first explore &lt;em&gt;West&lt;/em&gt; without even including &lt;em&gt;Zephyr&lt;/em&gt; and then recreate the modified &lt;strong&gt;Blinky&lt;/strong&gt; application from the previous article in a &lt;em&gt;West workspace&lt;/em&gt;.&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/practical_zephyr_west&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/practical_zephyr_west</guid>
            <pubDate>Thu, 16 May 2024 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Martin Lampacher</atom:name>
                    <atom:uri></atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>Embedded Open Source Summit 2024 Recap</title>
            <link>https://interrupt.memfault.com/blog/eoss-recap</link>
            <description>
                
&lt;p&gt;We cover the talks I was able to see in person, as well as some talks seen by
my colleagues since they were posted. Obviously this is just our little biased
selection, we have not been able to see everything, let us know in the comments
what we missed!&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/eoss-recap&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/eoss-recap</guid>
            <pubDate>Wed, 08 May 2024 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Thomas Sarlandie</atom:name>
                    <atom:uri></atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>What we&apos;ve been reading in April (2024)</title>
            <link>https://interrupt.memfault.com/blog/april-2024-roundup</link>
            <description>
                
&lt;p&gt;Here are the articles, videos, and tools that we’ve been excited about this
April.&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/april-2024-roundup&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/april-2024-roundup</guid>
            <pubDate>Wed, 01 May 2024 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Tyler Hoffman</atom:name>
                    <atom:uri>https://www.linkedin.com/in/tyhoff/</atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>Standout Exhibits at Embedded World 2024</title>
            <link>https://interrupt.memfault.com/blog/embedded-world-2024</link>
            <description>
                
&lt;p&gt;In this post, I will share the technologies I saw at Embedded World 2024 that I
was most impressed by. I was lucky to have plenty of time to walk from booth to
booth, and had some fantastic conversations that I hope you will find
interesting.&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/embedded-world-2024&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/embedded-world-2024</guid>
            <pubDate>Thu, 25 Apr 2024 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>François Baldassari</atom:name>
                    <atom:uri>https://twitter.com/baldassarifr</atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>Practical Zephyr - Devicetree practice (Part 5)</title>
            <link>https://interrupt.memfault.com/blog/practical_zephyr_05_dt_practice</link>
            <description>
                
&lt;p&gt;In the previous articles, we covered &lt;em&gt;Devicetree&lt;/em&gt; in great detail: We’ve seen how we can create our own nodes, we’ve seen the supported property types, we know what bindings are, and we’ve seen how to access the Devicetree using Zephyr’s &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;devicetree.h&lt;/code&gt; API. In this fifth article of the &lt;em&gt;Practical Zephyr&lt;/em&gt; series, we’ll look at how Devicetree is used in &lt;em&gt;practice&lt;/em&gt; by dissecting the &lt;em&gt;Blinky&lt;/em&gt; application.&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/practical_zephyr_05_dt_practice&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/practical_zephyr_05_dt_practice</guid>
            <pubDate>Wed, 17 Apr 2024 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Martin Lampacher</atom:name>
                    <atom:uri></atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>What we&apos;ve been reading in March (2024)</title>
            <link>https://interrupt.memfault.com/blog/march-2024-roundup</link>
            <description>
                
&lt;p&gt;Here are the articles, videos, and tools that we’ve been excited about this
March.&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/march-2024-roundup&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/march-2024-roundup</guid>
            <pubDate>Thu, 04 Apr 2024 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Tyler Hoffman</atom:name>
                    <atom:uri>https://www.linkedin.com/in/tyhoff/</atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>Diving into JTAG — BSDL (Part 4)</title>
            <link>https://interrupt.memfault.com/blog/diving-into-jtag-part-4</link>
            <description>
                
&lt;p&gt;In the previous article of this series, we briefly touched on how &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;.bsd&lt;/code&gt; files
written in Boundary Scan Description Language (BSDL) describe the structure of
the boundary scan chain and the instruction set. In this article, we will
examine this language’s syntax more closely before seeing how &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;.bsd&lt;/code&gt; files are leveraged
in JTAG testing in the next article.&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/diving-into-jtag-part-4&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/diving-into-jtag-part-4</guid>
            <pubDate>Fri, 29 Mar 2024 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Aliaksandr Kavalchuk</atom:name>
                    <atom:uri>https://medium.com/@aliaksandr.kavalchuk</atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>Diving into JTAG — Boundary Scan (Part 3)</title>
            <link>https://interrupt.memfault.com/blog/diving-into-jtag-part-3</link>
            <description>
                
&lt;p&gt;In the third installment of this JTAG deep dive series, we will talk in-depth
about JTAG Boundary-Scan, a method used to test interconnects on PCBs and
internal IC sub-blocks. It is defined in the IEEE 1149.1 standard. I recommend
reading &lt;a href=&quot;https://interrupt.memfault.com/blog/diving-into-jtag-part1&quot;&gt;Part 1&lt;/a&gt; &amp;amp;
&lt;a href=&quot;https://interrupt.memfault.com/blog/diving-into-jtag-part-2&quot;&gt;Part 2&lt;/a&gt; of the
series to get a good background on debugging with JTAG before jumping into this
one!&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/diving-into-jtag-part-3&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/diving-into-jtag-part-3</guid>
            <pubDate>Fri, 22 Mar 2024 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Aliaksandr Kavalchuk</atom:name>
                    <atom:uri>https://medium.com/@aliaksandr.kavalchuk</atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>Differences Between ELF-32 and ELF-64</title>
            <link>https://interrupt.memfault.com/blog/elf-format-differences</link>
            <description>
                
&lt;p&gt;The ELF object file format is one of the most commonly used today. Most build
systems provide an output to this format, and ELF is commonly used to output
coredumps. The format varies in subtle ways for 32-bit and 64-bit targets
though, which can present problems for tools supporting both. This post will
highlight the main differences and is intended as a quick reference for these
differences.&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/elf-format-differences&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/elf-format-differences</guid>
            <pubDate>Wed, 13 Mar 2024 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Eric Johnson</atom:name>
                    <atom:uri>https://www.linkedin.com/in/ejohnso49</atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>What we&apos;ve been reading in February (2024)</title>
            <link>https://interrupt.memfault.com/blog/february-2024-roundup</link>
            <description>
                
&lt;p&gt;Here are the articles, videos, and tools that we’ve been excited about this
February.&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/february-2024-roundup&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/february-2024-roundup</guid>
            <pubDate>Thu, 07 Mar 2024 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Tyler Hoffman</atom:name>
                    <atom:uri>https://www.linkedin.com/in/tyhoff/</atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>Diving into JTAG — Debugging (Part 2)</title>
            <link>https://interrupt.memfault.com/blog/diving-into-jtag-part-2</link>
            <description>
                
&lt;p&gt;In this second part of a JTAG deep-dive series, we take an in-depth look at interacting with a microcontroller’s memory and engaging with the processor core and debug registers. While the use of JTAG in testing is fairly standardized when it comes to debugging, each processor architecture has its unique nuances. With that in mind, this article will focus on debugging using JTAG on the ARM Cortex-M architecture, specifically with the STM32F407VG microcontroller.&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/diving-into-jtag-part-2&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/diving-into-jtag-part-2</guid>
            <pubDate>Thu, 29 Feb 2024 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Aliaksandr Kavalchuk</atom:name>
                    <atom:uri>https://medium.com/@aliaksandr.kavalchuk</atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>Best Practices for Monitoring Device Connectivity</title>
            <link>https://interrupt.memfault.com/blog/connectivity-metrics</link>
            <description>
                
&lt;p&gt;This post will cover why device connectivity is complex and what methods we have available to diagnose and solve connectivity problems, both in the office and remotely in production. The tool at the core of our strategy is metrics, but we’ll briefly survey other tools like logging and protocol analysis. We’ll look in-depth at the utility of metrics and wrap up with some practical metric examples to use in your device.&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/connectivity-metrics&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/connectivity-metrics</guid>
            <pubDate>Thu, 22 Feb 2024 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Eric Johnson</atom:name>
                    <atom:uri>https://www.linkedin.com/in/ejohnso49</atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>Practical Zephyr - Devicetree semantics (Part 4)</title>
            <link>https://interrupt.memfault.com/blog/practical_zephyr_dt_semantics</link>
            <description>
                
&lt;p&gt;Having covered the &lt;em&gt;Devicetree basics&lt;/em&gt; in the &lt;a href=&quot;/blog/practical_zephyr_dt&quot;&gt;previous article&lt;/a&gt;, we now add &lt;strong&gt;semantics&lt;/strong&gt; to our &lt;em&gt;Devicetree&lt;/em&gt; using so-called &lt;em&gt;bindings&lt;/em&gt;: For each supported type, we’ll create a corresponding &lt;em&gt;binding&lt;/em&gt; and look at the generated output to understand how it can be used with Zephyr’s Devicetree API.&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/practical_zephyr_dt_semantics&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/practical_zephyr_dt_semantics</guid>
            <pubDate>Thu, 15 Feb 2024 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Martin Lampacher</atom:name>
                    <atom:uri></atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>What we&apos;ve been reading in January (2024)</title>
            <link>https://interrupt.memfault.com/blog/january-2024-roundup</link>
            <description>
                
&lt;p&gt;Here are the articles, videos, and tools that we’ve been excited about this
January.&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/january-2024-roundup&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/january-2024-roundup</guid>
            <pubDate>Wed, 07 Feb 2024 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Tyler Hoffman</atom:name>
                    <atom:uri>https://www.linkedin.com/in/tyhoff/</atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>Practical Zephyr - Devicetree basics (Part 3)</title>
            <link>https://interrupt.memfault.com/blog/practical_zephyr_dt</link>
            <description>
                
&lt;p&gt;In this third article of the “Practical Zephyr” series, we’ll see how we configure and use &lt;em&gt;hardware&lt;/em&gt;. For this, Zephyr borrows another tool from the Linux kernel: &lt;a href=&quot;https://docs.zephyrproject.org/latest/build/dts/index.html&quot;&gt;&lt;strong&gt;Devicetree&lt;/strong&gt;&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;In contrast to &lt;em&gt;Kconfig&lt;/em&gt;, the &lt;em&gt;Devicetree&lt;/em&gt; syntax and its use are more intricate. Therefore, we’ll cover &lt;em&gt;Devicetree&lt;/em&gt; in two articles. In this article, we’ll see what Devicetree is and how we can write our own Devicetree source files. In the next article, we’ll look at so-called Devicetree &lt;em&gt;bindings&lt;/em&gt;, which add semantics to our Devicetree. Be prepared for a fair bit of theory, but as usual, we’ll use an example project to follow along.&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/practical_zephyr_dt&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/practical_zephyr_dt</guid>
            <pubDate>Thu, 01 Feb 2024 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Martin Lampacher</atom:name>
                    <atom:uri></atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>Practical Zephyr - Kconfig (Part 2)</title>
            <link>https://interrupt.memfault.com/blog/practical_zephyr_kconfig</link>
            <description>
                
&lt;p&gt;In this second article of the “Practical Zephyr” series, we’ll explore the &lt;a href=&quot;https://docs.zephyrproject.org/latest/build/kconfig/index.html#configuration-system-kconfig&quot;&gt;kernel configuration system Kconfig&lt;/a&gt; by looking at the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;printk&lt;/code&gt; logging option in Zephyr. We won’t explore the logging service as such in detail but instead use it as an excuse to dive deep into &lt;a href=&quot;https://docs.zephyrproject.org/latest/build/kconfig/index.html#configuration-system-kconfig&quot;&gt;Kconfig&lt;/a&gt;. Finally, we’ll create our own little application-specific &lt;em&gt;Kconfig&lt;/em&gt; configuration.&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/practical_zephyr_kconfig&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/practical_zephyr_kconfig</guid>
            <pubDate>Wed, 24 Jan 2024 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Martin Lampacher</atom:name>
                    <atom:uri></atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>Building Nordic nRF-Connect SDK Projects with GitHub Actions</title>
            <link>https://interrupt.memfault.com/blog/ncs-github-actions</link>
            <description>
                
&lt;p&gt;Recently we ran through a re-vamp of our CI builds targeting the Nordic
nRF-Connect SDK, and I wanted to share some of the things we learned along the
way! This article walks through setting up a GitHub Actions workflow for
building nRF-Connect SDK projects.&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/ncs-github-actions&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/ncs-github-actions</guid>
            <pubDate>Thu, 18 Jan 2024 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Noah Pendleton</atom:name>
                    <atom:uri>https://www.linkedin.com/in/noahpendleton/</atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>Practical Zephyr - Zephyr Basics (Part 1)</title>
            <link>https://interrupt.memfault.com/blog/practical_zephyr_basics</link>
            <description>
                
&lt;p&gt;If you’re working a full-time job and would still like to get started with Zephyr but don’t have the energy to set up your environment to dive deeper into the docs, this article series will guide you through the &lt;strong&gt;Zephyr basics&lt;/strong&gt;. Of course, you’ll learn most if you follow along with programming, but all code, including snippets of generated code and build logs, are included in the articles of this series. Thus, even just reading this series should give you a good idea about how Zephyr works.&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/practical_zephyr_basics&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/practical_zephyr_basics</guid>
            <pubDate>Wed, 10 Jan 2024 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Martin Lampacher</atom:name>
                    <atom:uri></atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>What we&apos;ve been reading in December (2023)</title>
            <link>https://interrupt.memfault.com/blog/december-2023-roundup</link>
            <description>
                
&lt;p&gt;🎉 Happy New Year! 🎉 Here’s to making 2024 the best year yet.&lt;/p&gt;

&lt;p&gt;2023 was an exciting year for Interrupt, with 36 new articles, 13 new external contributors, 12 community Meetups, and a partridge in a pear tree. Thanks for being a part of it.&lt;/p&gt;

&lt;p&gt;Here are the articles, videos, and tools that we’ve been excited about this
December.&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/december-2023-roundup&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/december-2023-roundup</guid>
            <pubDate>Thu, 04 Jan 2024 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Tyler Hoffman</atom:name>
                    <atom:uri>https://www.linkedin.com/in/tyhoff/</atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>Logging on Embedded Devices</title>
            <link>https://interrupt.memfault.com/blog/device-logging</link>
            <description>
                
&lt;p&gt;In this article, I discuss some of the problems I’ve encountered in producing and analyzing device logs over the years, on single digit number of devices up to hundreds of thousands, and concepts I’ve applied to manage that complexity. My background is in Android development, so some of the examples may skew towards much more powerful hardware than simple microcontrollers.&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/device-logging&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/device-logging</guid>
            <pubDate>Wed, 20 Dec 2023 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Victor Lai</atom:name>
                    <atom:uri></atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>LTE and IoT - How We Got Here</title>
            <link>https://interrupt.memfault.com/blog/lte-and-iot</link>
            <description>
                
&lt;p&gt;In this article, I describe some of my findings from a recent investigation of how LTE technology was built for IoT systems. Complete with some history
and a few diagrams to illustrate cellular network architecture and LTE power-saving features like eDRX and PSM, this read will give a nice introduction to LTE in embedded systems.&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/lte-and-iot&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/lte-and-iot</guid>
            <pubDate>Wed, 13 Dec 2023 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Gillian Minnehan</atom:name>
                    <atom:uri></atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>What we&apos;ve been reading in November (2023)</title>
            <link>https://interrupt.memfault.com/blog/november-2023-roundup</link>
            <description>
                
&lt;p&gt;Here are the articles, videos, and tools that we’ve been excited about this
November.&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/november-2023-roundup&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/november-2023-roundup</guid>
            <pubDate>Wed, 06 Dec 2023 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Tyler Hoffman</atom:name>
                    <atom:uri>https://www.linkedin.com/in/tyhoff/</atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>Diving into JTAG - Overview (Part 1)</title>
            <link>https://interrupt.memfault.com/blog/diving-into-jtag-part1</link>
            <description>
                
&lt;p&gt;As the first segment of a three-part series on JTAG, this post will give
an overview of JTAG to set up some more in-depth discussions on debugging and JTAG Boundary-Scan. We will dive into the intricacies of the interface, such as the Test Access Port (TAP), key registers, instructions, and JTAG’s finite state machine.&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/diving-into-jtag-part1&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/diving-into-jtag-part1</guid>
            <pubDate>Wed, 29 Nov 2023 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Aliaksandr Kavalchuk</atom:name>
                    <atom:uri>https://medium.com/@aliaksandr.kavalchuk</atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>Visualizing Real-time Data With STMViewer</title>
            <link>https://interrupt.memfault.com/blog/stm-viewer-debug</link>
            <description>
                
&lt;p&gt;If you’ve ever wanted to plot data acquired on your embedded target, this article is for you. It explores common use cases for real-time data visualization using STMViewer. Say goodbye to manual, time-consuming, and error-prone data collection and display methods to speed up your debugging process.&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/stm-viewer-debug&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/stm-viewer-debug</guid>
            <pubDate>Wed, 15 Nov 2023 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Piotr Wasilewski</atom:name>
                    <atom:uri>https://pwwprojects.blogspot.com</atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>Counting Crashes to Improve Device Reliability</title>
            <link>https://interrupt.memfault.com/blog/device-reliability-metrics</link>
            <description>
                
&lt;p&gt;This post will cover the most common reliability metrics that hardware manufacturers use. It will explore which are best for IoT devices, including a novel measurement, Crash Free Hours. We’ll cover exactly what you’ll need to collect on your devices within firmware to measure device reliability and ensure your devices are working as expected.&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/device-reliability-metrics&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/device-reliability-metrics</guid>
            <pubDate>Wed, 08 Nov 2023 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Tyler Hoffman</atom:name>
                    <atom:uri>https://www.linkedin.com/in/tyhoff/</atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>What we&apos;ve been reading in October (2023)</title>
            <link>https://interrupt.memfault.com/blog/october-2023-roundup</link>
            <description>
                
&lt;p&gt;Here are the articles, videos, and tools that we’ve been excited about this
October.&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/october-2023-roundup&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/october-2023-roundup</guid>
            <pubDate>Wed, 01 Nov 2023 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Tyler Hoffman</atom:name>
                    <atom:uri>https://www.linkedin.com/in/tyhoff/</atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>Rust on Yocto: A Seamless Integration</title>
            <link>https://interrupt.memfault.com/blog/rust-in-yocto</link>
            <description>
                
&lt;p&gt;At Memfault, our love affair with Rust began in late 2022. What drew us to Rust? Well, the typical allure of a modern programming language: an impressive type-system, memory safety without the constant jitters, efficient concurrency management, a thriving package ecosystem, and overwhelming support from our engineering team. To put it simply, we’re smitten. Our journey with Rust has been nothing short of transformative, enabling rapid progress and leading us to conquer challenges we previously deemed … non-trivial.&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/rust-in-yocto&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/rust-in-yocto</guid>
            <pubDate>Wed, 18 Oct 2023 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Thomas Sarlandie</atom:name>
                    <atom:uri></atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>MCU Peripheral Forwarding</title>
            <link>https://interrupt.memfault.com/blog/mcu-peripheral-forwarding</link>
            <description>
                
&lt;p&gt;PC applications that interact with MCUs are used by developers for a number of reasons, such as data visualization, monitoring during testing campaigns, and command and control via a GUI. In this article, we’ll explore mapping an MCU’s peripherals to your personal computer to simplify development of PC applications built for embedded systems.&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/mcu-peripheral-forwarding&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/mcu-peripheral-forwarding</guid>
            <pubDate>Wed, 11 Oct 2023 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Evgeny Chormonov</atom:name>
                    <atom:uri>https://ser-mk.github.io/</atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>What we&apos;ve been reading in September (2023)</title>
            <link>https://interrupt.memfault.com/blog/sep-2023-roundup</link>
            <description>
                
&lt;p&gt;Here are the articles, videos, and tools that we’ve been excited about this
September.&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/sep-2023-roundup&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/sep-2023-roundup</guid>
            <pubDate>Wed, 04 Oct 2023 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Tyler Hoffman</atom:name>
                    <atom:uri>https://www.linkedin.com/in/tyhoff/</atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>Exploring printf on Cortex-M</title>
            <link>https://interrupt.memfault.com/blog/printf-on-embedded</link>
            <description>
                
&lt;p&gt;The C &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;printf&lt;/code&gt; function is a staple of embedded development. It’s a simple way
to get logs or debug statements off the system and into a terminal on the host.
This article explores the various ways to get &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;printf&lt;/code&gt; on Cortex-M
microcontrollers.&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/printf-on-embedded&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/printf-on-embedded</guid>
            <pubDate>Wed, 20 Sep 2023 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Noah Pendleton</atom:name>
                    <atom:uri>https://www.linkedin.com/in/noahpendleton/</atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>A Simple Scheduler via an Interrupt-driven Actor Model</title>
            <link>https://interrupt.memfault.com/blog/hardware-actor-scheduler</link>
            <description>
                
&lt;p&gt;In this article, we’ll weigh the benefits of using the Cortex-M interrupt model as a scheduler and go over a simple implementation of this concept.&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/hardware-actor-scheduler&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/hardware-actor-scheduler</guid>
            <pubDate>Wed, 13 Sep 2023 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Raman Filipau</atom:name>
                    <atom:uri></atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>What we&apos;ve been reading in August (2023)</title>
            <link>https://interrupt.memfault.com/blog/july-2023-roundup</link>
            <description>
                
&lt;p&gt;Here are the articles, videos, and tools that we’ve been excited about this
August.&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/july-2023-roundup&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/july-2023-roundup</guid>
            <pubDate>Wed, 06 Sep 2023 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Tyler Hoffman</atom:name>
                    <atom:uri>https://www.linkedin.com/in/tyhoff/</atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>Integrating Memfault With AWS IoT Core and ExpressLink</title>
            <link>https://interrupt.memfault.com/blog/memfault-aws-iot-expresslink</link>
            <description>
                
&lt;p&gt;To ensure the reliability and stability of IoT applications, effective
debugging and error monitoring are crucial. Memfault comes to the rescue
with its comprehensive set of tools for remote debugging, crash
reporting, and real-time error monitoring.&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/memfault-aws-iot-expresslink&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/memfault-aws-iot-expresslink</guid>
            <pubDate>Wed, 30 Aug 2023 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Dan Gross</atom:name>
                    <atom:uri></atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>Securing Firmware Updates With AES Encryption</title>
            <link>https://interrupt.memfault.com/blog/firmware-encryption-with-python</link>
            <description>
                
&lt;p&gt;In this publication, we will explore a simple method to encrypt the firmware using the AES algorithm, using open-source libraries in Python. Of course, we will also see how to decrypt the firmware from the MCU using the AES encryption engine.&lt;/p&gt;

                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/firmware-encryption-with-python&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/firmware-encryption-with-python</guid>
            <pubDate>Wed, 23 Aug 2023 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Guillermo Garcia</atom:name>
                    <atom:uri>https://embedded-dbl.com/</atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>Debugging Android Devices</title>
            <link>https://interrupt.memfault.com/blog/debugging-android-devices</link>
            <description>
                
&lt;p&gt;In this article we will explore the different facilities and tools available to debug Android based devices and produce robust systems that can handle a wide range of applications from smart fridges, to payment terminals, and of course mobile phones.&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/debugging-android-devices&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/debugging-android-devices</guid>
            <pubDate>Wed, 16 Aug 2023 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Chris Hayes</atom:name>
                    <atom:uri></atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>A Modern C Development Environment</title>
            <link>https://interrupt.memfault.com/blog/a-modern-c-dev-env</link>
            <description>
                
&lt;p&gt;In this article we’ll go over how to set up a containerized development environment for C projects. We’ll touch on setting up a build system using CMake, a testing environment using Unity, and even how to use our containerized environment in our CI pipeline!&lt;/p&gt;

                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/a-modern-c-dev-env&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/a-modern-c-dev-env</guid>
            <pubDate>Wed, 09 Aug 2023 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Martin Lampacher</atom:name>
                    <atom:uri></atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>What we&apos;ve been reading in July</title>
            <link>https://interrupt.memfault.com/blog/july-roundup</link>
            <description>
                
&lt;p&gt;Here are the articles, videos, and tools that we’ve been excited about this
July.&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/july-roundup&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/july-roundup</guid>
            <pubDate>Wed, 02 Aug 2023 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Tyler Hoffman</atom:name>
                    <atom:uri>https://www.linkedin.com/in/tyhoff/</atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>Understanding Battery Performance of IoT Devices</title>
            <link>https://interrupt.memfault.com/blog/monitoring-battery-life</link>
            <description>
                
&lt;p&gt;In this post, I’ll cover how to start thinking about collecting metrics that contribute to battery life, how to dig into this data for individual devices, and finally how to aggregate all metrics from devices in the field to accurately predict the battery life of devices in the field for a given firmware release. All of these abilities will help projects optimize battery life and combat issues quickly when they arise, whether you have ten or a million devices in the field.&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/monitoring-battery-life&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/monitoring-battery-life</guid>
            <pubDate>Wed, 26 Jul 2023 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Tyler Hoffman</atom:name>
                    <atom:uri>https://www.linkedin.com/in/tyhoff/</atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>Asynchronous Rust on Cortex-M Microcontrollers</title>
            <link>https://interrupt.memfault.com/blog/embedded-async-rust</link>
            <description>
                
&lt;p&gt;In this article, we explore the inner workings of Futures, cooperative
scheduling, and Async Rust executors, highlighting their significance in
optimizing resource utilization. Moreover, we introduce the Rust Embassy
project, an innovative framework designed to unlock the power of asynchronous
programming on microcontrollers.&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/embedded-async-rust&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/embedded-async-rust</guid>
            <pubDate>Wed, 19 Jul 2023 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Blake Hildebrand</atom:name>
                    <atom:uri></atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>Matter, Thread, and Memfault</title>
            <link>https://interrupt.memfault.com/blog/memfault-matter</link>
            <description>
                
&lt;p&gt;I’m Markus, software engineer @ &lt;a href=&quot;https://tridonic.com&quot;&gt;Tridonic&lt;/a&gt;, where we are working on &lt;a href=&quot;http://www.tridonic.com/matter&quot;&gt;Internet-connected wireless lighting solutions&lt;/a&gt; based on the &lt;a href=&quot;https://csa-iot.org/all-solutions/matter/&quot;&gt;Matter standard&lt;/a&gt;. To be able to monitor the reliability of those devices we’ve been using Memfault and tied it into Matter/Thread and its UDP/IPv6 stack based on the Nordic Connect SDK. In the following, I’ll show you the modifications we’ve done to enable Memfault in an IPv6 solution.&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/memfault-matter&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/memfault-matter</guid>
            <pubDate>Wed, 12 Jul 2023 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Markus Becker</atom:name>
                    <atom:uri></atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>What we&apos;ve been reading in June</title>
            <link>https://interrupt.memfault.com/blog/june-2023-roundup</link>
            <description>
                
&lt;p&gt;Here are the articles, videos, and tools that we’ve been excited about this
June.&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/june-2023-roundup&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/june-2023-roundup</guid>
            <pubDate>Wed, 05 Jul 2023 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Tyler Hoffman</atom:name>
                    <atom:uri>https://www.linkedin.com/in/tyhoff/</atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>Emulating a Raspberry Pi in QEMU</title>
            <link>https://interrupt.memfault.com/blog/emulating-raspberry-pi-in-qemu</link>
            <description>
                
&lt;p&gt;This article dives into QEMU, a popular open-source emulator, and how to use it to emulate a Raspberry Pi on your desktop. At the end of the article, we will put the whole environment in Docker, so you will be able to emulate a Raspberry Pi by just using a Docker container.&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/emulating-raspberry-pi-in-qemu&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/emulating-raspberry-pi-in-qemu</guid>
            <pubDate>Wed, 21 Jun 2023 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Mikolaj Stawiski</atom:name>
                    <atom:uri></atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>Measuring Stack Usage the Hard Way</title>
            <link>https://interrupt.memfault.com/blog/measuring-stack-usage</link>
            <description>
                
&lt;p&gt;This article is intended to shed some light on strategies for measuring stack
memory usage on a small embedded system.&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/measuring-stack-usage&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/measuring-stack-usage</guid>
            <pubDate>Wed, 14 Jun 2023 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Noah Pendleton</atom:name>
                    <atom:uri>https://www.linkedin.com/in/noahpendleton/</atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>What we&apos;ve been reading in May</title>
            <link>https://interrupt.memfault.com/blog/may-2023-roundup</link>
            <description>
                
&lt;p&gt;Here are the articles, videos, and tools that we’ve been excited about this
May.&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/may-2023-roundup&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/may-2023-roundup</guid>
            <pubDate>Tue, 06 Jun 2023 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Tyler Hoffman</atom:name>
                    <atom:uri>https://www.linkedin.com/in/tyhoff/</atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>Bazel Build System for Embedded Projects</title>
            <link>https://interrupt.memfault.com/blog/bazel-build-system-for-embedded-projects</link>
            <description>
                
&lt;p&gt;Selecting a build system is an essential decision when creating a project. Changing is always painful, especially in a mature repository. Therefore the choice should be made carefully. With this article, I will try to describe a few advantages of what Bazel can provide in the context of an embedded repository and show how to set up a build environment with a cross compiler from scratch.&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/bazel-build-system-for-embedded-projects&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/bazel-build-system-for-embedded-projects</guid>
            <pubDate>Tue, 30 May 2023 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Blaise Lengrand</atom:name>
                    <atom:uri></atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>Zephyr Deep Dive: Ring Buffers</title>
            <link>https://interrupt.memfault.com/blog/zephyr-ring-buffers</link>
            <description>
                
&lt;p&gt;This post covers Zephyr’s built-in ring buffer API, a component
commonly used in producer-consumer scenarios. We will cover how ring buffers
in Zephyr work, when to use them, and their strengths and weaknesses. This post
will close with an example of augmenting ring buffers with waiting capabilities.&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/zephyr-ring-buffers&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/zephyr-ring-buffers</guid>
            <pubDate>Wed, 24 May 2023 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Eric Johnson</atom:name>
                    <atom:uri>https://www.linkedin.com/in/ejohnso49</atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>C++17’s Useful Features for Embedded Systems</title>
            <link>https://interrupt.memfault.com/blog/cpp-17-for-embedded</link>
            <description>
                
&lt;p&gt;In this article, I will be showing some features of C++17 that can also be helpful in the embedded world.&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/cpp-17-for-embedded&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/cpp-17-for-embedded</guid>
            <pubDate>Wed, 17 May 2023 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Çağlayan Dökme</atom:name>
                    <atom:uri></atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>OTA for Embedded Linux Devices: A practical introduction</title>
            <link>https://interrupt.memfault.com/blog/ota-for-embedded-linux-devices</link>
            <description>
                
&lt;p&gt;A core belief of Memfault is that we can ship faster when we have good
infrastructure in place. An essential piece of this infrastructure is tools to
send firmware updates over the air. It enables the team to ship more often and
spend more time building features.&lt;/p&gt;

&lt;p&gt;In this article, we look specifically at what is required to ship over-the-air
firmware updates for Linux systems.&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/ota-for-embedded-linux-devices&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/ota-for-embedded-linux-devices</guid>
            <pubDate>Tue, 09 May 2023 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Thomas Sarlandie</atom:name>
                    <atom:uri></atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>What we&apos;ve been reading in April</title>
            <link>https://interrupt.memfault.com/blog/april-2023-roundup</link>
            <description>
                
&lt;p&gt;Here are the articles, videos, and tools that we’ve been excited about this
April.&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/april-2023-roundup&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/april-2023-roundup</guid>
            <pubDate>Wed, 03 May 2023 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Tyler Hoffman</atom:name>
                    <atom:uri>https://www.linkedin.com/in/tyhoff/</atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>Pocket article: Debug vs. Release Builds Considered Harmful</title>
            <link>https://interrupt.memfault.com/blog/debug-vs-release-builds</link>
            <description>
                
&lt;p&gt;Separate “debug” and “release” builds are very common in embedded development.
Typically the notion is improved debug capabilities (less aggressive compiler
optimizations, more debugging information like logs) vs. highly optimized and
hardened production release builds. I’m here to describe disadvantages to this
practice, and why it might make sense to consolidate to a single build!&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/debug-vs-release-builds&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/debug-vs-release-builds</guid>
            <pubDate>Tue, 25 Apr 2023 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Noah Pendleton</atom:name>
                    <atom:uri>https://www.linkedin.com/in/noahpendleton/</atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>What we&apos;ve been reading in February &amp; March</title>
            <link>https://interrupt.memfault.com/blog/feb-march-2023-roundup</link>
            <description>
                
&lt;p&gt;Here are the articles, videos, and tools that we’ve been excited about this
February &amp;amp; March. We’re a little late with the February issue but we’ll catch up!&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/feb-march-2023-roundup&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/feb-march-2023-roundup</guid>
            <pubDate>Wed, 12 Apr 2023 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Tyler Hoffman</atom:name>
                    <atom:uri>https://www.linkedin.com/in/tyhoff/</atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>A Guide to Using ARM Stack Limit Registers</title>
            <link>https://interrupt.memfault.com/blog/using-psp-msp-limit-registers-for-stack-overflow</link>
            <description>
                
&lt;p&gt;We will explore using the MSP Limit and the PSP Limit Registers on the ARM
Cortex-M33 architecture to detect stack overflows. We will walk through an
implementation on the Renesas DA1469x and look at practical examples of
detecting stack overflows. Additionally, we will look at supplementary options
for scenarios that the MSPLIM and PSPLIM features fall short.&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/using-psp-msp-limit-registers-for-stack-overflow&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/using-psp-msp-limit-registers-for-stack-overflow</guid>
            <pubDate>Tue, 14 Feb 2023 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Jon Kurtz</atom:name>
                    <atom:uri></atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>What we&apos;ve been reading in January</title>
            <link>https://interrupt.memfault.com/blog/jan-2023-roundup</link>
            <description>
                
&lt;p&gt;Here are the articles, videos, and tools that we’ve been excited about this
January.&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/jan-2023-roundup&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/jan-2023-roundup</guid>
            <pubDate>Tue, 07 Feb 2023 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Tyler Hoffman</atom:name>
                    <atom:uri>https://www.linkedin.com/in/tyhoff/</atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>Integrating Memfault into an Embedded Linux Project</title>
            <link>https://interrupt.memfault.com/blog/embedded-linux-with-memfault</link>
            <description>
                
&lt;p&gt;In this blog post, I will demonstrate how to integrate Memfault’s offering on a Raspberry Pi 3B+ running embedded Linux.&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/embedded-linux-with-memfault&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/embedded-linux-with-memfault</guid>
            <pubDate>Wed, 18 Jan 2023 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Mohammed Billoo</atom:name>
                    <atom:uri></atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>What we&apos;ve been reading in November &amp; December (2022)</title>
            <link>https://interrupt.memfault.com/blog/dec-2022-roundup</link>
            <description>
                
&lt;p&gt;Here are the articles, videos, and tools that we’ve been excited about this
November &amp;amp; December. It’s a long list…happy new year!&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/dec-2022-roundup&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/dec-2022-roundup</guid>
            <pubDate>Thu, 12 Jan 2023 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Tyler Hoffman</atom:name>
                    <atom:uri>https://www.linkedin.com/in/tyhoff/</atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>Using SWIG to generate bindings between C and Lua</title>
            <link>https://interrupt.memfault.com/blog/swig-for-c-and-lua</link>
            <description>
                
&lt;p&gt;This article covers how to write a C program that launches a Lua interpreter and then how to use SWIG to generate the necessary wrapper code to allow Lua scripts to access the functions and data inside of the C runtime.&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/swig-for-c-and-lua&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/swig-for-c-and-lua</guid>
            <pubDate>Tue, 29 Nov 2022 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Mikolaj Stawiski</atom:name>
                    <atom:uri></atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>What we&apos;ve been reading in October (2022)</title>
            <link>https://interrupt.memfault.com/blog/october-2022-roundup</link>
            <description>
                
&lt;p&gt;Here are the articles, videos, and tools that we’ve been excited about this
October&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/october-2022-roundup&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/october-2022-roundup</guid>
            <pubDate>Tue, 01 Nov 2022 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Tyler Hoffman</atom:name>
                    <atom:uri>https://www.linkedin.com/in/tyhoff/</atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>What we&apos;ve been reading in September (2022)</title>
            <link>https://interrupt.memfault.com/blog/september-2022-roundup</link>
            <description>
                
&lt;p&gt;Here are the articles, videos, and tools that we’ve been excited about this
September&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/september-2022-roundup&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/september-2022-roundup</guid>
            <pubDate>Tue, 11 Oct 2022 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Tyler Hoffman</atom:name>
                    <atom:uri>https://www.linkedin.com/in/tyhoff/</atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>Pocket article: Debugging ccache misses</title>
            <link>https://interrupt.memfault.com/blog/ccache-debugging</link>
            <description>
                
&lt;p&gt;This article provides a few tips and tricks for diagnosing &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ccache&lt;/code&gt; misses, to
keep your C/C++ build nice and snappy!&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/ccache-debugging&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/ccache-debugging</guid>
            <pubDate>Tue, 04 Oct 2022 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Noah Pendleton</atom:name>
                    <atom:uri>https://www.linkedin.com/in/noahpendleton/</atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>What we&apos;ve been reading in August (2022)</title>
            <link>https://interrupt.memfault.com/blog/august-2022-roundup</link>
            <description>
                
&lt;p&gt;Here are the articles, videos, and tools that we’ve been excited about this
August&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/august-2022-roundup&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/august-2022-roundup</guid>
            <pubDate>Tue, 06 Sep 2022 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Tyler Hoffman</atom:name>
                    <atom:uri>https://www.linkedin.com/in/tyhoff/</atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>Integrating Memfault with Blecon Bluetooth Devices</title>
            <link>https://interrupt.memfault.com/blog/memfault-bluetooth</link>
            <description>
                
&lt;p&gt;In this post, I’ll go through how we evaluated Memfault at Blecon and talk through what we liked and why we decided to use it, how we integrated it into the nRF5 platform and carried the Memfault data over to the Memfault cloud via Bluetooth.&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/memfault-bluetooth&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/memfault-bluetooth</guid>
            <pubDate>Tue, 23 Aug 2022 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Donatien Garnier</atom:name>
                    <atom:uri></atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>What we&apos;ve been reading in July (2022)</title>
            <link>https://interrupt.memfault.com/blog/july-2022-roundup</link>
            <description>
                
&lt;p&gt;Here are the articles, videos, and tools that we’ve been excited about this
July&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/july-2022-roundup&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/july-2022-roundup</guid>
            <pubDate>Wed, 17 Aug 2022 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Tyler Hoffman</atom:name>
                    <atom:uri>https://www.linkedin.com/in/tyhoff/</atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>Saving bandwidth with delta firmware updates</title>
            <link>https://interrupt.memfault.com/blog/ota-delta-updates</link>
            <description>
                
&lt;p&gt;In this post, we introduce the concept of delta (i.e. partial) firmware updates,
explain why you may want to implement them in your projects and go through an
example implementation from top to bottom.&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/ota-delta-updates&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/ota-delta-updates</guid>
            <pubDate>Tue, 09 Aug 2022 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>François Baldassari</atom:name>
                    <atom:uri>https://twitter.com/baldassarifr</atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>Tools we use: installing GDB for ARM</title>
            <link>https://interrupt.memfault.com/blog/installing-gdb</link>
            <description>
                
&lt;p&gt;In this mini article, I’ll be going on a few strategies and nuances around
getting a copy of GDB installed for debugging ARM chips.&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/installing-gdb&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/installing-gdb</guid>
            <pubDate>Wed, 03 Aug 2022 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Noah Pendleton</atom:name>
                    <atom:uri>https://www.linkedin.com/in/noahpendleton/</atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>What we&apos;ve been reading in May &amp; June (2022)</title>
            <link>https://interrupt.memfault.com/blog/june-2022-roundup</link>
            <description>
                
&lt;p&gt;I apologize readers of Interrupt! I haven’t published a roundup post in a while, but fear not! We’re back after a couple of very busy months, both professionally and personally.&lt;/p&gt;

&lt;p&gt;Here are the articles, videos, and tools that we’ve been excited about this
May &amp;amp; June&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/june-2022-roundup&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/june-2022-roundup</guid>
            <pubDate>Tue, 19 Jul 2022 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Tyler Hoffman</atom:name>
                    <atom:uri>https://www.linkedin.com/in/tyhoff/</atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>Building an On-Device Embedded Testing Library</title>
            <link>https://interrupt.memfault.com/blog/testing-library</link>
            <description>
                
&lt;p&gt;There are too few C/C++ testing libraries designed for embedded devices. The traditional libraries are not designed for constrained resources and rely on host functionality like a filesystem or standard output.&lt;/p&gt;

&lt;p&gt;In this post, I detail why I’ve decided to design a new testing library for microcontrollers and cover the rationale, design choices, and thoughts on the prototype.&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/testing-library&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/testing-library</guid>
            <pubDate>Tue, 07 Jun 2022 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Jan Koniarik</atom:name>
                    <atom:uri></atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>Selecting Your Next Project&apos;s MCU</title>
            <link>https://interrupt.memfault.com/blog/choosing-an-mcu</link>
            <description>
                
&lt;p&gt;Selecting the best chip can be tedious work but the best chip can save you a lot
of time and money, and might even be faster! So should you spend time finding
the best? I have some words on the topic.&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/choosing-an-mcu&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/choosing-an-mcu</guid>
            <pubDate>Tue, 24 May 2022 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Lars Pötter</atom:name>
                    <atom:uri>https://www.ing-poetter.de/</atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>What we&apos;ve been reading in April (2022)</title>
            <link>https://interrupt.memfault.com/blog/april-2022-roundup</link>
            <description>
                
&lt;p&gt;Here are the articles, videos, and tools that we’ve been excited about this
April&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/april-2022-roundup&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/april-2022-roundup</guid>
            <pubDate>Thu, 12 May 2022 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Tyler Hoffman</atom:name>
                    <atom:uri>https://www.linkedin.com/in/tyhoff/</atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>What we&apos;ve been reading in March (+ Announcements) (2022)</title>
            <link>https://interrupt.memfault.com/blog/march-2022-roundup</link>
            <description>
                
&lt;p&gt;Here are the articles, videos, and tools that we’ve been excited about this
March, and we have a few announcements, the first being about &lt;a href=&quot;https://go.memfault.com/embedded-device-observability-metrics-panel&quot;&gt;Interrupt’s first Quarterly Panel&lt;/a&gt; co-hosted with Phillip from Embedded Artistry, and a blurb about this year’s &lt;a href=&quot;https://www.embeddedonlineconference.com/&quot;&gt;Embedded Online Conference&lt;/a&gt;&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/march-2022-roundup&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/march-2022-roundup</guid>
            <pubDate>Thu, 14 Apr 2022 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Tyler Hoffman</atom:name>
                    <atom:uri>https://www.linkedin.com/in/tyhoff/</atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>Dealing with Large Symbol Files</title>
            <link>https://interrupt.memfault.com/blog/dealing-with-large-symbol-files</link>
            <description>
                
&lt;p&gt;Large applications can produce &lt;em&gt;very&lt;/em&gt; large symbol files when debug information
is enabled (especially at the higher, more verbose levels of debug info!). This
article describes some techniques for reducing debug symbol file sizes!&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/dealing-with-large-symbol-files&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/dealing-with-large-symbol-files</guid>
            <pubDate>Wed, 30 Mar 2022 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Noah Pendleton</atom:name>
                    <atom:uri>https://www.linkedin.com/in/noahpendleton/</atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>What we&apos;ve been reading in February (2022)</title>
            <link>https://interrupt.memfault.com/blog/february-2022-roundup</link>
            <description>
                
&lt;p&gt;Here are the articles, videos, and tools that we’ve been excited about this
February.&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/february-2022-roundup&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/february-2022-roundup</guid>
            <pubDate>Tue, 15 Mar 2022 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Tyler Hoffman</atom:name>
                    <atom:uri>https://www.linkedin.com/in/tyhoff/</atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>C Structure Padding Initialization</title>
            <link>https://interrupt.memfault.com/blog/c-struct-padding-initialization</link>
            <description>
                
&lt;p&gt;This article takes a look at a few different aspects of C structure
initialization. In particular, we’ll look at when it matters, the current state
of things in Clang and GCC, recommendations, and the ✨ future ✨.&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/c-struct-padding-initialization&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/c-struct-padding-initialization</guid>
            <pubDate>Tue, 01 Mar 2022 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Noah Pendleton</atom:name>
                    <atom:uri>https://www.linkedin.com/in/noahpendleton/</atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>What we&apos;ve been reading in January (2022)</title>
            <link>https://interrupt.memfault.com/blog/january-2022-roundup</link>
            <description>
                
&lt;p&gt;Here are the articles, videos, and tools that we’ve been excited about this
January.&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/january-2022-roundup&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/january-2022-roundup</guid>
            <pubDate>Tue, 01 Feb 2022 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Tyler Hoffman</atom:name>
                    <atom:uri>https://www.linkedin.com/in/tyhoff/</atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>Nash&apos;s Four Favorite Firmware Debug Tools</title>
            <link>https://interrupt.memfault.com/blog/four-favorite-firmware-debug-tools</link>
            <description>
                
&lt;p&gt;Firmware is an essential part of every modern electronic system. Try as we might
to achieve perfection in our firmware, things will, inevitably, start to act
funny. And when they do, it’s time for debugging! While a poor craftsman chooses
to blame his tools, proper tooling can speed you to a robust diagnosis and an
expeditious fix. Here are four of my favorite friends for finding and fixing
firmware flaws.&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/four-favorite-firmware-debug-tools&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/four-favorite-firmware-debug-tools</guid>
            <pubDate>Tue, 25 Jan 2022 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Nash Reilly</atom:name>
                    <atom:uri></atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>Tracing &amp; Logging with the `TRICE` Library (Interrupts too!)</title>
            <link>https://interrupt.memfault.com/blog/trice</link>
            <description>
                
&lt;p&gt;Embedded engineers need something as easy to use as &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;printf&lt;/code&gt;, usable within interrupts, small enough for today’s MCU’s, and have minimal performance impact when running. The &lt;em&gt;Trice&lt;/em&gt; technique tries to fill this gap. It is the result of a long-year dissatisfaction and several attempts to find a loophole to make embedded programming more fun and effective.&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/trice&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/trice</guid>
            <pubDate>Wed, 12 Jan 2022 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Thomas Höhenleitner</atom:name>
                    <atom:uri></atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>What we&apos;ve been reading in December (2021)</title>
            <link>https://interrupt.memfault.com/blog/december-2021-roundup</link>
            <description>
                
&lt;p&gt;🎉 Happy 2022 everyone! 🎉&lt;/p&gt;

&lt;p&gt;Here are the articles, videos, and tools that we’ve been excited about this
December.&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/december-2021-roundup&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/december-2021-roundup</guid>
            <pubDate>Tue, 04 Jan 2022 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Tyler Hoffman</atom:name>
                    <atom:uri>https://www.linkedin.com/in/tyhoff/</atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>What we&apos;ve been reading in November (2021)</title>
            <link>https://interrupt.memfault.com/blog/november-2021-roundup</link>
            <description>
                
&lt;p&gt;Here are the articles, videos, and tools that we’ve been excited about this
November.&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/november-2021-roundup&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/november-2021-roundup</guid>
            <pubDate>Mon, 06 Dec 2021 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Tyler Hoffman</atom:name>
                    <atom:uri>https://www.linkedin.com/in/tyhoff/</atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>Pocket article: How to implement and use `.noinit` RAM</title>
            <link>https://interrupt.memfault.com/blog/noinit-memory</link>
            <description>
                
&lt;p&gt;This pocket article will describe how a non-initialized region of memory works,
how to implement it, and how it can be used in a typical embedded system.&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/noinit-memory&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/noinit-memory</guid>
            <pubDate>Tue, 23 Nov 2021 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Noah Pendleton</atom:name>
                    <atom:uri>https://www.linkedin.com/in/noahpendleton/</atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>New Events and Jobs Pages on Interrupt</title>
            <link>https://interrupt.memfault.com/blog/events-and-jobs-pages</link>
            <description>
                
&lt;p&gt;Interrupt now has a community-curated Events and Jobs page! We’ve pre-populated it a bit and we invite and welcome you to submit job listings and events that you believe are relevant to the embedded engineering space.&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/events-and-jobs-pages&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/events-and-jobs-pages</guid>
            <pubDate>Wed, 03 Nov 2021 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Tyler Hoffman</atom:name>
                    <atom:uri>https://www.linkedin.com/in/tyhoff/</atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>What we&apos;ve been reading in October (2021)</title>
            <link>https://interrupt.memfault.com/blog/october-2021-roundup</link>
            <description>
                
&lt;p&gt;Here are the articles, videos, and tools that we’ve been excited about this
October.&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/october-2021-roundup&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/october-2021-roundup</guid>
            <pubDate>Tue, 02 Nov 2021 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Tyler Hoffman</atom:name>
                    <atom:uri>https://www.linkedin.com/in/tyhoff/</atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>Automatically format and lint code with pre-commit</title>
            <link>https://interrupt.memfault.com/blog/pre-commit</link>
            <description>
                
&lt;p&gt;This article provides some background and guidelines for using &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;pre-commit&lt;/code&gt; to
automatically format and lint C-language firmware codebases. We’ll cover general
guidelines and go over an example set of checks that can be helpful when working
on firmware code.&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/pre-commit&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/pre-commit</guid>
            <pubDate>Wed, 27 Oct 2021 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Noah Pendleton</atom:name>
                    <atom:uri>https://www.linkedin.com/in/noahpendleton/</atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>What we&apos;ve been reading in September (2021)</title>
            <link>https://interrupt.memfault.com/blog/september-2021-roundup</link>
            <description>
                
&lt;p&gt;Here are the articles, videos, and tools that we’ve been excited about this
September.&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/september-2021-roundup&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/september-2021-roundup</guid>
            <pubDate>Tue, 12 Oct 2021 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Tyler Hoffman</atom:name>
                    <atom:uri>https://www.linkedin.com/in/tyhoff/</atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>Peeking inside CMSIS-Packs</title>
            <link>https://interrupt.memfault.com/blog/cmsis-packs</link>
            <description>
                
&lt;p&gt;In this article, we’ll take a look at what CMSIS-Packs are, and how they can be
useful!&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/cmsis-packs&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/cmsis-packs</guid>
            <pubDate>Thu, 07 Oct 2021 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Noah Pendleton</atom:name>
                    <atom:uri>https://www.linkedin.com/in/noahpendleton/</atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>Profiling newlib-nano&apos;s memcpy</title>
            <link>https://interrupt.memfault.com/blog/memcpy-newlib-nano</link>
            <description>
                
&lt;p&gt;This article takes a look at one of the commonly used functions provided by the
Newlib C library: &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;memcpy&lt;/code&gt;. We’ll examine the default nano implementation and
the performance implications, comparing it against the faster non-default
implementation.&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/memcpy-newlib-nano&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/memcpy-newlib-nano</guid>
            <pubDate>Tue, 07 Sep 2021 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Noah Pendleton</atom:name>
                    <atom:uri>https://www.linkedin.com/in/noahpendleton/</atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>What we&apos;ve been reading in July and August (2021)</title>
            <link>https://interrupt.memfault.com/blog/august-2021-roundup</link>
            <description>
                
&lt;blockquote&gt;
  &lt;p&gt;You may have noticed there was no July roundup. We’ve been busy improving &lt;a href=&quot;https://memfault.com&quot;&gt;Memfault&lt;/a&gt;, building out our partnerships with &lt;a href=&quot;https://memfault.com/news/monitoring-debugging-and-updating-nordic-powered-iot-products-made-easy-with-device-observability-platform-partnership/&quot;&gt;Nordic Semiconductor&lt;/a&gt; and &lt;a href=&quot;https://memfault.com/news/laird-connectivity-partners-with-memfault-to-offer-device-observability-platform-for-its-connected-low-power-cellular-bluetooth-product-line/&quot;&gt;Laird&lt;/a&gt;, and enjoying the summer months. Thanks for understanding.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Here are the articles, videos, and tools that we’ve been excited about this
July and August.&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/august-2021-roundup&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/august-2021-roundup</guid>
            <pubDate>Tue, 31 Aug 2021 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Tyler Hoffman</atom:name>
                    <atom:uri>https://www.linkedin.com/in/tyhoff/</atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>What we&apos;ve been reading in June (2021)</title>
            <link>https://interrupt.memfault.com/blog/june-2021-roundup</link>
            <description>
                
&lt;p&gt;Here are the articles, videos, and tools that we’ve been excited about this
June.&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/june-2021-roundup&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/june-2021-roundup</guid>
            <pubDate>Tue, 06 Jul 2021 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Tyler Hoffman</atom:name>
                    <atom:uri>https://www.linkedin.com/in/tyhoff/</atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>Pocket article: Undefined Behavior Sanitizer Trap on Error</title>
            <link>https://interrupt.memfault.com/blog/ubsan-trap</link>
            <description>
                
&lt;p&gt;This post is a brief overview on how the Undefined Behavior Sanitizer can be
used to trap unintentional or error prone parts of a C program. We’re going to
look at how it’s used on a desktop program, as well as a way to use it in small
embedded programs!&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/ubsan-trap&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/ubsan-trap</guid>
            <pubDate>Tue, 22 Jun 2021 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Noah Pendleton</atom:name>
                    <atom:uri>https://www.linkedin.com/in/noahpendleton/</atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>What we&apos;ve been reading in May (2021)</title>
            <link>https://interrupt.memfault.com/blog/may-2021-roundup</link>
            <description>
                
&lt;p&gt;Here are the articles, videos, and tools that we’ve been excited about this
May.&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/may-2021-roundup&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/may-2021-roundup</guid>
            <pubDate>Tue, 01 Jun 2021 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Tyler Hoffman</atom:name>
                    <atom:uri>https://www.linkedin.com/in/tyhoff/</atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>Firmware Static Analysis with CodeChecker</title>
            <link>https://interrupt.memfault.com/blog/static-analysis-with-codechecker</link>
            <description>
                &lt;p&gt;In this post, I go over how to set up CodeChecker on a
firmware project to reap the benefits of static analysis. I’ll also cover ways
to deal with false positives, and configure your assert functions to be
analysis-friendly.&lt;/p&gt;

                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/static-analysis-with-codechecker&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/static-analysis-with-codechecker</guid>
            <pubDate>Wed, 19 May 2021 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>François Baldassari</atom:name>
                    <atom:uri>https://twitter.com/baldassarifr</atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>Practical Design Patterns: Opaque Pointers and Objects in C</title>
            <link>https://interrupt.memfault.com/blog/opaque-pointers</link>
            <description>
                
&lt;p&gt;Objects are not a native concept in C, but you can achieve something
resembling objects by using a design pattern known as the “opaque pointer”.
This post will show you what the pattern is, explain some of the finer
details, and provide guidance on when you should and shouldn’t use it.&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/opaque-pointers&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/opaque-pointers</guid>
            <pubDate>Tue, 11 May 2021 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Nick Miller</atom:name>
                    <atom:uri></atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>What we&apos;ve been reading in April (2021)</title>
            <link>https://interrupt.memfault.com/blog/april-2021-roundup</link>
            <description>
                
&lt;p&gt;Here are the articles, videos, and tools that we’ve been excited about this
April.&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/april-2021-roundup&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/april-2021-roundup</guid>
            <pubDate>Tue, 04 May 2021 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Tyler Hoffman</atom:name>
                    <atom:uri>https://www.linkedin.com/in/tyhoff/</atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>Share Your Debugging Scripts</title>
            <link>https://interrupt.memfault.com/blog/sharing-gdb-scripts</link>
            <description>
                
&lt;p&gt;In this short-form post, I want to share how you can go about keeping a central &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;gdbinit&lt;/code&gt; file that you can commit into your project’s repo and automatically source it in the popular editor and IDE environments that firmware engineers find themselves in today.&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/sharing-gdb-scripts&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/sharing-gdb-scripts</guid>
            <pubDate>Wed, 21 Apr 2021 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Tyler Hoffman</atom:name>
                    <atom:uri>https://www.linkedin.com/in/tyhoff/</atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>What we&apos;ve been reading in March (2021)</title>
            <link>https://interrupt.memfault.com/blog/march-2021-roundup</link>
            <description>
                
&lt;p&gt;Here are the articles, videos, and tools that we’ve been excited about this
March.&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/march-2021-roundup&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/march-2021-roundup</guid>
            <pubDate>Tue, 30 Mar 2021 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Tyler Hoffman</atom:name>
                    <atom:uri>https://www.linkedin.com/in/tyhoff/</atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>Balancing Test Coverage vs. Overhead</title>
            <link>https://interrupt.memfault.com/blog/testing-vs-overhead</link>
            <description>
                
&lt;p&gt;In a perfect world, all software and firmware are given precisely the time and budget it needs to be successful, code is uniformly well-written to industry best practices, and the code is complemented with a complete test suite instrumenting all aspects of the software.&lt;/p&gt;

&lt;p&gt;In practice, this rarely, if ever, happens! Development teams and organizations continually have to re-prioritize tasks to meet deadlines and avoid going over budget. In this article, we’ll cover how you can think about rapidly modifying and updating firmware, testing these changes, all the while allowing you to get the product out the door.&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/testing-vs-overhead&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/testing-vs-overhead</guid>
            <pubDate>Tue, 23 Mar 2021 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Erik Fogg</atom:name>
                    <atom:uri></atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>What we&apos;ve been reading in February (2021)</title>
            <link>https://interrupt.memfault.com/blog/february-2021-roundup</link>
            <description>
                
&lt;p&gt;Here are the articles, videos, and tools that we’ve been excited about this
February.&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/february-2021-roundup&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/february-2021-roundup</guid>
            <pubDate>Tue, 02 Mar 2021 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Tyler Hoffman</atom:name>
                    <atom:uri>https://www.linkedin.com/in/tyhoff/</atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>Introduction to ARM Semihosting</title>
            <link>https://interrupt.memfault.com/blog/arm-semihosting</link>
            <description>
                
&lt;p&gt;This post introduces semihosting and shows how to use it and integrate it into
your own embedded projects.&lt;/p&gt;

                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/arm-semihosting&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/arm-semihosting</guid>
            <pubDate>Tue, 16 Feb 2021 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Amine El Messaoudi</atom:name>
                    <atom:uri></atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>What we&apos;ve been reading in January (2020)</title>
            <link>https://interrupt.memfault.com/blog/january-2021-roundup</link>
            <description>
                
&lt;p&gt;Here are the articles, videos, and tools that we’ve been excited about this
January.&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/january-2021-roundup&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/january-2021-roundup</guid>
            <pubDate>Tue, 09 Feb 2021 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Tyler Hoffman</atom:name>
                    <atom:uri>https://www.linkedin.com/in/tyhoff/</atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>Proper Release Versioning Goes a Long Way</title>
            <link>https://interrupt.memfault.com/blog/release-versioning</link>
            <description>
                
&lt;p&gt;In this article, we are going to talk through all the various pieces of metadata to be included in your firmware binaries, debug symbols, and build artifacts so that developers and machines can quickly and easily know &lt;strong&gt;exactly&lt;/strong&gt; which build is which and how to fetch associated files for the debug, test, and release pipeline.&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/release-versioning&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/release-versioning</guid>
            <pubDate>Tue, 19 Jan 2021 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Tyler Hoffman</atom:name>
                    <atom:uri>https://www.linkedin.com/in/tyhoff/</atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>What we&apos;ve been reading in December (2020)</title>
            <link>https://interrupt.memfault.com/blog/december-2020-roundup</link>
            <description>
                
&lt;p&gt;Happy New Year! Here’s to a wonderful 2021.&lt;/p&gt;

&lt;p&gt;Here are the articles, videos, and tools that we’ve been excited about this
December.&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/december-2020-roundup&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/december-2020-roundup</guid>
            <pubDate>Tue, 05 Jan 2021 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Tyler Hoffman</atom:name>
                    <atom:uri>https://www.linkedin.com/in/tyhoff/</atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>ARM Cortex-M33 Instruction Tracing Without a Debugger</title>
            <link>https://interrupt.memfault.com/blog/instruction-tracing-mtb-m33</link>
            <description>
                
&lt;p&gt;In this post we will explore how to perform instruction tracing without a debugger by using the ARM Cortex-M33 Micro Trace Buffer (MTB). We will walk through a few practical examples of how to configure the MTB with Dialog Semiconductor’s DA14695 MCU.&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/instruction-tracing-mtb-m33&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/instruction-tracing-mtb-m33</guid>
            <pubDate>Wed, 23 Dec 2020 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Chris Coleman</atom:name>
                    <atom:uri>https://www.linkedin.com/in/christopher-coleman-812aa06b/</atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>Defensive Programming - Friend or Foe?</title>
            <link>https://interrupt.memfault.com/blog/defensive-and-offensive-programming</link>
            <description>
                
&lt;p&gt;In this article, we’ll dive into what defensive and offensive programming are,
where defensive programming falls short, how developers should think about using
them within embedded systems, and how the techniques of offensive programming
can surface bugs and help developers root cause them immediately at runtime.&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/defensive-and-offensive-programming&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/defensive-and-offensive-programming</guid>
            <pubDate>Tue, 15 Dec 2020 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Tyler Hoffman</atom:name>
                    <atom:uri>https://www.linkedin.com/in/tyhoff/</atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>Seamless firmware development with PlatformIO</title>
            <link>https://interrupt.memfault.com/blog/seamless-firmware-with-platformio</link>
            <description>
                
&lt;p&gt;In this post, I’d like to introduce PlatformIO. I will go over what PlatformIO
is, how you can use it for your project, and what it is good at.  I also
highlight a few shortcomings worth keeping in mind.&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/seamless-firmware-with-platformio&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/seamless-firmware-with-platformio</guid>
            <pubDate>Tue, 08 Dec 2020 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>François Baldassari</atom:name>
                    <atom:uri>https://twitter.com/baldassarifr</atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>What we&apos;ve been reading in November (2020)</title>
            <link>https://interrupt.memfault.com/blog/november-2020-roundup</link>
            <description>
                
&lt;p&gt;Here are the articles, videos, and tools that we’ve been excited about this
November.&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/november-2020-roundup&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/november-2020-roundup</guid>
            <pubDate>Tue, 01 Dec 2020 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Tyler Hoffman</atom:name>
                    <atom:uri>https://www.linkedin.com/in/tyhoff/</atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>The Best and Worst MCU SDKs</title>
            <link>https://interrupt.memfault.com/blog/the-best-and-worst-mcu-sdks</link>
            <description>
                
&lt;p&gt;In this post, I download SDKs for 10 popular Cortex-M4 microcontrollers, and
evaluate how straightforward it is to get a simple example compiling. I include
some step by step instructions to get started, a rating out of 10, and a few
comments.&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/the-best-and-worst-mcu-sdks&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/the-best-and-worst-mcu-sdks</guid>
            <pubDate>Tue, 10 Nov 2020 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>François Baldassari</atom:name>
                    <atom:uri>https://twitter.com/baldassarifr</atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>MCUboot Walkthrough and Porting Guide</title>
            <link>https://interrupt.memfault.com/blog/mcuboot-overview</link>
            <description>
                
&lt;p&gt;In this article, we will explore the feature set of MCUboot and how it works. We will walk through
step-by-step how to port it to a custom platform and test our port out on a Cortex-M based development board.&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/mcuboot-overview&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/mcuboot-overview</guid>
            <pubDate>Wed, 04 Nov 2020 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Chris Coleman</atom:name>
                    <atom:uri>https://www.linkedin.com/in/christopher-coleman-812aa06b/</atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>What we&apos;ve been reading in October (2020)</title>
            <link>https://interrupt.memfault.com/blog/october-2020-roundup</link>
            <description>
                
&lt;p&gt;Here are the articles, videos, and tools that we’ve been excited about this
October.&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/october-2020-roundup&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/october-2020-roundup</guid>
            <pubDate>Tue, 27 Oct 2020 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Tyler Hoffman</atom:name>
                    <atom:uri>https://www.linkedin.com/in/tyhoff/</atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>Advanced GDB Usage</title>
            <link>https://interrupt.memfault.com/blog/advanced-gdb</link>
            <description>
                
&lt;p&gt;In this reference-style post, we discuss some of the more advanced and powerful commands of the GNU debugger, GDB, as well as cover some of the best practices and hacks I’ve found over the years that help make GDB more pleasant to use.&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/advanced-gdb&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/advanced-gdb</guid>
            <pubDate>Tue, 20 Oct 2020 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Tyler Hoffman</atom:name>
                    <atom:uri>https://www.linkedin.com/in/tyhoff/</atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>Separating Unique Parameters from Firmware Binaries</title>
            <link>https://interrupt.memfault.com/blog/separating-unique-parameters</link>
            <description>
                
&lt;p&gt;In this post, we take a look at a method for separating unique parameters such
as keys and IDs from firmware. This enables us to program these parameters
separately from the firmware, making our setup much more scalable and suitable
for use in production.&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/separating-unique-parameters&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/separating-unique-parameters</guid>
            <pubDate>Tue, 06 Oct 2020 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Amund Askeland</atom:name>
                    <atom:uri></atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>What we&apos;ve been reading in September (2020)</title>
            <link>https://interrupt.memfault.com/blog/september-2020-roundup</link>
            <description>
                
&lt;p&gt;Here are the articles, videos, and tools that we’ve been excited about this
August and September.&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/september-2020-roundup&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/september-2020-roundup</guid>
            <pubDate>Tue, 29 Sep 2020 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Tyler Hoffman</atom:name>
                    <atom:uri>https://www.linkedin.com/in/tyhoff/</atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>Faster Debugging with Watchpoints</title>
            <link>https://interrupt.memfault.com/blog/cortex-m-watchpoints</link>
            <description>
                
&lt;p&gt;In this post we will explore how to save time debugging by making the most of watchpoints. We will walk through a few classic use cases of watchpoints by debugging an example application with GDB. Then, we will dive into how watchpoints are implemented for ARM Cortex-M based MCUs with the Data Watchpoint &amp;amp; Trace (&lt;strong&gt;DWT&lt;/strong&gt;) unit and explore some advanced features.&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/cortex-m-watchpoints&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/cortex-m-watchpoints</guid>
            <pubDate>Wed, 16 Sep 2020 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Chris Coleman</atom:name>
                    <atom:uri>https://www.linkedin.com/in/christopher-coleman-812aa06b/</atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>Secure firmware updates with code signing</title>
            <link>https://interrupt.memfault.com/blog/secure-firmware-updates-with-code-signing</link>
            <description>
                
&lt;p&gt;In this post, we explain why firmware signing is important, how it works, and
what algorithm should be used to implement it. We also detail a full
implementation built with open source, cross platform libraries.&lt;/p&gt;

                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/secure-firmware-updates-with-code-signing&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/secure-firmware-updates-with-code-signing</guid>
            <pubDate>Tue, 08 Sep 2020 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>François Baldassari</atom:name>
                    <atom:uri>https://twitter.com/baldassarifr</atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>Monitoring Fleet Health with Heartbeat Metrics</title>
            <link>https://interrupt.memfault.com/blog/device-heartbeat-metrics</link>
            <description>
                
&lt;p&gt;In this post, we lay the foundation for how an organization should instrument
their embedded firmware to measure performance, stability, and the overall
“health” of each device and an entire fleet of devices. We also compare and
contrast the various approaches projects generally take to surface these metrics
and I’ll discuss why I believe heartbeat metrics are the best method for driving
product decisions.&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/device-heartbeat-metrics&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/device-heartbeat-metrics</guid>
            <pubDate>Wed, 02 Sep 2020 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Tyler Hoffman</atom:name>
                    <atom:uri>https://www.linkedin.com/in/tyhoff/</atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>Parsing Logs Messages for Instant Crash Analysis</title>
            <link>https://interrupt.memfault.com/blog/firmware-logs-stack-trace</link>
            <description>
                
&lt;p&gt;Having a logger display execution information on the terminal is pretty common for firmware developers. What’s less common is having an instant stack trace when the program crashes.&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/firmware-logs-stack-trace&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/firmware-logs-stack-trace</guid>
            <pubDate>Tue, 04 Aug 2020 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Cyril Fougeray</atom:name>
                    <atom:uri>http://www.cyrilfougeray.com</atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>What we&apos;ve been reading in July (2020)</title>
            <link>https://interrupt.memfault.com/blog/august-2020-roundup</link>
            <description>
                
&lt;p&gt;Here are the articles, videos, and tools that we’ve been excited about this
July.&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/august-2020-roundup&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/august-2020-roundup</guid>
            <pubDate>Tue, 04 Aug 2020 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Tyler Hoffman</atom:name>
                    <atom:uri>https://www.linkedin.com/in/tyhoff/</atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>Step-through debugging with no debugger on Cortex-M</title>
            <link>https://interrupt.memfault.com/blog/cortex-m-debug-monitor</link>
            <description>
                
&lt;p&gt;This week we explore how to debug running systems with ARM Cortex-M’s DebugMonitor
exception handler. We cover how to configure the MCU to operate in this mode and walk through an
example of installing breakpoints and single-stepping on a running device!&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/cortex-m-debug-monitor&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/cortex-m-debug-monitor</guid>
            <pubDate>Wed, 29 Jul 2020 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Chris Coleman</atom:name>
                    <atom:uri>https://www.linkedin.com/in/christopher-coleman-812aa06b/</atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>How to Build Drivers for Zephyr</title>
            <link>https://interrupt.memfault.com/blog/building-drivers-on-zephyr</link>
            <description>
                
&lt;p&gt;In this post, I’ll go over some of the nuances related to creating drivers for your peripherals on Zephyr. We’ll talk about Device Tree organization, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Kconfig&lt;/code&gt;, and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;CMakeLists.txt&lt;/code&gt; files. By the end, you should have an idea on how to tackle your own Zephyr driver aspirations!&lt;/p&gt;

                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/building-drivers-on-zephyr&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/building-drivers-on-zephyr</guid>
            <pubDate>Thu, 23 Jul 2020 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Jared Wolff</atom:name>
                    <atom:uri>https://www.jaredwolff.com</atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>Firmware Testing with Renode and GitHub Actions</title>
            <link>https://interrupt.memfault.com/blog/test-automation-renode</link>
            <description>
                
&lt;p&gt;In this post, I cover what it takes to build a simple firmware for use with
Renode, how to build and administer tests with Robot Framework, and how to run
these tests within GitHub’s continuous integration system.&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/test-automation-renode&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/test-automation-renode</guid>
            <pubDate>Tue, 07 Jul 2020 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Tyler Hoffman</atom:name>
                    <atom:uri>https://www.linkedin.com/in/tyhoff/</atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>What we&apos;ve been reading in June (2020)</title>
            <link>https://interrupt.memfault.com/blog/june-2020-roundup</link>
            <description>
                
&lt;p&gt;Here are the articles, videos, and tools that we’ve been excited about this
June.&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/june-2020-roundup&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/june-2020-roundup</guid>
            <pubDate>Tue, 30 Jun 2020 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Tyler Hoffman</atom:name>
                    <atom:uri>https://www.linkedin.com/in/tyhoff/</atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>Device Firmware Update Cookbook</title>
            <link>https://interrupt.memfault.com/blog/device-firmware-update-cookbook</link>
            <description>
                
&lt;p&gt;In this post, I share the device firmware update architecture I would implement
knowing everything I know now. I also highlight a few design patterns that are
particularly useful. The example comes with a fully functional example of a
multi-stage bootloader with DFU functionality.&lt;/p&gt;

                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/device-firmware-update-cookbook&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/device-firmware-update-cookbook</guid>
            <pubDate>Tue, 23 Jun 2020 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>François Baldassari</atom:name>
                    <atom:uri>https://twitter.com/baldassarifr</atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>How do breakpoints even work?</title>
            <link>https://interrupt.memfault.com/blog/cortex-m-breakpoints</link>
            <description>
                
&lt;p&gt;In this article, we will discuss the basic types of breakpoints (hardware and software) and how they are utilized by the GNU Project Debugger, GDB. We will then explore how to configure hardware breakpoints on an ARM Cortex-M MCU using the Flash Patch and Breakpoint Unit (&lt;strong&gt;FPB&lt;/strong&gt;) and examine a real-world configuration with an example application.&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/cortex-m-breakpoints&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/cortex-m-breakpoints</guid>
            <pubDate>Wed, 17 Jun 2020 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Chris Coleman</atom:name>
                    <atom:uri>https://www.linkedin.com/in/christopher-coleman-812aa06b/</atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>Building a Tiny CLI Shell for Tiny Firmware</title>
            <link>https://interrupt.memfault.com/blog/firmware-shell</link>
            <description>
                
&lt;p&gt;In this post, we go over why an embedded firmware should include a command-line
shell interface, common use cases for it, how to build and extend one, and cover
common issues that developers run into while build and maintaining one. The
shell we will build will work over a UART serial port, which should make it
applicable to most embedded systems.&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/firmware-shell&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/firmware-shell</guid>
            <pubDate>Tue, 09 Jun 2020 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Tyler Hoffman</atom:name>
                    <atom:uri>https://www.linkedin.com/in/tyhoff/</atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>Profiling Firmware on Cortex-M</title>
            <link>https://interrupt.memfault.com/blog/profiling-firmware-on-cortex-m</link>
            <description>
                
&lt;p&gt;In this post, we explore different techniques that can be used to profile
firmware applications running on ARM Cortex-M microcontrollers. To profile our
Mandelbrot application on STM32, we start with a naive debugger-based sampling
method, and eventually discover ITM, DWT cycle counters, and more!&lt;/p&gt;

                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/profiling-firmware-on-cortex-m&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/profiling-firmware-on-cortex-m</guid>
            <pubDate>Tue, 02 Jun 2020 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>François Baldassari</atom:name>
                    <atom:uri>https://twitter.com/baldassarifr</atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>What we&apos;ve been reading in May (2020)</title>
            <link>https://interrupt.memfault.com/blog/may-2020-roundup</link>
            <description>
                
&lt;p&gt;Here are the articles, videos, and tools that we’ve been excited
about this May.&lt;/p&gt;

                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/may-2020-roundup&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/may-2020-roundup</guid>
            <pubDate>Tue, 26 May 2020 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>François Baldassari</atom:name>
                    <atom:uri>https://twitter.com/baldassarifr</atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>Better Firmware with LLVM/Clang</title>
            <link>https://interrupt.memfault.com/blog/arm-cortexm-with-llvm-clang</link>
            <description>
                
&lt;p&gt;In this article, I hope I can convince you that adding a Clang build target to your project can be
a relatively simple and useful endeavor. We will cover how to take advantage of some of the
rich features shipped with the toolchain and identify some memory leaks and mutex deadlocks in an
example project at compile time! We will also walk through a step-by-step example of updating a GCC
based ARM Cortex-M project to cross-compile with LLVM/Clang.&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/arm-cortexm-with-llvm-clang&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/arm-cortexm-with-llvm-clang</guid>
            <pubDate>Wed, 20 May 2020 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Chris Coleman</atom:name>
                    <atom:uri>https://www.linkedin.com/in/christopher-coleman-812aa06b/</atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>Embedded C/C++ Unit Testing with Mocks</title>
            <link>https://interrupt.memfault.com/blog/unit-test-mocking</link>
            <description>
                
&lt;p&gt;In this article, we do a deep-dive into unit testing with mocks. We’ll go over
where they fit into your unit testing infrastructure, how to write them in
C/C++, and finally run through some real-world examples. At the end, we’ll
briefly talk about integration tests.&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/unit-test-mocking&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/unit-test-mocking</guid>
            <pubDate>Tue, 12 May 2020 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Tyler Hoffman</atom:name>
                    <atom:uri>https://www.linkedin.com/in/tyhoff/</atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>What we&apos;ve been reading in April (2020)</title>
            <link>https://interrupt.memfault.com/blog/april-2020-roundup</link>
            <description>
                
&lt;p&gt;Here are the articles, videos, and tools that we’ve been excited
about this April.&lt;/p&gt;

                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/april-2020-roundup&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/april-2020-roundup</guid>
            <pubDate>Tue, 28 Apr 2020 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Tyler Hoffman</atom:name>
                    <atom:uri>https://www.linkedin.com/in/tyhoff/</atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>Hunting Bugs with Git Bisect</title>
            <link>https://interrupt.memfault.com/blog/git-bisect</link>
            <description>
                
&lt;p&gt;This article is a personal story of a time I had to run a bisect on a repository,
and the thoughts that went through my mind as it happened.
I touch on how to find a bug using git’s bisect feature and go over some easy strategies
to narrow your search space as much as possible. Lastly, I detail some ways of speeding up that
search through git bisect’s automation options.&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/git-bisect&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/git-bisect</guid>
            <pubDate>Tue, 21 Apr 2020 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Shiva Rajagopal</atom:name>
                    <atom:uri>https://about.me/shiva.rajagopal</atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>gdbundle - GDB and LLDB&apos;s Missing Plugin Manager</title>
            <link>https://interrupt.memfault.com/blog/gdbundle-plugin-manager</link>
            <description>
                
&lt;p&gt;GDB and LLDB desperately need a way for developers to share scripts,
user-interface improvements, and utilities with their peers. This would enable
building upon existing work and debugging techniques, progressing the entire
community and preventing developers from reinventing the wheel. GDB and LLDB
need a plugin manager, and I’d like to introduce to you
&lt;a href=&quot;https://github.com/memfault/gdbundle&quot;&gt;gdbundle&lt;/a&gt;.&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/gdbundle-plugin-manager&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/gdbundle-plugin-manager</guid>
            <pubDate>Tue, 14 Apr 2020 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Tyler Hoffman</atom:name>
                    <atom:uri>https://www.linkedin.com/in/tyhoff/</atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>GNU Binutils: the ELF Swiss Army Knife</title>
            <link>https://interrupt.memfault.com/blog/gnu-binutils</link>
            <description>
                
&lt;p&gt;In this article, we will explore some of my favorite binary introspection tools, such as GNU
Binutils. The material is geared toward the embedded software crowd that typically writes C and
C++, but many of the ideas, tools, and lessons learned can be applied to a variety of low-level
software. We will walk through practical examples of how the tools can be leveraged to aid in the
development process irrespective of the compiler you are using (e.g. GCC, Clang, IAR,
ARMCC, etc).&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/gnu-binutils&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/gnu-binutils</guid>
            <pubDate>Wed, 08 Apr 2020 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Chris Coleman</atom:name>
                    <atom:uri>https://www.linkedin.com/in/christopher-coleman-812aa06b/</atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>What we&apos;ve been reading in March (2020)</title>
            <link>https://interrupt.memfault.com/blog/march-2020-roundup</link>
            <description>
                
&lt;p&gt;Here are the articles, videos, and tools that we’ve been excited
about this past month.&lt;/p&gt;

                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/march-2020-roundup&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/march-2020-roundup</guid>
            <pubDate>Tue, 31 Mar 2020 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Tyler Hoffman</atom:name>
                    <atom:uri>https://www.linkedin.com/in/tyhoff/</atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>Cortex-M MCU Emulation with Renode</title>
            <link>https://interrupt.memfault.com/blog/intro-to-renode</link>
            <description>
                
&lt;p&gt;In this post, I walk through setting up the Renode emulator and running a
firmware in it for STM32. Using that setup, we’ll debug our firmware, run it
through integrated tests, and shorten the iteration cycle of development.&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/intro-to-renode&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/intro-to-renode</guid>
            <pubDate>Mon, 23 Mar 2020 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>François Baldassari</atom:name>
                    <atom:uri>https://twitter.com/baldassarifr</atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>Tracking Firmware Code Size</title>
            <link>https://interrupt.memfault.com/blog/code-size-deltas</link>
            <description>
                
&lt;p&gt;In this post, I will show you how to set up a code size dashboard for your
project. I’ll cover why should track code size, how to do it, and the steps to
calculate code size deltas on every pull requests to keep it to a minimum.&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/code-size-deltas&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/code-size-deltas</guid>
            <pubDate>Wed, 18 Mar 2020 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Tyler Hoffman</atom:name>
                    <atom:uri>https://www.linkedin.com/in/tyhoff/</atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>A Shallow Dive into GNU Make</title>
            <link>https://interrupt.memfault.com/blog/gnu-make-guidelines</link>
            <description>
                
&lt;p&gt;This article explains general concepts and features of GNU Make and includes
recommendations for getting the most out of a Make build! Consider it a brief
guided tour through some of my favorite/most used Make concepts and features 🤗.&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/gnu-make-guidelines&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/gnu-make-guidelines</guid>
            <pubDate>Tue, 03 Mar 2020 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Noah Pendleton</atom:name>
                    <atom:uri>https://www.linkedin.com/in/noahpendleton/</atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>What we&apos;ve been reading in February (2020)</title>
            <link>https://interrupt.memfault.com/blog/february-2020-roundup</link>
            <description>
                
&lt;p&gt;Here are the articles, videos, and tools we’ve been excited
about this past month.&lt;/p&gt;

                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/february-2020-roundup&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/february-2020-roundup</guid>
            <pubDate>Tue, 25 Feb 2020 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Tyler Hoffman</atom:name>
                    <atom:uri>https://www.linkedin.com/in/tyhoff/</atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>A Guide to Watchdog Timers for Embedded Systems</title>
            <link>https://interrupt.memfault.com/blog/firmware-watchdog-best-practices</link>
            <description>
                
&lt;p&gt;In this article we will discuss the last line of defense in embedded systems – watchdogs. We will walk through a step-by-step example of how to implement a watchdog subsystem, incorporating a “hardware” and “software” watchdog, and examine effective strategies for root causing the underlying problems leading to these hangs.&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/firmware-watchdog-best-practices&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/firmware-watchdog-best-practices</guid>
            <pubDate>Tue, 18 Feb 2020 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Chris Coleman</atom:name>
                    <atom:uri>https://www.linkedin.com/in/christopher-coleman-812aa06b/</atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>Improving Compilation Time of C/C++ Projects</title>
            <link>https://interrupt.memfault.com/blog/improving-compilation-times-c-cpp-projects</link>
            <description>
                
&lt;p&gt;Build times don’t have to be long, even yours! However, many factors play a
role. In this post, we’ll dive into which factors contribute to slower builds,
compare and contrast options, and also go over some easy wins which you can
immediately contribute to your project and share with your teammates. The
techniques discussed apply to most C/C++ compilers and projects, and there are a
couple extra tips for those using the GNU GCC compiler.&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/improving-compilation-times-c-cpp-projects&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/improving-compilation-times-c-cpp-projects</guid>
            <pubDate>Tue, 11 Feb 2020 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Tyler Hoffman</atom:name>
                    <atom:uri>https://www.linkedin.com/in/tyhoff/</atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>Beyond Firmware in the 2020s</title>
            <link>https://interrupt.memfault.com/blog/beyond-firmware-in-2020s</link>
            <description>
                In the next decade the capabilities of software for embedded systems will catch up to those of hardware, &apos;firmware&apos; will become increasingly difficult to distinguish from &apos;software&apos;, and a new discipline altogether will begin to take shape.
                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/beyond-firmware-in-2020s&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/beyond-firmware-in-2020s</guid>
            <pubDate>Tue, 11 Feb 2020 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Rameen Aryanpur</atom:name>
                    <atom:uri>https://www.linkedin.com/in/rameenaryanpur/</atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>Rust for Low Power Digital Signal Processing</title>
            <link>https://interrupt.memfault.com/blog/rust-for-digital-signal-processing</link>
            <description>
                
&lt;p&gt;In this post, I go over how Rust can be used to implement DSP algorithms for
firmware today, and compare the process and performance to the equivalent code
    written with CMSIS-DSP.&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/rust-for-digital-signal-processing&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/rust-for-digital-signal-processing</guid>
            <pubDate>Tue, 04 Feb 2020 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Cyril Fougeray</atom:name>
                    <atom:uri>http://www.cyrilfougeray.com</atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>I2C in a Nutshell</title>
            <link>https://interrupt.memfault.com/blog/i2c-in-a-nutshell</link>
            <description>
                
&lt;p&gt;I2C is perhaps the most commonly used bus to connect ICs together. As such,
firmware engineers encounter it on most projects. In this post, we explain how I2C
works, explore common bugs and investigate how to debug these issues.&lt;/p&gt;

                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/i2c-in-a-nutshell&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/i2c-in-a-nutshell</guid>
            <pubDate>Wed, 22 Jan 2020 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>François Baldassari</atom:name>
                    <atom:uri>https://twitter.com/baldassarifr</atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>What we&apos;ve been reading in January</title>
            <link>https://interrupt.memfault.com/blog/january-2020-roundup</link>
            <description>
                
&lt;p&gt;Happy New Year! Here are the articles, videos, and tools we’ve been excited
about this past month.&lt;/p&gt;

                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/january-2020-roundup&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/january-2020-roundup</guid>
            <pubDate>Tue, 14 Jan 2020 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>François Baldassari</atom:name>
                    <atom:uri>https://twitter.com/baldassarifr</atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>Managing Developer Environments with Conda</title>
            <link>https://interrupt.memfault.com/blog/conda-developer-environments</link>
            <description>
                
&lt;p&gt;This post gives an introduction to what Conda is, explains why you should care
about keeping your developer environments in sync, and finally provides a
walk-through on getting started with Conda to set up a GCC based developer
environment.&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/conda-developer-environments&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/conda-developer-environments</guid>
            <pubDate>Tue, 07 Jan 2020 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Tyler Hoffman</atom:name>
                    <atom:uri>https://www.linkedin.com/in/tyhoff/</atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>From Zero to main(): Bare metal Rust</title>
            <link>https://interrupt.memfault.com/blog/zero-to-main-rust-1</link>
            <description>
                
&lt;p&gt;Since 2015, Rust has been redefining what it means to combine the best-in-class aspects of performance, correctness, and developer convenience into one language, without compromise. In this post, we’ll bootstrap a Rust environment on a Cortex-M microcontroller from scratch, and explain a few of the language concepts you might not have seen before.&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/zero-to-main-rust-1&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/zero-to-main-rust-1</guid>
            <pubDate>Tue, 17 Dec 2019 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>James Munns</atom:name>
                    <atom:uri>https://ferrous-systems.com</atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>Reproducible Firmware Builds</title>
            <link>https://interrupt.memfault.com/blog/reproducible-firmware-builds</link>
            <description>
                
&lt;p&gt;In this article we will discuss what a &lt;strong&gt;Reproducible Build&lt;/strong&gt; is, walk through the process of updating a firmware project so the build &lt;em&gt;is&lt;/em&gt; reproducible, and explore how we can leverage what we have learned for other aspects of development.&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/reproducible-firmware-builds&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/reproducible-firmware-builds</guid>
            <pubDate>Wed, 11 Dec 2019 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Chris Coleman</atom:name>
                    <atom:uri>https://www.linkedin.com/in/christopher-coleman-812aa06b/</atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>What we&apos;ve been reading in November (2019)</title>
            <link>https://interrupt.memfault.com/blog/november-2019-roundup</link>
            <description>
                
&lt;p&gt;Starting this month, we will be sharing with you what we have been reading at
the end of each month. This will include blog posts, videos, tools, and
libraries that we found insightful or useful.&lt;/p&gt;

                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/november-2019-roundup&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/november-2019-roundup</guid>
            <pubDate>Tue, 03 Dec 2019 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>François Baldassari</atom:name>
                    <atom:uri>https://twitter.com/baldassarifr</atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>How to debug a HardFault on an ARM Cortex-M MCU</title>
            <link>https://interrupt.memfault.com/blog/cortex-m-hardfault-debug</link>
            <description>
                
&lt;p&gt;In this article, we explain how to debug faults on ARM Cortex-M based devices. In the process, we
learn about fault registers, how to automate fault analysis, and figure out ways to recover from
some faults without rebooting the MCU. We include practical examples, with a step by step walk-through on how to investigate them.&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/cortex-m-hardfault-debug&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/cortex-m-hardfault-debug</guid>
            <pubDate>Wed, 20 Nov 2019 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Chris Coleman</atom:name>
                    <atom:uri>https://www.linkedin.com/in/christopher-coleman-812aa06b/</atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>From Zero to main(): Bootstrapping libc with Newlib</title>
            <link>https://interrupt.memfault.com/blog/boostrapping-libc-with-newlib</link>
            <description>
                
&lt;p&gt;In this post, we will add RedHat’s Newlib to our firmware and highlight some of
its features. We will implement syscalls, learn about constructors, and finally
print out “Hello, World”! We will also learn how to replace parts or all of the
standard C library.&lt;/p&gt;

                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/boostrapping-libc-with-newlib&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/boostrapping-libc-with-newlib</guid>
            <pubDate>Tue, 12 Nov 2019 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>François Baldassari</atom:name>
                    <atom:uri>https://twitter.com/baldassarifr</atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>Using Asserts in Embedded Systems</title>
            <link>https://interrupt.memfault.com/blog/asserts-in-embedded-systems</link>
            <description>
                
&lt;p&gt;By using asserts proactively in embedded systems on debug &lt;strong&gt;and production&lt;/strong&gt;
builds, developers can both prevent more bugs before shipping and quickly
surface and fix them after shipping. Proper assert handling is also the safest
way to handle issues and undefined behavior that occur in production. In this
post, we’ll go over best practices with asserts, when to use asserts, and then
come up with a production ready custom assert implementation for an ARM Cortex-M
device, all while keeping the code size usage to a minimum.&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/asserts-in-embedded-systems&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/asserts-in-embedded-systems</guid>
            <pubDate>Tue, 05 Nov 2019 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Tyler Hoffman</atom:name>
                    <atom:uri>https://www.linkedin.com/in/tyhoff/</atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>ARM Cortex-M RTOS Context Switching</title>
            <link>https://interrupt.memfault.com/blog/cortex-m-rtos-context-switching</link>
            <description>
                
&lt;p&gt;In this article we will explore how &lt;strong&gt;context switching&lt;/strong&gt; works on ARM Cortex-M MCUs. We will
discuss how the hardware was designed to support this operation, features that impact the context
switching implementation such as the Floating Point Unit (FPU), and common pitfalls seen when
porting an RTOS to a platform. We will also walk through a practical example of analyzing the
&lt;strong&gt;FreeRTOS&lt;/strong&gt; context switcher, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;xPortPendSVHandler&lt;/code&gt;, utilizing &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;gdb&lt;/code&gt; to strengthen our understanding.&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/cortex-m-rtos-context-switching&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/cortex-m-rtos-context-switching</guid>
            <pubDate>Wed, 30 Oct 2019 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Chris Coleman</atom:name>
                    <atom:uri>https://www.linkedin.com/in/christopher-coleman-812aa06b/</atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>The Best and Worst GCC Compiler Flags For Embedded</title>
            <link>https://interrupt.memfault.com/blog/best-and-worst-gcc-clang-compiler-flags</link>
            <description>
                
&lt;p&gt;In this article we will explore some of the best and worst compiler flags for GCC (and Clang). Our
focus will be on flags used for embedded projects but the reasoning applies to other development environments as well. We will explore the impact
each flag has by walking through practical C code examples.&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/best-and-worst-gcc-clang-compiler-flags&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/best-and-worst-gcc-clang-compiler-flags</guid>
            <pubDate>Tue, 22 Oct 2019 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Chris Coleman</atom:name>
                    <atom:uri>https://www.linkedin.com/in/christopher-coleman-812aa06b/</atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>Embedded C/C++ Unit Testing Basics</title>
            <link>https://interrupt.memfault.com/blog/unit-testing-basics</link>
            <description>
                
&lt;p&gt;In this post, we go into detail on how to properly build abstractions to stub,
fake, and mock out implementations of low level embedded software and provide a
full real-world example of a unit test using the CppUTest 3.8 unit test
framework.&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/unit-testing-basics&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/unit-testing-basics</guid>
            <pubDate>Tue, 08 Oct 2019 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Tyler Hoffman</atom:name>
                    <atom:uri>https://www.linkedin.com/in/tyhoff/</atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>A Practical Guide to BLE Throughput</title>
            <link>https://interrupt.memfault.com/blog/ble-throughput-primer</link>
            <description>
                
&lt;p&gt;In this article, we dive into the factors which influence BLE throughput. We will walk through the BLE protocol stack from version 4.0 to 5.1. We will discuss how to audit what is limiting throughput in a BLE connection and parameters which can be tuned to improve it. Finally, we will walk through a couple practical examples where we evaluate and optimize the throughput of a connection.&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/ble-throughput-primer&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/ble-throughput-primer</guid>
            <pubDate>Tue, 24 Sep 2019 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Chris Coleman</atom:name>
                    <atom:uri>https://www.linkedin.com/in/christopher-coleman-812aa06b/</atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>Building Better Firmware with Continuous Integration</title>
            <link>https://interrupt.memfault.com/blog/continuous-integration-for-firmware</link>
            <description>
                
&lt;p&gt;In this post, we introduce Continuous Integration as a modern technique to allow
larger teams to move fast without breaking things. We’ll explain what Continuous
Integration is, why you may want to use it, and walk you through setting up
CircleCI on a firmware project step by step.&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/continuous-integration-for-firmware&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/continuous-integration-for-firmware</guid>
            <pubDate>Tue, 17 Sep 2019 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>François Baldassari</atom:name>
                    <atom:uri>https://twitter.com/baldassarifr</atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>A Practical guide to ARM Cortex-M Exception Handling</title>
            <link>https://interrupt.memfault.com/blog/arm-cortex-m-exceptions-and-nvic</link>
            <description>
                
&lt;p&gt;In this article we will dive into the details of how the ARM Cortex-M &lt;em&gt;exception model&lt;/em&gt; supports
the handling of asynchronous events. We
will walk through different exception types supported, terminology (i.e. NVIC, ISR, Priority), the
configuration registers used &amp;amp; common settings, advanced topics to be aware of regarding exceptions
and a few examples written in C.&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/arm-cortex-m-exceptions-and-nvic&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/arm-cortex-m-exceptions-and-nvic</guid>
            <pubDate>Wed, 04 Sep 2019 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Chris Coleman</atom:name>
                    <atom:uri>https://www.linkedin.com/in/christopher-coleman-812aa06b/</atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>Building a CLI for Firmware Projects using Invoke</title>
            <link>https://interrupt.memfault.com/blog/building-a-cli-for-firmware-projects</link>
            <description>
                
&lt;p&gt;Building a small (or large) command line interface (CLI) for a project is a
great way to get an entire team to build, test, debug, and work with a project
in the same way using the same set of tools. This post goes into detail about
how to think about a project’s CLI and implementing one using the
&lt;a href=&quot;http://www.pyinvoke.org/&quot;&gt;Invoke&lt;/a&gt; Python package.&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/building-a-cli-for-firmware-projects&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/building-a-cli-for-firmware-projects</guid>
            <pubDate>Tue, 27 Aug 2019 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Tyler Hoffman</atom:name>
                    <atom:uri>https://www.linkedin.com/in/tyhoff/</atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>Code Size Optimization: GCC Compiler Flags</title>
            <link>https://interrupt.memfault.com/blog/code-size-optimization-gcc-flags</link>
            <description>
                
&lt;p&gt;In this post, we will review compiler options that we can
use to reduce firmware code size. We will focus on &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;arm-none-eabi-gcc&lt;/code&gt;, the GCC
compiler used for ARM-based microcontrollers, though most of the compile-time
flags we will cover are available in other GCC flavors as well as in Clang.&lt;/p&gt;

                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/code-size-optimization-gcc-flags&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/code-size-optimization-gcc-flags</guid>
            <pubDate>Tue, 20 Aug 2019 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>François Baldassari</atom:name>
                    <atom:uri>https://twitter.com/baldassarifr</atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>From Zero to main(): How to Write a Bootloader from Scratch</title>
            <link>https://interrupt.memfault.com/blog/how-to-write-a-bootloader-from-scratch</link>
            <description>
                
&lt;p&gt;In this post, we will explain why you may want a
bootloader, how to implement one, and cover a few advanced techniques you may
use to make your bootloader more useful.&lt;/p&gt;

                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/how-to-write-a-bootloader-from-scratch&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/how-to-write-a-bootloader-from-scratch</guid>
            <pubDate>Tue, 13 Aug 2019 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>François Baldassari</atom:name>
                    <atom:uri>https://twitter.com/baldassarifr</atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>A Deep Dive into ARM Cortex-M Debug Interfaces</title>
            <link>https://interrupt.memfault.com/blog/a-deep-dive-into-arm-cortex-m-debug-interfaces</link>
            <description>
                
&lt;p&gt;In this article we will walk up through the hardware and software stack that enables debugging on &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ARM Cortex-M&lt;/code&gt; devices, demystify what is actually happening and go through a step-by-step example, tracing a basic debugger operation end to end using a logic analyzer.&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/a-deep-dive-into-arm-cortex-m-debug-interfaces&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/a-deep-dive-into-arm-cortex-m-debug-interfaces</guid>
            <pubDate>Tue, 06 Aug 2019 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Chris Coleman</atom:name>
                    <atom:uri>https://www.linkedin.com/in/christopher-coleman-812aa06b/</atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>Bluetooth Low Energy: A Primer</title>
            <link>https://interrupt.memfault.com/blog/bluetooth-low-energy-a-primer</link>
            <description>
                
&lt;p&gt;In today’s post, we will be covering one of the most popular low-power IoT
technologies: Bluetooth Low Energy (BLE). We will give an overview of how BLE
works, dig into each protocol layer, and walk you through an example setting
up BLE on a Nordic nRF52 microcontroller.&lt;/p&gt;

                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/bluetooth-low-energy-a-primer&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/bluetooth-low-energy-a-primer</guid>
            <pubDate>Tue, 30 Jul 2019 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Mohammad Afaneh</atom:name>
                    <atom:uri>https://www.novelbits.io</atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>Using Python PyPi Packages within GDB/LLDB</title>
            <link>https://interrupt.memfault.com/blog/using-pypi-packages-with-GDB</link>
            <description>
                
&lt;p&gt;&lt;a href=&quot;/blog/automate-debugging-with-gdb-python-api&quot;&gt;In a previous
post&lt;/a&gt;, we
discussed how to automate some of the more tedious parts of debugging firmware
using
&lt;a href=&quot;https://sourceware.org/gdb/onlinedocs/gdb/Python-API.html&quot;&gt;Python in GDB Scripts&lt;/a&gt;.
To make these commands more powerful, one could use third-party packages from
Python’s &lt;a href=&quot;https://pypi.org/&quot;&gt;PyPi&lt;/a&gt; repository. In this post, we will discuss how
to properly setup GDB, Python, and optionally virtualenv and then modify the
&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;uuid_list_dump&lt;/code&gt; command from the post mentioned above to make use of a third
party package installed through PyPi.&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/using-pypi-packages-with-GDB&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/using-pypi-packages-with-GDB</guid>
            <pubDate>Tue, 23 Jul 2019 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Tyler Hoffman</atom:name>
                    <atom:uri>https://www.linkedin.com/in/tyhoff/</atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>Fix Bugs and Secure Firmware with the MPU</title>
            <link>https://interrupt.memfault.com/blog/fix-bugs-and-secure-firmware-with-the-mpu</link>
            <description>
                
&lt;p&gt;Many ARM MCUs implement an optional unit, known as the &lt;strong&gt;Memory Protection Unit
(MPU)&lt;/strong&gt;, which lets you control how regions of memory are accessed.
In this article, we will deep dive into the unit and walk through a few practical examples of how it can be used to prevent bad memory accesses and security exploits on &lt;em&gt;Cortex-M&lt;/em&gt; devices.&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/fix-bugs-and-secure-firmware-with-the-mpu&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/fix-bugs-and-secure-firmware-with-the-mpu</guid>
            <pubDate>Tue, 16 Jul 2019 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Chris Coleman</atom:name>
                    <atom:uri>https://www.linkedin.com/in/christopher-coleman-812aa06b/</atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>Get the most out of the linker map file</title>
            <link>https://interrupt.memfault.com/blog/get-the-most-out-of-the-linker-map-file</link>
            <description>
                
&lt;p&gt;In this article, I want to highlight how simple linker map files are and how
much they can teach you about the program you are working on.&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/get-the-most-out-of-the-linker-map-file&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/get-the-most-out-of-the-linker-map-file</guid>
            <pubDate>Tue, 09 Jul 2019 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Cyril Fougeray</atom:name>
                    <atom:uri>http://www.cyrilfougeray.com</atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>Automate Debugging with GDB Python API</title>
            <link>https://interrupt.memfault.com/blog/automate-debugging-with-gdb-python-api</link>
            <description>
                
&lt;p&gt;&lt;a href=&quot;/blog/gdb-for-firmware-1&quot;&gt;Previously&lt;/a&gt; we discussed how a significant portion of developer time is spent &lt;em&gt;debugging&lt;/em&gt; firmware and how GDB can be a powerful utility for this. In this article we will discuss how to become more efficient at debugging by leveraging GDB’s &lt;a href=&quot;https://sourceware.org/gdb/onlinedocs/gdb/Python.html#Python&quot;&gt;Python API&lt;/a&gt;.&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/automate-debugging-with-gdb-python-api&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/automate-debugging-with-gdb-python-api</guid>
            <pubDate>Tue, 02 Jul 2019 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Chris Coleman</atom:name>
                    <atom:uri>https://www.linkedin.com/in/christopher-coleman-812aa06b/</atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>From Zero to main(): Demystifying Firmware Linker Scripts</title>
            <link>https://interrupt.memfault.com/blog/how-to-write-linker-scripts-for-firmware</link>
            <description>
                
&lt;p&gt;&lt;a href=&quot;/blog/zero-to-main-1&quot;&gt;Last time&lt;/a&gt;, we talked about
bootstrapping a C environment on an MCU before invoking our &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;main&lt;/code&gt; function. One
thing we took for granted was the fact that functions and data end up in the
right place in our binary. Today, we’re going to dig into how that happens by
learning about memory regions and linker scripts.&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/how-to-write-linker-scripts-for-firmware&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/how-to-write-linker-scripts-for-firmware</guid>
            <pubDate>Tue, 25 Jun 2019 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>François Baldassari</atom:name>
                    <atom:uri>https://twitter.com/baldassarifr</atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>Tools for Firmware Code Size Optimization</title>
            <link>https://interrupt.memfault.com/blog/best-firmware-size-tools</link>
            <description>
                
&lt;p&gt;In this &lt;a href=&quot;/tag/fw-code-size&quot;&gt;series of posts&lt;/a&gt;, we’ll explore ways to save code space and ways not to
do it. We will cover compiler options, coding style, logging, as well as
desperate hacks when all you need is another 24 bytes.&lt;/p&gt;

&lt;p&gt;But first, let’s talk about measuring code size.&lt;/p&gt;


                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/best-firmware-size-tools&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/best-firmware-size-tools</guid>
            <pubDate>Thu, 06 Jun 2019 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>François Baldassari</atom:name>
                    <atom:uri>https://twitter.com/baldassarifr</atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>GNU Build IDs for Firmware</title>
            <link>https://interrupt.memfault.com/blog/gnu-build-id-for-firmware</link>
            <description>
                
&lt;p&gt;In this post, we demonstrate how to use the GNU Build ID to uniquely
identify a build. We explain what the GNU build ID is, how it is enabled,
and how it is used in a firmware context.&lt;/p&gt;

                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/gnu-build-id-for-firmware&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/gnu-build-id-for-firmware</guid>
            <pubDate>Wed, 29 May 2019 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>François Baldassari</atom:name>
                    <atom:uri>https://twitter.com/baldassarifr</atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>Debugging Firmware with GDB</title>
            <link>https://interrupt.memfault.com/blog/gdb-for-firmware-1</link>
            <description>
                
&lt;p&gt;If I had to choose one significant aspect that I was not aware of before starting my career as a firmware developer, it would be how much time is spent &lt;strong&gt;not actually developing&lt;/strong&gt;, and instead &lt;strong&gt;debugging&lt;/strong&gt; firmware!&lt;/p&gt;

                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/gdb-for-firmware-1&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/gdb-for-firmware-1</guid>
            <pubDate>Tue, 21 May 2019 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>Mohammad Afaneh</atom:name>
                    <atom:uri>https://www.novelbits.io</atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>From Zero to main(): Bare metal C</title>
            <link>https://interrupt.memfault.com/blog/zero-to-main-1</link>
            <description>
                
&lt;p&gt;Throughout the &lt;a href=&quot;/tag/zero-to-main&quot;&gt;Zero to main() series&lt;/a&gt; of posts,
we demystify what happens between when power is applied
and your main function is called. In the process, we’ll learn how to bootstrap a
C environment, implement a bootloader, relocate code, and more!&lt;/p&gt;

                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/zero-to-main-1&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/zero-to-main-1</guid>
            <pubDate>Tue, 14 May 2019 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>François Baldassari</atom:name>
                    <atom:uri>https://twitter.com/baldassarifr</atom:uri>
            </atom:author>
            
        </item>
        
        <item>
            <title>Programming the ATSAMD21 with IBDAP</title>
            <link>https://interrupt.memfault.com/blog/getting-started-with-ibdap-and-atsamd21g18</link>
            <description>
                
&lt;p&gt;In the process of porting a blog post from the retired &lt;a href=&quot;https://store.arduino.cc/usa/arduino-m0-pro&quot;&gt;Arduino M0
Pro&lt;/a&gt; to Adafruit’s excellent
&lt;a href=&quot;https://www.adafruit.com/product/3505&quot;&gt;Metro M0
Express&lt;/a&gt;, I ran into a few issues and scant amount of documentation. I’m writing this for
the next poor soul wrestling with these systems.&lt;/p&gt;

                
                
                &lt;p&gt;
                &lt;a href=&quot;https://interrupt.memfault.com/blog/getting-started-with-ibdap-and-atsamd21g18&quot;&gt;&lt;strong&gt;Continue reading…&lt;/strong&gt;&lt;/a&gt;
                &lt;p&gt;
                
            </description>
            <guid>https://interrupt.memfault.com/blog/getting-started-with-ibdap-and-atsamd21g18</guid>
            <pubDate>Thu, 25 Apr 2019 00:00:00 +0000</pubDate>
            
            
            <atom:author>
                    <atom:name>François Baldassari</atom:name>
                    <atom:uri>https://twitter.com/baldassarifr</atom:uri>
            </atom:author>
            
        </item>
        
    </channel>
</rss>
