Gast
#2265366
Moin, ich entwickel im Rahmen eines Uni-Projekts kleine Softwarmodule mit AVR-Prozessoren, von denen mehrere an einem RS485 Bus hängen werden. Nun möchte ich die Software gerne so halten, dass diese später einmal über den Bus ausgetauscht werden kann, ohne noch extra irgendwelche Pins anfassen zu müssen. Klar, "nimm nen Bootloader" wird jetzt als Antwort kommen. Hab ich auch zuerst dran gedacht. Allerdings möchte ich gerne, das einige Funktionen immer zur Verfügung stehen und nicht abhängig von der aufgespielten Software sind. Beispiele hierfür sind: Reset ausführen, Versionsnummer Bootloader/UserApplication abfragen und noch einiges was in einem Bootloader nicht so einfach möglich ist, mir aber grade nicht mehr einfällt. Der Reset ist aber ein gutes Beispiel: Wenn die UserApplication keine Reset-Funktion implementiert, ist es später umständlich in den Bootloader zu gelangen (Strom an->Rechtzeitiges Senden des entsprechendem Befehls). Meine Idee war nun ein Framework zu schreiben, das einige Initalisierungen übernimmt und Nachrichten, die über den Bus kommen entgegenimmt, auswertet und ggf. an die UserApplikation weiterleitet. Diese wiederum müsste aus mindestens zwei Funktionen bestehen - einer die die BusDaten auswertet und einer, ähnlich 'main', die das eigentlich Programm darstellt. Nun stellt sich mir die Frage, ob dieser Ansatz überhaupt lösbar ist, da ich a) nicht mit Sicherheit wissen kann, wo eine der beiden Funktionen im Flash liegt. Der Einsprungspunkt ändert sich ja je nach Größe der vorangehenden Funktion. b) nicht weiß, wie ich sowas, also ohne main, in meiner IDE(Eclipse, GCC) überhaupt kompiliert bekomme.