我正在从教科书中学习ARM处理器......
我认为如果我可以在 ARM 模拟器上应用我学到的东西会更有用......编写代码然后观察结果和不同的执行阶段会更有趣......
我已经搜索过了,但我只能找到 linux 上的免费软件或 windows 上的演示
是否有一个模拟器可以让我查看在 Windows 上运行的 ARM 处理器(任何版本!)的执行步骤和不同更改?
谢谢
Qemu支持 Windows 并且是 ARM 的一流仿真器。当然,确切的流水线状态不可用,但程序员的仿真视图是可用的。
ARM 仿真器 armulator,在许多地方都以源代码形式提供,例如在 gdb 源代码中。qemu 效果很好,但很难“看到你的代码”。最好的办法是为 arm 内核提供 hdl 源(例如 verilog)并创建 vcd 文件或其他波形格式。除非你为一家拥有嵌入式手臂的芯片公司工作,尽管你可能不会找到一个。我可能是错的,但我认为那里的所有开放臂核心都很快被 ARM 拿下。
妈妈有一两个手臂核心。视觉男孩前进有一个手臂核心。nds 模拟器具有 arm 核心。
或者你可以像我用拇指发生器做的那样自己写,我发现这比试图让其他人向我展示我想看到的东西更容易。当然我很懒,只做了拇指指令集模拟器而不是全臂模拟器。一点都不难,就是费时间。
编辑
好吧,我纠正了。谷歌的话arm verilog。isc.tgz 包含一个手臂的行为模型模型,它可以使用 icarus verilog(免费)编译和运行。
注释掉所有 $save_store(); 行(就像 C 使用 //)。
向 testarm.v 添加几行代码(例如,在 arm10 之后和初始开始之前)。
初始开始 $dumpfile("test.vcd"); $dumpvars(0,arm10); 结尾
总是 #50000 $finish;
然后
iverilog -o 你好 testarm.v arm10.v
vvp你好
它将运行 50000 单位时间,完成 sim 并关闭 vcd 文件。要使 sim 更长或更短,请更改始终 #50000 行。
获取 gtkwave(免费)的副本以查看 vcd 文件。使用 gtkwave 是另一篇文章,您需要执行以下操作,例如单击 test_arm 旁边的 + 号,然后单击那里的 arm10,在信号下单击说 addr_bus 以突出显示该行,然后单击附加框,单击 data_bus 并单击附加按钮,可能会添加一些寄存器,r1,r2 等。有一个工具栏,但您也可以使用菜单 time->zoom->zoom full,这是我安装的 ALT-F。然后你就可以学习如何放大和缩小事物。
从个人经验来看,你不会“看到你的代码”比使用 hdl 模拟器运行得更好。实际上,一旦您习惯了这一点,您可能很难在几乎看不到任何东西的硅片上运行。
除了运行包含在该行为模型中的测试程序之外,我还没有做更多的事情。不知道你能用它做什么或不能做什么。
verilog $readmemh 非常简单,它只想将十六进制行读入指定的任何内存。因此,您可以轻松地制作一个工具来获取已编译的 arm 代码并创建 verilog 模拟所需的 ascii 文件。
这个问题已经很久了。仍然认为为熟悉 C 的人写一个答案会很好。这是一个小型 C 应用程序,它模拟一些/遵循 ARM 汇编指令,您可以在其中添加调试或打印结果以检查执行阶段。
源代码可在此处获得:http ://www.omidmufeed.com/arm-assembler-emulator-with-c/
ARMSim# 是在 Windows 环境中运行的桌面应用程序。它允许用户在基于 ARM7TDMI 处理器的系统上模拟 ARM 汇编语言程序的执行。
在我看来:它是一个模拟器并且是特定于处理器的,也就是说,正如其他人所建议的那样,在 QEMU 下运行 ARM Linux 是测试实际解决方案时的更好选择。下一步是裸 ARM 金属,在 2015 年可以通过 Raspberry PI 廉价地实现。
您可以使用cpulator在 Web 浏览器中运行 ARM 汇编代码并查看执行步骤。
我刚刚找到了 VisUAL,到目前为止它一直很棒。