CJoy / USB-DevName

OP #6327866
Lesenswert?

Hallo,

habe zwei Joystickadapter nachgebaut und möchte im asm-SourceCode den 
DevName für die USB-Geräte ändern damit unter VICE64 die Joysticks mit 
unterschiedlichem Namen angezeigt werden.

Nach dem Compilieren mit "gavrasm" und dem Flashen per ArduinoISP, wird 
immer noch der alte Name angezeigt.

Link zum Projekt und Sourcecode: https://www.c64-wiki.de/wiki/CJoy

Folgende Änderung habe ich im Sourcecode eingetragen:

<CJoy> ersetz durch <Joy1>
1
;------------------------------------------------------------------------------------------
2
DevNameStringDescriptor:
3
    .db  (DevNameStringDescriptorEnd-DevNameStringDescriptor)*4-2,3;length, type: string descriptor
4
    .db  "Joy1"
5
;********************************************************************************
6
;*
7
;*  NOTE about DevNameStringDescriptor
8
;*
9
;*  This name will appear in game devices list control panel in Windows. 
10
;*  If you want to have several CJoy devices on the system you can 
11
;*  change this name together with Vendor ID to the one you like.
12
;*  Please note that for some reason only first 4 characters will be 
13
;*  displayed so there is no point making it longer than 4 characters.
14
;*
15
;********************************************************************************
16
DevNameStringDescriptorEnd:
17

18
NameStringDescriptor:
19
    .db  (NameStringDescriptorEnd-NameStringDescriptor)*4-2,3;length, type: string descriptor
20
    .db  "Joy1, ATMega8 based digital USB joystick V0.03"
21
NameStringDescriptorEnd:

Wer kann weiterhelfen ?
Beitrag #6327901 wurde von einem Moderator gelöscht.
OP #6327985
Lesenswert?

Wie kann ich sicher sein, dass das geänderte hex-File auch sauber 
übertragen wird ?

Habe den flash-Vorgang so gestartet:
avrdude -c avrisp -p atmega8 -P COM17 -b 19200 -U 
flash:w:CJoy_0.03_neu.hex

Anbei noch die Anzeige in VICE64
1
avrdude: AVR device initialized and ready to accept instructions
2

3
Reading | ################################################## | 100% 0.07s
4

5
avrdude: Device signature = 0x1e9307 (probably m8)
6
avrdude: NOTE: "flash" memory has been specified, an erase cycle will be performed
7
         To disable this feature, specify the -D option.
8
avrdude: erasing chip
9
avrdude: reading input file "CJoy_0.03_neu.hex"
10
avrdude: input file CJoy_0.03_neu.hex auto detected as Intel Hex
11
avrdude: writing flash (2532 bytes):
12

13
Writing | ################################################## | 100% 4.07s
14

15
avrdude: 2532 bytes of flash written
16
avrdude: verifying flash memory against CJoy_0.03_neu.hex:
17
avrdude: load data flash data from input file CJoy_0.03_neu.hex:
18
avrdude: input file CJoy_0.03_neu.hex auto detected as Intel Hex
19
avrdude: input file CJoy_0.03_neu.hex contains 2532 bytes
20
avrdude: reading on-chip flash data:
21

22
Reading | ################################################## | 100% 1.88s
23

24
avrdude: verifying ...
25
avrdude: 2532 bytes of flash verified
26

27
avrdude: safemode: Fuses OK (E:FF, H:DF, L:3F)
28

29
avrdude done.  Thank you.
Angehängte Dateien:
#6328023
Lesenswert?

Rainer S. schrieb:
> Wie kann ich sicher sein, dass das geänderte hex-File auch sauber
> übertragen wird ?

Glaub mir das funktioniert einwandfrei sonst würdest du eine 
Fehlermeldung bekommen.
Nochmal:
USB erwartet Unicode Strings du definierst aber normly Byte Strings. Das 
funktioniert nur dann wenn der USB Code die Strings vor dem Senden auf 
Unicode umcodiert.
Ich hatte dir ja schon usbview empfohlen um die Strings mal anzuschauen. 
Deine C64 Optionen sind erst mal unwichtig.
Im Source sind ja schon Hinweise enthalten dass wohl was faul ist. Das 
Device wird erst dann neu eingelesen, wenn du neue ids vergibst.
#6329490
Lesenswert?

Bei dem ersten Anstecken legt Windows eine pnf Datei an. Das ist im 
Prinzip ein compilierter Teil der inf. Diese musst du löschen damit das 
Device neu erkannt wird. Das wird aus Performance Gründen so gemacht und 
ist seit W98 unverändert. Ohne diesen Mechanismus würde es wesentlich 
länger dauern bis ein Device nach dem Anstecken verfügbar wäre.
Alternativ kannst du das Device auch in der Registry entfernen wenn du 
weißt was du tust.
Gast #6331749
Lesenswert?

Das Gerät im Devicemanager löschen und dann noch mal anschließen. 
Windows speichert sich jede Menge Informationen statisch, die nicht 
statisch sein sollten.

USB-Devices mit Windows zu entwickeln ist darum meist etwas schmerzhaft. 
Man weiss immer nicht, ob die Änderung nicht geklappt hat, oder Windows 
sich noch Daten der letzten Version gespeichert hat.

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