Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.12.2011, 19:28   #1
vova65
Пользователь
 
Регистрация: 05.06.2011
Сообщений: 48
По умолчанию драйвер rtl8139

Подскажите пожалуйста!!! почему при запуске pciS неотправляется ARP пакет и несрабатывает приревание 35..????

Код:
Код:
pciS:
mov ebx,2
xor ecx,ecx
mov edx,3Ch
mov esi,2
call pci_read_reg
mov al,35h
;
mov edx,3Ch
call pci_write_reg

mov [ds:pci_bus],0B801h

call scan_bus
call rtl8139_transmit1

ret
Код:
idt:
 ...
 dw exit, 08h,1000111000000000b,0;32 IRQ(0)
 dw exit4, 08h,1000111000000000b,0;33 IRQ(1)
 dw exit, 08h,1000111000000000b,0;34 IRQ(2)
 dw exit1, 08h,1000111000000000b,0;35 IRQ(3)

rtl8139_rx_buff db 0



tx_buff dw 0FFFFh, 0FFFFh, 0FFFFh, 940Ch , 6DA4h, 7283h , 0806h
      dw 0001h , 0800h , 0604h , 0001h , 940Ch , 6DA4h, 7283h
      dw 0C0A8h, 0203h , 0000h , 0000h , 0000h, 0C0A8h, 026Eh
Код:
scan_bus:
    mov    ebx,2
    xor    ecx,ecx
    mov    edx,04h
    mov    esi,2
    call   pci_read_reg
    
;меняем значенние регистра 
    or     al, (1 shl 2) or (1 shl 0)
    and    al, not (1 shl 1)
;Записываем в конфигурацыоное пространство
    mov    edx,04h
    call   pci_write_reg
;Включить чип
    mov    edx,[ds:pci_bus]
    add    edx,5Bh
    mov    al,52h
    out    dx,al
;отопираем регистры BMCR и config
    add    edx,50h - 5Bh
    mov    al,(1 shl 7) or (1 shl 6)
    out    dx,al
;Разрешаем управленние електропитанием
    add    edx,52h - 50h
    in     al,dx
old_chip:
    ;управленние електропитанием старых чипов
    and       al,not ((1 shl 1) or (1 shl 0))
    out       dx,al    
finish_wake_up:
;запираем регистры BMCR и config
    xor    al,al
    mov    edx,[ds:pci_bus]
    add    edx,50h
    out    dx,al
;%%%%%%%%%%%%%%%%%%%%%%%%%%%%
;Уттанавливаем значеение по дефолту
;%%%%%%%%%%%%%%%%%%%%%%%%%%%%    
reset_chip:
    mov    edx,[ds:pci_bus]
    add    edx,37h
    mov    al,1 shl 4
    out    dx,al
    mov       cx,1000 ; ждать уже не для сброса
@@:
      in       al,dx
      test     al, 1 shl 4
      jz       @f ; RST остается 1 во время сброса
      dec       cx
      jns       @b     
@@:   
;разблокируйте регистры BMCR и конфигурация
    mov    edx,[ds:pci_bus]
    add    edx,50h
    mov    al,(1 shl 7) or (1 shl 6)
    out    dx,al     
; инициализируйте многоадресные регистры (никакая фильтрация)
    mov       eax,0ffffffffh
      add       edx, 08h - 50h
      out       dx,eax
    add       edx, 0ch - 08h
      out       dx, eax      
;32 k Rxbuffer, неограниченного пакета dma, никакого обертывания, никакого rx порога
; примите широковещательные пакеты, примите физические пакеты соответствия
    ;RX_CONFIG
    mov       ax,0000E7BEh
    add       edx,44h - 0ch
    out       dx, ax     
; 1024-байтовый пакет DMA, общее количество повторяет = 16 + 8 * 16 = 144
    mov       ax,0680h
      add       edx,40h - 44h
      out       dx,ax     
;включите автоматическому согласованию
    add       edx,62h - 40h
      in       ax,dx
      or       ax,1000h
      out    dx,ax     
; установите автоматическую рекламу согласования
    add    edx,66h - 62h
      in       ax,dx
      or       ax, (1 shl 0) or (1 shl 5) \
               or (1 shl 6) or (1 shl 7) \
               or (1 shl 8)
      out       dx,ax     
