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!


Adafruit publishes a wide range of writing and video content, including interviews and reporting on the maker market and the wider technology world. Our standards page is intended as a guide to best practices that Adafruit uses, as well as an outline of the ethical standards Adafruit aspires to. While Adafruit is not an independent journalistic institution, Adafruit strives to be a fair, informative, and positive voice within the community – check it out here: adafruit.com/editorialstandards

Join Adafruit on Mastodon

Adafruit is on Mastodon, join in! adafruit.com/mastodon

Stop breadboarding and soldering – start making immediately! Adafruit’s Circuit Playground is jam-packed with LEDs, sensors, buttons, alligator clip pads and more. Build projects with Circuit Playground in a few minutes with the drag-and-drop MakeCode programming site, learn computer science using the CS Discoveries class on code.org, jump into CircuitPython to learn Python and hardware together, TinyGO, or even use the Arduino IDE. Circuit Playground Express is the newest and best Circuit Playground board, with support for CircuitPython, MakeCode, and Arduino. It has a powerful processor, 10 NeoPixels, mini speaker, InfraRed receive and transmit, two buttons, a switch, 14 alligator clip pads, and lots of sensors: capacitive touch, IR proximity, temperature, light, motion and sound. A whole wide world of electronics and coding is waiting for you, and it fits in the palm of your hand.

Have an amazing project to share? The Electronics Show and Tell is every Wednesday at 7pm ET! To join, head over to YouTube and check out the show’s live chat – we’ll post the link there.

Join us every Wednesday night at 8pm ET for Ask an Engineer!

Join over 36,000+ makers on Adafruit’s Discord channels and be part of the community! http://adafru.it/discord

CircuitPython – The easiest way to program microcontrollers – CircuitPython.org


Maker Business — “Packaging” chips in the US

Wearables — Enclosures help fight body humidity in costumes

Electronics — Transformers: More than meets the eye!

Python for Microcontrollers — Python on Microcontrollers Newsletter: Silicon Labs introduces CircuitPython support, and more! #CircuitPython #Python #micropython @ThePSF @Raspberry_Pi

Adafruit IoT Monthly — Guardian Robot, Weather-wise Umbrella Stand, and more!

Microsoft MakeCode — MakeCode Thank You!

EYE on NPI — Maxim’s Himalaya uSLIC Step-Down Power Module #EyeOnNPI @maximintegrated @digikey

New Products – Adafruit Industries – Makers, hackers, artists, designers and engineers! — #NewProds 7/19/23 Feat. Adafruit Matrix Portal S3 CircuitPython Powered Internet Display!

Get the only spam-free daily newsletter about wearables, running a "maker business", electronic tips and more! Subscribe at AdafruitDaily.com !



10 Comments

  1. 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).

  2. 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.

  3. 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.

  4. 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.

  5. 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.

  6. jpbot:

    While it would have been nice to get a bit of credit here — the copyright notices in the files are all removed https://bitbucket.org/fabienroyer/nwazet.go/src/b24909aff18e/Microbuilder/drivers/lcd/tft — I’m glad to see it getting used. But it still kind of seems like bad form to take something with a very liberal BSD license and not follow the intent of the authors. Thanks for the heads up, though.

  7. 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.

    Thanks!

  8. Tom:

    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.

  9. 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….

  10. 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.

Sorry, the comment form is closed at this time.