2012-03-22 11 views
13

私は組み込みシステムをプログラムすることを学ぶために最初からやりたいと思っています。周りを見回した後、私はちょっと混乱していました。組み込みプログラミング...非常に始めよう

私はCとC++の両方をプログラムすることができますが、私は組み込みプログラミングでどこから始めるべきかわかりません。何らかのデバイスを購入してマイクロプロセッサエミュレータを使用する必要がありますか?このように、開始する場所に関するアドバイスやリソースは大歓迎です。

+1

あなたの目標の範囲を狭くしたいかもしれません。 「組み込みシステム」は、32ビットの1GHz ARM CPU、1GBのRAM、32GBのストレージ、Linuxを実行することができます。 O/Sをまったく実行していない1KBのRAMを搭載した8ビットマイクロコントローラにまで下がります。より具体的には、どのようなものを作成したいのか想像してみてください。 –

+0

C/C++?一つを選ぶ。 – Puppy

+0

@DeadMG:彼は彼が両方でプログラムできることを意味していることは明らかです。ちょうどあなたのために私はそれをより明確にしました。 – Clifford

答えて

8

私の意見では、Arduinoをスキップします。私はいつも、それを非プログラマのための一種のダウンシステムと見てきました。できるだけ低レベルになるようにCの知識を適用できるようにしてください。割り込みベクトルの仕組み、制限されたRAMがスタックを制限する方法、デバッグ方法を理解したい。

フリースケールの8ビットおよび16ビットマイクロコントローラ、特にHCS08またはHCS12をチェックしてください。デバッグインタフェース(バックグラウンドデバッグモード)を組み込んだ$ 100-200の開発システムと$ 100以下の開発システムがあります。これらはArduinoよりも高いパフォーマンスとメモリです。 CodeWarriorソフトウェアは無料です(コードサイズの制限はありますが、ほとんどの場合、制限数はこれらのデバイスのフラッシュ量よりも多くなります)。あなたがArduinoでコードデバッグブレークポイントを設定できるかどうかはわかりませんが、これらを使用することができます。 CodeWarriorには別の利点があります。最初に、さまざまなモジュールのメモリマップレジスタがどのように動作するかを理解するためにデータシートを掘り下げたいと思います(たとえば、フラグのクリア方法、モードの設定方法など)。CodeWarrior特定のHCSxxファミリの派生品とその特定のモジュールのための機能を生成するProcessor Expertが付属しています。これらの製品のほとんどはデリバティブ間のロジックを再利用しているため、若干の違いがあるため、コードを再利用することは理にかなっています。プロセッサエキスパートは10年ほど前から始まって以来、長い道のりを歩んできました。長期的には、これらの機能が非常に低いレベルの動作(例えば、Cファンクションコールでxx/yyデューティサイクルのPWMタイマ出力ピンを設定する)を記述するため、開発時間を大幅に節約できます。

次に、これらを実行するOSを使用するか、ARMまたはePPCに移行することができます。 LinuxとWebサーバーに付属のHCS12デモボードを少なくとも1つは知っています。これはいつでも最初の開発のために一掃して準備ができたら元に戻すことができます。 Freescaleはチュートリアル、アプリケーション・ノート、ドキュメンテーションを提供することも非常にうまくいきますが、サイトがナビゲートすることが難しい場合があります。大規模な生態系の症状に過ぎないと思います。がんばろう!

+1

私の意見では、Arduino(デバイス)はかなり良い安価なuC開発プラットフォームです。 Arduinoライブラリを使用しないでください。 –

4

愛好家に人気があり、非常に使いやすいいくつかの組み込みプラットフォームがあります。 Arduinoはおそらく最も人気があります。ボードは安価(20〜30ドル)で使いやすく、優れたソフトウェアがたくさんあります。 ArduinoプラットフォームのメインWebサイトはです。あなたが始めるのに役立つ他のリソースへのリンクがたくさんあります。

SparkFunは、エレクトロニクス部品(Arduinoやその他の有用なボードを含む)とツールの趣味主義的なサプライヤーです。彼らはあなたのWebサイトにa lot of great contentを持っており、ハードウェアとソフトウェアの両方を使い始めるのに役立ちます。

2

あなたにはたくさんのオプションがあります。私はエミュレータから始めると思います(使用する組み込みOSの種類は関係ありません。おそらくあなたはx86 CPUを使用しません)。 X86 CPUで作業する場合、エミュレータは必要ありませんが、仮想マシンが必要な場合があります。

