3 ms·
A startup I worked for in 2006 was ostensibly building embedded systems for their server farm. Granted: We were talking about x86 boxes, but they would boot fro
by ax0n 17y ago
A startup I worked for in 2006 was ostensibly building embedded systems for their server farm. Granted: We were talking about x86 boxes, but they would boot from 32MB of flash. Hundreds of them, we built. In our case, we were running a custom-packaged version of OpenBSD.
A few suggestions: Play with small, embeddable OSes on commodity hardware: uCLinux or even TinyCore/PuppyLinux, make a tiny BSD derivative to start out with.
Mostly, the startup was using 1U Rackmount servers that booted from USB "thumb" drives, but we also built a few bookPCs for other purposes. Our SMS/TXT Gateway systems were using Soekris Engineering systems. Those are neat (if pricey) x86 "Embedded" systems. And they're very well executed and great for taking the next step into tinkering with Embedded systems. Someone mentioned Beagleboard as well. I haven't ever used one, but some folks in the hackerspace nearby have been tinkering with them a lot, and that also seems like a good way to go, and more cost effective than Soekris stuff.
Pick up some Fonera routers or old wrt54g stuff to play with. Most of these are MIPS or Atheros System-on-chip.
Another one of my favorites is old HP Jornada clamshells. They run WinCE by default on ARMv4x hardware, but you can get a bootloader that you can run from Compact Flash which will load a smallish Linux distro up. http://jlime.com/ http://jlime.com/ - for example.
Once you're more comfortable with using the embedded operating systems, you can figure out how to cross-compile for these platforms. You will rarely write code and compile it directly on the target environment. From there, you've pretty much got it figured out.
As cperciva said, everything from Mr. Coffee and your TV, to your car and modern oscilloscopes are powered by embedded systems. Many of these run proprietary firmware on common microcontrollers, so they don't really have an operating system as such. I'd recommend getting into microcontroller programming next. Or, heck, get into microcontroller programming while messing with some of the easier and higher-level embedded toys. I'd start with the Arduino or Propeller platform. Both are great for learning the ropes.