Ich mache beides, also hier ist meine Ansicht.
Ich denke, die mit Abstand wichtigste Fähigkeit in Embedded ist Ihre Debugging-Fähigkeit. Die erforderliche Denkweise ist insofern sehr unterschiedlich, als so viel mehr schief gehen kann, und Sie müssen sehr offen dafür sein, all die verschiedenen Möglichkeiten zu berücksichtigen, mit denen das, was Sie versuchen, schief gehen kann.
Dies ist das größte Problem für neue Embedded-Entwickler. PC-Leute neigen dazu, es rauer zu haben, da sie es gewohnt sind, nur für sie zu arbeiten. Sie werden viel Zeit damit verschwenden, nach Werkzeugen zu suchen, um stattdessen Dinge für sie zu tun (Hinweis: Es gibt nicht viele). Es werden immer wieder viele Köpfe gegen Wände geschlagen, ohne zu wissen, was man sonst tun soll. Wenn Sie das Gefühl haben, stecken zu bleiben, treten Sie zurück und finden Sie heraus, ob Sie feststellen können, was alles schief gehen könnte. Gehen Sie systematisch die Liste der potenziellen Probleme ein, bis Sie es herausgefunden haben. Aus diesem Prozess folgt direkt, dass Sie den Umfang der Probleme einschränken sollten, indem Sie nicht zu viel auf einmal ändern.
Erfahrene Embedded-Leute halten das Debuggen für selbstverständlich ... die meisten Leute, die es nicht gut können, halten nicht lange durch (oder arbeiten in großen Unternehmen, die einfach akzeptieren, dass "Firmware ist schwer" als Antwort auf die Gründe für eine bestimmte Funktion ist Jahre zu spät)
Sie arbeiten an Code, der auf einem externen System für Ihr Entwicklungssystem ausgeführt wird und von Plattform zu Plattform unterschiedliche Einblicke in Ihr Ziel bietet. Wenn Sie unter Ihrer Kontrolle stehen, suchen Sie nach Entwicklungshilfen, um diese Sichtbarkeit Ihres Zielsystems zu verbessern. Verwenden Sie serielle Debug-Ports, Bit-Banging-Debug-Ausgabe, das berühmte blinkende Licht usw. Lernen Sie mindestens die Verwendung eines Oszilloskops und verwenden Sie Pin-E / A mit dem Bereich, um zu sehen, wann bestimmte Funktionen ein- / ausgehen, ISRs ausgelöst werden usw. Ich habe beobachtet, wie Menschen buchstäblich Jahre länger als nötig gekämpft haben, nur weil sie sich nie die Mühe gemacht haben, einen richtigen JTAG-Debugger-Link einzurichten / zu lernen.
Es ist viel wichtiger, genau zu wissen, über welche Ressourcen Sie im Vergleich zu einem PC verfügen. Lesen Sie die Datenblätter sorgfältig durch. Berücksichtigen Sie die Ressourcenkosten für alles, was Sie versuchen zu tun. Lernen Sie ressourcenorientierte Debugging-Tricks wie das Füllen des Stapelspeichers mit einem magischen Wert, um die Stapelverwendung zu verfolgen.
Während sowohl für PC als auch für eingebettete Software ein gewisses Maß an Debugging-Kenntnissen erforderlich ist, ist dies bei Embedded viel wichtiger.