datasheets.com EBN.com EDN.com EETimes.com Embedded.com PlanetAnalog.com TechOnline.com  
Events
UBM Tech
UBM Tech

News & Analysis

Comment


SQS Manager

3/12/2013 12:38 PM EDT

Hello Anthony,
I would like to know if you would be interested in hiring ...

More...



george.leopold

6/8/2012 10:00 AM EDT

Some useful observations from reader Anthony Mendoza, who notes that if you are ...

More...

Struggle continues to plug embedded programming gap

George Leopold

5/3/2012 11:33 AM EDT

Crisis looming?

Barr, who specializes in software design for medical devices and other embedded systems, said he sees little progress toward addressing the embedded programming shortfall aside from his boot camp and a separate effort to get engineering groups like the IEEE to address the issue. The fact that the next embedded boot camp to be held in Maryland in early May has attracted programmers from Belgium, Canada, Mexico and Turkey as well from around the U.S. illustrates the lack of emphasis on embedded programming. “The reason for that is simple: There’s nothing like it in the world,” Barr claimed. He added that his hands-on approach to teaching embedded programming is precisely what is currently lacking in university computer science courses.

Barr said reactions to the boot camp range from, “You helped me integrate knowledge that I had but didn’t know how to use“ to, “Why didn’t someone teach me this 20 years ago?”


Embedded evangelist Michael Barr uses this Venn diagram to illustrate the current status of embedded software programming in the computer engineering ecosystem and why there is a lack of good firmware training.

Explanations vary as to why university computer science departments have deemphasized teaching embedded programming skills based on the C language. Along with trendiness of Java programming, observers also point to the chase for research grants that effectively removes experienced engineering and computer science professors from the classroom. Another reality is that embedded programming teams tend to be smaller (a single hardware designer and a few software engineers, for example), hence the discipline doesn’t generate a lot of job opportunities for computer science graduates.

On the other hand, the relatively few larger embedded programming projects in industries like aerospace usually focus on older technologies. “It’s such a conservative, process-oriented work environment that it turns off” most software engineers, said Barr.

Observers differ on whether a crisis looms if instruction in embedded programming languages like C continues to lag. Responding to the article by embedded systems software specialist Dewar, one engineer noted: “Problem solving is the [No. 1] skill. Specific knowledge of a language is not important. That can be learned. Specific knowledge has a short shelf life in this industry.”

But Barr worries that the lack of C programming courses and the fact that most software engineers fluent in the language are older means that “at some point it becomes a bit of a crisis.” The reason, he added, is that “this touches everything from refrigerators to automotive [to] smartphones [and] better medical devices.” 




george.leopold

5/3/2012 12:25 PM EDT

We are interested in hearing from readers, especially programmers, about their views on what looks like the looming C programming crisis/

Sign in to Reply



jimwilliams57

5/3/2012 3:46 PM EDT

I have been programming since the early 1980's and entered the embedded world about 10 years later. Assembly was my language of choice until I learned C and I still say with pride that I program in assembly language.

In recent years though, when I mention assembly language, or even C, to younger programmers, my comments are frequently met with bewilderment. They seem to have little understanding of the need for such archaic languages.

When looking over resume's I rarely encounter experienced embedded developers under 45 or 50 years of age. I am concerned for the future of embedded development.

Fortunately for my department, a young test engineer on our team recently expressed an interest in developing embedded code. We're teaching him how to program in C. I hope he's a sign of things to come.

Sign in to Reply



Chris756

5/3/2012 4:00 PM EDT

In grad school in the early 80's we built wire-wrapped bit-slice processors. A few of us loved it, "nano programming", and the schools made the progression from Pascal to C which made embedded easier to learn. Now, after 28 years professional experience, and as a campus recruiter I agree that Java is too abstract, and can be done anywhere the employer can afford a PC (anywhere overseas). It's hard to find students who understand it, unless they have a personal interest or great senior projects. Assembly language is reputed to be too scary to many students...

Sign in to Reply



jimwilliams57

5/3/2012 4:09 PM EDT

Assembly language is scary to anyone who hasn't been introduced to it. I believe that if schools would require an intro to assembly language course for all software students you'd find a few each semester that would be bitten by the bug and want to know more. The problem is they don't require it or maybe even don't offer it.

Sign in to Reply



http://www.lulu.com/spotlight/poconoarmchairreview

5/14/2012 1:46 AM EDT

We used to carry laminated cards with machine language codes printed on them, for use in troubleshooting mainframe submarine navigation systems.

Sign in to Reply



t.alex

5/4/2012 2:01 AM EDT

Training is more problematic (requiring hardware, boards, instruments, etc) and more difficult. If the pay is not substantially higher, students won't have any incentive to go for it.

Sign in to Reply



Bari_Ari

5/5/2012 12:21 PM EDT

I see this as another problem with our society in general. This is just not happening in embedded programming. It is happening in every field of science and engineering. I've been wondering for over the past 10 years where have all the engineers and scientists gone?

Most students just want to get rich rather than educate themselves. Society has favoured those with university degrees to the point where a degree outweighs true experience and demonstrable know how in any field. Students feel compelled to get a degree in something that has signs of large financial rewards later. Meanwhile schools have been raising the costs of tuition and now the total student loan debit has just surpassed credit card debit in the US. Why? Since there are fewer jobs available, students are graduating with degrees but can't find work.

Until our society teaches children what is actually helpful to the betterment of all of us vs get yours and just think about #1, what will change? When will society start treating greed and control like potty training and deal with its actual effects on the whole of society?

Sign in to Reply



stefsz

5/7/2012 3:55 AM EDT

Nowadays, anyone that can drag a window with his mouse in a "visual" development environment, place a few buttons and a listbox in it and tie them all up using Java, C#, or what have you, is called a "software engineer". I believe a differentiation between such "software engineers" and real computer engineers, whose knowlegde spans electric engineering, hardware design, assembly and "pure C" programming, but also Java and HTML/XML is imminent. You just can't put the "equal" sign between the two, not also when it comes to wages, and a real computer engineer who complaces himself in dragging windows with his mouse and doing this sort of "visual programming" is underselling himself.

Sign in to Reply



simpletrading369.org

5/8/2012 8:05 PM EDT

== http://www.simpletrading.org/

thank you!!!

Believe you will love it.

We have good reputation, fashion products,

come here quickly== http://www.simpletrading.org/

Opportunity knocks but once

Sign in to Reply



webmasterpdx

6/3/2012 11:03 PM EDT

I think the problem lies in that most of the jobs out there are not related to embedded systems. I love embedded systems with a passion, and will strive with anything to stay in that field, but as an older developer, it's getting harder to find openings. I am also lucky in that I have a strong hardware background. There are many who do not. The problem with the jobs though is that the most frequently exported jobs in the US in the technical fields are the embedded design jobs. Both the hardware and firmware design positions are sent to india, so the field is drying up in the US. The government needs to deal with this and keep the jobs here. Then there won't be a trend for students to not WANT to be embedded developers.

Sign in to Reply



DaveWyland

5/3/2012 2:46 PM EDT

Computers can be used for math theory and practice and for control. Math is pure: it is not connected to reality, by its own definition. It deals in axioms and proofs, not physical theories. Once accurately prove, a theorem cannot be disproved.

Control is engineering: the proof of the engineering is in the working. Unfortunately, the equipment in the lab has often not heard of your theories. Your results are based on whether the hardware works, and errors can enter from outside your philosophy. Messy. Dangerous, because you can seldom talk your way out of a design that does not work. But when it does, you have "The Right Stuff," and honor is due.

Teaching embedded programming requires results in the physical world to be effective, IMO. The student has to make the journey from should-work to does-work.


Sign in to Reply



betajet

5/3/2012 2:54 PM EDT

I would say the problem goes even deeper, to the machine/assembly language level. To do effective embedded programming, you have to be able to think at the machine level. C is a very effective way to write embedded programs, but IMO it's best to think of C as a portable assembly language with high-level notations. Many embedded system problems can only be understood at the machine language level, and when computer scientists stop mastering assembly language and rely on high-level language alone they will have serious problems finding such low-level bugs.

For example, in an embedded systems there may be no memory protection and code with a bad pointer may stomp on anything, including instructions. As I understand it, Java protects you from doing this so if you only learn Java you'll never learn that such a misbehavior is even possible and won't know what to do if it happens. Another example comes from a previous job where we switched from a 68xxx to a PowerPC and some of the device-level code started misbehaving in a non-reproducible way. It turned out that there were some shared variables in memory used as counters. On the 68xxx you could increment or decrement a memory location as an uninterruptable instruction. On the RISC PowerPC, the compiler generates a sequence of instructions to load the memory value into a register, increment the register, and store the result back. This sequence could be interrupted and if the interrupt service routine changed the same variable the main thread would store back an incorrect value. A third example is compiler bugs: they're rare, but they do happen occasionally and you need to be able to read the assembly language generated by the compiler to verify that it's the problem.

When I hear of computer science students not mastering assembly language I'm flabbergasted. Part of being a scientist is wanting to understand your subject at the deepest level possible.

Sign in to Reply



jimwilliams57

5/3/2012 3:51 PM EDT

I completely agree with your statements regarding assembly language. Knowledge of assembly programming is critical in debugging highly optimized code.

Sign in to Reply



russpatterson

5/3/2012 4:08 PM EDT

Agreed with all points except 'wanting to become scientists' I think the students want to become Mark Zuckerberg.

Sign in to Reply



C VanDorne

5/4/2012 2:04 PM EDT

And I wanted to be Dan Marino. Guess what...

Sign in to Reply



Thomas McCormick

5/4/2012 7:50 AM EDT

Excellent point, betajet. The background of assembly language really does provide a good basis for a more efficient toolset such as C. Computer Engineer students and Embedded Systems programmers really should have this level of understanding.

I would, however, understand if Computer Science majors did not necessarily have this background. Virtually all of the "modern" computer languages (Java and .Net in particular) have abstracted away these details in most instances.

Sign in to Reply



freddyvtown

5/8/2012 2:28 AM EDT

I am a junior in college, and I am currently taking assembly (MIPS) as part of the core curriculum. I discovered that assembly is not as scary as it looks. Its actually more fun to program assembly (for me) than Java. I am going to take the advanced embedded systems class in the Fall.

Sign in to Reply



Youself

5/3/2012 3:29 PM EDT

Todays CS undergrads are not thinking the same as their fathers did. They read twitter, study popular internet trends, and therefore they see all the excitement and money in web based programming and startups. Not writing code to make washing machines more efficient. Can't really blame them and how could you possibly fix that?

One way way is to hire from cultures where these startup opptys are not as possible... possibly third world countires.

Sign in to Reply



russpatterson

5/3/2012 4:04 PM EDT

So, bottom line, can you make more money programming PHP (makes Java look like a hardcore language) for facebook (or similar) or by going the embedded route and learning the machine basics and EE stuff? I don't think the embedded stuff pays as much. Often the embedded programmers are not the superstars in the shop. The EE designers are.

I agree that teaching the machine basics (how the chip works) is important and that most programmers I work with in the game industry don't have that background (unless they were doing games in the 80's and 90's). It changes your approach if you know how the thing ultimately works.

My main point being the money. Pay more and it will draw the talent, the universities will follow.

Sign in to Reply



res213

5/6/2012 1:53 PM EDT

Last I researched, I thought embedded programmers were paid better than higher level programmers and higher then EEs. The problem is there is just a lot less of them. A typical video game might require a small army of lower paid high level programmers while a typical embedded project might only have a handful of embedded guys.

In terms of industry pressure on SW curriculum, the game makers and such are capable of making a lot more noise.

Sign in to Reply



JRCheetham

5/3/2012 4:21 PM EDT

When I graduated with a BSEE, I was hired to do embedded programming. The manager that hired me told me that he does not hire people with a CS degree for embedded programming any more. All the CS people that he hired quit within a year. A mixture of EE and CS classes is good for embedded programming.

Sign in to Reply



mike32768

5/8/2012 8:29 AM EDT

I'm an EE and my most recent hiring boss insisted I remain a "hardware" engineer in title AND at least somewhat in practice.

Sign in to Reply



c581

5/3/2012 4:25 PM EDT

George, thank you for writing up what I've been seeing since the mid 90's. Many of the resumes I see from recent grads have tons of OOP/OOD, Java, and next to nothing in embedded programming skills. One candidate I interviewed, when asked "What is a DMA?", proudly said "Intel 8237!"

Russ, I have anecdotal evidence that in the right place at the right time, embedded programmers can be valued team members. After 30+ years in the industry, my two most recent employers have plenty of embedded SW people who are key to the organization. The opportunities may not be as numerous, but where they're needed, they're needed. And the pay is fine, thanks.

