home |
About |
Contact Us |
Editorial Info |

   feature    columns


Help Wanted: Embedded Engineers
Why the United States is losing its edge in embedded systems…

By Mike Anderson, Chief Scientist, The PTR Group, Inc.

Embedded Systems are Everywhere

I read a few years ago that the average individual in an industrialized nation came into contact with over 48 embedded systems every day. With all of the cellular phones, portable media player/MP3 devices, global positioning system (GPS) units, set-top boxes, digital video recorders, automobile telematics systems and digital televisions that were introduced over the past couple of years, I suspect that this number is probably on the low side today. We are surrounded by embedded systems comprised of custom hardware and software designs.

So, just what is an embedded system? Who develops them? What is special about embedded systems and the people who build them? And, more importantly, why is it growing harder to find these people to hire them? I’ll try to answer these questions and more within this piece.

An embedded system can be characterized as any device in which you inherently know there must be a computer in there someplace, but you’re just not sure where. This is not to be confused with real-time systems. Systems that have real-time deadlines may or may not be embedded, and not all embedded systems have real-time deadlines. There is considerable overlap for sure, but they are not one and the same.

For instance, a GPS locator has a computer inside. I suspect that everyone knows that. But, we typically don’t attach a keyboard and mouse to it although it’s probably one of the most computer-like of the embedded systems since the user must input addresses in some way. Nor does the user typically vaporize if the device takes 30 seconds to acquire a satellite fix rather than 15 seconds. The GPS is an embedded device, but we probably wouldn’t classify it as a real-time device.

On the other hand, anti-lock brakes are computer controlled as well. Our input into the anti-lock brakes of the car is limited to the brake pedal. The rest of the operation is completely based on other sensors and the environment. It is clearly an embedded system. However, the anti-lock brake system is a real-time system as well. If it doesn’t function within the real-time deadline constraints, then people get injured.

Nonetheless, these two examples have much in common. Both operate in a constrained resource environment. Both must be economically viable. Both must interact with the user and their surroundings (satellite downlink in the case of the GPS and the slickness of the surface for the anti-lock brakes). Both have hardware and firmware/software that are running on fairly low-power devices. It is because of many of the similarities that embedded systems and real-time systems are frequently grouped together.

Embedded Systems Design and Engineering Economics

Embedded systems development typically requires a different mindset than we find in the desktop environments. Embedded systems are frequently resource-limited. These systems have low-power processors, possible battery operation, and limited memory and storage. And yet, there are increasing demands from consumers for high-end features such as video/audio playback, cameras and satellite connectivity ala GPS. While trying to satisfy these requirements, the embedded system developer also needs to consider the cost of the bill of materials (BOM) for the unit. We need to keep in mind that there may be literally millions of a particular cell phone or GPS unit produced. Embedded designers need to pack in lots of features, but keep the costs down so the units are affordable.

Due to the desire to keep costs down, embedded developers need to squeeze every last bit of performance from the hardware. Higher processor speeds generate more heat and that heat has to be dumped somehow. We certainly do not want a cell phone with a fan built in. Nor do we want a device that gets so hot that we cannot handle it comfortably. So, at least some embedded designers need to understand thermal loading and MIPS/watt ratios. Nonetheless, virtually all embedded system developers need an intimate knowledge of the hardware and how the software will interact with it. This knowledge is often times down to the hardware-register level of the device.

Another, often neglected, aspect to the engineering economics of embedded systems relates to the programming languages we use. Languages that consume lots of RAM because of virtual machines or code generation cause the designer to increase the chip count and/or memory density. Higher memory densities often generate more heat and consume more power. This makes the device more expensive to produce and less desirable to the consumer.

For example, a single C++ catch/throw on the PowerPC can add as much as 2,500+ instructions to the code size. And the use of dynamic constructors and destructors will cause many underlying operating systems to lock and unlock interrupts as the memory is allocated and de-allocated when the application enters and exits scope. That’s not to say that C++ is a bad language or that it is not acceptable in embedded systems. But rather that the embedded developer needs to know the effects on the overall system cost of the languages and programming techniques that are used.

So, where does the embedded system designer gain this type of knowledge? Currently, companies are paying to have developers learn these concepts on the job. Unfortunately, this means that they will make lots of mistakes on the job as well — it’s just part of the learning process. But, these mistakes hurt U.S. industry and can cost jobs and reputations depending on the severity of the errors. Another aspect of this on-the-job training is that once the company has invested in training a developer, that developer is now much more valuable and likely to be hired away by a competitor, which means the investment in training is lost to the company who paid for it.

