/armphetamine

My University project. For historical interest only!

Primary LanguageCGNU General Public License v2.0GPL-2.0

This is a recompiling ARM emulator core. It is still in development.

Julian Brown <brown@cs.bris.ac.uk>

Very preliminary instructions
=============================

You can build ARMphetamine into several different machine configurations:

  - lart
  - riscose
  - (others not even compilable at the moment)

You need to point APBASEDIR to the directory containing this README.

Then just go into the mach/* directory and type "make clean; make". Object
files are not seperate for the different compilation things, so make
sure you "make clean" between switching configuration!

LART - http://www.lart.tudelft.nl
=================================

This is a board produced by the Technical University of Delft, comprising
a StrongARM SA1100, memory and support logic. This emulator is independent
of them, and does not work properly. Don't hassle them about it. I don't
even have a LART board to compare my emulator with! But it seems like
just about the simplest full machine I can test the core with. For a
teaser, the "right" combination of bootloader, kernel and ramdisk will
get as far as trying to mount a root partition (though only with
interpretive emulation, mind!), though it then fails for some reason.

Debug interface
---------------

The LART machine starts in an interactive shell, with a seperate window
for LART (serial) input/output. The commands available are:

run <address> - start execution from <address>
continue - restart execution from after a breakpoint
step - execute single instruction and return to debugger
disassemble <start> [<end>] - disassemble code (around PC if no argument)
last <n> - disassemble last <n> instructions executed
memory <start> [<end>] - show (virtual) memory contents
registers - show ARM registers
setreg <reg> <value) - set register contents
break <addr> - set breakpoint on <addr>
clear <addr> - clear breakpoint from <addr>
list - list breakpoints
trace <on|off> - turns on/off instruction tracing
load <filename> <addr> - load filename to (memory) address
romload <filename> <addr> - hack to load filename into ROM
script <filename> - execute a script of debugger commands
virtual <addr> - perform virtual:physical address calculation
phetatrans <start> <end> - test harness for code translation
quit - exit shell
help - lists debugger commands

The debugger is somewhat lacking, since there is no way to pause execution
if you haven't set a breakpoint first.

For an example, see script "lartup.txt". Given the right filenames for
bootloader, kernel and ramdisk, this script should boot up ARM Linux on
the LART board. You can type "make lartrun" to test it.

Riscose - http://riscose.sourceforge.net
========================================

This is a project to emulate Acorn's RISC OS at a high level, in a manner
kind of similar to WINE. You need to check Riscose out from CVS, then do:

  ln -s $(ARMPHETAMINE)/mach/riscose $(RISCOSE)/src/armphetamine

Where $(..) are replaced by the right directories. Then you need to hack
"configure.in" to add the new emulator, and do:

  aclocal && autoheader && automake && autoconf
  ./configure --enable-arm=armphetamine
  make

ARMphetamine is built as a library, libarmphetamine.a. Unfortunately
at the time of writing Riscose doesn't work very well, so you won't get
much further than this. Plus, some code is missing from the ARMphetamine
side of things.