Forum: Mikrocontroller und Digitale Elektronik treiber module


von Philipp Karbach (Gast)


Lesenswert?

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 :).

von Rahul (Gast)


Lesenswert?

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.

von Rolf Magnus (Gast)


Lesenswert?

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.

von Philipp Karbach (Gast)


Lesenswert?

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 ;).

von Hannes L. (hannes)


Lesenswert?

@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.

...

von Philipp Karbach (Gast)


Lesenswert?

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!

von Rahul (Gast)


Lesenswert?

Na dann viel Spaß...

von Hannes L. (hannes)


Lesenswert?

> 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...

von Philipp Karbach (Gast)


Lesenswert?

interessant, aber ich mach trozdem mal selbst weiter ;)

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

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.

von Take it Easy (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.