PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : "Negatives Flashen"



Andreas Bullmann
20.03.2013, 15:23
Hallo Leute,
ich hab da mal ne Frage:
Ich hab mit einem Kumpel zusammen ein Linienfolgeprogramm geschrieben.
Nun habe ich vergessen das Programm auf meinen USB Stick zu ziehen und mitzunehmen.
Der Kumpel sitzt gerade in Südspanien und genießt seine Ferien.

Deshalb jetzt meine Frage:

Gibt es eine Möglichkeit, mit dem USB Transceiver die .hex Datei vom Asuro auf den PC zu übertragen und diese dann wieder in einen Quelltext, den ich mir ansehen kann umzuwandeln?
Das Programm hat nämlich einwandfrei funktioniert. Das, das ich geschrieben sagt mir aber, dass LineData "too few arguments" hat. Egal was ich versuche der meckert mit mir rum oder führt nicht das Richtige aus.
Da ich aber noch nichts anderes auf den Asuro geflasht habe, hab ich gerade noch die Hoffnung, dass man das irgendwie noch vom Asuro abgreifen kann.
Immerhin hat der ja die .hex Datei für sich gespeichert. Und was gespeichert ist, sollte doch auch abrufbar sein, oder?

Mit verzweifelten Grüßen
Andreas

markusj
20.03.2013, 16:54
Hallo Andreas,


Gibt es eine Möglichkeit, mit dem USB Transceiver die .hex Datei vom Asuro auf den PC zu übertragen und diese dann wieder in einen Quelltext, den ich mir ansehen kann umzuwandeln?

Nein.


Das, das ich geschrieben sagt mir aber, dass LineData "too few arguments" hat. Egal was ich versuche der meckert mit mir rum oder führt nicht das Richtige aus.

Zeige doch Mal den Code, offenbar übergibst du einer Funktion weniger Parameter als diese gerne hätte.

mfG
Markus

Andreas Bullmann
20.03.2013, 18:53
Also ich hab daran nochmal rumgearbeitet bis mir der Compiler keinen Fehler mehr ausgespuckt hat, allerdings bin ich mir nicht sicher ob das funktionieren wird und will das jetzt auch nicht flashen, bevor ich nicht weiß, dass das funktionieren wird. Denn im Moment ist ja noch das Programm drauf das funktioniert. Da muss ich nur noch die Radien versuchen zu verbessern, aber da hab ich auch schon eine Idee.
Da wäre dann der Code von dem Programm, wie ich es im Moment habe:


# include <asuro.h>

void sleep_ms(int ms){
while(ms>0){
Sleep(72);
ms=ms--;
}
}

void rechts_daneben (void){
BackLED(OFF,ON);
MotorSpeed(0,120);
sleep_ms(1000);
//MotorSpeed (120,120);
BackLED(OFF,OFF);
}

void links_daneben (void){
BackLED(ON,OFF);
MotorSpeed(120,0);
sleep_ms(1000);
//MotorSpeed(120,120);
BackLED(OFF,OFF);
}

void main (void){
unsigned int data [2];
Init();
MotorDir(RWD,RWD);
MotorSpeed(120,120);
FrontLED(ON);
while(1){
LineData(data);
if (data[0]!=data[1]){
if (data[0]>data[1]){
rechts_daneben();
}
else /*(data[0]<data[1])*/{
links_daneben();
}
}
else{
MotorDir(RWD,RWD);
MotorSpeed(120,120);
BackLED(OFF,OFF);
}
LineData(data);
}
}

radbruch
20.03.2013, 20:03
Hallo

So kann ich das Fehler- und Warnungsfrei kompilieren:


# include <asuro.h>

void sleep_ms(int ms)
{
while(ms>0)
{
Sleep(72);
ms--;
}
}

void rechts_daneben (void)
{
BackLED(OFF,ON);
MotorSpeed(0,120);
sleep_ms(1000);
//MotorSpeed (120,120);
BackLED(OFF,OFF);
}

