Benutzeroberfläche um .hex dateien zu erstellen gesucht

H

Haydar

Gast
Einen schönen Abend alle,

ich mache mich gerade das erste Mal daran mich mit dem Programmieren auseinander zu setzen.

Mir geht es darum ein Program zu finden, mit dem ich spezifische Parameter eines Controllers in einer visuellen Benutzeroberfläche eingeben kann.
Diese Parameter sollen wiederrum in eine .hex umgewandelt werden mit der ich dann den Controller flashen kann.

Im genauen geht es um den Controller eines E-Bikes(Fahrrad mit E-Motor).
Parameter sind:
Anlaufspannung, Geschwindigkeiten in verschiedenen Stufen, Deaktivierung bei Erreichen von spez. Geschwindigkeiten in den jeweiligen Stufen, Höchstgeschwindigkeit, Höchstspannung...
Das Ganze mit und ohne Abhängigkeit von Hallsensensoren welche u.U. in den Motoren eingebettet sind.

Den Hex-Editor um die Dateien sehen zu können hab ich, aber der Zahlensalat ist schon derbe.
Auch das Tool zum Auslesen und Flashen des Controllers besitze ich und hab schon tüchtig geflasht.

Ich weis jetzt wie ich die Cheksum ändere(Ändern der Faktoren per Hex-Editor),
aber die Auswirkungen der Änderungen erkenne ich nicht.

Kennt jemand eine möglichst kostenlose Software mit der ich sehen kann was ich da tue?
Oder vielleicht ein Programm mit der ich Parameter erstellen kann und so eine .hex erzeugen kann?

Hier ist mal so eine .hex als Beispiel per .txt
Anhang anzeigen chip inhalt alt.txt

Danke schonmal
 
Code:
1fc0: 43 5a 00 00 e7 d1 c5 f4 b3 cc 00 00 0b 01 01 00
1fd0: 00 00 29 29 8d 00 00 00 00 06 03 b2 00 00 03 67
1fe0: 00 00 00 00 00 00 00 00 00 00 00 00 ff 00 05 00
1ff0: 00 00 00 00 07 00 00 00 6a 00 00 00 00 00 01 01
Ohne Zusatzinfos ist das für jeden nur "Zahlensalat".

Beschreib doch mal wo Anlaufspannung, Geschwindigkeiten etc definiert sind, oder verlink auf eine Dokumentation.
Ebenso für die Checksummen-Berechnung.

