June 8, 2012 AT 12:50 am

EE Bookshelf: ARM Cortex M Architecture Overview

I came across this presentation from Embedded World today that gives a brief summary of the various ARM Cortex chips (and there are a lot of them in the Cortex M, R and A families!), but specifically the ARM Cortex M series. One of the biggest advantages of using ARM is that everything tends to be forward compatible, meaning that every instruction in the teeny-tiny Cortex-M0 core is supported in the larger Cortex-M3, and all the M3 instructions are included in the even larger M4 (which adds single-precision floating point acceleration, and some basic DSP-type commands), and so on. If ARM has really taken off in recent years, this easy migration and transfer of knowledge is a big part of it, combined with the huge number of chips available from a half-dozen manufacturers (TI, NXP, Atmel, ST, Freescale, Energy Micro, etc., etc.).

I’m kind of curious how much interest there really is in low-end ARM chips though — essentially the Cortex M family, since the A-series is far more complicated to work with and isn’t aimed at solving the kinds of problems most hobbyists are working on. I learned embedded development on ARM and it’s what I’ve always used, so I always have a hard time judging how accessible people find it, and what they’re looking to learn to get started with ARM. I’m convinced the low-end ARM chips are the best value on the market right now — just look at the specs for dirt-cheap chips like the Cortex-M0 LPC1114 at $1 (50MHz, 32kB flash, 8kB SRAM) or the Cortex-M3 LPC1343 (72MHz, USB, faster code execution thanks to three pipeline architecture versus single-pipeline on the M0).

Let me know in the comments below what you’d like to see with ARM, or if you’d rather see things focused in a different direction (like focusing EE Bookshelf more on PCB and HW design, or general embedded SW development best-practices). I’m all out of favorite datasheets and books, and wondering what people want to see more of moving forward!

10 Comments

I’d definitely like to see more ARM stuff! I’ve done some ARM development with the STM32 Cortex M3 line, and plan to continue to do so. The barrier to entry is pretty high however, with getting a solid dev environment with debugger working being very painful when I last set things up a few years back (and I haven’t changed it since because it was so painful).

I second Richard’s comment.
If getting access to the Cortex M- was easier… and the barrier of entry was lowered– the enhanced feature offering would be really appealing.

There has been a few vendors that have made a lot of effort to make development a little bit easier (e.g. embedding the peripheral libraries into the ROM of the device for function calls — not needing to write drivers in programs), but it’s a far cry from the getting started experience with the Beaglebone or like.

I find it puzzling that more makers haven’t been embracing the Cortex-M series. I switched to the LPC1114 for some personal projects several months ago, and I can hardly find a reason to use a PIC or AVR anymore. The small ARMs are 4 times the processor at 1/4th the cost… it seems like lack of momentum is the only thing keeping people from using them.

The barrier to entry isn’t even that high anymore, thanks to the folks LeafLabs (http://leaflabs.com/). They have done all the difficult work of creating a cross-platform Arduino-style IDE for their Maple dev boards, making it as easy to use some powerful ARMs as it is to use an Arduino. Their products are a bit expensive for my tastes, but I would still love to see them available through Adafruit.

Maybe ARM isn’t the direction Adafruit is interested in at this time but I’d be happy to see the Microbuilder LPC1343 board or similar make a comeback. Though I have a couple and am completely set on that front.

I don’t know about other chips, but the LPC1343 as Kevin produced is easy to get started with. A nice standard library and an easy to use bootloader. However the toolset is a little larger than Arduino or even CrossPack for AVR.

I think some tutorials like ladyada has for Arduino projects (datalogger, sensors, displays) would be a great addition to get some project ideas going.

I have the mbed on my wishlist for when I have some more time because I’m interested in the built in Ethernet offered by some of the other chips (LPC1700 and LPC1800 series).

And there is the NETduino for ARM fans too, see also what Nwazet is up to with the NETduino GO…they even have a 2.8″ touch screen using some of Kevin’s touchscreen/LCD code and UI.

Getting started with the Cortex-M0 or M3 is really easy with an mbed. They’re a little expensive compared to an arduino but have a number of advantages like the USB and ethernet support as well as the more powerful processing.

I’ve not tried it myself yet, but it looks fairly painless to migrate from using an mbed to a bare cortex chip using an mbed as an intermediate to transfer the binary.

I just got my first ARM chip with an STM32f0 discovery board Digikey sent me. I’m excited about getting started with it and would love to know what are some of the best books and websites to learn from (in addition to LeafLabs.com and mbed), if any of you experienced ARM developers out there have recommendations.

I have one of the Cortex M4 discovery boards here somewhere, but I’ve never really played with it, and I can’t really offer much assistance. I’m a lot more familiar with NXP MCUs and the tools around them.

If you’re interested in a good overview of the Cortex M0, you should have a look at the latest edition of “The Definitive Guide to the ARM Cortex M0” by Joseph Yiu. It might take a bit of trial and error to digest parts of it, but it’s an excellent book and worth the time if you’re serious about ARM. There is also a version by the same author on the M3, but make sure you pick up the second edition.

The company I work for was seriously considering re-porting an open-source radio protocol to an ARM when we found out our current efforts of porting the code from Renasas to ATMega would not fit in an ATMega that didn’t have a zillion pins and unable to fit in our… Postage-stamp-sized area. Instead, we switched to an ATXmega. It works, but I figure future versions of our product will be leaning towards ARM as ATXMega development does not follow the cross-platform development of the ATMegas (really, Atmel?).
I’ve spoken too much already…
…Brushing up on Part 15….

I was glad to see adafruit start carrying the mbed. But I also vote for more ARM boards (e.g. the Leaf or olimex F4 boards w/ a sd and ethernet breakout), and content/tutorials targeted at the platform. I’ve worked with the propeller and arduino in the past and hit walls, so the next platform I will invest time in is the ARM F4 – more power and no additional cost.

However, there’s still not the community present with the arduino and propeller – hopefully w/ leaf and others this will change. 1000’s of Discovery F4 boards are floating around now, but I haven’t seen many good example projects (w/ code). I’m only a hobbyist, and dummy howto’s and example projects are critical, but still sparse. mbed is an exception, but I’m unsure if I’d start a new project with the mbed – given the specs of the F4 and boards that come with sd and ethernet broken out, and for much less money…the unknown is whether there will be enough example code to make it more painless than sticking with mbed.
Anyway, more posts that discuss various ARM topics, and associated products, would be very welcome.