Robotrontechnik-Forum

Registrieren || Einloggen || Hilfe/FAQ || Suche || Mitglieder || Home || Statistik || Kalender || Admins Willkommen Gast! RSS

Robotrontechnik-Forum » Technische Diskussionen » CRC Prüfsumme und deren Problemchen » Themenansicht

Autor Thread - Seiten: -1-
000
21.10.2010, 12:33 Uhr
rm2
Default Group and Edit
Avatar von rm2

Hallo an alle,

da ich angefangen habe meine noch vorhandenen EPROM-Inhalte ins Netz zu stellen, ist die Angabe einen CRC-Prüfsumme wichtig.
Leider hat MEMprog2 viele Prüfsummenmöglichkeiten, aber keine die mit der Beschriftung auf dem EPROMs übereinstimmen.

Mir schwebt eine Internetseite mit EPROM-Link + CRC Vergleichsliste vor, gestaffelt für die einzelnen Geräte. Dies könnte helfen vorhandene EPROMs für alle nachprüfbar zu machen.

Was meint ihr dazu?



mfg ralph
--
.
http://www.ycdt.net/mc80.3x . http://www.ycdtot.com/p8000
http://www.k1520.com/robotron http://www.audatec.net/audatec
http://www.ycdt.de/kkw-stendal
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
001
22.10.2010, 10:06 Uhr
karsten
Default Group and Edit
Avatar von karsten

Angefangen habe ich das mit den CRC-Prüfsummen auch schon, allerdings noch nicht online. War aber auf dem Plan mal online zu stellen.
Leider wird es beruflich und nebenberuflich von Jahr zu Jahr schlimmer, so dass immer weniger Zeit für die Hobbyprojekte bleibt.
--
1. Grundgesetz der Messtechnik? Wer misst misst Mist!
(fast) alle DDR-Schaltkreise und viele Transistoren
Elektronikarchäologie, MC80, K1520
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
002
22.10.2010, 11:42 Uhr
Germaniumröhre



Hallo Ralph,

eine gute Idee . Nur woher weiß ich welche der vom KC87 entspricht ?

Ich habe nur den Original-KC87-Brenner und den Brenner von Buebchen mit EPROMCCL. Weiß jetzt auf anhieb nicht mal , ob Beide die gleiche Prüfsumme ausspucken.

Viele Grüße
Bernd
--
Kombjuder sorgen für Arbeit, die man ohne Diesem sicherlich nicht hätte.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
003
22.10.2010, 12:21 Uhr
rm2
Default Group and Edit
Avatar von rm2

Hallo Bernd,

mein Vorschlag dazu wäre auf ycdt.net/eprom alle EPROMs
abzulegen und in einer Tabelle (crc.htm) je Gerät die unterschiedlichen CRC Prüfsummen je EPROM und Prüfmethode zu veröffentlichen.


mfg ralph
ps
CRC von WDC4.2 2.EPROM, crc-Beschriftung: 5d66

lt MEMprog2:




.
--
.
http://www.ycdt.net/mc80.3x . http://www.ycdtot.com/p8000
http://www.k1520.com/robotron http://www.audatec.net/audatec
http://www.ycdt.de/kkw-stendal

Dieser Beitrag wurde am 22.10.2010 um 12:26 Uhr von rm2 editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
004
22.10.2010, 19:09 Uhr
Germaniumröhre



Hallo Ralph,

na, klar , soweit so gut.
Aber mit welcher Methode wird eigentlich beim KC87-Brenner die Prüfsumme errechnet ?

Viele Grüße
Bernd
--
Kombjuder sorgen für Arbeit, die man ohne Diesem sicherlich nicht hätte.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
005
22.10.2010, 20:02 Uhr
paulotto




Zitat:
rm2 schrieb
...Leider hat MEMprog2 viele Prüfsummenmöglichkeiten, aber keine die mit der Beschriftung auf dem EPROMs übereinstimmen.

mfg ralph

Hallo Ralph,

wenn die Prüfsumme nicht mit der auf dem EPROM übereinstimmt, kann es doch sein, daß der EPROM schon nicht mehr i.O. ist. Oder bist Du Dir da sicher?
Ich hatte auch 5 EPROMS von den 24 in meinem LA, die nicht mehr die korrekte CRC hatten...

Gruß,

Klaus

Dieser Beitrag wurde am 22.10.2010 um 20:03 Uhr von paulotto editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
006
23.10.2010, 18:36 Uhr
volkerp
Default Group and Edit
Avatar von volkerp

