我总是感到困惑,那就是ARM架构工具链。我总是看到有两个反面:ARM有限公司。官方和GNU社区。 ARM提供官方工具,而GNU社区提供免费和开源灵活且更通用的解决方案。 我想开始使用GNU免费和开放软件在我的工作中使用。但这种困惑让我迷失在哪里开始。哪个GNU工具链支持哪种架构等。 M,A,R个人资料?选择什么?我想摆脱" ARM有限公司。做事的方式"。您能否提供官方GNU资源和支持所有ARM架构的工具链接?我应该检查哪些主要项目,下载什么工具链?
答案 0 :(得分:0)
基本上是最流行的架构(对于其他所有处理器,x86等,你可能拥有或触摸一个或多个基于ARM的东西)。有很多工具。有来自不同供应商的支付工具,arm和keil,现在是ARM。和其他人一样。并且gnu工具链也支持arm,因此有无数的构建。在Ubuntu和衍生产品上,它就像apt-get一样简单,可以安装工具链。 Launchpad.net有一个你可以下载。以前的代码源人员,其名称在某些gnu端口上有一个免费且受支持的工具链版本(现在是指导者图形)。有很多像yagarto devkitarm和其他人用于裸机工作。当然,作为开源,您可以简单地"从源代码构建工具链。在Linux上它是相当容易的,在Windows上我不知道在10年内没有做过,但并不难。或者你可以得到一个覆盆子pi或其他一些手臂电脑或在像qemu这样的模拟器中运行一个并在那里使用原生的gnu工具链。
有太多的选择建议一个,所以我建议你尝试几个。付费通常有eval版本。您将获得付款支持。如果你使用gnu,那里有大量的免费支持,许多问题是通用的gnu或gnu交叉编译器,适用于arm以及mips和其他增加支持的数量。与gnu同时更多,有很多旧的信息不再适用,可能会阻碍。
A和R基本相同R基本上是两个全尺寸的核心,用于安全(医疗,汽车等)的锁定步骤。 cortex-m是拇指微控制器,只有不同数量的thumb2扩展依赖。从armv4t到现在的所有核心都支持原始拇指,这是唯一的常用臂指令集。 cortex-ms和一些较新的皮质-As支持各种级别的thumb2扩展(以前未定义的拇指指令现在变成可变长度指令)。我称之为ARM的全尺寸支持全尺寸指令,随着时间的推移进行小的修改(通常是添加)。 ARMv8对64位指令进行了完整的转换。有一个aarch32兼容模式,当你切换到aarch64时,它是32位指令,与aarch32完全不兼容。你会发现gnu工具支持从一端到另一端,只要你没有得到一个非常古老的工具链(3.x到现在支持拇指)。 Aarch64不久前发布,但支持ARM和thumb指令集。
gnu方法是为目标或系列创建源代码,因此aarch64是与其他ARM指令集分开的工具链。如果您构建常规手臂指令集,它应该支持拇指和手臂结构变化。根据gnu工具的构建方式(再次使用gnu方式),您可能会或可能不会在工具链中获得浮点或软浮点支持,这比皮质A,R,M和浮点指令集更令人担忧随着时间的推移,ARM已经发生了变化,过去很少见,现在在芯片中找到一个FPU是比较常见的。
llvm / clang是另一种选择,感谢apple和iphones / idevices成熟这些工具。 llvm方式是有一个构建支持许多目标arm,mips,x86等。一个是主要目标,但安装的工具可以用作交叉编译器,至少编译器,可能不是链接器(gnu binutils适用于填补这个空白)。你也应该尝试这些,预建可用,你可以简单地"从源头构建。如果您运行的是ubuntu或衍生产品,那么很容易获得。
答案 1 :(得分:0)
我会使用GNU ARM Launchpad。这是GNU工具链,但由ARM维护(我认为这应该是一件好事)。它说它支持Cortex M& R,但它也支持像ARM 7和R的旧处理器。 9。