- LiFePO4 Speicher Test         
Seite 1 von 4 123 ... LetzteLetzte
Ergebnis 1 bis 10 von 35

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

  1. #1
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    10.04.2005
    Ort
    Bad Aibling
    Beiträge
    212

    Arduino Due: FreeRTOS installieren und mit Platformio übersetzen

    Anzeige

    LiFePo4 Akku selber bauen - Video
    Hallo Mädels ... Jungs ...

    Ich versuche gerade FreeRTOS auf einem Arduino Due zum laufen zu bekommen. Bei mir Läuft die Entwicklungsumgebung auf einem Gentoo Linux. Bisher habe ich noch nie was mit FreeRTOS zu tun gehabt. Ich bin mir auch nicht sicher ob das Sinn macht dafür platformio zu benutzen oder ob man sich besser mit dem GCC selbst einen Cross Compiler baut.

    Bei Atmel habe ich das gefunden: http://ww1.microchip.com/downloads/e...te_AT04056.pdf

    Die Beschreiben aber nur (oh Wunder ) die Installation für Ihre eigenen Tools. Mir ist momentan irgendwie nicht klar wie man das am besten in so ein Platformio Projekt einbaut. Vielleicht kann mir da ja einer einen Tipp geben. Ich habe hier aber nur die Kommandozeilen Tools von Platformio installiert und nicht die IDE von denen.

    Viele Grüße
    Alexander

    <Edit>
    Man kann aber leider nur für die AVR Controller FreeRTOS so installiern: "platformio lib --storage-dir <Pfad_wo_FreeRTOS_gespeichert_werden_soll> install 507"
    Man muss dann nur aus dem Verzeichnis examples eins der Beispiel *.ino in das src Verzeichnis kopieren. Probeweises compilieren für den UNO hat funktioniert. Ich habe es aber nicht installiert und ausprobiert.
    </Edit>
    Geändert von alexander_ro (04.11.2017 um 08:48 Uhr)

  2. #2
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    04.09.2011
    Ort
    Hessen
    Beiträge
    707
    Hallo,

    soweit ich weiß verwendet Platformio nur ein g++ Paket für alle Cortex M Targets. Ich komme zwar kaum noch dazu was damit zu machen, aber ich kann bestätigen, dass für die Zielsysteme Arduino Due, mbed und Teensy nur einmal das gleiche g++ Paket installiert wird.

    Das führt zu gewissen Problemen mit dem Teensy, weil der in seinem eigenen Paket in der Arduino IDE den g++ 5.4 mit -std=gnu++14 verwendet. Als ich zuletzt was mit Platformio gemacht habe, war das noch auf g++ 4.9, der hatte so seine Probleme mit C++14.

    Deswegen würde ich mal vermuten, dass das mit FreeRTOS in Platformio für den Due so ähnlich gehen müsste, wie für die AVR. Es muss nur die 32 Bit Toolchain aufgerufen werden und der Quellcode muss kompatibel sein.

    Eventuell geht es aber auch ohne Platformio als normales Makefileprojekt. Wenn ich z.B. ein mbed RTOS Programm in der Online IDE erstelle, muss muss ich da nur einen Rechtsklick aufs Projekt machen und Export nach GCC anwählen. Dann bekomme ich ein zip-File zum Download, dass sich unter Debian mit dem dortigen g++-arm-none genauso übersetzen lässt, wie unter Windows mit installiertem ARM GCC, einfach make auf der Kommandozeile in dem entpackten zip aufrufen.

    Dass man da für FreeRTOS einen speziellen Compiler bauen muss glaube ich daher eher nicht, auch wenn ich nicht viel über FreeRTOS weiß.

  3. #3
    HaWe
    Gast
    Zitat Zitat von alexander_ro Beitrag anzeigen
    Hallo Mädels ... Jungs ...

    Ich versuche gerade FreeRTOS auf einem Arduino Due zum laufen zu bekommen. Bei mir Läuft die Entwicklungsumgebung auf einem Gentoo Linux. Bisher habe ich noch nie was mit FreeRTOS zu tun gehabt. Ich bin mir auch nicht sicher ob das Sinn macht dafür platformio zu benutzen oder ob man sich besser mit dem GCC selbst einen Cross Compiler baut.

    Bei Atmel habe ich das gefunden: http://ww1.microchip.com/downloads/e...te_AT04056.pdf

    Die Beschreiben aber nur (oh Wunder ) die Installation für Ihre eigenen Tools. Mir ist momentan irgendwie nicht klar wie man das am besten in so ein Platformio Projekt einbaut. Vielleicht kann mir da ja einer einen Tipp geben. Ich habe hier aber nur die Kommandozeilen Tools von Platformio installiert und nicht die IDE von denen.

    Viele Grüße
    Alexander

    <Edit>
    Man kann aber leider nur für die AVR Controller FreeRTOS so installiern: "platformio lib --storage-dir <Pfad_wo_FreeRTOS_gespeichert_werden_soll> install 507"
    Man muss dann nur aus dem Verzeichnis examples eins der Beispiel *.ino in das src Verzeichnis kopieren. Probeweises compilieren für den UNO hat funktioniert. Ich habe es aber nicht installiert und ausprobiert.
    </Edit>
    ich hatte vor einem 3/4 Jahr mal was für meinen Due gesucht, aber da gab es noch kein FreeRTOS für ARMs:

    Phillip Stevens
    Phillip Stevens
    a year ago

    Kurt,

    there are ports for FreeRTOS to ARM processors used in DUE and Teensy. But, it is unlikely that I will be able to support them.

    The DUE is pretty much EOL, and the specification for a replacement Arduino board is under consideration. Arduino seems to be heading down the Intel path, so that is an option which they are considering.

    The Teensy boards use Freescale K20 Cortex M4 devices.
    I haven't used any of these devices, but there is an interesting reference point from a Freescale developer.

    My next project is getting FreeRTOS running on the Z180 (Zilog Z80) architecture, with some ancient and modern peripheral interfaces.
    (https://create.arduino.cc/projecthub...arduino-ebc3cc)

    Ich konnte daher nur den Scheduler von C. Maglie nutzen, und die Arduino Entwickler verweigern sich neuer MT Libs, weil die bestehenden Cores und Libs nicht Thread-safe sind. Der Due wird eh nur extrem stiefmütterlich unterstützt und nicht weiter supportet, wie es aussieht (war ne Zeitlang ganz raus aus .cc, dann nur noch erwähnt in .org, jetzt nach der Fusion von .cc und .org wieder da, aber wohl nur aus "Vintage"-Gründen.

  4. #4
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    04.09.2011
    Ort
    Hessen
    Beiträge
    707
    Zitat Zitat von HaWe Beitrag anzeigen
    und die Arduino Entwickler verweigern sich neuer MT Libs,
    Leicht OT, aber um das Thema geht es auch hier
    https://forum.pjrc.com/threads/44723-Arduino-Events
    Das ganze ist mittlerweile in Teensyduino angekommen, eine richtige Doku gibt es aber noch nicht. Werde ich mir demnächst mal ansehen.

  5. #5
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    10.04.2005
    Ort
    Bad Aibling
    Beiträge
    212
    Den Eindruck das der Due bei seinen Erfindern nicht so recht gewollt ist hatte ich auch schon mal. Ich hatte den damals ausgewählt nach Speicher und Rechenleistung und dachte weil ja ein Arduino der auch so gut unterstützt wird wie die anderen. Ist aber leider nicht der Fall ... Von der Unterstützung her wäre der Mega denke ich die besser Entscheidung gewesen.

    @Mxt: Ich meinte jetzt nicht unbedingt einen spezielle Compiler sondern nur ob nun mit Platformio oder ohne?
    Bei meinem Gentoo ist es halt so das ich alles was ich installiere bauen muss weil es eine Sourcecode Distribution ist die halt nur minimale binär Pakete hat. Es gibt da aber ein Tool das heißt crossdev und macht fast die ganze Arbeit automatisch um die Cross Compiler Tools zu erstellen.

    Vielleicht versuche ich es mal mit der mbed Version. Ich muss sagen das habe ich mir noch nie angeschaut weil es mir unsympathisch ist auf fremden Rechnern zu Entwickeln. Versuchen kann man es aber immer mal. Bei dem Orginal Sourcecode ist mir nicht ganz klar wie man das Konfigurieren muss für den SAM3x8E der auf dem Due ja verbaut ist. Dort gibt es ja auch einige Beispiel Projekte aber eins das zu dem SAM3x8E richtig passt habe ich da nicht gefunden.

  6. #6
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    04.09.2011
    Ort
    Hessen
    Beiträge
    707
    Zitat Zitat von alexander_ro Beitrag anzeigen
    @Mxt: Ich meinte jetzt nicht unbedingt einen spezielle Compiler sondern nur ob nun mit Platformio oder ohne?
    Ok, meine Antwort bezog sich da auf das "Compiler bauen" in deiner Frage. Dann ist das "bauen" also nur das Gegenstück zum installieren auf dem anderen Systemen.

    Man müsste sich halt anschauen, wie das FreeRTOS für die AVR in Platformio gemacht ist. Ob es auch die Sourcen für andere Platformen enthält. Dann besteht da vielleicht eine Chance.

    Ansonsten steht ja hier unter supported Tools für Atmel auch GCC
    http://www.freertos.org/RTOS_ports.html
    Also sollte das auch irgendwo beschrieben sein.


    Zitat Zitat von alexander_ro Beitrag anzeigen
    Vielleicht versuche ich es mal mit der mbed Version. Ich muss sagen das habe ich mir noch nie angeschaut weil es mir unsympathisch ist auf fremden Rechnern zu Entwickeln.
    Muss man doch gar nicht. Platformio ist die eine Variante lokal zu übersetzen, aber mbed hat auch sowas selbst, auch in Python
    https://os.mbed.com/docs/v5.6/tools/mbed-cli.html

    mbed abstrahiert die Hardware auch ziemlich stark. Das hat auch so seine Nachteile. Dafür hat es Multithreading, Ethernet usw.

    Es gibt halt z.B. hier ein Board im Uno Format
    https://os.mbed.com/platforms/FRDM-K64F/
    das einen Controller verwendet, der sehr eng mit dem auf dem Teensy 3.5 verwandt ist (mbed hat MK64FN..., Teensy MK64FX..., unterscheiden sich hauptsächlich bei RAM und Flash). Wenn man da tiefer eintauchen will, hat man in mbed und Arduino immerhin die gleichen Prozessorregister als Basis ...
    Geändert von Mxt (04.11.2017 um 17:50 Uhr)

  7. #7
    HaWe
    Gast
    Zitat Zitat von Mxt Beitrag anzeigen
    Ok, meine Antwort bezog sich da auf das "Compiler bauen" in deiner Frage. Dann ist das "bauen" also nur das Gegenstück zum installieren auf dem anderen Systemen.

    Man müsste sich halt anschauen, wie das FreeRTOS für die AVR in Platformio gemacht ist. Ob es auch die Sourcen für andere Platformen enthält. Dann besteht da vielleicht eine Chance.

    Ansonsten steht ja hier unter supported Tools für Atmel auch GCC
    http://www.freertos.org/RTOS_ports.html
    Also sollte das auch irgendwo beschrieben sein.



    Muss man doch gar nicht. Platformio ist die eine Variante lokal zu übersetzen, aber mbed hat auch sowas selbst, auch in Python
    https://os.mbed.com/docs/v5.6/tools/mbed-cli.html

    mbed abstrahiert die Hardware auch ziemlich stark. Das hat auch so seine Nachteile. Dafür hat es Multithreading, Ethernet usw.

    Es gibt halt z.B. hier ein Board im Uno Format
    https://os.mbed.com/platforms/FRDM-K64F/
    das einen Controller verwendet, der sehr eng mit dem auf dem Teensy 3.5 verwandt ist (mbed hat MK64FN..., Teensy MK64FX..., unterscheiden sich hauptsächlich bei RAM und Flash). Wenn man da tiefer eintauchen will, hat man in mbed und Arduino immerhin die gleichen Prozessorregister als Basis ...
    nicht dass ich euch entmutigen will, aber was mich damals schon frustriert hatte, war
    a) ein SAM3X8E ist in http://www.freertos.org/a00090.html#ATMEL nicht gelistet, nur andere SAM3 Typen:
    AT91SAM3 ARM Cortex-M3 based microcontrollers

    Atmel SAM3S-EK2 and Atmel SAM3X-EK demo using Atmel Studio
    This page presents two projects that both run the same demo application. The first targets the SAM3S microcontroller on the SAM3S-EK2 evaluation board, and the second the SAM3X microcontroller on the SAM3X-EK evaluation board. Both are built and debugged using the free Atmel Studio IDE.

    Atmel SAM3U-EK demo using IAR
    The demo application presented on this page is pre-configured to execute on the official SAM3U-EK evaluation kit from Atmel. The demo uses the FreeRTOS IAR ARM Cortex-M3 port and can be compiled and debugged directly from the IAR Embedded Workbench for ARM.
    und
    b) die Hinweise auf einer anderen Seite https://create.arduino.cc/projecthub...arduino-ebc3cc, dass noch nicht einmal sehr ähnlich klingende ARM SAM Boards RTOS-kompatibel sind:
    Let's discuss why it won't work in this particular library. Because the Arduino IDE preconfigures all the hardware resources (Timers, Serial Ports, etc) in a MCU "under the covers" to make it easy for new programmers, there are few resources available to drive a RTOS without generating conflicts with Arduino Libraries, or causing important features to cease working. Luckily with AVR ATmega devices the Watchdog Timer was unused by the Arduino IDE, so I could use that to drive the RTOS System Tick, and the Watchdog Timer is configured identically across all ATmega devices.

    Also because no resources were re-purposed (borrowed from the Arduino IDE), there was no need to generate a separate core for the AVR version FreeRTOS library. It works with the standard Arduino core.

    To support other hardware within FreeRTOS it is necessary to have both a specific configuration for a hardware timer to generate System Tick interrupts, and a specific efficient Scheduler Interrupt to drive task switching. These two items depend strongly on the hardware, and mean that the implementation will be different for each implementation of the Cortex M0+ core. The Arduino Zero uses the SAMD21 but the Arduino MKR1000 uses the SAMW25. Whilst these are both Cortex M0+, the implementation for each one is different, because of the different features they provide.

    Cortex M0+ is a VLSI "library" which can be licenced from ARM. There is no requirement from vendors to implement it in exactly the same way for each device they produce. Unlike ATmega which is a proprietary implementation from one vendor (AVR), each vendor usually changes the implementation of the Cortex line of processors to suit their exact business requirements, which generally change from vendor to vendor, and even across the range provided by one vendor.

    So whilst someone might find it useful to support all of these different ARM based boards with an implementation of FreeRTOS, I find that most of my needs are covered by ONE AVR implementation which supports all of these Arduino boards; UNO, LEONARDO, YUN, PRO MINI, MICRO, ESPLORA, all of the Arduino Wearables lke LilyPad, MEGA 2560, Adafruit Feather, and all of the options that third parties produce for inexpensive clones.

    There are other timing solutions already available, that provide Threading (quite different from a RTOS in capabilities and features) which may suit simple requirements. These have been mentioned.

    Perhaps not the desired answer, but in reality the AVR ATmega based range of Arduino hardware essentially covers all the requirements of those interested in using the Arduino IDE. Beyond these basic projects, the limitations inherent in using the Arduino IDE outweigh the advantages.
    Trotzdem - oder gerade deswegen - interessiert mich sehr, ob die ARM-Portierungen nutzbar sind für den Due oder eben doch bzw. immer noch nicht.

  8. #8
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    10.04.2005
    Ort
    Bad Aibling
    Beiträge
    212
    @Mxt: Das mit mbed habe ich jetzt mal versucht. Die haben da verschiedene FreeRTOS Versionen im Angebot. Diese "freertos-cm3" habe ich jetzt mal als lib installiert. Allerdings habe die keine Beispiele mehr mit dabei. Also muss ich erst mal weiter lesen wie man da zumindest mal einen Task zum laufen bekommt damit ich das dann compilieren kann und schauen ob es läuft.

    @HaWe: Ob der Due nun weiter gebaut wird oder nicht ist sicher interessant aber ich habe zwei davon und will die so lange sie ausreichen für das was ich brauche auch verwenden.
    Sonst beschweren sich die doch nur das FreeRTOS nicht so recht mit den Arduino lib zusammen passen will. Das wäre mir jetzt eigentlich gleich weil die viel Hardware die der Due mitbringt nicht unterstützt. Wegen der auch erwähnten Atmel lib ist mir unklar. Wenn ich es richtig verstanden habe kann und darf man die auch außerhalb der Atmel IDE benutzen und auch mit eigenen Produkten weiter geben. Was einleuchtet Atmel verdient Geld mit den Prozessoren nicht mit der IDE. Also ich sehe so nicht wirklich einen Grund warum das nun nicht gehen soll.

    Ich bin mir aber trotzdem nicht mehr sicher ob sich der Aufwand lohnt nur um einige Tasks parallel auszuführen.

  9. #9
    HaWe
    Gast
    Zitat Zitat von alexander_ro Beitrag anzeigen
    @Mxt: Das mit mbed habe ich jetzt mal versucht. Die haben da verschiedene FreeRTOS Versionen im Angebot. Diese "freertos-cm3" habe ich jetzt mal als lib installiert. Allerdings habe die keine Beispiele mehr mit dabei. Also muss ich erst mal weiter lesen wie man da zumindest mal einen Task zum laufen bekommt damit ich das dann compilieren kann und schauen ob es läuft.

    @HaWe: Ob der Due nun weiter gebaut wird oder nicht ist sicher interessant aber ich habe zwei davon und will die so lange sie ausreichen für das was ich brauche auch verwenden.
    Sonst beschweren sich die doch nur das FreeRTOS nicht so recht mit den Arduino lib zusammen passen will. Das wäre mir jetzt eigentlich gleich weil die viel Hardware die der Due mitbringt nicht unterstützt. Wegen der auch erwähnten Atmel lib ist mir unklar. Wenn ich es richtig verstanden habe kann und darf man die auch außerhalb der Atmel IDE benutzen und auch mit eigenen Produkten weiter geben. Was einleuchtet Atmel verdient Geld mit den Prozessoren nicht mit der IDE. Also ich sehe so nicht wirklich einen Grund warum das nun nicht gehen soll.

    Ich bin mir aber trotzdem nicht mehr sicher ob sich der Aufwand lohnt nur um einige Tasks parallel auszuführen.
    verstehe ich jetzt nicht recht - du willst doch den Arduino Due mit der Arduino IDE und FreeRTOS zusammen benutzen, oder etwa nicht? Oder willst du etwa den Arduino Due ohne Arduino IDE nutzen, also auch ohne die ganzen sonstigen Arduino device und core driver libs?
    Immerhin schreibt ja der Autor der Arduino-RTOS Implementierung, dass er gerade nicht auch den Due supporten will, weil er ja wohl EOL ist (und auch noch nicht einmal andere SAM und SAMD cores) und das mit dem Due gilt sicher auch nicht für ihn allein.

    ps,
    und nur um mal ein paar Threads parallel auszuführen, brauchst du auch kein FreeRTOS, das geht mit dem Due Scheduler auch. Darf nur nicht so anspruchsvoll werden (müssen) wie bei POSIX pthread.

  10. #10
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    10.04.2005
    Ort
    Bad Aibling
    Beiträge
    212
    Nein ich will wie oben steht platformio benutzen. Da steht aber auch noch das ich mir nicht sicher bin ob man es nicht evtl. besser macht ohne die Tools. Sondern nur sich einen einfachen cross Compiler für diese CPU zusammenbaut und dann halt wie gewohnt mit Makefiles das Projekt baut. Ich bin mir auch nicht sicher ob man nicht mit den Sachen von Atmel besser kommt. Die scheinen die CPU sehr viel besser zu unterstützen als Arduino.
    Atmel: http://asf.atmel.com/docs/latest/sea...l?device=sam3x

    Ich glaub eher das der den Due halt als EOL sehen will weil er nicht den Aufwand betreiben will eine ARM CPU zu unterstützen. Es sind sicher einige der Due verkauft worden und die China Nachbauten wird man sicher auch noch lang bekommen als EOL sieht für mich anders aus. Ohne den Due gibt es halt bei den Arduino Platinchen nicht mehr viel das genug Rechnleistung und Speicher hat das man nicht nur das Problem lösen kann sondern auch noch Fehlertoleranz, Plausibilätsprüfungen und Diagnose einbauen kann.

    Der Due Scheduler hat halt ein bisschen Nachteile wenn mal ein Task hängt. Dann tut der nichts mehr und es ist auch keine Kommunikation mehr mit dem Platinchen möglich. Was es ungemein schwer macht dem User Nachrichten über das Problem zu kommen zu lassen. Mir ist schon klar das heutige Systeme wegen notorischem Geiz bei der Industrie nur als Blackbox gebaut werden und es oberstes Ziel ist die User im dunkeln Tappen zu lassen. Ich würde es gerne besser machen.

Seite 1 von 4 123 ... LetzteLetzte

Ä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
  •  

MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad