Forum: Mikrocontroller und Digitale Elektronik Eprom Dateiinhalt


von Frank (Gast)


Lesenswert?

Hallo,
ich habe hier eine Hex-Datei aus einem Eprom Baustein. Ich würde 
interessenhalber gerne wissen wie sowas aussieht. Wie muss ich mir das 
vorstellen. Einfach nur Speicheradressen mit Inhalt? den rechnen kann 
der eprom ja nicht. Habe mir das mit ReAVR mal in Assembler angesehen. 
Dort sieht es aber nach ziemlicher rechnerei aus....

REAVR zeigt mir z.b. sowas
L003D:
  ldi  r26,k32
  fmuls  r17,r18
L003F:
   rcall  L05E2
  ldi  r25,k92
  ldd  r7,Z+o25
  rjmp  L0243
;  -----------  jump on last line
  andi  r29,k45
  st  X+,r17
;  --------- this is skippy
   sbrs  r27,b4
   muls  r16,r19
;  --------- last may be skipped
; pc=0x47(0x8E)


Grüße

von spess53 (Gast)


Lesenswert?

HI

>ich habe hier eine Hex-Datei aus einem Eprom Baustein.

Was willst du dann mit einem Disassembler. Da steht mit Sicherheit kein 
Programm drin.

MfG Spess

von holger (Gast)


Lesenswert?

>Wie muss ich mir das
>vorstellen. Einfach nur Speicheradressen mit Inhalt?

Ja.

> den rechnen kann
>der eprom ja nicht.

Stimmt.

>Habe mir das mit ReAVR mal in Assembler angesehen.
>Dort sieht es aber nach ziemlicher rechnerei aus....

Blödsinn. Im Eprom steht ein Programm für irgendeinen
Prozessor, aber nicht für einen AVR.

>Was willst du dann mit einem Disassembler. Da steht mit Sicherheit kein
>Programm drin.

So ein Quatsch.

von Frank (Gast)


Lesenswert?

Die Logik dahinter war, das ich gedacht habe das ReAvr den Hex-code 
(also fast maschinencode) in assembler darstellt.
War das komplett falsch?

von Ingolf O. (headshotzombie)


Lesenswert?

spess53 schrieb:
> HI
>
> Da steht mit Sicherheit kein Programm drin.

Ah ja! Sicher?

von rackandboneman (Gast)


Lesenswert?

Wenn dort Maschinencode für irgendetwas anderes als einen AVR drinsteht, 
oder Daten, dann ist das für einen AVR Disassembler absolut zufälliger 
Quatsch.

Wenn Du weisst wo der EPROM her ist versuch es mit einem Disassembler 
für die entsprechende Prozessorfamilie.

Sonst probier mal Disassembler für 8085, Z80 (diese beiden sind ähnlich 
aber nicht gleich im Maschinencode), 6502, 6800 und 8051.

Wenn Du ein einzelnes normales EPROM aus einem 16/32-Bit-System hast: 
Vergiss es (68k mit DBS ausgenommen ;).

von holger (Gast)


Lesenswert?

>Die Logik dahinter war, das ich gedacht habe das ReAvr den Hex-code
>(also fast maschinencode) in assembler darstellt.
>War das komplett falsch?

Nö, es gibt nur ungefähr 10 Millionen verschiedene Prozessoren
die jeweils eigene Assemblercodes haben.

von Nils S. (kruemeltee) Benutzerseite


Lesenswert?

VOn welchem/Für welchen Prozessor/Rechner ist der EPROM?

Für den brauchst du dann einen Disassembler.

von Frank (Gast)


Lesenswert?

ok, danke soweit.

von Frank (Gast)


Lesenswert?

Prozessor ist: 80C51

von Nils S. (kruemeltee) Benutzerseite


Lesenswert?

Dann schick den Inhalt durch einen 8051 disassembler.

von Ingolf O. (headshotzombie)


Lesenswert?

Nils S. schrieb:
> Dann schick den Inhalt durch einen 8051 disassembler.

Haben nicht alle Disassembler den gleichen Nachteil, den Hexcode von 
enthaltenen ASCII-Zeichen als OP-codes zu interpretieren? Damit wird das 
Vorhaben für den TO ziemlich sinnlos.

von Karl H. (kbuchegg)


Lesenswert?

Ingolf O. schrieb:
> Nils S. schrieb:
>> Dann schick den Inhalt durch einen 8051 disassembler.
>
> Haben nicht alle Disassembler den gleichen Nachteil, den Hexcode von
> enthaltenen ASCII-Zeichen als OP-codes zu interpretieren? Damit wird das
> Vorhaben für den TO ziemlich sinnlos.

Kann sein, kann aber auch nicht sein.
Kommt halt drauf an, was da tatsächlich im EPROM enthalten ist: Code 
oder Daten.

Ein Disassembler-Lauf schadet nicht. Ob das sinnvollen Code ergibt 
erkennt ein etwas erfahrener Assembler Programmierer meistens sehr 
schnell.

