優れた組み込みソフトウェア開発者になりたい、またはこの分野で改善したい人のために、いくつかのヒントが欲しいです。
ハードウェア、ソフトウェアについて何を学ぶ必要がありますか?
どの本が最もお勧めですか?ブログ?
最後に、初心者の愛好家から優秀な専門家にどのようにすればいいですか?
優れた組み込みソフトウェア開発者になりたい、またはこの分野で改善したい人のために、いくつかのヒントが欲しいです。
ハードウェア、ソフトウェアについて何を学ぶ必要がありますか?
どの本が最もお勧めですか?ブログ?
最後に、初心者の愛好家から優秀な専門家にどのようにすればいいですか?
回答:
これまでのところ、すべての回答は良好でしたが、2セントを投入します。
ひねりを加えたいくつかのヒントを繰り返します。
ここにいくつかの本があります:
ここにいくつかのウェブサイトがあります:
本については、歴史を掘り下げることをお勧めします。今日の組み込みソフトウェア技術のほとんどは、昨年の最先端から来ています。
何でもそうですが、毎日練習してください。
Cを学び、開発者ボードから始めるなどの明白なこととは別に、マイクロコントローラーのデータシートを読むことを学びたいと思うでしょう。
製造業者は、より多くの機能をマイクロコントローラーに追加しているため、より複雑になっています。データシートは、電気的特性(ソフトウェア開発者よりも電子技術者にとって興味深い)を提供するだけでなく、レジスタ、メモリマップなどの詳細な説明も提供
します。デバッグ段階でより深刻な頭痛を引き起こす可能性があります。
「Embedded」は少しロードされた用語です。
いくつかの点で、制御するハードウェアがある限り、単一のアプリケーションの実行専用のシステムを組み込みシステムと呼ぶことができます。ローカルI / Oモジュールを介してプロセスを制御している場合、Linux上でJavaアプリケーションを実行する2GBのRAMを持つ400MHz PPC604をほぼ間違いなく組み込みシステムと呼ぶことができます。一方で、ある種の最小限のネットワークアプリケーションを実行するだけのarduinoは、組み込みシステムではありません。しかし、おそらく「埋め込まれた」ことで、ほとんどの人は、わずか数百バイトのRAM、オペレーティングシステムのないフラッシュベースのコントローラー、そして多くのオンチップ周辺機器を考えるようになります。
そうは言っても、非組み込みプログラマが通常組み込みシステムの学習に直面する2つの最大のハードルは、I / Oレジスタと割り込みです。
割り込みは、非組み込みプログラマにとって対処しやすい2つの概念のうち実際には簡単かもしれません。これらの主な問題である並行性とイベント駆動型プログラミングは、主流のアプリケーションで頻繁に発生するためです。割り込みを苦しめるのは、割り込み処理の品質に対するシステムの極端な感度、および割り込み条件をクリアして次の条件に設定するためのハードウェアの扱いの複雑さを実現することです。GUIを使用すると、デッドロックはアプリケーションだけを殺します。割り込みハンドラを使用すると、デッドロックによりシステム全体がロックされます。
I / Oデバイスが最も困難な領域のようです。初心者にとっては、このレジスタをここで読むと、そのレジスタに影響があることを発見するのは非常に驚きです。1を書き込んでビットをクリアします。データレジスタなどの読み取り時に自身をクリアするステータスビット シリアルポート用のデバイスドライバーを作成すると、低レベルのI / Oプログラミングについて多くを学ぶことができます。
実際にこれらのことを学ぶことに代わるものはありません。袖をまくり、ベアメタルでCやアセンブリ言語をプログラミングします。前述のJavaベースの組み込みシステムでさえ、最終的にはI / O用のデバイスドライバーが必要になります。これは、最終的にCを扱うことを意味します。経験が最高の教師です。マイクロコントローラを選び、MSP430、TMS320、AVR、ARM、PIC、68HC11など、評価キットを見つけて、いくつかのシステムを構築します。
しかし、あなたはプロミニのためにはんだ付けする必要があります。私はPICファミリーのファンではありませんが、歴史の教訓として何かを手に入れたいかもしれません、8051についても同じことが言えます。両方のファミリーはまだ人気があり、使用されていますが、あまり効率的ではなく、他のアーキテクチャに引き継がれています。ARMと親指、おそらくMIPS(これはpic-32であり、古いオリジナルのPICアーキテクチャと混同しないでください)を絶対に学んでください。ARMmite ProはエントリーレベルのARMボードとしては優れていますが、Stellarisも同様です。
ここで学びたいのは、さまざまなプラットフォーム用のアセンブラです。C. Cとアセンブラーの相互作用。さまざまなツールGCCと非GCC。データシート/プログラマーのリファレンスを読む方法(およびそれらすべてに何らかのエラーがあるか、誤解を招く可能性があること、それらを信頼しない、ハードウェアがドキュメントに勝つ)および回路図の読み取りまたは使用方法。これらは通常、複雑な回路図ではありません。多くのボードは、プロジェクトのインターフェイスに適しています。つまり、ボードにゴミがなく、I / Oピンに直接アクセスするだけです。しかし、それは学習には最適ではありません。ステラリスのようなものプロジェクトに苦労するボードには、組み込みの学習や、ドライバーの借用/使用やデータシートから独自の記述を学ぶための楽しいものがたくさんあります。Atmel AVRバタフライは、利用可能な場合でも優れたボードです。プログラムするために独自のシリアルポートにはんだ付けするか、穴にいくつかのワイヤを詰める必要がある場合があります。それが提供するのは、プログラミングを学べる周辺機器です。
LinuxまたはRTOSでSDKまたはAPI呼び出しを使用してアプリケーションを書く(ハードウェアに触れたり、データシートを読んだりしない)ことを伴う組み込み作業を行うことになったとしても、上記の知識はまだ先を行くでしょう。
この記事(ポルトガル語から英語への自動翻訳)は、組み込みソフトウェアの開発者としてのキャリア開発の概要を説明しています。注:オリジナルはこちらです。
それはあなたが開発しなければならない知識の範囲を概説することから始まります:
知識:組み込みシステムに関係する理論を知っている必要があります。これはハードウェアとソフトウェアを意味します。動作しているハードウェアアーキテクチャを知ることなく、組み込みソフトウェアの有能な開発者になることは不可能です。
スキル:その地域で経験を積む必要があります。練習が必要です。すべてのPICアセンブラーのニーモニックを装飾できますが、この知識でLEDを駆動できない場合は役に立ちません。
態度:何よりも、この分野で成長するための態度が必要です。頻繁に変更や開発が行われる非常にダイナミックなものです。常にやる気にさせる必要があります(a)独学し、学習を楽しみ、「調整」し、物事の仕組みを理解する そのような態度がなければすぐにあなたに与えます。この領域は非常に永続的である必要があるためです。
次に、これらの領域を習得するための次のヒントを示します(さらにテキストで開発します。これらは単なる見出しです)。
- ハードウェアを学ぶために必要なもの(少なくとも)
- ソフトウェアを学ぶために必要なもの(少なくとも)
- さらに、オペレーティングシステムを研究する
- トレーニングが必要です
- 停止しないで、ネットワークの学習と開発を続けてください!
組み込みソフトウェアエンジニアになる前によく考えてください。私のキャリアにはいくつかの段階があります。私は、販売/マーケティングへの移行よりも最初の5年間にソフトウェアを開発し、15年間それを行い、1億ドル以上のビジネスを管理し、ソフトウェアに戻りました。
15年後にソフトウェアに戻ったとき、最初に去った理由を思い出します。それは難しい。集中する必要があり、数百行のコードが互いに接触しているので、すべてをメモリに保持する必要があります。組み込みは特に難しいです。
また、あなた自身を理解する必要があります。あなたが一般的に賢い人で、細心の注意を払い、忍耐強いなら、素晴らしいエンジニアを作るでしょう。それらのいずれかが欠けている場合、あなたはせいぜい平均になります。それについて考えてください。あなたが非常に賢く、忍耐強くない場合、あなたがどれほど賢くても、良いエンジニアリングは忍耐と細部への注意を払うので、あまり価値がありません。
また、会話せずに一度にコード時間を快適に見る必要があります。私は、優れた社会的スキルを持つ人々がこれを耐え難いものと感じることを観察します。
これらすべてをチェックアウトしたら、これらのすばらしい本をすべて読むよりも、演習を行ってください。そうすれば、すばらしいエンジニアを作ることができます。
他の誰もが素晴らしいことを言います。だから私はあなたに一般的なアドバイスを与えます:読んで読んで読んで読んで読んで読んで読んで読んでください!
http://embeddedgurus.comのすべての記事を読んでください 。何か理解できない場合は、調査してください。それらの説明で理解できないことが見つかった場合は、もう少し読んでください。私は組み込みソフトウェアの職に就こうとしていますが、私の経験は過去数年間のほんの一握りのプロのプロジェクトで、たくさんの読書をしています。経験は物事を試すことができますが、読書はあなたがしようとしたことが以前に行われたかどうかを知ることができます。どのような状況でも作業できる概念を紹介します。
読むだけ!