How embedded development has evolved over the past two decades

As with any development area, embedded systems development is like the ocean: Deep currents largely remain the same, underling a surface that rarely does. At the risk of drowning in the simile, my point is that the foundations of embedded development are fundamentally the same now as they were when engineers had to flip toggle switches on hardwired microcomputers to run machine code. Like those engineers, we’re still trying to monitor external events and respond appropriately. How we get there keeps changing.

On the surface, the hardware, software and methods used to build embedded systems keep getting better – or least, different. As something of a measure of that change, Embedded’s surveys from 1999, 2009 and 2019 offer a snapshot of how embedded development has evolved over the past two decades.

In fact, each survey’s questions themselves reflect some of that change. The 1999 survey had large sections with questions asking about cross compilers, object-oriented design methodologies and in-circuit emulators but relatively little on operating systems. By 2009, the survey had dropped those particular sections and included more about multiprocessor design, operating systems and specifically embedded Linux but topics like the Internet of Things (IoT) and artificial intelligence (AI) weren’t on anyone’s radar. In the 2019 survey, those topics and along with security showed both widespread interest and active use.

It’s difficult to attempt to compare the details of these surveys, because the survey methodologies changed significantly by 2009. In some cases, the same general question was expanded to multiple choice questions where more than one answer was allowed. That adds uncertainty to any interpretation. You’ll see this in the discussion of design capabilities. In addition, some of the results below lack corresponding data from the 1999 survey, so you’ll just see 2009 and 2019 for those. Finally, keep in mind that margin of error in the results typically ranges from about 3% to over 6%, so detailed comparisons are risky. Finally, as someone who’s explored the sorry depths (that metaphor again) of statistical manipulation, having done quantitative survey research and system performance benchmarking in previous careers, <disclaimer>these numbers are for entertainment purposes only</disclaimer>. I certainly found them so.

Applications focus and capabilities

How did the top application segments for embedded designs shift over the past decade? Although industrial and consumer remained in the top five, designs for automotive and IoT applications have begun to dominate (Table 1). It’s probably a safe bet that designs for what we called datacomm in 2009 were subsumed under communications in 2019.

Table 1: Top 5 Application segments (% respondents)

2009 2019
Industrial 30 Industrial 32
Datacomm 24 Consumer 29
Consumer 22 IoT 25
Electronic instruments 16 Communications 19
Aerospace 16 Automotive 17

How did the nature of designs change over the past two decades? The 1999 survey asked multiple questions about building Web technologies into designs. What’s particularly interesting in studying the 1999 survey is that 43% of respondents said they weren’t planning to do so but 14% said they were. I don’t know what exactly was meant by “Web technologies” in that question but let’s hope no one was trying to embed an httpd server into their systems.

More generally, Table 2 shows how three key design capabilities have evolved. The only real change was a huge boost in connected designs from 35% at the beginning of the millennium to a bit over 90% even a decade ago. (I’d argue that the survey methodology left networked and wireless as potentially interchangeable, but that their sum statistically showed the same level of connected designs in 2009 and 2019.)

Similarly, embedded developers have been building battery-powered designs for at least a decade. Sometimes the industry forgets that battery powered design existed well before the rise of the IoT and wearables.

Table 2: Key design capabilities (% respondents)

1999 2009 2019
networked 35 59 49
wireless  n/a 33 42
battery powered  n/a 35 34

Programming language

It’s good to remember that C/C++ wasn’t always the dominant language for embedded development (Figure 1). Factor in some of the other responses buried in each survey, and it’s likely that the rise of higher performance processors reduced the need for assembly level code. Well, that and the fact that only about 37% projects came in on schedule – a figure that didn’t significantly budge in 2019 despite the stated desire in 2009 to fix the development process (see Figure 6 below).

click for larger image

Figure 1: Top development languages (% respondents).

By the end of 2009, open source operating systems (OS) were beginning to displace use of a commercial OS. By 2019, that trend continued. What’s interesting here is that the displacement of the commercial OS wasn’t solely due to the rise of open-source OSs. Custom/in-house OSs also continued to find greater use (Figure 2).

click for larger image

Figure 2: Type of operating system (% respondents).

Processor architecture

Although use of 32-bit architectures remained the same over the past decade, 64-bit architectures gained significantly (Figure 3). One would suspect that this is a simple evolutionary trend as developers move to wider bit widths – from 8-bit to 16-bit to 32-bit to 64-bit – as developers look for greater processor performance and more efficient memory cycles including instruction fetching.

click for larger image

Figure 3: Processor architectures (% respondents).

Separate processors vs multicore devices

Perhaps the clearest trend in the 2010’s was design reduction from multiple processor chips to multicore devices – from multiple chips with the same processor to a homogeneous multicore device or from multiple chips with different processors to a heterogenous multicore device (Figure 4).

click for larger image

Figure 4: Individual processor chips versus multicore processors (% respondents).

Processor decision drivers

The primary factor driving processor choice hasn’t changed in two decades (Figure 5). The availability of software development tools still ranks as the top choice. Toggling in machine code on a panel just isn’t anyone’s idea of a good time. What’s interesting here is that familiarity with the architecture lost major importance since the beginning of the millennium, and both cost and IO/peripheral capabilities have continued to slide in (relative) importance.

click for larger image

Figure 5: Processor choice factors (% respondents).

Technology challenges

Finally, how have perceptions changed on the top upcoming technology challenges? If we look at the top five challenges listed in the 2009 and 2019 surveys, integration, code complexity and software tools continued as key concerns. What’s interesting here is that stated concerns about the development process have faded in the past decade, replaced instead with concerns about low power and security. In fact, the rise of security concerns and steps taken to mitigate threats formed a large of the 2019 survey. In 2009, only 3% of respondents stated security as a concern. As noted earlier, the statistically similar low rate in project on-time performance in 2009 and 2019 suggests that the shift in relative importance in 2019 concerning the development process has less to do with any apparent success in that regard and more to do with the emergence of more critical concerns.

click for larger image

Figure 6: Top technology challenges (% respondents).

So what does this all mean for the 2020’s?

We might extrapolate from these results to suggest that issues like software development tools and managing code size will remain important, and processor characteristics like performance and peripherals will fall in relative importance. On the other hand, the emergence in the 2020’s of only a few new technologies like no-code development tools, quantum computing, and AI cores supporting field-trainable neural network models would seem to present cause for a dramatic shift in design challenges. But will they?

Embedded systems will still require tools to write (or generate) code and likely need to do so for more complex heterogenous multiprocessor hardware designs. Those designs will still need to interface with the physical world but the nature of interfaces might move further away from hardwired interfaces from sensors or cooperating peer devices. Demand for more functionality will continue to rise, driving the need for more performance and enhanced capabilities from hardware able to run more sophisticated applications. Ultimately, embedded system designs for this new decade will still need to interface more efficiently with data sources, execute more complex code with minimal latency and deal with more sophisticated security threats – all the while consuming minimal current from ultra low power sources. We’ll likely be using vastly different approaches, but the goals will remain the same.

Examine the three surveys cited here for 1999, 2009 and 2019 and tell us own conclusions or predictions in the comments section below.

 

Leave a Reply

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