Im originalen Brenn-Programm von robotron wird CRC-CCITT / CRC-16 (x16 + x12 + x5 + 1) genutzt. Der Startwert ist 0xFFFF.


Quellcode:
; CRC berechnen

crc:        ld    hl, 0FFFFh
crc1:        ld    a, (de)
        xor    h
        ld    h, a
        rrca
        rrca
        rrca
        rrca
        and    0Fh
        xor    h
        ld    h, a
        rrca
        rrca
        rrca
        push    af
        and    1Fh
        xor    l
        ld    l, a
        pop    af
        push    af
        rrca
        and    0F0h
        xor    l
        ld    l, a
        pop    af
        and    0E0h
        xor    h
        ld    h, l
        ld    l, a
        inc    de
        dec    bc
        ld    a, b
        or    c
        jr    nz, crc1
        ret

und als Perl-Programm

Quellcode:
#CRC-CCITT (CRC-16) x16 + x12 + x5 + 1
$POLY = 0x8408; # 16-12-5-1  

#this is the CCITT CRC 16 polynomial X^16+X^12+X^5+1
#This works out to be 0x1021, but the way the algorithm works
#lets us use 0x8408 (the reverse of the bit pattern).  The high
#bit is always assumed to be set, thus we only use 16 bits to
#represent the 17 bit value.
#1 0001 0000 0010 0001     16-12-5-1
#1000 0100 0000 1000 1     reverse -> 0x8408h

#Startwert
$crc16 = 0xFFFF;

for ($i=0;$i<$len;$i++) {
    my $bits = ord(substr($buf,$i,1));
    for (0..7) {
        if (($bits & 1) ^ ($crc16 & 1)) {
            $crc16 >>= 1;
            $crc16 ^= $POLY;
        } else {
            $crc16 >>= 1;
        }
        $bits >>= 1;
    }
}
printf "CRC = %.4X\n", $crc16;


--
VolkerP

http://hc-ddr.hucki.net
(Z9001, Z1013, LC-80, ...)
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
007
23.10.2010, 19:54 Uhr
karsten
Default Group and Edit
Avatar von karsten

Auch das EPROM-Programm im MC80.22 verwendet CRC-CCITT / CRC-16
--
1. Grundgesetz der Messtechnik? Wer misst misst Mist!
(fast) alle DDR-Schaltkreise und viele Transistoren
Elektronikarchäologie, MC80, K1520
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
008
14.11.2022, 06:19 Uhr
Kpecmuk



Beispielcode in Ursalog 5022.


Quellcode:

CRC:          ld      de, 0FFFFh
CRC1:        ld      a, (hl)
                xor     d
                 ld      d, a
                 rrca
                 rrca
                 rrca
                 rrca
                 and     0Fh
                 xor     d
                 ld      d, a
                 rrca
                 rrca
                 rrca
                 push    af
                 and     1Fh
                 xor     e
                 ld      e, a
                 pop     af
                 push    af
                 rrca
                 and     0F0h
                 xor     e
                 ld      e, a
                 pop     af
                 and     0E0h
                 xor     d
                 ld      d, e
                 ld      e, a
                 inc     hl
                 dec     bc
                 ld      a, b
                 or      c
                 jr      nz, CRC1
                 ret


Dieser Beitrag wurde am 14.11.2022 um 06:21 Uhr von Kpecmuk editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
009
02.03.2023, 23:09 Uhr
gerritsoft

Avatar von gerritsoft

Hm. Wer ist noch zehn Prozent schneller Marc Coma der Ersetze die Push Poppe Fehle durchlaucht zement a (load c,a) und laut am a,c Mache am Anfang und ein Ende ein Push BC und ein paar PC. POP BC. Montag kam mir die Idee, Heute früh ausprobiert.

Es bringt auch was wenn man Arm mit the Lädt ld a,(de) und um die Berechnung mit dhl nein HL durchführt.
Dann hat man es am Katze gleich fertig für die Ausgabe Ich weiß jetzt muss ich wieder befehl heißt. Hlhx.
intro:
7F 7F 'crc' 01
or a; LOESCHT C FLAG
ex de,HL
SBC HL,DE
JRZ 02 ;FALLS ZB. CRC 4000 4000 ALSO BIS 8000H UEBERSPRINGT JRNC
JRNC 01 ; UBERSPRINGT ADD
ADD HL,DE
LD B,H
LD C,L
ld hl, ffff
>LD A,(DE); ZIEL FUER RUECKSPRUNG
INC DE
PUSH BC
USW.
--
Ich kann auch geschweißte Kassetten reparieren.
Null eins fuenf sieben acht eins neun zwei zwei vier vier neun. Bringen wir sie raus! Energie!

