[d | an-b-bro-fr-gf-hr-l-m-maid-med-mi-mu-ne-o-old_o-p-ph-r-s-sci-sp-t-tran-tv-w-x | bg-vg | au-mo-tr | a-aa-abe-azu-c-dn-fi-hau-jp-ls-ma-me-rm-sos-tan-to-vn | misc-tenma-vndev | dev-stat]
[Burichan] [Futaba] [Gurochan] [Tomorrow] [Архив-Каталог-RSS] [Главная]

Файл: controller.jpg -(634 KB, 800x800, controller.jpg)
634 No.208070  

Пишу минималистичный драйвер для сетевой карты. В качестве эмулятора выбрал QEMU.
Почитал PCI Specification, почитал PCI Family of Gigabit Ethernet Controllers Software Developer’s Manual для 82540EM.
Написал код: https://pastebin.com/FrBKUzYR

Запустил командой
qemu-system-x86_64 -drive format=raw,file=raw.img,if=floppy,index=0 \

-netdev user,id=n1 -device e1000,netdev=n1,mac=00-14-22-01-23-45

Регистры контроллера отобразились в I/O Address Space, но вот проблема:
Записал в Ethernet Controller's Control Register биты, читаю обратно - всегда возвращается 0.
Status Register тоже возвращает 0.
Регистры возвращают 0 даже там, где по дефолту должен быть 1.

Однако Ubuntu, запущенная в виртуальной машине, каким-то образом обнаруживает рабочий адаптер.

В чем может быть проблема?

>> No.208073  
>ОП-пик

О, это ты зря.

>> No.208074  

>>208073
почему?

>> No.208077  

Открой исходники QEMU и посмотри файл с эмуляцией адаптера. Не исключено что программная реализация в чём-то будет отличаться от спецификации. QEMU никогда не ставили себе целью полностью и всецело эмулировать железо, достаточно чтобы драйверы интересующего ПО работали.

Ну или ты просто спеку не дочитал.

>> No.208082  

запустил код драйвера на virtualbox (выбрав тот же сетевой адаптер в настройках), и там порты I/O работают.
интересно, как Ubuntu в QEMU все-таки работает с интеловской карточкой.

>> No.208083  
>Открой исходники QEMU и посмотри файл с эмуляцией адаптера

хорошая идея, учитывая, что в QEMU также имеется эмулятор RTL8139 с исходниками, и у него нормально работает I/O (тоже проверил) - есть с чем сравнить.




[d | an-b-bro-fr-gf-hr-l-m-maid-med-mi-mu-ne-o-old_o-p-ph-r-s-sci-sp-t-tran-tv-w-x | bg-vg | au-mo-tr | a-aa-abe-azu-c-dn-fi-hau-jp-ls-ma-me-rm-sos-tan-to-vn | misc-tenma-vndev | dev-stat]
[Burichan] [Futaba] [Gurochan] [Tomorrow] [Архив-Каталог-RSS] [Главная]