Bugs

May 2019: GPS Rollover Day, Historical Source, and YouTube Playlists

Welcome to the May 2019 edition of the Embedded Artistry Newsletter! This is a monthly newsletter of curated and original content to help you build superior embedded systems. This newsletter supplements the website and covers topics not mentioned there.

This month we'll cover:

  • GPS rollover day problems
  • Historical source code
  • Embedded Artistry YouTube playlists
  • Embedded news from around the web
  • Embedded job postings
  • Updates to the Embedded Artistry Website

GPS Rollover Problems

6 April 2019 was "GPS Rollover day". The current GPS standard uses a 10-bit counter to keep track of the number of weeks elapsed since 6 January 1980. Since it's a 10-bit counter, the max count is 210-1, or 1023, weeks. On the 1024th week, it will rollover to week 0.

If you’re keeping score, you’ll be surprised that this was a big deal at all: we already experienced a GPS rollover on 21 August 1999. Many GPS equipment manufacturers understand the rollover requirements and designed their systems to accommodate it. However, we knew that some GPS receivers would be unable to make the transition gracefully. These receivers would reset their date to the last epoch (21 August 1999). Once the epoch is reset, these devices were expected to give the wrong time and position. In the worst case devices might lock up permanently.

Companies had plenty of time to prepare for this event and firmware updates were sent out for many affected devices. But as expected, GPS Rollover Day still impacted many systems:

Let this be a warning to system designers: your systems will remain in use longer than you expect. Spend time investigating and handling edge cases, especially foreseeable ones like a recurring 1024-week GPS rollover.

Historical Source Code

Contemporary programmers are lucky: we live in a world where historical and influential program source code is available for us to review. However, most programmers only learn and study the programs they have worked on themselves. We rarely take the time to study historical works, and programming courses don’t typically spend any time on the subject.

We believe that software developers should review influential source code. This is similar to architects studying influential building designs (and critiques of those designs). Rather than repeating the same mistakes over-and-over, we should study the great works that preceded us and learn from and build upon their lessons.

If you're interested in studying historical source code, we've collected links in a new article on our blog: Programmers: Let's Study Source Code Classics.

If you have recommendations for classic source code or commentary, simply respond to this email and we will add them to the list.

Embedded Artistry YouTube Playlists

Over the past three years, we've shared dozens of YouTube videos on Twitter and in our newsletter. Most of those videos were shared only once. If you weren't looking at just the right moment, you missed the link. We've decided to collect our video recommendations in a YouTube channel.

We've created the following playlists and populated them with videos we've recommended in the past:

There are already many quality embedded systems playlists on YouTube. You can find our playlist recommendations in the Saved Playlists view and on the channel home page.

We will feature other channels that regularly publish quality embedded systems content, such as:

We will be continually expanding these playlists as we discover new videos. If you have videos to recommend to the embedded community, simply respond to this email.

Around the Web

We've grouped our May reading recommendations by these categories:

  • Industry News
  • Product Development
  • Firmware
  • Hardware

Industry News

Microsoft bought ThreadX, which is our favorite RTOS. Now we see that major tech companies are individually sponsoring an IoT/RTOS solution: Microsoft has ThreadX, Amazon has FreeRTOS, Intel has Zephyr, and Google has Fuchsia.

The Zephyr Project made their first long-term support (LTS) release. Here is more information about the plans for Zephyr LTS:

Product Development

Not all signal processing applications need a fully-fledge Digital Signal Processor (DSP) All About Circuits provides helpful tips for selecting a microcontroller to use instead of a DSP chip for signal processing applications:

These relate to another helpful All About Circuits article published last month: How to Choose the Right Microcontroller for Your Application.

Firmware

All About Circuits published a high-level Introduction to Real-Time Embedded Systems

Niall Cooling cleared up common misconceptions about mutexes and semaphores in Mutex vs Semaphore: Pt 1.

David Bergfeld walks through a thorough state machine design exercise in Software Design of State Machines.

Avinash Aravindan concluded his Flash 101 series with Error Management in NAND Flash. If you haven't followed along, here are the first five articles:

  1. NAND Flash vs NOR Flash
  2. The NOR Flash electrical interface
  3. The NAND Flash electrical interface
  4. Types of NAND Flash
  5. Errors in NAND Flash

Colin Walls Some More Embedded Software Programming Tips

Hardware

Microcontroller datasheets are massive tomes which can intimidate new engineers. All About Circuits shared two helpful guides for navigating processor datasheets:

Lee Teschler at Microcontroller Tips discussed the Hidden Pitfalls of IoT Antenna Design

All About Circuits provided a helpful guide to Understanding Amplitude Quantization Error for ADCs.

EETimes gave us a look at the power systems engineering for satellites in Taking Care of Power Systems for Space Missions.

Embedded Job Postings

iRobot is hiring for several embedded software roles in Boston, MA and Pasadena, CA. Please check out all our open jobs here: https://irobot.wd5.myworkdayjobs.com/iRobot and email Chris Svec (csvec at irobot.com) if you'd like to learn more about building robots that help make people's lives easier.

Hiring Embedded Engineers?

Is your company hiring for embedded systems roles? Send us a short (< 100 words) job ad with a link to the description and we will be happy to include it in our newsletter.

Website Updates

We expanded the Glossary with additional terms:

  • Bottom-half handler
  • Top-half handler
  • LMA
  • VMA
  • XIP

We expanded the For Beginners page with Miro Samek's Modern Embedded Systems Programming Video Course and links to help readers learn RTOS concepts.

We updated the following articles with corrections and new content:

New Articles

We published the following articles in April:

These were our most popular articles in April:

  1. What can software organizations learn from the Boeing 737 MAX saga?
  2. Creating a Circular Buffer in C/C++
  3. std::string vs C-strings
  4. Installing LLVM/Clang on OSX
  5. Migrating from C to C++: NULL vs nullptr
  6. Demystifying Microcontroller GPIO Settings
  7. Jenkins: Configuring a Linux Slave Node
  8. An Overview of C++ STL Containers
  9. C++ Casting, or: "Oh No, They Broke Malloc!"
  10. Jenkins: Running Steps as sudo

Thanks for Reading!

Have any feedback, questions, suggestions, interesting articles, or resources to recommend to other developers? Simply reply to this email!

While you're waiting for our next edition, check out the website or follow us on Twitter.

Happy hacking!

-Phillip