Dieser Beitrag wurde am 03.03.2023 um 00:31 Uhr von gerritsoft editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
010
30.09.2023, 18:27 Uhr
wpwsaw
Default Group and Edit


Hallo,

ich mache mal einfach hier weiter und Frage mal:

bei meinen vielen Eprommern tauchen ja auch Prüfsummentools auf. Beim M030 wird wohl CRC16 genutzt, bei einigen anderen von mir auch.

jetzt habe ich beschriftete Eproms von der P8000 und auch eine Eprom-Liste. Die angegebenen Prüfsummen sind wohl nicht CRC16. Ich habe auch mit WINHEX verschiedene Verfahren getestet, auch ohne Erfolg.

Nur an der P8000 selber mit UPROG unter UDOS werden die Prüfsummen angezeigt, die vermerkt sind.

Was wird den da für ein Verfahren verwendet, kennt das jemand?

Gruß
wpw
--
RECORD, CRN1; CRN2; PicoDat; LC80; Poly880; KC85/2,3,4,5 ; KC87; Z1013; BIC; PC1715; K8915; K8924; A7100; A7150; EC1834; und P8000 ab jetzt ohne Tatra813-8x8 aber mit W50LA/Z/A; P3; ES175/2 und Multicar M25 3SK; Barkas B1000 HP

Dieser Beitrag wurde am 30.09.2023 um 18:31 Uhr von wpwsaw editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
011
30.09.2023, 18:46 Uhr
maleuma



Richtig, das M030 verwendet CRC16 und auch der TEMO im KC85. Dazu wird noch die Summe aller Bytes nebenbei mit berechnet und angezeigt.
Die CRC16-Routine scheint ein "Quasi-Standard" zu sein auf dem Z80.
--
Mario.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
012
30.09.2023, 19:52 Uhr
ambrosius



@010 wpw

Frage doch mal Olli, vielleicht kennt er ja das Verfahren.
--
Viele Grüße
Holger
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
013
30.09.2023, 20:26 Uhr
paulotto



Soweit ich weiß, ist das eine CRC-CCITT (anderes Polynom als crc-16). Die wird übrigens bei fast allen robotron-Prüfprogrammen verwendet und nicht crc-16.

Gruß,

Klaus
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
014
30.09.2023, 20:31 Uhr
wpwsaw
Default Group and Edit


...dann werde ich morgen mal mit dem 1715 und 1834 testen....

danke

gruß
wpw
--
RECORD, CRN1; CRN2; PicoDat; LC80; Poly880; KC85/2,3,4,5 ; KC87; Z1013; BIC; PC1715; K8915; K8924; A7100; A7150; EC1834; und P8000 ab jetzt ohne Tatra813-8x8 aber mit W50LA/Z/A; P3; ES175/2 und Multicar M25 3SK; Barkas B1000 HP
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
015
01.10.2023, 17:27 Uhr
volkerp
Default Group and Edit
Avatar von volkerp


Zitat:
paulotto schrieb
Soweit ich weiß, ist das eine CRC-CCITT (anderes Polynom als crc-16). Die wird übrigens bei fast allen robotron-Prüfprogrammen verwendet und nicht crc-16.


Nein, CCITT beschreibt das konkrete genutzte Prüfpolynom, das ganze ist ein 16-Bit-CRC. In der DDR-Literatur wird SDLC und CCITT oftmals synonym verwendet.

Möglicherweise wird bei den P8000-Roms ein anderer Startwett genutzt? Oder es ist eine Prüfsumme und keine CRC?

https://hc-ddr.hucki.net/wiki/doku.php/cpm/crc
--
VolkerP

http://hc-ddr.hucki.net
(Z9001, Z1013, LC-80, ...)

Dieser Beitrag wurde am 01.10.2023 um 17:32 Uhr von volkerp editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
016
01.10.2023, 19:22 Uhr
wpwsaw
Default Group and Edit


Volker, ich habe die Dateien unter WINHEX mit allen zur Verfügung stehenden Verfahren getestet und bin auf keine passende Variante für die P8000 Prüfsumme gekommen.

