Register a SA Forums Account here!
JOINING THE SA FORUMS WILL REMOVE THIS BIG AD, THE ANNOYING UNDERLINED ADS, AND STUPID INTERSTITIAL ADS!!!

You can: log in, read the tech support FAQ, or request your lost password. This dumb message (and those ads) will appear on every screen until you register! Get rid of this crap by registering your own SA Forums Account and joining roughly 150,000 Goons, for the one-time price of $9.95! We charge money because it costs us money per month for bills, and since we don't believe in showing ads to our users, we try to make the money back through forum registrations.
 
  • Locked thread
overeager overeater
Oct 16, 2011

"The cosmonauts were transfixed with wonderment as the sun set - over the Earth - there lucklessly, untethered Comrade Todd on fire."



The old thread was archived, time for a new one! Please suggest corrections and additions.

What is embedded programming?
"Embedded systems" is a catch-all term for all the computers around us that we don't think of as computers. It covers a large range of platforms - from tiny microcontrollers where every byte counts, to powerful SoCs running full-blown Linux setups. Unlike PCs, embedded systems are typically programmed to handle a set of specific tasks and do them indefinitely.

What languages do I need to learn?
The number of available languages increases with processing power and memory - Linux boards like the BeagleBoard can run just about anything, and boards like the Netduino let you do embedded programming with .NET (embedded Visual Basic, anyone?).

On the lower end of the scale, though, you'll mainly be using C, and further along you'll want/need to look into assembly as well.

Embedded platforms - a short rundown

TI Launchpad (MSP430)


On the low end of the scale, the TI Launchpad is a simple programming board for the MSP430G2xx chips - 16-bit RISC CPUs with 2 kB of flash memory and an absurdly low power usage.

It's incredibly cheap to boot, costing just $4.30 shipped.

Arduino (AVR)


Based on the 8-bit AVR chips, the Arduino is one of the more popular microcontroller platforms out there. An official board costs around $30, but as it's open source hardware, cheaper clones are easy to find. It has a simple IDE that lets you set things up fairly quickly, and there is quite a lot of example code and tutorials available for it as well.

STM Discovery (ARM)


SilverAlicorn posted:

ARM was developed by Acorn Computers in the early 1980s to replace the aging 6502 family. The developers pretty much saw the dropping cost of semiconductor fabrication, thought to themselves "hey we could probably make our own CPU" and designed the single-most prolific ISA to date. ARM is literally everywhere, seriously. Your router, your cable modem, your cell phone, your GameBoy, your DVD player, probably.

At just under $10, the Discovery is probably the cheapest ARM dev board around. It has fairly good performance for the price, though, with a 32-bit CPU with 5 kB of RAM and 128 kB of flash memory.

Raspberry Pi


The Raspberry Pi is a fairly impressive system - it's credit card sized, it runs Linux, and it costs $35. It has a Broadcom BCM2835 SoC, with a 700 MHz ARM11 CPU and a dedicated GPU. (Right now the demand is huge, though - be prepared to wait or to pay extra if you want one.)

BeagleBoard (ARM)


The BeagleBoard blurs the line between embedded system and PC - it has fun things like a 1 GHz ARM CPU, 512 MB of memory, a dedicated DSP, USB, Ethernet, and just about everything else you could ever need. At $149, though, you probably won't be getting one to blink LEDs.

Other interesting platforms

Useful resources and links

overeager overeater fucked around with this message at 22:03 on Aug 12, 2012

Adbot
ADBOT LOVES YOU

overeager overeater
Oct 16, 2011

"The cosmonauts were transfixed with wonderment as the sun set - over the Earth - there lucklessly, untethered Comrade Todd on fire."



PIC, 8051, Netduino, and Teensy have all been noted! I'll write a bit as soon as I can - I'm actually using the Teensy for a simple MIDI box I'm making.

Pham Nuwen posted:

The Raspberry Pi and the Beagle Board are both very cool, but I wouldn't call them embedded environments. They're really general-purpose computing devices which just happen to be in a small package.

Fair enough - I put them there mostly to show the range of systems you can get for embedded use. The RPi in particular has been brought up often for DIY projects.

Popete posted:

Can we talk about embedded operating systems in this thread?

By all means!

overeager overeater
Oct 16, 2011

"The cosmonauts were transfixed with wonderment as the sun set - over the Earth - there lucklessly, untethered Comrade Todd on fire."



abraham linksys posted:

So, I've always been interested in embedded programming, since it's so far removed from what I do (web development). I'm thinking I'd like to buy a board and gently caress around with it, but I don't have any ideas for projects. So I'm wondering, what kinds of DIY projects you guys have been working on with your Arduinos and Teensys (Teensies?) and whatnot?

(fwiw, I'm thinking of making a "light show" sort of thing that can take audio and blink lights to the beat or something, which seems doable with Arduino)

If you have a microcontroller that simplifies USB HID stuff - like the Teensy and the Uno, I think - making a MIDI controller or a joystick is pretty simple and makes for a fun project. Buy cheap arcade buttons off eBay or DX, cut up a lunchbox for an enclosure, hook it up and play games/make music :cool:

Alternatively, you could make a pan/tilt rig for a laser pointer (or really small camera) with two servos. If you're lucky, you might be able to power both of them with the micro's current source for less wiring :effort:

The easiest way to do the "light show", I think, would be processing the audio on the PC, and then send commands over the serial port to have the Arduino control the lights. I can't really think of a way to detect a beat without FFT, which I think is a little too much for the Arduino.

  • Locked thread