7

我正在从教科书中学习ARM处理器......

我认为如果我可以在 ARM 模拟器上应用我学到的东西会更有用......编写代码然后观察结果和不同的执行阶段会更有趣......

我已经搜索过了,但我只能找到 linux 上的免费软件或 windows 上的演示

是否有一个模拟器可以让我查看在 Windows 上运行的 ARM 处理器(任何版本!)的执行步骤和不同更改?

谢谢

4

7 回答 7

4

QEMU

也许您指的是 Windows 的实验性二进制安装程序。对于 Windows 上的源安装,请参阅此文档

于 2010-06-01T20:31:21.827 回答
2

Qemu支持 Windows 并且是 ARM 的一流仿真器。当然,确切的流水线状态不可用,但程序员的仿真视图是可用的。

于 2010-06-01T20:33:04.240 回答
2

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 文件。

于 2010-06-02T03:07:37.913 回答
2

这个问题已经很久了。仍然认为为熟悉 C 的人写一个答案会很好。这是一个小型 C 应用程序,它模拟一些/遵循 ARM 汇编指令,您可以在其中添加调试或打印结果以检查执行阶段。

  1. 管道:尺寸 4
  2. 保留内存位置;中断指令和用户指令。
  3. 计算每条指令的周期和总周期。
  4. 数据处理指令:设置溢出和进位标志。
  5. 分支指令:如果需要,使用堆栈来存储链接数据。
  6. 数据传输指令。
  7. 中断指令:在获取新指令之前执行输入指令集中的中断指令或接受硬件指令。
  8. 打印出寄存器、用户可访问内存、堆栈内存和状态标志。可以打开“debugEnabled”和“instructionLogEnabled”变量以获取输出中的更多信息。

源代码可在此处获得:http ://www.omidmufeed.com/arm-assembler-emulator-with-c/

于 2014-09-15T11:21:54.097 回答
1

ARMSIM

ARMSim# 是在 Windows 环境中运行的桌面应用程序。它允许用户在基于 ARM7TDMI 处理器的系统上模拟 ARM 汇编语言程序的执行。

在我看来:它是一个模拟器并且是特定于处理器的,也就是说,正如其他人所建议的那样,在 QEMU 下运行 ARM Linux 是测试实际解决方案时的更好选择。下一步是裸 ARM 金属,在 2015 年可以通过 Raspberry PI 廉价地实现。

于 2015-05-25T08:00:49.367 回答
1

您可以使用cpulator在 Web 浏览器中运行 ARM 汇编代码并查看执行步骤。

于 2021-03-11T09:32:34.697 回答
0

我刚刚找到了 VisUAL,到目前为止它一直很棒。

于 2018-11-15T16:28:00.297 回答