proj-oot-lowEndTargets-contemporaryMcus

Difference between revision 2 and current revision

No diff available.

Embedded and low-end hardware survey: Contemporary MCUs

circa 2014

Teensy 3.0

http://www.kickstarter.com/projects/paulstoffregen/teensy-30-32-bit-arm-cortex-m4-usable-in-arduino-a

Technical Specifications:

    32 bit ARM Cortex-M4 48 MHz CPU (M4 = DSP extensions)
    128K Flash Memory, 16K RAM, 2K EEPROM

Cortex M-series

http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dai0321a/BIHEADII.html

" The Cortex-M0, Cortex-M0+, Cortex-M1, Cortex-M3, and Cortex-M4 processors do not have any internal cache memory. However, it is possible for a SoC? design to integrate a system level cache. Note

A small caching component is present in the Cortex-M3 and Cortex-M4 processors to accelerate flash memory accesses during instruction fetches. "

Phone baseband processors

" This operating system is stored in firmware, and runs on the baseband processor. As far as I know, this baseband RTOS is always entirely proprietary. For instance, the RTOS inside Qualcomm baseband processors (in this specific case, the MSM6280) is called AMSS, built upon their own proprietary REX kernel, and is made up of 69 concurrent tasks, handling everything from USB to GPS. It runs on an ARMv5 processor. "

Arduino

Arduino Due: "The Due makes use of Atmel's SAM3U ARM-based process, which supports 32-bit instructions and runs at 96Mhz. The Due will have 256KB of Flash, 50KB of SRAM, five SPI buses, two I2C interfaces, five serial ports, 16 12-bit analog inputs and more. This is much more powerful than the current Uno or Mega.". Cortex M3

http://arduino.cc/en/Main/arduinoBoardDue says: 96 KBytes of SRAM. 512 KBytes of Flash memory for code.

ATmega1284P

Used in http://reprap.org/wiki/Melzi and i hear ATmega128 referred to often (e.g. search on this page for "ATmega128").

"The high-performance Atmel 8-bit AVR RISC-based microcontroller combines 128KB ISP flash memory with read-while-write capabilities, 4KB EEPROM, 16KB SRAM, 32 general purpose I/O lines, 32 general purpose working registers, a real time counter, three flexible timer/counters with compare modes and PWM, two USARTs, a byte oriented 2-wire serial interface, an 8-channel 10-bit A/D converter with optional differential input stage with programmable gain, programmable watchdog timer with internal oscillator, SPI serial port, a JTAG (IEEE 1149.1 compliant) test interface for on-chip debugging and programming, and six software selectable power saving modes. The device operates between 1.8-5.5 volts.

By executing powerful instructions in a single clock cycle, the device achieves throughputs approaching 1 MIPS per MHz, balancing power consumption and processing speed. " -- http://www.atmel.com/devices/atmega1284p.aspx

Specific devices

NEST thermostat

ST Microelectronics STM32L151VB ultra-low-power 32 MHz ARM Cortex-M3 MCU -- http://www.ifixit.com/Teardown/Nest+Learning+Thermostat+2nd+Generation+Teardown/13818

Pebble watch

ARM Cortex-M3 processor

SENSORICA moisture tracker

a guy on the SENSORICA mailing list is using this chip for a soil moisture tracker:

http://www.atmel.com/devices/attiny85.aspx

512 bytes RAM, 8k flash

the chip costs about $1-$3

