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

Microsoft Visual Studio 2012は第1クラスのターゲットとしてARMをサポートしているため、可能性のほとんどは2012年に再検討する必要があります。

小さなプロジェクトの場合、Keilコンパイラの試用版は無料です。
サイモンリヒター14

回答:


17

私は最近、暇なときにSTM32(Cortex M3)で遊んでおり、GCCのCodeSourceryディストリビューションを使用しています。

過去にARM microsでプロとして仕事をしたことがある同僚から、IARツールチェーンには満足していると言われましたが、コストやCortexのサポート方法はわかりません。


1
IARは、私が知る限り、コンパイラに特化した会社です。私は職場でそれらを使用していますが、彼らにはいくつかの特典といくつかの欠点があります。MSP430を使用していますが、サポートは非​​常に優れていると思いますが、検索したすべてのプロセッサをカバーしているようです。
Kortuk

16

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

PATHにクロスコンパイラbinディレクトリを追加します

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

コードをロードしてデバッグするには、OpenOCDとgdbまたはGUIのいずれかが必要です

JTAGアダプターも必要です。


また、クラスの1つで、Stellaris LM-3s6965開発キットとともにCodeSourceryツールを使用します。wiki(ツールチェーンへのリンク)はこちら:claymore.engineer.gvsu.edu/egr326/… (以下のMacOS Xインストール手順も参照してください。)キットには、GUIツールの期間限定デモが付属していますが、コマンドラインツールは制限されていません。
ケビンフェルメール

9

これらのいずれか(MBED開発者ボード)の使用を開始しました。私にとって大きなセールスポイントは、CまたはC ++でコーディングでき、USBを介した簡単な接続と、洗練されたオンライン開発環境(ローカルツールのインストールは一切不要)でした。

http://mbed.org/

5分間のオープニングボックス次のプログラムを実行するサンプルの点滅プログラム(埋め込み世界の「ハローワールド」)がありました。

#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プロセッサボードの1つを購入しました。これは、MBEDよりも安価で電力/メモリは少ないですが、小規模なジョブには最適です(依然としてPIC / Atmegaプロセッサのがらくたを叩きます)。ベースボードは、LCPExpressoとMBEDの両方をサポートします。LCPExpressプロセッサボードを購入すると、付属のJTAGデバッガとオフライン開発環境(Code RedのGCC / Eclipseベースの開発キット)も手に入れました。これは、オンラインMBED開発環境よりもはるかに複雑ですが、MBEDで経験を積んだ後の論理的な進歩です。

私の元々のポイントを参考にすると、MBEDコントローラーはLPCExpressoコントローラーよりもはるかに高い能力を持っていますが、使用と学習ははるかに簡単です。


:あなたは(より大きなコードサイズを犠牲にして)オフラインでコンパイルすることができますアダム・グリーンの優れたgcc4mbedプロジェクトもありますgithub.com/adamgreen/gcc4mbed
ケビン・チェン

9

コードソースリライトが良いか、emdebianを使用してください。または、独自のロールを作成する場合は、完全なCまたはgccライブラリが必要な場合を除き、非常に簡単です。最初は、thumb2対応のコンパイラは必要ありません。thumbは、必要なツールチェーンを検索するときに使用します。

llvmはもう1つの優れたものです(llvm-gccではなくclangを使用してください!!)親指エミュレーター(thumbulator.blogspot.com)で作業しているときに親指側にバグが見つかりましたが、すぐに修正されました。llvmの最大の利点は、デフォルトではクロスコンパイラであり、余分な作業や構築経験が必要ないことです。次の数年で、クロスコンパイル/埋め込みのために、gccをさらに深く掘り下げてgccを渡します。

lpcxpressoボードで一度code-redツールを試してみましたが、最終的にはcode-redを絶対に使用せず、lpcをブラックリストに載せるかどうかについて議論しています。ymmv。有料ツールを使用する必要がある場合は、アームによって購入され、パッケージの一部がrvctコンパイラであるため、私はkeilを使用します。もちろん、ライトソースの制限を満たさない場合、またはサポートを受けることを選択した場合、コードソースは有料の家でもあります。gccは、すべてのコンパイラの中で最も優れたサポートを提供します。少し前に、メタウェアとアームのツールを試してみたところ、コードの品質が向上する限りgccが吹き飛ばされました。gccは上下します。3.xの一部のバージョンは4.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

私は、ARMおよびMSP430開発にRowleyソフトウェアを使用しています。

http://www.rowley.co.uk

素晴らしいです。Cortex-M3がサポートされています。


1
私は試用版を試していますが、それが私の選択になると思います。十分に文書化されており、それほど高価ではありません(個人ライセンス150ドル)
mba7 09

