ARM Cortex-M3 开发工具?

电器工程 编译器 手臂
2022-01-07 08:57:06

我正计划迁移到 NXP Cortex M3 架构,我对现有的开发工具有点迷茫。

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

我发现这个编译器http://www.code-red-tech.com/red-suite-2.php看起来不错而且不贵。任何尝试过或了解它的人都可以给我更多信息吗?

4个回答

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

一位过去与 ARM micros 专业合作过的同事告诉我,他对 IAR 工具链很满意,虽然我不知道成本如何,也不知道 Cortex 支持如何。

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

这是一个要安装的简短配方(Debian/Ubuntu):

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

安装 Java 运行时环境(对于该死的安装程序)

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 和一个流畅的在线开发环境(根本不需要本地工具安装!)。

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 控制器功能强大得多,但使用和学习要简单得多。

code sourcery lite 不错,还是用 emdebian。或者自己动手,这很容易,除非你需要一个完整的 C 或 gcc 库,那么它仍然是可行的,但有点困难。起初你不需要一个支持 thumb2 的编译器,当你搜索你喜欢的工具链时,拇指会做。

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

我用 lpcxpresso 板尝试了一次 code-red 工具,最终结果是我绝对从不使用 code-red 并且正在争论是否也将 lpc 列入黑名单。ymmv。如果您必须使用付费工具,我只会使用 keil,因为它们是由 arm 购买的,并且包的一部分是 rvct 编译器。当然,如果您不满足 lite 限制或选择获得支持,代码源代码也是一种付费方式,作为 gcc,它拥有迄今为止所有编译器中最好的支持。不久前,当我能够尝试它们时,metaware 和 arm 的工具在生成的代码质量方面彻底击败了 gcc。gcc 上下波动 3.x 的某些版本产生比 4.x 更好的代码,它们似乎在每个版本上都没有改进,但它们确实或者代码源不久前添加了 thumb2 支持,而 3.x 版本没有/不会有。