Forum: Mikrocontroller und Digitale Elektronik Mikrocontroller Steuerung disassemblieren


von Baldi O. (ottobald)


Lesenswert?

Ich habe hier die beiden Steuereinheiten einer Split Wärmepumpe. Es ist 
eine Außeneinheit mit einem uPD78F0536(A) Mikrokontroller (96kByte Flash 
und 5kByte RAM) und eine Inneneinheit mit uPD78F0513(A) (32kByte Flash 
und 1kByte RAM). In der Außeneinheit sitzt ein Kompressor mit 
entsprechender Inverter Treiberplatine. Es werden mehrere 
Temperatursensoren abgefragt, die Inverter Ansteuerung durchgeführt und 
der Ventilator angesteuert. In der Inneneinheit sitzen ebenfalls mehrere 
Sensoren, die Umwälzpumpe und die Verbindung zu einem LCD Controller HMI 
(Mensch Maschine Interface). Innen- und Außeneinheit kommunizieren über 
eine 3-Draht Verbindung miteinander. (vermutlich RS485). Auch die 
Kommunikation der Inneneinheit mit dem LCD HMI Controller erfolgt über 
solch eine 3 Draht Verbindung.
Nun zu dem Problem: nach dem Einspielen einer neuen Firmware wird die 
Umwälzpumpe der Inneneinheit nicht mehr ausgeschaltet, wenn der 
Heizprozess abgeschlossen ist. Das war bei der vorherigen Firmware nicht 
so. Ich habe mich natürlich an den Hersteller gewandt und um Abhilfe 
gebeten. Leider ohne Erfolg. Für die ist das verkauft - abgeschlossen - 
und damit zu Ende.

Jetzt meine Frage hier im Forum: Ich möchte den Code beider Controller 
disassemblieren und versuchen den Punkt zu finden an dem die besagte 
Subroutine vergessen worden ist zu implemtieren, die die Pumpe ansteuert 
und den Einsprung in die Subroutine hinzufügen.
Zusätzlich ist die Invertersteuerung leider nicht optimal und ich möchte 
andere Grenzen für die Schaltbedingungen der Inverterstufen vorgeben.

Eine Beschreibung der Funktionalität der Steuerung liegt mir vor. Also 
Schaltkriterien und Schaltgrenzen .... Auch der Hex-Code der beiden NEC 
Type Controller liegt mir vor. Musste ich ja bereits programmieren. Wie 
groß seht ihr die Chance das hinzubekommen? 32kByte bzw 96kByte sind ja 
nicht so riesig. Idee ist, nen Disassembler drüberlaufen zu lassen, zu 
kommentieren, zu ergänzen/zu ändern und anschließend zu assemblieren.

Ich denke, es handelt sich um die 78k0 Serie der NEC Microkontroller. 
Das Users Manual der NEC 78k0-k2 Mikrocontroller Familie mit der 
Beschreibung der Funktionen, Ports, Timer .... liegt mir ebenfalls vor.
Hat Jemand schon Erfahrung mit solchen Controllern?

von wendelsberg (Gast)


Lesenswert?

Baldi O. schrieb:
> Nun zu dem Problem: nach dem Einspielen einer neuen Firmware wird die
> Umwälzpumpe der Inneneinheit nicht mehr ausgeschaltet, wenn der
> Heizprozess abgeschlossen ist.

Nachlauf (auch mehrere Minuten) der Umwaelzpumpe kann auch so vorgesehen 
sein, damit sich die Inneneinheit nach Stop nicht noch zusaetzlich 
aufheizt..

wendelsberg

von Baldi O. (ottobald)


Lesenswert?

Nein, die Pumpe läuft nicht nur mehrere Minuten nach sondern bis in die 
Unendlichkeit.

von Bastler (Gast)


Lesenswert?

Einfacher (und mit Erfolgsaussicht >0) wäre die Steuerung der Pumpe 
extra aufzubauen (Abschalten wenn Kompressor nicht läuft). 128kB 
Firmware sind kein Pappenstiel. Die muß man erst mal durchschauen.

von Christian K. (christian_rx7) Benutzerseite


