16

組み込み開発者の世界でCの代替品がどれほど人気が​​あるのか​​知りたいです。

私はこれまでC(少しのアセンブラーを使用)しか使用していませんが、ターゲットのリソースは非常に限られています。この空間のどこか他の場所への移動はありますか?セットトップボックスで商品を獲得するのは何ですか?

!Cの場合、根本的な理由は何でしたか?

  • ターゲットのコンパイラサポート
  • トレース\静的分析ツール
  • 他の...

ありがとう。

4

19 に答える 19

6

Forは組み込み開発で非常に人気があります。

また、Smalltalkはおそらく組み込みコミュニティでは人気がありませんが、組み込み開発は間違いなく Smalltalk コミュニティで人気があります。

于 2009-02-28T01:12:19.207 に答える
5

「組み込み開発」と言うと、プロジェクトの規模を考慮しなければならないことに注意してください。

マイクロコントローラーまたは ASIC のファームウェアの規模で何かをプログラミングする場合、C とアセンブリがシーンを支配する傾向があります。組み込み開発者は、これらの言語に「特化」する傾向があります。これらの言語用のコンパイラは、ほぼすべての組み込みターゲット プラットフォームで利用できるからです。たとえば、PowerPC コアを搭載したチップから ARM コアを搭載したチップにプロジェクトを移行する場合、C コードの移植がそれほど難しくないと確信できます。一部のチップには、他の言語で使用できるコンパイラーがありますが、通常、結果のバイナリーの効率という点では C コンパイラーに匹敵しません。組み込みシステムはリソースが不足していることが多いため、システム設計者はコードをできるだけ効率的にしたいと考えています (アセンブリ言語コードが多く見られる理由の 1 つでもあります)。C++、Pascal、Basic などの言語で利用できる開発ツールを見てきましたが、それらは通常、利用可能な C コンパイラの効率に匹敵するほど成熟していないニッチなツールです。これらの言語のデバッグ ツールも、C/アセンブリで使用できるツールよりも見つけにくい傾向にあります。

セットトップボックスについても言及されました。この規模の組み込みシステムは、7 ~ 8 年前のデスクトップ コンピューターと同等の能力を備えています。利用可能な RAM、ストレージ スペース、および処理能力により、フル機能のオペレーティング システムと高水準言語用のインタープリターを実行できます。これらのより強力なシステムでは、C およびアセンブリ言語が引き続き使用されていますが (他に何もないとしても、ドライバー コードに)、他の言語 (Java、Lua、Tcl、Ruby など) がますます一般的になっています。インタープリター言語を使用すると、言語インタープリターのオーバーヘッドを処理するのに十分なリソースがプラットフォームにある限り、あるプラットフォームから別のプラットフォームへのコードの移植がさらに容易になります。ハードウェア (ドライバー) と直接やり取りする低レベル コードは、通常、高レベル言語ではアセンブリまたは C を使用します。この種のことを行う能力は常にありません。組み込みオペレーティング システム上でアプリケーションとして実行されるものは、通常、エミュレーターまたは仮想マシン内で開発およびテストできます。そのため、開発者が慣れ親しんだ言語で開発された多くのコードが表示されます。

TLDR バージョン: C が人気があるのは、ほぼすべての開発者が慣れ親しんでいる汎用性の高い言語だからです。アセンブリは、他の方法では困難または不可能な方法で低レベルのハードウェア アクセスを可能にするため、人気があります。Java などの解釈された/スクリプト化された言語はより一般的になっていますが、これらの言語のインタープリターのリソース要件は、一部の組み込みシステムにとって処理するには多すぎる場合があります。C 言語とアセンブリ言語で利用できる開発/デバッグ ツールの品質と多様性も、これらのオプションを魅力的なものにしています。

于 2009-07-31T20:35:58.107 に答える
1

90年の初めに、Intel PLM51とDCX51オペレーティングシステムを使用して、8051で多くの組み込み開発を行いました。

PLMは非常に単純な言語ですが、非常に強力です

現在、Cを使用しています

于 2009-03-05T22:53:30.990 に答える
1

私自身は使っていませんが、Bascomは AVR マイクロコントローラーで非常に人気があります。これは、周辺機器とのやり取りを非常に簡単にする基本的な IDE です。それをうまく使っているハードウェア関係者に会ったことがあります。

于 2009-02-27T22:54:00.447 に答える
1

はい。Java の人気が高まっています。多くのプロセッサには、主に Java および類似の言語 (.net) に関連する命令が追加されています。また、uclinux はマイクロコントローラー上で実行されるため、大規模なマイクロコントローラーの一部には実質的に任意の言語を使用できます。

アセンブリと同様に、基本はまだ一般的です。

特定の政府プロジェクトでエイダを見ることができます。

また、顧客が機能を拡張できるように、マイクロに Lua やその他のインタープリターを搭載しているエンジニアもいます。

しかし、Cは依然として支配的です。

