(Dieser Beitrag wurde geloescht)

Gast #518524
Lesenswert?
• ▲
▼
Schau mal hier rein:

http://www.betarun.com/Pages/HexEditor/
http://www.avrfreaks.net/index.php?name=PNphpBB2&file=viewtopic&p=296140

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
#518541
Lesenswert?
• ▲
▼
---

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

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

---

recalc_ihex_checksum.pl
1
#!/usr/bin/perl
2

3
sub usage
4
{
5
    print "usage: $0 <infile> <outfile>\n";
6
    exit 1;
7
}
8

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

./recalc_ihex_checksum.pl foo.eep bar.eep

---

gruss, bjoern.
#518703
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...
1
#!/usr/bin/perl
2
while (<>)
3
{
4
    my $checksum;
5
    s/^:(.+?)..[\r\n]+$/$1/;
6
    $checksum -= hex($_) for split /(..)/;
7
    printf ":%s%02X\r\n", $_, $checksum & 0xff;
8
}

...und ein Oneliner:
1
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren