Forum: Mikrocontroller und Digitale Elektronik "bus sniffer" oder sowas for Daten-/Adressbus gesucht


von Mondo H. (mondoelectra)


Lesenswert?

Liebe Community,

ich habe leider zu wenig Ahnung von aktuellen Entwicklungen 
softwarebasierter Controller und steige bei Angebot und Anwendung nicht 
durch, deshalb wende ich mich hier an die Fachmännder


Ich repariere gerade CPU basierte  Werkzeugmaschinen, Ablaufsteuerungen 
und Automaten aus den 80er Jahren.

Ich suche ein Tool, mit dem man einen 8bit Datenbus und den 7-8bit 
Adressbuss abgreift und sich dann im laufenden Betrieb anzeigen lassen 
kann, welcher Wert bei welcher Adresse geschrieben/gelesen wird.

So könnte ich Fehler, die von externen Devices, die am Bus hängen, 
kommen, besser erkennen.

Gibt es sowas, beispielsweise als Zusatzfunktion zu einem 
Logikanalysator?

Danke für Eure Tipps


Mondo

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Mondo H. S. schrieb:
> und den 7-8bit Adressbuss abgreift

Das wäre ein arg kleiner Adressbus. Bringst Du da vielleicht was 
durcheinander, oder übersiehst Du, daß es Controller/CPUs mit 
gemultiplextem Adress- und Datenbus gibt?

von Mondo H. (mondoelectra)


Lesenswert?

Hmm stimmt, ich habe zwar Controller, bei denen der Adressbus im Gerät 
nur 10 bit (A0-A9) groß ist (Anfang 80er Jahre!)
Die CPU hat aber 16 Adressleitungen oder ist multiplexed mit dem 
Datenbus.

Der Sniffer müsste diese Signale zweckmäßigerweise mit auswerten können. 
Am Besten wäre - nach meinem laienhaften Verständnis - ein Scanner, der 
mit, sagen wir 20 Mhz pro Kanal, so 24 bis 32 Kanäle hat und den man 
direkt an die CPU "klemmen" kann mit einer entsprechend konfigurierten 
IC-Klemme.

Die Software übernimmt dann die Auswertung der gescannten Signale und 
zweigt die gewünschten Register und Adressinhalte an.


Gibt es sowas?

von mich (Gast)


Lesenswert?

Nennt sich wohl "Logic Analyser", z.b. https://www.saleae.com/logic oder 
China clones mit Sigrok http://www.sigrok.org/

von Christian J. (Gast)


Lesenswert?

mich schrieb:
> Nennt sich wohl "Logic Analyser", z.b. https://www.saleae.com/logic oder
> China clones mit Sigrok http://www.sigrok.org/

Bestätige ich, salea sind wirklich gut zu gebrauchen und vor allem 
billig. Nur die Klemmen muss man sich noch dazu bestellen.

von Thomas R. (tinman) Benutzerseite


Lesenswert?

mich schrieb:
> Nennt sich wohl "Logic Analyser"

ja

> , z.b. https://www.saleae.com/logic oder
> China clones mit Sigrok http://www.sigrok.org/

nein, die vorgabe ist :

Mondo H. S. schrieb:
> 20 Mhz pro Kanal, so 24 bis 32 Kanäle

und damit sind jegliche Saleae (und deren clones) LAs nicht ausreichend.

Günstig und ausreichend wäre z.b. Hantek 4032L, beim 20MSa/s Abtastung 
und 64M Speichertiefe sind es etwas über 3 Sekunden die mn damit auf 
einmal beobachten kann.

von Mondo H. (mondoelectra)


Lesenswert?

Danke für Eure Tipps,
aber wie ich es verstehe, kann ein Logikanalyzer mit die Zustände 
bitweise in Abhängigkeit der Zeit graphisch anzuzeigen.