wpw
--
RECORD, CRN1; CRN2; PicoDat; LC80; Poly880; KC85/2,3,4,5 ; KC87; Z1013; BIC; PC1715; K8915; K8924; A7100; A7150; EC1834; und P8000 ab jetzt ohne Tatra813-8x8 aber mit W50LA/Z/A; P3; ES175/2 und Multicar M25 3SK; Barkas B1000 HP
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
017
01.10.2023, 19:37 Uhr
Klaus



Hallo wpw,

WINHEX kenne ich nicht, aber im Hexeditor "HxD" gibt es auch ein paar Verfahren.
U.a. CRC-16 und auch das genannte CRC-16 CCITT.

Kannst Du ja mal noch probieren....

Viele Grüße,
Klaus

Dieser Beitrag wurde am 01.10.2023 um 19:37 Uhr von Klaus editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
018
01.10.2023, 21:19 Uhr
wpwsaw
Default Group and Edit


...danke hatte ich auch schon probiert

aber das CRC16 CCITT hatte ich wohl doch nicht getestet, denn das passt wohl.

wpw
--
RECORD, CRN1; CRN2; PicoDat; LC80; Poly880; KC85/2,3,4,5 ; KC87; Z1013; BIC; PC1715; K8915; K8924; A7100; A7150; EC1834; und P8000 ab jetzt ohne Tatra813-8x8 aber mit W50LA/Z/A; P3; ES175/2 und Multicar M25 3SK; Barkas B1000 HP

Dieser Beitrag wurde am 01.10.2023 um 21:24 Uhr von wpwsaw editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
019
01.10.2023, 21:42 Uhr
wpwsaw
Default Group and Edit


...es ließ mir keine Ruhe,

also die meisten Eprommer (nicht Robotron) machen eine 16bit Prüfsumme

der M030 zeigt CRC16 an ist aber CRC16 CCITT laut HxD
der M030 zeigt ja auch eine Prüfsumme an das ist ebenfalls eine 16bit Prüfsumme (Checksum-16) wie im HxD

nach HxD gibt es einen Unterschied zwischen CRC-16 und CRC-16 CCITT

Gruß
wpw
--
RECORD, CRN1; CRN2; PicoDat; LC80; Poly880; KC85/2,3,4,5 ; KC87; Z1013; BIC; PC1715; K8915; K8924; A7100; A7150; EC1834; und P8000 ab jetzt ohne Tatra813-8x8 aber mit W50LA/Z/A; P3; ES175/2 und Multicar M25 3SK; Barkas B1000 HP
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
020
01.10.2023, 22:18 Uhr
Ordoban



Es gibt eine ganze Menge verschiedener CRC-Verfahren. Die unterscheiden sich durch die Polynom-Formel und dem Startwert. CRC16 und CRC16 CCITT scheinen die selbe Polynom-Formel zu haben, aber einen anderen Startwert.
Formel: x^16+x^12+x^5+1=(x+1)(x^15+x^14+x^13+x^12+x^4+x^3+x^2+x+1)
Startwert CRC16: 0xFFFF
Startwert CCITT: 0x0000
--
Gruß
Stefan
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
021
01.10.2023, 22:51 Uhr
Rüdiger
Administrator



Zitat:
volkerp schrieb
Nein, CCITT beschreibt das konkrete genutzte Prüfpolynom, das ganze ist ein 16-Bit-CRC.



CRC16 beinhaltet genauso ein konkretes Prüfpolynom wie SDLC.
Das eine ist bei einer Behörde in Amerika standardisiert, das andere bei einer Behörde in Europa.


Zitat:
maleuma schrieb
Die CRC16-Routine scheint ein "Quasi-Standard" zu sein auf dem Z80.



Nicht in der DDR: Da war SDLC üblich, auch wenn es Ausnahmen mit CRC16 gab.
In seltenen Fällen auch eine 16-Bit-Aufsummierung.
--
Kernel panic: Out of swap space.

Dieser Beitrag wurde am 01.10.2023 um 22:53 Uhr von Rüdiger editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
022
02.10.2023, 18:40 Uhr
paulotto




Zitat:
volkerp schrieb

Nein, CCITT beschreibt das konkrete genutzte Prüfpolynom, das ganze ist ein 16-Bit-CRC. In der DDR-Literatur wird SDLC und CCITT oftmals synonym verwendet.

Möglicherweise wird bei den P8000-Roms ein anderer Startwett genutzt? Oder es ist eine Prüfsumme und keine CRC?




