ARM Cortex-M3开发工具?


36

我正计划迁移到NXP Cortex M3架构,而在现有的开发工具之间有些迷失。

Keil很贵,我不知道是否值得。任何尝试过一些编译器的人都可以提供任何建议吗?

我发现此编译器http://www.code-red-tech.com/red-suite-2.php看起来不错,而且并不昂贵。任何尝试过或知道的人都可以给我更多信息?


它是LPCXpresso板随附的编译器,并在Eclipse IDE中使用gcc。Rowley CrossWorks工具要好得多。
莱昂·海勒

2
他们以什么方式更好?我问是因为我有LPCXpresso开发板,而且这些工具似乎运行良好,所以我想知道其他工具如何更好?
约翰·伯顿

我们不能将其设为CW吗?
stevenvh 2011年

由于Microsoft Visual Studio 2012支持将ARM作为第一类目标,因此大多数可能性应在2012年重新考虑。

对于小型项目,Keil编译器的试用版是免费的。
西蒙·里希特

Answers:


17

我最近在业余时间一直在使用STM32(也包括Cortex M3),并使用GCC的CodeSourcery发行版,效果非常好。

过去曾与ARM micros进行过专业合作的一位同事告诉我,他对IAR工具链感到满意,尽管我不知道成本是多少,也不知道Cortex支持的方式。


1
据我所知,IAR是一家专门从事编译器的公司。我在工作中使用它们,它们有一些好处,也有一些缺点。我发现他们的支持非常出色,尽管我们使用MSP430,但它们似乎涵盖了我查找的每个处理器。
Kortuk

16

我使用Linux的CodeSourcery(Lite)交叉编译器对TI Stellaris微控制器进行编程。它们可与任何Cortex-M3一起使用。它们是完全免费的,具有适用于Windows和Linux的二进制文件。

这是要安装的简短食谱(Debian / Ubuntu):

下载工具链(任何版本都可以,但我使用的是这个)

安装Java Runtime Environment(针对该死的安装程序)

sudo apt-get install sun-java6-jre ia32-libs

安装

chmod 755 arm-2009q3-68-arm-none-eabi.bin
./arm-2009q3-68-arm-none-eabi.bin -i console

将交叉编译器bin目录添加到您的PATH中

echo 'export PATH=$PATH:~/CodeSourcery/Sourcery_G++_Lite/bin/' >> ~/.bashrc 
. ~/.bashrc 

要加载代码和调试,您将需要OpenOCD和gdb或其中一个GUI。

您还需要一个JTAG适配器


我还使用Stellaris LM-3s6965开发套件在我的一个课程中使用CodeSourcery工具。我们的Wiki(指向工具链的链接)位于:claymore.engineer.gvsu.edu/egr326/… (也请参见下面的MacOS X安装说明。)该工具包随附其GUI工具的限时演示,但命令线条工具没有限制。
凯文·维米尔

9

我已经开始使用其中之一(MBED开发板)。对我而言,最大的卖点是我可以使用C或C ++进行编码,与USB的直接连接以及光滑的在线开发环境(根本不需要安装任何本地工具!)。

http://mbed.org/

在打开盒子五分钟后,我有一个示例闪烁程序(嵌入式世界的“ hello world”)运行以下程序:

#include "mbed.h"

DigitalOut myled(LED1);

int main()
{
    while(1)
    {
        myled = 1;
        wait(0.2);
        myled = 0;
        wait(0.2);
    }
}

而已!以上是完整的程序!

它基于ARM Cortex M3,具有快速和充足的内存,可用于嵌入式项目(100MHz,256k闪存和32k ram)。在线开发工具有一个很好的库和大量示例,并且有一个非常活跃的论坛。关于将设备连接到MBED等的大量帮助

即使我在嵌入式系统(ARM 7/9,Renases M8 / 16/32,Coldfire,Zilog,PIC等)上有丰富的经验,但我仍然发现这是一个令人耳目一新的轻松系统,并且具有强大的功能。

最初在基本面包板上玩过之后,我从这些人那里购买了一块基板:http ://www.embeddedartists.com/products/lpcxpresso/xpr_base.php?PHPSESSID=lj20urpsh9isa0c8ddcfmmn207。它具有大量I / O设备(包括微型OLED和3轴加速度计)。我还从同一站点购买了其中一种LCPExpresso处理器板,它比MBED便宜,功耗/内存少,但非常适合较小的工作(仍然使PIC / Atmega处理器不受欢迎)。基板同时支持LCPExpresso和MBED。购买LCPExpress处理器板还为我提供了一个附加的JTAG调试器和一个脱机开发工具(基于Code Red的基于GCC / Eclipse的开发工具包)。这比在线MBED开发环境要复杂得多,但是在您获得MBED经验之后,这是合乎逻辑的进步。

参照我的原始观点,尽管如此,MBED控制器比LPCExpresso控制器具有更多的功能,但使用和学习却简单得多。


还有Adam Green的出色的gcc4mbed项目,它允许您离线编译(以加大代码长度为代价):github.com/adamgreen/gcc4mbed
Kevin Chen

9

精简的代码源,或者使用emdebian。或自己动手做,这很容易,除非您需要完整的C或gcc库,否则它仍然可行,但要难一些。最初,您将不需要具备thumb2功能的编译器,而拇指将在您搜索所需的工具链时使用。

