Design Article
Hardware/Software Disconnect
Jack Ganssle
11/10/2008 12:08 PM EST
That was a lot of fun!
But systems were simpler back then. 8 KB of code was a lot, and SMT hadn't turned board assembly into an art practiced only by the caffeine-deprived. 12 bit A/D converters were expensive, which meant those of us working in the analog domain had, in general, smaller noise issues than today's systems that measure femtoamps. Low clock rates dodged Maxwell's Laws and programmable logic was merely a dream.
Though a huge number of embedded systems are still small, often containing a bare sliver of silicon embodied in a small PIC or other high integration CPU, big applications are common. Firmware can consume hundreds of thousands or even millions of lines of code. Hardware people design with multi-hundred pin chips running with tiny noise margins, while wrestling with EMI and ESD requirements that were unheard-of decades ago.
It's natural that engineers started to specialize, at first to divide the work into manageable chunks, and later because of the specialized knowledge required to deal with advancing technology and requirements.
Today an increasing number of embedded systems developers live in their own domain, with little knowledge of other aspects of the system they're building. That's a natural part of the progression of knowledge: as a technology or science advances people's expertise at their own arcane area grows while their breadth narrows.
But it's interesting how that, in a single generation, we've progressed to the point where many firmware developers can't answer simple questions about their hardware platform. In casual discussions with engineers I'll often ask about their system's clock rate, or supply voltage, or any of a number of hardware issues. Quite a few can't answer; in some cases the software people don't know what the target processor is.
The reverse is often true as well: ask a hardware developer about the firmware's data structures or which RTOS is used and you might get a blank look. The FPGA whizzes are sometimes clueless about classes and analog gurus can be completely ignorant about PWM control.
I've worked with groups that use embedded Windows or Linux simply to minimize their need for firmware people, who can be hard to find and a lot more expensive than Visual Studio programmers. These GUI people may have little idea about the physical instantiation of their product.
This natural and necessary specialization has created a new job category, one that doesn't even have a name, which I call the systems guy or gal. The person who does have a deep understanding of all of these interrelated issues, who can sling some VHDL and C while probing a low-noise preamp. Sometimes they're the computer experts who can tie together the digital hardware and code to interface with the RF crowd to help the entire team solve a challenging multipath problem.
These systems people are invaluable and increasingly hard to find. At times I wonder if they are a vanishing breed. But other fields have managed to keep systems folks with armies of specialists. Medical GPs, for instance, look at the whole body.
What is your experience? Are systems folks a dying breed?
Jack G. Ganssle is a lecturer and consultant on embedded development issues. He conducts seminars on embedded systems and helps companies with their embedded challenges. Contact him at jack@ganssle.com. His website is www.ganssle.com.




krwada
11/10/2008 5:03 PM EST
Things have changed a lot in the last 10 or so years. At one time, it was enough to know:
- C
- rudimentary interface such as I2C, RS232
- PIO
- interrupts
- how to roll-your-own using the while(1) construct
...
Nowadays, you need:
- Some understanding, or knowledge of synthesis, (VHDL, CUPL, Verilog)
- Off-the shelf OS, (vxWorks, pSOS, Nucleus, Thread-X) ... and Linux!
- An understanding of Layer-2 through Layer-4 protocols
- Embedded TCPIP
- Signal processing
- Crunching complex math in real time
Yes indeed! The real-time world has changed a lot!
Sign in to Reply
ryujip
11/11/2008 3:35 AM EST
i started from hardware then gradually became firmware and now i'm a systems engineer... in my view systems engineers had been around for quite sometime, it just so happen that that they dont get to be acknowledged more often due to the nature of their work, which happens to be 50% technical + 50% administrative.... I also totally agree with you Jack, systems engineer who is well rounded in software+hardware+overall system is hard to find, but if companies should start now, maybe the years ahead we'll have more project that are well designed and well implemented. cheers.
Sign in to Reply
Lonnie VanZandt
11/11/2008 3:31 PM EST
The Department of Defense is now calling us Software-centric Systems Engineers. The good news is that if one is willing to try, one can still strive to understand the concepts and issues of the respective engineering disciplines and can offer great value as a savvy generalist with expertise in one or more disciplines. The bad news is that most folk aren't trying.
Sign in to Reply
Snehal@renu
11/12/2008 12:30 AM EST
I started as a firmware developer and realized that if you are to work in embedded industry for next 40 years keeping alive the spark of doing "New and Different" work one needs to work at system level. But, my experience is that work of system level is usually handeled by experienced people who have grayed their hair under the heat of executing cost-effective, resource constrained embedded projects with impossible deadlines. So I agree with the idea that such a breed of engineers is on the verge of extinction. People are system engineers by force and not by choice.
Sign in to Reply
Rotti
11/13/2008 12:37 AM EST
I agree Systems engineering is a dying field. The importance of the field is not understood properly and people assume any sw/hw engineer can perform system engineer's role. Organizations like INCOSE (they provide system engineering certification) should be supported. Atleast by mandating such certifications, the awareness of system engineering field can be increased.
Sign in to Reply
bellampalli
11/13/2008 4:52 AM EST
I fully agree with Jack, I started my career as a embedded engineer ( doing 64Kbyte coding in assembly language) then moved to working on RTOS lost touch with hardware except to easily understand chip specification when required. Became a systems guy to design test systems for automotive ECU validation where i used my both knowledge's to provide optimized high performance system.
Its really difficult to system guys.
Sign in to Reply
Embedded Aspiree
11/18/2008 3:10 AM EST
Earlier and now the System guys are the one who have seen the row of systems developed out of possible hard ships. As it is been mentioned, these days there are many new sciences originated which needs to be perceived to an extent to give birth to a long running system on contrary to the old days. One way of looking towards this problem is ensure this profile would exist in the industry and so gradually it would take shape with the broken domain set, and have best products out. Ultimately System is the combination of many technologies racing, good understanding and synch between them is necessary to have a flawless system.
Sign in to Reply
Yogendra
11/19/2008 4:53 AM EST
Nice article.
I am an intermediate level embedded engineer who started as hardware/firmware engineer doing lot of assembly programming, soldering and circuit debugging... Then I was working on embedded C for then fashionable-8051s. Later I got back to school and completed by masters' degree and now I am working on digital processing aspect of recent embedded systems that have ample RAM and processing.
Naturally, with that track record people tend to see you as a Systems' guy! I think its a rare breed because its all about the opportunities 'bestowed' on you by "grey" haired people to move both in height and bread of the embedded arena.
Sign in to Reply