Gibt es da auch Software mit der man die Scanergebnisse frei abfragen 
und programmieren kann? Z.B., dass stets der aktuelle 8 bit Wert des 
Datenbusses angezeigt wird, und zwar dann, wenn eine bestimmte Adresse 
am Adressbuss anliegt oder irgendein AE, WE oder CS Signal vorhanden 
ist?

Danke für weitere Tipps
Mondo

von gvs (Gast)


Lesenswert?

Evtl. hilft dir Meilhaus ME REDLAB 1008S :: USB Mini-Mess-Labor;
die machen verschiedene Typen solcher Geräte (Datenolgger und Co).
Scheint auch Software dazu zu geben.
Gibts z.B. bei reichelt (unter PC-Messtechnik).

Zur Auswertung von solchen Signalen kann evtl. MathLab verwendet werden, 
je nach Hardware.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Ein Logikanalysator, der dafür geeignet sein müsste, ist der 
"LogicPort":

http://www.pctestinstruments.com/

Die zugehörige Software kann Bussignale zusammenfassen und stellt den 
anliegenden Wert numerisch dar (wobei das jeder LA machen können sollte, 
das ist nichts besonderes).

von Mondo H. (mondoelectra)


Lesenswert?

Danke, der LA1034 LOGICPORT scheint in die richtige Richtung zu gehen, 
ist mir aber ein wenig "over the top" für meine Ansprüche und Finanzen.

Sollte das laufende Anzeigen eines bestimmten Werts bestimmter 
zusammengefasster Kanäle zu dem bestimmten Zeitpunkt, an dem an 
bestimmten anderen Kanälen ein bestimmtes Bitmuster (Adresse + WE oder 
sowas) anliegt, nicht auch mit anderen Logiktestern machbar sein. Wer 
hat das schonmal gemacht?


Übrigens, könnte nicht auch eine "standalone" Einheit (ohne CPU und 
Controller) ausführbar sein, die aus einem numerischen Display (8.bit 
Daten, also zwei 7-Segmentanzeigen) den entsprechenden Treiberbausteinen 
mit 8 bit eingangsbus, mit 16 bit Adressdecoder und mit jeweils 
vorgeschalteten etwas höherohmigen Eingangspuffern und 
freikonfigurerbarer Verdrahtung zu den Klemmen nicht auch für meinen 
Zweck funktionieren?

von Marc V. (Firma: Vescomp) (logarithmus)


Lesenswert?

