【问题标题】:ARM Simulator on WindowsWindows 上的 ARM 模拟器
【发布时间】:2011-02-26 12:57:55
【问题描述】:

我正在根据教科书学习 ARM 处理器...

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

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

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

谢谢

【问题讨论】:

    标签: assembly arm simulator


    【解决方案1】:

    QEMU

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

    【讨论】:

    • 还有更好的UI吗?
    【解决方案2】:

    ARMs emulator armulator,在许多地方都以源代码形式提供,例如在 gdb 源代码中。 qemu 效果很好,但很难“看到你的代码”。最好的办法是为 arm 内核提供 hdl 源(例如 verilog)并创建 vcd 文件或其他波形格式。除非你为一家拥有嵌入式手臂的芯片公司工作,尽管你可能不会找到一个。我可能是错的,但我认为那里所有的开放臂核心都很快被 ARM 拿下。

    mame 有一两个手臂核心。视觉男孩前进有一个手臂核心。 nds 模拟器具有 arm 核心。

    或者你可以像我用拇指发生器做的那样自己写,我发现这比试图让其他人向我展示我想看的东西更容易。当然我很懒,只做了拇指指令集模拟器而不是全臂模拟器。一点都不难,就是费时间。

    编辑

    好的,我已经纠正了。谷歌的话arm verilog。 isc.tgz 包含一个手臂的行为模型模型,它可以使用 icarus verilog(免费)编译和运行。

    注释掉所有 $save_store();行(就像 C 使用 //)。

    向 testarm.v 添加几行代码(例如在 arm10 之后和初始开始之前)。

    初始 开始 $dumpfile("test.vcd"); $dumpvars(0,arm10); 结束

    总是 #50000 $finish;

    然后

    iverilog -o hello 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 文件。

    【讨论】:

    • 请注意,行为模型 (HDL) 不是可合成的模型,这意味着您无法用它制造芯片,ARM 无需担心公开存在。
    【解决方案3】:

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

    【讨论】:

      【解决方案4】:

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

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

      源代码在这里:http://www.omidmufeed.com/arm-assembler-emulator-with-c/

      【讨论】:

        【解决方案5】:

        ARMSIM

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

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

        【讨论】:

          【解决方案6】:

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

          【讨论】:

            【解决方案7】:

            我刚刚找到VisUAL,到目前为止一切都很好。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2020-12-15
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2011-02-22
              • 1970-01-01
              相关资源
              最近更新 更多