5 Embedded Technologies to Master in 2022

Happy New Year! I always enjoy the start of a new year. The opportunity to reflect on what went well and didn’t last year and continue making improvements is fun. Every year, I take some time to examine different embedded technologies, mainly related to microcontroller-based systems. The purpose of reviewing these technologies is to provide suggestions on the technologies developers and teams should investigate and start mastering. These technologies can range from ignored to cutting edge. This year, there are five technologies that I think can potentially dramatically change how teams design and build their system this year.

Embedded Technology #1 – Embedded DevOps

Software DevOps has made dramatic improvements to general software development over the past decade or so, but embedded developers have generally ignored it. I interact with hundreds of companies over the course of a year, and very few that I encounter use or have leveraged DevOps successfully. I suspect this is partially because most electrical engineers and embedded software developers have not been exposed to it in school or early in their careers. So, while they may know it exists, the constant firefighting on projects has prevented them from successfully building out their DevOps processes.

I have several recommendations for developers looking to stop firefighting and bring sanity back to how they develop software. First, learn how to use Docker to set up an embedded toolchain. Next, automate your build processes using a CI/CD server. Finally, as time allows, continue to improve your CI/CD process by adding code analytics, unit testing, integration testing, and so forth. Of course, there will never be time to sit down and just do it all, so instead, take small steps each day and week, and by the end of the year, you’ll be on your way to having a fantastic DevOps process.

A few DevOps related articles from Beningo Embedded Group can be found below:

Embedded Technology #2 – Automated Hardware-In-Loop Testing

Besides debugging, the number one issue I see developers and teams struggle with is testing. There are several reasons why testing is always an issue, such as:

  • Testing is often still left as a manual process
  • Automating tests on hardware seems complicated and time-consuming
  • Teams are in a hurry to code, and testing is an afterthought
  • Software interfaces are not designed properly

Hardware-In-Loop testing is not anything new, but it is a capability that I see is often neglected. As a result, testing could be overlooked because you need to consider your DevOps to do it right.

There are many hardware-in-loop technologies, and I don’t want to single out any individual solution. I would recommend taking some time, though, to evaluate if automating testing on target could dramatically improve code quality and development costs. If the answer is yes, set a few simple goals to investigate specific technologies and incrementally add those capabilities to your testing regime. Over time, you’ll slowly remove manual testing and replace it with automated tests that will save everyone time, stress, and your company money.

Embedded Technology #3 – Multicore Microcontroller Development

I could be wrong, but my research and feelings seem to suggest that the use of multicore microcontrollers is going to skyrocket over the next few years. There are several reasons why I see them becoming ubiquitous such as:

  • Many applications need isolation run-time environments
  • Low-power applications can benefit from turning on and off feature targeted cores
  • Separating applications into run-time domains make sense architecturally
  • The cost for multicore microcontrollers is dramatically falling (with some supply chain issues set aside).

If you aren’t using a multicore microcontroller today, I wouldn’t be surprised if you are within two years. (Although there are still a lot of 8-bit and 16-bit parts out there, so it does depend on your industry).

I have two suggestions for learning more about and getting hands-on with multicore processors. They both involve taking a free course through the DesignNews Digikey Continuing Education Center (CEC). The first course is entitled “Introduction to Multicore RTOS-based Application Development” and can be found in the 2021 Q1 archive (or links and the general information found here). The second course is upcoming at the end of January 2022, entitled “Getting Started with the Raspberry Pi Pico,” a $4 development board that uses an RP2040 dual-core Arm Cortex®-M0+ processors.

Embedded Technology #4 – Arm TrustZone

We live in a world where security is a significant driver or should be the primary driver for the products that we design and build. Therefore, we need to master security technologies in 2022 and beyond to protect our intellectual property (firmware) and our customers’ data and privacy.

Several security solutions are available for microcontrollers, including using multicore processors to create isolated run-time environments. Still, I thought it made sense to single out TrustZone as a technology to learn. There are several reasons for this, such as:

  • New Arm microcontroller architectures have a TrustZone option
  • TrustZone tools are finding their way into most commercial and even open-source tools
  • TrustZone provides a single-core solution that is closer to the software model many developers are familiar with

I’ve worked with several clients on their security solutions, and the best advice I can provide is to start early. Learn the technologies before you need not while you need them.

Embedded Technology #5 – Learn C++

I was tempted to make my last technology machine learning; However, while exciting things are happening with machine learning for embedded, I’m not encountering a lot of companies actively deploying or using it on microcontrollers. The companies using machine learning in microcontroller-based environments are companies trying to get funding for their next investment round. Instead, I think anyone a Python or C developer should be learning C++.

C++ has slowly, over the years, become more and more popular in embedded applications. The standard continues to be updated and provides developers with modern object-oriented tools to design and build their systems. Over the past two years, I’ve seen more C++ projects written at companies than C! This is good news unless you don’t know how to program in C++!

Conclusions

There are a lot of technologies out there this year that will dramatically change how we design, build, test, and deploy our embedded systems. I hate that I’ve only been able to cover five. However, I think these five give readers more than enough to focus on this year. Remember, don’t spread yourself too thin by trying to do too much at once! Instead, focus on 1 – 3 key technology drivers and then move your experience and mastery level up each day or week. It won’t take long before massive changes have been made, and then you can move on to the following key.

4 thoughts on “5 Embedded Technologies to Master in 2022”

  1. Thank you. This newsletter is right on changes I need to make.

    The docker recommendation is not likely to be followed as I have several used laptops acquired at $100 each. That means I can dedicate a laptop to each project. If, to do a good job, requires a lot of I/O pins then the Raspberry Pi 4B is being used as I can acquire them at the same price point.

    As for the C++ recomendation, I use C and C++ heavily. The problem I have had with C++ is my bosses want to define private languages. They don’t know how the code words and they are left high and dry after I leave.. I have no difficulty using C with standardized libraries and C++ for emulations of hardware and also twinning with hardware in the loop. That last usage keep you to a public language and not private because it is pinned to the hardware.

  2. C++ has definitely evolved quite well over the past decade or so. Time was when someone would look at you sideways if you suggested using C++ for an embedded project, but not now! And for any project, embedded or not, C++ is so much better now than it once was with the changes made to bring in modern C++ since about C++11.

  3. Interesting list, I’ve been actively working on 1 & 2 for a new project at work, slowly getting there.
    On number 5, C++, do you have any recommendations on resources? Last I looked, a couple years ago now, there were mention of many features that shouldn’t be used inembedded but no good resources that focused on the embedded side of things.

    1. Awesome!

      I definitely have a few resources to point you towards. First, I highly recommend Real-Time C++ by Chris Kormanyos. Great book. Niall Cooling also writes a lot of great articles about C++. You could check some of them out at https://blog.feabhas.com/category/programming/ . I’ve not taken any of his C++ courses, but from my interactions with him, listening to his talks, etc, I would bet they are pretty good.

      Thanks for the comment and if you need additional resources, just let me know.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.