KeilはARM7開発に関してGCCとどのように比較されますか?私は中規模のプロジェクトにハードウェアコンサルタントを選ぶ過程にあり、一部はkeilを使用し、一部はgccを使用しています。どちらのオプションを使用する場合の落とし穴も知りたいのですが...
5 に答える
コーディング/開発の観点からは、この 2 つの間にほとんど違いはありません。考慮すべき唯一のことは、これらのコンパイラに固有のものではありません。メンテナンス:
- Keil コンパイラにアクセスできなくても、ソフトウェアを維持できますか? それともわずかな費用で済みますか?
- また、どのデバッグハードウェア/JTAG がサポートされていますか? また、それらを入手する必要がある場合のコストはいくらですか?
- 後で開発者を切り替える必要があるために、あるコンパイラから別のコンパイラに移動する必要がある場合、コストはいくらになりますか?
あなたが非常にコストに敏感でない限り、本当の問題はコンパイラが小さな問題になるので、誰が最高の仕事をするかだと思います.
両方のコンパイラを使用するようにコードを構成できるはずです。「packed」などの属性はマクロ化できるため、コードは両方の下で満足しています。ハードウェアの詳細を下位レベルにプッシュし、コンパイル時ではなく実行時にハードウェア マップを構成します。コードの断片の別々の Kiel バージョンと GCC バージョンが必要な場合は、それらを別々のファイルに入れて、どちらを gcc make または Kiel プロジェクト ファイルで使用するかを構成します。
まだ解決していない問題の 1 つは、アセンブラー コードです。Kiel は armasm を使用しますが、gcc は as を使用します。それらは非常に異なるソース コード形式を持っているようです。可能であれば、アセンブラーを避けるもう 1 つの理由。
GCC を使用する利点は、非 ARM プラットフォームをターゲットにできることです。これは、はるかに優れた開発ツール (つまり、x86 Linux での valgrind) を備えたプラットフォームでアプリケーションをシミュレートするのに理想的です。実際、これはARM をターゲットとするすべてのアプリケーションが取るべきアプローチです。最初に x86 で開発してから、ARM に移植します。
また、Kiel を最新の状態に保つためのコストもあります。私が知っているところでは、RVDK 2.1 (2002?) に固執しています。これは、3 人の開発者が最新にアップグレードするためのコストが法外に高いためです。
また、gcc と pedantic は、コード内の警告とエラーを、私たちの (確かに古い) バージョンの Kiel よりもはるかにうまく解決することも付け加えておきます。
Kiel はよりタイトな ARM コードを提供する可能性があるため、ターゲット ビルドを実行するために保持してください。それ以外の場合は GCC を使用してください。
私の記憶が正しければ、キールは現在ARMが所有しています。ARMコンパイラは、優れたコードを生成するためにgccよりも昼夜を問わず優れています。rvctの縮小版、無料版、その他のバージョンを含むKeilを覚えているようです。だから私の質問は、gccがそこにあり、よく使われているときに、商用ソリューションを使用する価値のある、はるかに速く、よりクリーンで、より良いコードを持っているということですか?パフォーマンスが低下し、ネット上で無料で入手できるすべてのgccベースの情報を商用ツールに精神的に変換し、また元に戻す必要がない限り、gccを使用します。一般的に、gccを使用する方がおそらくより良い方法です。おそらく、KielのGoogle検索ボックスの背後には豊富な情報がありますが、gccベースのソリューションの知識と情報の量はそれを覆い隠しています。
コンサルタントが1つのツールを使用してプロジェクトの最初の作業を行い、最後に作業を引き継ぐ場合は、おそらくgccベースのソリューション(つまり、vxworks gcc、またはコードソースリー)が必要になります。 gccですが、一般的なgccソリューションです)。間違いなく、あなたやあなたが雇う他の誰かがこの塊を拾い上げて実行する必要があり、gccを使用すると、意欲的で有能な誰かを見つける可能性が高くなります。
商用ソリューションの主な利点は、コンパイラーまたはライブラリーで問題が発生した場合のサポートです。
メインストリームハードウェアを使用している場合(gcc = x86の場合)、オープンソースで問題ありません。コンパイラまたはライブラリの問題のほとんどは、通常、コミュニティによってすぐに修正されます。
(おそらくエキゾチックな)組み込みプラットフォームで開発している場合、ツールチェーンに問題があると、すぐにかなり孤独を感じることがあります。
私たちはKeilプラットフォームを使用しており、そのパフォーマンスと最適化に非常に満足しています。私は数年前にいくつかの標準ベンチマークを実行しましたが、それらは非常に優れていました。もう1つの考慮事項はサポートです。これまでのところ、Keilの応答時間は非常に長く、いくつかの難しい問題については比較的良いフィードバックがありました。
参考までに、プロジェクトでKeil RTOSを使用し、それについて質問がある場合は、ソースコードを購入できます。