TE
TechEcho
Home24h TopNewestBestAskShowJobs
GitHubTwitter
Home

TechEcho

A tech news platform built with Next.js, providing global tech news and discussions.

GitHubTwitter

Home

HomeNewestBestAskShowJobs

Resources

HackerNews APIOriginal HackerNewsNext.js

© 2025 TechEcho. All rights reserved.

Ask HN: Embedded Systems?

9 pointsby razerbeansover 15 years ago
I recently discovered a book called "Embedded C" by Michael J. Pont which is somewhat dated, but I was interested in learning more about embedded systems.<p>Does anyone have any suggestions as to where I could start if I have absolutely no experience in this area? And what chipset should I start with?

8 comments

ax0nover 15 years 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.<p>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.<p>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.<p>Pick up some Fonera routers or old wrt54g stuff to play with. Most of these are MIPS or Atheros System-on-chip.<p>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. <a href="http://jlime.com/" rel="nofollow">http://jlime.com/</a> - for example.<p>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.<p>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.
cpercivaover 15 years ago
What sort of embedded systems are you interested in? There are "embedded systems" which consist of standard server hardware with some preinstalled software (aka. "server appliances"); there are "embedded systems" which consist of low power boards running general purpose operating systems (e.g., cheap home routers); there are "embedded systems" which run specialized operating systems (e.g., the Martian rovers, running a commercially-available RTOS); and there are "embedded systems" which don't run what you'd recognize as an OS at all (e.g., your car, your TV, my blood glucose tester, etc).
评论 #1088700 未加载
followerover 15 years ago
I'd also recommend taking a look at the Arduino (<a href="http://arduino.cc/" rel="nofollow">http://arduino.cc/</a>).<p>The main reasons I got started with it is that you can start learning "at the top" with the "Arduino language" (really a C/C++ subset with some pre-processing) and you don't have to re-start from scratch as you make your way as far down as bare-assembly level (if you really want to go down that far) because the underlying tool chain (gcc) is the same (and also, open source/free software if that's important to you).<p>Because the project has aimed at non-technical users from the start the forums are very friendly to people just starting out.<p>If at some point you want to get away from the higher level interface the Arduino environment provides, you can keep using all the same hardware so you don't have to throw away your hardware investment.<p>You also have a choice in expenditure, from the official boards through the lower-priced "clones", then the non-USB runtime boards to the bare chip on a breadboard.<p>The Arduino environment doesn't have integrated debugging outside of serial console and LEDs but in general that's not too much of a hindrance--if you really want it you can look at some of the other tools for the AVR chips.<p>There's plenty of third-party library support for attaching different devices/sensors.<p>Once you reach the limit of what you can do with an Arduino you can look at some of the other chips in the AVR family or some of the semi-compatible ARM-based boards.
macemonetaover 15 years ago
Head over to <a href="http://makezine.com/" rel="nofollow">http://makezine.com/</a> for lots of projects to get started. Many are based on the Arduino, which you can pick up for under $30 USD:<p><a href="http://www.makershed.com/SearchResults.asp?Cat=43" rel="nofollow">http://www.makershed.com/SearchResults.asp?Cat=43</a><p>It's probably the easiest and lowest cost way to get your hands dirty.
brkover 15 years ago
If you are comfortable with C, I would recommend you look at PICs mostly.<p>The BAISC Stamp series, or the Arduino's are too get started with as well, but they may be too simplistic and the core of the chip is too removed from direct access to really be "fun" if you want to explore true embedded systems (IMO).<p>The PIC has many variants and has been popular for a long time. So, you can find lots of good references online for interfacing to Ethernet chipsets, GPS chips, gyros, etc.<p>You would probably want to also pick up a "EE 101" type book. To do anything of purpose with an embedded system you generally end up interfacing to external hardware. So, the likes of pullup and pulldown resistors, transistors, op-amps, diodes, RC (resistor/capacitor) circuits and so on become regular components.
olefooover 15 years ago
Hitachi makes a NAS head under the name SimpleTech, it's got ethernet and two USB ports and has fully open source software.<p>It runs on a little startech ARM SOC and once you get a cross compilation toolchain set up, it's easy to run stuff on it by loading from a usb drive.<p><a href="http://www.simpletech.com/products/storage/simplenet/simplenet.php" rel="nofollow">http://www.simpletech.com/products/storage/simplenet/simplen...</a><p>I can remember having laptops less powerful than these units, so they are roomy and fast by the standards of most embedded developers. But for prototyping stuff they are excellent.
JunkDNAover 15 years ago
I highly suggest the "beginning embedded electronics" tutorials over at sparkfun (<a href="http://www.sparkfun.com/commerce/tutorials.php" rel="nofollow">http://www.sparkfun.com/commerce/tutorials.php</a>), just to get yourself up to speed. I have no experience with any kind of hardware hacking (never even had one EE course in college) and I really thought they were great. The nice thing is that arduino (<a href="http://www.arduino.cc/" rel="nofollow">http://www.arduino.cc/</a>) makes it easy to get started, and then you can build more advanced stuff from there.
mruover 15 years ago
I would recommend getting a Beagleboard[1] or a Hawkboard[2], both low-cost single-board systems with somewhat differing capabilities.<p>[1] <a href="http://beagleboard.org/" rel="nofollow">http://beagleboard.org/</a> [2] <a href="http://hawkboard.org/" rel="nofollow">http://hawkboard.org/</a>
评论 #1088718 未加载