Lesenswert?

Das Vorgehen und die Firmwarefehler, welche von Version zu Version mehr 
werden, hört sich nach Junkers an.
Es ist vermutlich einfacher, die gesamte Steuerung raus zu werfen und 
gegen eine universelle zu tauschen.

Christian_RX7

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Baldi O. schrieb:
> Ich möchte den Code beider Controller disassemblieren und versuchen den
> Punkt zu finden an dem die besagte Subroutine vergessen worden ist zu
> implemtieren, die die Pumpe ansteuert und den Einsprung in die
> Subroutine hinzufügen.
Vergiss es. Aus 2 Gründen:
1. Ich würde Firmware verschlüsseln, vor ich sie nach draussen gebe.
2. Ohne sehr gute Kenntnisse der Prozessorarchitekur und des verwendeten 
Compilers wirst du wochenlang am Disassembly sitzen, denn dort hat kein 
Pointer und keine Sprungadresse einen sinnvollen Namen.

> einer Split Wärmepumpe
Ach, du heizt elektrisch...

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Die Analogie Kuh->Hamburger ./. Hamburger->Kuh trifft hier zwar nicht 
vollständig zu (immerhin wird nicht gefordert, den Quelltext aus dem 
Binärcode zu rekonstruieren), aber mehr als nur ein paar kByte 
unbekannten Code zu disassemblieren ist eine ... deftige Aufgabe.

von Noch einer (Gast)


Lesenswert?

Ja, vor ewigen Zeiten hatte ich mit einem 68000 Disassembler angefangen. 
Kam zu den Ergebnis - nur mit Anforderungsliste und C-Compiler kommt man 
schneller ans Ziel.

von Hp M. (nachtmix)


Lesenswert?

Bastler schrieb:
> 128kB
> Firmware sind kein Pappenstiel. Die muß man erst mal durchschauen.

Das kann man wohl sagen.
Ich wurstle seit langem am Programm von einem 68000 herum, in welchem 
Marconi zwei 6-stellige Geheimzahlen versteckt hat, die den Zugang auf 
Kalibrierwerte ermöglichen.
Gemeiner Weise stecken diese Codes wohl gar nicht im EPROM, sondern in 
einem externen EAPROM und da muß man erst einmal herausbekommen wo und 
wie das über die PPIs adressiert wird.
Zu Fuß, nur mit der nackten Disassembly, gehen da schon Tage ins Land, 
bis man überhaupt den Selbsttest beim Einschalten abgehakt hat.
Und dann kommen Dutzende von kleinen Subroutines mit Hunderten von 
Einsprungpunkten, deren Sinn es zu verstehen gilt.

Vielleicht komme ich eines Tages mal an den Punkt, wo ich sehe, wie die 
Menüführung funktioniert, um herauszufinden wo überhaupt die fraglichen 
Codes abgefragt werden, aber viel Hoffnung habe ich nicht mehr.
Deshalb liegt hier schon ein Raspi bereit, um den ganzen Motorola Kram 
zu ersetzen ...

P.S.:

Baldi O. schrieb:
> Ich denke, es handelt sich um die 78k0 Serie der NEC Microkontroller.

Ist das nicht der 4-Bitter ?
Habe ich vor 25 Jahren mal gemacht.
Übel, ätzend, igitt.

von Rudolph R. (rudolph)


Lesenswert?

Hp M. schrieb:
> Ist das nicht der 4-Bitter ?

Das sind schon 8-Bit µCs.

http://am.renesas.com/products/mpumcu/78k/78k0kx/78k0kx2/device/UPD78F0536AFC-AA1-A.jsp

Nur, NEC, bzw. Renesas ist ja schon etwas sehr exotisch, viel finden 
wird man da im Netz nicht.
Erstmal kommt man an die Steine von Renesas generell kaum heran.

Es gibt eine CubeSuite genannte Entwicklungs-Umgebung, eventuell kann 
man damit die Controller auslesen und Disassemblieren.
Wenn man denn einen geeigneten Programmer dafür hat.

von Baldi O. (ottobald)


Lesenswert?

