【问题标题】:Tools required to learn ARM on linux x86 platform [closed]在 Linux x86 平台上学习 ARM 所需的工具 [关闭]
【发布时间】:2011-06-05 10:45:09
【问题描述】:

我有一个 x86、linux 机器。在阅读有关 ARM 的各种信息时,我很好奇,现在我正在考虑花一些时间学习这种架构。到目前为止,我的目标是能够为 ARM 编写简单的汇编程序,使用一些汇编程序为 ARM 生成目标代码,并能够在模拟的 ARM 机器上运行该程序。首先,我下载了 ARM 架构参考手册。根据here 的信息,Linux 不支持 Keil,因此 请帮助我使用我需要的工具(汇编器、仿真器)。

【问题讨论】:

    标签: linux arm assembly


    【解决方案1】:

    基本上,您需要两件事 - 工具链和模拟器。

    工具链包含为 ARM 架构构建应用程序并在目标(在您的情况下为模拟器)上运行它所需的一切。一个好的起点是buildrootELDK。这些将为您提供完整的跨 Linux 解决方案。如果您只想编译而不使用 Linux 安装(以及随附的 rootfs),则只能使用交叉编译器。一个免费的是CodeSourcery,但也有一些其他的(大多数基于 GCC)。

    模拟器是您运行代码的地方,其行为类似于 ARM CPU。一个好的起点是QEMU

    跨项目的学习曲线相当陡峭,并且需要大量在线搜索才能完成任务。整个过程很少有详细的分步指南,但工作的各个部分都有很多指南。

    【讨论】:

    • 感谢 Eli,我下载了 buildroot 并执行了 README 部分中提到的基本步骤。成功完成 make 后,在我的案例中,目标 macine(arm) 的工具链位于 ~/buildroot-/output/host/usr/bin 下。现在,正如您所提到的,我将尝试在 QEMU 的仿真处理器上运行简单的 arm 机器代码。再次感谢您的帮助,如果我遗漏了什么,请告诉我。
    【解决方案2】:

    有可用于 ARM 目标的 GCC 交叉编译器;如果您想要一个预构建的,Code Sourcery 是一种相当常见的。

    在仿真环境方面,qemu 在仿真 ARM 方面做得很好。 Google 的 Android 模拟器基于 eqmu(他们的“NDK”是预建 ARM 交叉编译器的另一个来源)。

    【讨论】:

      【解决方案3】:

      Ubuntu x86_64 上 ARM64 中的简单“Hello world”

      sudo apt install gcc-aarch64-linux-gnu

      #!/usr/bin/env bash
      F='test'
      cat <<EOT > $F.s
        .text
        .globl main
        main:
          mov x8, #64
          mov x0, #1
          adr x1, msg
          mov x2, 13
          svc #0
          ret
      
        msg:
        .ascii "hello world\n"
      EOT
      
      aarch64-linux-gnu-gcc -static -c $F.s
      aarch64-linux-gnu-gcc -static -o $F $F.o
      ./$F
      

      输出:

      hello world
      

      【讨论】:

        猜你喜欢
        • 2010-10-17
        • 1970-01-01
        • 2012-07-24
        • 1970-01-01
        • 2011-06-16
        • 2012-03-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多