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 to continue to make improvements is fun. Every year, I take some time early on to examine different technologies in the embedded systems industry, particularly related to microcontroller-based systems, and provide suggestions on the technologies that developers and teams should investigate and try to 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 partial because it’s something most electrical engineers and embedded software developers have not been exposed to 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 who are 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. 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.
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 difficult 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. Testing could be neglected because to do it right, you do need to consider your DevOps.
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 again, 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 over the next few years the use of multicore microcontrollers is going to skyrocket. 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 coming down (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 2 years. (Although there are still a lot of 8-bit and 16-bit parts out there, so it does depend on your industry).
There are two suggestions that I have 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”, which is 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 major driver or should be the major driver, for the products that we design and build. We need to master security technologies in 2022 and beyond to protect our own intellectual property (firmware) and our customer's data and privacy.
There are several security solutions available for microcontrollers, including using multicore processors to create isolated run-time environments, but I thought it makes 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 there are interesting things happening with machine learning for embedded, I’m not encountering a lot of companies actively deploying or using it on microcontrollers other than to get funding for their next investment round. Instead, I think anyone who is 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 being written at companies than C! This is good news unless you don’t know how to program in C++!
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! 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 huge changes have been made and then you can move on to the next key.
Jacob Beningo is an embedded software consultant who works with clients in more than a dozen countries to dramatically transform their businesses by improving product quality, cost, and time to market. He has published too many blogs to count embedded software architecture, processes, and development techniques, is a sought-after speaker and technical trainer and holds three degrees, including a Master of Engineering from the University of Michigan. You can contact Jacob at [email protected] and sign-up for his monthly Embedded Bytes Newsletter.