i'm only noting this because, although anecdotal, it's as an example of a real-world very low end use-case that i randomly heard about (i think it's not the lowest-end chip in its series, either, suggesting that someone thinks a real world application needs either 512 bytes RAM or 8k flash (or some other spec that the manufactorer thought would go well with those amounts))

Random Comments

http://lifehacker.com/how-to-pick-the-right-electronics-board-for-your-diy-pr-742869540

"It really makes zero sense to use an 8 bit uCtlr just about anywhere anymore, when you can get an ARM in the same size package and at nearly the same cost. Since flash dominates the die area in a microcontroller, 8-bit versus 32-bit logic is noise -- it has less cost impact than the package. There are a lot of Cortex-M3 parts in 48 pin packages now that cost only slightly more than 8 bit parts. (I should point out that there is huge difference between, an ARM Cortex-M3 and an ARM-A9, for instance an MMU.)

In the end, it comes down to MIPS and MFLOPS, and the die area and power required to do that much computation. When an ARM has enough functional units to match the MIPS and MFLOPS of an x86, it will take as much die area and power. At the complexity level of a Pentium IV, the added ugliness of the X86 instruction set is pretty much noise in the total die area and power. (In a past life I was an instruction decode and pipeline control logic design specialist -- I can tell you that x86 instruction decode is as ugly as it comes -- and in the day and age of out-of-order execution, that almost doesn't matter, except that because of all that ugliness x86 code is freakishly dense, which means the same size I-cache holds a lot more useful code. When you toss in the fact that the ugliness is also guarantees employment for instruction decode specialists, I'd call that a win :) "

" I use frequently the cheap $9.90 ARM 32 bits LPC2103 board, running at 48MHz, 32KB flash and 8KB RAM: http://www.wayengineer.com/index.php?main_page=product_info&products_id=129 "

" Wow that pdip cortex-m0 is awesome ! It can even run directly from 2 AAA batteries and is debuggable by openocd without ugly kludges. Once it sells on ebay or anywhere with cheap intl shipping, I’m definitely there ! The only shame is it doesn’t have a usb device interface (but you could make a software-based usb low speed device with tons of time to spare). Thanks a lot, hack a day ! "

"

Hussam Al-Hertani says: August 13, 2012 at 10:35 am

There are many ARM Cortex Boards out there. The best (non-arduino clones) in my opinion are the LPCXpresso boards/IDE. The boards cost $20-$30USD, come in many variations, LPC1114(M0)/LPC11U14(M0)/LPC1227(M0)/LPC1343(M3)/LPC1769(M3( with a hardware debugger and a LPCXPresso Developer environment limited to 128KB program size but thats a lot of programming…infact thats more memory than the program memory available on most of the micros on the LPCXpresso boards. The fact that a 28-pin DIP version of the LPC1114 (32KB Flash) micro is available is also nice though I’d like to see a DIP version with more flash memory…at least 64KB. ... The other two boards that have been announced but not produced are the Cortex-m0+ Freedom board from freescale and cortex-m4 Stellaris launchpad. The Cortex-m0+ Freedom board is $13. You get a Dev board (arduino compatible) with debugger. Hopefully they will be compatible with Freescale’s Evaluation version of CodeWarrior? which is limited to 128KB. Again this should mean practically free development cost for the board since the on-board micro has 128KB of memory on it. The last one that (looking real good!) is the $5 Stellaris Launchpad (M4). The board will probably have an on-board debugger and some development tools support via TI’s code composer studio. "

"

peterbjornx says: August 13, 2012 at 2:47 pm

At the moment i’m designing an arduino pin-compatible board based around the TI LM3S817 (Cortex-M3 with 64kB rom and 2kB RAM), which i might also adapt to bigger Stellaris MCU’s "

" My personal favorite 32bit controller is the Maple. But all of my embedded projects have used 8 and 16-bit PICs. My temporarily embedded projects largely use Arduino-ites. "

" I'm writing this comment because I happen to be in the position of working on several projects across many microcontroller lines that have been mentioned in this post – ultra-low-end 8-bit PIC12/16Fs, 32-bit PIC32s, and 32-bit ARMs (mostly Cortex-M0).

Now I know my recent experience with PIC12/16s isn't particularly representative of most hobby 8-bit applications, as PIC16s are pretty crappy architectures in the 8-bit hobby world, which has AVRs (probably one of the highest performance but also most expensive 8-bit chips out there) taking a pretty big market share.

By far the best reason I can give you for switching to 32-bit is simply that they have so many features and perform so fast that they're just easier to work with. The 8-bit project I've been working on is a fairly extensive but also price constrained project with a custom low level infrared protocol decoder, several PWM outputs, and a software instruction decoder. As you can imagine, coding this to work was a b. However, at the sub $1 price point necessary per chip, there wasn't much of an alternative (I hadn't heard of Cortex-M0s / they hadn't come out when we originally spec'd the hardware for the project).

Now I absolutely wished we'd been able to use an ARM. At 48MHz, roughly 1-2 clocks per instructions, 13(!!!!!) PWM outputs, ADCs, 40+ GPIOs, an LPC11xx series does just about everything you wanted with very little work, and virtually no need to worry about not having enough clock cycles. I needed an infrared translator board (still needed processing–implemented a custom serial protocol and the same custom infrared protocol, with some automatic command timing specific to the application) and managed to finish the code literally in two days' worth of free time, compared to about 3-4 weeks for the 8-bit part of the application. No need to be concerned about how I implement passing variables (used good ol' reusable queue structs rather than static queues), using greater than 8-bit variables, etc–I could focus my time on getting my project to work rather than dealing with 8-bit nonsense (16-bit timers on 8-bit micros is a PAIN when buffering isn't available on your chip!)

You can find dev boards at the <$10 range. ... Anyway, to end this, I'm going to link to elm-chan (crazy dude who made his own analog feedback loop to drive a high performance laser projector) and his article on switching from 8-bit to 32-bit Cortex-M0s. It's in Japanese, so you'll have to do a translation, but it's well worth the read as it really matched up pretty well with my experiences and I think many hobbyists' experiences with switching to 32-bit. "

" 8-Bit microcomputer on-board RAM is at most 8 to 16 K bytes, because beyond this RAM is required when 32-bit will be to select a microcontroller. "

LeafLabs Maple

http://leaflabs.com/devices/maple/

Flash Memory: 128 KB SRAM: 20KB

Arduino

" The most popular programming environment for the Atmel AVR is Arduino. The Arduino language is a subset of C++.

Arduino "sketches"/programs appear syntactically very similar to Java. The Wiring language which Arduino derives from has implementations in C++ (Arduino), Java (Processing) and Javascript (processing.js).

Both languages share the same declaration style, loop constructs and arithmetic operators due to their common ancestry in Algol68. Typically, all objects in Arduino are declared globally or on the stack, so like Java, member functions are called with the . operator (eg. LED.flash()).

The language will be very familiar to a Java programmer - but, importantly, Arduino sketches are compiled into native code which runs at full speed with full hardware access. This is critical for getting the most from your microcontroller.

Here is the API.

Arduino provides everything you need to get going: low cost hardware, a free integrated development environment and a bootloader (so you can load code over USB/serial).

"

--

http://hackaday.com/2011/02/01/what-development-board-to-use/

http://www.avrfreaks.net/index.php?name=PNphpBB2&file=printview&t=80840&start=0

"I fear the 16-bit market is a dying breed. 32 bit is now encroaching on the 8-bit market (think LPC ARM) and squeezing out 16-bit."

---

" minibox is about to launch their ARM board the pico-SAM9G45-X which has a Atmel ARM926EJ-S 400MHz MCU for $59-$69. "

http://www.mini-box.com/pico-SAM9G45-X appears to have 32K cache ( http://www.atmel.com/images/atmel_6438_32-bit-arm926ej-s-microcontroller_sam9g45_datasheet.pdf )

---

Cypress PSoC? 4: Up to 48 MHz, MIPS, Flash 16 KB to 32 KB, SRAM 4 KB Cypress PSoC? 5: Up to 67 MHz, 84 MIPS, Flash 32 KB to 256 KB, SRAM 16 KB to 64 KB

---

" To lead off this series, I am looking at processors that cross new low price thresholds because there have been a handful of announcements for such parts in the past few months. Texas Instruments’ 16-bit MSP430 represent the lowest public cost parts which start at $0.25. Moving up the processing scale points our attention to NXP’s 32-bit Cortex-M0 processors which start at $0.65. Rounding out the top end of the batch of new value-priced processors is STMicroelectronics’ 32-bit Cortex-M3 processors which start at $0.85. ... Another area of controversy for processors that push the low-end of the pricing model is how much on-chip resources they provide. To reach these price points, the on-chip resources are quite constrained. For example, the Cortex-M3 part includes 16-kbytes of Flash, while the Cortex-M0 part includes 8-kbytes of Flash. The MSP430 part includes 512-bytes of Flash and 128-bytes of SRAM. These memory sizes are not appropriate for many applications, but there are growing areas of applications, including thermometers, metering, and health monitoring that might be able to take advantage of these resource constrained devices. " -- http://www.embeddedinsights.com/channels/2010/03/26/extreme-processing-thresholds-low-price/

---