tags:

views:

1110

answers:

8

Is it advisable to directly start off with the datasheet and user manual of an ARM processor for a newbie or first get an idea about the ARM world and then go ahead?

+1  A: 

In the words of Tom Lehrer "Plagiarise, plagiarise, let noone's work evade your eyes".

Or be like Newton (and Bernard) stand on the shoulders of giants.

In other words find out what otehr folks have done and idealy avoid reinventing wheels.

djna
+3  A: 

I would first get an eval board like STR750-LOVE. Then compile and understand the examples. After you are comfortable with the examples then it is time to move on to understanding what is under the hood and writing your own code. An important part of the learning process is trying to do something and then having to debug it and make it work. If you want to become an expert at the ARM you will need to be able to read the assembly with confidence. I just had an interview to be an ARM firmware developer and all I did for the technical part was to analyze THUMB assembly code and turn it into c code. Most of the compilers have an option to output the assembly that they generate.

Rex Logan
To start using a board wouldn't be a gr8 idea unless i know the architecture of the processor rite !! first i'll have to acquire a bit of theoritical knowledge how do go on with that
Dharavk
You don't need to know how a PC works to write code for it. However if you are just interested in how the low level stuff works just download the gcc-arm stuff and write or compile different c code and look at the assemble generated to learn the low level stuff. To be good at it though you will need to debug your code on actual hardware.
Rex Logan
+5  A: 

I'd recommend getting a BeagleBoard. They have JTAG support so that you can see what is going on in the hardware, sort of a hardware debugger. There are several linux builds that run on it. There is also a great community around it that will help you as you work with it. I have Ubuntu Jaunty running on mine, so there is no end of utilities and compilers that you can run.

Heat Miser
+4  A: 

When I begin with a new (to me) technology, I start by locating as many data sheets and application notes as I can and just reading them straight through. The first goal is to get up to speed on the jargon (and names of the players) unique to that technology.

With ARM, I'd start with www.arm.com, and their documentation at the ARM Information Center.

Update: I would also dive in to one or more manufacture's product lines, including a reading of at least one family programmer's manual. If your project plans are firm enough that you know what specific ARM CPU is going to be used, then you can get away with focusing on that specific model and its close relatives. If you are looking to get familiarity with the ARM so that you can choose the CPU to be used in project, then sampling a broad array of families is almost certainly the best plan.

There is a big list of ARM technology licensees. Of these, a few makers have products (based on the CORTEX-M3 flavor of the ARM core) that IMHO stand out for deep embedded systems applications.

My company has projects underway based on the STM32 family from ST Microelectronics. This family has a lot of on-chip peripherals with functionality that will be familiar to anyone coming from the 8051 world, or from the PIC world, and has sufficient FLASH and SRAM on the chip to make external memories optional.

I have heard a lot of positive things about the Stellaris family from Luminary Micro. It too looks like a good fit to a number of embedded platform needs.

Given the current price points of entry-level evaluation boards, I would strongly recommend picking up one or more for chips similar to your anticipated target application niche. A board with a small LCD, accelerometer, a couple of LEDs a button or two, access to the uncommitted GPIO pins, a built-in JTAG USB interface, and a complete GCC-based cross development tool chain can be had for the STM32 for under US$40, for example.

Similar packages can be found for many of the other ARM core based products.

Another way in which ARM is found is as the CPU core in a system on a chip. Quite a few SOC vendors are licensing an ARM CPU to put on their silicon alongside their dedicated hardware. I have seen video compression chips, network chips, firewire to ATA adaptors, and USB devices built this way, and that is only a sampling from published articles and press releases I happen to recall off the cuff.

RBerteig
+3  A: 

Several good resources are described in the answers to this related question:

In addition, Hitex has "Insider's Guides" for a few different microcontrollers based on ARM processors (free, but requires registration):

Most of them (if not all) are free downloads (I think they're sponsored by the microcontroller manufacturers). They're more geared to the microscontrollers rather than just the ARM speicifics, but they do in clude some of the ARM details and they're great overviews of the micros and the peripherals in the micros.

Michael Burr
+3  A: 

I would and do surf sparkfun.com, they carry olimex boards as well as make their own. Luminary Micro/stellaris are good as well. The beagleboard is more of a linux platform than something you access the arm features/instructions itself. You can use it but for that money you could buy somewhere between 3 and oh 7 different ARM based microcontroller eval boards. Either way I would start with a small board wrapped around an arm based microcontroller, st or lpc probably, the luminary micro is thumb2 only which I would only do after getting my feet wet with stock arm instructions then thumb instructions.

I am also a fan of using the gameboy advance as a learning platform for arm (not the NDS, that is advanced, start with the GBA family).

You will want the ARM ARM (the ARM Architecture Reference Manual), and then each specific are core has its own TRM, you will need both in order to learn what instructions are available to you. For the most part these manuals are good both as reference and learning from scratch.

dwelch
+1  A: 

I'd start with a cheap development board and example software, and go from there, looking up what you need to know as you go along.

A good primer for the ARM-core-based STM32 is the appropriately named STM32 Primer.

I wouldn't start with the technical manual, other than for a very quick browse. The one for the STM32 is 600+ pages long, and the accompanying Cortex-M3 manual is another 400 pages. Not exactly a light read!

Steve Melnikoff
+1  A: 

It really depends what kind of ARM, it's a really broad world. Usually ARM is integrated in a SoC (system on a chip). If you are preparing to migrate to a specific SoC vendor, then you'd need to consider all of it. In my experience the SoC pheripheral and cache choices have more influence than the actual core (except for performance).

As for the evaluation boards: I have good experience with Luminary micro ($50-$60 range) Cortex M3. It comes with complete (eclipse) development environment, examples, libraries and some hardware (i.e. USB, ethernet, OLed display) and examples which you can run and learn from. Learning by doing is imho more fun than learning by reading. I expect you'll be comfortable stepping up from 8051 to Cortex M3.

On the high end of the spectrum, the beagle board is a true number cruncher which can also run Linux.

Adriaan