views:

1154

answers:

6

I would like my son to learn ARM assembler, and I'm considering buying him an embedded system that he can program so he can make LEDs flash and other cool stuff that I got a kick out of as a kid. Are there any emulated or virtual "workbenches" that offer this type of programming environment on the PC without using actual hardware? I'm keen to get him started with ARM as these chips seem to be in all the new devices such as phones etc.

+2  A: 

Hmm, this doesn't answer your question, but still: HP50g calculator has an ARM processor, and you can use hpgcc to write programs in C (and, consequently, ASM) for ARM. Not to mention that HP 50g is an extremely powerful and useful piece of hardware; who knows it might even get your son interested in math :) The C library supplied with hpgcc has routines for screen drawing and producing sounds, so it's also possible to do something "fun".

zvrba
+1  A: 

zvrba: thanks, I'll keep that in mind, I'm looking for more of a radio-shack style 50-in-1 electronics console for this millenium, and one that is emulated would be even better.

+1  A: 

You might take a look at ARM ADS (http://www.arm.com/products/DevTools/ADS.html). It includes simulator, visual debugger, IDE, online documentation, supports ARM 7, 9, 9e and 10 etc. You can use it on Windows or Linux.

At the time I was taught ARM assembler at college, professor used this IDE and it looked really powerful. Unfortunately we (students) were working on less powerful simulator system (called ATLAS).

Igor Pozgaj
+6  A: 

Try QEMU!

It's free and you can install Ubuntu or Debian linux on the simulated ARM core. Running naked code is possible as well (also much less fun).

As far as I know it does ARMv5, ARMv6 and Cortex-A8, so you have a broad range of cheap to high end ARM processors to choose from.

Best of it: Once your code works in the emulated environment you can just move the entire firesystem to flash or SD-card on a real hardware system. The kernel will take care about 90% of the hardware-differences. That will only work if you decide to run linux on the ARM of course.

Highly recommended.

You may also be interested in an easy to use and cheap ARM system on a module system. Imho there is nothing better than working with a real piece of hardware. A naked board that you can plug cables into and have real LED's blinking. In this case I suggest you take a look at the beagleboard.

Getting into embedded programming has never been cheaper. (www.beagleboard.org)

Nils Pipenbrinck
+2  A: 

vba, the gameboy advance simulator. Learn arm and then thumb, learn rom from ram, some fun video stuff, keypad inputs, etc. And then buying something like a supercard sd and a real gameboy to run the same programs on. Once you learn the gba to some extent the nds is so similar that you can focus on the dual processor thing and getting the binaries working. There are simulators for the nds as well so you actually never have to buy hardware if you dont want to.

dwelch
+1  A: 

To teach your son assembly for the first time check out a Chip-8 interpreter there are only 36 commands and wikipedia contains a clear definition of the op-codes.