Sie schreiben;
"Ein Großteil des für Mikrocontroller geschriebenen Codes dreht sich um das Schreiben von Konfigurations- und Datenwerten in Register, das Lesen ankommender Daten aus Registern und das Reagieren auf Interrupt-Ereignisse".
Ich stimme zu, dass dies in der Praxis oft der Fall ist, aber ich denke nicht, dass dies eine gute Sache ist, und ich denke, dass das Umdenken ein wenig hilft.
Vielleicht weil Mikrocontroller-Programmierer erreichen und berühren die Hardware jederzeit sie mögen, haben viele (die meisten?) Von ihnen in die Angewohnheit, genau das zu tun, in ihrem Code. Oft wird diese Gewohnheit ohne Frage verfolgt, vielleicht weil so viele Leute, die diese Art von Arbeit machen, keine Computerwissenschaftler sind, sondern durch Ausbildung und Neigung. Ich weiß, ich habe selbst so angefangen.
Der Punkt, den ich versuche zu machen, ist, dass Mikrocontroller-Projekte wie jedes andere Software-Projekt gut gestaltet sein können und sollten. Ein wirklich wichtiger Teil des guten Designs ist es, den Hardwarezugriff auf Hardwaretreiber zu beschränken! Partitionieren Sie den gesamten Code, der Register schreibt, auf Interrupts usw. reagiert, in Module, die dem Rest Ihrer Software einen schönen, sauberen, abstrahierten Zugriff auf die Hardware bieten. Testen Sie diese Treibermodule auf dem Ziel mit Logikanalysatoren, Oszilloskopen, benutzerdefinierten Prüfständen oder was auch immer sinnvoll ist.
Ein wirklich wichtiger Punkt ist, dass jetzt der Rest Ihrer Software, hoffentlich die große Mehrheit davon, jetzt nur C-Code ist, den Sie auf einem Host-System ausführen und testen können. Auf dem Host-System sind die Hardware-Module so ausgestanzt, dass sie Einblick in den Code geben, der gerade getestet wird. Sie können Mainstream Unit Testing-Ansätze für diesen Code verwenden. Dies erfordert einige Vorbereitungen und Arbeit, aber wenn Sie gut organisiert sind, können Sie ein wiederverwendbares System erstellen, das für alle Ihre Projekte gelten kann. Die potenziellen Vorteile sind enorm. Ich habe hier ein wenig mehr über diese Ideen geschrieben;
[http://discuss.joelonsoftware.com/default.asp?joel.3.530964.12][1]
Könnte jemand mit genügend rep bitte auf den "embedded" -Tag auf diese Frage hinzufügen? Vielen Dank. –