What many in the embedded systems community would like to see is that new graduates already have some of this knowledge from their college/university education. The establishment of embedded systems development specializations in higher learning institutions would go a long way in preparing students who choose this path to be immediately useful in development roles when they leave the university/college setting. Consequently, the cost of hiring a “fresh-out” is greatly reduced because the new hire doesn’t need as much training in embedded development concepts, but rather just the specialization of the application. For example, they need to learn how cellular phones work rather than how to boot and run from flash memory.

The ability of a new hire to “hit the ground running” could save U.S. embedded systems companies millions of dollars each year. This is money that could be reinvested in additional research and development to make them more competitive in the world market, or simply yield a higher return to their investors. Regardless of what is done with the “savings,” the incoming engineer would make U.S. companies more productive.

The U.S. Embedded System Developer Shortage Crisis

This brings us to the current state of the U.S. education system. There has been considerable press as of late concerning the dwindling numbers of engineers that are graduating from higher learning institutions. If we are to believe some sources, engineering, in general, is facing a crisis of sorts.

Various studies have produced reams of data on the growing shortage of engineers here in the U.S. These statistics are then used as leverage to try to raise the number of H-1B visas granted in the U.S. to make up for the shortfall. Others may argue that the decline in numbers of engineers is merely a manipulation of the statistics to justify bringing in relatively cheap labor from outside the U.S. and depressing wages. I’m inclined to believe that there is perhaps a grain of truth to both viewpoints. However, I feel that it is not really the numbers of graduates, but rather their understanding of computing in general that is alarming.

Engineering is not easy. Being a successful engineer takes discipline and a desire to “make things work.” And we rely on colleges and universities to provide the foundation of education so that graduating engineers can be successfully utilized to make the products society has come to depend on such as the cellular phones, GPS locators, MP3 players, anti-lock brakes and much more.

Electrical engineers, computer engineers and computer scientists are all likely candidates for embedded-systems engineering positions. The electrical and computer engineers typically have some background in computer hardware and computer architecture. And even if they are not trained in software development, they can usually be brought up to speed in a few months. Unfortunately, it is the computer science (CS) graduates that are failing to make the grade, so to speak. As a CS major myself, I can tell you that what I learned as CS in my masters program 20 years ago was much more hardware/architecture focused and bears little resemblance to today’s CS curricula.

Today, a CS education is more like information technology and focuses on database and Web design with a smattering of Java and data structures thrown in for good measure. Unfortunately, such coursework prepares graduates for types of jobs that are commonly offshored. I have even overheard parents telling their children not to go into computers/engineering because their jobs will simply be sent outside of the U.S. and they will end up unemployed! This kind of mindset might be largely responsible for any shortage in students entering engineering, whether perceived or actual.

However, it has been my experience that the folks being brought in on H-1Bs are no more educated in embedded systems development techniques than our home-grown engineers. In fact, as someone who has provided embedded systems training seminars over the past decade, I can attest to the fact that very few engineering graduates, regardless of their country of origin, understand the issues of embedded systems development. In addition, all of the training investment simply disappears if the H-1B holder goes back to their home country. This becomes a brain-drain of sorts and makes the U.S. less competitive. If the United States is going to allow entry to H-1B visa holders, then we need to provide mechanisms for extensions for key technology areas to maintain the brain trust.

So, does the United States have a shortage of engineers? Well, if we are talking about engineers who understand how computers work, then I’m afraid we do. I can understand not wanting to get into the nitty-gritty of bus transceiver logic, etc. Some folks like that level of design, and I’m happy that we have them. But, as embedded systems developers, we must all understand the effects of memory management units (MMUs), caches, instruction pipeline flushes, scheduling policies, context switches and the like, to be effective in creating working embedded systems.

As for today’s CS programs, it seems that long gone are the computer architecture classes, writing code in assembly language (or even C at this point) and engineering software economics. In fact, a large number of CS majors apparently believe that everything can be implemented in a virtual machine and that both memory and central processing unit (CPU) cycles are infinite. Based on a typical x86-centric desktop computer view, these observations are perhaps less unrealistic. However, the net result of this perspective is the code bloat we perceive in certain operating systems and applications. Certainly, our “lean and mean” perception of what it means to be an embedded system is not consistent with the infinite CPU and memory viewpoint.

The educators and curricula developers are quick to claim that they are simply teaching their students what the industry is demanding. This is often based on a quick look at the local want ads or a search of employment sites on the Internet. Java, PHP and HTML developers all seem to be in high demand. However, these are again skill sets that are easily outsourced. Proximity to the hardware and the hardware designers as well as test equipment is precisely why it is so much harder to outsource embedded development jobs.

The misreading of demand is not entirely the fault of the colleges and universities. No one has measured comprehensively the demand for embedded systems skill sets. This is because embedded systems are pervasive and integrated into so many products. The automotive, entertainment, telecommunications, and aerospace industries all need embedded systems developers. Unfortunately, it’s hard to decipher the need for embedded systems skill sets from a job request that says something like “Wanted: Automotive Telematics Engineers” unless you understand what that entails.

At the recent Ubuntu Live conference, I had an opportunity to sit and discuss the state of embedded development curricula with many educators. I asked why so many electrical engineering, computer engineering and CS majors are matriculating without an understanding of embedded systems. Some of the answers were quite troubling, but those are a topic for a later discussion. However, the most prevalent answer was related to the cost of setting up an embedded system lab, the lack of embedded systems textbooks and the cost of producing an embedded systems curriculum.

The lab cost issue is a red herring based on woefully out-of-date information. Many instructors felt that labs needed expensive logic analyzers and target computers, ala the old Motorola Exorcisor, which their departments simply could not afford. Many were unaware that complete target processors like the XScale PXA-270 with 32 MBs RAM and 8 MBs of flash could be had for a price comparable to a set of textbooks. And, much embedded work can be accomplished with a simple, parallel-port based Joint Test Action Group (JTAG) interface device that can be purchased for less than $100.

The lack of a textbook to teach from is more difficult to address owing to the time needed to develop such a book. However, there are several examples of books about the embedded Linux space that could be used as a text for such a curriculum. These books can be used in the interim while dedicated embedded systems texts are developed.

A Call to Action

If the United States is to maintain a leadership role in technological innovation, we need to help our education system understand the skills that their students will require to be successful. This means the development of significant embedded systems programs at our colleges and universities. And, the most significant issue for these schools will be the time and funding it will take to develop an embedded systems curriculum. On this topic, organizations like the IEEE, the Association for Computing Machinery (ACM) and the U.S. Department of Labor need to work in concert with leading corporations to fund the development of curricula to help the United States regain our edge in engineering in general, and embedded systems in particular.

And this is not to say that there aren’t good embedded systems programs in a few colleges and universities. Unfortunately, they are more the exception than the rule. We, as an industry, need to help higher-learning institutions understand the importance of this “close to the metal” type of computing and encourage them to expand their successes and replicate them at other colleges and universities.

We must involve industry leaders such as Intel, FreeScale, Texas Instruments, Analog Devices and others, in coordination with engineering organizations such as the IEEE and ACM, to help the education community to understand the importance of teaching embedded systems theory and development techniques/concepts to their interested students. This coordination may also mean the development of an embedded systems academic program that can be simply handed to universities and colleges to help remove the barrier of developing the curricula from scratch.

Since there is no big push for engineers like we had during the Apollo space program years, industry, the U.S. Government and higher learning institutions also need to work harder to encourage younger students to enter engineering. There are some great success stories with many of the robotics competitions and similar projects for high school students. We need to build on these to capture the imaginations of younger students.

What might be needed here is a summit of all of the interested parties. Let’s get some dialog going and elevate it to a national priority. Perhaps someone in the U.S. Senate, such as Sen. Chuck Grassley (R-Iowa) or Sen. Dick Durbin (D-Illinois), who are both significant opponents of H-1Bs, could be champions of such a meeting. For that matter, maybe we need a national “mission,” a la the Apollo space missions, to get things back on track and regain momentum. Perhaps a project that focuses on eco-friendly technologies, which tend to rely on embedded systems, is the right way to go. Who knows, we might be able to reduce our dependence on foreign oil and create a generation of engineering innovators at the same time.

We must act soon. Many of the “greybeards” of embedded systems development are getting close to retirement age. We must try to capture their collective knowledge before it’s lost and pass it on to the next generation of engineers. The U.S. embedded systems industry has a systemic problem that needs a holistic solution before we lose our technical edge. Of course, that’s just my opinion. What do you think?




Mike Anderson is chief scientist at The PTR Group, Inc. where he is responsible for providing embedded systems consulting and courseware creation. Mike has more than 30 years experience in the areas of computing and embedded systems development and was a former chairperson of the VxWorks User’s Group. He holds a Bachelor’s degree in Mathematics from the University of South Florida and a Master’s degree in Computer Science from George Mason University.

Comments may be submitted to todaysengineer@ieee.org. Opinions expressed are the author's.

Copyright © 2008 IEEE

 search archive


reader feedback
  search by date
also in this issue
Career Focus: Circuits & Systems
Cogent Communicator: How to Listen
Backscatter: Toys for Techies
Lessons of the Internet Age: The International Telecommunications Union and the Internet Society
NCEES Model Law Revisions Impact Professional Licensure Education and Experience Requirements
Free IEEE-USA E-Books for Members in December 2014 and January 2015
Your Engineering Heritage: Which Stimulates Innovation More, War or Peace?
World Bytes: American Ingenuity Awards
Tech News Digest: December 2014