Eine GUI (z.B in Java oder C#) dafür zu machen dürfte nicht schwer sein.
 
Das System sieht folgendermaßen aus:

Akku: 36V 9,5 - 10,5 Ah

Motor: Bürstenlose Drehstrommotoren in 3 Ausführungen 36V 250W Hallsensed, 36 V 250W Hallless, 36V 350W Hallless

Anlaufspannung dürfte bei ca. 10V liegen, wobei jedoch Spitzenströme von 60A möglich sind.

Geschwindigkeit: Je nach Anzahl der Stufen sollte eine flexible Einstellung möglich sein, Höchstgeschwindigkeit liegen bei 25km/h bzw 35km/h.

Der Zeitpunkt der Unterstützung sollte definierbar sein, ein Drehzahlsensor wird zur Ermittlung der Unterstützung genutzt. Der Sensor ist entweder ein Hallsensor mit 6 respektive 12 Sensorfeldern oder eine Bewegungssensor mit Lichtschranke.

Hier mal eine Benutzeroberfläche eines ähnlichen Progs.
Parameter_Designer.jpg


Zur Checksum: Ich denke ich hab da etwas missverstanden. Ich kann mit dem Hex-Editor Werte ändern und den Code ändern, wobei ich nicht weiß was ich da tue.
 
Zuletzt bearbeitet:
Ohne eine Dokumentation des Dateiformates nützt die ganze Spezifikation der Hardware nichts. Woher soll man wissen, wo welcher Parameter steht, welchen Datentyp man vorliegen hat, welche Werte zulässig sind, etc. Insofern ist es ganz schön mutig, dass Du "irgendwas" änderst und das dann einfach auf den Controller flasht.

Was die Checksumme betrifft, diese dient nur dazu, um bei z.B. der Übertragung von Daten sicherzustellen, dass "auf der anderen Seite" angekommen ist, was ursprünglich abgeschickt wurde.
 
Mit Mut hat das nicht viel zu tun.
Ich hab hier ein Paar Controller liegen die ich vorher auslese um den Code optisch zu vergleichen.
Ich versuche Unterschiede zu erkennen um Parameter eingrenzen zu können.
(leicht ist das nicht)
Problematisch ist die Sache auch nicht wirklich, ich denke nicht dass ich einen kaputt Flashe.
Versuch macht kluch
 
Haydar schrieb:
Das System sieht folgendermaßen aus:

Akku: 36V 9,5 - 10,5 Ah
...
Ohje .. ich hab mich wohl auch undeutlich ausgedrückt, ich meinte das Dateiformat.
Dein Screenshot zeigt wohl ein Programm das mit dieses "Hex-Files" arbeitet/dessen werte ändern kann ?
Also muss man im Prinzip nur einen Parameter ändern und dann mit der Orginal-Datei vergleichen wo sich etwas geändert hat. Mit Checksumme sind es Zwei Stellen. Aber wiederholt man das mit einem anderen Parameter und weiss spätestens dann wo die Checksumme ist.
Nachdem man alle Parameter durchprobiert hat, kennt man auch alle Positionen innerhalb der Datei. Dann gilt es noch die gültigen Werte/Bereiche für die einzelnen Parameter zu finden.
 
gibs denn zu dem controller kein datenblatt?
 
Systemhersteller: Fahrradkomponenten(Motor, Controller, Bedienungselement)
Microcontrollerhersteller: Controllerchip+Platine

@lynxx:
"ähnliches Programm". Das Bild zeigt ein Programm das mit .avs Dateien arbeitet, nicht mit .hex Dateien.
Genau da liegt auch mein Problem. Ich weis nicht mit welchem Programm der Hersteller der Systeme die Controller programmiert bzw die .hex erstellt.
Ich hab von der HP des Microcontrollerherstellers ein Programm um den Chip auszulesen und zu Flashen.
Der Hersteller der Systeme kauft die Platinen aber auch nur zu.

HP des MC Herstellers: http://www.cypress.com/?id=2492&source=header
Ich benutze den PSoC Programmer

Ich hab leider nur die .hex Dateien vom Controller und 2 .hex Dateien, die mir der Sytemhersteller zukommen hat lassen, zum Vergleich.
 
Zuletzt bearbeitet:
Ich denke ja ehr das die werte ganz normal gespeichert / programmiert und dann in hex code übersetzt. genauso gut könnte da auch oktal oder binär stehen.
man muss nur wissen was an welche position steht, bzw. welches byte was bewirkt.
 
Mercsen schrieb:
Ich denke ja ehr das die werte ganz normal gespeichert / programmiert und dann in hex code übersetzt. genauso gut könnte da auch oktal oder binär stehen.
man muss nur wissen was an welche position steht, bzw. welches byte was bewirkt.

Eben.
Die Hersteller vom Controller sind doch nicht dumm und laden eine Datei als String ein und interpretieren die Strings als Hex-Zahlen.
Die Dateien bestehen einfach aus Binärdaten, die lediglich von einem Editor als Hex-Werte gelesen werden. Genauso gut könnte der Editor diese auch als Dezimalwerten lesen.

Wenn man schon mit sowas rumhantiert, sollte schon wissen, wie Hexadezimalzahlen im Speicher abgebildet werden. Vier Bits stehen nämlich für eine Hexadezimalzahl.
Die Endung .hex wird gerne für einen "Hex Dump" benutzt und das ist ein Auszug aus einem Speicher. Wenn du also diese Dateien manipulieren willst, musst du wissen, an welcher Stelle deine gewünschten Daten stehen und wie diese auszusehen haben.
 
Ja, soweit war ich schon. Aber danke des erneuten Hinweises.


1. Zeile binär:

20202020202020202020202020202020202020202020202020202020
202020202020202020202020097C20303030303A2078782078782078
78207878207878207878207878207878207878207878207878207878
2078782078782078782078780D0A

Übersetzt in hex:
0000: xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx

Hab ich das richtig verstanden?


Ok, ich denke wir lassen das jetzt besser. Führt wohl doch zu keinem Ergebnis.

Danke euch Allen für eure Mühe und Gedanken.
 
Zuletzt bearbeitet:
Fällt dir am Wort Binär was auf?
Richtig! Binärdaten haben nur zwei Zustände. 1 und 0. Da kommen keine andere Zahlen oder Buchstaben vor.
 
Hm, ich hab jetzt gemeint damit wären 2 Stellen gemeint.
Danke für die Aufklärung.
 
Haydar schrieb:
1. Zeile binär:

20202020202020202020202020202020202020202020202020202020
202020202020202020202020097C20303030303A2078782078782078
78207878207878207878207878207878207878207878207878207878
2078782078782078782078780D0A

Übersetzt in hex:
0000: xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx

Hab ich das richtig verstanden?
Ja und nein .. 303030303A207878... = "0000: xx..."
aber das 0000: xx ist eigentlich schon die Hexadezimaldarstellung.
0000 ist der Offset und dann folgen die Bytes, aber scheinbar ist am Anfangs nichts, Du sollst es nicht sehen (evtl. das ROM), bzw ist unwichtig und wird deshalb nur als "xx xx xx xx..." anzeigt, erst am Ende ab Offset 1fc0 wird es interessant:
Code:
1fc0: 43 5a 00 00 e7 d1 c5 f4 b3 cc 00 00 0b 01 01 00
1fd0: 00 00 29 29 8d 00 00 00 00 06 03 b2 00 00 03 67
1fe0: 00 00 00 00 00 00 00 00 00 00 00 00 ff 00 05 00
1ff0: 00 00 00 00 07 00 00 00 6a 00 00 00 00 00 01 01
In diesen Zeilen müssen die Einstellungen sein, aber welches Byte was bedeutet .. Kein Schimmer.

Und einfach da herumzuprobieren kann böse enden, ich weiss das man bei manchen E-Bikes die maximale Spannung usw ändern kann, und dadurch auch mehr Leistung rausholen kann, aber man kann damit auch den Motor zerstören. In etwa so wie beim Übertakten einer CPU/Grafikkarte, wenn man dort die Spannung einfach beliebig hoch wählt ... BRUZZEL. :evillol:

Gut, gehen wir mal anders an die Sache, Du sagst der Chip ist der cyc24533 (warscheinlich nur der Flashtyp) benutzt Du das CY3253-BLDC Demonstration Kit, oder ein anderes Kit von Cypress ? Oder hast Du ein E-Bike eines anderen Herstellers und der PSoC Programmer funktioniert damit ?
Wer ist der Sytemhersteller des E-Bike ? Hat Dir der Sytemhersteller geraten den PSoC Programmer zu verwenden? Kannst Du mal die Dateien die der Sytemherstellerer geschickt hat als Datei anhängen?
 
Zurück
Oben