Lowlevel
Lowlevel => Lowlevel-Coding => Thema gestartet von: Relbmessa am 18. February 2013, 22:02
-
Hallo
ich bin gerade dabei mich mit EHCI zu beschäftigen. (Asynrchronous Bulk Control)
Meine Frage:
Wird der Current qTD Pointer vom Queue Head (EHCI-Spec. Seite-46 3/12/2002) als Zeiger eingetragen?
Ich habe eine einfache EHCI Daten Struktur gefunden und da ist der Current qTD Pointer Null!
Nun bin ich einwenig ratlos.
Vielleicht hat ja einer von euch einen Tipp für mich.
Gruß
Relbmessa
-
Hallo ,
leider konnte keiner helfen. :?
Habe jetzt ein Buch gekauft! :evil:
Hier nun aber mein erstes Ergebnis.
folgender Beispiel Code antwortet mit dem Geräte-Descriptor :-D;--------------------------------------;Asynchronous-Liste-----------------------------
;---------------------------------------Queue Head A------------------------------------
mov dword [0x00600000] , 0x00600202 ;00-03 Bit 02-01 Typ->hier QH Link Pointer
mov dword [0x00600004] , 0x8040E000 ;07-04 Bit:13-12 1b-0b High-Speed+Bit-15(H) Bit-14 hig->DTC
mov dword [0x00600008] , 0x40000000 ;0B-08 Mult Bit 31-30
mov dword [0x0060000C] , 0x0 ;0F-0C Current qTD Pointer Bit 31-05
mov dword [0x00600010] , 0x00600061 ;13-10 Next qTD Pointer Bit 31-05;/Point. muß aktiviert werden
mov dword [0x00600014] , 0x00000001 ;17-14 Alternate Next qTD Pointer Bit 31-05
;---------------------------------------------------------------------------------------
;----------------------TD-0-------------------------------------------------------------
mov dword [0x00600060] , 0x006000A0 ;Next qTD Pointer Bit 31-05 /Bit 04-01-> Null /Bit 0 T
mov dword [0x00600064] , 0x00000001 ;Alternat Next qTD Pointer /Bit 04-01-> Null /Bit 0 T
mov dword [0x00600068] , 0x00080E80 ;dt=0/Total-Bytes to Transfer/IOC/C_Page/Cerr/PID->setup Token/Status
mov dword [0x0060006C] , 0x00600120 ;Buffer Pointer (Page 0) Bit 31-12
mov dword [0x00600070] , 0x00601000 ;Buffer Pointer (Page 1) Bit 31-12
mov dword [0x00600074] , 0x00602000 ;Buffer Pointer (Page 2) Bit 31-12
mov dword [0x00600078] , 0x00603000 ;Buffer Pointer (Page 3) Bit 31-12
mov dword [0x0060007C] , 0x00604000 ;Buffer Pointer (Page 4) Bit 31-12
;--------------------------qTD Nr002-----IN--------------------------------------------
mov dword [0x006000A0] , 0x006000E0 ;Next qTD Pointer Bit 31-05 /Bit 04-01-> Null /Bit 0 T
mov dword [0x006000A4] , 0x006000E0 ;Alternat Next qTD Pointer /Bit 04-01-> Null /Bit 0 T
mov dword [0x006000A8] , 0x80400D80 ;dt=1/Total-Bytes to Transfer/IOC/C_Page/Cerr/PID-> IN Token/Status
mov dword [0x006000AC] , 0x00600128 ;Buffer Pointer (Page 0) Bit 31-12
mov dword [0x006000B0] , 0x00601000 ;Buffer Pointer (Page 1) Bit 31-12
mov dword [0x006000B4] , 0x00602000 ;Buffer Pointer (Page 2) Bit 31-12
mov dword [0x006000B8] , 0x00603000 ;Buffer Pointer (Page 3) Bit 31-12
mov dword [0x006000BC] , 0x00604000 ;Buffer Pointer (Page 4) Bit 31-12
;--------------------------qTD Nr003-----IN--------------------------------------------
; mov dword [0x006000E0] , 0x01 ;Next qTD Pointer Bit 31-05 /Bit 04-01-> Null /Bit 0 T
; mov dword [0x006000E4] , 0x01 ;Alternat Next qTD Pointer /Bit 04-01-> Null /Bit 0 T
; mov dword [0x006000E8] , 0x80400D80 ;dt=1/Total-Bytes to Transfer/IOC/C_Page/Cerr/PID-> IN Token/Status
; mov dword [0x006000EC] , 0x0 ;Buffer Pointer (Page 0) Bit 31-12
; mov dword [0x006000F0] , 0x0 ;Buffer Pointer (Page 1) Bit 31-12
; mov dword [0x006000F4] , 0x0 ;Buffer Pointer (Page 2) Bit 31-12
; mov dword [0x006000F8] , 0x0 ;Buffer Pointer (Page 3) Bit 31-12
; mov dword [0x006000FC] , 0x0 ;Buffer Pointer (Page 4) Bit 31-12
;---------------------------------------------------------------------------------------
;---------------------------------------Queue Head B------------------------------------
mov dword [0x00600200] , 0x00600402 ;00-03 Bit 02-01 Typ->hier QH Link Pointer
mov dword [0x00600204] , 0x80406000 ;07-04 Bit 13-12 0-0 FullSpeed +Bit-14 hig->DTC
mov dword [0x00600208] , 0x40000000 ;0B-08 Mult Bit 31-30
mov dword [0x0060020C] , 0x0 ;0F-0C Current qTD Pointer Bit 31-05
mov dword [0x00600210] , 0x00000001 ;13-10 Next qTD Pointer Bit 31-05
mov dword [0x00600214] , 0x00000001 ;17-14 Alternate Next qTD Pointer Bit 31-05
;---------------------------------------------------------------------------------------
;
;---------------------------------------Queue Head C------------------------------------
mov dword [0x00600400] , 0x00600002 ;00-03 Bit 02-01 Typ->hier QH Link Pointer
mov dword [0x00600404] , 0x80406000 ;07-04 Bit 13-12 0-0 FullSpeed +Bit-14 hig->DTC
mov dword [0x00600408] , 0x40000000 ;0B-08 Mult Bit 31-30
mov dword [0x0060040C] , 0x0 ;0F-0C Current qTD Pointer Bit 31-05
mov dword [0x00600410] , 0x00000001 ;13-10 Next qTD Pointer Bit 31-05
mov dword [0x00600414] , 0x00000001 ;17-14 Alternate Next qTD Pointer Bit 31-05
;---------------------------------------------------------------------------------------
;-------------------Transfer Descriptor------------------------------------------------
;--------------------------Blatt A-----------------------------------------------------
;-------------------------Buffer für qTD Nr.001--------------------------------------------------------------
mov dword [0x00600120] , 0x01000680 ;Get_Descriptor
mov dword [0x00600124] , 0x00400000 ;
;--------------- Hier--Set EHCI Register Current Asynronous-List-Address---------------------------------
; mov dword [0xFF27FC38] , 0x00600000
;------------------------------
Zum Test verwendete ich:
Transzend 1Giga ca. 5 Jahre alt ok
Transzend 8 Giga ca. 3 Jahre alt ok
Acer 1Giga ca. X Jahre alt ok
Kingston 4Giga negativ
Cruzer 4Giga negativ
(sind auch sehr lahm)
ich arbeite weiter :-P
Relbmessa
-
Gute Nacht ,
hier nun ein weiterer Baustein für Die die sich auch mit EHCI rumplagen. :?
Mein kleiner Programmausschnitt hilft vielleicht ein wenig weiter! :-D
Die Kommentare müssten als Erklärung wohl reichen.
Wenn nicht , üben,üben,üben oder Jemanden fragen der mehr Wissen angeäuft hat. :evil:
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;pm61S_P_350_Version-0.03.1_alpha/EHCI_port-0-Enumeration_Set_address-Set_configuraton
;-------------------------------------------------------------------------------------
;EHCI -> Asynchronous Schedule wird nach Programmstart aktiviert
;----------------------------------------------------------------------
;Enumeration -> set_address -> set_configuration (hier Port-0)
;------------------------------INFO----------------------------------
;USB 2.0 Geräte---------------------(F2-OK)--------------------------
;Grundprogramm SanDisk Cruzer-4GIGA
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;USB 3.0 Geräte---------------------(F2-OK)---------------------------
;Transcend 32-GIGA
;SanDisk 64-GIGA Extreme
;;;;;;;;;;;;;;;;;;;;;;;;
;Info-Endpunkte---------
;EP-1 01 OUT
;EP-2 82 IN
;------------------------------INFO-ende------------------------------
;-----------------------------------------------------------------ENDE
;Info
;---------------------------------------------------------------------
;--------------------------------------------------------------------------
geraet_am_port_null dd 0 ;Value-0 -> kein Gerät am Port /Reg 44h PORTSC0
;--------------------------------------------------------------------------
P_020: ;Test Gerät am Port-0 /Port und Status
;--------------------------------------------------------------------------
mov byte [0xB8000+25*154-12+49*2], "J"
mov byte [0xB8000+25*154-12+49*2+1],0xAF
;-------------------------------------------------------------
;Hier Programm
;---------------------------------------------------------------------------
mov eax , [0xFF27FC64]
mov [geraet_am_port_null] , eax
;--------------------------------------------------------------
mov dword [Programm_auswahl] , 0x04*0 ;zurück setzen
ret
;------------------------------------------------------------------
P_021:
;--------------------------------------------------------------------------
mov byte [0xB8000+25*154-12+50*2], "1"
mov byte [0xB8000+25*154-12+50*2+1],0xAF
;-------------------------------------------------------------------
;Hier Programm !!
;-------------------------------------------------------------------
cmp byte [geraet_am_port_null] , 0x03
je geraet_am_port_null_ja
;-------------------------------------------------------------------
mov dword [Programm_auswahl] , 0x04*0 ;zurück setzen
ret
;--------------------------------------------------------------------------------
geraet_am_port_null_ja:
mov eax , start_matrix_pointer ;Ziel address
xor ebx , ebx
add eax , 0+4+4+4+4+4 ;dword löschen Matrix-Pointer Nr6 P_021
mov [eax] , ebx ;wird auf Null gesetzt (P_000)
;---------------------Parameter Pause-------------------------------------------
mov word [pause_aktiviert] , 200 ;
mov dword [weiter_mit_p] , 0x04*22
mov dword [Programm_auswahl] , 0x04*0 ;zurück setzen
ret
;--------------------------------------------------------------------------------
P_022:
;--------------------------------------------------------------------------
mov byte [0xB8000+25*154-12+51*2], "2"
mov byte [0xB8000+25*154-12+51*2+1],0xAF
;--------------------------------------------------------------------------
;Hier Programm !!
;-------------------------------------------------------------------------
mov dword [0xFF27FC64] , 0x0100 ;EHCI. reset enable ->Port 0
;---------------------Parameter Pause-------------------------------------------
mov word [pause_aktiviert] , 200 ;
mov dword [weiter_mit_p] , 0x04*23
;-------------------------------------------------------------------------
mov dword [Programm_auswahl] , 0x04*0 ;zurück setzen
ret
;-----------------------------------------------------------------------------
P_023:
;--------------------------------------------------------------------------
mov byte [0xB8000+25*154-12+52*2], "3"
mov byte [0xB8000+25*154-12+52*2+1],0xAF
;--------------------------------------------------------------------------
mov dword [0xFF27FC64] , 0x1844 ;EHCI: reset disable u. resume ->Port 0
;-------------------------------------------------------------------------
; mov dword [0xFF27FC64] , 0x0445 ;0x040 Test reset-aus ->Port 0 geht auch??
;-------------------------------------------------------------------------
;---------------------Parameter Pause-------------------------------------------
mov word [pause_aktiviert] ,2 ;
mov dword [weiter_mit_p] , 0x04*24
mov dword [Programm_auswahl] , 0x04*0 ;zurück setzen
ret
;-----------------------------------------------------------------------------
;--------------------------------------------------------------------------
P_024:
;--------------------------------------------------------------------------
mov byte [0xB8000+25*154-12+53*2], "4"
mov byte [0xB8000+25*154-12+53*2+1],0xAF
;--------------------------------------------------------------------------
;Hier Programm !!
;-------------------------------Set_address----------------------------------------
mov byte [0x00600010] , 0x60;Enable pointer 13-10 Next qTD Pointer Bit 31-05
;-------------------------------------------------------------------------
;---------------------Parameter Pause-------------------------------------------
mov word [pause_aktiviert] ,2 ;
mov dword [weiter_mit_p] , 0x04*25
mov dword [Programm_auswahl] , 0x04*0 ;zurück setzen
ret
;--------------------------------------------------------------------------
P_025:
;--------------------------------------------------------------------------
mov byte [0xB8000+25*154-12+54*2], "5"
mov byte [0xB8000+25*154-12+54*2+1],0xAF
;--------------------------------------------------------------------------
;Hier Programm !!
mov byte [0x00600010] , 0x61;disable pointer 13-10 Next qTD Pointer Bit 31-05
;-------------------------------Set_Configuration------------------------------------
mov byte [0x00600210] , 0x60;enable pointer 13-10 Next qTD Pointer Bit 31-05
;----------------------------------------------------------------------------------
mov dword [0x00600000] , 0x00600202 ;00-03 Bit 02-01 Typ->hier QH Link Pointer (aktivieren)
;--------------------------------------------------------------------------
;---------------------Parameter Pause-------------------------------------------
mov word [pause_aktiviert] ,2 ;
mov dword [weiter_mit_p] , 0x04*26
;------------------------------------------------------
mov dword [Programm_auswahl] , 0x04*0 ;zurück setzen
ret
;-----------------------------------------------------------------------------
P_026:
;--------------------------------------------------------------------------
mov byte [0xB8000+25*154-12+55*2], "6"
mov byte [0xB8000+25*154-12+55*2+1],0xAF
;--------------------------------------------------------------------------
;Hier Programm !! ZEIGER DISABLE
;-------------------------------Set_Configuration----------------------------------
mov byte [0x00600210] , 0x61;disable pointer 13-10 Next qTD Pointer Bit 31-05
;------------------------------------------------------------------------
mov dword [Programm_auswahl] , 0x04*0 ;zurück setzen
ret
;--------------------------------------------------------------------------------
;---------------------------------------------------------------------
P_030: ;Asynchronous-Liste
;--------------------------------------------------------------------------
mov byte [0xB8000+25*154-12+59*2], "0"
mov byte [0xB8000+25*154-12+59*2+1],0xAF
;--------------------------------------------------------------------------
;Hier Programm !!
;---------------------------------------Queue Head A------------------------------------
mov dword [0x00600000] , 0x00600002 ;00-03 Bit 02-01 Typ->hier QH Link Pointer
mov dword [0x00600004] , 0x8008E000 ;07-04 Bit:13-12 1b-0b High-Speed+Bit-15(H) Bit-14 hig->DTC/Dev_addr
mov dword [0x00600008] , 0x40000000 ;0B-08 Mult Bit 31-30
mov dword [0x0060000C] , 0x0 ;0F-0C Current qTD Pointer Bit 31-05
mov dword [0x00600010] , 0x00600061 ;13-10 Next qTD Pointer Bit 31-05
mov dword [0x00600014] , 0x00000000 ;17-14 Alternate Next qTD Pointer Bit 31-05
;---------------------------------------------------------------------------------------
;----------------------TD-0-qTD Nr000---------------------------------------------------------------------
mov dword [0x00600060] , 0x006000A0 ;Next qTD Pointer Bit 31-05 /Bit 04-01-> Null /Bit 0 T
mov dword [0x00600064] , 0x00000001 ;Alternat Next qTD Pointer /Bit 04-01-> Null /Bit 0 T
mov dword [0x00600068] , 0x00080E80 ;dt=0/Total-Bytes to Transfer/IOC/C_Page/Cerr/PID->setup T/S
mov dword [0x0060006C] , 0x00600120 ;Buffer Pointer (Page 0) Bit 31-12
mov dword [0x00600070] , 0x00601000 ;Buffer Pointer (Page 1) Bit 31-12
mov dword [0x00600074] , 0x00602000 ;Buffer Pointer (Page 2) Bit 31-12
mov dword [0x00600078] , 0x00603000 ;Buffer Pointer (Page 3) Bit 31-12
mov dword [0x0060007C] , 0x00604000 ;Buffer Pointer (Page 4) Bit 31-12
;--------------------------qTD Nr001-----IN--------------------------------------------
mov dword [0x006000A0] , 0x006000E1 ;Next qTD Pointer Bit 31-05 /Bit 04-01-> Null /Bit 0 T
mov dword [0x006000A4] , 0x006000E1 ;Alternat Next qTD Pointer /Bit 04-01-> Null /Bit 0 T
mov dword [0x006000A8] , 0x80000D80 ;dt=1/Total-Bytes to Transfer/IOC/C_Page/Cerr/PID-> OUT T/S
mov dword [0x006000AC] , 0x00 ;Buffer Pointer (Page 0) Bit 31-12
mov dword [0x006000B0] , 0x00 ;Buffer Pointer (Page 1) Bit 31-12
mov dword [0x006000B4] , 0x00 ;Buffer Pointer (Page 2) Bit 31-12
mov dword [0x006000B8] , 0x00 ;Buffer Pointer (Page 3) Bit 31-12
mov dword [0x006000BC] , 0x00 ;Buffer Pointer (Page 4) Bit 31-12
;-------------------------Buffer für qTD Nr.001--------------------------------------------------------------
; mov dword [0x00600120] , 0x01000680 ;Get_Descriptor
; mov dword [0x00600124] , 0x00400000 ;
;-------------------------------------------------------------
mov dword [0x00600120] , 0x00010500 ;Set_address
mov dword [0x00600124] , 0x00000000
;---------------------------------------------------------------------------------------
mov dword [Programm_auswahl] , 0x04*31 ;zurück setzen-weiter nach
ret
;-----------------------------------------------------------------------------
P_031:
;--------------------------------------------------------------------------
mov byte [0xB8000+25*154-12+60*2], "A"
mov byte [0xB8000+25*154-12+60*2+1],0xAF
;--------------------------------------------------------------------------
;Hier Programm !!
;---------------------------------------Queue Head B------------------------------------
mov dword [0x00600200] , 0x00600202 ;00-03 Bit 02-01 Typ->hier QH Link Pointer
mov dword [0x00600204] , 0x0008E001 ;07-04 Bit:13-12 1b-0b High-Speed+Bit-15(H) Bit-14 hig->DTC/Dev_addr
mov dword [0x00600208] , 0x40000000 ;0B-08 Mult Bit 31-30
mov dword [0x0060020C] , 0x0 ;0F-0C Current qTD Pointer Bit 31-05
mov dword [0x00600210] , 0x00600261 ;13-10 Next qTD Pointer Bit 31-05 (P_025)
mov dword [0x00600214] , 0x00000000 ;17-14 Alternate Next qTD Pointer Bit 31-05
;---------------------------------------------------------------------------------------
;----------------------TD-0-qTD Nr000---------------------------------------------------------------------
mov dword [0x00600260] , 0x006002A0 ;Next qTD Pointer Bit 31-05 /Bit 04-01-> Null /Bit 0 T Acer(A0)
mov dword [0x00600264] , 0x00000001 ;Alternat Next qTD Pointer /Bit 04-01-> Null /Bit 0 T
mov dword [0x00600268] , 0x00080E80 ;dt=0/Total-Bytes to Transfer/IOC/C_Page/Cerr/PID->setup Token/Status
mov dword [0x0060026C] , 0x00600320 ;Buffer Pointer (Page 0) Bit 31-12
mov dword [0x00600270] , 0x00601000 ;Buffer Pointer (Page 1) Bit 31-12
mov dword [0x00600274] , 0x00602000 ;Buffer Pointer (Page 2) Bit 31-12
mov dword [0x00600278] , 0x00603000 ;Buffer Pointer (Page 3) Bit 31-12
mov dword [0x0060027C] , 0x00604000 ;Buffer Pointer (Page 4) Bit 31-12
;--------------------------qTD Nr001-----IN--------------------------------------------
mov dword [0x006002A0] , 0x006002E1 ;Next qTD Pointer Bit 31-05 /Bit 04-01-> Null /Bit 0 T
mov dword [0x006002A4] , 0x006002E1 ;Alternat Next qTD Pointer /Bit 04-01-> Null /Bit 0 T
mov dword [0x006002A8] , 0x80000D80 ;dt=1/Total-Bytes to Transfer/IOC/C_Page/Cerr/PID-> IN Token/Status
mov dword [0x006002AC] , 0x00 ;Buffer Pointer (Page 0) Bit 31-12
mov dword [0x006002B0] , 0x00 ;Buffer Pointer (Page 1) Bit 31-12
mov dword [0x006002B4] , 0x00 ;Buffer Pointer (Page 2) Bit 31-12
mov dword [0x006002B8] , 0x00 ;Buffer Pointer (Page 3) Bit 31-12
mov dword [0x006002BC] , 0x00 ;Buffer Pointer (Page 4) Bit 31-12
;-----------------------------------------------------------------
mov dword [0x00600320] , 0x00010900 ;Set_configuration
mov dword [0x00600324] , 0x00000000
;-------------------------------------------------------------------------
mov dword [Programm_auswahl] , 0x04*0 ;zurück setzen
ret
;-----------------------------------------------------------------------------
Gruß Relbmessa
Pech gehabt-es paßt nicht rein :evil:
Rest dann Morgen :wink:
-
Guten Morgen ,
hier nun der zweite Teil.
P_033: ;--------------------------------------------------------------------------;
mov byte [0xB8000+25*154-12+62*2], "C"
mov byte [0xB8000+25*154-12+62*2+1],0xAF
;--------------------------------------------------------------------------
;Hier Programm !!
;---------------------------------------Queue Head C----------Vorbereitung Lesen (28h)-----------------------
mov dword [0x00600400] , 0x00600402 ;00-03 Bit 02-01 Typ->hier QH Link Pointer
mov dword [0x00600404] , 0x801F2201 ;07-04 Bit:13-12 1b-0b High-Speed+Bit-15(H) Bit-14 hig->DTC/Dev_addr/Cruzer+Kingston?
; mov dword [0x00600404] , 0x801F6101 ;07-04 Bit:13-12 1b-0b High-Speed+Bit-15(H) Bit-14 hig->DTC/Dev_addr/General4Giga-F8-OK
mov dword [0x00600408] , 0x40000000 ;0B-08 Mult Bit 31-30
mov dword [0x0060040C] , 0x0 ;0F-0C Current qTD Pointer Bit 31-05
mov dword [0x00600410] , 0x00600460 ;13-10 Next qTD Pointer Bit 31-05
mov dword [0x00600414] , 0x00000000 ;17-14 Alternate Next qTD Pointer Bit 31-05
;---------------------------------------------------------------------------------------
;----------------------TD-0-qTD Nr000----OUT----------------------------------------------------------------
mov dword [0x00600460] , 0x006004A1 ;Next qTD Pointer Bit 31-05 /Bit 04-01-> Null /Bit 0 T (A1)?
mov dword [0x00600464] , 0x00000001 ;Alternat Next qTD Pointer /Bit 04-01-> Null /Bit 0 T
; mov dword [0x00600468] , 0x00200080 ;dt=0/Total-Bytes to Transfer/IOC/C_Page/Cerr/PID-> OUT Token/Status (32d=20h)->Fehler
mov dword [0x00600468] , 0x001F0C80 ;dt=0/Total-Bytes to Transfer/IOC/C_Page/Cerr/PID-> OUT Token/Status (31d=1Fh)->ok
mov dword [0x0060046C] , 0x00600520 ;Buffer Pointer (Page 0) Bit 31-12
mov dword [0x00600470] , 0x00601000 ;Buffer Pointer (Page 1) Bit 31-12
mov dword [0x00600474] , 0x00602000 ;Buffer Pointer (Page 2) Bit 31-12
mov dword [0x00600478] , 0x00603000 ;Buffer Pointer (Page 3) Bit 31-12
mov dword [0x0060047C] , 0x00604000 ;Buffer Pointer (Page 4) Bit 31-12
;--------------------------qTD Nr001-----OUT--------------------------------------------
mov dword [0x006004A0] , 0x006004E1 ;Next qTD Pointer Bit 31-05 /Bit 04-01-> Null /Bit 0 T
mov dword [0x006004A4] , 0x006004E1 ;Alternat Next qTD Pointer /Bit 04-01-> Null /Bit 0 T
mov dword [0x006004A8] , 0x80000C80 ;dt=1/Total-Bytes to Transfer/IOC/C_Page/Cerr/PID-> OUT Token/Status->ok
mov dword [0x006004AC] , 0x00700000 ;Buffer Pointer (Page 0) Bit 31-12
mov dword [0x006004B0] , 0x00701000 ;Buffer Pointer (Page 1) Bit 31-12
mov dword [0x006004B4] , 0x00702000 ;Buffer Pointer (Page 2) Bit 31-12
mov dword [0x006004B8] , 0x00703000 ;Buffer Pointer (Page 3) Bit 31-12
mov dword [0x006004BC] , 0x00704000 ;Buffer Pointer (Page 4) Bit 31-12
;---------------------------------------------------------------------------------------
;---------------------------------------Queue Head D----------LESEN--------------------------
mov dword [0x00600600] , 0x00600602 ;00-03 Bit 02-01 Typ->hier QH Link Pointer
; mov dword [0x00600604] , 0x820DA201 ;07-04 Bit:13-12 1b-0b High-Speed+Bit-15(H) Bit-14 hig->DTC/Device_address->General4Giga->ok
mov dword [0x00600604] , 0x820DA101 ;07-04 Bit:13-12 1b-0b High-Speed+Bit-15(H) Bit-14 hig->DTC/Dev_addr->Acer-OK-Cruzer+Kingston?
mov dword [0x00600608] , 0x40000000 ;0B-08 Mult Bit 31-30
mov dword [0x0060060C] , 0x0 ;0F-0C Current qTD Pointer Bit 31-05
mov dword [0x00600610] , 0x00600660 ;13-10 Next qTD Pointer Bit 31-05
mov dword [0x00600614] , 0x00000000 ;17-14 Alternate Next qTD Pointer Bit 31-05
;---------------------------------------------------------------------------------------
;----------------------TD-0-qTD Nr000----IN----------------------------------------------------------------
mov dword [0x00600660] , 0x006006A0 ;Next qTD Pointer Bit 31-05 /Bit 04-01-> Null /Bit 0 T
mov dword [0x00600664] , 0x00000001 ;Alternat Next qTD Pointer /Bit 04-01-> Null /Bit 0 T
; mov dword [0x00600668] , 0x02000180 ;dt=0/Total-Bytes to Transfer/IOC/C_Page/Cerr/PID-> IN Token/Status
; mov dword [0x00600668] , 0x02000D80 ;dt=0/Total-Bytes to Transfer/IOC/C_Page/Cerr/PID-> IN Token/Status-ok
mov dword [0x00600668] , 0x02000D80 ;dt=0/Total-Bytes to Transfer/IOC/C_Page/Cerr/PID-> IN Token/Status-test
mov dword [0x0060066C] , 0x00705000 ;Buffer Pointer (Page 0) Bit 31-12
mov dword [0x00600670] , 0x00706000 ;Buffer Pointer (Page 1) Bit 31-12
mov dword [0x00600674] , 0x00707000 ;Buffer Pointer (Page 2) Bit 31-12
mov dword [0x00600678] , 0x00708000 ;Buffer Pointer (Page 3) Bit 31-12
mov dword [0x0060067C] , 0x00709000 ;Buffer Pointer (Page 4) Bit 31-12
;--------------------------qTD Nr001-----IN----------------------------------------------
mov dword [0x006006A0] , 0x006006E1 ;Next qTD Pointer Bit 31-05 /Bit 04-01-> Null /Bit 0 T
mov dword [0x006006A4] , 0x006006E1 ;Alternat Next qTD Pointer /Bit 04-01-> Null /Bit 0 T
; mov dword [0x006006A8] , 0x82000180 ;dt=1/Total-Bytes to Transfer/IOC/C_Page/Cerr/PID-> IN Token/Status Dh->13d
mov dword [0x006006A8] , 0x800D0D80 ;dt=1/Total-Bytes to Transfer/IOC/C_Page/Cerr/PID-> IN Token/Status-test
mov dword [0x006006AC] , 0x0070A000 ;Buffer Pointer (Page 0) Bit 31-12
mov dword [0x006006B0] , 0x0070B000 ;Buffer Pointer (Page 1) Bit 31-12
mov dword [0x006006B4] , 0x0070C000 ;Buffer Pointer (Page 2) Bit 31-12
mov dword [0x006006B8] , 0x0070D000 ;Buffer Pointer (Page 3) Bit 31-12
mov dword [0x006006BC] , 0x0070E000 ;Buffer Pointer (Page 4) Bit 31-12
;--------------------------qTD Nr002-----IN----------------------------------------------
mov dword [0x006006E0] , 0x00000001 ;Next qTD Pointer Bit 31-05 /Bit 04-01-> Null /Bit 0 T
mov dword [0x006006E4] , 0x00000001 ;Alternat Next qTD Pointer /Bit 04-01-> Null /Bit 0 T
; mov dword [0x006006E8] , 0x02000180 ;dt=0/Total-Bytes to Transfer/IOC/C_Page/Cerr/PID-> IN Token/Status
mov dword [0x006006E8] , 0x02000D80 ;dt=0/Total-Bytes to Transfer/IOC/C_Page/Cerr/PID-> IN Token/Status
mov dword [0x006006EC] , 0x0070F000 ;Buffer Pointer (Page 0) Bit 31-12
mov dword [0x006006F0] , 0x00710000 ;Buffer Pointer (Page 1) Bit 31-12
mov dword [0x006006F4] , 0x00711000 ;Buffer Pointer (Page 2) Bit 31-12
mov dword [0x006006F8] , 0x00712000 ;Buffer Pointer (Page 3) Bit 31-12
mov dword [0x006006FC] , 0x00713000 ;Buffer Pointer (Page 4) Bit 31-12
;-------------------------------------------------------------------------
;-------------------------------------------------------------------------
;---------------------TD-0----Buffer für qTD Nr.000--------------------------------------------------------------
;---------Speicher-Einstellung-Buffer-Bereich erst mal Null------------------
mov dword [0x00600520] , 0x43425355 ; ;01-04 Byte
mov dword [0x00600524] , 0x78563412 ; ;05-08 Byte
mov dword [0x00600528] , 0x00000200 ;TransferLength ->512 ;09-12 Byte
mov byte [0x0060052C] , 0x80 ;IN Gerät->Host ;13 Byte
mov byte [0x0060052D] , 0x0 ;LUN ;14 Byte
mov byte [0x0060052E] , 0x0A ;0A ?? ;15 Byte
mov dword [0x0060052F] , 0x00000028 ;OP-Code 0x28 ;0x52 ;16-19 Byte
mov dword [0x00600533] , 0x00000100 ;hier lesen Sector-2 ;20-23 Byte
mov bl , [lesen_sector_nr]
mov byte [0x00600534] , bl ;
mov dword [0x00600537] , 0x00000001 ;1 Lexar ;24-27 Byte
mov dword [0x0060053B] , 0x0 ;28-31 Byte (1Fh)
; mov byte [0x0060053F] , 0x0 ;32 Byte (20h) Fehler !
;-------------------------------------------------------------------------
;-------------------------------------------------------------------------
mov dword [Programm_auswahl] , 0x04*0 ;zurück setzen
ret
;;;;;;;;;;;;;;;;;;;;-----------------------------------------;;;;;;;;;;;;;;
;--------------------------------------------------------------------------
;--------------------------------------------------------------------------
P_034:
;--------------------------------------------------------------------------
mov byte [0xB8000+25*154-12+63*2], "D"
mov byte [0xB8000+25*154-12+63*2+1],0xAF
;--------------------------------------------------------------------------
;Hier Programm !!
call P_031
;----------------------enable-Pointer---------------------------------------------
mov dword [0x00600210] , 0x00600260 ;13-10 Next qTD Pointer Bit 31-05 (P_025)
;-------------------------------------------------------------------------
mov word [pause_aktiviert] , 2 ;10-8 ;
mov dword [weiter_mit_p] , 0x04*35
;-------------------------------------------------------------------------
mov dword [Programm_auswahl] , 0x04*0 ;zurück setzen
ret
;--------------------------------------------------------------------------------
P_035:
;--------------------------------------------------------------------------
mov byte [0xB8000+25*154-12+64*2], "E"
mov byte [0xB8000+25*154-12+64*2+1],0xAF
;--------------------------------------------------------------------------
;Hier Programm !!
;--------------------------------------------------------------------------
call P_033
mov dword [0x00600200] , 0x00600402 ;00-03 Bit 02-01 Typ->hier QH Link Pointer (aktivieren)
;---------------------Parameter Pause-------------------------------------------
mov word [pause_aktiviert] , 1 ;10-9 ;
mov dword [weiter_mit_p] , 0x04*36
;-------------------------------------------------------------------------
mov dword [Programm_auswahl] , 0x04*0 ;zurück setzen
ret
;-----------------------------------------------------------------------------
P_036:
;--------------------------------------------------------------------------
mov byte [0xB8000+25*154-12+65*2], "F"
mov byte [0xB8000+25*154-12+65*2+1],0xAF
;--------------------------------------------------------------------------
;Hier Programm !!
mov dword [0x00600400] , 0x00600602 ;00-03 Bit 02-01 Typ->hier QH Link Pointer
;---------------------Parameter Pause-------------------------------------------
mov word [pause_aktiviert] , 1 ;10-9 ;
mov dword [weiter_mit_p] , 0x04*37
;-------------------------------------------------------------------------
mov dword [Programm_auswahl] , 0x04*0 ;0x04*07 ;zurück setzen
ret
;--------------------------------------------------------------------------------
P_037:
;--------------------------------------------------------------------------
mov byte [0xB8000+25*154-12+66*2], "G"
mov byte [0xB8000+25*154-12+66*2+1],0xAF
;--------------------------------------------------------------------------
;Hier Programm !!
call P_031
;-------------------------------------
mov dword [0x00600600] , 0x00600202 ;00-03 Bit 02-01 Typ->hier QH Link Pointer
;-------------------------------------------------------------------------
mov dword [Programm_auswahl] , 0x04*0 ;zurück setzen
ret
Gruß
Relbmessa