Sida 2 av 4

Re: Disassemblera 8031-kod?

Postat: 11 augusti 2016, 12:20:11
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.

Re: Disassemblera 8031-kod?

Postat: 11 augusti 2016, 15:27:09
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

Re: Disassemblera 8031-kod?

Postat: 11 augusti 2016, 18:04:05
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.

Re: Sv: Disassemblera 8031-kod?

Postat: 11 augusti 2016, 23:12:13
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?

Re: Disassemblera 8031-kod?

Postat: 12 augusti 2016, 00:13:29
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.

Re: Disassemblera 8031-kod?

Postat: 12 augusti 2016, 00:19:46
av säter
Hur fungerar det med rumstemperatur och Willem-brännare?

Re: Disassemblera 8031-kod?

Postat: 12 augusti 2016, 00:23:14
av e5frog
Ska kolla imorgon, nu blir det sängläge...

Re: Sv: Disassemblera 8031-kod?

Postat: 12 augusti 2016, 10:20:20
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.

Re: Disassemblera 8031-kod?

Postat: 12 augusti 2016, 11:36:09
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.

Re: Disassemblera 8031-kod?

Postat: 12 augusti 2016, 12:04:46
av lillahuset
Har SDCC disassembler? Eller är det något annat än kompilatorn du har hittat? http://sdcc.sourceforge.net/

Re: Disassemblera 8031-kod?

Postat: 12 augusti 2016, 12:37:20
av daer
Här finns en hel del olika simulatorer och även annat till 8051.
http://bit.kuas.edu.tw/~8051/

Re: Disassemblera 8031-kod?

Postat: 12 augusti 2016, 15:47:09
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.

Re: Disassemblera 8031-kod?

Postat: 12 augusti 2016, 15:58:56
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?

Re: Disassemblera 8031-kod?

Postat: 12 augusti 2016, 20:08:50
av e5frog
Ja, vad jag kan se så är det 4kB ROM i 8051 - men 8031 måste ha externt minne.

Re: Disassemblera 8031-kod?

Postat: 12 augusti 2016, 21:38:24
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.