Sketch ab Board auslesen?

rolfsaegesser

Erfahrener Benutzer
#1
Hallöchen zusammen
Habe das Multiwii Board MWC SE Lite. Dieses habe ich mit der 1.9er Software und bereits in der Y3 Konfiguration gekauft. Das Board scheint einwandfrei zu laufen. Aaaaber, YAW ist seitenverkehrt. Nun, dies kann man ja im Sketch ändern (Wert auf -1). Gibt es eine Möglichkeit, den Sketch ab dem Board in das Arduino Programm zu laden und zu bearbeiten? Hier im Forum finde ich immer nur Anleitungen, wie man die Software runterlädt, nach seinen Wünschen bearbeitet und dann auf das Board rüberlädt. Wenn man aber mit den Einstellungen, welche auf dem Board sind, zufrieden ist, man nur den einen Wert ändern möchte, muss man dann tatsächlich "von vorne" Anfangen mit Sketch anpassen und so?

Besten Dank für Eure Antworten

Gruss

Rolf
 

DerCamperHB

Erfahrener Benutzer
#2
Bisher hat noch keiner das Auslesen herausgefunden
Entweder das wird von dem Arduino Bootloader nicht Unterstützt, oder zumindest von der freien Programmiersoftware nicht behandelt
 

xnalpf

Krawallschachtel
#3
Nein. Das geht nicht. Natürlich könnte man den Programmspeicher des Atmels direkt über sein ISP Interface auslesen. Aber im Atmel liegt nur das compilierte Maschinencode-Programm vor. Was du machen willst ist aber den Quelltext (Sketch) verändern. Mit dem Maschinencode kannst du nix anfangen (sind nur Zahlen), mit dem Quellcode/Sketch kann der Atmel nix anfangen. Aus dem Quelltext macht wie gesagt ein Compiler den Maschinencode und mit dem Bootloader landet der dann im Atmel. (Könnte auch direkt per ISP geflashed werden) Würdest du den Maschinencode auslesen bräuchtest du das Gegenteil eines Compilers. Das nennt sich dann Disassembler und der macht dummerweise aus dem Maschinencode gerade noch so lesbaren Assemblercode. Und in diesem Assemblercode wirst du nichts wiederfinden weil Assembler von Arduino Sketches ungefähr so weit entfernt ist wie Neandertaler-Sprache von Hochdeutsch. Und mit den Bezeichnungen des Sketches hat der Assemblertext auch nix mehr zu tun denn diese Informationen gehen beim Compilieren verloren und können daher aus dem Maschinencode nicht wieder rekonstruiert werden.
 

rolfsaegesser

Erfahrener Benutzer
#4
ok, danke schön für eure Antworten. Habe nur irgendwie Angst, dass ich beim neuen Sketch konstruieren einiges falsch machen werde. Komme aber wohl nicht drum herum.
Danke nochmals.
 

xnalpf

Krawallschachtel
#6
Grandcaravan hat gesagt.:
Abend in die Runde :)

Das Thema hier behandelt doch dasselbe Problem, oder?

Programmierung Wiicopter auslesen und abändern
Jep. Ist genau das gleiche Thema. Und auch da stimmt die Aussage, dass man das Programm nicht auslesen kann nicht. Aber wie oben schon gesagt - der ausgelesene Maschinencode hlft halt nicht viel. Könnte man höchstens auf ein anderes Board flashen um ein vorhandenes Board zu "Klonen".
 

rolfsaegesser

Erfahrener Benutzer
#7
Ok, habs begriffen. Gibts eigentlich irgendwo im Netz sowas wie "Standardsketchs" für die verschiedenen Bauarten (Y3, Y6, Quadro + etc)? Das Board hab ich ja in einem Chinesenladen gekauft. Offenbar war bereits ein Sketch drauf, welcher für Y3 konfiguriert war. Allerdings habe ich gestern Abend festgestellt, dass der Sketch für mich so nicht brauchbar ist (entgegen meiner ersten Einschätzung), da werden die Motoren über den AUX2 Port scharf gemacht, ich brauche AUX2 allerdings für Camstab. Zudem ist YAW bei mir seitenverkehrt. Mich würde einfach interessieren, wie das aussieht, was der Chinese da programmiert hat. Weiss jemand, ob man diesen "Standardsketch", mit welchem die Boards in Tricopterconfiguration über die Ladentheke gehen, irgendwo runterladen kann?
 

heckmic

Erfahrener Benutzer
#8
Das mit dem "scharf machen" liegt doch nicht am Sketch... In der Gui kannst du Punkte setzen, was du mit welchem Schalter ansteuern willst. Läuft Yaw falsch rum, einfach im Code umderehen:


