Many microcontroller architectures have a long history, with most 8 and 16 bit architectures being designed more than 20 years ago. Over the years these architectures have been re-shaped several times to incorporate new technological developments and keep pace with the industries ever-increasing demands.
This lack of dominant microcontroller architecture has effectively prevented a common embedded microcontroller platform from developing, unlike the standards we rely on in the desktop PC world.
I have been working in the embedded systems industry for almost two decades now and it is safe to say that there is a genuine sea change under way. Over the last five years many low cost 32-bit microcontrollers have come onto the market.
This cost reduction and easy of use has been a great leveller and has made the traditional 8/16/32-bit distinction irrelevant. At the same time the number of competing 32-bit architectures has dramatically shrunk. In 1992 there were some eleven different architectures, today there are four. This is likely to shrink even further, probably down to two.
One of the big success stories of recent times has of course been ARM. The last few years has seen the widespread adoption of the ARM Cortex-Mx processor family. Many key semiconductor vendors such as Atmel, NXP, ST, TI and Toshiba now offer Cortex-based microcontrollers.
Today there are already several hundred Cortex based microcontrollers available, offering a wide ranging mix of peripherals, processing power and power consumption. Already many companies have seen Cortex as a 'safe bet' and adopted it as their standard microcontroller processor. The ARM Cortex-Mx family has been specifically designed for microcontrollers. It provides the CPU, Interrupt structure, debug and power management units in one standard 'envelope' that is common between all the different manufacturers. Learn it once use it many times, which you'll find attractive if you are anything like me.
To see a bigger version of this graphic click here.
Fig 1: The Cortex-M3 micrcontroller.