Hallo Mario,
Zitat Zitat von Wesze Beitrag anzeigen
Also die Hardware wird von einer Fremdfirma gefertigt, die Änderungen daran werden auch weiterhin von dieser erledigt da sich da selten was ändert.
Die Firmware ist in C geschrieben.
Es geht vornehmlich um kleiner Änderungen in der Software.
Eine Änderung die mein Vorgänger noch gemacht hat war z.B. auch ein Aufbau eines Menüs das auf einem LCD Display ausgegeben wird.

Das ich nicht so gezielt vorgehe hat ganz einfach den Grund, dass ich überhaupt kein Wissen in diesem Bereich habe.
Wenn ich eine Funktion in unserer Anwendungssoftware schreiben muss, weiss ich wie ich ran gehen muss, und was ich alles dazu benötige.
Beim µC hast du meistens kein Betriebssystem.

Die Firmware besteht also aus dem Anwendungsteil, den Hardware-Treibern und den Interrupt-Handlern, welche dann Teilweise die Hardware-Treiber enthalten.

Die erste grosse Quizfrage ist dann, ob das ganze einigermassen dokumentiert ist.

Das nächste ist, wie modular sie Software aufgebaut ist. Da gibt es Programmierer die alles irgendwie durcheinander mischen, also Anwendung und Treiber. Wenn man dann z.B. etwas im Menü ändert, ändert man gleichzeitig das Timing der I/Os, was dann gerne zu seltsamen Effekten führt

Ich habe da schon Projekte übernommen, bei welchen die ganze Firmware aus einer einzigen c.Datei bestand.
Ist dann bei 5-6T Zeilen etwas mühsam in der Handhabung.
Auch hat man da keine Übersicht über Modulgrenzen.

Bei mir besteht ein Modul aus der .c-Datei und einer gleichnamigen .h. Die .h beschreibt im Prinzip das Interface, enthält also alle öffentlichen Deklarationen und Konstanten. Lokale Konstanten usw. befinden sich dann in der .c. Grundsätzlich deklariere ich alle lokalen Funktionen noch als static, somit sind sie ausserhalb des Moduls nicht sichtbar, was versehentliche direkte Aufrufe von ausserhalb verhindert und zudem weniger Namenskonflikte beim Linken erzeugt.
Also im Prinzip so, wie man sich das von C++ gewohnt ist, nur das man keine direkte Unterstützung vom Compiler hat.

MfG Peter(TOO)