Hallo,
Ich sehe noch Probleme darin die Adressen der Funktionen im Flash herauszubekommen (da ein altes Modul die Adressen der Funktionen eines neuen Moduls nicht kennen kann).
Dazu habe ich mir folgendes gedacht:
Je Funktionsmodul muß es so eine "Vermittler"- Funktion geben.
Wenn ich aus dem Hauptmodul eine Funktion in einem Funktionsmodul aufrufen möchte, dann rufe ich die azugehörige "Vermittler"-Funktion mit dem Argument "Index des Funktions-Adress-Array's" auf, welches beispielsweise die Funktion Read_XYZ im Funktionsmodul adressiert.
D.h. die Vermittler-Funktion hat ein Array in dem die Adressen der Funktionen stehen die von außerhalb aufgerufen werden sollen.

Variablen in den Funktionsmodulen können nur noch mit malloc() angelegt werden, da bei jedem neuen "Make" die Variablen vermutlich neue
Adressen im RAM erhalten. Die alten Module konnen also Speicherkollisionen mit den neuen Modulen haben.

Was ich nicht weiß:
1)
Kann ich dem Linker beibringen, dass die Dispatcher-Funktion von Modul 1 an Adresse X im Flash liegen soll und die restlichen Funktionen von Modul 1 darauf folgen sollen?
Ich weiß nur dass man dem Linker sagen kann wo Code und wo Daten im Flash liegen sollen.
2)
Können lokale Funktionen innerhalb eines Funktionsmoduls einander ohne Pointer aufrufen? Da sollte es doch keine Probleme geben oder?

Gruß
Christian