我总是感到困惑,然后它是关于ARM架构工具链。我总是看到有两个方面: ARM有限公司。官方和GNU社区。ARM提供了官方工具,而GNU社区则提供了免费的、开源的、灵活的、更通用的解决方案。我想开始在我的工作中使用GNU自由和开放软件。但这种困惑让我不知所措。哪些GNU工具链支持哪些架构,等等。M,A,R配置文件?选择什么?我想摆脱"ARM有限公司的做事方式“。您能提供支持所有ARM架构的工具的官方GNU资源和链接吗?我应该检查哪些主项目,下载哪些工具链?
发布于 2016-07-04 03:48:31
基本上是最流行的架构(对于每个其他处理器,x86,等等,你可能有或触摸到一个或多个基于ARM的东西)。有很多工具。有来自不同供应商的付费工具,ARM和keil,现在是arm。和其他人一样。而且gnu工具链也支持arm,所以arm的构建数不计其数。在Ubuntu及其衍生工具上,安装工具链就像apt-get一样简单。Launchpad.net有一个你可以下载的。以前的codesourcery人员的名字出现在一些gnu端口上,他们有一个免费且受支持的工具链版本(现在是mentor graphics)。有许多像yagarto devkitarm和其他一些人们用来做裸机工作的机器。当然,由于是开源的,您可以“简单地”从源代码构建工具链。在linux上这是相当容易的,在windows上我不知道已经有10年没有这样做了,但当时并不难。或者,您可以获得一台raspberry pi或其他arm计算机,或者在qemu之类的模拟器中运行一台计算机,并在那里使用本地gnu工具链。
有太多的选择来推荐一个,所以我建议你尝试几个。付费的通常有一个eval版本。您将获得付费支持。如果你使用gnu,有大量的免费支持,许多问题是通用gnu或gnu交叉编译,并适用于arm以及mips和其他成倍增加的支持。与此同时,gnu更是如此,有很多旧的信息不再适用,可能会成为障碍。
A和R基本上是相同的,R是两个全尺寸的核心,在安全(医疗,汽车等)的锁步中。cortex-m是thumb微控制器,只有不同数量的thumb2扩展。从armv4t到现在的所有内核都支持原始的thumb,这是唯一通用的arm指令集。皮质-ms和一些较新的皮质-As支持各种级别的thumb2扩展(以前未定义的thumb指令现在变成了可变长度指令)。我称之为ARM的全尺寸指令支持全尺寸指令,并随着时间的推移进行小的修改(通常是添加)。ARMv8完全重做了64位指令。有一个aarch32兼容模式,当你切换到aarch64时,它是与aarch32完全不兼容的32位指令。你肯定会发现gnu工具支持从一端到另一端,只要你没有得到一个真正旧的工具链(目前的3.x支持thumb)。Aarch64出现的时间不算太长,但支持ARM和thumb指令集。
gnu的方式是为目标或系列构建源代码,因此aarch64是一个独立于其他ARM指令集的工具链。如果构建常规的arm指令集,它应该支持thumb和arm架构变体。根据gnu工具的构建方式(同样是gnu方式),您可能会或可能不会在工具链中获得浮点或软浮点支持,这是您比cortex A、R、M更大的担忧,并且ARM的浮点指令集随着时间的推移而发生变化,过去它很少见,现在在芯片中找到FPU是很常见的。
llvm/clang是另一个选择,感谢苹果和iphone/idevices使这些工具变得成熟。llvm的方法是让一个版本支持许多目标arm、mips、x86等,其中一个是主要目标,但安装的工具可以用作交叉编译器,至少是编译器,也许不是链接器(gnu binutils可以很好地填补这一空白)。你也应该尝试这些,预构建是可用的,你可以“简单地”从源代码构建。如果您运行的是ubuntu或其衍生工具,则很容易获得。
发布于 2016-07-04 15:44:00
我会使用GNU ARM Launchpad。这是GNU工具链,但由ARM维护(我认为这应该是件好事)。它说它支持Cortex M& R,但它也支持ARM7和ARM9等更老的处理器。
https://stackoverflow.com/questions/38173579
复制相似问题