treiber module

Gast #333605
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 :).
Gast #333606
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.
Gast #333607
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.
Gast #333608
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 ;).
#333609
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.

...
Gast #333610
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!
#333612
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...
Gast #333615
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...

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren