Disassemblera 8031-kod?

Elektronikrelaterade (på komponentnivå) frågor och funderingar.
Användarvisningsbild
e5frog
Inlägg: 475
Blev medlem: 18 juni 2005, 20:41:12
Ort: Älvängen
Kontakt:

Re: Disassemblera 8031-kod?

Inlägg av e5frog »

Fryste "en stund" i frysen, läste 30 gånger och sparade.

Tyvärr verkar inte teorin om att fladdrande bit ska vara 0, hade nu flera fall i texten i slutet ett A ($41) som fyra gånger blivit ersatt med @ ($40), där är jag 100% säker på att det ska vara A, även S vs R ($53 vs $52) två gånger där S är det korrekta. Så det kanske ska vara 1 på fladdriga bitar istället?

Första läsning efter kylning:

Offset(h)

00001DA0 ÐƒÐ‚ßæÞäÓ"ЃЂ..FÃ"VOREINST. INA
00001DC0 KTIV 1 = EIN: VOREINST. AKTIV
00001DE0 0 = AUS: EEPROM GESTECKT (J): EE
00001E00 PROM GELOESCHT NICHT LEER: LOESC
00001E20 HEN (J): KEINE FEHLER BEIM VERGL
00001E40 EICH ADR: .PROGRAMMIERFEHLER EEP
00001E60 ROM ANWEISUNG FEHLERHAFT PRUEFBY
00001E80 TE-FEHLER IM EEPROM: PRUEFBYTES
00001EA0 O.K. RAM-FEHLER  KLAMMER-FEHLER
00001EC0  SCHACHTELTIEFE ZU GROSS  SOLLWE
00001EE0 RTE ZEIT- ZAEHLWERKE 1.03 SOLL-
00001F00 ODER ISTWERTE (S/I) ? SOLLWERTE
00001F20 UEBERTRAGEN ? NACH: PROGRAMM VOL
00001F40 L: LOESCHEN ? PROGRAMM LOESCHEN
00001F60 ? GEFORCT NEUE BAUDRATE: VON: BI
00001F80 S: ANLAGE: DATUM: AEG-TELEFUNKEN
00001FA0 LOGISTAT A020 SEITE: ..A02
00001FC0 0  FUS: LAEUFT  STEHT  NS  WS  O
00001FE0 .K.  FX  ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ

Sista två tecken innan $FF-fyllning är $20 (space) och $A0 (Line Feed), verkar inte vara med någon checksum som ligger i slutet i alla fall.



Andra läsning efter kylning, "VOREINST." nu stavat med R andra gången (på rad två) och @ istället för A som beskrivet, det som ska vara 1 har blivit 0.

Offset(h)

00001DA0 ÐƒÐ‚ßæÞäÓ"ЃЂ..FÃ"VOREINST. INA
00001DC0 KTIV 1 = EIN: VOREINRT. AKTIV
00001DE0 0 = AUS: EEPROM GESTECKT (J): EE
00001E00 PROM GELOESCHT NICHT LEER: LOESC
00001E20 HEN (J): KEINE FEHLER BEIM VERGL
00001E40 EICH ADR: .PROGRAMMIERFEHLER EEP
00001E60 ROM ANWEISUNG FEHLERHAFT PRUEFBY
00001E80 TE-FEHLER IM EEPROM: PRUEFBYTES
00001EA0 O.K. RAM-FEHLER  KLAMMER-FEHLER
00001EC0  SCHACHTELTIEFE ZU GROSS  SOLLWE
00001EE0 RTE ZEIT- ZAEHLWERKE 1.03 SOLL-
00001F00 ODER IRTWERTE (S/I) ? ROLLWERTE
00001F20 UEBERTR@GEN ? NACH: PROGRAMM VOL
00001F40 L: LOESCHEN ? PROGRAML LOESCHEN
00001F60 ? GEFORCT NEUE BAUDR@TD: VON: BI
00001F80 S: ANL@GE: DATUM: AEG-TELEFUNKEN
00001FA0 LOGIST@T A020 SEITE: ..A02
00001FC0 0  FUS: LAEUFT  STEHT  NS  WS  O
00001FE0 .K.  FX  ÿÿÿÿÿÿÿÿÿÿÿþþþþÿÿÿÿÿÿÿÿ


Första dumpen jag gjorde hade inga tydliga fel i texten som denna andra läsning efter frysning.


