<?xml version="1.0" encoding="utf-8" ?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title>Stephen Friederichs Blog on EmbeddedRelated.com</title>
<link>https://www.embeddedrelated.com/blogs-1/nf/Stephen_Friederichs.php</link>
<description><![CDATA[RSS Feed for Stephen Friederichs Blog on EmbeddedRelated.com]]></description>
<image><title>Stephen Friederichs Blog on EmbeddedRelated.com</title>
<link>https://www.embeddedrelated.com/blogs-1/nf/Stephen_Friederichs.php</link>
<url>https://d23s79tivgl8me.cloudfront.net/user/profilepictures/defaultavatar.jpg</url>
</image>
<atom:link href="https://www.embeddedrelated.com/blogs_rss.php?bloggerid=94655" rel="self" type="application/rss+xml"></atom:link>
<language>en-US</language>
<lastBuildDate>Fri, 10 Apr 2026 07:43:22 +0000</lastBuildDate>
<pubDate>1775807002</pubDate>
<item>
<title>Global Variables vs. Safe Software</title>
<link>https://www.embeddedrelated.com/showarticle/892.php</link>
<description><![CDATA[<p>It seems that Reddit's programming and technology subreddits have only recently caught up to 2013. If you <a href="https://www.reddit.com/domain/safetyresearch.net/" rel="nofollow">take a look</a>, you'll find plenty of discussion and&nbsp;controversy surrounding a 2013&nbsp;<a href="http://www.safetyresearch.net/blog/articles/toyota-unintended-acceleration-and-big-bowl-%E2%80%9Cspaghetti%E2%80%9D-code" rel="nofollow">blog post</a> from Safety Research & Strategies Inc.&nbsp;regarding the software failings behind Toyota's&nbsp;unintended acceleration problems.&nbsp;
</p>
<p>The article is a good overview, but...]]></description>
<pubDate>Wed, 09 Dec 2015 18:51:55 +0000</pubDate>
<author>Stephen Friederichs</author>
</item>
<item>
<title>Coding Step 4 - Design</title>
<link>https://www.embeddedrelated.com/showarticle/824.php</link>
<description><![CDATA[<p>Articles in this series:
</p>
<ul>
	<li><a href="//www.embeddedrelated.com/showarticle/701.php">Coding Step 0 - Development Environments</a></li>
	<li><a href="//www.embeddedrelated.com/showarticle/740.php">Coding Step 1 - Hello World and Makefiles</a></li>
	<li><a href="//www.embeddedrelated.com/showarticle/784.php" target="_blank">Coding Step 2&nbsp;- Source Control</a></li>
	<li><a href="//www.embeddedrelated.com/showarticle/803.php" target="_blank">Coding Step 3 - High-Level Requirements</a></li>
	<li>Coding Step 4 - Design</li>
</ul>
<p>The last article in this series&nbsp;discussed how to...]]></description>
<pubDate>Wed, 25 Nov 2015 01:53:41 +0000</pubDate>
<author>Stephen Friederichs</author>
</item>
<item>
<title>Practical CRCs for Embedded Systems</title>
<link>https://www.embeddedrelated.com/showarticle/811.php</link>
<description><![CDATA[<p>CRCs are a very practical tool for embedded systems:&nbsp;you're likely to need to use&nbsp;one as part of a communications protocol or to verify the integrity of a program image before writing it to flash. But CRCs can be&nbsp;difficult to understand&nbsp;and tricky to implement.&nbsp;The first time I attempted to write&nbsp;CRC&nbsp;code&nbsp;from scratch I failed once. Then twice. Then...]]></description>
<pubDate>Wed, 21 Oct 2015 02:00:21 +0000</pubDate>
<author>Stephen Friederichs</author>
</item>
<item>
<title>Coding Step 3 - High-Level Requirements</title>
<link>https://www.embeddedrelated.com/showarticle/803.php</link>
<description><![CDATA[<p>Articles in this series:</p><ul><li><a href="//www.embeddedrelated.com/showarticle/701.php">Coding Step 0 - Development Environments</a></li><li><a href="//www.embeddedrelated.com/showarticle/740.php">Coding Step 1 - Hello World and Makefiles</a></li><li><a href="//www.embeddedrelated.com/showarticle/784.php" target="_blank">Coding Step 2- Source Control</a></li><li>Coding Step 3 - High-Level Requirements</li><li><a href="//www.embeddedrelated.com/showarticle/824.php" target="_blank">Coding Step 4 - Design</a></li></ul><p>If this series of articles has been light on&nbsp;one thing&nbsp;it's 'coding'. If it's been light on...]]></description>
<pubDate>Tue, 18 Aug 2015 01:09:44 +0000</pubDate>
<author>Stephen Friederichs</author>
</item>
<item>
<title>Dark Corners of C - The Comma Operator</title>
<link>https://www.embeddedrelated.com/showarticle/804.php</link>
<description><![CDATA[<p>I've been programming in C for 16 years or so and the language has existed for much much longer than that. You might think that there'd be nothing left to surprise me after so long - but you'd be wrong. Imagine my surprise the first time I saw a line of code that looked something like...]]></description>
<pubDate>Thu, 23 Jul 2015 12:45:22 +0000</pubDate>
<author>Stephen Friederichs</author>
</item>
<item>
<title>Coding Step 2 - Source Control</title>
<link>https://www.embeddedrelated.com/showarticle/784.php</link>
<description><![CDATA[<p>Articles in this series:</p><ul><li><a href="//www.embeddedrelated.com/showarticle/701.php">Coding Step 0 - Development Environments</a></li><li><a href="//www.embeddedrelated.com/showarticle/740.php">Coding Step 1 - Hello World and Makefiles</a></li><li>Coding Step 2&nbsp;- Source Control</li><li><a href="//www.embeddedrelated.com/showarticle/803.php" target="_blank">Coding Step 3 - High-Level Requirements</a></li><li><a href="//www.embeddedrelated.com/showarticle/824.php" target="_blank">Coding Step 4 - Design</a></li></ul><p>When I first started out in programming, version control was not an introductory topic. Not...]]></description>
<pubDate>Thu, 07 May 2015 01:08:15 +0000</pubDate>
<author>Stephen Friederichs</author>
</item>
<item>
<title>Coding Step 1 - Hello World and Makefiles</title>
<link>https://www.embeddedrelated.com/showarticle/740.php</link>
<description><![CDATA[<p>Articles in this series:</p><ul><li><a href="//www.embeddedrelated.com/showarticle/701.php">Coding Step 0 - Development Environments</a></li><li>Coding Step 1 - Hello World and Makefiles</li><li><a href="//www.embeddedrelated.com/showarticle/784.php" target="_blank">Coding Step 2&nbsp;- Source Control</a></li><li><a href="//www.embeddedrelated.com/showarticle/803.php" target="_blank">Coding Step 3 - High-Level Requirements</a></li><li><a href="//www.embeddedrelated.com/showarticle/824.php" target="_blank">Coding Step 4 - Design</a></li></ul><p>Step 0&nbsp;discussed how to install GCC and the make utility with the expectation of writing...]]></description>
<pubDate>Wed, 11 Feb 2015 01:36:43 +0000</pubDate>
<author>Stephen Friederichs</author>
</item>
<item>
<title>Coding - Step 0: Setting Up a Development Environment</title>
<link>https://www.embeddedrelated.com/showarticle/701.php</link>
<description><![CDATA[<p>Articles in this series:</p><ul>
	<li>Coding Step 0 - Development Environments</li>
	<li><a href="//www.embeddedrelated.com/showarticle/740.php">Coding Step 1 - Hello World and Makefiles</a></li>
	<li><a href="//www.embeddedrelated.com/showarticle/784.php">Coding Step 2 - Source Control</a></li><li><a href="//www.embeddedrelated.com/showarticle/803.php" target="_blank">Coding Step 3 - High-Level Requirements</a></li><li><a href="//www.embeddedrelated.com/showarticle/824.php" target="_blank">Coding Step 4 - Design</a></li>
</ul>
<p>You can easily find a million articles out there discussing compiler nuances,...]]></description>
<pubDate>Tue, 25 Nov 2014 21:45:17 +0000</pubDate>
<author>Stephen Friederichs</author>
</item>
<item>
<title>Project Directory Organization</title>
<link>https://www.embeddedrelated.com/showarticle/628.php</link>
<description><![CDATA[<p>A recent <a href="http://www.reddit.com/r/C_Programming/comments/2dtz48/downloadable_examples_of_smallish_c_projects_with/" target="_blank" rel="nofollow">question</a>&nbsp;on Reddit’s C Programming sub asked what sort of directory structure people use for their projects. Perhaps not unsurprisingly this didn’t elicit a flood of answers - maybe there are no organizational schemes that people are happy with or perhaps few people consider it a glamorous topic (not that the C Programming subreddit is filled with glamorous people -no offense...]]></description>
<pubDate>Thu, 21 Aug 2014 01:50:24 +0000</pubDate>
<author>Stephen Friederichs</author>
</item>
<item>
<title>Short Circuit Execution vs. Unit Testing</title>
<link>https://www.embeddedrelated.com/showarticle/614.php</link>
<description><![CDATA[<p>The key to effective communication is to say what you mean and avoid ambiguity. &nbsp;Words and phrases with multiple meanings can confuse your audience and hinder communication. That&rsquo;s why so many programmers prefer writing code to writing specifications: written human language introduces ambiguity and subsequently, confusion. Code only has one interpretation, period. This...]]></description>
<pubDate>Mon, 07 Jul 2014 11:59:28 +0000</pubDate>
<author>Stephen Friederichs</author>
</item>
<item>
<title>Unit Tests for Embedded Code</title>
<link>https://www.embeddedrelated.com/showarticle/558.php</link>
<description><![CDATA[<p dir="ltr">I originate from an electrical engineering background and my first industry experience was in a large, staid defense contractor. Both of these experiences contributed to a significant lack of knowledge with regards to software development best practices. Electrical engineers often have a backwards view of software in general; large defense contractors have similar views of software and couple...]]></description>
<pubDate>Thu, 06 Mar 2014 00:38:32 +0000</pubDate>
<author>Stephen Friederichs</author>
</item>
<item>
<title>Implementing State Machines</title>
<link>https://www.embeddedrelated.com/showarticle/543.php</link>
<description><![CDATA[<p dir="ltr">State machines are a great way to design software but they can be difficult to implement well.To illustrate this I’ll develop a simple state machine then increase the complexity to demonstrate some of the difficulties</p>
<p dir="ltr">We’ve all washed dishes before - it’s easy isn’t it? Scrub, rinse, dry, scrub, rinse dry. Scrub the dish until all of the gunk is off of it, rinse until the soap is off,...]]></description>
<pubDate>Sat, 18 Jan 2014 22:37:22 +0000</pubDate>
<author>Stephen Friederichs</author>
</item>
<item>
<title>Data Validity in Embedded Systems</title>
<link>https://www.embeddedrelated.com/showarticle/491.php</link>
<description><![CDATA[<p dir="ltr">If you take a high-level view of software systems you might say that the overall goal of software is to generate outputs from inputs. It&rsquo;s a gross simplification of a nuanced and complex field but the truth of the statement is unarguable: data goes in, is manipulated and then is spat out again.That&rsquo;s what software does. The simplicity of the statement contributes to the joy of...]]></description>
<pubDate>Sat, 05 Oct 2013 16:46:18 +0000</pubDate>
<author>Stephen Friederichs</author>
</item>
<item>
<title>Code Metrics - SLOC Count</title>
<link>https://www.embeddedrelated.com/showarticle/454.php</link>
<description><![CDATA[<p dir="ltr">Many programmers will start having flashbacks at the title of this article because it contains the words 'metrics' and 'SLOC'. &nbsp;Newer programmers are probably wondering what all of the fuss is about - most probably have no negative connotations with the term 'code metrics' and some may not even know what SLOC is. &nbsp;While there is much baggage associated with metrics and SLOC you...]]></description>
<pubDate>Tue, 20 Aug 2013 01:45:43 +0000</pubDate>
<author>Stephen Friederichs</author>
</item>
<item>
<title>Endianness and Serial Communication</title>
<link>https://www.embeddedrelated.com/showarticle/174.php</link>
<description><![CDATA[<p>Endianness is a consideration that is easily overlooked in the design of embedded systems. I myself am amply guilty of this oversight. It&rsquo;s something you don&rsquo;t ever have to worry about if you&rsquo;re only working with a single processor or two processors that have the same endianness. &nbsp;You can even avoid it if you have two processors that have different endianness but never...]]></description>
<pubDate>Tue, 21 May 2013 00:35:56 +0000</pubDate>
<author>Stephen Friederichs</author>
</item>
<item>
<title>Data Hiding in C</title>
<link>https://www.embeddedrelated.com/showarticle/166.php</link>
<description><![CDATA[<p>Strictly speaking, C is not an object-oriented language. Although it provides some features that fit into the object-oriented paradigm it has never had the full object-oriented focus that its successor C++ offers. C++ introduced some very useful concepts and abilities that I miss when I’m developing in ANSI C. One such concept is protected member variables and functions.</p>
<p>When you declare a...]]></description>
<pubDate>Sun, 21 Apr 2013 00:27:40 +0000</pubDate>
<author>Stephen Friederichs</author>
</item>
<item>
<title>Debugging with Heartbeat LEDs</title>
<link>https://www.embeddedrelated.com/showarticle/164.php</link>
<description><![CDATA[<p>In this article I’ll discuss one of the most basic debugging tools in an embedded system: the heartbeat LED. &nbsp;Picture this: you’re developing your first program for a new microcontroller. You’ve written the code, configured the programmer, downloaded the HEX file and now... what Your program is running - isn’t it?
</p>
<p>Truth is that it’s hard to tell with most embedded software....]]></description>
<pubDate>Tue, 02 Apr 2013 00:00:54 +0000</pubDate>
<author>Stephen Friederichs</author>
</item>
</channel>
</rss>