4 ms·
You could do kernel and embedded work. Actually there's quite a lot of that. And device drivers. That would include Linux for desktop (including ChromeOS), a
by MichaelCrawford 12y ago
You could do kernel and embedded work. Actually there's quite a lot of that. And device drivers.
That would include Linux for desktop (including ChromeOS), as well as mobile (Android), embedded Linux.
Buy an embedded target board, then learn ARM and Thumb assembly code. Even if you never actually write any, it's quite helpful to know the instruction set architecture. The Raspberry PI is quite cheap, but I have a gumstix overo fire as it is rather more featureful.
Also look at really low-power, cheap targets as the ARM7TDMI. That's not something you'd use for mobile, but is quite common for embedded. Atmel makes oodles of target boards with ARM7. There are also storage chips from Oxford Semiconductor. They sell target boards that come with gcc for ARM.
Also look at embedded powerpc. I haven't done it myself, but powerpc is quite a nice architecture. More or less the difference is that powerpc is more powerful than arm, but typically needs to be plugged into the wall rather than run off a rechargeable battery as with ARM.
Motorola 68k is still important for embedded. I think that's what the dragonball is, an embedded 680-something. I once bought a Mac SE with a 40 MB scsi drive, that still booted into system 6.5, for nine bucks at a thrift store.
I used to dream of the day when I would have enough money for an SE.
Whatever box you presently have, install Linux or BSD into a VM. For Linux, read "Understanding the Linux Kernel" by Bovet and Cesati, as well as "Linux Device Drivers" by Corbet, Rubini and Kroah-Hartman. They're both published by O'Reilly.
If you're going to do embedded, while not strictly necessary, it is helpful to know how to build your own cross-compiler from source. Doing so will deepen your understanding of the target architecture. It's also a huge PITA.
You'll need to know at least one scripting language to get a job. Getting really good at any one of bash, python, perl or will be just fine, in addition to GNU make.
- MichaelCrawford 12y agoLook for "Android Platform Development" jobs. That is, as opposed to "Android App Development". Besides the kernel, there is userspace stuff like the OpenGL ES libraries, audio and video codecs and the Dalvik JVM. You could also work for Apple, doing all that stuff for iOS or Mac OS X. (OS X drivers, and the driver architecture of the kernel are written in a greatly simplified subset of C++, but the rest of the kernel is C, a massive fork of *BSD on top of Mach, but not as a microkernel, rather Mach is statically linked.) To be an Android Platform Developer, you need to work for a handset manufacturer, such as Sony Mobile, or Sharp Labs in Camas, Washington, or someone who makes the components, like Intel, which has development shops all over the world but is headquartered in Hillsboro, Oregon. There are a few Android Platform Development consulting firms, but not many that I know about. Most is done in-house, or like Intel, they provided reference implementations so as to move their chips. Work for anyone who makes the chips that go into mobile, like ARM Holdings - mostly dev tools - or QualComm, mostly they do wireless I/O.