- 3D-Druck Einstieg und Tipps         
Ergebnis 1 bis 10 von 35

Thema: Arduino Due: FreeRTOS installieren und mit Platformio übersetzen

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    04.09.2011
    Ort
    Hessen
    Beiträge
    707
    Hallo,

    eventuell wäre mal ein Blick ins Buch
    "Definitive Guide to ARM Cortex-M3 and Cortex-M4 Processors"
    für dich hilfreich. Da steht zumindest über die Sachen, die die Cortex-M alle gemeinsam haben, ziemlich viel drin.

    Außerdem möchte ich noch auf einen anderen Ansatz als Scheduler oder Timer hinweisen. Wieder zuerst ein Buchhinweis
    "Practical UML Statecharts in C/C++: Event-Driven Programming for Embedded Systems"
    und ein paar Links
    http://playground.arduino.cc/Code/QP
    https://en.wikipedia.org/wiki/QP_(framework)
    https://www.state-machine.com/

    (Ja, ich habe das Buch. Nein, ich arbeite nicht regelmässig mit dem Framework. Allerdings sind meine Programme sicher etwas vom Buch inspiriert.)

  2. #2
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    10.04.2005
    Ort
    Bad Aibling
    Beiträge
    212
    Wenn ich das aber richtig gelesen habe unterstützen die bei QP den SAM3X8E auch nicht direkt.

    Die Bücher kenne ich zwar (vom Namen) habe die aber nicht. Danke für die Links die habe ich mal angeschaut aber wenn ich das dann erst für die CPU portieren muss wird das auch nicht einfacher.

    Man kann die Timer auch als Event verstehen dann ist man davon nicht so weit entfernt. Wenn die aber keine Instanz haben die den Programmfluss unterbrechen und an anderer stelle fortsetzen kann (Task wechsel) sind die genaus weit wie die kooperativen Scheduler. Hängt eine Event Behandlung steht das ganze System das ist extrem Fehleranfällig und auch lästig.

  3. #3
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    04.09.2011
    Ort
    Hessen
    Beiträge
    707
    QP gibt es in verschiedenen Ausprägungen. Ein Teil davon muss nicht irgendeine Hardware direkt unterstützen. Die Beispiele im Buch bauen bewusst auf DOS auf, wo es weder Multitasking noch Timer gibt. Beides ist bei QP nur optional.

    Das Buch gibt es mittlerweile hier als PDF umsonst, die Lektüre würde ich ganz allgemein zum Thema empfehlen.
    https://www.state-machine.com/psicc2/

  4. #4
    HaWe
    Gast
    Zitat Zitat von alexander_ro Beitrag anzeigen
    Wenn ich das aber richtig gelesen habe unterstützen die bei QP den SAM3X8E auch nicht direkt.

    Die Bücher kenne ich zwar (vom Namen) habe die aber nicht. Danke für die Links die habe ich mal angeschaut aber wenn ich das dann erst für die CPU portieren muss wird das auch nicht einfacher.

    Man kann die Timer auch als Event verstehen dann ist man davon nicht so weit entfernt. Wenn die aber keine Instanz haben die den Programmfluss unterbrechen und an anderer stelle fortsetzen kann (Task wechsel) sind die genaus weit wie die kooperativen Scheduler. Hängt eine Event Behandlung steht das ganze System das ist extrem Fehleranfällig und auch lästig.
    Die einzige sinnvolle Methode IMO wäre, pthread in abgespeckter Form auf Arduino zu portieren, das ist ja plattformunabhängig.
    Oder man wechselt zu Java (*würg*) , da ist preemptives MT ja immerhin mit drin, und die JIT compiler (wenn für Arduino/ARM verfügbar) sind wirklich fast genau so schnell wie C executables.

    - - - Aktualisiert - - -

    ps,
    nicht probiert zwar, aber als Links bei mir archiviert:
    preempt. MT für Arduino Due, Zero:
    http://forum.arduino.cc/index.php?topic=318084.0
    http://francois.pessaux.perso.sfr.fr/arduino.html#Babix edit: expired
    Geändert von HaWe (08.11.2017 um 09:51 Uhr)

  5. #5

  6. #6
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    10.04.2005
    Ort
    Bad Aibling
    Beiträge
    212
    Hier gibts das noch: http://perso.ensta-paristech.fr/~pes...s/arduino.html
    (Ganz unten ist das Babix und da kann man Doku und Sourcecode herunterladen.)

    Sieht auf den ersten Blick interessant aus muss ich aber noch genauer ansehen. Vielleicht finde ich da wie man das macht mit dem Speichern der Prozessdaten und dem wieder zurückspringen.

    Nein Java wollen wir hier nicht ist ja gruselig ...
    pthread muss man dazu nicht erst mal Prozesse haben. Ich dachte immer ein Thread ist ein Teil eines Prozesses. Vermutlich gibt es die beim Arduino nicht weil man da die Unterstützung des Betriebssystems braucht und die gibts ja hier nicht.

  7. #7
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    04.09.2011
    Ort
    Hessen
    Beiträge
    707
    Zitat Zitat von alexander_ro Beitrag anzeigen
    Hier gibts das noch: http://perso.ensta-paristech.fr/~pes...s/arduino.html
    Nein Java wollen wir hier nicht ist ja gruselig ...
    Hurra, wir sind uns einig.

    Zitat Zitat von alexander_ro Beitrag anzeigen
    pthread muss man dazu nicht erst mal Prozesse haben. Ich dachte immer ein Thread ist ein Teil eines Prozesses. Vermutlich gibt es die beim Arduino nicht weil man da die Unterstützung des Betriebssystems braucht und die gibts ja hier nicht.
    Das sehe ich auch so, lasse mich aber gern vom Gegenteil überzeugen.

    Was es gibt ist std::thread Unterstützung für C++, wie hier, noch etwas experimentell, für den Teensy
    https://github.com/ftrias/TeensyThreads

  8. #8
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    10.04.2005
    Ort
    Bad Aibling
    Beiträge
    212
    Ich habe mir jetzt mal das Babix näher angeschaut ist aber nicht so einfach das was ich davon brauche heraus zu lesen.

    Man kann vermutlich schon so tun als ob das Programm das auf dem Controller läuft ein Prozess ist und lässt dann innerhalb von diesem die Threads laufen.

    Damit ich schon mal unabhängig von dem was mit dem Babix herauskommt an meiner Anwendung ein bisschen weiter Programmieren kann habe ich da mal den Due Scheduler benutzt. Der verteilt ja nur Rechenzeit an andere Funktionen wenn man in der Hauptschleife (loop) die Funktion delay aufruft. Das war mit zuerst entgangen und daher hat er nicht funktionieren wollen.

    Hat von euch eigentlich jemand Erfahrung damit den Linux Kernel auf so Controllern zu verwenden. Der soll ja eigentlich auf deutlich kleinerem als so Raspi oder Gnublin auch noch laufen können?

Ähnliche Themen

  1. arduino atmega2560 & atom & platformio & ubuntu
    Von inka im Forum Arduino -Plattform
    Antworten: 0
    Letzter Beitrag: 13.08.2017, 09:26
  2. Antworten: 1
    Letzter Beitrag: 12.06.2015, 14:50
  3. Projekt: FreeRTos auf RP6
    Von RolfD im Forum Robby RP6
    Antworten: 14
    Letzter Beitrag: 18.12.2012, 12:05
  4. FreeRTos auf RP6?
    Von RolfD im Forum Robby RP6
    Antworten: 11
    Letzter Beitrag: 29.07.2012, 22:58
  5. freeRTOS.org
    Von Superhirn im Forum C - Programmierung (GCC u.a.)
    Antworten: 2
    Letzter Beitrag: 24.11.2006, 19:07

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Solar Speicher und Akkus Tests