代码之家  ›  专栏  ›  技术社区  ›  supercat

有适合与C链接的开源ARM7仿真器吗?

  •  1
  • supercat  · 技术社区  · 14 年前

    我有一个开源的Atari 2600模拟器(Z26),我想添加对包含嵌入式ARM处理器(nxp21xx系列)的盒带的支持。其想法是模拟6507,直到它尝试读取或写入一个字节的内存(每841ns执行一次)。如果6507执行写操作,将地址和数据放在ARM的一些I/O端口上,让ARM代码运行20个周期,确认ARM正在浮动其数据总线,并让ARM再运行38个周期。如果6507执行读取,将地址放在ARM的I/O端口上,让ARM运行38个周期,从ARM的I/O端口获取数据(希望ARM软件将其放在那里),然后让ARM再运行20个周期。

    ARM7似乎很容易实现;我不需要模拟很多硬件特性。有什么想法吗?

    编辑 我想到的是一个例程,它将一个保存机器状态的结构作为参数,并指向内存访问例程。调用时,例程将模拟ARM的指令引擎,生成适当的读取、写入和代码获取。然后,我可以编写内存访问例程,将适当的区域视为flash(具有大致近似的等待状态)、RAM、I/O端口和计时器寄存器。其他一些区域将被标记为不关心,对任何其他区域的访问将标记错误并停止仿真器。

    知道QEMU是怎么工作的吗?你知道如果我在QEMU中只使用2%的代码,GPL许可证会要求什么吗?我是要为整个事情捆绑代码,还是只捆绑我使用的部分代码,还是什么?

    2 回复  |  直到 11 年前
        1
  •  1
  •   Mads Elvheim Mads Elvheim    14 年前

    通过一些工作,你可以让我的模拟器做你想做的。它是为ARM920编写的,而Thumb指令集还没有完成。MMU/cache接口也不是。而且,它很慢,因为它是一个翻译。好的一面是,都是用C99写的。

    http://code.google.com/p/gp2xemu/

    我已经有一段时间没做过了(svn主干已经有2年了),但是如果你要使用代码, 我很乐意帮助您解决缺少的功能

        2
  •  2
  •   zwol    14 年前

    尝试 QEMU .