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


von (geloescht) (Gast)


Lesenswert?

(Dieser Beitrag wurde geloescht)

von Ale (Gast)


Lesenswert?

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

von Andreas Haimberger (Gast)


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

von Lupin (Gast)


Lesenswert?

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

von Bjoern M. (salival)


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.

von (geloescht) (Gast)


Lesenswert?

(Dieser Beitrag wurde geloescht)

von Bjoern M. (salival)


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.

von (geloescht) (Gast)


Lesenswert?

(Dieser Beitrag wurde geloescht)

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.