I want to start writing and testing ARM Assembly programs. What emulator should I use? Does DS-5 or Keil MDK-ARM suffice?
Hi,
In DS-5 Fixed Virtual Platform (FVP), Real Time Simulated Model (RTSM) Models available for simulation of different platform.
FVP
RTSM
Thanks.
Hi, as asi suggests, if you download DS-5 (you can get the 30-day trial of the full version here or the free, lightweight Community Edition here), it comes with two FVP models, one for Cortex-A8 and one for Cortex-A9. These are simulation models/emulators which will run on your host machine. Alternatively, you can always pick up a reasonably priced eval board like the BeagleBone Black and just work directly on there. For Cortex-M series processors, the Keil STM32 boards would be a good choice, as they are fully supported with pre-built debug configurations in DS-5.
Cheers,
Joe
Hi willys,
if you are targeting Cortex-M platforms, you could also take a look at the built-in Core Simulator in Keil MDK.
It works for up to 32k code size in the free evaluation version.
Regards,
Johannes
Hello
If you are interested in using a Cortex-M0+ and are just interstedd in learning assembly language (Cortex-M0+) has a linmited instruction set), either the Freescale KL25Z Freedom board or the NXP LPC800 has MTB (micro trace buffer). With this you can see the instructions as they were executed in this instruction trace buffer. It is quite unusual to be able to have trace available without a special trace debug adapter.
With the free Keil MDK Lite you can compile up to 32K of program and data.
A tutorial for the Freescale KL25Z: www.keil.com/appnotes/docs/apnt_232.asp
No debug adapter is needed for this board - it has a on-board CMSIS-DAP.
A tutorial for the NXP LPC800 board: www.keil.com/appnotes/docs/apnt_237.asp
A debug adapter is needed: a ULINK, J-Link (black case), or a LPC-Link 2.
Bob
If you are planning to write an ARM emulator in C, you can use the code in this repository as a starting point; https://github.com/omufeed/ARMAssemblyEmulatorWithC
It has a pipeline of size 4. Data processing instructions are implemented and it handles the overflow and carry flags. Branch and interrupts are also implemented.
It accepts an assembly instruction as input and simulates the final memory state after the instruction completion.
There are some example inputs added as code comments.
Read more at http://www.omidmufeed.com/arm-assembler-emulator-with-c/
As far as this comparison says , there are no FVP models available in DS5 Community edition.
http://ds.arm.com/ds-5/compare-ds-5-editions/
Please correct if wrong, because I downloaded DS5 community edition recently and it does not have FVP models in Debug configurations. As a result I could not execute/debug the generated binary.