Oft hilft es auch, sich den Inhalt erst mal in Hex-Form anzusehen. Daten 
haben meistens irgendeine Form von wiederkehrenden Mustern.

von MaWin (Gast)


Lesenswert?

> Dann schick den Inhalt durch einen 8051 disassembler.

NACHDEM er überprüft hat, welche Datenleitungen des EPROMs an welche 
Datenleitungen des Prozessors gehen, und welche Adressleitungen des 
EPROMs an welche Adressleitungen des Prozessors gehen, denn das muss 
nicht 1:1 verbunden sein, und eventuell entsprechend durch 
Bitpositionsvertauschung korrigiert hat.

von Frank (Gast)


Lesenswert?

Hey, also ich habe das mal durch den entsprechenden dissamsembler 
geschickt:
Dabei kam ellenweise sowas hier raus:

L0041:  MOV  R7,#01BH
;
L0043:  PUSH  B
  LCALL  L4C4D
  POP  B
  SJMP  L004E
;
L004C:  CPL  0EBH
;
L004E:  MOV  008H,#064H
;
L0051:  MOV  00AH,B
  RET
;
  MOV  DPTR,#L6219
  CLR  003H
  MOV  A,#01CH
  MOVC  A,@A+DPTR
  CLR  C
  SUBB  A,03BH
  JNC  L0063
  RET
;
;
L0063:  MOV  C,0E9H
  MOV  F0,C
  JC  L006B
  SETB  0E9H

Zwischendurch ein paar zeilen sowas hier:

MOV  R7,A
  MOV  R7,A
  MOV  R7,A
  MOV  R7,A
  MOV  R7,A
  MOV  R7,A
  MOV  R7,A
  MOV  R7,A
  MOV  R7,A

Erschneint das irgendjemandem brauchbar?

von Thomas P. (topla)


Lesenswert?

Macht auf jeden Fall mehr Sinn als der Versuch mit dem AVR-Reassembler.

Thomas

von Frank (Gast)


Lesenswert?

Ich finde allerdings trotzdem arithmetikbefehle in dieser datei wie zb 
ADDC. kann das ein eprom?

von Ich (Gast)


Lesenswert?

Frank schrieb:
> Ich finde allerdings trotzdem arithmetikbefehle in dieser datei wie zb
> ADDC. kann das ein eprom?

Auch wenn man den Inhalt ausdruckt, kann das Papier nicht rechnen.

Das EPROM speichert doch nur das Programm bzw. Daten wie z.B. Diskette.

von rackandboneman (Gast)


Lesenswert?

Wieso soll das EPROM das können? Der 8051 kanns!

Ein EPROM kann nur dann addieren wenn du ne Lookup Table reinbrennst.

von Frank (Gast)


Lesenswert?

Ok, das bedeutet aber dann, das mir der Dissasembler nicht das anzeigt 
was wirklich im eeprom steht ..richtig?!

von Karl H. (kbuchegg)


Lesenswert?

Frank schrieb:
> Ok, das bedeutet aber dann, das mir der Dissasembler nicht das anzeigt
> was wirklich im eeprom steht ..richtig?!

Klar tut er das.


Schau. Ein EPROM ist nur ein Speicher.

Stell dir eine Maschine vor, die mit Nadeln Löcher in einem 
Papierstreifen abtastet. Für jede Kombination von Löchern oder 
Nicht-Löchern macht die Maschine etwas spezielles. Die Maschine ist die 
ausführende Einheit. Du schaust dir gerade den Papierstreifen an und 
versuchst aus dem Muster der Löcher schlau zu werden. Damit man diesen 
Löchern Sinn zuordnen kann, muss man wissen, wie die Maschine diese 
Löcher interpretiert. Die Maschine vom Nachbarn macht etwas ganz anderes 
mit genau demselben Papierstreifen mit genau diesen Löchern.

Und dann gibt es noch spezielle Maschinen, die ebenfalls die Löcher 
abtasten, aber anstelle von Aktionen ordnen sie jedem Lochmuster einen 
textuellen Begriff zu und drucken ihn aus. Weil wir Menschen uns nun mal 
mit Text leichter tun als mit dem merken vno Löchern in Papierstreifen. 
Genau das macht der Disassembler. Ist diese rAusdruck nun etwas anderes 
als die Löcher auf dem Papierstreifen? Ja und nein. Natürlich ist es 
etwas anderes, denn dsa eine sind Löcher und das andere ist Text. Aber: 
Es existiert eine 1:1 Beziehung zwischen den beiden. Kennt man das eine, 
kennt man auch das andere. Aus den löchern kann man den Text erzeugen 
aus dem Text kann man die Löcher erzeugen. Also kann man mit Fug und 
Recht behaupten: Der Text SIND die Löcher, nur in einer anderen Form 
präsentiert.


Wozu brauchst du das Ganze überhaupt?

von Weingut P. (weinbauer)


Lesenswert?