crc16 ist die gebräuchliche Schreibweise für CRC-16-IBM mit dem Polynom x^16 + x^15 + x^2 + 1, während crc-CCITT auch eine crc 16 ist mit dem Polynom x^16+x^12+x^5+1.
Wie Rüdiger schon schrieb: das eine mehr in Amerika, das andere mehr in Europa.

Gruß,

Klaus
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
023
03.10.2023, 10:31 Uhr
rm2
Default Group and Edit
Avatar von rm2

Hallo an alle,

Vorschlag:
beim nächsten Treffen in Garitz eine Reihe von EPROMs mit den verschiedenen CRC-Tools
bestimmen lassen und das alles in einer Tabelle dokumentieren und ab ins Netz.
Das jeweilige Original-CRC-Tool am Ende der verschiedenen Tests zur Kontrolle.
Eine Kür wäre der U880-Skript des jeweilige Original-CRC-Tools.




mfg ralph
--
.
http://www.ycdt.net/mc80.3x . http://www.ycdtot.com/p8000
http://www.k1520.com/robotron http://www.audatec.net/audatec
http://www.ycdt.de/kkw-stendal
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
024
03.10.2023, 17:32 Uhr
thrh



In der Zeit über die wir hier Reden gab es, wie Klaus schon geschrieben hat, zwei gebräuchliche CRC-16 Polynome
x^16+x^15+x^2+1 (CRC-16) und x^16+x^12+x^5+1 (SDLC). Beide gedacht für synchrone serielle Datenübertragung und so in der SIO auch implementiert.
Das Polynom x^16+x^15+x^2+1 wurde auch für die CRC-Berechnung bei den Disketten eingesetzt. Allerdings wurde im Fall serielle Datenübertragung das niedrigstwertige Bit (D0) als Erstes in das Schieberegister geschoben und bei der Diskettenberechnung das höchstwertige Bit (D7).
Bei der Entwicklung der Diskettensteuerungen in der DDR, beginnend mit der ZE1 (U808), wurde die teure Hardwarelösung durch eine "billige" Softwarelösung ersetzt, das bekannte Robotronprogramm zur CRC-Berechnung. Der Startwert 0ffffh wurde gewählt, weil damit auch am Beginn der Bytefolge stehende Nullbytes zu einer Veränderung des Ergebnisses führten.
Es muss aber hier erwähnt werden, dass die Grundidee für den Algorithmus auf Basis eines Bytes von Kollegen von Carl-Zeiss kam.
Mit dem Produktionsbeginn des MRES A5601 trat das Problem auf, dass die eingesetzten EPROMs verhältnismäßig fehleranfällig waren. Um in der Anfangsladerroutine keine fehlerhaften Daten zu erzeugen, kam die Idee auf, EPROMs während des Systemstarts mittels Prüfsummen zu prüfen. Als Verfahren wurde das Diskettenberechnungsprogramm genommen, da es vorhanden war und nicht neu programmiert werden musste. Wichtiger war aber, dass das Verfahren Einbitfehler sicher und Mehrbitfehler sicher genug erkannte. Nachdem das einmal eingeführt war, wurde dann auch, ein mit diesem Verfahren ermittelter Prüfrest, bei der Programmierung der EPROMs auf dem MRES mit ausgegeben.
Wie andere EPROM-Programmiersysteme mit Prüfresten verfahren haben, kann ich nicht sagen.

Thomas
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
025
03.10.2023, 22:16 Uhr
Early8Bitz

Avatar von Early8Bitz

Es gibt eine Menge CRC-Algorithmen für ein 16 Bit CRC.

4 Parameter sind entscheidend

- Polynom
- Startwert (0x0000, 0xFFFF, aber auch andere kommen vor)
- Bitreihenfole (MSB first oder LSB first) - relevant bei den verschiedenen seriellen Anwendungen
- Finales XOR des Ergebnisses mit 0xFFFF (Bitweise Negation des Ergebnisses) oder kein XOR (bzw. XOR mit 0x0000)

Eine Beschreibung vieler CRC-Algorithmen (auch für andere Längen als 16) findet man hier:
Catalogue of parametrised CRC algorithms

Die Matrix der häufigsten CRC 16 Bit Algorithmen im Anhang (Appendix) A dieser Seite.

Polynom 0x1021 ist x^16+x^12+x^5+1
Polynom 0x8005 ist x^16+x^15+x^2+1
Reflected True bedeutet Bitumkehr (LSB first), False ist MSB first

Der im Thread mit CRC-16 benannte Algorithmus
Polynom 0x1021
Startwert 0xFFFF
MSB First
Kein XOR