Mondo H. S. schrieb:
> Am Besten wäre - nach meinem laienhaften Verständnis - ein Scanner, der
> mit, sagen wir 20 Mhz pro Kanal, so 24 bis 32 Kanäle hat und den man
Mondo H. S. schrieb:
> Übrigens, könnte nicht auch eine "standalone" Einheit (ohne CPU und
> Controller) ausführbar sein, die aus einem numerischen Display (8.bit
> ....
> freikonfigurerbarer Verdrahtung zu den Klemmen nicht auch für meinen
> Zweck funktionieren?

 Klar, nur dass du 20MHz schnell lesen kannst, bezweifle ich.

von Hans-Georg L. (h-g-l)


Lesenswert?

Wenn die Bussteuerung deines Controllers Synchronisations Signale
hat, mit denen man den Bus anhalten kann geht das auch mit 32 Led.

Plus ein Taster zum weitersteppen.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Mondo H. S. schrieb:
> Übrigens, könnte nicht auch eine "standalone" Einheit (ohne CPU und
> Controller) ausführbar sein, die aus einem numerischen Display (8.bit
> Daten, also zwei 7-Segmentanzeigen) den entsprechenden Treiberbausteinen
> mit 8 bit eingangsbus, mit 16 bit Adressdecoder und mit jeweils
> vorgeschalteten etwas höherohmigen Eingangspuffern und
> freikonfigurerbarer Verdrahtung zu den Klemmen nicht auch für meinen
> Zweck funktionieren?

Na klar, so etwas kann man selberbauen.

Ich habe --vor Äonen-- mal ein 8-Bit-System mit so etwas debuggt. Dazu 
habe ich für Daten- und Adressbus sowie ein paar Steuerleitungen Latches 
und LEDs angelegt, und einen Zähler Takte nach Reset zählen lassen. Mit 
einem Komparator und einer Handvoll Drehschalter am anderen Ende wurde 
festgelegt, der wievielte Takt nach Reset die Latches ansteuern sollte.

Mit sehr viel Geduld habe ich so die ersten zwei- oder dreitausend 
Taktzyklen des 8-Bit-Systems beobachten können ... und viel über den 
verwendeten Mikroprozessor gelernt.

Den kritischen Fehler im ROM konnte ich damit finden, ein Freund hatte 
einen EPROM-Brenner und mit einem einfachen Patch war das Problem 
behoben.

Nur ist das ganze sehr, also wirklich sehr zeitraubend.

von Mondo H. (mondoelectra)


Lesenswert?

Marc Vesely schrieb:

>  Klar, nur dass du 20MHz schnell lesen kannst, bezweifle ich.

In einer softwarebasierten Version meines Wunschgerätes werden die Werte 
zwischengespeichert. In einer "Notvariante", die ich aber vermeiden 
will, wird das System durch Anklemmen eines externen Taktgebers 
runtergetaktet.

 Außerdem kann das Datum am Display ja auch hardwareseitig "gepeichert" 
werden, in dem der Eingang a Displaytreiber nicht mehr enabled wird, 
oder?

Wesentlich ist nach meinem Verständnis aber, dass in den Maschinen, die 
ich testen will in den Adressen,die mich interessieren, die Datenwerte 
nur selten upgedated werden. Die hohe Scangeschwindigkeit bräuchte ich 
da nur, um den Zeitpunkt abzupassen, wenn die entsprechende Adresse am 
Adressbus liegt, oder bei gemultiplexten Bussen.



Die Idee mit den LEDs ist nicht schlecht, aber ich kann bitmuster so 
schnell nicht geistigb umrechnen, und ich will sehen, ob die Zelle z.B. 
sich kontinuierlich von 10 auf 7F ändert, wenn ein Sensor betätigt wird, 
oder ob der Druck einer Tastenkombination den Wert 4A erzeugt.

von Hans-Georg L. (h-g-l)


Lesenswert?

Mondo H. S. schrieb:
> Die Idee mit den LEDs ist nicht schlecht, aber ich kann bitmuster so
> schnell nicht geistigb umrechnen, und ich will sehen, ob die Zelle z.B.
> sich kontinuierlich von 10 auf 7F ändert, wenn ein Sensor betätigt wird,
> oder ob der Druck einer Tastenkombination den Wert 4A erzeugt.

Was ist bei dir eine Zelle ? Ein Ram Inhalt ?

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Wenn Du nur den Inhalt einer einzelnen Adresse des Speichers 
darstellen willst, dann ist Dein Ansatz natürlich umsetzbar. Das ganze 
hörte sich aber so an, als wolltest Du den kompletten Bus abhören, und 
also alle Schreib-/Lesezugriffe auf alle Adressen. Die lassen sich mit 
einem einzelnen Display logischerweise nicht darstellen.

von Mondo H. (mondoelectra)


Lesenswert?

Hans-Georg Lehnard schrieb:

>
> Was ist bei dir eine Zelle ? Ein Ram Inhalt ?

Ja, genau. Danke für eure Unterstützung!

Mein Problem, das ich lösen will, hängt zusammen mit dem Daten und 
Adressbussen in diesen Maschinen. Der Fehler ist nicht in Programm oder 
in der CPU zu suchen, sondern in den peripheren, oft abenteuerlich 
designten Geräten, die alle am Bus hängen. Es ist nur sehr schwer, die 
einzeln vom Bus abzuhängen, um zu sehen, wer hier wann falsche Daten 
sendet oder nicht richtig empfängt. Ideal wäre es daher, ich könnte 
meinen "Scanner" auf eine bestimmte Adresse einstellen und dann laufend 
überwachen, was dort ankommmt oder von der Peripherie daraufhin 
umgesetzt wird.
Wenn ich alle Busse an der CPU abgreife, kann ich, nach meinem 
Laienverständnis doch die Adressen der Peripherie aber auch des 
Speicherzellen jeweils einzeln abfragen. Zum Speicher: Ich habe den 
Eindruck, dass die Programme so gestrickt sind, dass diesselben Daten 
immer an derselben Adresse abgelegt werden; deshalb meine Idee der 
Überwachung einzelner Adressen. Daneben hatte ich auch schon 
Speicherausfälle. Da es aber 8k oder 4kx1.bit Speicher sind, war es 
nicht immer einfach herauszufinden, auf welchem der 8 Chips ein Bit 
hängt.

von Fitzebutze (Gast)


Lesenswert?

Hi,

ein anderer Ansatz wäre, einen dedizierte Bus-Sniffer auf FPGA-Basis zu 
entwickeln. U.a. habe ich solche Sachen mit relativ günstiger HW 
(Papilio, oder Cesys EFM01-Boards) umgesetzt. Was halt nicht günstig 
ist, ist die Entwicklungszeit. Wenn es ein Produkt zum Debuggen einer 
speziellen Architektur sein soll, rechtfertigt sich das allerdings 
gegenüber einem klassischen Logik-Analyzer, der in gewissen Dingen eben 
begrenzt ist, bzw. das 'Hacken' des FPGAs erfordert. Da kann man's dann 
glich selbermachen (wenn man's kann : )

von Georg (Gast)


Lesenswert?

Hallo,

es gibt natürlich Logikanalysatoren, die das alles können, aber die sind 
preislich ausser Reichweite und ausserdem sehr aufwendig zu bedienen, 
was dazu führt, dass sie auch in Firmen, die einen haben, nur selten 
benutzt werden.

Was du dir aber selber relativ einfach basteln könntest, wäre ein 
1-Adress-Sniffer: du stellst die zu überwachende Adresse ein 
(Hexschalter) und stellst auf einer Anzeige den Dateninhalt der letzten 
Schreib- wahlweise auch Leseaktion dar. Die Auswertung der Bussignale 
RD, WR usw. musst du ja nur für dein System machen, nicht universell wie 
bei einem LA.

Georg

von Thomas (kosmos)


Lesenswert?

Im Chiptuning Bereich gibt es RAM/ROM Emulatoren, da kann man im 
laufenden Betrieb sehen wo drauf zugegriffen wird und kann Daten 
verändern um dem µC also im Betrieb andere Daten unterzuschieben.

von Amateur (Gast)


Lesenswert?

>aber wie ich es verstehe, kann ein Logikanalyzer mit die Zustände
>bitweise in Abhängigkeit der Zeit graphisch anzuzeigen.

Ist dieser aber nicht programmierbar oder besonders Clever, so bekommst 
Du nur ein Log, ohne jeden Zusammenhang.
Selbst dieses Log ist nicht nutzbar, wenn die Zusammenhänge nicht 
nachvollziehbar sind.

Oft gilt z.B.: Es ist sch**-egal was auf dem Datenbus los ist, solange 
das Strobe-Signal fehlt. Was nutzen Dir also ein ns-genaues Log, wenn 
die Daten aus verschiedenen Quellen "zusammengesetzt" wurden und nur der 
eine Zeitpunkt interessiert. Beschäftigungstherapie für die Festplatte.

Was nutzt Dir die Aufzeichnung eines gemultiplexten Adressbusses, wenn 
Du die Teilblöcke nicht zusammensetzen kannst und nicht explizit die 
Gültigkeit referierbar ist.

Wie auch heute gibt es viele prozessorspezivische Signale, deren 
Bedeutung sich erst nach einem intensiven Studium der zugehörigen 
Handbücher erschließt.

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.