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

Thema: Arduino IDE (Linux), DUE C++ Linken geht nicht

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
    So ein kleines Update: Mit platformio funktioniert das besser als mit der Arduino-IDE.

    Kurzanleitung:

    - platformio nach Anleitung installieren.

    - Kommandozeile öffnen und einmalig dies ausführen, damit die Tools für den Due installiert werden:
    platformio platforms install atmelsam

    - Ein Verzeichnis für das Projekt anlegen, hier als Beispiel DueCpp

    - Auf der Kommandozeile in das Verzeichnis wechseln und dort eingeben
    platformio init -b due
    Die erste Frage mit no, die zweite mit yes beantworten.

    Jetzt gibt es im Verzeichnis eine platformio.ini Datei, darin findet sich dieser Eintrag
    Code:
    [env:due]
    platform = atmelsam
    framework = arduino
    board = due
    der wird ergänzt zu
    Code:
    [env:due]
    platform = atmelsam
    framework = arduino
    board = due
    build_flags = -std=c++11
    Jetzt in das src Unterverzeichnis wechsel. Dort eine DueCpp.ino Datei für den Sketch anlegen.
    Hier zum Test mit diesem Inhalt, quasi ein mit C++11 gepimptes Blink
    Code:
    #include <string>
    
    int counter = 0;
    
    constexpr uint8_t led = 13;
    
    void setup() {
    	Serial.begin(9600);
    	
    	pinMode(led, OUTPUT);
    	digitalWrite(led, LOW);
    }
    
    auto switch_on = [](){ digitalWrite(led, HIGH); };
    auto switch_off = [](){ digitalWrite(led, LOW); };
    
    void loop() {	
    	std::string s("Test");
    	Serial.println(s.c_str());
    	
    	switch_on();
    	delay(1000);
    	switch_off();
    	delay(1000);
    }
    Jetzt wieder ins Projektverzeichnis wechsel und checken mit
    platformio run

    Wenn man keine Fehler hat, kann man es jetzt auf den Due schicken
    platformio run -t upload
    Normalerweise findet er den passenden COM-Port selber.

    That's it.
    Geändert von Mxt (13.06.2015 um 13:02 Uhr)

  2. #2
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    10.04.2005
    Ort
    Bad Aibling
    Beiträge
    212
    Das muss ich auch mal probieren was Du da beschrieben hast sieht gut aus.

    Ich habe mal angefangen mir unter Gentoo mit dem Paket Crossdev so einen Compiler plus Zubehör passend für den ARM Cortex-M3 zusammen zu bauen. Das hat auch funktioniert aber die Arduino Menschen machen zwar OpenSource aber so was von umständlich das es nicht leicht ist die Bibliothek ohne die IDE zu benutzen. Mir ist das dann auf die Nerven gegangen und ich hab mal beschlossen nur das Platinchen von Arduino (den DUE) zu benutzen und die Software von denen ganz weg zu lassen. Aber das will noch nicht funktionieren mir fehlt da noch ein bisschen Hardware wissen zu Cortex-M3. Wenn Du da eine gute Quelle kennst bin ich ganz Ohr ... und in der zwischen Zeit probiere ich mal Deinen Vorschlag der sieht auf alle Fälle nach weniger Arbeit aus und deshalb schon interessant.

    [Edit_1]
    Och ... bei mir Jammert wieder das Python Vieh rum.
    (Gentoo hat da im Moment die Version 3.3.5)

    File "get-platformio.py", line 118
    except Exception, e:
    ^
    SyntaxError: invalid syntax
    [/Edit_1]

    [Edit_2]
    Wenn man das Komma mit einem "as" ersetzt ist der Fehler Weg. Dafür bekomme ich dann die Fehlermeldung:
    Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-ho9_3h-build

    Leider haben die diversen Vorschläge zu beheben auf anderen Seiten nicht geholfen.
    [/Edit_2]
    Geändert von alexander_ro (15.06.2015 um 06:09 Uhr)

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

    also Python ist auch nicht so mein Ding und mit Gentoo hatte ich noch nie zu tun.

    Bei mir sind die ARM-Boards sowas wie intelligente IO-Interfaces am PC. Daher habe ich mir platformio angesehen, weil ich gerne aus meinen eigenen PC-Programmen Code generieren möchte, um die Controller umzuprogrammieren. Das ganze aber derzeit vorwiegend unter Visual Studio.

    Deswegen verwende ich eher Boards mit etwas high level C++ Programmierung, im Moment hauptsächlich mbed. Die bringen ja im Dezember ihr eigenes Python Tool zur offline Programmierung, dann brauche ich Platformio nur noch für Arduino.

    Hier mein derzeitiger Stand mit platformio auf verschiedenen Platformen:

    Windows 7 und 8: geht alles, schon seit Version 1.x

    Raspi 2, Raspian: Die Version 2.1.1 von platformio kann mit sudo python get-platformio.py installiert werden, es geht auch alles.

    Beaglebone Black, Debian 8 beta: Installation klappt wie beim Raspi. 8 Bit Arduino funktioniert. Bei allen 32-Bit Targets findet der GCC die libmpc nicht.

    Raspi 2, Arch Linux: Zuerst scons manuell installieren sudo pacman -S scons, platformio versucht das selber und baut Mist. Dann installieren mit sudo python2 get-platformio.py geht. Dann der gleiche Zustand wie bei Debian 8.

    Vielleicht hilft Dir das schon etwas weiter.

  4. #4
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    10.04.2005
    Ort
    Bad Aibling
    Beiträge
    212
    Die zwei machts ... ... python2

    Ich habe noch einen Zuhause herumsteh PC mit einem alten Debian da konnte ich es installieren. Bei der Gentoo Installation von python muss man die zwei anhängen vermutlich damit das dann die alte Python Version benutzt. Das Gentoo läuft auf meinem Notebook bei Debian sind die Pakete immer zu alt und bei Gentoo sind die Pakete immer zu neu ... Moderne EDV halt ... (Ende der Vernunft).

    [Edit]
    Hier "/usr/bin/scons" muss man auch die Zeile ändern: #! /usr/bin/env python2
    Dann läuft das Übersetzen und der Upload von Deinem Beispiel Programm oben.

    Mehr habe ich jetzt nicht probiert muss ich nun mal testen.
    [/Edit]
    Geändert von alexander_ro (15.06.2015 um 08:31 Uhr)

  5. #5
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    10.04.2005
    Ort
    Bad Aibling
    Beiträge
    212
    Danke für die Hilfe ... hier mein Testprogramm für ein Navilock Modul mit TTL 3,3 Volt Schnittstelle an dem Arduino DUE mit eins oder Null in der if Abfrage kann man umschalten zwischen alle NEMA Messages über USB zum PC leiten oder nur die VTG Msg und davon nur die Geschwindigkeit in Km/h. Wenn man alle NEMA Msg weiterleitet kann man auch die Ublox Software unter Windows benutzen.

    Die splitString Funktion steht unter der GPL die habe ich aus einem OpenSource Projekt kopiert. Der Rest ist ja sonst nicht wirklich was besonderes.

    Code:
    #include <string>
    #include <vector>
    
    void setup()
    {
      Serial.begin (115200);
      Serial1.begin (115200);
    }
    
    std::vector<std::string> splitString (const std::string& strString, char cTrenner = ',')
    {
      std::vector<std::string> vecValues;
    
      unsigned int iAnf = 0;
    
      for (;;)
      {
        unsigned int iPos = strString.find (cTrenner, iAnf);
    
        if (iPos != std::string::npos)
        {
          vecValues.push_back (std::move (strString.substr (iAnf, iPos - iAnf)));
          iAnf = iPos + 1;
        }
        else
        {
          if (iAnf < strString.size ())
            vecValues.push_back (std::move (strString.substr (iAnf, iPos - iAnf)));
          else
            vecValues.push_back (std::string (""));
          break;
        }
      }
    
      return vecValues;
    }
    
    void loop()
    {
    
    if (1)
    {
    // Lese die Msg vom Navimodul
      std::string strMsg = "";
      for (;;)
      {
        if (Serial1.available () > 0)
        {
          int iZeichen = Serial1.read ();
          if ((iZeichen != '\n') && (iZeichen != '\r'))
            strMsg.append (1, iZeichen);
          else
            break;
        }
      }
    
    // Msg zerlegen
      std::vector<std::string> vecMsg = splitString (strMsg);
    
    // NEMA Msg nach Wunsch verarbeiten.
      if (vecMsg[0] == "$GNVTG")
      {
      // Zum testen die ganze Msg augeben.
      //  for (auto&& strWert : vecMsg)
      //  {
      //    Serial.write (strWert.c_str ());
      //    Serial.write ("     ");
      //  }
    
      // Geschwindigkeit über Grund in Km/h.
        Serial.write ("Km/h: ");
        Serial.write (vecMsg[7].c_str ());
        Serial.write ('\n');
        Serial.write ('\r');
      }
    }
    else
    {
    // Daten unverändert weiterleiten
      if (Serial1.available () > 0)
      {
        Serial.write ((char) Serial1.read ());
      }
    }
    
    // Schreibe die Daten zum Navimodul
      if (Serial.available () > 0)
      {
        Serial1.write ((char) Serial.read ());
      }
    }

  6. #6
    Unregistriert
    Gast
    hallo,
    funktioniert der Due jetzt mit Linux und Python?

  7. #7
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    10.04.2005
    Ort
    Bad Aibling
    Beiträge
    212
    Phyton weiss ich nicht ... meine Frage war nach C++.

Ähnliche Themen

  1. Erfahrungen/Tutorial: Programmierung von Arduino Due + entspr. IDE?
    Von Ford Prefect im Forum Arduino -Plattform
    Antworten: 0
    Letzter Beitrag: 18.06.2014, 10:07
  2. Arduino IDE startet (schon wieder) nicht
    Von robo_tom_24 im Forum Arduino -Plattform
    Antworten: 0
    Letzter Beitrag: 27.11.2012, 21:56
  3. Arduino IDE startet nicht
    Von robo_tom_24 im Forum Arduino -Plattform
    Antworten: 11
    Letzter Beitrag: 01.10.2012, 14:54
  4. Antworten: 19
    Letzter Beitrag: 12.11.2011, 14:41
  5. RP6: Linux make geht nicht
    Von TedRobby im Forum Robby RP6
    Antworten: 7
    Letzter Beitrag: 12.08.2007, 18:50

Berechtigungen

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

LiFePO4 Speicher Test