ShieldBuddy TC275

drolli

Member
Hier habe ich mal einen neuen Thread geöffnet.
Ich spiele gerade ein bisschen mit dem ShieldBuddy. Aber irgendwie will mich das Ding ärgern :angry:
Vielleicht kann mir mal jemand auf die Sprünge helfen. Beim compilieren kommen folgende Fehlermeldungen:


Code:
sketchmower.cpp.o: In function `~Robot':

robot.h:165: error: undefined reference to `String::~String()'

robot.h:165: error: undefined reference to `String::~String()'

robot.h:165: error: undefined reference to `String::~String()'

sketchmower.cpp.o: In function `Mower':

mower.cpp:138: error: undefined reference to `String::operator=(char const*)'

mower.cpp:266: error: undefined reference to `String::operator=(char const*)'


VG
Reiner
 
Hi Reiner,

so wie ich das sehe fehlt der Destructor in der Klasse String und die Klasse String hat wohl auch keinen Zuweisungsoperator für char pointer. Die string.cpp gehört ja sicher zu deinem Projekt, sonst gabe es noch viele weitere undefinierte Referenzen..

1. kannst Du lösen indem Du den Destructor selbst implementierst:

String::~String() {}

Bei zweitens kannst Du mal prüfen ob Du mit einem cast weiter kommst. Möglicherweise gibt es den Operator in einer uchar oder ähnlichen variante. ShieldBuddy verwendet wohl seine eigenen Basisklassen, oder?

Grüße
Rajiva
 
Hi Rajiva,

die Jungs von Hitex haben eine ArduinoIDE so modifiziert, dass man damit auch den ShieldBuddy programmieren kann.
Bisher wurde da vermutlich nur "das nötigste" implementiert.
Also der Fehler "undefined reference to `String::~String()'" kommt noch häufiger. Auch ist die string.cpp nicht Teil des Projekts.
Ich habe mir mal das Installationsverzeichnis der IDE angeschaut:

Unter
%Installationspfad%/Arduino/hardware/arduino/avr/cores/arduino gibt es eine WString.cpp und eine WString.h

aber unter dem core pfad des Shieldbuddy...

%Installationspfad%/Arduino/hardware/aurduino/aurix/cores/aurduino gibt es nur eine WString.h mit fast gleichem Inhalt wie in der WString vom Arduino.

Irgendwie fehlt da was...und mir ein bisschen Grundlagenwissen :)

VG
Reiner
 
Hi Reiner,


Reiner schrieb:
Auch ist die string.cpp nicht Teil des Projekts.

string.cpp war nur geraten, hab jetzt mal geschaut und die Implementierung steckt in der wstring.cpp
Auch mein Vorschlag einen leeren Destructor zu definieren hätte zu einem Memoryleak geführt :woohoo: , richtig wäre:

String::~String()
{
free(buffer);
}

Schau mal ob Du sowas in der wstring.cpp der Portierung findest.


Irgendwie fehlt da was...

Wenn nur die Hälfte portiert worden ist oder vielleicht sogar noch mit anderem Ergebnis ist das immer so eine Sache. Da muss man dann schon tiefer einsteigen und kommt mit "Copy & Paste" nicht ans Ziel.

Mir steht diese Arbeit ja auch noch bevor da ich große Teile auf den RasPI portieren möchte. :huh:

VG
Rajiva
 
Zuletzt bearbeitet von einem Moderator:
Hallo Rajiva,

ich bin einen Schritt weiter :woohoo:
Es hat die WString.cpp gefehlt. Diese habe ich vom Original Arduino System kopiert.
Danach hagelte es neue Fehler: utoa, itoa usw. nicht referenziert.
Dann habe ich noch die stdlib_noniso.h und .cpp eingebunden.
Jetzt hat er es zumindest durchkompiliert und auf den uC geladen. Es passiert zwar noch nix, aber ich habe auch noch einiges auskommentiert.
Mal seh´n wie weit ich komme.

VG
Reiner
 
Hi Reiner,

super! Dann war ich mit meiner Vermutung der fehlenden *.cpp Datei ja nicht so falsch gelegen.
Viel Erfolg!

Grüße
Rajiva
 
Moin ShieldBuddy-Spezialisten,

Auf der Suche nach den arduinoIDE Add Ins finde ich nur ein exe-file. Installiert das die libraries unter windoof, die ich dann auf den mac ziehen kann oder habe ich was übersehen?

Danke für einen Hinweis.

Gruss und beste Wünsche für ein gesegnetes Weihnachtsfest und einen guten Start ins neue Jahr!!!

Peter
 
Hallo Peter,

"ShieldBuddy Spezialisten" :lol: :lol:
ich wurschtel mich da auch nur durch :whistle:


Also im Ordner

"Arduino/Libraries" sind Libraries abgelegt

und im Ordner

"Arduino/hardware/arduino/avr/libraries"

sind vermutlich Hardwarespezifische libraries abgelegt.


Beim ShieldBuddy gibts übrigens noch Probleme mit dem Compiler. Er mag zur Zeit keine Strings in den Klassendefinitionen.
Hitex ist da gerade dran...

Frohe Weihnachten und einen guten Rutsch auch von mir!
 
Danke Reiner,

Du gehst nicht direkt auf meine Frage ein, ich vermute aber, das mit dem Umweg über Windows ist korrekt? Ich finde die ShieldBuddy-spezifische Filestruktur nirgends direkt zum Download - nur dieses besagte Installer-exe.

Gruss und viel Erfolg...

Peter
 
