artificial intelligence embedded systems

I was fortunate enough to have the opportunity to attend the 2018 Embedded Systems Conference (ESC) in Boston on April 18th and 19th. As an engineer at Software Design Solutions (SDS), I attended as many class sessions as possible, aiming to learn about new technologies and design approaches—lessons that I can take back and apply to projects for current and future clients.

I would like to share some highlights from ESC so you can benefit from my key takeaways. Here is a brief rundown of my favorite sessions.

An Introduction to RTOS

I began my ESC experience with an introduction to real-time operating systems. This was primarily a refresher course for me, but it’s worth mentioning here as the information covered served as a basis for most of the other sessions I attended. Topics covered in this class were referenced throughout the conference, making it a great way to kick things off.

ARM v8-M Trust Zone Primer

ARM v8-M is a new type of processor with proven TrustZone technology. It provides a way to prevent normal programs from accessing data they should not be able to access. It is ideal to use when building devices that need to keep information secure. The class covered the technical details of ARM v8-M, how to use it, and how to work with the debugger to debug programs with it. This is a relatively new technology, so the session was a great learning experience for me.

Mars Ate My Spacecraft

This session focused on failures and mistakes — and how we can leverage them. Using space exploration and technology as an example, attendees learned how easy it is to make mistakes when it comes to software. Projects are mismanaged, and we often find ourselves making the same mistakes repeatedly. But we can learn from our mistakes. A key takeaway quote from this session says it all: “Failures aren’t total failures if you learn something from them.” I found these words inspiring, and will keep them in mind during future projects.

Really Real-Time Systems

Embedded systems, by their very nature, have limited capability compared to a desktop or PC, especially in real-time systems. Time becomes a limited resource; only so much work can be done per second. This session demonstrated practical ways to include time in your design so you meet performance requirements.

One method to measure CPU utilization I found to be particularly interesting was the use of an older analog voltmeter with a needle. In the idle-priority thread loop, have it continuously toggle a GPIO line. The duty-cycle of the GPIO output pulse is maximum at full idle, so the voltmeter is calibrated to full-scale at that value. As the CPU steals from idle-time, the duty-cycle of the GPIO is reduced, showing a drop on the voltmeter reading. This measurement can be done in real-time, and does not add a burden to the processor. What a useful approach and a novel use of an old device!

Write Safe and Secure Application Code with MISRA C:2012

MISRA C is a subset of the C programming language. This session focused on how MISRA C can be used to design for security-critical applications. This is an extension from its current primary use in safety-critical applications. The same qualities that make an application safe also make it secure, so MISRA C can be used for both.

Jumpstarting Code Development to Minimize Software Bugs

Debugging an embedded system can eat up time and resources. This class shared best practices around embedded system development to streamline this process. Key tips include:

  • Have tools in place upfront to detect a defect immediately.
  • Use trace tools to debug and to obtain feedback on CPU and memory usage and other timing measurements.
  • Be disciplined in your process and do not skip steps.
  • Do not let today’s management priorities — which may pressure you to move too quickly — distract you from the proper process.

I also spent time on the exhibition floor, where I saw some very interesting technologies and devices that I am excited to consider for future projects. Two in particular stood out:

  • A new computer that was actually two computers in one — you can run two different operating systems on one physical CPU (similar to a dual-core CPU). You can run Linux on one while running Windows on the other, for example. And they can speak to each other over shared memory. This opens up many possibilities, especially for work we do on client servers.
  • Smart batteries were also on display. These batteries have the ability to communicate over Bluetooth so they can be monitored for replacement or charging. The current emphasis on low power makes these types of batteries very useful.

I look forward to using the tips and technologies I learned at the 2018 Embedded Systems Conference. Our team at SDS hopes you find this retrospective useful as you plan future projects or consider attending ESC in 2019. I certainly hope to return next year.