#define YAW_DIRECTION 1 // if you want to reverse the yaw correction direction
//#define YAW_DIRECTION -1

Hier gibt es den Standardsketch: http://code.google.com/p/multiwii/
 

rolfsaegesser

Erfahrener Benutzer
#9
Ja, ist schon klar, dass ich in der GUI Punkte setzen kann um Schalter anzusteuern. Das Interessante ist jedoch, dass ich für AUX2 gar keinen Punkt gesetzt habe......! Ich habe AUX2 lediglich mit dem Kanal mit dem Empfänger verbunden, mit welchem ich dann die Cam schwenken will. Als ich dann die Motoren scharf machen wollte (Gasknüppel zurück und nach links), ging gar nichts. Per Zufall habe ich dann mit dem Poti herumgespielt, mit welchem ich dann die Cam schwenken möchte und habe dabei festgestellt, dass die blaue LED auf dem Board an und ausgeht. Wenn die LED leuchtet kann ich einfach Gas geben und die Motoren laufen, ohne dass ich zuvor die Bewegung "nach hinten links" ausgeführt habe. Wenn ich das Poti dann zurückgedreht habe, dann konnte ich Gas geben wie ich wollte, die Motoren liefen nicht mehr an. Wie gesagt, in der GUI habe ich AUX2 nicht belegt, lediglich AUX1 um ACC ein- und auszuschalten (und das funzt absolut problemlos). Also, wenn ich AUX2 nicht in der GUI definiert habe um irgend eine Funktion aus- und einzuschalten, warum kann ich dann damit die Motoren scharf stellen? Meiner Meinung nach, weil dies im Sketch so definiert worden ist, oder?
 

xnalpf

Krawallschachtel
#11
Meine Meinung: Du versuchst krampfhaft und mit viel Arbeit eine vorhandene dir unbekannte Firmware an deine Bedürfnisse anzupassen. Das hat insbesondere langfristig den großen Nachteil, dass du irgendwann auf dieser ollen Firmware hängen bleibst und Updates/Verbesserungen nicht mehr nutzen kannst.
Mach dir lieber jetzt einmal die Arbeit, besorg dir das aktuelle Sketch und pass es an deine Bedürfnisse an. Danach weisst du genau, was du mit einem jungfräulichen Sketch zu tun hast um es anzupassen und du kannst jederzeit eine neue Version benutzen. Die Anpassungsmöglichkeiten sind wesentlich vielfältiger und du hast klare Gewissheit, was da eigentlich auf deinem Copter läuft.
Der Aufwand scheint mir für beide Ansätze ähnlich - das Ergebnis ist aber signifikant unterschiedlich.
Wie du dabei vorgehen solltest wurde in diesem und dem von Grandcaravan verlinkten Thread ja schon recht gut erklärt (Screenshot vom GUI etc.)
 

rolfsaegesser

Erfahrener Benutzer
#12
Nöö, auf Flächenflieger, ohne Mischer programmiert. Habe ein "junfräuliches" Programm genommen, also gar nix drauf. Nur die Servowege angepasst (so dass ich in der GUI auf 1000, resp 2000 komme) und die zusätzlichen Kanäle definiert (Schalter für AUX1, Poti für Cam schwenken und Schalter für Suchscheinwerfer ein/aus). Mehr hab ich nicht gemacht. Habe übrigens ne MX-16 HOTT.
Bei meinem Quadro, welchen ich mit einer AQ50d betreibe, habe ich dieselben Einstellungen gewählt. Auch dort macht man die Motoren scharf, indem man den linken Knüppel nach hinten links zieht.
 

rolfsaegesser

Erfahrener Benutzer
#13
@xnalpf
Jep, dafür habe ich mich heute morgen auch entschieden. Ich muss einfach mal von vorne anfangen und alles begreifen lernen. Ist vielleicht mit dem einen oder anderen Rückschlag verbunden, dafür weiss ich dann auch, wovon ich rede, weil ich weiss, wie man welche Veränderungen vornimmt.
 

DerCamperHB

Erfahrener Benutzer
#14
AUX2 geht aber nicht für Camera, wäre mir neu
Camera liegt nur im Summensignal auf Kanal 7 und 8, die Alternativ als AUX 3 und 4 Verwendet werden können, wenn keine CAMstab aktiv ist.
 

rolfsaegesser

Erfahrener Benutzer
#15
hmm, verstehe ich Dich richtig? Wenn ich die Funktion camstab will und gleichzeitig die Cam schwenken will, dann muss ich meine MX-16 HOTT auf Summensignal umstellen?
 
FPV1

Banggood

Oben Unten