mikrocontroller.net

Forum: PC Hard- und Software Intel Hex Format Dateien bearbeiten


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
Autor: A. F. (artur-f) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Leute,
ich suche ich eine Software mit der ich die HEX Files vom 
Mikrocontroller ändern kann und die Checksumme automatisch berechnet 
wird. Mir geht es darum, Kalibrationsdaten die via Linker-File auf 
bestimmten Sektoren des uC's  abgelegt werden, direkt im HEX File zu 
ändern. Dabi soll di Checksumme automatisch neu berechnet werden...

Kenn Ihr solche Tools? Alles was ich finde, sind eher die HEX Editoren 
für binäre Dateien.

Autor: Niklas G. (erlkoenig) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Im Zweifelsfall: Mit objcopy nach bin konvertieren, mit Hex-Editor 
bearbeiten und zurück-konvertieren. Klappt aber nicht gut wenn man 
Lücken im Adressraum hat.

Autor: Le X. (lex_91)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Python hat eine m.M.n. sehr mächtige Lib ("IntelHex") für das Öffnen, 
Bearbeiten und Abspeichern von Intel-Hex.

Ein Skript was dir ein paar Bytes ändert, anschließend eine Checksumme 
über einen bestimmten Speicherbereich errechnet und diese dann noch 
ablegt sollte in wenigen Zeilen machbar sein.
Wir benutzen das hier für einen genau solchen Postbuild-Hook.


Ob es sowas von der Stange für genau deinen Fall gibt würd ich 
bezweifeln.

: Bearbeitet durch User
Autor: A. F. (artur-f) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Le X. schrieb:
> Python hat eine m.M.n. sehr mächtige Lib ("IntelHex") für das Öffnen,
> Bearbeiten und Abspeichern von Intel-Hex.
>
> Ein Skript was dir ein paar Bytes ändert, anschließend eine Checksumme
> über einen bestimmten Speicherbereich errechnet und diese dann noch
> ablegt sollte in wenigen Zeilen machbar sein.
> Wir benutzen das hier für einen genau solchen Postbuild-Hook.
>
>
> Ob es sowas von der Stange für genau deinen Fall gibt würd ich
> bezweifeln.

Python kann ich nicht, ein Script was sowas machen könnte, würde ich in 
C# hinbekommen, mir geht es aber darum, ob solche Tools existieren?
Es soll auch für Kollegen machbar sein, eine HEX Datei bearbeiten zu 
können, mit der der uC beschrieben wird.