Sorry Peter habe ich falsch verstanden.
Ich dachte Du willst die "normalen" Arduino Libs auf den Mac kopieren.

Für den ShieldBuddy müssen zusätzlich zu einer bestimmten ArduinoIDE zwei Programme installiert werden. Ich suche mal die Doku raus... ->
4269.GettingStarted.pdf


Das wird wahrscheinlich auf dem Mac nicht laufen

VG
Reiner
Attachment: https://forum.ardumower.de/data/media/kunena/attachments/3561/4269.GettingStarted.pdf/
 
Zuletzt bearbeitet von einem Moderator:
Naabend,
wollte mal einen kleinen Zwischenstand melden:

Serielle Konsole läuft. ADC läuft (zur Zeit zwar nur mit Arduino Standardbefehlen, aber läuft. Muss die Werte noch anpassen 12-Bit ADC).
Als Nächstes kommt die EEPROM emulation. Die muss ich vermutlich zu Fuss machen weil die EEPROM Library noch nicht unterstützt wird.
Dann veruche ich den ShieldBuddy mal auf die V1.2 Platine zu stecken um die PFOD App wieder zu aktivieren.


Code:
t=   258 L=49412 r=   8 v=1 ERR  odo    0    0 spd    0    0    0 sen 2717 2715 2745 bum    0    0 dro    0    0 son    0    0    0 yaw   0 pit   0 rol   0 per   1 bat 95.4 chg 94.9  9.4 imu  0 adc108


Man beachte "L=49412" loops pro Sekunde mit aktiviertem Perimeter und noch nicht optimiertem Code. D.h. zur Zeit läuft alles auf Core0.

VG
Reiner
 
Moin zusammen,

so, der Shieldbuddy hat auf der V1.2 Platz genommen :)

Nach anfäglichen Problemchen mit der IDE und mit der Anpassung von Hitex (u.a. Fehler in der String implementierung, in der Wire Library, bei den Seriellen Schnittstellen, itoa...) läuft es jetzt schon ganz gut:

[ul]
[li]PfodApp läuft[/li]
[li]Perimeter In/Out läuft[/li]
[li]Motoren laufen[/li]
[li]EEPROM Library wird innerhalb 2 Wochen von Hitex implementiert[/li]
[li]Odometrie kommt als nächstes (muss ich auf andere Pins legen)[/li]
[/ul]

Die Jungs von Hitex machen einen super Job. Kurz Problem ins Forum gestellt - nach max. 10 Min. eine Antwort. Sogar am Wochenende B)

bis demnächst
Reiner
 
Moin Reiner,

hast Du das Kraftpaket dann als single CPU laufen oder hast Du die IDE soweit, dass Du alle Prozessoren programmieren kannst?

Das läuft wahrscheinlich nur unter Windows, oder?

Weiterhin viel Erfolg!!!

Gruss

Peter
 
Hallo Peter,

ja, zur Zeit läuft alles auf CPU0. Wenn dort alles OK ist versuche ich einzelne Teile auf die anderen CPUs auszulagern.
Das ist in der IDE so gelöst, dass es setup() und loop() dreimal gibt. Also loop0(), loop1(), loop2() und setup0(), setup1() und setup2().
Ich muss dann mal schauen wie ich das synchronisiere...
Läuft glaube ich nur unter Windows, aber ich schau noch mal...

VG
Reiner
 
So, ODO läuft auch.
Nächste Woche wird die EEPROM Lib eingebaut. Dann gehts auf die Teststrecke :)

Auch mit ODO OneWay noch ca. 30000 loops/sek. CPU0 only.

VG
Reiner
 
Hallo Reiner,

meine Frau ist jetzt bestimmt sauer auf Doch. Du hast mich auf den Geschmack gebracht. Deine Erfolge bei der Portierung des Codes und den Möglichkeiten die sich hier ergeben sind echt toll. Ich will auch so einen.

Du hast geschrieben, dass der jetzt auf dem 1.2 PCB sitzt. Hast du da etwas umbauen müssen? Ich finde keine Angaben dazu, ob das Board nun mit 5V oder mit 3.3V operiert.

Ich denke, wenn man Dinge wie Perimeter Erkennung, Ultraschall etc auf verschiedene Prozessoren verteilt werden bestimmt einige Probleme gelöst.
 
Hallo Patrick,

das Ding läuft mit 5V. Ich habe bisher nur die Odometrie Leitungen auf andere Ports legen müssen, weil die die dafür eigentlich vorgesehen sind beim Shieldbuddy keine Interrupts auslösen können.

Ja, und ich habe einige Fehler in der Portierung von Hitex aufgedeckt B)
Aber die sind da ganz cool und für Wünsche offen.

VG
Reiner
 
Hallo Reiner,

Super - dann werde ich das jetzt auch probieren. Der Buddy wartet schon auf dem Schreibtisch :)
Mal sehen, ob ich Deine Änderungen und Anpassungen nachvollziehen kann ...

Bin gespannt auf die erste Schleifenfahrt!!!

Gruss

Peter
 
Hallo Peter,
Hallo Patrick,

ich habe die EEPROM Library soeben eingebunden. So wie es aussieht funzt es. Jetzt muss ich noch ein Paar "Schönheitsreparaturen" durchführen. Ein Paar Kleinigkeiten fehlen auch noch (der Buzzer buzzt noch nicht, beim ADCMan zeigts mir mal 108 und mal 72 Samples an... :huh: )

Ich versuche den Code die Tage mal hochzuladen.

VG
Reiner
 
Oben