Sign in to Reply



przemek

5/10/2012 2:30 PM EDT

So, presumably, he not only knew what DMA is, but also that i8237 is the hardware that implements DMA functionality? You are giving it as an example of a knowledgeable candidate, right?

Sign in to Reply



Vaughn.Amann

5/3/2012 4:57 PM EDT

For the price of a standard textbook you can buy a Netduino Plus and an Arduino board which IMHO would be an excellent environment to train embedded programmers on trivial to reasonably complicated mixed hardware/software problems. Solve the problem in C# (which is similar to Java) on the Netduino, then solve the same problem on the Arduino in C and/or assembler. That way you could introduce students stepwise to the wonders of pointers and pointer arithmetic, memory management, highly efficient code, etc. in a "real world" setting.
P.S. - I have no financial interests in either platform ;)

Sign in to Reply



Bill Chase

5/3/2012 4:59 PM EDT

This article hits home. I am a 60 yr. old EE living near Silicon Valley who spent 20 yrs writing assembler for embedded apps. and can't find a job.
Most if not all of the tech. recruiters I speak to have no idea what assembler language is. I try to convey the fact that if you can program in assembler you know embedded hardware to the greatest possible extent. A recruiter asked me yesterday, "Yes, but can you work w/ registers?"

Sign in to Reply



jg_

5/4/2012 10:26 PM EDT

We all know recruiters are one click up from Monkeys, but that level of ignorance, is simply scary - and underlines how deep the problem runs : It is not just 'universities' to blame. There will always be a small number of bright students, who DO grasp what is going on - it is the legions of tick-box-journeymen that swamp them.

Sign in to Reply



David Ashton

5/8/2012 8:29 PM EDT

Bill - seems to me there is an opening for you somewhere as a savvy recruiter?

Sign in to Reply



CaseyA

5/10/2012 3:41 PM EDT

Hope you are reading this, don't know if it will help, but the United States Patent and Trademark Office is looking for people - http://www.usptocareers.gov/. Urgently...

Sign in to Reply



CaseyA

5/10/2012 3:43 PM EDT

p.s. loved the article and the comments, gives me some idea of what classes to take for my major, thanks

Sign in to Reply



architect

5/3/2012 5:14 PM EDT

Agree with russpatterson Web 2.0 jobs pay lots of money if you start working for the right startup at the right time. However Object oriented concepts are very important to embedded development in the long run. Knowing assembly language is important but most of the times C is enough. It is more important to have OOP skill applied to C programming then knowing assembly language.

Sign in to Reply



Isleguard1

5/3/2012 5:17 PM EDT

I also have seen the embedded enginnering market dry up (shipped overseas) and have also had to shift over to systems engineering. I will be 58 next month and with a BSEE and minor in CS. I sincerely doubt that I will ever find another embedded job in my area (DFW) again. I have spoken to several newly minted engineers (EEs) and they haven't a clue either. I am beginning to believe that the education that the Univiersities provides has taken a step backward because they are focusing on the higher level of engineering instead of the basics.

Sign in to Reply



JAG-texas

5/3/2012 5:44 PM EDT

While I agree that students should have at least an introduction to assembler level programming either in C or actual asm type code, why would anyone believe that students are going to go into this for the inferior pay and rare opportunities to practice? One must first realize that with students overburdened with school debt their number one reason for making choices is to be able to pay their bills when they graduate. If industry wants these skills they must step up and make it a reasonable and competitive choice.

Sign in to Reply



iCaryon

5/3/2012 5:46 PM EDT

