0

我总是很困惑,然后是关于 ARM 架构工具链。我总是看到有两个对立面:ARM ltd。官方和 GNU 社区。ARM 提供官方工具,而 GNU 社区提供免费和开源的灵活和更通用的解决方案。我想开始在我的工作中使用 GNU 自由和开放软件。但是这种困惑让我迷失了从哪里开始。哪些 GNU 工具链支持哪些架构等等。M、A、R 型材?选择什么?我想摆脱“ARM ltd. 做事的方式”。您能否提供支持所有 ARM 架构的工具的官方 GNU 资源和链接?我应该检查哪些主要项目,要下载哪些工具链?

4

2 回答 2

0

我会使用 GNU ARM Launchpad。这是 GNU 工具链,但由 ARM 维护(我认为这应该是一件好事)。它说它支持 Cortex M&R,但它也支持旧处理器,如 ARM 7 和 9。

于 2016-07-04T07:43:59.913 回答
0

基本上是最流行的架构(对于所有其他处理器、x86 等,您可能拥有或接触一个或多个基于 ARM 的东西)。有很多工具。有来自不同供应商的付费工具,arm 和 keil,现在是 ARM。以及其他人。而且 gnu 工具链也支持 arm,所以它的构建数量不计其数。在 Ubuntu 和衍生产品上,安装工具链就像 apt-get 一样简单。Launchpad.net 有一个可以下载。以前在某些 gnu 端口上命名的 codesourcery 人员拥有免费且受支持的工具链版本(现在是指导图形)。有许多像 yagarto devkitarm 和其他人用于裸机工作。当然,作为开源,您可以“简单地”从源代码构建工具链。在linux上这很容易,在 windows 上我不知道有 10 年没有做过,但当时并不难。或者你可以买一个 raspberry pi 或其他一些 arm 计算机,或者在像 qemu 这样的模拟器中运行一个,并在那里使用本地 gnu 工具链。

推荐一个的选项太多了,所以我建议你尝试几个。付费的通常有一个评估版本。您将获得有偿支持。如果你使用 gnu,那里有大量的免费支持,其中许多问题是通用 gnu 或 gnu 交叉编译器,适用于 arm 以及 mips 和其他成倍增加的支持量。同时对于 gnu 更是如此,有很多不再适用的旧信息可能会妨碍您。

A 和 R 基本相同,R 是两个全尺寸内核,用于安全(医疗、汽车等)。cortex-m 是拇指微控制器,仅具有不同数量的 thumb2 扩展。从 armv4t 到现在的所有内核都支持作为唯一通用 arm 指令集的原始 thumb。cortex-ms 和一些较新的 cortex-As 支持各种级别的 thumb2 扩展(以前未定义的 thumb 指令现在变成了可变长度指令)。我称之为 ARM 的全尺寸指令支持全尺寸指令,随着时间的推移会进行一些小修改(通常是添加)。ARMv8 对 64 位指令进行了彻底的改造。有一个 aarch32 兼容模式,当你切换到 aarch64 时,它是与 aarch32 完全不兼容的 32 位指令。只要您没有真正旧的工具链(3.x 到现在支持 thumb),您肯定会发现从一端到另一端的 gnu 工具支持。Aarch64 不久前出现,但支持 ARM 和 thumb 指令集。

gnu 方法是为目标或系列构建源代码,因此 aarch64 是与其他 ARM 指令集分开的工具链。如果您构建常规手臂指令集,它应该支持拇指和手臂架构变化。根据 gnu 工具的构建方式(再次以 gnu 方式),您可能会或可能不会在工具链中获得浮点或软浮点支持,这是您比 cortex A、R、M 和浮点指令集更担心的问题ARM随着时间的推移发生了变化,过去很少见,现在在芯片中找到FPU有点普遍。

llvm/clang 是另一种选择,感谢苹果和 iphones/idevices 使这些工具变得成熟。llvm 方法是有一个支持许多目标 arm、mips、x86 等的构建。一个是主要目标,但安装的工具可以用作交叉编译器,至少是编译器,也许不是链接器(gnu binutils 可以很好地用于填补这个空白)。您也应该尝试这些,预构建可用,您可以“简单地”从源代码构建。如果您正在运行 ubuntu 或衍生产品,则很容易获得。

于 2016-07-03T19:48:30.527 回答