; заблокируйте регистры BMCR и конфигурация
    xor       eax,eax
      add       edx,50h - 66h
      out       dx,al   
; очистите недостающий пакетный счетчик
      add       edx,4Ch - 50h
      out       dx,eax     
; включите все прерывания
      add       edx,3Ch - 4Ch
      mov ax,0FFFFh
    out       dx,ax     
; установите адрес RxBuffer, init буферное смещение RX, init кольцо TX
    mov      eax,rtl8139_rx_buff
      add       edx, 30h - 3Ch
      out       dx,eax
; включение Rx/Tx 
    mov       al,00001100b
      add       edx, 37h - 30h
      out       dx, al                      
ret
Код:
rtl8139_transmit1:
    cmp    ecx, 1516
    jg    finish ; пакет слишком длинный
; установите адрес
  lea eax,[tx_buff]
  mov edx,[ds:pci_bus]
    add    edx,20h
    out    dx,eax
; установите размер и ранний порог
    ;pop    eax ; pick up the size
    mov eax,28
  add    eax, (2 * 6 + 2)
    cmp    eax, 60h
    jnc    no_pad
    mov    eax, 60h
no_pad:
    or    eax, (8 shl 16)
    add    edx,10h - 20h
    out    dx, eax
finish:
ret

Последний раз редактировалось rpy3uH; 04.12.2011 в 19:32.
vova65 вне форума Ответить с цитированием
Старый 07.12.2011, 00:57   #2
vova65
Пользователь
 
Регистрация: 05.06.2011
Сообщений: 48
По умолчанию

Подскажите пожалуйста!!! почему при запуске scan_bus неотправляется ARP пакет????

tx_buff dw 0FFFFh, 0FFFFh, 0FFFFh, 940Ch , 6DA4h, 7283h , 0806h
dw 0001h , 0800h , 0604h , 0001h , 940Ch , 6DA4h, 7283h
dw 0C0A8h, 0203h , 0000h , 0000h , 0000h, 0C0A8h, 026Eh
Код:
scan_bus:
mov [ds:pci_bus],0B801h
    mov    ebx,2
    xor    ecx,ecx
    mov    edx,04h
    mov    esi,2
    call   pci_read_reg
;меняем значенние регистра 
    or     al, (1 shl 2) or (1 shl 0)
    and    al, not (1 shl 1)
;Записываем в конфигурацыоное пространство
    mov    edx,04h
    call   pci_write_reg
;Сброс сетивого адаптера
    mov    edx,[ds:pci_bus]
    add    edx,37h
    mov    al,1 shl 4
    out    dx,al
    mov	   cx,1000 ; ждать уже не для сброса
@@:
	  in	   al,dx
	  test	 al, 1 shl 4
	  jz	   @f ; RST остается 1 во время сброса
	  dec	   cx
	  jns	   @b
    mov eax,ecx     
@@:
; включение Tx 
    ;mov	   al,00001100b
    mov	   al,00000100b
    mov    edx,[ds:pci_bus]
	  add	   edx, 37h
	  out	   dx, al
;Отправка пакета
  lea eax,[tx_buff]
  mov edx,[ds:pci_bus]
	add	edx,20h
	out	dx,eax
; установите размер и ранний порог
	;pop	eax ; pick up the size
	mov eax,28
  add	eax, (2 * 6 + 2)
	cmp	eax, 60h
	jnc	@f
	mov	eax, 60h
@@:
	or	eax, (8 shl 16) or (1 shl 13)
  
           add	edx,10h - 20h
	out	dx, eax   
ret

Последний раз редактировалось vova65; 07.12.2011 в 02:10.
vova65 вне форума Ответить с цитированием
Старый 07.12.2011, 20:20   #3
vova65
Пользователь
 
Регистрация: 05.06.2011
Сообщений: 48
По умолчанию

Здесь что никто не писал драйвер для rtl8139 или всем влом писать???
vova65 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Guardant драйвер Ринат820 Софт 0 27.04.2011 01:07
Драйвер на материнку Assemblerru Компьютерное железо 2 01.04.2011 17:01
Драйвер Sting12 Помощь студентам 3 27.12.2009 18:16
Не работает драйвер Goodwin98 Компьютерное железо 14 17.05.2009 08:18
Драйвер milancrash Фриланс 1 01.04.2009 08:22