-アダム

于 2009-02-28T00:15:13.667 に答える
1

スマートカードの分野で作業している場合は、Java Cardを使用できます。ええ、8 ビット マイクロの Java です。実際、ちょっと楽しいです。私は Eclipse で開発し、PC シミュレーターでテスト (およびデバッグ!) し、カードでも同じように動作することを確信できます。残念なことに、Java は組み込みアプリケーションにとってひどい言語です :)

于 2009-05-12T22:08:13.030 に答える
0

携帯電話でJavaのメモリ不足の例外が発生した回数を考えると(ほとんどの場合、リモートで面白いことをします)、暑い場所からコウモリのようにJavaから逃げ出します。

Erlangは携帯電話用に設計されていると聞きました。Lispはリモートデバイスサポートに適したアーキテクチャだと思います-デバイスcnaがランタイムを処理する場合。

于 2009-07-31T21:03:05.760 に答える
0

Pascal、Modula2も問題なく動作します。基本的に、アロカを実行できないことを除いて、Cとほぼ同等です(ただし、一部にはそれが拡張機能としてあります)。

しかし、中心的な問題は、!Cコンパイラの問題です。どちらを好みますか、より優れたコンパイラ/ツールチェーン、または好みの言語です。

私はWirthian言語が最も好きですが、ツールチェーンの方が優れているという理由だけで、単にCを使用し、その結果を受け入れています。

過去に例がありますが(Pascals、または厳密にコンパイルされたBasics)、Cがほとんどの場合標準です。理由がわかりませんでした。

于 2009-05-08T13:31:57.363 に答える
0

Luaを組み込み作業の実行可能なオプションにするために取り組んでいる人々のグループがあります。彼らは主に256Kフラッシュと64KRAM以上の32ビットARMをターゲットにしており、これまでのところ彼らの仕事に満足しているようです。

それらは、プログラム自体がシリアルEEPROMデバイスに格納された、適度に強力なPICで実行されるBASICインタープリターである古典的なベーシックスタンプに部分的に触発されています。

仕事で、私はまだZilogZ180CPUで実行されているBASICのコンパイルされたフレーバーで書かれた顧客の組み込みシステムを維持しています。1980年代のテクノロジーはいたるところにあり、システムのほとんどはまだソケット内の24ビンDIPパッケージから構築されています。コンパイラは、Windowsに組み込まれたMS-DOSシミュレータで実行されるZ80シミュレータで実行されるCP/M-80で実行されます。この方法で生産性の高いものなら何でもできる(そして27C256 UV消去可能EPROMを購入できること、そして私の20歳近くのData / IO PROMプログラマーがまだ機能していること)という驚異的な驚きは別として、私は顧客がシステムを保守可能な言語で書き直すことができるようにする新しいハードウェア設計。

于 2009-03-14T02:34:13.157 に答える
0

顧客の要求により、軍用アビオニクスの組み込みプロジェクトで Ada を使用しました。組み込み開発用の Ada ツールはたくさんありますが、そのほとんどは非常に高価です。個人的には、C を使用します。

于 2009-03-05T11:00:19.893 に答える
0

安価なソリューションを必要とする自作ユーザーや小規模企業の多くは、Tiny Tiger と Basic STAMP (BASIC を使用) がニーズを満たしていることを発見しました。

于 2010-06-15T19:45:40.610 に答える
0

日本航空

于 2009-03-13T20:53:36.610 に答える
0

私はEC++ ( Embedded C++ ) をかなり広範囲に使用してきました。

また、PICBasicはPIC'erの間で長い間人気があります。

于 2009-03-03T22:36:53.277 に答える
0

マイクロコントローラにもよりますが、それらの多くは C を持っていますが、コンパイラは恐ろしく、アセンブラは通常簡単で、最高のパフォーマンスを発揮し、最も効率的です。 Cを使用してください(問題によって異なります)。

私はCまたはアセンブラに固執します。他のものを使用すると、メモリ、パフォーマンス、およびリソースが浪費されます。

于 2009-03-14T02:54:56.227 に答える
0

8051 用のPascalコンパイラがあります。

于 2009-03-05T22:21:29.180 に答える
0

組み込みプラットフォームとして iPhone を含める場合、Objective-C

于 2009-07-31T20:48:08.647 に答える
0

この関連する質問を参照してください。

リアルタイム システム プログラミングに使用される言語

あなたの「なぜ」の質問に答えて、政府/軍の買収の観点から、Java (言語、プラットフォームなど...) が最近の共通語であり、言語の規模の経済が減少するという認識があります。取得および維持費。また、有能な Java プログラマーを効率的にトレーニングして、新しい言語を習得する必要がある場合よりも早く Java の合理的な RT/組み込みプログラマーになることができるという希望もあります。私の意見では、この理論的根拠は疑わしいですが、「なぜ」という質問には答えています。

于 2009-05-12T22:16:15.323 に答える