nein, er interpretiert genau das was Du ihm gibst. Wenn das der 
EPROM-Inhalt ist, dann nimmt er den als Maschinencode.
Dein Prozessor macht das selbe, er liest das EPROM aus und arbeitet die 
Befehle nacheinander ab. Wenn da im EPROM als Opcode ADD drinnen steht 
dann macht das nicht das EPROM, sondern der Prozessor der den Befehl 
ausliest.

Stell Dir das EPROM wie n CD-Rohling vor, der spielt auch keine Musik 
von sich aus ab, sondern die brennst Du drauf und der CD-Spieler liest 
die CD wieder ab und erzeugt den Ton, der auf der CD gespeichert ist.

von EPROM-Darminhalt (Gast)


Lesenswert?

> Ich finde allerdings trotzdem arithmetikbefehle in dieser datei wie zb
> ADDC. kann das ein eprom?

Ein Disassembler muß nicht in jedem Fall RICHTIG das ausgeben, was mal 
einer programmiert hat. In einigen Fällen werden auch simple Daten als 
Befehl mißverstanden.

Mit einem Debugger kann man einige Befehle schrittweise nachvollziehen 
wenn man ausreichend Durchblick hat.
http://de.wikipedia.org/wiki/Debugger#Funktionen_eines_Debuggers

Auf Deinen EPROM stehen nur Befehle und ein paar Daten, die dann in der 
CPU verarbeitet werden. Wozu das alles ist, weißt Du sicher eher, weil 
Du die Herkunft des EPROMS besser kennst als wir.

von Frank (Gast)


Lesenswert?

Ah, ok jetzt habe ich's verstanden. Dankean euch.
Das einzige was ich mich jetzt noch frage. Wo konstante werte hinterlegt 
sind. Ich würde jetzt erwarten das zeilenweise adressen mit inhalt 
angegeben sind.

von Karl H. (kbuchegg)


Lesenswert?

Frank schrieb:
> Ah, ok jetzt habe ich's verstanden. Dankean euch.
> Das einzige was ich mich jetzt noch frage. Wo konstante werte hinterlegt
> sind.

Das kann man nur erraten oder man findet es raus, in dem man das 
Programm in allen Einzelheiten analysiert und feststellt von wo aus dem 
EPROM Daten gelesen werden, wenn eine ausführende Einheit die Befehle im 
Programm ausführt und Daten von irgendwo aus dem EPROM liest.


Wozu brauchst du das Ganze überhaupt? Es sieht nicht so aus, als ob du 
weißt was du da tust oder worauf du dich da einlässt.

von Frank (Gast)


Lesenswert?

ok, danke erstmal.
wie gesagt ich wollte nur wissen was in soeinem eprom vorgeht, damit ich 
einen einzelnen baustein mit dem atmega ansteuern kann.

von Karl H. (kbuchegg)


Lesenswert?

Frank schrieb:
> ok, danke erstmal.
> wie gesagt ich wollte nur wissen was in soeinem eprom vorgeht,

das was in jedem Speicherbaustein vorgeht.

* Der Prozessor legt eine Adresse an.
* Der Prozessor legt noch ein paar Steuersignale an
* grummel grummel grummel.
* Der Speicherbaustein schaltet die entsprechenden Speicherzellen auf 
den Datenbus von wo sich der Prozessor das Datenbyte (oder welche 
Organisation der Speicherbaustein dann auch immer hat) abholt.

That's it. Mehr geht in einem Speicherbaustein der Sorte EPROM nicht 
vor.

von rackandboneman (Gast)


Lesenswert?

Ein Eprom ist eine Tabelle.

von Simon H. (simi)


Lesenswert?

Sei nicht böse, aber Du gehst das ganz falsch an. Als ob Du versuchen 
würdest, Arzt zu werden, indem Du einfach mal beim Metzger eine Sau 
kaufst, sie ausschlachtest und in den Eingeweiden rumwühlst.

Du hast dann vor Dir die Milz, siehst, wie sie aussieht und riechst, wie 
sie riecht, aber was sie tut, weisst Du deswegen noch kein bisschen 
besser.

Hol Dir doch lieber mal ein paar Bücher und/oder lies Dich in das Thema 
ein. Denn Deine Fragen lasse erahnen, dass Du ganz grundlegende Dinge 
noch nicht ganz verstanden hast (sonst wäre es Dir nämlich so was von 
egal, was in einem EEPROM so drin steht, um es von einem AVR ansteuern 
zu können (was immer Du damit meinst).

Nichts für Ungut - ging mir genau so. Nur gab's damals 
mikrocontroller.net noch nicht. ;-)

Simon

von EPROM-Darminhalt (Gast)


Lesenswert?

> Du hast dann vor Dir die Milz, siehst, wie sie aussieht und riechst, wie
> sie riecht, aber was sie tut, weisst Du deswegen noch kein bisschen
> besser.

Der EPROM ist besser. Der hat ein Fenster. Da braucht Frank den Bauch 
nicht aufschneiden. :-) 
http://de.wikipedia.org/wiki/Erasable_Programmable_Read-Only_Memory

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.