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 DevOps Articles
- Introduction to Docker for Embedded Software Developers
- Using Docker to Setup an STM32 Build Environment
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++!
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.