あなたの質問に "arm"というタグが付いていますので、ARMプロセッサを使用したいと思います(エミュレータが必要です)。 hereを見ると、組み込みプログラミングから始めるチュートリアルとリソースが見つかります。

3

一つは、二つのクラスに組み込みシステムを分割することができます:

  • フルを実行するものをOS。オペレーティングシステムを入手して起動する方法が文書化されている場合は、クロスコンパイラをビルドまたはダウンロードする必要がある場合を除き、デスクトップとはまったく異なるものは扱われません。もちろん、電話機の場合は、環境のスポンサーがデバッガを備えた精巧な開発環境を提供します。

  • 「ベアメタル」と呼ばれるプログラムを実行するもの。これらはあなたのプログラムと言語ランタイムがロードされているだけです。 (これらのいくつかは本当にシンプルで、簡単な通訳やアセンブリ言語のいずれかを実行します。これらは、単に統合された周辺機器を設定するために必要ではない複雑なプログラミングの利点を持っている。)

あなたがエミュレータを必要としないかもしれませんまたは他のハードウェアのデバッグ設定を使用している場合、実際にはハードウェアを必要としない場合もあります。可能であれば、仮想マシンで初期開発を試みます。

いつもと同じように、あなたが支払うものを手に入れます。商業プロジェクトでは、多くの環境が利用可能ですが、おそらくこれらはロボットプロジェクトなどではあまり使用されません。

妥当な量のサポートがあるプラットフォームはたくさんあります。最新の怒り(その驚異的な35ドルの価格ポイントのため)はthe Raspberry Pi,ですが、現時点ではすぐには入手できません。

2

TIのEZ430シリーズの開発ツールを試してみることをお勧めします。いくつかのツールはわずか20ドルで購入することができ、それらを拡張する方法だけでなく、基本的な機能を持っています。 2つのeZ430-F2013を簡単に購入し、お互いに、または別のコンピュータと話すことができます。

TIには、プログラミング環境が非常にユーザーフレンドリーなので、無料で完全な(Eclipseに基づいている)MSP430用のCode Composer Studioが付属しています。 TIはまた、システムの機能性の大部分をカバーする多数のコードサンプルを提供しています。

MSP430では、「ベアメタル」コードがそのようにプログラミングされるため、C言語をプログラミングするだけでなく、出力とビットバンギングをトグルすることになります。しかし、あなたがこのレベルでそれを学ぶことに興味があるように見えるので、これは始めるのに最適な場所です。

一方、組み込みOS(Linuxなど)が必要な場合は、gumstixのWebサイトを参照してください。

2

あなたの質問は、アプリケーションの種類、性能要件、予算などについての情報がほとんどないため、具体的な答えはあまりよくありません。

ただし、ARMアーキテクチャのデバイスを選択することをお勧めします。これは、デバイスが数十ドルからMIPSのパフォーマンスでカバーされ、ボード上のアプリケーションプロセッサへのオンチップメモリ​​が小さくてコストがかかりますたとえば、Linux、WinCE、Androidなどの数百ドルを実行することができます。

似ているかどうかARMは組込みシステムの世界で普遍的です。デザインインと市場シェアの点では他のすべてがニッチです。シンプルな開発/評価ボード上のCortex-M3ベースのデバイスは、始めるのに適しています。しかし、ツールやハードウェアのコストを考慮しなければ、あなたは不満を感じます。

+0

ちょっとしたプログラミングを試してみるために使うことのできるソフトウェアツールはありませんか?たとえば、マイクロプロセッサエミュレータを使用するチュートリアルはありますか?あるいは、物理的なチップをすぐに始めることをお勧めしますか? – nuno

+1

+1質問の範囲を絞り込むためにOPを取得しようとするための+1。私は、OPに、組み込み機器が何をすべきかを決めるのに時間を割くことを提案する。すべてをやらなければならない場合は、より高価なボードの1つになるでしょう。テレメトリデバイスや単純なもの(つまり、冷蔵庫などの温度監視)の場合は、はるかに安価なボードにすることができます。 – ldav1s

+0

私の質問の範囲は非常に一般的であることに同意します。申し訳ありません。私はちょうど楽しみのために、かなりシンプルなプログラムのやり方を始めるためのヒントを得ようとしていました。だから私はシンプルな/安いボードやエミュレータでも簡単に始めると思う。 – nuno

関連する問題