Forum: Mikrocontroller und Digitale Elektronik CPUID auslesen


von R. F. (rfr)


Lesenswert?

Hallo allerseits,

ich erstelle eine Anwendung in Python und würde damit per USB mit einen 
Microcontrollerboard kommunizieren. Hierzu möchte ich erkennen, welcher 
Prozessor genau angeschlossen ist.

Gibt es eine Möglichkeit, dieses in Form einer CPUID anwendungsseitig 
mit Python zu erfahren?

Vielen Dank

Robert

von Georg G. (df2au)


Lesenswert?

Da die Glaskugel gerade zum Polieren außer Haus ist, wäre es nett, wenn 
du uns Näheres zum Prozessor sagen würdest, Hersteller und Typ so zum 
Anfang wäre schon mal gut.

von R. F. (rfr)


Lesenswert?

Na da ist doch genau das, was ich wissen will.
Wenn ich es wüsste, brauche ich nicht zu fragen.
Glaskugelfrei.

Robert

von Thomas Z. (usbman)


Lesenswert?

Nun ich mach das für meine CPUs regelmäßig allerdings in C. Also ja das 
ist kein Problem.

von Adam P. (adamap)


Lesenswert?

Ich gehe mal davon aus, dass du dir dann für die USB Kommunikation auch 
ein eigenes Protokoll (Befehle) definierst.

Wenn du mehrere Boards hast (mit je einem anderen µC),
dann könntest du "low-level Befehle" definieren, die alle Boards 
unterstützen, z.B. getCPUID.

Dann kannst du unterscheiden was angeschlossen ist, da sich die Befehle 
bzw. Funktionalität von den einzelnen Boards unterscheiden.

von Rolf M. (rmagnus)


Lesenswert?

R. F. schrieb:
> Na da ist doch genau das, was ich wissen will.

Nun, wenn du gerade irgendeinen x-beliebigen Prozessor da angeschlossen 
hast und jetzt per USB wissen willst, welcher das ist, wird's schwierig, 
denn nicht alle Prozessoren dieser Welt haben so eine ID, und die, die 
so eine haben, lassen sich nicht alle auf exakt die selbe Art auslesen. 
Manche µCs haben nicht mal selber USB. Die Auswahl wenigstens etwas 
einzuschränken, wäre da sicherlich sehr hilfreich, wenn das Auslesen der 
ID nicht zur Lebensaufgabe werden soll.

> Wenn ich es wüsste, brauche ich nicht zu fragen.

Ist denn keine Typenbezeichnung aufgedruckt?

von Georg G. (df2au)


Lesenswert?

R. F. schrieb:
> Na da ist doch genau das, was ich wissen will.

Dann ist die Antwort eindeutig: Nein.
Jeder Hersteller kocht sein eigenes Süppchen, nichts ist zueinander 
kompatibel.

von R. F. (rfr)


Lesenswert?

Ich will in Abhängigkeit von der CPU Entscheidungen in der Anwendung 
treffen, derzeit sind nur avr, ARM und PIC vorgesehen.

von Thomas Z. (usbman)


Lesenswert?

R. F. schrieb:
> Ich will in Abhängigkeit von der CPU Entscheidungen in der Anwendung
> treffen, derzeit sind nur avr, ARM und PIC vorgesehen.

Einfach in die USB Firmware jeder Familie ein usb comand einbauen was 
dir die jeweilige ChipId liefert und schon kannst du das unter Phyton 
auswerten. Mir ist natürlich klar dass du was anderes hören willst, aber 
das wäre ein Weg.
Eine Alternative wäre im Datenblatt zu schauen ob es einen eingebauten 
Weg gibt die ID über USB zu übertragen

von Stefan F. (Gast)


Lesenswert?

Die Programmiersprache Python an sich hat dazu keine Standard-Funktion. 
Wenn sie existiert, dann als hardwarespezifisches Modul. Das kann dann 
aber nur funktionieren, wenn Python und das Modul auf dem 
Mikrocontroller laufen.