Kanske skulle kolla i PLC-forum om det är någon som har liknande modell och kan dumpa ett fungerande eprom.
xxargs
Inlägg: 10189
Blev medlem: 23 september 2006, 14:28:27
Ort: Södertälje

Re: Disassemblera 8031-kod?

Inlägg av xxargs »

Det kanske är annan typ av fel i promet än det vi har spekulerat om, dvs saker som faktiskt har gått sönder.

tex. ESD-skador kan ge väldigt konstiga beteende där logiska resonemang för orsak och verkan kör i diket direkt...

hur läses dessa av? - i promprogramerare eller sitter den i utrustningen?

Defintivt värt att fråga efter prom-image av folk som kanske har samma utrustning snurrande
Användarvisningsbild
e5frog
Inlägg: 475
Blev medlem: 18 juni 2005, 20:41:12
Ort: Älvängen
Kontakt:

Re: Disassemblera 8031-kod?

Inlägg av e5frog »

Jag har letat fel på PLC:t så efter att ha kollat alla 17 reläer så kikade jag på ram och eprom som båda var socklade. Läser av i eprom-programmerare, även ram-testning gjordes i denna. Har inte haft några liknande läsbekymmer med annat i samma åldersspann, det är väl bara skrivning som inte gått så bra på gammal 21V eprom men då kör jag med Willem istället så är biffen klar.

Känns ju skönt att ha hittat något misstänkt efter mycket letande, bara att försöka lösa det så smidigt som möjligt.
Användarvisningsbild
mrfrenzy
Co Admin
Inlägg: 15661
Blev medlem: 16 april 2006, 17:04:10

Re: Sv: Disassemblera 8031-kod?

Inlägg av mrfrenzy »

e5frog skrev: 00001E80 TE-FEHLER IM EEPROM: PRUEFBYTES
Detta är ju bevis på att det finns checksum.
Kolla var i koden felkod 1E80 anropas så bör du kunna hitta algoritmen och minnesplatsen.

Trasiga MC908AZ brukar gå bättre att läsa om kan värmer upp dom, men det kanske är en annan typ av fel?
Användarvisningsbild
e5frog
Inlägg: 475
Blev medlem: 18 juni 2005, 20:41:12
Ort: Älvängen
Kontakt:

Re: Disassemblera 8031-kod?

Inlägg av e5frog »

Jag gissar att det är checksum i EEPROM:et som är lödat efter att man programmerat, måste ju vara texter som syns när man har programmerare inkopplad.

Jag lade den i fryset några timmar (typ fem-sex), rotade fram Willem, kabel och nätdel - för de hade jag hunnit använda till annat sedan senast.
Kopplade upp, startade Win98 burken och hämtade EPROM:et ur frysen...

Läste 32 gånger i rad och sparade filerna - alla var likadana (jämförde i hexeditor). Inga synliga fel i texten heller.
Användarvisningsbild
säter
Inlägg: 35557
Blev medlem: 22 februari 2009, 21:16:35
Ort: Säter

Re: Disassemblera 8031-kod?

Inlägg av säter »

Hur fungerar det med rumstemperatur och Willem-brännare?
Användarvisningsbild
e5frog
Inlägg: 475
Blev medlem: 18 juni 2005, 20:41:12
Ort: Älvängen
Kontakt:

Re: Disassemblera 8031-kod?

Inlägg av e5frog »

Ska kolla imorgon, nu blir det sängläge...
Användarvisningsbild
Wedge
Inlägg: 1026
Blev medlem: 8 juli 2012, 17:33:33

Re: Sv: Disassemblera 8031-kod?

Inlägg av Wedge »

mrfrenzy skrev:
e5frog skrev: 00001E80 TE-FEHLER IM EEPROM: PRUEFBYTES
Detta är ju bevis på att det finns checksum.
Kolla var i koden felkod 1E80 anropas så bör du kunna hitta algoritmen och minnesplatsen.
Njae... Nån felkod är det inte. 1E80 är en adress i EEPROMet. Den adress som processorn jobbar med kan vara nåt helt annat. Var i addressrymden är EEPROMet inmappat?
Dessutom så är 1E80 adressen till en bokstav mitt i en textsträng, men om man letar rätt på var strängen börjar (nån intilliggande adress) så...
Men hur säker kan man vara på att hitta saker i en datamängd som man inte kan lita på?
Och i slutändan, vad ska man ha algoritmen och checksummeadressen till? Att det blir datafel är redan känt. Man kommer ändå inte vidare mot korrekta data.
Användarvisningsbild
e5frog
Inlägg: 475
Blev medlem: 18 juni 2005, 20:41:12
Ort: Älvängen
Kontakt:

Re: Disassemblera 8031-kod?

Inlägg av e5frog »

Läste eprommet igen på förmiddagen, det blev samma resultat som när den var kyld igår, inga uppenbara fel i textblocket, inga skillnader vid upprepade omläsningar.

Den skiljer på första biten på tre byte jämfört med den allra första dumpen (rumstemperatur och enbart USB-kopplade läsaren). Willem kör över parallelport och jag hade 12V (1.25A) koppad till den (kör den aldrig med USB ström).

Om någon är nyfiken så finns den stabila dumpningen bifogad, hittade något som heter SDCC för disassemblering, ska kika på det sen. Verkar det vettigt är det väl bara att montera ihop och testa igen. Man får väl lära sig 8031 programmering på köpet om man ska fatta något.

Det börjar med 020C0C02 068BFFFF FFFFFF02 0491FFFF...
Det verkar vara hopp till adresser, den första till $0C0C de andra är jag osäker på om bytesen kommer i "rätt" ordning eller inte, vet å andra sidan inte vilket adressområde eprommet ligger eller vilka alternativ som finns med 8031:an.
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Användarvisningsbild
lillahuset
Gått bort
Inlägg: 13969
Blev medlem: 3 juli 2008, 08:13:14
Ort: Norrköping

Re: Disassemblera 8031-kod?

Inlägg av lillahuset »

Har SDCC disassembler? Eller är det något annat än kompilatorn du har hittat? http://sdcc.sourceforge.net/
daer
Inlägg: 369
Blev medlem: 13 juni 2008, 22:15:27
Ort: Höör och Helsingborg, Skåne

Re: Disassemblera 8031-kod?

Inlägg av daer »

Här finns en hel del olika simulatorer och även annat till 8051.
http://bit.kuas.edu.tw/~8051/
Användarvisningsbild
e5frog
Inlägg: 475
Blev medlem: 18 juni 2005, 20:41:12
Ort: Älvängen
Kontakt:

Re: Disassemblera 8031-kod?

Inlägg av e5frog »

@daer: Kanon, ser ut att vara användarvänligt också.

@lillahuset: Joo... jag har för mig att jag läste det innan jag laddade ner. På sidan 94 i dokumentationen nämns "mcs51-disasml.pl" med beskrivningen "disassembler to the mcs51 instructions contained hex files"

På lunchen brände jag den version som Willem-programmeraren läst i en annan 2764, den läses hur fint som helst på USB-eprom-läsaren/brännaren. Kanske är så ändå att eprommet är trassligt på något sätt.
Senast redigerad av e5frog 12 augusti 2016, 16:07:39, redigerad totalt 1 gång.
Användarvisningsbild
säter
Inlägg: 35557
Blev medlem: 22 februari 2009, 21:16:35
Ort: Säter

Re: Disassemblera 8031-kod?

Inlägg av säter »

Intressant tråd det här.
Jag har en 8051 som jag skulle vilja läsa ur.
Är enda skillnaden mot 8031 det inbyggda epromet?
Användarvisningsbild
e5frog
Inlägg: 475
Blev medlem: 18 juni 2005, 20:41:12
Ort: Älvängen
Kontakt:

Re: Disassemblera 8031-kod?

Inlägg av e5frog »

Ja, vad jag kan se så är det 4kB ROM i 8051 - men 8031 måste ha externt minne.
kodar-holger
EF Sponsor
Inlägg: 970
Blev medlem: 26 maj 2014, 12:54:35
Ort: Karlskoga

Re: Disassemblera 8031-kod?

Inlägg av kodar-holger »

Observera att 8051 är mask-programmerad. D.v.s. programmet är inlagt i foto-maskerna som används när chippen tillverkas. Jag är osäker på om det går att läsa ut detta program ur en 8051. Dom programmerbara hette typ 8751.

Min GALEP-4 som kan läsa och programmera en massa olika kretsar har inte med 8051 i device-list men väl 8751. Men det är ju en programmerare så man kan ha valt bort 8051 för att den inte går att programmera. 8048 finns dock med. Det är en tidigare mask-programmerad mikrocontroller. Väljer man den finns läsa med men inte skriva. Tycker jag tråkigt nog pekar på att 8051 inte går att läsa alls.
Skriv svar