[ overview | news | status | documentation | download | feedback | links ]
ARMphetamine is a project to create a fast and accurate ARM processor emulator. A technique known as "dynamic recompilation" will be used so that the highest possible speed can be achieved for emulated code - ARM code programs are translated into native code as they are being emulated. The current development platform is Linux/x86.
It is possible to configure ARMphetamine at compile time to support different processor revisions and hardware models. Check out the CVS source to find out more. ARMphetamine is currently not being written very much.
There is currently no projected release date. It would be a foolish thing to try to guess. If you'd be interested in building an emulator around ARMphetamine or incorporating it in an existing project, feel free to get in touch.
You may have noticed the dynarec.com site is dead and gone. Cheers Neil, I've said it before, but thanks for hosting my site for all that time.
As for the code, I think some of the dependency problems which crept in after reorganisation have mostly gone away now. Update your CVS tree if you haven't already.
There's very much internal reorganisation of the ARMphetamine sources, so that now all the parts of it are separated into nice logical units. There are multiple makefiles for the different "personalities" that the emulator is capable of assuming (LART emulation, Riscose backend, etc.). There are even some basic instructions, in the README file.
You might have noticed there hasn't been much news about ARMphetamine recently. I've been busy doing other things. In the small amount of time I've dedicated to the project, the focus has been attempting to boot a Linux kernel - this means quite a lot of fiddly code needs to be written and bugfixed. If I get it going, this will be the place I report it. If you have in-depth knowledge of ARM Linux or the SA-1100 chip, maybe you'd be interested in grabbing the code from CVS and hacking it a bit, I'd be grateful for help (in the form of patches, preferably). I'm using blob, kernels and ramdisk from the LART project.
The furthest it's got so far is (failing) to mount a root filesystem under interpretive emulation. To try it, obtain the right versions of blob, a kernel and ramdisk image from the LART page, name them appropriately and type "make lartrun" in a suitable environment. Enjoy!
Some preliminary (very old!) comparative benchmarks are available:
Processor [recomp] | Compiler/OS | Platform | Dhrystones/sec |
ARMphetamine [off] | GCC/NetBSD | Linux/x86 | 5527 |
12MHz ARM250 | Norcroft/RISC OS | RISC OS/arm26 | 6169 |
ARMphetamine [on] | GCC/NetBSD | Linux/x86 | 34843 |
233MHz StrongARM | GCC/NetBSD | NetBSD/arm32 | 275482 |
450MHz AMD K6-2 | GCC/Linux | Linux/x86 | 823045 |
These benchmarks were obtained using the standard (if aging) "Dhrystone" program (higher numbers are better). As you may infer, the emulator currently runs somewhere around the speed of an ARM610 on my development machine. Performance increases are expected.
There are two main documents describing ARMphetamine. The first is older and more likely to be out-of-date, the second is the dissertation I wrote as part of the university project ARMphetamine was written for.
The preferred way of getting hold of ARMphetamine now is by anonymous CVS from Sourceforge. Follow this link for instructions. The modulename is "armphetamine".
You can download a tarball of the ARMphetamine source code here, but it might not be the absolute latest version (in fact it's a very, very old version).
Download armphetamine-0.2.tar.gz.
Enjoy...
You can get in contact with me about ARMphetamine at brown@cs.bris.ac.uk. If that doesn't work for whatever reason, you could try julesb@btinternet.com instead. I'd appreciate it if you didn't send mail in HTML format.
A few links relating to dynamic recompilation and ARM emulation in general...