In diesem Fall musst du die Doku deiner Mikro-Python Implementierung 
schauen.

Falls es Dir um ein Python Script auf dem PC geht: In diesem Fall musst 
du irgendwie mit dem Mikrocontroller kommunizieren. Also erfordert dies 
eine Firmware auf dem Mikrocontroller, die irgendwie die CPUID ausliest 
und an den PC weiter reicht. Auf dem PC muss dein Python Script mit der 
Firmware auf dem Mikrocontroller so kommunizieren, wie diese Firmware 
das verlangt.

Eine Standardlösung wirst du vergeblich suchen.

> derzeit sind nur avr, ARM und PIC vorgesehen

Ist dir bewusst, dass das mehr als 10.000 unterschiedliche Modelle von 
mehr als 10 Firmen sind?

von Frank K. (fchk)


Lesenswert?

R. F. schrieb:

> ich erstelle eine Anwendung in Python und würde damit per USB mit einen
> Microcontrollerboard kommunizieren. Hierzu möchte ich erkennen, welcher
> Prozessor genau angeschlossen ist.
>
> Gibt es eine Möglichkeit, dieses in Form einer CPUID anwendungsseitig
> mit Python zu erfahren?

Nein, das gibts nicht. Aber das angeschlosssene USB-Gerät identifiziert 
sich doch mit Hersteller-ID, Produkt-ID, Hersteller-String, 
Produkt-String und Seriennummern-String. Damit solltest Du rausfinden 
können, was an anderen Ende hängt und die Ansteuerung entsprechend 
wählen. So ist es bei USB-Geräten vorgesehen. Die Strings und IDs musst 
Du im USB-Stack auf der anderen Seite halt passend programmieren.

fchk

von georg (Gast)


Lesenswert?

Frank K. schrieb:
> Du im USB-Stack auf der anderen Seite halt passend programmieren

Das ist ein mit vernünftigem Aufwand gangbarer Weg, identifiziert 
zunächst aber das Board und nicht die CPU. Da ist es wohl am 
einfachsten, der TO legt sich auf dem PC eine Datenbank an, wo für jedes 
Board alles vermerkt ist was er wissen will. Ist ja alles sein eigenes 
Zeug, wenn ich es richtig vertanden habe - aber vielleicht kommt ja noch 
das eine oder andere Salamischeibchen.

Georg

von Axel S. (a-za-z0-9)


Lesenswert?

R. F. schrieb:
> ich erstelle eine Anwendung in Python und würde damit per USB mit
> einen Microcontrollerboard kommunizieren.

USB erlaubt eine Menge verschiedener Kommunikationsprotokolle. Und 
keines davon kommt ohne die Mitwirkung des µC aus. Sprich: wenn du die 
µC-Seite programmierst, dann kannst du da beliebige Abfragen vorsehen.

> Hierzu möchte ich erkennen, welcher Prozessor genau angeschlossen ist.
> Gibt es eine Möglichkeit, dieses in Form einer CPUID anwendungsseitig
> mit Python zu erfahren?

Klar. Du mußt deinem Gerät nur beibringen, daß es diese Information über 
das gewählte Protokoll an den Host weitergibt. Z.B. auf Anfrage.

Frank K. schrieb:
> das angeschlosssene USB-Gerät identifiziert
> sich doch mit Hersteller-ID, Produkt-ID, Hersteller-String,
> Produkt-String und Seriennummern-String. Damit solltest Du rausfinden
> können, was an anderen Ende hängt

georg schrieb:
> identifiziert zunächst aber das Board und nicht die CPU

Wenn der TE den USB-Stack in Software macht oder anderweitig Einfluß auf 
die USB-Deskriptoren nehmen kann (z.B. indem er ein passend 
programmiertes EEPROM an den USB-Chip hängt), dann kann er da alles 
reinschreiben, was er mag. Auch eine CPU-Id.

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.