void links_daneben (void)
{
BackLED(ON,OFF);
MotorSpeed(120,0);
sleep_ms(1000);
//MotorSpeed(120,120);
BackLED(OFF,OFF);
}

int main (void)
{
unsigned int data [2];
Init();
MotorDir(RWD,RWD);
MotorSpeed(120,120);
FrontLED(ON);
while(1)
{
LineData(data);
if (data[0]!=data[1])
{
if (data[0]>data[1])
{
rechts_daneben();
}
else /*(data[0]<data[1])*/
{
links_daneben();
}
}
else
{
MotorDir(RWD,RWD);
MotorSpeed(120,120);
BackLED(OFF,OFF);
}
LineData(data);
}
}Änderungen:

Sleep(72);
ms--;

und

int main (void)

Das # include <asuro.h> funktioniert bei mir mit den <> nicht, ich brauche die "" (Libversion 2.3)

Gruß

mic

021aet04
20.03.2013, 20:48
Du kannst die Hex sichern bevor du das neue Programm flasht. Die Hex speicherst du dann und kannst es immer wieder flashen, wenn das andere Programm nicht funktioniert. Die Hex kannst du aber nicht in einen Quellcode wandeln.

MfG Hannes

markusj
20.03.2013, 21:05
Hannes: Dazu muss man das Hexfile aber haben ... und genau das war Teilproblem 1 ;)

@Andreas: Warum überschreibst du das Programm nicht einfach? Dein Kollege hat sicher noch die funktionierende Version, du kannst also an deinem Code selbst optimieren und nach dem Urlaub zeigt sich dann ob du den alten Quelltext überhaupt noch brauchst ...

mfG
Markus

PS: Versionsverwaltungssysteme (git + github!) sind was feines ...

robo_tom_24
20.03.2013, 21:50
<klugschei* ein>
Genau genommen könnte er schon aus ner hex Datei Programmcode machen - rückassemblieren nennt sich das ganze. Es kommt dann aber keine C Sprache raus sondern "lesbare" Maschinensprache, eine Art Assembler ;)
<\klugschei* aus>

praktisch findet dass in deinem Fall leider keine Anwendung ;)

grüße

Andreas Bullmann
21.03.2013, 00:40
<klugschei* ein>
Genau genommen könnte er schon aus ner hex Datei Programmcode machen - rückassemblieren nennt sich das ganze. Es kommt dann aber keine C Sprache raus sondern "lesbare" Maschinensprache, eine Art Assembler ;)
<\klugschei* aus>


heißt das nicht:
# include <klugschei*.h>

void besserwisser (void){
Init();
while(1){
weiß alles besser (/*x*/ 1000)
}
}

??? :D

Nee jetzt mal im Ernst, danke für die echt netten und guten Tipps!!!!!

021aet04
21.03.2013, 17:30
@markusj
Die Hex Datei hat er ja. Die befindet sich am Asuro, den man auslesen kann. Nur das umwandeln in einen Quellcode funktioniert nicht.

MfG Hannes

Valen
21.03.2013, 18:20
Naja, wie lange ist dein Freund den mit Ferien? Oder ist das ein Quasi-Emigration? Hat dein freund seine Rechner worauf das Hex steht mit genommen auf Ferien? (Hint: Email anhang) Oder steht es immer noch in seiner Hause?

Ich vermute das soll nur ein Beispiel von Geduld werden. Oder ein Lern-Periode wo du die Lösung wider von Anfang an Erfinden mag.

markusj
21.03.2013, 20:39
Die befindet sich am Asuro, den man auslesen kann.

Kann man, oder zumindest er, nicht. Der Bootloader bietet keine Funktion um ein Flash-Image vom ASURO herunterzuladen. Und die Lockbits sind ab Werk auch gesetzt. Selbst wenn er also einen ISP hätte, käme er nicht mehr an die Daten ran.

mfG
Markus

021aet04
21.03.2013, 21:48
Ok das wusste ich nicht.

MfG Hannes