我正计划迁移到NXP Cortex M3架构,而在现有的开发工具之间有些迷失。
Keil很贵,我不知道是否值得。任何尝试过一些编译器的人都可以提供任何建议吗?
我发现此编译器http://www.code-red-tech.com/red-suite-2.php看起来不错,而且并不昂贵。任何尝试过或知道的人都可以给我更多信息?
我正计划迁移到NXP Cortex M3架构,而在现有的开发工具之间有些迷失。
Keil很贵,我不知道是否值得。任何尝试过一些编译器的人都可以提供任何建议吗?
我发现此编译器http://www.code-red-tech.com/red-suite-2.php看起来不错,而且并不昂贵。任何尝试过或知道的人都可以给我更多信息?
Answers:
我使用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适配器。
我已经开始使用其中之一(MBED开发板)。对我而言,最大的卖点是我可以使用C或C ++进行编码,与USB的直接连接以及光滑的在线开发环境(根本不需要安装任何本地工具!)。
在打开盒子五分钟后,我有一个示例闪烁程序(嵌入式世界的“ 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控制器具有更多的功能,但使用和学习却简单得多。
精简的代码源,或者使用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相比,它们感觉像是恐龙。
我使用Yagarto + Eclipse + J-link edu调试器。(Gnu工具链)
IAR非常好,如果您正在做小型项目,则可以使用免费的32K代码大小的kickstart版本。但是我相信尺寸升级有点贵。它们还附带了大量的优秀示例项目,每个处理器系列通常有多个示例项目。
我花了几天的时间为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需要采取行动。
我使用QtCreator和ARM Embedded的GNU工具。效果很好。
好处:
缺点:
一切设置正确后,我可以单击以在代码中创建一个断点,然后单击“调试”按钮。它将在大约5秒钟内在断点上编译,刷新,执行和暂停(如果必须返回Arduino“ IDE”,则同时使您感到愤怒)。
我正在研究如何使用另一个ARM芯片-基于Cortex-M0的nRF51822进行设置的教程。
我使用了CooCox工具,它非常出色,但是可以免费使用,不受任何代码大小的限制。 http://www.coocox.org/
我使用arm-eabi-gcc及其附带的工具链通过summon arm工具链脚本安装。该脚本设置了在ARM上进行裸机工作的环境。它的免费和开源以及所有这些对我来说都是可靠的。我也使用了IAR,它肯定会更好,因为它可以让您进行更友好的调试并以IDE方式进行操作,但是总的来说,我对gcc感到更自在,如果没有其他原因,因为我不必将费用证明给任何人。
(我从来没有真正想出过如何使用gdb做任何事情,但是我从来没有真正习惯过使用调试器或拥有一个可用的调试器,因此我不确定是否有资格判断这一点。)
我使用Emprog ThunderBench。它很棒,可能是我用过的最好的。
我最喜欢的是,它同时是C / C ++ ARM cortex编译器,调试器和IDE。