Friday, December 30, 2011

ARM for Hobbyists

M0 mbed from mbed.org
ARM chips have gained a foothold in hobby electronics that I suspect will become fairly significant by 2015 or so.

Certainly some projects (several of mine included) will benefit from more RAM, larger program space, faster clock speeds, and 32-bit processors.

What's required for widespread uptake of ARM are a combination of free tools with libraries that simplify programming and low cost development boards that make prototyping easier.

  • Leaf Labs began providing an Arduino-derived IDE for their Arduino-compatible STM32 ARM-based boards some time ago. The Maple Native has been promised for quite awhile but nothing yet.
  • The mbed M3 and M0 dev boards with online compiler have been around for a few years now and are growing in popularity. The DIP package makes for easy breadboarding. The library is truly stellar and there's a big community and many user-written objects. An RTOS is available. Web-based compilation is quite fine if you're not in the field.
  • The LPCXpresso is a bit faster than the mbed at 120MHz and comes with a free IDE and features a DIP form factor, too.
  • To get down to the bare metal, CMSIS is a cross-platform library from ARM that abstracts the ARM core capabilities. As far as I know, vendors supply peripheral libraries. STM has a standard peripheral library, for example. DSP libraries are typically available, too.
  • Arduino and Atmel have teamed and announced the Due featuring a SAM3U, a 96MHz ARM Cortex M3. Still waiting on this (7/2012) and actually we've been waiting for quite some time. The big issue I see is that Arduino libraries don't even come close to taking advantage of all a typical ARM MCU's capabilities so presumably enhanced capabilities are in the works, but that is just my assumption.
  • The Wiring project (from which Arduino descended) plans to introduce STM32 ARM compatibility at some point. I've been waiting to see the home page announcement change for quite some time, now. Leaf Labs is working with Wiring now.
  • CooCox is an IDE, peripheral library, and set of tools intended for programming across multiple ARM families, with a few supported so far (7/2012). As ARM peripherals differ across families, this project is quite promising but like others, is dragging on.
  • Among a slew of hobbyist-unfriendly QFP packages, one ARM vendor, NXP, is supposedly going to release a 28-DIP form factor Cortex M0, the USB-capable LPC1114FN28 but I've been waiting for this to show up for almost a year now (7/2012). NXP offers M0s in SOIC and TSSOP form factors as well.
  • There are more than a few low cost dev boards out there. Too many to list, in fact.
Not that ARM is the only 32-bit, high performance game in town but I've become very interested in the platform in the last few months. I know this isn't a comprehensive list. If you know of other ARM-based development hardware/IDE platforms I'd love to hear about it.

Bottom line: your best bet is the mbed platform, I think. The library capabilities are awesome and you get a lot of community support. It's a huge step up from the Arduino paradigm many of us are used to. While we wait and wait for the Arduino Due, Wiring, CooCox, Leaf Labs solutions seem viable.

Otherwise you're left to coding your own stuff using CMSIS and vendor libraries. It's more painful and you're basically stuck with a particular vendor, maybe even a particular family.

Coding an ARM is quite a bit more complex than coding an 8-bit AVR and that may be why we haven't seen a clear open source winner emerge yet.

No comments:

Post a Comment