llvm是另一个很好的语言(使用clang而不是llvm-gcc !!),我知道手臂方面一直都在进步,对于特定的测试,版本27生成的代码比当前gcc更快。我在使用拇指模拟器(thumbulator.blogspot.com)时发现了拇指方面的错误,该错误已得到及时修复。关于llvm最好的部分是默认情况下它是一个交叉编译器,不需要额外的工作或构建经验。在接下来的几年中,我看到他们深入了解gcc,并通过gcc进行交叉编译/嵌入。

我曾经在lpcxpresso板上尝试过代码红色工具,最终结果是我绝对从不使用代码红色,并且正在辩论是否也将lpc列入黑名单。嗯 如果您必须使用付费工具,我会选择keil只是因为它们是由arm购买的,并且软件包的一部分是rvct编译器。当然,如果您不满足精简版的限制或选择获得支持,那么代码源也是付费的,因为gcc它是迄今为止所有编译器中最好的支持。不久前,当我能够尝试使用元软件和arm工具时,gcc就产生的代码质量而言一无是处。gcc在3.x的某些版本中比在4.x上更好,它们在每个发行版上似乎都没有得到改善,但是它们确实或不久前代码源添加了thumb2支持,而3.x版本没有/不会。


If you have to use a pay for tool I would go with keil only because they were bought by arm-您是否尝试过Keil编译器?至少我对Keil 8051工具没有印象。与基于GCC的竞赛或LLVM / Clang套件IMHO相比,它们感觉像是恐龙。
莫滕·詹森

8

我将Rowley软件用于ARM和MSP430开发:

http://www.rowley.co.uk

太好了 支持Cortex-M3。


1
我正在尝试试用版,我认为这将是我的选择。它是完整的有据可查的,并且不是很昂贵(个人许可证为150美元)
mba7

Rowley工具集很棒,支持也很棒。
Radian


5

使用IAR编译器/调试链进行ARM开发,我取得了相当不错的成绩。他们提供了相对稳定的开发工具,并带有嵌入式C ++环境(这似乎很少见)。-根据您的代码库大小,它们还提供了功能强大的硬件/软件“ KickStart套件”,以及其工具的代码大小受限版本。


4

IAR非常好,如果您正在做小型项目,则可以使用免费的32K代码大小的kickstart版本。但是我相信尺寸升级有点贵。它们还附带了大量的优秀示例项目,每个处理器系列通常有多个示例项目。


2
是的,他们大幅削减了我的学校,在降价95%之后,学校仍然成千上万。
Kortuk

4

我花了几天的时间为OS X上的EFM32G micro完全设置了CodeSourcery GNU工具链。这是值得的。与我尝试过的许多基于GUI的调试器相比(大多数基于Eclipse);Makefile,GCC和GDB是梦想成真;加上所有这些都可以在我的Linux或Mac终端上使用。

唯一吸引的部分是板上内置的J-Link适配器。J-Link的Windows和Linux GDBServer程序是封闭源代码。更糟糕的是,Linux版本远远落后。因此,为了使GDB正常工作,我必须运行Windows VMWare映像,其唯一目的是运行GDBServer(因为Linux损坏了)。

哦,除了无法正常工作外,J-Link的基于Linux的GDB服务器还绑定到127.0.0.1,并且仅侦听以该目的为目标的数据包。因此需要弄乱iptables和转发才能使其从远程计算机连接。荒谬; Segger需要采取行动。


我同意jlink在Linux上是一个皇家痛,但是我认为您可以使用LD_LIBRARY_PATH使它工作。您也可以通过使用SSH转发或通过使用LD_PRELOAD或类似方法来解决绑定地址问题,以包装网络调用并更改网络地址。但是,当昂贵的工具比价格低廉的工具(如ST-LINK)经过完全逆向工程的情况下难以使用时,这是可悲的。
克里斯·斯特拉顿

4

我使用QtCreator和ARM Embedded的GNU工具。效果很好。

好处:

  • 完全免费(和开源)
  • QtCreator是一款出色的现代C ++ IDE,具有工作代码完成,符号超链接,重构等功能。
  • QtCreator支持裸机调试(是的-您可以以图形方式放置断点,步骤代码和检查变量)。(需要将JTAG或SWD链接到您的MCU,但这并不像我想的那么难。)
  • 不是Eclipse或基于Eclipse的。

缺点:

  • Baremetal支持非常新,我遇到了很多问题-最终在QtCreator邮件列表中作者的出色帮助下克服了它。
  • 设置起来可能比Keil或红色代码难一些。

一切设置正确后,我可以单击以在代码中创建一个断点,然后单击“调试”按钮。它将在大约5秒钟内在断点上编译,刷新,执行和暂停(如果必须返回Arduino“ IDE”,则同时使您感到愤怒)。

我正在研究如何使用另一个ARM芯片-基于Cortex-M0的nRF51822进行设置的教程。


5
可能值得添加更多有关您喜欢的内容的详细信息,一些良好的功能等,以使答案更有用。
PeterJ 2014年

你能提供一个大概的轮廓吗?
Scott Seidman 2014年


1

我使用arm-eabi-gcc及其附带的工具链通过summon arm工具链脚本安装。该脚本设置了在ARM上进行裸机工作的环境。它的免费和开源以及所有这些对我来说都是可靠的。我也使用了IAR,它肯定会更好,因为它可以让您进行更友好的调试并以IDE方式进行操作,但是总的来说,我对gcc感到更自在,如果没有其他原因,因为我不必将费用证明给任何人。

(我从来没有真正想出过如何使用gdb做任何事情,但是我从来没有真正习惯过使用调试器或拥有一个可用的调试器,因此我不确定是否有资格判断这一点。)


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.