Electronic – ARM Development

arm

I an new to using micro controllers .Recently, I have seen the ARM being talked about.

How different is ARM -Cortex development than normal Arduinos?

I have used a PSOC recently, which does use an ARM Cortex. But How can I start learning development of ARM based Mobile & small systems?

The options out there, are really big, and do not look like the ones to go inside mobiles/other appliances.

Best Answer

Let's break this up into parts...

How different is ARM Cortex development than Arduino?

Lots, or little, depending on your development platform of choice, and your goals. An explanation:

Arduino development is based upon the Wiring development framework, that essentially insulates the developer from the technical specifics (port setting bit patterns, calculating clock cycles for creating a delay, programming a timer peripheral's control registers and port settings for generating a PWM signal). Libraries are provided that simplify such tasks to a triviality, with the heavy lifting being done by the libraries under the hood.

ARM development, or for that matter typical microcontroller programming, is usually done in a lower level language with less under-the-hood magic, such as C, a microcontroller's native assembler, sometimes C++.

Thus moving from the Arduino to programming on ARM by traditional means, is an extremely painful process: Of the many highly skilled Arduino coders I know, almost none have been able to ever successfully transition to ARM or even AVR programming directly in C. The Wiring library hand-holding is a tough habit to break.

Now for the "little difference" edition:

Take a look at Energia, an "electronics prototyping platform ... with the goal to bring the Wiring and Arduino framework to the Texas Instruments MSP430 based LaunchPad." Recent releases of Energia support the Texas Instruments Tiva C (earlier known as Stellaris) platform, which is ARM Cortex M4.

Tiva on Energia (source)

With Energia (release 10 or later preferred) developing for the Texas Instruments ARM platform is similar to developing on the Arduino. The IDE is similar to Arduino's, many of the same libraries are provided, the underlying framework is the same Wiring, or a somewhat improved version thereof, and the underlying compiler compiler is GCC, also used by Arduino.

The Tiva C Launchpad from Texas Instruments is excellently engineered, getting you an ARM Cortex M4 development board with better specifications and more capabilities in most ways than the Arduino ARM (SAM4XE) equivalents, at a price of $12.99 including free international courier shipping if you order directly from TI. The Arduino ARM boards are not even in the vicinity of that price point, and I've not seen an official Arduino board with nearly the same manufacturing quality yet.

Tiva C Launchpad

(Yes, it has two ARM processors on one board, with the second one for hardware debugging and code stepping support)

Transitioning from these Launchpad development boards to a barebones Tiva C ARM controller is simple as well.

Yes, some of the Energia functionality doesn't match up with Arduino, or simply doesn't work as advertised: Just one example, pin change interrupts on Energia / Tiva C support rising and falling edge triggers, but not the CHANGE trigger that works on the Arduino.

In short, Energia helps people familiar with the Arduino to make a successful transition to ARM Cortex M4 programming, albeit only on the TI Tiva C ARM controllers.


How can I start learning development of ARM based Mobile & small systems?

By first leaving behind the crutches of the Arduino system, or for that matter any "child-friendly" development framework, and stepping out into the cold of bare-metal C programming.

It's not a simple transition, it is going to cause you stress, and after you have created your first half dozen actual stand-alone non-trivial ARM based solutions, you would just about be ready to look at the mobile phone ARM development space.

On the other hand, you could develop for a high-level mobile phone operating system such as Android or the iPhone, and ignore the processor-specific ARM side of things entirely. Languages used would be Java or other high level ones, and it doesn't really matter whether the phone's main processor is an ARM, and nVidia Tegra, or an Intel.


The options out there, are really big, and do not look like the ones to go inside mobiles

If this is about the size of an ARM controller's physical package, then some clarification on electronics packaging might be appropriate here:

NXP ARM processors
(Three different packages for NXP's ARM chips)

Most ARM licensees who manufacture ARM-based microcontrollers (actually any microcontroller, and most other digital electronics parts) will release a given device in several different packages, from the large, old-school DIP package that is rapidly dying out, to tiny 5 x 5 mm or similar, square QFN packages with no pins sticking out, to leadless Ball Grid Array (BGA) packages where the contacts are little beads of metal on the underside of the package, and down to tiny 1 x 1 mm or smaller "wafer scale" or "chip scale" packages that are essentially the actual silicon inside the "big" microcontroller you see, with the board designer needing to take care of connecting bond wires from the PCB to the bond pads on the silicon wafer "chip". Some options require even the cutting of the silicon die into individual chips to be done at the device manufacturer end.

See this excellent answer to a prior ARM question on this site, for the various package sizes out there.

Hobbyists will prototype using the DIP version if it exists, or the smaller SOIC or similar packages, more proficient individuals and businesses will prototype using the QFN or similar packages, and finally when a device does for final prototyping or mass manufacture, the BGA or more likely the chip-scale version of the microcontroller will be used in the extremely compact mobile phone boards you see today.

In short, while physical sizes and designs of the packages differ, the actual business end of the ARM or other controller stays the same.