ARM programming, where do I start?
July 6, 2008 3:04 PM   Subscribe

How do I get started programming ARM chips?

I'm looking for recommendations for a kit and/or book about ARM programming. I'd like to try a few beginner projects then try some of my own code but have no idea where to get started.

Background: I have a Master's in Electrical Engineering and did some PIC and 68HC11 assembly in school as well as C++. Since school I've worked at Intel and now a smaller chip company and am actually working on an ARM core right now but my job is far removed from coding -- I do custom circuit design (L1 memory array), a little layout and some design automation work (perl, TCL, etc).

I'm simply bored and looking for a new hobby.
posted by wolfkult to Technology (11 answers total) 9 users marked this as a favorite
 
I highly recommend the NXP (formerly Philips) LPC series. I started with LPC2138 since it seems to have the most community support. I didn't bother with a book since the processor is very well-documented by NXP.

If you aren't adverse to spending some money, Rowley Crossworks is a rather good IDE. However, with a bit of work, you can get Eclipse and GCC to do cross-development for free. I designed my own board to start, which I would suggest as an excellent learning experience. However, if you want to get your own, Olimex boards (distributed in the US by SparkFun) are a good place to start.
posted by saeculorum at 3:29 PM on July 6, 2008


Microsoft's SPARK hobbyist dev kits looked interesting earlier this year, but I haven't investigated them in any depth.
posted by yort at 3:30 PM on July 6, 2008


I'd recommend this book as a starter for ARM programming.

Also, for a fast ARM FFT, look here.
posted by Neon at 3:40 PM on July 6, 2008


GCC works quite well for the ARM (you can just download the stock GCC and compile it for an ARM target, or you can use one of the many tweaked distros). OpenOCD is a popular tool for downloading to / debugging small embedded ARM chips.

There are a bazillion ARM chips and dev boards out there; you might want to narrow things down by deciding whether you're looking for a smaller chip to get close to the metal on (maybe an ARM7TDMI type chip) or something with an MMU that'll run Linux or other full-blown OSs.

I've bought stuff from Olimex and Sparkfun before and been happy with it.
posted by hattifattener at 7:11 PM on July 6, 2008


My understanding is that more recent devices running PalmOS (ie, Handspring Visor) are ARM-based. I've have written code targeted for them (albeit in C) and the gcc/eclipse rig was pretty much a free download. That's a pretty low cost to start hacking with a fairly well-defined platform.
posted by plinth at 7:27 PM on July 6, 2008


The Nintendo DS is a dual ARM system. The homebrew development scene is moderately active and there are emulators available.
posted by chairface at 8:51 PM on July 6, 2008


I'm sure the Debian ARM Porters are looking for help.
posted by PueExMachina at 9:20 PM on July 6, 2008


Have you looked at Microsoft's .NET Micro Framework? If you've got your heart set on actual low-level embedded programming it may not be what you're looking for, but for a new hobby programming, it's pretty much ideal. This is one of the more interesting dev boards that can run the platform, and the price isn't too outrageous for what you get.

(Disclaimer: I contracted at Microsoft in the group that makes this product 2007-2008.)
posted by kindall at 9:39 PM on July 6, 2008


The Gameboy Advance also has an ARM chip. Here's a site with some info.
posted by fnerg at 11:29 PM on July 6, 2008


I appreciated ARM System-on-Chip Architecture though it's pretty hardware design oriented rather than software oriented!

ARM works with Codesourcery to provide ARM support in GCC; ARM also have their own (closed source) compilers and development tools if you can afford them.

As other commenters have mentioned, there are plenty of consumer devices on the market with ARM chips inside; the Nintendo DS, the PSP, the GBA, iPhone, iPod, OpenMoko, many other mobile phones/smart phones, development kits, etc. Of course, if you're developing for (e.g.) the iPhone you'll be doing 'iPhone' development as much as 'ARM' development.

for a fast ARM FFT, look here.

I'm going to download that fast FFT after using my PIN number at an ATM machine :)
posted by Mike1024 at 4:49 AM on July 7, 2008



In addition to the other excellent suggestions :

The Lego Mindstorms NXT uses a 40 Mhz ARM 7 processor.

HTH.
posted by Pogo_Fuzzybutt at 7:02 AM on July 7, 2008


« Older How to get justice for victim of assault in UK?   |   Gmail chat problem Newer »
This thread is closed to new comments.