Hardware Reference
In-Depth Information
enthalten. Für Firmware-Entwickler bedeutet das, dass dieser Descriptor nicht im
Festspeicher stehen darf, es sei denn, man möchte für jedes baugleiche Gerät die
Seriennummer aus dem Quellcode kompilieren und programmieren. Das würde
voraussetzen, dass man für jedes Gerät eine individuelle Firmware erstellen müsste.
Im praktischen Beispiel, das in diesem Buch behandelt wird, steht dieser String
Descriptor daher im User-flash-Speicherbereich.
;******************************************************************************
; USB Standard Request: GET_STRING_SERIAL_NUMBER
;******************************************************************************
GET_STRING_SERIAL_NUMBER
movlw 0x40
movff WREG,EEADR
;pointer to string
call
IN_StringDescriptor
bra
transtest_over_ctl_out
Wenn der Index 2 gewählt wird, erscheint bei Anklicken des Felds „Get String Des-
criptor“ folgende Antwort:
Die drei vorstehenden String Deskriptoren werden aus dem EEPROM-Bereich gele-
sen und von ASCII in UNICODE transformiert, bevor sie mit dem folgenden
Unterprogramm in den Control-IN Endpoint übertragen werden.
;******************************************************************************
; Load a string descriptor into the control IN endpoint
;******************************************************************************
IN_StringDescriptor
; The string is read out of EEPROM and transformed to UNICODE and loaded to the
; control IN file register space. The string is accessed via EEADR
; check UOWN-bit
movlw 0x04
movwf
FSR0L
movlw 0x04
movwf FSR0H
movff INDF0,WREG
btfsc WREG,7 ;UOWN-bit of BD0STAT
bra IN_StringDescriptor ;wait until SIE has released the control IN
endpoint
; load FSR0 with Control IN base address;
clrf
ByteCounter
Search WWH ::




Custom Search