Mikrocontroller: Treiber aus Datenblatt



  • Hallo,

    ich möchte mich ein wenig mit Mikrocontrollern auseinandersetzen. Ich habe schon einige Projekte mit dem Arduino durchgeführt und habe einen Kollegen, der im Embedded-Bereich tätig ist, gefragt, wie ich denn etwas tiefer einsteigen könnte.

    Er empfahl mir dich mal einen Treiber für mein Arduino-Board mit Hilfe des Datenblatts zu schreiben.

    Leider habe ich gat keine ahnung was er damit meinte und wie das gehen soll.
    Einfaches googlen brachte mich auch nicht weiter.

    Kann mir das jemand erklären und eventuell Quellen posten?



  • Was für ein Arduino Board hast du denn?

    Da könnte es noch kleine Kontroller drauf geben die Spezialaufgaben (SPI,crypto,etc...) ausführen können

    die "Datenblätter" beschreiben wie die Kontroller zu initialisieren/programmieren sind um ihre Funktionalität zur Verfügung zu stellen

    Ich denke er meinte das


  • Mod

    Er meint, du sollst eine Geräteansteuerung schreiben. Wenn man möchte, dass der Controller etwas macht, dann geht das schließlich nicht dadurch, dass man irgendwie in den Computer schreibt "Bitte, bitte, lieber Microcontroller, könntest du bitte folgendes Programm laden und ausführen?". Stattdessen muss man diese Ideen über die Hardwarschnittstelle kommunizieren und dabei bestimmte Protokolle einhalten.



  • Er meint, du sollst eine Geräteansteuerung schreiben.

    Genau. Und nun würde ich mir dafür gerne die Grundlagen aneignen. Gibts es dafür schon fertige Tutorials?

    Welche Begriffe sollte ich denn in meine Suche aufnehmen?
    Brauche ich spezielle Hardware?

    Das Datenblatt für den Atmel-Controller habe ich schon. Das Datenblatt des Boards ebenfalls.


  • Mod

    Ich denke mal, dass es ein gewollter Teil der Aufgabe ist, solche Dinge herauszufinden. In Foren zu fragen ist natürlich keine falsche Vorgehensweise dabei. Mich wundert, dass du bei Google nichts finden konntest. Du weißt schon, dass du mit Deutsch nicht weit kommen wirst?

    Als Grundlage: Hast du wenigstens den Hauch einer Ahnung, wie ein Computer mit seiner Hardware "spricht"? Wenn du ein Programm schreibst, dass einen Pixel auf dem Bildschirm in einer bestimmten Farbe setzt, wie landet dies bei der Grafikkarte?

    Brauche ich spezielle Hardware?

    Natürlich nicht. Aber es könnte hilfreich sein, deine ersten Treiber für etwas zu programmieren, bei dem ein Fehler nicht gleich den ganzen Computer mit reißt. Ein Mircocontrollerboard scheint dafür durchaus geeignet. Ein schlechtes Versuchsobjekt wäre beispielsweise eine Grafikkarte.



  • Als gewollten Teil einer Aufgabe würde ich es nicht bezeichnen, da ich das komplett frewillig und aus Eigeninteresse tue.

    Aber zu den Themen:

    Googlen nach "Arduino driver programming" scheint nicht zielführend zu sein.
    Auch "atmel driver programming" ist nicht das was ich suche.

    Ganz grobes Verständnis für die Funktionsweise von Treibern habe ich, aber nur theoretischer Natur, was nun durch erste Praxiserfahrung ergänz werden soll.
    Englische Quellen stellen kein Problem dar.



  • Arduinos sind für Spielereien ziemlich nett und erlauben dir tatsächlich schnell dein Ziel zu erreichen. Leider werden dir bei Arduinos alle möglichen Details verborgen und es ist auch nicht so leicht, an diese Sachen dort ran zu kommen, während man bei richtigen Embedded Systemen Zugang dazu braucht.

    Das Problem beim direkten Lernen von den richtigen Embedded Systemen ist, dass sie sich in den Details sehr stark unterscheiden und es einfach keine guten allgemeinen Tutorials gibt, die dir alle Grundlagen beibringen können. Grundsätzlich musst du ein System beherrschen, damit du darüber andere Systeme verstehen kannst.

    Eines der "Besten" Tutorials, die ich in diesem Rahmen gefunden habe ist dieses http://www.diller-technologies.de/stm32_wide.html. Es baut nicht auf Arduinos auf, sondern auf STM32F4Discovery Evalboards, die recht günstig sind. Du musst dir nicht direkt so ein Board kaufen, aber wenn du dir die passende IDE (CooCox) mit Beispielprojekten für so ein Board und die Datenblätter für den Chip anschaust, dann kannst du sehen, was dort alles gemacht werden muss. Dort kannst du dir anschauen, was es für Takte in so einem Chip gibt, wie man Pins konfiguriert und anspricht, wie man mit dem Speicher umgeht und wie das System überhaupt startet.

    Du solltest dir aber sicher sein ob du wirklich da so tief einsteigen willst. Der Aufwand eine LED zum Leuchten zu bringen, wird schnell mehr als doppelt so groß (wie z.B. beim Arduino).



  • Hi,

    ich würde dir auch dazu raten weg von dem Arduino zu gehen, hin zum STM32Fx (von ST). Hol dir am besten wirklich einfach ein günstiges Discovery Board zum experimentieren.

    Wieso ich das empfehle: ST bringt ein Tool (kostenlos) mit, welches sich STM32CubeMX nennt. Das erlaubt dir die Peripherie und das Clocking erst mal zusammenzuklicken und erzeugt dir darauf basierend Quellcode, mit dem Du den µC erst mal zum laufen bekommen solltest. (Allein das ist nämlich schon nicht allzu einfach, vor allem wenn man sich nicht mit dem Thema auskennt). Ein weiterer Grund, das Manual von ST ist wirklich gut, und ein gutes Manual wirst Du als Anfänger brauchen...

    Anhand des Quellcodes von dem Tool kannst Du dann mal in Verbindung mit dem Handbuch Schritt für Schritt nachvollziehen welche Register wie geschrieben werden müssen um das Ding erst mal ans laufen zu bekommen.

    Wenn Du das verstanden hast, toggle doch einfach mal eine LED auf dem discovery Board, die peripherie dafür (Timer und GPIO) initialisiert Du am besten erst mal wieder mit dem Tool, prüfst dann den erzeugten Quellcode und kannst dann falls Du möchtest ja eine zweite LED komplett per Hand blinken lassen.

    Zu dem Zeitpunkt kannst Du auch gleich mal prüfen ob dein Clocking passt (idealerweise mit einem Oszilloskop).

    Und so kannst Du es dann Stück für Stück mit sämtlicher Peripherie machen die dich interessiert. Vielleicht als nächste Themen mal einen Analog Input lesen? Eine PWM um die LED Helligkeit zu steuern? Usw.usf... Embedded ist ein riesiges Themengebiet, plane eher mal Jahre als Monate Lehrzeit ein, wenn Du es im Detail verstehen und sicher anwenden können möchtest (vorausgesetzt, Du möchtest mehr als LEDs blinken lassen).

    PS: Es gibt von ARM das CMSIS und von ST eine Standard Peripheral Library. Beides sind Abstraktionsschichten welche einen das Leben wesentlich erleichtern können indem sie den Hardware-Zugriff kapseln. Ob man die nutzt oder nicht ist ein wenig Geschmackssache. Die Gefahr gerade für Anfänger: hier muss man nicht mehr zu viel über das Wesen eines µC und seiner Peripherie wissen um sich etwas basteln zu können. Abschauen welche Register wie genutzt werden, kann man sich hier aber jedenfalls so einiges.


Anmelden zum Antworten