Danke erst mal für die vielen Antworten. Also es handelt sich 
tatsächlich um 8 Bit CPUs mit der entsprechenden Peripherie. Also die 
USER Guides von NEC habe ich. Da ist alles sehr gut beschrieben. Der 
Befehlssatz des uC ist auch verfügbar.

So nun zu den einzelnen Beiträge: Also eine externe Steuerung der Pumpe 
aufzubauen geht natürlich, ist aber nicht ganz einfach, weil die Pumpe 
vor Start des Kompressors eingeschaltet werden muss und der Lauf als 
solches auch überwacht wird. Da ist ein Strömungsschalter im 
Hydraulikkreis, der sofort Alarm schlägt, wenn nach Einschalten der 
Pumpe keine Strömung existiert. Die Zirkulation ist leider die erste 
Funktion, die aktiviert - und natürlich auch überwacht wird, bevor der 
Kompressor startet.
Ich habe bereits einen Work-Around für das Problem mit der 
Pumpensteurung in der Form, dass das Problem nur dann auftritt, solange 
am LCD Display der Mode "Heißwasserbereitung" eingeschaltet ist - also 
so wie im Sommer üblich. Schaltet man manuell am LCD Display auf "keine 
Funktion" geht die Zirkulationspumpe auch wieder aus. Im Winter und in 
der Übergangszeit hat man zusätzlich auch "Hausheizung" aktiviert. Da 
tritt das Problem ebenfalls nicht auf, da nach "Heißwasserbereitung" 
gleich auf "Hausheizung" umgeschaltet wird. Momentan - im Sommer - sieht 
der Work Around so aus, dass ich per setzen eines Timers den Mode 
"Heißwasserbereitung" nur für 30min. einmal am Tag aktiviere. Dadurch 
wird die die "Heißwasserbereitung" automatisch nach 30 min. wieder 
deaktiviert und die Pumpe geht aus.

Jetzt zu der Frage, warum arbeite ich überhaupt mit elektrischem Strom, 
was bekanntermaßen ja sauteuer ist: Ich habe natürlich ein Tri-valentes 
Heizsystem im Haus. Also Wärmepumpe für die Warmwasserbereitung im 
Sommer, heizen in der Übergangszeit und Ölheizung im Winter, wenns 
draußen saukalt ist. Zusätzlich noch einen Kaminofen im Wohnzimmer für 
die mollige Wärme und knisternde Gemütlichkeit auf dem Bärenfell vorm 
Kaminofen am Sonntag Nachmittag. Außerdem haben wir PV auf dem Dach und 
machen unseren Strom selbst. Die kWh kostet uns also 19,2Cent. Ich lasse 
die WP im Sommer auch nur einmal am Tag laufen, heize den 180L 
Wassertank auf 50C auf und dann reicht das bis zum nächsten Mittag. 
Mittags haben wir auch immer soviel Strom von der PV, dass man nichts 
aus dem Netz holen muss. So kommen wir im Sommer auf Kosten für die 
WW-Bereitung von ca. 1 kWh (19,2 Cent) pro Tag. Das ist gnadenlos 
günstig. Die Ölheizung - die ich natürlich ab März nicht mehr an habe, 
würde am Tag ca. 1,3 L Öl verbrauchen - egal ob Wasser entnommen wird 
oder nicht - und das nur für Bereitstellungsverluste. das sind bei 
jetzigem Ölpreis von 60Cent/L ca. 80 Cent oder 4 mal so viel verglichen 
mit der WP pro Tag. Macht also Sinn im Sommer WW mit der WP zu machen.

Also es ist keine Junkers WP sondern eine AXEN. Die Steuerung ist von 
LYTRON. Aber das wird alles in China produziert und da denkt man anders 
über Kundenservice und Garantie und Gewährleistung. Deshalb muß ich 
selbst Hand anlegen oder "damit leben". Die Hydraulik der WP habe ich 
auch schon umgebaut: Zwei dicke Schnitzer - 1. Auch bei der WW-Bereitung 
wurde immer ein 40L Puffertank mit aufgeheizt, weil der seriell im 
Hydraulikkreis mit drinnen lag. Puffertank sehr schlecht gedämmt, sodass 
der am nächsten Tag natürlich wieder kalt war. Also jeden Tag 40 Liter 
Wasser zusätzlich mit aufheizen. 2. Die Tauscherwendel im TW Speicher 
wurde von unten nach oben durchflossen, sodass das heißeste Wasser unten 
im Tank war - und nicht oben - wie allgemein üblich - wo man entnimmt. 
Also das habe ich umgedreht und den Puffer seriell zur Hydraulik des 
Hausheizkreises gelegt - wie das sinnvoll ist.

Also die Firmware ist im Controller höchstwahrscheinlich nicht 
verschlüsselt, weil die Distribution der Firmware als solche 
verschlüsselt war. Da das Update verschlüsselt aber nicht funktionierte, 
habe ich die Firmware als HEX unverschlüsselt bekommen. Also prinzipiell 
könnte ich die Firmware direkt disassemblieren, weil ich sie ja bereits 
auf dem PC habe. Muß den Controller also nicht auslesen. Den Programmer 
habe ich natürlich. Die Entwicklungsumgebung CubeSuite wäre natürlich 
toll.

von klausr (Gast)


Lesenswert?

Für sowas wurde IDA(pro) gemacht. Das Problem: Selbst die kleinste 
Variante kostet ~500€. Es gibt noch die Freeware IDA 5.0. Allerdings 
weiß ich nicht, ob da die NEC 78k dabei sind.
https://www.hex-rays.com/products/ida/support/download_freeware.shtml

Aber: Auch mit IDApro ist das ganze noch sehr anspruchsvoll.

von Baldi O. (ottobald)


Lesenswert?

IDAPro mit NEC 78k0 plugin habe ich.

von Bestromer (Gast)


Lesenswert?

....bei den meisten Projekten ist disassemblieren die aufwändigste und 
am wenigsten zufriedenstellendste Methode...Ich selber stand vor solch 
einem Problem und kam letztendlich nach viel Zeitverbrennung zu dem 
Entschluss die Prozessorarchitektur samt Hardware zu studieren und meine 
ganz eigene neue Firmware zu schreiben.
Made in China muss nix schlechtes bedeuten, aber der Service ist dank 
der Schnelllebigkeit heutzutage leider überall nicht der beste ;-)
Was war vor Deinem Update so schlecht?..ist ein Downgrade möglich?
Manchmal ist die Devise "Never touch a running System" gar nicht so 
schlecht :)

von Baldi O. (ottobald)


Lesenswert?

Nein, downgrade kommt nicht in Frage, da noch viel viel viel schlechter. 
Da waren andere Grundfunktionen noch gar nicht implementiert 
(Invertersteuerung, Defrost, Antifreeze). Das scheint die erste Beta 
gewesen zu sein. Zumal ich die auch gar nicht habe und wohl auch nicht 
bekommen kann. Es ist ein Drama mit der Mentalität der Chinesen. Anfangs 
nett und freundlich, sehr hilfsbereit und dann nach 10 mails schläft 
alles ein. Keine Antworten mehr.

von F. F. (foldi)


Lesenswert?

Baldi O. schrieb:
> Anfangs
> nett und freundlich, sehr hilfsbereit und dann nach 10 mails schläft
> alles ein. Keine Antworten mehr.

Mal auf die Uhr geschaut?

Aber dann kriegste von mir noch eine. Kleine µC Schaltung für die Pumpe 
bauen und irgendwo die nötigen Signale abgreifen.
Wurde aber auch schon zweimal gesagt.

Ebenso wurde gesagt, dass es schwierig, bis unmöglich ist. Vermutlich 
ist die Anlage dann schon verrottet, wenn du das gedisselt hast und die 
Änderungen vorgenommen hast.
Wenn du die Steuerung nehmen willst, befasse dich mit der Programmierung 
und schreib es neu. Sonst nimm eine andere oder bau selbst eine.
Vielleicht kannst du ja was mit ner Siemens Logo machen? Ich weiß nicht 
wie viel an so einer Wärmepumpe hängt.

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.