Best major for operating systems/embedded systems programming?

<p>That would be the guys in the next cubicle row (the BSP / bring up / HAL group where BSP is board support package, ie. device drivers and stuff, hardware abstraction layer, and bring-up meaning they receive the Fedex box with the boards and they bring up the OS on the new hardware). </p>

<p>They’re largely EE’s with decent C++ and rarely assembly language. The main guy is a BSEE / MSCS whose purpose in life seems to be to turn the blinky light on and off a few times. He also writes device drivers and other board support goodies. </p>

<p>They work very closely with the vendors and the hardware design group, and have a very solid understanding of configuring open source platform software to our needs (i.e. LTIB on Linux). </p>

<p>Their main devil on a regular basis appears to be device drivers for multimedia, i.e. how to get various drivers from various vendors or home-made to play nicely with each other. Fairly tedious work if you ask me.</p>

<p>As far as Operating Systems, well, we rolled our own a decade or two ago and it still works (one guy wrote it) but where the money really goes is the abstraction layer we use - so we can build and test code on Win32 or straight Linux and then when the board blinks ready we’re ready too. For OS work you should have an understanding of open source real time or sort-of real time embedded OS’s (QNX, Linux, Wind River, Windows CE, et al). But we rarely touch the source of the OS- the BSP team does drivers for our specific devices, packages everything with a red bow and passes it on to the middleware team (the people who do all the software that actually does something useful :)) or the user experience team (pretty graphics and user interface team). I’m mostly in the last team with occasional dives into the middleware realm.</p>

<p>The board team reads schematics and uses hardware debuggers and analyzers. Hard as it may sound to believe they rarely use assembly language unless we’re talking hard real time like robot control and the like. Spend an hour looking at assembly of any decent microprocessor and you’ll run for your life.</p>

<p>All this for pretty powerful (1+ GHz, several GB memory) consumer electronic devices that are usually internet enabled via Bluetooth and cellphone and/or wifi.</p>