Forum: Mikrocontroller und Digitale Elektronik Treiber für Mikrocontroller professionell entwickeln


von Rudolph T. (lucky27)


Lesenswert?

Hallo zusammen,

seit einiger Zeit beschäftige ich mich mit dem STM32F107 uC und habe 
bereits einige kleine Programme zur Ansteuerung von ein paar Peripherien 
wie z.B. Ethernet, GPIO oder Timern bzw. PWM geschrieben. Dies gelang 
mir eigentlich relativ einfach da ich die Standard-Peripherial-Library 
und das Reference Manual des STMs zur Hilfe hatte, doch wie entwickelt 
man für viel komplexere Peripherien wie z.B. USB-(OTG) einen Treiber 
wenn man nur das Datenblatt bzw. Reference Manual zur Verfügung hat?


Also schreiben die Entwickler solcher Treiber, die Treiber für z.B. den 
STM32 nur mithilfe des Datenblatts?


Und wie genau entwickeln sie diese, erstellen sie sich z.B. vorher einen 
Programmablaufplan (Flowchart) oder progammieren sie einfach drauf los?

von Dr. Sommer (Gast)


Lesenswert?

Lukas T. schrieb:
> die Treiber für z.B. den
> STM32 nur mithilfe des Datenblatts?
Was heißt hier "nur"? In den Datenblättern von ST steht doch (fast) 
alles haarklein drin, da weiß man nach genauer Lektüre doch schon was 
man zu tun hat. Viel interessanter ist das doch bei undokumentierter 
Hardware, wie z.B. Grafikkarten, für die mittels Reverse Engineering 
Treiber entwickelt werden. Außerdem gibts im Falle von USB ja auch noch 
den USB Standard.

Lukas T. schrieb:
> Und wie genau entwickeln sie diese, erstellen sie sich z.B. vorher einen
> Programmablaufplan (Flowchart) oder progammieren sie einfach drauf los?
Die Methoden des Software Engineering helfen auch bei der 
Treiber-Entwicklung... Und einfache Programmablaufpläne sind nur eine 
davon.

von Georg G. (df2au)


Lesenswert?

Lukas T. schrieb:
> progammieren sie einfach drauf los?

Das würde ins Chaos führen. Der Anfang ist ein Lastenheft. Es wird genau 
aufgeschrieben, was alles gebraucht wird. Dann zerkleinert man das große 
Problem in kleinere Häppchen und arbeitet sich Stück für Stück weiter. 
Da gibt es dann zwei Philosophien, von oben nach unten oder umgekehrt. 
Jedes Teilproblem wird ausgiebig getestet. Und zum Schluss wird alles 
integriert und man hofft, dass es auch funktioniert.

Aber noch einmal: Saubere Dokumentation ist die halbe Arbeit. Erst 
denken, dann Abläufe festlegen. Das eigentliche Kodieren ganz zum 
Schluss ist der einfachste Teil.

von Dr. Sommer (Gast)


Lesenswert?

Georg G. schrieb:
> Der Anfang ist ein Lastenheft. Es wird genau aufgeschrieben, was alles
> gebraucht wird
Beim V-Modell oder Wasserfall ja. Es gibt aber auch andere 
Prozessmodelle...

Georg G. schrieb:
> Das eigentliche Kodieren ganz zum Schluss ist der einfachste Teil.
Hehe, aber nur in einer Welt in der es keine Hardware Bugs gibt, alles 
sich wie vorgesehen verhält, und niemand jemals Fehler macht.

von Georg G. (df2au)


Lesenswert?

Dr. Sommer schrieb:
> Hehe, aber nur in einer Welt in der es keine Hardware Bugs

Ich schrieb nicht, dass es problemlos sei. Aber jeder Fehler, jede 
Nachlässigkeit, die in den Stufen davor gemacht wurde, rächt sich am 
Ende bitter. Das gilt umso mehr, wenn mehrere Leute an einem Projekt 
gleichzeitig arbeiten. VHIT machen nur Anfänger und lernresistente 
Leute.

von TheorievsPraxis (Gast)


Lesenswert?

es gibt genug Vorlagen, wie man Treiber bzw. Software allgemein 
entwickeln sollte, in der Praxis gibt es aber einen enormen Wildwuchs. 
Die Informatik hat ein Qualitätsproblem, das so groß ist, das niemand es 
mehr sehen kann. Nur die Auswirkungen wie: alles ist hackbar, es gibt 
nach x Jahren keinen Support mehr für "veraltete" Software, 
Kompatibilität über alles, aber jetzt ist mal Zeit für was neues, aus 
dem Ruder laufende Projekte wegen ständig wachsender Komplexität der 
Komponenten.
Die größten Fortschritte in der Informatik wird man die nächsten 30 
Jahre machen können im Bereich Qualitätsbewusstsein und Normierung incl. 
verpflichtender Einhaltung selbiger. Aber da damit kein Geld kurzfristig 
zu verdienen ist wird das noch auf sich warten lassen. Und die neuen 
Informatiker lernen weiter von den alten wie es bisher gelaufen ist. 
Prio 1. Deadline halten. Prio 2. den eigenen Stil pflegen

von W.S. (Gast)


Lesenswert?

Lukas T. schrieb:
> Also schreiben die Entwickler solcher Treiber, die Treiber für z.B. den
> STM32 nur mithilfe des Datenblatts?
>
> Und wie genau entwickeln sie diese, erstellen sie sich z.B. vorher einen
> Programmablaufplan (Flowchart) oder progammieren sie einfach drauf los?


Nein, das Datenblatt ist meistens nicht ausreichend, weswegen unsereiner 
das zugehörige Referenzmanual zuerst gründlich durchliest. Oftmals sind 
dort einige Details un- oder mißverständlich, weswegen man es nach 
einiger Zeit eben nochmal durchackern muß.

Als nächstes kommt das Nachdenken dran, wie man die Schnittstelle 
zwischen Treiber und höheren Programmschichten gestaltet, so daß die 
zugehörige .h den Rest der Firmware nicht zumüllt und man sich an 
anderen Stellen der Firmware nicht mit den Details der Treiber-Innereien 
herumplagen muß.

Wer einfach drauflos programmiert, macht sich nur das eigene Leben 
schwer - aber das sind viele, die so tun. Auch Leute, die mit 
Programmieren ihre Brötchen verdienen. Die Frage ist also nicht "Wie 
machen es die Anderen?" sondern eher "Wie sollte man es sinnvollerweise 
machen?"

W.S.

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.