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
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?
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?
Nennt sich wohl "Logic Analyser", z.b. https://www.saleae.com/logic oder China clones mit Sigrok http://www.sigrok.org/
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.
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.
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
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.
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).
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?
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.
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.
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.
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.
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 ?
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.
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.
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 : )
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
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.
>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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.