|(Image source: Alexandre Debiève on Unsplash)|
Happy New Year! Another year is here and with it are many opportunities for embedded systems developers. As the new year starts, there are many interesting technologies that are going to be shaping the way systems are designed in 2019 and beyond. Let’s quickly examine the top five technologies that developers should be mastering or at least closely monitoring this year.
Technology #1 - Defect Management
In 2018, I spent a lot of time talking about debugging techniques that developers can use to minimize the defects that are in their systems. The fact is, debugging techniques are the last resort to remove defects from an embedded system. The processes that are put in place during the design and development are far more important in minimizing defects. There have been several advances in the last few years that many embedded developers have not been taking advantage of. These include:
- Continuous integration servers
- Hardware-in-loop testing
- Unit testing
- Automated testing
There is a lot that developers can do in these areas to reduce the time spent debugging. In many cases developers tell themselves that they will look into these items or implement them after the next delivery when there is more time. The fact is, there never is more time and teams need to look at these technologies and spend a little time each week working them into their development processes. Yes, this will take time away from delivery at the moment but they will actually reduce development time in both the long and short run.
Technology #2 - Cloud Connectivity
Many “traditional” embedded systems are, or were, disconnected systems that had no access to the Internet. With the big push for the IoT, many systems are now adding wireless or wired connectivity and streaming loads of data up to the cloud for processing and storage. The traditional embedded software developer in general doesn’t have much experience with setting up cloud services, working with MQTT, or the many other technologies that are required for use with the cloud. There are several activities that developers should put into their calendars this year in order to become more familiar with cloud connectivity. These activities include:
- Setting up a cloud service provider such as Amazon Web Services, Google Cloud, etc
- Set up private and public keys along with a device certificate.
- Write a device policy for devices connecting to the cloud service
- Connect an embedded system to the cloud service
- Transmit and receive information to the cloud
- Build a basic dashboard to examine data in the cloud and control the device
If developers are able to do these things, they will have built a good foundation from which to master cloud connectivity for their embedded systems.
Technology #3 - Security
With many devices now connecting to the cloud, a major concern facing developers is how to secure their systems. There are several new technologies, more than I could list in this post, that will be impacting how developers design their systems. These technologies vary from using security processors, Arm TrustZone, and multi-core microcontrollers to partition secure and non-secure application code. While there are several hardware technology sets available, the available software solutions have been expanding at an extraordinary rate. Many of these technologies are just being introduced and 2019 is an excellent year to focus in and master security concepts and apply them your embedded systems.
Technology #4 - Machine Learning
A major theme that we are going to hear about nearly non-stop in 2019 is about moving machine learning from the cloud to the edge. Machine learning has been a force to reckon with in the cloud and the ability to move machine learning to microcontroller-based systems is going to be a game changer. Whether the technology is really mature enough at the moment is open to debate, but it’s a technology that is coming to a microcontroller-based system near you very soon. For that reason, it’s a technology that developers need to start to learn in 2019 so that when it’s mature and ready for use, developers are ready and not fighting a multi-year learning curve.
Technology #5 - Low Power Design
Embedded designers have always had to contend with battery operated devices but with more IoT connected devices and sensor nodes, low power design is becoming a crucial design criteria that can dramatically affect the operating costs of a company. While we often hear about how little current a microcontroller can draw in its deepest sleep mode and how energy-efficient parts are, designing a system that can reach those low power states can be challenging.
Developers working with battery operated devices need to stay up to date in several key areas:
- Wireless radio technologies
- Hardware energy monitoring
- Software energy consumption monitoring
- Battery architectures
- Power regulators
In this post, we have examined the technologies that have the potential to have the greatest impact on the way we design and develop embedded systems. While we should be looking to master these technologies, each area itself could require years to master. It’s important that developers select at least one technology to work at mastering and then at least keep abreast of the basics and advancements in the other areas.
Jacob Beningo is an embedded software consultant who currently 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 more than 200 articles on embedded software development techniques, is a sought-after speaker and technical trainer, and holds three degrees which include a Masters of Engineering from the University of Michigan. Feel free to contact him at [email protected] or at his website, and sign-up for his monthly Embedded Bytes Newsletter.