views:

137

answers:

5

Hi,

Not 100% sure how to frame this question but here goes...

I currently work as a Rails developer but want to work on more substancial / "meaty" projects and have always been very interested in embedded systems, especially systems that run on aircraft and especially submarines.....I know strange combination.

I have been doing some searching & found lockheed martin produces a lot of underwater systems for various navys around the world e.g. http://www.naval-technology.com/projects/nssn/

However, there is very little information about what software is used within these systems, what OS's they use or anything else "technical", presume there is a lot of C / C++ involved but that is just a guess... so its hard to know where to even begin learning what is required to potential work in these areas.

Just wondering if anyone has any experiance working with or more information about embeddeed systems in either the airline (onboard flight systems) or especially submarine systems?

Thanks!

A: 

As far as anecdotal evidence goes, the OS of choice for such systems is the proprietary QNX operating system.

Evidence also suggests that in many mission-critical systems the programming language of choice is Ada.

I honestly have no idea on getting into this line of expertise, so good luck in finding a way in.

Jon Limjap
A: 

The safety standard for software in aircraft is called DO-178B. You can use that as a starting point to research what kind of software and software tools are used.

Going directly from web programming to the most safety critical systems seems like a big jump, you could work on some more normal embedded systems first.

Amusing side note: I first read Rails as railway related software, which is also more or less safety critical, depending on the application.

starblue
+5  A: 

I used to work as a Hardware/DSP/Software Engineer on sonar systems that were fitted to a number of different submarines (one of the sonar suites that I worked on is in the top centre control room picture here) but have been away from that product domain for a few years now.

I have used a variety of languages in their developments starting with PL/M and then ADA and some C although, the last I heard, the main language used is C++ running on commercial processing boards. At the end of my time working on sonars, intel X86 processors were not being used because they ran too hot and it was impossible to cool them sufficiently. I can't say what the current processor of choice is. VxWorks or similar operating systems are used.

As to how to get in - read a few adverts for posts in this area and look at the skills that they require. Probably embedded and C++, maybe ADA. Get some experience in this area by getting a processor evaluation board (maybe some form of ARM) building a few little home projects that will allow you to understand interrupt functions and how to use the processor I/O, maybe an embedded OS (FreeRTOS is a good start). This will give you a start on the skills required when writing for a non windows/linux/desktop system.

Ian
+1 For PL/M......
Joseph Quinsey
@Joseph Quinsey: I have no argument with your generosity in awarding rep, but PL/M is no longer available or supported by Intel, so it is hardly relevant, even if it is interesting.
Clifford
+3  A: 

In those environments, expect to see in-house or high-end commercial RTOS such as VxWorks, Integrity, and QNX, with code in C, C++ or Ada. Multi-core/parallel processing are becoming increasingly significant.

Many job specs in those domains emphasise knowledge and experience of safety/mission critical systems and various national, international, and governmental standards, which may vary depending on where you work and whether it is military or civil.

With limited experience, you may find difficulty in breaking in if there is no shortage of already experienced practitioners, and even getting in at the bottom will depend on your educational qualifications. For military/government contracts, already having security clearance will be an advantage since such clearance can take months, so those with the experience and clearance are at the front of the pile.

Clifford
+1 For QNX..........
Joseph Quinsey
A: 

As an embedded systems guy, I'm going to warn you that your Rails experience has little practical use in the embedded world. If you want to get your foot in the door, look at doing the following:

  1. Become familiar with C/C++
  2. Learn about computer architecture. Embedded stuff needs to know about registers, bit masks, bus architecture, GPIO lines, etc.
  3. Learn about how operating systems work at a low level, kernel, task scheduler, driver development, memory models, etc. The work you do now is several layers removed from the "real" OS.
  4. Buy microcontroller reference design and do some basic projects.
  5. Look for a SW engineering job at a prime defense contractor. Failing that, look at a job at a smaller company that "feeds" the primes.
msemack
Thanks for thatI know this is a very generic question, what is the job market like at the moment for embedded engineers? (as someone in the trenches)
Jason
We're hiring, business is starting to rebound. I can't speak for other companies though.
msemack
Finding anyone that can program small embedded systems in C is like hunting for Unicorn poo. Ask an average candidate how to invert or mask individual bits in a register and they look at you as if you are speaking in Martian.
Ian
It's not that hard to find someone with the necessary skills, in my experience. Although we usually look for people with Computer Engineering degrees, not Computer Science. The harder part is teaching them to be disciplined and meticulous. I usually prefer entry-level guys so I can instill these good habits right out of the box.
msemack