mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik (Dieser Beitrag wurde geloescht)


Autor: (geloescht) (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
(Dieser Beitrag wurde geloescht)

Autor: Ale (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich könne es nicht, aber wenn ein Intel Hex ist, ganz einfach :-)

Autor: Andreas Haimberger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Schau mal hier rein:

http://www.betarun.com/Pages/HexEditor/
http://www.avrfreaks.net/index.php?name=PNphpBB2&f...

Den Editor aus dem ersten Link habe ich selber noch nie verwendet, keine 
Ahnung, ob der für dich hilfreich ist. Möglicherweise sind die Hinweise 
aus dem Avrfreaks-Forum im zweiten Link sinnvoller.

Ich verwende normalerweise CodevisionAVR, da ist es nicht notwendig, das 
EEPROM "zu Fuß" mit Daten zu füllen, man schreibt und liest einfach als 
"eeprom" deklarierte Variablen. Wo die Daten dann genau im EEPROM 
stehen, brauche ich dazu nicht zu wissen, das macht alles der Compiler.

MfG, Andy

Autor: Lupin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ist das dann nicht von kompilierung zu kompilierung unterschiedlich wo 
er seine daten hinschreibt?

Autor: Bjoern M. (salival)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
---

recalc_ihex_checksum_pipe.pl
#!/usr/bin/perl
while (<>)
{
    s/[\r\n]//g;
    my $data = substr($_, 1, -2);
    my $checksum;
    $checksum += hex($_) for split /(..)/, $data;
    printf ":%s%02X\r\n", $data, (0x100-$checksum) & 0xff;
}

cat foo.eep | ./recalc_ihex_checksum_pipe.pl > bar.eep

---

recalc_ihex_checksum.pl
#!/usr/bin/perl

sub usage
{
    print "usage: $0 <infile> <outfile>\n";
    exit 1;
}

open IN, shift or &usage;
open OUT, ">" . shift or &usage;
    
while (<IN>)
{       
    s/[\r\n]//g;
    my $data = substr($_, 1, -2);
    my $checksum;
    $checksum += hex($_) for split /(..)/, $data;
    printf OUT ":%s%02X\r\n", $data, (0x100-$checksum) & 0xff;
}

./recalc_ihex_checksum.pl foo.eep bar.eep

---

gruss, bjoern.

Autor: (geloescht) (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
(Dieser Beitrag wurde geloescht)

Autor: Bjoern M. (salival)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>ich bin zu lang raus aus Perl aber nach längerem Hinsehen hab ich die
>Berechnung gefunden.
Ich fass das mal als Kompliment auf :)

Hier noch eine elegantere Variante...
#!/usr/bin/perl
while (<>)
{
    my $checksum;
    s/^:(.+?)..[\r\n]+$/$1/;
    $checksum -= hex($_) for split /(..)/;
    printf ":%s%02X\r\n", $_, $checksum & 0xff;
}

...und ein Oneliner:
cat foo.eep | perl -ne '$x=0;s/^:(.+?)..[\r\n]+$/$1/;$x-=hex($_)for split/(..)/;printf":%s%02X\r\n",$_,$x&0xff' > bar.eep

gruss, bjoern.

Autor: (geloescht) (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
(Dieser Beitrag wurde geloescht)

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.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

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