Autor: Georg (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
A. F. schrieb:
> Kenn Ihr solche Tools?

Bei meinen Programmern ist Software dabei, die Hexdateien auch wieder 
ausgibt. Ich fürchte nur dass die ohne den Programmer nicht läuft, 
obwohl das ja nur im Speicher stattfindet.

Georg

Autor: michael_ (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jeder Programmer kann das umwandeln.
Man braucht nicht mal den Programmer selbst dazu.

Problem wird sein, wie deine Prüfsumme berechnet wird.
Da gibt es viele Möglichkeiten.

Autor: Thomas O. (kosmos)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
bisher gebe ich die einzelnen Zeilen immer in einen Online Rechner ein. 
Würde auch gerne ne Lösung für den Notepad++ Editor haben, der markiert 
bei einer Änderung zwar die falsche Checksumme farblich, eine 
Korrekturfunktion gibts aber anscheinend nicht.

Autor: A. F. (artur-f) Benutzerseite
Datum:
Angehängte Dateien:

Bewertung
1 lesenswert
nicht lesenswert
Ich mach das jetzt in C#, habe jetzt auf die Schnelle schon was 
zusammengebastelt. Muss die Anzeige nur bisschen ordentlicher 
gestallten.
Vielleicht baue ich noch gleich die command line programmierung des 
STM32 mit ein. Mein highlighter trödelt leider ein wenig. Ein 80kB STM32 
File, wird 4 Sekunden lang eingelesen...

Autor: Kai B. (kaib) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich stand vor 2-3 Jahren auch vor einer ähnlichen Problematik(Signatur 
über den Applikationbereich hinzufügen, CRC Prüfsummen für einen 
Flashheader berechnen) und wollte das Rad nicht neu erfinden.
Dabei fand ich folgendes Tool welches extrem mächtig ist. 
srecord.sourceforge.net

Kann neben Konvertieren in diverse Formate auch Heraustrennen/ Auffüllen 
und div. Prüfsummen rechnen.

Habe für meine Zwecke mit diversen Zwischendateien gearbeitet und 
hinterher alles wieder zu einer Datei zusammen gebaut.

Also auf jeden Fall einen Blick wert.

Autor: Le X. (lex_91)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
A. F. schrieb:
> Ich mach das jetzt in C#, habe jetzt auf die Schnelle schon was
> zusammengebastelt.

Ach, jetzt verstehe ich.
Es ging dir gar nicht darum eine Checksumme über einen bestimmten 
Speicherbereich zu berechnen sondern dir geht es um die im 
Intel-Hex-Format spezifizierte Prüfsumme am Ende jeder Zeile?

Autor: Georg (Gast)
Datum:

Bewertung
-1 lesenswert
nicht lesenswert
Früher war das ein verbreitetes Problem, dafür gibt es Uralt-Software:

http://www.keil.com/download/docs/113.asp

Georg

Autor: guest (Gast)
Datum:

Bewertung
1 lesenswert
nicht lesenswert
Georg schrieb:
> Früher war das ein verbreitetes Problem, dafür gibt es Uralt-Software:
>
> http://www.keil.com/download/docs/113.asp
>
> Georg

Er will das File nicht konvertieren sondern editieren!
Und auch für alte Probleme gibt es u.U. aktuelle Software, in dem Fall 
z.B. SRecord.

Autor: Bernd K. (prof7bit)
Datum:

Bewertung
-1 lesenswert
nicht lesenswert
A. F. schrieb:
> Python kann ich nicht, ein Script was sowas machen könnte, würde ich in
> C# hinbekommen, mir geht es aber darum, ob solche Tools existieren?
> Es soll auch für Kollegen machbar sein, eine HEX Datei bearbeiten zu
> können, mit der der uC beschrieben wird.

Das kapier ich nicht,

Du schreibst daß Du das problemlos programmieren kannst, dann mach es 
doch. Die Kollegen benutzen dann Dein Programm um die Kalibrierwerte 
einzugeben und dann klicken sie auf den "Flash"-Button und dann geht 
alles automatisch. Wenn Du programmieren kannst dann kannst Du das so 
idiotensicher machen daß es ein trainierter Schimpanse bedienen kann. Wo 
ist das Problem?

: Bearbeitet durch User
Autor: NichtWichtig (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dann wäre da noch SRecord

Links:
  http://srecord.sourceforge.net/

Autor: Georg (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
guest schrieb:
> Er will das File nicht konvertieren sondern editieren!

Editieren kann man das mit unzähligen Programmen, sein Problem ist die 
editierten Daten mit den richtigen Prüfsummen wieder auszugeben.

Georg

Autor: michael_ (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mit HEXED kann man das komfortabel machen.
Da gibt es auch eine Prüfsumme.

Aber ob es die Methode des TO ist???

Autor: abc. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hmm, bei Autosar-Code funktioniert CDM-Studio nicht schlecht 
duckundweg

Autor: Weg mit dem Troll ! Aber subito (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was fuer ein Quatsch ist das nun ? Heutzutage kann der Prozessor selbst 
unter Programmkontrolle ins Flasch oder ins EEPROM schreiben. Also ich 
mach das zB so, um Konfigurationswerte zu speichern...

Autor: Route 6. (route_66)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!
Für das editieren von INTEL-HEX-Dateien ist das Programm HxD sehr gut 
geeignet. Es berechnet selbstverständlich nach jeder Änderung die 
Zeilen- und Gesamtprüfsumme neu.

https://mh-nexus.de/de/hxd/

Autor: Peter Z. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die Galep Software kann das.

Autor: Nop (Gast)
Datum:

Bewertung
-1 lesenswert
nicht lesenswert
Srecord funktioniert allenfalls unter Linux. Die Autoren sind in recht 
pubertärem Humor auch noch stolz drauf, daß sie es geschafft haben, ein 
solch vergleichsweise simples Tool nicht-portabel hinzukriegen. Unter 
Cygwin läßt es sich auch nicht bauen.

Ich hab mir dann lieber für meinen use case ein Hextool selber 
geschrieben, was schneller ging, als mich mit Srecord herumzuplagen.

Autor: Bernd K. (prof7bit)
Datum:

Bewertung
-1 lesenswert
nicht lesenswert
Nop schrieb:
> Srecord funktioniert allenfalls unter Linux. Die Autoren sind in recht
> pubertärem Humor auch noch stolz drauf, daß sie es geschafft haben, ein
> solch vergleichsweise simples Tool nicht-portabel hinzukriegen. Unter
> Cygwin läßt es sich auch nicht bauen.

Was laberst Du für einen Unsinn?

   "SRecord runs on almost any flavor of UNIX. The source distribution 
is self configuring using a GNU Autoconf generated configure script.

    SRecord also runs on Windows. You can build SRecord for Windows 
using Cygwin or DJGPP, see the Windows page."

: Bearbeitet durch User
Autor: Nop (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bernd K. schrieb:

> Was laberst Du für einen Unsinn?

Bla.

>     SRecord also runs on Windows. You can build SRecord for Windows
> using Cygwin or DJGPP, see the Windows page."

Bla. Einer von uns beiden hat das real versucht, der andere zitiert bloß 
die Doku.

Autor: Bernd K. (prof7bit)
Datum:

Bewertung
-1 lesenswert
nicht lesenswert
Nop schrieb:
> Bernd K. schrieb:
>
>> Was laberst Du für einen Unsinn?
>
> Bla.
>
>>     SRecord also runs on Windows. You can build SRecord for Windows
>> using Cygwin or DJGPP, see the Windows page."
>
> Bla. Einer von uns beiden hat das real versucht, der andere zitiert bloß
> die Doku.

Nein, Du hast einen Schwachsinn von "pubertärem Humor" und "absichtlich" 
dahergelogen. Dafür gibt es keinen Anhaltspunkt, ganz im Gegenteil.

Autor: Nop (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bernd K. schrieb:

> Nein, Du hast einen Schwachsinn von "pubertärem Humor" und "absichtlich"
> dahergelogen.

Werd mal nicht unverschämt, Bürschchen.

> Dafür gibt es keinen Anhaltspunkt, ganz im Gegenteil.

http://srecord.sourceforge.net/windows.html

Mit kleinem weinendem Kind rechts. Gar nicht pubertär.

Autor: Bernd K. (prof7bit)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nop schrieb:
> http://srecord.sourceforge.net/windows.html
>
> Mit kleinem weinendem Kind rechts. Gar nicht pubertär.

Wo steht da daß er irgendwas absichtlich unportabel gemacht hat?

Autor: Nop (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bernd K. schrieb:

> Wo steht da daß er irgendwas absichtlich unportabel gemacht hat?

Lies die Hauptseite. Upgraden auf Linux.

Abgesehen davon sollte ein CLI-Tool, was einfach nur Dateien einliest, 
transformiert und wieder wegschreibt, überhaupt keine OS-Abhängigkeit 
haben. Das kann man auch in portablem C/C++ schreiben und mit jedem 
standardkonformen Compiler übersetzen. Alles andere ist an sich schon 
ein Antipattern.

Autor: Bernd K. (prof7bit)
Datum:

Bewertung
-1 lesenswert
nicht lesenswert
Nop schrieb:
> Bernd K. schrieb:
>
>> Wo steht da daß er irgendwas absichtlich unportabel gemacht hat?
>
> Lies die Hauptseite. Upgraden auf Linux.

Die hab ich oben zitiert. Dort stehen Anweisungen für Windows, also hat 
er das vorgesehen, das genaue Gegenteil von dem was Du 
unverschämterweise unterstellst.

Er hat sich sogar sehr ausführliche Mühe gegeben eine extra Seite für 
Windows zu machen und in ellenlanger Ausführlichkeit die Schritte 
aufzulisten, weitaus mehr als man überhaupt hätte verlangen können!

: Bearbeitet durch User
Autor: Nop (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bernd K. schrieb:

> also hat er das vorgesehen, das genaue Gegenteil von dem was Du
> unverschämterweise unterstellst.

Ich wiederhole: Du hast überhaupt keine Ahnung, weil Du bloß die Doku 
zitierst. Ich habe das real unter Cygwin versucht, bevor ich mir 
stattdessen mein eigenes Tool geschrieben habe, weil nichts von der 
Srecord-Doku so funktioniert wie behauptet.

Zusammen mit den auch im Rest der Doku anzutreffenden Seitenhieben auf 
Windows ergibt sich da ein sehr eindeutiges Bild. Die suche ich Dir 
jetzt aber nicht im Einzelnen raus, das darfst Du selber tun.

Übrigens funktioniert mein Tool, was den für mich wichtigen Teil der 
Srecord-Funktionalität abbildet, selbstverständlich unter Windows und 
Linux gleichermaßen, ohne daß irgendwelche Anpassungen nötig wären.

Für das Gegenteil muß man sich schon entweder anstrengen oder komplett 
unfähig sein, und Letzteres wollte ich den Srecord-Entwicklern nun nicht 
unterstellen.

Autor: Bernd K. (prof7bit)
Datum:

Bewertung
-1 lesenswert
nicht lesenswert
Nop schrieb:
> Bernd K. schrieb:
>
>> also hat er das vorgesehen, das genaue Gegenteil von dem was Du
>> unverschämterweise unterstellst.
>
> Ich wiederhole: Du hast überhaupt keine Ahnung,

Jetzt wiederhole ich!

Um nämlich nochmal auf Deine dreiste unverschämte Lüge zurückzukommen:

> Die Autoren sind in recht
> pubertärem Humor auch noch stolz drauf, daß sie es geschafft haben, ein
> solch vergleichsweise simples Tool nicht-portabel hinzukriegen"

Wo genau steht das? Antworte gefälligst oder schweige!

Autor: Nop (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bernd K. schrieb:

> Wo genau steht das? Antworte gefälligst oder schweige!

Siehe Vorposting und Vor-Vorposting. EOD, Du trollst lediglich dämlich 
herum und hast substantiell genau gar nichts beigetragen. Leute wie Du 
ziehen das Forum echt runter.

Autor: Bernd K. (prof7bit)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nop schrieb:
> Leute wie Du
> ziehen das Forum echt runter.

Du ziehst das Forum herunter indem Du aus heiterem Himmel Autoren von 
freien Softwareprojekten beleidigst und ihnen Sachen unterstellst die 
nicht der Wahrheit entsprechen.

Autor: c-hater (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bernd K. schrieb:

> Du ziehst das Forum herunter indem Du aus heiterem Himmel Autoren von
> freien Softwareprojekten beleidigst und ihnen Sachen unterstellst die
> nicht der Wahrheit entsprechen.

Es fällt allerdings schon sehr schwer, zu erklären, warum man zum Bau so 
eines doch eher trivialen Streameditors überhaupt zwingend gcc und 
cygwin braucht.

Das kann nach Lage der Dinge nur Unfähigkeit oder Absicht sein. Der 
eigentliche Code sieht aber eben nicht nach völliger Unfähigkeit aus, 
sondern scheint soweit ganz brauchbar zu sein (habe nur flüchtig 
reingeschaut).

Was bleibt denn da deiner Meinung nach noch als Erklärung über?

Autor: Bernd K. (prof7bit)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
c-hater schrieb:
> Was bleibt denn da deiner Meinung nach noch als Erklärung über?

Daß er es mit gcc und autotools entwickelt hat vielleicht? Immerhin ist 
das der de-facto Standard und auf ALLEN relevanten Plattformen 
verfügbar (sogar auf Windows) was man von so manchen anderen Toolchains 
nicht sagen kann, er hat also den gemeinsamen Nenner gewählt und keine 
künstliche Einschränkung vorgenommen. Weise Entscheidung.

: Bearbeitet durch User
Autor: Christian M. (Firma: magnetmotor.ch) (chregu) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Srecord ist auch zu Empfehlen!

Gruss Chregu

Autor: Nop (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
c-hater schrieb:

> Es fällt allerdings schon sehr schwer, zu erklären, warum man zum Bau so
> eines doch eher trivialen Streameditors überhaupt zwingend gcc und
> cygwin braucht.

Wegen "scratch my itch" und "works for me". Dann noch eine Crypto-Lib 
als externe Abhängigkeit reingesetzt, weil mehr Abhängigkeiten 
schließlich mehr Spaß bedeuten. Und bitte keine Leerzeichen in 
Pfadnamen, immer ein Indiz für solide Software.

Aber was erwartet man schon von Leuten, die WISSEN, daß etliche 
Eeprommer nur mit 16 Datenbytes pro Datenzeile im Hexformat klarkommen - 
und das nicht etwa zum Anlaß nehmen, 16 Bytes als Default zu wählen. Nee 
wieso, da nimmt man "natürlich" 32 Bytes und lästert dann lieber in der 
Doku über blöde Eeprommer ab.

Autor: c-hater (Gast)
Datum:

Bewertung
-1 lesenswert
nicht lesenswert
Bernd K. schrieb:

> Daß er es mit gcc und autotools entwickelt hat vielleicht? Immerhin ist
> das der de-facto Standard

Nur in deiner, sehr kleinen Welt...

Autor: A. F. (artur-f) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bernd K. schrieb:
> Du schreibst daß Du das problemlos programmieren kannst, dann mach es
> doch. Die Kollegen benutzen dann Dein Programm um die Kalibrierwerte
> einzugeben und dann klicken sie auf den "Flash"-Button und dann geht
> alles automatisch. Wenn Du programmieren kannst dann kannst Du das so
> idiotensicher machen daß es ein trainierter Schimpanse bedienen kann. Wo
> ist das Problem?

Mache ich auch :) siehe hier:
Beitrag "Re: Intel Hex Format Dateien bearbeiten"

Autor: Le X. (lex_91)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nop schrieb:
> Srecord funktioniert allenfalls unter Linux. Die Autoren sind in recht
> pubertärem Humor auch noch stolz drauf, daß sie es geschafft haben, ein
> solch vergleichsweise simples Tool nicht-portabel hinzukriegen.

Sag dass bitte nicht meinem srec_cat das wir sehr erfolgreich und nativ 
unter Win7 verwenden. Nicht dass es auf einmal seinen Dienst quitiert.


Nop schrieb:
> bevor ich mir
> stattdessen mein eigenes Tool geschrieben habe, weil nichts von der
> Srecord-Doku so funktioniert wie behauptet.

Erst letzte Woche mussten wir für ein (dem lieben Kunden geschuldetem) 
eher exotisches Bootloader-Scenario mehrere hexfiles wild mergen, 
Sektionen verschieben, ausschneiden und nochmal mergen und wieder 
verschieben.
Ich hab Srecord/srec_cat lange nicht mehr benutzt, aber mit der 
umfassenden Doku war ich recht schnell in der Lage das Ganze so zu 
skripten dass es stabil und sauber läuft. Unter Windows, wohlgemerkt.


Allerdings: mit Python und der IntelHex-Lib wäre ich noch schneller am 
Ziel gewesen.
Aber wir wollten uns nicht noch mehr Abhängigkeiten in den Buildprozess 
ziehen.

: Bearbeitet durch User
Autor: Bernd K. (prof7bit)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
A. F. schrieb:
> Bernd K. schrieb:
>> Du schreibst daß Du das problemlos programmieren kannst, dann mach es
>> doch. Die Kollegen benutzen dann Dein Programm um die Kalibrierwerte
>> einzugeben und dann klicken sie auf den "Flash"-Button und dann geht
>> alles automatisch. Wenn Du programmieren kannst dann kannst Du das so
>> idiotensicher machen daß es ein trainierter Schimpanse bedienen kann. Wo
>> ist das Problem?
>
> Mache ich auch :) siehe hier:
> Beitrag "Re: Intel Hex Format Dateien bearbeiten"

Naja, das ist eigentlich nicht das was ich meinte. Das sieht aus wie ein 
universell verwendbarer Editor für Intel-hex.

Was ich jedoch meinte war etwas zu programmieren das die Forderung nach 
Benutztbarkeit durch unkundige Personen erfüllt. Diese wissen doch genau 
NICHT welche Speicherstellen sie in welcher Art ändern müssen, wie die 
Datei überhaupt heißt und wo sie das hinspeichern müssen. Im Idealfall 
bekommen die einen Button vorgesetzt auf den sie klicken müssen und NULL 
Freiheitsgrade um irgendetwas falsch zu machen. DAS versuchte ich 
vorzuschlagen!

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.