I had high hopes that the interest in robotics would translate into popular interest for embedded programming. After all interest in measuring and controlling things in the physical world were more appealing to me than data processing. (I'm a CS major with Physics/Electronics minor).

Unfortunately, the language prefered by a FIRST robotics team that I worked with recently was LabView. The kids are quite OK with not knowing what is really going on at the blood and guts level. Just like our friends in project management, they just want to see quick results.

I think that jimwilliams and betajet might be on to the best solution to a shortage of embedded programmers. Find youngsters with and insatiable desire to understand how things work then mentor them on how they can use their curiosity and determination to measure and control things. I'm advocating apprentiships - think anyone would be willing to support/pay? If not, supply and demand will prevail.

Sign in to Reply



DaveWyland

5/21/2012 2:23 PM EDT

On the contrary, I think Labview is a good idea for Robotics versus C or other languages. Robotics is ultimately about motion trajectories in time, whether platform or arm. Conventional programming languages like Fortran/C/C++/Java/Python/... have NO abstraction for time. Single threaded sequencing is the best they can do.

Robot trajectories involve two or motors operating simultaneously to crate trajectories. Examples are two wheel motors and 6+ motors on an arm. Time is the metric method of synchronizing these various motors to create the desired trajectories.

Labview and Matlab/Simulink are graphic computer languages that have the abstraction of time built-in. Time flows from left to right in the frame, and multiple simultaneous paths are shown from top to bottom in the frame. Ironically, this is an echo of schematic diagrams that worked the same way.

There are two archetypes of embedded systems: embedded applications and control. Embedded applications are simply conventional programs - like web browsers - that run on an embedded device instead of a PC. The smart phone is the current example.

Embedded control is about controlling hardware, whether microwave ovens, automobile engine control or robotics. Embedded control is typically real time, meaning that response time is important. Hard real time means Really Important, in that if you are late, things may break and people may get hurt.

Real time, and particularly hard real time means that the design of the software is intimately involved with timing, often with several things going on at once that must be coordinated. So time is a fundamental abstraction that is used, even if the tools do not support it well.

No, I own no stock in Labview or Matlab/Simulink. But I have been involved in real time control (and lately robotics) for a very long time indeed. Having started out in analog hardware and computer design was a big help here.

Sign in to Reply



george.leopold

5/3/2012 5:59 PM EDT

Manitowoc/Frymaster, I'm a fellow Cheesehead from Appleton

Sign in to Reply



iCaryon

5/3/2012 6:34 PM EDT

My boss is a Cheesehead from Sheboygan. However, I'm a recently humiliated Saints fan.:0

Go LSU Tigers!

Sign in to Reply



MalaysianEngineer

5/3/2012 6:02 PM EDT

This is a global phenomenon and not localised to the US. When I was in Korea, there was talk of how to very few younger engineers were going into embedded systems. There was some initiative on promoting embedded systems. Back in Malaysia, same problem. It's very difficult to hire young engineers with the suitable skill-set or interest in doing embedded systems. Doesn't help that government officials consider Android application programming to be embedded systems programming!

Sign in to Reply



Duane Benson

5/3/2012 6:29 PM EDT

I've recently spent some time looking through CS programs and Java seems to be the star. I suspect that it gets the attention because of its similarity to C# and the ability to program it without expensive tool chains. C#/Java are likely so popular due to their us in web programming.

I find the limited language exposure to be distressing as a parent and disappointing as a hirer of programmers. It's sad to think of spending $80,000 and up for a degree that can leave you with so many shortcomings.

Sign in to Reply



george.leopold

5/3/2012 6:47 PM EDT

Great comments all. I've alerted embedded evangelist Michael Barr, who will hopefully chime in here shortly.

Sign in to Reply



antiquus

5/4/2012 5:00 PM EDT

Close but not quite. You must also factor in the well-developed libraries of Java, the very well implemented library utilization/documentation schemes, and the rapid build of "hello world". Java includes tracking the original source and author, and the ability to load libraries at run-time.

The embedded world has no similar construct. I take your code, and the only traceability is in the comments; I erase the header and its mine. If I link to a Java library, then I get a wealth of metadata and version control. I don't even need to bind your code into my distributable, but instead can download it from any of multiple sources.

That programmer you just hired is spoiled, and you want him to return to stone knives and bearskins.

Sign in to Reply



iCaryon

5/3/2012 6:51 PM EDT

One of the issues may be what languages show up the most on job websites. When I was a freshman in college, students were revolting against Pascal for C++ - the flavor of the day.

We all know that the majority of programming jobs today are web or "mobile app development" Java seems to be the tool required. So, if the postings are six figures for C programmers in mass, perhaps the landscape would change. Again, is the demand there? How many of you folks are hiring/looking for embedded talent?

Sign in to Reply



msinc

5/4/2012 1:19 PM EDT

Unfortunately as hardware manufacturing has dwindled down and moved to SE Asia so has the demand for assembly and to some extent 'C' language. I was a BIOS engineer and then a network driver engineer for a long time and all that skill has now gone overseas and CA. What's left is application development and some embedded and plenty of teachers with Java, C# experience never mind the hardware. Once we start manufacturing here assembly language will be back in demand. I don't see that up on horizon. I have since grasped C++ and working for an employer writing user mode applications.

Sign in to Reply



EdwinBland

5/3/2012 10:03 PM EDT

This is more than just about a particular language knowledge. In many cases the CS or CE guys I've worked with have no knowledge of reading schematics... so when it comes time to document how to use the hardware... as an EE I look at the schematic & say something like send this bit through the SPI port... in some cases they don't know what a SPI port is & which bit # it is from looking at a shift register... it's a hardware knowledge gap... There needs to be electronics, digital design, magnetics theory & propagation, etc... in the CS/CE curriculums... or just take an EE degree & take as many CS classes as you can find for electives... and do lots of projects.

Sign in to Reply



-M-ric

5/3/2012 10:49 PM EDT

(part 1)

This thread is so interesting. I am a young embedded developper. I've gone thru C, asm, JTAG debugging, power analysis, digital scopes and probes, linux internals...

Equipment needed to make android boot on a handheld is so expensive. And route is so long! Embedded is expensive, not only the electronic part but also the software : (still) proprietary, licenced, and they are not even cool or have shiny interface (my eyes blink in front of gvim at the end of the day). What's my point? Java developers do not have to pay any software to get a complete dev environment. How much for yours? How much for your electronic equipment? Look at what you can do with object-oriented languages with so less : just a bare computer.

Can an iOS developer start its business for free? Apple SDK is free in the first place. Can an iOS kernel developer start its business for free? No, he does not even have access to the code... Its way to heaven is to get hired by the richest company in the world. And God knows the hiring process in there...

Can you write embedded code and get say 100$ for that? No, embedded projects are often really huge and long. They start at 10000$ or something. Can an app developer earn 10$? Of course, with a simple android app on google play store. Software and hardware companies do not perform the same: Facebook (software) is crazy, look at its growth from 2005 to today. Apple (hardware) is at its uttermost, but it is in the business since 1976, and had gone through storms and thunder...

Computer Science is like trading, fast revenue, and bright future. Computer and Elec. Eng. is like a long-term saving account, although it does not provide security on jobs anymore...

Sign in to Reply



-M-ric

5/3/2012 10:50 PM EDT

(part 2)


There is a light in the tunnel though : free software and cheap dev boards. Pandaboard, snowball, RasberryPi. Here are the things needed to get university back in teaching Computer & Electrical Eng.

But free software is not enough : they have to create standards! So many different languages, protocols, linux distros, HW IP, are used in those things! So many free softwares do just the same thing as the others. Why? Because techies disagreed on some technical choices and took different approaches. Look at how spread is ARM folder in linux kernel today. And check out what Linaro is trying to do right now. Merging all this crap all together to help newcomers push the door...

Nature always seeks the shortest path, so do the students.

Sign in to Reply



Kyo

5/3/2012 11:45 PM EDT

I live in Brazil, where in my experience C/C++ jobs pay better than ones involving higher level languages (PHP folks in particular should expect to get barely enough to make ends meet), and there's definitely a lack of C (also C++) professionals here. Companies that need C developers are desperate for the good ones and often settle for less expertise than they need.

Personally, I wouldn't dismiss Java (and other higher level languages with procedural elements) as a learning tool for fundamental concepts such as control structures and calls, but no self-respecting university should let their CS students go without a more traditional language such as C and at least a "sane" Assembly like the MIPS one. A course in code generation and optimization helps immensely as well.

Sign in to Reply



agk

5/4/2012 2:07 AM EDT

Programming in ASM makes the one to under stand how the corresponding chip functions internally.Every one to learn ASM to an advanced level.This will make them easier to trouble shoot their HLL programs.

Sign in to Reply



Jimbobly

5/4/2012 6:00 AM EDT

I've been embedded for about 20 years, almost always programming in C or C++. Many years ago did use assembler, and very infrequently have to read it now. So I'd disagree with many comments here on the overriding importance of knowing assembler to a high level. To me, whilst some knowledge is necessary, you really don't need to have much to be successful. I think some teaching of principle is good, but forcing students to learn it in great detail will put more people off than it attracts, especially since the current instruction sets are so complicated.
C, though is vital. I noted one comment in the article that it's principles that are important, not the language. The problem there is that a language like Java does not give you the principles, certainly in memory management. Moving from Java/C#/Python to C is harder than the other way round because of this.

Sign in to Reply



prabhakar_deosthali

5/4/2012 7:02 AM EDT

In my career as a Embedded systems programmer and later the project leader when I had to recruit people who could do embedded systems programming , I found that the engineers with hardware knowledge could easily associate themselves with the assembly language programming. I could turn many a hardware engineers into good assembly language programmers who later mastered the high level language skills also.

So I feel this is the best route to take for universities. Groom the electronics engineers into embedded programming and you can get smart all-in-one designers and programmers out of them.

Sign in to Reply



Thomas McCormick

5/4/2012 7:42 AM EDT

"Computer Engineering" is a new discipline (relatively speaking) and the curriculum can widely vary among the schools. There is at least one school that I know of that still mandates C programming for its ECE majors and even offers a course entitled "Embedded Real-Time Systems". However, the author's point is valid, many other schools have moved away from this embedded systems focus. This trend needs reversing. C programming needs to be an elective at the minimum.

Sign in to Reply



GarySXT

5/4/2012 12:22 PM EDT

No experience with a language like C is a disadvantage, but I think it goes deeper than that. With students doing their programming on laptops running with multi GHz clocks, at least 1 GB of RAM and essentially infinite hard drive space, there has been little incentive to learn about efficiency either in execution speed or code space.
The last bright young guy I brought into work on an embedded 8 bit project had a lot of experience with C#, so was at least familiar with the basic C syntax. His code (at first) was not very efficient. The concept of things like using logical functions to mask off bits was alien to him and his peers. The tools for 8 bit development are also a lot less sophisticated than the Visual Studio and similar environments he was used to. He was very frustrated by this.
There are a lot of gaps between web and PC programming and embedded development.

Sign in to Reply



sharps_eng

5/4/2012 1:15 PM EDT

All the above entries are saying, 'Newbies need to be able to get in at high level but be able to drop down, deep to the hardware as quickly as they want, and they need tools that allow them to explore what is going on, and they have to be cheap, quick, simple and effective.', and embedded employers want kids that have done that kind of stuff.

After bruising my knuckles toggling in 8085 machine code, I discovered that Forth was the cheap, complete IDE that showed me assembler, macros, the basic Djikstra high-level constructs, pointer abstraction, interpreters, compilers, cross-compilation and meta-compiling, dynamic storage, dynamic programming, data structures of every persuasion, graphics from pixel to JPEG, disks from LBNs to RAID spanning... yada yada...
In other words the ultimate teaching environment - language-neutral but DEEP - able to make a robust, sandboxed user interface, or slice in a single line of source from the most abstract script on a host PC to a single port bit on an embedded target. All with the same language, tools and principles, and all for free...
You can bridge from Forth to any other language because you will have met everything that another language can throw at you, you just have to learn what they call the construct, and how much worse or better it is than the Forth version.

OK so I never (officially) worked in Forth, but I have _thought_ in Forth ever since, because it is the leanest, cleanest, uncluttered expression of human control over hardware through software.

From a lifetime's experience, think on this: what if Forth actually IS what you get if you relentlessly apply Real Engineering to the problem of getting a machine to do what you want?

Finally, before you get out the RPN and 'write-only' jokes, just think on this; would you prefer to hunt out a tricky bug in 20 megabytes of beautiful C, C++ or Java source, or in 2kB of dense Forth text doing the same job?

Sign in to Reply



Embd SW netwk

5/4/2012 2:34 PM EDT

I will disagree with Thomas, I got my Computer Engineering degree in 1980, so it's been around for a while, but it's been in flux as CS, CE, and EE departments got merged and split over the years. I have a first-year EE student taking a first programing class in assembler and C. While the materials are good, the class got lost by trying to teach too much in too little time to people who never programmed before. The last midterm had an average score of 25%. This is not the way to encourage people to take up embedded programming. One of the problems with many of the university classes is that they understand what needs to be taught, but no idea on how people learn. The class has a strong "no-copying" requirement, but most people learn programming by seeing and copying examples, and from each other. I agree that using copy/paste isn't learning anything, but seeing how someone else solved a problem makes it easier to solve that same problem again later.

Sign in to Reply



JimCE

5/4/2012 9:15 PM EDT

I am in my last year as a CE student. I started with Java, and I couldn't agree with the author more. More C would be good. I also took an embedded systems class where we used C exclusively, and I took a class focused on real-time systems that used C. However, since I started, the university has changed to teaching 2 semesters of C before beginning any OOL.

Sign in to Reply



fatbrain_

5/4/2012 10:36 PM EDT

Another reason is cheap hardware. Now for a couple of $$ you get a 32bit processor with MB's of memory . 30 years ago it would have got you a 8bitter with 8K s-ram.Hence the code efficiency really does not count for most of the projects . At the end the bosses do not really care about elegant/optimized code the project needs to be on time and on budget.

Sign in to Reply



kmmankad

5/5/2012 1:51 AM EDT

A very interesting article and comment thread.

I'm an electronics major from India,and I'd like say that our CS and EE majors both still do 8086(in 100% pure assembly) and its related peripheral chips for a whole semester,in a course with intensive labs,tests and design assignments.

I should stress that these design assignments are basically designing 8086 based systems from scratch,interfacing the memory,peripherals,writing the code.. everything.

And this is built upon by more advanced courses.I think that is really the way to go.

Sign in to Reply



kmmankad

5/5/2012 1:52 AM EDT

thats apart from 2 courses on C (that each student does,irrespective of majors.)

Sign in to Reply



MichelleRichardson

5/5/2012 8:46 PM EDT

I'm glad a few commenters brought up the recruiting process. It's broken! It's become a filtering exercise based on scanning for resume keywords, rather than an active search and matching process. I believe the best recruiters are the people doing the actual work. Of course they're busy, but when reqs stay open for months while recruiters turn away viable candidates whose resumes don't have just the right keywords, the project suffers. Recruiters shouldn't be screening out experienced C/C++/assembly embedded programmers for C/C++/assembly embedded software jobs because they lack, for example, experience writing test scripts in Perl, VB or LabView. This is happening. And if you've been trying to fill a req in this market, it's probably happening to you.

Sign in to Reply



JohnAr

5/7/2012 12:24 PM EDT

I probably disagree with everyone here! I think the embedded industry is the main culprit here, they put themselves in this mess. Their main fault, lack of innovation and creativity!

I have 30+ years software experience. and so naturally I have used most things from the sequence of, ASM, Fortran, C, ... , Java, C#, Scala, and so on. Thus, I have done a lot of C programming. But anyone with real perception should see the C programming language is quite a bad language with todays measure even though I admire it in light of the benchmark of 1970.

The embedded industry should have replaced C with a much more productive language for high performance embedded programming long since. There could have been many choices, even a version of Java with machine intrinsics (for port/dma/hardware handling) library could have worked. Separating a lanaguage into a machine independent part and a machine dependent part could achieve better portablility than C offers. Many research results in language design and generic programming will can never be applied to the C language. Why should students be interested? C is only slightly more interesting than Cobol for a young student of today. The whole industry is slowing innovation by keeping productivity of embedded development painfully low.

Sign in to Reply



chanj

5/7/2012 12:24 PM EDT

The job market has been pretty brutal for years. The better fit your skills are, the better chance you will land on a job. There are fewer and fewer employers providing time to new hires to catch up. College graduates are not excluded. Experienced engineers/ programmers are seen as out-dated if they know only a few low level languages, e.g. C and C++. The viable candidates do not only be filtered out by HR but also rejected from interview by hiring manager. In tech field, the hiring managers are typically coming from an engineering background. With all these said, university is under pressure to provide training that the customers want. The customers are the students. So, is the gap caused by the university curriculum? Or is it driven by the market?

As I have always believed, college education is to provide a method for graduates to continue learning by themselves. If the new graduates believing knowing Python today will provide them a job security, they'd better learn from their seniors. Programming languages are liked languages that we learned and used everyday. I believe the way of thinking and analyzing matter more than how many language I know.

Sign in to Reply



zgramana

5/7/2012 4:46 PM EDT

I would love to see someone weigh in on the career path for experienced non-embedded programmers who have been bit by the embedded systems bug. Many of us were either weren't properly exposed to embedded systems before entering the general application engineering field, or did not yet hunger for the tougher challenges embedded programming affords until we had matured as engineers. In my case, it was both.

Experienced software engineers have at least surmounted the general skills gap between a CS degree and a junior professional. I have not seen, apart from the boot camp mentioned in the article, what resources an experienced software engineer can take avantage of in order to remediate the remainder of the skilldine ended to become competitive for embedded positions (which indeed seem to be scarce in the US by my eye, at least compared to enterprise software engineering).

Do non-formal methods, like personal projects, count with most hiring managers? Is there something in-between that and a second degree, like a third-party certification or credential, that's recommended? Or is the demand really just focused on core software engineering KSA's?

Sign in to Reply



Greg.Dee

5/8/2012 11:17 AM EDT

Absolutly personal projects count, in fact i would count them more. Anyone how does personal projs allways has a better understanding and wider knowledge than someone who only does their job. Just present it well when interviewing etc.

Sign in to Reply



-M-ric

5/7/2012 11:02 PM EDT

Most embedded systems runs linux right now. I know many people who moved from RTOS to Linux. This is a tough move in terms of coding rules, and architecture. But Linux is still written in C. Now the question is: for how long?

Most modern telecom stacks have already moved to C++. Will, ... When (!) will Linus surrender to this long lasting argument of C vs C++ for Linux?

Sign in to Reply



przemek

5/10/2012 2:38 PM EDT

I am guessing that you don't know that Linux kernel actually did compile in C++ mode at some point, but it was not good: the high level of C++ also meant loss of control over low level details (memory allocation, data layout, data movement).

This experience caused Linus to swear off C++. I don't think it's productive to revisit that.

Sign in to Reply



majortom84

5/8/2012 11:15 AM EDT

Apparently I was VERY lucky to have gone through my EE program when I did (1988). Back then there was no CE degree, only EE with electives concentrated toward computers. (IIRC, CS was not taught by the School of Engineering, but by the School of Math and Science, and I can't say for sure what language they used - maybe Pascal.) C was not even offered then. I'm pretty sure it later became part of the CE program, but have no idea whether it still is.
All EE candidates had to take Intro to Computer Engineering, wherein we learned two's complement, latches, shift registers, memory addressing and the concept of the bit bucket; and then applied it all by writing and debugging assembly language programs on the 8085 or 8088.
But the point was not to teach us to program a certain micro in assembly, it was to force us to understand the nuts and bolts and to think in the way that a computer engineer needs to think. Those skills continue to be the reason I can do my job (embedded software) effectively, choosing microcontrollers and even finding hardware bugs, where I would otherwise sit baffled. BTW it was the Computer Architecture course, where I learned about microcode, that got me my first job. (For the uninitiated, microcode is the ones and zeros that make the machine instructions do what they do... absent or less interesting in RISC machines, I'd say.)
So, any Clarkson students or faculty out there listening? Care to share this article with the dean? (Actually, why don't I try to track him/her down right now?)
(Okay, in a forum this large, I guess I have to admit the possibility of a recognition problem: Clarkson is a University in Northern New York State, known both for its quality engineering school and its hockey team, not for its size - my graduating class was around 800.)

Sign in to Reply



george.leopold

5/8/2012 12:38 PM EDT

majortom84, we'll see if we can track anyone down at Clarkson U.

Sign in to Reply



majortom84

5/8/2012 12:56 PM EDT

Thanks for your reply George. I did visit their website, and if http://www.clarkson.edu/ece/undergraduate/computer/index.html is any indication, maybe the situation is not as bad as it sounds. Many comments focus on what's lacking in CS curricula, but here I see those things in CE.
The site does have contact info for the dean of engineering, but having never met him I am less inclined to hit him with a note as it looks like Clarkson - and maybe lots of other Computer Engineering schools - DO teach the stuff I learned and used.

And, thank you Clarkson!
(Go Knights!)

Sign in to Reply



Greg.Dee

5/8/2012 11:23 AM EDT

Problem with embedded and Assembly code is the tools ABSOLUTELY suck.

Many times i knew a section of C/C++ code would do better in assembly but the barrier was to high.

The Root Cause are tools, Imagine if the only tool for Java was a line editor and print statements to debug, no one would use it.

Lang Syntax is irrelevant. Programmers either write good or bad code same way dumb will always be dumb. Sorry to say but it's a fact.

Sign in to Reply



george.leopold

5/8/2012 12:36 PM EDT

So the problem isn't just university CS courses, it's also a lack of decent tools. Is anyone aware of any efforts to improve tools for embedded code?

Sign in to Reply



allwires

5/10/2012 12:45 AM EDT

I think that there is actually a big problem with electrical engineering tools. If you compare tools that electrical engineers use (e.g., OrCAD, PADS, CodeWarrior, Virtuoso, etc.) to tools that other technical disciplines use (AutoCAD, Visual Studio, Inventor etc.), there is a world of difference.

Most older engineers that I talk to proudly proclaim something along the lines of "EEs don't need fancy looking tools," but I think our tools need a serious update for the sake of usability. For example, I don't want to have to manually refresh my schematic each time I draw a line! These tools seem like a bunch of programs hacked together in the 80's and haven't been changed since!

Sign in to Reply



Greg.Dee

5/10/2012 7:16 AM EDT

Indeed, anything in embedded is sucking wind post 2000. When it should be the opposite.

Sign in to Reply



Greg.Dee

5/10/2012 7:14 AM EDT

Absolutely has nothing to do with CS courses. University is a measure of learning speed only. Academia is only an introduction to what the commercial world is doing. You learn the most post univ (and via the Net now). Again, Assembly is just another syntax. I've lost count of the number of C++ coders that write code like it's C and vise versa. Syntax is irrelevant. Saying it does matter is like saying a "dumbass" who only speaks French will someone start acting smart because he's speaking English. Ridiculous but that's what people here are essentially saying.

Sign in to Reply



zhgreader

5/8/2012 9:54 PM EDT

If you would have been familiar with chip's hardware construction, there would have not been a problem to program.

Sign in to Reply



tonga

5/9/2012 12:58 PM EDT

I think it is really the Electrical Engineering department's job instead of Computer Science in university to train embedded software engineers since they are more exposed to hardware side and have a much better understanding of hardware/software interface.

Sign in to Reply



george.leopold

5/9/2012 8:05 PM EDT

If Michael Barr and others are correct, it looks like it will indeed fall to university EE departments to fill the embedded programming gap since it does not appear that most CS departments will shift away from their emphasis on Java and related programming languages.

Related to that point, we'd be interested in hearing from readers about what the CS departments at their alma maters are offering as introductory programming courses.

Sign in to Reply



allwires

5/10/2012 1:00 AM EDT

From my experiences as a recently graduated EE, one thing I noticed is that CS degrees are not aimed at teaching students low level programming such as Assembly or C. This was mostly reserved to EE students, as to truly understand Assembly, you have to understand the logic of the building blocks -all the way down from something like an ALU down to the gate and transistor level.

As much as everyone is enjoying bashing the higher level languages, everything has it's place. I am not going to use C to send UDP packets in a test program, but at the same time I am not going to use Python to program an embedded microcontroller.

I agree with what someone said earlier about C needing an update. There are many features that C could take from the higher level languages while maintaining all of its functionality.

Also, with the power of modern hardware, efficiency is not as important as it once was. Nowadays coding for highest efficiency is something that programmers do as a challenge and hobby in their spare time. I would think that efficiency would have more of an effect on writing logical and well thought out code than actually saving a few clock cycles or memory space.

In the end, I think that it is important to keep the end goal in mind, and then use the best tool whether that is Java, Python, Assembly, or discrete logic!

Sign in to Reply



Greg.Dee

5/10/2012 7:26 AM EDT

Agreed with exception on the "efficiency" part. There is no lower bound to efficiency. The bound is market window. Simple example one main metric on cell phones is Batt life. Or dropping in a micro where you couldn't before (because it was to inefficient to do so). Or a self powered remote sensor in the arctic. There are more of these cases than mainstream apps, they're just hidden.

Sign in to Reply



DaveWyland

5/21/2012 2:47 PM EDT

A good, balanced viewpoint. However, some updates might be useful.

If your task is controlling hardware where time is important (e.g. most I/O devices), you are driven down to the hardware level of registers and gates plus timing. And typically deeper than the level of the program itself. Joel's Law of Leaky Abstractions says that you need to understand the next level down from the abstraction to be able to debug it when the abstraction "leaks" - i.e., stops working under some condition. Assembly language has one important advantage in this situation: it gives you direct estimation and control of timing. Each instruction takes X number of clocks.

Another thing that is quietly happening: Moore's law died - or at least has gone into the ICU. We had 3.5 GHz Pentium 4's in 2004, up from 100 MHz 486's a few years earlier. There has never been a 4.0 GHz Pentium. "Is it not true that Moore's Law [i.e., transistor shrinkage] is still working? No, but it's accurate." At 90 nm and beyond, the chips continue to get smaller, but they get slower and hotter. The grand ride fro 1970 to 2004 is over.

If you want performance post 2004, you have to go parallel. FPGA based hardware design can do this; multiple cores cannot. The old dream from the 1980's of a compiler that can take any big C program and break it up into multiple simultaneous streams running on multiple cores remains a dream.

So if you are controlling hardware or need more performance, you are going to slide into the world of real time hardware and language abstractions that can support it.

Post 2004, the speed of a computer running C or other conventional language is limited to ~2 GHz. This means that software cannot continue to expand in space and time exponentially in time as it has done in time past and maintain acceptable performance. Time is creeping into the discussion, and this will change things, IMO.

Sign in to Reply



minimaxed

5/10/2012 2:42 AM EDT

To be honest, this article and even the majority of the comments here strike me as the remarks of "dinosaurs", relics of an era that is fading away. The kinds of people who were satisfied with cryptic computing in the 90s. Time marches on, however. Programming is becoming available to everyone, the bar is being lowered, so that non-experts can reap the benefits. As in so many other human endeavors, there's this seemingly inescapable shadow looming over the next generation: "They're not good enough. They're spoiled. When I was their age, I worked twice as hard for half the pay."

I wouldn't be surprised if many of you heard the same gripes from your elders; that's the cyclical nature of life. Your age will come to an end and computing will continue just fine. C and C++ need last forever. If it really matters, trends and technologies will move to fill any gaps that develop.

Someday we'll enjoy even better technology, yet people will complain about programming being too dumbed-down (aka. "accessible"). One of my peers will reminisce about the days when he coded in Java and how he laughed at the old guys who preferred Pascal. And on that day I'll pass on to be one of the dinosaurs.

Sign in to Reply



frankdracman

5/10/2012 2:47 PM EDT

I think this comment actually proves the point of the article. If one only knows or has been taught the abstract model, then there is no fundamental understanding of what really goes on under the hood.
The is an absolute need for both higher-level abstract environments as well as low-level embedded layers. The real concern is that the abstract is completely eclipsing the low-level programming model in the education system.

Sign in to Reply



jnade

5/10/2012 1:19 PM EDT

Its all supply and demand. The rest is whiny BS. I started off as a HW designer, doing analog and digital design, but you have to be able to change with the times. It looked like there was more work in SW so I completed some projects using various ASM languages. When higher level languages became more productive I did that. If employers want low level C programmers they will make it worthwhile to learn low lever C programming. I still write embedded C, sometimes C++, but I also like Java and C# a lot since I got to know them. Change happens faster and faster, especially in tech. Try to keep up. Maybe I'll see some of you at AnDevCon III next week.

Sign in to Reply



gmsamaras_eet

5/10/2012 1:49 PM EDT

I have been coding in ASM & C since the i8008 (for the younger folks, that is a very early Intel microprocessor). My 16 yo and some of his HS buddies are actively interested in and learning C and how to control the HW. They will be proficient in C long before they get to college and, from what I am hearing now, they are going to do engineering or physics, not CS. When I used to hire engineers, I always looked for the BS/MS grads that had practical experience from their hobbies. Just going to college is necessary, but has never been sufficient; there is just not enough time for them to teach you everything. You have got to be able to teach yourself!
GM Samaras Pueblo CO

Sign in to Reply



agibson0307

5/10/2012 4:01 PM EDT

i would have to say the corporations are to blame. they dropped alot of embedded people back in 2001. The universities were producing embedded grads back in 2001. The embedded sector has not been that strong sense, compared to the popular Java stuff. Back in the day the corporations had a big need for embedded. Now they dumped the embedded people. The universities will not continue such low or no demand area (unless it is the humanities). The Cobol, Fortran people were the business programmers, now Java, C# is the business programmers.

Sign in to Reply



BentThomsen

5/11/2012 4:58 AM EDT

In 2003 I posed myself the question why has the embedded systems industry not adopted Java?
Well nine years of research later I now have a better understanding of the problem.
First of all Java, in its traditional sense, is not appropriate for real-time systems development and many embedded systems are real-time systems.
Java lacks a notion of a deadline, real-time clocks and has insufficient semantics for garbage collection and threads.
Initiatives including the Real-Time Specification for Java, and hard real-time Java profiles such the Ravenscar Java, Predictable Java and the international standardization effort, Safety-Critical Java, have now plugged this gap.
Especially the latter profiles further tighten the semantics of Java for making real-time systems written in Java amenable to static analyses such as WCET analysis. These profiles include constructs for making memory allocation (and de-allocation) more predictable, and talking to hardware through the notion of hardware objects.
Next step is to provide implementations suitable for embedded systems. Clearly Java can be ahead of time compiled like C/C++, e.g. by gcj, but usually Java is implemented via a JVM.
JVMs are usually big and very memory hungry needing MBs if not GBs of memory.
However, in recent years JVMs, such as JamaicaVM, FijiVM, KESO VM and HVM have emerged, especially the latter two can be run on systems where memory is counted in kb.
But making a JVM time predictable and analyzable is challenging. It can be done in hardware e.g. the Ajile 100 or JOP processors – the latter being analyzable by the WCA and SARTS tools.
For many embedded systems a dedicated Java processor is not acceptable. But making a SW JVM predictable and analyzable is more challenging, but now doable, e.g. the HVM is complemented with the TetaJ tool.
Next question is how to make the embedded industry pick up these technologies

Sign in to Reply



ivanwong888999

5/14/2012 5:02 AM EDT

Well, in my uni all engineering students are required to be exposed to C programming in their first semester. I'm in mechatronics, so in later semesters, I'm exposed to Assembly languages, as well as C for embedded systems. So, I do know full well how limited are the hardware for embedded systems are..

Sign in to Reply



Mohammed.Saju

5/23/2012 11:55 PM EDT

In view of the troubled programmers in embedded domain, I have personally started a blog to help budding programmers. It is mainly intended for Just passed out graduates, but basics. Due to my official workload I was not able to continue.All please have a look, and send in your comments.
http://www.myembeddedodyssey.com/
Plan to put more in the coming months.

Sign in to Reply



Phil K

6/6/2012 4:18 PM EDT

Carnegie Mellon is still teaching embedded skills at a pretty deep level. I teach a 3rd year undergraduate course using an HC12 automotive controller that emphasizes assembly language, C, I/O, concurrency, and other deeply embedded topics. One lab exercise has students optimize C source code by looking at what assembly language is being spit out by the compiler. (They also write some assembly on their own to get a taste.) I feed what I learn in doing industry design reviews back into course content.

http://www.ece.cmu.edu/~ece348/
has the topics list.

Sign in to Reply



george.leopold

6/8/2012 10:00 AM EDT

Some useful observations from reader Anthony Mendoza, who notes that if you are an embedded C/C++ programmer, his company has a job for you:

"The problem of plugging the embedded programming gap is very much one of perceptions. Two years ago, a prominent IT magazine had a list of the top 10 obsolete technologies. Number 3 was the C programming language. I quickly sent the writer an email telling him that C wasn't anywhere near obsolete. I just as quickly got back an email from the writer saying that my thinking was just wishful thinking and that in these days NO ONE programmed in C. Unfortunately, this kind of thinking is very common in the industry away from centers of embedded expertise and, until it changes, we will continue to have problems filling our embedded positions. (We have over 30 open requisitions for embedded C/C++ software engineers at my company alone)."

Anthony Mendoza
Tucson, Arizona

Sign in to Reply



SQS Manager

3/12/2013 12:38 PM EDT

Hello Anthony,
I would like to know if you would be interested in hiring a candidate from us on a contract basis. He has expertise in the area of Embedded Programming, C, C++. Let me know at manager@sqssolutions.com.
I can forward his resume once you reply. The candidate is currently in India, working on a project for Hitachi Automotive, Japan. He is Involved in Model Based Development, Embedded Testing, Software Design, Tool Based Application, Test Automation, Verification and Validation. Let us know. Thanks.
Raja Ismail
Manager.
Software Quality Solutions LLC
manager@sqssolutions.com

Sign in to Reply



Please sign in to post comment

Navigate to related information

Datasheets.com Parts Search

185 million searchable parts
(please enter a part number or hit search to begin)