Autor Thema: EHCI Asynchronous Schedule  (Gelesen 2855 mal)

Relbmessa

  • Beiträge: 73
    • Profil anzeigen
Gespeichert
« 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

 

Relbmessa

  • Beiträge: 73
    • Profil anzeigen
Gespeichert
« Antwort #1 am: 10. March 2013, 12:20 »
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
« Letzte Änderung: 10. March 2013, 15:56 von Relbmessa »

Relbmessa

  • Beiträge: 73
    • Profil anzeigen
Gespeichert
« Antwort #2 am: 16. April 2013, 23:44 »
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:



« Letzte Änderung: 17. April 2013, 00:00 von Relbmessa »

Relbmessa

  • Beiträge: 73
    • Profil anzeigen
Gespeichert
« Antwort #3 am: 17. April 2013, 00:03 »
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
« Letzte Änderung: 17. April 2013, 00:10 von Relbmessa »

 

Einloggen