私は両方を行うので、これが私の見解です。
組み込みで最も重要なスキルはデバッグ能力です。必要な考え方は大きく異なり、多くの場合は失敗する可能性があります。また、自分がやろうとしていることのすべてが異なる方法で失敗する可能性があることを考慮することに、非常に率直でなければなりません。
これは、新しい組み込み開発者にとって単一の最大の問題です。PCの人々は、彼らのために働くことに慣れているので、それをより荒くする傾向があります。彼らは代わりに何かをするためのツールを探すのに多くの時間を浪費する傾向があります(ヒント:多くはありません)。他に何をすべきかわからないまま、頭を何度も壁にぶつけています。行き詰まっていると感じた場合は、一歩下がって、すべての問題の原因を特定できるかどうかを判断してください。あなたがそれを理解するまで、体系的にあなたの潜在的な問題のリストを絞り込みます。このプロセスの直後から、一度にあまり変更しないことで問題の範囲を制限する必要があります。
経験豊富な組み込みの人々は当然のことながらデバッグを行う傾向があります...それをうまく実行できない人々のほとんどは長続きしません(または単に特定の機能の理由として「ファームウェアが難しい」と単純に受け入れる大企業で働く)年遅れです)
あなたは、プラットフォームごとにターゲットへの可視性の程度が異なる、開発システムの外部システムで実行されるコードに取り組んでいます。自分の管理下にある場合は、開発支援を求めて、ターゲットシステムの可視性を向上させます。デバッグシリアルポート、ビットバンギングデバッグ出力、有名な点滅ライトなどを使用します。少なくとも、オシロスコープの使用方法を学び、 'スコープでピンI / Oを使用して、特定の関数の開始/終了、ISRの起動などを確認します。 。適切なJTAGデバッガーリンクの設定方法や使い方を学ぶことに煩わされることがなかったという理由だけで、必要以上に文字どおり何年も苦労している人々を見てきました。
PCと比較して、どのようなリソースを持っているかを正確に把握することの方がはるかに重要です。データシートを注意深くお読みください。あなたがしようとしているあらゆるものの資源「コスト」を考えてください。スタックの使用量を追跡するための魔法の値でスタックスペースを埋めるなど、リソース指向のデバッグトリックを学びます。
PCと組み込みソフトウェアの両方にある程度のデバッグスキルが必要ですが、組み込みソフトウェアの方がはるかに重要です。