Rowleyツールセットは優れており、サポートは優れています。
ラジアン


5

ARM開発にIARコンパイラ/デバッグチェーンを使用することで、かなりの成功を収めました。組み込みのC ++環境を備えた比較的安定した開発ツールを提供します(これはやや珍しいようです)。-コードベースのサイズに応じて、ツールのコードサイズが制限されたバージョンの優れたハードウェア/ソフトウェア「キックスタートキット」も提供します。


4

IARは優れており、小規模なプロジェクトを実行している場合は、32Kのコードサイズが制限された無料のキックスタートエディションがあります。ただし、サイズのアップグレードには少し費用がかかります。また、多くの優れたサンプルプロジェクトが付属しており、通常は各プロセッサフ​​ァミリに対応しています。


2
はい、彼らは私の学校を大いに削減しました、それは95%の値下げの後、まだ数千でした。
Kortuk

4

ここ数日、OS XでEFM32Gマイクロ用に完全にセットアップされたCodeSourcery GNUツールチェーンを入手しました。それだけの価値がありました。私が試した多くのGUIベースのデバッガー(ほとんどがEclipseベース)と比較して。Makefile、GCC、およびGDBは夢の実現です。加えて、それはすべて私のLinuxまたはMac端末から動作します。

唯一の問題は、ボードに組み込まれたJ-Linkアダプターです。J-LinkのWindowsおよびLinux GDBServerプログラムはクローズドソースです。さらに悪いことに、Linuxバージョンははるかに遅れています。そのため、GDBが機能するためには、GDBServerを実行することを唯一の目的とするWindows VMWareイメージを実行する必要があります(Linuxが壊れているため)。

ああ、正しく動作しないことに加えて、J-LinkのLinuxベースのGDBサーバーは127.0.0.1にバインドし、それを宛先とするパケットのみをリッスンします。そのため、リモートマシンから接続するには、iptablesと転送をいじる必要があります。ばかばかしい; セガーは彼らの行為をまとめる必要があります。


jlinkはLinuxの王室の痛みであることに同意しますが、LD_LIBRARY_PATHを使用してjlinkを機能させることができると思います。また、SSHフォワードを使用するか、LD_PRELOADなどを使用してネットワークコールをラップし、ネットワークアドレスを変更することにより、バインディングアドレスの問題を修正できます。しかし、完全にオープンなドライバーがリバースエンジニアリングされているST-LINKのような安価なツールよりも高価なツールを使用するのが難しい場合、それは哀れです。
クリスストラットン

4

QtCreatorとGNU Tools ARM Embeddedを使用しています。うまくいく。

利点:

  • 完全無料(およびオープンソース)
  • QtCreatorは、コード補完、シンボルハイパーリンク、リファクタリングなどの機能を備えた優れた最新のC ++ IDEです。
  • QtCreatorはベアメタルデバッグをサポートしています(はい-ブレークポイントをグラフィカルに配置し、コードをステップし、変数を検査できます)。(MCUへのJTAGまたはSWDリンクが必要ですが、これは思ったほど難しくありませんでした。)
  • EclipseまたはEclipseベースではありません。

短所:

  • ベアメタルのサポートは非​​常に新しく、いくつかの問題がありました。最終的には、QtCreatorメーリングリストで著者の素晴らしい助けを借りて克服しました。
  • Keilや赤コードよりもセットアップが少し難しいかもしれません。

すべてが正しくセットアップされたら、クリックしてコード内にブレークポイントを作成し、「デバッグ」ボタンをクリックします。約5秒でブレークポイントでコンパイル、フラッシュ、実行、一時停止します(同時にArduinoの「IDE」に戻らなければならない場合は怒ります)。

別のARMチップであるCortex-M0ベースのnRF51822でこれを設定する方法のチュートリアルを作成しています。


5
答えをより便利にするために、あなたが好きなものについて少し詳細を追加し、いくつかの優れた機能などを追加する価値があるでしょう。
PeterJ 14年

大まかな概要を提供できますか?
スコットサイドマン14


1

arm-eabi-gccを使用し、summon arm toolchain scriptを介してインストールされたツールチェーンをインストールします。このスクリプトは、ARMでベアメタル作業を行うための環境を設定します。その無料でオープンソース、そしてそれはすべて私にとって確実に必要でした。私もこれにIARを使用しましたが、はるかに友好的なデバッグを行うことができ、IDEの方法で物事を行うことができるという点で確かに優れていますが、他の理由がない限り、全体的にはgccに慣れています誰にでも費用を正当化する必要はありません。

(私はgdbを何かに使用する方法を実際に試したことはありませんが、デバッガーを使用したり、デバッガーを使用したりすることに慣れていないため、そのビットを判断する資格があるかどうかはわかりません)


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.