AVR - USB CDC

Moderator Persönliche Seite #4286222
Lesenswert?

Rufus Τ. F. schrieb:
> Es gibt hier zwei Algorithmen.

Das ist das Windows-Prinzip.

Andere machen das u. U. anders, bei Linux bekommst du die Teile
normalerweise in der Reihenfolge ihres Ansteckens einsortiert.
Parallel dazu existieren Symlinks in den Verzeichnissen
/dev/serial/by-id und /dev/serial/by-path:
1
jwunsch@mani 1418% ls -l /dev/serial/by-id/
2
total 0
3
lrwxrwxrwx 1 root root 13 Sep 25 10:15 usb-dresden_elektronik_deUSB_Levelshifter-if00-port0 -> ../../ttyUSB2
4
lrwxrwxrwx 1 root root 13 Sep 23 17:27 usb-dresden_elektronik_SensorTerminalBoard_DEG4UEJL-if00-port0 -> ../../ttyUSB1
5
jwunsch@mani 1419% ls -l /dev/serial/by-path/
6
total 0
7
lrwxrwxrwx 1 root root 13 Sep 23 17:27 pci-0000:00:1d.0-usb-0:1.6.3:1.0-port0 -> ../../ttyUSB1
8
lrwxrwxrwx 1 root root 13 Sep 25 10:13 pci-0000:00:1d.0-usb-0:1.6.6:1.0-port0 -> ../../ttyUSB0
9
lrwxrwxrwx 1 root root 13 Sep 25 10:15 pci-0000:00:1d.0-usb-0:1.6.7.3:1.0-port0 -> ../../ttyUSB2

Wie man sieht, gibt es eigentlich zweimal den deUSB_Levelshifter,
aber die haben (was mich jetzt etwas verwundert) keine Seriennummer
hinterlegt, sodass natürlich nur eins von beiden unter "by-id"
verlinkt worden ist.

Andere Betriebssysteme mögen das wieder anders handhaben.

Da das ein reines Problem der PC-Seite ist, habe ich das mal hierher
geschoben.  Die Firmware auf dem AVR hat darauf (abgesehen von der
Möglichkeit, sich per Seriennummer eindeutig bekannt zu machen)
keine Einflussmöglichkeit.
OP #4286268
Lesenswert?

So, heute kam Nachschub :-)

Es funktioniert problemlos.
Werden die Geräte einzeln eingesteckt, bekommen sie logischerweise alle 
denselben COM-Port (bei mir aktuell COM13, Windows). Weitere Geräte dann 
andere. Also erstmal keine Konflikte. Unschön ist natürlich, dass man 
aufpassen muss, welches Gerät nun tatsächlich welches ist, aber das war 
ja eh klar.

Stellt sich die Frage, wie man eine eindeutige oder zumindest 
ausreichend grosse Anzahl von Seriennummern in der Produktion 
hinbekommt. ID-Chips wären natürlich eine prima Möglichkeit, kostet aber 
extra. Gibt bestimmt irgendeine Software, die bei jedem 
Programmiervorgang einen Zähler in das Hex- oder eep-file einbaut. Zur 
Not aber auch schnell selbst geschrieben.


Danke für die Antworten
#4286288
Lesenswert?

H.Joachim S. schrieb:
> Stellt sich die Frage, wie man eine eindeutige oder zumindest
> ausreichend grosse Anzahl von Seriennummern in der Produktion
> hinbekommt.

Wenn es wirklich nur darum geht: jeder AVR wird mit Seriennummer = 0 
ausgeliefert und wählt sich eine zufällige aus wenn man das ihn das 
erste mal bestromt. Bei Längen >= 32Bit dürfte das zu Lebzeiten keine 
doppelten geben (ausser du verkaufst Millionen von deinen Dingern).

Ansonsten: Das eep mit paar Zeilen Python hingebogen für jeden Lauf.
Gast #4286310
Lesenswert?

Völlig gleiche USB-Devices sollte es nicht geben.
Das ist im Grunde genommen dasselbe wie bei zwei gleichen IPs usw.
Die Behandlung dieses Sonderfalles wird sich auch von Implementierung zu 
Implementierung, des USB-Treibers, unterscheiden.
Moderator Persönliche Seite #4286566
Lesenswert?

H.Joachim S. schrieb:
> Stellt sich die Frage, wie man eine eindeutige oder zumindest
> ausreichend grosse Anzahl von Seriennummern in der Produktion
> hinbekommt.

Wenn nicht mehr als 100 Stück am Tag produziert werden, kann man den
alten Seriennummern-Trick benutzen, der gern im DNS genommen wird:

YYYYMMDDNN (Jahr, Monat, Tag, Nummer am Tag)

also das erste heute hergestellte Gerät bekommt die

2015092500
Gast #4286571
Lesenswert?

Denk aber bitte daran, die Nummern zu protokollieren.

Benötigt der Kunde: Z.B. Max Mustermann ein Update, so sollte die 
aktuelle Nummer bekannt sein. Andernfalls kommt Dein System 
durcheinander.

Du kannst natürlich auch sagen: "Sch* drauf" und Du gibst ihm eine 
Nummer von heute, aber damit nimmst Du Dir die Möglichkeit eventuell die 
Hardwareversion zu erraten. Letztere ist ja indirekt mit dem 
Produktionsdatum verknüpft und sollte beim Update im Auge behalten 
werden.
Moderator Persönliche Seite #4289041
Lesenswert?

Markus -. schrieb:
> Und wenn man große Serien fertigen will:

… kann man auch noch die Dallas (jetzt Maxim) Onewire-Chips für
sowas benutzen, die brauchen nur ein Controllerpin. ;-)

Aber ich denke schon, dass man es in seiner Fertigung auf die Reihe
bekommen sollte, eine eindeutige Seriennummer im Flash oder EEPROM
zu hinterlegen, wenn man das will.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren