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

Thema: Der Teensy 4.0 ist fertig

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
    Zitat Zitat von Ceos Beitrag anzeigen
    dann geht das ja trotzdem noch theoretisch *freu*
    Ja, für USB Eigenentwicklungen sind die Boards ziemlich gut. Man kann ja so ziemlich alles mit dem Controller machen, er hat ja keinen eigenen Bootloader, der sitzt in einem von den kleinen ICs. Selbst wenn man den USB total verproggt, kann man das Ding weiter programmieren.

  2. #2
    HaWe
    Gast
    ist teensythread auf dem 4.0 verfügbar, echt preemptiver scheduler, mit unterschiedlich konfigurierbaren thread prios (wie pthread/std::thread auf Pi oder std::thread auf ESP32) ?

  3. #3
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    04.09.2011
    Ort
    Hessen
    Beiträge
    707
    Zitat Zitat von HaWe Beitrag anzeigen
    ist teensythread auf dem 4.0 verfügbar, echt preemptiver scheduler, mit unterschiedlich konfigurierbaren thread prios (wie pthread/std::thread auf Pi oder std::thread auf ESP32) ?
    Da müsste man mal den 159-seitigen Betatest-Thread im Teensy Forum durchkämmen. Leider ist die Suchfunktion da nicht so nützlich.

    Alternativ im Verzeichnis nachschauen, wenn in Kürze die Teensy Software 1.47 kommt. Da sollte alles drin sein, was es bisher gibt. Meine Vermutung ist, dass TeensyThreads nur eine Anpassung der bisherigen Version ist. Ist das nicht kooperatives Multitasking ? Ich weiß, dass es die Lib gibt, benutzt habe ich die noch nicht.

  4. #4
    HaWe
    Gast
    Zitat Zitat von Mxt Beitrag anzeigen
    Da müsste man mal den 159-seitigen Betatest-Thread im Teensy Forum durchkämmen. Leider ist die Suchfunktion da nicht so nützlich.

    Alternativ im Verzeichnis nachschauen, wenn in Kürze die Teensy Software 1.47 kommt. Da sollte alles drin sein, was es bisher gibt. Meine Vermutung ist, dass TeensyThreads nur eine Anpassung der bisherigen Version ist. Ist das nicht kooperatives Multitasking ? Ich weiß, dass es die Lib gibt, benutzt habe ich die noch nicht.
    ich meine auch, dass es nur kooperatives MT ist, und läuft ja außerdem auch nur auf 1 core (ESP32: 2 cores).

  5. #5
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    04.09.2011
    Ort
    Hessen
    Beiträge
    707
    Auf einem Teensy kann auch viel über DMA erledigt werden, das läuft dann weitgehend unabhängig vom Prozessorkern. Manche Libs machen das intern, von manchen gibt es Varianten mit DMA, selber machen ist leider mit viel Lernaufwand verbunden.

    Um Dinge zyklisch mit hoher Priorität parallel zum normalen Programm abzuarbeiten, eignen sich auf dem Teensy vor allem die Timer, z.B. hiermit
    https://www.pjrc.com/teensy/td_timin...rvalTimer.html

    Hier ein paar Hintergründe zum Thema
    https://forum.pjrc.com/threads/28714...ll=1#post73823
    bezogen auf den 3.1, die größeren haben von manchen Timer Sorten ein paar mehr. Beim 4.0 sind wohl ein paar Unterschiede mehr, aber die wichtigen Libs sind darauf angepasst.

  6. #6
    HaWe
    Gast
    der Nachteil von Timern ist, dass sie üblicherweise nicht multiple langdauernde, ununterbrochene Operationen zulassen. Selbst kooperatives MT funktioniert nicht mehr, wenn einzelne Threads plötzlich in einer langen Berechnung (exemplarisch: fibonacci(43) rekursiv) hängen oder blockieren.
    Preemptives MT dagegen kann einfach die Zeitscheibe nach Sichern aller Variablen und Register etc unterbrechen und dann die nächste Zeitscheibe für den nächsten Prozess starten (round robin), auch wenn kein yield() drin war und die Berechnungen oder die Datenübertragung noch nicht fertig sind.
    Ein temporäres oder dauerhaftes Blockieren oder ununterbrochene Aktivitäten von einem oder auch mehreren Threads verhindern daher nicht die weitere Ausführung der übrigen Threads.
    Daher ist für mich ein preemptives MT unverzichtbar, wie es bei Raspberry Pi (C/pthread), ESP32 (C++/std::thread auf RTOS Basis, etwas eingeschränkt) oder Lego Mindstorms (RCX/NQC, NXT/NXC, EV3/C/pthread) möglich ist.

  7. #7
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    13.01.2014
    Beiträge
    454
    Blog-Einträge
    3
    Zitat Zitat von HaWe Beitrag anzeigen
    Daher ist für mich ein preemptives MT unverzichtbar, wie es bei Raspberry Pi (C/pthread), ESP32 (C++/std::thread auf RTOS Basis, etwas eingeschränkt) oder Lego Mindstorms (RCX/NQC, NXT/NXC, EV3/C/pthread) möglich ist.
    Anmerkung: Für den ESP32 ist eine Minimalimplementation von pthread verfügbar. Diese basiert auf FreeRTOS's Tasksystem. Std::thread, std::async etc. wiederum sind ein Abstraktionslayer basierend auf pthread (Quelle).

  8. #8
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    07.03.2011
    Beiträge
    1.899
    Zitat Zitat von HaWe Beitrag anzeigen
    der Nachteil von Timern ist, dass sie üblicherweise nicht multiple langdauernde, ununterbrochene Operationen zulassen. Selbst kooperatives MT funktioniert nicht mehr, wenn einzelne Threads plötzlich in einer langen Berechnung (exemplarisch: fibonacci(43) rekursiv) hängen oder blockieren.
    Das verstehe ich nicht. Wenn ich einen Timer verwende, löst der einen Interrupt aus, der selbstverständlich das laufende Programm unterbricht.

    Preemptives MT dagegen kann einfach die Zeitscheibe nach Sichern aller Variablen und Register etc unterbrechen und dann die nächste Zeitscheibe ...
    Das wird von einem Timer und seinem Interrupt gesteuert. Wie sollte sonst der Scheduler auf die nächste Task umschalten können?

    Die hardwarenahen Systeme, die ich so baue, haben alle entweder einen dediziert laufenden Timer mit Interrupt oder hängen an einem für die Hardware notwendigen Timer, z.B. dem PWM Timer eines Motors. Dazu kommen dann noch die Interrupte der übrigen Peripherie. Das gibt mir ausreichend Nebenläufigkeit, daß ich Threads und den dazu gehörenden Scheduler bisher nicht vermisst habe.

    Auch würde mir ein preemptives System gar nicht passen. Wenn ich schnell reagieren muß z.B. einen PID Regler vor dem nächsten PWM-Takt fertigrechnen oder ein CRC bevor das Transmit Register leer ist, darf mir kein Scheduler dazwischen funken. Und sollte einer meiner Interrupthandler hängen, hat meine SW einen grundlegenden Bug. Dann wird mein PID Regler nie richtig funktionieren oder das CRC nie richtig berechnet werden.

    Der Vergleich zwischen einem PI mit einem Multitasking System wie Linux/Unix (wo man in jeder Task natürlich auch noch mal lightweight Tasks aka Threads haben kann) und einem Teensy mit einerm Arduino Framework hinkt an allen Ecken und Kanten.

    MfG Klebwax
    Strom fließt auch durch krumme Drähte !

Ähnliche Themen

  1. STM32 contra ARM Cortex M3 (Arduino Due, Teensy): Performance per Arduino vs. nativ C
    Von HaWe im Forum ARM - 32-bit-Mikrocontroller-Architektur
    Antworten: 14
    Letzter Beitrag: 22.11.2017, 12:53
  2. Platinenlayout Problem mit Platinenlayout - Adapterplatine für den Teensy 3.1
    Von robonooby im Forum Konstruktion/CAD/3D-Druck/Sketchup und Platinenlayout Eagle & Fritzing u.a.
    Antworten: 9
    Letzter Beitrag: 29.06.2014, 16:09
  3. AU.ROB No2 ist fertig
    Von arnoa im Forum Vorstellungen+Bilder von fertigen Projekten/Bots
    Antworten: 7
    Letzter Beitrag: 01.01.2012, 19:35
  4. Hexapod aus Alu [fertig]
    Von yaro im Forum Vorstellung+Bilder+Ideen zu geplanten eigenen Projekten/Bots
    Antworten: 20
    Letzter Beitrag: 15.07.2010, 01:03
  5. Fertig machen oder fertig kaufen ?
    Von iBot im Forum Allgemeines zum Thema Roboter / Modellbau
    Antworten: 11
    Letzter Beitrag: 23.05.2008, 13:25

Berechtigungen

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

12V Akku bauen