SW für embedded systeme analysieren

Hallo zusammen,

ich hatte jetzt schon einigemale das Vergnügen mich in einen fremden Source code eines embedded Systems einzuarbeiten.
Jedoch habe ich mich jedesmal gefragt was denn wohl eine geeignete Technik/Vorgehensweise hierfür ist.

Denn meistens sind die main tasks recht klein gehalten. In diesen wird wieder auf Unterfunktionen verwiesen, die wiederum wieder Unterfunktionen verwenden. Oft werden dann selbst definierte Strukturen verwendet, die nicht selten wiederum Strukturen als datentyp beinhalten…

Kurz gesagt: Sich einen schnellen Überblick zu verschaffen ist nahzu unmöglich. Besonders dann, wenn keine Vollständige Dokumentation zur Verfügung steht.

Wie geht Ihr an so eine Aufgabe ran?
Gibt es hierzu evtl. besonders geeignete Methoden?

Für Nützliche Hinweise bin ich Euch natürlich sehr Dankbar.

Gruß

Tobi

Hallo Tobi,

ich hatte jetzt schon einigemale das Vergnügen mich in einen
fremden Source code eines embedded Systems einzuarbeiten.
Jedoch habe ich mich jedesmal gefragt was denn wohl eine
geeignete Technik/Vorgehensweise hierfür ist.

Denn meistens sind die main tasks recht klein gehalten. In
diesen wird wieder auf Unterfunktionen verwiesen, die wiederum
wieder Unterfunktionen verwenden. Oft werden dann selbst
definierte Strukturen verwendet, die nicht selten wiederum
Strukturen als datentyp beinhalten…

Soweit ist ja noch alles normal.

Kurz gesagt: Sich einen schnellen Überblick zu verschaffen ist
nahzu unmöglich. Besonders dann, wenn keine Vollständige
Dokumentation zur Verfügung steht.

Das grösste Problem ist, ob strukturiert programmiert wurde oder ab es Spaghetti-Code ist !!
Selbst in Assembler kann man objektorientiert programmieren, indem man die entsprechenden Funktionen in einem Modul zusammenfasst.
Ganz lustig wird es dann aber, wenn von irgendwoher direkt auf lokale Daten zugegriffen wird.

Wie geht Ihr an so eine Aufgabe ran?
Gibt es hierzu evtl. besonders geeignete Methoden?

Es bleibt mühsam.
Das Hauptproblem ist, dass es sehr unterschiedliche Programmierstile gibt :frowning:(
Mein bester Freund in solchen Fällen ist meist GREP.
Es gibt noch Tools welche Struktogramme erstellen, aber bei Spaghetti-Code hilft das auch nicht wirklich weiter.

Bei C ist mein erster Schritt meistens, dass ich alles was nur lokal verwendet wird als ‚static‘ deklariere.
Ganz mühsam ist es auch, wenn es nur eine Include-Datei gibt.
Und ganz toll ist immer, wenn das Konzept keine Erweiterungen vorsieht … ;-((

MfG Peter(TOO)

Hallo Tobi,

sich in fremden Code einzuarbeiten ist immer mühsam. Ich find es ganz hilfreich wenn man ein paar Diagramme hat, welche die Abhängigkeiten darstellen. Sowas kannst Du Dir per Hand malen, oder auch erstellen lassen. Unter Linux gibt es dafür z.B. doxygen.

Gruß,
Ferdinand

Hallo Peter,

GREP ist klasse. Ich weiß :smile:

Ich hatte bisher meistens das Problem, dass die Projekte fast zu sehr erweiterbar waren. Ich meine zu viele ausgelagerte variable und funktionen. Da verliert man schnell den Überblick.
Momentat hab ich dann zusätzlich das Problem, das die Kommentare nicht auf deutsch oder englisch sind, sondern aus chninesischen Schriftzeichen bestehen. Das macht die Sache besonders interessant :smile:

Aber es ist ja beruhigend (naja…) zu lesen, dass es anderen auch nicht besser geht :smile:

Vielen dank!

Gruß
Tobi

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo Tobi,

Momentat hab ich dann zusätzlich das Problem, das die
Kommentare nicht auf deutsch oder englisch sind, sondern aus
chninesischen Schriftzeichen bestehen. Das macht die Sache
besonders interessant :smile:

Ach, auch deutsche Kommentare sind nicht unbedingt hilfreicher.

Ich hatte letzthin Folgendes:

… akt_Messung; // Aktuelle Messung
… avg_Messung; // Mittelwert

Natürlich wurde der Mittelwert in akt_Messung abgelegt … Grrrr !!

MfG Peter(TOO)