The ARM microcontrollers are high-performance, 16/32-bit RISC-core devices. The ARM market is one of the fastest growing microcontroller markets in the embedded world. The prices of 32-bit ARM devices are now close to their 8-bit counterparts, while providing much more power and many more peripherals than any of the 8-bit microcontrollers. Variations of the ARM architecture are produced by a number of reputable vendors: Allwiner, Analog Devices, Atmel, Cirrus Logic, OKI, NXP, ST Microelectronics, Texas Instruments and many others (Intel, Freescale, Samsung, Sharp, Hynix, etc.), and are found in today's most popular consumer technology devices including the iPhone and most of the Android devices. There are ARM chips in TV sets, video players and even smaller devices like keyboards and computer mice. Experts predict that ARM MCU's are going to replace the industry's standard 8051 architecture in almost all applications within the next 5 years.
Olimex's aim is to provide low-cost development tools and boards for as many ARM vendors as possible. We have products which use ARM chips manufactured by Atmel, NXP, ST, Freescale, Awinner, Texas, Analog Devices, Atmel, Cirrus Logic, OKI.
A few years ago, ARM development was limited to companies who could afford the costs of programmers-debuggers-emulators, and development boards whose price typically ranged in the tens of thousands of USD. Then efforts were made by companies like Olimex to reduce the financial barriers holding back individuals by developing and producing affordable programmers and development boards. Today, anybody who wants to learn to program ARM devices can start with less than $100 budget. Olimex manufactures a number of debuggers suitable for such a low-cost developing - either based on an OpenOCD medium or a CooCox medium. Our tools are primarily used with (but not limited to): Rowley Crossworks, IAR Embedded Workbench for ARM, CooCox IDE, most GNU compilers. We maintain such a free distribution that it can be used as a starting point. It has support for a number of Olimex boards and debuggers. You can find more by clicking the image below:
- Relatively complex for beginners - a lot of multiplexing, a lot of low-level programming and understanding required (despite the library packs released by chip manufacturers). Definitely this architecture is not suitable for 'first steps in microcontrollers'.
- Very fast: most ARM7 cores run at 60Mhz; ARM9 cores run at 150Mhz+ providing more power than old 386 Intel processors;
- Low power: ARM7 cores need only approx 200-800 µW/MHz per Mhz, Cortex M3 needs 149 µW/MHz
- Great range of peripherals: ADC, DAC, USB, SPI, UART, I2C, CAN, Ethernet, SDRAM.
- Lot of internal Flash: 32KB-1MB
- Lot of internal RAM: 4-256KB
ARM GCC + OpenOCD is the most powerful development tool on the market
OpenOCD started in 2005 as an open source project for a master's thesis by Domenic Rath. At that time it had modest capabilities and supported only an ARM7 core. By 2011, with the help of hundreds of enthusiasts and contributors, OpenOCD became the JTAG platform with the biggest number of supported cores on the ARM market.
As of March 2013 OpenOCD supports: ARM7TDMI, ARM720T, ARM9TDMI, ARM920T, ARM922T, ARM926EJS, ARM966E, ARM11, ARM1136, ARM1156, ARM1176, CORTEX-M3, CORTEX-A8, CORTEX-A8, CORTEX-A9, XSCALE, MARVEL, MIPS. For the complete list of supported processors, you may visit the following pages:
- http://openocd.sourceforge.net/doc/html/Architecture-and-Core-Commands.html#Trace Port Drivers
OpenOCD is in active development and contributors are frequently adding new devices and capabilities.
There are two routes to beginning development with ARM:
- Using a GNU C compiler + Eclipse, a completely free C IDE and environment. GCC is the most powerful compiler for ARM, able to compile 1GB of sources for Linux without any problems; it's doubtful any commercial compilers would do this job. The trade off is that GCC has zillions of switches and options for the compilation, which may confuse beginners, and a 1500 pages user manual that nobody usually reads. Once the learning curve has been navigated, you can do everything the commercial compilers can do and more. Navigating through the mentioned learning curve, however, can take quite a lot of time. Our observations are that GCC is used mostly in Eastern Europe and in universities around the world, while in the Western world paying EUR 4000 for a commercial compiler justifies the time spent on the GCC learning curve. On the other hand, big companies like Siemens, Nokia, Infineon etc. use GCC as they need hundreds of seats, and make internal training justify the time spent vs. the money they would have spent on commercial compilers.
- Commercial compilers like Rowley, IAR, Keil, all come with support for different microcontrollers (i.e. register definitions, flash loaders to program different microcontroller flashes etc.). If you want to achieve fast results(the "Hello World" of embedded programming), then a commercial compiler is the route to go.
With GCC if you want to work with ARM XYZ, you have to find out if there already is a set of header files and a flash loader for it, or if you will have to make them yourself. The good news is that there is already support for most ARM's freely available on the internet. So it's up to you to decide which way you want to go.
This is a late-2011 article from EETIMES about the GNU Project part of which compares the sizes of popular GNU toolchains (in lines of code):
GCC + Eclipse now has 18 millions of lines of [well-debugged] code. There is no single company that can do a project of such magnitude, which clearly shows the advantage of the Open Source projects vs. the Commercial solutions.