ist der im Katalog mit CRC-16/IBM-3740 bezeichnete Algorithmus.
width=16 poly=0x1021 init=0xffff refin=false refout=false xorout=0x0000 check=0x29b1 residue=0x0000 name="CRC-16/IBM-3740"

Den haben wir früher immer für unsere ROM-Prüfung verwendet. Wenn man das berechnete CRC an den Datenstrom anhängt
(erst High-Byte, dann Low-Byte) und das CRC erneut berechnet, kommt immer 0x0000 raus.
Also zb. ein 2716 EPROM (2048 Byte):
1. CRC mit o.g. Parametern über 2046 Byte (ROM-Adressen 0x000-0x7FD) berechnen
2. CRC auf die letzten zwei Byte brennen (Highteil des CRC auf 0x7FE, Lowteil auf 0x7FF)
3. CRC über den kompletten EPROM (2048 Byte, 0x000-0x7FF) ergibt dann genau Null.

Da der "Erwartungswert" eines intakten EPROM immer 0x0000 ist, braucht man in der Überprüfungsroutine
im Zielsystem nicht nach jeder Programmänderung einen neuen Wert zu hinterlegen, eine Überprüfung auf
einen Nullwert gilt immer.
--
Gruß
Ralf

Ist ein alter Schaltkreis ein Schaltgreis?
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
026
19.11.2023, 21:23 Uhr
karsten33




Zitat:
Early8Bitz schrieb
Es gibt eine Menge CRC-Algorithmen für ein 16 Bit CRC.

4 Parameter sind entscheidend

- Polynom
- Startwert (0x0000, 0xFFFF, aber auch andere kommen vor)
- Bitreihenfole (MSB first oder LSB first) - relevant bei den verschiedenen seriellen Anwendungen
- Finales XOR des Ergebnisses mit 0xFFFF (Bitweise Negation des Ergebnisses) oder kein XOR (bzw. XOR mit 0x0000)

Eine Beschreibung vieler CRC-Algorithmen (auch für andere Längen als 16) findet man hier:
Catalogue of parametrised CRC algorithms

Die Matrix der häufigsten CRC 16 Bit Algorithmen im Anhang (Appendix) A dieser Seite.

Polynom 0x1021 ist x^16+x^12+x^5+1
Polynom 0x8005 ist x^16+x^15+x^2+1
Reflected True bedeutet Bitumkehr (LSB first), False ist MSB first

Der im Thread mit CRC-16 benannte Algorithmus
Polynom 0x1021
Startwert 0xFFFF
MSB First
Kein XOR

ist der im Katalog mit CRC-16/IBM-3740 bezeichnete Algorithmus.
width=16 poly=0x1021 init=0xffff refin=false refout=false xorout=0x0000 check=0x29b1 residue=0x0000 name="CRC-16/IBM-3740"

Den haben wir früher immer für unsere ROM-Prüfung verwendet. Wenn man das berechnete CRC an den Datenstrom anhängt
(erst High-Byte, dann Low-Byte) und das CRC erneut berechnet, kommt immer 0x0000 raus.
Also zb. ein 2716 EPROM (2048 Byte):
1. CRC mit o.g. Parametern über 2046 Byte (ROM-Adressen 0x000-0x7FD) berechnen
2. CRC auf die letzten zwei Byte brennen (Highteil des CRC auf 0x7FE, Lowteil auf 0x7FF)
3. CRC über den kompletten EPROM (2048 Byte, 0x000-0x7FF) ergibt dann genau Null.

Da der "Erwartungswert" eines intakten EPROM immer 0x0000 ist, braucht man in der Überprüfungsroutine
im Zielsystem nicht nach jeder Programmänderung einen neuen Wert zu hinterlegen, eine Überprüfung auf
einen Nullwert gilt immer.



Hallo Ralf,

ich habe das Ganze einmal für die Startdiskette P8000 Wega 3.1. probiert. Die CRC auf der Diskette ist 84E2.
Im Hexworkshop gibt es diverse Berechnungen. Ich hab die Custom CRC-16 gewählt.



Leider kommt als Ergebnis 2ADB heraus. Kann es sein das die Kollegen bei EAW in der Diskettenroutine doch noch etwas Anderes machen?
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
Seiten: -1-     [ Technische Diskussionen ]  



Robotrontechnik-Forum

powered by ThWboard 3 Beta 2.84-php5
© by Paul Baecher & Felix Gonschorek