我有一个开源的Atari 2600仿真器(Z26),我想添加对包含嵌入式ARM处理器(NXP 21xx系列)的盒式磁带的支持。我们的想法是模拟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的指令引擎,生成适当的读取,写入和代码提取。然后,我可以编写内存访问例程,将适当的区域视为闪存(具有大致近似的等待状态),RAM,I / O端口和定时器寄存器。其他一些区域将标记为“无关”,访问任何其他区域将标记错误并停止模拟器。
也许QEMU在内部使用这样的东西。由于ARM仿真将集成到已经存在的仿真引擎中(我没有编写并且不完全理解 - 我修补的Z26的唯一部分是内存读/写逻辑)我需要占地面积相当小的东西。
知道QEMU如何在里面工作吗?如果我只使用QEMU中2%的代码,我知道GPL许可证需要什么 - 我是否必须捆绑整个代码的代码,或者只是我使用的部分,或者是什么?
答案 0 :(得分:2)
尝试QEMU。
答案 1 :(得分:1)
通过一些工作,您可以让我的模拟器做你想要的。它是为ARM920编写的,Thumb指令集尚未完成。 MMU /缓存接口也不是。此外,它很慢,因为它是一名翻译。从好的方面来说,它都是用C99编写的。
http://code.google.com/p/gp2xemu/
我有一段时间没有工作(svn主干是2岁),但如果你要使用代码,我很乐意帮助你解决缺少的功能。它在麻省理工学院获得许可,因此它与广泛的BSD许可证相同。