hat schonmal jemand versucht aus dem hauptprogram (int main() {}) heraus weitere kompilierte daten zu laden? Wenn ja wie lässt sich das denn verwirklichen? Ich würde gerne treiber module, wie in unix basierten system schreiben. Im prinzip zwei programme. Das eine wird geladen wenn der AVR startet und über eine shell oder ähnliches kann ich dann entscheiden ob er jetzt mein sd-karten modul läd oder doch nur den lcd treiber. Wäre sicherlich nützlich! Vielen Dank :).
Was soll sowas auf einem Mikrocontroller bringen? µC werden in der Regel in ein Gerät eingebaut, das immer das gleiche macht - es muß nicht so universell einsetzbar sein, wie Geräte, die mit einem Betriebssystem arbeiten. Man schreibt ein Programm für einen Controller und ändert es vielleicht noch mal. Da die Software des Mikrocontrollers mit dem Aufbau der Hardware zusammenhängt, und diese sich eher schlecht ändert, braucht man auch nicht nachträglich einen anderen Treiber zu laden. Sowas macht man vorher, indem man die entsprechenden Header-Dateien in das Programm miteinbezieht. Eine Art Betriebssystem auf einem Mikrocontroller halte ich für wenig sinnvoll. Zumindest konnte ich bis jetzt noch keinen sinnvollen Verwendungszweck dafür erkennen.
Man kann auch an einen Mikrocontroller externe Komponenten anschließen. Beim AVR stellt sich allerdings die Frage, von wo diese Module geladen werden sollen. Wenn sie eh im Flash stehen, braucht man nix laden. Und wenn nicht, mußte man sie von einem extrenen Medium lesen und jedesmal ins Flash schreiben.
Rahul du hast hast recht in der industrie ist das völlig idiotisch ;). aber trozdem finde ich es sehr interessant sowas zu entwickeln. Aber vielleicht wäre es auch industriell einsetzbar. Man könnte die treiber/programme von sd karten oder einem externen EEPROM laden. Weiterhin wäre es sehr universell einsetzbar. Eine hauptplatine, mehrere kleine Trabanten in form von LCD,Sensoren,Relaisschnittstelle,was auch immer. Diese könnte man dann einzeln als modul laden und wenn man sie in einem anderen projekt nicht braucht lässt man einfach den treiber weg. Weiterhin würde ein treiber die sicherheit bürgen, dass er seperat entwickelt wird. d.h. eine kleine änderung müsste nur im treiber code vollzogen werden. Ich denke immer noch dass das ganze irgendwie nützlich ist ;).
@Philipp: Das kannst du doch alles haben. Du bindest beim Compulieren/Assemblieren nur die Includes (Treiber, Bibliotheken, Routinensammlungen oder wie immer man die nennen will) ein, die du für das aktuelle Projekt benötigst. Das wird tagtäglich so gemacht. Um das ohne Compilieren/Assemblieren mit fertig gebranntem AVR zu realisieren, sind die Ressourcen im AVR etwas knapp. Es bringt unterm Strich nix. Ein AVR ist und wird kein PC. Wer damit hantieren möchte, muss sich sachkundig machen oder Dienstleistungen einkaufen. ...
das ist wahr, ich mach mir nur gerade nen spass daraus ein betriebssystem für den avr zu schreiben und hab mich gefragt ob es denn irgendwie möglich wäre ;). man könnte sich auch ne art "old school" 8bit rechner zusammenbauen, lustig fänd ich es ja schon!
> ich mach mir nur gerade nen spass daraus ein > betriebssystem für den avr zu schreiben und hab mich gefragt ob es > denn > irgendwie möglich wäre Da kommst du zu spät... In der Codesammlung findest du ein fertiges Betriebssystem für den Tiny2313. Ich weiß zwar nicht, wozu das gut sein soll, aber was soll's...
Im übrigen ist gerade der AVR wegen seiner Harvard-Architektur für derartige Versuche denkbar ungeeignet. Wenn Du das mit einem anderen µC mit von-Neumann-Architektur machen würdest, dann hätte das ganze ja noch einen Sinn - hier böten sich ARMe und MSP430 an.
Das ganze macht dann einen Sinn, wenn man mit einem Codesize limitierten Compiler (z.B. Keil-Demo) arbeitet. Man kann dann "größere" Programme (HEX-Code) aus mehreren "kleinerern" Programmen zusammensetzen. Wichtig ist, das im Hauptcode alle public Funktionen (z.B. printf) stehen, d.h. die absoluten (gelinkten) Adressen. Die anderen "Module" brauchen dann "nur" noch eine LookUp-Table mit den Sprungadressen...
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.