tags:

views:

580

answers:

3

During this year there will be coming couple sub-600€ multi-touch portable computers that contain Tegra2. They bring me to a good excuse to learning ARM assembly language. But I have no clue where to start from aside the arm.com.

For first throw I could just pick up an emulator with a linux distribution in it. But which emulator and distro would work best on this one? Having access to the host system's files would be okay so I could compile and execute ARM binaries straight from my home-directory.

I wouldn't want to waste much money to books so I'd need some assembly source code examples and a good free introduction to the instruction set. gcc compiler flags for compiling ARM programs on x86 would be also nice but I might find them out myself as well.

+4  A: 

Obtain an evaluation version of of one of the arm software toolkits which will include a debugger/software emulator. If you're willing to spend a few hundred dollars, obtain an arm eval board (Keil sells a few). You can test your code on the board via a JTAG interface and see what happens on real hardware.

These should get your going in the right direction

Disclosure: I work for ARM.

David Lively
+3  A: 

The ARM reference documents actually provide a very nice introduction to the instruction set. Those are a great place to get started.

Since you're writing assembly (and hence probably are interested in low-level performance details), you'll want either a cycle-accurate simulator or actual hardware (or both). Besides the hardware options that David Lively suggested, you might also look into a Beagle Board.

As far as compilers go, there's ARM's RealView tools and there's GCC. Support for newer hardware features may be somewhat more fully baked in the ARM tools.

Stephen Canon
+1 for the Beagle boards. I've seen them in action in the office and they seem to work great.
David Lively
+2  A: 

Start with qemu for an emulator, linux distros, and some boards on and off the market are supported. Go to sparkfun.com there are many sub $50 arm boards for learning arm assembler, but not necessarily linux. You want to learn arm7 or arm first then thumb second. The embest board (assuming it is not too cheaply made) is better than the beagleboard as to make the beagleboard useful you will need to spend another $150 in cables and usb stuff. The embest board took a week or two to get to the usa from the time it was ordered. For that money I prefer the openrd board or an plug computer with a marvell sheeva. Or for an older system go with embeddedarm.com. if you are looking for assembler you wont need a linux capable system, so go for something from sparkfun, arm7 based like the sam7 or lpc something, there is one with a serial port on board already but you have to supply the power. Get a jtag-tiny or three from amontec, great tool to just have.

The game boy advance is a good place to learn to program the arm as well and thumb, visualboy advance is a good emulator. I can show you how to make a serial cable and find the hardware to do other things. There is a linux. The NDS (Nintendo DS) is also a good system but I would start with the GBA first. Avoid the NDSi.

Disclaimer: I have no affiliation from arm but have at least one of everything described above, plus some stellaris boards (thumb2 learn the cortex-m3 LAST after arm and thumb).

dwelch