Open-source ARM simulators

Open-source ARM simulators

Martin Guy, 17 Jan 2006

 

What's new?

2 May 2008
There is a more recent list of ARM simulators here.
17 Jan 2006
Added QEMU and SimpleScalar
4 Nov 2005
Added "ARMem" ARMulator derivative and ARMphetamine processor simulators

Summary

For internal development and for customers' use it would be useful to be able to simulate Sim-One in software.

The project that is closest to simulating the Sim-One is "skyeye" (see below), which succeeds in simulating the EP9312 development board, the big brother of our own EP9307, to run uclinux, armlinux and ucosii.

This document is a survey of all the simulators that I have looked at.

Types of simulator

The simulators fall into three categories:

  • Processor simulators: Those capable of running an ARM executable (an application) within an operating system running on a non-ARM processor by simulating a single-process memory space and the logical operation of the processor upon it. These permit the testing of single ARM programs.
    Examples are: GNU ARM simulator, Simit-ARM.
  • System simulators: Those capable of running an ARM operating system on a non-ARM processor within a different operating system by simulating the processor, physical RAM banks and the logical operation of peripheral devices. These permit the testing of entire operating systems on simulated development boards or computers.
    Examples are: skyeye, SID.
  • Physical simulators: Those that take a list of components and the connections between them and simulate their operation at an electrical level. The simulation may be digital, analog or a mixture of the two. These permit the testing of hardware designs from their schematics.
    Examples are: ngspice.

1. Processor simulators

GNU Arm Simulator

Also called "GNUPRO Arm Simulator" or "ARMulator".

gdb contains an ARM simulator, which simulates ARM7TDMI architecture and probably others.

You run binaries produced by gcc by using gdb and saying:

gdb> target sim

a derivative is ArcEm which also simulates the hardware of the Acorn Archimedes computer.

Simit-arm

Produced by the Gigascale Research Centre, it compiles to binaries called

  • ema ARM instruction set simulator
  • ema_count ARM instruction set simulator, counting use of each type of instruction
  • sima ARM cycle-accurate simulator

It does indeed run ARM linux executables in an x86 linux environment.

It does:

  • read ELF32 little-endian arm-linux binaries,
  • emulate the SA-1100 processor,
  • emulate ARM floating-point instructions (by Netwinder FPE library)
  • cycle-accurate timing


It doesn't do:

  • Thumb instructions

There is (or was) a multi-processor version of it called "arm-sim" from the same organisation, but it is no longer actively developed and you need a gigascale login to get it, which is only available to the organisations that fund Gigascale Research.

ARMphetamine

"is an on-going project by Julian Brown to develop a fast ARM emulator, including dynamic recompilation of ARM instructions to the host processor, currently x86. The source code is available under the GNU GPL."

SimpleScalar

An open-source commercial product with free license for non-commercial use. Emulation is said to produce highly detailed timing reports, widely used ni academic community for research projects.

QEMU

A free open-source simulator that can run as a processor simulator or as a system simulator. It runs under Linux or Windows and and simulates several types of processor including x86, x86_64, ARM, SPARC and PowerPC. Under it you can run (among others) FreeDOS, GNU/Linux, OS/2, NetBSD and Windows 3.11, 95, 98SE, ME, 2000 and XP.

2. System simulators

skyeye

Produced in China, it seems to be based on the GNU ARM simulator, and includes support for the Cirrus Logic EP9312 chip which is the same as Sim-One's main chip, the EP9307, plus an IDE interface.

It runs uclinux, armlinux, uC/OS-II ond FreeBSD, and they provide drivers for simulated LCD panel, n2k network device and more for these operating systems.

I have succeeded in compiling and running skyeye-0.8.7 (5 Jun 2003), but I have not tried running an OS on it.

SID

Available from sources.redhat.com/sid

SID is a complete pin-level system simulator containing a library of system components including the ARM7T architecture (Thumb instructions only, no 32-bit ARM, and no Floating Point).

I found this more understandable than skyeye (which remains a mystery to me) but it would need a lot more work to emulate Sim-One's ARM920 and our peripherals.

3. Circuit simulators

ngspice

Based on the venerable Spice circuit simulator from Berkeley, now entirely open-source. Available from Part of the gEDA project.

Does mixed digital and analog-mode simulation.

Higher-level suites

Several projects aim at uniting the circuit design and simulation programs into a single design environment. All are based on ngspice as the circuit simulator and
PCB as the layout tool.

gEDA

Convergence

http://bach.ece.jhu.edu/~tim/programs/convergence/convergence.html


Martin Guy, <martinwguy@yahoo.it>, 26 May 2004 - 6 Jul 2005.

 

refer to:http://simplemachines.it/simulators.html

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SimIt-ARM-3.0 给予命令行ARM指令模拟器,短小精悍,是研究ARM处理器的好工具,该模拟器既可以运行用户级别的ELF程序,又可以模拟运行Linux操作系统;提供了简单易用的调试命令,可以逐条跟踪指令的执行。 SimIt-ARM-3.0-gk-20150902.tar.bz2 HowTo 0.what is SimIt-ARM-3.0 SimIt-ARM 3.0 is an instruction-set simulator that runs both system-level and user-level ARM programs, for more about it please read user's guide file. 1.how to build tar jxvf SimIt-ARM-3.0-gk-20150902.tar.bz2 cd SimIt-ARM-3.0-gk ./configure make make install After these steps, the ./build/bindirectory contains the following programs: ema An ARM interpreter. To test the installation was successful type ./build/bin/ema test/wc configure modifiy PATH environment variable: PATH=$PATH:$HOME/SimIt-ARM-3.0-gk/build/bin ; export PATH 2. how to use 2.1 run user-level ARM programs [root@ORA9 SimIt-ARM-3.0-gk]# cd gcc-asm [root@ORA9 gcc-asm]# more hello.c /* * hello.c * Tue Sep 8 10:13:40 CST 2015 */ int main() { printf("hello world\n"); __asm("mov r0,#2\n\t" "swi 0x1\n\t"); // syscall: exit(2); } [root@ORA9 gcc-asm]# arm-linux-gcc -v Reading specs from /usr/local/arm/3.4.1/bin/../lib/gcc/arm-linux/3.4.1/specs Configured with: /opt/crosstool/crosstool-0.28/build/arm-linux/gcc-3.4.1-glibc-2.3.2/gcc-3.4.1/configure --target=arm-linux --host=i686-host_pc-linux-gnu --prefix=/opt/crosstool/arm-linux/gcc-3.4.1-glibc-2.3.2 --with-float=soft --with-headers=/opt/crosstool/arm-linux/gcc-3.4.1-glibc-2.3.2/arm-linux/include --with-local-prefix=/opt/crosstool/arm-linux/gcc-3.4.1-glibc-2.3.2/arm-linux --disable-nls --enable-threads=posix --enable-symvers=gnu --enable-__cxa_atexit --enable-languages=c,c++ --enable-shared --enable-c99 --enable-long-long Thread model: posix gcc version 3.4.1 [root@ORA9 gcc-asm]# arm-linux-gcc hello.c -o hello -static [root@ORA9 gcc-asm]# ls -l hello* -rwxr-xr-x 1 root root 520775 Sep 8 10:18 hello -rw-r--r-- 1 root root 160 Sep 8 10:15 hello.c [root@ORA9 gcc-asm]# file hello hello: ELF 32-bit LSB executable, ARM, vers
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值